﻿/*数据检验
CheckEmpty(objId)	//校验是否为空
******* 用户管理相关 *************
CheckUserName(strName)	//验证用户姓名：字母+汉字+空格，1-30位字符
CheckUserCode(strUserCode)	//简单验证用户名：09开头+月+日+5位数字
ChecUserkMobile(strMobile)	//验证手机号码：13/15开头的11位手机号
CheckPassword(strPassword)	//验证密码，6-20位任意字符
CheckPostCode(strPostCode)	//验证中国邮政编码（即6位数字）
CheckEName(strEName)	//验证英文名
CheckThreeCode(strCode)		//验证是否三位字母
CheckYear(strYear)		//验证年份 yyyy
CheckDay(strDay)		//验证日期 dd
CheckUseDate(strDate)	//验证有效期限yyyy-mm-dd
CheckPassName(strName)	//验证国际乘机人姓名，均为英文字母,并姓与名之间用/隔开
CheckCardCode(strValue)	//验证是否由字母+数字组成，6-30个字符
CheckMobile(strMobile)	//验证手机(包括小灵通)号码：13/15开头的11位手机号，3位或4位区号-7位或8位小灵通号码
CheckTel(strTel)		//验证电话号码：3位或4位区号-7位或8位电话
CheckLinkTel(strLinkTel)	//验证：7-20位数字+“-”符
CheckTraveleCard(strTraCard)	//验证常旅客卡卡号：字母+数字，5-30位字符
CheckSafeguard(strSafeguard)	//验证护照：字母+数字，7-25位字符
CheckEmail(strEmail)	//验证Email ：符合标准Email地址
//验证乘机人姓名：汉字+空格，或字母，如为字母中间必须有"/", 2-25位字符
CheckPassengerName2(strPName)	//汉字+字母：(^[\u4e00-\u9fa5 ]+[a-zA-Z]{2,24}$)
CheckPassengerName(strPName)	//验证乘机人姓名：汉字+空格，或字母，如为字母中间必须有"/", 3-25位字符
CheckName(strName)	//验证联系人姓名：字母+汉字+空格，如为英文字母，中间有“/”,2-25位字符
CheckMailCode(strMailCode)	//验证邮编3-15位,字母+数字
CheckAddress(strAddress)	//验证地址,任意字符100个
CheckAirCode(strAirCode)	//验证航班号 6个字母+数字
CheckComm(strComm)		//验证其他公共信息，任意字符,1-50个
CheckShortTime(strShortTime)	//验证短时间：hh:mm
isInteger(sNum)	//判断是否是整型
isValidDate(iY, iM, iD)	//判断是否有效的年月日
CheckIDCard(strIDCard)	//验证身份证号码15位或18位（简单验证）
isValidChinaIDCard(sNo)	//验证是否有效的中国身份证号码（严格验证）
*/
function $(id){return document.getElementById(id);}
//校验是否为空
function CheckEmpty(objId)
{
    var obj = $(objId);
    var objValue = obj.value;
    if (objValue == null || objValue == '')
    {
        return false;
    }
    else
    {
        return true;
    }
}
/*********** 用户管理相关 ***************/
//验证用户姓名：字母+汉字+空格，1-30位字符
function CheckUserName(strName)
{
	var pattern = /(^[a-zA-Z\/ ]{1,29}$)|(^[\u4e00-\u9fa5 ]{1,29}$)|(^[\u4e00-\u9fa5 ]+[\/a-zA-Z]{1,29}$)/;
	var flag = pattern.test(strName);
	if(flag)
	{
		return true; 
	} 　　　　　　
	else
	{
		return false;
	}
}
//简单验证用户名：09开头+月+日+5位数字
function CheckUserCode(strUserCode)
{
    var pattern = /^0[9,8]{1}[0,1]{1}\d{1}[0,1,2,3]{1}\d{1}\d{5}$/;
	var flag = pattern.test(strUserCode);
	if(flag)
	{
		return true;
	} 　　　　　　
	else
	{
		return false;
	}
}
//验证手机号码：13/15开头的11位手机号
function ChecUserkMobile(strMobile)
{
	var pattern = /(^1[3,5]{1}\d{9}$|^1[8]{1}[8,9]{1}\d{8}$)/;
	var flag = pattern.test(strMobile);
	if(flag)
	{
		return true;
	} 　　　　　　
	else
	{
		return false;
	}
}
//验证密码，6-20位任意字符
function CheckPassword(strPassword)
{	
	var pattern = /^[\s\S]{6,20}$/;
	var flag = pattern.test(strPassword);
	if(flag)
	{
		return true; 
	} 　　　　　　
	else
	{
		return false;
	}
}
//验证中国邮政编码（即6位数字）
function CheckPostCode(strPostCode)
{
    var pattern = /^(\d{6}$)/;
    var flag = pattern.test(strPostCode);
    if(flag)
    {
        return true;
    }
    else
    {
        return false;
    }
}
//验证英文名
function CheckEName(strEName)
{
	var pattern = /^/;
	var flag = pattern.test(strEName);
	if(flag)
	{
		return true;
	}
	else
	{
		return false;
	}
}

//验证是否三位字母
function CheckThreeCode(strCode)
{
	var pattern = /^[a-zA-Z]{3}$/;
	var flag = pattern.test(strCode);
	if(flag)
	{
		return true;
	}
	else
	{
		return false;
	}
}
//验证年份 yyyy
function CheckYear(strYear)
{
	var pattern = /^[1,2]{1}\d{3}$/;
	var flag = pattern.test(strYear);
	if(flag)
	{
		return true;
	}
	else
	{
		return false;
	}
}
//验证日期 dd
function CheckDay(strDay)
{
	var pattern = /^[0,1,2,3]{1}\d{1}$/;
	var flag = pattern.test(strDay);
	if(flag)
	{
		return true;
	}
	else
	{
		return false;
	}
}
//验证有效期限yyyy-mm-dd
function CheckUseDate(strDate)
{
	// yyyy/yyyymm/yyyymmdd 或  yyyy/yyyy-mm/yyyy-mm-dd
	//var pattern = /^[1,2]{1}\d{3}$|^[1,2]{1}\d{3}-?[0,1]{1}\d{1}$|^[1,2]{1}\d{3}-?[0,1]{1}\d{1}-?[0,1,2,3]{1}\d{1}$/;
	var pattern = /^[1,2]{1}\d{3}-[0,1]{1}\d{1}-[0,1,2,3]{1}\d{1}$/;
	var flag = pattern.test(strDate);
	if(flag)
	{
		return true;
	}
	else
	{
		return false;
	}
}
//验证国际乘机人姓名，均为英文字母,并姓与名之间用/隔开
function CheckPassName(strName)
{
	var pattern = /^[a-zA-Z]+\/[a-zA-Z]{2,24}$/;
	var flag = pattern.test(strName);
	if(flag)
	{
		return true;
	}
	else
	{
		return false;
	}
}
//验证是否由字母+数字组成，6-30个字符
function CheckCardCode(strValue)
{
	var pattern = /^([a-zA-Z0-9]{6,30}$)/;
	var flag = pattern.test(strValue);
	if(flag)
	{
		return true; 
	} 　　　　　　
	else
	{
		return false;
	}
}
//验证手机(包括小灵通)号码：13/15开头的11位手机号，3位或4位区号-7位或8位小灵通号码
function CheckMobile(strMobile)
{
	var pattern = /(^1[3,5]{1}\d{9}$)|(^1[8]{1}[8,9]{1}\d{8}$)|(^(\d{3,4}-)?\d{7,8}$)/;
	var flag = pattern.test(strMobile);
	if(flag)
	{
		return true; 
	} 　　　　　　
	else
	{
		return false;
	}
}
//验证电话号码：3位或4位区号-7位或8位电话
function CheckTel(strTel)
{
	//var pattern = /^(\d{3,4}|\d{3,4}-)?\d{7,8}$/;	
	var pattern = /^(\d{3,4}-)?\d{7,8}$/;
	var flag = pattern.test(strTel);
	if(flag)
	{
		return true; 
	}
	else
	{
		return false;
	}
}
//验证：7-20位数字+“-”符
function CheckLinkTel(strLinkTel)
{
	var pattern = /^[\d-]{7,20}$/;
	var flag = pattern.test(strLinkTel);
	if(flag)
	{
			return true;
	}
	else
	{
			return false;
	}
}

//验证常旅客卡卡号：字母+数字，5-30位字符
function CheckTraveleCard(strTraCard)
{
	var pattern = /^([a-zA-Z0-9]{5,30}$)/;
	var flag = pattern.test(strTraCard);
	if(flag)
	{
		return true; 
	} 　　　　　　
	else
	{
		return false;
	}
}

//验证护照：字母+数字，7-25位字符
function CheckSafeguard(strSafeguard)
{
	var pattern = /^([a-zA-Z0-9]{7,25}$)/;
	var flag = pattern.test(strSafeguard);
	if(flag)
	{
		return true; 
	} 　　　　　　
	else
	{
		return false;
	}
}

//验证Email ：符合标准Email地址
function CheckEmail(strEmail)
{
	//var pattern = /^([a-zA-Z0-9\._-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;
	var pattern = /^[a-zA-Z]([a-zA-Z0-9]*[-_.]?[a-z0-9]+)*@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,8}){1,4})$/;
	var flag = pattern.test(strEmail);
	if(flag)
	{
		return true; 
	} 　　　　　　
	else
	{
		return false;
	}
}

//验证乘机人姓名：汉字+空格，或字母，如为字母中间必须有"/", 2-25位字符
//汉字+字母：(^[\u4e00-\u9fa5 ]+[a-zA-Z]{2,24}$)
function CheckPassengerName2(strPName)
{
	var pattern = /(^[a-zA-Z]+\/[a-zA-Z]{2,24}$)|(^[\u4e00-\u9fa5 ]{2,24}$)/;
	var flag = pattern.test(strPName);
	if(flag)
	{
		return true; 
	} 　　　　　　
	else
	{
		return false;
	}
}
//验证乘机人姓名：汉字+空格，或字母，如为字母中间必须有"/", 3-25位字符
function CheckPassengerName(strPName)
{
	var pattern = /(^[a-zA-Z]+\/[a-zA-Z]{2,24}$)|(^[\u4e00-\u9fa5 ]{2,24}$)|(^[\u4e00-\u9fa5 ]+[a-zA-Z]{2,24}$)/;
	var flag = pattern.test(strPName);

	if(flag)
	{
		return true; 
	} 　　　　　　
	else
	{
		return false;
	}	
}

//验证联系人姓名：字母+汉字+空格，如为英文字母，中间有“/”,2-25位字符
function CheckName(strName)
{
	var pattern = /(^[a-zA-Z\/ ]{2,24}$)|(^[\u4e00-\u9fa5 ]{2,24}$)|(^[\u4e00-\u9fa5 ]+[a-zA-Z]{2,24}$)/;
	var flag = pattern.test(strName);
	if(flag)
	{
		return true; 
	} 　　　　　　
	else
	{
		return false;
	}
}
//验证邮编3-15位,字母+数字
function CheckMailCode(strMailCode)
{
	var pattern = /^([a-zA-Z0-9]{3,15}$)/;
	var flag = pattern.test(strMailCode);
	if(flag)
	{
		return true; 
	} 　　　　　　
	else
	{
		return false;
	}
}
//验证地址,任意字符100个
function CheckAddress(strAddress)
{
	var pattern = /^[\s\S]{6,100}$/;
	var flag = pattern.test(strAddress);
	if(flag)
	{
		return true;
	}
	else
	{
		return false;
	}
}
//验证航班号 6个字母+数字
function CheckAirCode(strAirCode)
{
	var pattern = /^([a-zA-Z0-9]{6}$)/;
	var flag = pattern.test(strAirCode);
	if(flag)
	{
		return true;
	}
	else
	{
		return false;
	}
}
//验证其他公共信息，任意字符,1-50个
function CheckComm(strComm)
{
	var pattern = /^[\s\S]{1,50}$/;
	var flag = pattern.test(strComm);
	if(flag)
	{
		return true;
	}
	else
	{
		return false;
	}
}
//验证短时间：hh:mm
function CheckShortTime(strShortTime)
{
	var pattern = /^([0,1,2]{1}\d{1}\:\[0-6]{1}\d{1})/;
	var flag = pattern.test(strComm);
	if(flag)
	{
		return true;
	}
	else
	{
		return false;
	}
}
//判断是否是整型
function isInteger(sNum)
{
	var num
	num=new RegExp('[^0-9_]','')
	if (isNaN(sNum))
	{
		return false
	}
	else
	{
		if (sNum.search(num)>=0)
		{
			return false
		}
		else
		{
			return true
		}
	}
}
//判断是否有效的年月日
function isValidDate(iY, iM, iD)
{
	var undefined
	if ( iY != undefined && !isNaN(iY) && iY >=0 && iY<=9999 &&
		iM != undefined && !isNaN(iM) && iM >=1 && iM<=12 &&
		iD != undefined && !isNaN(iD) && iD >=1 && iD<=31 )
	{
		if (iY<50)
			iY = 2000+iY;
		else if (iY<100)
			iY=1900+iY;
		if (iM == 2 && (isLeapYear(iY) && iD > 29 || !isLeapYear(iY) && iD>28) ||
			iD == 31 && (iM<7 && iM%2==0 || iM>7 && iM%2==1) )
		{
			return false
		}
		else
		{
			return true
		}
	}
	else
	{
		return false
	}
}
//验证身份证号码15位或18位（简单验证）
function CheckIDCard(strIDCard)
{
	var pattern = /(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[A-Z])$)/;
	var flag = pattern.test(strIDCard);
	if(flag)
	{
		return true; 
	} 　　　　　　
	else
	{
		return false;
	}
}
//验证是否有效的中国身份证号码（严格验证）
function isValidChinaIDCard(sNo)
{
	sNo = sNo.toString();
	if (sNo.length==18)
	{
		var a,b,c;
		if (!isInteger(sNo.substr(0,17)))	//判断是否是整型
		{
			return false;
		}

		a=parseInt(sNo.substr(0,1))*7+parseInt(sNo.substr(1,1))*9+parseInt(sNo.substr(2,1))*10;
		a=a+parseInt(sNo.substr(3,1))*5+parseInt(sNo.substr(4,1))*8+parseInt(sNo.substr(5,1))*4;
		a=a+parseInt(sNo.substr(6,1))*2+parseInt(sNo.substr(7,1))*1+parseInt(sNo.substr(8,1))*6;
		a=a+parseInt(sNo.substr(9,1))*3+parseInt(sNo.substr(10,1))*7+parseInt(sNo.substr(11,1))*9;
		a=a+parseInt(sNo.substr(12,1))*10+parseInt(sNo.substr(13,1))*5+parseInt(sNo.substr(14,1))*8;
		a=a+parseInt(sNo.substr(15,1))*4+parseInt(sNo.substr(16,1))*2;
		b=a%11;

		if (b==2)
		{
			c=sNo.substr(17,1).toUpperCase();
		}
		else
		{
			c=parseInt(sNo.substr(17,1));
		}

		switch(b)
		{
			case 0: if ( c!=1 ) {return false;}break;
			case 1: if ( c!=0 ) {return false;}break;
			case 2: if ( c!="X") {return false;}break;
			case 3: if ( c!=9 ) {return false;}break;
			case 4: if ( c!=8 ) {return false;}break;
			case 5: if ( c!=7 ) {return false;}break;
			case 6: if ( c!=6 ) {return false;}break;
			case 7: if ( c!=5 ) {return false;}break;
			case 8: if ( c!=4 ) {return false;}break;
			case 9: if ( c!=3 ) {return false;}break;
			case 10: if ( c!=2 ){return false};
		}
	}
	else
	{
		//判断是否是整型
		if (!isInteger(sNo)) 
		{
			return false;
		}
	}

	switch(sNo.length)
	{
		case 15: if (isValidDate(sNo.substr(6,2),sNo.substr(8,2),sNo.substr(10,2))) 
		{
			return true;
		}
		case 18: if (isValidDate(sNo.substr(6,4),sNo.substr(10,2),sNo.substr(12,2))) 
		{
			return true;
		}
	}
	return false;

}

