(function($){

	var pluginname = 'sshowb';
	
	/** variable class css **/
	var classLegend = 'legend';
	var classLegendCss = pluginname + '-legend'
	var classNav = pluginname + '-nav';
	var classNavLeft = pluginname + '-triangle-left';
	var classNavRight = pluginname + '-triangle-right';
	var classPlayer = pluginname + '-player';
	var classPauseButton = pluginname + '-pauseb';
	var classPlayButton = pluginname + '-playb';
	var classInnerDiv = pluginname + '-innerdiv';
	var classSlide = "";
	
	/** variable **/
	var maxW = "100%";
	var maxH = 0;
	var widthValue = 0;
	//var heightValue = 0;
	var idSshowb;
	var play = false;
	var durationMvt;
	var durationStop;
	var way;
	var fixePlayer;
	
	$.fn.sshowb = function(params){

		params = $.extend({width : '0', classSlide : 'slide', legend : true, classLegend : 'legend', way : 'right', durationMvt : 500, durationStop : 3000, player : true, fixePlayer : false}, params);
		
		classSlide = params.classSlide;
		classLegend = params.classLegend;
		
		maxW = params.width;
		widthValue = parseInt(maxW.substring(0, maxW.length - 2));
		
		//maxH = params.height
		//heightValue = parseInt(maxH.substring(0,maxH.length - 2));
		
		durationMvt = params.durationMvt;
		durationStop = params.durationStop;
		way = params.way;
		fixePlayer = params.fixePlayer;
		
		this.each(function(){
			 idSshowb = this.id;
			
			try{
				$('.' + classLegend).addClass(classLegendCss);
		
				$('.' + classSlide).each(function(e){
					if(maxH < $(this).height()){
						maxH = $(this).height();
					}
				});
				
				//bidouille a revoir
				maxH = maxH + "px";
				
				
				//on insere la div interieur
				$('<div class="' + classInnerDiv + '"></div>').prependTo($('#' + idSshowb));
				$('.' + classSlide).appendTo($('.' + classInnerDiv));
				
				
				//css des slides
				$('.' + classSlide).css({width : maxW,
									     height : maxH,
									     textAlign : "center",
										 position: "relative",
									     float : "left"});
				
				//css du conteneur
				$('.' + classInnerDiv).css("width", (widthValue * $('.' + classSlide).size()) + "px");
				
				//css du slideshow
				$(this).css({width : maxW,
							 height : maxH,
							 position: "relative",
							 overflow : "hidden"});
				
				//action sur le click
				if(params.way == 'right'){
					$('.' + classSlide).click(function(e){
						toRight(params.duration);
					});		
				}
				else{
					$('.' + classSlide).click(function(e){
						toLeft(params.duration);
					});
				}
				
				//On affiche les images
				$('.' + classSlide + ' img').show(); 
				
				//on ajoute la legend
				if(params.legend == true){
					$('.' + classSlide).each(function(e){
						if($(this).children('.' + classLegend).size() < 1 && $(this).children('img').size() > 0){
							$('<div class="' + classLegend + '"></div>').prependTo($(this));
							var content = '<p>' + $(this).children('img').attr('alt') + '</p>';
							$(this).children('.' + classLegend).html(content);
						}
					});
					
					$('.' + classLegend).addClass(classLegendCss);
					
					//on montre la legende selon la hauteur de la div
					$('.' + classLegend).css({top : "-" + $(this).height() + "px" });
					
					
					//action au passage de la souris
					$('.' + classSlide).mouseover(function(e){
						$(this).children('.' + classLegend).stop().animate({
							top : "0"
							},durationMvt,function(e){}
						);
					});
					$('.' + classSlide).mouseout(function(e){
						$(this).children('.' + classLegend).stop().animate({
							top : "-" + $(this).children('.' + classLegend).height() + "px"
							},durationMvt,function(e){}
						);
					});
				}
				else{
					$('.' + classLegend).remove();
				}
				

				//player
				if(params.player == true){
					$('<div class="' + classPlayer + '"></div>').appendTo($(this));
					$('<div></div>').appendTo($('.' + classPlayer));
					$('<a class="' + classPauseButton + '"></a>').appendTo($('.' + classPlayer + ' div'));
					$('<a class="' + classPlayButton+ '"></a>').appendTo($('.' + classPlayer + ' div'));
					
					
					$('.' + classPlayButton ).css({display: "none"});
														
					$('.' + classPlayButton ).click(function(){
						playSlideshow();
					});	
					$('.' + classPauseButton ).click(function(){
						pauseSlideshow();
					});						
					
					
					//conteneur des boutons de navigation (gauche et droite
					$('<div class="' + classNav + '"></div>').prependTo($('.' + classPlayer + ' div'));
					
					//construction des fleches
					//fleche de gauche
					$('<a class="' + classNavLeft + '"></a>').appendTo($('.' + classNav));
					initLeftNav();
					
					//fleche de droite
					$('<a class="' + classNavRight + '"></a>').appendTo($('.' + classNav));
					initRightNav();
					
					if(fixePlayer){
						$('.' + classPlayer).css("bottom","0");
					}
					else{
						$('.' + classPlayer).css("bottom","-" + $('.' + classPlayer).outerHeight() + "px");
						
						//animation sur le player
						$('.' + classSlide + ', .' + classPlayer).mouseover(function(){
								$('.' + classPlayer).stop().animate({bottom : 0}, durationMvt);
						});
						$('.' + classSlide + ', .' + classPlayer).mouseout(function(){
								$('.' + classPlayer).stop().animate({bottom : "-" + $('.' + classPlayer).outerHeight() + "px"}, durationMvt);
						});
					}
					
					//animation rollover
					rolloverAnim();
					
					//lancement du player
					play = true;
					nextSlideAuto();
					
					//------------------------------------------------------
					//IE : BOUTON PAUSE
					//------------------------------------------------------
					setIEparams();
					//FIN IE
					//------------------------------------------------------
				}
			}
			
			catch(err){
				alert(err.message);
			}
		});
	};
	
	/**
	 * Fait défilé la photo de droite
	 */
	function toRight(){
		$('.' + classSlide).parent('div').stop().animate({
			marginLeft: "-" + maxW
		},durationMvt,function(){
			$('.' + classSlide + ":first-child").insertAfter($('.' + classSlide + ":last"));
			$('.' + classSlide).parent('div').css("margin-left",0);
		});
	}
	
	/**
	 * Fait défilé la photo de gauche
	 */
	function toLeft(){
		$('.' + classSlide + ":last").insertBefore($('.' + classSlide + ":first"));
		$('.' + classSlide).parent('div').css("margin-left","-" + maxW);		
		
		$('.' + classSlide).parent('div').stop().animate({
			marginLeft: "0"
		},durationMvt,function(){});
	}
	
	/**
	 * Fait défiler les photos du slideshow
	 */
	function nextSlideAuto(){
		if(play){
			if(way == 'right') toRight();
			else toLeft();
			setTimeout(function(){nextSlideAuto()},durationStop);
		}
	}
	
	/**
	 * Arrête le défilement automatique et change les boutons play/pause
	 */	
	function pauseSlideshow(){
		play = false;
		$('.' + classPauseButton ).css("display","none");
		$('.' + classPlayButton ).css("display","block");
	}
	
	/**
	 * Lance le défilement automatique et change les boutons play/pause
	 */
	function playSlideshow(){
		play = true;
		$('.' + classPauseButton ).css("display","block");
		$('.' + classPlayButton ).css("display","none");
		nextSlideAuto();
	}
	
	/**
	 * Met une animation sur les bouton au passage de la souris
	 */
	function rolloverAnim(){
		//animation au passage de la souris
		$('.' + classNavLeft + ', .' + classNavRight +', .' + classPlayButton + ', .' + classPauseButton ).mouseover(function(e){
															$(this).stop().animate({
																opacity: 0.7
															},200);	
		});
		
		//animation quand la souris s'en va
		$('.' + classNavLeft +', .' + classNavRight + ', .' + classPlayButton + ', .' + classPauseButton ).mouseout(function(e){
															$(this).stop().animate({
																opacity: 1
															},200);	
		});
	}
	
	/**
	 * Créé la fleche de gauche et lui met l'action correspondante
	 */
	function initLeftNav(){
		$('.' + classNavLeft).click(function(e){
												toLeft();
		});
	}

	/**
	 * Créé la fleche de droite et lui met l'action correspondante
	 */
	function initRightNav(){
		$('.' + classNavRight).click(function(e){
												toRight();
		});
	}

	/**
	 * Modifie certain parametre pour le fonctionnement sous internet explorer
	 */
	function setIEparams(){
		if($.browser.msie){
			$('.' + classPauseButton ).css("width","12px"); //bouton pause du player
		}
	}
	
})(jQuery);


