﻿// JScript 文件

//首先我们创建一个XMLHttpRequest对象

var xmlHttp;

function createXmlHttpRequest() {
    if (window.XMLHttpRequest) {
        xmlHttp = new XMLHttpRequest();

        if (xmlHttp.overrideMimeType) {
            xmlHttp.overrideMimeType("text/xml");
        }
    }
    else if (window.ActiveXObject) {
        try {
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e) {
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    if (!xmlHttp) {
        window.alert("你的浏览器不支持创建XMLhttpRequest对象");
    }
    return xmlHttp;
}


//获取html控件
var $ = function (id) {
    return document.getElementById(id);
}

//刷新验证码
function refreshCode() {
    var verifyCode = $("ImgVerifyCode");
    verifyCode.src = verifyCode.src + "?n=" + Math.random();
}

//验证用户名
function UserName() {
    var txtUserName = $("TxtUserName");
    var name = txtUserName.value;

    if (name == "") {//
        showError($('spanUserName'), "昵称不能为空", 0);
        //        txtUserName.focus();
        return false;
    }
    else {
        var myReg = /^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$/;

        if (myReg.test(name)) {
            if (name.replace(/[^x00-xFF]/g, '**').length > 16 || name.replace(/[^x00-xFF]/g, '**').length < 6) {
                showError($('spanUserName'), "昵称格式错误，昵称可以由6-16位字母、数字或汉字（汉字算两位）组成", 0);
                //                txtUserName.focus();
                return false;
            }
            else {
                return true;
            }
        }
        else {
            showError($('spanUserName'), "昵称格式错误，昵称可以由6-16位字母、数字或汉字（汉字算两位）组成", 0);
            //            txtUserName.focus();
            return false;
        }
    }
}
//ajax验证用户名
function CheckUserName() {
    if (UserName()) {
        createXmlHttpRequest();
        var strInfo = "<userInput><username>" + $("TxtUserName").value + "</username><type>checkusername</type></userInput>";
        var url = "UserVerify.aspx";
        xmlHttp.open("post", url, true);

        xmlHttp.onreadystatechange = CheckUserNameResult;

        xmlHttp.send(strInfo);
    }
}

//创建用户检测的回调函数
function CheckUserNameResult() {
    if (xmlHttp.readyState == 4)//服务器响应状态
    {
        if (xmlHttp.status == 200)//代码执行状态
        {
            var xmlDoc = xmlHttp.responseXML.documentElement;
            var node = xmlDoc.getElementsByTagName('userinfo');
            var resultInfo = node[0].firstChild.nodeValue;
            //    	    alert(resultInfo);
            if (resultInfo == "1") {
                showError($('spanUserName'), "该昵称可以使用", 1);
            }
            else {
                showError($('spanUserName'), "该昵称已被占用，请重新输入", 0);
                //                $("TxtUserName").focus();
                return;
            }

            return;
        }
    }
}

//检查邮箱
function UserEmail() {
    var txtEmail = $("TxtEmail");
    var strEmail = txtEmail.value;

    if (strEmail == '') {
        showError($('spanEmail'), "邮箱地址不能为空", 0);
        //        txtEmail.focus();
        return false;
    }
    else {
        var myReg = /\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;

        if (myReg.test(strEmail)) {
            return true;
        }
        else {
            showError($('spanEmail'), "邮箱地址格式错误，请重新输入", 0);
            //            $("TxtEmail").focus();
            return false;
        }
    }
}
//ajax验证邮箱
function CheckUserEmail() {
    if (UserEmail()) {
        createXmlHttpRequest();

        var strInfo = "<userInput><useremail>" + $("TxtEmail").value + "</useremail><type>checkemail</type></userInput>";
        var url = "EmailVerify.aspx";
        xmlHttp.open("post", url, true);

        xmlHttp.onreadystatechange = CheckEmailResult;

        xmlHttp.send(strInfo);
    }
}


function CheckEmailResult() {
    if (xmlHttp.readyState == 4)//服务器响应状态
    {

        if (xmlHttp.status == 200)//代码执行状态
        {
            var xmlDoc = xmlHttp.responseXML.documentElement;
            var node = xmlDoc.getElementsByTagName('emailinfo');
            var resultInfo = node[0].firstChild.nodeValue;
            if (resultInfo == "1") {
                showError($('spanEmail'), "该邮箱地址可以使用", 1);
            }
            else {
                showError($('spanEmail'), "该邮箱地址已被占用，请重新输入", 0);
                //                $('TxtEmail').focus();
                return;
            }

            return;
        }
    }
}

//验证密码
function CheckPassword() {
    var txtPassWord = $('TxtPassWord');
    var strPassWord = txtPassWord.value;

    var myReg = /^(\w){6,20}$/; //验证密码的正则表达式

    if (strPassWord == '') {
        showError($('spanPassWord'), "密码不能为空", 0);
        //        txtPassWord.focus();

        return false;
    }
    else if (strPassWord.length > 20 || strPassWord.length < 6) {
        showError($('spanPassWord'), "密码格式错误，请重新输入", 0);
        //        txtPassWord.focus();
        return false;
    }
    else if (!myReg.test(strPassWord)) {
        showError($('spanPassWord'), "密码格式错误，请重新输入", 0);
        //        txtPassWord.focus();
        return false;
    }
    else {
        showError($('spanPassWord'), "6-16位字符，可以是半角字母", 1);
        return true;
    }
}

//验证确认密码
function CheckPassWordC() {
    CheckPassword();
    var txtPassWordC = $('TxtPassWordC');
    var strPassWordC = txtPassWordC.value;

    var myReg = /^(\w){6,20}$/; //验证密码的正则表达式

    if (strPassWordC == '') {
        showError($('spanPassWordC'), "确认密码不能为空", 0);
        //        txtPassWordC.focus();

        return false;
    }
    else if (strPassWordC.length > 20 || strPassWordC.length < 6) {
        showError($('spanPassWordC'), "确认密码格式错误，请重新输入", 0);
        //        txtPassWordC.focus();

        return false;
    }
    else if (!myReg.test(strPassWordC)) {
        showError($('spanPassWordC'), "确认密码格式错误，请重新输入", 0);
        //        txtPassWordC.focus();

        return false;
    }
    else if (strPassWordC != $('TxtPassWord').value) {
        showError($('spanPassWordC'), "两次输入的秘密不一致，请重新输入", 0);
        //        txtPassWordC.focus();

        return false;
    }
    else {
        showError($('spanPassWordC'), "", 1);
        return true;
    }

}

function CheckVerifyCode() {
    var txtVerifyCode = $('TxtVerifyCode');
    var strVerifyCode = txtVerifyCode.value;

    var strCodeReg = /^[A-Za-z0-9]+$/; //验证验证码的正则表达式

    if (strVerifyCode == '') {
        showError($('spanVerifyCode'), "验证码不能为空", 0);
        //        txtVerifyCode.focus();

        return false;
    }
    else if (strVerifyCode.length != 4) {
        showError($('spanVerifyCode'), "验证码输入错误", 0);
        //        txtVerifyCode.focus();
        return false;
    }
    else if (!strCodeReg.test(strVerifyCode)) {
        showError($('spanVerifyCode'), "验证码输入错误", 0);
        //        txtVerifyCode.focus();
        return false;
    }
    else {
        showError($('spanVerifyCode'), "", 3);
        return true;
    }
}


//提交注册
function UserSubmit() {
    var chbAgree = $('ChbAgree');

    if (!chbAgree.checked) {
        alert('请先认真阅读并同意《大醍醐服务条款》后再进行注册');
        return;
    }
    if (UserName() && UserEmail() && CheckPassword() && CheckPassWordC() && CheckVerifyCode()) {
        $('btnSave').className = "submit hidden";
        $('divSubmitting').className = "";

        var txtUserName = $("TxtUserName");
        var name = txtUserName.value;

        var txtEmail = $("TxtEmail");
        var strEmail = txtEmail.value;

        var txtPassWord = $('TxtPassWord');
        var strPassWord = txtPassWord.value;

        var txtVerifyCode = $('TxtVerifyCode');
        var strVerifyCode = txtVerifyCode.value;

        createXmlHttpRequest();

        var strInfo = "<userInput><username>" + name + "</username><useremail>" + strEmail + "</useremail><password>" + strPassWord + "</password><verifycode>" + strVerifyCode + "</verifycode><agree>" + chbAgree.checked + "</agree><type>register</type></userInput>";
        var url = "register.aspx";
        xmlHttp.open("post", url, true);

        xmlHttp.onreadystatechange = UserSubmitResult;

        xmlHttp.send(strInfo);

        return true;
    }
}


//通过页面传过来的参数来判断页面该调转到得地址
function getUrl() {
    var param = getUrlValue("Url");
    if (param != null && param.toString() != "") {
        location.href = param;
    } else {
        if (document.referrer != '')
            location.href = document.referrer;
        else
            location.href = "regok.html?email=" + escape($('TxtEmail').value); 
    }
}


//提交信息回调函数
function UserSubmitResult() {
    if (xmlHttp.readyState == 4)//服务器响应状态
    {

        if (xmlHttp.status == 200)//代码执行状态
        {
            $('btnSave').className = "submit";
            $('divSubmitting').className = "hidden";

            var xmlDoc = xmlHttp.responseXML.documentElement;
            var node = xmlDoc.getElementsByTagName('info');
            var strResult = node[0].firstChild.nodeValue;
            var nErrorCode = 0;
            if (strResult != '') {
                nErrorCode = parseInt(strResult);
            }

            switch (nErrorCode) {
                case 1: //注册成功
                    getUrl();
                    break;
                case -1:
                    alert('请先认真阅读并同意《大醍醐服务条款》后再进行注册');
                    refreshCode();
                    break;
                case -2:
                    showError($('spanVerifyCode'), "验证码不能为空", 0);
                    $('TxtVerifyCode').focus();
                    refreshCode();
                    break;
                case -3:
                    showError($('spanVerifyCode'), "验证码输入错误", 0);
                    refreshCode();
                    $('TxtVerifyCode').focus();
                    break;
                case -4:
                    showError($('spanUserName'), "该昵称已被占用，请重新输入", 0);
                    refreshCode();
                    $("TxtUserName").focus();
                    break;
                case -5:
                    showError($('spanPassWord'), "密码格式错误，请重新输入", 0);
                    refreshCode();
                    $('TxtPassWord').focus();
                    break;
                case -6:
                    showError($('spanEmail'), "该邮箱地址已被占用，请重新输入", 0);
                    refreshCode();
                    $('TxtEmail').focus();
                    break;
                default:
                    alert('对不起系统异常，请重试，若该问题重复出现请联系我们');
                    window.location.reload();
                    break;
            }

        }
    }
}


//获取Url参数的值
function getUrlValue(name) {
    var str = window.location.search;

    if (str.indexOf(name) != -1) {
        var pos_start = str.indexOf(name) + name.length + 1;
        var pos_end = str.indexOf("&", pos_start);

        if (pos_end == -1) {
            return str.substring(pos_start);
        }
        else {
            return "";
        }
    }
    else {
        return "";
    }
}

//找回密码后提示用户界面
function showEmail() {
    var strEmail = getUrlValue("email");

    $('bRegOK').innerHTML = "您的注册邮件：　" + unescape(strEmail) + "　，我们已经将您的注册信息发送至您的邮箱。";
}


function showError(spanName, errorInfo, status) {
    switch (status) {
        case 0:
            spanName.innerHTML = '<img src="images/ico04.gif" />' + errorInfo;
            break;
        case 1:
            spanName.innerHTML = '<img src="images/ico03.gif" />' + errorInfo;
            break;
        case 2:
            spanName.innerHTML = '<img src="images/load.gif" />' + errorInfo;
            break;
        default:
            spanName.innerHTML = errorInfo;
            break;
    }
}

//
// patch of innerText for firefox
//
(function (bool) {
    function setInnerText(o, s) {
        while (o.childNodes.length != 0) {
            o.removeChild(o.childNodes[0]);
        }

        o.appendChild(document.createTextNode(s));
    }

    function getInnerText(o) {
        var sRet = "";

        for (var i = 0; i < o.childNodes.length; i++) {
            if (o.childNodes[i].childNodes.length != 0) {
                sRet += getInnerText(o.childNodes[i]);
            }

            if (o.childNodes[i].nodeValue) {
                if (o.currentStyle.display == "block") {
                    sRet += o.childNodes[i].nodeValue + "\n";
                } else {
                    sRet += o.childNodes[i].nodeValue;
                }
            }
        }

        return sRet;
    }

    if (bool) {
        HTMLElement.prototype.__defineGetter__("currentStyle", function () {
            return this.ownerDocument.defaultView.getComputedStyle(this, null);
        });

        HTMLElement.prototype.__defineGetter__("innerText", function () {
            return getInnerText(this);
        })

        HTMLElement.prototype.__defineSetter__("innerText", function (s) {
            setInnerText(this, s);
        })
    }
})(/Firefox/.test(window.navigator.userAgent));


//Qzone认证
function toQzoneLogin() {
    var url = getUrlValue("Url");
    if (url != "") {
        url = encodeURI(url);
        window.location.href = "OAuth/QQ/qzlogin.aspx?R=" + Math.random() + "&Url=" + url;
    }
    else {
        window.location.href = "OAuth/QQ/qzlogin.aspx?R=" + Math.random();
    }
}

