/*
 Updated menu display system, using jQuery and skipping the spurious extra <ul>s
 */
Menu = {

	/*
	  Timer code to avoid in/out problems moving between level 1
	  and level 2 menus (due to the gap between).
	 */
	startTimer: function()
	{
		Menu.timer = setTimeout(Menu.baseMenuHide, 500);
	},
	clearTimer: function()
	{
		clearTimeout(Menu.timer);
	},
	baseMenuHide: function()
	{
		$('#menu > li > ul').each(function(i)
		{
			$(this).hide();
		});
	}
};

Menu.init = function()
{
	/* Level 1 list item hovers */
	$('#menu > li').each(function(i)
	{
		$(this).hover(function(e)
		{
			/* L1 li over */
			// turn on child ul
			$(this).children('ul').show();
			// turn off siblings' child uls
			$(this).siblings('li').each(function(i)
			{
				$(this).children('ul').hide();
			});
		}, function(e)
		{
			/* L1 li out */
		});
	});
	
	/* Level 2 list item hovers */
	$('#menu > li > ul > li').each(function(i)
	{
		$(this).hover(function(e)
		{
			/* L2 li over */
			// display as selected
			$(this).addClass('active');
			// turn on child ul
			$(this).children('ul').show();
			// turn off siblings' child uls
			$(this).siblings('li').each(function(i)
			{
				$(this).children('ul').hide();
			});
		}, function(e)
		{
			/* L2 li out */
			// display as not selected
			$(this).removeClass('active');
		});
	});
	
	/* Level 3 list item hovers */
	$('#menu > li > ul > li > ul > li').each(function(i)
	{
		$(this).hover(function(e)
		{
			/* L3 li over */
			// display as selected
			$(this).addClass('active');
		}, function(e)
		{
			/* L3 li out */
			// display as not selected
			$(this).removeClass('active');
		});
	});
	
	
	/* Level 1 menu hovers */
	$('#menu').hover(function(e)
	{
		/* L1 ul over */
		Menu.clearTimer();
	}, function(e)
	{
		/* L1 ul out */
		Menu.startTimer();
	});
	
	/* Level 2 menu hovers */
	$('#menu > li > ul').each(function(i)
	{
		$(this).hover(function(e)
		{
			/* L2 ul over */
			Menu.clearTimer();
		}, function(e)
		{
			/* L2 ul out */
			$(this).hide();
		});
	});
	
	/* Level 3 menu hovers */
	$('#menu > li > ul > li > ul').each(function(i)
	{
		$(this).hover(function(e)
		{
			/* L3 ul over */
			Menu.clearTimer();
		}, function(e)
		{
			/* L3 ul out */
			$(this).hide();
		});
	});
	
	
};

/* initialise the menu on page load */
$(document).ready(Menu.init);

