
 //去左右空格
String.prototype.Trim = function()
{
    return this.replace(/[　*]|[ *]/g,"");
}

function verifyForm(aForm) {

    var msg;
    var errors = "";
    var f = aForm;
    var min=null;
    var max=null;
    var regEx=null;
    for(var i = 0; i < f.length; i++) {
        var e = f.elements[i];
       
        if (e.type == "text" || e.type == "hidden" || e.type == "textarea" || e.type == "password") {
            var error = "";
            //首先检查是否必输


            if ((e.getAttribute('required')=="true") && (e.value == null || e.value.Trim() == "" || isBlank(e.value))) {
            	//alert("attribute of required : " + e.name + " " +  e.getAttribute('required'));
            	error = "请输入"+__getLabel(e);
            }
            //是否是数字且在有效范围
            else if (e.getAttribute('numeric') || (e.getAttribute('min') != null) || (e.getAttribute('max') != null)) {
                var v = parseFloat(e.value);
                if (isNaN(e.value)) {
                    error = __getLabel(e) + "只能输入数值型数据";
                }
	        	else if ((e.getAttribute('min') != null && v < e.getAttribute('min')) ||
	                    (e.getAttribute('max') != null && v > e.getAttribute('max'))) {
	                    error = __getLabel(e);
	                    if (e.getAttribute('min') != null)
	                        error += "必须大于" + e.getAttribute('min');
	                    if (e.getAttribute('max') != null && e.getAttribute('min') != null)
	                        error += "并且小于" + e.getAttribute('max');
	                    else if (e.getAttribute('max') != null)
	                        error += "必须小于" + e.getAttribute('max');
	                }
            }
            //是否是由数字和字符组成的字符串，且字符串长度在有效范围内
            else if (e.getAttribute('letternumber') && (e.getAttribute('strMin') != null) && (e.getAttribute('strMax') != null)) {
                 min = e.getAttribute('strMin');
                 max = e.getAttribute('strMax');

                 regEx = eval("/^[0-9A-Za-z]{" + min + "," + max + "}$/");
                 //alert("regEx : " + regEx);
                 //if(!e.value.match(/^[0-9A-Za-z]{6,20}$/))
                 if(!e.value.Trim().match(regEx))
                 {
                 error =  __getLabel(e)+"输入要为"+min+ "~"+ max+"位的数字或字母组成的字符串！";
                 }

           
            }
            //只能输入数字
            else if (e.value != "" && (e.getAttribute('numberonly') && (e.getAttribute('numMin') != null) && (e.getAttribute('numMax') != null))) {
//            	alert("attribute of required : " + e.value);
            		min = e.getAttribute('numMin');
            		max = e.getAttribute('numMax');
            
//                	if (!(/^[0-9]+$/.test(e.value)))
//                		error =  __getLabel(e)+"输入要全为数字！";
                	
                if (min==max){
                	regEx = eval("/^[0-9]{" + max + "}$/");
                	}
                else	
                	regEx = eval("/^[0-9]{" + min + "," + max + "}$/");
                
                if(!e.value.match(regEx))
                {
                if(min == max)	
                	error =  __getLabel(e)+ max +"位输入要全为数字！";
                else 
                	error=__getLabel(e)+"输入要为"+min+ "~"+ max+"位的数字！";
                }

           
           }
          //其它检查
            if (error) {
                 if (e.getAttribute("msg"))
                     errors += e.getAttribute("msg");
                 else
                     errors += error;
                 errors += "\n\n";
            }
        }
    }

    if (!errors) return true;

    alert(errors);
    return false;
}


function __getLabel(e) {
	var labels = document.getElementsByTagName("label");
	for (var i = 0; i < labels.length; i++) {
		if (labels[i].htmlFor == e.id || labels[i].htmlFor == e.name+"Id") return labels[i].innerHTML;
	}
	return e.name;
}

/**
 *	只能输入数字
 */
function numberOnly(e) // onkeypress event
{
    if (!e) e = window.event;
    var key = e.keyCode;
    if (!key) key = e.which;

    if( isNumberChar(String.fromCharCode(key)) )
      return true;
    else {
      //alert("该字段只能输入数字！");
      return false;
    }
}

function numberDotOnly(e) // onkeypress event
{
    if (!e) e = window.event;
    var key = e.keyCode;
    if (!key) key = e.which;

    if( isNumberChar(String.fromCharCode(key)) || String.fromCharCode(key) == '.' )
      return true;
    else {
      //alert("该字段只能输入数字或小数点！");
      return false;
    }
}

function letterNumberOnly(e) // onkeypress event
{
    if (!e) e = window.event;
    var key = e.keyCode;
    if (!key) key = e.which;

    if( isNumberChar(String.fromCharCode(key)) || isLetterChar(String.fromCharCode(key)))
      return true;
    else {
      //alert("该字段只能输入字符或数字！");
      return false;
    }
}

/**
 * 是否为空白字符
 */
function isBlank(s) {
    for(var i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if ((c != ' ') && (c != '\n') && (c != '	')) return false;
    }

    return true;
}



function isNumberChar(ch) {
	return ch >= '0' && ch <= '9';
}

function isLetterChar(ch) {
	return ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z';
}







/*check input value is validate*/
/*add by zhm*/

/**
 *	判断是否是中文字符
 *  参数：
 * 		chr	 需判断的字符
 */
function isHZ(chr)
{
	var chrCode = chr.charCodeAt(0);
	if(parseInt(chrCode) > 255) return true;
	else return false;
}

/**
 *	判断是否某个数值value是否在指定的范围[min，max]之内
 *  参数：
 *		value	需判断的数值
 *		min		最小值
 *		max		最大值
 */
function checkUpAndDown(value,min,max)
{
	if((value>=min)&&(value<=max))
		return true;
	else
		return false;

}


/**
 *	判断小时是否在合理的范围之内，及0到23之间
 */
function checkHour()
{
	var value = this.value;
	var isValid = checkUpAndDown(value,0,23);
	if(!isValid)
	{
		alert("小时必须介于0到23之间！");
		this.focus();
		return;
	}

}

/**
 *	判断分钟是否在合理的范围之内，及0到59之间
 */
function checkMinute()
{
	var value = this.value;
	var isValid = checkUpAndDown(value,0,59);
	if(!isValid)
	{
		alert("分钟必须介于0到59之间！");
		this.focus();
		return;
	}

}


function checkEmailAddr(EmailAddr){
	var addr = EmailAddr.value;
	//alert("addr : " + addr);
	
	if (addr == null || addr == "")   return;
	
	var error = "";

	if(!/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(addr))
		{
    	error =" Email地址不正确！";
    		}
    if (error != "") {
    	alert(error);
    	EmailAddr.select();
    	EmailAddr.focus();	
        }

	}

function checkTelNum(TelNum){
	var Tel = TelNum.value;
	//alert("Tel : " + Tel);
	
	if (Tel == null || Tel == "")   return;
	
	var error = "";
	
		if(!/^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$/.test(Tel))
		
		{
    	error =" 电话号码不正确！正确格式为区号-电话号码 或电话号码！";
    		}
    if (error != "") {
    	alert(error);
    	TelNum.select();
    	TelNum.focus();	
        }

	}



function notHZ(input)/*输入框不能输入汉字*/
{
  var chr=trim(this.value);
  var chrCode
  for(var i=0;i<chr.length;i++)
     {
	   chrCode = chr.charCodeAt(i);
	   if(parseInt(chrCode) > 255)
	     {
		   alert("不能有汉字");
		   //this.value="";
		   this.focus();
		   this.select();
		   break;
		 }
	 }
}

function notCNFont(input)/*输入框不能输入汉字*/
{
  var chr=trim(input.value);
  var chrCode
  for(var i=0;i<chr.length;i++)
     {
	   chrCode = chr.charCodeAt(i);
	   if(parseInt(chrCode) > 255)
	     {
		   alert("不能有汉字");
		   //this.value="";
		   input.focus();
		   input.select();
		   break;
		 }
	 }

}

/*该函数的作用是截取小数，如果输入字段的小数位数大于要求的位数，则将其从要求的位数处截断，不足的话补零 */
function cutDecimal(input,maxlength,length)
{
   var obj=input;
   var val=trim(obj.value);
   var indexe1=val.indexOf("e");
   var indexE2=val.indexOf("E");
   if((indexe1!=-1)||(indexE2!=-1))
	{

        }
   else
	{
	   var index1=val.indexOf(".");
	   var maxLength=maxlength;
	   var needLength=length;
	   if(val=="")
	   obj.value="";
	   else
	   {
		if(index1==-1)//输入如果是整数，先判断整数部分的位数是不是符合数据库中要求的位数，如果大于则提示并将该输入框清空，否则将小数部分补零.
		{
			if(val.length>(maxLength-needLength))
			{
				//alert("整数部分不能大于"+(maxLength-needLength)+"位");
				obj.value="0";
				obj.focus();
			 }
			/*else
			{
				obj.value=val+".";
				for(var i=0;i<needLength;i++)
				obj.value=obj.value+"0";
			}*/
		 }
		else
		 {
			var decimal=val.substring(index1+1,val.length);
			 if(decimal.length>needLength)//如果输入字段的小数位数大于要求的位数，则将其从要求的位数处截断。
			  {
				//alert("小数部分不能大于"+needLength+"位");
				obj.value=val.substring(0,index1)+"."+val.substring(index1+1,index1+needLength+1);
			 }
			 if(decimal.length<needLength)//小于则补零。
			  {
				 if(val.substring(0,index1).length>(maxLength-needLength))//先判断整数部分的位数是不是符合数据库中要求的位数，如果大于则提示并将该输入框清空，否则将小数部分补零
				 {
					//alert("整数部分不能大于"+(maxLength-needLength)+"位");
					obj.value="0";
					obj.focus();

				}
				/* else
				 {
					 obj.value=val;
					 for(var j=0;j<needLength-decimal.length;j++)
					 {
						 obj.value=obj.value+"0";
					}
				 }*/
			  }
		 }
	  }
   }

}
/**
 *	只能输入浮点数
 */
function floatOnly()	// onkeypress event
{
  var obj = this;
  var key = window.event.keyCode;
  var val = trim( obj.value ) ;

  if( key > 47 && key < 58 )
  {
    window.event.returnValue = true;
	return ;
  }
  if( key == 46 )
  {
    for(var i=0; i<val.length; i++)
	{
	  if( val.charAt(i) == "." ) break ;
	}
    if( i < val.length ) window.event.returnValue = false ;
    else window.event.returnValue = true ;
	return ;
  }
  window.event.returnValue = false ;
  return ;
}

/**
 *	只能输入百分数
 */
function percentOnly()
{
	var value = parseFloat(this.value);
	if(value < 0 || value > 100)
	{
		alert("必须在 0 到 100 之间!");
		this.focus();
		this.select();
	}
}

/**
 *	构造Field对象
 *	参数：
 *		name			输入框的字段名，该字段对应INPUT框的name，
 *						如果无法对应，将提示“No element ...”的错误
 *		necessary		指定该INPUT框是否为必输字段，true为必输，false则表示可输可不输
 *		description		字段的描述文字，建议直接采用输入框的名称
 *		onKeyPressFun	用户按下键（得到焦点）时需进行的检查，例如：只能输入数字
 *		onBlurFun		用户离开输入框（失去焦点）时需进行的检查，例如：判断SIM卡的有效性
 */
function Field(name, necessary, description, onKeyPressFun, onBlurFun)
{
	this.name = name;
	this.necessary = necessary;
	this.description = description;
	this.onkeypress = onKeyPressFun;
	this.onblur = onBlurFun;
}


function getHtmlElementIC(frm, field)
{
	var element = frm.elements[field.name];
	if(element == null)
	{
		//alert("No element\n" + "named\t" + field.name + "\nDescription\t" + field.description);
		return null;
	}

	if(element.length==null){
		var ea=new Array();
		ea[0]=element;
		element=ea;
	}

//	alert(element.length);
	//alert(element.value);
	return element;
}


/**
 *	捆绑INPUT框控制
 */
function attachHandler(frm, fields)
{
	var i = 0;
	var count = fields.length;
	var element, field;
	for(i=0; i<count; i++)
	{
		field = fields[i];
		element = getHtmlElementIC(frm, field);
		if(element != null)
		{

			for(var j=0;j<element.length;j++)

			{
				element[j].onkeypress = field.onkeypress;
				element[j].onblur = field.onblur;
			}
		}
	}
}

/**************************************************************************
名称：	isDateStr(obj)
功能：	判断是否是日期格式 "YYYMMDD"
参数：	InputField------入参;必输；对象；指定的字段对象
Author:	Asong
LMDate:	2003-09-08
**************************************************************************/
function isDateStr(obj)
{

	var srcStr = new String(obj.value);
	if(srcStr=="")return;
	var srcYear = srcStr.substring(0,4);
	var srcMonth = srcStr.substring(4,6);
	var srcDate = srcStr.substring(6,8);
	var strDate1=srcMonth+"-"+srcDate+"-"+srcYear;
	var date1=new Date(strDate1);

	var tagYear = date1.getYear();
	if(tagYear<100)tagYear = tagYear+1900;
	tagYear = new String(tagYear);
	var tagMonth = new String(parseInt(date1.getMonth(),10)+1);
	var tagDate = new String(date1.getDate());
	if(tagMonth.length==1)tagMonth="0"+ tagMonth;
	if(tagDate.length==1)tagDate="0"+ tagDate;
	var tagStr = tagYear+""+tagMonth+""+tagDate;
	if(srcStr!=tagStr){
		alert("日期格式有误,请修改!");
		return;
		obj.focus();
		obj.select();
	}
}


/**
 *	检查所设定的INPUT框控制
 *  参数：
 *		frm		form的名字
 *		fields	form中INPUT输入框的name
 *	返回值：
 *		如果所有的INPUT框都符合要求，则返回true，否则，提示错误，并返回false。
 */
function checkNecessary(frm, fields)
{
    //alert("enter checkNddddddecessary")
	var missedFlds = "";
	var i = 0;
	var count = fields.length;
	var element, field;
	var value, necessary, description;
	for(i=0; i<count; i++)
	{
		field = fields[i];
		element = getHtmlElementIC(frm, field);
		if(element != null)
		{
			for(var j=0;j<element.length;j++){
				value = trim(element[j].value);
				element[j].value = value;
				//alert(field.description + "\n__" + element.value + "__");
				necessary = field.necessary;
				description = field.description;
				if(necessary && value.length < 1)
				{
					if(missedFlds.indexOf(description) == -1)
						missedFlds += description + "@@";
				}
			}
		}
		var str = /@@/i;
		missedFlds = missedFlds.replace(str,"\n");	//end------modify

	}
	if(trim(missedFlds).length > 0)
	{
		missedFlds = "以下字段必须输入：\n" + missedFlds;
		alert(missedFlds);
		return false;
	}
	return true;
}

/**
 *	检查SQL注入
 *  参数：
 *		str:需要检查的字符
 *		
 *	
 *		
 */

function checkuseravoid(stro){ 
var str = stro.value
var inj_str="‘|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare|;|or|-|+|<|>|script|html|css|&|,"; 
var sarray=new Array(); 
sarray=inj_str.split('|'); 
	for (var i=0 ;i <sarray.length ;i++ ) { 
		if (str.indexOf(sarray[i])>=0) {
		  alert("不要输入非法字符");
		  stro.value = "";
		}
	}
}

