// AJAX module by Gerben Geijteman 2008 (C)

// ------------------------------
// Function ajax:
// - Automatic browser detection
// - return function with argument(object)s
// - Cross browser valid
function ajax(url, query, returnFunction, argObj) {
	if(window.XMLHttpRequest) {
		var req = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		var aVersions = ["MSXML2.XMLHttp.5.0",
		"MSXML2.XMLHttp.4.0",
		"MSXML2.XMLHttp.3.0",
		"MSXML2.XMLHttp",
		"Microsoft.XMLHttp" ];
		
		for (var i = 0; i < aVersions.length; i++) {
			try {
				var req = new ActiveXObject(aVersions[i]);
			} catch (oError) {
				//Do nothing
				//alert(oError);
			}
		}
	}
    
    if(req != null) {
        req.onreadystatechange = function() {
        	processRequestChange(req, returnFunction, argObj);
        }		
        req.open("POST", url, true);
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");    
        req.send(query);
    }
}
// ------------------------------

// ------------------------------
// Function processRequestChange:
// - Displays loading instance
// ------------------------------
function loading(l)
{
	if(l==0)
	{
		var msgbox = document.getElementById("msgbox");
		msgbox.style.display = "none";
	}
	else
	{
		var msgbox = document.getElementById("msgbox");
		msgbox.innerHTML = "Bezig met laden..<br /><img src='../media/images/admin/ajax-loader.gif'>";
		msgbox.style.display = "block";
	}
}

// ------------------------------
// Function processRequestChange:
// - Ready status detection
// - Loading state activation
// ------------------------------
function processRequestChange(req, returnFunction, argObj){
	if(req.readyState == 4) {
		if(req.status == 200) {
			if(returnFunction) {
				returnFunction(req, argObj);
			}
			else
			{
				alert("Er is een fout opgetreden tijdens het verwerken van de informatie!");
			}
		}
		else if (req.status == 404) {
        	alert("De opgevraagde pagina kon niet gevonden worden!");
       	}
		else if (req.status == 403) {
        	alert("De toegang tot deze pagina is geweigerd!");
		}
        else {
            alert("Dit verzoek kon niet worden voltooid!");
        }
		
		loading(0);
	}
	else
	{
		loading();
	}
}
// ------------------------------

// ------------------------------
//Function onResult
// - Returns the responseText object
// ------------------------------
function onResult(req, obj) {
	if(req) {
		document.getElementById('result').innerHTML=req.responseText;
	}
}
// ------------------------------

//Function onResults
// - Returns the responseText object
// ------------------------------
function onResults(req, obj) {
	if(req) {
		document.getElementById(obj).innerHTML=req.responseText;
	}
}
// ------------------------------
