/**
 * 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 pour identité "horizontal_band_next"
 * - une image qui pour identité "horizontal_band_previous"
 
 * Pour fonctionner, ce script doit être accompagné par le code css suivant :
 * .horizontal_band{
 * 		position:relative; 
 * 		z-index:80; 
 * 		width  : 606px; en fonction de la largeur visible de la bande d'actualités
 * 		height : 250px;
 * 		overflow : hidden;
 *}
 * ul.actu_list_home {
 * 		margin:0;
 * 		padding:0;
 * 		width:6000px; en fonction de la largeur supposée de toute la bande d'actualités
 * }
 *ul.actu_list_home li{
 * 		float : left;
 * 		width	: 606pxen 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/horizontal_band/horizontal_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_width = new Array();
//-- 
//-- 
function gereActuHorizontales(event){
  // récupère les bouton next et previous et gère les événements
  Event.observe($('horizontal_band_next'),'click',nextNews);
  Event.observe($('horizontal_band_previous'),'click',previousNews);
  
  
  
  // Change l'opacité 
  if (cpt == 0){
    new Effect.Opacity('horizontal_band_previous',{from:1.0,to: 0.2, duration:0.5});
  }
  
  var i = 0;
  // récupère toutes les actus dans des li
  $$('.horizontal_band ul li.li_actu_home').each(function(actu_item){
    
    //alert(Object.inspect(actu_item));
    var dimensions = actu_item.getDimensions();   
    news_width[i] = dimensions.width;
    i++;

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

 // largeur du déplacement
 var first_actu_width = news_width[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: -first_actu_width-20, y: 0, mode: 'relative' })) {
    cpt ++;

    if (cpt == nb_news-1){
    //-- changement d'opacité
      new Effect.Opacity('horizontal_band_next',{from: 1.0,to: 0.2, duration:0.5});
      active_next = false;
      Event.observe($('horizontal_band_next'),'mouseover',function(){
        $('horizontal_band_next').style.cursor='default';
      });
       if (cpt == 1){
      //-- changement d'opacité
      new Effect.Opacity('horizontal_band_previous',{from:0.2,to: 1.0, duration:0.5});
      }
    }else if (cpt == 1){
      //-- changement d'opacité
      new Effect.Opacity('horizontal_band_previous',{from:0.2,to: 1.0, duration:0.5});
      
      // Changement d'état du curseur
      Event.observe($('horizontal_band_previous'),'mouseover',function(){
        $('horizontal_band_previous').style.cursor='pointer';
      });
    }
  }
 }
 // Retarde le retour de l'observation de l'événement
 Event.observe.delay(1.2,$('horizontal_band_next'),'click',nextNews);
}
function previousNews(event){
 // supprime l'écoute des événements
 Event.stopObserving($('horizontal_band_previous'),'click',previousNews);

 // largeur du déplacement
 var first_actu_width = news_width[cpt];
 
 // 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: first_actu_width+20, y: 0, mode: 'relative' })) {
    cpt --;
    
    if (cpt < nb_news-1 && active_next == false){
      new Effect.Opacity('horizontal_band_next',{from: 0.2,to: 1.0, duration:0.5});
      active_next = true;
      // Changement d'état du curseur
      Event.observe($('horizontal_band_next'),'mouseover',function(){
        $('horizontal_band_next').style.cursor='pointer';
      });
    }
    if (cpt < 1){
      new Effect.Opacity('horizontal_band_previous',{from:1.0,to: 0.2, duration:0.5});
      // Changement d'état du curseur
      Event.observe($('horizontal_band_previous'),'mouseover',function(){
        $('horizontal_band_previous').style.cursor='default';
      });
    }
  }
 }
 Event.observe.delay(1.2,$('horizontal_band_previous'),'click',previousNews);
}

