var ajaxOk = true;
/**
 * Example:
 * <a href=\"index.php?mod=pippo\" onclick="return fn_to_ajax(this,'section');">sample link</a>
 */
function fn_to_ajax(a,div)
{
	//scommentare per bypassare
	//return true;
	var url = a.href;
	var xsreq;
	if (ajaxOk)
	{
		ajaxOk = false;
		fn_loading(div);
	}
	else
	{
		//alert ("redirect");
		window.location = url;
		return false;
	}

	if (window.XMLHttpRequest) {
		xsreq = new XMLHttpRequest();
	}
	else if (window.ActiveXObject) {
		xsreq = new ActiveXObject("Microsoft.XMLHTTP");
	}


	if (xsreq) {

		xsreq.onreadystatechange = function() {
			try{
				fn_ajDone(url, div,xsreq);
			}catch(e){
				//alert(e);
				window.location = url;
			}
		};
		xsreq.open("POST", url, true);
		xsreq.send("fn_to_ajax_href="+a.href+"&fn_to_ajax_div="+div);
	}
	return false;
}
/**
 * sample: <button onclick="fn_call_ajax_silent('index.php','section')" >pippo</button>
 */
function fn_call_ajax_silent(url,div)
{
	var xsreq;
	if (window.XMLHttpRequest) {
		xsreq = new XMLHttpRequest();
	}
	else if (window.ActiveXObject) {
		xsreq = new ActiveXObject("Microsoft.XMLHTTP");
	}
	if (xsreq) {
		xsreq.onreadystatechange = function() {
			try{
				fn_ajDone(url, div,xsreq);
			}catch(e){
				//alert(e);
				window.location = url;
			}
		};
		xsreq.open("POST", url, true);
		xsreq.send("");
	}
	return false;
}

function fn_call_ajax(url,div)
{
	var xsreq;
	fn_loading(div);
	if (window.XMLHttpRequest) {
		xsreq = new XMLHttpRequest();
	}
	else if (window.ActiveXObject) {
		xsreq = new ActiveXObject("Microsoft.XMLHTTP");
	}
	if (xsreq) {
		xsreq.onreadystatechange = function() {
			try{
				fn_ajDone(url, div,xsreq);
			}catch(e){
				//alert(e);
				window.location = url;
			}
		};
		xsreq.open("POST", url, true);
		xsreq.send("");
	}
	return false;
}
function fn_ajDone(url,divs,xsreq)
{
	
	if (xsreq.readyState == 4)
	{
		var listdivs = divs.split(',');
		var div;
		var i;
		var output;
		var el;
		var nodes;
		for (var idiv in listdivs)
		{
			
			div =  listdivs[idiv];
			output = xsreq.responseText;
			el = document.createElement("div");
			el.innerHTML = output;
			nodes = el.getElementsByTagName('div');
			for(i=0;i<nodes.length; i++) {
				if (nodes[i].id == div)
				{
					document.getElementById(div).innerHTML = nodes[i].innerHTML;
					fn_execJS (document.getElementById(div));
				}
			}
			nodes = el.getElementsByTagName('span');
			for(i=0;i<nodes.length; i++)
			{
				if (nodes[i].id == div)
				{
					document.getElementById(div).innerHTML = nodes[i].innerHTML;
					fn_execJS (document.getElementById(div));
				}
			}
		}
		ajaxOk = true;
	}
}
function fn_getScrollY() {
	var scrOfX = 0, scrOfY = 0;
	if( typeof( window.pageYOffset ) == 'number' ) {
		//Netscape compliant
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		//DOM compliant
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
	}
	return scrOfY;
//return [ scrOfX, scrOfY ];
}
function fn_getScrollX() {
	var scrOfX = 0, scrOfY = 0;
	if( typeof( window.pageYOffset ) == 'number' ) {
		//Netscape compliant
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		//DOM compliant
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
	}
	return scrOfX;
}
function fn_loading(_div)
{
	var div;
	div = document.createElement('div');
	div.innerHTML='loading...';
	oHeight = document.getElementsByTagName('body')[0].clientHeight + fn_getScrollY();
	oWidth = document.getElementsByTagName('body')[0].clientWidth + fn_getScrollX();
	oHeight=oHeight+"px";
	oWidth=oWidth+"px";
	try{
		div.style.backgroundColor='#000000';
		div.style.color='#ffffff';
		div.style.display='block';
		div.style.position='absolute';
		div.style.width=oWidth;
		div.style.height = "auto";
		div.style.top='0px';
		div.style.left='0px';
		div.style.textAlign='center';
		div.style.opacity='0.5';
		div.style.filter='alpha(opacity=50)';
	}
	catch(e)
	{
	}
	//document.getElementsByTagName('body')[0].appendChild(div);
	div.innerHTML = "<div style=\"color:#ffffff;margin-top:"+fn_getScrollY()+"px\" ><br />loading...<br /><br /><img  src='images/loading.gif' /><br /><br /></div>";

	var listdivs = _div.split(',');
	try{
		document.getElementById(listdivs[0]).appendChild(div);
	}catch(e){}
}

function fn_execJS (node) {

	var st = node.getElementsByTagName('SCRIPT');
	var strExec;

	var bSaf = (navigator.userAgent.indexOf('Safari') != -1);
	var bOpera = (navigator.userAgent.indexOf('Opera') != -1);
	var bMoz = (navigator.appName == 'Netscape');

	for(var i=0;i<st.length; i++) {
		if (bSaf) {
			strExec = st[i].innerHTML;
		}
		else if (bOpera) {
			strExec = st[i].text;
		}
		else if (bMoz) {
			strExec = st[i].textContent;
		}
		else {
			strExec = st[i].text;
		}
		try {
			eval(strExec);
		} catch(e) {
			//alert(e);
		}
	}

}

