/**
 *	@name navigationMenu
 *	@desc Makes <ul> tags with infinite ul children into hover on/off navigation (requires css styling) 
*/
	$.fn.navigationMenu = function( callerSettings )
	{
		var settings = $.extend({
			eventType : 'hover',
			menuWrap: 'ul',
			menuEffect: 'fade',
			menuSpeed: 100,
			timeout: 300
		}, callerSettings || {});
		var navigation = $(this);

		$('li:has('+settings.menuWrap+')',this).children(settings.menuWrap).hide().end()
			.each(function(i){
				var menu = $(this).children(settings.menuWrap);
				$(this).addClass('ui-has-child');
				$(this).mouseover(function(event){
					$(this).addClass('ui-on-child');
					if(event.target){
						if($(menu).is(':hidden')){
							switch( settings.menuEffect ){
							case 'slide':
								$(menu).slideDown( settings.menuSpeed );
							break;
							case 'fade':
								$(menu).fadeIn( settings.menuSpeed );
							break;
							}
						}
					}
				});
				menuHandler(menu);
			});

		function menuHandler(menu)
		{
			var timerID = 0;
			switch(settings.eventType){
				case 'hover':
					$(menu).parent().hover(function(event){
						if(timerID){ clearTimeout(timerID); };
						timerID  = 0;
						switch( settings.menuEffect ){
						case 'slide':
							$(this).siblings().children(settings.menuWrap).slideUp( settings.menuSpeed );
						break;
						case 'fade':
							$(this).siblings().children(settings.menuWrap).fadeOut( settings.menuSpeed );
						break;
						}
						
						$(menu).parent('li').removeClass('ui-on-child');
					},
					function(){
						timerID = setTimeout(function(){
							switch( settings.menuEffect ){
							case 'slide':
								$(menu).slideUp( settings.menuSpeed );
							break;
							case 'fade':
								$(menu).fadeOut( settings.menuSpeed );
							break;
							}

							$(menu).parent('li').removeClass('ui-on-child');
						},settings.timeout);
					});
				break;
				
				case 'toggle':
					// We can do this later
				break;
			
			}
		};
	};
