function getXmlHttpObject() {
	var xmlhttp=false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
	// JScript gives us Conditional compilation, we can cope with old IE versions.
	try {
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (E) {
			xmlhttp = false;
		}
	}
@end @*/
	if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
		xmlhttp = new XMLHttpRequest();
	}
	return xmlhttp;
}

function load_object(obj_name, url2load, property, verbose) {
	if (!obj_name) { if (verbose) alert("Error: Object name not supplied."); return; }
	if (!url2load) { if (verbose) alert("Error: URL to load not supplied."); return; }
	if (!property) property = "innerHTML";
	var obj2load = document.getElementById(obj_name);
	if (!obj2load) { if (verbose) alert("Error: Unable to find object with name " + obj_name + "."); return; }
	var myXmlhttp = getXmlHttpObject();
	if (!myXmlhttp) { if (verbose) alert("Error: Unable to get an XMLHTTP object."); return; }
	myXmlhttp.open("GET", url2load, true);
	myXmlhttp.onreadystatechange=function() {
		if (myXmlhttp.readyState==4) {
			if (myXmlhttp.status<200 || myXmlhttp.status>299) {
				if (verbose)
					obj2load[property] = "<p class='fine'>Error: Feed did not load from URL " + url2load + ". Error status: " + myXmlhttp.status + ".</p>";
			} else {
				obj2load[property] = myXmlhttp.responseText;
			}
			myXmlhttp = false;
		}
	}
	myXmlhttp.send(null);
	return false;
}

function loadXml(obj, url2load, postdata, verbose) {
	if (!obj) { if (verbose) alert("Error: Object not supplied."); return; }
	if (!url2load) { if (verbose) alert("Error: URL to load not supplied."); return; }
//	if (!property) { if (verbose) alert("Error: property to set not supplied."); return; }
	var myXmlhttp = getXmlHttpObject();
	if (!myXmlhttp) { if (verbose) alert("Error: Unable to get an XMLHTTP object."); return; }
	myXmlhttp.open("POST", url2load, true);
	myXmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	myXmlhttp.onreadystatechange=function() {
		if (myXmlhttp.readyState==4) {
			if (myXmlhttp.status<200 || myXmlhttp.status>299) {
				if (verbose)
					alert("Error: Feed did not load from URL " + url2load + ". Error status: " + myXmlhttp.status + ".");
				if (obj.failCallback) {
					obj.failCallback(myXmlhttp.status, null);
				} else {
					obj.callback(null);
				}
			} else if (!myXmlhttp.responseXML || !myXmlhttp.responseXML.documentElement) {
				if (verbose)
					alert("Error: Feed did not load as XML from URL " + url2load + ". Error status: " + myXmlhttp.status + ".\n\nResponse from server:\n\n" + myXmlhttp.responseText);
				if (obj.failCallback) {
					obj.failCallback(myXmlhttp.status, myXmlhttp.responseText);
				} else {
					obj.callback(null);
				}
			} else {
				obj.callback(myXmlhttp.responseXML.documentElement);
			}
			myXmlhttp = false;
		}
	}
	myXmlhttp.send(postdata);
	return false;
}

