//variabelen

var rootId			= 	0
var closeTimer		=	0
var timeOut			=	'1000'
var currentMenuId	=	0

//constructor

var TotemDropDownMenu = Class.create({
	initialize: function(rootMenuId) {
		rootId = rootMenuId;
		startDropDownMenu();
	}
});

//methods

function startDropDownMenu() {		
	// eerste level elementen ophalen	
	var mainMenuItems = $(rootId).childElements();
	//loopen door LI's
	for (var liCount=0; liCount < mainMenuItems.length; liCount++) {
		//kijken of we een LI hebben
		if (mainMenuItems[liCount].tagName == 'LI') {	
			//ja
			//sub's onzichtbaar maken
			hideSubMenus(mainMenuItems[liCount].id);
			var mainMenuLinks = $(mainMenuItems[liCount].id).childElements();
			prepareLinks(mainMenuLinks, true);
		}
	}
}

function hideSubMenus(parentMenuItemId) {
	// alle UL's onder parentMenuItemId ophalen
	var submenus = $(parentMenuItemId).select('ul');
	//loopen door UL's
	for (var subMenuCount=0; subMenuCount < submenus.length; subMenuCount++) {
		if (submenus[subMenuCount].tagName == 'UL') {
			var subMenuLinks = $(submenus[subMenuCount].id).childElements();
			prepareLinks(subMenuLinks, false);
			//onzichtbaar maken
			$(submenus[subMenuCount].id).hide();
			//mouse eventhandlers koppelen
			$(submenus[subMenuCount].id).observe('mouseover', cancelCloseTime);
			$(submenus[subMenuCount].id).observe('mouseout', closeTime);
			//submenus onzichtbaar maken (recusief)
			//hideSubMenus(submenus[subMenuCount].id)
		}
	}
}
	
function prepareLinks(menuLinks, areMainMenuLinks) {
	//kijken of het kinderen een link is		
	for (var linkCount=0; linkCount < menuLinks.length; linkCount++) {
		if (menuLinks[linkCount].tagName == 'A') {
			//mouseover en mouseout event koppelen
			var id = menuLinks[linkCount].id;			
			if (areMainMenuLinks == true) {
				//het gaat om toplevel link
				//mouse events toevoegen			
				$(id).observe('mouseover', openMenu.bindAsEventListener(menuLinks[linkCount]));
				//$(id).observe('mouseout', closeTime);
			} else {
				//het gaat om een lower level link
				//mouseover moet menu laten staan
				//$(id).observe('mouseover', cancelCloseTime());						
			}
		}		
	}
}

function openMenu(e) {
	if (currentMenuId) {
		slideUp();
	}
	$(Event.element(e).rel).show();
	//new Effect.BlindDown(Event.element(e).rel, {duration:0.3});
	currentMenuId = Event.element(e).rel;
}

function closeTime(){
	closeTimer = window.setTimeout(slideUp, timeOut);
}

function cancelCloseTime() {
	if(closeTimer) {
		window.clearTimeout(closeTimer);
		closeTimer = null;
	}
}

function slideUp() {
	$(currentMenuId).hide();
	//new Effect.BlindUp(currentMenuId, {duration:0.3});
}

