//Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject() {
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		alert("Uw browser ondersteunt geen AJAX!");
	}
}

function ajaxDoRequest(url, arguments, divtofill, onReadyFunc) {
	//Our XmlHttpRequest object 
	var reqObj = getXmlHttpRequestObject();

	if (reqObj.readyState == 4 || reqObj.readyState == 0) {
	
		var baseurl = document.getElementsByTagName('base')[0].href;
		
		url = baseurl + url + '?';
		// arguments is an array which contains all form elements which hold
		// any values
		for (i=0; i<arguments.length; ++i) {

			var argument = arguments[i];
			//alert('argument: ' + argument);
			if (argument.indexOf("=") > 0) {
				//argumentVal supplied via array
				var argumentVal = escape(argument.substr(argument.indexOf("=")+1));
				argument = argument.substr(0, argument.indexOf("="));
			} else {
				var argumentVal = escape(document.getElementById(argument).value);
			}
			
			url = url + argument + '=' + argumentVal + '&';
			//alert(url);
		}

		//alert(url);
		reqObj.open("GET", url, true);
		/* 
		 * http.readyState heeft vijf verschillende mogelijke waarden: 0 = niet geset, 1 = aan het laden, 2 = geladen, 
		 * 3 = actief, 4 = afgehandeld (de situatie die we willen)
		 * http.status heeft er velen, een bekender voorbeeld is 404 (page not found). 200 betekend dat de pagina 'OK' is
		 */
		reqObj.onreadystatechange = function() { 
			if (reqObj.readyState==4)
				if (reqObj.status==200) {
					if (onReadyFunc == '') {
						// Use the general onready funcion
						ajaxOnReady(reqObj, divtofill);
					} else {
						// Specific function
						onReadyFunc(reqObj, divtofill);
					}
				}
		}
		reqObj.send(null);
	}		
}

//Called when the AJAX response is returned.
function ajaxOnReady(reqObj, divtofill) {
	document.getElementById(divtofill).innerHTML = reqObj.responseText;
}   
