

(function($){
	$.fn.jDiaporama = function(options) {
		
		var defaults = {
		
			instance:1,
			diapoWidth: 300,
			diapoHeight: 150,
			auto: false,
			delay: 3,
			animationSpeed: 1000,
			animationType:'slideLikeBtn',		
			paused:false,
			random: false,
			
			//overlay
			overlay:false,
			overlayUrl:'images/overlay.png',
						
			//Bando
			bandeauAdd:false,
			bandeauHeight:50,
			bandeauWidth:-1,
			bandeauBackground:'images/bg.png',
			bandeauPosition:'bottom',
			
			
			//controle			
			controls: false,
			controlePosition: 'bottom',			
			keyboard: false,
			
			
			//options legende
			legendeWidth: 200,
			legendeHeight: 200,
			legendeBG:'images/bg.png',
			legendeFontColor:'000000',
			legendeTop:0,
			legendeLeft:0,
			
			//options vignettes
			thumb: false,
			thumbImage: true,
			thumbBottom:0,
			thumbRight:0,
			thumbPosition: 'vertical',
			thumbWidth:15,
			thumbHeight:15,
			thumbBorderActif:'F2F2F2',
			thumbBorderInactif:'a2a2a2',
			thumbForground:'000000',
			thumbSpacer:0,
			thumbForgroundOpacity:0.5
			
		};
				
		var options = $.extend(defaults, options);
		
		this.each(function(){
		
			
			if($("li", diapo).length >= 1){
				
			if($("li", diapo).length == 1){
				
				options.auto = false;
				options.controle =false;
				options.keyboard =false;
				
			}
				
				
				var diapo = $(this);
				var mouseover = false;
				var width = 0;
				var height = 0;
				var nb_slides = $("li", diapo).length;
				var inter = "";	
				var keyboard = true;
				var pause = false;
				
	
			// Initialisation du diaporama				
			function init(){
			
					
					$("li", diapo).css('list-style','none');
					$("li", diapo).css('position','absolute');
					$("li", diapo).css('z-index','100');					
					
					diapo.width(options.diapoWidth);
					diapo.height(options.diapoHeight);
					
					height = diapo.height;
					width = diapo.width;
					
					// Mise en place de la legende
					$(".legende", diapo).css('position','absolute');
					$(".legende", diapo).css('z-index','101');	
					
					
					
					if(options.legendeWidth == -1){$(".legende", diapo).width(options.diapoWidth);}
					else{$(".legende", diapo).width(options.legendeWidth);}
					
					if(options.legendeHeight == -1){$(".legende", diapo).height(options.diapoHeight);}
					else{$(".legende", diapo).height(options.legendeHeight);}					
					
					
					$(".legende", diapo).css('top',''+options.legendeTop+'px');
					$(".legende", diapo).css('left',''+options.legendeLeft+'px');
					$(".legende", diapo).css('background-image','url('+options.legendeBG+')');
					$(".legende", diapo).css('color','#'+options.legendeFontColor+'');
					$(".legende", diapo).css('padding','10px');
														
					// Mise en place des vignettes					
					if(options.thumb){
						
						$(".jthumb"+options.instance+"", diapo).css('position','absolute');
						$(".jthumb"+options.instance+"", diapo).css('z-index','400');
						$(".jthumb"+options.instance+"", diapo).css('list-style','none');							
						$(".jthumb"+options.instance+" .div", diapo).css('padding','5px');
						
						if(options.thumbSpacer != 0){
						$(".jthumb"+options.instance+" .div", diapo).css('padding-right',''+options.thumbSpacer+'px');}
						
						$(".jthumb"+options.instance+" .div", diapo).css('cursor','pointer');
						$(".jthumb"+options.instance+" .div", diapo).css('position','relative');
								
						$(".jthumb"+options.instance+" .cache", diapo).css('position','absolute');
						
						if(options.thumbBorderInactif != 'none' && options.thumbBorderActif != 'none' ){
						$(".jthumb"+options.instance+" .cache", diapo).css('top','7px');
						$(".jthumb"+options.instance+" .cache", diapo).css('left','7px');}
						
						else{
							$(".jthumb"+options.instance+" .cache", diapo).css('top','5px');
							$(".jthumb"+options.instance+" .cache", diapo).css('left','5px');}
						
						
						
						
						$(".jthumb"+options.instance+" .cache", diapo).width(options.thumbWidth);
						$(".jthumb"+options.instance+" .cache", diapo).height(options.thumbHeight);
						
						if(options.thumbBorderInactif != 'none' && options.thumbBorderActif != 'none' ){
						$(".jthumb"+options.instance+" .vignette img", diapo).css('border-width','2px');
						$(".jthumb"+options.instance+" .vignette img", diapo).css('border-style','solid');}
						
						
						$(".jthumb"+options.instance+" .vignette img", diapo).width(options.thumbWidth);
						$(".jthumb"+options.instance+" .vignette img", diapo).height(options.thumbHeight);
						
													
								
						
						if(options.thumbPosition == 'horizontal'){$(".jthumb"+options.instance+" div", diapo).css('float','left');}
						
						if(options.thumbBottom == -1 && options.thumbRight != -1 ){							
							position = (height-$(".jthumb"+options.instance+"", diapo).height())/2;
							$(".jthumb"+options.instance+"", diapo).css('bottom',''+position+'px');
							$(".jthumb"+options.instance+"", diapo).css('right',''+options.thumbRight+'px');
							}
						
						else if(options.thumbRight == -1 && options.thumbBottom != -1 ){							
							position = (width-$(".jthumb"+options.instance+"", diapo).width())/2;
							$(".jthumb"+options.instance+"", diapo).css('right',''+position+'px');
							$(".jthumb"+options.instance+"", diapo).css('bottom',''+options.thumbBottom+'px');}
						
						else{		
							$(".jthumb"+options.instance+"", diapo).css('right',''+options.thumbRight+'px');
							$(".jthumb"+options.instance+"", diapo).css('bottom',''+options.thumbBottom+'px');}										
						if($("li", diapo).length == 1){$(".jthumb"+options.instance+"", diapo).css('display','none');}
					
					}
					
					// Mise en place des controles			
					if(options.controls){
						$(".btn"+options.instance+"", diapo).css('display','block');
						$(".btn"+options.instance+"", diapo).css('position','absolute');
						$(".btn"+options.instance+"", diapo).css('z-index','400');
						$(".btn"+options.instance+"", diapo).css('cursor','pointer');
						$(".btn_next", diapo).css('right','5px');	
						$(".btn_prev", diapo).css('left','5px');	
						
					if(options.controlePosition == 'bottom'){$(".btn"+options.instance+"", diapo).css('bottom','0px');}
					else if(options.controlePosition == 'top'){$(".btn"+options.instance+"", diapo).css('top','0px')}
					else{
						btnPosition = (options.diapoHeight-$(".btn"+options.instance+"", diapo).height())/2;
											
						$(".btn"+options.instance+"", diapo).css('top',''+btnPosition+'px')
						}					
										
					}
					
					//Mise en place bandeau
					if(options.bandeauAdd){
						$('ul',diapo).after('<div class="bandeau">&nbsp;</div>');
						$(".bandeau", diapo).css('position','absolute');
						$(".bandeau", diapo).css('z-index','200');
						
						if(options.bandeauHeight == -1){$(".bandeau", diapo).height(options.diapoHeight);}
						else{$(".bandeau", diapo).height(options.bandeauHeight);}
						
						if(options.bandeauWidth == -1){$(".bandeau", diapo).width(options.diapoWidth);}
						else{$(".bandeau", diapo).width(options.bandeauWidth);}
						
						$(".bandeau", diapo).css('background-image','url('+options.bandeauBackground+')');
						
						
						if(options.bandeauPosition == 'bottom'){
							$(".bandeau", diapo).css('bottom','0px');
							}
						else{$(".bandeau", diapo).css('top','0px');}											
					}	
					
					// Mise en place de l'overlay								
					if(options.overlay){
						if(options.bandeauAdd){
							$('.bandeau',diapo).after('<div class="overlay"><img src="'+options.overlayUrl+'"  border="0" /></div>');
							}
						else{$('ul',diapo).after('<div class="overlay"><img src="'+options.overlayUrl+'"  border="0" /></div>');}						
						
						$(".overlay", diapo).css('position','absolute');						
						$(".overlay", diapo).css('top','0');
						$(".overlay", diapo).css('z-index','300');
						
						var leLien = $("li.active a", diapo).attr('href');
						
						if(leLien != undefined){$(".overlay img", diapo).wrap('<a href="'+leLien+'" />');}}						
					else{$(".overlay", diapo).hide();}	
					
					if(options.auto){			
					inter = setInterval(function(){next(options)},(options.delay*1000));	
					}
							
				}
						
				
				$("li", diapo).each(function(){
					elt = $(this);					
					i = parseInt($("li", diapo).index($(this))+1);
					$(this).attr("id", "jDiaporama_image_"+i);					
				})		
				
				$("li", diapo).hide();
				$("li:first-child", diapo).addClass("active").fadeIn('normal', init);
				if(options.auto){diapo.addClass('play')}
				
				if(options.thumb){				
				$(".jthumb"+options.instance+" .div", diapo).each(function(){
					elt = $(this);					
					i = parseInt($(".jthumb"+options.instance+" .div", diapo).index($(this))+1);
					$(this).attr("id", "jDiaporama_image_"+i);	
					
					if(options.thumbImage){
						
						if(options.thumbForground != 'none'){
						$(".jthumb"+options.instance+" .cache", diapo).css('background','#'+options.thumbForground+'');
						$(".jthumb"+options.instance+" .cache", diapo).css('opacity',options.thumbForgroundOpacity);}
						else{$(".jthumb"+options.instance+" .cache", diapo).css('background','none');}
					
					
						}
					else{$(".jthumb"+options.instance+" .cache", diapo).show()}
					
					if(options.thumbBorderInactif == 'none'){
						$(".jthumb"+options.instance+" .div ", diapo).css('border','none');}
					else{
						$(".jthumb"+options.instance+" .div ", diapo).css('border','#'+options.thumbBorderInactif+'');}			
				})		
							
				$(".jthumb"+options.instance+" .div:first-child", diapo).addClass("active");
				$(".jthumb"+options.instance+" .div:first-child", diapo).removeClass("click");
				if(options.thumbImage){$(".jthumb"+options.instance+" .active .cache", diapo).css('background','none');}
				else{$(".jthumb"+options.instance+" .active .cache", diapo).hide();}
				
				if(options.thumbBorderInactif != 'none' ){$(".jthumb"+options.instance+" .vignette img", diapo).css('border-color','#'+options.thumbBorderInactif+'');}
				if(options.thumbBorderActif != 'none' ){$(".jthumb"+options.instance+" .active .vignette img", diapo).css('border-color','#'+options.thumbBorderActif+'');}				
				
				
				
				
				$(".jthumb"+options.instance+" .click", diapo.parent()).bind("click",function(){
					nextImage(options, $(this));
					return false;
				})}										
				
				
				if(options.controls){			
					$(".btn_next", diapo).bind("click",function(){
						next();
					});	 
					$(".btn_prev", diapo).bind("click",function(){
						prev();
					});				
				}
				
				
				
			if(options.auto){	
			window.onblur = function(){ clearInterval(inter);inter = ''; };
			window.onfocus = function(){						
				
				diapo.mouseover(function() {	
					clearInterval(inter);
					inter = '';	
				  }).mouseout(function(){		
					
					if(inter == ''){					
					inter = setInterval(function(){next(options)},(options.delay*1000));
					}
					
				  });
	
			};}
				
				
				
					
		
			function stopDiapo(){					
					
					keyboard = false;
					pause=true;
					
					if(options.auto){clearInterval(inter);}
					inter = '';
											
					var leLien = $("li.active a", diapo).attr('href');
					if(leLien != undefined){$(".overlay img", diapo).unwrap();}
					
					if(options.thumb){
					
					
					if(options.thumbBorderInactif != 'none'){
					$(".jthumb"+options.instance+" .vignette  img", diapo).css('border-color','#'+options.thumbBorderInactif+'');}	
										
					
					if(options.thumbImage){
						$(".jthumb"+options.instance+" .cache", diapo).css('background','#'+options.thumbForground+'');
						$(".jthumb"+options.instance+" .cache", diapo).css('opacity',options.thumbForgroundOpacity);
					}
					else{$(".jthumb"+options.instance+" .cache", diapo).show()}
							
					$(".jthumb"+options.instance+" .click", diapo).unbind("click");}
					
					if(options.controls){ 
					$(".btn"+options.instance+"_prev", diapo).unbind("click");
					$(".btn"+options.instance+"_next", diapo).unbind("click");}
				}
			
			
			
			
				function startDiapo(){					
															
					keyboard = true;
					pause = false;
					
					if(options.auto){	
					if(inter == ''){					
					inter = setInterval(function(){next(options)},(options.delay*1000));
					}
					window.onblur = function(){ clearInterval(inter);inter = ''; }
					;}
								
										
					if(options.thumb){
					
					if(options.thumbImage){$(".jthumb"+options.instance+" .active .cache", diapo).css('background','none');}
					else{$(".jthumb"+options.instance+" .active .cache", diapo).hide();}
					
					if(options.thumbBorderInactif != 'none'){$(".jthumb"+options.instance+" .vignette  img", diapo).css('border-color','#'+options.thumbBorderInactif+'');	}
					if(options.thumbBorderActif != 'none'){$(".jthumb"+options.instance+" .active .vignette  img", diapo).css('border-color','#'+options.thumbBorderActif+'');}
						
						
						
						
					$(".jthumb"+options.instance+" .click", diapo).bind("click",function(){
						nextImage(options, $(this));
						return false;
					})}
					
					if(options.controls){			
						$(".btn"+options.instance+"_next", diapo).bind("click",function(){
							next();
						});	 
						$(".btn"+options.instance+"_prev", diapo).bind("click",function(){
							prev();
						});				
					}
				}
										
										
									
				if(options.keyboard){
					$(document).keydown(function(event){
						switch(event.keyCode){
							case 37 : 
								if(keyboard){prev();}
							break;
							case 39 : 
								if(keyboard){next();}
							break;
							}
						});							
				}
				
				
				
				function next(){
				
					if(options.random)
						randomImage();
					else
					{
						if(!$("li.active", diapo).is(":last-child"))
							elt =  $("li.active", diapo).next();
						else
							elt =  $("li:first-child", diapo);
						
						sens = "right";	
						nextImage(options, elt);
						
					}
				}
						
				
				function prev(){
															
					if(options.random)
						randomImage();
					else
					{
						if(!$("li.active", diapo).is(":first-child"))
							elt =  $("li.active", diapo).prev();
						else
							elt =  $("li:last-child", diapo);
						
						sens = "left";	
						nextImage(options, elt);
						
					}
				}
		
		
		
		
			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));
				}
		
		
		
							

			function nextImage(options, elt){						
					stopDiapo();
					$(".jthumb"+options.instance+" .active", diapo).addClass("click");
					
					
					if(options.animationType == 'slideUp'){
						$("li.active", diapo).slideUp(options.animationSpeed);}
					
					else if(options.animationType == 'slideDown'){
						$("li.active", diapo).hide();}
					
					else if(options.animationType == 'slideLeft'){
						$("li.active", diapo).hide("slide", { direction: "left" },options.animationSpeed);}
					
					else if(options.animationType == 'slideRight'){
						$("li.active", diapo).hide("slide", { direction: "right" },options.animationSpeed);}
						
					else if(options.animationType == 'slideLikeBtn'){
						if(sens == 'right'){ sens='right'}
						else{ sens ='left'}			
						$("li.active", diapo).hide("slide", { direction: ''+sens+'' },options.animationSpeed);}
					
					else{
					$("li.active", diapo).effect(''+options.animationType+'',options.animationSpeed);}
									
									
									
									
																						
					$("li.active", diapo).removeClass("active");	
									
					$(".jthumb"+options.instance+" .active", diapo.parent()).removeClass("active");
									
					
					id = elt.attr("id").split("_")[2];
					$(".jthumb"+options.instance+" #jDiaporama_image_"+id, diapo).addClass("active");
					$(".jthumb"+options.instance+" .active", diapo).removeClass('click');
			
					
					if(options.animationType == 'fade'){
						$("li#jDiaporama_image_"+id, diapo).addClass("active").delay(0).fadeIn(options.animationSpeed,function(){startDiapo()});}
					
					else if(options.animationType == 'fold' ){
						$("li#jDiaporama_image_"+id, diapo).addClass("active").delay(options.animationSpeed/2.8).fadeIn(1500,function(){startDiapo()});}
					
					else if(options.animationType == 'blind' || options.animationType == 'clip'|| options.animationType == 'drop' || options.animationType == 'slideUp'){
						$("li#jDiaporama_image_"+id, diapo).addClass("active").delay(options.animationSpeed-200).fadeIn(1000,function(){startDiapo()});}
					
					else if(options.animationType == 'drop' || options.animationType == 'explode'){
						$("li#jDiaporama_image_"+id, diapo).addClass("active").delay(500).fadeIn(2000,function(){startDiapo()});}
				
					else if(options.animationType == 'slide'  ){
						$("li#jDiaporama_image_"+id, diapo).addClass("active").delay(options.animationSpeed).fadeIn(2000,function(){startDiapo()});}
					
					else if(options.animationType == 'slideDown'){
						$("li#jDiaporama_image_"+id, diapo).addClass("active").slideDown(options.animationSpeed,function(){startDiapo()});}
					
					else if(options.animationType == 'slideLeft'){
						$("li#jDiaporama_image_"+id, diapo).addClass("active").delay(options.animationSpeed/2).show("slide", { direction: "right" },options.animationSpeed,function(){startDiapo()});}
					
					else if(options.animationType == 'slideRight'){
						$("li#jDiaporama_image_"+id, diapo).addClass("active").delay(options.animationSpeed/2).show("slide", { direction: "left" },options.animationSpeed,function(){startDiapo()});}
					
					else if(options.animationType == 'slideLikeBtn'){
						if(sens == 'right'){ sens='left'}
						else{ sens ='right'}
						$("li#jDiaporama_image_"+id, diapo).addClass("active").delay(options.animationSpeed/2).show("slide", { direction: ''+sens+'' },options.animationSpeed,function(){startDiapo()});}					
						
						
						
						
						
						
									
					if(options.overlay){						
					var leLien = $("li.active a", diapo).attr('href');
					if(leLien != undefined){
						$(".overlay img", diapo).wrap('<a href="'+leLien+'" />');					
					}}
			}
				
				
			}
		});
		
		return this;
	};
})(jQuery);
