var errimg = '<img src=\"/images/public/no.gif\" />';
var rightimg = '<img src=\"/images/public/yes.jpg\" />';


// 更换验证码图片
function ChangeLoginImage()
{$("#loginimage").attr("src","/include/code/GetCode.asp?t="+Math.random());}


function ChangeRegImage()
{$("#regimage").attr("src","/include/code/GetCode.asp?t="+Math.random());}



function xCheckIDCard(idc){
	if(CheckIDCard(idc)){
		$("#IDCardInfo").html(rightimg);
		return true;
	}
	else{
		$("#IDCardInfo").html('<font style=\"color:#F00\">'+ errimg +' 请正确填写身份证号码</font>');
		return false;
	}
}



// 身份证验证
function CheckIDCard(xStrNumber)
{
	var StrNumber = xStrNumber ;
	//判断身份证号码格式函数
	//公民身份号码是特征组合码，
	//排列顺序从左至右依次为：六位数字地址码，八位数字出生日期码，三位数字顺序码和一位数字校验码
	
	//身份证号码长度判断
	if(!(StrNumber.length==15||StrNumber.length==18))
	{
		//alert("身份证号码位数不正确，请重新填写!");
		return false;
	}
	//身份证号码最后一位可能是超过100岁老年人的X.X也可以代表是阿拉伯数字10的意思
	//所以排除掉最后一位数字进行数字格式测试，最后一位数字有最后一位数字的算法
	StrNumber = StrNumber.replace('X','x');

	var Ai;
	if(StrNumber.length==18)
	{
		Ai = StrNumber.substring(0,17);
	}
	else
	{
		Ai =StrNumber.substring(0,6)+"19"+StrNumber.substring(6,15);
	}
	
	//调用数字判断函数IsNumeric()
	if(IsNumeric(Ai)==false)
	{
		//alert("身份证号码格式不正确，请重新填写!");
		return false;
	}
	
	var strYear,strMonth,strDay,strBirthDay;
	strYear = parseInt(Number(Ai.substr(6,4))); 
	strMonth = parseInt(Number(Ai.substr(10,2))); 
	strDay = parseInt(Number(Ai.substr(12,2)));
	
	//调用日期判断函数IsValidDate()
	if (IsValidDate(strYear,strMonth,strDay)==false)
	{
		//alert("身份证号码"+Ai+"日期格式年份"+strYear+"月份"+strMonth+"日"+strDay+"不正确，请重新填写!");
		return false;
	}

	var arrVerifyCode = new Array("1","0","x","9","8","7","6","5","4","3","2");
	var Wi = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);
	var k,TotalmulAiWi=0;
	for (k=0; k<17;k++)
	{
		TotalmulAiWi = TotalmulAiWi + parseInt(Ai.substr(k,1)) * Wi[k];
	}

	var modValue =TotalmulAiWi % 11 ;
	var strVerifyCode = arrVerifyCode[modValue];
	Ai = Ai+strVerifyCode;

	if((StrNumber.length==18)&&(StrNumber!=Ai))
	{
		//alert("身份证号码"+StrNumber+"与正确的号码"+Ai+"不一致，请重新填写!");
		return false;
	}
	
	return true;
}


// 数字判断函数IsNumeric()
function IsNumeric(oNum)
{
	if(!oNum) return false;
	var strP=/^[0-9]{1,17}$/;
	if(!strP.test(oNum)) return false;
	
	try{
		if(parseFloat(oNum)!=oNum) return false;
	}
	catch(ex)
	{
		return false;
	}
	return true;
}


// 有效年份判断函数IsValidYear()
function IsValidYear(psYear)
{
	var sYear = new String(psYear);
	if(psYear==null)
	{
		//alert("身份证号码出生日期中年份为Null，请重新填写!");
		return false;
	}

	if(isNaN(psYear)==true)
	{
		//alert("身份证号码出生日期中年份必须为数字，请重新填写!");
		return false;
	}

	if(sYear == "")
	{
		//alert("身份证号码出生日期中年份为空，请重新填写!");
		return true;
	}

	if(sYear.match(/[^0-9]/g)!=null)
	{
		//alert("身份证号码出生日期中年份必须为0-9之间的数字组成，请重新填写!");
		return false;
	}

	var nYear = parseInt(sYear,10);
	if((nYear < 0) || (9999 < nYear))
	{
		//alert(nYear +"身份证号码出生日期中年份必须为正常的正整数，请重新填写!");
		return false;
	}
	return true;
}


// 有效月份判断函数IsValidMonth()
function IsValidMonth(psMonth)
{
	var sMonth = new String(psMonth);

	if(psMonth==null)
	{return false;}

	if(isNaN(psMonth)==true)
	{return false;}

	if(sMonth == "")
	{return true;}

	if(sMonth.match(/[^0-9]/g)!=null)
	{return false;}

	var nMonth = parseInt(sMonth,10);

	if((nMonth < 0) || (12 < nMonth))
	{return false;}

	return true;
}


// 有效日判断函数IsValidDay()
function IsValidDay(psDay)
{
	var sDay  = new String(psDay);
	if(psDay==null)
	{return false;}

	if(isNaN(psDay)==true)
	{return false;}

	if(sDay == "")
	{return true;}

	if(sDay.match(/[^0-9]/g)!=null)
	{return false;}

	var nDay = parseInt(psDay, 10);

	if((nDay < 0) || (31 < nDay))
	{return false;}

	return true;
}


// 有效日期判断函数IsValidDate()
function IsValidDate(psYear, psMonth, psDay)
{
	if(psYear==null || psMonth==null || psDay==null)
	{return false;}

	var sYear  = new String(psYear);
	var sMonth = new String(psMonth);
	var sDay	= new String(psDay);

	if(IsValidYear(sYear)==false)
	{return false;}

	if(IsValidMonth(sMonth)==false)
	{return false;}

	if(IsValidDay(sDay)==false)
	{return false;}

	var nYear  = parseInt(sYear,  10);
	var nMonth = parseInt(sMonth, 10);
	var nDay	= parseInt(sDay,	10);

	if(sYear=="" &&  sMonth=="" && sDay=="")
	{return true;}

	if(sYear=="" || sMonth=="" || sDay=="")
	{return false;}
	
	if(nMonth < 1 || 12 < nMonth)
	{return false;}
	if(nDay < 1 || 31 < nDay)
	{return false;}

	if(nMonth == 2)
	{
		if((nYear % 400 == 0) || (nYear % 4 == 0) && (nYear % 100 != 0))
		{
			if((nDay < 1) || (nDay > 29))
			{return false;}
		}
		else
		{
			if((nDay < 1) || (nDay > 28))
			{return false;}
		}
	}
	else if((nMonth == 1)  ||
			(nMonth == 3)  ||
			(nMonth == 5)  ||
			(nMonth == 7)  ||
			(nMonth == 8)  ||
			(nMonth == 10) ||
			(nMonth == 12))
	{
		if((nDay < 1) || (31 < nDay))
		{return false;}
	}
	else
	{
		if((nDay < 1) || (30 < nDay))
		{return false;}
	}
	return true;
}


// 判断是否中文
function IsValidChinese(str)
{
	var pattern = /[^\u4E00-\u9FA5]/;
	return !pattern.test(str);
}


// 判断真实姓名有效性
function IsValidRealName(str)
{
	if(str.length<2)
	{ $("#realnameinfo").html(errimg + ' <font style=\"color:#F00\">请填写您的真实姓名！</font>');}
	else
	{
		if(IsValidChinese(str))
		{$("#realnameinfo").html(rightimg);}
		else
		{$("#realnameinfo").html(errimg + ' <font style=\"color:#F00\">请填写您的中文姓名！</font>');}
	}
}


// 判断是否数字
function IsValidNumber(str)
{
	var pattern = /[^0-9]/;
	return !pattern.test(str);
}


// 邮箱有效性
function IsValidEmail(email)
{
	var CheckMail = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/;
	if(!CheckMail.test(email))
	{return false;}
	else
	{return true;}
}


//pwStrength函数
//当用户放开键盘或密码输入框失去焦点时,根据不同的级别显示不同的颜色
function pwStrength(pwd) {
	O_color="#eeeeee";
	L_color="#FF0000";
	M_color="#FF9900";
	H_color="#33CC00";
	Font1_Color="#000000";
	Font2_Color="#000000";
	Font3_Color="#000000";
	
	if (pwd==null||pwd=='')
	{
		Lcolor=Mcolor=Hcolor=O_color;
	}
	else
	{
		S_level=checkStrong(pwd);
		switch(S_level)
		{
			case 0:
				Lcolor=L_color;
				Mcolor=Hcolor=O_color;
				Font2_Color=Font3_Color=O_color;
				break;
			case 1:
				Lcolor=L_color;
				Mcolor=Hcolor=O_color;
				Font2_Color=Font3_Color=O_color;
				break;
			case 2:
				Lcolor=Mcolor=M_color;
				Hcolor=O_color;
				Font1_Color=M_color;
				Font3_Color=O_color;
				break;
			default:
				Lcolor=Mcolor=Hcolor=H_color;
				Font1_Color=Font2_Color=H_color;
		}
	}
	
	$("#strength_L").css({background:Lcolor,color:Font1_Color});
	$("#strength_M").css({background:Mcolor,color:Font2_Color});
	$("#strength_H").css({background:Hcolor,color:Font3_Color});
	
	return;
}


//CharMode函数
//测试某个字符是属于哪一类
function CharMode(iN) {
   if (iN>=48 && iN <=57) //数字
    return 1;
   if (iN>=65 && iN <=90) //大写字母
    return 2;
   if (iN>=97 && iN <=122) //小写
    return 4;
   else
    return 8; //特殊字符
}


//bitTotal函数
//计算出当前密码当中一共有多少种模式
function bitTotal(num) {
   modes=0;
   for (i=0;i<4;i++) {
    if (num & 1) modes++;
     num>>>=1;
    }
   return modes;
}


//checkStrong函数
//返回密码的强度级别
function checkStrong(sPW) {
	if (sPW.length<6)
	{
		ShowInfo("#PasswordInfo",'Err','密码长度不得少于6位！')
		return 0; //密码太短
	}
	
	Modes=0;
	for (i=0;i<sPW.length;i++)
	{
		//测试每一个字符的类别并统计一共有多少种模式
		Modes|=CharMode(sPW.charCodeAt(i));
	}
	
	ShowInfo("#PasswordInfo",'Pass','密码填写完成！')
	
	return bitTotal(Modes);
}




// 验证重复密码
function CheckPassword2(pwd)
{
	if($("#password1").val().length<6||$("#password1").val()==null||$("#password1").val()=='')
	{
		ShowInfo("#PasswordInfo",'Err','密码长度不得少于6位！')
		//document.getElementById("Password").focus();
		ShowInfo("#PasswordInfo2",'Err','请填写完整上面的密码再继续填写！')
		return false;
	}
	else
	{
		if($("#password1").val()==$("#password2").val())
		{
			ShowInfo("#PasswordInfo2",'Pass','')
			return true;
		}
		else
		{
			ShowInfo("#PasswordInfo2",'Err','两次输入的密码不相同，请输入与上面一样的密码！')
			
			return false;
		}
	}
}


// 返回信息
function ShowInfo(elementById,PassErr,InfoContent)
{
	$(elementById).css("display","block");
	if(PassErr=='Pass')
	{$(elementById).html(rightimg+InfoContent);}
	else
	{$(elementById).html(errimg+InfoContent);}
}





// 检测邮箱
function checkemail(email)
{
	
	if(IsValidEmail(email)==false)
	{
		$('#emailinfo').html(errimg + ' <font style=\"color:#F00\">请填写正确的Email地址，用于登录以及密码找回的收件邮箱！</font>');
		return;
	}
	else
	{
		// ajax request
		$.getJSON(
		"/user/checkemail.asp?email="+ escape(email),
		function(json){
			switch(json[0].CheckEmail)
			{
				case '1':
					$("#emailinfo").html(errimg + ' <font style=\"color:#F00\">该Email已被注册，请更换另一Email！</font>');
					break;
				case '2':
					$("#emailinfo").html(rightimg + ' 您可以使用该帐号注册！');
					break;
				default:
					$("#emailinfo").html(errimg + ' <font style=\"color:#F00\">请填写正确的Email地址，用于登录以及密码找回的收件邮箱！</font>');
					break;
			}
		}
		)
		
		
	}
}


// 返回邮箱验证结果
function emailgetResponse(originalRequest)
{
	var outputHTML = '';
	var outputHTML = originalRequest.responseText.evalJSON(true);

	switch(outputHTML[0].CheckEmail)
	{
		case '1':
			$("#emailinfo").html(errimg + ' <font style=\"color:#F00\">该Email已被注册，请更换另一Email！</font>');
			break;
		case '2':
			$("#emailinfo").html(rightimg + ' 您可以使用该帐号注册！');
			break;
		default:
			$("#emailinfo").html(errimg + ' <font style=\"color:#F00\">请填写正确的Email地址，用于登录以及密码找回的收件邮箱！</font>');
			break;
	}
}
function CheckTel(str){
	if(str.length<6)
	{ ShowInfo("#TelInfo",'Err','请输入联系电话号码'); }
	else
	{ ShowInfo("#TelInfo",'Pass',''); }
}



var dateAdd=function(interval,number,date){ 
	number = parseInt(number);
	if (typeof(date)=="string"){
	date = date.split('-');
	--date[1];
	eval("var date = new Date("+date.join(",")+")");
	}
	if (typeof(date)=="object"){
	var date = date;
	}
	switch(interval){
	case "y": date.setFullYear(date.getFullYear()+number); break;
	case "m": date.setMonth(date.getMonth()+number); break;
	case "d": date.setDate(date.getDate()+number); break;
	case "w": date.setDate(date.getDate()+7*number); break;
	case "h": date.setHours(date.getHour()+number); break;
	case "n": date.setMinutes(date.getMinutes()+number); break;
	case "s": date.setSeconds(date.getSeconds()+number); break;
	case "l": date.setMilliseconds(date.getMilliseconds()+number); break;
	}

	return date;
}

