function XMLRequest(){
	var xr = false;
	var xr_version = false;
	var try_count = 0;
	var previous_url = null;
	
	function setup_xr(){
		//var MSXML_XMLHTTP_PROGIDS = new Array('MSXML2.XMLHTTP.5.0','MSXML2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP','Microsoft.XMLHTTP');
		var MSXML_XMLHTTP_PROGIDS = new Array('MSXML2.XMLHTTP','Microsoft.XMLHTTP');
		success = false;
		for (var i=0;i < MSXML_XMLHTTP_PROGIDS.length && !success; i++) {
			try{
				xr = new ActiveXObject(MSXML_XMLHTTP_PROGIDS[i]);
				xr_version = MSXML_XMLHTTP_PROGIDS[i];
				success = true;
			}catch (e){}
		}

		if(!xr && typeof XMLHttpRequest!='undefined'){
			xr = new XMLHttpRequest();
			xr_version = "mozilla.XMLHttpRequest";
		}
	}
	setup_xr();
	function connect(method,url,async){
		xr.open(method,url,async);
		try_count = 0;
		previous_url = url;
	}
	function sendAndLoad(postvar,resultMethod){
		if(navigator.appName == 'Microsoft Internet Explorer'){
			if(resultMethod){
				xr.onreadystatechange = function(){
					if (xr.readyState == 4) {
						if(xr.status == 200 && xr.responseText.length > 0){
							window.status = '';
							resultMethod(xr,xr);
							//DBG.output_xr(xr,previous_url,postvar);
						}else{
							window.status = 'Unable to locate XML:' + xr.status ;
							resultMethod(xr,false);
							//DBG.output_xr(xr,previous_url,postvar);
						}
					}
				};
			}
		}else{
			xr.onload = function() { 
				if(xr.status == 200){
					resultMethod(xr,xr);
					//DBG.output_xr(xr,previous_url,postvar);
				}else{
					resultMethod(false,xr)
					//DBG.output_xr(xr,previous_url,postvar);
					window.status = 'Unable to locate XML';
				}
			}
		}
		//xr.setRequestHeader("PRAGMA",'NO-CACHE');
		xr.setRequestHeader("CACHE-CONTROL",'NO-CACHE');
		xr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		xr.setRequestHeader("Content-length", postvar.length);
		xr.setRequestHeader("Connection", "close");
		xr.send(postvar);
		try_count += 1;
	}
	
	function getVersion(){
		return(xr_version);
	}
	function setRequestHeader(ct,hd){
		xr.setRequestHeader(ct,hd);
	}
	function get_rqObj(){
		return(xr);
	}
	
	this.connect = connect;
	this.sendAndLoad = sendAndLoad;
	this.getVersion = getVersion;
	this.setRequestHeader = setRequestHeader;
	this.get_rqObj = get_rqObj;
}
xmlRequest = XMLRequest;
