﻿//Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject() {
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		return new ActiveXObject('Microsoft.XMLHTTP');
	} else {
		alert('Does not support either XMLHttpRequest Object nor ActiveXObject("Microsoft.XMLHTTP")');
	}
}

var ReturnType = { Xml: 0, Text: 1 };

function Request() {}
Request.prototype.ReturnType = ReturnType.Xml;
Request.prototype.AddRandomParameter = true;
Request.prototype.Url = null;
Request.prototype.OnSuccess = null;
Request.prototype._Request = null;
 
//Called when the AJAX response is returned.
Request.prototype._RequestHandler = function() {
    if (this._Request.readyState == 4 && this.OnSuccess != null) {
        if (this.ReturnType == ReturnType.Xml)
            this.OnSuccess(this._Request.responseXML);
        else
            this.OnSuccess(this._Request.responseText);
    }
}

Request.prototype.Send = function() {
    //Our XmlHttpRequest object to get the auto suggest
    if (this._Request == null) {
        this._Request = getXmlHttpRequestObject();
        this._Request._Request = this;
    }
    if (this._Request.readyState == 4 || this._Request.readyState == 0) {
        var url = this.Url;
        if (this.AddRandomParameter == true) {
            if (url.indexOf("?") != -1) {
                url = url + "&date=" + new Date();
            }
            else {
                url = url + "?date=" + new Date();
            }
        }
        this._Request.open('GET', url, true);
        this._Request.onreadystatechange = function() { this._Request._RequestHandler(); }
        this._Request.send(null);
    }
}


