(function($){
	$.fn.jDiaporama = function(options) {
	
		var defaults = {
			auto: true,
			delay: 3,
			animationSpeed: "slow",
			controls: true,
			keyboard: true,
			infos: true,
			currentimage: true,
			paused: false,
			boucles: 0,
			sens: "right",
			onrollover: false
		};
				
		var options = $.extend(defaults, options);
		
		this.each(function(){
		
			var diapo = $(this);
			var mouseover = false;
			var sens = options.sens;
			var pause = false;
			var width = 0;
			var height = 0;
			var current_slide = 0;
			
			diapo.wrap("<div class='jDiaporama'></div>");
			
		
			
			function init()
			{
				// Ajustement de la taille du container
				width = $("li:first-child img", diapo).width();
				height = $("li:first-child img", diapo).height();
				
				diapo.width(width);
				diapo.height(height);
				diapo.parent().width(width);
				diapo.parent().height(height);

			}
			
			// Si le diaporama comporte plus qu'une image
			if($("li", diapo).length > 1){
				var inter = "";
				
				if(options.auto && !options.paused)
					inter = setInterval(function(){displayDiaporama(options)}, (options.delay_premiere*1000));
				
				$("li", diapo).hide();
				$("li:first-child", diapo).addClass("active").fadeIn(options.animationSpeed, init);
				
											
				// Controls
				if(options.controls)
				{
					// Etat du diaporama
					diapo.after("<div class='jDiaporama_status'></div>");
					$("li", diapo).each(function(){
						i = parseInt($("li", diapo).index($(this))+1);
						$(this).attr("id", "jDiaporama_image_"+i);
						$(".jDiaporama_status", diapo.parent()).append("<a id='jDiaporama_bullet_"+i+"' href='#'>Image "+i+"</a>");
					})
					
					$(".jDiaporama_status", diapo.parent()).css("margin-left", -($(".jDiaporama_status", diapo.parent()).width()/2));
					
					$(".jDiaporama_status a", diapo.parent()).click(function(){
						nextImage(options, $(this));
						return false;
					})
					
					diapo.after("<div class='jDiaporama_controls'><a href='#' class='prev'>Prec.</a> " + ((options.auto)?"<a href='#' class='pause'>Pause</a>":"") + " <a href='#' class='next'>Suiv.</a></div>");
					
					$(".prev", diapo.siblings()).click(function(){
						if(!$("li.active", diapo).is(":first-child"))
							elt =  $("li.active", diapo).prev();
						else
							elt =  $("li:last-child", diapo);
							
						nextImage(options, elt);
						sens = "left";
						
						return false;
					});
					
					$(".next", diapo.siblings()).click(function(){
						if(!$("li.active", diapo).is(":last-child"))
							elt =  $("li.active", diapo).next();
						else
							elt =  $("li:first-child", diapo);
							
						nextImage(options, elt);
						sens = "right";
						
						return false;
					});
													
			
				}
				
			
				
				// Affiche l'élément suivant
				function nextImage(options, elt)
				{
					clearInterval(inter);
				
					$("li.active", diapo).hide().removeClass("active");
					$(".jDiaporama_status a", diapo.parent()).removeClass("active");
					
					id = elt.attr("id").split("_")[2];
					$("li#jDiaporama_image_"+id, diapo).addClass("active").show();
					$("#jDiaporama_bullet_"+id, diapo.siblings()).addClass("active");

													
					if( 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", diapo.siblings()).trigger("click");
					else
						$(".prev", diapo.siblings()).trigger("click");
				}
				
			}
		});
		
		return this;
	};
})(jQuery);
