/**
 * Die Globale Funktion für eine Uhrenberater Ajax Anfrage.
 * Bei Fehler wird die Funktion showError() aufgerufen.
 * Bei Erfolgreicher anfrage wird die Funktion showResponse() aufgerufen.
 */
var setProductRequest = function()
{	
	// lese die werte der versteckten felder aus und übergebe die werte per post
	// an das result program
	param = 'geschlecht='+document.uhrenfinderform.hd_geschlecht.value;
	param = param + '&material='+document.uhrenfinderform.hd_material.value;
	param = param + '&armband='+document.uhrenfinderform.hd_armband.value;
	param = param + '&wasserdichte='+document.uhrenfinderform.hd_wasserdichte.value;
	param = param + '&zifferblatt='+document.uhrenfinderform.hd_zifferblatt.value;
	param = param + '&technik='+document.uhrenfinderform.hd_technik.value;
	param = param + '&preis='+document.uhrenfinderform.hd_preis.value;
	param = param + '&page='+document.uhrenfinderform.hd_page.value;
	var ajax = new Ajax.Request (
							"customer/templates/ajax/get_data.pulsar.uhrenberater.php",
							{
								method:'post',
								parameters:'?PHPSESSID='+ getSessionId(),
								postBody:param,
								onComplete:showResponse, 
								onFailure:showError
							}
						);
}

/**
 * Setzt die Session für den Uhrenberater zurück
 */
var resetUhrenberaterSession = function(mapid) 
{
	// lese die werte der versteckten felder aus und übergebe die werte per post
	// an das result program
	param = 'mapid='+mapid;
	var ajax = new Ajax.Request (
							"customer/templates/ajax/reset_session.uhrenberater.php",
							{
								method:'post',
								parameters:'?PHPSESSID='+ getSessionId(),
								postBody:param,
								onComplete:goToPage, 
								onFailure:showError
							}
						);
}

/**
 * Die Funktion Leitet zu einer Seite weiter, hier wird über den Ajax.Request 
 * ein Parapeter (r) übergeben welcher auch die mapid beinhaltet
 */
var goToPage = function(r) {
	window.location = 'index.php?mapid='+r.responseText;
}

/**
 * Seitenschaltung für die ajaxbasierte Produktausgabe.
 * integer page -> seite 
 */
var getPage = function(page)
{
	document.uhrenfinderform.hd_page.value = page;
	setProductRequest();
}

/**
 * Zeigt die Ajax Antwort. Implementiert innerhalb der Seite.
 * Benötigt <div> - Kontainer mit den Ids "uhrenfinder" und "produktuebersicht"
 * damit das übergebene HTML Code fehlerfreit in die Seite eingebunden werden
 * kann.
 * Diese Funktion wird in der setProductRequest() Funktion benutzt. Es wird das
 * Parameter (object) r genutzt für die Response übergabe.
 */
var showResponse = function(r)
{
	var root = r.responseXML.getElementsByTagName("berater");
	
	// Ersetze die Auswahlbox
	var auswahlbox = root[0].getElementsByTagName('auswahlbox')[0].firstChild.data;
	document.getElementById('uhrenfinder').innerHTML = auswahlbox;
	
	// Ersetze die Ergebnisse
	var ergebniss = root[0].getElementsByTagName('ergebniss')[0].firstChild.data;
	document.getElementById('produktuebersicht').innerHTML = ergebniss;
	
	// der Internet Explorer hat Probleme mit nachgeladennem Content
	// damit nach dem Neuladen der Auswahlboxen die Listen sich wieder aufklappen 
	// lassen muss die sfHover() Funktion ausgeführt werden.
	if (navigator.appName == 'Microsoft Internet Explorer')
		sfHover();
		
	//debug();
}

/**
 * Zeigt Ajax Fehler an.
 * object r Status Meldung
 */
var showError = function(r)
{
	alert("Error: \n" + r.status + "\n" + r.statusText);	
}

/**
 * Funktion für Ajax Debuging
 */
var debug = function() 
{
	debWindow = window.open('customer/ajax.debug.php?PHPSESSID='+ getSessionId(), "debug", "scrollbars=yes,resizable=yes,width=500,height=400,left=100,top=400");
  debWindow.focus();
}

//-- Aktualisiert Geschlecht Auswahlbox
var updateGeschlecht = function(wert, name)
{
	// ändern des labels in der auswahlbox
	document.getElementById('visible_geschlecht').innerHTML = name;
	// aktualisiere das hidden feld
	document.uhrenfinderform.hd_geschlecht.value = wert;
	// navigation muss zurückgesetzt werden
	document.uhrenfinderform.hd_page.value = 1;
	// schicke die anfrage
	setProductRequest();
}

//-- Aktualisiert Techik Auswahlbox
var updateTechnik = function(wert, name)
{
	// ändern des labels in der auswahlbox
	document.getElementById('visible_technik').innerHTML = name;
	// aktualisiere das hidden feld
	document.uhrenfinderform.hd_technik.value = wert;
	// navigation muss zurückgesetzt werden
	document.uhrenfinderform.hd_page.value = 1;
	// schicke die anfrage
	setProductRequest();
}

//-- Aktualisiert Material Auswahlbox
var updateMaterial = function(wert, name)
{
	document.getElementById('visible_material').innerHTML = name;
	document.uhrenfinderform.hd_material.value = wert;
	document.uhrenfinderform.hd_page.value = 1;
	setProductRequest();
}

//-- Aktualisiert Armband Auswahlbox
var updateArmband = function(wert, name)
{
	document.getElementById('visible_armband').innerHTML = name;
	document.uhrenfinderform.hd_armband.value = wert;
	document.uhrenfinderform.hd_page.value = 1;
	setProductRequest();
}


//-- Aktualisiert Wasserdichte Auswahlbox
var updateWasserdichte = function(wert, name)
{
	document.getElementById('visible_wasserdichte').innerHTML = name;
	document.uhrenfinderform.hd_wasserdichte.value = wert;
	document.uhrenfinderform.hd_page.value = 1;
	setProductRequest();
}

//-- Aktualisiert Ziffernblatt Auswahlbox
var updateZifferblatt = function(wert, name)
{
	document.getElementById('visible_zifferblatt').innerHTML = name;
	document.uhrenfinderform.hd_zifferblatt.value = wert;
	document.uhrenfinderform.hd_page.value = 1;
	setProductRequest();
}

//-- Aktualisiert Preis Auswahlbox
var updatePreis = function(wert, name)
{
	document.getElementById('visible_preis').innerHTML = name;
	document.uhrenfinderform.hd_preis.value = wert;
	document.uhrenfinderform.hd_page.value = 1;
	setProductRequest();
}