// adapte ou compatib.js doit être chargé avant

/*
copyleft Michel RHO 2007
Ce script permet de faire défiler des layers de dimensions semblables dans une
boite. Les layers se suivent du bas vers le haut (mais on peut changer la direction)
et celui qui disparait se recolle en dessous du dernier pour créer un mouvement continu.

Adaptation pour un layer horizontal juin 2007
*/

// largeur de la zone d'affichage
   largeurDiv=1004;
   hauteurZoneVisible=18; 
   
// position texte defilant par rapport à la zone affichage
    //zone_top=hauteurZoneVisible; // on démarre en bas
    // NON : on démarre au milieu
    zone_left = 502; 
    zone_top=0;
    //var marge=4;
    //var departx=marge; 
// compteurs
   var scrolling=1; // le pas du défilement
   var timer=30;

// variables des div défilant
var lg_texte="";
/* pour l'instant, on simplifie : on fixe à 100px la hauteur de chaque div */
/* on ne sert pas de tout ça ici */
/*
  var hauteurToutDiv=120;

   var largeur_un_char=6; // en 12px
   var hauteur_une_ligne=14; // en 12px   
   var espacement_vertical=hauteur_une_ligne*2;
   var hauteurDiv=new Array(); // calculee par l'init en fonction de la longueur du texte
   var largeur_une_ligne; // pour estimer la hauteur des div défilants (inutilisée ici )
*/ 
// nombre de div défilants :
   var nbre_defile=1;   // le système peut en afficher plusieurs  
   var x=new Array();
   var y=new Array();
// fin des initialisations manuelles

// timer de pause
var date_pause = new Date();
var debut_pause;
var ctrl_pause;



function m_pause() {
var d2=new Date();
ctrl_pause=d2.getTime();

//alert ("calcul = "+fin_pause - ctrl_pause);
if (fin_pause - ctrl_pause <= 0)
  {
    clearTimeout(la_pause);
    scrolling=1;
    return;
  }
  else
  {
  la_pause = setTimeout('m_pause();',10);
  }
}



function mouvement(){ 
 
  for (ii=1; ii<=nbre_defile; ii++) // boucle utile si +ieurs divs
  { 
  clearTimeout('mouvement();');
  //y[ii]-=scrolling; // scrolling vertical
  x[ii]-=scrolling; // scrolling horizontal                     
         //place("defile"+ii,x[ii],y[ii]); // quand il y en a plusieurs
         place(layer_defilant,x[ii],y[ii]);
         // faire une pause 
         /* pas de pause dans cette version
         if(y[ii]==6) { 
         y[ii]=5
         clearTimeout(repete); 
         date_pause=new Date();        
         fin_pause=date_pause.getTime()+6000;
         scrolling=0;
         m_pause();         
         }
         */
         // limite de rotation: si tout le layer sort par le haut... 
         /*
         if(y[ii]<(hauteurDiv[ii]+10)*-1) 
         {       
              // le placer à la suite du précédent s'il existe    
              if (y[ii-1]){
                  y[ii]=y[ii-1]+hauteurDiv[ii-1]+espacement_vertical; 
              }else{ // sinon, c'est le premier, on le remet en bas, sous le dernier
                  y[ii]=y[ii+nbre_defile-1]+espacement_vertical+hauteurDiv[ii+nbre_defile-1];
              }       
         }
         */
          // ici on sort par la gauche
          if (x[ii]<= 502-lg_texte)x[ii]=1000;  // on revient à droite            
  } 
  
  var repete=setTimeout('mouvement();',timer);
}

// new methode avec gversion net ou mic et dom true ou false
function initZone(){
// comme pour l'instant ils ont tous la même taille, on peut se passer du calcul ci-dessous
//largeur_une_ligne=largeurDiv/largeur_un_char; // cf plus haut, selon le style 
// initialiser chaque layer defile
  layer_defilant=info_taille_texte(); // nom =l_NNNN
  lg_texte=(layer_defilant.substring(2,layer_defilant.length))*1
  //alert(lg_texte); 
  // adapter le div en pixels : 6 en moyenne pour du 12px de haut
  lg_texte=lg_texte * 6;
  eval (layerRef+layer_defilant+styleSwitch+".width='"+lg_texte+"px';");

for (i=1; i<=nbre_defile; i++)
  {
    //layer_defilant="defile"+i; // quand il y en a plusieurs, sinon fixé plus haut
    // on décide pour l'instant (03 2007) qu'ils ont tous la même hauteur
    //hauteurDiv[i]=hauteurToutDiv;
    //hauteurDiv[i]=fixeHauteur(layer_defilant,eval("message"+i));
    place(layer_defilant,zone_left,zone_top);
    x[i]=zone_left;
    y[i]=zone_top; 
    // decaler le suivant avec une marge
    // zone_top+=hauteurDiv[i]+espacement_vertical; // pas de suivant dans cette version 
  }

mouvement();
}

function fixeHauteur(calque, le_texte){
var nombre_lignes=le_texte.length/largeur_une_ligne;
hauteur=Math.round(hauteur_une_ligne*nombre_lignes);
eval (layerRef+calque+styleSwitch+'.height='+hauteur);
return hauteur;
}

function info_taille_texte(){ 
// trouver la longueur du texte : le php l'a mis dans l'id du div l_NNNN
// faire un tableau de tous les divs
var tabDiv=document.getElementsByTagName("div");
// boucler pour trouver le bon
for(i=0; i<=tabDiv.length-1; i++){
var a=tabDiv[i].id;
if (typeof a != "undefined"){
    if (a.lastIndexOf("_")==1)
    {
    return a;
    }
  }
}





}

