/* Based on a menu system described in the book 'DHTML Utopia' by Stuart Langridge. Adapted by Andrew Baxter to allow horizontal top-level menus. */
/* TODO - get it working with vertical second level menus */

mn= {
	init:function() {
		var menuUl=document.getElementById("menu"); // find the top level menu tag
		var uls=menuUl.getElementsByTagName('div');
		for (var u=0; u<uls.length; u++) {
			//uls[u].className+=" submenu"; // add a submenu class to all sub divs
			}		
		var uls=document.getElementsByTagName('ul');
		for (var u=0; u<uls.length; u++) {
			if (uls[u].className.search(/\bmenu\b/) ==-1 ) continue;
			var lis=uls[u].getElementsByTagName('li');
			for (var i=0; i<lis.length; i++) {
				var node=lis[i];
				if (node.nodeName.toLowerCase() == 'li' && node.getElementsByTagName('div').length >0) {
					mn.addEvent(node, 'mouseover', mn.getMoverFor(node), false);
					mn.addEvent(node, 'mouseout', mn.getMoutFor(node), false);
					//node.getElementsByTagName('a')[0].className+=' subheader';
					node.isIn=false;
					}
				}
			}
		},
	
	getMoverFor: function(node) {
		return function(e) {mn.mover(e,node);};
		},
		
	getMoutFor: function(node) {
		return function(e) {mn.mout(e,node);};
		},
		
	mover: function(e,targetElement) {
		var el=window.event?targetElement:e?e.currentTarget:null;
		if (!el) return;
		clearTimeout(el.outTimeout);
		if (!el.isIn) {
			for (var i=0; i<el.childNodes.length; i++) {
				var node=el.childNodes[i];
				if (node.nodeName.toLowerCase() == 'div') {
					subnode=node.getElementsByTagName('ul')[0];
					subnode.style.display='block';
					break;
					}
				}
			}
		el.isIn=true;
		},
		
	mout:function(e,targetElement) {
		var el=window.event?targetElement:e?e.currentTarget:null;
		//alert("mout");
		if (!el) return;
		el.outTimeout=setTimeout(function() { mn.mout2(el); }, 300);
		},
		
	mout2: function(el) {
		for (var i=0; i< el.childNodes.length; i++) {
			var node=el.childNodes[i];
			if (node.nodeName.toLowerCase() == 'div') {
				subnode=node.getElementsByTagName('ul')[0];
				subnode.style.display='none';
				break;
				}
			}
		el.isIn=false;
		},
		
	addEvent: function(elm, evType, fn, useCapture) {
		// cross-browser event handling for IE5+, NS6 and Mozilla
		// by Scott Andrew
		if (elm.addEventListener) {
			elm.addEventListener(evType,fn,useCapture) ;
			return true;
			}
		else if (elm.attachEvent) {
			var r=elm.attachEvent('on'+evType,fn);
			EventCache.add(elm,evType,fn);
			return r;
			}
		else {
			elm['on'+evType]=fn;
			}
		}
	};

mn.addEvent(window, 'load', mn.init, false);
mn.addEvent(window, 'unload', EventCache.flush, false);
		
