	//piilotetaan alavalikot. Ei valmiiksi piilotettu, jotta alavalikot näkyisivät
	//sivua muokatessa. Laitetaan nuolet paikoilleen.
	function start()
	{
		//otetaan ylös kaikki menuitemit		
		var menus = document.getElementById("menus").getElementsByTagName("li");

		for(i=0;i<menus.length;i++)
		{
			//laitetaan event handlerit
			menus[i].onmouseover = changein;
			menus[i].onclick = lock;
			menus[i].onmouseout = changeout;
			
			var sub = menus[i].getElementsByTagName("ul")[0]; //jos li:n sisällä ul -> alamenu
			if(sub)
				menus[i].innerHTML = '<div class="subright"> <\/div>' + menus[i].innerHTML;
		}
		//piilotetaan alavalikot
		var subs = document.getElementById("menus").getElementsByTagName("ul");
		for(i=0;i<subs.length;i++)
			if(subs[i].className=="submenu")
				subs[i].style.display = "none";
	}
	var locked = null; 
	var lockstop = false; //lukituksen estin. true jos on juuri klikattu menuitemiä jolla ei ole alavalikkoa
				//epätosi heti kun poistutaan menuitemistä

	// lukitse alamenu jos klikataan menuitemiä
	//tapahtuman käsittelijäfunktio onclick
	function lock()
	{
		//lukitaan jos on lukittavaa tai jos tämän joku alavalikko ei ole jo lukittuna tai lukituksen estoa ei ole
		if(this.getElementsByTagName('ul')[0] && !lockstop)
		{	
			if(locked==this.getElementsByTagName('ul')[0]) //jos on jo lukittuna vapautetaan
			{
				locked=null;	
			}
			else
			{
				if(locked!=null) //toinen on jo lukittuna
				{
					//jos vanha lukittu ei ole jokin tämän isäntä menu
					//niin poistetaan näkyvistä vanhat lukitukset
					//jos ollaan samassa menupuussa kun edellisestä lukittu niin toimitaan toisin
					if(!islockedup(this) && this.parentNode!=locked.parentNode.parentNode && !islockeddown(this.parentNode))
					{
						//vanhan li:n subit poistetaan näkymästä
						var upper=locked;
						while(upper.className=='submenu')
						{
							upper.parentNode.className="menuitem";
							upper.style.display="none";
							upper=upper.parentNode.parentNode;
						}
					}
					//jos on samassa tai ylemmässä saman haaran valikossa
					else if(this.parentNode==locked.parentNode.parentNode || islockeddown(this.parentNode))
					{
						//deaktivoidaan vanhat menut
						var subsul=this.parentNode.getElementsByTagName('ul');
						var subsli=this.parentNode.getElementsByTagName('li');
						for(i=0;i<subsul.length;i++)
							subsul[i].style.display="none";
						for(i=0;i<subsli.length;i++)
							subsli[i].className="menuitem";					
					}
					this.getElementsByTagName('ul')[0].style.display="block";
					this.className="amenuitem";
				}
				locked=this.getElementsByTagName('ul')[0];
			}
		}
		//estää ylimääräiset tapahtumat
		lockstop=true;

		//alert(this.innerHTML);
	}
	// taustan vaihto menuitemiin mennessä
	//tapahtuman käsittelijäfunktio onmouseover
	function changein()
	{
		if(locked==null || islockedup(this))
		{
			//vaihdetaan tyyliluokka niin saadaan helposti tausta vaihdettua
			this.className = "amenuitem";
		}
		if(locked==null || islockedup(this))//näytetään jos ei ole lukittuna tai jos juuri tämä valikko tai sen ylävalikko on lukittuna
		{
			sub = this.getElementsByTagName('ul');
			if(sub[0]) //onko alavalikkoa edes olemassa
				sub[0].style.display = "block";
		}
	}
	//taustan vaihto menuitemistä poistuessa
	//tapahtuman käsittelijäfunktio onmouseout
	function changeout()
	{
		if(locked==null || islockedup(this))
		{
			this.className = "menuitem";
		}
		//jos tämän alla ei ole lukittua menua
		if(this.getElementsByTagName('ul')[0]!=locked && !islockeddown(this))
		{
			sub = this.getElementsByTagName('ul');
			if(sub[0]) //onko alavalikkoa edes olemassa
				sub[0].style.display = "none";
		}
		lockstop=false;
	}
	function islockedup(query) //onko query:n menu tai joku sen isäntä menu lukittu
	{
		var lock;
		for(menu=query.parentNode;menu.tagName!='DIV';menu=menu.parentNode)
		{
			lock = (menu==locked);
			if(lock)
				return lock;
		}
	}
	//onko query:n alla lukittuja menuja
	//ei huomioi itse queryn lukittua menua
	function islockeddown(query)
	{
		var lock;
		subs=query.getElementsByTagName('ul');
		for(i=1;i<subs.length;i++)
		{
			lock = (subs[i]==locked);
			if(lock)
				return lock;
		}
	}
