// JavaScript Document

function initMenu() {
	var tables = document.getElementsByTagName('table');
	for (var u=0; u<tables.length; u++) {
		if (tables[u].className.search(/\bmenu\b/) == -1) 
			continue;
		var trs = tables[u].getElementsByTagName('tr');
		for (var j=0; j<trs.length; j++) {
			var tr_node = trs[j];
			if (tr_node.nodeName.toLowerCase() == 'tr' && tr_node.getElementsByTagName('td').length > 0) {
		
				var tds = tr_node.getElementsByTagName('td');
				for (var i=0; i<tds.length; i++) {
					var node = tds[i];
					if (node.nodeName.toLowerCase() == 'td' && node.getElementsByTagName('ul').length > 0) {
						addEvent(node, 'mouseover', getMoverFor(node), false);
						addEvent(node, 'mouseout', getMoutFor(node), false);
						node.getElementsByTagName('a')[0].className += 'subheader ';
					}
				}
				
			}
		}
	}
	addEvent(window, 'unload', EventCache.flush, false);
}

function getMoverFor(node) {
	return function(e) { mover(e, node); };
}

function getMoutFor(node) {
	return function(e) { mout(e, node); };
}

function mover(e, targetElement) {
	var e1 = window.event ? targetElement : e ? e.currentTarget : null;
	if (!e1) return;
	clearTimeout(e1.outTimeout);
	for (var i=0; i<e1.childNodes.length; i++) {
		var node = e1.childNodes[i];
		if (node.nodeName.toLowerCase() == 'ul') {
			node.style.display = 'block';
		}
	}
}

function mout(e, targetElement) {
	var e1 = window.event ? targetElement : e ? e.currentTarget : null;
	if (!e1) return;
	e1.outTimeout = setTimeout(function() { mout2(e1); }, 100);
}

function mout2(e1) {
	for (var i=0; i<e1.childNodes.length; i++) {
		var node = e1.childNodes[i];
		if (node.nodeName.toLowerCase() == 'ul') {
			node.style.display = 'none';
		}
	}
}

function addEvent(e1m, evType, fn, useCapture) {
	// cross-browser event handling for IE5+, NS6 and Mozilla
	// By Scott Andrew
	if (e1m.addEventListener) {
		e1m.addEventListener(evType, fn, useCapture);
		return true;
	} else if (e1m.attachEvent) {
		var r = e1m.attachEvent('on' + evType, fn);
		// EventCache from file: event-cache.js
		// manages events to prevent memory-leak in IE
		EventCache.add(e1m, evType, fn);
		return r;
	} else {
		e1m['on' + evType] = fn;
	}
}
