/**
 * A CSS-Based menu script tailored to Oreck's specific situation.
 * Author: Thomas Peri
 */
var oreckMenus = {
	/**
	 * Preload the top-level menu trigger on/off images.
	 */
	preLoadRollover: function(img, on_src)
	{
		img.onload = null;
		
		var off_src = img.src;
	
		(function() {
			var on_img = new Image();
			on_img.onload = function()
			{
				// keep the browser from garbage-collecting the Image before it's loaded
				var ok = on_img.src;
			};
			on_img.src = on_src;
		})();
		
		// go up two levels to the li, so that 
		// mousing out of the link itself doesn't switch 
		// the image back to off-state
		var li = img.parentNode.parentNode;
		
		oreckMenus.addEvent(li, 'onmouseover', function()
		{
			img.src = on_src;
		});
	
		oreckMenus.addEvent(li, 'onmouseout', function()
		{
			img.src = off_src;
		});
	
	},
	/**
	 * Add an event to an element without replacing the existing one.
	 */
	addEvent: function(element, event, action)
	{
		function doAction(a)
		{
			if (typeof a == 'function') { a(); }
		}
		
		var oldAction = element[event];
		
		element[event] = function()
		{
			doAction(oldAction);
			doAction(action);
		};
	},
	/**
	 * Replicate li:hover in IE.
	 */
	menuize: function(id)
	{
		var menu = document.getElementById(id);
		var lis = menu.getElementsByTagName('li');
		
		function bind(li, event, display)
		{
			oreckMenus.addEvent(li, event, function()
			{
				var uls = li.getElementsByTagName('ul');
				for (var i = 0; i < uls.length; i++)
				{
					uls[i].style.display = display;
				}
			});
		}
		
		for (var i = 0; i < lis.length; i++)
		{
			if (lis[i].parentNode == menu)
			{
				bind(lis[i], 'onmouseover', 'block');
				bind(lis[i], 'onmouseout', 'none');
			}
		}
	}
}

