//``````````````````````````````````````````````````````````````
// AJAX functions
//``````````````````````````````````````````````````````````````
var ajax_http = ajax_getHTTPObject();
var ajax_callback = '';
var ajax_return = '';
var ajax_isWorking = false;

function doAjax(url,params,type,callback_func){
	if (ajax_isWorking){
		setTimeout('doAjax(\''+url+'\',\''+params+'\',\''+type+'\',\''+callback_func+'\')',300);
	}else{
		ajax_http.open(type, url + '?' + params, true);
		ajax_isWorking = true;
		ajax_callback=callback_func; // set local var to global.
		ajax_http.onreadystatechange = ajax_handleHttpResponse;
		ajax_http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		ajax_http.setRequestHeader("Content-length", params.length);
		ajax_http.setRequestHeader("Connection", "close");
		ajax_http.send(params);
		ajax_isWorking=true;
	}
}

function ajax_getHTTPObject() {
	var ajax_xmlhttp;
	if (!ajax_xmlhttp && typeof XMLHttpRequest != 'undefined') {
		try {
			ajax_xmlhttp = new XMLHttpRequest();
		}
		catch (e) {
			ajax_xmlhttp = false;
		}
	}else if(typeof window.ActiveXObject != 'undefined'){
		ajax_xmlhttp = new ActiveXObject('Msxml2.XMLHTTP');
	}
	return ajax_xmlhttp;
}

function ajax_handleHttpResponse() {
	//alert(ajax_http.readyState);
	//while(ajax_isWorking){
		if (ajax_http.readyState == 4) {
			ajax_return = ajax_http.responseText;
			eval(ajax_callback);
			ajax_isWorking=false;
			//alert(ajax_callback);
		/*}else if(ajax_http.readyState == 3){
			// allow extra time to load.
			ajax_return = 'Loading';
			eval(ajax_callback);*/
		}/*else{
			setTimeout('ajax_handleHttpResponse()',500);
		}*/
	//}
}