/**
	Erstellt ein POST HTTP Request
*/
var http_request = false;
var theOutPutRange = '';
var theOutPutRangePrefix = 'span_';
var scriptBaseURL	= 'fileadmin/mysalsatv/phpscript/';

var Err_cannot_create_instance 	= 'Es gab ein Problem!\nDie s.g. XMLHTTP Instanz konnte nicht erzeugt werden!\nSollte dieser Fehler nocheinmal auftreten, setzen Sie sich bitte mit dem Service in Verbindung!';
var Err_Problem_with_Request	= 'Die Serverrückmeldung konnte nicht empfangen werden!\nSollte dieser Fehler nocheinmal auftreten, setzen Sie sich bitte mit dem Service in Verbindung!';

function makePOSTRequest(url, parameters, pNextObject) {	
	http_request = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			// set type accordingly to anticipated content type
			//http_request.overrideMimeType('text/xml');
			http_request.overrideMimeType('text/html');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
		try {
		   	http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if (!http_request) {
		alert(Err_cannot_create_instance);
		return false;
	}
	theOutPutRange = theOutPutRangePrefix + pNextObject;
	http_request.onreadystatechange = SetSingleValue;
	
	/**
		Absetzen des POST Request
	*/   
	http_request.open('POST', url, true);
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http_request.setRequestHeader("Content-length", parameters.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.send(parameters);
}


/**
	----------------------------------------------------------------------------
	Spezielle Requests:
	
	Hiermit können beliebig viel SPANs ersetzt werden. Arbeitet nur mit
	mit einer entsprechenden PHP zusammen! 
*/
function makePOSTRequest2(url, parameters, pNextObject) {	
	http_request = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/html');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
		try {
		   	http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if (!http_request) {
		alert(Err_cannot_create_instance);
		return false;
	}
//	theOutPutRange = theOutPutRangePrefix + pNextObject;
	http_request.onreadystatechange = SetMultipleValue;

	/**
		Absetzen des POST Request
	*/   
	http_request.open('POST', url, true);
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http_request.setRequestHeader("Content-length", parameters.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.send(parameters);
}

/**
	----------------------------------------------------------------------------
	
	
*/
function makePOSTRequest3(url, parameters, pNextObject) {	
	http_request = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/html');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
		try {
		   	http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if (!http_request) {
		alert(Err_cannot_create_instance);
		return false;
	}
//	theOutPutRange = theOutPutRangePrefix + pNextObject;
	http_request.onreadystatechange = SetProperty;

	/**
		Absetzen des POST Request
	*/   
	http_request.open('POST', url, true);
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http_request.setRequestHeader("Content-length", parameters.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.send(parameters);
}

/**
	Ausgabe-Funktion
	----------------------------------------------------------------------------
*/

/**
	Umschreiben des Formulars für F/B Flüge
*/

/**
	Für die Ausgabe eines Wertes an EINER Stelle
*/
function SetSingleValue() {
  if (http_request.readyState == 4) {
     if (http_request.status == 200) {
        //alert(http_request.responseText);
        result = http_request.responseText;
       	document.getElementById(theOutPutRange).innerHTML = result;
          
     } else {
        alert(Err_Problem_with_Request);
     }
  }
}
/**
	Für die Ausgabe eines Wertes an mehreren Stellen
*/
function SetMultipleValue() {
  if (http_request.readyState == 4) {
     if (http_request.status == 200) {

        result = http_request.responseText;
        
		var FieldSeparator = '[|]';
		var RecordSeparator= '][';
        
		var index=1;
		var theValueString	= split(result, RecordSeparator, index);

		while (theValueString) {

			theLabel = unescape(split(theValueString, FieldSeparator, 1));
			theValue = unescape(split(theValueString, FieldSeparator, 2));	
//			alert(theLabel + " = " + theValue);
			document.getElementById(theLabel).innerHTML = theValue;
			index++;			
			theValueString 	= split(result, RecordSeparator, index);

		}
		
     } else {
        alert(Err_Problem_with_Request);
     }
  }
}   

/**
	Kann die Style Properties von Elementen setzen
*/
function SetProperty() {
  if (http_request.readyState == 4) {
     if (http_request.status == 200) {

        result = http_request.responseText;
        
		var FieldSeparator = '[|]';
		var RecordSeparator= '][';
		var StyleSeparator= '=';
        
		var index=1;
		var theValueString	= split(result, RecordSeparator, index);

		while (theValueString) {

			theObject 	= unescape(split(theValueString, FieldSeparator, 1));
			theStyle  	= unescape(split(theValueString, FieldSeparator, 2));	
			
			thePropName	= unescape(split(theStyle, StyleSeparator, 1));
			thePropValue= unescape(split(theStyle, StyleSeparator, 2));
			
			//alert(theObject + " = " + theStyle);			
			//alert(theObject + ": "+ thePropName + " = " + thePropValue+ " browser id: "+ give_browser_id());
			//document.getElementById(theObject).style.setAttribute(thePropName,thePropValue);
			// Mozilla kapiert das nicht...? Daher dieser Workaraout:
			switch (thePropName) {
				case 'visibility':
					document.getElementById(theObject).style.visibility = thePropValue;
					break;
				case 'color':
					document.getElementById(theObject).style.color = thePropValue;
					break;
			}
			index++;			
			theValueString 	= split(result, RecordSeparator, index);

		}
		
     } else {
        alert(Err_Problem_with_Request);
     }
  }
}   

/**
	Eingabe-Funktion
	----------------------------------------------------------------------------
*/
/**
	Feldvaldierung mit anzubindenden PHP  Script
	
*/
function validation(pObj, pPHPScript, pNextObject, pRequierdFieldStatus) {
	var htlmFile	= _GiveUrlFileName();	
	var poststr		= pObj.name + "=" + pObj.value +'&HTMLFile='+htlmFile;	
	sleeping(pNextObject);
	RequiredState(pRequierdFieldStatus,'');
	makePOSTRequest(scriptBaseURL+pPHPScript+'?command=main&nextobject='+pNextObject+'&object='+pObj.name, poststr, pNextObject);
	
}

/**
	Überprüfung des Usernamens aud Eindeutigkeit
*/
function check_username(pObj, pPHPScript, pNextObject, pHash) {	
	var poststr	= pObj.name + "=" + pObj.value;
	poststr	+= "&hash=" + pHash;
	please_wait(pNextObject);
	makePOSTRequest(scriptBaseURL+pPHPScript+'?command=check&nextobject='+pNextObject+'&object='+pObj.name, poststr, pNextObject);
	
}

/**
	Überprüfung ob eine Auftragsnummer vorhanden ist
*/
function check_if_exist_order_id(pValue, pPHPScript, pNextObject) {	
	var poststr	=  "orderid=" + pValue;
	please_wait(pNextObject);
	makePOSTRequest2(scriptBaseURL+pPHPScript, poststr, pNextObject);
	
}

/**
	Steuerung im JackScout
	
*/
function kategorieSetVisibilty(pObj, pPHPScript, pNextObject) {	
	var poststr	= pObj.name + "=" + pObj.value;	
	
	/**
		Die IDs der Kategorien. Diese IDs sollten nicht umgeschrieben werdem!
	
		Cluburlaub		- 104
		F/B Flüge		- 105
		Flugreisen		- 112
		Golfreisen		- 108
		Kreuzfahrt		- 111
		Städtereisen	- 109
		Tauchreisen		- 106
		Wellness 		- 107
		
		In Abhängigkeit der gewählten Kategorie kann das gesamte Formular
		manipuliert werden!
		
		
	*/
	var ID_FB_Fluege 	= 105;
	var ID_Staedtereisen= 109;
	var	ID_Kreuzfahrt	= 111;
	var ID_Kategorie	= parseInt(pObj.value);

	var Command			= '';
	
	switch (ID_Kategorie) {


		case ID_Staedtereisen:

			Command		= 'staedtereisen';
			pNextObject	= Command;
			please_wait('warten1');
			makePOSTRequest3(scriptBaseURL+pPHPScript+'?command='+Command+'&nextobject='+pNextObject+'&object='+pObj.name, poststr, pNextObject);								
			break;

		case ID_FB_Fluege:

			Command		= 'fbfluege';
			pNextObject	= Command;
			please_wait('warten1');
			makePOSTRequest3(scriptBaseURL+pPHPScript+'?command='+Command+'&nextobject='+pNextObject+'&object='+pObj.name, poststr, pNextObject);								
			break;
			
		case ID_Kreuzfahrt:

			Command		= 'kreuzfahrt';		
			pNextObject	= Command;
			please_wait('warten1');
			makePOSTRequest3(scriptBaseURL+pPHPScript+'?command='+Command+'&nextobject='+pNextObject+'&object='+pObj.name, poststr, pNextObject);						
			break;
			
		default:
		
			Command		= 'default';
			pNextObject	= Command;
			please_wait('warten1');
			makePOSTRequest3(scriptBaseURL+pPHPScript+'?command='+Command+'&nextobject='+pNextObject+'&object='+pObj.name, poststr, pNextObject);					

	}

	
}

/**
	Steuerung des gesamten Formulars über die Kateigorieauswahl
	
*/
function kategorieWahl(pObj, pPHPScript, pNextObject, pDefaultString) {	
	var poststr	= pObj.name + "=" + pObj.value;
	poststr += '&' + pDefaultString;	


//alert (pDefaultString);
	
	/**
		Die IDs der Kategorien. Diese IDs sollten nicht umgeschrieben werdem!
	
		Cluburlaub		- 104
		F/B Flüge		- 105
		Flugreisen		- 112
		Golfreisen		- 108
		Kreuzfahrt		- 111
		Städtereisen	- 109
		Tauchreisen		- 106
		Wellness 		- 107
		
		In Abhängigkeit der gewählten Kategorie kann das gesamte Formular
		manipuliert werden!
		
		
	*/
	var ID_FB_Fluege 	= 105;
	var ID_Staedtereisen= 109;
	var	ID_Kreuzfahrt	= 111;
	var ID_Kategorie	= parseInt(pObj.value);

	var Command			= '';
	
	switch (ID_Kategorie) {


		case ID_Staedtereisen:

			Command		= 'staedtereisen';
			pNextObject	= Command;
			please_wait('warten1');
			makePOSTRequest2(scriptBaseURL+pPHPScript+'?command='+Command+'&nextobject='+pNextObject+'&object='+pObj.name, poststr, pNextObject);								
			break;

		case ID_FB_Fluege:

			Command		= 'fbfluege';
			pNextObject	= Command;
			please_wait('warten1');
			makePOSTRequest2(scriptBaseURL+pPHPScript+'?command='+Command+'&nextobject='+pNextObject+'&object='+pObj.name, poststr, pNextObject);								
			break;
			
		case ID_Kreuzfahrt:

			Command		= 'kreuzfahrt';		
			pNextObject	= Command;
			please_wait('warten1');
			makePOSTRequest2(scriptBaseURL+pPHPScript+'?command='+Command+'&nextobject='+pNextObject+'&object='+pObj.name, poststr, pNextObject);						
			break;
			
		default:
		
			Command		= 'default';
			pNextObject	= Command;
			please_wait('warten1');
			makePOSTRequest2(scriptBaseURL+pPHPScript+'?command='+Command+'&nextobject='+pNextObject+'&object='+pObj.name, poststr, pNextObject);					

	}
	if (ID_Kategorie>0) {
		RequiredState('rF01','');
	}
	
}

function MoreOptions(pObj, ptheFormname, pNextObject, pPHPScript, pCommand, pPosWaitMess) {
	var ReiseZiel		= '';
	var ReiseklasseID	= '';

	var formObject 		= document[ptheFormname];
	if (!formObject)	{
		formObject = document.getElementById(ptheFormname);
	}
	var theField = 'reiseziel_Eingabe';
	if (formObject[theField])	{
		var fObj = formObject[theField];
		ReiseZiel=fObj.value;
	}
	fObj = '';
	theField = 'ajax_reiseklasseid';
	if (formObject[theField])	{
		var fObj = formObject[theField];
		ReiseklasseID=fObj.value;
	}	

	var poststr			= pObj.name + "=" + pObj.value+
						'&value='+ pObj.value+
						'&reiseziel_Eingabe='+ReiseZiel+
						'&reiseklasseID='+ReiseklasseID;
	// alert(poststr);	
	Command		= pCommand;
	please_wait(pPosWaitMess);
	makePOSTRequest2(scriptBaseURL+pPHPScript+'?command='+pCommand+'&nextobject='+pNextObject+'&object='+pObj.name, poststr, pNextObject);					

}
/**
	wird noch nicht verwendet!
*/
function HotelOptions(pObj, ptheFormname, pNextObject, pPHPScript, pCommand, pPosWaitMess) {
	var ReiseZiel		= '';
	var ReiseklasseID	= '';

	var formObject 		= document[ptheFormname];
	if (!formObject)	{
		formObject = document.getElementById(ptheFormname);
	}

alert(pNextObject+'/'+pCommand);

	var poststr			= pObj.name + "=" + pObj.value+
						'&value='+ pObj.value;
	 alert(poststr);	
	Command		= pCommand;
	please_wait(pPosWaitMess);
	makePOSTRequest2(scriptBaseURL+pPHPScript+'?command='+pCommand+'&nextobject='+pNextObject+'&object='+pObj.name, poststr, pNextObject);					

}
/**
	
	Alle negative IDs sind hardcodierte SteuerIDs:
	-1		- Ist im Selectfeld der Eintrag "bitte wählen", also in diesem Falle
				soll nichts passieren!
	-99		- soll den Eingabemodus starten
	
*/
function setModus(pObj, pPHPScript, pNextObject, pRequierdFieldStatus) {	
	var poststr	= pObj.name + "=" + pObj.value + '&StatusFeld=' + pRequierdFieldStatus;
	var command	= 'check';
 	switch (pObj.value) {
		case -99:
			command = 'setinputmode';
			break;
	}

	
	/**
		Das kleine Sternchen an der span Kennung für Requierd Field entfernen 
	*/
	if(pRequierdFieldStatus) {
		RequiredState(pRequierdFieldStatus,'');
	}
	/**
		Bitte Warten Meldung ausgeben
	*/
	sleeping(pNextObject);
	/**
		Request an den Server absetzen
	*/
	makePOSTRequest(scriptBaseURL+pPHPScript+'?command='+command+'&nextobject='+pNextObject+'&object='+pObj.name, poststr, pNextObject);
	
}

/**
	Spezielle POST Funktionen, setzen aus dem Formular die AJAX Anfrage ab.
	----------------------------------------------------------------------------
*/ 
function postMethod(obj) {
	var poststr = "mytextarea1=" + encodeURI( document.getElementById("mytextarea1").value ) +
	            "&mytextarea2=" + encodeURI( document.getElementById("mytextarea2").value ) +
				"&Auswahl=" + encodeURI( document.getElementById("Auswahl").value );;
	makePOSTRequest('post.php', poststr, 'myspan');
}



/**
	Erzeuigt eine "bitte warten" Meldung an der Stelle des zu generierenden
	Elements
*/
function sleeping(pElement)  {
	var obj 		= document.getElementById(theOutPutRangePrefix + pElement);
	var imgBaseURL	= 'fileadmin/jack24/images/';
	var Pic			= '<img src="'+ imgBaseURL +'bittewartenflieger.gif" width="323" height="20" vspace="0" hspace="0" border="0" alt="warten" />';
	var Message 	= '<span class="alert">...warten...</span>';	
	var FileName	= _GiveUrlFileName ();
	// Auf den Seiten JackScout wird ein kleineres "warten Element" verwendet!
	if (_is_in_String('JackScout',FileName)) {
		 Pic = '<img src="'+ imgBaseURL +'bittewartenflieger223.gif" width="223" height="20" vspace="0" hspace="0" border="0" alt="warten" />';
	}

	if (window.ActiveXObject) {
		/** IE */
		obj.innerHTML = Message;
	} else {
		//document.getElementById(theOutPutRangePrefix + pElement).innerHTML = Pic;
		//var w = document.getElementById(theOutPutRangePrefix + pElement).style.width;		
		obj.innerHTML = Pic;
	}		          	  
	return true; 
}  

/**
	Erzeuigt eine "bitte warten" Meldung an der Stelle des zu generierenden
	Elements
*/
function please_wait(pElement)  {
	var Message 	= '<span class="alert">...warten...</span>';
	document.getElementById(theOutPutRangePrefix + pElement).style.visibility = 'visible';
	document.getElementById(theOutPutRangePrefix + pElement).innerHTML = Message;
	return true; 
}   

