/**
 * Pour fonctionner, ce script doit trouver dans le code html :
 * - un div appartenant à la classe "horizontal-band" et dans lequel se trouvent
 *   les actualités sous forme de list-item (li)
 * - la liste des actualités doit avoir l'identité "moving-band"
 * - une image qui a pour identité "vertical_band_next"
 * - une image qui a pour identité "vertical_band_previous"

 * Pour fonctionner, ce script doit être accompagné par le code css suivant :
/*.vertical_band{
     position:relative;
     z-index:80;
     width  : 277px;
     height : 187px; /*en fonction de la largeur visible de la bande d'actualités*
     overflow : hidden;
 }
 ul.actu_list_home {
     margin:0;
     padding:0;
     height:6000px;/* en fonction de la hauteur supposée de toute la bande d'actualités*
 }
 ul.actu_list_home li{
     float : left;
     /*width  : 606px; /* en fonction de la largeur visible de la bande d'actualités*
 }*/
 /* Principales étapes :
 * 1.Ajouter le code js dans le pattern :
 * 	<script src="scripts/js/vertical_band/vertical_band.js" type="text/javascript"></script>
 * 2.récupérer le pattern actu_home.html
 * 3.Changer le chemin vers les flèches previous et next
 * 4.Ajout du code css

 * @copyright Yvan Douënel 2010
 */


//-- Une fois l'objet window chargé, la fonction gereActuHorizontales est appelée
Event.observe(this,'load',gereActuHorizontales);
var cpt = 0;
var nb_news = 0;
var active_next = true;
var news_height = new Array();
//--
//--
function gereActuHorizontales(event){
  // récupère les bouton next et previous et gère les événements
  Event.observe($('vertical_band_next'),'click',nextNews);
  Event.observe($('vertical_band_previous'),'click',previousNews);



  // Change l'opacité
  if (cpt == 0){
    new Effect.Opacity('vertical_band_previous',{from:1.0,to: 0.2, duration:0.5});
  }

  var i = 0;
  // récupère toutes les actus dans des li
  $$('.vertical_band ul li.li_actu_home').each(function(actu_item){

    //alert(Object.inspect(actu_item));
    var dimensions = actu_item.getDimensions();
    news_height[i] = dimensions.height;
    i++;

	});
  nb_news = news_height.size();
  //alert(Object.inspect(news_height));
  if (nb_news==1){
    new Effect.Opacity('vertical_band_next',{from:1.0,to: 0.2, duration:0.5});
  }else{
    // Changement d'état du curseur
    Event.observe($('vertical_band_next'),'mouseover',function(){
      $('vertical_band_next').style.cursor='pointer';
    });
  }
}
function nextNews(event){
 // supprime l'écoute des événements
 Event.stopObserving($('vertical_band_next'),'click',nextNews);

 // hauteur du déplacement
 var first_actu_height = news_height[cpt];

 // Bandeau à déplacer
 var moving_band = $('moving_band');

 // Déplacement du bandeau
 if (cpt <0) {
  cpt = 0;
  //-- gestion ici du cas où l'internaute a cliqué trop vite pour reculer
 }
 if (cpt > nb_news-1) {
  cpt = nb_news-1;
  //-- gestion ici du cas où l'internaute a cliqué trop vite pour avancer
 }
 if (cpt< nb_news-1) {
  if (new Effect.Move(moving_band, { x:0 , y: -first_actu_height, mode: 'relative' })) {
    cpt ++;
    //alert('hauteur de déplacement = -'+first_actu_height);
    if (cpt == nb_news-1){
    //-- changement d'opacité
      new Effect.Opacity('vertical_band_next',{from: 1.0,to: 0.2, duration:0.5});
      active_next = false;
      Event.observe($('vertical_band_next'),'mouseover',function(){
        $('vertical_band_next').style.cursor='default';
      });
       if (cpt == 1){
      //-- changement d'opacité
      new Effect.Opacity('vertical_band_previous',{from:0.2,to: 1.0, duration:0.5});
      }
    }else if (cpt == 1){
      //-- changement d'opacité
      new Effect.Opacity('vertical_band_previous',{from:0.2,to: 1.0, duration:0.5});

      // Changement d'état du curseur
      Event.observe($('vertical_band_previous'),'mouseover',function(){
        $('vertical_band_previous').style.cursor='pointer';
      });
    }
  }
 }
 // Retarde le retour de l'observation de l'événement
 Event.observe.delay(1.1,$('vertical_band_next'),'click',nextNews);
}
function previousNews(event){
 // supprime l'écoute des événements
 Event.stopObserving($('vertical_band_previous'),'click',previousNews);

// hauteur du déplacement
 var first_actu_height = news_height[(cpt-1)];

 // Bandeau à déplacer
 var moving_band = $('moving_band');
 if (cpt <0) cpt = 0;
 if (cpt > nb_news-1) cpt = nb_news-1;

 // Déplacement du bandeau
 if (cpt>0) {
  if (new Effect.Move(moving_band, { x: 0 , y: first_actu_height, mode: 'relative' })) {
    cpt --;
    //alert('hauteur de déplacement = +'+first_actu_height);
    if (cpt < nb_news-1 && active_next == false){
      new Effect.Opacity('vertical_band_next',{from: 0.2,to: 1.0, duration:0.5});
      active_next = true;
      // Changement d'état du curseur
      Event.observe($('vertical_band_next'),'mouseover',function(){
        $('vertical_band_next').style.cursor='pointer';
      });
    }
    if (cpt < 1){
      new Effect.Opacity('vertical_band_previous',{from:1.0,to: 0.2, duration:0.5});
      // Changement d'état du curseur
      Event.observe($('vertical_band_previous'),'mouseover',function(){
        $('vertical_band_previous').style.cursor='default';
      });
    }
  }
 }
  Event.observe.delay(1.1,$('vertical_band_previous'),'click',previousNews);
}

