/*以下校验函数，通过返回true，否则为false; [huangsong]
  所有的函数2和原函数是一样的 ，如：CheckPN和CheckPN2
  以下校验函数中的参数page是向导的页码 ，不是向导的，不用此参数
*/
		
			var maxpn=99999999;
			var maxfn=99999999.9;
			var numerrormsg0="请输入0-99999999之内的数字";
			var numerrormsg1="请输入1-99999999之内的数字";
			var overerrormsg="数值超过最大值99999999";

			//检查输入键是否为0~9,a~z(A~Z),Del,-,.,/
			function CheckKey(KeyCode)
			{
				Zero=48;
				Nine=57;
				Delete=46;
				Minus=189;
				Dot=190;
				Divide=191;
				Key_a=65;
				Key_z=90;
				_Zero=96;
				_Nine=105;
				_Divide=111;
				_Minus=109;
				_Dot=110;
				return ((KeyCode>=Key_a)&&(KeyCode<=Key_z))||((KeyCode>=Zero)&&(KeyCode<=Nine))||((KeyCode>=_Zero)&&(KeyCode<=_Nine))||(KeyCode==Delete)||(KeyCode==Dot)||(KeyCode==Minus)||(KeyCode==Divide)||(KeyCode==0)||(KeyCode==_Minus)||(KeyCode==_Divide)||(KeyCode==_Dot);
			}

			//取整函数
			//eg. Round(132.123456) 为 132.12
			//eg. Round(132.123456,4) 为 132.1234
			//eg. Round(132.123456,0) 为 132
			function Round(i,digit)
			{
				if(digit==0)
					p=1;
				else
				{
					if(digit)
						p=Math.pow(10,digit);
					else
						p=100;
				}
				return Math.round(i*p)/p;
			}
			
			/*功能： 得到两个日期相差的天数（每一个月按30天，一年360天计算）
				入口参数：	
						date1: 日期对象1
						date2: 日期对象2
						返回 date1 - date2相差的天数 */
			function getDiffDay(date1,date2)
			{
				var year=date1.getFullYear() - date2.getFullYear();
				var month=date1.getMonth() - date2.getMonth();
				var day=date1.getDate() - date2.getDate();				
				return year*12*30+month*30+day;
			}
			
			/*  功能： 把一个日期加上n天（每一个月按30天，一年360天计算）
				入口参数：	
						thedate: 要计算的日期对象
						days: 增加的天数 
				如果计算出的日期不合法： 年大于9999等，则返回false，否则true */
			function addday(thedate,days)
			{
				day=thedate.getDate();
				month=thedate.getMonth()+1;
				year=thedate.getFullYear();
				mod_y=days % 360;
				y=Math.floor(days/360);
				year+=y;				
				if (mod_y!=0)
				{
					mod_m=mod_y % 30;
					m=Math.floor(mod_y / 30);
					month+=m;
					
					if (mod_m!=0)
					{
						
						day+=mod_m;						
						if (day>30)
						 {
						  month++;
						  day-=30;
						 }
					}				
				 }
				thedate.setTime(new Date(year,month-1,day)); 
				return (year<=9999);
			}			
			
			/*	功能： 校验一个正整数
			入口参数：	
						CheckCtl: 要校验的输入框
						disptext: 出错显示的信息
						IsCanZero : 是否可以为零*/
			function CheckPN(CheckCtl,disptext,IsCanZero,page) 
			{
				var s=new String(Trim(CheckCtl.value));
				var temp=parseInt(s);
				var result=true;
				if (  (isNaN(temp)) || (temp<0) ||(temp!=s))
				{
					result=false;
				}
				else if (( s.indexOf(".")>=0 ))
				{
					result = false;
					disptext = "请您录入正整数。";
				}
				else if ( (!IsCanZero)&&(temp==0) )
				 {
				 	result=false;
				 }
				if  (temp>maxpn) 
				{
					result=false;
					disptext=overerrormsg;
				}
				 if (!result)
				 {
					if (page)
					 showguide(page);
					DispMessage(CheckCtl, disptext);
					return false;
				}					
				 return true;
				 
			}
			
			/*功能： 校验一个合法的大于等于0的浮点数
			入口参数：	
						CheckCtl: 要校验的输入框
						disptext: 出错显示的信息	
						floatcount: 小数的最高位数（如果没有该参数，则默认为4位）
						如果没有page参数，有floatcunt参数则：把page 置null
						如:	CheckFN(CheckCtl,"出错显示的信息",null,5)				*/
			function CheckFN(CheckCtl,disptext,page,floatcount)
			{					
				var s=new String(Trim(CheckCtl.value));
				temp=parseFloat(s);
				var result=true;
				if( (isNaN(temp)) || (temp< 0)||(temp!=s) )
				{					
					result=false;
				}	
				else if (temp>maxfn) 
				{
					result=false;
					disptext=overerrormsg;
				}
				else
				{ 	 					
					limitcount=floatcount?floatcount:4;
					var array=s.split(".");
					if (array[1]==null)
					count=-1;
					else
					{
						var str=new String(array[1]);
						count=str.length;
					}
					if (count>limitcount)
					{
						b=confirm("小数位数超过"+limitcount+"位，请确认是否继续？"); 
						if (b)
							return true;
							
						if (page)
							showguide(page);
						CheckCtl.select();
						CheckCtl.focus();
						return false;
					}
				 }	
				 if (!result)
				 {
					if (page)
					 showguide(page);
					DispMessage(CheckCtl,disptext);
					return false;
				 }			
				    return true;
			}
			
			function CheckFN3(CheckCtl,disptext,IsCanZero,page,floatcount)
			{									
				if ( CheckFN(CheckCtl,disptext,page,floatcount) )
				 {
					if ( (parseFloat(CheckCtl.value)==0) &&(!IsCanZero) )
						{
							if (page)
								showguide(page);
							DispMessage(CheckCtl,disptext);
							return false;
						}
					else return true;	
				 }		
				else
				 return false;
			}
			
				/*判断是否是数字的函数
			   输入：
			      txtctl   输入的文本控件
			      message  显示的错误信息
			      返回值   是数字返回true，不是返回false
					floatcount: 小数的最高位数（如果没有该参数，则默认为4位）
						如果没有page参数，有floatcunt参数则：把page 置null
						如:	IsNum(txtctl,"出错显示的信息",null,5)  */
			function IsNum(txtctl,message,page,floatcount,norange)
			{
				var s=new String(Trim(txtctl.value));
				var result=true;
				var num=Number(s);
				if ( (isNaN(num)) || (s=="") )
				{
					result=false;
				}						
				else if (num>maxfn)
				{
					if (!norange)
					{
						message=overerrormsg;
						result=false;
					}
				}
				else
				{
					limitcount=floatcount?floatcount:4;
					var array=s.split(".");
					if (array[1]==null)
					count=-1;
					else
					{
					var str=new String(array[1]);
					count=str.length;
					}
					if (count>limitcount)
					{
					 if (page)
						showguide(page);
					 b=confirm("小数位数超过"+limitcount+"位，请确认是否继续？"); 
					 if (b)
					  {
					   return true;
					  }
					  else
					  {
					    txtctl.select();
						txtctl.focus();
						return false;
					  }
					}
				}
				if (!result)
				{
					if (page)
						showguide(page);
					DispMessage(txtctl,message);
					return false;
				}	
					return true;	
			}
			
			/*功能： 校验一个值是否为空
			入口参数：	
						CheckCtl: 要校验的输入框
						disptext: 出错显示的信息						*/
			function CheckEmpty(CheckCtl,disptext,page)
			{				
				if (Trim(CheckCtl.value)=="" )
				{
					if (page)
					 showguide(page);
					DispMessage(CheckCtl,disptext);	
					return false;
				}
				else
				  return true;
			}
			
			/*功能： 校验一个合法的且在规定范围内的整数
			入口参数：	
						CheckCtl: 要校验的输入框
						Min:  下限
						Max:  上限						
						Msg: 出错显示的信息  */						
			function CheckIntRange(CheckCtl,Min, Max,Msg,page)
			{			
				if (!IsNum(CheckCtl,Msg,page,null,1))
				return false;
				var s=new String(Trim(CheckCtl.value));
				if ((s.indexOf(".")>=0))
				{
					if (page)
					 showguide(page);
					DispMessage(CheckCtl,"请您录入整数。");
					return false;
				}

				v=parseInt(s);			    	
				if  ( (v<Min) || (v>Max))
				{
					if (page)
					 showguide(page);
					DispMessage(CheckCtl,Msg);
					return false;
				}
				return true;		
			}
			
			/*功能： 校验一个合法的且在规定范围内的整数
			入口参数：	
						CheckCtl: 要校验的输入框
						Min:  下限
						Max:  上限						
						Msg: 出错显示的信息  
						IsMinClose: 下限是否是闭区间
						IsMaxClose: 上限是否是闭区间  add by aiai*/						
			function CheckIntRange1(CheckCtl,Min, Max,Msg,page, IsMinClose, IsMaxClose)
			{
				if (!IsNum(CheckCtl,Msg,page,null,1))
					return false;
				var s=new String(Trim(CheckCtl.value));
				if(s.indexOf(".")>=0)
				{
					DispMessage(CheckCtl,"请您录入整数。");
					return false;    	
				}

				v=parseInt(s);			
				if(IsMaxClose && IsMinClose)
				{
					if  ( (v<Min) || (v>Max) )
					{
						if (page)
							showguide(page);
						DispMessage(CheckCtl,Msg);
						return false;
					}
				}	
				if(IsMinClose && !IsMaxClose)
				{
					if  ( (v<Min) || (v>=Max) )
					{
						if (page)
							showguide(page);
						DispMessage(CheckCtl,Msg);
						return false;
					}
				}
				if(!IsMinClose && IsMaxClose)
				{
					if  ( (v<=Min) || (v>Max) )
					{
						if (page)
							showguide(page);
						DispMessage(CheckCtl,Msg);
						return false;
					}
				}
				if(!IsMinClose && !IsMaxClose)
				{
					if  ( (v<=Min) || (v>=Max) )
					{
						if (page)
							showguide(page);
						DispMessage(CheckCtl,Msg);
						return false;
					}
				}
				return true;	
			}
			
			/*功能： 校验一个合法的且在规定范围内的浮点数
			入口参数：	
						CheckCtl: 要校验的输入框
						Min:  下限
						Max:  上限						
						Msg: 出错显示的信息  */						
			function CheckFloatRange(CheckCtl,Min, Max,Msg,page)
			{			
				if (!IsNum(CheckCtl,Msg,page,null,1))
					return false;
				v=parseFloat(Trim(CheckCtl.value));		    	
				if  ( (v<Min) || (v>Max) )
				{
					if (page)
					 showguide(page);
					DispMessage(CheckCtl,Msg);
					return false;
				}
				return true;		
			}
			
			/*功能： 校验一个合法的且在规定范围内的浮点数
			入口参数：	
						CheckCtl: 要校验的输入框
						Min:  下限
						Max:  上限						
						Msg: 出错显示的信息  
						IsMinClose: 下限是否是闭区间
						IsMaxClose: 上限是否是闭区间  add by aiai*/						
			function CheckFloatRange1(CheckCtl,Min, Max,Msg,page, IsMinClose, IsMaxClose)
			{			
				if (!IsNum(CheckCtl,Msg,page,null,1))
					return false;
				v=parseFloat(Trim(CheckCtl.value));	
				if(IsMaxClose && IsMinClose)
				{
					if  ( (v<Min) || (v>Max) )
					{
						if (page)
						showguide(page);
						DispMessage(CheckCtl,Msg);
						return false;
					}
				}	
				if(!IsMaxClose && IsMinClose)
				{
					if  ( (v<Min) || (v>=Max) )
					{
						if (page)
						showguide(page);
						DispMessage(CheckCtl,Msg);
						return false;
					}
				}
				if(IsMaxClose && !IsMinClose)
				{
					if  ( (v<=Min) || (v>Max) )
					{
						if (page)
						showguide(page);
						DispMessage(CheckCtl,Msg);
						return false;
					}
				}
				if(!IsMaxClose && !IsMinClose)
				{
					if  ( (v<=Min) || (v>=Max) )
					{
						if (page)
						showguide(page);
						DispMessage(CheckCtl,Msg);
						return false;
					}
				}
				return true;		
			}
			
			/*功能： 校验一个合法的身份证号码(15,18位)
			入口参数：	
						CheckCtl: 要校验的输入框												
						disptext: 出错显示的信息  */						
			function CheckCardNo(CheckCtl,disptext,page)
			{
				var result=true;
				var strvalue=new String(Trim(CheckCtl.value));
				if ( strvalue!="" )
					{
						if ((strvalue.length<15) || (strvalue.length>20))
							result=false;								
					}	 				
				if (!result)
				 {
					if (page)
						showguide(page);
					DispMessage(CheckCtl,disptext); 
				 }
				return result;
			}
			
			function DispMessage(CheckCtl,Msg)
			{
				if (Msg!="")
				{					
					alert(Msg);					
					CheckCtl.select();
					CheckCtl.focus();
				}
			}
			
			function Trim(strSource) 
			{
				return 	strSource.replace(/^\s*/,'').replace(/\s*$/,'');
			}		

				/*功能： 比较两个日期的大小，如果开始日期大于结束日期，返回false;
			入口参数：	
						BDate:开始日期
						EDate:结束日期
						Msg:	出错显示的信息  */
			function CheckDiffDate(BDate,EDate,Msg)
			{
				if ( (!CheckEmpty(BDate,"请输入日期！")) || (!CheckEmpty(EDate,"请输入日期！")) )
					return false;
				str = BDate.value;
				aa = str.split("-");
				BYear = parseInt(aa[0]);
				BMonth = parseInt(aa[1]);
				BDay = parseInt(aa[2]);
				str = EDate.value;
				bb = str.split("-");
				EYear = parseInt(bb[0]);
				EMonth = parseInt(bb[1]);
				EDay = parseInt(bb[2]);
				if(BYear<1900)
				{
					DispMessage(BDate,"日期不能小于1900年！");
					return false;
				}
				if(EYear<1900)
				{
					DispMessage(EDate,"日期不能小于1900年！");
					return false;
				}

				b=(BYear*10000)+(BMonth*100)+BDay;
				e=(EYear*10000)+(EMonth*100)+EDay;
				if(e==b)
					return true;
				else 
					if(e>b)
						return true;
					else 
					{
						DispMessage(BDate,Msg);
						return false;
					}
			}
					
			function CheckDiffDate2(BDate,EDate,Msg,page,Order)
			{
				if (!CheckDiffDate(BDate,EDate,""))
				{
					showguide(page);
					if(Order)
						DispMessage(BDate,Msg);
					else
						DispMessage(EDate,Msg);
					return false;
				}	
				else
					return true;
			}
			
			/*功能： 将一个字符串转化为日期对象：	
						Str  字符串*/
			function StrToDate(str)
			{
				var arrayx=str.split("-");
				var datex=new Date(arrayx[0],arrayx[1]-1,arrayx[2]);
				return datex;
			}
			
			/*功能： 将一个日期对象转化为字符串：							
						date 日期对象*/
			function datetostring(date)
			{
				var s="";
				s=date.getFullYear()+"-"+(date.getMonth()+1)+"-"+date.getDate();				
				return s;
			}	
			
			///
			///功能：比较两个文本输入框中数值的大小,如果文本框一的Value>文本框二的Value则提示错误,并返回False
			///
			function MaxThan(text1,text2,msg)
			{
				value1 = parseInt(text1.value);
				value2 = parseInt(text2.value);
				
				if(value1>=value2 && value1!=0)
				{
					alert(msg);
					text1.select();
					text1.focus();
					return false;
					
				}
				return true;
			}
			
			//身份证号码验证
			function CheckIDCard(ctrl, birth, page)
			{
				var sYear = birth.getFullYear().toString();
				var sMonth = (birth.getMonth() + 1).toString();
				var sDay = birth.getDate().toString();
				if (birth.getMonth() + 1 < 10) sMonth = '0' + sMonth;
				if (birth.getDate() < 10) sDay = '0' + sDay;
				var reg1 = "^\\d{6}" + sYear.substr(2, 2) + sMonth + sDay + "\\d{3}$"; // 15位身份证
				var reg2 = "^\\d{6}" + sYear + sMonth + sDay + "\\d{4}$";         // 18位身份证
				var cardnum = ctrl.value;
				if ((!cardnum.match(reg1)) && (!cardnum.match(reg2)))
				{
					if(page)
						showguide(page);
					DispMessage(ctrl, "输入了错误的身份证号码！");
					return false;
				}
				return true;
			}
