﻿/// <reference path="/Scripts/jquery-1.3.2.min-vsdoc.js" />
Login = new function() {
    this.SubmitValidation = function() {
        if (jQuery("#Username").val() == "" || jQuery("#Password").val() == "") {
            jQuery("#formmessage").html("请您输入账号，密码。");
            return false;
        }
        return true;
    }

    this.Save = function() {
        if (!Login.SubmitValidation()) {
            return false;
        }

        var parms =
            "Username=".concat(jQuery("#Username").val()).concat("&") +
            "Password=".concat(jQuery("#Password").val()).concat("&") +
            "servercode=".concat(jQuery("#ServerCode").val()).concat("&") +
            "AuthCode=".concat(jQuery("#AuthCode").val());
        //alert(parms);
        jQuery("#btnSubmit").attr("disabled", "disabled");
        jQuery("#formmessage").html("登陆中，请您稍候...");
        jQuery.ajax({
            type: "post",
            url: "/Passport/LoginProcess",
            data: parms,
            dataType: "json",
            success: function(result) {
                result = eval("(" + result + ")");
                if (result.IsSucceeded == "true") {
                    //top.location.replace(result.LoginUrl);
                    Login.Initialize();
                    jQuery("#formmessage").html("");
                    //alert(result.LoginUrl);
                }
                else {
                    jQuery("#formmessage").html(result.Message);
                    jQuery("#Password").val("");
                    ShowAuthCodeControls();
                }

                jQuery("#btnSubmit").removeAttr("disabled");

                setTimeout(function() {
                    jQuery("#formmessage").html("");
                }, 10000);

            }
            , error: function(result) { jQuery("#formmessage").html(result.responseText); }
        });
    }
    this.Initialize = function() {

        jQuery("#formmessage").html("检查用户是否已登录...");
        jQuery.ajax({
            type: "post",
            url: "/Passport/GetCurrentUser",
            dataType: "json",
	    data:"",
            success: function(result) {
                if (result != null) {
                    jQuery("#signedupusername").html(result.UserName);
                    jQuery("#loginform").hide();
                    jQuery("#defaultserverurl").val(result.DefaultServerUrl);
                    jQuery("#signedup").show();
                }

                jQuery("#formmessage").html("");

            }
            , error: function(result) { jQuery("#formmessage").html(""); }
        });
    }

    this.LoginGame = function() {
        var result = jQuery.ajax({
            type: "post",
            url: "/Passport/GetLoginUrl",
            dataType: "json",
	    data:"",
            async: false
        }).responseText;
        result = eval('('.concat(result).concat(')'));
        if (result.LoginUrl != "") {
            window.open(result.LoginUrl);
        }
        else {
            Login.Initialize();
        }

        jQuery("#formmessage").html("");
    }
}


function ShowAuthCodeControls() {
    var scriptId = 'authCodeScript';
    if (document.getElementById(scriptId)) {
        var el = document.getElementById(scriptId);
        var p = el.parentNode;
        p.removeChild(el);
    }

    var head = document.getElementsByTagName("head").item(0);
    var script = document.createElement("script");
    script.src = 'AuthCode.ashx?panelId=authCodeDiv&imageId=imgAuthCode&inputId=AuthCode&' + Math.random();
    script.id = scriptId;
    head.appendChild(script);

}

UserRegister = new function() {
    this.CacheData = function(id) {
        var obj = jQuery("#frmRegister").data(id);
        if (!obj) {
            var ret = jQuery("#".concat(id)).html();

            jQuery("#frmRegister").data(id, ret);

            obj = ret;
        }

        return obj;
    }

    this.Save = function() {
        if (!UserRegister.SubmitValidation()) {
            return false;
        }

        var referrer = $Url.GetParamByKey("ref");
        if (referrer == "" || !referrer) referrer = document.referrer;

        var parms =
            "username=".concat(jQuery("#username").val()).concat("&") +
            "password=".concat(jQuery("#password").val()).concat("&") +
            "email=".concat(jQuery("#email").val()).concat("&") +
            "identity=".concat(jQuery("#identity").val()).concat("&") +
            "recommendcode=".concat($Url.GetParamByKey("rc")).concat("&") +
            "servercode=".concat(jQuery("#ServerCode").val()).concat("&") +
            "httpreferrer=".concat(referrer).concat("&") +
            "authcode=".concat(jQuery("#authcode").val());
        //alert(parms);
        jQuery("#btnSubmit").attr("disabled", "disabled");
        jQuery("#formmessage").html("注册中,请您稍候...");
        jQuery.ajax({
            type: "post",
            url: "/Passport/RegisterProcess",
            data: parms,
            dataType: "json",
            success: function(result) {
                result = eval("(" + result + ")");
                if (result.IsSucceeded == "true") {
                    jQuery("#formmessage").html("");
                    top.location.replace(result.LoginUrl);
                    //alert(result.LoginUrl);
                }
                else {
                    jQuery("#formmessage").html(result.Message);
                    jQuery("#Password").val("");
                }

                jQuery("#btnSubmit").removeAttr("disabled");

                setTimeout(function() {
                    jQuery("#formmessage").html("");
                }, 10000);

            }
            , error: function(result) { jQuery("#formmessage").html(""); }
        });
    }

    this.SubmitValidation = function() {
        var c1 = UserRegister.CheckUsername();
        var c3 = UserRegister.CheckEmail();
        var c4 = UserRegister.CheckPassword();
        var c5 = UserRegister.CheckConfirmPassword();
        var c2 = UserRegister.CheckAuthCode();
        //var c6 = UserRegister.CheckIdentity();
        if (c1 && c2 && c3 && c4 && c5) {
            return true;
        }

        return false;
    }

    this.CheckUsername = function() {
        if (!UserGlobal.CheckUsername(jQuery("#username").val())) {
            jQuery("#usernamehink").text("用户名格式不正确。");
            UserRegister.Failed(jQuery("#username")[0]);

            return false;
        }
        else {
            var result = jQuery.ajax({
                type: "post",
                url: "/Passport/IsExistedUserName",
                data: "username=" + jQuery("#username").val(),
                async: false
            }).responseText;
            result = eval(result);

            if (result == "\"true\"" || result == "true") {
                jQuery("#usernamehink").text("该用户名已经被注册，请您选择其它用户名。");
                UserRegister.Failed(jQuery("#username")[0]);
                return false;
            }
            else {
                UserRegister.Succeeded(jQuery("#username")[0]);

                return true;
            }
        }
    }

    this.CheckIdentity = function() {
        if (jQuery("#identity").val().length != 15 && jQuery("#identity").val().length != 18) {
            jQuery("#identityhink").text("身份证号码格式不正确！");
            UserRegister.Failed(jQuery("#identity")[0]);

            return false;
        }
        else {
            UserRegister.Succeeded(jQuery("#identity")[0]);

            return true;
        }
    }

    this.CheckEmail = function() {
        if (jQuery("#email").val() != "" && !UserGlobal.CheckEmail(jQuery("#email").val())) {
            jQuery("#emailhink").text("邮箱格式不正确！");
            UserRegister.Failed(jQuery("#email")[0]);

            return false;
        }
        else {
            if (jQuery("#email").val() != "")
                UserRegister.Succeeded(jQuery("#email")[0]);
            else
                UserRegister.Reset(jQuery("#email")[0]);

            return true;
        }
    }

    this.CheckPassword = function() {
        if (!UserGlobal.CheckPassword(jQuery("#password").val())) {
            jQuery("#passwordhink").text("密码格式不正确！");
            UserRegister.Failed(jQuery("#password")[0]);

            return false;
        }
        else {
            UserRegister.Succeeded(jQuery("#password")[0]);

            return true;
        }
    }

    this.CheckConfirmPassword = function() {
        if (!UserGlobal.CheckPassword(jQuery("#confirmpassword").val())) {
            UserRegister.Failed(jQuery("#confirmpassword")[0]);

            return false;
        }
        else if (jQuery("#password").val() != jQuery("#confirmpassword").val()) {
            jQuery("#confirmpasswordhink").text("两次密码输入不一致！");
            UserRegister.Failed(jQuery("#confirmpassword")[0]);

            return false;
        }
        else {
            UserRegister.Succeeded(jQuery("#confirmpassword")[0]);

            return true;
        }
    }

    this.CheckAuthCode = function() {
        if (jQuery("#authcode").val() == "") {
            jQuery("#authcodehink").text("验证码必须输入！");
            UserRegister.Failed(jQuery("#authcode")[0]);
            return false;
        }
        else {
            UserRegister.Reset(jQuery("#authcode")[0]);

            return true;
        }
    }

    this.Focus = function(obj) {
        UserRegister.Reset(obj);

        var hinkid = "".concat(obj.id).concat("hink");
        jQuery(obj).addClass("inputtext_activited");
        jQuery("#".concat(hinkid)).addClass("hinkspanalert");
    }

    this.Reset = function(obj) {
        jQuery(obj).removeClass("inputtext_activited");
        jQuery(obj).removeClass("inputtext_failed");

        var hinkid = "".concat(obj.id).concat("hink");

        jQuery("#".concat(hinkid)).html(UserRegister.CacheData(hinkid));
        jQuery("#".concat(hinkid)).removeClass("hinkspanalert");
        jQuery("#".concat(hinkid)).removeClass("hinkspanfailed");
        jQuery("#".concat(hinkid)).removeClass("hinkspansucceeded");
    }

    this.Failed = function(obj) {
        var hinkid = "".concat(obj.id).concat("hink");
        jQuery("#".concat(hinkid)).removeClass("hinkspanalert");
        jQuery("#".concat(hinkid)).removeClass("hinkspanfailed");
        jQuery("#".concat(hinkid)).removeClass("hinkspansucceeded");
        jQuery(obj).removeClass("inputtext_activited");
        jQuery(obj).addClass("inputtext_failed");
        var hinkid = "".concat(obj.id).concat("hink");

        jQuery("#".concat(hinkid)).addClass("hinkspanfailed");
    }

    this.Succeeded = function(obj) {
        UserRegister.Reset(obj);

        var hinkid = "".concat(obj.id).concat("hink");

        jQuery("#".concat(hinkid)).addClass("hinkspansucceeded");
    }

}

jQuery(function() {
    //Cache form data
    if (jQuery("#frmRegister") != null) {
        UserRegister.CacheData("usernamehink");
        UserRegister.CacheData("emailhink");
        UserRegister.CacheData("passwordhink");
        UserRegister.CacheData("confirmpasswordhink");
        UserRegister.CacheData("authcodehink");
        UserRegister.CacheData("identityhink");
    }

    if (jQuery("#Username") != null) jQuery("#Username").focus();
    if (jQuery("#username") != null) jQuery("#username").focus();
});

UserGlobal = new function() {
    this.SiteName = "";

    this.Favorite = function(url, title) {
        window.external.AddFavorite(url, UserGlobal.SiteName.concat(title));
    }

    //字母开头，字母数字下划线，5～20位字符
    this.CheckUsername = function(str) {
        var reg = /^[a-zA-Z][a-zA-Z0-9_]{4,19}$/;
        return reg.test(str);
    }

    this.CheckEmail = function(str) {
        var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;
        return reg.test(str);
    }

    //英文数字特殊字符组成!@#$%^&*().?-+_=
    this.CheckPassword = function(str) {
        //var reg = /^[a-zA-Z0-9]{6,32}$/;
        var reg = /^[\w!@#\$%\^&\*\(\)\.\?\-\+_=]{6,16}$/;

        return reg.test(str);
    }
}

$Url = new function() {
    this.GetParamByKey = function(key) {
        var rtnParam;
        var reg = new RegExp("(^|&)" + key + "=([^&]*)(&|$)");
        var r = window.location.search.substr(1).match(reg);
        if (r != null) {
            rtnParam = unescape(r[2]);
        }
        else {
            rtnParam = "";
        }
        rtnParam = (rtnParam == null) ? "" : rtnParam;

        return rtnParam;
    }
}

