﻿
/*******************************************************************
* Methoden für das Sprachmenü
*******************************************************************/

/**
 * Methode verbirgt das DropDownFenster der Sprachauswahl und blendet das element mit der ID <code>id</code> ein.
 * 
 * @param	id 	<String> die id des zu zeigenden Elementes
 */
function toggleLanguageMenu(id) {
	document.getElementById('languageDropDown').style.display='none';
	if (id) {
		document.getElementById(id).style.display='block';
	}
}

/*******************************************************************
* Methoden für das Hauptmenü
*******************************************************************/

/**
* Falls die ID von <code>node</code> leer ist, wird der 1. Unterknoten eingeblendet.
* Zusätzlich wir der 1. Unterknoten des Knoten mit der ID 'currentMainItem' verborgen.
* Wird der Mauszeiger nun wieder von diesen Knoten heruntergezogen, wird der 1. Unterknoten wieder 
* ausgeblendet und der vorher ausgeblendete Unterknoten wieder eingeblendet.
*
* @param	node	das zu behandelnde NodeObjekt
*/
function displaySubMenu(node) {
	var condition = node.id;
	if ('' == condition) {
		node.id='highlight';
		if (1 < node.childNodes.length) {
			node.childNodes[1].style.display="block";
		}
		var oldNode = document.getElementById('currentMainItem');
		if (oldNode) {
			oldNode.id='currentMainItemHide';
			if (1 < oldNode.childNodes.length) {
				oldNode.childNodes[1].style.display="none";
			}				
		}
		
		$(node).mouseleave(function() {
			node.id='';
			if (1 < node.childNodes.length) {
				node.childNodes[1].style.display="none";
			}			
			var oldNode = document.getElementById('currentMainItemHide');
			if (oldNode) {			
				oldNode.id='currentMainItem';
				if (1 < oldNode.childNodes.length) {
					oldNode.childNodes[1].style.display="block";
				}				
			}
		});
	}
}


/*******************************************************************
* Methoden für die DropDownliste
*******************************************************************/

/**
* Methode verbirgt alle Nodes mit der Klasse 'dropDownListContent' und klappt das aktuell gewählte Listenelementelement aus
*
* @param 	node	das zu behandelnde NodeObjekt
*/
function showListElem(node) {
	var nodes = getElementsByClassName("dropDownListContent");
	for(var i=0; i < nodes.length; i++) {
		nodes[i].style.display = 'none';
		var tmpNode = nodes[i];
		$(tmpNode).prev().removeClass("isOpen");
		$(tmpNode).prev().addClass("isClose");
	}
	
	node.className = "dropDownListHeader isOpen";
	
	$(node).next().slideDown(0);
}

/**
* Methode liefert alle Nodes mit der Klasse 'className' beginnend bei 'node'.
* Wird 'node' nicht mit übergeben wird der erste 'body-Node' des Dokuments verwendet.
*
* @param	className	der zu suchende Klassenname
* @param 	node		das BasisNodeObjekt
*/
function getElementsByClassName(className, node) {
	if(!node) {
		node = document.getElementsByTagName("body")[0];
	}
	var ret = [];
	var regExp = new RegExp('\\b' + className + '\\b');
	var nodes = node.getElementsByTagName("*");
	for(var i=0; i < nodes.length; i++) {
		if(regExp.test(nodes[i].className)) {
			ret.push(nodes[i]);
		}
	}	
	return ret;
}

/*******************************************************************
* Methoden für die Referenceliste
*******************************************************************/

/**
* Methode blendet den nächsten Knote von 'node' ein und erzeugt ein Event, der diesen Knoten wieder ausblendet, sobald der mauszeiger von dem 
* Objekt gezogen wird.
*
* @param 	node		das BasisNodeObjekt
*/
function showReferenceCategories(node) {
	/*$(node).children("li").children("ul").attr("style", "display:block;");
	$(node).mouseleave(function() {
		$(node).children("li").children("ul").attr("style", "display:none;");
	});*/
	$(node).next().attr("style", "display:block;");
	$(node).next().mouseleave(function(){
		$(node).next().attr("style", "display:none;");
	});
}
