/**
*表单验证调用
*formValidate.checkForm(formId,validateClasses) formId:formId;validateClasses class样式的名字,可以不输入，使用默认的
FormValidate.prototype.checkFormNotTabel 
FormValidate.prototype.checkImage 检查图片
*"v_num","v_double","v_positiveInt","v_positiveLong","v_chinaIDCard","v_mail","v_phone","v_forbiddenStr","v_date","v_time"
*"v_notNull","v_mobile","v_numAndChar","v_zip" ,"v_HHMM"
*也可以自己定义，数组传入，值为默认值的子集。
*"v_num"验证数字，不含小数
*"v_double"验证数字，含小数
*"v_doublePrecision"验证数字，含小数,精度确定为小点后两位
*"v_positiveInt"验证正整型和零
*"v_positiveLong"验证正Long型
*"v_chinaIDCard"验证身份证 15位18位的身份证号码
*"v_mail"验证邮箱
*"v_phone"电话号码 :区号3-4位，电话号码7-9位 格式如 08988888888
*"v_forbiddenStr"#，$，%，^，&，*，<，>,\,',",+检查字段是合法字符,即验证长度，以maxlength属性长度为主，如果有中文maxlength除以中文，如果有中文maxlength除以3,如果没有定义maxlength，则不验证长度
*"v_date"验证日期，格式yyyy-MM-dd
*"v_time"验证时间，格式yyyy-MM-dd HH:mm:ss 
*"v_notNull"验证不为空
*"v_mobile"手机号码 可以加86，也可以不加，格式如13222222222,不加86的号码长度为11  /^(((13[0-9]{1})|(18[0-9]{1})|(15[0-9]{1}))+\d{8})$/
*"v_numAndChar"数字和字母，主要用在保单号，工号之类的验证
*"v_zip"邮编验证 6位数字
*"v_HHMM"对“HH:MM”输入框进行验证，并且给通过验证的格式进行0位补全
*phoneAndMobile电话号码和手机号码
*
*formValidate.checkTextareaLength(TextareaName,max)  Textarea的长度
*formValidate.formatDigital(str) 除去数字中的","
*formValidate.trim(inputStr) 去掉字符串前后的空格并返回(可用)
*formValidate.getCheckCheckboxList(objName) 返回checkbox选中的List
*formValidate.selectAll(allCheckBoxId,checkboxName) checkbox全选,allCheckBoxId 全选的checkbox 
*formValidate.selectChekboxOnDetail(checkboxName) 选中某条结果，正确返回结果value，错误返回false
*formValidate.setQueryCondition(formId)设置查询条件，取text和select类型的值,引用了queryConditionMacro宏，该方法才生效,form 里的Table 必须用本项目规定的标准样式
*formValidate.tableDisable(tableObj)table disabled
*formValidate.tableEnable(tableObj)table Enable

*TrMouse(table_id) 表格行中鼠标移进移出背影变化,并且双击该行时，将第一列中的复选框状态改变成相反的。请在table内注明<tbody>……</tbody>标签，本代码只对<tbody>标签内的tr进行操作
*/
var formValidate;
/**
*创建表单验证实例
*/
if(formValidate == null){  
	formValidate = new FormValidate();	
}
function FormValidate(){
	this.validateClass=	
		[
		"v_num",
		"v_double",	
		"v_positiveInt",
		"v_positiveLong",
		"v_chinaIDCard",
		"v_mail",
		"v_phone",
		"v_number",
		"v_forbiddenStr",
		"v_date",
		"v_time",
		"v_notNull",
		"v_mobile",
		"v_numAndChar",
		"v_zip",
		"v_doublePrecision",
		"v_HHMM",
		"v_phoneAndMobile",
		"v_queryChinaIDCard",
		"v_checkLength",
		"v_password",
		"v_just",
		"v_url"
		];

	this.getValidateClassHash=function(){
	var validateClassHash=new Hash();
		validateClassHash.set(this.validateClass[0],this.checkNumberStr);
		validateClassHash.set(this.validateClass[1],this.checkNumberDouble);
		validateClassHash.set(this.validateClass[2],this.checkNumberPositiveInt);
		validateClassHash.set(this.validateClass[3],this.checkNumberPositiveLong);
		validateClassHash.set(this.validateClass[4],this.isIdCardNo);
		validateClassHash.set(this.validateClass[5],this.ifEmail);
		validateClassHash.set(this.validateClass[6],this.isPhone);
		validateClassHash.set(this.validateClass[7],this.checkNumber);
		validateClassHash.set(this.validateClass[8],this.checkStr);	
		validateClassHash.set(this.validateClass[9],this.isDateFormatBias);	
		validateClassHash.set(this.validateClass[10],this.isDateFormatScapeHms);
		validateClassHash.set(this.validateClass[11],this.isNotNull);
		validateClassHash.set(this.validateClass[12],this.mobile);	
		validateClassHash.set(this.validateClass[13],this.numAndChar);	
		validateClassHash.set(this.validateClass[14],this.zip);	
		validateClassHash.set(this.validateClass[15],this.doublePrecision);	
		validateClassHash.set(this.validateClass[16],this.v_HHMM);	
		validateClassHash.set(this.validateClass[17],this.phoneAndMobile);
		validateClassHash.set(this.validateClass[18],this.isQueryIdCardNo);	
		validateClassHash.set(this.validateClass[19],this.checkLength);	
		validateClassHash.set(this.validateClass[20],this.checkPassword);
		validateClassHash.set(this.validateClass[21],this.checkJust);
		validateClassHash.set(this.validateClass[22],this.checkUrl);
		return 	validateClassHash;
	}

	/**
	*身份证年份
	*/
	function checkYear(year,name,obj){
	    if(isNaN(parseInt(year)))
	    {
	        errorMsg(name,obj,formValidateCh.isChinaIDCardYear);
	        return false;
	    }
	    if(parseInt(year)<1900 || parseInt(year) >2050)
	    { 
	        errorMsg(name,obj,formValidateCh.isChinaIDCardYearBetween);
	        return false;
	    }
	    else return true;
	}
	/**
	*验证身份证月份
	*/
	function checkMonth(month,name,obj){
	    if(isNaN(parseInt(month,10))){
	    	 errorMsg(name,obj,formValidateCh.isChinaIDCardMonth);
	    	
	    	return false;
	    }
	    else if(parseInt(month,10)<1 || parseInt(month,10) >12)
	    { 
	    
	     errorMsg(name,obj,formValidateCh.isChinaIDCardMonthBetween);
	    return false;}
	    else return true;
	}
	function checkDateSplit(year,month,date,name,obj){
	    var daysOfMonth=calDays(parseInt(year),parseInt(month),name,obj);
	    if(isNaN(parseInt(date))){   	
	    	errorMsg(name,obj,formValidateCh.isChinaIDCardDate);
	    	return false;
	    }
	    else if(parseInt(date)<1||parseInt(date)>daysOfMonth){ 
	    	errorMsg(name,obj,formValidateCh.isChinaIDCardDate);
	    	return false;
	    }
	    else return true;
	}
	function calDays(year,month,name,obj){
	    var date= new Date(year,month,0);
	    return date.getDate();
	}
	function isLeapYear(year,name,obj){
	    if((year %4==0 && year %100!=0) || (year %400==0)) return true;
	    else return false;
	}
	/**
	*检查身份证日期
	*/
	function checkDate(strDate,name,obj){
	    if(strDate.length != 6 && strDate.length != 8){
	        
	        errorMsg(name,obj,formValidateCh.isChinaIDCardDate);
	        return false;
	    }
	    var year;
	    var month;
	    var date;
	    if (strDate.length == 6) {
	        year = strDate.substr(0, 2);
	        month = strDate.substr(2, 2);
	        date = strDate.substr(4, 2);
	    } else {
	        year = strDate.substr(0, 4);
	        month = strDate.substr(4, 2);
	        date = strDate.substr(6, 2);
	    }
	    var year = year.length == 2 ? '19' + year : year;
	    if(!checkYear(year,name,obj)){return false;}
	    if(!checkMonth(month,name,obj)){return false;}
	    if(!checkDateSplit(year,month,date,name,obj)){return false;}
	    return true;
	}
/**
*手机号和电话号的验证
*/
this.phoneAndMobile=function(name,obj) {
	if(obj.value.length==0){
		errorMsg(name,obj,formValidateCh.phoneAndMobileWrong);
		return false;
	}
	if(obj.value.length<3){
		errorMsg(name,obj,formValidateCh.phoneAndMobileWrong);
		return false;
	}
	var str = obj.value.substring(0,2);
	if(str=="13"||str=="15"||str=="18"){
		return formValidate.mobile(name,obj);
	}else{
		return formValidate.isPhone(name,obj);
	}
	
}
//身份证的验证,只验证位数

this.isQueryIdCardNo = function(name,obj){
	var intStrLen = obj.value.length;
	if(intStrLen == 0){
    	return true;
    }
	 if ((intStrLen != 15) || (intStrLen != 18)) { 
        errorMsg(name,obj,formValidateCh.isChinaIDCard);
        return false; 
    }
    return true;
} 

/**
 * 不带小数点的纯数字
 */
this.checkNumber = function(name,obj){
	if(obj.value.length==0){
		errorMsg(name,obj,formValidateCh.notNull);
		return false;
	}
	var newPar=/^\d+(\.\d+)?$/;
	if(!newPar.test(obj.value)){
		errorMsg(name,obj,formValidateCh.wrongNum);
		return false;
	}
	return true;
}
/**
*身份证的验证
*/
this.isIdCardNo = function(name,obj) 
{ 
    var factorArr = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1); 
    var error; 
    var varArray = new Array(); 
    var intValue; 
    var lngProduct = 0; 
    var intCheckDigit; 
    var intStrLen = obj.value.length; 
    var idNumber = obj.value;    
    // initialize 
    if(intStrLen == 0){
    	return true;
    }
    if ((intStrLen != 15) && (intStrLen != 18)) { 
        errorMsg(name,obj,formValidateCh.isChinaIDCardLength);
        return false; 
    }    
    // check and set value 
    for(i=0;i <intStrLen;i++) { 
        varArray[i] = idNumber.charAt(i); 
        if ((varArray[i] < '0' || varArray[i] > '9') && (i != 17)) { 
           
            errorMsg(name,obj,formValidateCh.isChinaIDCardWrong);
            return false; 
        } else if (i < 17) { 
            varArray[i] = varArray[i]*factorArr[i]; 
        } 
    } 
    if (intStrLen == 18) { 
        //check date 
        var date8 = idNumber.substring(6,14);
        if (checkDate(date8,name,obj) == false) { 
            
            errorMsg(name,obj,formValidateCh.isChinaIDCardDate);
            return false; 
        }        
        // calculate the sum of the products 
        for(i=0;i <17;i++) { 
            lngProduct = lngProduct + varArray[i]; 
        }        
        // calculate the check digit 
        intCheckDigit = 12 - lngProduct % 11; 
        switch (intCheckDigit) { 
            case 10: 
                intCheckDigit = 'X'; 
                break; 
            case 11: 
                intCheckDigit = 0; 
                break; 
            case 12: 
                intCheckDigit = 1; 
                break; 
        }        
        // check last digit 
        if (varArray[17].toUpperCase() != intCheckDigit) { 
           
            errorMsg(name,obj,formValidateCh.isChinaIDCardLast+intCheckDigit+".");
            return false; 
        } 
       // document.getElementById("E_TB_Birthday").value = idNumber.substr(6,4) + '-' + idNumber.substr(10,2) + '-' + idNumber.substr(12,2);
    } 
    else{        //length is 15 
        //check date 
        var date6 = idNumber.substring(6,12); 
        if (checkDate(date6,name,obj) == false) { 
            
            errorMsg(name,obj,formValidateCh.isChinaIDCardDate);
            return false; 
        }
        
    } 
    
    return true; 
}

	
	
	
	

 
	/**
	*判断是否为合法日期
	*/ 
	function checkMonthLength(mm,dd,yyyy){
		if((mm == "4" || mm == "6" || mm == "9" || mm == "11" || mm == "04" || mm == "06"||mm == "09") && dd>"30"){
			return false;
		}else if((mm == "2")||(mm == "02")){
			if(yyyy%4 > 0 && dd > "28"){
			return false;
			}else if(dd > "29"){
			return false;
			}
		}else if(dd > "31"){
			return false;
		}
		else if(mm > "12"){
			return false;
		}
		else if(yyyy < "1800"){
			return false;
		}
		else if(mm < "01"){
			return false;
		}			
		else if(dd < "01"){
			return false;
		}			
		return true;  
	};
	/**
	*验证非法字符#，$，%，^，&，*，<，>,\,',",+
	*/
	function forbiddenCharacter(str){
		var bool = /[<>\\#*&^$\'\"]+/g.test(str);
		return bool;
	};
	/**
	*验证非法字符<,>
	*/
	function forbiddenJust(str){
		var bool = /[<>]/g.test(str);
		return bool;
	};
	
	function checkNumber(name,obj,dights,str){
		
	     for   (i = 0;i < str.length; i++)   
	     {   
	       if   (dights.indexOf(str.substr(i,1)) == -1)   
	       {   
	           errorMsg(name,obj,formValidateCh.numWrong);
	           return   false;   
	       }   
	     }
	     return true; 
	};
	
	function errorMsg(name,obj,str){
		if(name){
			if(name.substr(name.length-1,1)=="\n"){
				name=name.substr(0,name.length-1);
			}
			alert(name+":"+str);
		}else{
			var spanObj = document.createElement('span');
			spanObj.className="ff12 textfieldInvalidFormatMsg";
			
			spanObj.style.color="red";
			
			spanObj.innerHTML=str;
			obj.parentNode.appendChild(spanObj);
		}
		try{
			obj.focus();
		}catch(e){
			
		}
		//document.attachEvent();
		return false;
	};
	
	this.errorMsg=function(name,obj,str){
		 return errorMsg(name,obj,str);
	};
	function notErrorMsg(){

		var textfieldInvalidFormatMsgs = document.getElementsByClassName('textfieldInvalidFormatMsg');
			
		if( textfieldInvalidFormatMsgs){
			for(var i=0;i < textfieldInvalidFormatMsgs.length ;i++){
			
				textfieldInvalidFormatMsgs[i].remove();
			}
		}
		
	};
	
	this.notErrorMsg=function(){
		
		 return notErrorMsg();
	};
	/**
	*验证日期，yyyy-MM-dd
	*/
	
	this.isDateFormatBias=function(name,obj){
		var date = new Hash();
		slen = obj.value.length;
		var str=obj.value;
		if(slen == 0){
			
			return true;
		}
		if (slen != 10)
		{
			errorMsg(name,obj,formValidateCh.timeFormatLandNotLegality);
			return false;	
		}
		cc = str.substr(0,4);
		date.set('yyyy', cc); 
		if (cc < "0000")
		{
			errorMsg(name,obj,formValidateCh.timeFormatLandNotLegality);
			return false;	
			
		}
		cc = str.substr(4,1);
		if (cc != "-")
		{
			errorMsg(name,obj,formValidateCh.timeFormatLandNotLegality);
			return false;	
		}
		cc = str.substr(5,2);
		date.set('mm', cc); 
		if (cc < "01" || cc > "12")
		{
			errorMsg(name,obj,formValidateCh.timeFormatLandNotLegality);
			return false;	
		}
		cc = str.substr(7,1);
		if (cc !="-" )
		{
			
			errorMsg(name,obj,formValidateCh.timeFormatLandNotLegality);
			return false;	
		}
		cc = str.substr(8,2);
		date.set('dd', cc); 
		if (cc < "01" || cc > "31")
		{
			
			errorMsg(name,obj,formValidateCh.timeFormatLandNotLegality);
			return false;	
		}
		var mm=date.get('mm');
		var dd=date.get('dd');
		var yyyy=date.get('yyyy');
		if(!checkMonthLength(mm,dd,yyyy))
		{	
			errorMsg(name,obj,formValidateCh.timeWrong);
			return false;
		}
		
		return  true;
	};
	/**
	*验证日期，yyyy-MM-dd HH:mm:ss
	*/
	this.isDateFormatScapeHms=function(name,obj){
		
		var date = new Hash();
		slen = obj.value.length;
		var str=obj.value;
		if(slen == 0){
			return true;
		}
		if (slen != 19)
		{
			errorMsg(name,obj,formValidateCh.timeFormatScapeHmsNotLegality);
			return false;
			
		}
		cc = str.substr(0,4);
		date.set('yyyy', cc); 
		if (cc < "0000")
		{
			
			errorMsg(name,obj,formValidateCh.timeFormatScapeHmsNotLegality);
			return false;
			
		}
		cc = str.substr(4,1);
		if (cc != "-")
		{
			errorMsg(name,obj,formValidateCh.timeFormatScapeHmsNotLegality);
			return false;
		}
		cc = str.substr(5,2);
		date.set('mm', cc); 
		if (cc < "01" || cc > "12")
		{
			errorMsg(name,obj,formValidateCh.timeFormatScapeHmsNotLegality);
			return false;
		}
		cc = str.substr(7,1);
		if (cc !="-" )
		{			
			errorMsg(name,obj,formValidateCh.timeFormatScapeHmsNotLegality);
			return false;
		}
		cc = str.substr(8,2);
		date.set('dd', cc); 
		if (cc < "01" || cc > "31")
		{
			errorMsg(name,obj,formValidateCh.timeFormatScapeHmsNotLegality);
			return false;
		}
		cc = str.substr(10,1);
		if (cc !=" ")
		{		
			errorMsg(name,obj,formValidateCh.timeFormatScapeHmsNotLegality);
			return false;
		}		
		cc = str.substr(11,2);
		if (cc < "00" || cc > "23")
		{
			errorMsg(name,obj,formValidateCh.timeFormatScapeHmsNotLegality);
			return false;
		}
		cc = str.substr(13,1);
		if (cc !=":")
		{		
			errorMsg(name,obj,formValidateCh.timeFormatScapeHmsNotLegality);
			return false;
		}
		cc = str.substr(14,2);
		if (cc < "00" || cc > "60")
		{
			errorMsg(name,obj,formValidateCh.timeFormatScapeHmsNotLegality);
			return false;
		}
		cc = str.substr(16,1);
		if (cc !=":")
		{		
			errorMsg(name,obj,formValidateCh.timeFormatScapeHmsNotLegality);
			return false;
		}
		cc = str.substr(17,2);
		if (cc < "00" || cc > "60")
		{
			errorMsg(name,obj,formValidateCh.timeFormatScapeHmsNotLegality);
			return false;
		}
		var mm=date.get('mm');
		var dd=date.get('dd');
		var yyyy=date.get('yyyy');
		if(!checkMonthLength(mm,dd,yyyy))
		{	
			errorMsg(name,obj,formValidateCh.timeWrong);
			return false;
		}
		
		return true;
	};
     
	/**
	* 功能：判断当前输入的身份证号码是否正确
	* StrNo : 身份证号码
	*/
	this.isChinaIDCard=function(name,obj){   
		StrNo   =   obj.value.toString()   
		if   (StrNo.length == 18)   
		{   
			var   a,b,c   
			if   (!isInteger(StrNo.substr(0,17)))   { errorMsg
	
	(name,obj,formValidateCh.isChinaIDCardLegality);return false}   
			a = parseInt(StrNo.substr(0,1))*7+parseInt(StrNo.substr(1,1))*9+parseInt(StrNo.substr
	
	(2,1))*10;   
			a = a+parseInt(StrNo.substr(3,1))*5+parseInt(StrNo.substr(4,1))*8+parseInt
	
	(StrNo.substr(5,1))*4;   
			a = a+parseInt(StrNo.substr(6,1))*2+parseInt(StrNo.substr(7,1))*1+parseInt
	
	(StrNo.substr(8,1))*6;     
			a = a+parseInt(StrNo.substr(9,1))*3+parseInt(StrNo.substr(10,1))*7+parseInt
	
	(StrNo.substr(11,1))*9;     
			a = a+parseInt(StrNo.substr(12,1))*10+parseInt(StrNo.substr(13,1))*5+parseInt
	
	(StrNo.substr(14,1))*8;     
			a = a+parseInt(StrNo.substr(15,1))*4+parseInt(StrNo.substr(16,1))*2;   
			b = a%11;   	    
			if   (b == 2)   //最后一位为校验位   
			{   
				c = StrNo.substr(17,1).toUpperCase();   //转为大写X   
			}   
			else   
			{   
				c=parseInt(StrNo.substr(17,1));   
			}       
			switch(b)   
			{   
				case   0:   if   (   c!=1   )   {errorMsg(name,formValidateCh.isChinaIDCardLast+"1");return   

false;}break;   
				case   1:   if   (   c!=0   )   {errorMsg(name,formValidateCh.isChinaIDCardLast+"0");return   

false;}break;   
				case   2:   if   (   c!="X")    {errorMsg(name,formValidateCh.isChinaIDCardLast+"X");return   

false;}break;   
				case   3:   if   (   c!=9   )   {errorMsg(name,formValidateCh.isChinaIDCardLast+"9");return   

false;}break;   
				case   4:   if   (   c!=8   )   {errorMsg(name,formValidateCh.isChinaIDCardLast+"8");return   

false;}break;   
				case   5:   if   (   c!=7   )   {errorMsg(name,formValidateCh.isChinaIDCardLast+"7");return   

false;}break;   
				case   6:   if   (   c!=6   )   {errorMsg(name,formValidateCh.isChinaIDCardLast+"6");return   

false;}break;   
				case   7:   if   (   c!=5   )   {errorMsg

(name,obj,formValidateCh.isChinaIDCardLast+"5");return   false;}break;   
				case   8:   if   (   c!=4   )   {errorMsg(name,formValidateCh.isChinaIDCardLast+"4");return   

false;}break;   
				case   9:   if   (   c!=3   )   {errorMsg(name,formValidateCh.isChinaIDCardLast+"3");return   

false;}break;   
				case   10:   if   (   c!=2   )  {errorMsg(name,formValidateCh.isChinaIDCardLast+"2");return   

false}   
			}   
		}   
		else if(StrNo.length == 15)  //15位身份证号   
		{   
			if   (!isInteger(StrNo))   {errorMsg
	
	(name,obj,formValidateCh.isChinaIDCardWrong);return   false}     
		} else if(StrNo.length == 0){
			return   true;   
		}   
		switch(StrNo.length){   
			case   15:     
			if   (isValidDate(name,"19"+StrNo.substr(6,2),StrNo.substr(8,2),StrNo.substr
	
	(10,2)))   
			{return   true;}   
			else   
			{return   false;}   
			case   18:   
			
			if   (isValidDate(name,obj,StrNo.substr(6,4),StrNo.substr(10,2),StrNo.substr
	
	(12,2)))   
			{return   true;}   
			else   
			{return   false;}   
		
		}
		errorMsg(name,obj,formValidateCh.isChinaIDCard);
		return   false  ;
		   
	}  ;
	
	function checkNumberDouble(name,obj){
		 var dights = "0123456789.";   
		 var str=obj.value;
		 if(str.length == 0){
		 	return   true  ;
		 }
		 if(str.substring(0,1) == "."){
		 	errorMsg(name,obj,formValidateCh.doubleDotWrong);
			return   false  ;
		 }
		 if(str.substring(str.length-1) == "."){
		 	errorMsg(name,obj,formValidateCh.doubleDotWrong);
			return   false  ;
		 }
		
 		 return checkNumber(name,obj,dights,str);
	}
	/**
	*验证输入数值型数据
	*/
	this.checkNumberDouble = function(name,obj){   
		return checkNumberDouble(name,obj);
		
	} ;
	/**
	*验证确定精度得数值型数据
	*/
	this.doublePrecision = function(name , obj){
		
		var str=obj.value;
		if(str.length == 0){
		 	return   true  ;
		 }
		if(str.length-1-str.indexOf(".") > 2){
			errorMsg(name,obj,formValidateCh.doublePrecisionWrong);
			return   false  ;
		} 
	
		return checkNumberDouble(name,obj);
	}
	/**
	*验证输入数值型数据不含小数
	*/
	this.checkNumberStr = function(name,obj){  
		 dights = "0123456789"; 
		 var str=obj.value;  
		 return checkNumber(name,obj,dights,str);
	} ;
	
	/**
	*验证整型
	*/
	this.checkNumberPositiveInt = function(name,obj){
		/*var str;
		var bool;
		var tag = 0;
		var dights ="0123456789";
		if(obj.value.length == 0){return true;}
		str =obj.value;
		if(str.length >10){errorMsg(name,obj,formValidateCh.intWrong);return false;}
		bool=checkNumber(name,obj,dights,str);
		
		if(bool){	
				if(str > "2147483648"){errorMsg(name,obj,formValidateCh.intWrong);return false;}
		}else{
			
			return bool;
		}
		return true;
		*/
		if(obj.value.length == 0){return true;}
		var strvalue=obj.value;
		if(isNaN(strvalue)){
			errorMsg(name,obj,formValidateCh.intWrong);
			return false;
		}else{
			if(obj.value == '0')return true;
			var patrn=/^[1-9]{1}[0-9]{0,9}$/;//13345678911 or 1569632222511
			if (!patrn.exec(strvalue)){
				errorMsg(name,obj,formValidateCh.intWrong);
				return false;
			}else{
				if(strvalue > 2147483648){
					errorMsg(name,obj,formValidateCh.intWrong);
					return false;
				}
			}
			return true;
		}
	};
	/**
	*对“HH:MM”输入框进行验证，并且给通过验证的格式进行0位补全
	*/
	this.v_HHMM = function(name,obj){
		var iv =obj.value;
		if(iv.length == 0){return true;}
		var pat = /^[0-2]{0,1}[0-3]{1}[:]{1}[0-5]{0,1}[0-9]{1}$/;
		if (!pat.exec(iv)){
			var strpat = /^[0-1]{0,1}[0-9]{1}[:]{1}[0-5]{0,1}[0-9]{1}$/;
			if(!strpat.exec(iv)){
				errorMsg(name,obj,formValidateCh.timeFormatError);
				return false;
			}
		}
		if(iv.length<5){
			var invar = iv.split(":");
			try{
				var restr="";
				if(invar[0].length==1){
					restr="0"+invar[0];
				}else{
					restr=invar[0];
				}
				if(invar[1].length==1){
					restr=restr+":0"+invar[1];
				}else{
					restr=restr+":"+invar[1];
				}
				obj.value = restr;
			}catch(e){}
		}
		return true;
	};
	/**
	*验证Long型
	*/
	this.checkNumberPositiveLong = function(name,obj){
		var str;
		var bool;
		var dights = "0123456789";
		var length = obj.value.length;
	        if(obj.value.length == 0){return true;}	
		str=obj.value;
		if(str.length > 19){errorMsg(name,obj,formValidateCh.intWrong);return false;}
		bool = checkNumber(name,obj,dights,str);
		if(bool){
			if(str > "9223372036854775807"){errorMsg(name,obj,formValidateCh.longWrong);return false;}
		}else{
			return bool;
		}
		return true;
	};
	/**
	*判断字符串是否为合法邮件地址
	*/
	this.ifEmail = function(name,obj)
	{
		
		var str = obj.value;
		if(str.length == 0)
		{
			return true;
		}
		i = str.indexOf("@");
		//str = str.substring(0,i);
		j = str.lastIndexOf(".");
		
		if (i == -1 || j == -1 || i > j ||str=="" )
		{
			errorMsg(name,obj,formValidateCh.emailNotLegality);
			return false;
		}
		return true;
	}
	/**
	*判断字符串是否为电话号码
	*/
	this.isPhone = function(name,obj)
	{
		if(obj.value.length==0){
			return true;
		}
		var re=/^\d{3,4}-\d{6,10}$/;
		var re2=/^\d{3}-\d{3}-\d{4}$/;
    	var tel=obj.value;
    	
    	if(!re.test(tel)&&!re2.test(tel))
    	{      	
        	errorMsg(name,obj,formValidateCh.phoneWrong);
        	return false;
     	}
		return true;
	};
	/**
	*功能: 检查字段是合法字符,即验证长度，以maxlength属性长度为主，如果有中文maxlength除以中文,如果没有定义maxlength，则不验证长度
	*输出参数: true
	*/ 
	this.checkStr = function(name,obj)
	{
		 if(obj.value.length==0){
		 	return true;
		 }
		 if(obj.maxLength>0){
		 	if(/[^\x00-\xff]/g.test(obj.value)){//含有中文
				if(obj.value.length*2>obj.maxLength){
					return errorMsg(name,obj,formValidateCh.chLongWrong+parseInt(obj.maxLength/2));
				}
			}			
 		}
		var bool = forbiddenCharacter(obj.value);
		if(bool){return errorMsg(name,obj,formValidateCh.forbiddenCharacter);}
		
		return true;
	};
		/**
	*功能: 验证长度，以maxlength属性长度为主，如果有中文maxlength除以中文,如果没有定义maxlength，则不验证长度
	*输出参数: true
	*/ 
	this.checkLength = function(name,obj)
	{
			
		 if(obj.value.length==0){
		 	return true;
		 }
	
		 if(obj.maxLength>0){
		 
		 	if(/[^\x00-\xff]/g.test(obj.value)){//含有中文
				if(obj.value.length*2>obj.maxLength){
					return errorMsg(name,obj,formValidateCh.chLongWrong+parseInt(obj.maxLength/2));
				}
			}else{
				if(obj.value.length>obj.maxLength){
					return errorMsg(name,obj,formValidateCh.chLongWrong+parseInt(obj.maxLength));
				}
			}		
 		}
	
		
		return true;
	};
	/**
	*功能:将form中所有的text文本进行trim操作。
	*输入参数:myform(form名)
	*输出参数:无
	*/ 
	this.textsTrim = function(formId){
		var form = $(formId);
	  	for(var i = 0;i < form.elements.length; i++){
	  		var etype = form.elements[i].type;
	  		if(etype == "text"){
	 			form.elements[i].value=this.trim(form.elements[i].value);
	  		}
	  	}
	}
	
	
	/**
	*不能为空
	*/
	this.isNotNull = function(name,id){
		var obj = $(id);
		var str = obj.value;
		slen = obj.value.length;	
		if(slen == 0){
			errorMsg(name,obj,formValidateCh.notNull);
			return false;
		}
		return true;
	};
	/**
	*验证手机号码
	*/
	this.mobile=function(name,obj){
		if(obj.value.length==0){
			return true;
		}
		
   	 	var re=/^(((13[0-9]{1})|(18[0-9]{1})|(15[0-9]{1}))+\d{8})$/;
    	if(!re.test(obj.value))
    	{ 	
      	 errorMsg(name,obj,formValidateCh.mobileWrong);   
      	 return false;
   	 	} 
   	 	return true;
	}

	/**
	*获取查询条件字符串
	*/
	this.getQueryConditionStr=function(obj){
		var str="";	
		if(obj.options){		
	   		str+= ":"+obj.options[obj.selectedIndex].text+"&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;";
	   	}else {
	   		str+= ":"+obj.value+"&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;";
	   	}
	   return str;
	};
	/**
	*获取验证只有数字和英文字母
	*/
	this.numAndChar=function(name,obj){
		
		var re=/^[a-zA-Z0-9]{0,}$/; 
     	if(!re.test(obj.value))
     	{    	
      		errorMsg(name,obj,formValidateCh.numAndCharWrong);   
        	return false;
    	 }
    	 return true;
	};
	/**
	*验证邮政编码
	*/
	this.zip=function(name,obj){
		dights = "0123456789"; 
		var str=obj.value; 
		if(str.length==0){
			return true;
		} 
		if(str.length!=6){
			errorMsg(name,obj,formValidateCh.zipLongWrong);   
			return false;
		}
		return checkNumber(name,obj,dights,str);
	}
	/**
	*获取验证class
	*/
	this.getValidateClassesList=function(validateClasses){
		var validateClassesList;
		if(!validateClasses){
			validateClassesList = this.validateClass;
		}else{
			validateClassesList = validateClasses;
		}
		return validateClassesList;
	};
	/**
	*验证类表，获取节点的name
	*/
	this.getListFormObjctsName=function(obj,tableObj){
		var parent = obj.parentNode.parentNode;
		var index = -1;
		var objNode;
		var objNodes;
		var tdList=parent.getElementsByTagName("td");	
		
		for(var i=0;i<tdList.length;i++){	
			if(tdList[i].childElements){
				objNodes=tdList[i].childElements();	
				
			}else{
				objNodes=tdList[i].childNodes;	
			}
			for(var t = 0 ; t < objNodes.length ; t++){
				objNode = objNodes[t];
				if(objNode==obj){
					index=i;
					break;
				}
			}
			if(index != -1){
				break;
			}
			
			
		}
		
		var nameObjList=tableObj.getElementsByTagName("tr")[0].getElementsByTagName("th");
		return nameObjList[index].innerHTML;
	};
	/**
	*验证一般的表单，即样式为tb_form格式的表单的table
	*/
	this.checkNormalTable=function(validateClassHash,validateClassesList,tableList){
		var nodeList;
		var bool;
		for(var t=0;t<tableList.length;t++){
			for(var i = 0; i < validateClassesList.length; i++){
				nodeList = tableList[t].getElementsByClassName(validateClassesList[i]);
				
				for(var j = 0; j < nodeList.length; j++){
					if(!nodeList[j].disabled){
						if(nodeList[j].type != "file"){	
							nodeList[j].value=this.trim(nodeList[j].value);
						}
						
						
						//var name =this.getObjctsName(nodeList[j]);
											
						bool =validateClassHash.get(validateClassesList[i])('',nodeList[j]);
						if(!bool){
							return bool;
						}
					}
				}
			}
		}
		
		return true;
	};
	/**
	*验证list的表单，即样式为tb01格式的表单的table
	*/
	
	this.checkListTable=function(validateClassHash,validateClassesList,listFormNodeList){
		var nodeList;
		for(var t = 0; t<listFormNodeList.length; t++){
			for(var i = 0; i < validateClassesList.length; i++){
				nodeList = listFormNodeList[t].getElementsByClassName(validateClassesList[i]);
				for(var j = 0; j < nodeList.length; j++){
					if(!nodeList[j].disabled){
					if(nodeList[j].type != "file"){	
						nodeList[j].value=this.trim(nodeList[j].value);
					}
					
					var name =this.getListFormObjctsName(nodeList[j],listFormNodeList[t]);
					
					bool =validateClassHash.get(validateClassesList[i])(name,nodeList[j]);
					
					if(!bool){
						return bool;
					}
					}
				}
			}
		}
		
		return true;
	}
	/**
	*获取对象的名字<th>name</th><td>obj</td>
	*/
	this.getObjctsName=function(obj){
		
		var parent = obj.parentNode;
		var nameObj;
		if(!parent.previous){nameObj = parent.previousSibling;}
		else{nameObj = parent.previous();}
		var name = nameObj.innerHTML;
		name = formValidate.trim(name);
		return name;
	};
	/**
	*验证密码
	*/
	this.checkPassword=function(name,obj){
		var re=/^\w{2,17}$/;
		if(obj.value.length == 0){
			return true;
		}
    	if(!re.test(obj.value))
    	{ 	
      	 errorMsg(name,obj,"长度在3-18位之间");   
      	 return false;
   	 	}
   	 	var re=/^[a-zA-Z0-9]{0,}$/; 
     	if(!re.test(obj.value))
     	{    	
      		errorMsg(name,obj,formValidateCh.numAndCharWrong);   
        	return false;
    	 }
    	 return true;
   	 	
	}
	/**
	*不能包含非法字符<>
	*/
	this.checkJust= function (name,obj){
		if(obj.value.length==0){
		 	return true;
		 }
		 if(obj.maxLength>0){
		 	if(/[^\x00-\xff]/g.test(obj.value)){//含有中文
				if(obj.value.length*2>obj.maxLength){
					return errorMsg(name,obj,formValidateCh.chLongWrong+parseInt(obj.maxLength/2));
				}
			}
 		}
		var bool = forbiddenJust(obj.value);
		if(bool){return errorMsg(name,obj,formValidateCh.notjust);}
		
		return true;
	}
	this.checkUrl= function (name,obj)
	
	{
		if(obj.value.length==0){
			 	return true;
			 }
	    var urlreg=/^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/;
	    var url=obj.value;
	    if (!urlreg.test(url))
	        {
	            errorMsg(name,obj,"网址错误");
	            return false;
	     } 
	     return true;
	}

	
}
/**
*表单验证,普通排列验证。
*/
FormValidate.prototype.checkNormalTables = function(tableIds,validateClasses){
	var tableList=new Array();
	var validateClassesList=this.getValidateClassesList(validateClasses);
	for(var i=0;i<tableIds.length;i++){
		tableList[i] = $(tableIds[i]);
	}
	var validateClassHash=this.getValidateClassHash();
	bool=this.checkNormalTable(validateClassHash,validateClassesList,tableList);
	return bool;
}
/**
*表单验证,列表排列验证。
*/
FormValidate.prototype.checkListTables = function(tableIds,validateClasses){
	var tableList=new Array();
	var validateClassesList=this.getValidateClassesList(validateClasses);
	for(var i=0;i<tableIds.length;i++){
		tableList[i] = $(tableIds[i]);
	}
	var validateClassHash=this.getValidateClassHash();
	bool=this.checkListTable(validateClassHash,validateClassesList,listFormNodeList);
	return bool;
}
/**
*表单验证
*/
FormValidate.prototype.checkForm = function(formId,validateClasses) {

	this.notErrorMsg();
	this.textsTrim(formId);
	var validateClassesList=this.getValidateClassesList(validateClasses);
	var form = $(formId);
	var listFormNodeList=form.getElementsByClassName("tb01");
	var tableList=new Array();
	tableList=form.getElementsByClassName("tb_form");
	var bool = true;
		
	var validateClassHash=this.getValidateClassHash();
		

	var normalTableList = form.getElementsByClassName("validateTableNormal");
		
	if(normalTableList.length!=0){
		
		bool=this.checkNormalTable(validateClassHash,validateClassesList,normalTableList);
	}
	
	return bool;
		
}
/**
*表单验证不再表格里
*/
FormValidate.prototype.checkFormNotTabel = function(formId,validateClasses) {

	this.notErrorMsg();

	this.textsTrim(formId);

	var validateClassesList=this.getValidateClassesList(validateClasses);

	var bool = true;
		
	var validateClassHash=this.getValidateClassHash();
	var form = $(formId);
	
	for(var i = 0; i < validateClassesList.length; i++){
		
			nodeList = form.getElementsByClassName(validateClassesList[i]);
			
			for(var j = 0; j < nodeList.length; j++){
				if(!nodeList[j].disabled){
					if(nodeList[j].type != "file"){	
						nodeList[j].value=this.trim(nodeList[j].value);
					}
						
						
						//var name =this.getObjctsName(nodeList[j]);
											
					bool =validateClassHash.get(validateClassesList[i])('',nodeList[j]);
					
					if(!bool){
						return bool;
					}
				}
			}
			
		

	}
	return bool;
		
}
FormValidate.prototype.checkOnbur = function(set,obj,validateClasses){
	var validateClassesList=this.getValidateClassesList(validateClasses);

	var bool = true;
		
	var validateClassHash=this.getValidateClassHash();
	var form = $(formId);
		
	for(var i = 0; i < validateClassesList.length; i++){
			
					
					
					Event.observe(nodeList[j], 'blur', function(){
						objfun();
					}); 
				
			
	}
}
/**
*Textarea长度
*/  
FormValidate.prototype.checkTextareaLength = function(TextareaName,max) {
	var obj;
	
	
	if(!TextareaName.type){
		obj=document.getElementsByName(TextareaName)[0];
	}else{
		obj = TextareaName;
	}
	
	
	if(/[^\x00-\xff]/g.test(obj.value)){
		if(obj.value.length*2>max){
			return this.errorMsg(name,obj,formValidateCh.chLongWrong+parseInt(max/2));
		}
	}
	else{
		if(obj.value.length>max){
			this.errorMsg(name,obj,formValidateCh.chLongWrong+max);
			return false;
		}
	}
	return true;
}

FormValidate.prototype.checkImage = function(TextareaName) {
	var obj;
	if(!TextareaName.type){
		obj=document.getElementsByName(TextareaName)[0];
	}else{
		obj = TextareaName;
	}
	var str = obj.value;
	if(str.length==0){
		return true;
	}
	var pos = str.lastIndexOf(".");
 var lastname = str.substring(pos,str.length)  //此处文件后缀名也可用数组方式获得str.split(".") 
 if (lastname.toLowerCase()!=".jpg" 
 	&& lastname.toLowerCase()!=".gif"
 	&&lastname.toLowerCase()!=".jpeg" 
 	&& lastname.toLowerCase()!=".png"
 	&& lastname.toLowerCase()!=".bmp")
 {
     
     this.errorMsg(null,obj,"上传图片必须为.jpg,.gif,.jpeg,.png,.bmp类型");
    
     return false;
 }
 else 
 {
  return true;
 }
	
}

/**
*除去数字中的","
*/  
FormValidate.prototype.formatDigital = function(str) {
	var regS = new RegExp(",","g");
	str = str.replace(regS,'');
	return str;
}




/**
*功能:去掉字符串前后的空格并返回
*输入参数:inputStr(待处理的字符串)
*输出参数:inputStr(处理后的字符串)
*/
FormValidate.prototype.trim = function(inputStr) {
	var result = inputStr
	while (result.substring(0,1) == " " || result.substring(0,1) == "\n") {
		result = result.substring(1,result.length)
	}
	
	while (result.substring(result.length-1, result.length) == " " || result.substring(result.length-1, result.length) == "\n") {
		result = result.substring(0, result.length-1);
	}
		
	return result;
}





/**
*获取checkbox 选中的值的list
*
*@param objNam  checkbox name
*/
FormValidate.prototype.getCheckCheckboxList = function (objNam){
		var checkboxList = new Array();
		var obj = document.getElementsByName(objNam);
		var objLen = obj.length;    
		var objN = 0;   
		var nameValue = '';
		var value = '';
		var i;		
		for (i = 0;i< objLen;i++){
		
		  if (obj [i].checked == true) {
		  	checkboxList[objN] = obj [i].value;
		   	objN++;		 
		  }
		 }
		
		 return checkboxList;	 
}
/**
*checkbox全选
* @param allCheckBoxId 全选的checkbox Id
* @param checkboxName  checkbox的名字
*/
FormValidate.prototype.selectAll = function(allCheckBoxId,checkboxName){
	$A(document.getElementsByTagName('input')).each(selectCheckBox); 
		function  selectCheckBox(element){
			if(element.type == "checkbox"&&element.name == checkboxName){
				element.checked = $(allCheckBoxId).checked;
			}
		}
}
/**
*查看详细时判断checkbox有没选择或有没有多选,如果选择了一项,返回该项value
* @param checkboxName  checkbox的名字
*/	
FormValidate.prototype.selectChekboxOnDetail = function(checkboxName){
		var i = 0;
		var idList = new Array();
		var j = 0;
		$A(document.getElementsByTagName('input')).each(selectCheckBox); 
		function  selectCheckBox(element){
			if(element.type == "checkbox"&&element.name == checkboxName){		
				if(element.checked){
					i++;
					idList[j] = element.value;
					j++;
				}
			}
		}
		if(i == 0){
			alert(checkboxMessage.notCheckOnDetail);return false ;
		}else if(i > 1){
			alert(checkboxMessage.tooMoreOnDetail);return false ;
		}
		return idList[0];
}
/**
*恢复查询条件
*/
FormValidate.prototype.restoreCondition = function(formId){
	var p = $("searchCondition").getElementsByTagName('p');
	var spil = "&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;"
	var str;
	var conditions;
	var title;
	var value;
	if(p.length > 0){
		var inputList = $(formId).getElementsByTagName("input");
		var selectList = $(formId).getElementsByTagName("select");
		var str = "";
		var obj;
		var hash = new Hash();	
		for(var i = 0;i < inputList.length; i++){
			obj = inputList[i];
		    if(obj.type == "text"){	
				hash.set(this.getObjctsName(obj),obj);
			}
		}
		for(var i = 0;i < selectList.length; i++){
			obj = selectList[i];
			
			hash.set(this.getObjctsName(obj),obj);
			
		}
		
		str = p[0].innerHTML;
		conditions = str.split(spil);
		var condistionAndValue;
		var object;
		for(var i = 0 ; i < conditions.length;i++){
			condistionAndValue = conditions[i].split(":");
			title = condistionAndValue[0];
			value = condistionAndValue[1];
			object = hash.get(title);
			if(object.type == "text"){
				object.value = value;
			}
			if(object.type == "select-one"){
				
			}
		}
	}
	
}


/**
*设置查询条件
*@formId
*@cssName 可以不设，设了，就只取该样式的条件,如<th class="cssName">dd</th><td><input/></td>
*/
FormValidate.prototype.setQueryCondition = function(formId,cssName){
	var thList;
	if(cssName){
		thList=document.getElementsByClassName(cssName);
	}else{
	 	thList= $(formId).getElementsByTagName("th");
	 }

	var inputList = $(formId).getElementsByTagName("input");
	var selectList = $(formId).getElementsByTagName("select");
	var str = "";
	var obj;
	var hash = new Hash();	
	for(var i = 0;i < inputList.length; i++){
		obj = inputList[i];
	    if(obj.value != ""&&obj.type == "text"){	
			hash.set(this.getObjctsName(obj),this.getQueryConditionStr(obj));
		}
	}
	for(var i = 0;i < selectList.length; i++){
		obj = selectList[i];
		
	    if(obj.value != ""){
	    	
			hash.set(this.getObjctsName(obj),this.getQueryConditionStr(obj));
		}
	}
	var condtionSrt="";
	for(var i = 0;i < thList.length; i++){
		
		if(hash.get(formValidate.trim(thList[i].innerHTML))){
			condtionSrt = thList[i].innerHTML+hash.get(formValidate.trim(thList[i].innerHTML));
			str += condtionSrt;
		}

	}
	str = str.substring(0,str.length-37);
	$("searchCondition").innerHTML = "<p class='zt05'>"+str+"</p>";
}
/**
*验证非法字体
*/
FormValidate.prototype.checkStr = function(name,obj){
	this.checkStr (name,obj)
}
/**
*让talbe Disable
*/
FormValidate.prototype.tableDisable = function(tableObj){ 
	var inputList = tableObj.getElementsByTagName('input');
	var selectList = tableObj.getElementsByTagName('select');
	var textareaList = tableObj.getElementsByTagName('textarea');
	for(var i = 0;i < inputList.length; i++){
		
		
			inputList[i].disabled = true;
		
	}
	for(var i = 0;i < selectList.length; i++){
		selectList[i].disabled = true;
	}
	for(var i = 0;i < textareaList.length; i++){
		textareaList[i].disabled = true;
	}

} 

FormValidate.prototype.notErrorMsg = function(){
	this.notErrorMsg();
}
	
/**
*让talbe Enable
*/
FormValidate.prototype.tableEnable = function(tableObj){ 
	var inputList = tableObj.getElementsByTagName('input');
	var selectList = tableObj.getElementsByTagName('select');
	var textareaList = tableObj.getElementsByTagName('textarea');
	for(var i = 0;i < inputList.length; i++){
		
			inputList[i].disabled = false;
		
		
	}
	for(var i = 0;i < selectList.length; i++){
		selectList[i].disabled = false;
		
	}

	for(var i = 0;i < textareaList.length; i++){

		textareaList[i].disabled = false;
		
		
	}
	
} 
var TrMouse_selectRwo=null;//选中的行
/**
 *表格行中鼠标移进移出背影变化,并且双击该行时，将第一列中的复选框状态改变成相反的。
 *请在table内注明<tbody>……</tbody>标签，本代码只对<tbody>标签内的tr进行操作
 *@param TableID 			表格的ID号
 *@param ondblclickswitch	是否开启双击后选中首表中的复选框事件,true表示打开，false表示不打开，默认是true
 *@param allSelectId		全选复选框的ID号
 *@param callBackFun		双击一行时，外调事件，注意，当行的tr标签里需要有一个id="number"属性，ID的值是当前行数据的ID值，如果ID没有值，则不执行该方法，请注意，一量设置了该
 *							回调方法，ondblclickswitch将被改成false,
 *@param addLinkToTitleCol	这个是给标题添加单击事件的列的索引，可以是多个列，以"1,2,3"的方式传进去。列是从0开始计算，如果不写，列则没有单击事件
 *@Author:孙林 howesen@126.com
 */
FormValidate.prototype.TrMouse=function(/*string*/TableID,/*bool*/ondblclickswitch,/*string*/allSelectId,/*Function*/callBackFun,/*string*/addLinkToTitleCol){
		//双击选中行的背景颜色值：默认为“#FFFF99”
		var selectedColor="#FFFF99";
		//鼠标进入的背景色
		var mouseOverColor = "#EEEEEE";
		//鼠标离开的背景色
		var mouseOutColor = "#FFFFFF";
		//隔行颜色
		var interleavedColor = "#F7F7F7";
		try{
			if(ondblclickswitch==undefined || ondblclickswitch==null){
				ondblclickswitch = true;
			}
			if(callBackFun!=undefined && callBackFun!=null && typeof(callBackFun)=="function"){
				ondblclickswitch = false;
			}
			
			var oTable = document.getElementById(TableID);
			var oTBody = oTable.tBodies[0];
		    var colDataRows = oTBody.rows;
			//如果头一行是th，可以从下一行开始
		    //for (var i=0; i < colDataRows.length; i++) {
			//下面的是从第二行开始有事件的
			for (var i=0; i < colDataRows.length; i++) {
				if(i % 2==0){
					colDataRows[i].style.backgroundColor=mouseOutColor;//"#FFFFFF";
				}else{
					colDataRows[i].style.backgroundColor=interleavedColor;
				}
				if(addLinkToTitleCol!=undefined && addLinkToTitleCol!=null){
					var collist = addLinkToTitleCol.split(",");
					if(collist.length>0){
						for(var colindex=0;colindex<collist.length;colindex++){
							if(collist[colindex]!=null && !isNaN(collist[colindex])){
								//给第N列的数据添加超练。
								var titleCols;
								try{
								 	titleCols = colDataRows[i].cells[collist[colindex]];
								}catch(e){}
								if(titleCols!=undefined && titleCols!=null){
									titleCols.style.cursor = "pointer";
									titleCols.onclick = function(){
										var trnode = this.parentNode;
										if(callBackFun!=undefined && callBackFun!=null && typeof(callBackFun)=="function" && trnode.id!=undefined && trnode.id!=null && trnode.id!=""){
											callBackFun(trnode.id);
										}
										trnode.style.backgroundColor=selectedColor;
										if(ondblclickswitch){
											var inputs = trnode.cells[0].childNodes;
											for(var n=0;n<inputs.length;n++){
												if(inputs[n].nodeName.toLowerCase()=="input" && inputs[n].type.toLowerCase()=="checkbox"){
													inputs[n].checked = !inputs[n].checked;
													if(!inputs[n].checked){
														if((trnode.rowIndex-1) % 2==0){
															trnode.style.backgroundColor=mouseOutColor;//"#FFFFFF";
														}else{
															trnode.style.backgroundColor=interleavedColor;
														}
													}
												}
											}
										}else{
											if(TrMouse_selectRwo!=null && trnode.id!=TrMouse_selectRwo.id){
												if((TrMouse_selectRwo.rowIndex-1) % 2==0){
													TrMouse_selectRwo.style.backgroundColor=mouseOutColor;//"#FFFFFF";
												}else{
													TrMouse_selectRwo.style.backgroundColor=interleavedColor;
												}
											}
										}					
										TrMouse_selectRwo = trnode;	
									}
								}
							}
						}
					}
				}
				//移进
				colDataRows[i].onmousemove =function(){
					var isSelectRow=false;
					var colorvalue = trimblank(this.style.backgroundColor.toUpperCase());
					//$("debug").innerHTML += colorvalue+"=="+HhtmlColorToRGB(selectedColor)+"<br/>";
					if(document.all){
						if(colorvalue==selectedColor.toUpperCase()){
							isSelectRow = true;
						}
					}else{
						if(colorvalue=="RGB("+HhtmlColorToRGB(selectedColor)+")"){
							isSelectRow = true;
						}
					}
					if(!isSelectRow){
						this.style.backgroundColor=mouseOverColor;//"#EFEFEF";
					}
				};
				//移出
				colDataRows[i].onmouseout  =function(){
					var isSelectRow=false;
					var colorvalue = trimblank(this.style.backgroundColor.toUpperCase());
					if(document.all){
						if(colorvalue==selectedColor.toUpperCase()){
							isSelectRow = true;
						}
					}else{
						if(colorvalue=="RGB("+HhtmlColorToRGB(selectedColor)+")"){
							isSelectRow = true;
						}
					}
					if(!isSelectRow){
						if((this.rowIndex-1) % 2==0){
							this.style.backgroundColor=mouseOutColor;//"#FFFFFF";
						}else{
							this.style.backgroundColor=interleavedColor;
						}
					}
				};
				if(ondblclickswitch){
					var firstinput;
					try{
					 	firstinput = colDataRows[i].cells[0].childNodes;
					}catch(e){}
					if(firstinput!=undefined && firstinput!=null){
						for(var n=0;n<firstinput.length;n++){
							if(firstinput[n].nodeName.toLowerCase()=="input" && firstinput[n].type.toLowerCase()=="checkbox"){
								firstinput[n].onclick = function(){
									var trobj = this.parentNode.parentNode;
									//$("debug").innerHTML +=trobj.nodeName +"<br/>";
									if(!this.checked){
										if((trobj.rowIndex-1) % 2==0){
											trobj.style.backgroundColor=mouseOutColor;//"#FFFFFF";
										}else{
											trobj.style.backgroundColor=interleavedColor;
										}
									}else{
										trobj.style.backgroundColor=selectedColor;
									}
								}
							}
						}
					}
				}
				colDataRows[i].ondblclick = function(){
					if(callBackFun!=undefined && callBackFun!=null && typeof(callBackFun)=="function" && this.id!=undefined && this.id!=null && this.id!=""){
						callBackFun(this.id);
					}
					this.style.backgroundColor=selectedColor;
					if(ondblclickswitch){
						var inputs = this.cells[0].childNodes;
						for(var n=0;n<inputs.length;n++){
							if(inputs[n].nodeName.toLowerCase()=="input" && inputs[n].type.toLowerCase()=="checkbox"){
								inputs[n].checked = !inputs[n].checked;
								if(!inputs[n].checked){
									if((this.rowIndex-1) % 2==0){
										this.style.backgroundColor=mouseOutColor;//"#FFFFFF";
									}else{
										this.style.backgroundColor=interleavedColor;
									}
								}
							}
						}
					}else{
						if(TrMouse_selectRwo!=null && this.id!=TrMouse_selectRwo.id){
							if((TrMouse_selectRwo.rowIndex-1) % 2==0){
								TrMouse_selectRwo.style.backgroundColor=mouseOutColor;//"#FFFFFF";
							}else{
								TrMouse_selectRwo.style.backgroundColor=interleavedColor;
							}
						}
					}					
					TrMouse_selectRwo = this;
				}
		   }
		   if(allSelectId!=undefined && allSelectId!=null && allSelectId!=""){
				//全选事件处理
				$(allSelectId).onclick = function(){
					var colorstr="";
					var selectstr=this.checked;
					
					for (var i=0; i < colDataRows.length; i++) {
						if(ondblclickswitch){
							if(this.checked){
								colDataRows[i].style.backgroundColor= selectedColor;
							}else{
								if(i % 2 ==0){
									colDataRows[i].style.backgroundColor= colorstr;
								}else{
									colDataRows[i].style.backgroundColor= interleavedColor;
								}
							}
						}
						var inputs = colDataRows[i].cells[0].childNodes;
						for(var n=0;n<inputs.length;n++){
							if(inputs[n].nodeName.toLowerCase()=="input" && inputs[n].type.toLowerCase()=="checkbox"){
								inputs[n].checked = this.checked;								
							}
						}
					}
				}
			}
	   }catch(e){}
	}

FormValidate.prototype.confirm = function(){ 
	return confirm(operationMessage.deleteConfirm); 
	
} 
//Html颜色值转换为RGB
function HhtmlColorToRGB(color)
{
    var str="0x" + color.substring(1,color.length);
    var r=str&0x0000FF;
    var g=(str&0x00FF00)>>8;
    var b=(str&0xFF0000)>>16;
    return b + "," + g + "," + r;
} 
//去掉字符串里的“ ”[空格]
function trimblank(str){
	if(str!=undefined && str!=null){
		 return str.replace(/ /g,"");
	}
	return "";
}

var formValidateCh={
	notNull:"不能为空",
	timeFormatNotDefine:"该时间格式没有定义",
	timeFormatNotLegality:"时间不合法，或者格式错误，或者其他错误，要求格式为yyyyMMdd",
	timeFormatBiasNotLegality:"时间不合法，或者格式错误，或者其他错误，要求格式为yyyy/MM/dd",
	timeFormatLandNotLegality:"时间不合法，或者格式错误，或者其他错误，要求格式为yyyy-MM-dd",
	timeFormatScapeHmsNotLegality:"时间格式不合法，或者格式错误，或者其他错误，要求格式为yyyy-MM-dd HH:mm:ss",
	timeFormatHmsNotLegality:"时间格式不合法，或者格式错误，或者其他错误，要求格式为yyyyMMddHHmmss",
	timeWrong:"时间出错",
	forbiddenCharacter:"为非法字符，包含了#，$，^，&，*，<，>,\,',\"",
	checkLengInputLess:"请至少输入",
	checkLengChar:"个字符",
	checkLengInputMore:"请最多输入 ",
	phoneWrong:"电话号码错误，格式必需如：0898-66666666或400-800-2000",
	emailNotLegality:"邮箱地址或msn必须包含 @ 符号",
	isChinaIDCardLast:"身份证号码校验位错:最后一位应该为:",
	isChinaIDCardLegality:"身份证不合法",
	isChinaIDCardWrong:"身份证号码错误",
	isChinaIDCard:"输入的身份证号码必须为15位或者18位！",
	isChinaIDCardLast:"身份证效验位错误!正确为：",
	isChinaIDCardYear:"身份证年份错误",
	isChinaIDCardYearBetween:"年份应该在1900-2050之间!",
	isChinaIDCardLength:"身份证长度出错",
	isChinaIDCardDate:"身份证中日期信息不正确",
	isChinaIDCardMonth:"月份输入有误,请重新输入!",
	isChinaIDCardMonthBetween:"月份应该在1-12之间!",
	numWrong:"数值含有错误字符",
	numWrongLength:"数值超过指定长度",
	intWrong:"超过整型范围",
	longWrong:"超过long范围",
	isChinaIDCardTimeWrong:"身份证号码内日期错误",
	mobileWrong:"手机号码错误，手机号码不能加86",
	numAndCharWrong:"只能含有数字和字母",
	zipLongWrong:"邮编长度错误",
	chLongWrong:"文字长度出错，文字长度不能超过",
	doubleDotWrong:"小数格式错误，小数的第一位和最后一位不能有.",
	doublePrecisionWrong:"小数精度错误，小数点后不能超过2位",
	timeFormatError:"格式错误：请输入“HH:MM”格式。值范围(00:00--23:59)",
	phoneAndMobileWrong:"手机号或电话号出错",
	callIdIsNull:"没有对应的录音文件",
	notjust:"不能包含非法字符<或>",
	wrongNum:"不规范的数字"
}
