(function ($) {
	if (!$) return;

	$.fn.extend ({hmenu: function (options)
	{
		var options = $.extend (true, {}, $.fn.hmenu.defaults, options);

		return $($(this).filter(options.selectors.menu).each (function ()
		{
			$(this).children(options.selectors.item).hover
			(
				function()
				{
					$(this).addClass (options.classes.hover);
					options.anim.show ($(this), options);
				},
				function() 
				{
					$(this).removeClass (options.classes.hover); 
					options.anim.hide ($(this), options);
				}
			)
			.children(options.selectors.menu).each (function ()
			{
				// sub menu width fix
				var ulWidth = 1;
				$(this).children(options.selectors.item).each (function () { ulWidth += 1 + $(this).outerWidth(true); });
				$(this).width (ulWidth);
			});
		}));
	}});

	// Default params
	$.fn.hmenu.defaults =
	{
		classes:
		{
			hover: 'hover'
		},
		selectors:
		{
			menu: 'ul',
			item: 'li'
		},
		duration: 'fast',
		anim:
		{
			show: function (elements, options)
			{
				if (!$.support.opacity) return;
				$(elements).children ('ul')
					.animate ({marginLeft:'-10px', opacity: 0}, 0)
					.animate ({marginLeft:0, opacity: 1}, options.duration)
				;
			},
			hide: function (elements, options) { }
		}
	};

})(jQuery);