﻿$(function(){
	var menu = $("#primary-menu ul");
	var menuLinks = menu.find("> li > a");
	var menuItems = menu.find("> li");
	
	var activeMenuItem = menuItems.filter("li.active");

	if (activeMenuItem.length == 0) {
	    activeMenuItem = menuItems.eq(0);
	    
	    if(activeMenuItem.length == 0) return;
	}
	
	var lavaElement = $("<li></li>")
		.attr("id", "lava-element")
		.css("display", "block")
		.css("overflow", "hidden")
		.css("width", activeMenuItem.outerWidth() + "px")
		.css("left", activeMenuItem.position().left + "px")
		.appendTo(menu);
	
	var deferredMoveToRelevantMenuItemTimeout = null;
	
	function deferredMoveToRelevantMenuItem(){
		clearTimeout(deferredMoveToRelevantMenuItemTimeout);
		
		deferredMoveToRelevantMenuItemTimeout = setTimeout(function(){
			moveToRelevantMenuItem();
		}, 200);
	}
	
	function moveToRelevantMenuItem(element){
		if(lavaElement.filter(".hover").length){
			return;
		}
		
		var hoveredElement = menuItems.filter(".hover");
		
		if(hoveredElement.length){
			moveToItem(hoveredElement);
		} else {
			moveToItem(activeMenuItem);
		}
	}
	
	function moveToItem(element){
		var parameters = {
			width: element.outerWidth(),
			left: element.position().left
		};
		var options = {
			duration: "fast",
			queue: false
		};
		
		lavaElement.animate(parameters, options);
	}
	
	menuItems.add(lavaElement).hover(function(){
		$(this).addClass("hover");
		moveToRelevantMenuItem();
	}, function(){
		$(this).removeClass("hover");
		deferredMoveToRelevantMenuItem();
	});
});
