//标准注册相关验证

String.prototype.Trim = function() {
	return this.replace(/(^\s*)|(\s*$)/g, "");
}

String.prototype.LTrim = function() {
	return this.replace(/(^\s*)/g, "");
}

String.prototype.RTrim = function() {
	return this.replace(/(\s*$)/g, "");
}

function validLength(value, min, max) {
	var length1 = value.Trim().length;
	if (length1 < min || length1 > max) {
		return false;
	}
	return true;
}

function validEmail(email) {
	var reg = new RegExp(/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/);
	return reg.test(email);
}

function valid(name) {
	var in1 = document.getElementById(name).value;
	if (in1 == null) {
		return true;
	}

	var adviceDiv = document.getElementById("advice-" + name);
	var advice = "";

	if (name == 'email') {
		var vLength = validLength(in1, 5, 50);
		var vEmail = validEmail(in1);
		if (!vLength || !vEmail) {
			advice = "请正确输入邮箱地址。";
		}else{
			UserService.findUser(in1, null, function(data){
				doCallback(data, 'email');
			});
		}
		
	} else if (name == 'password') {
		var vLength = validLength(in1, 6, 16);
		if (!vLength) {
			advice = "请正确输入密码，在6位到16位之间。";
		}
	} else if (name == 'password2') {
		var vLength = validLength(in1, 6, 16);
		var password1 = document.getElementById("password").value;
		if (password1 != in1) {
			advice = "两次输入的密码不一致。";
		}
		if (!vLength) {
			advice = "请正确输入密码，在6位到16位之间。";
		}
	} else if (name == 'validcode') {
//		var vLength = validLength(in1, 4, 4);
//		if (!vLength) {
//			advice = "请正确填写验证码。";
//		}
	} else if (name == 'nickName') {
		var in2 = in1.replace(/[^\x00-\xFF]/g, "ly");
		var vLength = validLength(in2, 3, 10);
		if (!vLength) {
			advice = "昵称长度不能小于3位或大于10位。";
		}else{
			UserService.findUser(null, in1, function(data){
				doCallback(data, 'nickName');
			});
		}
	} else if (name == 'realName') {	
		
		var vLength = validLength(in1, 2, 4);
		if (!vLength) {
			advice = "请正确输入真实姓名，在2位到4位之间。";
		}

	} else if (name == 'indentity') {			
		if (in1.Trim().length<1) {
			advice = "身份证号必填";
		}else{
			//advice = isIdCardNo(in1.Trim());
		}
	}

	if (advice != "") {
		adviceDiv.className = 'msg';
		adviceDiv.innerHTML = advice;
		return false;
	}
	advice = "验证通过。";
	adviceDiv.className = null;
	adviceDiv.innerHTML = advice;
	return true;
}

function doCallback(data, value){
	if(data){
		var adviceDiv = document.getElementById("advice-" + value);
		var cont = "";
		if(value == 'email'){
			cont = "此邮箱已被注册";
		}else if(value = 'nickName'){
			cont = "此昵称已被占用";
		}
		adviceDiv.className = 'msg';
		adviceDiv.innerHTML = cont;
	}
}

function validSubmit() {
	var vEmail = valid('email');
	var vPass = valid('password');
	var vPass2 = valid('password2');
	var vValid = valid('validcode');
	var vName = valid('nickName');

	var vRealName = valid('realName');
	var vIndentity = valid('indentity');
	var protocol = document.getElementById('protocol').checked;
	if (vEmail && vPass && vPass2 && vValid && protocol && vName &&vRealName &&vIndentity) {
		return true;
	} else {
		if (protocol) {
			if(!vValid){
				document.getElementById('validcode').focus();
			}
			if(!vPass2){
				document.getElementById('password2').focus();
			}
			if(!vPass){
				document.getElementById('password').focus();
			}
			if(!vName){
				document.getElementById('nickName').focus();
			}
			if(!vEmail){
				document.getElementById('email').focus();
			}
			
			if(!vRealName){
				document.getElementById('realName').focus();
			}
			if(!vIndentity){
				document.getElementById('indentity').focus();
			}
			alert("请正确填写注册信息！");
		} else {
			alert("请先同意并选中游游玩服务条款！");
		}
		return false;
	}
}

function isIdCardNo(num)
{  
	  num = num.toUpperCase(); 
	 //身份证号码为15位或者18位，15位时全为数字，18位前17位为数字，最后一位是校验位，可能为数字或字符X。  
	  if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num)))  
	  {
		   return '输入的身份证号不符合规定！';
		 
	 }
//校验位按照ISO 7064:1983.MOD 11-2的规定生成，X可以认为是数字10。
//下面分别分析出生日期和校验位
var len, re;
len = num.length;
if (len == 15)
{
re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);
var arrSplit = num.match(re);

//检查生日日期是否正确
var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]);
var bGoodDay;
bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
if (!bGoodDay)
{
          return '输入的身份证号里出生日期不对！';  
         
}
else
{
//将15位身份证转成18位
//校验位按照ISO 7064:1983.MOD 11-2的规定生成，X可以认为是数字10。
	  var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
	   var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
	   var nTemp = 0, i;  
		num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6);
	   for(i = 0; i < 17; i ++)
	  {
			nTemp += num.substr(i, 1) * arrInt[i];
	   }
	   num += arrCh[nTemp % 11];  
		return num;  
}  
}
if (len == 18)
{
re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);
var arrSplit = num.match(re);

//检查生日日期是否正确
var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]);
var bGoodDay;
bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
if (!bGoodDay)
{

	return'输入的身份证号里出生日期不对！';

}
else
{
//检验18位身份证的校验码是否正确。
//校验位按照ISO 7064:1983.MOD 11-2的规定生成，X可以认为是数字10。
var valnum;
var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
var nTemp = 0, i;
for(i = 0; i < 17; i ++)
{
nTemp += num.substr(i, 1) * arrInt[i];
}
valnum = arrCh[nTemp % 11];
if (valnum != num.substr(17, 1))
{
	return	'输入的身份证号不符合规定！';

}
return "";
}
}
return "";
}   

