﻿function CheckFormEn(FormName){
	//校验表单
	//自定义属性 最大长度maxLength;格式符formatString;最小长度minLength;字符域inString;不包含字符域exString;焦点对象focusObject;标题Caption;重复对象repeatObject;自定义错误消息errMessage
    var FormObj,SubName,index,SubObj,maxLength,formatString,minLength,inString,exString,focusObject,Caption,repeatObject,errMessage;
	var ErrInfoObj,ErrInfo
	FormObj=document.getElementById(FormName)
    for (index=0;index<FormObj.elements.length;index++){
		if(FormObj.elements[index].tagName=="INPUT" || FormObj.elements[index].tagName=="SELECT" || FormObj.elements[index].tagName=="TEXTAREA"){
		    SubName=FormObj.elements[index].name
	        SubObj=FormObj.elements[index]
	        if(typeof(SubObj)=='object'){
			   //得到显示错误信息对象
			   if(SubObj.id!=""){
			      ErrInfoObj=document.getElementById(SubObj.id+"_ErrInfo");
				  if(!ErrInfoObj){ 
				     ErrInfoObj=document.getElementById("ErrInfo");
				  }
			   }
			   else{
				  ErrInfoObj=document.getElementById("ErrInfo");
			   }
			   if(ErrInfoObj){
				  ErrInfoObj.innerHTML=""   
			   }
			   //得到焦点对象(即出错后得到焦点的对象)
			   focusObj=eval(SubObj.getAttribute("focusObject"))
			   if(focusObj){
			      if(SubObj.getAttribute("focusObject")=='this'){
				     focusObj=SubObj
				  }
               }
			   else{
			      focusObj=SubObj
			   }
			   //得到Caption属性
			   if(SubObj.getAttribute("Caption")){
			      Caption=SubObj.getAttribute("Caption")
			   }
			   else{
			      Caption=SubName
			   }
			   //得到errMsg属性
			   if(SubObj.getAttribute("errMessage")){
			      errMsg=Trim(SubObj.getAttribute("errMessage"))
			   }
			   else{
			      errMsg=''
			   }
		       if(Trim(SubObj.value)!=''&& SubObj.value!=null && SubObj.value.toUpperCase()!='NULL'){	
			     //判断最小长度
	             if(!isNaN(SubObj.getAttribute("minLength"))){
		            if(getLength(Trim(SubObj.value))<SubObj.getAttribute("minLength")){
					   if(errMsg==''){
			              ErrInfo="The " + Caption + ' not less than '+ SubObj.getAttribute("minLength") +' characters';
					   }
					   else{
						  ErrInfo=errMsg; 
					   }
					   if(ErrInfoObj){
						  ErrInfoObj.innerHTML=ErrInfo;
					   }
					   else{
			              alert(ErrInfo);
					   }
					   focusObj.focus();
					   return false;
			        }
		          }
			      //判断最大长度
	              if(!isNaN(SubObj.getAttribute("maxLength"))){
		             if((getLength(Trim(SubObj.value))>SubObj.getAttribute("maxLength")) && (SubObj.getAttribute("maxLength")>0)){
						if(errMsg==''){
			               ErrInfo="The " + Caption + ' not more than '+SubObj.getAttribute("maxLength")+' characters'
					    }
					    else{
						   ErrInfo=errMsg; 
					    }
					    if(ErrInfoObj){
						   ErrInfoObj.innerHTML=ErrInfo;
					    }
					    else{
			              alert(ErrInfo);
					    }
					    focusObj.focus();
					    return false;
			         }
		          }
			      //判断值仅包含字符
			      if(SubObj.getAttribute("inString")){
			         if(!IsInString(SubObj.getAttribute("inString"),Trim(SubObj.value))){
					    if(errMsg==''){
						   ErrInfo="The " + Caption + ' can only be a string "'+SubObj.getAttribute("inString")+'"  the characters in any combination'
					    }
					    else{
						   ErrInfo=errMsg;
					    }
						if(ErrInfoObj){
						   ErrInfoObj.innerHTML=ErrInfo;
					    }
					    else{
			               alert(ErrInfo);
					    }
					    focusObj.focus();
					    return false;
				     }
			      }
			      //判断值不能包含字符
			      if(SubObj.getAttribute("exString")){
				     flag=false
				     for(i=0;i<Trim(SubObj.value).length;i++){
					     if(SubObj.getAttribute("exString").indexOf(Trim(SubObj.value).substr(i,1))>=0){
					        flag=true;
					     }
				     }
			         if(flag){
					    if(errMsg==''){
				           ErrInfo="The " + Caption + ' should not include any character of "'+SubObj.getAttribute("exString")+'"';
					    }
					    else{
					       ErrInfo=errMsg;
					    }
						if(ErrInfoObj){
						   ErrInfoObj.innerHTML=ErrInfo;
					    }
					    else{
			               alert(ErrInfo);
					    }
					    focusObj.focus();
					    return false;
				     }
			      }
			      //判断重复对象是否相等
			      if(SubObj.getAttribute("repeatObject")){
				     repeatObj=eval(SubObj.getAttribute("repeatObject"))
				     if(repeatObj){
			            if(SubObj.value!=repeatObj.value){
						   if(repeatObj.getAttribute("Caption")){
			                  repeatCaption=repeatObj.getAttribute("Caption")
			               }
			               else{
			                  repeatCaption=repeatObj.name
			               }
						   if(errMsg==''){
			                  ErrInfo="The " + Caption+" does not match " + repeatCaption+",please retype both of them. ";
					       }
					       else{
						      ErrInfo=errMsg; 
					       }
						   if(ErrInfoObj){
						      ErrInfoObj.innerHTML=ErrInfo;
					       }
					       else{
			                  alert(ErrInfo);
					       }
					       focusObj.focus();
					       return false;
				        }
				     }
			      }
		       }
			   
			   //判断值的格式
			   if(SubObj.getAttribute("formatString")){
			      if(Trim(SubObj.getAttribute("formatString"))!=''){
				     P=SubObj.getAttribute("formatString").indexOf('_')
				     if(P<0){
					    ErrInfo="The " + Caption+' formatString error.';
						if(ErrInfoObj){
						   ErrInfoObj.innerHTML=ErrInfo;
					    }
					    else{
			               alert(ErrInfo);
					    }
						focusObj.focus();
					    return false;
					 }
					 if(SubObj.getAttribute("formatString").substr(P+1,1)=="Y" && (Trim(SubObj.value)==''|| SubObj.value==null || SubObj.value.toUpperCase()=='NULL')){
						if(errMsg==''){
					      ErrInfo='Please input '+Caption;
						}
						else{
						  ErrInfo=errMsg;	
						}
						if(ErrInfoObj){
						   ErrInfoObj.innerHTML=ErrInfo;
					    }
					    else{
			               alert(ErrInfo);
					    }
						focusObj.focus();
					    return false;
					 }
					 switch(SubObj.getAttribute("formatString").substr(0,P)){
					    case 'NUM':
						     if(Trim(SubObj.value) != "" && SubObj.value!=null) {
		                          if (isNaN(SubObj.value)) {
									 if(errMsg==''){
			                            ErrInfo="The " + Caption + ' Can only to digital.';
									 }
									 else{
									    ErrInfo=errMsg;	 
									 }
									 if(ErrInfoObj){
						                ErrInfoObj.innerHTML=ErrInfo;
					                 }
					                 else{
			                            alert(ErrInfo);
					                 }
									 focusObj.focus();
			                         return false;
		                          }
	                         }
						     break; 
						case 'EML':
						     if(Trim(SubObj.value) != "" && SubObj.value!=null) {
						           if (SubObj.value.charAt(0)=="." ||SubObj.value.charAt(0)=="@"||SubObj.value.indexOf('@', 0) == -1||SubObj.value.indexOf('.', 0) == -1||SubObj.value.lastIndexOf("@")==SubObj.value.length-1||SubObj.value.lastIndexOf(".")==SubObj.value.length-1) {
			                          if(errMsg==''){
			                             ErrInfo="The " + Caption + ' a invalid E-mail address';
									  }
									  else{
									     ErrInfo=errMsg;
									  }
									  if(ErrInfoObj){
						                 ErrInfoObj.innerHTML=ErrInfo;
					                  }
					                  else{
			                             alert(ErrInfo);
					                  }
									  focusObj.focus();
			                          return false;
								   }
							 }
						     break;  
						case 'DAT':
						     if(Trim(SubObj.value) != "" && SubObj.value!=null) {
							    if(SubObj.value.indexOf('-')>=0){
						           if(!isDate(SubObj.value,'-')){
									  if(errMsg==''){
			                             ErrInfo="The "+ Caption + ' data part is not valid. Please input in form of "YYYY-MM-DD"';
									  }
									  else{
									     ErrInfo=errMsg;
									  }
									  if(ErrInfoObj){
						                 ErrInfoObj.innerHTML=ErrInfo;
					                  }
					                  else{
			                             alert(ErrInfo);
					                  }
									  focusObj.focus();
			                          return false;
								   }
								}
								else if(SubObj.value.indexOf('/')>=0){
								   if(!isDate(SubObj.value,'/')){
								      if(errMsg==''){
			                             ErrInfo="The " + Caption + ' data part is not valid. Please input in form of "YYYY/MM/DD"';
									  }
									  else{
									     ErrInfo=errMsg;
									  }
									  if(ErrInfoObj){
						                 ErrInfoObj.innerHTML=ErrInfo;
					                  }
					                  else{
			                             alert(ErrInfo);
					                  }
									  focusObj.focus();
			                          return false;
								   }
								} 
								else if(SubObj.value.indexOf('.')>=0){
								   if(!isDate(SubObj.value,'.')){
								      if(errMsg==''){
			                             ErrInfo='The ' + Caption + ' data part is not valid. Please input in form of "YYYY.MM.DD"';
									  }
									  else{
									     ErrInfo=errMsg;
									  }
									  if(ErrInfoObj){
						                 ErrInfoObj.innerHTML=ErrInfo;
					                  }
					                  else{
			                             alert(ErrInfo);
					                  }
									  focusObj.focus();
			                          return false;
								   }
								}
								else{
								      if(errMsg==''){
			                             ErrInfo='The '+Caption + ' data part is not valid. Please input in form of "YYYY-MM-DD"';
									  }
									  else{
									     ErrInfo=errMsg;
									  }
									  if(ErrInfoObj){
						                 ErrInfoObj.innerHTML=ErrInfo;
					                  }
					                  else{
			                             alert(ErrInfo);
					                  }
									  focusObj.focus();
			                          return false;
								}
                             }								
						     break;
						case 'TIM':
						     if(Trim(SubObj.value) != "" && SubObj.value!=null) {
							    if(SubObj.value.indexOf(':')>=0){
								   if(!isTime(SubObj.value)){
								      if(errMsg==''){
			                             ErrInfo='The '+ Caption + ' time part is not valid. Please input in form of "hh:mm:ss"';
									  }
									  else{
										 ErrInfo=errMsg; 
									  }
									  if(ErrInfoObj){
						                 ErrInfoObj.innerHTML=ErrInfo;
					                  }
					                  else{
			                             alert(ErrInfo);
					                  }
									  focusObj.focus();
			                          return false;
								   }
								}
								else{
								      if(errMsg==''){
			                             ErrInfo='The '+ Caption + ' time part is not valid. Please input in form of "hh:mm:ss"';
									  }
									  else{
										 ErrInfo=errMsg; 
									  }
									  if(ErrInfoObj){
						                 ErrInfoObj.innerHTML=ErrInfo;
					                  }
					                  else{
			                             alert(ErrInfo);
					                  }
									  focusObj.focus();
			                          return false;
								}
							 }
							 break;
						case 'D T':
						     if(Trim(SubObj.value) != "" && SubObj.value!=null) {
								if(SubObj.value.indexOf(' ')>=0){
								   P=SubObj.value.indexOf(' ')
								   Dstr=SubObj.value.substr(0,P)
								   Tstr=SubObj.value.substr(P+1)
								}
								else{
								   if(errMsg==''){
			                          ErrInfo='The '+Caption + ' is not valid,Please input valid data & time in form of "YYYY-MM-DD hh:mm:ss"';
					               }
					               else{
						              ErrInfo=errMsg; 
					               }
								   if(ErrInfoObj){
						              ErrInfoObj.innerHTML=ErrInfo;
					               }
					               else{
			                          alert(ErrInfo);
					               }
								   focusObj.focus();
			                       return false;
								}
								//校验日期
							    if(Dstr.indexOf('-')>=0){
						           if(!isDate(Dstr,'-')){
									  if(errMsg==''){
			                             ErrInfo='The '+Caption + ' data part is not valid. Please input in form of "YYYY-MM-DD"';
									  }
									  else{
									     ErrInfo=errMsg;
									  }
									  if(ErrInfoObj){
						                 ErrInfoObj.innerHTML=ErrInfo;
					                  }
					                  else{
			                             alert(ErrInfo);
					                  }
									  focusObj.focus();
			                          return false;
								   }
								}
								else if(Dstr.indexOf('/')>=0){
								   if(!isDate(Dstr,'/')){
								      if(errMsg==''){
			                             ErrInfo='The '+Caption + ' data part is not valid. Please input in form of "YYYY/MM/DD"';
									  }
									  else{
									     ErrInfo=errMsg;
									  }
									  if(ErrInfoObj){
						                 ErrInfoObj.innerHTML=ErrInfo;
					                  }
					                  else{
			                             alert(ErrInfo);
					                  }
									  focusObj.focus();
			                          return false;
								   }
								} 
								else if(Dstr.indexOf('.')>=0){
								   if(!isDate(Dstr,'.')){
								      if(errMsg==''){
			                             ErrInfo='The '+Caption + ' data part is not valid. Please input in form of "YYYY.MM.DD"';
									  }
									  else{
									     ErrInfo=errMsg;
									  }
									  if(ErrInfoObj){
						                 ErrInfoObj.innerHTML=ErrInfo;
					                  }
					                  else{
			                             alert(ErrInfo);
					                  }
									  focusObj.focus();
			                          return false;
								   }
								}
								else{
								      if(errMsg==''){
			                             ErrInfo='The '+Caption + ' data part is not valid. Please input in form of "YYYY-MM-DD"';
									  }
									  else{
									     ErrInfo=errMsg;
									  }
									  if(ErrInfoObj){
						                 ErrInfoObj.innerHTML=ErrInfo;
					                  }
					                  else{
			                             alert(ErrInfo);
					                  }
									  focusObj.focus();
			                          return false;
								}
								//校验时间
								if(Tstr.indexOf(':')>=0){
								   if(!isTime(Tstr)){
								      if(errMsg==''){
			                             ErrInfo='The '+ Caption + ' time part is not valid. Please input in form of "hh:mm:ss"';
									  }
									  else{
										 ErrInfo=errMsg; 
									  }
									  if(ErrInfoObj){
						                 ErrInfoObj.innerHTML=ErrInfo;
					                  }
					                  else{
			                             alert(ErrInfo);
					                  }
									  focusObj.focus();
			                          return false;
								   }
								}
								else{
								      if(errMsg==''){
			                             ErrInfo='The '+ Caption + ' time part is not valid. Please input in form of "hh:mm:ss"';
									  }
									  else{
										 ErrInfo=errMsg; 
									  }
									  if(ErrInfoObj){
						                 ErrInfoObj.innerHTML=ErrInfo;
					                  }
					                  else{
			                             alert(ErrInfo);
					                  }
									  focusObj.focus();
			                          return false;
								}
                             }	
							 break;
					 }
				  }
			   }
	        }
		}
    }
    return true;
}

