ajax = function () {
	ajax.busy = false;
	var xmlHttp = null;
	try {
		// Firefox, Opera 8.0+, Safari
			xmlHttp=new XMLHttpRequest();
		}
	catch (e) {
		// Internet Explorer
		try {
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			try {
				xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e) { 
				alert("Your browser does not support AJAX!");
				return false;
			}
		}
	}
	if (xmlHttp == null) {
		alert ("Browser does not support HTTP Request");
		return;
	}
	ajax.object = xmlHttp;
	ajax.headers = Array();
	return ajax;

};

ajax.abort = function() {
	ajax.object.abort();
}


ajax.doRequest = function (method, URL, asym, callbackmethod, callbackfunc) {
		ajax.object.abort();
		sendvars = ajax.vars;
		if (URL == "")
			var URL = "ajax.php";
		if (method == "GET") {
			URL = URL + "?" + sendvars;
			vars = null;	
		}
		ajax.object.open(method,URL,asym);
		
		if (method == "POST") {
			if (ajax.headers.length == 0)
				ajax.headers = Array() ;
			ajax.headers['Content-Type'] = "application/x-www-form-urlencoded";
			ajax.headers["Content-Length"] = sendvars.length;
			ajax.headers['Connection'] = "Close";
			for (var name in ajax.headers) {
					//alert (name + "=" + headers[name]);
					ajax.object.setRequestHeader(name, ajax.headers[name]);
			}
		}
		if (window.debug) {
			callbackmethod = "alert";
			alert (ajax.vars);
		}
		ajax.object.onreadystatechange = function() { ajax.onload(callbackmethod,callbackfunc); }
		ajax.object.send(sendvars);
		return true;
}

ajax.reload = function (msg) {
	if (msg != "false")
		alert (msg);
	document.location.reload();
}

ajax.output = function () {
	alert ("Sorry, no output function is set");
}

ajax.goBack = function (msg) {
	if (msg != "false")
		alert (msg);
	var arr = PATH.split("/");
	arr.pop(); 
	arr.pop();
	document.location = "?" + arr.join("/");
}
ajax.goToNext = function (msg, location) {
	if (msg != "false")
		alert (msg);
	document.location = "?" + PATH + location;
}
ajax.goToInstead = function (msg, location) {
	if (msg != "false")
		alert (msg);
	var arr = PATH.split("/");
	arr.pop(); 
	arr.pop();
	document.location = "?" + arr.join("/") + "/" + location;
}		
ajax.onload = function (callbackmethod,callbackfunc) {
	if (ajax.object.readyState==4) {
		if (ajax.object.status==200) {
			switch (callbackmethod) {
				case "reload":
					document.location.reload();
					break;
				case "alert":
					alert (ajax.object.responseText);
					document.location.reload();
					break;
				default:
					var xml = ajax.object.responseXML;
					switch (xml.getElementsByTagName("method")[0].childNodes[0].nodeValue) {
						case "reload":
							ajax.reload(xml.getElementsByTagName("msg")[0].childNodes[0].nodeValue);
							break;
						case "alert":
							alert (xml.getElementsByTagName("msg")[0].childNodes[0].nodeValue);
							break;
						case "output":
							ajax.output();
							break;
						case "goback":
							ajax.goBack(xml.getElementsByTagName("msg")[0].childNodes[0].nodeValue);
							break;
						case "gotonext":
							ajax.goToNext(xml.getElementsByTagName("msg")[0].childNodes[0].nodeValue, xml.getElementsByTagName("location")[0].childNodes[0].nodeValue);
							break;
						case "gotoinstead":
							ajax.goToInstead(xml.getElementsByTagName("msg")[0].childNodes[0].nodeValue, xml.getElementsByTagName("location")[0].childNodes[0].nodeValue);
							break;
					}
					break;
			}
			if (typeof(callbackfunc) == "function") {
				callbackfunc();
			}
		} else {
			alert ("Error, no reply recieved");
		}
	} 
}

// /*

// */
