// JavaScript Document
var http;
var XMLHttpFactories = [
	function () {return new XMLHttpRequest()},
	function () {return new ActiveXObject("Msxml2.XMLHTTP")},
	function () {return new ActiveXObject("Msxml3.XMLHTTP")},
	function () {return new ActiveXObject("Microsoft.XMLHTTP")}
];

function createXMLHTTPObject() {
	var xmlhttp = false;
	for (var i=0;i<XMLHttpFactories.length;i++) {
		try { xmlhttp = XMLHttpFactories[i]();}
		catch (e) {continue;}
		break;
	}
	if(!top.gAJAX_requests){
		top.gAJAX_requests=[];
	}
	return xmlhttp;
}

function ajax_sendRequest(url,callback,_params,_extra) {
	if (!http) top.http=createXMLHTTPObject();
	if (!top.gAJAX_requests)top.gAJAX_requests=[];
	if (top.gAJAX_requests[_params]==1){
		db('REQUEST ALREADY BEING PROCESSED:'+_params);
		return;
	}else{
		db('CREATE REQUEST:'+_params);
		top.gAJAX_requests[_params]=1;			
	}
	url=gen_app_dir(top.siteRootDir)+url;
	http.open("POST",randomise_url(url),true);
	http.onreadystatechange = function () {
		if(http.readyState == 4){
			top.gAJAX_requests[_params]=0;			
		}
		if (http.readyState == 4  && http.status == 200){
			callback(http,_extra);
		}else if(http.readyState == 4  && http.status != 200){
			db('<h4 style="color:red">ERROR</h4>'+http.responseText);
		}
	}
	if(!_params){
		http.send(null);
	}else{
		db('<h4>PARAMETERS</h4>'+_params.split('&').join('<br>'))
		http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		http.setRequestHeader("Content-length", _params.length);
		http.setRequestHeader("Connection", "close");
		http.send(_params);
	}
}

function randomise_url(url) {
	return url+(url.indexOf('?')!=-1?'&':'?')+"uid="+Math.floor(Math.random()*1000000000);
}

function ajax_callback_default(res) {
	if (res.responseText.length) {
		var data=eval('(' + res.responseText + ')');
	}
}
