menu = {
     /*
          closeSub
		true - pri zavreni jedne urovne se zavrou i vsechny jeji podurovne
		false - pri zavreni jedne urovne se jeji podurovne nemeni
     */
	closeSub : true,
		
	//CSS class "otvirace" podurovni menu
	openerClass : "menu-opener",
	hiddenClass : "hidden",

	init : function() {
	     ULs = document.getElementsByTagName("UL");
	     OLs = document.getElementsByTagName("OL");

		for(i=0;i<ULs.length;i++)
		{
			//len hlavne "menu" zoznamy
			if ((ULs[i].parentNode.tagName!="LI") && (ULs[i].className.indexOf("menu")>-1))
			{
				menu.hideIt(ULs[i]);
				menu.makeIt(ULs[i]);
			}
		}
		for(i=0;i<OLs.length;i++)
		{
			//len hlavne "menu" zoznamy
			if ((OLs[i].parentNode.tagName!="LI") && (OLs[i].className.indexOf("menu")>-1))
			{
				menu.hideIt(OLs[i]);
				menu.makeIt(OLs[i]);
			}
		}
	},
	
	//hide inside lists
	hideIt : function(elm) {
		childsUL = elm.getElementsByTagName("UL");
        childsOL = elm.getElementsByTagName("OL");
		for(a=0;a<childsUL.length;a++){	cls.add(childsUL[a],menu.hiddenClass); }
		for(a=0;a<childsOL.length;a++){	cls.add(childsOL[a],menu.hiddenClass); }
	},

	//hide non active lists if needed
	hideNonActive : function(activeElm) {
	     allElms = document.getElementsByTagName("*");
	     for (u=0;u<allElms.length;u++)
	     {
	          if ((cls.get(allElms[u])=="menu-single") && ((allElms[u].tagName=="UL") || (allElms[u].tagName=="OL")))
	          {
	               ULchilds = allElms[u].getElementsByTagName("UL");
	               OLchilds = allElms[u].getElementsByTagName("OL");
	               for(h=0;h<ULchilds.length;h++)
	                    if (ULchilds[h]!=activeElm)   cls.add(ULchilds[h],menu.hiddenClass);
	               for(h=0;h<OLchilds.length;h++)
	                    if (OLchilds[h]!=activeElm)   cls.add(OLchilds[h],menu.hiddenClass);
	          }
	     }
	},

	//make openers
	makeIt : function(elm) {
		LIs = elm.getElementsByTagName("LI");
		for(a=0;a<LIs.length;a++)
		{
			fc = LIs[a].firstChild;
			count = LIs[a].getElementsByTagName("UL").length;
			count+= LIs[a].getElementsByTagName("OL").length;
			if (count>0)
			{
				menuOpener = document.createElement("a");
				menuOpener.setAttribute("href","javascript:void(0);");
				cls.add(menuOpener,menu.openerClass);
				menuOpenerText = document.createTextNode(fc.nodeValue);
				menuOpener.appendChild(menuOpenerText);
				LIs[a].replaceChild(menuOpener,fc);
				 
				evt.add(menuOpener,"click",menu.toggleIt);
			}
		}
	},
	
	//open and close submenus
	toggleIt : function(e) {
		e = evt.fix(e);
	    par = e.target.parentNode;
		subLists = par.childNodes;
		for(r=0;r<subLists.length;r++)
		{
		     if ((subLists[r].tagName=="UL") || (subLists[r].tagName=="OL"))
		     {
		          activeElm = subLists[r];
		          if (cls.has(subLists[r],menu.hiddenClass))
		               cls.remove(subLists[r],menu.hiddenClass);
				else
				{
				     cls.add(subLists[r],menu.hiddenClass);
				     if (menu.closeSub)
				     {
						ULs = par.getElementsByTagName("UL");
						for(g=0;g<ULs.length;g++)
							cls.add(ULs[g],menu.hiddenClass);
						OLs = par.getElementsByTagName("OL");
						for(g=0;g<OLs.length;g++)
							cls.add(OLs[g],menu.hiddenClass);
					}
				}
			     //hide non active lists if needed
			     menu.hideNonActive(activeElm);
		     }
		}
		
		
	}

}

evt.add(window,"load",menu.init);
