	// JavaScript Document
	function newXMLHttpRequest() {
		var http_request = false;
		
		if (window.XMLHttpRequest) { 				// Create XMLHttpRequest object in non-Microsoft browsers
			http_request = new XMLHttpRequest();
			if (http_request.overrideMimeType) {
				http_request.overrideMimeType('text/xml');
				// See note below about this line
			}
		} 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('Giving up :( Cannot create an XMLHTTP instance');
			return false;
		}
		
		return http_request;
	}

	function getReadyStateXmlHandler(http_request, responseXmlHandler) {
		return function () {
			if (http_request.readyState == 4) {
				if (http_request.status == 200) {
					responseXmlHandler(http_request.responseXML);
				} else {
					alert("HTTP error "+http_request.status+": "+http_request.statusText);
				}
			}
		}
	}

	function getReadyStateTextHandler(http_request, responseTextHandler) {
		return function () {
			if (http_request.readyState == 4) {
				if (http_request.status == 200) {
					responseTextHandler(http_request.responseText);
				} else {
					alert("HTTP error "+http_request.status+": "+http_request.statusText);
				}
			}
		}
	}
