/**
 * ajaxPostForm - POST een form, verwacht een bepaalde xml response
 *                en geeft deze door aan aCallbackFunction
 *
 *  Verwachte response:
 *    <reponse>
 *        <returnValue>1</returnValue>
 *        <html>content die afgehandeld moet worden</html>
 *    </resonse>
 *
 * Prototype van aCallbackFunction: function (returnValue, html) { ... }
 *
 */
function ajaxPostFormDiv(aFormId, aCallbackFunction, aDiv) {
	// antwoord van de sever ontvangen
	var s = function(o) {
		// geldig xml antwoord?
		var resp = o.responseJSON;

		if (resp == null) {
			alert('Geen geldig antwoord van de server ontvangen: '+o.responseText);
			return;
		}
		
		// xml waardes ophalen
		//var returnValue = getTextByTagName(o.responseXML, 'returnValue');
		var returnValue = resp.responseStatus;
		//var html = getTextByTagName(o.responseXML, 'html');;
		var html = resp.response;
		
		// functie aanroepen dat wat met de returnValue & html doet
		aCallbackFunction(html, aDiv);
	}
	
	// 404 response of iets dergelijks
	var f = function(o) {
		alert('Ongeldige pagina opgevraagd\nError:\n' + o.responseText);
	}
	$(aFormId).request({onSuccess: s, onFailure: f});
	$(aFormId).disable();
}

function fill_div(html, aDiv) {
	$(aDiv).innerHTML = html;
	$(aDiv).style.visibility = 'visible';
}

/**
 *  getTextByTagName() - haalt tekst op in tagname
 *
 *  Voorbeeld: <response><result>Bla !</result><result>Nog een bla!</result></response>
 *
 * getTextByTagName(xmlDoc, 'result') == 'Bla !'
 *
 */
function getTextByTagName(aXmlDocument, aTagName) {
	var e = aXmlDocument.getElementsByTagName(aTagName).item(0);
	
	var data = '';
	// firefox deelt de data op in verschillende childNodes bij een bepaalde lengte :/
	for(var x=0; x < e.childNodes.length; x++) {
		data += e.childNodes[x].nodeValue;
	}
	
	return data;
}

/**
 * setErrors() - zet de error velden met de opgegeven invoer
 *
 *	Voorbeeld invoer:
 *		naam:Ongeldige naam opgegeven
 *		leeftijd:Ongeldige leeftijd opgegeven
 *
 *  Het script zoekt naar de velden 'naam_error' en 'leeftijd_error' 
 *  en zet daar de betreffende waarden
 *
 */
function setErrors(input) {
	var lines = input.split('\n');
	for(var x=0; x < lines.length; x++) {
		var pos = lines[x].indexOf(':');
		
		var key = lines[x].substr(0, pos);
		var value = lines[x].substr(pos+1);
		
		// veld bestaat?
		if ($(key + '_error'))
			$(key + '_error').innerHTML = value;
	}
}

function ajaxGetToDiv(aDivId, aUrl) {
	new Ajax.Updater(aDivId, aUrl, {method: 'GET'});
}

/**
* Function : dump()
* Arguments: The data - array,hash(associative array),object
*    The level - OPTIONAL
* Returns  : The textual representation of the array.
* This function was inspired by the print_r function of PHP.
* This will accept some data as the argument and return a
* text that will be a more readable version of the
* array/hash/object that is given.
*/
function dump(arr,level) {
var dumped_text = "";
if(!level) level = 0;

//The padding given at the beginning of the line.
var level_padding = "";
for(var j=0;j<level+1;j++) level_padding += "    ";

if(typeof(arr) == 'object') { //Array/Hashes/Objects
 for(var item in arr) {
  var value = arr[item];
  if(typeof(value) == 'object') { //If it is an array,
   dumped_text += level_padding + "'" + item + "' ...\n";
   dumped_text += dump(value,level+1);
  } else {
   dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
  }
 }
} else { //Stings/Chars/Numbers etc.
 dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
}
return dumped_text;
} 

