/**
 * wSlide
 * 
 * SARL Dream me up
 * Guillaume HAUTBOIS
 *
 * Date: 2010-03-29
 */

(function($)
{
    $.fn.wslide = function(opts)
	{
		slider = $(this);
		slider.opts = $.extend({}, $.fn.wslide.defaults, opts);
		
		// Code executé sur chaque UL
		return this.each(function(i)
		{
			var ul = $(this);
			ul.index = 0;
			ul.is_started = false;
			ul.lis = ul.find("li");
			
			ul.nb_lis = ul.lis.length;
			
			// Initialisation des lis
			ul.lis.each(function(j)
			{
				li = $(this);
				
				if (j != ul.index)
				{
					li.css('display', 'none');
				}
				
				li.hover(
					function() // IN
					{
						//alert(ul.attr("id"));
						$.fn.wslide.stop(slider, ul);
					},
					function() // OUT
					{
						$.fn.wslide.start(slider, ul);
					}
				);
			});
			
			// Lancement du défilement
			if (ul.lis.length > 1)
			{
				$.fn.wslide.start(slider, ul);
			}
		});
	};

	$.fn.wslide.start = function(slider, ul)
	{
		if (ul.is_started == false)
		{
			ul.is_started = true;
			ul.interval = setInterval( function()
			{
				$.fn.wslide.next(slider, ul);		  
			}, (slider.opts.duration+slider.opts.speed));
		}
	}
	
	$.fn.wslide.stop = function(slider, ul)
	{
		if (ul.is_started == true)
		{
			ul.is_started = false;
			clearInterval(ul.interval);
		}
	}
	
	$.fn.wslide.next = function(slider, ul)
	{
		var index_before = ul.index;
		ul.index++;

		if (ul.index > (ul.nb_lis-1))
		{
			ul.index = 0;
		}

		if (slider.opts.effect == "fade")
		{
			$(ul.lis[index_before]).fadeOut(slider.opts.speed/2, 
				function()
				{
					$(ul.lis[ul.index], this).fadeIn(slider.opts.speed/2);
				}
			);
		} else if (slider.opts.effect == "swing") {

			$(ul.lis[index_before]).slideUp(slider.opts.speed/2,
				function()
				{
					//alert(ul.ident);
					$(ul.lis[ul.index], this).slideDown(slider.opts.speed/2);
				}
			);
		}
	}

	// Options par défaut
	$.fn.wslide.defaults = {
		effect: 'swing', 	// swing|fade
		horiz: false,
		duration: 5000, 	// temps d'affichage
		speed: 2000 		// temps de transition
	};
	
})(jQuery);
