// 表单验证通用组件
/***检查表单所有元素***/
function checkForm(formName)
{
    var oForm=document.all(formName);
 var eles = oForm.elements;
    //遍历所有表元素
 for(var i=0;i<eles.length;i++)
    {
        //是否需要验证
        var sType=eles[i].valueType;
  if(sType)
        {
   if(eles[i].mustInput!=null && eles[i].mustInput=="true")
   {
    if(trim(eles[i].value)=="")
    {
     if(eles[i].objName!=null)
     {
      alert(eles[i].objName+"不可以为空");
     }
     else
     {
      alert("该文本框为必输字段");
     }
     eles[i].focus();     
     event.returnValue=false;     
     return false;   
    }
   }  
   switch(sType)
   {
                //整数
    case "int":
     if(!validInt(eles[i]))
     {
      event.returnValue=false;
      return false;
     }
     break;
    //小数
    case "float":
     if(!validFloat(eles[i]))
     { 
      event.returnValue=false;
      return false;
     }
     break;
    //字符串
    case "string":
     if(!validString(eles[i]))
     {
      event.returnValue=false;
      return false;
     }
     break;
    //日期
    case "date":
     if(!validDate(eles[i]))
     {
      event.returnValue=false;
      return false;
     }
     break;
    //邮件
    case "email":
     if(!validEmail(eles[i]))
     {
      event.returnValue=false;
      return false;
     }
     break;
    //单选按钮
    case "radio":
     if(!validRadio(eles[i]))
     {
      event.returnValue=false;
      return false;
     }
     break;
    //复选按钮
    case "checkbox":
     if(!validBox(eles[i]))
     {
      event.returnValue=false;
      return false;
     }
     break;
    //下拉列表框
    case "select":
     if(!validSelect(eles[i]))
     {
      event.returnValue=false;
      return false;
     }
     break;
    //列表框
    case "list":
     if(!validList(eles[i]))
     {
      event.returnValue=false;
      return false;
     }
     break;
            }
        }
    }
 event.returnValue=true;
 return true;
}
/***检查是否为数字***/
function checkNumber()
{
 var ele=event.srcElement;
 if(ele.valueType!=null)
 {
  if(ele.mustInput!=null && ele.mustInput=="true")
  {
   if(trim(ele.value)=="")
   {
    if(ele.objName!=null)
    {
     alert(ele.objName+"不可以为空");
    }
    else
    {
     alert("该文本框为必输字段");
    }
    ele.focus();     
    return false;   
   }
  } 
  if(ele.valueType=="int")
   checkInt(ele);
  else if(ele.valueType=="float")
   checkFloat(ele);
  else
   ;
 }
 return true;
}


/***检查是否为整数***/
function checkInt(ele)
{
 if(!isInt(ele.value))
 {
  alert("请输入有效整数");
  ele.focus();
  return false;
 }
 else
 {
  if(ele.maxInput!=null && !isNaN(ele.maxInput))
   if(parseInt(ele.maxInput)<parseInt(ele.value))
   {
    alert("您输入的"+ convertNullToSpace(ele.objName)+"值应该小于"+ele.maxInput);        
    ele.focus();
    return false;
   }      
  if(ele.minInput!=null && !isNaN(ele.minInput))
   if(parseInt(ele.minInput)>parseInt(ele.value))
   {
    alert("您输入的"+ convertNullToSpace(ele.objName)+"值应该大于"+ele.minInput);
    ele.focus();
    return false;
   }   
 }
 return true;
}

/***检查是否为小数***/
function checkFloat(ele)
{
    if(isNaN(ele.value))
    {
  alert("请输入有效数字");
  ele.focus();
  return false;
    }
 else
 {
        if(ele.decimalLen!=null && !checkDecimal(ele.value,ele.decimalLen))
     {
   alert("您输入的"+convertNullToSpace(ele.objName)+"值小数位最多为"+ele.decimalLen);
   ele.focus();     
   return false;
        } 
  if(ele.maxInput!=null && !isNaN(ele.maxInput))
   if(parseInt(ele.maxInput)<parseInt(ele.value))
   {
    alert("您输入的"+ convertNullToSpace(ele.objName)+"值应该小于"+ele.maxInput);          
    ele.focus();
    return false;
   }      
  if(ele.minInput!=null && !isNaN(ele.minInput))
   if(parseInt(ele.minInput)>parseInt(ele.value))
   {
    alert("您输入的"+ convertNullToSpace(ele.objName)+"值应该大于"+ele.minInput);
    ele.focus();
    return false;
   }   
 }
 return true;
}

/***检查是否为字符串***/
function checkString()
{
 var ele=event.srcElement;
 if(ele.valueType!=null)
 {
  if(ele.mustInput!=null && ele.mustInput=="true")
  {
   if(trim(ele.value)=="")
   {
    if(ele.objName!=null)
    {
     alert(ele.objName+"不可以为空");
    }
    else
    {
     alert("该文本框为必输字段");
    }
    ele.focus();     
    return false;   
   }
  } 
  if(ele.stringLen!=null && !isNaN(ele.stringLen))
  {
   var value=new String(ele.value);
   if(value.length>parseInt(ele.stringLen))
   {
    alert("您输入的"+convertNullToSpace(ele.objName)+"最大长度为"+ele.stringLen);
    ele.focus();     
    return false;
   }
  }
 }
 return true;
}
/***检查是否为日期格式***/
function checkDate()
{
 var ele=event.srcElement;
 if(ele.valueType!=null)
 {
  if(ele.mustInput!=null && ele.mustInput=="true")
  {
   if(trim(ele.value)=="")
   {
    if(ele.objName!=null)
    {
     alert(ele.objName+"不可以为空");
    }
    else
    {
     alert("该文本框为必输字段");
    }
    ele.focus();     
    return false;   
   }
  } 
  if(!isDate(ele.value))
  {
   alert("请输入有效日期(yyyy-mm-dd)");
   ele.focus();
   return false;
  }
 }
 return true;
}

/***检查是否为电子邮箱***/
function checkEmail()
{
 var ele=event.srcElement;
 if(ele.valueType!=null)
 {
  if(ele.mustInput!=null && ele.mustInput=="true")
  {
   if(trim(ele.value)=="")
   {
    if(ele.objName!=null)
    {
     alert(ele.objName+"不可以为空");
    }
    else
    {
     alert("该文本框为必输字段");
    }
    ele.focus();     
    return false;   
   }
  } 
  if(!isEmail(ele.value))
  {
   alert("请输入有效邮箱");
   ele.focus();
   return false;
  }
 }
 return true;
}
/***验证是否为整数***/
function validInt(ele)
{
 if(!isInt(ele.value))
 {
  alert("请输入有效整数");
  ele.focus();
  return false;
 }
 else
 {
  if(ele.maxInput!=null && !isNaN(ele.maxInput))
   if(parseInt(ele.maxInput)<parseInt(ele.value))
   {
    alert("您输入的"+ convertNullToSpace(ele.objName)+"值应该小于"+ele.maxInput);        
    ele.focus();
    return false;
   }      
  if(ele.minInput!=null && !isNaN(ele.minInput))
   if(parseInt(ele.minInput)>parseInt(ele.value))
   {
    alert("您输入的"+ convertNullToSpace(ele.objName)+"值应该大于"+ele.minInput);
    ele.focus();
    return false;
   }   
 }
 return true;
}

/***验证是否为小数***/
function validFloat(ele)
{
    if(isNaN(ele.value))
    {
  alert("请输入有效数字");
  ele.focus();
  return false;
    }
 else
 {
        if(ele.decimalLen!=null && !checkDecimal(ele.value,ele.decimalLen))
     {
   alert("您输入的"+convertNullToSpace(ele.objName)+"值小数位最多为"+ele.decimalLen);
   ele.focus();     
   return false;
        } 
  if(ele.maxInput!=null && !isNaN(ele.maxInput))
   if(parseInt(ele.maxInput)<parseInt(ele.value))
   {
    alert("您输入的"+ convertNullToSpace(ele.objName)+"值应该小于"+ele.maxInput);          
    ele.focus();
    return false;
   }      
  if(ele.minInput!=null && !isNaN(ele.minInput))
   if(parseInt(ele.minInput)>parseInt(ele.value))
   {
    alert("您输入的"+ convertNullToSpace(ele.objName)+"值应该大于"+ele.minInput);
    ele.focus();
    return false;
   }   
 }
 return true;
}

/***验证是否为字符串***/
function validString(ele)
{
 if(ele.stringLen!=null && !isNaN(ele.stringLen))
 {
  var value=new String(ele.value);
  if(value.length>parseInt(ele.stringLen))
  {
   alert("您输入的"+convertNullToSpace(ele.objName)+"最大长度为"+ele.stringLen);
   ele.focus();     
   return false;
  }
 }
 return true;
}
/***验证是否为日期格式***/
function validDate(ele)
{
 if(!isDate(ele.value)&&ele.value!="")
 {
  alert("请输入有效日期(yyyy-mm-dd)");
  ele.focus();
  return false;
    }
 return true;
}

/***验证是否为电子邮箱***/
function validEmail(ele)
{
 if(!isEmail(ele.value))
 {
  alert("请输入有效邮箱");
  ele.focus();
  return false;
    }
 return true;
}
/***验证单选按钮是否需要选择***/
function validRadio(ele)
{
 //var rads = document.getElementsByName(ele.name);
    eval("var rads="+name+"."+ele.name);
 var selectCount=0;
 for(var i=0;i<rads.length;i++)
    {
  if(rads[i].checked)
        {
   selectCount++;
        }
    }
 
 if(ele.mustSelect!=null && ele.mustSelect)
 {
  if(selectCount==0)
  {
   alert("请选择"+convertNullToSpace(ele.objName));
   ele.focus();     
   return false;
  }
 }
 return true;
}
/***验证复选按钮是否需要选择***/
function validBox(ele)
{
 //var rads = document.getElementsByName(ele.name);
    eval("var chks="+name+"."+ele.name);
 var selectCount=0;
 for(var i=0;i<chks.length;i++)
    {
  if(chks[i].checked)
        {
   selectCount++;
        }
    }
 if(ele.minSelect!=null && !isNaN(ele.minSelect))
 {
  if(selectCount<parseInt(ele.minSelect))
  {
   alert(convertNullToSpace(ele.objName)+"至少选择"+ele.minSelect+"项");
   ele.focus();     
   return false;
  }
 }
 if(ele.maxSelect!=null && !isNaN(ele.maxSelect))
 {
  if(selectCount>parseInt(ele.maxSelect))
  {
   alert(convertNullToSpace(ele.objName)+"至多选择"+ele.maxSelect+"项");
   ele.focus();     
   return false;
  }
 }
 return true;
}
/***验证下拉列表框是否需要选择***/
function validSelect(ele)
{
 //var rads = document.getElementsByName(ele.name);
 if(ele.mustSelect!=null && ele.mustSelect)
 {
  if(ele.selectedIndex==0)
  {
   alert("请选择"+convertNullToSpace(ele.objName));
   ele.focus();     
   return false;
  }
 }
 return true;
}
/***验证列表框的选择项数***/
function validList(ele)
{
 //var rads = document.getElementsByName(ele.name);
    var selectCount=0;
 for(var i=0;i<ele.options.length;i++)
    {
        if(ele.options[i].selected)
        {
            selectCount++;
        }
    }
 alert(selectCount);
 if(ele.minSelect!=null && !isNaN(ele.minSelect))
 {
  if(selectCount<parseInt(ele.minSelect))
  {
   alert(convertNullToSpace(ele.objName)+"至少选择"+ele.minSelect+"项");
   ele.focus();     
   return false;
  }
 }
 if(ele.maxSelect!=null && !isNaN(ele.maxSelect))
 {
  if(selectCount>parseInt(ele.maxSelect))
  {
   alert(convertNullToSpace(ele.objName)+"至多选择"+ele.maxSelect+"项");
   ele.focus();     
   return false;
  }
 }
 return true;
}
/***判断是否为整数***/
function isInt(s)
{
 var patrn=/^[-,+]{0,1}[0-9]{0,}$/;
 if (!patrn.exec(s))
   return false;
 return true;
}
/***判断是否为数字***/
function isNumber(s)
{
 var patrn=/^[-,+]{0,1}[0-9]{0,}[.]{0,1}[0-9]{0,}$/;
 if (!patrn.exec(s))
   return false;
 return true;
}
/***判断是否为日期***/
function isDate(str)
{
 var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/); 
 if(r==null)
 {
  return false;
 } 
 var d= new Date(r[1], r[3]-1, r[4]); 
 if(!(d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]))
 {  
  return false;
 }
 return true;
}
/***判断是否为邮箱***/
function isEmail(str)
{
 if(str.match(/[\w-]+@{1}[\w-]+\.{1}\w{2,4}(\.{0,1}\w{2}){0,1}/ig)!=str)
  return false;
 else
  return true;
}
/***将NULL转化为空格，用于显示对象名称***/
function convertNullToSpace(paramValue)
{
  if(paramValue==null)
    return "";
  else 
    return paramValue;
}
/***检查小数位数***/
function checkDecimal(num,decimalLen)
{
  var len = decimalLen*1+1;
  if(num.indexOf('.')>0)
  {
    num=num.substr(num.indexOf('.')+1,num.length-1);  
    if ((num.length)<len)
 {
      return true;
    }
 else
 {
      return false;
    }
  }
  return true;
}
/***去除空格***/
function trim(str)
{
 if (str.length > 0) 
 {
  while ((str.substring(0,1) == " ") && (str.length > 0)) 
  {
   str = str.substring(1,str.length);
  }
  while (str.substring(str.length-1,str.length) == " ") 
  {
   str = str.substring(0,str.length-1);
  }
 }
 return str;
}


