﻿/**
 * Methode erzeugt die Links zum Bookmarken der aktuellen Seite per Javascript (Browserabhängig)
 * (http://home.arcor.de/xbo/sidebar-cross-browser/)
 * 
 * @param	url				die zu bookmarkende Seite (absoluter Link)
 * @param	title			der Titel des Bookmarks
 * @param	description		der Titel des Links
 */
function createBookmarkLink(url, title, description) {
	if (document.all && !window.opera){ //IE5+
		document.write("<a href=\"javascript:window.external.AddFavorite('"+url+"','"+title+"')\" title='"+description+"'>"+description+"</a>");
	}
	else if ((typeof window.sidebar == 'object') && (typeof window.sidebar.addPanel == 'function')){ //Gecko
		document.write("<a href=\"javascript:window.sidebar.addPanel ('" + title + "', '" + url + "','');\" title=\"" + description + "\">" + description + "</a>");
	}
	else{
		document.write("<a href=\"" + url + "\" title=\"" + title + "\" rel=\"sidebar\">" + description + "</a>");
	}
}

/**********************************************************************************
 * FOLGENDE METHODEN ÖFFNEN UND SCHLIEßEN DIE SPRACHNAVIGATION
 **********************************************************************************/

 function displayDropDown(elem){
	 var node =elem.nextSibling.nextSibling;
	 node.style.display = "block";
	 
	 $(node).mouseleave(function() {
			node.style.display = "none";
		});
 }
 
/**********************************************************************************
 * FOLGENDE METHODEN REGELN DAS NUTZEN DER STECKERLEISTE IM TARIFRECHNER
 **********************************************************************************/

var numberOfAdults = 5; //Gesamtzahl der ErwachsenenStecker auf der Steckerleiste
var numberOfChilds = 5; //Gesamtzahl der KinderStecker auf der Steckerleiste
var numberOfActiveAdults = 0; //Anzahl eingestellter Erwachsener
var numberOfActiveChilds = 0; //Anzahl eingestellter Kinder

/**
 * Methode blendet in der Steckerleiste alle Erwachsnenbilder halbtransparent bis <code>id</code> ein. (bei MouseOver)
 *
 * @param	int		die ID bis zu welchem Bild eingeblendet werden soll
 */
function onAdultOverHandler(id) {
	// Bilder ein und ausblenden
	for(var i = 1; i <= numberOfAdults; i++) {
		node = document.getElementById('adult'+i);

		if (id > 0) {
			node.style.backgroundImage="url(fileadmin/templates/pics/webpage/misc/adult_opaque.gif)";
			id--;
		} else {
			node.style.backgroundImage = "none";
		}
	}	
}

/**
 * Methode blendet in der Steckerleiste alle Erwachsnenbilder laut <code>numberOfAdults</code> und <code>numberOfActiveAdults</code> ein. 
 * (Gegenstück zu <code>onAdultOverHandler</code> bei MouseOut)
 *
 */
function onAdultOutHandler() {
	// Bilder ein und ausblenden
	for(var i = 1; i <= numberOfAdults; i++) {
		node = document.getElementById('adult'+i);
		
		if (i <= numberOfActiveAdults) {
			 node.style.backgroundImage="url(fileadmin/templates/pics/webpage/misc/adult.gif)";
		} else {
			node.style.backgroundImage = "none";
		}
	}	
}

/**
 * Methode blendet in der Steckerleiste alle Kinderbilder halbtransparent bis <code>id</code> ein. (bei MouseOver)
 *
 * @param	int		die ID bis zu welchem Bild eingeblendet werden soll
 */
function onChildOverHandler(id) {
	// Bilder ein und ausblenden
	for(var i = 1; i <= numberOfChilds; i++) {
		node = document.getElementById('child'+i);
		
		if (id > 0) {
			 node.style.backgroundImage="url(fileadmin/templates/pics/webpage/misc/child_opaque.gif)";
			id--;
		} else {
			node.style.backgroundImage = "none";
		}
	}	
}

/**
 * Methode blendet in der Steckerleiste alle Kinderbilder laut <code>numberOfChilds</code> und <code>numberOfActiveChilds</code> ein. 
 * (Gegenstück zu <code>onChildOverHandler</code> bei MouseOut)
 *
 */
function onChildOutHandler() {
	// Bilder ein und ausblenden
	for(var i = 1; i <= numberOfChilds; i++) {
		node = document.getElementById('child'+i);
		
		if (i <= numberOfActiveChilds) {
			 node.style.backgroundImage="url(fileadmin/templates/pics/webpage/misc/child.gif)";
		} else {
			node.style.backgroundImage = "none";
		}
	}	
}

/**
 * Methode blendet alle Bilder der Erwachsenen bis zum geklickten Bild ein. Alle restlichen Bilder werden ausgeblendet.
 * Definiert Id einen Wert, der > numberOfAdults, dann werden alle Bilder eingeblendet.
 * Zusätzlich werden die Formularfelder für den tarifrechner geupdatet
 *
 * @param	int			die Nummer des Bildes (über die Nummer kann man den entsprechenden node aufrufen)
 * @param 	boolean		wenn <code>true</code>, wird das Formularfeld mit den kWh-Werten aktualisiert (wird die Steckerleiste aufgrund einer Eingabe in das kWh-Feld geändert, darf dieses Feld nicht mehr aktualisiert werden!!)
 */
function clickAdult(id, updateKwh) {
	var node;
	
/*	if (!(numberOfActiveAdults > numberOfAdults && id == numberOfAdults)) {
		numberOfActiveAdults = id;
	}*/
	numberOfActiveAdults = id;
	
	// Wert zum ein und ausblenden der Bilder korrigieren
	if (id > numberOfAdults) {
		id = numberOfAdults;
	}
	
	// Bilder ein und ausblenden
	for(var i = 1; i <= numberOfAdults; i++) {
		node = document.getElementById('adult'+i);
		
		if (id > 0) {
			 node.style.backgroundImage="url(fileadmin/templates/pics/webpage/misc/adult.gif)";
			id--;
		} else {
			node.style.backgroundImage = "none";
		}
	}
	
	// Eingestellte Anzahl in Formularfeld eintragen
	node = document.getElementsByName("tx_mmetariffv2_pi1[adult]")[0];
	node.value = numberOfActiveAdults;
	// kwh entsprechend der Daten abgleichen
	if (updateKwh) {
		updateKwhField();
	}
}

/**
 * Methode blendet alle Bilder der Kinder bis zum geklickten Bild ein. Alle restlichen Bilder werden ausgeblendet.
 * Definiert Id einen Wert, der > numberOfChilds, dann werden alle Bilder eingeblendet.
 * Zusätzlich werden die Formularfelder für den tarifrechner geupdatet
 *
 * @param	int			die Nummer des Bildes (über die Nummer kann man den entsprechenden node aufrufen)
 * @param 	boolean		wenn <code>true</code>, wird das Formularfeld mit den kWh-Werten aktualisiert (wird die Steckerleiste aufgrund einer Eingabe in das kWh-Feld geändert, darf dieses Feld nicht mehr aktualisiert werden!!
 */
function clickChild(id, updateKwh) {
	var node;
	
	/*if (!(numberOfActiveChilds > numberOfChilds && id == numberOfChilds)) {
		numberOfActiveChilds = id;
	}*/
	numberOfActiveChilds = id;
	
	// Wert zum ein und ausblenden der Bilder korrigieren
	if (id > numberOfChilds) {
		id = numberOfChilds;
	}	
	
	// Bilder ein und ausblenden
	for(var i = 1; i <= numberOfChilds; i++) {
		node = document.getElementById("child"+i);
		if (id > 0) {
			node.style.backgroundImage="url(fileadmin/templates/pics/webpage/misc/child.gif)";
			id--;
		} else {
			node.style.backgroundImage = "none";
		}
	}
	
	// Eingestellte Anzahl in Formularfeld eintragen
	node = document.getElementsByName("tx_mmetariffv2_pi1[child]")[0];
	node.value = numberOfActiveChilds;
	// kwh entsprechend der Daten abgleichen
	if (updateKwh) {
		updateKwhField();
	}
}

/**
 * Methode erhöht die Anzahl der Erwachsenen um 1 wenn man auf den Button 'mehr' klickt.
 * Entsprechend werden die Bilder eingeblendet und das Formular aktualisiert.
 */
function increaseAdults() {
	// Bild einbeldenden
	if (numberOfActiveAdults < numberOfAdults) {
		numberOfActiveAdults++;
		var node = document.getElementById("adult"+numberOfActiveAdults);
		node.style.backgroundImage="url(fileadmin/templates/pics/webpage/misc/adult.gif)";
	} else {
		numberOfActiveAdults++;
	}
	
	// Eingestellte Anzahl in Formularfeld eintragen
	node = document.getElementsByName("tx_mmetariffv2_pi1[adult]")[0];
	node.value = numberOfActiveAdults;
	// kwh entsprechend der Daten abgleichen
	updateKwhField();
}

/**
 * Methode erhöht die Anzahl der Kinder um 1 wenn man auf den Button 'mehr' klickt.
 * Entsprechend werden die Bilder eingeblendet und das Formular aktualisiert.
 */
function increaseChilds() {
	// Bild einbeldenden
	if (numberOfActiveChilds < numberOfChilds) {
		numberOfActiveChilds++;
		var node = document.getElementById("child"+numberOfActiveChilds);
		node.style.backgroundImage="url(fileadmin/templates/pics/webpage/misc/child.gif)";
	} else {
		numberOfActiveChilds++;
	}
	
	// Eingestellte Anzahl in Formularfeld eintragen
	node = document.getElementsByName("tx_mmetariffv2_pi1[child]")[0];
	node.value = numberOfActiveChilds;	
	// kwh entsprechend der Daten abgleichen
	updateKwhField();
}

/**
 * Methode updated Steckerleiste, sobald man einen bestimmten kWh-Wert eingibt
 *
 * @param 	boolean		wenn <code>true</code>, wird das Formularfeld mit den kWh-Werten aktualisiert (wird die Steckerleiste aufgrund einer Eingabe in das kWh-Feld geändert, darf dieses Feld nicht mehr aktualisiert werden!! 
 */
function updateSteckerleiste(updateKwh) {
	var adultNode = document.getElementsByName("tx_mmetariffv2_pi1[adult]")[0];
	var childNode = document.getElementsByName("tx_mmetariffv2_pi1[child]")[0];
	clickAdult(adultNode.value,updateKwh);
	clickChild(childNode.value,updateKwh);
}

/**
* Methode leert den Inhalt von <code>node</code> 
*
* @param	node	der zu leerende Knoten
*/
function clearNode(node) {
	node.value = "";
}

/**
* Methode füllt den Defaultinhalt in <code>node</code> 
*
* @param	node	der zu befüllende Knoten
*/
function fillNode(node) {
	if (node.value == "") {
		node.value = node.defaultValue;
	}
}

/**
* Methode verbirgt den aktuellen Knoten <code>node</code> und blendet den nächsten Knoten ein, der sofort den Focus bekommt
*
* @param	node	der auszublendende Knoten
*/
function hideNode(node) {
	node.style.display="none";
	$(node).next().attr("style", "display:block;");
	$(node).next().focus();
}

/**
* Methode verbirgt den aktuellen Knoten <code>node</code> und blendet den vorherigen Knoten ein.
*
* @param	node	der auszublendende Knoten
*/
function showNode(node) {
	if(node.value == "") {
		node.style.display="none";
		$(node).prev().attr("style", "display:block;");
	}
}
