/*
	AJAX Library
	v 1.0.0
*/

var ajaxReq, callThisFunc;
var funcDone = false;
var channelFree = true;

function ajax(url, callFunc, post) {
	if (! channelFree) {
		setTimeout('ajax("'+ url +'", "'+ callFunc +'", "'+ post +'")', 250);
		return;
	}
	channelFree = false;
	funcDone = false;
	if (! isset(callFunc)) var callFunc = '';
	callThisFunc = callFunc;
	if (url.indexOf('?') == -1) url += '?'; else url += '&';
	url += IDgen();
	if (window.XMLHttpRequest) {
		ajaxReq = new XMLHttpRequest();
		ajaxReq.onreadystatechange = processReqChange;
		if (! isset(post)) {
			ajaxReq.open("GET", url, true);
			ajaxReq.send(null);
		} else {
			ajaxReq.open("POST", url, true);
			ajaxReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded, charset=utf-8');
			ajaxReq.send(post);
		}
	} else if (window.ActiveXObject) {
		ajaxReq = new ActiveXObject("Microsoft.XMLHTTP");
		if (ajaxReq) {
			ajaxReq.onreadystatechange = processReqChange;
			if (! isset(post)) {
				ajaxReq.open("GET", url, true);
				ajaxReq.send();
			} else {
				ajaxReq.open("POST", url, true);
				ajaxReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded, charset=utf-8');
				ajaxReq.send(post);
			}
		}
	}
}

function processReqChange() {
	if (ajaxReq.readyState == 4) {
		if (ajaxReq.status == 200) {
			if (! funcDone) {
				funcDone = true;
				eval(callThisFunc);
			}
		} else alert('Server returned error code '+ ajaxReq.status);
		channelFree = true;
	}
}
