function AjaxRequest () {
    var reqobj;
    var callback;
    var loader;
    var loads = 0;
    
    this.start = function (hostfunc, params, callback_func, loader_obj) {
    		
    		loads = 0;
    		
				try{
					reqobj = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch(Error){
					try{
						reqobj = new ActiveXObject("MSXML2.XMLHTTP");
					}
					catch(Error){
					 try{
						reqobj = new XMLHttpRequest();
					 }
					 catch(Error){
						//hier auf die alternative verweisen
						goToPermlink();
					 }
					}
				}
    		
    		
        callback = callback_func;
        loader = loader_obj;
        reqobj.onreadystatechange = this.handler;
        if(params == ''){//nothing to send along.
        	reqobj.open ("GET", hostfunc, true);
        	reqobj.send (null);
        }
        else{//got some params to send along.
        	reqobj.open("POST", hostfunc, true);
        	reqobj.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
        	reqobj.send (getParamStr(params));
        }
    }

    this.handler = function () {
        if(reqobj.readyState == 3){
        	//i'm still loading
        	if(loads == 0){
        		loads++;
        		if(document.getElementById){
        			var loadele = document.getElementById(loader);
        			loadele.innerHTML = 'loading..';
        		}
        	}
        	
        	
        }
        else if (reqobj.readyState == 4) {//i'm finished
            if (reqobj.status == 200) {
                callback(reqobj);
            }
            else {
                callback(reqobj);
            }
        }
    }
    
    getParamStr = function(paramArr){
    	if(paramArr == ''){
    		return '';
    	}
    	else{
    		var returnstr = '';
    		for(var i = 0; i < paramArr.length; i++){
    			if (i % 2 > 0){//ungerade, param wert
    				returnstr += encodeURIComponent(paramArr[i]);
    			}
    			else{//i gerade, param name
    				if(i == 0){
    					returnstr += paramArr[i] + '=';
    				}
    				else{
    			 		returnstr += '&' + paramArr[i] + '=';
    				}
    			}
    		}
    		return returnstr;
    	}		
    	return '';
    }
    
}
