(function($){
var sSrc = new Array ();
	$.fn.jDiaporama = function(options) {
		var defaults = {
			auto: true,
			delay: 8,
			animationSpeed: "slow",
			controls: true,
			keyboard: false,
			infos: false,
			currentimage: false,
			paused: false,
			boucles: 0,
			sens: "right",
			onrollover: true
		};
		var options = $.extend(defaults, options);
		this.each(function(){
			var diapo = $(this);
			var mouseover = true;
			var sens = options.sens;
			var pause = false;
			var width = 0;
			var height = 0;
			var current_slide = 0;

			diapo.wrap("<div class='jDiaporama'></div>");

			// Detection et actions des mouseover
			diapo.parent().mouseenter(function(){
				mouseover = true;
				if(options.onrollover)
					displayInfos($("li.active", diapo), "show");
				
				if(options.controls)
					diapo.siblings(".jDiaporama_controls").fadeIn();
			}).mouseleave(function(){
				mouseover = false;
				if(options.onrollover)
					displayInfos($("li.active", diapo), "hide");
				if(options.controls)
					 diapo.siblings(".jDiaporama_controls").hide();
			});
			function init(){
				// Ajustement de la taille du container
				width =  540;//$("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);
				
				if(options.controls)
					diapo.siblings(".jDiaporama_status").show();
					
				if(options.auto && options.paused)
					$(".pause", diapo.siblings()).trigger("click");
					
				if(!options.onrollover)
					displayInfos($("li", diapo), "show");
				
				$("#jDiaporama_bullet_"+(parseInt($("li", diapo).index($("li:first-child", diapo)))+1), diapo.siblings()).addClass("active");
			}
			
			// 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*1000));
				
				$("li", diapo).hide();
				$("li:first-child", diapo).addClass("active").fadeIn(options.animationSpeed, init);

				// Pour chaque �l�ment
				$("li", diapo).each(function(){
					elt = $(this);

					// Affichage de la description si renseign� et activ�
					if(options.infos){
						var is_desc = ($("img", elt).attr("title") != "");
						var is_title = ($("img", elt).attr("alt") != "");
					
						if(is_desc)
							elt.append("<p class='desc'>"+$("img", elt).attr("title")+"</p>");
						if(is_title)
							elt.append("<p class='title'>"+$("img", elt).attr("alt")+"</p>");
						if(options.currentimage)
							elt.append("<p class='count'>"+parseInt($("li", diapo).index(elt)+1)+"/"+diapo.children().length+"</p>");
					}
				})

				// Navigation au clavier
				if(options.keyboard)
					$(document).keydown(function(event) {
						switch(event.keyCode){
							case 37 : // Fl�che gauche
								$(".prev", diapo.siblings()).trigger("click");
							break;
							
							case 39 : // Fl�che droite
								$(".next", diapo.siblings()).trigger("click");
							break;
						}
					});

								
				// Controls
				if(options.controls)
				{
					// Etat du diaporama
					$('.li_hidden').each(function(){
					sSrc.push($(this).find('img').attr('src'));
					})
					/*
					$('#vig_hidden').each(function(){
					var sSrc = $(this).find('img').attr('src');
					})
					$('.li_hidden').each(function(){
					var sSrc = $(this).find('img').attr('src');
					})
					var sSrc=$('#vig_hidden').find('img').attr('src');
					*/
					
					var j=0;
					diapo.after("<div class='jDiaporama_status'></div>");
					$("li", diapo).each(function(){
						i = parseInt($("li", diapo).index($(this))+1);
						$(this).attr("id", "jDiaporama_image_"+i);
						var href = $('.diaporama1 li').eq(i - 1).find('a.boutonFull').attr('href');
						$(".jDiaporama_status", diapo.parent()).append("<a id='jDiaporama_bullet_"+i+"' href='" + href + "'><img src='"+sSrc[j]+"' /></a>");
						j++;
					})
					/*
					$(".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;
					})
					*/
					$(".jDiaporama_status a", diapo.parent()).mouseover(function(){
						nextImage(options, $(this));
						clearInterval(inter);
						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;
					});
					// au survol de la souris fait une pause et retire la fl�che active pour mettre uniquement celle du hover
					$('.jDiaporama_status').mouseenter(
							function () {								
								clearInterval(inter);
								pause = true;
								auto= false;
								$(".jDiaporama_status a", diapo.parent()).removeClass("active");
							}
					);
					$('.jDiaporama_status').mouseleave(
							function () {								
							inter = setInterval(function(){displayDiaporama(options)}, (options.delay*1000));
							pause = false;
							auto= true;
														
							}
					);
					$(".pause", diapo.siblings()).click(function(){
						if($(this).hasClass("pause"))
						{
							$(this).removeClass("pause").addClass("play");
							clearInterval(inter);
							pause = true;
						}
						else
						{
							$(this).removeClass("play").addClass("pause");
							inter = setInterval(function(){displayDiaporama(options)}, (options.delay*1000));
							pause = false;
						}
						
						return false;
					});
				}
				
				// Affichage des infos sur l'image courante
				function displayInfos(elt, display)
				{
					var is_desc = ($("img", elt).attr("title") != "");
					var is_title = ($("img", elt).attr("alt") != "");
				
					if(is_desc)
						if(display == "show")
							$(".desc", elt).slideDown("fast");
						else
							$(".desc", elt).slideUp("fast");
					if(is_title)
						if(display == "show")
							$(".title", elt).slideDown("fast");
						else
							$(".title", elt).slideUp("fast");
					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);
					$("#jDiaporama_bullet_"+id, diapo.siblings()).addClass("active");

					if(options.infos && mouseover && options.onrollover)
						displayInfos($("li.active", diapo), "show");
					else if(!mouseover && options.onrollover)
						displayInfos($("li.active", diapo), "hide");
						
					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", diapo.siblings()).trigger("click");
					else
						$(".prev", diapo.siblings()).trigger("click");
				}
				
			}
		});
		
		return this;
	};
	
})(jQuery);
