// adapte ou compatib.js doit être chargé avant
 //alert( "def OK");
/*
copyleft Michel RHO 2008
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.
*/
a=0; // variable de dev

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

// variables des div défilant

/* pour l'instant, on simplifie : on fixe à XXXpx la hauteur de chaque div */
  var hauteurToutDiv=110;

//   var largeur_un_char=6; // en 12px
//   var hauteur_une_ligne=14; // en 12px
   var hauteur_une_ligne=5; // en l'absence de mesure de chars
   var espacement_vertical=hauteur_une_ligne*3; // bien séparer les paragraphes
   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=10; // valeur par défaut, corrigée par la boucle des layers dans mes_fonctions
   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;

// duree de la pause
dureePause = 4000;



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++)
  { 
  y[ii]-=scrolling;

/* ajout 23 oct 2008 */
   // ne pas placer le div du bas s'il n'est pas entièrement visible dans la fenêtre de défilement
   if (y[ii] + hauteurDiv[ii]<=hauteurZoneVisible)
   {
         place("defile"+ii,x[ii],y[ii],1);// l'argument 3 valeur 1 permet de ne pas appliquer corx dans place
   }
         // faire une pause 
         if(y[ii]==nbre_defile) {
            y[ii]=nbre_defile-1;
            clearTimeout(repete);
            date_pause=new Date();
            fin_pause=date_pause.getTime()+dureePause;
            scrolling=0;
            m_pause();
         }
         // limite de rotation: si tout le layer sort par le haut, 
         //if(y[ii]<(hauteurDiv[ii]*-1))
         if(y[ii]<(hauteurDiv[ii])*-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;
                  // et le cacher
                  cache ("defile"+ii);
              }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];
                  // et le cacher
                  cache ("defile"+ii);
              }       
         }
  } 
    
  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
for (i=1; i<=nbre_defile; i++)
  {
    layer_defilant="defile"+i;
    // 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));
    /* inutile de placer maintenant, la rotation va le faire avec les corrections */
    //place(layer_defilant,zone_left,zone_top); //alert (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;
  }
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;
}


