function IsDate(source,arguments)
{
	var oText;
	var strDate;
	oText = GetPreviousInput(source);
	while( oText.type.toLowerCase() != "text" )
	{
		oText = GetPreviousInput(oText);
	}
	strDate = oText.value;
	if(  CheckDate(strDate, new Date(1900,0,1), new Date()) == true )
	{
		source.innerText = "";
		arguments.IsValid = true;
	}
	else
	{
		source.innerText = "日期无效";
		arguments.IsValid = false;
	}
}

//检查身份证号，支持15和18位。返回值表示错误原因。""表示无错
function CheckIDCard(strID)
{
	//验证各位字符是否合法的正则表达式
	ReDigital15 = /\d{15}/;
	ReDigital18 = /\d{17}[0-9xX]{1}/;
	//提取日期和校验的正则表达式
	ReDate15 = /\d{6}(\d{6})\d{3}/;
	ReDate18 = /\d{6}(\d{8})\d{3}/;
	switch(strID.length)
	{
		case 15:
			if( !ReDigital15.test( strID ) )
				return "身份证号码：非法字符";	
			Arr = ReDate15.exec( strID );
			strDate = "19" + Arr[1];
			if( !CheckDate(strDate, new Date(1900,0,1), new Date(1999,11,31)) )
				return "身份证号码：日期无效";
		break;
		case 18:
			if( !ReDigital18.test( strID ) )
				return "身份证号码：非法字符";		
			Arr = ReDate18.exec( strID );
			strDate = Arr[1];
			if( !CheckDate(strDate,new Date(1900,0,1), new Date()) )
				return "身份证号码：日期无效";
			if( !CheckSum( strID ) )
				return "身份证号码：最后一位检验码错误";
		break;
		default:
			return "身份证号码：位数不对";
	}
	return "";
}

//对身份证的校验位进行验证
function CheckSum( strID )
{
	//debugger;
	//18位数字提取正则表达式
	Re18Digital = /(\d{1})(\d{1})(\d{1})(\d{1})(\d{1})(\d{1})(\d{1})(\d{1})(\d{1})(\d{1})(\d{1})(\d{1})(\d{1})(\d{1})(\d{1})(\d{1})(\d{1})([0-9xX]{1})/;
	Arr = Re18Digital.exec(strID);
	var Wi = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
	Sum = 0;
	for(i=0;i<=16;i++)
		Sum += Arr[i+1] * Wi[i];
	ArrCheckSum = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
	strCheckSum = ArrCheckSum[Sum%11];
	if( strCheckSum == Arr[18].toUpperCase() )
		return true;
	else
		return false;
}

//检查在指定范围之内的日期，支持选择框自动生成格式和手动连打格式。返回bool，true表示日期有效，false表示日期无效。
function CheckDate( strDate, DateFrom, DateTo )
{
	//手动日期验证正则表达式
	ReDigital8 = /\d{8}/;
	//自动日期验证正则表达式
	ReAutoDate = /\d{4}-{1}\d{1,2}-\d{1,2}/;
	//自动日期提取正则表达式
	//ReGetDate = /(\d{4})-{1}(\d{1,2})-(\d{1,2})/;
	//debugger;
	if(strDate.indexOf("-")>-1)
	{
		if( ReAutoDate.test( strDate ) == false )
			return false;
	//	Arr = ReGetDate.exec( strDate );
		Arr = strDate.split("-");
		strDate = (Arr[0]) + "" + (Arr[1].length<2?"0":"") + Arr[1] + (Arr[2].length<2?"0":"") + (Arr[2]);
	}

	if(strDate.length!=8)
		return false;
	if( ReDigital8.test(strDate)==false )
		return false;
	MyDate = eval( strDate.replace( /^(\d{4})(\d{2})(\d{2})$/, "new Date($1,$2-1,$3)" ) );
	strMyDate = MyDate.getFullYear()+(MyDate.getMonth()<9?"0":"")+(MyDate.getMonth()+1)+""+(MyDate.getDate()<=9?"0":"")+MyDate.getDate();
	//日期有效性验证
	if(strMyDate!=strDate)
		return false;
	//日期范围验证
	if( MyDate>=DateFrom && MyDate<=DateTo )
		return true;
	else
		return false;
}	

function GetPreviousInput( oCurrent )
{
	var oText;
	oText = oCurrent.previousSibling;
	while( oText != null && oText.nodeName.toLowerCase() != "input" )
	{
		oText = oText.previousSibling;
	}
	if( oText == null )
		alert("没有找到文本框。日期验证需要排列在文本框的后面");
	return oText;
}

function file_onfocus() 
{
	if (window.document.NewRegister.PeoplePic.value!="")
	{
		var mfilename = window.document.NewRegister.PeoplePic.value;
		if((mfilename.indexOf(".jpg") != -1)||(mfilename.indexOf(".gif") != -1)||(mfilename.indexOf(".bmp") != -1))
		{
			window.document.NewRegister.ImgPic.src = "file://" + mfilename;
		}			
	}
}

