
var timer;

/* when hovering over a menu item */
function menuhover(event) {
	/* hide any other dropdowns */
	$$("ul.submenu").invoke("hide");
	window.clearTimeout(timer);

	var item = Event.findElement(event, 'li');
	var sub = $('sub_' + item.identify());
	/* if we have a dropdown then show it */
	if (sub) {
		sub.clonePosition(item, {setWidth: false, setHeight: false, offsetTop: item.getHeight()});
		sub.show();
	}
}

/* when we leave a menu item or a sub menu */
function delaystophover(event) {
	/* set the timer so we clear up  in a sec if nothing else happens */
	timer = window.setTimeout(stophover, 2000);
}

/* actually stop showing the sub menus */
function stophover(event) {
	/* hide all dropdowns */
	$$("ul.submenu").invoke("hide");
	window.clearTimeout(timer);
}

function keephover(event) {
	/* we're in the menu so keep it till we're done now */
	window.clearTimeout(timer);
}



function spanhover(){
  if (!document.getElementById) return

  var menuspan = document.getElementsByTagName('span');
  for(var i = 0; i < menuspan.length; i++){
   menuspan[i].onmouseover = function(){
    this.className = "hover " + this.className;
   }
   menuspan[i].onmouseout  = function(){
    this.className = this.className.substring(5);
   }
  }
}

function initMenu() {
	/* hide all dropdowns */
	$$("ul.submenu").invoke("hide");

	/* turn on dropdowns for all dropdowns in the root menu */
	var menuitems = $$("#root li");
	for (var i = 0; i < menuitems.length; i++) {
		menuitems[i].observe('mouseover', menuhover);
	}
	/* clear up after dropdowns */
	var menuitems = $$("#root li.dropdown");
	for (var i = 0; i < menuitems.length; i++) {
		menuitems[i].observe('mouseout', delaystophover);
	}
	/* and make the sub menus go away */
	var menuitems = $$("ul.submenu");
	for (var i = 0; i < menuitems.length; i++) {
		menuitems[i].observe('mouseover', keephover);
		menuitems[i].observe('mouseout', delaystophover);
	}
}

/* things to do when the page loads initMenu() */
document.observe("dom:loaded", function() { spanhover(); initMenu(); }, false);
