/* ---------------------------------------------------------------------------------------------------------------- */
/* Portale Javascript		    																					*/
/* Wirth & Horn Informationssysteme GmbH																			*/
/* 17.07.2009 KM																									*/
/* ---------------------------------------------------------------------------------------------------------------- */

var highlightedElements = new Array();
var openedSubmenus = false;

$(document).ready(function() {
	/**
	 * Submenüs mit jQuery Plugin Superfish "aus-sliden" lassen
	 */
	$('div.portal_subnavi ul').superfish({
		autoArrows: false, 
		animation: { left: '260px', opacity:'show', width: 'show' }, 
		delay: 0,
		speed: 'fast',
		onShow: function() { openedSubmenus = true; setPortalSubmenuCenter(this);  },
		onHide: function() { openedSubmenus = false; }		
	});
	/**
	 * Bei Hover der Links, die Bilder mit der schwarzen Schrift
	 * durch die mit der weissen ersetzen. Beim Un-Hover umgegkehrt.
	 */
	$("a.portal_headernavi").hover(
		// Highlight hinzufügen
		function (e) {
			var element_id = getIdFromClass($(this).parent("li:eq(0)").get(0));
			setPortalHighlight(element_id,true);
			if($(".portal_subnavi_ul_" + element_id).length > 0) {
				$("#portal_subnavi_mid_wrapper").addClass("submenu_aktiv");
			}
		},
		// Highlight entfernen
		function (e) {
			var element_id = getIdFromClass($(this).parent("li:eq(0)").get(0));
			setPortalHighlight(element_id,false);
			$("#portal_subnavi_mid_wrapper").removeClass("submenu_aktiv");
		}
	);
	window.setInterval(checkSubmenu,1000);
});

/**
 * Püfen ob ein Submenü ausgelappt ist, sollte dies
 * nicht der Fall sein wird das Default Menü ange-
 * zeigt
 */
function checkSubmenu() {
	if(openedSubmenus == false && typeof(page_id) != "undefined" && typeof(parent) != "undefined") {
		openMenu(page_id,parents);
	}
}

/**
 * ID aus Klassenname extrahieren
 * @param Object element Referenz auf DOM-Element
 */
function getIdFromClass(element) {
	return parseInt(element.className.replace("portal_subnavi_li_",""));
}

/**
 * Highlight eines Menüpunktes setzen
 * @param integer id ID der Katalogseite
 * @param bool highlight Highlight an oder aus
 */
function setPortalHighlight(id,highlight) {
	if(highlight == true) {
		var pos = arrayFind(highlightedElements,id);
		if(pos < 0) {
			highlightedElements.push(id);
			//
			// Textfarbe
			//
			var $elementLI  = $("li.portal_subnavi_li_" + id);
			var $elementA   = $elementLI.find("a:eq(0)");
			var $elementIMG = $elementA.find("img:eq(0)");
			if($elementIMG.length > 0) { $elementIMG.attr("src",$elementIMG.attr("src").replace("_black","_white")); }			
			//
			// Linien
			//
			$nextA = $elementLI.next("li:eq(0)").find("a:eq(0)"); 
			$elementA.css("background-image",$elementA.css("background-image").replace("_black","_white"));
			$nextA.css("background-image",$elementA.css("background-image").replace("_black","_white"));
			//
			// Letztes LI --> UL Background ändern
			//
			if($nextA.length == 0) {
				var $elementUL = $elementLI.parent("ul:eq(0)");
				$elementUL.css("background-image",$elementUL.css("background-image").replace("_black","_white"));
			}
		}
	}
	else {
		var blacklist = parents.split(",");
		blacklist.push("" + page_id + "");
		var pos = arrayFind(highlightedElements,id);
		if(pos >= 0 && arrayFind(blacklist,id) < 0) {
			highlightedElements.splice(pos,1);
			//
			// Textfarbe
			//
			var $elementLI  = $("li.portal_subnavi_li_" + id);
			var $elementA   = $elementLI.find("a:eq(0)");
			var $elementIMG = $elementA.find("img:eq(0)");
			if($elementIMG.length > 0) { $elementIMG.attr("src",$elementIMG.attr("src").replace("_white","_black")); }		
			//
			// Linien
			//
			$nextA = $elementLI.next("li:eq(0)").find("a:eq(0)"); 
			$elementA.css("background-image",$elementA.css("background-image").replace("_white","_black"));
			$nextA.css("background-image",$elementA.css("background-image").replace("_white","_black"));
			//
			// Letztes LI --> UL Background ändern
			//
			if($nextA.length == 0) {
				var $elementUL = $elementLI.parent("ul:eq(0)");
				$elementUL.css("background-image",$elementUL.css("background-image").replace("_white","_black"));
			}
		}
	}
}

/**
 * Position von Element in Array ermitteln
 * @param Array arr  Array, in dem gesucht werden soll
 * @param Mixed elem Element, dass in Array gesucht werden soll
 * @return Integer Position, an dem sich das Element befindet,
 *                 -1 wenn nicht gefunden
 */
function arrayFind(arr,elem) {
	for(var i=0;i<arr.length;i++) {
		if(arr[i] == elem) return i;
	}
	return -1;
}

/**
 * Aktuellen Menüpunkt ausklappen und highlighten
 * @param elements ID-Liste mit Element-IDs
 */
function openPortalSubmenu(elements) {
	for(var i=0;i<elements.length;i++) {
		var element_id = parseInt(elements[i]);
		var $currUl = $("ul.portal_subnavi_ul_" + element_id);
		$currUl.css({"visibility":"visible","display":"block","left":"260px"});
		//
		// src des aktuellen Images austauschen
		//
		var $currLi = $currUl.parent("li");
		if($currLi.length == 0) {
			$currLi = $("li.portal_subnavi_li_" + element_id);
		}
		var $currImg = $currLi.find("a:eq(0)").find("img:eq(0)");
		if($currImg.length > 0) { $currImg.attr("src",$currImg.attr("src").replace("_black","_white")); }
		//
		// Hintergrundgrafiken der Link-Tags setzen
		//
		var $currA = $currLi.find("a:eq(0)");
		var $nextA = $currLi.next("li").find("a:eq(0)");
		if($currA.length > 0) { $currA.css("background-image",$currA.css("background-image").replace("_black","_white")); }
		if($nextA.length > 0) { $nextA.css("background-image",$nextA.css("background-image").replace("_black","_white")); }
		//
		// Untermenüpunkt auf active setzen
		//
		var $currSubLi = $("li.portal_subnavi_li_" + element_id);
		var $currSubA  = $currSubLi.find("a:eq(0)");
		$currSubA.css("color","white");
	}
	// Menü evtl. nach oben aufklappen lassen
	$element = $("ul.portal_sub").each(function () {
		if($(this).css("display") != "none") {
			setPortalSubmenuCenter($(this));
		}
	});
}

/**
 * Zentriert das Untermenü (KM 05.11.2010)
 */
function setPortalSubmenuCenter($ul) {
	// Elemente
	var $ul_menu_sub  = $ul;
	var $ul_menu_main = $ul_menu_sub.parent("li:eq(0)").parent("ul:eq(0)");
	var $li_menu_main = $ul_menu_sub.parent("li:eq(0)");
	// Offsets der Elemente
	var offset_header = 60;
	var offset_menu_main_ul = $ul_menu_main.offset().top - offset_header;
	var offset_menu_sub_ul  = $ul_menu_sub.offset().top;
	// Höhen der Elemente
	var height_menu_sub_ul  = $ul_menu_sub.height();
	// Neues Offset des Submenus errechnen ...
	var offset_new_sub_ul = ((height_menu_sub_ul / 2) * -1);
	if($ul_menu_sub.find("li").length / 2 != 0) {
		offset_new_sub_ul += 10;
	}
	else {
		offset_new_sub_ul += 15;
	}
	// ... und setzen
	$ul_menu_sub.css("top",Math.round(offset_new_sub_ul)+"px");
	
}
