	///////////////////校验函数库///////////////////
   function getCaption(id){
        //alert($("label[@for='"+id+"']").html());
        return  $("label[@for='"+id+"']").html()?$("label[@for='"+id+"']").html():'';
    }


/********************************** email *****************************************/
/**
*校验字符串是否为email型
*返回值：
*如果为空，定义校验通过，           返回true
*如果字串为email型，校验通过，      返回true
*如果email不合法，                  返回false    参考提示信息：Email的格式不正確！
*/
function isEmail(str)
{
    if (str==''){return true;}

    if (str.charAt(0) == "." || str.charAt(0) == "@" || str.indexOf('@', 0) == -1
        || str.indexOf('.', 0) == -1 || str.lastIndexOf("@") == str.length-1 || str.lastIndexOf(".") == str.length-1){
		return false;
    
	}else
        return true;
}//~~~
/*--------------------------------- email ----------------------------------------*/



/********************************** date ******************************************/
/**
*校验字符串是否为日期型
*返回值：
*如果字串为日期型，校验通过，       返回true
*如果日期不合法，                   返回false    参考提示信息：输入域的时间不合法！（yyyy-MM-dd）
*/
function isDate(str)
{
	if (str==''){return true;}
    
    var pattern = /^((\d{4})|(\d{2}))-(\d{1,2})-(\d{1,2})$/g;
    if(!pattern.test(str)){
        return false;
    }else{
        return true;
    }
}//~~~



/********************************** Number ****************************************/
/**
*校验字符串是否为数字。包括整数和浮点型。包括正数和负数。
*返回值：
*如果为空，定义校验通过，      返回true
*如果字串为浮点型，校验通过，  返回true
*如果校验不通过，              返回false     参考提示信息：输入域不是合法的浮点数！
*/
function isNumber(str)
{
    if (str==''){return true;}

    //if(/^(\-?)(\d+)$/.test(str)||/^(\-?)(\d+)(.{1})(\d+)$/g.test(str))
    if (/^(\+|-)?\d+($|\.\d+$)/.test(str)){
        return true;
    }else{
	   return false;
	}
}//~~~


/********************************** Integer *************************************/
/**
*校验字符串是否为整型
*返回值：
*如果为空，定义校验通过，      返回true
*如果字串全部为数字，校验通过，返回true
*如果校验不通过，              返回false     参考提示信息：输入域必须为数字！
*/
function isInteger(str)
{
    if (str==''){return true;}
       
    if(/^(\-?)(\d+)$/.test(str)){
        return true;
    }else{
	   return false;
	}
}//~~~

/********************************** NumOrChar *************************************/
/**
*校验字符串是否为数字，英文，或下划线
*返回值：
*如果为空，定义校验通过，      返回true
*如果字串全部为数字，校验通过，返回true
*如果校验不通过，              返回false     参考提示信息：！
*/
function isNumOrChar(S,T)
{
    var Obj=eval('document.all[\'' +S+'\']');
	var desc=T+"必须为数字、英文、或者下划线!";
    if (typeof(Obj) == "undefined") 
	{
       alert("目标不存在。");
       return true;
    }
    var str=Obj.value;
    if (str==''){return true;}
    if( !/[\W]/.test(str) )
        return true;
    else{
       if (typeof(T) != "undefined"){alert(desc);}
	   Obj.focus();
	   return false;
	}
}//~~~


/******************************************/
/*功能：必输项校验                        */
/*参数：S 控件源、T 提示Title             */
/*返回：True、False                       */
/******************************************/
function isEmpty(S,T)
{
    var Obj=document.getElementById(S);
    
	var desc=T+"不能为空!";
    if (Obj==null||typeof(Obj) == "undefined") 
	{
       alert("目标不存在。");
       return true;
    }
    var str=trim(Obj.value);

    if (str=='')
    {
       if (typeof(T) != "undefined"){alert(desc);}
	   Obj.focus();
	   return true;
    }

       return false;
}

/******************************************/
/*功能：必需选择校验                        */
/*参数：S 控件源、T 提示Title             */
/*返回：True、False                       */
/******************************************/
function isSelected(S,T)
{
    var Obj=eval('document.all[\'' +S+'\']');
	var desc=T+"必须选择!";
    if (typeof(Obj) == "undefined") 
	{
       alert("目标不存在。");
       return true;
    }
    var str=trim(Obj.value);

    if (Obj.selectedIndex==0)
    {
       if (typeof(T) != "undefined"){alert(desc);}
	    Obj.focus();
	    return false;
    }
        return true;
}

//判断是否是非法字符，即不含特殊字符
function isIllegal(S,T){

    var Obj=eval('document.all[\'' +S+'\']');
	var desc=T+"必须为汉字、数字、英文、或者下划线!";
    if (typeof(Obj) == "undefined") 
	{
       alert("目标不存在。");
       return true;
    }
    var str=Obj.value;
    if (str==''){return true;}
    
    var reg='~!@#$%^&*()+{}|:\'<>?`=[]-/\\';
	for (var i=0;i<reg.length;i++){ 
		if (str.indexOf(reg.charAt(i))!=-1){
		    if (typeof(T) != "undefined"){alert(desc);}
		    Obj.focus();
		    return true;		
		}		 
	}
	return false;
} 

//判断是否是非法字符，即不含特殊字符
function isNormal(str){
	if (str==''){return true;}
    var reg='~!@#$%^&*()+{}|:\'<>?`=[]-/\\';
	for (var i=0;i<reg.length;i++){ 
		if (str.indexOf(reg.charAt(i))!=-1){
		    return false;		
		}		 
	}	
	return true;
} 

//判断是否含有html字符
function isHtmlChar(str){
	if (str==''){return true;}
    var reg='&\'<>/\\';
	for (var i=0;i<reg.length;i++){ 
		if (str.indexOf(reg.charAt(i))!=-1){
		    return true;		
		}		 
	}
	return false;
}

//是否是汉字. 纯汉字,返回true,如果包含字母或者数字,返回false
function isChinese(str){
	if (/[^\u4e00-\u9fa5]/.test(str))
	{
	  return false;
	}else{
	  return true;
	}
}

function checkchinese(str){
   var re1 = new RegExp("^[\u4E00-\uFA29]*$")       //汉字的范围
   var re2 = new RegExp("^[\uE7C7-\uE7F3]*$")
   var str = str.replace(/(^\s*)|(\s*$)/g,'');
   if (str == ''){return false;}
   if (!(re1.test(str) && (! re2.test(str)))){
      return false;
   }
   return true;
}

//校验整个表单
//此处没有考虑重名的地方.
function validForm(formId){
   var isvalid = true;   
	$("#"+formId+" input,textarea").each(function(i){
	    var notnull = $(this).attr('notnull');	
	    var maxlen = $(this).attr('maxlength');
	    var datatype=$(this).attr('datatype');
	    
	    //alert($(this).val()+' : '+isHtmlChar($(this).val()));
	    //不能含有html字符
	    /*
         if ($(this).val()!=''&&$(this).val()!=null&&isHtmlChar($(this).val())){
            alert(getCaption(this.id)+'不能含有非法字符!');
         	$(this).focus();
         	isvalid =  false; 
        	return false;	               
         }	    
	    */
	    
	    //校验为空的情况
	    if (notnull){
	       if (!$(this).val()|| trim($(this).val())==''){
	           alert(getCaption(this.id)+'不能为空!');
	           $(this).focus();
	           isvalid =  false; 
	           return false;
	       }
	    }
	    
	    //最大长度
	    if (maxlen&&maxlen>0){
	       if ($(this).val().length>maxlen){
	           alert(getCaption(this.id)+'长度不能大于'+maxlen+'!');
	           $(this).focus();
	           isvalid =  false; 
	           return false;
	       }
	    }
	    
	    //类型
	    if (datatype){
	         if (datatype =='number'){	 //数字        
	            if (!isNumber($(this).val())){
	               alert(getCaption(this.id)+'必须为数字!');
		           $(this).focus();
		           isvalid =  false; 
		           return false;	               
	            }
	         }if (datatype =='integer'){	 //整数       
	            if (!isInteger($(this).val())){
	               alert(getCaption(this.id)+'必须为整数!');
		           $(this).focus();
		           isvalid =  false; 
		           return false;	               
	            }
	         }else if (datatype =='date'){	//日期         
	            if (!isDate($(this).val())){
	               alert(getCaption(this.id)+'日期格式不正确(yyyy-mm-dd)!');
		           $(this).focus();
		           isvalid =  false; 
		           return false;	               
	            }
	         } else if (datatype =='email'){	//EMAIL         
	            if (!isEmail($(this).val())){
	               alert(getCaption(this.id)+'格式不正确!');
		           $(this).focus();
		           isvalid =  false; 
		           return false;	               
	            }
	         } else if (datatype =='normal'){	//普通字符         
	            if (!isNormal($(this).val())){
	               alert(getCaption(this.id)+'不能含非法字符!');
		           $(this).focus();
		           isvalid =  false; 
		           return false;	               
	            }
	         }
	                 
	    }
	})
	
	//校验所有的select
	$("#"+formId+" select").each(function(i){
	    var notnull = $(this).attr('notnull');	
	    //var maxlen = $(this).attr('maxlength');
	    var datatype=$(this).attr('datatype');
	    
	    //校验为空的情况
	    if (notnull){
	       if (!$(this).val()){
	           alert(getCaption(this.id)+'不能为空!');
	           $(this).focus();
	           isvalid =  false; 
	           return false;
	       }
	    }	    	    	
	})
	
	
	
	return isvalid;	
}

