// allgemeine Request-Funktion
// Parameter:
// 1. url
// 2. callback-Methode fuer async-Behandlung
// 3. Methode (dft: GET)
// 4. Body des Requests (fuer POST-Parameter, dft: null)
// 5. headers Ein Feld, in dem Parameter-Wert-Paare stehen muessen
//    aus headers[2*i] der Parameter (i>=0) auf headers[2*i+1] der Wert
// 6. Uebertragungsmodus: (dft: true fuer asynchron)
ajaxRequest = function(url, callback, method, body, headers, sync) {
	this.url			=url;
	this.handleResponse	=callback || function() {};
	this.method			=method	  || "GET";
	this.body			=body	  || null;;
	this.headers		=headers  || false;
	this.sync			=sync	  || true;
	this.abortReq		=false;

	this.request = (window.XMLHttpRequest) 
	             ? new XMLHttpRequest()
				 : (	(window.ActiveXObject)
				 	  ? new ActiveXObject("Microsoft.XMLHTTP")
					  : false
					);

	this.isValidConnection = function() { return this.request ? true : false; };


	this.execRequest = function() {
		this.request.open(this.method,this.url,this.sync);
		this.request.setRequestHeader('Pragma','no-cache');
		this.request.setRequestHeader('Cache-Control','must-revalidate');
		this.request.setRequestHeader('If-Modified-Since','Sat, 1 Jan 2000 00:00:00 GMT');
		if ( this.headers) {
			for(var i=0;i<this.headers.length;i+=2) {
				this.request.setRequestHeader(this.headers[i],this.headers[i+1]);
			}
		}
		this.request.onreadystatechange = this.handleResponse;
		this.request.send(this.body);
	};
};


// allgemeine Request-Funktion fuer die synchrone Uebertragung
// Parameter:
// 1. url
// 2. callback-Methode fuer async-Behandlung
// 3. Methode (dft: GET)
// 4. Body des Requests (fuer POST-Parameter, dft: null)
// 5. headers Ein Feld, in dem Parameter-Wert-Paare stehen muessen
//    aus headers[2*i] der Parameter (i>=0) auf headers[2*i+1] der Wert
// 6. Uebertragungsmodus: (dft: true fuer asynchron)
ajaxSynchronRequest = function(url, callback, method, body, headers) {
	this.url			=url;
	this.handleResponse	=callback || function() {};
	this.method			=method	  || "GET";
	this.body			=body	  || null;;
	this.headers		=headers  || false;
	this.sync			=false;
	this.abortReq		=false;

	this.request = (window.XMLHttpRequest) 
	             ? new XMLHttpRequest()
				 : (	(window.ActiveXObject)
				 	  ? new ActiveXObject("Microsoft.XMLHTTP")
					  : false
					);

	this.isValidConnection = function() { return this.request ? true : false; };


	this.execRequest = function() {
		this.request.open(this.method,this.url,this.sync);
		this.request.setRequestHeader('Pragma','no-cache');
		this.request.setRequestHeader('Cache-Control','must-revalidate');
		this.request.setRequestHeader('If-Modified-Since','Sat, 1 Jan 2000 00:00:00 GMT');
		if ( this.headers) {
			for(var i=0;i<this.headers.length;i+=2) {
				this.request.setRequestHeader(this.headers[i],this.headers[i+1]);
			}
		}
		this.request.onreadystatechange = this.handleResponse;
		this.request.send(this.body);
	};
};


ajaxRequestUtf8 = function(url, callback, method, body, headers, sync) {
	this.url			=url;
	this.handleResponse	=callback || function() {};
	this.method			=method	  || "GET";
	this.body			=body	  || null;;
	this.headers		=headers  || false;
	this.sync			=sync	  || true;
	this.abortReq		=false;

	this.request = (window.XMLHttpRequest) 
	             ? new XMLHttpRequest()
				 : (	(window.ActiveXObject)
				 	  ? new ActiveXObject("Microsoft.XMLHTTP")
					  : false
					);

	this.isValidConnection = function() { return this.request ? true : false; };


	this.execRequest = function() {
		this.request.open(this.method,this.url,this.sync);
		this.request.setRequestHeader('Pragma','no-cache');
		this.request.setRequestHeader('Cache-Control','must-revalidate');
		this.request.setRequestHeader('If-Modified-Since','Sat, 1 Jan 2000 00:00:00 GMT');
        this.request.setRequestHeader ( "contentType", "text / html; charset = uft-8");
		if ( this.headers) {
			for(var i=0;i<this.headers.length;i+=2) {
				this.request.setRequestHeader(this.headers[i],this.headers[i+1]);
			}
		}
		this.request.onreadystatechange = this.handleResponse;
		this.request.send(this.body);
	};
};


function execAjax_Warenkorb(komponente,ident, idcounter) {

	if ( ! document.getElementById ) {
		return false;
	}

	var now = new Date();
	var session=document.getElementById('session').value;
	var cb;
	var modus;
	var sprache;

	if      ( komponente == 'WK_FZ' ) {
		cb = document.getElementById('WK_FZ_'+ident);
	}
	else if ( komponente == 'WK_FHS' ) {
		cb = document.getElementById('WK_FHS_'+ident);
	}
	else if ( komponente == 'WK_AP' ) {
		cb = document.getElementById('WK_AP_'+idcounter);  	// ident nicht eindeutig
	}
	else if ( komponente == 'WK_WBT' ) {
		cb = document.getElementById('WK_WBT_'+ident);
	}
	else if ( komponente == 'WK_RLT' ) {
		cb = document.getElementById('WK_RLT_'+ident);
	}
	else if ( komponente == 'WK_SQT' ) {
		cb = document.getElementById('WK_SQT_'+ident);
	}

	if ( ! cb ) {
		return false;
	}

	if ( document.getElementById('formular_sprache') ) {
		sprache = document.getElementById('formular_sprache').value || 'us';  
	}

	modus = cb.checked ? 'INS' : 'DEL';

	var callback=function() {
		var xmlResponse;
		var errors;
		if ( ajax.request.readyState==4 ) {
			var xmlparser = createXMLByTextExtend(ajax.request.responseText);
			if( !xmlparser.isError() ) {
                var xml = xmlparser.getXML();
				errors = parseInt(xml.getElementsByTagName('errors')[0].getAttribute('value'));
            }
            else {
            }
		}
	};
	var query = "ajaxmode=WARENKORB"
			  + "&KOMPONENTE="+escape(komponente)
			  + "&session="+escape(session)
			  + "&sprache="+escape(sprache)
		      + "&TSTAMP="+escape(now)
			  + "&IDENT="+escape(ident)
			  + "&MODUS="+escape(modus)
	           ;

	var ajax = new ajaxRequest("/manted/epl/manted-ajax.epl?"+query,
							   callback
							  );
	if ( ajax.isValidConnection() ) {
		ajax.execRequest();
		return true;
	}
	else {
		return false;
	}
							  
}

function execAjax_FGSDaten(rr_mwf_id,plcid,trid,iconid) {

	if ( ! document.getElementById ) {
		return false;
	}

	var now = new Date();
	var session=document.getElementById('session').value;
	var placement=document.getElementById(plcid);
	var icon=document.getElementById(iconid);
	var tr=document.getElementById(trid);
	var displayMode=BrowserType.displayTableInline();

	if ( ! tr ) {
		return;
	}
	if ( ! placement ) {
		return;
	}
								// Tabellenzeilen koennen nicht aus-/eingeblendet werden
	if ( displayMode == '' ) {
		return;
	}
								// ausblenden, falls schon zu sehen
	if ( tr.style.display == 'block' || tr.style.display == 'table-row' ) {
		tr.style.display = 'none';
		return;
	}
								// Anzeige. Falls die Daten schon geladen sind -> nur
								// switch-Display. IE kann nur 'block', opera und ff/gecko
								// nur 'table-row'
	else if ( tr.style.display == 'none' ) {
		if ( placement.innerHTML && placement.innerHTML.match(/table/i) ) {
			tr.style.display = displayMode;
			return;
		}
	}


	if ( document.getElementById('formular_sprache') ) {
		sprache = document.getElementById('formular_sprache').value || 'us';  
	}

	var callback=function() {
		var xmlResponse;
		var errors;
		if ( ajax.request.readyState==4 ) {
			if ( ajax.request.responseText ) {
				placement.innerHTML=ajax.request.responseText;
				tr.style.display = displayMode;
				if ( icon ) {
					icon.src = "../graphik/icon_magnifiy.gif";
				}
			}
			else {
			}
		}
	};
	var query = "ajaxmode=FGSDATEN"
			  + "&session="+escape(session)
			  + "&sprache="+escape(sprache)
		      + "&TSTAMP="+escape(now)
			  + "&RR_MWF_ID="+escape(rr_mwf_id)
	           ;

	var ajax = new ajaxRequest("/manted/epl/manted-ajax.epl?"+query,
							   callback
							  );
	if ( icon ) {
		icon.src = "../graphik/icon_ajax_wait_test.gif";
	}
	if ( ajax.isValidConnection() ) {
		ajax.execRequest();
		return true;
	}
	else {
		return false;
	}
}

function execAjax_WBTDaten(mw_wbt_id,plcid,trid,iconid) {

	if ( ! document.getElementById ) {
		return false;
	}

	var now = new Date();
	var session=document.getElementById('session').value;
	var placement=document.getElementById(plcid);
	var icon=document.getElementById(iconid);
	var tr=document.getElementById(trid);
	var displayMode=BrowserType.displayTableInline();

	if ( ! tr ) {
		return;
	}
	if ( ! placement ) {
		return;
	}
								// Tabellenzeilen koennen nicht aus-/eingeblendet werden
	if ( displayMode == '' ) {
		return;
	}
								// ausblenden, falls schon zu sehen
	if ( tr.style.display == 'block' || tr.style.display == 'table-row' ) {
		tr.style.display = 'none';
		return;
	}
								// Anzeige. Falls die Daten schon geladen sind -> nur
								// switch-Display. IE kann nur 'block', opera und ff/gecko
								// nur 'table-row'
	else if ( tr.style.display == 'none' ) {
		if ( placement.innerHTML && placement.innerHTML.match(/table/i) ) {
			tr.style.display = displayMode;
			return;
		}
	}


	if ( document.getElementById('formular_sprache') ) {
		sprache = document.getElementById('formular_sprache').value || 'us';  
	}

	var callback=function() {
		var xmlResponse;
		var errors;
		if ( ajax.request.readyState==4 ) {
			if ( ajax.request.responseText ) {
				placement.innerHTML=ajax.request.responseText;
				tr.style.display = displayMode;
				if ( icon ) {
					icon.src = "../graphik/icon_magnifiy.gif";
				}
			}
			else {
			}
		}
	};
	var query = "ajaxmode=WBTDATEN"
			  + "&session="+escape(session)
			  + "&sprache="+escape(sprache)
		      + "&TSTAMP="+escape(now)
			  + "&MW_WBT_ID="+escape(mw_wbt_id)
	           ;

	var ajax = new ajaxRequest("/manted/epl/manted-ajax.epl?"+query,
							   callback
							  );
	if ( icon ) {
		icon.src = "../graphik/icon_ajax_wait_test.gif";
	}
	if ( ajax.isValidConnection() ) {
		ajax.execRequest();
		return true;
	}
	else {
		return false;
	}
}



function execAjax_APDaten(apid,plcid,trid,iconid) {

	if ( ! document.getElementById ) {
		return false;
	}

	var now = new Date();
	var session=document.getElementById('session').value;
	var placement=document.getElementById(plcid);
	var icon=document.getElementById(iconid);
	var tr=document.getElementById(trid);
	var displayMode=BrowserType.displayTableInline();

	if ( ! tr ) {
		return;
	}
	if ( ! placement ) {
		return;
	}
								// Tabellenzeilen koennen nicht aus-/eingeblendet werden
	if ( displayMode == '' ) {
		return;
	}
								// ausblenden, falls schon zu sehen
	if ( tr.style.display == 'block' || tr.style.display == 'table-row' ) {
		tr.style.display = 'none';
		return;
	}
								// Anzeige. Falls die Daten schon geladen sind -> nur
								// switch-Display. IE kann nur 'block', opera und ff/gecko
								// nur 'table-row'
	else if ( tr.style.display == 'none' ) {
		if ( placement.innerHTML && placement.innerHTML.match(/table/i) ) {
			tr.style.display = displayMode;
			return;
		}
	}


	if ( document.getElementById('formular_sprache') ) {
		sprache = document.getElementById('formular_sprache').value || 'us';  
	}

	var callback=function() {
		var xmlResponse;
		var errors;
		if ( ajax.request.readyState==4 ) {
			if ( ajax.request.responseText ) {
				placement.innerHTML=ajax.request.responseText;
				tr.style.display = displayMode;
				if ( icon ) {
					icon.src = "../graphik/icon_magnifiy.gif";
				}
			}
			else {
			}
		}
	};
	var query = "ajaxmode=APDATEN"
			  + "&session="+escape(session)
			  + "&sprache="+escape(sprache)
		      + "&TSTAMP="+escape(now)
			  + "&APID="+escape(apid)
	           ;

	var ajax = new ajaxRequest("/manted/epl/manted-ajax.epl?"+query,
							   callback
							  );
	if ( icon ) {
		icon.src = "../graphik/icon_ajax_wait_test.gif";
	}
	if ( ajax.isValidConnection() ) {
		ajax.execRequest();
		return true;
	}
	else {
		return false;
	}
}



function execAjax_ClearWK(plcid,iconid) {


	if ( ! document.getElementById ) {
		return false;
	}

	var placement = document.getElementById(plcid);
	var icon=document.getElementById(iconid);

	var now = new Date();
	var session=document.getElementById('session').value;

	if ( document.getElementById('formular_sprache') ) {
		sprache = document.getElementById('formular_sprache').value || 'us';  
	}

	var callback=function() {
		var xmlResponse;
		var errors;
		if ( ajax.request.readyState==4 ) {
			var xmlparser = createXMLByTextExtend(ajax.request.responseText);
			if( !xmlparser.isError() ) {
                var xml = xmlparser.getXML();
				errors = parseInt(xml.getElementsByTagName('errors')[0].getAttribute('value'));
				if ( errors ) {
					if ( placement ) {
						placement.innerHTML=xml.getElementsByTagName('message')[0].firstChild.nodeValue;
					}
				}
				else {
					if ( placement ) {
						placement.innerHTML=xml.getElementsByTagName('message')[0].firstChild.nodeValue;
					}
				}
				if ( icon ) {
					icon.src = "../graphik/icon_blankait_test.gif";
				}
            }
            else {
            }
		}
	};
	var query = "ajaxmode=CLEARWK"
			  + "&session="+escape(session)
			  + "&sprache="+escape(sprache)
	           ;

	var ajax = new ajaxRequest("/manted/epl/manted-ajax.epl?"+query,
							   callback
							  );
	if ( icon ) {
		icon.src = "../graphik/icon_ajax_wait_test.gif";
	}
	if ( ajax.isValidConnection() ) {
		ajax.execRequest();
		return true;
	}
	else {
		return false;
	}
}



function execAjax_setMantedOption(state,value) {

	if ( ! document.getElementById ) {
		return false;
	}

	var now = new Date();
	var session=document.getElementById('session').value;

	var callback=function() {
		var xmlResponse;
		var errors;
		if ( ajax.request.readyState==4 ) {
			alert ( ajax.request.responseText ); 
		}
	};
	var query = "ajaxmode=MANTED_OPTION"
			  + "&session="+escape(session)
		      + "&TSTAMP="+escape(now)
			  + "&STATE="+escape(state)
			  + "&VALUE="+escape(value)
	           ;

	var ajax = new ajaxRequest("/manted/epl/manted-ajax.epl?"+query,
							   callback
							  );
	if ( ajax.isValidConnection() ) {
		ajax.execRequest();
		return true;
	}
	else {
		alert('Kann keine Serververbindung aufbauen.');
		return false;
	}
}


