﻿function $(id) {
    if (typeof (id) == "string") { return document.getElementById(id); }
    else { return id; }
}
function $E(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) {
//    return queryStringByUrl(window.location.search,paramName);
//}

_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;
}

_ajax_request.queryStringByUrl = function(url, paramName) {
    var reg = new RegExp("(^|&)" + paramName.toLowerCase() + "=([^&]*)(&|$)");
    var r = "";
    if (url.indexOf("?") == 0) {
        r = url.toLowerCase().substr(1).match(reg);
    } else {
        r = url.toLowerCase().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, len = eles.length; i < len; i++) {
            if (eles[i].type == "checkbox" && eles[i].name != excludeName) {
                eles[i].checked = checked;
            }
        }
    },
    selectedByNamePre: function(selectRange, namePre, checked) {
        this.selectedByProperty(selectRange, namePre, checked, "name");
    },
    selectedByIDPre: function(selectRange, idPre, checked) {
        this.selectedByProperty(selectRange, idPre, checked, "id");
    },
    selectedByProperty: function(selectRange, propertyValuePre, checked, propertyName) {
        var eles = selectRange.getElementsByTagName("input");
        for (var i = 0, len = eles.length; i < len; i++) {
            if (eles[i].type == "checkbox" && eles[i][propertyName].toLowerCase().indexOf(propertyValuePre.toLowerCase()) >= 0) {
                eles[i].checked = checked;
            }
        }
    },
    check: function(selectRange, showMessage, failMessage) {
        if (selectRange) {
            var eles = selectRange.getElementsByTagName("input");
            for (var i = 0, len = eles.length; i < len; i++) {
                if (eles[i].type == "checkbox" && eles[i].name != 'allbox') {
                    if (eles[i].checked) {
                        if (showMessage != "") {
                            return confirm(showMessage);
                        } else {
                            return true;
                        }
                    }
                }
            }
        }
        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, len = eles.length; i < len; i++) {
            if (eles[i].type == "checkbox" && eles[i].checked == false && allBoxIDList.contains(eles[i].id) == false) {
                flag = false; break;
            }
        }
        for (var i = 0, len = allBoxIDList.length; i < len; 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";
    }
}

//js loader
/*
*var loader = new JsLoader();
*loader.onsuccess = function(){};
*loader.onfailure = function(){};
*loader.load("job/JsLoader.js");
*/
function JsLoader() {
    this.load = function(url) {
        var ss = document.getElementsByTagName("script");
        for (i = 0, len = ss.length; i < len; i++) {
            if (ss[i].src && ss[i].src.indexOf(url) != -1) {
                this.onsuccess();
                return;
            }
        }
        s = document.createElement("script");
        s.type = "text/javascript";
        s.src = url;
        var head = document.getElementsByTagName("head")[0];
        head.appendChild(s);
        var self = this;
        s.onload = s.onreadystatechange = function() {//ie onreadystatechange
            if (this.readyState && this.readyState == "loading") return;
            self.onsuccess();
        }
        s.onerror = function() {
            head.removeChild(s);
            self.onfailure();
        }
    };
    this.onsuccess = function() { };
    this.onfailure = function() { };
}
//Hashtable
function Hashtable() {
    this._hash = {};
    this.add = function(key, value) {
        if (typeof (key) != "undefined") {
            if (this.contains(key) == false) {
                this._hash[key] = typeof (value) == "undefined" ? null : value;
                return true;
            } else {
                return false;
            }
        } else {
            return false;
        }
    }
    this.remove = function(key) { delete this._hash[key]; }
    this.count = function() { var i = 0; for (var k in this._hash) { i++; } return i; }
    this.items = function(key) { return this._hash[key]; }
    this.contains = function(key) { return typeof (this._hash[key]) != "undefined"; }
    this.clear = function() { for (var k in this._hash) { delete this._hash[k]; } }
}






