// class XMLRequest
function XMLRequest()
{
    if(window.XMLHttpRequest)
    {
        XMLRequest.oRequest = new XMLHttpRequest();
    }
    else if(window.ActiveXObject)
    {
        var objects = new Array("MSXML3.XMLHTTP", "MSXML2.XMLHTTP.3.0", "Msxml2.XMLHTTP", "Microsoft.XMLHTTP");

        for(var i = 0, len = objects.length; i < len; i++)
        {
            try
            {
                XMLRequest.oRequest = new ActiveXObject(objects[i++]);

                break;
            }
            catch(e)
            {
            }
        }
    }
}

XMLRequest.oRequest = null;
XMLRequest.response = function (jscode) {

    eval(jscode);
};

XMLRequest.prototype = {

    send : function(url, vars, callbackFunction) {

        XMLRequest.oRequest.open("POST", url, true);
        XMLRequest.oRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 

        XMLRequest.oRequest.onreadystatechange = function() {

            if(XMLRequest.oRequest.readyState == 4 && XMLRequest.oRequest.status == 200)
            {
                if(XMLRequest.oRequest.responseText)
                    callbackFunction(XMLRequest.oRequest.responseText);
            }
        };

        XMLRequest.oRequest.send(vars);
    }
}

var request = new XMLRequest();
