var AjaxLoader = new Object();
			
AjaxLoader.construct = function (url) {

    var thisObj = this;
	this.LOADING = 1;
	this.LOADED  = 2;
	this.WAITING = 3;
	this.READY   = 4;
				
	this.url  = url;
	this.post = false;
				
	this.post_params   = new Object();
	this.get_params    = new Object();
	this.get_addParams = false;
	this.returnParams  = '';
				
	this.callBack     = false;
	this.http_request = null;
								
	this.setSendMethod = function (method) {
		if(!(sendMethod = method.match(/^(POST|GET)$/i) ) ) { 
			sendError("ungültige Send Methode angegben. Wird automatisch auf GET eingestellt");
			this.send_method = 'GET';
		} else {
			if(sendMethod[0].match(/^(POST)$/i)) {
				this.post = true;
			}
			this.send_method = method;
		}
	} 
								
	this.addPostParam = function (key,value) {
		this.post_params[key] = value;
	}
				
	this.addGetParam  = function (key,value,additional) {
        this.get_params[key] = value;
		this.get_addParams   = additional;
	}				
				
	this.setCallBack = function (callBackFunc) {
		this.callBack = callBackFunc;
	}

	this.setOptionalCallBackParam = function (param) {
		this.returnParams = param;
	}
				
	this.initLoad = function () {
				
		try {
			if(window.XMLHttpRequest) {
			   var requestTest = this.http_request = new XMLHttpRequest();
			} else {
                           this.http_request = new ActiveXObject("Microsoft.XMLHTTP");
				
			}
		} catch (error) {
			alert(error);
		}
					
		try {
			
			var get_params  = '';
			var post_params = '';
			if(this.post) {
						
				/*
				    Prüfen ob Werte über POST gesendet werden 
				*/
				var pattern = /[\d\w]+\=[\d\w]+/;
						
				for(var key in this.post_params ) {

					if(post_params.match(pattern) ) {
					    post_params += '&'+key+"="+this.post_params[key];
					} else {
                                            post_params += key+"="+this.post_params[key];
					}
				}
				
			} else {
							
				/*
				   prüfen ob GET Parameter existieren und ob sie neu angehngt werden oder nur zusätzlich
				*/
							
			    var pattern    = /^\?.*/;
							
				for(var key in this.get_params) {
				
					if(get_params.match(pattern) || this.get_addParams) {
						get_params += '&'+key+'='+this.get_params[key];
					} else {
						get_params += '?'+key+'='+this.get_params[key];
					}
				}
							
			}
											
			this.http_request.open(thisObj.send_method,thisObj.url+get_params,true);

			this.http_request.onreadystatechange = function () {
				try {					
					
					if(thisObj.http_request.readyState == 4) {
						if(thisObj.http_request.status == '200') {
							if(thisObj.callBack) {
								thisObj.callBack(thisObj,thisObj.returnParams);
							}
						}
					}
				} catch (e) {
					alert(e);
				}							
			}
						
			if(this.post) this.http_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
                            this.http_request.send(post_params);
		
		} catch (error) {
			alert(error);
		}
	}
				
	function sendError(errorValue) {
		alert(errorValue);
	}	
}