(function($){
	$.fn.jDiaporama = function(options) {
	
		var defaults = {
			auto: true,
			delay: 3,
			animationSpeed: "normal",
			infos: false,
			currentimage: false,
			paused: false,
			boucles: 0,
			sens: "right",
			onrollover: false,
			random: true
		};
				
		var options = $.extend(defaults, options);
		
		this.each(function(){
			
			// Si le diaporama comporte plus qu'une image
			if($("li", diapo).length > 1){
			
				var diapo = $(this);
				var mouseover = false;
				var sens = options.sens;
				var pause = false;
				var width = 0;
				var height = 0;
				var current_slide = 0;
				var nb_slides = $("li", diapo).length;
				
				diapo.wrap("<div class='jDiaporama'></div>");
			
				function init()
				{
					width = 150;
					height = 150;
					
					if(options.auto && options.paused)
						$(".pause", diapo.siblings()).trigger("click");
						
					if(!options.onrollover)
						displayInfos($("li", diapo), "show");
				}
			
				var inter = "";
				
				if(options.auto && !options.paused)
					inter = setInterval(function(){displayDiaporama(options)}, (options.delay*1000));
				
				$("li", diapo).hide();
				$("li:first-child", diapo).addClass("active").fadeIn(options.animationSpeed, init);
				
				// Pour chaque élément
				$("li", diapo).each(function(){
					elt = $(this);
					
					i = parseInt($("li", diapo).index($(this))+1);
					$(this).attr("id", "jDiaporama_image_"+i);

				})
	
				function next()
				{
					if(options.random)
						randomImage();
				}
				
				function prev()
				{
					if(options.random)
						randomImage();
				}
				
				function randomImage()
				{
					rand = Math.floor(Math.random() * nb_slides)+1;
					id = $("li.active", diapo).attr("id").split("_")[2];
					
					while(rand == id)
					{
						rand = Math.floor(Math.random() * nb_slides)+1;
					}
					
					nextImage(options, $("li#jDiaporama_image_"+rand, diapo));
				}
				
				// Affichage des infos sur l'image courante
				function displayInfos(elt, display)
				{
					if(options.currentimage)
						if(display == "show")
							$(".count", elt).slideDown("fast");
						else
							$(".count", elt).slideUp("fast");
				}
				
				// Affiche l'élément suivant
				function nextImage(options, elt)
				{
					clearInterval(inter);
					
					$("li.active", diapo).fadeOut(options.animationSpeed).removeClass("active");
					$(".jDiaporama_status a", diapo.parent()).removeClass("active");
					
					id = elt.attr("id").split("_")[2];
					$("li#jDiaporama_image_"+id, diapo).addClass("active").fadeIn(options.animationSpeed);
					
					if(!pause && options.auto)
					{
						if(options.boucles == 0 || (options.boucles > 0 && (diapo.data("current_slide")/diapo.children().length) < options.boucles ))
							inter = setInterval(function(){displayDiaporama(options)}, (options.delay*1000));
						else
							$(".pause", diapo.siblings()).remove();
					}
				}
				
				function displayDiaporama(options)
				{
					current_slide++;
					diapo.data("current_slide", current_slide);
					
					if(sens == "right")
						next();
					else
						prev();
				}
				
			}
		});
		
		return this;
	};
})(jQuery);
