var PKPassport = {
    //上栏登录
    mainSignIn:function(){
        var verify_code_name = "main_sign_in_verify";
        var account_name = $F("account_name");
        var password = $F("password");
        var verify_code = $F(verify_code_name);
        if (account_name == "" || password == ""){
            alert(NativeText.get("fill_all_info_login"));
            $("account_name").focus();
            return;
        }

        if (!PKUtil.validateAccountName(account_name)){
            alert(NativeText.get("invalid_account_name_login"));
            $("account_name").focus();
            return;
        }

        if (!PKUtil.validatePassword(password)){
            alert(NativeText.get("invalid_password_login"));
            $("account_name").focus();
            return;
        }
        if (verify_code.length != 4 || !PKUtil.validateVerifyCode(verify_code)){
            alert(NativeText.get("invalid_verify_code_login"));
            $(verify_code_name).value = "";
            PKUtil.getVerifyImage("main_sign_in_verify", 16, 25, 22);
            try{
                window.event.returnValue = false;
            }catch(e){}
            $(verify_code_name).focus();
            return
        }
        var sign = function(challenge){
            var password_digest = PKUtil.passwordDigest(challenge, password);
            var url = "/user_checker/sign_in_core_ex";
            var params = PKUtil.authenticityToken() +
            "&account_name=" + account_name + "&password_digest=" + password_digest +
            "&verify_code=" + verify_code + "&verify_code_name=" + verify_code_name + "&src=main&state=" + $F('state');
            new Ajax.Request(url,
            {
                method: "post",
                postBody: params,
                onSuccess: function(rsp){
                    var result = rsp.responseText.evalJSON();
                    if (!result.result){
                        alert(result.message);
                        PKUtil.getVerifyImage("main_sign_in_verify", 16, 25, 22);
                        $("account_name").focus();
                    }else{
                        if (result.set_cookie != null){
                            PKUtil.setCookie(result.set_cookie);
                        }
                        PKUtil.retrievePage("/user/account_panel","account_panel");
                        PKUtil.showModal('/main/forward_dialog', 640, 447, '');
                    }
                },
                onFailure: function(rsp){
                    alert(NativeText.get("cant_access_server_login"));
                    $("account_name").focus();
                }
            }
            );
        };
        new Ajax.Request("/client/user/pre_sign_in_ex", {
            method: "get",
            onSuccess: function(rsp) {
                sign(rsp.responseText)
            },
            onFailure:function(){}
        });
    },
    //快速登录
    signIn:function(){
        var verify_code_name = "p_sign_in_verify";
        var account_name = $F("sign_in_account_name");
        var password = $F("sign_in_password");
        var verify_code = $F(verify_code_name);

        if (account_name == "" || password == "" || verify_code == ""){
            $("sign_in_message").innerHTML = NativeText.get("fill_all_info");
            return;
        }

        if (!PKUtil.validateAccountName(account_name)){
            $("sign_in_message").innerHTML = NativeText.get("invalid_account_name");
            return;
        }

        if (!PKUtil.validatePassword(password)){
            $("sign_in_message").innerHTML = NativeText.get("invalid_password");
            return;
        }
        if (verify_code.length != 4 || !PKUtil.validateVerifyCode(verify_code)){
            $("sign_in_message").innerHTML = NativeText.get("invalid_verify_code");
            $(verify_code_name).value = "";
            PKUtil.getVerifyImage("p_sign_in_verify", 14, 20, 20);
            try{
                window.event.returnValue = false;
            }catch(e){}
            $(verify_code_name).focus();
            return;
        }
        var sign = function(challenge){
            var password_digest = PKUtil.passwordDigest(challenge, password);
            var url = "/user_checker/sign_in_core_ex";
            var params = PKUtil.authenticityToken() + "&jump=1" +
            "&account_name=" + account_name + "&password_digest=" + password_digest
            + "&verify_code=" + verify_code + "&verify_code_name=" + verify_code_name + "&src=popup";
            new Ajax.Request(url,
            {
                method: "post",
                postBody: params,
                onSuccess: function(rsp){
                    var result = rsp.responseText.evalJSON();
                    if (!result.result){
                        $("sign_in_message").innerHTML = result.message;
                        PKUtil.getVerifyImage("p_sign_in_verify", 14, 20, 20);
                    }else{
                        PKUtil.closeModal();
                        if (result.set_cookie != null){
                            PKUtil.setCookie(result.set_cookie);
                        }
                        if (result.url != null){
                            if ($("account_panel") != null) {
                                PKUtil.retrievePage("/user/account_panel", "account_panel");
                            }
                            if (result.popup)
                                PKUtil.showModal(result.url, 702, 420, "");
                            else
                                window.location.href=result.url;
                        }else{
                            var callback = PKToonWeb.Container.get("casi");//callback_after_sign_in
                            if(callback != undefined && callback != null && !callback.blank()){
                                PKToonWeb.Container.unset("casi");
                                eval(callback);
                            }else{
                                document.location.reload();
                            }
                        }
                    }
                }
            }
            );
        };
        new Ajax.Request("/client/user/pre_sign_in_ex", {
            method: "get",
            onSuccess: function(rsp) {
                sign(rsp.responseText)
            },
            onFailure:function(){}
        });
    },
    //退出
    signOut:function(){
        $("account_panel").innerHTML = '<DIV style="PADDING-TOP: 32px">' + NativeText.get("signing_out") + '</div>';
        var url = "/user_checker/sign_out_core";
        new Ajax.Request(url,
        {
            method: "get",
            onSuccess: function(rsp){
                var result = rsp.responseText.evalJSON();
                if (result.set_cookie != null){
                    PKUtil.setCookie(result.set_cookie);
                }
                var callback = PKToonWeb.Container.get("caso");//callback_after_sign_out
                if(callback != undefined && callback != null && !callback.blank()){
                    PKToonWeb.Container.unset("caso");
                    eval(callback);
                }else{
                    document.location.reload();
                }
            },
            onFailure: function(rsp){
                document.location.reload();
            }
        }
        );
    },
    //验证帐号名称是否有效
    checkAccountName:function(accountName){
        var last_checking_account_name = PKToonWeb.Container.get("lcan");
        if (accountName == last_checking_account_name || accountName == "")
            return;
        PKToonWeb.Container.set("lcan",accountName);
        var url = "/user_checker/check_account_name";
        var params = PKUtil.authenticityToken() + "&account_name=" + accountName;
        $("check_account_message").innerHTML = NativeText.get("checking_account_name");
        new Ajax.Request(url,
        {
            method: "post",
            postBody: params,
            onSuccess: function(rsp){
                var result = rsp.responseText.evalJSON();
                $("check_account_message").innerHTML = result.message;
                $("check_account_div").style.display = "";
                PKToonWeb.Container.unset("lcan");
            },
            onFailure: function(rsp){
                $("check_account_message").innerHTML = NativeText.get("cant_access_server");
                PKToonWeb.Container.unset("lcan");
            }
        }
        );
    },
    //验证昵称是否有效
    checkNickName:function(nickName){
        var last_checking_nick_name = PKToonWeb.Container.get("lcnn");
        if (nickName == last_checking_nick_name || nickName == "")
            return;
        PKToonWeb.Container.set("lcnn",nickName);
        var url = "/user_checker/check_nick_name";
        var params = PKUtil.authenticityToken() + "&nick_name=" + PKUtil.urlEncode(nickName);
        new Ajax.Request(url,
        {
            method: "post",
            postBody: params,
            onSuccess: function(rsp){
                var result = rsp.responseText.evalJSON();
                $("check_nick_name_message").innerHTML = result.message;
                $("check_nick_name_div").style.display = "";
                PKToonWeb.Container.unset("lcnn");
            },
            onFailure: function(rsp){
                $("check_nick_name_message").innerHTML = NativeText.get("cant_access_server");
                PKToonWeb.Container.unset("lcnn");
            }
        }
        );
    },
    //快速注册
    signUp:function(){
        if (!$("agreement").checked){
            $("sign_up_message").innerHTML = NativeText.get("user_agreement");
            return;
        }

        // first check all input
        var verify_code_name = "p_sign_up_verify";
        var account_name = $F("sign_up_account_name");
        var password = $F("sign_up_password");
        var confirm_password = $F("sign_up_confirm_password");
        var nick_name = $F("sign_up_nick_name");
        var verify_code = $F(verify_code_name);
        var email = $F("sign_up_email");
        var gender = $("sign_up_gender_male").checked ? 0 : 1;

        if (account_name == "" || password == "" || confirm_password == "" || verify_code == "" || nick_name == "" || email == ""){
            $("sign_up_message").innerHTML = NativeText.get("fill_all_info");
            return;
        }

        if (password != confirm_password){
            $("sign_up_message").innerHTML = NativeText.get("password_confirm_failed");
            return;
        }

        if (!PKUtil.validateAccountName(account_name)){
            $("sign_up_message").innerHTML = NativeText.get("invalid_account_name");
            return;
        }

        if (!PKUtil.validatePassword(password)){
            $("sign_up_message").innerHTML = NativeText.get("invalid_password");
            return;
        }

        if (verify_code.length != 4 || !PKUtil.validateVerifyCode(verify_code)){
            $("sign_up_message").innerHTML = NativeText.get("invalid_verify_code");
            $(verify_code_name).value = "";
            PKUtil.getVerifyImage("p_sign_up_verify", 14, 20, 20);
            try{
                window.event.returnValue = false;
            }catch(e){}
            $(verify_code_name).focus();
            return;
        }

        if (!PKUtil.validateEmail(email)){
            $("sign_up_message").innerHTML = NativeText.get("invalid_email");
            return;
        }

        var password_digest = PKUtil.Crypto.hexMd5(password);
        var url = "/user_checker/sign_up_core";
        var params = PKUtil.authenticityToken() + "&verify_code_name=" + verify_code_name +
        "&jump=1&account_name=" + account_name	+ "&nick_name=" + PKUtil.urlEncode(nick_name) + "&password_digest=" +
        password_digest + "&verify_code=" + verify_code + "&email=" + email + "&gender=" + gender + "&src=popup";
        new Ajax.Request(url,
        {
            method: "post",
            postBody: params,
            onSuccess: function(rsp){
                var result = rsp.responseText.evalJSON();
                if (!result.result){
                    $("sign_up_message").innerHTML = result.message;
                    PKUtil.getVerifyImage("p_sign_up_verify", 14, 20, 20);
                }else{
                    PKUtil.closeModal();
                    if (result.set_cookie != null){
                        PKUtil.setCookie(result.set_cookie);
                    }
                    if (result.url != null){
                        if ($("account_panel") != null) {
                            PKUtil.retrievePage("/user/account_panel", "account_panel")
                        }
                        if (result.popup)
                            PKUtil.showModal(result.url, 702, 420, "");
                        else
                            window.location.href=result.url;
                    }else{
                        var callback = PKToonWeb.Container.get("casu");//callback_after_sign_up
                        if(callback != undefined && callback != null && !callback.blank()){
                            PKToonWeb.Container.unset("casu");
                            eval(callback);
                        }else{
                            document.location.reload();
                        }
                    }
                }
            },
            onFailure: function(rsp){
                $("sign_up_message").innerHTML = NativeText.get("cant_access_server");
            }
        }
        );
    },
    //注册
    mainSignUp:function(){
        if (!$("agreement").checked){
            $("message").innerHTML = NativeText.get("user_agreement");
            return;
        }

        // first check all input
        var verify_code_name = "sign_up_verify";
        var account_name = $F("account_name_reg");
        var password = $F("password_reg");
        var confirm_password = $F("confirm_password");
        var nick_name = $F("nick_name");
        var verify_code = $F(verify_code_name);
        var email = $F("email");
        var gender = $("gender_male").checked ? 0 : 1;
        if (account_name == "" || password == "" || confirm_password == "" || verify_code == "" || nick_name == "" || email == ""){
            $("message").innerHTML = NativeText.get("fill_all_info");
            return;
        }

        if (password != confirm_password){
            $("message").innerHTML = NativeText.get("password_confirm_failed");
            return;
        }

        if (!PKUtil.validateAccountName(account_name)){
            $("message").innerHTML = NativeText.get("invalid_account_name");
            return;
        }

        if (!PKUtil.validatePassword(password)){
            $("message").innerHTML = NativeText.get("invalid_password");
            return;
        }

        if (verify_code.length != 4 || !PKUtil.validateVerifyCode(verify_code)){
            $("message").innerHTML = NativeText.get("invalid_verify_code");
            $(verify_code_name).value = "";
            PKUtil.getVerifyImage("sign_up_verify", 14, 20, 20);
            try{
                window.event.returnValue = false;
            }catch(e){}
            $(verify_code_name).focus();
            return;
        }

        if (!PKUtil.validateEmail(email)){
            $("message").innerHTML = NativeText.get("invalid_email");
            return;
        }

        var password_digest = PKUtil.Crypto.hexMd5(password);
        var url = "/user_checker/sign_up_core";
        var params = PKUtil.authenticityToken() + "&verify_code_name=" + verify_code_name +
        "&account_name=" + account_name	+ "&nick_name=" + PKUtil.urlEncode(nick_name) + "&password_digest=" +
        password_digest + "&verify_code=" + verify_code + "&email=" + email + "&gender=" + gender + "&src=main";
        new Ajax.Request(url,
        {
            method: "post",
            postBody: params,
            onSuccess: function(rsp){
                var result = rsp.responseText.evalJSON();
                if (!result.result){
                    $("message").innerHTML = result.message;
                    PKUtil.getVerifyImage("sign_up_verify", 14, 20, 20);
                }else{
                    if (result.set_cookie != null){
                        PKUtil.setCookie(result.set_cookie);
                    }
                    PKUtil.retrievePage("/user/account_panel","account_panel");
                    PKUtil.showModal('/main/forward_dialog', 640, 447, '');
                }
            },
            onFailure: function(rsp){
                $("message").innerHTML = NativeText.get("cant_access_server");
            }
        }
        );
    },
    //邀请好友注册
    register:function(){
        if (!$("agreement").checked){
            $("message").innerHTML = NativeText.get("user_agreement");
            return;
        }

        // first check all input
        var verify_code_name = "sign_up_verify";
        var account_name = $F("account_name_reg");
        var password = $F("password_reg");
        var confirm_password = $F("confirm_password");
        var nick_name = $F("nick_name");
        var verify_code = $F(verify_code_name);
        var email = $F("email");
        var gender = $("gender_male").checked ? 0 : 1;
        if (account_name == "" || password == "" || confirm_password == "" || verify_code == "" || nick_name == "" || email == ""){
            $("message").innerHTML = NativeText.get("fill_all_info");
            return;
        }

        if (password != confirm_password){
            $("message").innerHTML = NativeText.get("password_confirm_failed");
            return;
        }

        if (!PKUtil.validateAccountName(account_name)){
            $("message").innerHTML = NativeText.get("invalid_account_name");
            return;
        }

        if (!PKUtil.validatePassword(password)){
            $("message").innerHTML = NativeText.get("invalid_password");
            return;
        }

        if (verify_code.length != 4 || !PKUtil.validateVerifyCode(verify_code)){
            $("message").innerHTML = NativeText.get("invalid_verify_code");
            $(verify_code_name).value = "";
            PKUtil.getVerifyImage("sign_up_verify", 14, 20, 20);
            try{
                window.event.returnValue = false;
            }catch(e){}
            $(verify_code_name).focus();
            return;
        }

        if (!PKUtil.validateEmail(email)){
            $("message").innerHTML = NativeText.get("invalid_email");
            return;
        }

        var password_digest = PKUtil.Crypto.hexMd5(password);
        var url = "/user_checker/register_core";
        var params = PKUtil.authenticityToken() + "&verify_code_name=" + verify_code_name +
        "&account_name=" + account_name	+ "&nick_name=" + PKUtil.urlEncode(nick_name) + "&password_digest=" +
        password_digest + "&verify_code=" + verify_code + "&email=" + email + "&gender=" + gender + "&friend="+ $F('friend');
        new Ajax.Request(url,
        {
            method: "post",
            postBody: params,
            onSuccess: function(rsp){
                var result = rsp.responseText.evalJSON();
                if (!result.result){
                    $("message").innerHTML = result.message;
                    PKUtil.getVerifyImage("sign_up_verify", 14, 20, 20);
                }else{
                    if (result.set_cookie != null){
                        PKUtil.setCookie(result.set_cookie);
                    }
                    PKUtil.retrievePage("/user/account_panel","account_panel");
                    PKUtil.showModal('/main/forward_dialog', 640, 447, '');
                }
            },
            onFailure: function(rsp){
                $("message").innerHTML = NativeText.get("cant_access_server");
            }
        }
        );
    },    
    //尝试进入我的拼卡通
    tryMyPKToon:function(){
        var trying_my_pktoon = PKToonWeb.Container.get("trying_my_pktoon");
        try {
            if (trying_my_pktoon)
                return;
            PKToonWeb.Container.set("trying_my_pktoon",true);

            var url = "/my_pktoon/try_enter";
            new Ajax.Request(url,
            {
                method: "post",
                postBody: PKUtil.authenticityToken(),
                onSuccess: function(rsp) {
                    PKToonWeb.Container.unset("trying_my_pktoon");
                    var ret = rsp.responseText.evalJSON();
                    if (ret.result) {
                        window.location.href="/my_pktoon/index";
                    }else{
                        PKUtil.showModal("/user/sign_in", 702, 420, "");
                    }
                },
                onFailure: function(rsp) {
                    PKToonWeb.Container.unset("trying_my_pktoon");
                    PKUtil.showModal("/user/sign_in", 702, 420, "");
                }
            }
            );
        }catch (ex){}
    }
}
