var xml_http;

var xml_handler;

function create_xml_request() {
	if (window.ActiveXObject) {
		if (new ActiveXObject("Microsoft.XMLHTTP") != null) {
			xml_http = new ActiveXObject("Microsoft.XMLHTTP");
		}
		else {
			xml_http = new ActiveXObject("Msxml2.XMLHTTP");
		}
	}
	else {
		xml_http = new XMLHttpRequest();
	}
}

function handle_state_change() {
	if (xml_http.readyState == 4) {
		if  (xml_http.status == 200) {
			xml_handler(xml_http.responseText);
		}
		else {
			window.alert("Communication error, please try again.");
		}
	}
}

function send_xml_request(url, query_string, handler) {
	create_xml_request();	
	var url_string = url + "?" + query_string + "&" + new Date().getTime();
	xml_handler = handler;
	xml_http.onreadystatechange = handle_state_change;
	xml_http.open("GET", url_string, true);
	xml_http.send(null);
}