/** +++++++++++++++++++++++++++++++++++++++++++++++++++++++	**/
/** +	Sammlung von verschiednen 	JavaScripten					**/
/** +	die f�r den Shop grundlegende funktionen zur 			**/
/** + Verf�gung stellen													**/
/** +																			**/
/** +	@file shopBasics.js												**/
/** +	@copyright (c) 2006 , Martin Gl�ck							**/
/** +	@author Martin Gl�ck <martin.glueck@fibee.de>			**/
/** +	@package quickEdit												**/
/** +																			**/
/** +++++++++++++++++++++++++++++++++++++++++++++++++++++++	**/
/*
*	$Log: shopBasics.js,v $
*	Revision 1.5  2007/04/05 12:37:52  martin
*	QuickSuche f�r MobilfunkArtikel erweitert
*
*	Revision 1.4  2007/04/02 13:08:40  martin
*	*** empty log message ***
*
*	Revision 1.3  2007/04/02 09:37:20  martin
*	QuickSelectBar	Funktionen
*
*	Revision 1.2  2007/04/02 09:35:16  martin
*	QuickSelectBar	Funktionen
*
*/
// ben�tigte globale Variablen!
var globaleBasketUin		= '';

// Funktion, die im AJAX-FRAMEWORK (ajaxFrame.js) verwendet wird!
// und dazu bestimmt ist, eine gew�nschte Anweisung durchzuf�hren,
// nachdem der Response auf den gesendeten Request vorliegt!
function processData( xmlHttp, intID )
{

	// Artikel in den Warenkob legen
	if ( intID == 1000){
		alert(xmlHttp.responseText);
		// erneuer die Warenkorb anzeige
		updateBasketSummary(xmlHttp.responseText);
		// existiert die basketUin schon, oder wurde diese soeben beim einf�gen des Artikels neu erzeugt?
		if (globaleBasketUin == ''){
			// muss nun im ganzen HTML-Code eingef�gt werden!
		}

	}
	if ( intID == 2000){
//		alert(xmlHttp.responseText);
		showSearchResults(xmlHttp.responseText);
		//
	}
	// Detailsuche
	// Die eigenschaftsgruppen Details werden ausgegeben
	if ( intID == 1010){
//		alert(xmlHttp.responseText);
		displayFeatureSets(xmlHttp.responseText);
	}

	// #################################################
	// QuickSelectBAr												#
	// #################################################
	// Gebe den Quellcode der QuickSelectBar aus!
	if ( intID == 3000){
		displayQuickSelectCode(xmlHttp.responseText);
	}
	// Gebe den Quellcode der QuickSelectBar aus!
	if ( intID == 3010){
		displayQuickSelectCode(xmlHttp.responseText);
	}

	//	setzt die Auswahloptionen der Tarifgruppen in die QuickSelectbox
	if ( intID == 3600){
		quickSelectBoxChange('divSelectBoxQuickSelectTarifgruppe', xmlHttp.responseText, false);
	}
	//	setzt die Auswahloptionen der Tarife in die QuickSelectbox
	if ( intID == 3610){
		quickSelectBoxChange('divSelectBoxQuickSelectTarif', xmlHttp.responseText, false);
	}
         //#################################################
         // Produkt Vergleicher
         //#################################################
         if( intID == 999999){
             	//alert(xmlHttp.responseText);
                 var daten = trim(xmlHttp.responseText);
         	var obj = document.getElementById('ajaxMirco1');
		obj.innerHTML = daten;
         }
         if( intID == 999998){
             	//alert(xmlHttp.responseText);
                 var daten = trim(xmlHttp.responseText);
         	var obj = document.getElementById('ajaxMirco2');
		obj.innerHTML = daten;
         }
         if( intID == 999997){
             	//alert(xmlHttp.responseText);
                 var daten = trim(xmlHttp.responseText);
         	var obj = document.getElementById('ajaxMirco3');
		obj.innerHTML = daten;
         }
         if( intID == 999996){
             	//alert(xmlHttp.responseText);
                 var daten = trim(xmlHttp.responseText);
         	var obj = document.getElementById('produktVergleicher');
		obj.innerHTML = daten;
         }


}
/** +++++++++++++++++++++++++++++++++++++++++++++++++++++++	**/
/** +	DIVERSE SET und GET Methoden									**/
/** +++++++++++++++++++++++++++++++++++++++++++++++++++++++	**/
function setBasketUin(value){
	globaleBasketUin	= value;
}


/** +++++++++++++++++++++++++++++++++++++++++++++++++++++++	**/
/** +	FUNKTION, die den Inhalt in die einzelnen					**/
/** +	Container einf�gen sollen										**/
/** +++++++++++++++++++++++++++++++++++++++++++++++++++++++	**/

function updateBasketSummary( strData )
{
	// hole Informationen aus dem XML-Dokument
   var daten = trim(strData);
   if (window.ActiveXObject) {
      var xmlDocument = new ActiveXObject("Microsoft.XMLDOM");
      xmlDocument.loadXML(daten);
   } else if (document.implementation) {
      var xmlDocument = (new DOMParser()).parseFromString(daten, "text/xml");
   }

   // ############## BEST�TIGUNGS-MELDUNG #################################
	// ermittle Best�tigungsmeldung
	var adviceHtmlToDisplay = xmlDocument.getElementsByTagName('adviceHtmlToDisplay')[0].firstChild.data;
  	// schreibe nun den ermittelten Inhalt(Fehler) in den Container mit der ID="ajaxError"
	var obj = document.getElementById('dynamicAdviceContainer');
	obj.innerHTML = adviceHtmlToDisplay;

	// ############## ERNEUERE WARENKORB ZUSAMMENFASSUNG ###################
	// ermittle Quellcode f�r den Warenkorb
	var basketHtmlToDisplay = xmlDocument.getElementsByTagName('basketHtmlToDisplay')[0].firstChild.data;
  	// schreibe nun den ermittelten Inhalt(Fehler) in den Container mit der ID="ajaxError"
	var obj = document.getElementById('basketSummaryContainer');
	obj.innerHTML = basketHtmlToDisplay;

	// ############## Setze die BasketUin ##################################
	if (globaleBasketUin == ''){
		// Setze BasketUin
		globaleBasketUin = xmlDocument.getElementsByTagName('basketUin')[0].firstChild.data;
		// ersetze im kompletten Quellcode den die BasketUin
	}
}

function displayQuickSelectCode( strData )
{
	// hole Informationen aus dem XML-Dokument
   var daten = trim(strData);
   // ############## F�ge denneuen Quellcode ein #################################
	var obj = document.getElementById('quickSelectBarContent');
	obj.innerHTML = daten;
}



function displayFeatureSets ( strData ) {
	var featureGroup = document.getElementById('featureGroup');
	featureGroup.innerHTML = strData;
}

/** +++++++++++++++++++++++++++++++++++++++++++++++++++++++	**/
/** +	FUNKTION, die die Suchergebnisse ausgibt					**/
/** +++++++++++++++++++++++++++++++++++++++++++++++++++++++	**/

function showSearchResults( strData )
{
	var position = -1;
	var knotenArray = new Array();
	var inputBox = document.getElementById('livesearch');
	var action = inputBox.onkeyup;

	if ( strData != '') {
		// In einem Array werden alle Textwerte der Ergebnisse
		// gespeichert, damit man sie nachher per Pfeiltasten
		// ausgeben kann.
		var resultBox = document.getElementById('completeDiv');
		resultBox.style.display = 'block';
		if (resultBox.hasChildNodes()) {
			for (var i = 0; i < resultBox.childNodes.length; i++) {
				knoten = resultBox.childNodes[i];
				if( knoten.nodeType  == '1') {
					if(knoten.hasChildNodes()) {
						knotenArray.push(knoten.childNodes[0].nodeValue);
					}
				}
			}
		}
		// Pr�fen ob die Ergebnisse durchgescrollt werden sollen

		inputBox.onkeydown = function(event) {
			var charCode  = getKeyCode(event);
			if ( charCode != '40' && charCode != '38' && charCode != '37' && charCode != '39' && charCode != '36' && charCode != '35') {
				inputBox.onkeyup = action;
			}
			// 38 = Pfeil hoch
			// 40 = Pfeil runter
			if ( charCode == '40' ) {
				if (position < knotenArray.length-1) {
					position++;
					inputBox.onkeyup = null;
					inputBox.value = knotenArray[position];
					// Hintergrundfarbe des gew�hlten Elements �ndern
					elementPosition = position;
					var element = document.getElementById('result_' + elementPosition);
					element.style.backgroundColor = '#f1ffc2';
					element.style.fontWeight = 'bold';

					// Wir merken uns den Link des Objekts und weisen es dem Formular submit zu
					link = element.getAttribute('href');
					form = document.getElementById('searchform');
					form.setAttribute('action', link);

					// Alle anderen Elemente bekommen wieder ihre normale Farbe
					for(var i=0; i < knotenArray.length; i++) {
						// Handelt es sich nicht um das momentan ausgew�hlte Element
						// soll die hintergrundfarbe ge�ndert werden
						if (i != elementPosition) {
							element = document.getElementById('result_' + i);
							element.style.backgroundColor = '#FFFFFF';
							element.style.fontWeight = 'normal';
						}
					}
				}
			} else {
				if ( charCode == '38' ) {
					if(position > 0) {
						position--;
						inputBox.value = knotenArray[position];
						// Hintergrundfarbe des gew�hlten Elements �ndern
						elementPosition = position;
						var element = document.getElementById('result_' + elementPosition);
						element.style.backgroundColor = '#f1ffc2';
						element.style.fontWeight = 'bold';

						// Wir merken uns den Link des Objekts und weisen es dem Formular submit zu
						link = element.getAttribute('href');
						form = document.getElementById('searchform');
						form.setAttribute('action', link);

						// Alle anderen Elemente bekommen wieder ihre normale Farbe
						for(var i=0; i < knotenArray.length; i++) {
							// Handelt es sich nicht um das momentan ausgew�hlte Element
							// soll die hintergrundfarbe ge�ndert werden
							if (i != elementPosition) {
								element = document.getElementById('result_' + i);
								element.style.backgroundColor = '#FFFFFF';
								element.style.fontWeight = 'normal';
							}
						}
					}
				}
			}
		}
		var obj = document.getElementById('completeDiv');
		if ( obj.style.display == 'none') {
			obj.style.display = 'block';
		}
		obj.innerHTML = strData;


		// Bei einer zweiten Abfrage m�ssen die Daten erneut ins Array geladen werden!
		var resultBox = document.getElementById('completeDiv');
		resultBox.style.display = 'block';
		knotenArray = new Array();
		if (resultBox.hasChildNodes()) {
			for (var i = 0; i < resultBox.childNodes.length; i++) {
				knoten = resultBox.childNodes[i];
				if( knoten.nodeType  == '1') {
					if(knoten.hasChildNodes()) {
						knotenArray.push(knoten.childNodes[0].nodeValue);
					}
				}
			}
		}

	}
}

function checkSearchBox(searchBox) {
	searchForm = document.getElementById('searchFormCheckbox_' + searchBox);
	el = document.getElementById('subCategory_' + searchBox);
	myID = searchBox;
	searchBox = document.getElementById('searchCheckbox_' + searchBox);
	if ( searchForm.checked ) {
		searchBox.className = 'unchecked';
		searchForm.checked = false;
		// Alle ausgew�hlten Unteraktegorien dieser Kategorie abw�hlen
		for ( var i=0; i < el.childNodes.length; i++) {
			if(el.childNodes[i].id != 'undefined') {
				var myChild = el.childNodes[i];
				myChild.className = 'unchecked';
				for ( var j=0; j < myChild.childNodes.length; j++) {
					if(myChild.childNodes[j] && myChild.childNodes[j].id != 'undefined' && myChild.childNodes[j].id) {
						var child = myChild.childNodes[j];
							child.checked = false;
					}
				}
			}
		}
		// Alle Unterkategorien aus der Liste l�schen
		var categories = document.getElementById("assignedSubCategories");
		for (var i=0; i < categories.childNodes.length; i++) {
			if (categories.childNodes[i].firstChild ) {
				categories.childNodes[i].removeChild(categories.childNodes[i].firstChild);
			}
		}

	} else {
		searchBox.className = 'checked';
		searchForm.checked = true;

		//alle anderen Hauptkategorien auf unchecked setzen
		var el = document.getElementById('searchMainCategories');
		for ( var i=0; i < el.childNodes.length; i++) {
			if(el.childNodes[i].id && el.childNodes[i].id != 'undefined' && el.childNodes[i].id != 'searchCheckbox_' + myID) {
				var myChild = el.childNodes[i];
				myChild.className = 'unchecked';
				for ( var j=0; j < myChild.childNodes.length; j++) {
					if(myChild.childNodes[j] && myChild.childNodes[j].id && myChild.childNodes[j].id != 'undefined') {
						myChild.childNodes[j].checked = false;
					}
				}
			}
		}
		//Alle Unterkategorien aus der Liste l�schen
		var categories = document.getElementById("assignedSubCategories");
		for (var i=0; i < categories.childNodes.length; i++) {
			if (categories.childNodes[i].firstChild ) {
				categories.childNodes[i].removeChild(categories.childNodes[i].firstChild);
			}
		}
		//Alle Hauptkategorien aus der Liste l�schen
		var categories = document.getElementById("assignedCategories");
		for (var i=0; i < categories.childNodes.length; i++) {
			if (categories.childNodes[i].firstChild ) {
				categories.childNodes[i].removeChild(categories.childNodes[i].firstChild);
			}
		}
	}
}

function checkSearchSubBox(searchBox) {
	searchForm = document.getElementById('searchFormSubCheckbox_' + searchBox);
	searchBox = document.getElementById('searchSubCheckbox_' + searchBox);
	if ( searchForm.checked ) {
		searchBox.className = 'unchecked';
		searchForm.checked = false;
	} else {
		searchBox.className = 'checked';
		searchForm.checked = true;
	}
}

function checkSearchFieldBox(searchBox) {
	searchForm = document.getElementById('searchFormFieldCheckbox_' + searchBox);
	searchBox = document.getElementById('searchFieldCheckbox_' + searchBox);
	if ( searchForm.checked ) {
		searchBox.className = 'unchecked';
		searchForm.checked = false;
	} else {
		searchBox.className = 'checked';
		searchForm.checked = true;
	}
}

function appendSearchCategory(categoryId, categoryName) {
	searchForm = document.getElementById('searchFormCheckbox_' + categoryId);
	var assignedSearchCategories = document.getElementById('assignedCategories');
	if ( searchForm.checked ) {
		var newSpan = document.createElement("span");
		newSpan.className = categoryId;
		var myText = document.createTextNode(categoryName);
		newSpan.appendChild(myText);
		assignedSearchCategories.appendChild(newSpan);
	} else {
		categories = document.getElementById("assignedCategories");

		for (var i = 0; i < categories.childNodes.length; i++) {
  			if (categories.childNodes[i].nodeType == 1) {
  				if (categories.childNodes[i].firstChild && categories.childNodes[i].firstChild.nodeValue == categoryName) {
  					// Text innerhalb des Spans l�schen
  					var Knoten = categories.childNodes[i].firstChild;
  					categories.childNodes[i].removeChild(Knoten);
  					// Span element l�schen
  					var Knoten = categories.childNodes[i];
  					categories.removeChild(Knoten);
  				}
  			}
		}
	}
}

function appendSearchSubCategory(categoryId, categoryName) {
	searchForm = document.getElementById('searchFormSubCheckbox_' + categoryId);
	var assignedSearchCategories = document.getElementById('assignedSubCategories');
	if ( searchForm.checked ) {
		var newSpan = document.createElement("span");
		newSpan.className = categoryId;
		var myText = document.createTextNode("- " + categoryName);
		newSpan.appendChild(myText);
		assignedSearchCategories.appendChild(newSpan);
	} else {
		var categories = document.getElementById("assignedSubCategories");

		for (var i = 0; i < categories.childNodes.length; i++) {
  			if (categories.childNodes[i].nodeType == 1) {
  				if (categories.childNodes[i].firstChild && categories.childNodes[i].firstChild.nodeValue == "- " + categoryName) {
  					// Text innerhalb des Spans l�schen
  					var Knoten = categories.childNodes[i].firstChild;
  					categories.childNodes[i].removeChild(Knoten);
  					// Span element l�schen
  					var Knoten = categories.childNodes[i];
  					categories.removeChild(Knoten);
  				}
  			}
		}

	}
}

function getSubCategories(categoryId) {
	el = document.getElementById('subCategory_' + categoryId);
	searchForm = document.getElementById('searchFormCheckbox_' + categoryId);
	if ( searchForm.checked ) {
		el.style.display = 'block';

		// Alle anderen Unterkategorien verstecken
		var subCategories = document.getElementById('subCategories');
		for ( var i=0; i < subCategories.childNodes.length; i++) {
			if (subCategories.childNodes[i].id && subCategories.childNodes[i].id!='undefined' && subCategories.childNodes[i].id != 'subCategory_' + categoryId) {
				subCategories.childNodes[i].style.display = 'none';
			}
		}

	} else {
		el.style.display = 'none';
	}
}

function searchHideDelayed() {
	window.setTimeout("searchHide()",400);
}

function searchHide() {
	document.getElementById("completeDiv").style.display = "none";
}

/** +++++++++++++++++++++++++++++++++++++++++++++++++++++++	**/
/** +	FUNKTION, DIE IN DEN HTML-SEITEN DER ANWENDNUNG			**/
/** +	AUFGERUFEN WERDEN													**/
/** +++++++++++++++++++++++++++++++++++++++++++++++++++++++	**/

/**
 * Funktion f�gt einen Artikel in den Warenkorb ein
 *
 * @param ajaxServerUrl,String, 	URL des Ajax-Servers
 * @param basketUin, 	String, 	die Uin des Warenkorbes
 * @param language, 		String, 	Sprache, in der der gew�nschte RESPONSE geliefrt werden soll
 * @param idArtikel, 	int, 		idArtikel id des Artikels, der eingef�gt werden soll
 * @param idVariante, 	int, 		Id einer m�glichen Artikel-variante
 * @param anzahl, 		int, 		Anzahl des Artikels
 *
 * @return String, request data or data source
 */
function insertArticleToBasket(ajaxServerUrl, basketUin, language, idArtikel, idArtikelVariante, anzahl)
{
	// Welche BasketUin wird benutzt
	if (globaleBasketUin != ''){
		// Setze BasketUin
		basketUin = globaleBasketUin;
	}

	// hinweis! da der IE problem macht und irgendwie das Ergebnis cached!
	// soll ihm vorgegaukelt werden, dass jedesmal eine andere Seite aufgerufen wird
	var jetzt = new Date();
	var tempParameter = jetzt.getTime();

	// erstelle an dieser Stelle eine String, der alle Angaben enth�lt die der Server braucht!
	var strData = "?aktion=4010&basketUin=" + basketUin + "&language=" + language + "&idArtikel=" + idArtikel + "&idArtikelVariante=" + idArtikelVariante + "&anzahl=" + anzahl +  "&ajaxStatus=on&tempParameter=" + tempParameter ;

	/** sendRequest( strSource, strData, intType, intID ) **/
   /** intType = 0 => GET_Methode **/
   sendRequest( ajaxServerUrl, strData, 0, 1000 );
}

/**
 * Funktion gibt den KeyCode zu einem Event zur�ck
 *
 * @param event
 *
 * @return String keyCode
 */
function getKeyCode(event) {
   event = event || window.event;
   return event.keyCode;
}

/**
 * Funktion f�hrt die Livesuche aus
 *
 * @param ajaxServerUrl,String, 	URL des Ajax-Servers
 * @param language, 		String, 	Sprache, in der der gew�nschte RESPONSE geliefrt werden soll
 *
 * @return String, request data or data source
 */
function search(ajaxServerUrl, query, minLen)
{
	// hinweis! da der IE problem macht und irgendwie das Ergebnis cached!
	// soll ihm vorgegaukelt werden, dass jedesmal eine andere Seite aufgerufen wird
	var jetzt = new Date();
	var tempParameter = jetzt.getTime();

	// erstelle an dieser Stelle eine String, der alle Angaben enth�lt die der Server braucht!
	var strData = "?&text=" + query +  "&ajaxStatus=on&tempParameter=" + tempParameter ;

	if (query.length >= minLen ) {
		sendRequest( ajaxServerUrl, strData, 0, 2000 );
	}
}

/**
 * Funktion sendet einen Request an den Server
 *
 * @param objSelect, stellt das Select-Objekt dar, aus dem heraus die ID des EigenschaftsSatze ermittelt werden kann
  * @param strURL, String, Pfad zur Datei auf dem Server, die die Anfrage liefert
 * @param language, String, representiert die Sprache, in der der gew�nschte RESPONSE geliefrt werden soll
 * @param idArtikel, integer, ID des Artikels. Sollte ein Artikel bereits �ber abgespeicherte Eigenschaften verf�gen, so soll der Eigenschafts-Satz diese mit den abgespeicherten Werten auflisten
 *
 * @param intID, Integer, ID of this request, will be given to registered event handler onreadystatechange', optionally
 *
 * @return String, request data or data source
 */
function getFeatureGroupData(objSelect, strURL, language, idArtikel)
{
	// ermittle id des Eigenschftssatzes!
	var idFeatureGroup = objSelect.options[ objSelect.options.selectedIndex ].value;

	// erstelle an dieser Stelle eine String, der alle Angaben enth�lt die der Server braucht!
	var strData = "aktion=1220&idEigenschaftGruppe=" + idFeatureGroup + "&language=" + language + "&idArtikel=" + idArtikel;
	/** sendRequest( strSource, strData, intType, intID ) **/
   /** intType = 0 => GET_Methode **/
   sendRequest( strURL, strData, 0, 1010 );
}

// siehe oben, jedoch diese Funktion wird nicht �ber eine Selectbox ausgef�hrt, sondern
// kann durch �bergabe der id des Eigenschaftsatze direkt aufgerufen werden.
function getFeatureSetDataOnLoad(idFeatureGroup, strURL, language, idArtikel)
{
	// erstelle an dieser Stelle eine String, der alle Angaben enth�lt die der Server braucht!
	var strData = "aktion=1220&idEigenschaftGruppe=" + idFeatureGroup + "&language=" + language + "&idArtikel=" + idArtikel;
	/** sendRequest( strSource, strData, intType, intID ) **/
   /** intType = 0 => GET_Methode **/
   sendRequest( strURL, strData, 0, 1010 );
}



/**
 * Funktion sendet einen Request an den Server
 * um den Quellcode f�r die QuickSelectBat zu bekommen
 * HINWEISE:
 *		Diese Funktion holt sich alle ben�tigten parameter selbst!
 *    Dies verlangt jedoch, dass der Formularname und id's in den Formula nicht ge�ndert werden d�rfen!
 *    Formular-name: "quickSelectBar"
 *
 * @param strURL		,Url zum Ajax-Server
 * @return String, request data or data source
 */
function refreshQuickSelectBar(strURL)
{
	// ermittle die einzelnen parameter, die ben�tigt werden!
	// #### 1.kategorie
	var catLevel1 				= '';
	// #### 2. kategorie
	var catLevel2 				= '';
	var tempCatLevel2			= '';
	// #### 3. kategorie
	var catLevel3 				= '';
	var tempCatLevel3			= '';
	// #### 4. kategorie
	var catLevel4 				= '';
	var tempCatLevel4			= '';
	// #### Hersteller kategorie
	var producer 				= '';
	var tempProducer			= '';

	// Gerade Ausgew�hlte Kategorie 1
	var objCat1			= document.getElementById('quickSelectTempCatLevel');
	if (objCat1)
		catLevel1		= objCat1.value;

	// Gerade Ausgew�hlte Kategorie 2
	var objCat2			= document.getElementById('quickSelectCatLevel2');
	if (objCat2)
		catLevel2		= objCat2.options[objCat2.options.selectedIndex].value;
	// Zuletzt Ausgew�hlte Kategorie 2
	var objTempCat2	= document.getElementById('quickSelectTempCatLevel2');
	if (objTempCat2)
		tempCatLevel2	= objTempCat2.value;

	// Gerade Ausgew�hlte Kategorie 3
	var objCat3			= document.getElementById('quickSelectCatLevel3');
	if (objCat3)
		catLevel3		= objCat3.options[objCat3.options.selectedIndex].value;
	// Zuletzt Ausgew�hlte Kategorie 3
	var objTempCat3	= document.getElementById('quickSelectTempCatLevel3');
	if (objTempCat3)
		tempCatLevel3	= objTempCat3.value;

	// Gerade Ausgew�hlte Kategorie 4
	var objCat4			= document.getElementById('quickSelectCatLevel4');
	if (objCat4)
		catLevel4		= objCat4.options[objCat4.options.selectedIndex].value;
	// Zuletzt Ausgew�hlte Kategorie 4
	var objTempCat4	= document.getElementById('quickSelectTempCatLevel4');
	if (objTempCat4)
		tempCatLevel4	= objTempCat4.value;

	// Gerade Ausgew�hlter Hersteller
	var objProducer		= document.getElementById('quickSelectProducer');
	if (objProducer)
		producer				= objProducer.options[objProducer.options.selectedIndex].value;
	// Zuletzt Ausgew�hlter Hersteller
	var objTempProducer	= document.getElementById('quickSelectTempProducer');
	if (objTempProducer)
		tempProducer		= objTempProducer.value;

	// hinweis! da der IE problem macht und irgendwie das Ergebnis cached!
	// soll ihm vorgegaukelt werden, dass jedesmal eine andere Seite aufgerufen wird
	var jetzt = new Date();
	var tempParameter = jetzt.getTime();

	// erstelle an dieser Stelle eine String, der alle Angaben enth�lt die der Server braucht!
	var strData = "aktion=10010&catLevel1=" + catLevel1+ "&catLevel2=" + catLevel2 +"&tempCatLevel2=" + tempCatLevel2+"&catLevel3=" + catLevel3+"&tempCatLevel3=" + tempCatLevel3+"&catLevel4=" + catLevel4+"&tempCatLevel4=" + tempCatLevel4+"&producer=" + producer+"&tempProducer=" + tempProducer+"&jetzt=" + jetzt;
	/** sendRequest( strSource, strData, intType, intID ) **/
   /** intType = 0 => GET_Methode **/
   sendRequest( strURL, strData, 0, 3000 );
}

/**
 * Funktion sendet einen Request an den Server
 * um den Quellcode f�r die QuickSelectBar f�r die Handyauflistung  zu bekommen
 * HINWEISE:
 *		Diese Funktion holt sich alle ben�tigten parameter selbst!
 *    Dies verlangt jedoch, dass der Formularname und id's in den Formula nicht ge�ndert werden d�rfen!
 *    Formular-name: "quickSelectBar"
 *
 * @param strURL		,Url zum Ajax-Server
 * @return String, request data or data source
 */
function refreshQuickSelectBarForMobilePhones(strURL)
{
	// ermittle die einzelnen parameter, die ben�tigt werden!
	// #### Hersteller kategorie
	var producer 				= '';

	// Gerade Ausgew�hlter Hersteller
	var objProducer		= document.getElementById('quickSelectProducer');
	if (objProducer)
		producer				= objProducer.options[objProducer.options.selectedIndex].value;


	// hinweis! da der IE problem macht und irgendwie das Ergebnis cached!
	// soll ihm vorgegaukelt werden, dass jedesmal eine andere Seite aufgerufen wird
	var jetzt = new Date();
	var tempParameter = jetzt.getTime();

	// erstelle an dieser Stelle eine String, der alle Angaben enth�lt die der Server braucht!
	var strData = "aktion=10020&producer=" + producer+ "&jetzt=" + jetzt;
	/** sendRequest( strSource, strData, intType, intID ) **/
   /** intType = 0 => GET_Methode **/
   sendRequest( strURL, strData, 0, 3010 );
}


/** +++++++++++++++++++++++++++++++++++++++++++++++++++++++	**/
/** +	Verschiedene Funktionen f�r die QuicSelectBar			**/
/** +++++++++++++++++++++++++++++++++++++++++++++++++++++++	**/


/** +++++++++++++++++++++++++++++++++++++++++++++++++++++++	**/
/** +	DIVERSE KLEIN FUNKTIONEN								**/
/** +++++++++++++++++++++++++++++++++++++++++++++++++++++++	**/
// Removes leading whitespaces
function LTrim( value ) {
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");
}
// Removes ending whitespaces
function RTrim( value ) {
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");
}
// Removes leading and ending whitespaces
function trim( value ) {
	return LTrim(RTrim(value));
}
function popUp(URL) {
	day = new Date();
	id = day.getTime();
	//eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=" +width +",height=" +height ."');");
	eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=700,height=800');");
}

function popUpHandyCom(URL,width,height) {
	day = new Date();
	id = day.getTime();
	//eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=" +width +",height=" +height ."');");
	eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,width=" + width + ",height="+height+",resizable=1');");
}

/** +++++++++++++++++++++++++++++++++++++++++++++++++++++++	**/
/** +	ALLES RUND UM DIE TABS											**/
/** +++++++++++++++++++++++++++++++++++++++++++++++++++++++	**/

// Tabgruppen Array
var groups = new Array();
// Tabcontainer Array
var container = new Array();
// der Style f�r Mouseover und Hover Effekte
var style = '';
// der Name des aktiven Tabs
var activeTab = '';

// Setze den momentan aktive Tab
// n�tig f�r changeStyle

function setActiveTab(tabName) {
	activeTab = tabName;
}

// erstelle eine neue Gruppe
function setGroup(groupName){
	groups.push(groupName);
}

// Style setzen
function setStyle(styleName){
	style = styleName;
}

// Style bei Mouseover �ndern
function changeStyle(objToChange) {
	if(document.getElementById(objToChange)){
		var el = document.getElementById(objToChange);
		if ( el.className == style && objToChange != activeTab) {
			el.className = '';
		} else {
			el.className = style;
		}

	}
}

// erstelle einen neuen Container in einer Gruppe
function setContainer(groupName, containerName){

	// wenn Array noch nicht nicht existiert, dann erstellen
	if (!container[groupName]) {
		container[groupName] = new Array();
	}
	container[groupName].push(containerName);

}

// schliesse Container
function hideContainer(objToClose){
	if(document.getElementById(objToClose)){
		var el = document.getElementById(objToClose);
		el.style.display = "none";
	}
}
// �ffne  Container
function showContainer(objToOpen){
	if(document.getElementById(objToOpen)){
		var el = document.getElementById(objToOpen);
		el.style.display = "block";
	}
}

// wechsele zwischen ge�ffneten und geschlossenem Container
function switchContainer(objToOpen){
	if(document.getElementById(objToOpen)){
		var el = document.getElementById(objToOpen);
		if ( el.style.display == "none"){
			el.style.display = "block";
		} else {
			el.style.display = "none";
		}
	}
}

// funktion setzt einen bestimmten Tab anhand der id auf "Off"
function setClassNameOfTab(objToChangeCss,className){
	// ermittle Element, bei welchen die CSS Id-ge�ndert werden soll
		if(document.getElementById(objToChangeCss)) {
			var tabE1	= document.getElementById(objToChangeCss);
			tabE1.className		= className;
		}
}

// funktion setzt einen bestimmten Container auf Sichtbar und alle anderen auf Unsichtbar
// das Gleiche mit den Tabs! den aktuelle auf Aktiv und die anderen auf Inactiv
// Wichtig! Container m�ssen die id=dataContainer"x" haben
// Wichtig! Tabs m�ssen die id = tabDate"x" haben damit alles funktioniert!
function openOneSectionAndCloseRest(groupToOpen,containerToOpen){
	//1.  zun�chst alle Container schlie�en und Tabs deaktivieren!
	for (var i = 0; i < container[groupToOpen].length; i++ ){

		// erstelle temp. Id's
		var myTempContainerId 	= 'data_' +groupToOpen+ '_' + container[groupToOpen][i];
		var myTempTabId			= 'tab_' +groupToOpen+ '_' + container[groupToOpen][i];
		// schlie�e Container
		hideContainer(myTempContainerId);
		setClassNameOfTab(myTempTabId,'');
	}
	// �ffne den gew�nschten Container und bene den Tab hervor!
	showContainer('data_' +groupToOpen+ '_' +containerToOpen);
	setClassNameOfTab('tab_' +groupToOpen+ '_' +containerToOpen,style)
	setActiveTab('tab_' +groupToOpen+ '_' +containerToOpen);


}

// funktion zeigt alle Container und nur einen bestimmten Tab als Aktiv!
// Wichtig! Container m�ssen die id=dataContainer"x" haben
// Wichtig! Tabs m�ssen die id = tabDate"x" haben damit alles funktioniert!
function openAllSectionAndActivateOneTab(groupToOpen,containerToOpen,classNameOfOpenedTab){

	//1.  zun�chst alle Container �ffene und Tabs deaktivieren!
	for (var i = 0; i <= container[groupToOpen].length; i++ ){
		// erstelle temp. Id's
		var myTempContainerId 	= 'data_' +groupToOpen+ '_' +containerToOpen;
		var myTempTabId			= 'tab_' +groupToOpen+ '_' +containerToOpen;
		// schlie�e Container
		showContainer(myTempContainerId);
		setClassNameOfTab(myTempTabId,'');
	}
	// hebe den gew�nschten Tab hervor!
	setClassNameOfTab(tabIdToActive,classNameOfOpenedTab)
}

// Funktion um eine neue Seite aus einem Select-Element aufzurufen
// ermittelt die URL aus dem gew�hlten Option-Value und sendet die ab
function selectAndGo(idSelectElement) {
	var selectElement = document.getElementById(idSelectElement);
	window.location.href = selectElement.options[selectElement.selectedIndex].value;
}

function getAndChange(strItemSrc, intID) {

	var srcItem	= document.getElementById(strItemSrc);
	var strURL	= srcItem.options[srcItem.options.selectedIndex].value;

	// hinweis! da der IE problem macht und irgendwie das Ergebnis cached!
	// soll ihm vorgegaukelt werden, dass jedesmal eine andere Seite aufgerufen wird
	var jetzt = new Date();
	var tempParameter = jetzt.getTime();

	// erstelle an dieser Stelle eine String, der alle Angaben enth�lt die der Server braucht!
	var strData	= "&jetzt=" + jetzt;

	/** sendRequest( strSource, strData, intType, intID ) **/
   /** intType = 0 => GET_Methode **/
   sendRequest( strURL, strData, 0, intID );
}

function quickSelectBoxChange(strItem, strContent, boolDisabled) {
	document.getElementById(strItem).innerHTML	= strContent;
	//document.getElementById(strItem).disabled	= boolDisabled;
}

function updateCats(path,parameter,selectId,sessionData) {
	temp = document.getElementById(selectId).value;
	if( temp == 'handycombinator' || temp == 'tarifuebersicht' || temp == 'verlaengerung' ){
		if( temp == 'handycombinator' ) {
			document.location.href = path + 'de/handyCombinator.html?select=handycombinator&'+sessionData;
		}
		if( temp == 'tarifuebersicht' ) {
			document.location.href = path + 'de/provider/list.html?select=tarifuebersicht&'+sessionData;
		}
		if( temp == 'verlaengerung' ) {
			document.location.href = path + 'de/vertrag.html?'+sessionData;
		}
	} else {
		go2Category(path,sessionData,selectId);
	}
	
	/*
	
	var http = false;

	if(navigator.appName == "Microsoft Internet Explorer") http = new ActiveXObject("Microsoft.XMLHTTP");
	 else http = new XMLHttpRequest();
	
	http.open("GET", path+"functions/updateCats.php?"+parameter+"="+document.getElementById(selectId).value+"&"+sessionData);
	http.onreadystatechange = function() {
	  if(http.readyState == 4) document.getElementById('iNavi_div').innerHTML = http.responseText;
	}
	http.send(null);
	
	*/
	
}

function go2Article(path,selectId,rubrikId,sessionData) {
	artikelId = document.getElementById(selectId).value;
	if( artikelId > 0 )
	document.location.href = path + 'de/quickSelectBar.html?aktion=10030&idArtikel=' + artikelId + '&artikelRubrik=' + rubrikId + '&' + sessionData;
	//alert(path + 'de/quickSelectBar.html?aktion=10030&idArtikel=' + artikelId + '&artikelRubrik=' + rubrikId + '&' + sessionData);
}

function go2Category(path,sessionData,element) {
	
	var i    = 1;
	var temp = 0;
//	while(document.getElementById('idRubrik_level' + i)) {
//		temp = document.getElementById('idRubrik_level' + i).value;
//		i++;
//	}
	temp = document.getElementById(element).value;
	if(temp > 0)
	document.location.href = path + 'de/quickSelectBar.html?aktion=10030&idRubrik=' + temp + '&' + sessionData;
}

function shopHideMysqlDetails(id) {
	if(document.getElementById('mysql_0_' + id).style.display == 'none') {
		document.getElementById('mysql_0_' + id).style.display = 'block';
		document.getElementById('mysql_1_' + id).style.display = 'none';
	}
	 else {
	 	document.getElementById('mysql_0_' + id).style.display = 'none';
	 	document.getElementById('mysql_1_' + id).style.display = 'block';
	 }
}

function showHideSmartyArray(id,rootHttp) {
	if(document.getElementById(id).style.display == 'none') {
		document.getElementById(id).style.display = 'block';
		document.getElementById('img_' + id).src = rootHttp + 'grafiken/debugger/divToggle_0.jpg';
	}
	 else {
	 	document.getElementById(id).style.display = 'none';
	 	document.getElementById('img_' + id).src = rootHttp + 'grafiken/debugger/divToggle.jpg';
	 }
}

var lastDebugBox = 'debugBox_php';

function showDebugBox(id) {
	document.getElementById(lastDebugBox).style.display = 'none';
	document.getElementById(id).style.display = 'block';
	 
	lastDebugBox = id;
}

function clearBox(obj,onValue,changeValue) {
	if(obj.value == onValue) obj.value = changeValue;
}
