function createrequest() {
	if (window.XMLHttpRequest)
		return new XMLHttpRequest();
	else if (window.ActiveXObject)
		return new ActiveXObject("Microsoft.XMLHTTP");
	else
		return null;
}
function http_request(url, requestcomplete, method, data) {
	if (!method)
		method = "GET";
	if (!data)
		data = null;
		
	var http = createrequest();
	if (http != null) {
		http.onreadystatechange = function() { internal_statechange(requestcomplete, url, http); }
		http.open(method, url, true);
		
		http.setRequestHeader("Cookie", document.cookie);
		http.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
		if (method == "POST")
			http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		
		http.send(data);
		
		return false;
	} else {
		return true;
	}
}
function http_request_sync(url, method, data) {
	if (!method)
		method = "GET";
	if (!data)
		data = null;
		
	var http = createrequest();
	
	if (http != null) {
		http.open(method, url, false);
		
		http.setRequestHeader("Cookie", document.cookie);
		http.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
		if (method == "POST")
			http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		http.send(data);
		
		return http;
	}
}
function internal_statechange(requestcomplete, url, http) {
	try {
		if (http.readyState == 4 && http.status == 200) {
			requestcomplete(http);
		} else {
			if (http.readyState == 4)
				alert("AJAX error requesting '" + url + "'.\nReturn value: " + http.status + " (" + http.statusText + ")");
		}
	}
	catch(err) {}
}