var menus = new Array();

function buildMenu(menu, topLevel) {

	if(!Object.isArray(menu[1])) {
		$(menu[0] + "-button").observe("mouseover", function(event) { Event.element(event).addClassName("hover"); });
		$(menu[0] + "-button").observe("mouseout", function(event) { Event.element(event).removeClassName("hover"); });
		return;
	}

	var menuId = menu[0];
	var menuChildren = menu[1];

	var menuList = document.createElement("ul");
	Element.insert(document.body, menuList);
	menus.push(menuList);
	menuList.id = menuId;
	menuList.style.position = "absolute";
	menuList.style.visibility = "hidden";
	menuList.className = "drop-menu"; 
	if(!topLevel) 	Element.clonePosition(menuList, $(menuId + "-button"), { offsetLeft : $(menuId + "-button").getWidth() });
	else			Element.clonePosition(menuList, $(menuId + "-button"), { offsetTop : $(menuId + "-button").getHeight() });
	menuList.activator = $(menuId + "-button");
	Event.observe(menuList, "mouseover", function(event) { menuList.active = true; });
	Event.observe(menuList, "mouseout", function(event) { menuList.active = false; });
	Event.observe($(menuId + "-button"), "mouseover", function(event) { menuList.active = true; });
	Event.observe($(menuId + "-button"), "mouseout", function(event) { menuList.active = false; });

	for(var i = 0; i < menuChildren.length; i++) {
		var menuLi = document.createElement("li");
		var menuButton = document.createElement("a");
		menuButton.id = menuChildren[i][0] + "-button";
		Element.insert(menuLi, menuButton);
		Element.insert(menuList, menuLi);
		
		if(Object.isArray(menuChildren[i][1])) {
			menuButton.innerHTML = menuChildren[i][3];
			var menu = buildMenu(menuChildren[i]);
			menuButton.href = "index.php?article=" + menuChildren[i][2];
			Event.observe(menu, "mouseover", function(event) { menuList.active = true; });
			Event.observe(menu, "mouseout", function(event) { menuList.active = false; });
		} else {
			menuButton.className = "no-sub";
			menuButton.innerHTML = menuChildren[i][2];
			menuButton.href = "index.php?article=" + menuChildren[i][1];
		}
		
		if(i == 0)							Element.addClassName(menuButton, "top");
		if(i == (menuChildren.length - 1))	Element.addClassName(menuButton, "bottom");
	}
	
	return menuList;
}

// Polls menus to see if they should be hidden or shown.
setInterval(function() {
	for(var i = menus.length - 1; i >= 0; i--) {
		if(menus[i].active) {
			if(menus[i].activator)	Element.addClassName(menus[i].activator, "menu-on");
			menus[i].style.visibility = "visible";
		} else {
			if(menus[i].activator)	Element.removeClassName(menus[i].activator, "menu-on");
			menus[i].style.visibility = "hidden";
		}
	}
}, 100);