﻿// JavaScript Document

String.prototype.trim = function()
{
	//var re = new RegExp("(^[\s]*)|([\s]*$)","g");
    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 IsNumber(val)
{//是否为数字（不含小数点，1-20位长度）
	//var patrn=/^-?\d+{1,20}$/;
	var patrn = /^-?\d+$/;
	if( !patrn.test(val.trim()) )
	{
		return false;
	}
	return true;
}
function IsAlpha(val)
{//是否为字母，包含大小写
	var patrn=/^[a-zA-Z]+$/;
	if (!patrn.test(val.trim())) 
	{
		return false;
	}
	return true;
}
function IsDouble(val)
{//是否为浮点数
	//var patrn = /^(\-?)(\d+)(.{1})(\d+)$/;
	var patrn = /^(-?\d+)(\.\d+)?$/;
	if( patrn.test(val.trim()) )
	{
		return true;
	}
	return false;
}
function IsTime(val)
{//11:1:01
	var patrn = /^([01]?\d|2[0-3])\:[0-5]?\d\:[0-5]?\d$/;
	if( patrn.test(val.trim()) )
	{
		return true;
	}
	return false;
}
function IsDate(val)
{//2002-2-02
	//var patrn = /^((0?[13578]|10|12)\-([0-2]?\d|3[01]))$/;	//1 3 5 7 8 10 12
	//var patrn = /^((0?[469]|11)\-([0-2]?\d|30))$/;	//4 6 9 11
	//var patrn = /^(0?2\-[0-2]?\d)$/;	//2
	var patrn = /^\d{4,4}\-(((0?[13578]|10|12)\-([0-2]?\d|3[01]))|((0?[469]|11)\-([0-2]?\d|30))|(0?2\-[0-2]?\d))$/;
	
	if( patrn.test(val.trim()) )
	{
		return true;
	}
	return false;
}
function IsDateTime(val)
{//2002-2-02 11:1:01
	var patrn = /^\d{4,4}\-(((0?[13578]|10|12)\-([0-2]?\d|3[01]))|((0?[469]|11)\-([0-2]?\d|30))|(0?2\-[0-2]?\d))\ ([01]?\d|2[0-3])\:[0-5]?\d\:[0-5]?\d$/;
	if( patrn.test(val.trim()) )
	{
		return true;
	}
	return false;
}
function IsLoginName(val)
{//由数字、26个英文字母或者下划线组成的字符串，必须以字母开头
	var patrn = /^[a-zA-Z]+\w*$/;
	if( patrn.test(val.trim()) )
	{
		return true;
	}
	return false;
}
function IsEMail(val)
{//由数字、26个英文字母或者下划线、减号、点号、“@”符号组成的字符串，必须以字母或数字开头，@后面必须紧跟字母或数字，只能有一个“@”符号
	var patrn = /^[a-zA-Z0-9]+[\w-]*(\.[\w-]+)*@([a-zA-Z0-9]+[\w-]*){3,}(\.([a-zA-Z0-9]+[\w-]*){2,})+$/;
	if( patrn.test(val.trim()) )
	{
		return true;
	}
	return false;
}

/*
function IsIDCard(val)
{
	//var patrn = /^\d{15}|\d{17}[\dxX]$/;
	//|\d{17}(\d|[xX]){1}
	var patrn = /^(\d{15}|\d{17}[\dxX])$/;
	if( patrn.test(val.trim()) )
	{
		return true;
	}
	return false;
}
*/
function IsIDCard(val)
{
	var patrn = /^(\d{15}|\d{17}[\dxX])$/;
	if( !patrn.test(val.trim()) )
	{
		return false;
	}

	var idNum = val;
	//身份号码位数及格式检验
	var re;
	var len = idNum.length;
	//身份证位数检验
	if(len != 15 && len != 18)
	{
		return false;//returns[1];
	}else if(len == 15)
	{
		re = new RegExp(/^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{3})$/);
	}else{
		re = new RegExp(/^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})([0-9xX])$/);
	}
	
	var area={
		11:"T",12:"T",13:"T",14:"T",15:"T",
		21:"T",22:"T",23:"T",
		31:"T",32:"T",33:"T",34:"T",35:"T",36:"T",37:"T",
		41:"T",42:"T",43:"T",44:"T",45:"T",46:"T",
		50:"T",51:"四川",52:"T",53:"T",54:"T",
		61:"T",62:"甘肃",63:"T",64:"T",65:"T",
		71:"T",
		81:"T",82:"T",91:"T"};
	
	var idcard_array = new Array();
	idcard_array = idNum.split("");
	
	//地区检验
	if(area[parseInt(idNum.substr(0,2))] == null)
	{
	 	return false;//returns[4];
	}
	
	var a = idNum.match(re);
	
	if(a != null)
	{
		//出生日期正确性检验
		if(len==15)
		{
			var DD = new Date("19"+a[3]+"/"+a[4]+"/"+a[5]);
			var flag = DD.getYear()==a[3]&&(DD.getMonth()+1)==a[4]&&DD.getDate()==a[5];
		}else if(len == 18)
		{
			var DD = new Date(a[3]+"/"+a[4]+"/"+a[5]);
			var flag = DD.getFullYear()==a[3]&&(DD.getMonth()+1)==a[4]&&DD.getDate()==a[5];
		}
	
		if(!flag)
		{
			return false;//returns[3];
		 }                     
	  
		//检验校验位
		if(len == 18)
		{
			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);//判断校验位
			
			//检测ID的校验位
			if(M == idcard_array[17])
			{
				return true;//returns[0];
			}else{
				return false;//returns[3];
			}
		 }
	 
	  }else{
		return false;//returns[2];
	  }
	  return true;//returns[0];
}

function IsIPAddress(val)
{
	var patrn = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])(\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])){3}$/;
	//var patrn = /^(1?\d{1,2}|2[0-4]\d|25[0-5])(\.(1?\d{1,2}|2[0-4]\d|25[0-5]){3}$/;
	if( patrn.test(val.trim()) )
	{
		return true;
	}
	return false;
}
