// Cross-browser event listener
function addEvent( el, eType, fn, useCapture )
{
	if (el.addEventListener)
	{
		el.addEventListener(eType, fn, useCapture);
		return true;
	}
	else if (el.attachEvent)
	{
		return el.attachEvent('on' + eType, fn);
	}
	else
	{
		el['on' + eType] = fn;
	}
}

// Function to run on start up
function init()
{
	var navMenu = document.getElementById('nav');
	var listItems = navMenu.getElementsByTagName('li');
	
	for (var i = 0; i < listItems.length; i++)
	{
		var node = listItems[i];
		// If the node is a list item with a child ul
		if( node.nodeName.toLowerCase() == 'li' && node.getElementsByTagName('ul').length > 0 )
		{
			addEvent( node, 'mouseover', getMoverFor(node), false );
			addEvent( node, 'mouseout', getMoutFor(node), false );
		}
	}
}

// Callback Function ------------------------------
function mouseOverHandler(e, targetElement)
{
	var el = window.event ? targetElement : e ? e.currentTarget : null;
	if(!el) return;
	
	for( var i = 0; i < el.childNodes.length; i++ )
	{
		var node = el.childNodes[i];
		if( node.nodeName.toLowerCase() == 'ul' ){
			node.style.display = 'block';
		}	
	}
}

function mouseOutHandler(e, targetElement)
{
	var el = window.event ? targetElement : e ? e.currentTarget : null;
	if(!el) return;

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

// Functions for getting the proper event target in IE
function getMoverFor(node) {
	return function(e) { mouseOverHandler(e, node); };
}

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


// Set the init function when the DOM is loaded
addEvent( window, 'load', init, false );

