// Smartdrop - v 1.0
// Author: Keith Gibbs (kgibbs@bu.edu)

// Please do not duplicate this code without permission

function buildNav() {
	manifest = navset.length;								
	for (var i = 0; i < navset.length; i++) {				
		var menu = navset[i];
		var container = document.getElementById(keyword + i);	
		addMouseEvents(container, true	);
		var ul = document.createElement("ul");
		ul.style.visibility ="hidden";
		container.appendChild(ul);								
		buildMenu(ul, menu, true);
	}	
}

function buildMenu(ul, menu, isDropdown) {
	for (var j = 0; j < menu.length; j++) {
		var item = menu[j];
		var li = document.createElement("li");
		var a = document.createElement("a");
		a.appendChild(document.createTextNode(item.label.replace(/ /g,'\u00a0')));
		var href = (item.uri.charAt(0) == '/' || item.uri.substr(0, 4) == 'http') ? item.uri : basehref + item.uri;
		a.setAttribute('href', href);
		if (item.target) a.setAttribute('target', item.target);
		if (item.className) li.className = item.className;
		li.appendChild(a);
		ul.appendChild(li);
		ul.className = (isDropdown) ? 'dropdown' : 'flyout';
		ul.style.visibility ="hidden";
		if (item.submenu) {
			var subul = document.createElement("ul");
			li.id = (keyword + manifest);
			addMouseEvents(li, false);
			li.appendChild(subul);
			manifest++;
			buildMenu(subul, item.submenu, false);
		}
	}	
}

function addMouseEvents(li, isDropdown) {
   isVisible = new Array;
   var x = li.id.substr(keyword.length);
   li.onmouseover = function(ev) {
     for (var i = 0; i < navset.length; i++) {
       document.getElementById(keyword + i).getElementsByTagName('ul')[0].style.visibility='hidden';
	   document.getElementById(keyword + i).getElementsByTagName('a')[0].className=' ';
     }
     li.getElementsByTagName('ul')[0].style.visibility='visible';
	 li.getElementsByTagName('a')[0].className='hover';
     isVisible[x] = true;
   };
   li.onmouseout = function(ev) {
     isVisible[x] = false;
	if (isDropdown)
       setTimeout("hideMenu("+x+");", 1750);
     else
       hideMenu(x);
   };
}

function hideMenu(x) {
	var m = document.getElementById(keyword + x);
	var uls = m.getElementsByTagName('ul');
	if (isVisible[x]) {return}; 
	for (var i = 0; i < uls.length; i++) {
		m.getElementsByTagName('a')[0].className=' ';
		if (uls[i].id != (keyword + i)) uls[i].style.visibility='hidden';
	}
}