//<![CDATA[
<!--
//::::::::::::::::::::::::::::::::::::::::::::::
// Auteur : Michael LHOTE :
//::::::::::::::::::::::::::::::::::::::::::::::

//+-----------------------------------------------------------------------------------+
//| Classe : scrollerObjH |
//| Description : classe qui permet de mettre en place un scroller horizontal. |
//| Ce scroller peut contenir du HTML. |
//| Lorsque le pointer de la souris est dans le scroller, ce dernier |
//| s'arrête. Ce qui permet par exemple de cliquer sur un lien. |
//| De plus, ce scroller a 2 principales options qui sont : |
//| |
//| 1 - possibilité de régler la vitesse de scrolling tant au niveau de |
//| déplacement du message qu'au niveau du réglage du Timer. |
//| |
//| 2 - possibilité de faire défiler le même message, le 2ème, à la suite |
//| de l'autre, le 1er, en spécifiant la position approximative, puisque |
//| c'est exprimé en %. Donc espacement proportionnel entre le 1er bandeau |
//| de message par rapport au 2ème bandeau de message. |
//| |
//| Parametres : |
//| |
//| 1 - ID de l'objet |
//| 2 - position Top du message par rapport au bandeau |
//| 3 - position Left du message par rapport au bandeau |
//| 4 - hauteur du message et du bandeau |
//| 5 - largeur du bandeau |
//| 6 - le message Flash |
//| 7 - couleur de fond du bandeau |
//| 8 - couleur de fond du message Flash |
//| 9 - vitesse de défilement du message dans le bandeau |
//| 10 - vitesse de défilement du message dans le bandeau (le retour) |
//| Réglage de la fréquence du Timer. |
//| 11 - delta exprimé en pourcentage (%). |
//| Par exemple, 0.1 (10%) indique qu'on recommence |
//| à re afficher le bandeau message que lorsque le 1er est arrivé |
//| à 10% de sa fin. |
//| Entre 0 et 1 cette fonctionnalité est annulée. |
//| Elle est remplacée par celle par défaut qui n'affiche le |
//| prochain message qu'à la fin du 1er et vice et versa. |
//| |
//+-----------------------------------------------------------------------------------+
function scrollerObjH(name,initH,initW,heightB,widthB,content,initBg,Bg,speed,timerSpeed,delta){
//====================================//
// Attributs //
//====================================//
this.name=name;
this.initH=initH;
this.initW=initW;
this.heightB=heightB;
this.widthB=widthB;
this.content=content;
this.widthText=this.content.length+10;
this.initBg=initBg;
this.Bg=Bg;
this.speed=parseInt(speed) || 1;
this.timerSpeed=parseInt(timerSpeed) || 25;
this.timer=name + "Timer";
this.elem; //1er bandeau
this.elemBuff; //2eme bandeau
this.delta=delta;
this.offsetDiv=(60 * this.delta);
this.isD1=true;//c'est le 1er bandeau qui commence
this.isD2=false;
this.cptD1=0;
this.cptD2=0;
//====================================//
// Declaration Methods //
//====================================//
this.getElement=getElement;
this.createLayer=createLayer;

//Affectation de la fonction dont le Timer
//va se servir
if (this.delta > 0 && this.delta < 1)
{
this.scrollLayer = scrollLayerPlus;
} else {
this.scrollLayer = scrollLayer;
}
//

this.stopAnim=stopAnim;
this.startAnim=startAnim;
this.scrollLoop=scrollLoop;
//====================================//
// Initialise l'objet //
//====================================//
this.createLayer();
this.getElement();
this.scrollLayer();

}//fin scrollerObjH

//=======================================================================================//
// Definition Methods //

//=======================================================================================//

/*
* Permet d'interagir avec la vitesse du scrolling.
*
* param int s vitesse du message scrollé.
* Remarque : s = 0 stop le scrolling
*/
function scrollLoop(s){
this.speed = s;
}//fin scrollLoop

//=======================================================================================

/*
* Le mecanisme du scrolling par défaut.
*
*/
function scrollLayer(){

var D1Left = parseInt(this.elem.style.left);

if(D1Left > this.elem.offsetWidth*(-1)){
this.elem.style.left = D1Left - this.speed + "px";
}else {
this.elem.style.left = this.initW + "px";
}//fin if

}//fin scrollLayer

//=======================================================================================

/*
* Le scroller ++
*
* On fait en sorte que le 2ème bandeau message puisse commencer à défiler alors
* que le 1er bandeau message n'est pas encore arrivé à sa fin.
* De plus, le début du 2ème message s'ajuste par rapport à un delta exprimé en pourcentage.
* Ce pourcentage correspond à la postion en partant de la fin du bandeau.
*/
function scrollLayerPlus(){

var D1Left = parseInt(this.elem.style.left);
var D2Left = parseInt(this.elemBuff.style.left);
var diff = this.elem.offsetWidth * this.delta; //le delta pour le 1er bandeau
var diff2 = this.elemBuff.offsetWidth * this.delta; //le delta pour le 2eme bandeau

////////////////////////////////////////////////////
// Controle le si le delta est atteint
//
if( D1Left - diff < this.elem.offsetWidth*(-1)) this.isD2 = true;
if( D2Left - diff2 < this.elemBuff.offsetWidth*(-1)) this.isD1 = true;
//fin controle delta/////////////////////////////////

////////////////////////////////////////////////////
// Activation du Bandeau D1
//
// Si le bandeau D1 est arrivé à la fin et que le delta soit atteint
if( (D1Left > this.elem.offsetWidth*(-1)) && this.isD1){

//Si D2 est actif, on ne fait pas bouger D1 sinon il bougerait 2 fois
//donc il irait plus vite
if (this.isD2)
{
this.cptD2++;
//Au départ de l'affichage de D2, on le positionne
//proportionnellement à D1 en fonction de delta (en %)
if (this.cptD2 == 1)
this.elemBuff.style.left = D2Left - this.speed + this.offsetDiv + "px";
else
this.elemBuff.style.left = D2Left - this.speed + "px";

}else {
//on attend que D2 soit fini pour que le relais de D1 se fasse ici
this.cptD1++;
this.elem.style.left = D1Left - this.speed + "px";
}

}else {
this.cptD1 = 0;
this.isD1 = false;
this.elem.style.left = this.initW+"px";
}//fin if

////////////////////////////////////////////////////
// Activation du Bandeau D2
//
// Si le bandeau D2 est arrivé à la fin et que le delta soit atteint
if ((D2Left > this.elemBuff.offsetWidth*(-1)) && this.isD2) {

//Si D1 est actif, on ne fait pas bouger D2 sinon il bougerait 2 fois
//donc il irait plus vite
if (this.isD1)
{
this.cptD1++;
//Au départ de l'affichage de D1, on le positionne
//proportionnellement à D2 en fonction de delta (en %)
if (this.cptD1 == 1)
this.elem.style.left = D1Left - this.speed + this.offsetDiv + "px";
else
this.elem.style.left = D1Left - this.speed + "px";

}else {
//on attend que D1 soit fini pour que le relais de D2 se fasse ici
this.cptD2++;
this.elemBuff.style.left = D2Left - this.speed + "px";
}

} else {
this.cptD2 = 0;
this.isD2 = false;
this.elemBuff.style.left = this.initW+"px";
}//fin if


}//fin scrollLayerPlus

//=======================================================================================

/*
* Recuperation du DIV (le bandeau)
*
*/
function getElement() {

if(document.getElementById){
this.elem = document.getElementById(this.name);
this.elemBuff= document.getElementById('buff'+this.name);
} else if (document.all){
this.elem = document.all[name];
this.elemBuff= document.all['buff'+name];
} else if (document.layers){
this.elem = document.layers[name];
this.elemBuff= document.layers['buff'+name];
}//fin if
}//fin getElement

//=======================================================================================

/*
* Création du scroller ou du bandeau
*
*/
function createLayer(){

if(document.getElementById || document.all){
//conteneur
document.write('<div id="layer'+this.name+'" style="position:relative;overflow:hidden;background-color:#'+this.initBg+';border:0px solid black;width:'+this.widthB+'px;height:'+this.heightB+'px;" onMouseover="'+this.name+'.scrollLoop(0)" onMouseout="'+this.name+'.scrollLoop('+this.speed+')">');
//1er bandeau de message
document.write('<div id="'+this.name+'" style="position:absolute;top:'+this.initH+'px;left:'+this.initW+'px;border:0px solid black;white-space:nowrap;height:'+this.heightB+'px;background-color:#'+this.Bg+'">');
document.write(this.content);
document.write('<\/div>');
//2eme bandeau de message
document.write('<div id="buff'+this.name+'" style="position:absolute;top:'+this.initH+'px;left:'+this.initW+'px;border:0px solid black;white-space:nowrap;height:'+this.heightB+'px;background-color:#'+this.Bg+'">');
document.write(this.content);
document.write('<\/div><\/div>');
} else if(document.layers){
document.write('<ilayer name="'+this.name+'" bgcolor="#'+this.Bg+'" width="'+this.widthB+'" height="'+this.heightB+'">'+this.content+'<\/ilayer>');
document.write('<ilayer name="buff'+this.name+'" bgcolor="#'+this.Bg+'" width="'+this.widthB+'" height="'+this.heightB+'">'+this.content+'<\/ilayer>');
return;
}//fin if

//mise en route du Timer
this.startAnim();

}//fin createLayer

//=======================================================================================

/*
* Stop le Timer
*
*/
function stopAnim(){
if(this.scrollLayer) window.clearInterval(this.timer);
}//fin stopAnim

function startAnim() {
if (this.scrollLayer) this.timer = setInterval(this.name+'.scrollLayer()',this.timerSpeed);
}//fin startAnim
//-->
//]]>

