/*
Delayed collapse menu 1.0
menu.js
Martin Hozík - martin.hozik@vlado.cz
Graphic studio VLADO - www.vlado.cz
Mon, 28 May 2007 19:57:53 GMT
UTF-8
*/


var menuHandler = {

	hideInterval		:	350,
	elementId			:	'menu',
	instant				:	false,

	init:function(){
	
		function menuInit(){
			
			var menu = document.getElementById(menuHandler.elementId);
			menuHandler.removeClassName('nojavascript',menu);
			var items = menu.getElementsByTagName('LI');
			
			for(var i=0; i<items.length; i++){
		
				items[i].id = menuHandler.elementId+'Item'+i;
	
				items[i].onmouseover = function(){
					this.over = true;
					menuHandler.callMouseOver(this.id);
				}				
	
				items[i].onmouseout = function(){
					this.over = false;
					clearTimeout(this.callMouseOverTimer);
					setTimeout('menuHandler.hideDelay(\''+this.id+'\')',menuHandler.hideInterval);
					menuHandler.removeClassName('active',menuHandler.getFirstChildByName('A',this));
				}
			}
		}
		
		if(!menuHandler.instant){
			menuHandler.addEvent(window,'load',menuInit);
		}else{
			menuInit();
		}
		
	},
		
	addEvent:function(element, eventName, func){
		if(element.addEventListener){
			element.addEventListener(eventName, func, false);
		}else if (element.attachEvent){
			element.attachEvent('on'+eventName, func);
		}
	},
	
	removeClassName:function(cName,node){
		node.className = node.className.replace(new RegExp("\\s?"+cName+"\\b","g"), "");		
	},
	addClassName:function(cName,node){
		node.className += (node.className == "" ? cName : " "+cName);		
	},
	getFirstChildByName:function(cName,node){
	var nodes = node.childNodes;
		for(var j=0;j<nodes.length;j++){
			if(nodes[j].nodeName == cName){
				return nodes[j];
			}
		}	
		return false;
	},	
	hideDelay:function(idName){
		if(!document.getElementById(idName).over){
			menuHandler.removeClassName('hover',document.getElementById(idName));
			var childUL = menuHandler.getFirstChildByName('UL',document.getElementById(idName));
			if(childUL){
				menuHandler.removeClassName('active',childUL);
			}
		}
			
	},
	mySiblingHasOpenedSubmenu:function(node){
		var nodes = node.parentNode.childNodes;
		var childUL;

		if(node.className.match(new RegExp("\\s?hover\\s?"))){
			return false;
		}

			for(var j=0;j<nodes.length;j++){
				if(nodes[j].nodeName == 'LI'){
					childUL = menuHandler.getFirstChildByName('UL',nodes[j]);
					if(!childUL){
						continue;
					}
					if(!childUL.className.match(new RegExp("\\s?active\\s?"))){
						continue;
					}
					return true;
				}
			}
		return false;
	},
	callMouseOver:function(idName){
		var node = document.getElementById(idName);
		if(!menuHandler.mySiblingHasOpenedSubmenu(node)){	
			menuHandler.addClassName('hover',node);
			menuHandler.addClassName('active',menuHandler.getFirstChildByName('A',node));
			var childUL = menuHandler.getFirstChildByName('UL',node);
			if(childUL){
				menuHandler.addClassName('active',childUL);
			}
		}else{
			node.callMouseOverTimer = setTimeout('menuHandler.callMouseOver(\''+node.id+'\')',menuHandler.hideInterval/2);					
		}	
	}
}

/* inicializace */
menuHandler.init();