
/******************************
 *                            *
 *        BtnVisionneuse      *
 *                            *
 *****************************/
(function(){
  
 BtnVisionneuse = function(elt, index, visionneuse){
    this.elt = $(elt);
    this.index = index;
    this.leave = false;
    this.enter = false;
    this.visionneuse = visionneuse;
    
    var obj = this;
    this.initListeners(obj);
  };
  
  
  BtnVisionneuse.prototype.initListeners = function(obj){
    obj.elt.mouseenter(function(evt){
      if(!$(this).hasClass("actif") && !$(this).children().first().hasClass("actif")){
        
        obj.enter = true;
        obj.leave = false;
        
        $(this).children().first().animate({"opacity":0, "filter":"alpha(opacity=0)"}, {
          complete:function(){
            $(this).addClass("actif");
            $(this).css({"display":"block","opacity":1, "filter":"alpha(opacity=100)"});
          },
          step:function(now, fx){
            if(obj.leave){
              $(this).stop();
            }
          },
          duration:Application.FADE_SPEED_BASIC
        });
      }
    });
    
    
    obj.elt.mouseleave(function(evt){
      if(!$(this).hasClass("actif")){
        obj.enter = false;
        obj.leave = true;
   
        $(this).children().first().animate({"opacity":0, "filter":"alpha(opacity=0)"}, {
          complete:function(){
            $(this).removeClass("actif");
            $(this).css({"display":"block","opacity":1, "filter":"alpha(opacity=100)"});
          },
          step:function(now, fx){
            if(obj.enter){
              $(this).stop();
            }
          },
          duration:Application.FADE_SPEED_BASIC
        });
        
      }
    });
    
    obj.elt.click(function(evt){
      evt.preventDefault();
      obj.visionneuse.update(obj.index);
    });
    
  };
  
  
  
  /**
   *  passe le bouton inactif en lui retirant les styles
   */
  BtnVisionneuse.prototype.setIsNotActif = function(){
    this.elt.removeClass("actif");
    this.elt.children().first().removeClass("actif");
  };
  
  
  
  /**
   *  passe le bouton inactif (avec transition)
   */
  BtnVisionneuse.prototype.fadeToNotActif = function(){
    this.elt.children().first().fadeOut(this.FADE_SPEED ,function(){
      $(this).removeClass("actif");
      $(this).parent().removeClass("actif");
      $(this).css({"display":"block"});
      $(this).fadeIn(500, function(){
      
      })
    });
  };
  
  
  
  /**
   *  passe le bouton comme actif en lui appliquant les styles
   */
  BtnVisionneuse.prototype.setIsActif = function(){
    this.elt.addClass("actif");
    this.elt.children().first().addClass("actif");
  };
  
})();
// end Class BtnVisionneuse







/******************************
 *                            *
 *    VisionneuseActualite    *
 *                            *
 *****************************/


(function(){

  VisionneuseActualite = function(infoCanvasSelector, btnVisionneuseSelector, speed){

    this.current = 0;
    this.actualites = $(infoCanvasSelector); 
    this.canClick = true;
    this.speed = speed;
    this.btns = [];
    var obj = this;
    
    this.initHeight();
    
    $(btnVisionneuseSelector).each(function(index, elt){
      var btnVisionneuse = new BtnVisionneuse($(this), index, obj);
      obj.btns.push(btnVisionneuse);
    });
  
  };
  
  
  
  
  VisionneuseActualite.prototype.initHeight = function(){
    var height = 0;
    
   this.actualites.each(function(index, elt){
     if($(this).height() > height){
       height = $(this).height();
     }
   });
   height += 20;
   $("#visionneuse_news_container").height(height);
  };
  
  
  
  /**
   * lancer le diaporama
   */
  VisionneuseActualite.prototype.start = function(){
    this.run(this)
  };
  
  
  
  VisionneuseActualite.prototype.run = function(obj){
    obj.timeoutId = setTimeout(function(){
      obj.toNextActu(obj);
    }, obj.speed);
  };
  
  VisionneuseActualite.prototype.stop = function(obj){
    clearTimeout(obj.timeoutId);
  };
  
  
  
  VisionneuseActualite.prototype.toNextActu = function(obj){
    this.canClick = false;
    var oldIndex = obj.current;
    obj.current++;
    if(obj.current >= obj.actualites.length){
      obj.current = 0;
    }
    
    this.btns[oldIndex].fadeToNotActif();
    this.btns[obj.current].setIsActif();
    obj.updateActualite(oldIndex, obj);
  };
  
  
  
  /**
   * lors d'un click sur un bouton
   */
  VisionneuseActualite.prototype.update = function(selectedIndex){
    if(this.current != selectedIndex && this.canClick){
      this.stop(this);
      this.canClick = false;
      var oldIndex = this.current;
      this.btns[this.current].setIsNotActif();
      this.current = selectedIndex;
      this.btns[selectedIndex].setIsActif();
      
      this.updateActualite(oldIndex, this);
    }
  };
  
  
  
  
  /**
   * maj d'un block actu
   */
  VisionneuseActualite.prototype.updateActualite = function(oldIndex, obj){
    $(obj.actualites[oldIndex]).fadeOut(500, function(){
      $(this).addClass("noDisplay");
      $(obj.actualites[obj.current]).fadeIn(500, function(){
        $(this).removeClass("noDisplay");
        obj.canClick = true;
        obj.start();
      });
    });
  };
  
  
})();


