function showBusyLayer() {
    var busyLayer = document.getElementById("busy_layer");
    if (busyLayer != null) {
        busyLayer.style.visibility = "visible";
        busyLayer.style.height = getPageSize().pageHeight + 'px'
    }
};

function getPageSize() {
    var d = document,
        w = window,
        iebody = d.compatMode && d.compatMode != 'BackCompat' ? d.documentElement : d.body;
    var b = d.body;
    var yScroll = (w.innerHeight && window.scrollMaxY) ? w.innerHeight + w.scrollMaxY : Math.max(b.scrollHeight, b.offsetHeight),
        pageHeight = (document.all && !window.opera) ? Math.max(iebody.scrollHeight, iebody.clientHeight) : (d.documentElement.clientHeight || self.innerHeight);
    var height = (document.all && !window.opera) ? iebody.clientHeight : self.innerHeight;
    return {
        pageHeight: Math.max(pageHeight, yScroll),
        height: height,
        scrollTop: (document.all && !window.opera) ? iebody.scrollTop : pageYOffset
    }
};

function hideBusyLayer() {
    var busyLayer = document.getElementById("busy_layer");
    if (busyLayer != null) {
        busyLayer.style.visibility = "hidden";
        busyLayer.style.height = "0px"
    }
};

function _get_obj_toppos(obj) {
    var top = obj.offsetTop;
    while ((obj = obj.offsetParent) != null) {
        top += obj.offsetTop
    }
    return top
};

function center_div() {
    this.divname = '';
    this.divobj = ''
};
center_div.prototype.clear_div = function () {
    try {
        if (!this.divobj) {
            return
        } else {
            this.divobj.style.display = 'none'
        }
    } catch (e) {
        return
    }
};
center_div.prototype.Ywindow = function () {
    var scrollY = 0;
    if (document.documentElement && document.documentElement.scrollTop) {
        scrollY = document.documentElement.scrollTop
    } else if (document.body && document.body.scrollTop) {
        scrollY = document.body.scrollTop
    } else if (window.pageYOffset) {
        scrollY = window.pageYOffset
    } else if (window.scrollY) {
        scrollY = window.scrollY
    }
    return scrollY
};
center_div.prototype.move_div = function () {
    try {
        this.divobj = document.getElementById(this.divname)
    } catch (e) {
        return
    }
    var my_width = 0;
    var my_height = 0;
    if (typeof (window.innerWidth) == 'number') {
        my_width = window.innerWidth;
        my_height = window.innerHeight
    } else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
        my_width = document.documentElement.clientWidth;
        my_height = document.documentElement.clientHeight
    } else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
        my_width = document.body.clientWidth;
        my_height = document.body.clientHeight
    }
    this.divobj.style.position = 'absolute';
    this.divobj.style.display = 'block';
    this.divobj.style.zIndex = 99;
    var divheight = parseInt(this.divobj.style.Height);
    var divwidth = parseInt(this.divobj.style.Width);
    divheight = divheight ? divheight : 50;
    divwidth = divwidth ? divwidth : 200;
    var scrolly = this.Ywindow();
    var setX = (my_width - divwidth) / 2;
    var setY = (my_height - divheight) / 2 + scrolly;
    setX = (setX < 0) ? 0 : setX;
    setY = (setY < 0) ? 0 : setY;
    this.divobj.style.left = setX + "px";
    this.divobj.style.top = setY + "px"
};

function dle_ajax(file) {
    this.AjaxFailedAlert = "AJAX not supported.\n";
    this.requestFile = file;
    this.method = "POST";
    this.URLString = "";
    this.encodeURIString = true;
    this.execute = false;
    this.add_html = false;
    this.loading_fired = 0;
    this.centerdiv = null;
    this.onLoading = function () {};
    this.onLoaded = function () {};
    this.onInteractive = function () {};
    this.onCompletion = function () {};
    this.onShow = function (message) {
        if (!this.loading_fired) {
            this.loading_fired = 1;
            if (message) {
                document.getElementById('loading-layer-text').innerHTML = message
            }
            this.centerdiv = new center_div();
            this.centerdiv.divname = 'loading-layer';
            this.centerdiv.move_div()
        }
        return
    };
    this.onHide = function () {
        try {
            if (this.centerdiv && this.centerdiv.divobj) {
                this.centerdiv.clear_div()
            }
        } catch (e) {}
        this.loading_fired = 0;
        return
    };
    this.createAJAX = function () {
        try {
            this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP")
        } catch (e) {
            try {
                this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")
            } catch (err) {
                this.xmlhttp = null
            }
        }
        if (!this.xmlhttp && typeof XMLHttpRequest != "undefined") this.xmlhttp = new XMLHttpRequest();
        if (!this.xmlhttp) {
            this.failed = true
        }
    };
    this.setVar = function (name, value) {
        if (this.URLString.length < 3) {
            this.URLString = name + "=" + value
        } else {
            this.URLString += "&" + name + "=" + value
        }
    };
    this.encVar = function (name, value) {
        var varString = encodeURIComponent(name) + "=" + encodeURIComponent(value);
        return varString
    };
    this.encodeURLString = function (string) {
        varArray = string.split('&');
        for (i = 0; i < varArray.length; i++) {
            urlVars = varArray[i].split('=');
            if (urlVars[0].indexOf('amp;') != -1) {
                urlVars[0] = urlVars[0].substring(4)
            }
            varArray[i] = this.encVar(urlVars[0], urlVars[1])
        }
        return varArray.join('&')
    };
    this.encodeVAR = function (url) {
        url = url.toString();
        url = url.replace(/\+/g, "%2B");
        url = url.replace(/\=/g, "%3D");
        url = url.replace(/\?/g, "%3F");
        url = url.replace(/\&/g, "%26");
        return url
    };
    this.runResponse = function () {
        var milisec = new Date;
        var jsfound = false;
        milisec = milisec.getTime();
        var js_reg = /<script.*?>(.|[\r\n])*?<\/script>/ig;
        var js_str = js_reg.exec(this.response);
        if (js_str != null) {
            var js_arr = new Array(js_str.shift());
            var jsfound = true;
            while (js_str) {
                js_str = js_reg.exec(this.response);
                if (js_str != null) js_arr.push(js_str.shift())
            }
            for (var i = 0; i < js_arr.length; i++) {
                this.response = this.response.replace(js_arr[i], '<span id="' + milisec + i + '" style="display:none;"></span>')
            }
        }
        if (this.add_html) {
            this.elementObj.innerHTML += this.response
        } else {
            this.elementObj.innerHTML = this.response
        }
        if (jsfound) {
            var js_content_reg = /<script.*?>((.|[\r\n])*?)<\/script>/ig;
            for (i = 0; i < js_arr.length; i++) {
                var mark_node = document.getElementById(milisec + '' + i);
                var mark_parent_node = mark_node.parentNode;
                mark_parent_node.removeChild(mark_node);
                js_content_reg.lastIndex = 0;
                var js_content = js_content_reg.exec(js_arr[i]);
                var script_node = mark_parent_node.appendChild(document.createElement('script'));
                script_node.text = js_content[1];
                var script_params_str = js_arr[i].substring(js_arr[i].indexOf(' ', 0), js_arr[i].indexOf('>', 0));
                var params_arr = script_params_str.split(' ');
                if (params_arr.length > 1) {
                    for (var j = 0; j < params_arr.length; j++) {
                        if (params_arr[j].length > 0) {
                            var param_arr = params_arr[j].split('=');
                            param_arr[1] = param_arr[1].substr(1, (param_arr[1].length - 2));
                            script_node.setAttribute(param_arr[0], param_arr[1])
                        }
                    }
                }
            }
        }
    };
    this.sendAJAX = function (urlstring) {
        this.responseStatus = new Array(2);
        if (this.failed && this.AjaxFailedAlert) {
            alert(this.AjaxFailedAlert)
        } else {
            if (urlstring) {
                if (this.URLString.length) {
                    this.URLString = this.URLString + "&" + urlstring
                } else {
                    this.URLString = urlstring
                }
            }
            if (this.encodeURIString) {
                var timeval = new Date().getTime();
                this.URLString = this.encodeURLString(this.URLString);
                this.setVar("rndval", timeval)
            }
            if (this.element) {
                this.elementObj = document.getElementById(this.element)
            }
            if (this.xmlhttp) {
                var self = this;
                if (this.method == "GET") {
                    var totalurlstring = this.requestFile + "?" + this.URLString;
                    this.xmlhttp.open(this.method, totalurlstring, true)
                } else {
                    this.xmlhttp.open(this.method, this.requestFile, true)
                }
                if (this.method == "POST") {
                    try {
                        this.xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
                    } catch (e) {}
                }
                this.xmlhttp.send(this.URLString);
                this.xmlhttp.onreadystatechange = function () {
                    switch (self.xmlhttp.readyState) {
                    case 1:
                        self.onLoading();
                        break;
                    case 2:
                        self.onLoaded();
                        break;
                    case 3:
                        self.onInteractive();
                        break;
                    case 4:
                        self.response = self.xmlhttp.responseText;
                        self.responseXML = self.xmlhttp.responseXML;
                        self.responseStatus[0] = self.xmlhttp.status;
                        self.responseStatus[1] = self.xmlhttp.statusText;
                        self.onHide();
                        self.onCompletion();
                        if (self.elementObj) {
                            var elemNodeName = self.elementObj.nodeName;
                            elemNodeName = elemNodeName.toLowerCase();
                            if (elemNodeName == "input" || elemNodeName == "select" || elemNodeName == "option" || elemNodeName == "textarea") {
                                if (self.response == 'error') {
                                    alert('Access denied')
                                } else {
                                    if (self.add_html) {
                                        self.elementObj.value += self.response
                                    } else {
                                        self.elementObj.value = self.response
                                    }
                                }
                            } else {
                                if (self.response == 'error') {
                                    alert('Access denied')
                                } else {
                                    if (self.execute) {
                                        self.runResponse()
                                    } else {
                                        if (self.add_html) {
                                            self.elementObj.innerHTML += self.response
                                        } else {
                                            self.elementObj.innerHTML = self.response
                                        }
                                    }
                                }
                            }
                        }
                        self.URLString = "";
                        break
                    }
                }
            }
        }
    };
    this.createAJAX()
};
