function makeRequest(url,targetObj) {
	var http_request = false;
	if (window.XMLHttpRequest) {
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
		try {
			http_request = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (e) {}
		}
	}
	if (!http_request) {
		alert('Timeout: Cannot create an XMLHTTP instance');
		return false;
	}
	http_request.onreadystatechange = function(){
		processResponse(http_request,targetObj);
	}
	http_request.open('GET', url, true);
	http_request.send(null);
}

function processResponse(http_request,targetObj) {
	/*
	readyState = 
	0 (uninitialized)
	1 (loading)
	2 (loaded)
	3 (interactive)
	4 (complete)
		
	HTTP status code
	200 = OK
	For full list see
	http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
	*/

	try{
		if(http_request.readyState == 0 || http_request.readyState == 2 || http_request.readyState == 3){
			return;
		}
		if (http_request.readyState == 1) {
			targetObj.processLoading();
		}
		if (http_request.readyState == 4) {
			//var xmlDoc = http_request.responseXML;
			//targetObj.processResults(xmlDoc);
			if (http_request.status && http_request.status == 200) {
				var xmlDoc = http_request.responseXML;
				targetObj.processResults(xmlDoc);
			} else {
				if(http_request.status >= 500){
					targetObj.dataNotAvailable("Data Not Available", http_request.status); // + http_request.status
				}else if(http_request.status == 403){
					targetObj.dataNotAvailable("Data Not Available", http_request.status); // + http_request.status
				}else if(http_request.status == 404){
					targetObj.dataNotAvailable("Data Not Available", http_request.status); // + http_request.status
				}else{
					//alert('There was a problem with the request.\nCode: ' + http_request.status);
				}
			}
		}
	} catch (e){
		//comment out following line for production-- rapidly refeshing can cut off XML stream and alert error [PON]
		//alert('Exception: ' + e.message);
	}
	finally{
		return;
	}
}
