(function($){
    $.mslSlider = function(el, options){
      var base = this;
        
      base.$el = $(el);
      base.el = el;
        
			base.outer = base.$el.find(".preview_outer");
			base.arrow = base.$el.find(".arrow");
			base.thumbs	= base.$el.find(".thumbs").length > 0 ? base.$el.find(".thumbs span"):false;
			base.preview_inner = base.$el.find(".preview_inner");
	        
			base.preview_els = base.$el.find(".preview_inner div");
			
			base.current = 0;
			
			base.prevBtn = $("<a>Pr&#233;c&#233;dent</a>");
			base.nextBtn = $("<a>Suivant</a>");
			base.prevBtn.attr("href", "#").addClass("prev");
			base.nextBtn.attr("href", "#").addClass("next");
		
      base.$el.data("mslSlider", base);
        
    
      base.init = function(){
		    base.options = $.extend({},$.mslSlider.defaultOptions, options);
        base.$el.addClass("size-" + base.preview_els.length);
        if(base.thumbs != false)
        {
          base.thumbs.eq(0).addClass("current");          
        }
        
        base.$el.prepend(base.prevBtn,base.nextBtn);
        
        // Le slider ne doit boucler que lorsqu'il n'y a qu'un seul élément à afficher à la fois
        if (base.options.loop == true) {
          base.loop = setInterval(function(){
            base.getSlide(base.current + 1);
          },6000);  
          
          // Pause lors du mouseenter 
          base.preview_inner.mouseenter(function() {
  				  clearInterval(base.loop);
  				}).mouseleave(function() {
  				  base.loop = setInterval(function(){
              base.getSlide(base.current + 1);
            },6000);
  				});       
        }
        
        if(base.thumbs != false)
        {
          base.thumbs.click(function() {
            clearInterval(base.loop);
  			    base.getSlide(base.thumbs.index(this));
  			  });
        }     
        
        // Module de gallerie
        if(base.options.gallery) {
          base.voilou = $('<div id="voilou"></div>');
          $('body').append(base.voilou.hide());
          
          // base.voilou.click(hideGallery());
          
          base.preview_els.click(function(){
            base.voilou.fadeIn();
            return false;
          });
        }   
				
				base.preview_els.hover(function(){
				  if($(this).find("li").length == 1) {
				    $(this).addClass("unique");
				  }
				},function(){
				  $(this).removeClass("unique");
				});
				
				if(base.thumbs != false) 
				{
	  				var arrowSize = base.arrow.css('width').replace('px', '');
	  				var thumbSize = base.thumbs.eq(0).css('width').replace('px', '');
	  				var size = base.thumbs.eq(0).position().left + ((arrowSize/2)-(thumbSize/2));
//	  				base.arrow.css( {'left' : base.thumbs.eq(0).position().left } ).show();
	  				base.arrow.css( {'left' : size+'px' } ).show();
				}
				
				if (base.options.multi) {
				  base.slides_width = base.preview_els.outerWidth() + parseFloat(base.preview_els.css('margin-right'));
				  base.preview_inner.width(base.preview_els.length * base.slides_width);
				  // Nombre d'étapes pour tout afficher
				  base.steps = Math.floor(base.preview_inner.width()/base.outer.width());
				  
				  // Nombre d'éléments affichables
				  base.visibles = Math.floor(base.outer.width()/base.slides_width);
				  
				  base.prevBtn.click(function(){
  				  base.getMultiSlides(base.current-1);
  				  return false;
  				});

  				base.nextBtn.click(function(){
  				  base.getMultiSlides(base.current+1);
  				  return false;
  				});
				}
				else {				  
				  base.prevBtn.click(function(){
  				  clearInterval(base.loop);
  				  base.getSlide(base.current-1);
  				  return false;
  				});
  				base.nextBtn.click(function(){
  				  clearInterval(base.loop);
  				  base.getSlide(base.current+1);
  				  return false;
  				});				  
				  base.preview_els.not(":eq(0)").hide();  
				}
				
				//base.outer.animate( {'scrollLeft' : 0}, 0 );
				
        // base.preview_inner.css('width', base.preview_els.length * base.image_width);
      };
      
      base.getSlide = function(current){      
        if(current >= base.preview_els.length){
          current = 0;
        }
        
        if(current < 0){
          current = base.preview_els.length - 1;
        }
        
        // base.preview_pos = base.preview_els.eq(current).position();
				
      	if (base.current != current) {
          base.preview_els.eq(current).stop().css({"z-index": 1, "opacity": ''}).show();            	  
          base.preview_els.eq(base.current).css("z-index", 2).fadeOut();
          base.current = current;    
      	}
      			
      	if(base.thumbs != false)
      	{
  				base.thumbs.removeClass("current");					
  				base.thumbs.eq(current).addClass("current");
					
			    // Animation des slides
        	// base.outer.stop().animate( {'scrollLeft' : base.preview_pos.left},  500 );
//        	base.arrow.stop().animate( {'left' : base.thumbs.eq(current).position().left },  500 );

				var arrowSize = base.arrow.css('width').replace('px', '');
				var thumbSize = base.thumbs.eq(current).css('width').replace('px', '');
				var size = base.thumbs.eq(current).position().left + ((thumbSize/2)-(arrowSize/2));
				base.arrow.stop().animate( {'left' : size+'px' } ).show();
        	
      	}			
      };
      
      base.getMultiSlides = function(current){
        if(current > base.steps){
          current = 0;
        }
        
        if(current < 0){
          current = base.steps;
        }
        
        base.outer.stop().animate( {'scrollLeft' : (current * base.visibles) * base.slides_width},  500 );
        base.current = current;
      }
      
      base.init();
    };

	  $.mslSlider.defaultOptions = {
        effect: "fade",
        multi: false,
        loop: true,
        gallery: false
    };
    
    $.fn.sarenzaSlider = function(options){
        return this.each(function(){
            (new $.mslSlider(this, options));
        });
    };
    
    $.fn.getmslSlider = function(){
        return this.data("mslSlider");
    };
    
})(jQuery);

jQuery(function() {
  jQuery("#sliderMSL").sarenzaSlider();
  jQuery("#sliderMSL").sarenzaSlider({
   effect: "slide",
   multi: true,
   loop: false
  });
});

