/*


********************基本格式*******************************
例<input name="f1" v_type=string v_maxlength=32， v_minlength=20>字符类型，最大长度为32，最小为20
例<input name="f1" v_type=money v_maxvalue=1000>货币类型，金额最大为1000


类型：（必填）


      string       字符型


      zip          邮政编码型


	  money        货币型


	  0-9          0-9型


	  int          整型     可以为负数


	  float        浮点型   可以为负数


	  email        电子邮件型


	  date         日期型   （属性由month，day，输入表单元素的名称name）


	  pwd          密码型   (属性有pwd2，输入校验密码的域名）


	  phone        电话型


	  idcard       身份证型


	  account	   帐号类型，只允许数字、字母、_、-，且首尾字符不能为_、-



属性：v_minlength   最小长度（最大长度可以用size）(如果等于0，表示此项可以为空，如果等于null，或一个数字说明不能为空)
      v_maxvalue    最小值


	  v_minivalue   最大值


	  v_name       报错时显示的名称
	  v_must        必填项(1,必填 0非必填)
	  v_maxlength   最大长度


	  v_type        类型(必填)


××××××××××××入口函数×××××××××××××××××××
function check(formname)

function reset1(formname)

××××××××××××基本函数列表×××××××××××××××××××
function boolean isMadeOf(value,str)   //判断value中的字符是否由str中的字符组成
function boolean isSizeOf(value,max,min)//判断value的大小是否由符合标准
function boolean isLengthOf(value,max,min)//判断value的长度是否由符合标准
function boolean isNotNull(value)//判断value是否空或null
function trimSubStr(ATrimStr,ASubStr,AWhere)//去掉符合条件的字符，用于去空格  


××××××××××××扩充函数列表×××××××××××××××××××
function void packUp(obj)//整理域的属性值，校验v_×域的值是否符合标准



××××××××××××××××××接口函数列表××××××××××××××××××××
function void forString(obj)//判断一般字符串的长度


function void forZip(obj)//判断邮政编码
function void forMoney(obj)//判断金额
function void for0-9(obj)//判断字符是否由0－9个数字组成


function void forInt(obj)//判断字符是否是整数组成，可以为负数


function void forFloat(obj)//判断字符是否是数字，可以有小数点，负数


function void forEmail(obj)//判断字符是合法的电子邮件
function void forDate(obj1,obj2,obj2)//判断字符是合法的日期
function void forPwd(obj1,obj2)//判断字符密码，两次输入密码是否相等


function void forPhone(obj)//判断字符是否是合法的电话021-55555555,(021)2222222,
function void forMadeOf(obj,str)//判断字符是否是由str里的字符组成
function void forIdCard(obj1)//判断字符是否是合法的身份证号
function void forAccountID(obj)//判断是否符合帐号id的规则




*/

//*****************全局变量****************************
var numStr="0123456789";
var idCardStr = "0123456789x";
var moneyStr = numStr + ".";//金额的组成,浮点数的组成
var intStr = numStr+"-";
var floatStr = moneyStr+"-";
var phoneStr = "()-#" + numStr;//电话号码
var flag = 0;


//*********************入口函数***************************

function check(form)
{    var obj = null;
     var t = null;
	 var i;

     for (i=0;i<form.length;i++)
    {    
		 obj = form.elements[i];		 		 		 
		 packUp(obj); 
	     if(obj.v_type == "string") forString(obj);
         else if(obj.v_type == "zip") forZip(obj);
         else if(obj.v_type == "money") forMoney(obj);
         else if(obj.v_type == "0_9") for0_9(obj);
		 else if(obj.v_type == "int") forInt(obj);
		 else if(obj.v_type == "float") forFloat(obj);
		 else if(obj.v_type == "email") forEmail(obj);
//		 else if(obj.v_type == "date") forDate(obj);
                 else if(obj.v_type == "date") myDate(obj);
		 else if(obj.v_type == "pwd") forPwd(obj);
		 else if(obj.v_type == "phone") forPhone(obj);
		 else if(obj.v_type == "idcard") forIdCard(obj);
		 else if(obj.v_type == "account") forAccountID(obj);
		 else alert("程序错误：'" + obj.name + "的’v_type =" + obj.v_type + "'不是一个合法的类型！");
                    
		if(flag == 1) {
	      flag = 0;
		  return false;
		}

     }
	 
     return true;
}

function reset1(form)
{    var obj = null;
     var t = null;
	 var i;

     for (i=0;i<form.length;i++)
     {    
		obj = form.elements[i];	
		if(obj.type != 'button' && obj.type != 'submit')
		{	 		 		 
		  //单选框
		  if(obj.type=='radio')
		  {
			obj.checked=false;
		  }
		  //复选框
		  else if(obj.type=='checkbox')
		  {
			obj.checked=false;
		  }
		  else
		    obj.value = '';
		}
	//alert("object.name1 = " + obj.name);
	//alert("object.value1 = " + obj.value);
     }
}
//*********************基本函数***************************


function isMadeOf(val,str)
{

	var jj;
	var chr;
	for (jj=0;jj<val.length;++jj){
		chr=val.charAt(jj);
		if (str.indexOf(chr,0)==-1)
			return false;			
	}
	
	return true;
}


function isNotNull(val)
{
	if (val =="")
		return (false);
	if (val == null)
		return (false);
	
		return (true);
}

function isSizeOf(val,min,max)
{
    var maxval = parseFloat(max);
	var minval = parseFloat(min);
	var selval = parseFloat(val);
	
	if (isNaN(selval)){
	  return false;
	}
	
	if (!isNaN(maxval)){
	  if (selval > maxval){
	    return false;
	  }
	}
	if (!isNaN(minval)){
	  if (selval < minval){
	    return false;
	  }
	}
	
    /*
	if (val < min || val > max){
	  return false;	
	}
	*/
		
	return (true);
}


function isLengthOf(val,min,max)
{

	var minlen = parseInt(min);
	var maxlen = parseInt(max);
	
	if (!isNaN(maxlen)){
	  if (val.length > maxlen){
	    return false;
	  }
	}
	if (!isNaN(minlen)){
	  //先检查的必填,如果必填,length不为0,进行检查
	  //如果不为必填,length可为0,检查略过
	  if (val.length>0 && val.length<minlen){
	    return false;
	  }
	}
	
	/*
	if (val.length < minlen || val.lengh > maxlen ){
	  return false;
	}
	*/
	return true;
}

//判断小数点


function isValid_dot(val)
{   
    
    var subvalue;
    
    if (val.indexOf(".",0) != -1){
	
	   subvalue = val.substring(val.indexOf(".",0)+1);
	   
	  if (subvalue.indexOf(".",0) != -1){
	    return false;  
	  }
	  
	}
    
	return true;
	
}

//判断负号
function isValid_negative(val)
{
    
    var subvalue;
    
    if (val.indexOf("-",0) != -1){
	
	   if (val.indexOf("-",0) > 0){
	     return false;
	   }
	   
	   subvalue = val.substring(val.indexOf("-",0)+1);
	  
	  if (subvalue.indexOf("-",0) != -1){
	    return false;  		
	  }
	  
	}
    
	return true;
	

}

//判断合适长度


function isRight_length(val,num)
{
     var len = parseInt(num);
	 
	 if (isNaN(len)){ return true;}
	 
	 if (val.length != len){
	   return false;
	 }

     return true;

}

//***************************************************************************************************
//--- 从ATrimStr中去掉符合条件的字符串ASubStr 
//--- 参数：


//---    ATrimStr：要去掉符合条件字符串的字符串


//---    ASubStr：要去掉的子字符串


//---    AWhere 0：去掉所有的, 1:去掉左边相连的,2:去掉右面的相连的 
//--- 返回: 处理完的字符串


//---	创建日期:       2001-07-27		最近更新日期:   2001-07-27
//--- 	创建程序员:	xg_delayth		最近更新程序员: xg_delayth		
//--- 	维护程序员:     xg_delayth 
//--- 举例： trimSubStr(" usj  29 "," ",0) 返回 "usj29"
  function trimSubStr(ATrimStr,ASubStr,AWhere){  
    var tTrLength,tSbLength,tempLength;
    var tempString;
    var i; 

    tTrLength = ATrimStr.length;
    tSbLength = ASubStr.length;

    if (tSbLength == 0){return ATrimStr;}
    if (tSbLength > tTrLength){return ATrimStr;}
  
    tempString = ATrimStr;
    switch(AWhere){
      case 0://所有


        do{
          tempLength = tempString.length;
          tempString = tempString.replace(ASubStr,"");
        } while(tempLength != tempString.length);
        break; 
      case 1://左


        while (true){
          if (tempString.length < tSbLength) break;
          for (i = 0;i < tSbLength;i++)
            if (ASubStr.charAt(i) != tempString.charAt(i)) 
              return tempString;
          tempString = tempString.replace(ASubStr,"");  
        };  
      case 2://右


        while(true){
          tempLength = tempString.length;
          if (tempLength < tSbLength){return tempString;}
          for (i = 0;i < tSbLength;i ++){
            if (ASubStr.charAt(i) != tempString.charAt(tempLength - tSbLength+i)){
              return tempString;
            }  
          }    
          tempString = tempString.substr(0,tempLength-tSbLength); 
        };
      default:
        return tempString;
    }
    return tempString; 
  }
//***************************************************************************************************


//××××××××××××扩充函数列表×××××××××××××××××××
//整理域的属性值，校验v_×域的值是否符合标准


function  packUp(obj)
{   

     if (obj == null){
	   alert("非法对象");
	   return false;
	 }
	 
	 if (obj.value != null){
	   obj.value = trimSubStr(trimSubStr(obj.value," ",1)," ",2);
	 }
	     //创建v_name属性


		 try{
		   if (obj.v_name == null){
			 //alert("创建v_name属性");
			 obj.v_name = new String(obj.name);
		    }			 
		 }catch(exception){}
		 
		 //创建v_type属性


		 try{
	       if (obj.v_type == null){
			 //alert("创建v_type属性");
			 obj.v_type = new String("string");  
		   }			  
	     }catch(exception){}
		 
		 //创建v_minlength属性


		 try{
		   if (obj.v_minlength == null){
			 //alert("创建v_minlength属性");
			 obj.v_minlength = new String("0");
		    }			 
		 }catch(exception){}
		 
		 //创建v_maxlength属性


		 try{
		   if (obj.v_maxlength == null){
			 //alert("创建v_maxlength属性");
			 obj.v_maxlength = new String("");
		    }			 
		 }catch(exception){}
		 
		 //创建v_maxvalue属性


		 try{
		   if (obj.v_maxvalue == null){
			 //alert("创建v_maxvalue属性");
			 obj.v_maxvalue = new String("");
		    }			 
		 }catch(exception){}
		 
		 //创建v_minvalue属性


		 try{
		   if (obj.v_minvalue == null){
			 //alert("创建v_minvalue属性");
			 obj.v_minvalue = new String("");
		    }			 
		 }catch(exception){}
		 
		//创建v_must属性


		 try{
		   if (obj.v_must == null){
			 //alert("创建v_must属性");
			 obj.v_must = new String("0");
		    }			 
		 }catch(exception){}

        //创建v_hidden属性


		 try{
		   if (obj.v_hidden == null){
			 //alert("创建v_hidden属性");
			 obj.v_hidden = new String("0");
		    }
		 }catch(exception){}


    return true;
	
}



//*********************扩充函数***************************



function forDate(useryear,usermonth,userday)
{
	var myyear;
	var mymonth;
	var myday;
	//myyear=parseInt(useryear);
	//mymonth=parseInt(usermonth);
	//myday=parseInt(userday);
	myyear=useryear;
	mymonth=usermonth;
	myday=userday;
	if (myyear < 1950 || myyear > 2050 ||mymonth < 1 ||mymonth > 12 || myday < 1 || myday > 31)
		return (false);
        if(mymonth==4 || mymonth==6 || mymonth==9 || mymonth==11)
        { 
        	if(myday>30)
            		return (false);
        }
	if(myyear%4==0)
	{
	 	if((myyear%100==0 && myyear%400==0) || myyear%100!=0)
          	{
            		if(mymonth==2 && myday>29)
             			return (false);
            		else
	     			return (true);
          	}
        }
	else
	{
          	if(mymonth==2 && myday>28)
             		return (false);
             	else
             		return (true);
	}
}

function myDate(obj)
{
	return true;
}



function  forString(obj)//判断一般字符串的长度


{
    if(obj.v_hidden=="1")
       return true;
      //必填项判断 
	  if (obj.v_must!="0"){
	  
	    if (obj.value.length == 0){
		   alert("'" + obj.v_name + "'为必填项，请务必填写");
		   flag = 1;
		   obj.focus();
		   return false;
		}
	    
	  }
	  
	  if (!isLengthOf(obj.value,obj.v_minlength,obj.v_maxlength)){
	    flag = 1;
		alert("'"+obj.v_name+"'的值不正确！长度有错误！");
		obj.focus();
		return false;
	  
	  }
	  
	  return true;
      
}

function forZip(obj)//判断邮政编码
{
    if(obj.v_hidden=="1")
       return true;
    if (!forString(obj)){
	  flag = 1;
	  obj.focus();
	  return false;
	}else{
	  if (obj.value.length == 0){
	    return true;
	  }
	}
  
    if (!isMadeOf(obj.value,numStr)){
        flag = 1;
        alert("'" + obj.v_name + "'的值不正确！请输入数字！");
	    obj.focus();
	    return false;
      }
	      
    if (!isRight_length(obj.value,"6")){
      flag = 1;
      alert("'"+obj.v_name+"'的值不正确！长度有错误！(6位数字)");
	  obj.focus();
	  return false;
    } 

    return true;
}

function forMoney(obj)//判断金额
{   
    if (!forString(obj)){
	  flag = 1;
	  obj.focus();
	  return false;
	}else{
	  if (obj.value.length == 0){
	    return true;
	  }
	}
		
    if (!isMadeOf(obj.value,moneyStr)){
      flag = 1;
      alert("'" + obj.v_name + "'的值不正确！请输入数字！");
	  obj.focus();
	  return false;
    }
     
	if (!isValid_dot(obj.value)){
	    flag = 1;
	    alert("'" + obj.v_name + "'的值不正确！小数点有错误！");
	    obj.focus();
	    return false;  
	}
	
	if (!isSizeOf(obj.value,obj.v_minvalue,obj.v_maxvalue)){
	  flag = 1;
	  alert("'" + obj.v_name + "'的值不正确！超出规定范围！");
	  obj.focus();
	  return false;
	} 
	
	return true;
	
}


function for0_9(obj) //判断字符是否由0－9个数字组成


{    
    if (!forString(obj)){
	  flag = 1;
	  obj.focus();
	  return false;
	}else{
	  if (obj.value.length == 0){
	    return true;
	  }
	}
    
	if (!isMadeOf(obj.value,numStr)){
      flag = 1;
      alert("'" + obj.v_name + "'的值不正确！请输入数字！");
	  obj.focus();
	  return false;
    }
	
	return true;
	
}


function forInt(obj)//判断字符是否是整数组成，可以为负数


{
    if (!forString(obj)){
	  flag = 1;
	  obj.focus();
	  return false;
	}else{
	  if (obj.value.length == 0){
	    return true;
	  }
	}
   
    if (!isMadeOf(obj.value,intStr)){
      flag = 1;
      alert("'" + obj.v_name + "'的值不正确！请输入数字！");
	  obj.focus();
	  return false;
    }
	
	if (!isValid_negative(obj.value)){
      flag = 1;
      alert("'" + obj.v_name + "'的值不正确！'-'符号有错误！");
	  obj.focus();
	  return false;
    }
	
	if (!isSizeOf(obj.value,obj.v_minvalue,obj.v_maxvalue)){
	  flag = 1;
	  alert("'" + obj.v_name + "'的值不正确！超出规定范围！");
	  obj.focus();
	  return false;
	}
    
   return true;
   
}


function forFloat(obj)//判断字符是否是数字，可以有小数点，负数

{
    if (obj.v_hidden == "1"){
        return;
    }
    if (!forString(obj)){
	  flag = 1;
	  obj.focus();
	  return false;
	}else{
	  if (obj.value.length == 0){
	    return true;
	  }
	}
   
    if (!isMadeOf(obj.value,floatStr)){
      flag = 1;
      alert("'" + obj.v_name + "'的值不正确！请输入数字！");
	  obj.focus();
	  return false;
    }
	
	if (!isValid_dot(obj.value)){
	    flag = 1;
	    alert("'" + obj.v_name + "'的值不正确！小数点有错误！");
	    obj.focus();
	    return false;  
	}	
	
	if (!isValid_negative(obj.value)){
      flag = 1;
      alert("'" + obj.v_name + "'的值不正确！'-'符号有错误！");
	  obj.focus();
	  return false;
    }
	
	if (!isSizeOf(obj.value,obj.v_minvalue,obj.v_maxvalue)){
	  flag = 1;
	  alert("'" + obj.v_name + "'的值不正确！超出规定范围！");
	  obj.focus();
	  return false;
	}

   return true;

}

function forPhone(obj)//判断字符是否是合法的电话021-55555555,(021)2222222,
{
    if(obj.v_hidden=="1")
       return true;
    if (!forString(obj)){
	  flag = 1;
	  obj.focus();
	  return false;
	}else{
	  if (obj.value.length == 0){
	    return true;
	  }
	}
	
	if (!isMadeOf(obj.value,phoneStr)){
	  flag = 1;
	  alert("'" + obj.v_name + "'的值不正确！请填写数字,可以包含(,),－,#符号"); 
	  obj.focus();
	  return false; 
	}

}

function forEmail(obj)//判断字符是合法的电子邮件
{
    if(obj.v_hidden=="1")
       return true;
    if (!forString(obj)){
	  flag = 1;
	  obj.focus();
	  return false;
	}else{
	  if (obj.value.length == 0){
	    return true;
	  }
	}
	
	var myReg = /^[-._a-z0-9]+@([-_a-z0-9]+\.)+[a-z0-9]{2,3}$/;
    if(myReg.test(obj.value)){
	  return true; 
	}
	alert("'" + obj.v_name + "'的值不正确！请确信填写正确的电子邮箱！");
	flag = 1;
	obj.focus();
    return false; 

}

function forIdCard(obj)//判断字符是否是合法的身份证


{
    if(obj.v_hidden=="1")
       return true;
    if (!forString(obj)){
	  flag = 1;
	  obj.focus();
	  return false;
	}else{
	  if (obj.value.length == 0){
	    return true;
	  }
	} 
	
	if (!isMadeOf(obj.value,idCardStr)){
	  flag = 1;
	  alert("'" + obj.v_name + "'的值不正确！身份证必须填写数字！");
	  obj.focus();
	  return false;
	}
	else{
	
		if(!isRight_length(obj.value,"15") && !isRight_length(obj.value,"18")){
		  flag = 1;
		  alert("'" + obj.v_name + "'的值不正确！身份证长度不正确(15或18位数字)！");
		  obj.focus();
		  return false;
		}else{
		  if(isRight_length(obj.value,"15")){
			if(obj.value.indexOf("x")!=-1){
				flag = 1;
				alert("'" + obj.v_name + "'的值不正确！");
				obj.focus();
				return false;
			}
		  }
		  if(isRight_length(obj.value,"18")){
			if(obj.value.indexOf("x")!=-1 && obj.value.indexOf("x")!=17){
				flag = 1;
				alert("'" + obj.v_name + "'的值不正确！");
				obj.focus();
				return false;
			}
		  }
		}
	}
	
	return true;

}


function forAccountID(obj)
{
    if(obj.v_hidden=="1")
       return true;
    if (!forString(obj)){
	  flag = 1;
	  obj.focus();
	  return false;
	}else{
	  if (obj.value.length == 0){
	    return true;
	  }
	}
	
	var myReg = /^[a-zA-Z0-9][_a-zA-Z0-9-]{1,16}[a-zA-Z0-9]$/;
    if(myReg.test(obj.value)){
	  return true; 
	}
	alert("'" + obj.v_name + "'的值不正确！请确认符合提示要求！");
	flag = 1;
	obj.focus();
    return false; 

}
/*
function void forDate(obj1,obj2,obj2)//判断字符是合法的日期
function void forPwd(obj1,obj2)//判断字符密码，两次输入密码是否相等


function void forMadeOf(obj,str)//判断字符是否是由str里的字符组成
*/


/***********add by 郭 清除操作********/
//清除当前form中的所有值（select复位，radio、checkbox去除选定）
function clearForm(form)
{    var obj = null;
     var t = null;
	 var i;

     for (i=0;i<form.length;i++)
    {    
		 obj = form.elements[i];		 		 		 
		 packUpForClear(obj); 
	     if(obj.v_type == "string") clearText(form,obj);
         else if(obj.v_type == "zip") clearText(form,obj);
         else if(obj.v_type == "money") clearText(form,obj);
         else if(obj.v_type == "0_9") clearText(form,obj);
		 else if(obj.v_type == "int") clearText(form,obj);
		 else if(obj.v_type == "float") clearText(form,obj);
		 else if(obj.v_type == "email") clearText(form,obj);
//		 else if(obj.v_type == "date") forDate(obj);
         else if(obj.v_type == "date") clearText(form,obj);
		 else if(obj.v_type == "pwd") clearText(form,obj);
		 else if(obj.v_type == "phone") clearText(form,obj);
		 else if(obj.v_type == "idcard") clearText(form,obj);
		 else if(obj.v_type == "account") clearText(form,obj);
		 else if(obj.v_type == "single") clearCheck(form,obj);
		 else if(obj.v_type == "multi") clearCheck(form,obj);
		 else if(obj.v_type == "certif") clearText(form,obj);
     }
}
function packUpForClear(obj)
{   

     if (obj == null){
	   alert("非法对象");
	   return false;
	 }
	 
	 if (obj.value != null){
	   obj.value = trimSubStr(trimSubStr(obj.value," ",1)," ",2);
	 }
		 
		 //创建v_type属性
		 try{
	       if (obj.v_type == null){
			 //alert("创建v_type属性");
			 obj.v_type = "string";  
		   }			  
	     }catch(exception){}
	
	return true;
	
}

//清除text框与select
function clearText(form,obj)
{
	if(obj.v_type == "string")
	{
		if(obj.value!=null && obj.value!="")
		{
			if(obj.type!="submit" && obj.type!="button" && obj.type!="reset"){
				if(obj.type=="radio" || obj.type=="checkbox")
				{
					clearCheck(form,obj);
				}
				else
				{
					if(obj.length==undefined)
					{
						if(obj.type!="hidden")
						{
							obj.value = "";
						}
					}
					else if(obj.length>0)
					{
						obj.selectedIndex = 0;
					}
				}
			}
		}
		else
		{
			if(obj.length!=undefined && obj.length>0)
			{
				obj.selectedIndex = 0;
			}
		}
	}
	else
	{
		if(obj.value!=null && obj.value!="")
			obj.value = "";
	}
}
//清除radio、checkbox选中项
function clearCheck(form,obj)//对单选框的必填校验
{

	//非必填项判断 
	//  if (obj.v_must=="0"){
	//   return true;
	//  }
	  bb = eval("form."+obj.name);

      if(bb.length==undefined)
      {
		if(bb.checked)
		{
			bb.checked=0;
		}
      }
      else
      {
		for(var i=0;i<bb.length;i++)
		{
			if(bb[i].checked)
			{
				bb[i].checked=0;
			}
		}
      }
}

/***********add by 郭 清除操作********/

