Aller au contenu

Utilisateur:Dr Brains/TexteDeroulant.js

Une page de Wikipédia, l'encyclopédie libre.
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;

Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
var TexteDeroulant = new Object();
TexteDeroulant.Params = new Object();
TexteDeroulant.Fonctions = new Object();

TexteDeroulant.Params.Timer = new Array();
TexteDeroulant.Params.Step = 3;
TexteDeroulant.Params.Steps = new Array();
TexteDeroulant.Params.Separator = ' — ';

TexteDeroulant.Fonctions.Init = function(){
    var TextesDeroulants =  getElementsByClassName(document, "div", "TexteDeroulant");
    for(var index=0,l=TextesDeroulants.length;index<l;index++){
        var OuterDiv = TextesDeroulants[index];
        var InnerSpan = OuterDiv.firstChild;
        if(!InnerSpan) continue;
        var Vitesse = OuterDiv.className.match(/TexteDeroulantSpeed[0-9]/, "g");
        if(Vitesse !=null) Vitesse = parseInt(Vitesse[0].split("TexteDeroulantSpeed").join(""));
        if((typeof(Vitesse)=="number") && (Vitesse>0)){
            TexteDeroulant.Params.Steps[index] = Vitesse;
        }else{
            TexteDeroulant.Params.Steps[index] = TexteDeroulant.Params.Step;
        }
        OuterDiv.id = "TexteDeroulantO"+index;
        InnerSpan.id = "TexteDeroulantI"+index;
        var OuterDivLength = parseInt(OuterDiv.style.width.split("px").join(""));
        var InnerSpanLength = parseInt(InnerSpan.offsetWidth);
        var Separator = document.createElement('span');
        Separator.className = "TexteDeroulantSeparator";
        Separator.appendChild(document.createTextNode(TexteDeroulant.Params.Separator));
        OuterDiv.appendChild(Separator);
        Separator.id = "TexteDeroulantS"+index;
        var SeparatorLength = parseInt(Separator.offsetWidth);
        var TotalLength = (InnerSpan+SeparatorLength);
        var ClonesNeeded = Math.round(((OuterDivLength)/TotalLength));
        for(var b=0,k=ClonesNeeded;b<k;b++){
            TexteDeroulant.Fonctions.AddAClone(index);
        }
        TexteDeroulant.Fonctions.RunThisOne(index, TotalLength);
    }
}

TexteDeroulant.Fonctions.AddAClone = function(index){
        var CloneInnerSpan = InnerSpan.cloneNode(true);
        var CloneSeparator = Separator.cloneNode(true);
        OuterDiv.appendChild(CloneInnerSpan);
        OuterDiv.appendChild(CloneSeparator);
        CloneInnerSpan.id = "TexteDeroulantI"+index+"_clone";
        CloneSeparator.id = "TexteDeroulantS"+index+"_clone";
}

TexteDeroulant.Fonctions.RunThisOne = function(index, TotalLength){
        if(TexteDeroulant.Params.Timer[index]) clearTimeout(TexteDeroulant.Params.Timer[index]);
        var OuterDiv = document.getElementById("TexteDeroulantO"+index);
        if(!OuterDiv) return;
        var FirstSpan = OuterDiv.firstChild;
        var SpanPosition = parseInt(FirstSpan.style.left.split("px").join(""));
        if(typeof(SpanPosition)!="number") return;
        var NextStep = (0-(SpanPosition - TexteDeroulant.Params.Steps[index]));
        if(NextStep >= TotalLength){
            NextStep = (NextStep - TotalLength);
        }
        FirstSpan.style.left = "-"+NextStep+"px";
        TexteDeroulant.Params.Timer[index] = setTimeout("TexteDeroulant.Fonctions.RunThisOne("+index+","+TotalLength+");", 50);
}


$(TexteDeroulant.Fonctions.Init);