/**
 * OK
 * 输入框校验类
 * 需要载入：document.js, string.js, number.js,
 */
var CheckUtil = {
  /**
   * 检测输入框的值是否为空
   * element     输入框对象或名称
   * alertContext  警告内容
   * 
   */
  isEmpty: function (element, alertContext) {
    if(!element){
      alert(alertContext);
      return true;
    }

    var objInput = (element.constructor==String ) ? Document.getObject(element) : element;

    if (objInput == null) {
      alert(alertContext);
      return true;
    }
    if (StringUtil.isEmpty(objInput.value)) {
      alert(alertContext);
      if (objInput.type != 'hidden') {
        Field.activate(objInput);
      }
      return true;
    }
    else {
      return false;
    }
  },
  /**
   * 用正则表达式将前后空格
   * 用空字符串替代。
   * 
   */
  trim:function(obj) {
    return obj.replace(/(^[\s　]*)|([\s　]*$)/g, "");
        //去掉全角和半角的空格
  },
  /*
  格式化保留小数位数
  * f 要格式的数值
  * size 保留的小数位数
   * 
  */
  formatfloat:function (f, size) {
    var tf = f * Math.pow(10, size);
    tf = Math.round(tf + 0.000000001);
    tf = tf / Math.pow(10, size);
    return tf;
  },
  /**
   * 检测输入框数组中的所有值是否为空
   * elements     输入框对象数组或名称
   * alertContext  警告内容
   * 
   */
  isEmptys: function (elements, alertContext) {
    if(!elements){
      alert(alertContext);
      return true;
    }

    var objInputs = (elements.constructor==String )? Document.getObjects(elements):elements;
    if (objInputs == null) {
      alert(alertContext);
      return true;
    }

    if(!objInputs.length){
      CheckUtil.isEmpty(objInputs); 
    }

    for (var i = 0; i < objInputs.length; i++) {
      if (StringUtil.isEmpty(objInputs[i].value)) {
        alert(alertContext);
        if (objInputs[i].type != 'hidden') {
          Field.activate(objInputs[i]);
        }
        return true;
      }
    }
    return false;
  },


  /**
   * 检测checkbox框是否全部未选中
   * elements     checkbox框对象数组或名称
   * alertContext  警告内容
   * 
   */
  isUnSelected:function (elements, alertContext) {
    if(elements==null) {
      alert(alertContext) ;
      return true;
    }
    var objCheckboxs = (elements.constructor==String )? Document.getObjects(elements):elements;
    if (objCheckboxs == null) {
      alert(alertContext);
      return true;
    }
    if(!objCheckboxs.length){
      if(!objCheckboxs.checked){
        alert(alertContext);
        return true
      }
    } ;

    for (var i = 0; i < objCheckboxs.length; i++) {
      if (objCheckboxs[i].checked) return false;
    }
    alert(alertContext);
    return true;
  },

  /**
   * 检测指定窗口中的指定checkbox框是否全部未选中
   * @param elements checkbox框对象数组或名称
   * @param alertContext 警告内容
   * @param win 窗口
   */
  isUnSelectedChild:function (elements, alertContext, win) {
    var objCheckboxs = (elements.constructor==String )? Document.getObjects(elements, win): elements;
    if (objCheckboxs == null) {
      alert(alertContext);
      return true;
    }
    for (var i = 0; i < objCheckboxs.length; i++) {
      if (objCheckboxs[i].checked) return false;
    }
    alert(alertContext);
    return true;
  },
  /**
   * 检测checkbox框是否全部未选中(有IFrame的情况)
   * checkboxName     checkbox框名称
   * alertContext  警告内容
   */
  isFrameSelected:function (checkboxName, frames, alertContext) {
    var objCheckboxs = window.frames[frames].Document.getObjects(checkboxName);
    if (objCheckboxs == null) {
      alert(alertContext);
      return true;
    }
    for (var i = 0; i < objCheckboxs.length; i++) {
      if (objCheckboxs[i].checked) return false;
    }
    alert(alertContext);
    return true;
  },


  /**
   * 检测输入框的值是否为0
   * element     输入框对象或名称
   * alertContext  警告内容
   * 
   */
  isInputZero: function (element, alertContext) {
    var objInput = (element.constructor==String )? Document.getObject(element):element;
    if (objInput == null) {
      alert(alertContext);
      return true;
    }
    if (NumberUtil.toFloat(objInput.value) == 0) {
      alert(alertContext);
      if (objInput.type != 'hidden') {
        Field.activate(objInput);
      }
      return true;
    }
    else {
      return false;
    }
  },

  /**
   * 检测输入框数组的值是否都为0
   * elements     输入框对象数组或名称
   * alertContext  警告内容
   * 
   */
  isInputsZero: function (elements, alertContext) {
    var objInputs = (elements.constructor==String )? Document.getObjects(elements):elements;
    if (objInputs == null) {
      alert(alertContext);
      return true;
    }
    for (var i = 0; i < objInputs.length; i++) {
      if (NumberUtil.toFloat(objInputs[i].value) == 0) {
        alert(alertContext);
        if (objInputs[i].type != 'hidden') {
          Field.activate(objInputs[i]);
        }
        return true;
      }
    }
    return false;
  },

  /**
   * 检查输入文件的扩展名不是指定的后缀
   * element     输入框对象或名称
   * patterns      文件后缀名匹配模板 如:bmp,jpg,gif
   * alertContext  警告内容
   * 
   */
  isUnFileExt:function (element, patterns, alertContext) {
    var ext = patterns.split(",");
    var fileinput = (element.constructor==String )? Document.getObject(element):element;
    var value = fileinput.value.toUpperCase();
    if (StringUtil.isEmpty(value)) {
      alert("请选择文件");
      Field.activate(fileinput);
      return true;
    }
    if (value.charAt(0) == '.') {
      alert(alertContext);
      Field.activate(fileinput);
      return true;
    }
    for (var i = 0; i < ext.length; i++) {
      var pattern = '.' + StringUtil.trim(ext[i]);
      if (value.length > pattern.length) {
        var postfixname = value.substring((value.length - pattern.length));
        if (postfixname.toUpperCase() == pattern.toUpperCase()) return false;
      }
    }
    alert(alertContext);
    Field.activate(fileinput);
    return true;
  },

  /**
   * 检查输入文件的扩展名不是指定的后缀
   * elements     输入框对象数组或名称
   * patterns      文件后缀名匹配模板 如:bmp,jpg,gif
   * alertContext  警告内容
   * 
   */
  isUnFilesExt:function (elements, patterns, alertContext) {
    var filesinput =(elements.constructor==String )? Document.getObjects(elements):elements;
    var ext = patterns.split(",");
    for (var i = 0; i < filesinput.length; i++) {
      var value = filesinput[i].value.toUpperCase();
      if (StringUtil.isEmpty(value)) {
        alert("请选择文件");
        Field.activate(filesinput[i]);
        return true;
      }
      if (value.charAt(0) == '.') {
        alert(alertContext);
        Field.activate(filesinput[i]);
        return true;
      }
      var bool = true;
      for (var j = 0; j < ext.length; j++) {
        var pattern = '.' + StringUtil.trim(ext[j]);
        if (value.length > pattern.length) {
          var postfixname = value.substring((value.length - pattern.length));
          if (postfixname.toUpperCase() == pattern.toUpperCase()) {
            bool = false;
            break;
          }
        }
      }
      if (bool) {
        alert(alertContext);
        Field.activate(filesinput[i]);
        return true;
      }
    }
    return false;
  },

  /**
   * 调用ajax进行数据校验
   * url:校验动作
   * parameterObject:参数对象 如 {"name":"张三","sex":"男"}
   * disposeFunction:校验处理函数
   * 
   */
  verify:function(url, parameterObject, disposeFunction) {
    var hash = $H(parameterObject);
    var param = hash.toQueryString();
    if (StringUtil.isEmpty(param)) {
      param = ("timeSerial=").concat(new Date().getTime());
    }
    else {
      param = param.concat("&timeSerial=").concat(new Date().getTime());
    }
    var option = {
      method: 'get',
      parameters: param,
      asynchronous:true,
      onComplete: function(request) {
        disposeFunction(request.responseText);
      },
      onFailure:function(request) {
        alert("系统出现错误！");
      }
    }
    var ajax = new Ajax.Request(url, option);
  },

  /**
   * 获得对象所在的表单对象
   * 
   */
  getForm:function (formName) {
    if (formName == null) {
      var evt=EventUtil.getEvent();
      var objEvent = evt.srcElement || evt.target;
      var objParent = objEvent.parentElement;
      while (objParent != null) {
        if (objParent.tagName == "FORM") {
          break;
        }
        objParent = objParent.parentElement;
      }
      if (objParent != null && objParent.tagName == "FORM") {
        return objParent;
      }
      else {
        var e = new Error("没有找到表单对象");
        throw e;
      }
    }
    else {
      var objForm = document.forms[formName];
      if (objForm != null) {
        return objForm;
      }
      else {
        var e = new Error("没有找到表单对象");
        throw e;
      }
    }
  },
  /**
   * 验证表单 判断表单中的输入框值是否为空，通过设置输入框自定义属性 warn判断
   * formName 表单名称
   * 
   */
  verifyEmpty:function(formName) {
    var form = document.forms[formName];
    var length = form.elements.length;
    var element;
    for (var i = 0; i < length; i++) {
      element = form.elements[i];
      if (StringUtil.isEmpty(element.warn)) continue;
      with (element) {
        if (tagName == 'INPUT') {
          if (type == 'checkbox') {
            //不清楚
          }
          else if (type == 'radio') {
            //不清楚
          }
          else if (type == 'file' || type == 'password' || type == 'text' || type == 'hidden') {
            if (CheckUtil.trim(value).blank()) {
              alert(warn);
              if (type != 'hidden') select();
              return true;
            }
          }
        }
        else if (tagName == 'SELECT') {
          if (CheckUtil.trim(value).blank()) {
            alert(warn);
            focus();
            return true;
          }
        }
        else {
          if (CheckUtil.trim(value).blank()) {
            alert(warn);
            select();
            return true;
          }
        }
      }
    }
    return false;
  },
  /**
   * 判断字符串是否在另一个字符串中出现
   * @param bigStr 以","分割的字符串
   * @param lookStr 被查询的字符串
   * @author Clark
   */
  isIn:function(bigStr,lookStr){
    var bigStr_array = bigStr.split(",");
    for(var i = 0 ; i< bigStr_array.length ; i ++){
      if(bigStr_array[i] == lookStr){
        return true;
      }
    }
    return false;
  }
}


