/**
 * @version		1.0.3 - 6 oktober 2008
 * 
 * @copyright	1.0.3,	6 oktober 2008,		Jan Niemantsverdriet,	vSimpleAjaxSend geeft nu altijd een boolean terug (naam zo gehouden voor backwords compatibility)
 * @copyright	1.0.2,	9 september 2008,	Jan Niemantsverdriet,	Ajax verzoek kan weer geannuleerd worden
 * @copyright	1.0.1,	1 juli 2008,		Jan Niemantsverdriet,	Door als callback functie null op te geven kan je eenrichtingsverkeer behalen
 * @copyright	1.0.0,	29 mei 2008,		Jan Niemantsverdriet,	Gemaakt
 */

/**
 * Het ajax object
 */
var oSimpleAjaxRequestObject = false;

/**
 * De functie waar het resultaat van het ajax verzoek heen wordt gestuurd
 */
var hAjaxSimpleReceiveFunction = null;
 
/**
 * Verstuurd een ajax verzoek
 * 
 * @param string a_sURL					de url waar het verzoek heen wordt verzonden
 * @param string a_sPost				de gegevens die naar dat adres moeten worden verzonden
 * @param handle a_hReceiveFunction		de functie die het resultaat af zal handelen
 */
function vSimpleAjaxSend(a_sURL, a_sPost, a_hReceiveFunction) {
	try
    {
    	// Firefox, Opera 8.0+, Safari
		oSimpleAjaxRequestObject = new XMLHttpRequest();
	    if (oSimpleAjaxRequestObject.overrideMimeType) {
	    	oSimpleAjaxRequestObject.overrideMimeType('text/xml');
	    }
    }
  	catch (e)
    {
    	// Internet Explorer
		try
		{
			oSimpleAjaxRequestObject = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try
			{
				oSimpleAjaxRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e)
			{
				hErrorFunction(2, 3, "Deze browser ondersteunt geen Ajax");
				return false;
			}
		}
	}
	hAjaxSimpleReceiveFunction = a_hReceiveFunction;
	oSimpleAjaxRequestObject.onreadystatechange = vSimpleAjaxProccesState;
	oSimpleAjaxRequestObject.open('POST', a_sURL, true);
    oSimpleAjaxRequestObject.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	oSimpleAjaxRequestObject.send(sURLEncode(a_sPost));
}

/**
 * Controleerd of het verzoek (succesvol) is afgerond en geeft het resultaat aan de ingestelde functie
 */
function vSimpleAjaxProccesState() {
	if (oSimpleAjaxRequestObject.readyState == 4) {
		if (oSimpleAjaxRequestObject.status == 200) {
 			if (hAjaxSimpleReceiveFunction !== null) hAjaxSimpleReceiveFunction(oSimpleAjaxRequestObject);
		} else {
			hErrorFunction(0, 2, "Opdracht kon niet worden uitgevoerd");
			hErrorFunction(2, 2, "Ajax verzoek is niet correct teruggekomen (status: " + oSimpleAjaxRequestObject.status + ")");
		}
	}	
}

/**
 * Breekt het huidige verzoek af
 *
 * @since 1.0.2 - 9 september 2008
 */
function vSimpleAjaxClear() {
	oSimpleAjaxRequestObject = false;
	hAjaxSimpleReceiveFunction = null;
}