/*************************************************************************
 * AJAX CLASS v0.1
 *************************************************************************
 * Reinier van Grieken / Scheepens Reclame Adviseurs
 *************************************************************************
 * Laatste wijziging: 29 december 2008
 *************************************************************************
 * TO DO: genoeg!
 *************************************************************************/

function Ajax() {
	try { this.req = new XMLHttpRequest(); } catch (e) { try { this.req = new ActiveXObject("Msxml2.XMLHTTP"); } catch (E) { try { this.req = new ActiveXObject("Microsoft.XMLHTTP"); } catch (failed) { this.req = false; } } }
}

/*************************************************************************
 * Request URL
 *   - url:        uit de voeren URL
 *   - method:     opvraag methode: "GET" of "POST"
 *   - func:       functie uit te voeren bij succes (de eerste en enige parameter die meegegeven wordt aan deze functie is de output van de AJAX call)
 *   - params:     mee te geven parameters. Altijd in array-vorm {key:value}
 */
Ajax.prototype.request = function(url,method,func,params) {
	var self = this;
	this.userFunc = func;
	if (method.toLowerCase()=="get") {
		var get_params = "";
		var f=true; for (var key in params) { if (!f) get_params+="&"; else get_params+="?"; get_params+=key+"="+encodeURIComponent(params[key]); f=false; }
		this.req.open(method, url+get_params, true);
		this.req.onreadystatechange = this.success(self);
		this.req.send();
	}
	else if (method.toLowerCase()=="post") {
		var post_params = "";
		var f=true; for (var key in params) { if (!f) post_params+="&"; post_params+=key+"="+encodeURIComponent(params[key]); f=false; }
		this.req.open(method, url, true);
		this.req.onreadystatechange = this.success(self);
		this.req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		this.req.setRequestHeader('Content-Length', post_params.length);
		this.req.send(post_params);
	}
	else alert("invalid AJAX method");
}

/*************************************************************************
 * OnReadyStateChange wrapper
 */
Ajax.prototype.success = function(self) {
	return function() {
		if (self.req.readyState==4) {
			if (typeof(self.req.status)!='undefined') {
				if (self.req.status == 200) {
					self.userFunc(self.req.responseText);
				}
			}
		}
	}
}



function Sjax() {
	try { this.req = new XMLHttpRequest(); } catch (e) { try { this.req = new ActiveXObject("Msxml2.XMLHTTP"); } catch (E) { try { this.req = new ActiveXObject("Microsoft.XMLHTTP"); } catch (failed) { this.req = false; } } }
}

/*************************************************************************
 * Request URL
 *   - url:        uit de voeren URL
 *   - method:     opvraag methode: "GET" of "POST"
 *   - func:       functie uit te voeren bij succes (de eerste en enige parameter die meegegeven wordt aan deze functie is de output van de AJAX call)
 *   - params:     mee te geven parameters. Altijd in array-vorm {key:value}
 */
Sjax.prototype.request = function(url,method,func,params) {
	var self = this;
	this.userFunc = func;
	if (method.toLowerCase()=="get") {
		var get_params = "";
		var f=true; for (var key in params) { if (!f) get_params+="&"; else get_params+="?"; get_params+=key+"="+encodeURIComponent(params[key]); f=false; }
		this.req.open(method, url+get_params, false);
		this.req.send();
		this.userFunc(this.req.responseText);
	}
	else if (method.toLowerCase()=="post") {
		var post_params = "";
		var f=true; for (var key in params) { if (!f) post_params+="&"; post_params+=key+"="+encodeURIComponent(params[key]); f=false; }
		this.req.open(method, url, false);
		this.req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		this.req.setRequestHeader('Content-Length', post_params.length);
		this.req.send(post_params);
		this.userFunc(this.req.responseText);
	}
	else alert("invalid AJAX method");
}


