
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) {
	
	if(getEl('sajax_load'))
		getEl('sajax_load').src = VIEW_HTTP + '/img/loading.gif';
	document.body.style.cursor = 'wait';

	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 != undefined)
			if (uri.indexOf("?") == -1) 
				uri += "?rs=" + escape(func_name);
			else
				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[]=" + 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);
		// windowOpener(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?'+ rand(1000000); 
				document.getElementsByTagName('head')[0].appendChild(script); 
				
				if (target_id != ""){
					if(document.getElementById(target_id) != undefined)
						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) {
						if(!LIFE_MODE){
							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 );
					}
				}
				getEl('sajax_load').src = VIEW_HTTP + '/img/loaded.gif';
				setStatus('');
				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 = ucFirst(sStatus); 		
}

var cbbDiv ='zoekResultaatDiv';

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);
}

function cb_alert(x){
	alert(x);
}

function cb_refresh(x){
	refresh();
}

function cb_header(x){
	header(x);
}

function cb_empty(x){}

		// 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 = "/en/solutions_innovation/infrastructure_intelligence";
		var sajax_base = "http://www.odysseusnl.com/odysseus/app/default/view/v1";
				function x_debug() {
			sajax_do_call("debug",
				arguments);
		}
				function x_out() {
			sajax_do_call("out",
				arguments);
		}
				function x_setBezoekEind() {
			sajax_do_call("setBezoekEind",
				arguments);
		}
		
