 /* *
  * ============================================================================
  * ZJFDA 表单验证、控制录入数据
  * ============================================================================
  */
 
// 引入utils.js
document.write("<script type=\"text/javascript\" src=\"/manage/script/utils.js\"></script>");

// 验证类
var Validator = function(name)
{
  this.formName = name;
  this.errMsg = new Array();

  /* *
  * 检查用户是否输入了内容
  *
  * @param :  controlId   表单元素的ID
  * @param :  msg         错误提示信息
  */
  this.required = function(controlId, msg)
  {
    var obj = document.forms[this.formName].elements[controlId];
    if (typeof(obj) == "undefined" || Utils.trim(obj.value) == "")
    {
      this.addErrorMsg(msg);
    }
  }
  ;
  
  /* *
  * 检查用户是否输入了内容(FCK编辑器)、需JSP页面中引入/fckeditor/fckeditor.js这个文件
  *
  * @param :  controlId   表单元素的ID
  * @param :  msg         错误提示信息
  */
  this.chkfck = function(controlId, msg)
  {
  	var fck = FCKeditorAPI.GetInstance(controlId); 
    var content = fck.GetXHTML(true); 
    if (content.replace(/ <(?!img|input|object)[^>]*>|\s+/ig, "") == "" || content=="<br />") {
		this.addErrorMsg(msg);
    } 
  }
  ;

  /* *
  * 检查用户输入的是否为合法的邮件地址
  *
  * @param :  controlId   表单元素的ID
  * @param :  msg         错误提示信息
  * @param :  required    是否必须
  */
  this.isEmail = function(controlId, msg, required)
  {
    var obj = document.forms[this.formName].elements[controlId];
    obj.value = Utils.trim(obj.value);

    if ( ! required && obj.value == '')
    {
      return;
    }

    if ( ! Utils.isEmail(obj.value))
    {
      this.addErrorMsg(msg);
    }
  }

  /* *
  * 检查两个表单元素的值是否相等(密码)
  *
  * @param : fstControl   表单元素的ID
  * @param : sndControl   表单元素的ID
  * @param : msg          错误提示信息
  */
  this.eqaul = function(fstControl, sndControl, msg)
  {
    var fstObj = document.forms[this.formName].elements[fstControl];
    var sndObj = document.forms[this.formName].elements[sndControl];

    if (fstObj != null && sndObj != null)
    {   	
      if (Utils.trim(fstObj.value) != '' && Utils.trim(fstObj.value) != Utils.trim(sndObj.value))
      {
        this.addErrorMsg(msg);
      }
    }
  }

  /* *
  * 检查前一个表单元素是否大于后一个表单元素
  *
  * @param : fstControl   表单元素的ID
  * @param : sndControl	  表单元素的ID
  * @param : msg		  错误提示信息
  */
  this.gt = function(fstControl, sndControl, msg)
  {
    var fstObj = document.forms[this.formName].elements[fstControl];
    var sndObj = document.forms[this.formName].elements[sndControl];

    if (fstObj != null && sndObj != null) {
      if (Utils.isNumber(fstObj.value) && Utils.isNumber(sndObj.value)) {
        var v1 = parseFloat(fstObj.value) + 0;
        var v2 = parseFloat(sndObj.value) + 0;
      } else {
        var v1 = fstObj.value;
        var v2 = sndObj.value;
      }

      if (v1 <= v2) this.addErrorMsg(msg);
    }
  }

  /* *
  * 检查输入的内容是否是一个数字
  *
  * @param :  controlId   表单元素的ID
  * @param :  msg         错误提示信息
  * @param :  required    是否必须
  */
  this.isNumber = function(controlId, msg, required)
  {
    var obj = document.forms[this.formName].elements[controlId];
    obj.value = Utils.trim(obj.value);

    if (obj.value == '' && ! required)
    {
      return;
    }
    else
    {
      if ( ! Utils.isNumber(obj.value))
      {
        this.addErrorMsg(msg);
      }
    }
  }

  /* *
  * 检查输入的内容是否是一个整数
  *
  * @param :  controlId   表单元素的ID
  * @param :  msg         错误提示信息
  * @param :  required    是否必须
  */
  this.isInt = function(controlId, msg, required)
  {

    if (document.forms[this.formName].elements[controlId])
    {
      var obj = document.forms[this.formName].elements[controlId];
    }
    else
    {
      return;    
    }

    obj.value = Utils.trim(obj.value);

    if (obj.value == '' && ! required)
    {
      return;
    }
    else
    {
      if ( ! Utils.isInt(obj.value)) this.addErrorMsg(msg);
    }
  }

  /* *
  * 检查输入的内容是否是为空
  *
  * @param :  controlId   表单元素的ID
  * @param :  msg         错误提示信息
  * @param :  required    是否必须
  */
  this.isNullOption = function(controlId, msg)
  {
    var obj = document.forms[this.formName].elements[controlId];

    obj.value = Utils.trim(obj.value);

    if (obj.value > '0' )
    {
      return;
    }
    else
    {
      this.addErrorMsg(msg);
    }
  }

  /* *
  * 检查输入的内容是否是"2006-11-12 12:00:00"格式
  *
  * @param :  controlId   表单元素的ID
  * @param :  msg         错误提示信息
  * @param :  required    是否必须
  */
  this.isTime = function(controlId, msg, required)
  {
    var obj = document.forms[this.formName].elements[controlId];
    obj.value = Utils.trim(obj.value);

    if (obj.value == '' && ! required)
    {
      return;
    }
    else
    {
      if ( ! Utils.isTime(obj.value)) this.addErrorMsg(msg);
    }
  }
  
  /* *
  * 检查前一个表单元素是否小于后一个表单元素(日期判断)
  *
  * @param : controlIdStart   表单元素的ID
  * @param : controlIdEnd	  表单元素的ID
  * @param : msg              错误提示信息
  */
  this.islt = function(controlIdStart, controlIdEnd, msg)
  {
    var start = document.forms[this.formName].elements[controlIdStart];
    var end = document.forms[this.formName].elements[controlIdEnd];
    start.value = Utils.trim(start.value);
    end.value = Utils.trim(end.value);

    if(start.value <= end.value)
    {
      return;
    }
    else
    {
      this.addErrorMsg(msg);
    }
  }

  /* *
  * 检查指定的checkbox是否选定
  *
  * @param :  controlId   表单元素的name
  * @param :  msg         错误提示信息
  */
  this.requiredCheckbox = function(controlId, msg)
  {
    var objects = document.forms[this.formName].elements[controlId];
    var checked = false;

    for (var i = 0; i < objects.length; i ++ )
    {
      if (objects[i].type.toLowerCase() != "checkbox") continue;
      if (objects[i].checked)
      {
        checked = true;
        break;
      }
    }

    if ( ! checked) this.addErrorMsg(msg);
  }
  
    /* *
  * 检查指定的checkbox是否选定
  *
  * @param :  controlId   表单元素的name
  * @param :  msg         错误提示信息
  */
  this.requiredCheckboxxx = function(controlId, msg,num)
  {
    var objects = document.forms[this.formName].elements[controlId];
    var checked = false;
	
	var m = 0;
    for (var i = 0; i < objects.length; i ++ )
    {
      if (objects[i].type.toLowerCase() != "checkbox") continue;
      if (objects[i].checked)
      {
        checked = true;
		m++;
        //break;
      }
    }
	
	if ( ! checked){
		this.addErrorMsg(msg+"-没有选择！");	
	}else{
		 if ( m > num) { 
		 	this.addErrorMsg(msg + "-最多选" + num + "项");
		 }
	}
   
	
  }
  
  /* *
  * 检查指定的radio是否选定
  *
  * @param :  controlId   表单元素的name
  * @param :  msg         错误提示信息
  */
  this.requiredRadio = function(controlId, msg)
  {
    var objects = document.forms[this.formName].elements[controlId];
    var checked = false;

    for (var i = 0; i < objects.length; i ++ )
    {
      if (objects[i].type.toLowerCase() != "radio") continue;
      if (objects[i].checked)
      {
        checked = true;
        break;
      }
    }

    if ( ! checked) this.addErrorMsg(msg);
  }
  
  /* *
   * 检查邮编是否正确
   *
   * @param :  controlId   表单元素的name
   * @param :  msg         错误提示信息(为空)
   * @param :  msgg        错误提示信息（不合法）
   */
   this.isPostalCode = function(controlId, msg,msgg)
   {
	   var obj = document.forms[this.formName].elements[controlId];
	   if (typeof(obj) == "undefined" || Utils.trim(obj.value) == "")
	    {
	      this.addErrorMsg(msg);
	    }else{
	    	var s =Utils.trim(obj.value);
	        var pattern =/^[0-9]{6}$/;
	            if(s!="")
	            {
	                if(!pattern.exec(s))
	                {
	                	this.addErrorMsg(msgg);
	                }
	        }
	    }
   }
   
   /* *
    * 检查电话格式是否正确：手机或固定电话
    *
    * @param :  controlId   表单元素的name
    * @param :  msg         错误提示信息(为空)
    * @param :  msgg        错误提示信息（不合法）
    */
    this.isTel = function(controlId, msg,msgg)
    {
 	   var obj = document.forms[this.formName].elements[controlId];
 	   if (typeof(obj) == "undefined" || Utils.trim(obj.value) == "")
 	    {
 	      this.addErrorMsg(msg);
 	    }else{
 	    	var s =Utils.trim(obj.value);
 	        var pattern =/(^\(\d{3,5}\)\d{6,8}(-\d{2,8})?$)|(^\d+-\d+$)|(^(130|131|135|136|137|138|139)\d{8}$)/g;
 	        var patternMobile = /^1\d{10}$/;  
 	        if(s!="")
 	            {
 	                if(!pattern.exec(s)&&!patternMobile.exec(s))
 	                {
 	                	this.addErrorMsg(msgg);
 	                }
 	        }
 	    }
    }
  
    /* *
     * 检查电话格式是否正确：手机
     *
     * @param :  controlId   表单元素的name
     * @param :  msg         错误提示信息(为空)
     * @param :  msgg        错误提示信息（不合法）
     */
     this.isMobileTel = function(controlId, msg,msgg)
     {
  	   var obj = document.forms[this.formName].elements[controlId];
  	   if (typeof(obj) == "undefined" || Utils.trim(obj.value) == "")
  	    {
  	      this.addErrorMsg(msg);
  	    }else{
  	    	var s =Utils.trim(obj.value);
  	        //var pattern =/(^\(\d{3,5}\)\d{6,8}(-\d{2,8})?$)|(^\d+-\d+$)|(^(130|131|135|136|137|138|139)\d{8}$)/g;
  	        var patternMobile = /^1\d{10}$/;  
  	        if(s!="")
  	            {
  	                if(!patternMobile.exec(s))
  	                {
  	                	this.addErrorMsg(msgg);
  	                }
  	        }
  	    }
     }
     /* *
      * 检查电话格式是否正确：固定电话
      *
      * @param :  controlId   表单元素的name
      * @param :  msg         错误提示信息(为空)
      * @param :  msgg        错误提示信息（不合法）
      */
      this.isFixTel = function(controlId, msg,msgg)
      {
   	   var obj = document.forms[this.formName].elements[controlId];
   	   if (typeof(obj) == "undefined" || Utils.trim(obj.value) == "")
   	    {
   	      this.addErrorMsg(msg);
   	    }else{
   	    	var s =Utils.trim(obj.value);
   	        var pattern =/(^\(\d{3,5}\)\d{6,8}(-\d{2,8})?$)|(^\d+-\d+$)|(^(130|131|135|136|137|138|139)\d{8}$)/g;  	        
   	        if(s!="")
   	            {
   	                if(!pattern.exec(s))
   	                {
   	                	this.addErrorMsg(msgg);
   	                }
   	        }
   	    }
      }

  this.passed = function()
  {
    if (this.errMsg.length > 0)
    {
      var msg = "";
      for (i = 0; i < this.errMsg.length; i ++ )
      {
        msg += "- " + this.errMsg[i] + "\n";
      }

      alert(msg);
      return false;
    }
    else
    {
      return true;
    }
  }

  /* *
  * 增加一个错误信息
  *
  * @param :  str
  */
  this.addErrorMsg = function(str)
  {
    this.errMsg.push(str);
  }
}




