var DaguoliPrototype = {
   version: '1.0'
};
/***************************************/
var StringHelper = {
   getLength: function(id) {
       return $('#'+id).val().length;
   },
   checkStrLength: function(id, sNum, eNum) {
       var strLength = StringHelper.getLength(id);
       return (strLength >= sNum && strLength <= eNum) ? true : false;
   },
   clear: function(ids) {
      for(var i = 0; i < ids.length; i++) {
         $('#'+ids[i]).val('');
      }
   },
   equals: function(id1, id2) { return ($('#'+id1).val() == $('#'+id2).val()); }
};
/***************************************/
var RadioHelper = {
    isChecked: function(name) {
        var radioArray = document.getElementsByName(name);
        if(radioArray.length > 0) {
            for(var i = 0; i < radioArray.length; i++) {
                if(radioArray[i].checked == true) {
                    return true;
                }
            }
        }else {
            if(radioArray.checked == true) {
                return true;
            }
        }
        
        return false;
    },
    getValue: function(name) {
        var radioArray = document.getElementsByName(name);
        if(radioArray.length > 0) {
            for(var i = 0; i < radioArray.length; i++) {
                if(radioArray[i].checked == true) {
                   return radioArray[i].value;
                }
            }
        }else {
            if(radioArray.checked == true) {
                return radioArray.value;
            }
        }
        return null;
    }
};
/***************************************/
var CheckboxHelper = {
    getCheckedNum: function(name) {
        var checkboxArray = document.getElementsByName(name);
        var count = 0;
        if(checkboxArray.length > 0) {
            for(var i = 0; i < checkboxArray.length; i++) {
                if(checkboxArray[i].checked == true) {
                    count++;
                }
            }
        }else {
            if(checkboxArray.checked == true) {
                count++;
            }
        }
        return count;
    },
    isChecked: function(name) {
        if(CheckboxHelper.getCheckedNum(name) > 0) {
            return true;
        }else {
            return false;
        }
    },
    getValues: function(name) {
        var returnValue = new Array(CheckboxHelper.getCheckedNum(name));
        var checkboxArray = document.getElementsByName(name);
        
        if(checkboxArray.length > 0) {
            for(var i = 0; i < checkboxArray.length; i++) {
                if(checkboxArray[i].checked == true) {
                    returnValue[i] = checkboxArray[i].value;
                }
            }
        }else {
            if(checkboxArray.checked == true) {
                returnValue[0] = checkboxArray.value;
            }
        }
        return returnValue;
    },
    checkAll: function(name) {
        var obj = document.getElementsByName(name);
        for (var i = 0; i < obj.length; i++){
            obj[i].checked = true;           
        }    
    },
    uncheckAll: function(name) {
        var obj = document.getElementsByName(name);
        for (var i = 0; i < obj.length; i++){
            obj[i].checked = false;           
        }    
    },
    checkAllAndUncheckAllByCheckBox: function(checkObj, name) {
        var obj = document.getElementsByName(name);
        if(checkObj.checked == true) {
            for (var i = 0; i < document.getElementsByName(checkObj.name).length; i++){
                document.getElementsByName(checkObj.name)[i].checked = true;           
            } 
            for (var i = 0; i < obj.length; i++){
                obj[i].checked = true;           
            }   
        }else {
            for (var i = 0; i < document.getElementsByName(checkObj.name).length; i++){
                document.getElementsByName(checkObj.name)[i].checked = false;           
            } 
            for (var i = 0; i < obj.length; i++){
                obj[i].checked = false;           
            } 
        }
    }
};
/***************************************/
var SelectHelper = {
    getSelectObj: function(id) {
        return document.getElementById(id);
    },
    clearSelect: function(id) {
        var selectObj = SelectHelper.getSelectObj(id);
        for(var i = (selectObj.length - 1); i >= 0; i--) {
            selectObj.remove(i);
        }
    },
    createDefaultOption: function(id, value, name, isSelected) {
        // option元素中默认选中的元素值.
        var optionSelectedValue = '';
        var selectObj = SelectHelper.getSelectObj(id);
        var option = document.createElement("option");
        option.value = value;
        option.appendChild(document.createTextNode(name));
        if(isSelected == true) {
            option.selected = true;
            optionSelectedValue = option.value;
        }
        selectObj.appendChild(option);
        return optionSelectedValue;
    },
    createOption: function(id, selectVnArray, selectedValue) {
        // option元素中默认选中的元素值.
        var optionSelectedValue = '';
        var selectObj = SelectHelper.getSelectObj(id);
        for(var i = 0; i < selectVnArray.length; i++) {
            var option = document.createElement("option");
            option.value = selectVnArray[i][0];
            option.appendChild(document.createTextNode(selectVnArray[i][1]));
            
            // 默认在循环第一次的时候得到选中的元素值.
            if(i == 0) {
                optionSelectedValue = option.value;
            }
            // 如果用户提供了默认值,就使用用户的默认值.
            if(selectedValue != '' && option.value == selectedValue) {
		        option.selected = true;
		        optionSelectedValue = option.value;
		    }
			selectObj.appendChild(option);
		}
		return optionSelectedValue;
    }
};

/***************************************/
var JudgeHelper = {
   isNull: function(id) {
      return document.getElementById(id) == null ? true : false;
   },
   isEmptyString: function(id) {
      return $('#'+id).val() == '' ? true : false;
   },
   isNumber : function(id) {
      return (JudgeHelper.isInteger(id) == true) || (JudgeHelper.isDecimal(id) == true) ? true : false;
   },
   isInteger: function(id) {
      return (JudgeHelper.isPositiveInteger(id) == true) || (JudgeHelper.isNegativeInteger(id) == true) ? true : false;
   },
   isPositiveInteger: function(id) {
      return /[+]?\d+/.exec( $('#'+id).val() ) == $('#'+id).val() ? true : false;
   },
   isNegativeInteger: function(id) {
      return /[-]{1}\d+/.exec( $('#'+id).val() ) == $('#'+id).val() ? true : false;
   },
   isDecimal: function(id) {
      return (JudgeHelper.isPositiveDecimal(id) == true) || (JudgeHelper.isNegativeDecimal(id) == true) ? true : false;
   },
   isPositiveDecimal: function(id) {
      return /[+]?\d+[.]{1}\d+/.exec( $('#'+id).val() ) == $('#'+id).val() ? true : false;
   },
   isNegativeDecimal: function(id) {
      return /[-]{1}\d+[.]{1}\d+/.exec( $('#'+id).val() ) == $('#'+id).val() ? true : false;
   },
   isDoubleByte: function(id) {
      return /[^x00-xff]+/.exec( $('#'+id).val() ) == $('#'+id).val() ? true : false;
   },
   isBlankSpace: function(id) {
      return /\s+/.exec( $('#'+id).val() ) == $('#'+id).val() ? true : false;
   },
   isIpAddress: function(id) {
      return /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/.exec( $('#'+id).val() ) == $('#'+id).val() ? true : false;
   },
   isEmail: function(id) {
      return /([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+/.test( $('#'+id).val() );
   },
   isPassword: function(id) {
      return /[a-zA-Z0-9_]{6,12}/.exec( $('#'+id).val() ) == $('#'+id).val() ? true : false;
   },
   isPureNumberAndRadixPoint: function(id) {
       return /\d*[.]?\d{1,2}/.exec( $('#'+id).val() ) == $('#'+id).val() ? true : false;
   },
   isPureNumber: function(id) {
       return /[0-9]+/.exec( $('#'+id).val() ) == $('#'+id).val() ? true : false;
   },
   isEnglish: function(id) {
      return /[a-zA-Z]+/.exec( $('#'+id).val() ) == $('#'+id).val() ? true : false;
   },
   isChinese: function(id) {
      var strValue = $('#'+id).val();
      for(var i = 0; i < strValue.length; i++) {
          if(/[^u4e00-u9fa5]+/.exec( strValue.charAt(i) ) == strValue.charAt(i)) {
              return true;
          }
      }
      return false;
   },
   isNotPureNumberAndEnglish: function(id) {
       return /[^a-zA-Z0-9]+/.exec( $('#'+id).val() ) == $('#'+id).val() ? true : false;
   },
   isEnglish_Number_Underline: function(id) {
      return /[a-zA-Z0-9_]+/.exec( $('#'+id).val() ) == $('#'+id).val() ? true : false;
   }
};
/***************************************/
var DomHelper = {
    getFirstChildNodeValue: function(data, tagName) {
        var obj = data.getElementsByTagName(tagName)[0].firstChild;
        return (obj != null) ? obj.nodeValue : "";
    },
    getFirstChildNodeByTagObj: function(tagObj, elementName) {
        var childNadesObj = tagObj.childNodes;
        
        for(var i = 0; i < childNadesObj.length; i++) {
            var obj = childNadesObj[i];
            if(obj.nodeName == elementName) {
                obj = obj.firstChild;
                return (obj != null) ? obj.nodeValue : "";
            }
        }
        return "";
    }
}
/***************************************/
var ElementHelper = {
    focus: function(id) { $('#'+id).focus(); }
};
