// Aantal milisec waarna Ajax moet timeouten
var scriptTimeout = 8000;
var returntype = true;

function ajaxPaginaLaden(aanTeRoepenScript, functieNaResponse)
{
	var ajaxRequest;

	try
	{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	}
	catch (e)
	{
		// Internet Explorer Browsers
		try
		{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try
			{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e)
			{
				alert("Deze browser support geen AJAX!");
				returntype = false;
			}
		}
	}


	// Een timeout instellen voor het aan te roepen script
    var timeoutID = window.setTimeout(function() 
									{
										ajaxRequest.abort();
										alert('Timeout tijdens het verbinding maken met de server!');
										returntype = false;
									}, scriptTimeout);


	ajaxRequest.onreadystatechange = function()
	{
		/*
		0 (uninitialized) 
		1 (loading) 
		2 (loaded) 
		3 (interactive) 
		4 (complete) 
		*/

		if (ajaxRequest.readyState == 1)
		{		
			document.body.style.cursor = "wait";
		}

		if (ajaxRequest.readyState == 4)
		{
			// Response ontvangen, de timeout weghalen
			window.clearTimeout(timeoutID); 

			document.body.style.cursor = "";

			// Hebben we wel een status ontvangen? (script afgebroken door de server?)
			try
			{
				var bogus = ajaxRequest.status;
			}
			catch (e)
			{
				alert("Geen antwoord van de server ontvangen! \nEr een probleem met de netwerk of internet verbinding!");
				returntype = false;
			}

			if (ajaxRequest.status == 200)
			{
				var deResponseText = ajaxRequest.responseText;

				try 
				{
					// De functie aanroepen en de response meegeven
					eval(functieNaResponse + '("' + deResponseText + '");');
					returntype = true;
				}
				catch(e)
				{
					returntype = false;
				}
			}
			// Geen 200 OK ontvangen, foutafhandeling...
			else
			{
				alert("Er ging iets mis, AJAX returnde: \nFout " + ajaxRequest.status + ": " + ajaxRequest.statusText);
				returntype = false;
			}
		}
	}

	// Request versturen
	ajaxRequest.open("GET", aanTeRoepenScript, true);
	ajaxRequest.setRequestHeader("If-Modified-Since", new Date(0));
	ajaxRequest.send(null);

	return returntype;
}

