(function($)
{
	$.fn.gmenu = function(opts)
	{
		opts = $.extend({}, $.fn.gmenu.defaults, opts);

        var arrow = $(['<span class="', opts.indicatorClass, '">&nbsp;</span>'].join(''));

		return this.each(function()
		{
			var elems;
			if (opts.foldedClass == '')
			{
				elems = $('li:has(ul)', this);
			} else
			{	
				elems = $('.' + opts.foldedClass + ' li:has(ul), li.' + opts.foldedClass + ':has(ul)', this);
			}
            elems.hover(
		        function() { $(this).addClass(opts.hoverClass); $('>ul', this).animate({opacity: 'show', speed: 'slow'}) },
		        function() { $(this).removeClass(opts.hoverClass); $('>ul', this).animate({opacity: 'hide', speed: 'slow'})}
            )
			if (opts.addArrow)
			{	
				elems.each( function()
		        {
			        $('>a:first-child', this).addClass(opts.subLinkClass).append(arrow.clone());
				});
			}
		});

	};
    
	$.fn.gmenu.defaults = {
        hoverClass:     'g-hover',
		subLinkClass:   'g-with-ul',
        indicatorClass: 'g-sub-indicator',
		foldedClass:	'',
		addArrow:		true
	};
    
})(jQuery);

