var ajax_req = erzeuge_request ( );
var ajax_daten = '';
var ajax_test_str = '';
var ajax_ergebnis_str = '';
var ajax_fertig = false;
var ajax_ergebnis = false;
var ajax_xmldoc = null;
var	aktion_bei_erfolg = null;
var	aktion_bei_fehler = null;
var is_ie = window.ActiveXObject != null;

function erzeuge_request ( ) {
	return ( 	window.XMLHttpRequest )
						?
						new XMLHttpRequest ( )
						:
						( ( window.ActiveXObject )
							?
							new ActiveXObject ( "Microsoft.XMLHTTP" )
							:
							null
						);
}
// xml-Simulation
function get_xml_inhalt_str ( xmltag_name, xmlstr ) {
	inhstr = '';
	endpos = xmlstr.indexOf ( '</' + xmltag_name + '>' );
	if ( endpos >= 0 ) {
		tagstr = '<' + xmltag_name + '>';
		stpos = xmlstr.indexOf ( tagstr );
		if ( stpos >= 0 ) {
			inhstr = xmlstr.substr ( stpos + tagstr.length, endpos - ( stpos + tagstr.length ) );
		}
	}
	return inhstr;
}
function get_xml_inhalt ( xmltag_name ) {
	return get_xml_inhalt_str ( xmltag_name, ajax_daten );
}
function o_get_xml_inhalt ( xmltag_name ) {
	inhstr = '';
	endpos = ajax_daten.indexOf ( '</' + xmltag_name + '>' );
	if ( endpos >= 0 ) {
		tagstr = '<' + xmltag_name + '>';
		stpos = ajax_daten.indexOf ( tagstr );
		if ( stpos >= 0 ) {
			inhstr = ajax_daten.substr ( stpos + tagstr.length, endpos - ( stpos + tagstr.length ) );
		}
	}
	return inhstr;
}
function request_on_state_change  ( ) {
	if ( ajax_req.readyState == 4 ) {
		if ( ajax_req.status == 200 ) {
			ajax_daten = ajax_req.responseText;
			ajax_ergebnis_str = get_xml_inhalt ( 'ergebnis' );
			if ( ajax_test_str == '' ) { ajax_ergebnis = true; }
			else { ajax_ergebnis = ajax_test_str == ajax_ergebnis_str; }
		}
		else {
			ajax_ergebnis_str = ajax_req.statusText;
		}
		ajax_fertig = true;
	}
}
// funktion muß erstmal entfernt werden, da es zawr lokal klappt, aber nicht online ?????
function _request_on_state_change  ( ) {
	if ( ajax_req.readyState == 4 ) {
		if ( ajax_req.status == 200 ) {
			//ajax_ergebnis_str = ajax_req.responseText;
			xmlobj = ajax_req.responseXML;
			if ( xmlobj != null ) {
				ajax_xmldoc = xmlobj.getElementsByTagName ( 'ergebnis' );
				if ( ajax_xmldoc != null ) {
					ergebnis = ajax_xmldoc[0].firstChild.nodeValue;
					if ( ergebnis.length == 1 ) {
						ajax_ergebnis_str = ergebnis.item ( 0 ).firstChild.data;
					}
				}
			}
			if ( ajax_test_str == '' ) { ajax_ergebnis = true; }
			else { ajax_ergebnis = ajax_test_str == ajax_ergebnis_str; }
		}
		else {
			ajax_ergebnis_str = ajax_req.statusText;
		}
		ajax_fertig = true;
	}
}
function warte_auf_ajax_ergebnis ( ) {
	if ( !ajax_fertig ) {
		window.setTimeout ( 'warte_auf_ajax_ergebnis()', 100 );
		return;
	}
	if ( ajax_ergebnis ) {
		if ( aktion_bei_erfolg != null ) {
			aktion_bei_erfolg ( );
		}
	}
	else {
		if ( aktion_bei_fehler != null ) {
			aktion_bei_fehler ( );
		}
	}
}
function ajax_aktion ( script, param, teststr, bei_erfolg, bei_fehler ) {
	if ( is_ie ) {
		if ( ajax_req != null ) { ajax_req = null; ajax_req = erzeuge_request ( ); };
	}
	ajax_req.onreadystatechange = request_on_state_change;
	ajax_req.open ( "POST", script + "?" + Math.random(), true );
	ajax_req.setRequestHeader ( "Content-type", "application/x-www-form-urlencoded" ); 
	ajax_req.setRequestHeader ( "Content-length", param.length ); 
	ajax_req.setRequestHeader ( "Connection", "close" );
	ajax_daten = '';
	ajax_xmldoc = null;
	ajax_ergebnis = false;
	ajax_fertig = false;
	ajax_ergebnis_str = '';
	ajax_test_str = teststr;
	aktion_bei_erfolg = bei_erfolg;
	aktion_bei_fehler = bei_fehler;
	ajax_req.send ( param );
	warte_auf_ajax_ergebnis ( );
}
// für später, da online keine Funktionalität -> Server Koch
function _get_xml_inhalt ( xmltag_name ) {
	inhstr = '';
	if ( ajax_xmldoc != null ) {
		xmltag = ajax_xmldoc.getElementsByTagName ( xmltag_name );	
		if ( xmltag != null ) {
			if ( xmltag.length == 1 ) {
				if ( xmltag.item ( 0 ).firstChild != null ) {
					inhstr = xmltag.item ( 0 ).firstChild.data;
				}
			}
		}
	}
	return inhstr;
}
