/*
create by 雨弓vaal.water@gmail.com
work well on IE and FF
version:2.3.0.1
only one step to use it,do as below:
<form onsubmit="return Forms(this)">
*/

var formvalid;
function Forms(obj){
	if (obj.innerHTML==null) {return false;}
	
	var tocheck;
	formvalid=true;
	
	var notice=obj.getElementsByTagName("span");
	for(i=notice.length-1;i>=0;i--){
	   if (notice[i].name=='_UeNotice'){
		
	    notice[i].parentNode.removeChild(notice[i]);
	 }
	}
	var inputs=obj.getElementsByTagName("input");
	for(i=0;i<inputs.length;i++){
		if (inputs[i].getAttribute("tocheck")!=undefined){
			tocheck=inputs[i].getAttribute("tocheck");
			checkinput(inputs[i],tocheck);
		}
	  }
	
	
	inputs=obj.getElementsByTagName("textarea");
	for(i=0;i<inputs.length;i++){
		if (inputs[i].getAttribute("tocheck")!=undefined){
			tocheck=inputs[i].getAttribute("tocheck");
			checkinput(inputs[i],tocheck);
		}
	  }
    
    if (formvalid){
		
		inputs=obj.getElementsByTagName("input");
		var tocheckinput=document.createElement("INPUT");
		tocheckinput.name="!check_input";
		tocheckinput.type="hidden";
		
		if (inputs.length==0){
			var tocheck=Math.floor(Math.random()*inputs.length);
			tocheck=0;
			tocheck=inputs[tocheck];
			tocheckinput.value=tocheck.name+";"+tocheck.value.length;
		}
		else{
			var vlen=tocheckinput.name.length+1;
			vlen+=(vlen+"").length;
		    tocheckinput.value=tocheckinput.name+";"+vlen;
			}
		obj.appendChild(tocheckinput);
		
		}
		
	return formvalid;
	}
function checkinput(inputobj,tocheck){
	
	tocheck=tocheck.split(";");
	
	for(j=0;j<tocheck.length;j++){
	    checkitem=tocheck[j].split("=");
	    checkkey=checkitem[0].toLowerCase();
		checkvalue=checkitem[1];
		switch (checkkey){
			case "minsize":
			      if (inputobj.value.length<checkvalue){
			        tofix(inputobj,"字数不得少于"+checkvalue+"个字");
					formvalid=false;
				  }
				 break;
			case "maxsize":
			      if (inputobj.value.length>checkvalue){
			        tofix(inputobj,"字数不得多于"+checkvalue+"个字");
					formvalid=false;
				  }		     
				 break;
		    case "stype":
			     var re;
				 var stype="";
				 checkvalue=checkvalue.toLowerCase();
			     switch (checkvalue){
					case "date":
					     re=/[0-9]{4}\-(([1-9])|1[0-2])\-([1-9]|[1-2][0-9]|30|31)/ig;
						  stype="日期";
						  break;
					case "time":
					      re=/([0-9]|1[0-9]|20|21|22|23)(\:|\ |\-)([0-9]|([1-5][0-9]))(\:|\ |\-)([0-9]|([1-5][0-9]))/ig;
						  stype="时间";
						  break;	  
					case "num":
					      re=/^-{0,1}\d+/ig;
						  stype="数字";
						  break;
					case "znum":
					      re=/\d+/ig;
						  stype="正整数";
						  break;	  
					case "cn":
					      re=/[\u4e00-\u9fa5]+/ig;
						  stype="中文";
						  break;
					case "en":
					      re=/[a-zA-Z]+/ig;
						  stype="英文";
						  break;
					case "ennum":
					      re=/[a-zA-Z0-9]+/ig;
						  stype="英文或数字";
						  break;	  
					case "un":
					      re=/[a-zA-Z0-9]+/ig;
						  stype="英文或数字";
						  break;
					case "mail":
					      re=/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/ig;
						  stype="邮箱格式";
						  break;
					case "url":
					      re=/[a-zA-Z]+:\/\/[^\s]*/ig;
						  stype="HTTP地址格式";
						  break;
					case "qq":
					      re=/[1-9][0-9]{4,}/ig;
						  stype="QQ号码格式";
						  break;	  
					case "cnphone":
					      re=/\d{3}-\d{8}|\d{4}-\d{7}/ig;
						  stype="国内固定电话格式";
						  break;
					case "cnmobile":
					      re=/13\d{9}/ig;
						  stype="国内移动电话格式";
						  break;	  
					case "cnzipcode":
					      re=/[1-9]\d{5}(?!\d)/ig;
						  stype="国内邮编格式";
						  break;	  
					case "id":
					      re=/\d{15}|\d{18}/ig;
						  stype="国内身份证格式";
						  break;
					case "username":
					      re=/^[a-zA-Z][a-zA-Z0-9_]{4,15}$/ig;
						  stype="字母开头，允许5-16字节，允许字母数字下划线";
						  break;			  

				 }
				 if (re!=undefined){
			         if(inputobj.value.replace(re,'').length>0){
			          tofix(inputobj,"输入值要求为"+stype+"");
					  formvalid=false; 			 
					}
				 }
				 break;	
			case "minvalue":
			     checkvalue=checkvalue*1;
			     if (inputobj.value<checkvalue){
			        tofix(inputobj,"输入值不得小于"+checkvalue+"");
					formvalid=false;
				  }	
				 break;
			case "maxvalue":
			     checkvalue=checkvalue*1;
			     if (inputobj.value>checkvalue){
			        tofix(inputobj,"输入值不得大于"+checkvalue+"");
					formvalid=false;
				  }	
				 break;	
            case "compare":
			     var compareinput=document.getElementsByName(checkvalue);
				 if (compareinput.length>0){
					  if (inputobj.value!=compareinput[0].value){
					    tofix(inputobj,"请确定您的输入");
					    formvalid=false;
					  }
					 }
			
			}
		
	   
	  }
	}

function tofix(inputobj,showmess){
   if(inputobj.getAttribute("errmsg")!=undefined){
      showmess=inputobj.getAttribute("errmsg");
	  }
   if(inputobj.showerr=='alert'){
     inputobj.tmpstyle=inputobj.style.background;
     inputobj.style.background="#CCCCCC";
     var newvalue=window.prompt(""+showmess,inputobj.value);
     if (newvalue!=null){
        inputobj.value=newvalue;
     }
     inputobj.style.background=inputobj.tmpstyle;
   }
   else{
    
      var msgspan=document.createElement("SPAN");
	  msgspan.name="_UeNotice";
	  msgspan.style.color="#FF0000";
      msgspan.innerHTML="  "+showmess+" ";
	 
	  inputobj.parentNode.appendChild(msgspan);
	  
   }
}

//HTML editor use delay submit check
var _postform,_posttimer;
var _userfunc;
function Forms2(form,usrfunc){
	if(usrfunc!=undefined){_userfunc=usrfunc;}
  _posttimer=window.setTimeout("SubmitForm()",2);
  _postform=form;
  return false; 
}
 function SubmitForm(){
   if(_userfunc!=undefined){
	   if (! _userfunc()){
		   _userfunc=null;
		   return;
		   }
		 else{_userfunc=null;}
	   }
	
   if (Forms(_postform)){
	 _posttimer=null;
	 _postform.submit();
	 }
 } 