/**
* YUI Object that powers the main menu navigation in the header
* 
* @requires yahoo.js
* @author Sarah <sarah.simmonds@hitwise.com>
* @namespace YAHOO.hw.widget
* @class Menu
* @access public
*/

YAHOO.hw.widget.Menu = {

	activeMenu : false,
	activeMenuItem : false,
	activeMenuTarget : false,
	
	init : function() {
		YAHOO.util.Event.addListener("navigation-ul", "mouseover",
				this.fnOverHandler, this, true);
		YAHOO.util.Event.addFocusListener("navigation-ul",
				this.fnOverHandler, this, true);
		
		YAHOO.util.Event.addListener("nav-live", "mouseout",
				this.fnOutNav, this, true);
		YAHOO.util.Event.addBlurListener("nav-live",
				this.fnOutNav, this, true);
		
		YAHOO.util.Event.addListener("nav-live", "mouseover",
				this.fnOverNav, this, true);
		YAHOO.util.Event.addFocusListener("nav-live",
				this.fnOverNav, this, true);
	},

	fnOverHandler : function(e) {
		var target = YAHOO.util.Event.getTarget(e);
		
		this.activeMenuItem = false;
		this.activeMenuTarget = target;
		setTimeout(
				"YAHOO.hw.widget.Menu.fnActivate(YAHOO.hw.widget.Menu.activeMenuTarget);",
				160);
	},
		
	fnActivate : function(target) {
		if(!YAHOO.hw.widget.Menu.activeMenuItem) {
			var activeObject = YAHOO.hw.widget.Menu.fnFindActive();
			
			// mouse over the second level UL
			if (target.parentNode.parentNode.id == "navigation-ul") {
				YAHOO.hw.widget.Menu.fnRollout(activeObject);
				target.parentNode.firstChild.className += ' hover';
				target.parentNode.className += ' hover';
			}
	
			// mouse over the top level SPAN
			if (target.parentNode.parentNode.parentNode.id == "navigation-ul") {
				YAHOO.hw.widget.Menu.fnRollout(activeObject);
				target.parentNode.parentNode.firstChild.className += ' hover';
				target.parentNode.parentNode.className += ' hover';
				YAHOO.hw.widget.Menu.activeMenuItem = true;
			}
	
			// mouse over the second level LI
			else if (target.parentNode.parentNode.parentNode.parentNode.id == "navigation-ul") {
				YAHOO.hw.widget.Menu.fnRollout(activeObject);
				target.parentNode.parentNode.parentNode.firstChild.className += ' hover';
				target.parentNode.parentNode.parentNode.className += ' hover';
			}
		}
	},

	fnOverNav : function(e) {
		this.activeMenu = true;
	},

	fnOutNav : function(e) {
		this.activeMenu = false;
		setTimeout(
				"if(!YAHOO.hw.widget.Menu.activeMenu) { YAHOO.hw.widget.Menu.fnRollout(YAHOO.hw.widget.Menu.fnFindActive()); }",
				1200);
	},

	fnRollout : function(activeObject) {
		if(activeObject) {
			activeObject.className = activeObject.className.replace('hover','');
			activeObject.firstChild.className = activeObject.firstChild.className.replace('hover', '');
			YAHOO.hw.widget.Menu.activeMenuItem = false;
		}
	},
	
	fnFindActive : function() {
		var hovers = document.getElementById('navigation-ul')
				.getElementsByTagName('li');

		for ( var x = 0; x < hovers.length; x++) {
			if (hovers[x].className.substr(hovers[x].className.length - 5,
					hovers[x].className.length) == 'hover') {
					return hovers[x];
			}
		}
		
		return false;
	}
}

YAHOO.util.Event.onContentReady("nav-live", YAHOO.hw.widget.Menu.init, YAHOO.hw.widget.Menu, true);
