/**
 * designer.js
 *
 * Dit bestand bevat alle javascript om ajax goed te laten werken
 *
 * @author Martin Borsboom
 */

/** var ActiveXObject */
var xmlHttp = null;

/**
 * getXMLHTTPRequest
 * Deze functie maakt een activexobject aan om ajax mee af te handelen
 */
function getXMLHTTPRequest() {
	var XMLHTTPObject = null;
	
	if(window.XMLHttpRequest) {
		XMLHTTPObject = new XMLHttpRequest();		
	}
	else {
		XMLHTTPObject = new ActiveXObject("Microsoft.XMLHTTP");
	}

	return XMLHTTPObject;
}

/**
 * doAjaxGet
 * deze functie voert ajax voor je uit met als method get
 *
 * @param string url is de url van je ajax file
 * #param string query zijn de paramers die je wilt meegeven
 * @param string callback is de functie die moet worden aangeroepen
 */
function doAjaxGet(url, query, callback) {
	
	try {
		xmlHttp = getXMLHTTPRequest();
		
		if(xmlHttp != null) {
			if(query) {
				
				var newQuery = '';
				var splitQuery = query.split('&');
				var firstRecord = true;
				
				for(var qc = 0; qc < splitQuery.length; qc++) {
					if(!splitQuery[qc] || splitQuery[qc].indexOf('date=') != -1 || splitQuery[qc].indexOf('ajax=true') != -1) {
						continue;
					}
					if(firstRecord == false) {
						newQuery += '&';
					}
					else {
						firstRecord = false;
					}
					newQuery += splitQuery[qc];
				}
				
				query = newQuery;
				url = url + '?' + query + '&date=' + Date() + '&ajax=true';
			}
			else {
				url = url + '?date=' + Date() + '&ajax=true';
			}
			
			xmlHttp.onreadystatechange = function() {
				eval(callback);
			};
			
			xmlHttp.open("GET", url, true);
			xmlHttp.send(null);
		}
	}
	catch(e) {
		return;
	}
}

/**
 * doAjaxPost
 * deze functie voert ajax voor je uit met als method post
 *
 * @param string url is de url van je ajax file
 * #param string params zijn de parameters die je wilt meesturen
 * @param string callback is de functie die moet worden aangeroepen
 */
function doAjaxPost(url, params, callback) {
	
	try {
		xmlHttp = getXMLHTTPRequest();
		
		if(xmlHttp != null) {
			url = url + '?date=' + Date() + '&ajax=true';
			
			xmlHttp.onreadystatechange = function() {
				eval(callback);
			};
			
			xmlHttp.open("POST", url, true);
			xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');			
			xmlHttp.send(params);
		}
	}
	catch(e) {
		return;
	}
}

/**
 * addAjaxParam
 * om een param toe te voegen aan een string in ajax
 *
 * @param params zijn de huidige parameters
 * @param string name is de naam van de parameter
 * @param string value is de value van de parameter
 */
function addAjaxParam(params, name, value) {
	if(params != '') {
		params += '&';
	}
	return params + name +'='+ escape(value);	
}
