/* 
	jQuery Menu:
		A menu system for Marlboro College
	Author 
	Elliot Anders <elliot@marlboro.edu>
*/
(function($) {
  var defaults = {
  	'tag' : 'ol', 
  	'menuClass': '.menu',
  	'indicator': '&#9655;'
  };
  
  $.fn.mc_menu = function(options) {
		this.each(function($element) {
			var $menu = $(this);
			_setOptions($menu);
			_init($menu);
			_hideAll($menu);
			_addIndicators($menu);
			$('li', $menu).bind('click', $menu, _toggle);
			$(document).click(function() {
				_hideAll($menu);
			});
		});
	
		function _setOptions($menu) {
			options = $.extend({}, defaults, $menu.data('menu:options'), options);
			$menu.data('menu:options', options);
		};
  
		function _toggle(e) {
			$menu = e.data;
			/*
				If this does not contain an ol follow the link witin
				otherwise, show the sub menu and hide other sub menus
			*/
			var subMenu = $(this).children($menu.data('menu:options')['tag']);
			if(! $(subMenu).is($menu.data('menu:options')['tag'])) {
				window.location = $(this).children('a').attr('href');
			}
			else {
				_hideAll($menu);
				$(this).parents().show();
				var left = $(this).outerWidth() + $(this).position().left;
				var top = $(this).position().top;
				$(subMenu).css('left', left + 'px').css('top', top + 'px');
				$(subMenu).show();
				
			}
			return false;
		};
		
		function _hideAll($menu) {
			$($menu.data('menu:options')['tag'], $menu).hide();
		};
		
		function _init($menu) {
			if(! $menu.hasClass($menu.data('menu:options')['menuClass'])) {
				$menu.addClass($menu.data('menu:options')['menuClass']);
			}
		};
		
		function _addIndicators($menu) {
			$menu.each(function(index, element) {
				$(element).siblings('a').append('<span>' +$menu.data('menu:options')['indicator'] + '</span>');
			});
		};
		// end
		return this;
	};
})(jQuery);

