﻿xhr = {
    getXMLHttpRequest: function() {
        var request;
        try {
            request = new XMLHttpRequest();
        }
        catch (err) {
            try {
                request = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (err) {
                return false;
            }
        }
        return request;
    },
    doRequest: function(url, method, params, onCompleted, onFailed) {
        var x = xhr.getXMLHttpRequest();
        if (!x) return false;
        x.open(method, url, true);
        x.onreadystatechange = function() {
            if (x.readyState == 1) {
                //loading
            }
            else if (x.readyState == 4) {
                if (x.status == 200 || x.status == 304) {
                    // ok
                    if (onCompleted) {
                        onCompleted(x.responseText, x.responseXML);
                    }
                }
                else {
                    // fail
                    if (onFailed) {
                        onFailed();
                    }
                }
            }
        }
        var xdate = new Date();
        xdate.setFullYear(1977, 1, 29)
        var xdateStr = xdate.toDateString();
        x.setRequestHeader("If-Modified-Since", xdateStr);
        if(params && params != "" && method.toLowerCase() == "post") {
            x.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            x.setRequestHeader("Content-length", params.length);
            x.setRequestHeader("Connection", "close");
        }
        x.send(params);

        return true;
    },
    doPost: function(url, params, onComplete, onFail) {
        xhr.doRequest(url, "post", params, onComplete, onFail);
    },
    doGet: function(url, params, onComplete, onFail) {
        xhr.doRequest(url, "get", params, onComplete, onFail);
    }
}

function xhrobj() {
    this.appendParams = true;
    this.doRequest = function(url, method, params) {
        if (this.appendParams) {
            url += "?" + params;
            params = "";
        }
        xhr.doRequest(url, method, params, this.onComplete, this.onFail);
    }
    this.doGet = function(url, params) {
        this.doRequest(url, "get", params, this.onComplete, this.onFail);
    }
    this.onComplete = function(text, xml) { }
    this.onFail = function() { }
}

