// AJAX Utilities

var AjaxUtil = new Object();

AjaxUtil.MakeRequest = function (url,CallBack) {
    
        var httpRequest;                
        
        if (window.XMLHttpRequest) { // Mozilla, Safari, ...
            httpRequest = new XMLHttpRequest();
            if (httpRequest.overrideMimeType) {
                httpRequest.overrideMimeType('text/plain');
                // See note below about this line
            }
        } else if (window.ActiveXObject) { // IE
            try {
                httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }

        if (!httpRequest) {
            alert('Giving up :( Cannot create an XMLHTTP instance');            
        }

        httpRequest.onreadystatechange = function() { AjaxUtil.ProcessRequest (httpRequest, CallBack); };
        httpRequest.open('GET', url, true);
        httpRequest.send(null);
    
}

AjaxUtil.ProcessRequest = function (httpRequest, CallBack) {
    
        //xmlhttp ready state constants
	    var RS_LOADING = 1;
	    var RS_LOADED = 2;
	    var RS_RECEIVING = 3;
	    var RS_COMPLETE = 4;

	    //http status constants
	    var HS_FOUND = 200;
	    var HS_NOT_FOUND = 404;
    
        if (httpRequest.readyState == RS_COMPLETE) { //page is ready, response has come back                                        

		    if (httpRequest.status == HS_FOUND) { //http success code	   		        

				CallBack(httpRequest);
			    
		    }
		    else {
		        alert("Unable to Process Request");
		    }
        }    
}