/*

 * jquery.ui.potato.menu

 * 

 * Copyright (c) 2009 makoto_kw (makoto.kw@gmail.com)

 * Dual licensed under the new BSD licenses.

 * 

 * Version: 1.0

 */

(function($) {

	$.fn.extend({

		ptMenu:function(arg) {

			var defaltOption = {

				vertical:false,

				menuItemSelector: 'li',

				menuGroupSelector: 'ul',

				firstClass:'potato-menu',

				menuItemClass:'potato-menu-item',

				menuGroupClass:'potato-menu-group',

				verticalClass:'potato-menu-vertical',

				holizontalClass:'potato-menu-holizontal',

				hasVerticalClass:'potato-menu-has-vertical',

				hasHolizontalClass:'potato-menu-has-holizontal',

				showDuration: 400,

				hideDuration: 400

			}

			

			var option = (typeof(arg)!='string') ? $.extend(defaltOption,arg) : $.extend(defaltOption,{});

			var $menu = $(this).addClass(option.firstClass).addClass((option.vertical) ? option.verticalClass : option.holizontalClass);

			var $menuItems = $menu.find(option.menuItemSelector).addClass(option.menuItemClass);

			var $menuGroups = $menu.find(option.menuGroupSelector).addClass(option.menuGroupClass);

			$menuGroups.parent().each(function(index){

				var bottom = $(this).parent(option.menuGroupSelector+'.'+option.firstClass).length == 1 && !option.vertical;

				var $menuGroup = $(this).addClass((bottom) ? option.hasVerticalClass : option.hasHolizontalClass)

					.children(option.menuGroupSelector+':first').addClass(option.verticalClass)

				$(this)

					.hover(

						function(e) {

							var offset = (bottom) ? {left:'0',top:''} : {left:$(this).width()+'px',top:'0'};

							$menuGroup.css({left:offset.left,top:offset.top}).fadeIn(option.showDuration);

						},

						function(e) {

							$menuGroup.fadeOut(option.hideDuration);

						}

					)

				;

			});

			$menu.find('a[href^="#"]').click(function() {

				$menuGroups.fadeOut(option.hideDuration);

				return ($(this).attr('href')=='#') ? false : true;

			})

			;

			return this;

		}

	})

})(jQuery);
