// ---------- Megamenu ----------

RHG.Classes.Navigation = new RHG.Class();
RHG.Classes.Navigation.selectors = {
	"elemSelector": "ul:eq(0) > li"	
};
RHG.Classes.Navigation.classFunction = function(configObject) {
	var classFunctionPub = {};
	var thisClass = RHG.Classes.Navigation;
	var targetJq;
	
	var timeDelay = 150;
	var forceMegamenuSize = 8;
			
	// var dropdownsOpen = 0;
			
	// function forceNavOver() {
	// 	if (dropdownsOpen > 0) {
	// 		targetJq.addClass('nav-force-overlay');
	// 	} else {
	// 		targetJq.removeClass('nav-force-overlay');
	// 	}
	// }
			
	//CLASSES
	var Dropdown = function(dropdownJq) {
		var wrapped = false;
		var forceWrap = false;
		var forceHover = false;
		var bottomPos = 0;
		var dropdownListJq = dropdownJq.find('ul');
		var listItemsJq = dropdownListJq.find('li');
		var wrapItemsAfter = Math.round(listItemsJq.length / 2);
		var timer;
					
		var wrap = function() {
			if (!wrapped) {
				dropdownListJq.addClass("megamenu");
				
				listItemsJq.each(function(i){
					if (i < wrapItemsAfter) {
						listItemsJq.eq(i).addClass("col1");
					} else {
						listItemsJq.eq(i).addClass("col2");						
						if (i == wrapItemsAfter) {
							listItemsJq.eq(i).css({
								"top": listItemsJq.eq(0).position().top
							});
						} else {
							listItemsJq.eq(i).css({
								"top": listItemsJq.eq(i-1).outerHeight() + listItemsJq.eq(i-1).position().top
							});
						}
					}
				});
				
				wrapped = true;
			}			
		}
		
		var unwrap = function() {
			if (wrapped && !forceWrap) {
				dropdownListJq.removeClass("megamenu");
				listItemsJq.removeClass("col1 col2");
				listItemsJq.removeAttr("style");
				wrapped = false;
			}
		}
		
		var forceHoverCheck = function() {
			if (forceHover > 0) {
				dropdownJq.addClass("force-hover");	
				// dropdownsOpen += 1;	
				// forceNavOver();
			} else {
				dropdownJq.removeClass("force-hover");
				// dropdownsOpen -= 1;
				// forceNavOver();
			}
		}
		
		if (listItemsJq.length >= forceMegamenuSize) {
			forceWrap = true;
		}		
		
		dropdownJq.mouseenter(function(){
			clearTimeout(timer);
			forceHover += 1;
			forceHoverCheck();
			
			if (!wrapped) {
				bottomPos = dropdownListJq.outerHeight() + dropdownListJq.offset().top;
			}			
			if (bottomPos > jQuery(window).height() || forceWrap == true) {
				wrap();
			} else {
				unwrap();
			}
		});
		dropdownListJq.mouseenter(function(){
			clearTimeout(timer);			
			forceHover += 1;
			forceHoverCheck();			
		})
		
		dropdownJq.mouseleave(function(){		
			forceHover -= 1;			
			timer = setTimeout(function(){
				forceHoverCheck();				
			}, timeDelay)
		})	
		dropdownListJq.mouseleave(function(){
			forceHover -= 1;
			timer = setTimeout(function(){
				forceHoverCheck();				
			}, timeDelay)
		})

		
	}

	// INIT	
	classFunctionPub.init = function() {
		var selectors = thisClass.selectors;		
		targetJq = jQuery(configObject.uniqueTargetNodeOrSelector)
		
		var dropdownsJq = targetJq.find(selectors.elemSelector);

		dropdownsJq.each(function(i){
			new Dropdown(dropdownsJq.eq(i));
		})
		
	}

	return classFunctionPub;
}
RHG.Classes.Navigation.init({
	"uniqueTargetNodeOrSelector": "#nav"
})
