function createRequestObject() {
    var ro;
    var browser = navigator.appName;
    if(browser == "Microsoft Internet Explorer"){
        ro = new ActiveXObject("MSXML2.XMLHTTP.3.0");
    }else{
        ro = new XMLHttpRequest();
    }
    return ro;
}

var http = createRequestObject();

var requests = [];
var requesting_timeout_id = null;

function AddRequest(page, args, state) {

    // Add this request to the queue.
    requests.push([page, args, state, false]);

    // Check for current timeout.
    if (!requesting_timeout_id) {
        ProcessRequests();
        //alert("Setting timeout");
        requesting_timeout_id = window.setTimeout(ProcessRequests, 1000);
    }
}

function CallReadyState(func) {
    if (http.readyState == 4) {
        func();
        // Remove the current request from request queue.
        requests.shift();

        // If no more requests, remove timeout.
        if (requests.length == 0) {
            window.clearTimeout(requesting_timeout_id);
            requesting_timeout_id = null;
        }
    }
}

function ProcessRequests() {
    if (requests.length > 0) {
        var req = requests[0];
        if (req[3] == false) {
            output_array = [];
            for (var key in req[1]) {
                output_array.push(key + "=" + escape(req[1][key]));
            }
            //alert("args: " + output_array);
            //alert(req[0] + ".php?" + output_array.join("&"));
            http.open("get", req[0] + ".php?" + output_array.join("&"));
            if (req[2]) {
                http.onreadystatechange = function () {CallReadyState(req[2])}
            } else {
                http.onreadystatechange = function () {CallReadyState() }
            }
            http.send(null);
            requests[0][3] = true;
            requesting_timeout_id = window.setTimeout(ProcessRequests, 1000);
        }
    }
}

function sndReq(page, args, stateChange) {
    AddRequest(page, args, stateChange);
}

function textReplace() {
    if(http.readyState == 4){
        var response = http.responseText;
        var update = new Array();

        if(response.indexOf('|' != -1)) {
            update = response.split("|");
            //alert(update);
            document.getElementById(update[0]).innerHTML = update[1];
        }
        http.abort();
    }
}