
/*******************************************************************************************************************
Variables à définir:
DistDep determine la distance de déplacement (en pixel) à chaque execution du script
VitDep détermine le temps entre deux executions du script (en ms)
ClipH doit avoir la même valeur que la hauteur du cadre dans le calque Conteneur
Pause est le nombre de routine pendant lequel le defilement s'arrete. Le temps de cet arrêt est :  VitDep*Pause (ms)
NbreCont détermine le nombre de calques de news
Espace est la hauteur en px entre 2 calques
********************************************************************************************************************/

var NbreCont = 3;
var HCont = new Array();

var DistDep=4, VitDep=4, ClipH=250, Espace=80;
var Pause=2800;
var Parent,timer,Sens,ContTop;
var Parent='Conteneur';

function NavId(){
        this.name=navigator.appName;
        this.version=navigator.appVersion.substring(0,1);
        this.ie=(this.name.substring(0,3)=='Mic')?1:0;
        this.net=(this.name.substring(0,3)=='Net')?1:0;
        this.ukn=(!this.ie&&!this.net)?1:0;
        this.dom=document.getElementById?1:0;
    return this
}
var CnaV=new NavId();

function init(){
        //On recupère les infos sur le bord haut du calque conteneur
        ContTop=(CnaV.ie)?document.all[Parent].offsetTop:(CnaV.net&&CnaV.version<5)?document.layers[Parent].top:(CnaV.net||CnaV.dom)?document.getElementById(Parent).offsetTop:0;

        //Hauteur de chaques calques
        for (i=1; i<=NbreCont; i++) {
                  HCont[i] = (CnaV.ie)?document.all['ContNews'+i].offsetHeight:(CnaV.net&&CnaV.version<5)?document.layers[Parent].Height:(CnaV.net||CnaV.dom)?document.getElementById(Parent).offsetHeight:0;
        }

        //Positionnement des calques
        var BasePos = ((ClipH/2)-(HCont[1]/2));
        (CnaV.ie&&CnaV.version<5)?document.all['ContNews1'].style.top=BasePos:(CnaV.net&&CnaV.version<5)?document.layers[Parent].document.layers['ContNews1'].y=BasePos:(CnaV.net||CnaV.dom)?document.getElementById('ContNews1').style.top=BasePos:0;
        for (i=2; i<=NbreCont; i++) {
                BasePos = BasePos + Espace + HCont[i-1];
            (CnaV.ie&&CnaV.version<5)?document.all['ContNews'+i].style.top=BasePos:(CnaV.net&&CnaV.version<5)?document.layers[Parent].document.layers['ContNews'+i].y=BasePos:(CnaV.net||CnaV.dom)?document.getElementById('ContNews'+i).style.top=BasePos:0;
    }

        //On lance le script de déplacement
        (NbreCont>1)?ScrollZ(0):0;
}

function Prop(Calque){
        this.top=(CnaV.ie&&CnaV.version<5)?document.all[Calque].offsetTop:(CnaV.net&&CnaV.version<5)?document.layers[Parent].document.layers[Calque].top:(CnaV.net||CnaV.dom)?document.getElementById(Calque).offsetTop:0;
        this.hauteur=(CnaV.ie&&CnaV.version<5)?document.all[Calque].offsetHeight:(CnaV.net&&CnaV.version<5)?document.layers[Parent].document.layers[Calque].clip.height:(CnaV.net||CnaV.dom)?document.getElementById(Calque).offsetHeight:0;
        return this
}

/*
function ScrollZ (IsPause)==> Deplace les calques
Argument : IsPause -> booléen, 0/1. Indique si le script doit gérer un temps de pose
*/

function ScrollZ(IsPause){
        var FreqsTO=(IsPause == 1)?Pause:VitDep;
        var DetIsPause=0;

        for (i=1; i<=NbreCont; i++) {
                var ActZ= new Prop('ContNews'+i);
                (CnaV.ie&&CnaV.version<5)?document.all['ContNews'+i].style.top=ActZ.top-DistDep:(CnaV.net&&CnaV.version<5)?document.layers[Parent].document.layers['ContNews'+i].y=(ActZ.top-DistDep):(CnaV.net||CnaV.dom)?document.getElementById('ContNews'+i).style.top=ActZ.top-DistDep:0;

                //On analyse les sorties eventuelles
                ContTop=(CnaV.ie)?document.all[Parent].offsetTop:(CnaV.net&&CnaV.version<5)?document.layers[Parent].top:(CnaV.net||CnaV.dom)?document.getElementById(Parent).offsetTop:0;
                if ((ActZ.top+ActZ.hauteur) <= ContTop) {
                        var PrevCont=(i==1)?new Prop('ContNews'+NbreCont):new Prop('ContNews'+(i-1));
                        var DerPos=(i==NbreCont)?(PrevCont.top+PrevCont.hauteur+Espace):(PrevCont.top+PrevCont.hauteur+Espace+DistDep);
                        (CnaV.ie&&CnaV.version<5)?document.all['ContNews'+i].style.top=DerPos:(CnaV.net&&CnaV.version<5)?document.layers[Parent].document.layers['ContNews'+i].y=DerPos:(CnaV.net||CnaV.dom)?document.getElementById('ContNews'+i).style.top=DerPos:0;
                }

                //Detection pause
                DetIsPause+=((ActZ.top<=ClipH/2-ActZ.hauteur/2+DistDep/2)&&(ActZ.top>ClipH/2-ActZ.hauteur/2-DistDep/2))?1:0;

        }
        timer=window.setTimeout("ScrollZ("+DetIsPause+")",FreqsTO);
}

