// some changes from Core version for UBMi - secondary menu appears on hovering over primary items
(function($) {
	var menuTimeout;
	var menuFadeoutTime = 200; // in miliseconds
	
	var primaryNavItem = $('#mainnav_sleeve>ul>li');
	var primaryNavAnchor = $('#mainnav_sleeve>ul>li>a');
	var secondaryNavItem = $('#mainnav_sleeve>ul>li>div>ul>li');
	var secondaryNavAnchor = $('#mainnav_sleeve>ul>li>div>ul>li>a');
	var secondaryNavDiv = $('#mainnav_sleeve>ul>li>div');
	var lastSecondaryNavAnchor = $('#mainnav_sleeve>ul ul .last a');
	var lastTertiaryNavAnchor = $('#mainnav_sleeve>ul ul ul .last a');

	// add class of DROPDOWN to 2nd level nav item if it contains dropdown nav
	$(secondaryNavItem).each(function(){
		if($(this).children('div').length > 0) {
			$(this).addClass('dropdown');
		}
	});

	$.fn.SetupMenu = function() {
		$(primaryNavAnchor).bind('mouseover', {focused:false}, showMenu).bind('focus', {focused:true}, showMenu).bind('blur', {focused:false}, hideMenu);
		$(primaryNavItem).bind('mouseleave', {focused:false}, hideMenu);
		$(secondaryNavAnchor).bind('mouseover', {focused:false}, showMenu).bind('focus', {focused:true}, showMenu);
		$(secondaryNavItem).bind('mouseleave', {focused:false}, hideMenu);
		$(secondaryNavDiv).bind('mouseover', {focused:false}, showMenu);	// so that we keep 'over' state on main tab
		$(lastSecondaryNavAnchor).bind('blur', {focused:false}, hideMenu);	// hide secondary menu when tabbing away from last anchor with keyboard
		$(lastTertiaryNavAnchor).bind('blur', {focused:false}, hideMenu);	// hide dropdown menu when tabbing away from last anchor with keyboard
	}

	function showMenu(event) {
		// add class of "over" to any LI except those with class of CURRENT (which are styled differently)
		$(this).parents('li[class!=current]').addClass('over');

		// stop dropdown menu going off screen and bring into focus
		if($(this.parentNode).hasClass('dropdown')) {	// class of DROPDOWN means we're just targeting secondary nav items
			if ($.browser.msie && $.browser.version < 7) $(this.parentNode).children('div').bgiframe();

			$(this.parentNode).children('div').css({left:'auto', zIndex:'100'});

			var wrapperWidth = $('#wrapper').get(0).offsetWidth;
			var wrapperOffset = $('#wrapper').offset();
			var dropdownWidth = $(this.parentNode).children('div').get(0).offsetWidth;
			var dropdownOffset = $(this.parentNode).children('div').offset();

			// move drop down menu if running off of screen
			if((dropdownWidth + dropdownOffset.left) > (wrapperOffset.left + wrapperWidth)) {
				$(this.parentNode).children('div').css({marginLeft:'-'+((dropdownWidth + dropdownOffset.left)-(wrapperOffset.left + (wrapperWidth-parseInt($('#wrapper').css('padding-left')))))+'px'});
			}
		}
	}

	function hideMenu(event) {
		if(!event.data.focused) {
			var menuItem = this;
			
			// menuItem has dropdown, so move off screen (mouseleave event)
			if($(menuItem).hasClass('dropdown')) {
				$(menuItem).children('div').css({left:'-9999px', zIndex:'99'});
			}
			
			// menuItem = lastSecondaryNavAnchor (keyboard blur event)
			else if($(menuItem).parent().parent().parent().parent().parent().parent().parent().attr('id') == 'mainnav') {
				$(menuItem).parent().parent().parent().parent().removeClass('over');
			}
			
			// menuItem = lastTertiaryNavAnchor, move dropdown off screen (keyboard blur event)
			else if($(menuItem).parent().parent().parent().parent().hasClass('.dropdown')) {
				$(menuItem).parents('.dropdown').children('div').css({left:'-9999px', zIndex:'99'});
			}
			
			// remove "over" class only if on top level menu item (otherwise get horrible flicker in IE on main tab as you move between secondary menu items)
			else if($(menuItem).parent().parent().parent().attr('id') == 'mainnav') {
				menuTimeout = setTimeout(function() {						// add timer delay so secondary hover nav stays visible if mouseleave event was accidental
					$(menuItem).removeClass('over');						// menuItem = LI (mouseleave event)
				}, menuFadeoutTime);
			}
			else if($(menuItem).parent().parent().parent().parent().attr('id') == 'mainnav') {
				$(menuItem).parent().removeClass('over');					// menuItem = anchor (keyboard blur event)
			}
		}
	}
})(jQuery);
