var MyUtil = {};

MyUtil.getOverlayElement = function() {
    var divOverlay;
    document.body.style.height = "100%";
    if (document.getElementById("divDisabledBG")) {
        divOverlay = document.getElementById("divDisabledBG");
    }
    else {
        divOverlay = document.createElement("div");
        divOverlay.id = "divDisabledBG";
        document.body.insertBefore(divOverlay, document.body.firstChild)
    }
    return divOverlay;
} //getOverlayElement


MyUtil.ShowModal = function(divModal, closeOnOverLayClick) {
    if (typeof divModal == "string") {
        divModal = document.getElementById(divModal);
    }
    if (!divModal) {
        return;
    }
    var divOverlay = MyUtil.getOverlayElement();
    if (divOverlay.modalElement) {
        divOverlay.hideModal();
    }

    divOverlay.modalElement = divModal;
    divOverlay.modalElement.style.position = "absolute";
    divOverlay.modalElement.style.zIndex = "1000";
    divOverlay.modalElement.style.display = ''
    divOverlay.style.display = '';

    divOverlay.hideModal = function() {
        divOverlay.style.display = "none";
        if (divOverlay.modalElement) {
            divOverlay.modalElement.style.display = "none";
            divOverlay.modalElement = null;
        }
        MyUtil.EventUtil.removeEvents(window, "scroll", divOverlay.fnScroll);
    }

    divOverlay.onclick = (closeOnOverLayClick) ? divOverlay.hideModal : null;

    divOverlay.fnScroll = function() {
        var left = document.body.scrollLeft;
        var top = document.body.scrollTop;
        divOverlay.style.top = top + "px";
        divOverlay.style.left = left + "px";
        divOverlay.style.width = document.body.clientWidth + "px";
        divOverlay.style.height = document.body.clientHeight + "px";
        if (divOverlay.modalElement) {
            MyUtil.centerElement(divOverlay.modalElement);
        }
    }
    divOverlay.fnScroll();
    MyUtil.EventUtil.addEvents(window, "scroll", divOverlay.fnScroll);
}        //ShowModal

MyUtil.HideModal = function() {
    var divOverlay = MyUtil.getOverlayElement();
    if (divOverlay) {
        divOverlay.hideModal();
    }
}

MyUtil.getWindowWH = function() {
    var intH = 700, intW = 1000;
    try {
        if (self.innerHeight) {
            intH = window.innerHeight;
            intW = window.innerWidth;
        }
        else {
            if (document.documentElement && document.documentElement.clientHeight) {
                intH = document.documentElement.clientHeight;
                intW = document.documentElement.clientWidth;
            }
            else if (document.body) {
                intH = document.body.clientHeight;
                intW = document.body.clientWidth;
            }
        }
    }
    catch (e) { }
    return { height: parseInt(intH, 10), width: parseInt(intW, 10) };
} //getWindowWH


MyUtil.centerElement = function(el) {
    var WH = MyUtil.getWindowWH();
    var w = WH.width;
    var h = WH.height;
    w = parseInt((w - el.offsetWidth) / 2, 10);
    h = parseInt((h - el.offsetHeight) / 2, 10);

    if (document.body && document.body.scrollTop) {
        h = h + document.body.scrollTop;
        w = w + document.body.scrollLeft;
    }
    else if (document.documentElement && document.documentElement.scrollTop) {
        h = h + document.documentElement.scrollTop;
        w = w + document.documentElement.scrollLeft;
    }

    el.style.left = w + "px";
    el.style.top = h + "px";
} //centerElement


MyUtil.getOffsetXY = function(el) {
    var x = el.offsetLeft;
    var y = el.offsetTop;

    obj = el.offsetParent;
    while (obj != null) {
        x += obj.offsetLeft;
        y += obj.offsetTop;
        obj = obj.offsetParent;
    }
    return [x, y];
} //getOffsetXY

MyUtil.getOffsetX = function(el) {
    return MyUtil.getOffsetXY(el)[0];
} //getOffsetX

MyUtil.getOffsetY = function(el) {
    return MyUtil.getOffsetXY(el)[1];
} //getOffsetY

MyUtil.createDelegate = function(instance, method) {
    return function() {
        return method.apply(instance, arguments);
    }
} //createDelegate

MyUtil.EventUtil = function() { };

MyUtil.EventUtil.addEvents = function(el, evName, fn) {
    if (window.attachEvent) {
        el.attachEvent("on" + evName, fn);
    }
    else {
        el.addEventListener(evName, fn, false);
    }
} //addEvents

MyUtil.EventUtil.removeEvents = function(el, evName, fn) {
    if (window.detachEvent) {
        el.detachEvent("on" + evName, fn);
    }
    else {
        el.removeEventListener(evName, fn, false);
    }
} //removeEvents

MyUtil.EventUtil.stopBubble = function(e) {
    e.cancelBubble = true;
    if (e.stopPropagation) {
        e.stopPropagation();
    }
} //stopBubble   

MyUtil.EventUtil.preventDefault = function(e) {
    e.returnValue = false;
    if (e.preventDefault) {
        e.preventDefault();
    }
} //preventDefault    

MyUtil.EventUtil.stopEvent = function(e) {
    MyUtil.EventUtil.stopBubble(e);
    MyUtil.EventUtil.preventDefault(e);
} //stopEvent  

MyUtil.EventUtil.getPageXY = function(e) {
    var pageX, pageY;

    if (e.pageX || e.pageY) {
        pageX = e.pageX;
        pageY = e.pageY;
    }
    else if (e.clientX || e.clientY) {
        pageX = e.clientX;
        pageY = e.clientY;
        if (document.body.scrollLeft || document.body.scrollTop) {
            pageX += document.body.scrollLeft;
            pageY += document.body.scrollTop;
        }
        else if (document.documentElement) {
            if (document.documentElement.scrollLeft || document.documentElement.scrollTop) {
                pageX += document.documentElement.scrollLeft;
                pageY += document.documentElement.scrollTop;
            }
        }
    }
    return [pageX, pageY];
} //getPageXY

MyUtil.EventUtil.getPageX = function(e) {
    return MyUtil.EventUtil.getPageXY(e)[0];
} //getPageX

MyUtil.EventUtil.getPageY = function(e) {
    return MyUtil.EventUtil.getPageXY(e)[1];
} //getPageY

