Aller au contenu

Utilisateur:Dr Brains/WatchUsers.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) ;

Firefox (sur GNU/Linux) / Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
///////////////////////////////////////////////////////////////// VARIABLES ////////////////////////////////////////////

//// ### PERSONNALISABLES ### ////

/* Textes */

// En-tête de la liste de suivi
var WatchUsers_Text_Title = "<b>Suivi d\'utilisateurs :</b> "
var WatchUsers_Text_WatchUser = "Ajouter l\'utilisateur « $1 » à la liste de suivi";
var WatchUsers_Text_WatchNewUser = "Ajouter un utilisateur à la liste de suivi";
var WatchUsers_Text_Hide = "[Enrouler]";
var WatchUsers_Text_Show = "[Dérouler]";
var WatchUsers_Text_AutoToggleText = "(+)";
var WatchUsers_Text_AutoToggleTitle = "Afficher/Masquer automatiquement au chargement de la page";

// Formulaire d'ajout d'un utilisateur à la liste de suivi 
var WatchUsers_Text_WatchNewUserCancel = "Annuler";
var WatchUsers_Text_WatchNewUserOK = "Confirmer";
var WatchUsers_Text_UnwatchUserConfirm = "Voulez-vous vraiment retirer l\'utilisateur « $1 » de la liste de suivi ?";

// Lignes de modification
var WatchUsers_Text_UnwatchUser = "Retirer l\'utilisateur « $1 » de la liste de suivi";
var WatchUsers_Text_UserContribs = "Contributions de l\'utilisateur « $1 »";
var WatchUsers_Text_DiffLinkTitle = "Changements dans la page « $1 »";
var WatchUsers_Text_DiffLinkText = "diff";
var WatchUsers_Text_HistLinkTitle = "Historique de la page « $1 »";
var WatchUsers_Text_HistLinkText = "hist";
var WatchUsers_Text_Last = "Dernière";

// Fenêtre de prévisualisation
var WatchUsers_Text_CloseText = "Fermer";
var WatchUsers_Text_CloseTitle = "Fermer la fenêtre de prévisualisation";
var WatchUsers_Text_DirectLinkText = "Lien direct";
var WatchUsers_Text_DirectLinkTitle = "Accéder directement à la page";

/* Variables */

// Format des lignes de modification
var WatchUsers_Text_Format = "$PAGE$ ($DIFF$|$HIST$)&nbsp;|&nbsp;«&nbsp;$COMMENT$&nbsp;»&nbsp;|&nbsp;$TIME$$LAST$";

// Délai de rafraichissement, en secondes
var WatchUsers_Delay = 10;

// Activer la prévisualisation
var WatchUsers_EnablePreview = true;


//// ### NON PERSONNALISABLES ### ////

var WatchUsers_TempAutoToggle = parseInt(WatchUsers_getCookie("SuiviUsersAutoToggle"));
if(WatchUsers_TempAutoToggle!=1){
        WatchUsers_AutoToggle = false;
}else{
        WatchUsers_AutoToggle = true;
}

var WatchUsers_ListUser = WatchUsers_getCookie("SuiviUsers");
if((WatchUsers_ListUser=="false")||(WatchUsers_ListUser=="null")||(!WatchUsers_ListUser)){
        WatchUsers_ListUser = new Array();
}else{
        WatchUsers_ListUser = WatchUsers_ListUser.split(';');
}

if((mw.config.get('wgNamespaceNumber')==2)||(mw.config.get('wgNamespaceNumber')==3)){
        var WatchUsers_UserName = mw.config.get('wgTitle').split('/')[0];
}else if(mw.config.get('wgCanonicalSpecialPageName')=="Contributions"){
        if(document.URL.indexOf(mw.config.get('wgScript'))!=-1){
                var WatchUsers_UserName = decodeURIComponent(document.URL).split('&target=')[1].split('&')[0];
                WatchUsers_UserName = WatchUsers_UserName.split('+').join(' ');
                WatchUsers_UserName = WatchUsers_UserName.split('+').join(' ');
        }else{
                var WatchUsers_UserName = decodeURIComponent(document.URL).replace(/.*Contributions\//, "");
                WatchUsers_UserName = WatchUsers_UserName.split('_').join(' ');
        }
}

///////////////////////////////////////////////////////////////// GESTION COOKIE ////////////////////////////////////////////

// MISE A JOUR DU COOKIE
 
function WatchUsers_setCookie(cookieName, cookieValue) {
        var now = new Date();
        var nextYear = new Date(now.getTime() + 1000 * 60 * 60 * 24 * 365 );
        document.cookie = escape(cookieName) + '=' + escape(cookieValue) + '; EXPIRES=' + nextYear.toGMTString() + "; PATH=/" ; 
}
 
// INTERROGATION DU COOKIE
 
function WatchUsers_getCookie(cookieName) {
        var cookieValue = "false";
        var posName = document.cookie.indexOf(escape(cookieName) + '=' );
        if (posName != -1) {
                        var posValue = posName + (escape(cookieName) + '=' ).length;
                        var endPos = document.cookie.indexOf(';', posValue) ;
                if (endPos != -1) {
                        cookieValue = unescape(document.cookie.substring(posValue, endPos));
                } else {
                        cookieValue = unescape(document.cookie.substring(posValue));
                }
        }
        return decodeURIComponent(cookieValue);
}

// AJOUT D'UN UTILISATEUR A LA LISTE 

function WatchUsers_AddUser(User){
        User = User.replace(/ZAPOSTROPHE/g, "'");
        if(WatchUsers_ListUser.indexOf(User)!=-1) return;
        WatchUsers_ListUser.push(User);
        var CookieValue = WatchUsers_ListUser.join(';')
        WatchUsers_setCookie("SuiviUsers", CookieValue);
        if((mw.config.get('wgAction')!="edit")&&(mw.config.get('wgAction')!="submit"))
        window.location.reload();
}

// RETRAIT D'UN UTILISATEUR DE LA LISTE 

function WatchUsers_RemoveUser(User){
        User = User.replace(/ZAPOSTROPHE/g, "'");
        if(WatchUsers_ListUser.indexOf(User)==-1) return;
        var SurEtCertain = confirm(WatchUsers_Text_UnwatchUserConfirm.split('$1').join(User));
        if(!SurEtCertain) return;
        var CookieValue ='';
        for(var a=0;a<WatchUsers_ListUser.length;a++){
                if(WatchUsers_ListUser[a]!=User) CookieValue += WatchUsers_ListUser[a] + ';';
        }
        CookieValue = CookieValue.replace(/;$/, "");
        WatchUsers_setCookie("SuiviUsers", CookieValue);
        if((mw.config.get('wgAction')!="edit")&&(mw.config.get('wgAction')!="submit"))
        window.location.reload();
}

///////////////////////////////////////////////////////////////// LANCEMENT ////////////////////////////////////////////

addOnloadHook(WatchUsers_CreateControlPanel);
importStylesheet('Utilisateur:Dr Brains/WatchUsers.css');

///////////////////////////////////////////////////////////////// SUIVI D'UTILISATEURS ////////////////////////////////////////////

// CRÉATION CADRE DE SUIVI

function WatchUsers_CreateControlPanel(){
        var DivRepere = document.getElementById("siteNotice");
        if(!DivRepere) return;
        if(typeof(WatchUsers_LangCustom)=="function")
        WatchUsers_LangCustom();
        if(typeof(WatchUsers_UserCustom)=="function")
        WatchUsers_UserCustom();

        var DivWatchUser = document.createElement('div');
        DivWatchUser.id = "DivWatchUser";
        DivRepere.parentNode.insertBefore(DivWatchUser, DivRepere);
        DivRepere.style.display = "none";

        var DivWatchUserContent = '<div id="DivWatchUser_Top">'
           DivWatchUserContent += '<span id="WatchUsers_Title">' + WatchUsers_Text_Title + '</span>';
        if((WatchUsers_UserName)&&(WatchUsers_ListUser.indexOf(WatchUsers_UserName)==-1)){
           DivWatchUserContent += '<a id="AddThisUserLink" '
                                + 'href="javascript:WatchUsers_AddUser(\''+WatchUsers_UserName.replace(/'/g, "ZAPOSTROPHE")+'\');" '
                                + 'title="'+WatchUsers_Text_WatchUser.split('$1').join(WatchUsers_UserName)+'">'
                                + WatchUsers_Text_WatchUser.split('$1').join('<b>'+WatchUsers_UserName+'</b>')+'</a>&nbsp;•&nbsp;';
        }
           DivWatchUserContent += '<a id="AddNewUserLink" '
                                + 'href="javascript:WatchUsers_AddAnotherUser();" '
                                + 'title="'+WatchUsers_Text_WatchNewUser+'">'
                                + WatchUsers_Text_WatchNewUser + '</a>';

           DivWatchUserContent += '<span id="WatchUserToggleSpan">';
           DivWatchUserContent += '<a id="WatchUserToggleLink" '
                                + 'href="javascript:WatchUsers_ToggleControlPanel();" '
                                + 'title="'+WatchUsers_Text_Hide+'">'
                                + WatchUsers_Text_Hide + '</a>';
           DivWatchUserContent += '&nbsp;';
           DivWatchUserContent += '<a id="WatchUserAutoToggleLink" '
                                + 'href="javascript:WatchUsers_AutoToggleControlPanel();" '
                                + 'title="'+WatchUsers_Text_AutoToggleTitle+'">'
                                + WatchUsers_Text_AutoToggleText + '</a>';
           DivWatchUserContent += '</span>';

           DivWatchUserContent += '</div>'
                                + '<div id="DivWatchUser_Content">'
                                + '<ul id="DivWatchUser_List">';
        for(var a=0;a<WatchUsers_ListUser.length;a++){
           DivWatchUserContent += '<li>'
                                + '<a class="WatchUsers_RemoveUserLink" href="'
                                + 'javascript:WatchUsers_RemoveUser(\''+WatchUsers_ListUser[a].replace(/'/g, "ZAPOSTROPHE")+'\');" '
                                + 'title="'+WatchUsers_Text_UnwatchUser.split('$1').join(WatchUsers_ListUser[a])+'" >'
                                + '[-]</a>'
                                + '&nbsp;'
                                + '<a class="ContribLink" href="'
                                + mw.config.get('wgServer') + mw.config.get('wgArticlePath').split('$1').join('Special:Contributions/'+WatchUsers_ListUser[a])+'" '
                                + 'title="'+WatchUsers_Text_UserContribs.split('$1').join(WatchUsers_ListUser[a])+'" >'
                                + WatchUsers_ListUser[a] 
                                + '</a>'
                                + '&nbsp;:&nbsp;'
                                + '<span class="LastModif"></span>'
                                + '</li>';
        }
           DivWatchUserContent += '</ul><div id="DivWatchUser_Preview" style="display:none;"></div></div>';
        DivWatchUser.innerHTML = DivWatchUserContent;
        if(WatchUsers_AutoToggle) WatchUsers_ToggleControlPanel();
        WatchUsers_UpdateControlPanel();

}

// AFFICHAGE/MASQUAGE DU CADRE DE SUIVI

function WatchUsers_ToggleControlPanel(){
        var ToggleLink = document.getElementById("WatchUserToggleLink");
        var DivContent = document.getElementById("DivWatchUser_Content");
        if((!ToggleLink)||(!DivContent)) return;
        if(ToggleLink.innerHTML == WatchUsers_Text_Hide){
                ToggleLink.innerHTML = WatchUsers_Text_Show;
                ToggleLink.title = WatchUsers_Text_Show;
                DivContent.style.display = "none";                
        }else{
                ToggleLink.innerHTML = WatchUsers_Text_Hide;
                ToggleLink.title = WatchUsers_Text_Hide;
                DivContent.style.display = "block";
        }
}

// CHANGEMENT DE L'OPTION D'AFFICHAGE/MASQUAGE DU CADRE DE SUIVI AU CHARGEMENT DE LA PAGE

function WatchUsers_AutoToggleControlPanel(){
        var CookieValue = ( WatchUsers_AutoToggle ? 0 : 1 );
        WatchUsers_setCookie("SuiviUsersAutoToggle", CookieValue);
        if((mw.config.get('wgAction')!="edit")&&(mw.config.get('wgAction')!="submit"))
        window.location.reload();
}

// SUIVI D'UN UTILISATEUR PARTICULIER (formulaire)

function WatchUsers_AddAnotherUser(){
        var TopDiv = document.getElementById("DivWatchUser_Top");
        var OldDiv = document.getElementById("DivAddNewUser");
        if((OldDiv)||(!TopDiv)) return;

        var NewDiv = document.createElement('div');
        NewDiv.id = "DivAddNewUser";
        var DivContent = '<form>'
                       + '<input id="AddUserInput" type="text" '
                       + 'value="'+(((WatchUsers_UserName)&&(WatchUsers_ListUser.indexOf(WatchUsers_UserName)==-1)) ? WatchUsers_UserName : '' )+'" />'
                       + '<input type="button" '
                       + 'onselect="WatchUsers_AddAnotherUserConfirm();"'
                       + 'onclick="WatchUsers_AddAnotherUserConfirm();"'
                       + 'value="'+WatchUsers_Text_WatchNewUserOK+'" />'
                       + '<input type="button" '
                       + 'onselect="WatchUsers_AddAnotherUserCancel();"'
                       + 'onclick="WatchUsers_AddAnotherUserCancel();"'
                       + 'value="'+WatchUsers_Text_WatchNewUserCancel+'" />'
                       + '</form>'
        NewDiv.innerHTML = DivContent;
        TopDiv.appendChild(NewDiv);
}

// SUIVI D'UN UTILISATEUR PARTICULIER (confirmation)

function WatchUsers_AddAnotherUserConfirm(){
        var Input = document.getElementById("AddUserInput");
        if(!Input) return;
        var User = Input.value;
        if(User=='') return;
        WatchUsers_AddUser(User);
}

// SUIVI D'UN UTILISATEUR PARTICULIER (annulation)

function WatchUsers_AddAnotherUserCancel(){
        var OldDiv = document.getElementById("DivAddNewUser");
        if(OldDiv) OldDiv.parentNode.removeChild(OldDiv);
}

// MISE A JOUR SUIVI

function WatchUsers_UpdateControlPanel(){
        var UlUserList = document.getElementById("DivWatchUser_List");
        if(!UlUserList) return;
        var Lis = UlUserList.getElementsByTagName('li');
        if(!Lis[0]) return;
        var UserList = new Array();
        for(var a=0;a<Lis.length;a++){
                var User = Lis[a].getElementsByTagName('a')[1].innerHTML;
                UserList.push(User);
        }
        WatchUsers_UpdateUsersLastContrib(0, UserList, Lis);
}

// REQUÊTE API 

function WatchUsers_UpdateUsersLastContrib(position, UserList, Lis){
        var User = UserList[position];
        var Li = Lis[position];
        if((!User)||(!Li)){
                var UlUserList = document.getElementById("DivWatchUser_List");
                if((UlUserList)&&(WatchUsers_EnablePreview)) WatchUsers_ModifyLinkTargets(UlUserList);
                setTimeout("WatchUsers_UpdateControlPanel();", (1000*WatchUsers_Delay));
                return;
        }
        var AdresseRequete = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?action=query&list=usercontribs&uclimit=1&ucprop=ids|title|timestamp|comment|parsedcomment|size|flags&ucuser='+encodeURIComponent(User);
        var NouvelleRequete = new XMLHttpRequest();
        NouvelleRequete.open("GET", AdresseRequete, true);
        NouvelleRequete.onreadystatechange = function() {
                if(NouvelleRequete.readyState != 4 || NouvelleRequete.status != 200) return;
                //alert('Reçu');
                var ElementTraitement = document.createElement('div');
                ElementTraitement.innerHTML = NouvelleRequete.responseText; 
                var Informations = ElementTraitement.getElementsByTagName('span');
                //alert('Traitement');
                for(var a=0;a<Informations.length;a++){
                        var ContenuInformation = Informations[a].innerHTML;
                        if(ContenuInformation.indexOf('title=')!=-1){
                                var Page = WatchUsers_Clean(ContenuInformation.split('title="')[1].split('"')[0]);
                                var Revid = ContenuInformation.split('revid="')[1].split('"')[0];
                                var Comment = WatchUsers_Clean(ContenuInformation.split('parsedcomment="')[1].split('"')[0]);
                                var Timestamp = ContenuInformation.split('timestamp="')[1].split('"')[0];
                                Timestamp = Timestamp.split('Z').join('');
                                Timestamp = Timestamp.split('T').join('&nbsp;');
                                var Top = (ContenuInformation.indexOf('top=""')!=-1);
                        }
                }
                EncodedPage = encodeURIComponent(Page).replace(/&/g, "%26");
                if(WatchUsers_EnablePreview) EncodedPage = EncodedPage.replace(/'/g, "ZAPOSTROPHE")
                var PageLink = '<a href="'+mw.config.get('wgServer') + mw.config.get('wgArticlePath').split('$1').join(EncodedPage)+'" title="'+Page+'">'+Page+'</a>';
                var HistLink = '<a href="'+mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' +EncodedPage+'&action=history" title="'+WatchUsers_Text_HistLinkTitle.split('$1').join(Page)+'">'+WatchUsers_Text_HistLinkText+'</a>';
                var DiffLink = '<a href="'+mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' +EncodedPage+'&diff=prev&oldid='+Revid+'" title="'+WatchUsers_Text_DiffLinkTitle.split('$1').join(Page)+'">'+WatchUsers_Text_DiffLinkText+'</a>';
                var Last = '';
                if(Top) Last = '&nbsp;<b>('+WatchUsers_Text_Last+')</b>';


// var WatchUsers_Text_Format = "$PAGE$ ($DIFF$|$HIST$)&nbsp;|&nbsp;«&nbsp;$COMMENT$&nbsp;»&nbsp;|&nbsp;$TIME$$LAST$"

                var NewLiContent = WatchUsers_Text_Format;
                NewLiContent = NewLiContent.split('$PAGE$').join(PageLink);
                NewLiContent = NewLiContent.split('$DIFF$').join(DiffLink);
                NewLiContent = NewLiContent.split('$HIST$').join(HistLink);
                NewLiContent = NewLiContent.split('$COMMENT$').join(Comment);
                NewLiContent = NewLiContent.split('$TIME$').join(Timestamp);
                NewLiContent = NewLiContent.split('$LAST$').join(Last);

                var Span = Li.getElementsByTagName('span')[0];
                Span.innerHTML = NewLiContent;
                WatchUsers_UpdateUsersLastContrib((position+1), UserList, Lis)
        }
        NouvelleRequete.send(null);     
}

// NETTOYAGE REQUÊTES API 
 
function WatchUsers_Clean(text){
      while(text.indexOf('&amp;')!=-1){
            text = text.split('&amp;').join("&");
            if(text.indexOf('&amp;')==-1) break;
      }
      while(text.indexOf('&#039;')!=-1){
            text = text.split('&#039;').join("'");
            if(text.indexOf('&#039;')==-1) break;
      }
      while(text.indexOf('&quot;')!=-1){
            text = text.split('&quot;').join('"');
            if(text.indexOf('&quot;')==-1) break;
      }
      while(text.indexOf('&nbsp;')!=-1){
            text = text.split('&nbsp;').join(' ');
            if(text.indexOf('&nbsp;')==-1) break;
      }
      while(text.indexOf('&lt;')!=-1){
            text = text.split('&lt;').join('<');
            if(text.indexOf('&lt;')==-1) break;
      }   
      while(text.indexOf('&gt;')!=-1){
            text = text.split('&gt;').join('>');
            if(text.indexOf('&gt;')==-1) break;
      } 
      return text;
}

///////////////////////////////////////////////////////////////// PRÉVISUALISATION ////////////////////////////////////////////

// MODIFICATION DES LIENS 

function WatchUsers_ModifyLinkTargets(Element){
      if(!Element) return;
      var AllLinks = Element.getElementsByTagName('a');
      for(var a=0;a<AllLinks.length;a++){
            var Href = AllLinks[a].href;
            if(Href.indexOf('javascript:')!=-1) continue;
            AllLinks[a].href = "javascript:WatchUsers_PreviewPage(\'"+decodeURIComponent(Href).replace(/'/g, "ZAPOSTROPHE")+"\');";
            AllLinks[a].title = AllLinks[a].title + " (prévisualisation)";
      }
}

// LANCEMENT DE LA PRÉVISUALISATION

function WatchUsers_PreviewPage(Adresse){
      var DivPreview = document.getElementById("DivWatchUser_Preview");
      if(!DivPreview) return;
      WatchUsers_ClosePreview();
      var DecodedAdresse = decodeURIComponent(Adresse).replace(/ZAPOSTROPHE/g, "'");
      DivPreview.style.display = "block";
      var Links = '<h2 class="Loading">'
                + '<span class="UrlText">' + DecodedAdresse + '</span>&nbsp;:&nbsp;'
                + '<a href="javascript:WatchUsers_ClosePreview();" '
                + 'title="'+WatchUsers_Text_CloseTitle+'" >'
                + WatchUsers_Text_CloseText
                + '</a>'
                + '&nbsp;•&nbsp;'
                + '<a href="'+DecodedAdresse+'" '
                + 'title="'+WatchUsers_Text_DirectLinkTitle+'" >'
                + WatchUsers_Text_DirectLinkText
                + '</a>'
                + '</h2>';
      var TopPreviewContent = document.createElement('div');
      TopPreviewContent.id = "WatchUsers_TopPreviewContent";
      DivPreview.appendChild(TopPreviewContent);
      TopPreviewContent.innerHTML = Links;
      var PreviewContent = document.createElement('div');
      PreviewContent.id = "WatchUsers_PreviewContent";
      DivPreview.appendChild(PreviewContent);
      var BottomPreviewContent = document.createElement('div');
      BottomPreviewContent.id = "WatchUsers_BottomPreviewContent";
      DivPreview.appendChild(BottomPreviewContent);
      BottomPreviewContent.innerHTML = Links;

      var Page = DecodedAdresse.replace(/.*\/wiki\//, "");
      Page = Page.replace(/.*?title=/, "");
      Page = Page.replace(/&action=.*/, "");
      Page = Page.replace(/&diff.*/, "");
      Page = Page.replace(/&oldid.*/, "");
      var NouvelleRequete = new XMLHttpRequest();
      NouvelleRequete.open("GET", Adresse.replace(/ZAPOSTROPHE/g, "'"), true);
      NouvelleRequete.onreadystatechange = function() {
            if(NouvelleRequete.readyState != 4 || NouvelleRequete.status != 200) return;
            var TheDivPreview = document.getElementById("WatchUsers_PreviewContent");
            if(!TheDivPreview) return;
            var TempElement = document.createElement('div');
            TempElement.innerHTML = NouvelleRequete.responseText; 
            var Content = WatchUsers_getElementWithId( TempElement, 'div', 'bodyContent');
            if(!Content) Content = WatchUsers_getElementWithId( TempElement, 'div', 'mw_contentholder');
            if(!Content) Content = WatchUsers_getElementWithId( TempElement, 'div', 'article');
            TheDivPreview.innerHTML = Content.innerHTML;
            WatchUsers_CleanPreviewContent();
            WatchUsers_ModifyLinkTargets(TheDivPreview);
            var TopDiv = document.getElementById("WatchUsers_TopPreviewContent");
            if(TopDiv) $(TopDiv.getElementsByTagName('h2')[0]).removeClass("Loading");
            var BottomDiv = document.getElementById("WatchUsers_BottomPreviewContent");
            if(BottomDiv) $(BottomDiv.getElementsByTagName('h2')[0]).removeClass("Loading");
      }  
      NouvelleRequete.send(null);  
}

// FERMETURE DE LA PRÉVISUALISATION

function WatchUsers_ClosePreview(){
      var DivPreview = document.getElementById("DivWatchUser_Preview");
      if(!DivPreview) return;
      while(DivPreview.firstChild){ DivPreview.removeChild(DivPreview.firstChild);}
      DivPreview.style.display = "none";
}

// NETTOYAGE DE LA PRÉVISUALISATION (sommaire, boîtes déroulantes, palettes, etc...)

var WatchUsers_Enrouler = '[enrouler]';
var WatchUsers_Derouler = '[dérouler]';
var WatchUsers_EnroulerBis = '[-]';
var WatchUsers_DeroulerBis = '[+]';
var WatchUsers_indexSummary = 0;
var WatchUsers_indexNavigationBars = 5000;
var WatchUsers_indexCollapsibleTables = 5000;

function WatchUsers_CleanPreviewContent(){
        var element = document.getElementById("DivWatchUser_Preview");
        if(!element){ alert('Pas OK'); return; }

        var newContentWrapper = element.getElementsByTagName("div");
        var div=0;
        while(div<newContentWrapper.length){
                if (
                ($(newContentWrapper[div]).hasClass("NavFrame"))  // ************************************* Boîtes déroulantes
                ){          
                    WatchUsers_indexCollapsibleTables++;
                    NavHead =  newContentWrapper[div].firstChild;
                    var NavToggle = document.createElement("a");
                    NavToggle.className = 'NavToggle';
                    NavToggle.id = 'NavToggle' + WatchUsers_indexCollapsibleTables;
                    NavToggle.href = 'javascript:WatchUsers_toggleCollapsibleTables(' + WatchUsers_indexCollapsibleTables + ');'; 
                    NavToggle.innerHTML = WatchUsers_Enrouler;
                    newContentWrapper[div].insertBefore( NavToggle, NavHead );  
                    var Content = newContentWrapper[div].getElementsByTagName("div");
                    for( var c=0;c<Content.length; c++ ) {
                        if ($(Content[c]).hasClass("NavContent")) { 
                           Content[c].id = 'NavContent' + WatchUsers_indexCollapsibleTables;
                        }
                    }
                    WatchUsers_toggleCollapsibleTables(WatchUsers_indexCollapsibleTables);
               }
 
                Div_Id = newContentWrapper[div].id;
                if(Div_Id){
                        if(
                        (Div_Id=="toctitle")     // ************************************* Sommaire
                        ){
                                WatchUsers_indexSummary = (WatchUsers_indexSummary+1);
                                newContentWrapper[div].id = 'toctitle_'+WatchUsers_indexSummary;
                                var TitreSommaire = newContentWrapper[div].getElementsByTagName('h2')[0];
                                TitreSommaire.innerHTML = TitreSommaire.innerHTML + ' <a href="javascript:WatchUsers_afficherSommaire(\'toc_'+WatchUsers_indexSummary
                                +'\',\'toctitle_'+WatchUsers_indexSummary
                                +'\', \''+TitreSommaire.innerHTML
                                +'\');" >'+WatchUsers_DeroulerBis+'</a>';
                                var Conteneur = newContentWrapper[div].parentNode;
                                var Sommaire = Conteneur.getElementsByTagName('ul')[0];
                                Sommaire.id = 'toc_'+WatchUsers_indexSummary;
                                Sommaire.style.display="none";
                        }
                        if(
                        (Div_Id=="mw-hidden-catlinks")     // ****************************** Catégories cachées
                        ){
                                newContentWrapper[div].style.display = "block";
                        }
                }
                div++        
        }
 
        var Tables = element.getElementsByTagName( "table" ); 
        for ( var i = 0; i < Tables.length; i++ ) {
              if( $(Tables[i]).hasClass("collapsible") ){     // ************************************* Palettes de navigation
                     NavigationBar = Tables[i];
                     NavigationBar.id = "collapsibleTable" + WatchUsers_indexNavigationBars ;
 
                     var Button     = document.createElement( "span" );
                     var ButtonLink = document.createElement( "a" );
                     var ButtonText = document.createTextNode( WatchUsers_Enrouler );
 
                     Button.style.styleFloat = "right";
                     Button.style.cssFloat = "right";
                     Button.style.fontWeight = "normal";
                     Button.style.textAlign = "right";
                     Button.style.width = "6em";
 
                     ButtonLink.id = "collapseButton" + WatchUsers_indexNavigationBars ;
                     ButtonLink.href = "javascript:WatchUsers_collapseNavigationBar(" + WatchUsers_indexNavigationBars + ");" ;
                     ButtonLink.appendChild( ButtonText ); 
                     Button.appendChild( ButtonLink );
 
                     var Header = NavigationBar.getElementsByTagName( "tr" )[0].getElementsByTagName( "th" )[0];
                     if (Header) {
                            Header.insertBefore( Button, Header.firstChild );
 
                     }
                     if ( $( NavigationBar ).hasClass( "collapsed" ) ) WatchUsers_collapseNavigationBar( WatchUsers_indexNavigationBars );
                     WatchUsers_indexNavigationBars++;
               }
        }
}
 
// ###################################################### FONCTIONS SUBALTERNES A LA GESTION DU CONTENU 
 
// -------------------------------------------- Sommaire
 
function WatchUsers_afficherSommaire(IDSommaire, IdTitre, TitreInitial){
       var Sommaire = document.getElementById(IDSommaire);
       Sommaire.style.display="block";
       var Titre = document.getElementById(IdTitre).getElementsByTagName('h2')[0];
       Titre.innerHTML = TitreInitial + ' <a href="javascript:WatchUsers_masquerSommaire(\''+IDSommaire+'\',\''+IdTitre+'\', \''+TitreInitial+'\');" >'+WatchUsers_EnroulerBis+'</a>';
}
 
function WatchUsers_masquerSommaire(IDSommaire, IdTitre, TitreInitial){
       var Sommaire = document.getElementById(IDSommaire);
       Sommaire.style.display="none";
       var Titre = document.getElementById(IdTitre).getElementsByTagName('h2')[0];
       Titre.innerHTML = TitreInitial + ' <a href="javascript:WatchUsers_afficherSommaire(\''+IDSommaire+'\',\''+IdTitre+'\', \''+TitreInitial+'\');" >'+WatchUsers_DeroulerBis+'</a>';
}
 
// -------------------------------------------- Palettes de navigation
 
function WatchUsers_collapseNavigationBar( tableIndex ) {
  var Button = document.getElementById( "collapseButton" + tableIndex );
  var Table = document.getElementById( "collapsibleTable" + tableIndex );
  if ( !Table || !Button ) return false;
 
  var Rows = Table.getElementsByTagName( "tr" ); 
 
  if ( Button.firstChild.data == WatchUsers_Enrouler ) {
    for ( var i = 1; i < Rows.length; i++ ) {
      Rows[i].style.display = "none";
    }
    Button.firstChild.data = WatchUsers_Derouler;
  } else {
    for ( var i = 1; i < Rows.length; i++ ) {
      Rows[i].style.display = Rows[0].style.display;
    }
    Button.firstChild.data = WatchUsers_Enrouler ;
  }
}
 
// -------------------------------------------- Boîtes déroulantes 
 
function WatchUsers_toggleCollapsibleTables(index) {
    var NavToggle = document.getElementById("NavToggle" + index);
    var NavContent = document.getElementById("NavContent" + index);
 
    if( (!NavToggle) || (!NavContent) ) return; 
 
    var Caption = NavToggle.innerHTML;  
    if (Caption == WatchUsers_Enrouler) {
        NavContent.style.display = 'none';
        NavToggle.innerHTML = WatchUsers_Derouler; 
    } else if (Caption == WatchUsers_Derouler) {
        NavContent.style.display = 'block';
        NavToggle.innerHTML = WatchUsers_Enrouler;
    }
}

function WatchUsers_getElementWithId( elementParentNode , elementTagName , elementId ){
      if(!elementParentNode) elementParentNode = document; 
      var TheElement = false;
      var Elements = elementParentNode.getElementsByTagName(elementTagName);
      var elementcount = 0;
      while(elementcount<Elements.length){
            var Id = Elements[elementcount].id;
            if(Id){
                  if(Id.indexOf(elementId)!=-1){
                        TheElement = Elements[elementcount];
                  }
            }
            elementcount++
      }
      return TheElement;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////
OSZAR »