
var ajax1_debug_mode = false;

function ajax1_display(elem, state)
{
	if (document.getElementById(elem)) {
		if (state == 'reverse') {
			if (document.getElementById(elem).style.display == 'inline') {
				document.getElementById(elem).style.display = 'none';
				return 'off';
			} else {
				document.getElementById(elem).style.display = 'inline';
				return 'on';
			}
		}
		if (state == 'on') {
			document.getElementById(elem).style.display = 'inline';
		} else {
			document.getElementById(elem).style.display = 'none';
		}
	}
}

function setval(id, val)
{ 
	if (document.getElementById(id).src) {
		document.getElementById(id).src = val;
			//alert('a '+id+' '+val);
	} else {
		//if (document.getElementById(id).value) {
		// als een lege string bevat moet ie wel gevuld worden.
		if (document.getElementById(id).value || document.getElementById(id).value == '') {
			document.getElementById(id).value = val;
			//alert('b '+id+' '+val);
		} else {
			document.getElementById(id).innerHTML = val;
			//alert('c '+id+' '+val);
		}
	}
}

function        sprint_r(o)
{
        var ret = 'type = ' + typeof(o) + ' ';
        if (o == null) ret += 'null';
        if (typeof(o) == 'boolean') if (o) ret += 'true '; else  ret += 'false ';
        if (typeof(o) == "object") {
                for(e in o) {
                        ret = ret + e + '= "' + o[e] + '"\n';
                }
        }
        return ret;
}


function getval(o)
{
        if (typeof(o) != "object") o = document.getElementById(o);
	if (o.nodeName == 'CHECKBOX') {
		return o.checked;
	}
	if (o.nodeName == 'SELECT') {
		return o.options[o.selectedIndex].value;
	}
	if (o.value) {
		return o.value;
	}
	return o.innerHTML;
}

function js_exec(id, js)
{
	alert(id);
	alert(js);
	eval(js);
}

function ajax1_get_simple()	{ return ajax1_request_simple(setval, 'G', ajax1_get_simple.arguments); }
function ajax1_post_simple()	{ return ajax1_request_simple(setval, 'P', ajax1_post_simple.arguments); }

function ajax1_post_js()	{ return ajax1_request_simple(js_exec, 'P', ajax1_post_js.arguments); }

function ajax1_request_simple(callback, http_method, args)
{
	var xmlhttp;
	var data = '';
	var uri = '/';

	var html_id_name = args[0];
	var function_name = args[1];
	for (var i = 2; i < args.length; i++) {			// create uri (and post data)
		data += '&rsargs[]=' + escape(args[i]);
	}

//	var indicator = args[0];
//	var html_id_name = args[1];
//	var function_name = args[2];
//
//	ajax1_display(indicator, 'on');				// show indicator
//
//	for (var i = 3; i < args.length; i++) {			// create uri (and post data)
//		data += '&rsargs[]=' + escape(args[i]);
//	}

	http_method = http_method.charAt(0);			// create http method string
	http_method = http_method.toUpperCase() == 'P' ? 'POST' : 'GET';

	if (http_method == 'GET') {				// create get uri
		uri += (uri.indexOf('?') == -1) ? '?' : '&';
		uri += 'rs=' + escape(function_name);
		uri += '&rsrnd=' + new Date().getTime();
		uri += data;
		data = null;
	} else {
		data = 'rs='+escape(function_name)+data;
		//alert(data);
	}

	//setval('ajax1_debug', data);
	//ajax1_display('ajax1_debug', 'on');

	try {							// create XMLHTTP object
		xmlhttp = new ActiveXObject('Msxml2.XMLHTTP');
	} catch (e) {
		try {
			xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
		} catch (e) {
			if (typeof XMLHttpRequest != 'undefined') {
				xmlhttp = new XMLHttpRequest();
			} else {
				if (ajax1_debug_mode) alert('AJAX: Could not create connection object.');
				return;
			}
		}
	}

	xmlhttp.open(http_method, uri, true);			// send http request
	if (http_method == 'POST') {
		xmlhttp.setRequestHeader('Method', 'POST '+uri+' HTTP/1.1');
		xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	}
	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState != 4) return;
		if (ajax1_debug_mode) alert('AJAX: received ' + xmlhttp.responseText);
		var status = xmlhttp.responseText.charAt(0);
		var data = xmlhttp.responseText.substring(1);
		//var data = xmlhttp.responseText.substring(2);
		if (status == '-') {
			alert('AJAX Error: '+data);
		} else {
			// zou data moeten splitsen in vars zodat een variabele aantal argumenten
			// terug gegeven kan worden.
			callback(html_id_name, data);
		}
//		ajax1_display(indicator, 'off');		// show indicator
	}
	xmlhttp.send(data);
	delete xmlhttp;
	if (ajax1_debug_mode) alert('AJAX: '+function_name+' '+uri+' ('+data+')');
}

