var req = null;
var MS = false;

var Requests = new Array();
var reqDo = true;
var reqTimeout = null;

function oneReq(url,func){
	return {url:url,func:func};
}

function sendRequest(url,func){
	for (var i = 0;i<Requests.length;i++){
		if (Requests[i].url == url)
			return;
	}
	if (Requests.push)
		Requests.push(new oneReq(url,func));
	else
		Requests[Requests.length] = new oneReq(url,func);
	reqTimeout = setTimeout('doRequest()',1);
}
	
function doRequest(){
	if (arguments.length == 1)
		reqDo = true;
	if (reqDo && Requests.length > 0){
		Load(Requests[0].url,'new','getRequest');
		reqDo = false;
	}
	if (reqTimeout != null)
		clearTimeout(reqTimeout);
	if (Requests.length == 0){
		reqDo = true;
	} else {
		reqTimeout = setTimeout('doRequest(1)',5000);
	}
}

function getRequest(val){
	var temp = Requests[0];
	if (Requests.splice){
		Requests.splice(0,1);
	} else { 
		var temp1 = new Array();
		for (var i=1;i<Requests.length;i++){
			temp1[temp1.length] = Requests[i];
		}
		Requests = temp1;
	}
	reqDo = true;
	clearTimeout(reqTimeout);
	if (typeof temp == 'object')
		temp.func(val);
	if (Requests.length > 0){
		reqTimeout = setTimeout('doRequest()',1);
	}
}
function HTTPObj(){
    var H=null; 
    try{H=new ActiveXObject("Msxml2.XMLHTTP");MS = true;} 
    catch(e){  MS = false;
    try{ H=new ActiveXObject("Microsoft.XMLHTTP"); MS = true;} 
    catch(e2){ H=null; MS = false;}
    if (!H && typeof XMLHttpRequest!="undefined"){H=new XMLHttpRequest();}}return H;
}

function Load(url,typ,func){
	try{
		if(req && req.readyState != 0){
			req.abort()
		}
		req = HTTPObj();
		if (req) {
			req.onreadystatechange = function(){
				if (req.readyState == 4) {
				    if (parseInt(req.status) == 200 && req.responseText) {
						if (func != 'getRequest')
							eval(func + "(req.responseText);");
						else
							getRequest(req.responseText);
						req = null;
		            } else {
		                if (func != 'getRequest')
		                    eval(func + "('ERROR' + req.status);");
		                else
		                    getRequest('ERROR' + req.status);
		                req = null;						
					}
				}
			}
			req.open("GET", url, true);
			req.setRequestHeader("Charset", "ISO-8859-1");
			req.setRequestHeader("Connection", "close");
			if (MS){
				try{
				req.setRequestHeader("Content-Type","text/html");
				req.setRequestHeader("Cookie", "ms=fake");
				req.setRequestHeader("Cookie", document.cookie);
				} 
				catch(e){}
			}
			req.send(null);
				
		}
		else{
			Query = '';
			url = url.replace(/\&/gi,"~~~");url = url.replace(/\?/gi,"...");url = url.replace(/\=/gi,",,,");
			var iDiv=document.createElement("DIV");iDiv.style.position="absolute";iDiv.style.left="-10000";iDiv.style.top="-10000";iDiv.style.width="1";iDiv.style.height="1";
			var iFrame = document.createElement("IFRAME");iFrame.name="LoadingFrame";iFrame.id="LoadingFrame";iFrame.src="/inc/script/loader.asp?Typ=" + typ + "&func=" + func + "&Site=" + url + "&" + Query;iDiv.appendChild(iFrame);document.body.appendChild(iDiv);
		}
	}
	catch(e){if (func == 'getRequest')
				getRequest('ERROR');
				}
}	

// Posten von Daten, geht NICHT mit File-Daten
var httpRequest = false;
var httpResponse = false;
var httpMimeType = 'text/plain';

var httpPOSTrequests = [];

function makePOSTRequest(url, parameters, returnFunc, contentType) {
    var i;
    for (i = 0; i < httpPOSTrequests.length; i++)
    { if (!httpPOSTrequests[i].httpReq.active) { httpPOSTrequests[i].doSend(url, parameters, returnFunc, contentType); break; } }
    if (i == httpPOSTrequests.length) {
        httpPOSTrequests.push(new oneHTTPPostRequest(i));
        httpPOSTrequests[i].doSend(url, parameters, returnFunc, contentType);
    }
}

function oneHTTPPostRequest(iCount) {
    this.nr = iCount;
    this.isIE = false;
    this.fallBack = false;
    if (window.XMLHttpRequest) { // Mozilla, Safari, IE7...
        this.httpReq = new XMLHttpRequest();
    } else { // IE 6
        try { this.httpReq = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {
            try { this.httpReq = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { }
        }
        this.isIE = true;
    }
    if (!this.httpReq) {
        this.httpReq = {};
        this.fallBack = true;
        var iFrame = document.createElement('IFRAME');
        this.formTarget = ('XHTTP' + Math.random()).replace('.','');
        iFrame.name = this.formTarget;
        iFrame.id = this.formTarget;
        iFrame.style.display = 'none';
        document.body.appendChild(iFrame)
        this.isIE = (navigator.userAgent.indexOf('MSIE') > -1);
        if (window.frames[window.frames.length - 1].name == '') {
            this.isIE = true; window.frames[window.frames.length - 1].name = window.frames[window.frames.length - 1].frameElement.name;}
        this.watch = function() {
            if (window[this.formTarget].location.href.indexOf(this.urlToLoad) > -1) {
                this.httpReq.active = false;
                this.httpReq.httpResponse((this.httpReq.httpMimeType == 'text/plain') ? window[this.formTarget].document.body.innerHTML : window[this.formTarget].document);
        } else { setTimeout('httpPOSTrequests[' + this.nr + '].watch();', 100) } };
    }

    this.doSend = function(url, parameters, returnFunc, contentType) {
        if (this.fallBack) {
            this.httpReq.active = true;
            var elems, i, myForm, oneEl, oneInput;
            if (url.indexOf('?') < 0) url += '?A=A';
            var myForm = document.createElement('FORM');
            myForm.action = url;
            myForm.method = 'POST';
            myForm.target = this.formTarget;
            var params = parameters.split('&');
            oneInput = document.createElement('INPUT');
            oneInput.type = 'HIDDEN';
            for (var i = 0; i < params.length; i++) {
                elems = oneInput.cloneNode(true);
                oneEl = params[i].split('=');
                elems.name = oneEl[0];
                elems.value = oneEl[1];
                myForm.appendChild(elems);
            }
            this.urlToLoad = url;
            this.httpReq.httpMimeType = contentType;
            this.httpReq.httpResponse = returnFunc;
            document.body.appendChild(myForm);
            myForm.submit();
            this.watch();
            document.body.removeChild(document.body.lastChild);
            return;
        }
        if (this.httpReq.readyState != 0) { this.httpReq.abort() }
        if (this.httpReq.overrideMimeType) { this.httpReq.overrideMimeType(contentType); }
        this.httpReq.active = true;
        this.httpReq.httpMimeType = contentType;
        this.httpReq.httpResponse = returnFunc;
        this.httpReq.onreadystatechange = this.getResponse;
        this.httpReq.open('POST', url, true);
        if (this.isIE) {this.httpReq.setRequestHeader("Cookie", "ms=fake");this.httpReq.setRequestHeader("Cookie", document.cookie);}
        this.httpReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        this.httpReq.send(parameters);
    }

    this.getResponse = function() {
        var result;
        if (this.readyState == 4 || ((navigator.userAgent.indexOf('Gecko/2003') > -1) && this.readyState == 3)) {
            if (this.status == 200) {
                this.httpResponse((this.httpMimeType == 'text/plain') ? this.responseText : this.responseXML);
            } else { this.httpResponse('ERROR'); }
            this.active = false;
        }
    }
}
 
function postToHiddenFrame(url, parameters){
    var elems,i,myForm,oneEl,oneInput;
    if (url.indexOf('?') <0)
		url +='?A=A';
    url += "&actFrame=" + self.name;
    myForm = document.createElement('FORM');
    myForm.action = url;
    myForm.method = 'POST';
    myForm.target = 'dbaction';
    var params = parameters.split('&');
    oneInput = document.createElement('INPUT');
    oneInput.type = 'HIDDEN';
    for (var i=0;i<params.length;i++){
		elems = oneInput.cloneNode(true);
		oneEl = params[i].split('=');
		elems.name = oneEl[0];
		elems.value = oneEl[1];
		myForm.appendChild(elems);
    }
	document.body.appendChild(myForm);
    myForm.submit();
    document.body.removeChild(document.body.lastChild);
}

function getHiddenResponse(){
	if (opener)
		var tar = opener.top.frames.dbaction;
	else
		var tar = top.frames.dbaction;
	var result;
	if (httpMimeType == 'text/plain')
		result = tar.document.body.firstChild.nodeValue;
	else
		result = tar.document.body.innerHTML;
	httpResponse(result);
	httpResponse = false;
}

function getResponse() {
	var result;
	var moppelkotze = (navigator.userAgent.indexOf('Gecko/2003') > -1)
	if (httpRequest.readyState == 4 || (moppelkotze && httpRequest.readyState == 3)) {
		if (httpRequest.status == 200) {
			if (httpMimeType == 'text/plain')
				result = httpRequest.responseText;
			else
				result = httpRequest.responseXML;
			httpResponse(result);           
        } else {
            httpResponse('ERROR');
        }
        httpResponse = false;
	}
}