// ajax test
// ronan super, 2008

/**
* Dynamically load new data from a page
* @param	url						String		= ""	The URL to load
* @param	targetid				String		= ""	The target ID in which waiting text and result should be displayed
* @param	returnFunction			Function	= null	Function that should be called on result. Result text will not be displayed
*/
function loadPage(url, targetid, returnFunction)
{
	if (window.location.toString().indexOf('admin') < 0)
	{
		var aUrl = url.split('=');
		var page = aUrl[aUrl.length-1];
		window.location = "index.php?page=" + page;
		return false;
	}
	
	url += url.indexOf('?') != -1 ? '&' : '?'; // anti-cache url, damn that IE
	url += "random=" + Math.random();
//window.open(url);
	var rf;
	if (returnFunction)
	{
		rf = returnFunction;
	}
	else
		rf = null;
	var tg = document.getElementById(targetid);

	var http_request = false;
	
	if (window.XMLHttpRequest)
	{ // Mozilla, Safari, ...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType)
		{
			http_request.overrideMimeType('text/html');
		}
	}
	else if (window.ActiveXObject)
	{ // IE
		try
		{
			http_request = new ActiveXObject('Msxml2.XMLHTTP');
		}
		catch (e)
		{
			try
			{
				http_request = new ActiveXObject('Microsoft.XMLHTTP');
			}
			catch (e) {}
		}
	}

	if (!http_request)
	{
		alert('Error: Cannot create an XMLHTTP instance');
		return false;
	}

	http_request.onreadystatechange = function()
	{
		loadExternalHtmlResult(http_request, targetid, rf);
	}
	http_request.open('GET', url, true);
	http_request.setRequestHeader("Connection", "close");
	http_request.send(url);
}

// when HTTP state has changed, check if loading is done (state 4) and do 'the thing'
function loadExternalHtmlResult(http_request, targetid, func)
{
	var tg = document.getElementById(targetid);
	if(http_request.readyState == 4)	// loading is done
	{
		if (http_request.status == 200)	// valid page (not an error page like 404)
		{
			// if no return function has been specified, return the text
			if (func == null)
				//insertHTML(tg, http_request.responseText);		// Added by JG -> works also, but still error
				tg.innerHTML = http_request.responseText;
			// return function has been entered
			else
			{
				func(http_request.responseText); // call the function, text result as parameter
				//alert(http_request.responseText);
			}
		}
		else	// on error, display error in same way as above
		{
			if (func == null)
				tg.innerHTML = '<i>Error '+http_request.status+'</i>';
			else
			{
				if (rtaf)
					tg.innerHTML = '<i>Error '+http_request.status+'</i>';
				alert('<i>Error '+http_request.status+'</i>');
			}
		}
	}
	//setTimeout(hideLoader,150);
	//hideLoader();
}