function createReq() {
    try {
        if (typeof ActiveXObject != "undefined") {
            return new ActiveXObject("Microsoft.XMLHTTP")
        } else if (window.XMLHttpRequest) {
            return new XMLHttpRequest
        }
    } catch(a) {
    }
    return null
}

function Cc() {

}


function setAbortMode(value) {
    abortMode = value;
}

function setSingleMode(value) {
    singleMode = value;
}

var AX = new AjaxAsyncMode();
var AXS = new AjaxSingleMode();

function AjaxSingleMode() {
    this.request;
    AjaxSingleMode.prototype.load = function(url, callback) {
        if (this.request) this.request.abort();
        this.request = createReq();
        AsyncLoad(url, callback, null, null, this.request);
    }

    AjaxSingleMode.prototype.loadXML = function(url, callback) {
        if (this.request) this.request.abort();
        this.request = createReq();
        AsyncLoad(url, function(response, status) {   
            if (status == 404 || status == 500 || status == 403) callback(null);
            if (status == 200) {
                callback(parseXML(response));
            }
        },null,null,this.request);
    }
}

function AjaxAsyncMode() {
    AjaxAsyncMode.prototype.load = function(url, callback) {
        AsyncLoad(url, callback);
    }

    AjaxAsyncMode.prototype.loadXML = function(url, callback) {
        AsyncLoad(url, function(response, status) {
            if (status == 404 || status == 500 || status == 403) callback(null);
            if (status == 200) {
                callback(parseXML(response));
            }
        });
    }

}

function AsyncLoad(a, b, c, d, request) {
    var req;
    if (request) req = request;
    else
        req = createReq();
    if (!req)return false;
    req.onreadystatechange = function()
    {
        //if(a.indexOf("panel.") != -1)
        //    alert("das53ew4534 " + req);
        if (req == null) return;
        if (req.readyState == 4) {
            try {
                b(req.responseText, req.status);
                req.onreadystatechange = Cc;
            } catch(e) {
            }
        }
    }
    if (c) {
        req.open("POST", a, true);
        var f = d;
        if (!f) {
            f = "application/x-www-form-urlencoded"
        }
        req.setRequestHeader("Accept-Charset", "utf-8");
        req.setRequestHeader("Content-Type", f);
        req.send(c)
    } else {

        req.open("GET", a, true);
        req.send(null)
    }
    return true
}

function parseXML(a) {
    if (typeof ActiveXObject != "undefined" && typeof GetObject != "undefined") {
        var b = new ActiveXObject("Microsoft.XMLDOM");
        b.loadXML(a);
        return b
    }
    if (typeof DOMParser != "undefined") {
        return(new DOMParser).parseFromString(a, "text/xml")
    }
    return null;
}

function getNodeValue(node, name) {
    if (!node || node.getElementsByTagName(name).length == 0) return null;
    return node.getElementsByTagName(name)[0].firstChild.nodeValue;
}


