// the timeout for the menu
var timeout = 500;
var ua = navigator.userAgent.toLowerCase(); 
var isIE = ( (ua.indexOf('msie') != -1) && (ua.indexOf('opera') == -1) && (ua.indexOf('webtv') == -1) ); 

// this fonction initialize the menu
function initMenu(treeId) {

	// get some element
	var menu = document.getElementById(treeId);
	if (!(menu)) { alert('Menu element "'+treeId+'" not found!'); return; }
  
	var lis = menu.getElementsByTagName('li');
        
  // i am searching for ul element in li element
	for ( var i=0; i<lis.length; i++ ) {            
		// is there a ul element ? This code creat a warning in mozilla ... Can
		// somebody help me ?
		if (lis.item(i).getElementsByTagName('ul').length > 0) {        
			// link events to list item
			if (document.all) {addAnEvent(lis.item(i),'keyup',show);}
			addAnEvent(lis.item(i),'mouseover',show);
			addAnEvent(lis.item(i),'mouseout',timeoutHide);
			addAnEvent(lis.item(i),'blur',timeoutHide);
			addAnEvent(lis.item(i),'focus',show);
			
			// ad an id to list item
			lis.item(i).id = treeId + "_li" + i;
			// creat a timeout variable for list item
			eval("try {timeout" + treeId + "_li" + i + " = false; } catch(e) {}")
		}
	}
}

function addAnEvent( target, eventName, functionName ) {
	// apply the method to IE
	if (isIE) {
		//target.attachEvent( 'on'+eventName, functionName ); // dont work properly with this
		eval('target.on'+eventName+'=functionName');
	}
	// apply the method to DOM compliant browsers
	else {
		target.addEventListener( eventName , functionName , true ); // true is important for Opera7
	}
}

// hide the first ul element of the current element
function timeoutHide() {
  // start the timeout
	try { eval( "timeout" + this.id + " = window.setTimeout('hideUlUnder( \"" + this.id + "\" )', " + timeout + " );"); } catch(e) {}
}

// hide the ul elements under the element identified by id
function hideUlUnder( id ) {   
	if (document.getElementById(id)) {
		document.getElementById(id).className = document.getElementById(id).className.replace(/sel/g,"");
		document.getElementById(id).getElementsByTagName('ul')[0].style.visibility = "hidden";
		if (document.all) SelectHide('visible');
	}
}

// hide all ul around this list item
function hideAllOthersUls( currentLi ) {
	var ul = currentLi.parentNode;
	for ( var i=0; i<ul.childNodes.length; i++ ) {
		if ( ul.childNodes[i].id && ul.childNodes[i].id != currentLi.id ) {
			hideUlUnderLi( ul.childNodes[i] );
		}
	}
}

// hide all the ul wich are in the li element
function hideUlUnderLi( li ) {
	li.className = li.className.replace(/sel/g,"");
	var uls = li.getElementsByTagName('ul');
	for ( var i=0; i<uls.length; i++ ) {
		uls.item(i).style.visibility = "hidden";
	}
} 

// show the first ul element found under this element
function show() {//document.getElementById('ttt').value=this.tagName;
	// show the sub menu
	this.getElementsByTagName('ul')[0].style.visibility = "visible";
	if (document.all) SelectHide('hidden');
	this.className = this.className.replace(/sel/g,"");
	this.className+=" sel"; // pro zapamatovani nadrazeneho
  // clear the timeout
 	try { if (eval("timeout"+ this.id)) eval ( "clearTimeout( timeout"+ this.id +");" ); } catch(e) {} 
	try{hideAllOthersUls( this )} catch(e){};
}

