(function($){
 $.fn.turbsmenu = function(options) {

  var defaults = {
   direction: 'right',
   effect	: 'fade'
  };
  var options = $.extend(defaults, options);
    
  return this.each(function() {
  		$(this).children('li').each(function(key,value){
  			$(this).data('id',key).addClass('firstLevel');
  		})
		$('li ul',this).parent().addClass('has-dropdown');
		$('li',this).hover(function(){
			var id = $(this).data('id');
			if( id==undefined ){ id = $('.selected ul li:first').parents('li:last').data('id') };
			
			if( $('ul:first',this).length > 0 ){
			
				if( $('.selected').length != 0 && $('.firstLevel.selected').data('id') != id ){
					$('.selected ul').stop(true,true).hide();
					$('.selected').removeClass('selected');
				}
					$('.selected ul ul').stop(true,true).hide();
			
				var pos = $(this).position();
				
				// Directions //
				if( options.direction == 'right' || !$(this).hasClass('firstLevel') ){
					$('ul:first',this).css({
						'z-index':'1000',
						'position':'absolute',
						'left':pos.left+$(this).width(),
						'top':pos.top
					});
				}
				if( options.direction == 'down' && $(this).hasClass('firstLevel') ){
					$('ul:first',this).css({
						'z-index':'1000',
						'position':'absolute',
						'left':pos.left,
						'top':pos.top+$(this).outerHeight()
					});
				}
				if( options.direction == 'up' && $(this).hasClass('firstLevel') ){
					$('ul:first',this).css({
						'z-index':'1000',
						'position':'absolute',
						'left':pos.left,
						'top':pos.top-$('ul:first',this).height()-$(this).height()
					});
				}
				
				$('ul:first',this).stop(true,true).toggleEffect({effect:options.effect,skip:'in'});
				$(this).parent().find('.selected').removeClass('selected');
				$(this).addClass('selected');
				$('ul:first',this).addClass('extended-menu');
		
			}
		},function(){
			if( $('ul:first',this).length > 0 ){
				var selectedMenu = $(this);
				if( $('ul:first',selectedMenu).css('display') != 'none' )
				$('ul:first',selectedMenu).stop(true,true).delay(800).toggleEffect({
					effect:options.effect,
					skip:'out',
					complete:function(){
						$(selectedMenu).removeClass('selected');
						$('ul:first',selectedMenu).removeClass('extended-menu');
					}
				});
			}
		})
		
  });
 };
})(jQuery);





(function($){
 $.fn.toggleEffect = function(options) {
 
  var defaults = {
  	skip			: false,
	effect			: 'fade',
	speed			: 'fast',
	complete		: function(){}
  };
  var options = $.extend(defaults, options);
  
  return this.each(function(){
  	
  		switch(options.effect){
  			case 'fade':
	  			var inEffect  = function(el){$(el).fadeIn(options.speed,options.complete)};
	  			var outEffect = function(el){$(el).fadeOut(options.speed,options.complete)};
	  			break;	
  			case 'slide':
	  			var inEffect  = function(el){$(el).slideDown(options.speed,options.complete)};
	  			var outEffect = function(el){$(el).slideUp(options.speed,options.complete)};
	  			break;	
  			case 'none':
	  			var inEffect  = function(el){$(el).show(false,options.complete)};
	  			var outEffect = function(el){$(el).hide(false,options.complete)};
	  			break;	
  		}
  		
		if( $(this).css('display') == 'none' || options.skip == 'in' ){
			inEffect( $(this) );
			return true;
		}
		if( $(this).css('display') != 'none' || options.skip == 'out' ){
			outEffect( $(this) );
			return true;
		}
  })
  }
})(jQuery);
