/**
 * 玩家在注册时需要调用的JS方法
 */

if (!!!$) {
    (function (s) {
        window.$ = function() {return document.getElementById(s);}
    })();
}

//这个函数中虽然写了好多，但每次还是只校验一个值的。
function regCheckFunc(_sType, _sVal) {
    var bPass = true;
    var aError = [];
    var aType = [];       //每个类型要验证的规则列表
    aType['username'] = '0,1,3,4,10';
    aType['password1'] = '1,2';
    aType['password2'] = '1,7,11';
    aType['email'] = '8';
    aType['verifyCode'] = '3,11,12';
    aType['idcard'] = '13';


    var aMsg = [];
    aMsg['username'] = '帐号名重名或不符合规范，请重新输入。';
    aMsg['password1'] = '密码不符合规范，请重新输入。';
    aMsg['password2'] = '输入密码不一致，请重新输入。';
    aMsg['email'] = '邮箱地址不符合规范，请重新输入。';
    aMsg['verifyCode'] = '验证码输入不符合规则';
    aMsg['idcard'] = '身份证输入不符合规则';
    var aPass = [];
    aPass[0] = !(/>|<|,|\[|\]|\{|\}|\?|\/|\+|=|\||\'|\\|\"|:|;|\~|\!|\@|\#|\*|\$|\%|\^|\&|\(|\)|`/i).test(_sVal);
    aPass[1] = !(regStrLength(_sVal) < 4 || regStrLength(_sVal) > 18);
    aPass[2] = !(regStrLength(_sVal) < 6 || regStrLength(_sVal) > 18);
    aPass[3] = !(_sVal.indexOf(' ') > -1);
    aPass[4] = !(!isNaN(_sVal) && _sVal != ''); //验证是否都是数字
    aPass[5] = /^[a-zA-Z0-9_]*$/.test(_sVal);
    aPass[6] = regStrLength(_sVal) > 2;

    if ($('password1') && $('password2')) {
        if (! $('password2').value) {
            aPass[7] = true;
        } else {
            aPass[7] = $('password1').value == $('password2').value;
        }
    } else {
        aPass[7] = true;
    }

    aPass[8] = /^(([0-9a-zA-Z]+)|([0-9a-zA-Z]+[_.0-9a-zA-Z-]*[0-9a-zA-Z]+))@([a-zA-Z0-9-]+[.])+([a-zA-Z]{2}|net|com|gov|mil|org|edu|int)$/.test(_sVal);
    aPass[9] = /^[0-9]{4}$/.test(_sVal);
    aPass[10] = !(/[A-Z]/g).test(_sVal);

    aPass[11] = /^[a-zA-Z0-9]*$/.test(_sVal);
    aPass[12] = /^[0-9]{4}$/.test(_sVal);
    aPass[13] = !(regStrLength(_sVal) < 15 || regStrLength(_sVal) > 18);
    var aRule = aType[_sType].split(',');

    for (var i = 0; i < aRule.length; i++) {
        bPass = bPass && aPass[aRule[i]];
        if (!aPass[aRule[i]]) {
            aError = aMsg[_sType];
            break;
        }
    }

    return {pass:bPass, msg:aError};
}

//单项检查
function regCheck(_oObj) {
    var sType = _oObj.id;

    var aMsg = {};
    aMsg['username'] = "帐号名可用。";
    aMsg['password1'] = '密码可用。';
    aMsg['password2'] = '二次输入密码一致。';
    aMsg['email'] = '邮箱地址可用。';
    aMsg['verifyCode'] = '已输入验证码';
    aMsg['idcard'] = '已输入身份证';

    var bMsg = {};
    bMsg['username'] = '请输入您的帐号。';
    bMsg['password1'] = '请输入您的密码。';
    bMsg['password2'] = '请再次输入您的密码。';
    bMsg['email'] = '请输入正确的电子邮箱。';
    bMsg['verifyCode'] = '请输入验证码';
    bMsg['idcard'] = '请输入身份证';
    var sMsg = regCheckFunc(sType, _oObj.value);

    if (sMsg.pass == false) {
        if (_oObj.value == "") {
            $(sType + '_span').innerHTML = bMsg[sType];
            $(sType + '_span').style.color = "green";
        } else {
            $(sType + '_span').innerHTML = sMsg.msg;
            $(sType + '_span').style.color = "red";
        }

        return false;
    } else {
        if (sType == "username" && arguments.length == 1) {
            if ($('username') && $('username').value) {
                var url = "../pre/AccountQuery.php?act=1&username=" + $('username').value + "&uk=" + (new Date()).valueOf();
                //alert(url);
                xmlHttp = CreateXmlRequest();
                xmlHttp.onreadystatechange = checkUserNameUnique;
                xmlHttp.open("GET", url, true);
                xmlHttp.send(null);
            }
        } else {
            $(sType + '_span').innerHTML = aMsg[sType];
            $(sType + '_span').style.color = "green";
        }
    }
    return true;
}

function regCheckSubmit() {
    var aSort = ['username','password1','password2','email','verifyCode'];
    var bCheck = true;
    var sType = '';
    var aShow = [];
    var aMsg = {};

    aMsg['username'] = '请输入您的帐号。';
    aMsg['password1'] = '请输入您的登录密码。';
    aMsg['password2'] = '请再次输入您的登录密码。';
    aMsg['email'] = '请输入正确的电子邮箱。';
    aMsg['verifyCode'] = '请输入验证码';

    for (var i = 0; i < aSort.length; i++) {
        aShow = aSort[i];
        sType = $(aSort[i]).type;

        if (sType == 'text' || sType == 'password') {

            var _input = $(aSort[i]);
            if (_input['notOK'] != undefined) {
                bCheck = _input.getAttribute("notOK") == "1" ? false : true;
            } else {
                if (!regCheck($(aSort[i]))) {
                    $(aShow + '_span').innerHTML = aMsg[aShow];
                    $(aShow + '_span').style.color = "red";
                    bCheck = false;
                }
            }
        }
    }
    //alert("bCheck:" + bCheck);
    if (!bCheck) {
        //show_msg('您输入的信息不完整或者不符合格式，请重新检查后提交！', 'sorry', '', ' ');
        alert('您输入的信息不完整或者不符合格式，请重新检查后提交！');
    } else {
        //show_msg('正在提交申请，请稍后.......', '', '', '', ' ');
    }
    return bCheck;
}

function regStrLength(_sVal) {
    var iLen;
    var sVal = escape(_sVal);
    iLen = sVal.length - (sVal.length - sVal.replace(/\%u/g, "u").length) * 4;
    sVal = sVal.replace(/\%u/g, "uu");
    iLen = iLen - (sVal.length - sVal.replace(/\%/g, "").length) * 2;
    return iLen;
}

function sl(sid) {
    var aMsg = {};
    aMsg['username_span'] = "请输入你期望的用户名";
    aMsg['password1_span'] = "可以使用英文或数字，6-16位。";
    aMsg['password2_span'] = "再输入一次密码。";
    aMsg['email_span'] = "用来找回密码";
    aMsg['verifyCode_span'] = "输入右边图片中的字符。";
    aMsg['idcard_span'] = '请输入身份证';
    $(sid).className = "grn";

    $(sid).innerHTML = aMsg[sid];
}

var xmlHttp = null;

function checkUserNameUnique() {

    if (xmlHttp.readyState == 4) {
        if (xmlHttp.status == 200) {
            try {
                var haveUser = xmlHttp.responseText;

                if (haveUser.indexOf('1') != -1) {
                    haveUser = "0";
                    $("username_span").innerHTML = '该名已经被占用';
                    $("username_span").style.color = "red";
                    $("username").setAttribute("notOK", 1);
                } else {
                    $("username_span").innerHTML = '帐号名可用。';
                    $("username_span").style.color = "green";
                    $("username").setAttribute("notOK", 0);
                }
            }
            catch(e) {
                alert(e.description);
                //alert("AJAX RUNTIME ERROR!");
            }
        }
    }
}

function CreateXmlRequest() {
    var xmlhttp_request = false;
    try {
        if (window.XMLHttpRequest) {
            xmlhttp_request = new XMLHttpRequest();
            if (xmlhttp_request.overrideMimeType) {
                xmlhttp_request.overrideMimeType('text/xml');
            }
        }
        else if (window.ActiveXObject) {
            for (var i = 5; i; i--) {
                try {
                    if (i == 2) {
                        xmlhttp_request = new ActiveXObject("Microsoft.XMLHTTP");
                    }
                    else {
                        xmlhttp_request = new ActiveXObject("Msxml2.XMLHTTP." + i + ".0");
                        xmlhttp_request.setRequestHeader("Content-Type", "text/xml");
                        xmlhttp_request.setRequestHeader("Content-Type", "gb2312");
                    }
                    break;
                }
                catch(e) {
                    xmlhttp_request = false;
                }
            }
        }

    }
    catch(e) {
        xmlhttp_request = false;
    }
    return xmlhttp_request;
}

function regCheckSubmit1() {
    var aSort = ['username','password1','password2','email','verifyCode'];
    var bCheck = true;
    var sType = '';
    var aShow = [];
    var aMsg = {};
    var strMsg = '';

    aMsg['username'] = '帐号';
    aMsg['password1'] = '登录密码';
    aMsg['password2'] = '确认密码';
    aMsg['email'] = '电子邮箱';
    aMsg['verifyCode'] = '验证码';

    for (var i = 0; i < aSort.length; i++) {
        aShow = aSort[i];
        sType = $(aSort[i]).type;
        //alert(aShow);return false;
        if (sType == 'text' || sType == 'password') {
            var obj = regCheckFunc($(aSort[i]).id, $(aSort[i]).value);
            if (!obj.pass) {
                //$(aShow + '_span').innerHTML = aMsg[aShow];
                strMsg += aMsg[aShow] + '、';
                bCheck = false;
            }
        }
    }
    if (strMsg != '') {
        alert('请输入你的' + strMsg);
    }
    return bCheck;
}
