/**
 * @author Matthew.Braun
 */

var isOverTab = false;
var isOverNav = false;
var isOverSubnav = false;
var switchNav = null;
var initSubnav;
var prevSubnavId;
var curSubnav;
var initTab;
var curTab;
var prevTab;
var prevTabId;
var $D = YAHOO.util.Dom;
var $E = YAHOO.util.Event;
var $ = $D.get;
var testMouseOutTimer;
var testMouseOverTimer;

YAHOO.namespace("navManager");

YAHOO.navManager = function() {
	return {
		init : function() {
			var myTabs = $D.getElementsByClassName('tab', 'li', 'tabs');
			var bodyEl = document.getElementsByTagName('body');
			curTab = $('tab_' + bodyEl[0].id);
			$D.addClass(curTab, 'active');
			initTab = curTab;
			
			prevTabId = curTab.id;
			curSubnav = $('subnav_' + bodyEl[0].id);
			//curSubnav = $D.getElementsByClassName('active', 'ul', 'subnavContainer');
			initSubnav = curSubnav;
			$D.addClass(curSubnav, 'active');
			prevSubnavId = curSubnav.id;
			
			$E.on([$('subnavContainer')], 'mouseover', this.over);
			$E.on([$('subnavContainer')], 'mouseout', this.out);
			
			for (var i = 0; i < myTabs.length; i++) {
				$E.on([$(myTabs[i].id)], 'mouseover', this.over );
				$E.on([$(myTabs[i].id)], 'mouseout', this.out );
			}
		},
		out : function(e, obj) {
			var myId = YAHOO.util.Event.getTarget(e).id;
			switch (myId) {
				case "navContainer" :
					isOverNav = false;
					break;
				case "subnavContainer" :
					isOverSubnav = false;
					break;
				default :
					isOverSubnav = false;
					isOverTab = false;
					break;
			}
			window.clearTimeout(testMouseOutTimer);
			testMouseOutTimer = window.setTimeout('testMouseOut()',1000);
		},
		over : function(e, obj) {
			var myId = YAHOO.util.Event.getTarget(e).id;
			switch (myId) {
				case "navContainer" :
					isOverNav = true;
					isOverTab = false;
					break;
				case "subnavContainer" :
					isOverSubnav = true;
					isOverTab = false;
					break;
				default :
					if ($D.hasClass(YAHOO.util.Event.getTarget(e)), 'subnav_link') {
						isOverSubnav = true;
					}
					// Determine if item is a tab link or if item is a child of the subnavContainer
					var lookingFor = "tab_link_";
					if(myId.indexOf(lookingFor) == -1) {
						isOverTab = false;
					} else {
						isOverTab = true;
						//Item is a tab link, toggle its class to active
						prevTabId = curTab.id;
						$D.removeClass($(prevTabId), 'active');
						curTab = YAHOO.util.Event.getTarget(e).parentNode;
						$D.addClass(curTab, 'active');
						//Determine which subnavs to toggle
						var startPos = lookingFor.length;
						var targetSubnavId = 'subnav_' + myId.substr(startPos);
						prevSubnavId = curSubnav.id;
						$D.removeClass($(prevSubnavId), 'active');
						curSubnav = $(targetSubnavId);
						$D.addClass(curSubnav, 'active');
					}
					// If item is a child of the subnavContainer, set isOverSubnav back to true
					break;
			}
		}
	}
}();

var testMouseOut = function() {
	if (!isOverTab && !isOverSubnav) {
		// Switch back to previous tab
		$D.removeClass(curTab, 'active');
		$D.addClass(initTab, 'active');
		curTab = initTab;
		//Determine which subnavs to toggle
		$D.removeClass(curSubnav, 'active');
		$D.addClass(initSubnav, 'active');
		curSubnav = initSubnav;
	}
}

var testMouseOver = function() { }

//Get things rolling
YAHOO.util.Event.onAvailable('content', YAHOO.navManager.init, YAHOO.navManager, true);
        