function httpRequest(request_url,request_args,callback_function,callback_args) {
 /* string request_url = eg. http://example.com/data.php
  * string request_arg = arguments for function in form: 'value=1&name=tag'
  * string callback_function = function to call back in form 'receive_current_tag'
  * mixed callback_arg = one value or array of arguments it's just passed thru */

	var http_request = false;
	// url-base for ssl-proxy
	if(typeof(ssl) == 'string' && request_url.indexOf('/') == 0) { // if ssl and request_url starts with slash (not http...)
	
		var base = document.getElementsByTagName('base')[0].href;
		base = base.replace('http://','');
		if(base.lastIndexOf('/')+1 == base.length) { //remove trailing slash if present
			base = base.substr(0,base.length-1);
		}
		request_url = 'https://' + ssl + '/' + base + request_url;
	}
	//
	//
	if (window.XMLHttpRequest) { // Mozilla, Safari, ...
		http_request = new XMLHttpRequest();
		//if (http_request.overrideMimeType) {
			//http_request.overrideMimeType('text/xml');
			// will cause JavaScript Console errors in Firefox 1.5 or later!
		//}
	}else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		}catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			}catch (e) {}
		}
	}
	if (!http_request) {
		return false;
	}
	http_request.onreadystatechange = function() { callback(http_request,callback_function,callback_args); }
	if(request_args) {
		http_request.open('POST',request_url,true);
		http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		http_request.send(request_args);
	}else {
		http_request.open('GET',request_url,true);
		http_request.send(null);
	}
	return true;
}

function callback(http_request,callback_function,callback_args) {

	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			if(callback_function) {
				callback_function(http_request.responseText,callback_args);
			}
		}else {
			// Fehlerauswertung
		}
	}

}
