﻿;
;
;

var Website = "http://account.gyyx.cn/";
var XMLHTTPUrl = "ValidateUserInfo.ashx?txtUserName=";

var msgInfo = new Array();
msgInfo[0] = new Array(
	'字母开始，6-16个字符，不区分大小写。'
	, '<span style="color:red">英文字母开始，6-16个字符。</span>'
);
msgInfo[1] = new Array(
	'4-16个字符，由数字和字母和符合组成。'
	, '<span style="color:red">密码格式错误，4-16个字符。</span>'
	, '<span style="color:red">密码不能用同一个字符来设置。</span>'
	, '<span style="color:red">密码不能用连续的数字设置。</span>'
	, '<span style="color:red">密码不能用连续的小写字母设置。</span>'
	, '<span style="color:red">密码不能用连续的大写字母设置。</span>'
);
msgInfo[2] = new Array(
	'再次输入密码，4-16个字符。'
	, '<span style="color:red">两次输入的密码不一致。</span>'
);
msgInfo[3] = new Array(
	'英文字母或汉字组成，不可修改。用于找回密码。'
	, '<span style="color:red">真实姓名太短，请重新输入。</span>'
	, '<span style="color:red">格式错误，真实姓名只能填中文或者字母。</span>'
)
msgInfo[4] = new Array(
	'成年人身份证号码，不可修改。用于找回密码。'
	, '<span style="color:red">证件格式不正确或长度太短，请重新填写。</span>'
	, '<span style="color:red">未成年人不允许注册，请检查您的身份证号。</span>'
)
msgInfo[5] = new Array(
	'不可修改，用于找回密码。推荐“<a href="http://mail.qq.com/cgi-bin/loginpage?t=regist" target="_blank">QQ邮箱</a>”'
	, '<span style="color:red">格式不正确。推荐“<a href="http://mail.qq.com/cgi-bin/loginpage?t=regist" target="_blank">QQ邮箱</a>”</span>'
)
msgInfo[6] = new Array(
	'验证码由数字和字母（不区分大小写）组成。 '
	, '<span style="color:red">验证码由数字和字母（不区分大小写）组成。</span>'
)
msgInfo[7] = new Array(
	'请您阅读用户服务条款。'
	, '<span style="color:red">请您阅读用户服务条款。</span>'
);

String.prototype.trim = function() {
    return this.replace(/(^\s*)|(\s*$)/g, "");
}

function validateUsername(obj) {
    var str = obj.value.trim();

    if (str == "") return 1;

    var patn = /^[a-zA-Z][0-9a-zA-Z]{5,16}$/;
    if (patn.test(str)) return 0;
    else return 1;
}

function validatePassword(obj) {
    var str = obj.value;

    if (str == "") return 1;

    //check length and alphabet
    var patn = /^.{4,16}$/;
    if (!patn.test(str)) return 1;

    //check if all the characters are the same
    for (var i = 0; i < str.length; i++) {
        if (str.charAt(0) != str.charAt(i)) break;
    }
    if (i == str.length) return 2;

    //check if is number sequence
    var seqStr = "01234567890";
    if (seqStr.indexOf(str) != -1) return 3;
    //check if is lower alphabet sequence
    var seqStr = "abcdefghijklmnopqrstuvwxyz";
    if (seqStr.indexOf(str) != -1) return 4;
    //check if is upper alphabet sequence
    var seqStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    if (seqStr.indexOf(str) != -1) return 5;
    //if validated
    return 0;
}

function validateRePassword(obj, objRe) {
    var str = objRe.value;

    if (str == "") return 1;

    if (str == obj.value) return 0;
    else return 1;
}

function validateRule(obj) {
    if (obj.checked) return 0;
    else return 1;
}

function validateTrueName(obj) {
    var str = obj.value.trim();
    // str length
    // include chinese or letter
    var patn = /^([\u4e00-\u9fa5]|[A-Za-z])+$/;
    //    if(str.len()<4 || str.len()>20) {
    if (str.length < 2 || str.length > 20) {
        return 1;
    }
    else if (!patn.test(str)) {
        return 2;
    } else {
        return 0;
    }
}

function validateSsn(obj) {
    var str = obj.value.trim();
    var patn = /^(\d{18}|\d{17}[xX]|\d{15})$/;
    if (!patn.test(str))
        return 1;
    if (!checkIdcard(str))
        return 2;
    return 0;
}

function validateEmail(obj) {
    var str = obj.value.trim();
    var patn = /^[_a-zA-Z0-9\-]+(\.[_a-zA-Z0-9\-]*)*@[a-zA-Z0-9\-]+([\.][a-zA-Z0-9\-]+)+$/;
    if (patn.test(str)) {
        return 0;
    } else {
        return 1; //incorrect format
    }
}

function validateValiCode(obj) {
    var str = obj.value.trim();

    if (str == "") return 1;

    var patn = /^[0-9a-zA-Z]{4,6}$/;
    if (patn.test(str)) return 0;
    else return 1;
}


function checkIdcard(idcard) {
    var Errors = new Array("验证通过!", "身份证号码位数不对!", "身份证号码出生日期超出范围或含有非法字符!", "身份证号码校验错误!", "身份证地区非法!");
    var area = { 11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "内蒙古", 21: "辽宁", 22: "吉林", 23: "黑龙江", 31: "上海", 32: "江苏", 33: "浙江", 34: "安徽", 35: "福建", 36: "江西", 37: "山东", 41: "河南", 42: "湖北", 43: "湖南", 44: "广东", 45: "广西", 46: "海南", 50: "重庆", 51: "四川", 52: "贵州", 53: "云南", 54: "西藏", 61: "陕西", 62: "甘肃", 63: "青海", 64: "宁夏", 65: "新疆", 71: "台湾", 81: "香港", 82: "澳门", 91: "国外" }
    var idcard, Y, JYM;
    var ereg;
    var S, M;
    //var nowYear = new Date().getYear();
    var nowYear = new Date().getFullYear();
    var nowMonth = new Date().getMonth() + 1;

    var idcard_array = new Array();
    idcard_array = idcard.split("");
    if (area[parseInt(idcard.substr(0, 2))] == null) return false; //身份证地区非法    
    switch (idcard.length) {
        case 15:
            if ((parseInt(idcard.substr(6, 2)) + 1900) % 4 == 0 || ((parseInt(idcard.substr(6, 2)) + 1900) % 100 == 0 && (parseInt(idcard.substr(6, 2)) + 1900) % 4 == 0)) {
                ereg = new RegExp("^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$"); //测试出生日期的合法性    
            }
            else {
                ereg = new RegExp("^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$"); //测试出生日期的合法性    
            }
            if (ereg.test(idcard) && ((nowYear - (parseInt(idcard.substr(6, 2)) + 1900)) * 12 + nowMonth - parseInt(idcard.substr(8, 2)) >= 18 * 12))

                return true;  //验证通过  
            else
                return false; //身份证号码出生日期超出范围或含有非法字符   
            break;
        case 18:
            if (parseInt(idcard.substr(6, 4)) % 4 == 0 || (parseInt(idcard.substr(6, 4)) % 100 == 0 && parseInt(idcard.substr(6, 4)) % 4 == 0)) {
                ereg = new RegExp("^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$"); //闰年出生日期的合法性正则表达式    
            }
            else {
                ereg = new RegExp("^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$"); //平年出生日期的合法性正则表达式    
            }
            if (ereg.test(idcard)) {
                S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7 + (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9 + (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10 + (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5 + (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8 + (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4 + (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2 + parseInt(idcard_array[7]) * 1 + parseInt(idcard_array[8]) * 6 + parseInt(idcard_array[9]) * 3;
                Y = S % 11;
                M = "F";
                JYM = "10X98765432";
                M = JYM.substr(Y, 1);
                if (M == idcard_array[17].toUpperCase() && ((nowYear - parseInt(idcard.substr(6, 4))) * 12 + nowMonth - parseInt(idcard.substr(10, 2)) >= 18 * 12))
                    return true;  //验证通过    
                else
                    return false;    //身份证号码校验错误
            }
            else
                return false;  //身份证号码位数不对  
            break;
        default:
            return false; //身份证号码位数不对    
            break;
    }
}



var objUser = document.getElementById("username");
var objPass = document.getElementById("password1");
var objRePass = document.getElementById("password2");

var objTrueName = document.getElementById("name");
var objIdCard = document.getElementById("idcard");
var objEmail = document.getElementById("email");
var objValiCode = document.getElementById("checkcode");

var objRule = document.getElementById("ckbxAgree");
/////////////////////////////////////////////////////////////////////////
var objUserInfo = document.getElementById("username_info");
var objPassInfo = document.getElementById("password_info");
var objRePassInfo = document.getElementById("confirm_password_info");

var objTrueNameInfo = document.getElementById("name_info");
var objIdCardInfo = document.getElementById("idcard_info");
var objEmailInfo = document.getElementById("email_info");
var objValiCodeInfo = document.getElementById("checkcode_info");

var objRuleInfo = document.getElementById("rule_info");

//init
objUserInfo.innerHTML = msgInfo[0][0];
objPassInfo.innerHTML = msgInfo[1][0];
objRePassInfo.innerHTML = msgInfo[2][0];
objTrueNameInfo.innerHTML = msgInfo[3][0];
objIdCardInfo.innerHTML = msgInfo[4][0];
objEmailInfo.innerHTML = msgInfo[5][0];
objValiCodeInfo.innerHTML = msgInfo[6][0];
objRuleInfo.innerHTML = msgInfo[7][0];

objUser.onblur = validateUserAjax;
objPass.onblur = validatePass;
objRePass.onblur = validatePass;
objTrueName.onblur = validateTn;
objIdCard.onblur = validateIDCard;
objEmail.onblur = validEmail;
objValiCode.onblur = validValiCode;
objRule.onblur = validRule;

objUser.onkeyup = validateUser;
objPass.onkeyup = validatePass;
objRePass.onkeyup = validateRePass;
objTrueName.onkeyup = validateTn;
objIdCard.onkeyup = validateIDCard;
objEmail.onkeyup = validEmail;
objValiCode.onkeyup = validValiCode;
objRule.onkeyup = validRule;

objUser.onfocus = validateUser;
objPass.onfocus = validatePass;
objRePass.onfocus = validateRePass;
objTrueName.onfocus = validateTn;
objIdCard.onfocus = validateIDCard;
objEmail.onfocus = validEmail;
objValiCode.onfocus = validValiCode;
objRule.onfocus = validRule;

//验证用户
function validateUser() {
    var user_code = validateUsername(objUser);
    objUserInfo.innerHTML = msgInfo[0][user_code];
}

//验证密码
function validatePass() {
    var pass_code = validatePassword(objPass);
    objPassInfo.innerHTML = msgInfo[1][pass_code];
}

//验证第二个密码
function validateRePass() {
    var re_pass_code = validateRePassword(objPass, objRePass);
    objRePassInfo.innerHTML = msgInfo[2][re_pass_code];
}


//验证真实姓名
function validateTn() {
    var true_name_code = validateTrueName(objTrueName);
    objTrueNameInfo.innerHTML = msgInfo[3][true_name_code];
}

//验证身份证
function validateIDCard() {
    var id_card_code = validateSsn(objIdCard);
    objIdCardInfo.innerHTML = msgInfo[4][id_card_code];
}

//验证Email
function validEmail() {
    var email_code = validateEmail(objEmail);
    objEmailInfo.innerHTML = msgInfo[5][email_code];
}

//验证验证码
function validValiCode() {
    var vali_code_code = validateValiCode(objValiCode);
    objValiCodeInfo.innerHTML = msgInfo[6][vali_code_code];
}


//验证协议
function validRule() {
    var rule_code = validateRule(objRule);
    objRuleInfo.innerHTML = msgInfo[7][rule_code];
}


function validateAll() {
    var user_code = validateUsername(objUser);
    var pass_code = validatePassword(objPass);
    var re_pass_code = validateRePassword(objPass, objRePass);
    var true_name_code = validateTrueName(objTrueName);
    var id_card_code = validateSsn(objIdCard);
    var email_code = validateEmail(objEmail);
    var vali_code_code = validateValiCode(objValiCode);
    var rule_code = validateRule(objRule);

    objUserInfo.innerHTML = msgInfo[0][user_code];
    objPassInfo.innerHTML = msgInfo[1][pass_code];
    objRePassInfo.innerHTML = msgInfo[2][re_pass_code];
    objTrueNameInfo.innerHTML = msgInfo[3][true_name_code];
    objIdCardInfo.innerHTML = msgInfo[4][id_card_code];
    objEmailInfo.innerHTML = msgInfo[5][email_code];
    objValiCodeInfo.innerHTML = msgInfo[6][vali_code_code];
    objRuleInfo.innerHTML = msgInfo[7][rule_code];

    if (objUser.value.trim() == "" || objPass.value.trim() == "" || objRePass.value.trim() == ""
    || objTrueName.value.trim() == "" || objIdCard.value.trim() == "" || objValiCode.value.trim() == "") {
        return false;
    }
    if (user_code != 0 || pass_code != 0 || re_pass_code != 0 || true_name_code != 0 || id_card_code != 0
    	|| email_code != 0 || vali_code_code != 0 || rule_code != 0) {
        return false;
    }
    return true;
}

function validateUserAjax1() {
    var user_code = validateUsername(objUser);

    var nick = objUser.value.trim();
    if (user_code != 0 || nick == "") {
        objUserInfo.innerHTML = msgInfo[0][user_code];
        return false;
    }

    objUserInfo.innerHTML = "检测中，请稍等...";

    $.ajax({
        url: "http://account.gyyx.cn/ValidateUserInfo.ashx",
        type: "POST",
        data: { txtUserName: nick },
        dataType: "jsonp",
        async: false,
        success: function(msg) {
            if (data.result == "error") {
                $("#username_info").html("<span style='color:red'>" + nick + "用户名已经被使用！</span>");
                return false;
            }
            else {
                $("#username_info").html("您可以使用" + nick + "用户名注册！");
                return true;
            }
        }
    });


}

function submitForm() {
    if (!validateAll()) {
        return false;
    }
    if (!validateUserAjax1()) {
        return false;
    }
    return true;
}

function validateUserAjax() {
    var user_code = validateUsername(objUser);
    var nick = objUser.value.trim();
    if (user_code != 0 || nick == "") {
        objUserInfo.innerHTML = msgInfo[0][user_code];
        return false;
    }

    $("#username_info").html("检测中，请稍等...");
    $.getJSON(Website + XMLHTTPUrl + nick + "&jsoncallback=?", function(data) {
        
        if (data.result == "error") {
            $("#username_info").html("<span style='color:red'>" + nick + "用户名已经被使用！</span>");
            return false;
        }
        else {
            $("#username_info").html("您可以使用" + nick + "用户名注册！");
            return true;
        }
    })
    return true;
}
;
;
;
