﻿function $(id) {
    if (typeof (id) == "string") { return document.getElementById(id); }
    else { return id; }
}
/**get document scroll position*/
function getScrollPos() {
    var scrollPos = { top: 0, left: 0 };
    if (typeof window.pageYOffset != 'undefined') { //firefox
        scrollPos.top = window.pageYOffset;
        scrollPos.left = window.pageXOffset;
    }
    else if (typeof document.compatMode != 'undefined' && document.compatMode != 'BackCompat') {
        scrollPos.top = document.documentElement.scrollTop;
        scrollPos.left = document.documentElement.scrollLeft;
    }
    else if (typeof document.body != 'undefined') {
        scrollPos.top = document.body.scrollTop;
        scrollPos.left = document.body.scrollLeft;
    }
    return scrollPos;
}
/**element width height left top*/
function GetObjWHLT(obj) {
    var objWHLT = { left: 0, top: 0, width: 0, heigth: 0 };
    var pos = {};
    pos = getPosition(obj);
    objWHLT.left = pos.x;
    objWHLT.top = pos.y;
    objWHLT.width = obj.offsetWidth;
    objWHLT.heigth = obj.offsetHeight;
    return objWHLT;
}
/*element position*/
function getPosition(e) {
    var left = 0, top = 0;
    while (e.offsetParent) {
        left += e.offsetLeft + (e.currentStyle ? (parseInt(e.currentStyle.borderLeftWidth)).NaN0() : 0);
        top += e.offsetTop + (e.currentStyle ? (parseInt(e.currentStyle.borderTopWidth)).NaN0() : 0);
        e = e.offsetParent;
    }
    left += e.offsetLeft + (e.currentStyle ? (parseInt(e.currentStyle.borderLeftWidth)).NaN0() : 0);
    top += e.offsetTop + (e.currentStyle ? (parseInt(e.currentStyle.borderTopWidth)).NaN0() : 0);
    return { x: left, y: top };
}
/**set ele position*/
function SetObjPos(obj, pos) {
    with (obj.style) {
        top = pos.top + "px";
        left = pos.left + "px";
    }
}
/** window w h*/
function getWAndHOfWindow() {
    var w =
          (window.innerWidth && window.scrollMaxX) ? window.innerWidth + window.scrollMaxX
        : (document.body.scrollWidth > document.body.offsetWidth) ? document.body.scrollWidth
        : document.body.offsetWidth;
    var h =
          (window.innerHeight && window.scrollMaxY) ? window.innerHeight + window.scrollMaxY
        : (document.body.scrollHeight > document.body.offsetHeight) ? document.body.scrollHeight
        : document.body.offsetHeight;

    return { "w": w, "h": h };
}
/**set obj display status*/
function SetDisplayStatus(obj, value) {
    if (typeof (obj) == "string")
        $(obj).style.display = value
    else
        obj.style.display = value;
}
/*get mouse position*/
function getMousePosition(ev) {
    if (ev.pageX || ev.pageY) {
        return { x: ev.pageX, y: ev.pageY };
    }
    return {
        x: ev.clientX + document.body.scrollLeft - document.body.clientLeft,
        y: ev.clientY + document.body.scrollTop - document.body.clientTop
    };
}
function getMouseOffset(target, ev) {
    ev = ev || window.event;
    var docPos = getPosition(target);
    var mousePos = getMousePosition(ev);
    return { x: mousePos.x - docPos.x, y: mousePos.y - docPos.y };
}
var Cookie = {
    setCookie: function(name, value, option) {
        var str = name + "=" + escape(value);
        if (option) {
            if (option.expireDays) {
                var date = new Date();
                var ms = option.expireDays * 24 * 3600 * 1000;
                date.setTime(date.getTime() + ms);
                str += "; expire=" + date.toGMTString();
            }
            if (option.path) str += "; path=" + option.path;
            if (option.domain) str += "; domain=" + option.domain;
            if (option.secure) str += "; true";
        }
        document.cookie = str;
    },
    getCookie: function(name) {
        
        var cookieArray = document.cookie.split(";");
        for (var i = 0; i < cookieArray.length; i++) {
            var _arr = cookieArray[i].split("=");
            //if (_arr[0].trim() == "cvid") alert(cookieArray[i].value);
            if (_arr[0].trim() == name && _arr.length >= 2) {
                return cookieArray[i].replace(name + "=", "");
            }

        }
        return '';
    },
    getValueFromCookie: function(key, cookieName) {
        var cookieArray = this.getCookie(cookieName).split("&")
        for (var i = 0; i < cookieArray.length; i++) {
            var _arr = cookieArray[i].split("=");
            if (_arr[0].trim().toLowerCase() == key.toLowerCase()) {
                return _arr[1];
            }
        }
        return '';
    },
    deleteCookie: function(name) {
        this.setCookie(name, "", { expireDays: -1, path: '/' });
    }
}
/* request */
if (typeof _ajax_request == "undefined") {
    var _ajax_request = {};
}
_ajax_request.queryString = function(paramName) {
    var reg = new RegExp("(^|&)" + paramName.toLowerCase() + "=([^&]*)(&|$)");
    var r = window.location.search.toLowerCase().substr(1).match(reg);
    if (r != null) {
        return (r[2]); //unescape
    }
    return null;
}
//CheckBox
var CheckBox = {
    selected: function(selectRange, checked, excludeName) {
        var eles = selectRange.getElementsByTagName("input");
        for (var i = 0; i < eles.length; i++) {
            if (eles[i].type == "checkbox" && eles[i].name != excludeName) {
                eles[i].checked = checked;
            }
        }
    },
    selectedByNamePre: function(selectRange, namePre, checked) {
        var eles = selectRange.getElementsByTagName("input");
        for (var i = 0; i < eles.length; i++) {
            if (eles[i].type == "checkbox" && eles[i].name.indexOf('chkJob') >= 0) {
                eles[i].checked = checked;
            }
        }
    },
    check: function(selectRange, showMessage, failMessage) {
        var eles = selectRange.getElementsByTagName("input");
        for (var i = 0; i < eles.length; i++) {
            if (eles[i].type == "checkbox" && eles[i].name != 'allbox') {
                if (eles[i].checked) {
                    return confirm(showMessage);
                }
            }
        }
        if (failMessage != undefined && failMessage.trim() != "") {
            alert(failMessage);
        }
        return false;
    },
    isAll: function(selectRange, allBoxIDList) {
        var eles = selectRange.getElementsByTagName("input");
        var flag = true;
        for (var i = 0; i < eles.length; i++) {
            if (eles[i].type == "checkbox" && eles[i].checked == false && allBoxIDList.contains(eles[i].id) == false) {
                flag = false; break;
            }
        }
        for (var i = 0; i < allBoxIDList.length; i++) {
            var temp = $(allBoxIDList[i]);
            if (temp) {
                temp.checked = flag;
            }
        }
    }
};

function IsMail(ChkStr) {
    var isEmail1 = /^\w+([\.\-]\w+)*\@\w+([\.\-]\w+)*\.\w+$/;
    var isEmail2 = /^.*@[^_]*$/;
    return ((isEmail1.test(ChkStr)) && (isEmail2.test(ChkStr)));
}
var dateValidator = {
    isValid: function(text) {
        if (text.trim() == '') {
            return true;
        }
        var length = new Array(31, 30, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
        var dateList = text.split('-');
        if (dateList.length != 3) {
            return false;
        }
        var reg = /^\d+$/;
        var year = dateList[0], month = dateList[1], day = dateList[2];
        if (reg.test(year) == false || reg.test(month) == false || reg.test(day) == false) {
            return false;
        }
        length[1] = ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)) ? 29 : 28;
        if (year < 1900 || year > 2999) {
            return false;
        }
        if (month < 1 || month > 12) {
            return false;
        }
        if (day < 1 || day > length[parseInt(month, 10) - 1]) {
            return false;
        }
        return true;
        //var reDate = /(?:19|20\d{2})-(?:0{0,1}[1-9]|1[0-2])-(?:[0]{0,1}[1-9]|[12][0-9]|3[01])/; 
        //return reDate.test(text);
    },
    validateText: function(text, tips) {
        if (!this.isValid(text)) {
            alert(tips);
        }
    },
    validateInput: function(ele, tips, tipsEleId) {
        if (!this.isValid($(ele).value)) {
            this.showWarning(ele, tips, tipsEleId);
            return false;
        } else {
            this.hideWarning(tipsEleId);
            return true;
        }
    },
    compare: function(oneDate, twoDate) {
        oneDate = oneDate.replace(/\//g, '-');
        twoDate = twoDate.replace(/\//g, '-');
        if (this.isValid(oneDate) == false || this.isValid(twoDate) == false) {
            return false;
        }
        var oneDateList = oneDate.split('-'), twoDateList = twoDate.split('-');
        var oneY = oneDateList[0], oneM = oneDateList[1], oneD = oneDateList[2];
        var twoY = twoDateList[0], twoM = twoDateList[1], twoD = twoDateList[2];
        if (Date.parse(oneM + "/" + oneD + "/" + oneY) > Date.parse(twoM + "/" + twoD + "/" + twoY)) {
            return true;
        }
        else {
            return false;
        }
    },
    showWarning: function(ele, tips, tipsEleId) {
        if ($(tipsEleId)) {
            $(tipsEleId).style.display = "";
            $(tipsEleId).innerHTML = tips;
            return;
        }
        var pos = wmcClass._self.getPosition($(ele));
        var warning = $("_invalidDateWarning_");
        var top = pos.y + $(ele).offsetHeight;
        var left = pos.x - $(ele).offsetWidth;
        if (!warning) {
            warning = document.createElement("div");
            warning.id = "_invalidDateWarning_";
            warning.style.position = "absolute";
            warning.className = "c_err";
            document.body.appendChild(warning);
        }
        warning.style.display = "block";
        warning.innerHTML = tips;
        wmcClass._self.setPosition(warning, top, left);
    },
    hideWarning: function(tipsEleId) {
        var warning = $("_invalidDateWarning_") || $(tipsEleId);
        if (warning) {
            warning.style.display = "none";
        }
    }
};
function showSide() {
    var wrap = $("wrap"), outer = $("outer"), main = $("main"), btn = $("sidebtn"), side = $("side");
    if (side.style.display == "block" || side.style.display == "") {
        side.style.display = "none";
        outer.className = "";
        btn.className = "sidebtn2";
        btn.title = "显示菜单";
        main.className = "main2"
        wrap.firstChild.className = "wrapcon wsm1";

    } else {
        side.style.display = "block";
        outer.className = "outer";
        btn.className = "sidebtn1";
        btn.title = "隐藏菜单";
        main.className = "main1"
        wrap.firstChild.className = "wrapcon wsm2";
    }
}

function setHighlight(keyword, selectRange) {
    var range;
    if (keyword == "") return;
    if (selectRange) {
        range = $(selectRange)
    } else {
        range = document.body.getAttribute("highlight");
    }
    if (range) {
        var eles = range.getElementsByTagName("*"), value = "";
        for (var i = 0, len = eles.length; i < len; i++) {
            value = eles[i].getAttribute("highlight");
            var keywordList = keyword.replace(/\s+/gi, " ").split(" ");
            var data = "";
            if (value == "true") {
                data = eles[i].innerHTML;
                for (var k = 0, l = keywordList.length; k < l; k++) {
                    data = data.replace(keywordList[k], "<font color=\"red\">" + keywordList[k] + "</font>");
                }
                eles[i].innerHTML = data;
            }
        }
    }
}

function setHighlightTag(range, keywords, color) {
    var oRange;
    if (keywords.replace(/\s+/gi, "") == "") return;
    if (range) { oRange = range; }
    else if (document.body) { oRange = document.body; }
    else { return; }
    keywords = keywords.replace(/\s+/gi, " ");
    setHighlightTag.keywordList = keywords.split(" ");
    if (setHighlightTag.isFirst == false) {
        clearHighlightTag(range, keywords);
    } else {
        setHighlightTag.isFirst = true;
    }
    var nodes = oRange.childNodes, node;
    for (var i = 0, len = nodes.length; i < len; i++) {
        node = nodes[i];
        if (node.nodeType == 1) { arguments.callee(node, keywords, color) }
        else if (node.nodeType == 3) {
        var data = node.data, pNode = node.parentNode;
            if (containsHighlightKeywords(data)) {
                if (pNode.parentNode && pNode.parentNode.getAttribute("highlight") == "true") {
                    pNode.style.color = color;
                } else {
                    AddTagToHighlightKeywords(data, node, pNode);
                }
            }
        }
    }
}
setHighlightTag.isFirst = false;
setHighlightTag.keywordList = [];
function containsHighlightKeywords(data) {
    var keywordList = setHighlightTag.keywordList;
    for (var i = 0, len = keywordList.length; i < len; i++) {
        if (keywordList[i].length >= 1) {
            var reg1 = new RegExp("\\+", "g");
            var reg = new RegExp("(" + keywordList[i].replace(reg1, "\\+") + ")", "gi");
            if (reg.test(data)) {
                return true;
            }
        }
    }
    return false;
}
function AddTagToHighlightKeywords(data, node, pNode) {
    var keywordList = setHighlightTag.keywordList;
    var index = 0;
    var eleH = document.createElement("span");
    eleH.setAttribute("highlight", "true");
    for (var i = 0, len = keywordList.length; i < len; i++) {
        if (keywordList[i].length >= 1) {
            var reg1 = new RegExp("\\+", "g");
            var reg = new RegExp("(" + keywordList[i].replace(reg1, "\\+") + ")", "gi");
            if (reg.test(data)) {
                data = data.replace(reg, "<span class=\"keywd\">$1</span>");
                index++;
            }
        }
    }
    if (index > 0) {
        eleH.innerHTML = data;
        pNode.replaceChild(eleH, node);
    }
}

function clearHighlightTag(range, keywords) {
    var oRange;
    if (range) { oRange = range; }
    else if (document.body) { oRange = document.body; }
    else { return; }
    var nodes = range.childNodes, node, pNode;
    for (var i = 0, len = nodes.length; i < len; i++) {
        node = nodes[i];
        if (node.nodeType == 1) {
            if (node.getAttribute("highlight") == "true") {
                pNode = node.parentNode;
                var textNode = document.createTextNode("");
                textNode.data = getHighlightKeywords(node);
                pNode.replaceChild(textNode, node);
            } else {
                arguments.callee(node, keywords);
            }
        }
    }
}
function getHighlightKeywords(ele) {
    var text = "";
    if (ele.innerText) {
        text = ele.innerText;
    } else if (ele.textContent) {
        text = ele.textContent;
    } else {
        text = ele.innerHTML.replace(/<[^>]+>/gi, "");
    }
    return text;
}






