
function sajax_debug(text) {
	if (sajax_debug_mode)
		alert(text);
}
		
function sajax_init_object() {
	sajax_debug("sajax_init_object() called..")
	
	var A;
 			
	var msxmlhttp = new Array(
		'Msxml2.XMLHTTP.5.0',
		'Msxml2.XMLHTTP.4.0',
		'Msxml2.XMLHTTP.3.0',
		'Msxml2.XMLHTTP',
		'Microsoft.XMLHTTP');
	for (var i = 0; i < msxmlhttp.length; i++) {
		try {
			A = new ActiveXObject(msxmlhttp[i]);
		} catch (e) {
			A = null;
		}
	}
	
	if(!A && typeof XMLHttpRequest != "undefined")
		A = new XMLHttpRequest();
	if (!A)
		sajax_debug("Could not create connection object.");
	return A;
}

var sajax_requests = new Array();

function sajax_cancel() {
	for (var i = 0; i < sajax_requests.length; i++) 
		sajax_requests[i].abort();
}

function addPostData(name, value){
	postDataAdd += "&" + name + "=" + escape(value);
}

function getPostData(){
	return postDataAdd;
}
function sajax_do_call(func_name, args) {

	var i, xObject, n;
	var uri;
	var post_data;
	var target_id;

	sajax_debug("in sajax_do_call().." + sajax_request_type + "/" + sajax_target_id);
	target_id = sajax_target_id;
	if (typeof(sajax_request_type) == "undefined" || sajax_request_type == "") 
		sajax_request_type = "GET";
	
	uri = sajax_remote_uri;
	if (sajax_request_type == "GET") {
	
		if (uri.indexOf("?") == -1) 
			uri += "?rs=" + escape(func_name);
		else
			uri += "&rs=" + escape(func_name);
		uri += "&rst=" + escape(sajax_target_id);
		uri += "&rsrnd=" + new Date().getTime();
		
		for (i = 0; i < args.length-1; i++) {
			//uri += "&rsargs[]=" + encodeURIComponent(args[i]);
			//uri += "&rsargs[]=" + encodeURIComponent($.toJSON(args[i]));
			uri += "&rsargs[]=" + encodeURIComponent(Object.toJSON(args[i]));
		}

		post_data = null;
	}else if (sajax_request_type == "POST") {
		post_data = "rs=" + escape(func_name);
		post_data += "&rst=" + escape(sajax_target_id);
		post_data += "&rsrnd=" + new Date().getTime();
		
		for (i = 0; i < args.length-1; i++) {Object.toJSON(args[i])
			//post_data = post_data + "&rsargs[]=" + escape(args[i]);
			//post_data = post_data + "&rsargs[]=" + encodeURIComponent($.toJSON(args[i]));
			post_data = post_data + "&rsargs[]=" + encodeURIComponent(Object.toJSON(args[i]));
		}
	}else {
		alert("Illegal request type: " + sajax_request_type);
	}
	
	xObject = sajax_init_object();
	if (xObject == null) {
		if (sajax_failure_redirect != "") {
			location.href = sajax_failure_redirect;
			return false;
		} else {
			sajax_debug("NULL sajax object for user agent:\n" + navigator.userAgent);
			return false;
		}
	} else {
		xObject.open(sajax_request_type, uri, true);
		// window.open(uri);
		
		sajax_requests[sajax_requests.length] = xObject;
		
		if (sajax_request_type == "POST") {
			xObject.setRequestHeader("Method", "POST " + uri + " HTTP/1.1");
			xObject.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		}
	
		xObject.onreadystatechange = function() {
			if (xObject.readyState != 4) 
				return;
		
			if(sajax_output_print){
			  	sajax_debug_mode = 1;
				sajax_debug("received " + xObject.responseText);
				sajax_debug_mode = 0;
			}
			sajax_debug("received " + xObject.responseText);
		
			var status;
			var data;
			var txt = xObject.responseText.replace(/^\s*|\s*$/g,"");
			status = txt.charAt(0);
			data = txt.substring(2);

			if (status == "") {
				// let's just assume this is a pre-response bailout and let it slide for now
			} else if (status == "-") 
				alert("Error: " + data);
			else {
				var script = document.createElement('script'); 
				script.type = 'text/javascript'; 
				script.src = sajax_base + '/javascript/javascript_buffer.js.php'; 
				document.getElementsByTagName('head')[0].appendChild(script); 
				
				if (target_id != "") 
					document.getElementById(target_id).innerHTML = eval(data);
				else {
					try {
						var callback;
						var extra_data = false;
						if (typeof args[args.length-1] == "object") {
							callback = args[args.length-1].callback;
							extra_data = args[args.length-1].extra_data;
						} else {
							callback = args[args.length-1];
						}
		
						callback(eval(data), extra_data);
					} catch (e) {
						sajax_debug_mode = 1;
									sajax_debug("Caught error " + e + ": Could not evalll " + data );
									sajax_debug_mode = 0;						
						setStatus('Er is een fout op de pagina opgetreden. Druk op <b>\'F5\'</b> om de pagina te vernieuwen');
						alert('Er is een fout op de pagina opgetreden. De pagina kan niet geladen worden. Druk op \'F5\' om de pagina te vernieuwen. Wij zijn op de hoogte gesteld van de fout en zullen het probleem zo snel mogelijk oplossen.');
						
						x_debug("Error " + e + ": Could not evalll " + data, function(){});
						
					  	if(sajax_output_print){
						  	sajax_debug_mode = 1;
							sajax_debug("Caught error " + e + ": Could not evalll " + data );
							sajax_debug_mode = 0;
						}
						//sajax_debug("Caught error " + e + ": Could not eval " + data );
					}
				}
				//document.getElementById('loadDiv').innerHTML = '<img src="./includes/images/load1.gif" title="Loading" />';
				//document.body.style.cursor = '';
			}
		}
	}
	
	post_data += getPostData();
	
	sajax_debug(func_name + " uri = " + uri + "/post = " + post_data);
	xObject.send(post_data);
	sajax_debug(func_name + " waiting..");

	delete xObject;
	return true;
}

function startLoader(cbDiv){
	cbbDiv=cbDiv;
	if(getEl(cbDiv)){
		getEl('sajaxLoader').src =  VIEW_HTTP + '/img/ajax/loader.gif'
		getEl(cbbDiv).style.opacity = '0.5';
		getEl(cbbDiv).style.filter = 'alpha(opacity = 50)';
	}else if(LIFE_MODE){
		alert("CB Div: " + cbDiv + " is niet gedefineerd!! sajax:startloader()");
	}
	setStatus('Pagina wordt opgevraagd.');
}

function setStatus(sStatus){
	getEl('status').innerHTML = sStatus; 		
}

function stopLoader(){
	if(getEl(cbbDiv)){
		getEl(cbbDiv).style.opacity = '1';
		getEl(cbbDiv).style.filter = 'alpha(opacity=100)';
	}
	
	if(getEl('sajaxLoader')){
		getEl('sajaxLoader').src = VIEW_HTTP + '/img/ajax/loader_ready.gif'
	}
	setStatus('Pagina is geladen.');
}

function cb_ajax(x){
	getEl(cbbDiv).innerHTML = x;
	setTimeout ('stopLoader()', 200);
}

		// remote scripting library
		// (c) copyright 2005 modernmethod, inc

		var sajax_debug_mode = false;
		var sajax_request_type = "POST";
		var sajax_output_print = false;
		var sajax_target_id = "";
		var sajax_failure_redirect = "";
		var postDataAdd = "";
		var sajax_remote_uri = "/nl/content/base/speciaaltransport";
		var sajax_base = "http://www.citotransport.nl/site/app/cito/view/v1";
				function x_debug() {
			sajax_do_call("debug",
				arguments);
		}
				function x_loadContent() {
			sajax_do_call("loadContent",
				arguments);
		}
				function x_loadFoto() {
			sajax_do_call("loadFoto",
				arguments);
		}
				function x_delFoto() {
			sajax_do_call("delFoto",
				arguments);
		}
		
