/**
  * @author justin
 */
$(document).ready(function() {
	
	/**
	 * navigation setup closure 
	 * @link {http://www.sohtanaka.com/web-design/mega-drop-downs-w-css-jquery/}
	 */
	(function() {

		//Set custom configurations
		var config = {
				sensitivity: 2, // number = sensitivity threshold (must be 1 or higher)
				interval: 100, // number = milliseconds for onMouseOver polling interval
				over: megaHoverOver, // function = onMouseOver callback (REQUIRED)
				timeout: 500, // number = milliseconds delay before onMouseOut
				out: megaHoverOut // function = onMouseOut callback (REQUIRED)
		};
		
		$("#navigation li .sub").css({'opacity':'0'}); //Fade sub nav to 0 opacity on default
		$("#navigation > ul > li").hoverIntent(config); //Trigger Hover intent with custom configurations
		
		//On Hover Over
		function megaHoverOver(){
			
			if ($(this).find(".sub").length > 0) {
				$(this).toggleClass('parent-state-over');
			}
			
			$(this).find(".sub").stop().fadeTo('fast', 1).show(); //Find sub and fade it in
			
			(function($) {
				//Function to calculate total width of all ul's
				jQuery.fn.calcSubWidth = function() {
					rowWidth = 0;
					//Calculate row
					$(this).find("ul").each(function() { //for each ul...
						rowWidth += $(this).width() + parseInt($(this).css('padding-right')); //Add each ul's width together plus padding
					});
				};
			})(jQuery); 
			
			if ( $(this).find(".row").length > 0 ) { //If row exists...
				
				var biggestRow = 0;	
				
				$(this).find(".row").each(function() {	//for each row...
					$(this).calcSubWidth(); //Call function to calculate width of all ul's
					//Find biggest row
					if(rowWidth > biggestRow) {
						biggestRow = rowWidth;
					}
				});
				
				$(this).find(".sub").css({'width' :biggestRow}); //Set width
				$(this).find(".row:last").css({'margin':'0'});  //Kill last row's margin
				
			} else { //If row does not exist...
				
				$(this).calcSubWidth();  //Call function to calculate width of all ul's
				$(this).find(".sub").css({'width' : rowWidth}); //Set Width
				
			}
		};
		
		//On Hover Out
		function megaHoverOut(){
			if ($(this).find(".sub").length > 0) {
				$(this).toggleClass('parent-state-over');
			}
			$(this).find(".sub").stop().fadeTo('fast', 0, function() { //Fade to 0 opacity
				$(this).hide();  //after fading, hide it
			});
		};
		
	})();
	
});

