/*
 * Skript se stará o zobrazení a umístnění podmenu nezávisle na prohlížeči. Menu poháněné  tímto skriptem funguje
 * naprosto stejně ve Firefoxu, Opeře i IE. Jediným problémem je, že v IE se nepdobarvuje celý řádek, je-li najet
 * myší, protože IE neuznává HOVER pro jiný element, než pro odkaz. (Tento problém v IE 6 odpadá.)
 *
 * Vytvoření menu
 * --------------
 * Menu se vytvoří definicí nadřízeného prvku a podřízeného, který  musí  mít  nastaven styl "position: abolute".
 * Prvky se spojí pomocí ID. Nadřízený prvek i prvek, který má být  z  hlediska  menu  podřízený, musí  definovat
 * stejnou obsluhu události onmouseover="showMenu('idPodmenu', 'idRodice');", jinak podmenu zhasne, i když na něm
 * stojí myš. Oba prvky musí  též  obsahovat  onmouseout="menuOut()". Stránka  musí  v  elementu  BODY zachycovat
 * událost onload="setMenuItems(['identifikatory','vsech','podmenu'])".
 */

var menuItems; /* jména identifikátorů rodičkovských menu */
var menuClock = 0; /* reference na časovač */
var minimalniSirkaPodmenu = 250; /* minimální šíře podmenu */
var ofset = 32; /* počet bodů, o kolik níže bude podmenu, než je horní okraj menu */

function getMaxSirka(podmenu) { /* kvůli IE, který jinak podmenu natáhl až k pravému okraji stránky */
	var acka = podmenu.getElementsByTagName("a");
	var maximum = 0;
	for (var i = 0; i < acka.length; i++) {
		if (acka[i].offsetWidth > maximum) maximum = acka[i].offsetWidth;
	}
	maximum += 20;
	if (maximum < minimalniSirkaPodmenu)
		maximum = minimalniSirkaPodmenu;
	return maximum + "px";
}

/* najde absolutní pozici elemntu na stránce nezávisle na prohlížeči. */
function getPos(obj) {
	var levy = horni = 0;
	if (obj.offsetParent) {
		levy = obj.offsetLeft;
		horni = obj.offsetTop;
		while (obj = obj.offsetParent) {
			levy += obj.offsetLeft;
			horni += obj.offsetTop;
		}
	}
	return [levy, horni];
}

function showMenu(podmenu, rodic) { /* zobrazení menu; podmenu a rodic jsou ID objektů na stránce */
	var objRodic = document.getElementById(rodic);
	var objPodmenu = document.getElementById(podmenu);
	var top = 0;
	var left = 0;
	var poziceRodice = [0, 0];
	
	if(objRodic && rodic != null) {
		poziceRodice = getPos(objRodic);
	}

	if(menuClock) {
		clearTimeout(menuClock);
		menuClock = 0;
	}

	if (menuItems != null) {
		for (var i = 0; i < menuItems.length; i++) { //skryje všechny podmenu
		    if(!document.getElementById(menuItems[i])) continue;
    		    if(podmenu != menuItems[i]) document.getElementById(menuItems[i]).style.visibility = 'hidden';
    	    }
	}

	if (objPodmenu) { //zviditelní příslušné podmenu a nastaví mu patřičnou pozici
		objPodmenu.style.left = poziceRodice[0] + "px";
		objPodmenu.style.top = poziceRodice[1] + ofset + "px";
		objPodmenu.style.visibility = 'visible';
		objPodmenu.style.width = getMaxSirka(objPodmenu);
	}
}

function menuOut() { /* zkrytí podmenu 0,8 vteřiny po odchodu myši z rodičovského menu */
	if(menuClock) { //nějaký čaosvač už byl spuštěn
		clearTimeout(menuClock);
		menuClock = 0;
	}
	menuClock = setTimeout("showMenu(0,null)", 800); //od teď za 0,8 vteřiny se zavolá showMenu(0,null)
}

function menuClear() { /* okamžité skrytí menu */
	showMenu(0, null);
}

function setMenuItems(menus) {
	menuItems = menus;
}

/* T. Kala 2009-06-15 */
