var validrule                  = new Object();
validrule.chinese              = /^([\u0391-\uFFE5|\s*]+$)?$/; 
validrule.english              = /^([a-zA-Z|\s*]+)?$/; 
validrule.number               = /^(\d*)?$/; 
validrule.integer              = /^([-\+]?\d{1,9})?$/;
validrule.float                = /^((([-\+]?\d+)(\.\d+))|(\.\d+)|(\d*))?$/;
validrule.double               = /^((([-\+]?\d+)(\.\d+))|(\.\d+)|(\d*))?$/;
validrule.string               = /^([^'<>"]+)?$/;
validrule.int                  = /^(\d{1,9})?$/; 
validrule.minusint             = /^(\-([1-9])(\d*))?$/;                  
validrule.date                 = /^((([1-9]\d{3})|([1-9]\d{1}))-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\d|3[0-1]))?$/;  
validrule.time                 = /^((0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]))?$/; 
validrule.datetime             = /^((([1-9]\d{3})|([1-9]\d{1}))-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\d|3[0-1]) (0[0-9]|1[0-9]|2[0-4]):([0-5][0-9]):([0-5][0-9]))?$/; 
validrule.datehm               = /^((([1-9]\d{3})|([1-9]\d{1}))-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\d|3[0-1]) (0[0-9]|1[0-9]|2[0-4]):([0-5][0-9]))?$/;     
validrule.year                 = /^(\d{4})?$/; 
validrule.month                = /^([1-9]|0[1-9]|1[0-2])?$/;
validrule.day                  = /^([1-9]|0[1-9]|1[0-9]|2[0-9]|3[0-1])?$/;
validrule.postcode             = /^(\d{6})?$/;           
validrule.email                = /^(.+\@.+\..+)?$/;   
validrule.phone                = /^(\(\d{3}\))?(\(?(\d{3}|\d{4}|\d{5})\)?(-?)(\d+))?((-?)(\d+))?$/; 
validrule.mobiletel            = /^(013(\d{9})|13(\d{9})|015(\d{9})|15(\d{9}))?$/; 
validrule.ip                   = /^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5]))?$/;  
validrule.idcard               = /^(\d{15}|\d{18}|\d{17}X|\d{17}x)?$/; 

validrule.tabledefine          = /^(([A-Za-z])([A-Za-z0-9|_]){1,18})?$/; 

 
validrule.NumAndStr            = /^([0-9a-zA-Z]+)?$/;  
validrule.LetterStr            = /^([a-zA-Z]+)?$/;
validrule.NumStr               = /^(\d*)?$/; 
 

function doValidate( vform ) 
{
	var elems = vform.elements;
	var frmLen = elems.length;
	var thePat = "";
	var strFormatInfo = "";
	//对于每一个FROM元素
	for(var i=0;i<frmLen;i++) 
	{
		var _elem = elems[i];
		//为空检查                
		if(_elem.vmode != null && _elem.vmode == "not null") 
		{
			if(_elem.value.length == 0) 
			{
				alert(_elem.vdisp+"不能为空!")
				_elem.focus();
				return false;
			}
		}		 
                //类型检查                  
		if(_elem.vtype == null) 
		{
			continue;
		}
	      	if(_elem.vtype=="none")
	      	{         
	      	   thePat = "";
	      	   strFormatInfo = "";
	      	}
	      	if(_elem.vtype=="chinese")
	      	{       
	      	   thePat = validrule.chinese;
	      	   strFormatInfo = "中文";
	      	}
	      	if(_elem.vtype=="english")
	      	{       
	      	   thePat = validrule.english;
	      	   strFormatInfo = "英文字母";
	      	}
	      	if(_elem.vtype=="number")
	      	{       
	      	   thePat = validrule.number;
	      	   strFormatInfo = "阿拉伯数字";
	      	}
	      	if(_elem.vtype=="integer")
	      	{       
	      	   thePat = validrule.integer;
	      	   strFormatInfo = "整数";
	      	}
	      	if(_elem.vtype=="float")
	      	{       
	      	   thePat = validrule.float;
	      	   strFormatInfo = "浮点数";
	      	}
	      	if(_elem.vtype=="double")
	      	{       
	      	   thePat = validrule.double;
	      	   strFormatInfo = "实数";
	      	}
	      	if(_elem.vtype=="string")
	      	{       
	      	   thePat = validrule.string;
	      	   strFormatInfo = "不含特殊符合的字符串";
	      	}
	      	if(_elem.vtype=="int")         
	      	{       
	      	   thePat = validrule.int;
	      	   strFormatInfo = "正整数";
	      	}
	      	if(_elem.vtype=="minusint")         
	      	{       
	      	   thePat = validrule.minusint;
	      	   strFormatInfo = "负整数，比如-123";
	      	}
	      	if(_elem.vtype=="date")         
                {       
	      	   thePat = validrule.date;
	      	   strFormatInfo = "日期型，比如 2004-08-12";
	      	}
	      	if(_elem.vtype=="time")         
	      	{       
	      	   thePat = validrule.time;
	      	   strFormatInfo = "时间型，比如08:37:29";
	      	}
	      	if(_elem.vtype=="datehm")         
                {       
	      	   thePat = validrule.datehm;
	      	   strFormatInfo = "日期时分型，比如 2004-08-12 12:25";
	      	}	      	 
	      	if(_elem.vtype=="datetime")         
	      	{       
	      	   thePat = validrule.datetime;
	      	   strFormatInfo = "日期时间型，比如2004-08-12 08:37:29";
	      	}
                if(_elem.vtype=="year")         
	      	{       
	      	   thePat = validrule.year;
	      	   strFormatInfo = "年代格式，比如 2005";
	      	}
	      	if(_elem.vtype=="month")         
	      	{       
	      	   thePat = validrule.month;
	      	   strFormatInfo = "月份格式，比如 08";
	      	}
                if(_elem.vtype=="day")         
	      	{       
	      	   thePat = validrule.day;
	      	   strFormatInfo = "日子格式，比如 14";
	      	} 
	      	if(_elem.vtype=="postcode")         
	      	{       
	      	   thePat = validrule.postcode;
	      	   strFormatInfo = "邮编，比如 100001";
	      	}	      	
	      	if(_elem.vtype=="email")         
	      	{       
	      	   thePat = validrule.email;
	      	   strFormatInfo = "电子邮件格式，比如 msm@hotmail.com";
	      	}
	      	if(_elem.vtype=="phone")         
	      	{       
	      	   thePat = validrule.phone;
	      	   strFormatInfo = "电话号码格式，比如010-67891234";
	      	}
	      	if(_elem.vtype=="mobiletel")         
	      	{       
	      	   thePat = validrule.mobiletel;
	      	   strFormatInfo = "手机号码格式，比如13867891234";
	      	}	      	
	      	if(_elem.vtype=="ip")       
	      	{       
	      	   thePat = validrule.ip;
	      	   strFormatInfo = "机器ip地址格式，比如 172.22.169.11";
	      	}	      	
	      	if(_elem.vtype=="idcard")       
	      	{       
	      	   thePat = validrule.idcard;
	      	   strFormatInfo = "身份证号码，比如15位或者18位数字";
	      	}
	      	if(_elem.vtype=="tabledefine")   
	      	{       
	      	   thePat = validrule.tabledefine;
	      	   strFormatInfo = "abc_defgf";
	      	}
	      	 
	      	if(_elem.vtype=="LetterStr")
	      	{       
	      	   thePat = validrule.LetterStr;
	      	   strFormatInfo = "纯字母字符串";
	      	}
	      	if(_elem.vtype=="NumAndStr")
	      	{       
	      	   thePat = validrule.NumAndStr;
	      	   strFormatInfo = "数字和字母字符串";
	      	}
	      	if(_elem.vtype=="NumStr")
	      	{       
	      	   thePat = validrule.NumStr;
	      	   strFormatInfo = "纯数字组成的字符串";
	      	}
	      	
	      		      	
	      	var gotIt = null; 
	      	if(thePat!="")
	      	{
	      	        gotIt = thePat.exec(_elem.value);
	      	}	      	 
	      	if(gotIt == null) 
	      	{
	      		alert(_elem.vdisp+"输入不合法,格式应为："+strFormatInfo);
	      		_elem.focus();
	      		return false;
	      	}
	      	
	      	if(_elem.voperate=="repeat")         
	      	{       	      	  
	      	   
	      	   if(_elem.value != document.getElementById(_elem.to).value)
	      	   {
	      	         alert(_elem.msg);
	      	         _elem.focus();
	      		 return false;
	      	   }
	      	}
	      	
	      	if(_elem.voperate=="rangeint")         
	      	{  
	      		      	      	      	  
	      	   if(parseInt(_elem.value) > parseInt(_elem.max) || parseInt(_elem.value) < parseInt(_elem.min))
	      	   {
	      	         alert(_elem.msg);
	      	         _elem.focus();
	      		 return false;
	      	   }
	      	}
	      	
	      	if(_elem.voperate=="rangestr")         
	      	{  	      		      	      	      	  
	      	   if(_elem.value > _elem.max || _elem.value < _elem.min)
	      	   {
	      	         alert(_elem.msg);
	      	         _elem.focus();
	      		 return false;
	      	   }
	      	}  

                if(_elem.voperate=="comparestr")         
	      	{       	      	  
	      	   if(_elem.value <= document.getElementById(_elem.to).value)
	      	   {
	      	         alert(_elem.msg);
	      	         _elem.focus();
	      		 return false;
	      	   }
	      	}
	      	
	      	if(_elem.voperate=="largestr")         
	      	{       	      	  
	      	   if(_elem.value <= document.getElementById(_elem.to).value)
	      	   {
	      	         alert(_elem.msg);
	      	         _elem.focus();
	      		 return false;
	      	   }
	      	} 
	      	
	      	if(_elem.voperate=="largeequalstr")         
	      	{       	      	  
	      	   if(_elem.value < document.getElementById(_elem.to).value)
	      	   {
	      	         alert(_elem.msg);
	      	         _elem.focus();
	      		 return false;
	      	   }
	      	} 
	      	
	      	if(_elem.voperate=="compareint")         
	      	{       	      	  
	      	   if(parseInt(_elem.value) <= parseInt(document.getElementById(_elem.to).value))
	      	   {
	      	         alert(_elem.msg);
	      	         _elem.focus();
	      		 return false;
	      	   }
	      	} 
	      	
	      	if(_elem.voperate=="largeint")         
	      	{       	      	  
	      	   if(parseInt(_elem.value) <= parseInt(document.getElementById(_elem.to).value))
	      	   {
	      	         alert(_elem.msg);
	      	         _elem.focus();
	      		 return false;
	      	   }
	      	} 
	      	
	      	if(_elem.voperate=="largeequalint")         
	      	{       	      	  
	      	   if(parseInt(_elem.value) < parseInt(document.getElementById(_elem.to).value))
	      	   {
	      	         alert(_elem.msg);
	      	         _elem.focus();
	      		 return false;
	      	   }
	      	} 

                if(_elem.voperate=="extend")         
	      	{       	      	    
	      	   if((_elem.value).lastIndexOf(_elem.extendname)<=0)
	      	   {
	      	         alert(_elem.msg);
	      	         _elem.focus();
	      		 return false;
	      	   }
	      	} 
	      	
	      	if(_elem.voperate=="custom")         
	      	{       	      	    
	      	   if(!RegExp(_elem.regexp,"g").test(_elem.value))
	      	   {
	      	         alert(_elem.msg);
	      	         _elem.focus();
	      		 return false;
	      	   }
	      	} 
	      	
	      	
	      	if(_elem.vtextarea=="yes")         
	      	{       	      	    
	      	   var ivaluelength=_elem.value.length;
	      	   var imaxlength=_elem.maxlength;
	      	   if(ivaluelength>=imaxlength)
	      	   {
	      	         alert(_elem.vdisp+"输入的值长度太长超过了"+imaxlength+"个字符");
	      	         _elem.focus();
	      		 return false;
	      	   }
	      	} 
	      	
	}  
	return true;
}