// JavaScript Document

var mainMenu = {
	
	addListeners: function () {
		var uls = document.getElementsByTagName('ul');
		for (var u = 0; u < uls.length; u++) {
			if (uls[u].className.search(/\bjsMenu\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('ul').length > 0) {
					mainMenu.addEvent(node, 'mouseover', mainMenu.getMOverFor(node), false);
					mainMenu.addEvent(node, 'mouseout', mainMenu.getMOutFor(node), false);
					node.getElementsByTagName('a')[0].className += ' subHeader';
				}
			}
		}
	},
	
	mOver: function (e, targetElement) {
		var el = window.event ? targetElement : e ? e.currentTarget : null;
		if (!el) return;
		clearTimeout(el.outTimeout);
		for (var i = 0; i < el.childNodes.length; i++) {
			var node = el.childNodes[i];
			if (node.nodeName.toLowerCase() == 'ul') {
				node.style.display = 'block';
			}
		}
	},
	
	mOut: function (e, targetElement) {
		var el = window.event ? targetElement : e ? e.currentTarget : null;
		if (!el) return;
		el.outTimeout = setTimeout(function() { mainMenu.mOut2(el); }, 300);
	},

	mOut2: function (el) {
		for (var i = 0; i < el.childNodes.length; i++) {
			var node = el.childNodes[i];
			if (node.nodeName.toLowerCase() == 'ul') {
				node.style.display = 'none';
			}
		}
	},

	getMOverFor: function (node) {
		return function(e) { mainMenu.mOver(e, node); };
	},
	
	getMOutFor: function (node) {
		return function(e) { mainMenu.mOut(e, node); };
	},
	
	addEvent: function (elm, evType, fn, useCapture) {
		// Cross-browser event handling for IE5+, NS6+, Mozilla/Gecko
		// Adapted from script 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;
		}
	}

};

mainMenu.addEvent(window, 'load', mainMenu.addListeners, false);
mainMenu.addEvent(window, 'unload', EventCache.flush, false);
