// <![CDATA[
function Ajax() {
	
	var handle_function=null;
	var handle_function_par=null;
	
	var get_req_object = function(){
		var req = null;
		try {
			req = new ActiveXObject("MSXML2.XMLHTTP");
		}
		catch (err_MSXML2) {
			try {
			  req = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (err_Microsoft) {
			  if (typeof XMLHttpRequest != "undefined") 
			    req = new XMLHttpRequest;
			}
		}
		
		return req;
	}
	
	var req = get_req_object();
	
	var get_readyfunction = function(){
		if(handle_function){
			var aufruf = handle_function + "(";
			if(handle_function_par){
				for(var i=0;i<handle_function_par.length;i++){
					if(i>0){
						aufruf = aufruf + ",";
					}
					aufruf = aufruf + "'"+handle_function_par[i]+"'";
				}
			}
			aufruf = aufruf + ")";
			eval(aufruf);
		}
	}
	
	var	handleStateChange = function(req_obj){
		req_obj = req;
		try{
			if(req_obj.readyState==4){
				try{
					if(req_obj.status == 200){
						get_readyfunction();
					}
				}
				catch(e){
					return false;
				}
			}
		}
		catch(e){
			return false;
		}
	}
	
	this.set_handlefunction = function(f){
		handle_function = f;
		if(this.set_handlefunction.arguments.length > 1){
			handle_function_par = new Array();
			var i=0;
			for(var j=1;j<this.set_handlefunction.arguments.length;j++){
				handle_function_par[i] = this.set_handlefunction.arguments[j];
				i++;
			}
		}
	}
	
	
	this.send_request = function(typ,ziel,synkron,string){
		if(req){
			req.open(typ,ziel,synkron);
			
			if(typ=="POST"){
				req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
			}
			
			if(synkron==true){
				req.onreadystatechange = handleStateChange;
			}
			
			if(!string){
				string = null;
			}
			
			req.send(string);
			
			if(synkron==false){
				get_readyfunction();
			}
		}
	}
	
	this.get_request_object = function (){
		return req;
	}
};
//]]>