/**
 * procFilter 함수를 가로채서 captcha 이미지 및 폼을 출력
 **/
var oldExecXml = null;
var calledArgs = null;
(function($){
    $(function() {
	
        var captchaXE = null;

        function xeCaptcha() {
            var body    = $(document.body);
            var captchaIma;
            
            if (!captchaXE) {
                captchaXE = $("<div>")
                    .attr("id","captcha_screen")
                    .css({
                        position:"absolute",
                        display:"none",
                        backgroundColor:"#111",
                        backgroundRepeat:"repeat",
                        backgroundPosition:"0 0",
                        zIndex:500
                    });
                $('#captchaBox').appendTo(captchaXE);
                body.append(captchaXE);
                captchaXE.exec = function(module, act, params, callback_func, response_tags, callback_func_arg, fo_obj) {
                    var doCheck = false;
                    if(typeof(captchaTargetAct)!='undefined') {
                        for(var i in captchaTargetAct) {
                            if(captchaTargetAct[i]==act) {
                                doCheck = true;
                                break;
                            }
                        }
                    }
                    if(doCheck) {
                        calledArgs = {'module':module,'act':act,'params':params,'callback_func':callback_func,'response_tags':response_tags,'callback_func_arg':callback_func_arg,'fo_obj':fo_obj};
                        captchaXE.show();
                    } else {
                        oldExecXml(module, act, params, callback_func, response_tags, callback_func_arg, fo_obj);
                    }
                    return true;
                };

                captchaXE.show = function() {
                    var clientWidth  = $(window).width();
                    var clientHeight = $(window).height();

                    $(document).scrollTop(0);
                    $(document).scrollLeft(0);

                    $("#captcha_screen").css({
                        display:"block",
                        width  : clientWidth+"px",
                        height : clientHeight+"px",
                        left   : 0,
                        top    : 0
                    });

                    $("#captchaBox")
                        .css({
                            display:"block",
                            border:"10px solid #222222",
                            padding:"10px",
                            position:"absolute",
                            backgroundColor:"#2B2523",
                            left   : (clientWidth/2-190)+"px",
                            top    : (clientHeight/2-200)+"px"
                    });
                };

                captchaXE.compare = function(e) {
                    var params = new Array();
                    params['captcha_action'] = 'captchaCompare';
                    params['captcha_string'] = $("#captcha_string").val();
                    params['mid'] = current_mid;
                    oldExecXml(calledArgs.module,calledArgs.act,params, function(ret_obj) {
                        $("#captcha_screen").css({ display:"none" });
                        oldExecXml(calledArgs.module, calledArgs.act, calledArgs.params, calledArgs.callback_func, calledArgs.response_tags, calledArgs.callback_func_arg, calledArgs.fo_obj);
                    });
                };
                $("#captcha_submit")
                    .click (captchaXE.compare);
                $("#captcha_change")
                    .click (function(){
                    	$("#captcha_image").attr('src', request_uri+'addons/bga_captcha/securimage/securimage_show.php?sid='+Math.random());
                    	$("#captcha_string").focus();
                    });
            }
            return captchaXE;
        }

        $(window).ready(function(){
            oldExecXml = exec_xml;
            exec_xml = xeCaptcha().exec;
        });
    });
})(jQuery);

