$(document).ready(function() {
	
	//On Hover Over main menu item
	function megaHoverOver(){
		$(this).find(".sub").stop().fadeTo('fast', 0.95).show(); //Find sub and fade it in
			
		var widestRow = 0;
		var highestRow = 0;
		var subRow = 207;
		var subWidth = $(this).find(".sub").width();
		var subHeight = $(this).find(".sub").height();
		/*var subRow = $(this).find(".sub").width();*/
		
		if($(this).find(".subSub").length > 0)
		{
			$(this).find(".subSub").each(function() {	//for each row...
				//Find widest row
				if(($(this).width() > widestRow) && ($(this).width() > subWidth)) {
					widestRow = $(this).width();
				} else {
					widestRow = subRow;
				}
				
				//Find highest row
				if(($(this).height() > highestRow) && ($(this).height() > subHeight)) {
					highestRow = $(this).height();
				} else {
					highestRow = highestRow;
				}
						
				//Reposition subSub to the top of sub
				var subPosY = $(this).parent().parent().parent().offset().top;
				var subSubPosY = $(this).parent().offset().top;
				var newPosY = (subSubPosY - subPosY) - 15;
				
				$(this).css({'top' :'-'+newPosY}); //Set top
			});
		} else {
			widestRow = subRow;
			highestRow = subHeight;
		}	
		if(highestRow < subHeight)
		{
			highestRow = subHeight;
		}
		
		var totalWidth = widestRow + subRow;
		var totalHeight = highestRow;

		$(this).find(".sub").css({'width' :totalWidth}); //Set width
		$(this).find(".sub").css({'height' :totalHeight}); //Set height
		/*$(this).find(".row:last").css({'margin':'0'});*/  //Kill last row's margin
	}
	
	//On Hover Out
	function megaHoverOut(){
		$(this).find(".sub").stop().fadeTo('fast', 0, function() { //Fade to 0 opactiy
		  	$(this).hide();  //after fading, hide it
		  	
			$(".subSub").each(function() {	//for each row...
				$(".subSub").hide();
			});
		});
	}
	
	//On Hover Over 'sub' item
	function megaSubHoverOver(){
		$(this).find(".subSub").stop().fadeTo('fast', 1).show(); //Find sub and fade it in
	}
	//On Hover Out
	function megaSubHoverOut(){
		$(this).find(".subSub").stop().fadeTo('fast', 0, function() { //Fade to 0 opactiy
			$(this).hide();  //after fading, hide it		  
		});
	}
	
	//On Hover Over 'sub' item
	function megaSubHoverOverState(){
		$(this).parent().find(".subLink").addClass('subLinkHover');
	}
	//On Hover Out
	function megaSubHoverOutState(){
		$(this).parent().find(".subLink").removeClass('subLinkHover');
	}
	
	
	/**************************************************/
	
	//Set custom HoverIntent configurations for 'sub'
	var config = {
		 sensitivity: 2, // number = sensitivity threshold (must be 1 or higher)
		 interval: 50, // number = milliseconds for onMouseOver polling interval
		 over: megaHoverOver, // function = onMouseOver callback (REQUIRED)
		 timeout: 300, // number = milliseconds delay before onMouseOut
		 out: megaHoverOut // function = onMouseOut callback (REQUIRED)
	};
	
	$("ul#topnav li .sub").css({'opacity':'none'}); //Fade sub nav to 0 opacity on default
	$("ul#topnav li").hoverIntent(config); //Trigger Hover intent with custom configurations
	
	//Set custom HoverIntent configurations for 'subSub'
	var configSub = {
		 sensitivity: 2, // number = sensitivity threshold (must be 1 or higher)
		 interval: 80, // number = milliseconds for onMouseOver polling interval
		 over: megaSubHoverOver, // function = onMouseOver callback (REQUIRED)
		 timeout: 500, // number = milliseconds delay before onMouseOut
		 out: megaSubHoverOut // function = onMouseOut callback (REQUIRED)
	};
	
	$("ul#topnav li .subSub").css({'opacity':'none'}); //Fade sub nav to 0 opacity on default
	$("ul#topnav li .sub li").hoverIntent(configSub); //Trigger Hover intent with custom configurations
	
	//Set custom HoverIntent configurations for 'sub' bg-color change
	var configSubHover = {
		 sensitivity: 1, // number = sensitivity threshold (must be 1 or higher)
		 interval: 0, // number = milliseconds for onMouseOver polling interval
		 over: megaSubHoverOverState, // function = onMouseOver callback (REQUIRED)
		 timeout: 0, // number = milliseconds delay before onMouseOut
		 out: megaSubHoverOutState // function = onMouseOut callback (REQUIRED)
	};
	
	$("ul#topnav li .subSub").hoverIntent(configSubHover); //Trigger Hover intent with custom configurations

});
