var browserVersion = 0 //other
if (document.all) browserVersion = 1 //IE4
else if (document.layers) browserVersion = 2 //NS4

/**
 * 去除头尾空格，如str为null或全为空格则返回""（空字串）
 * @param str
 * @return 经处理后的字符串
 */
function trim(str) {
    if(str==null || str=="") return "" ;
    while(str.charAt(0) == " ") {
        str = str.substring(1 ,str.length) ;
    }
    var to = str.length ;
    while(str.charAt(to-1) == " ") to-- ;
    return str.substring(0 ,to) ;
}

/**
 * 取表单对象formObj中，命名为checkName的单选框的值
 * @return 值/NULL没有被选中的单选框
 */
function getRadioValue(formObj ,checkName) {
    if(formObj == null) return false ;
    len = formObj.elements.length ;
    for(i=0 ;i<len ;i++) {
        var e = formObj.elements[i] ;
        if(e.type=="radio" && e.name==checkName
            && e.checked==true && e.disabled==false) {
               return e.value ;
        }
    }
    return null ;
}

/**
 * 检查表单对象formObj中，所有命为checkName的复选框是否至少有一个被选中。
 * @return true(至少有一个被选中)/false(没有一个被选中)
 */
function boxCheck(formObj ,checkName) {
    if(formObj == null) return false ;
    len = formObj.elements.length ;
    for(i=0 ;i<len ;i++) {
        var e = formObj.elements[i] ;
        if(e.type=="checkbox" && e.name==checkName
            && e.checked==true && e.disabled==false) {
               return true ;
        }
    }
    return false ;
}

/**
 * 设置表单对象formObj中，所有名为checkName的复选框的"被选中"属性：
 * 如checkValue=true则所有复选框均被选中，否则均不被选中。
 */
function setBoxChecked(formObj ,checkName ,checkValue) {
    if(formObj == null) return ;
    len = formObj.elements.length ;
    for(i=0 ;i<len ;i++) {
        var e = formObj.elements[i] ;
        if(e.type=="checkbox" && e.name==checkName && e.disabled==false) {
            e.checked = checkValue ;
        }
    }
}

/**
 * 设置表单对象formObj中，所有名为checkName的复选框的"被选中"属性：
 * 如checkValue=true则所有复选框均被选中，否则均不被选中。
 */
function collectBoxValue(formObj ,checkName ,splitChar) {
    if(splitChar == null) splitChar = "|" ;
    if(formObj == null) return ;
    len = formObj.elements.length ;
    var boxValue = "" ;
    for(i=0 ;i<len ;i++) {
        var e = formObj.elements[i] ;
        if(e.type=="checkbox" && e.name==checkName && e.disabled==false && e.checked) {
            boxValue += trim(e.value) + splitChar ;
        }
    }
    return boxValue ;
}

/**
 * 检查选择列表selectObj的当前被选项，其值是否非空。
 * @return true(值非空) /false(值为空)
 */
function selectCheck(selectObj) {
    if(selectObj==null || selectObj.selectedIndex == -1) return false ;
    var selectedItem = selectObj.options[selectObj.selectedIndex] ;
    if(trim(selectedItem.value) == "") return false ;
    return true ;
}


/**
 * 设置SELECT对象的默认选中项
 * selectedValue:被选中值,|号分隔
 * splitChar 分隔符
 * 返回：设置选中的项数
 */
function setSelectChecked(selectObj ,selectedValue ,splitChar) {
    if(selectObj==null||selectedValue==null||trim(selectedValue)=="") return 0 ;
    var selectedCount = 0 ;
    var len = selectObj.options.length ;
    for(i=0 ;i<len ;i++) {
        var item = selectObj.options[i] ;
        var itemValue = trim(item.value) ;
        if(itemValue!="" && selectedValue.indexOf(itemValue+splitChar)!=-1) {
            item.selected = true ;
            selectedCount++ ;
        }
    }
    return selectedCount ;
}

/**
 * 检查EMAIL地址是否合法
 * @return
 */
function checkEmail(inputAddr) {
    var emailPattern = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/ ;
    return emailPattern.test(inputAddr) ;
}

/**
 * 移动srcSelObj多选下拉框的被选项到decSelObj中，同时移去srcSelObj的该被选项
 * @return
 */
function moveSelOption(srcSelObj ,decSelObj ,allFlag) {
  for(i=0 ;i<srcSelObj.options.length ;) {
      if(srcSelObj.options[i].selected || allFlag) {
           var node = document.createElement("option"); // 产生新的<option>
           node.text=srcSelObj.options[i].text;         // 给新<option>赋值
           node.value=srcSelObj.options[i].value;       // 给新<option>赋值
           decSelObj.add(node);                         // 加入给新<option>
           srcSelObj.options.remove(i);                 // 移动旧<option>
      } else {
          i++ ;
      }
  }
}

/**
 * 检查字符串str是否全为数字组成[0-9]
 * @return true /false
 */
function isNumber(str) {
    var dPattern = /^\d+$/ ;
    return dPattern.test(str) ;
}

/**
 * 检查字符串str是否全为浮点数字组成
 * @return true /false
 */
function isFloatNumber(str) {
    var dPattern = /(^\d+$)|(^\d+\.\d{0,2}$)|(^d+\.?$)/ ;
    return dPattern.test(str) ;
}

/**
 * 在键盘事件被触发时调用此函数，判断如按下“回车”键则调用command。
 */
function keySubmit(command) {
    var mkeyCode = event.keyCode ;
    if(mkeyCode == 13) {
        eval(command) ;
        event.keyCode = 0 ;
    }
}

/**
 * 在键盘事件被触发时调用此函数，如输入为数字则接受，否则忽略此输入。
 */
function acceptDigit() {
    var kcode = event.keyCode ;
    if(kcode<48 || kcode>57) return false;
    else return true ;
}

/**
 * 自动格式化输入框为日期格式：yyyy-MM-dd
 * 以onkeyup事件调用。
 */
function formatDate(inpObj) {
    var mkeyCode = event.keyCode ;
    var str = trim(inpObj.value) ;
    var len = str.length ;
    if((mkeyCode>=48 && mkeyCode<=57) || mkeyCode>=96 && mkeyCode<=105) {
        if(len==4 || len==7) {
        	  inpObj.value = str + '-' ;
        }
    } else {
    	inpObj.value = str.substring(0 ,len-1) ;
    	event.keyCode = 0 ;
    }
}

/**
 * 自动格式化输入框为时时：分分格式
 * 以onkeyup事件调用。
 */
function formatTime(inpObj) {
    var str = trim(inpObj.value) ;
    if(str == "") return ;
    var len = str.length ;
    var mPattern = new RegExp("(^((2[0-3])|([0-1][0-9])):?([0-5][0-9])$)") ;
    if(! mPattern.test(str)) {
    	  alert("对不起，您输入的时间格式不正确！") ;
    	  inpObj.select() ;
    } else {
    	  if(str.charAt(2) != ':') {
    	  	  inpObj.value = str.substring(0 ,2) + ":" + str.substring(2 ,len) ;
    	  }
    }
}

/**
 * 检查字符串str是否为合法的手机号码:以13/15开头，后跟9位数字.
 * @return true /false
 */
function isMobileNum(str) {
    var mPattern = /^1[3,5]\d{9}$/ ;
    return mPattern.test(str) ;
}

/**
 * 判断字符串是否含有特殊字符,如含有则返回true
 */
function hasForbidChar(str) {
    var mPattern = /[*'~`^"%]/ ;
    return mPattern.test(str) ;
}

/**
 * 统计字符串占用的长度，中文字符每个占2，英文占1
 * @return
 */
function getLength(varStr) {
    var counter = 0;
    for (i=0; i<varStr.length; i++) {
        if (varStr.charCodeAt(i) > 127) {
            counter+=2;
        } else {
            counter++;
        }
    }
    return counter;
}

/**
 * 文本复制，把obj的所有文本复制到剪贴板
 * obj:一个含文本的对象。
 * @return
 */
function copyText(obj) {
    var rng = document.body.createTextRange();
    rng.moveToElementText(obj);
    rng.scrollIntoView();
    rng.select();
    rng.execCommand("Copy");
    rng.collapse(false);
}

/**
 * 设置formObj表单中，名为boxName的checkbox的选择状态。
 * @return
 */
function setAll(formObj ,ctlButton ,boxName) {
     var setButton = trim(ctlButton.innerHTML) ;
     if(setButton == "全选") {
         setBoxChecked(formObj ,boxName ,true) ;
         ctlButton.innerHTML = "清空" ;
     } else {
         setBoxChecked(formObj ,boxName ,false) ;
         ctlButton.innerHTML = "全选" ;
     }
}

/**
 * 实现字串替换
 * @return
 */
function replaceAll(src ,str ,placeStr) {
    if(src==null || str==null || placeStr==null) return src ;
    var retStr = "" ;
    var to = 0 ;
    var from = src.indexOf(str ,to);                    // 找最开始的<script>showTd位置
    while(from != -1) {                                 // 可以找到符合的
        retStr += src.substring(to ,from) + placeStr ;
        to = from + str.length ;                        // 下一个开始
        from = src.indexOf(str ,to);                    // 再找另一个满足的
    }
    retStr += src.substring(to) ;
    return retStr ;
}

function msover() {
   event.srcElement.style.backgroundColor = "#FFF30C";
}
function msout() {
    event.srcElement.style.backgroundColor = "#ECE9E9";
}
// 错误处理程序，忽略任何错误
function ignoreError() {
    alert("提示：页面发现JAVASCRIPT错误，请擦新页面重试。\r\n如仍有问题，请与开发人员联系...") ;
    return true;
}
//window.onerror = ignoreError;

/*** 设置域是否可见 ***/
function setVisiable(divName ,visiFlag) {
    var divObj = document.getElementById(divName) ;
    if(divObj == null) return ;
    if(visiFlag == true) {    // 设为可见
        if (browserVersion == 1) {
            divObj.style.display = "block" ;
        } else {
            divObj.visibility = "show" ;
        }
    } else {
        if (browserVersion == 1) {
            divObj.style.display = "none" ;
        } else {
            divObj.visibility = "hiden" ;
        }
    }
}

/**
 * 判断是否有效的扩展名opt，以|号分隔
 */
function isFileExt(url, opt){
    var sTemp;
    var b=false;
    var s=opt.toUpperCase().split("|");
    for (var i=0;i<s.length ;i++ ){
        sTemp=url.substr(url.length-s[i].length-1);
        sTemp=sTemp.toUpperCase();
        s[i]="."+s[i];
        if (s[i]==sTemp){
            b=true;
            break;
        }
    }
    return b;
}

/**
 * 字符串替换
 * @param str　源字符串
 * @param patternStr 置换规则，字符串
 * @param oldStr 置换串中，将被置换的字符
 * @param newStr 置换串中，用于置换的字符
 */
function replaceText(str ,patternStr ,oldStr ,newStr) {
    var oldRep = new RegExp(oldStr ,"i") ;
    var mPattern = new RegExp(patternStr ,"i") ;
    while(mPattern.exec(str)) {
        var left = RegExp.leftContext ;
        var right = RegExp.rightContext ;
        var matchStr = RegExp.lastMatch ;
        str = left + matchStr.replace(oldRep ,newStr) + right ;
    }
    return str ;
}

// myFloat是要进行四舍五入的数字，mfNumber代表要取舍的位数
function floatRound(myFloat,mfNumber) {
    if ( mfNumber == 0 ) {
        return Math.round(myFloat);
    } else {
        var cutNumber = Math.pow(10,mfNumber-1);
        return Math.round(myFloat * cutNumber)/cutNumber;
    }
}

// 用于实现页面跳转的函数，用于跳转的FORM名为
function jumpCheck(formObj) {
    if(formObj == null) return false ;
    var e = formObj.curPage ;
    if(e == null) return false ;
    page = trim(e.value) ;
    if(! isNumber(page)) {
        alert("请输入数字格式的跳转页！") ;
        e.select() ;
        return false ;
    }
    if(parseInt(page) > parseInt(trim(e.maxPage))) {
        alert("您输入的页数大于最大页“" + e.maxPage + "”！") ;
        e.select() ;
        return false ;
    }
    formObj.submit();
}
//跳转到第几页
function gotoPage(formName ,toPage) {
    var formObj = eval(formName) ;
    if(formObj == null) return  ;
    var e = formObj.curPage ;
    if(e == null) return ;
    e.value = toPage ;
    formObj.submit();
}

// 检查元素是否有误。有误则返回TRUE
function checkInput(inputObj ,altSpanName) {
    if(inputObj == null) return false ;
    var hasErr = false ;
    var eValue = trim(inputObj.value) ;
    var regExpress = trim(inputObj.regExpress) ;
    if(regExpress != "") {
        var exp = new RegExp(regExpress);
        var spanObj = null ;
        if(altSpanName!=null && altSpanName!="") {
            spanObj = document.getElementById(altSpanName) ;
        }

        if(exp.test(eValue) == false) {
            hasErr = true ;
            if(spanObj!=null) {
                spanObj.innerHTML = trim(spanObj.errMsg) ;
            }
        } else if(spanObj!=null) {
           spanObj.innerHTML = "" ;
        }
    }
    return hasErr ;
}

/**
 * 检查两个日期之间的先后关系.
 * 如beginTime早于endTime返回1;等于返回0，晚于返回-1;
 */
function checkDate(beginTime ,endTime) {
    for(i=0 ;i<endTime.length ;i++) {
        var bchar = beginTime.charAt(i) ;
        var echar = endTime.charAt(i) ;
        if(bchar < echar) return 1 ;
        else if(bchar > echar) return -1 ;
    }
    return 0 ;
}

//限制非数字输入
function regInput(obj, reg, inputStr)
{
		var docSel	= document.selection.createRange()
		if (docSel.parentElement().tagName != "INPUT")	return false
		oSel = docSel.duplicate()
		oSel.text = ""
		var srcRange	= obj.createTextRange()
		oSel.setEndPoint("StartToStart", srcRange)
		var str = oSel.text + inputStr + srcRange.text.substr(oSel.text.length)
		return reg.test(str)
}
