var slider = function(id_maindiv,taille,timer,speed){
  // initialisation des variables dont on a besoin
  var self=this; // permet d'attaquer les variable de slider dans les fonctions
  this.active;
  this.active_next;
  this.div_active;
  this.div_active_next;
  this.play;
  this.annimation_en_cours = 0;
  this.id_maindiv = id_maindiv;
  this.imageWidth = taille;
  this.imageSum = $("."+this.id_maindiv+" .window .image_reel img").size();
  this.imageReelWidth = this.imageWidth * this.imageSum;

  // Lien actif par défaut
  this.active = $("."+this.id_maindiv+" .paging a:first"); // on détermine le premier lien actif
  this.active.addClass("active"); // ajoute la classe active
  
  // Images active par défaut
  this.div_active = $("."+this.id_maindiv+" .window .image_reel div:first"); // on détermine le premier lien actif
  this.div_active_next = this.div_active;
  this.div_active.addClass("active");
  
  // Ajuste la taille de la div contenant les images à la taille des images
  $("."+this.id_maindiv+" .window .image_reel").css({'width' : this.imageReelWidth});
  
  // Permet de faire un fade in / out
  var fade = function()
  {      
    var slice_debut = parseInt(self.active_next.attr("rel")); // on récupère la valeur du lien sur lequel on a cliqué 
    var slice_fin = parseInt(self.active_next.attr("rel"))+1; // on récupère la valeur du lien sur lequel on a cliqué 
    self.div_active_next = $("."+self.id_maindiv+" .window .image_reel div").slice(slice_debut,slice_fin); // selection la div que l'on doit afficher
    
    
    //self.div_active.removeClass("active"); // on enleve la classe active à la div du premeir plan
    self.div_active.addClass("active_last"); // on donne à la div du premier plan la classe last pour l'éffacer
  
    self.div_active_next.css({opacity: 0.0}); // On modifie l'opacité pourl a rendre invisible
    self.div_active_next.addClass("active"); // on donne à la div du second plan la classe active pourl a faire passer devant
    self.annimation_en_cours = 1;
    self.div_active_next.animate({opacity: 1.0}, speed,function(){ // on lance l'annimation pour la rendre visible
      self.div_active.removeClass("active active_last"); // on enleve la classe active_last de l'ancienne div au premeir plan
      self.div_active = self.div_active_next;// on modifie la classe active
      self.annimation_en_cours = 0;
    });
    
    $("."+self.id_maindiv+" .paging a").removeClass("active active_next"); // on supprime la classe active sur les liens
    self.active_next.addClass("active"); // on ajoute la classe active sur le bon lien
  };

  // automatisation de la rotation des photos
  var process_content = function(){
      self.play = setInterval(function(){ // La boucle permettant de faire tourner les images
          
          self.active = $("."+self.id_maindiv+" .paging a.active");
          self.active_next = self.active.next();
          
          if (self.active_next.attr("rel") === undefined) { //If paging reaches the end...
              self.active_next = $("."+self.id_maindiv+" .paging a:first");
          }
          fade(); // on procède au fade sur les div
      }, timer); // on répete l'opération chaque "timer"
  };

  process_content(); // on lance le fade sur les images

  //On Hover
  $("."+self.id_maindiv+" .window .image_reel a").hover(function() {
       //Stop the rotation
  }, function() {
      rotateSwitch(); //Resume rotation timer
  });

  // sur un clic?
  $("."+self.id_maindiv+" .paging a").click(function() {
    
    //process_content();
    self.active = $("."+self.id_maindiv+" .paging a.active"); // on récupère le lien actif
    if(self.active.attr("rel")!=$(this).attr("rel") && self.annimation_en_cours==0) // est-ce que l'on clique sur un lien différent, est-ce qu'une annimation est en cours?
    {
      self.active_next = $(this); // on récupère le lien sur lequel on vient de cliquer
      fade();
    }
    clearInterval(self.play);
    process_content();
  });
}
