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.
/************************************************************************
 * Running page : [[Utilisateur:Dr Brains/LiveAbuseLog]]                *
 * Documentation : [[Utilisateur:Dr Brains/LiveAbuseLog/Documentation]] *
 *                    {{Projet:JavaScript/Script}}                      *
 ************************************************************************/

// /////////////////////////////////////////////////////// VARIABLES

var LiveAbuseLog_ConfigText = new Array();  // Mises en page
var LiveAbuseLog_ConfigPage = new Array();
LiveAbuseLog_ConfigText.push(0);
LiveAbuseLog_ConfigPage.push('Utilisateur:Dr_Brains/LiveAbuseLog_0');
LiveAbuseLog_ConfigText.push(1);
LiveAbuseLog_ConfigPage.push('Utilisateur:Dr_Brains/LiveAbuseLog_1');
LiveAbuseLog_ConfigText.push(2);
LiveAbuseLog_ConfigPage.push('Utilisateur:Dr_Brains/LiveAbuseLog_2');

var LiveAbuseLog_DelayList = new Array() // Délais de rechargement, en secondes ; le dernier est actif par défaut
LiveAbuseLog_DelayList.push(10);
LiveAbuseLog_DelayList.push(15);
LiveAbuseLog_DelayList.push(20);
LiveAbuseLog_DelayList.push(25);
LiveAbuseLog_DelayList.push(30);
LiveAbuseLog_DelayList.push(45);
LiveAbuseLog_DelayList.push(60);
LiveAbuseLog_DelayList.push(90);
LiveAbuseLog_DelayList.push(120);
LiveAbuseLog_DelayList.push(180);
LiveAbuseLog_DelayList.push(240);

var LiveAbuseLog_LogLimit = new Array() // Nb max d'entrées du journal
LiveAbuseLog_LogLimit.push(10);
LiveAbuseLog_LogLimit.push(20);
LiveAbuseLog_LogLimit.push(50);
LiveAbuseLog_LogLimit.push(100);
LiveAbuseLog_LogLimit.push(200);
LiveAbuseLog_LogLimit.push(300);
LiveAbuseLog_LogLimit.push(400);
LiveAbuseLog_LogLimit.push(499);
if((mw.config.get('wgUserGroups').indexOf("sysop")!=-1)||(mw.config.get('wgUserGroups').indexOf("bot")!=-1)){
LiveAbuseLog_LogLimit.push(1000);
LiveAbuseLog_LogLimit.push(1500);
LiveAbuseLog_LogLimit.push(2000);
LiveAbuseLog_LogLimit.push(3000);
LiveAbuseLog_LogLimit.push(4000);
LiveAbuseLog_LogLimit.push(4999);
}

var LiveAbuseLog_NamespaceNumbers = new Array(); // Espaces de noms disponibles
LiveAbuseLog_NamespaceNumbers.push(0);
LiveAbuseLog_NamespaceNumbers.push(1);
LiveAbuseLog_NamespaceNumbers.push(2);
LiveAbuseLog_NamespaceNumbers.push(3);
LiveAbuseLog_NamespaceNumbers.push(4);
LiveAbuseLog_NamespaceNumbers.push(5);
LiveAbuseLog_NamespaceNumbers.push(6);
LiveAbuseLog_NamespaceNumbers.push(7);
LiveAbuseLog_NamespaceNumbers.push(8);
LiveAbuseLog_NamespaceNumbers.push(9);
LiveAbuseLog_NamespaceNumbers.push(10);
LiveAbuseLog_NamespaceNumbers.push(11);
LiveAbuseLog_NamespaceNumbers.push(12);
LiveAbuseLog_NamespaceNumbers.push(13);
LiveAbuseLog_NamespaceNumbers.push(14);
LiveAbuseLog_NamespaceNumbers.push(15);
LiveAbuseLog_NamespaceNumbers.push(100);
LiveAbuseLog_NamespaceNumbers.push(101);
LiveAbuseLog_NamespaceNumbers.push(102);
LiveAbuseLog_NamespaceNumbers.push(103);
LiveAbuseLog_NamespaceNumbers.push(104);
LiveAbuseLog_NamespaceNumbers.push(105);

// Historique des prévisualisations
var LiveAbuseLog_PreviewHistory_URL = new Array();
var LiveAbuseLog_PreviewHistory_Page = new Array();
var LiveAbuseLog_PreviewHistory_CurrentIndex = 0;
var LiveAbuseLog_PreviewHistory_LastIndex = -1;

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

if((mw.config.get('wgNamespaceNumber')==2)&&(mw.config.get('wgPageName').indexOf('/LiveAbuseLog')!=-1)&&(mw.config.get('wgPageName').indexOf('.')==-1)&&(mw.config.get('wgPageName').indexOf('/LiveAbuseLog/')==-1)&&(mw.config.get('wgAction')!="edit")&&(mw.config.get('wgAction')!="submit")){
      importStylesheet('Utilisateur:Dr Brains/LiveAbuseLog.css');
      addOnloadHook(LiveAbuseLog_Init);
}else{
      addOnloadHook(LiveAbuseLog_Addlink);

}

// /////////////////////////////////////////////////////// TRADUCTION CARACTÈRES HTML

function LiveAbuseLog_Clean(text){
     while(text.indexOf('&')!=-1){
          text = text.split('&').join("&");
          if(text.indexOf('&')==-1) break;
     }
     while(text.indexOf(''')!=-1){
          text = text.split(''').join("'");
          if(text.indexOf(''')==-1) break;
     }
     while(text.indexOf('"')!=-1){
          text = text.split('"').join('"');
          if(text.indexOf('"')==-1) break;
     }
     return text;
}

// /////////////////////////////////////////////////////// MISE A JOUR DU COOKIE
 
function LiveAbuseLog_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 LiveAbuseLog_getCookie(cookieName) {
        var cookieValue = "null";
        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 LIEN BARRE DE GAUCHE

function LiveAbuseLog_Addlink(){
     var InitialConfig = "0";
     var CookieValue = LiveAbuseLog_getCookie("LiveAbuseLogConfig");
     if((CookieValue!='')&&(CookieValue!="null")&&(CookieValue!="undefined")) InitialConfig = CookieValue;

     var RCLi = document.getElementById("n-recentchanges");
     if(RCLi){
          var AbuseLogLi = document.createElement('li');
          AbuseLogLi.id = "n-Liveabuselog";
          AbuseLogLi.innerHTML = '<a href="'+mw.config.get('wgServer')+mw.config.get('wgArticlePath').split('$1').join('User:Dr_Brains/LiveAbuseLog_'+InitialConfig)+'" target="_blank" title="Journal des filtrages en temps réel">LiveAbuseLog</a>';
          RCLi.parentNode.insertBefore(AbuseLogLi, RCLi.nextSibling);
     }
}

// /////////////////////////////////////////////////////// INITIALISATION PAGE

var LiveAbuseLog_TopInfoDiv = '';

function LiveAbuseLog_Init(){
      LiveAbuseLog_TopInfoDiv = document.getElementById("LiveAbuseLog_TopInfoDiv");
      LiveAbuseLog_TopInfoDiv.innerHTML = "Initialisation";
      var Titre = document.getElementsByTagName('h1')[0];
      if(Titre){
            Titre.innerHTML = '<a href="' + mw.config.get('wgServer') + mw.config.get('wgArticlePath').split('$1').join('Main Page') + '" target="_blank" title="Retourner à la page d\'accueil">LiveAbuseLog</a>';
            Titre.style.textAlign = "center";
      }
      var Sub = document.getElementById("contentSub");
      if(Sub) Sub.parentNode.removeChild(Sub);
      var MainDiv = document.getElementById("LiveAbuseLog_MainDiv");
      MainDiv.style.display = "block";

      var PreviewDivContent = document.getElementById("LiveAbuseLog_PreviewDivContent");
      var PreviewDivOptions = document.getElementById("LiveAbuseLog_PreviewDivOptions");
      PreviewDivContent.style.display = "none";
      PreviewDivOptions.style.display = "none";
      //if(mw.config.get('wgUserName')!="Dr Brains") 
      LiveAbuseLog_cleanPreviewContent();       
      LiveAbuseLog_GetFilters();
}

// /////////////////////////////////////////////////////// RECHERCHE DES FILTRES EXISTANTS

var LiveAbuseLog_FilterList = new Array();
var LiveAbuseLog_FilterIdList = new Array();

function LiveAbuseLog_GetFilters(){
      LiveAbuseLog_TopInfoDiv.innerHTML = "Recherche des filtres existants : requête en cours";
      var AdresseRequete = mw.config.get('wgServer') + '/w/api.php?action=query&list=abusefilters&abfshow=enabled&abflimit=499';
      var NouvelleRequete = new XMLHttpRequest();
      NouvelleRequete.open("GET", AdresseRequete, true);
      NouvelleRequete.send(null);
      NouvelleRequete.onreadystatechange = function() {
            if(NouvelleRequete.readyState == 4 && NouvelleRequete.status == 200) {
                  //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('description=')!=-1){
                         var Id = parseInt(ContenuInformation.split('id="')[1].split('"')[0]);
                         var Description = ContenuInformation.split('description="')[1].split('"')[0];
                         LiveAbuseLog_FilterList[Id] = LiveAbuseLog_Clean(Description);
                         LiveAbuseLog_FilterIdList[Id] = Id;
                        }
                  }                  
                  LiveAbuseLog_TopInfoDiv.innerHTML = "Recherche des filtres existants : requête exécutée";
                  LiveAbuseLog_createOptions();    
                  LiveAbuseLog_GetLogs('FORCE');  
            }
      }
}

// /////////////////////////////////////////////////////// CRÉATION DE LA BARRE D'OPTIONS

function LiveAbuseLog_createOptions(){
      LiveAbuseLog_TopInfoDiv.innerHTML = "Création des options";
      var OptionsDiv = document.getElementById("LiveAbuseLog_OptionsDiv");

      var MenuOptions='<table width="100%"><tr><td width="100px" valign="middle"><big><b>Options</b></big></td><td valign="middle">'


// --------------------------------------------------------------------------------- Configuration

      LiveAbuseLog_TopInfoDiv.innerHTML = "Configuration";

      MenuOptions  += '<label for="Option_MiseEnPage">Mise en page : </label>'
                     +'<select id="Option_MiseEnPage" name="Option_MiseEnPage" onchange="LiveAbuseLog_GetPageConfig()" >'
      for( var c=0;c<LiveAbuseLog_ConfigPage.length;c++){
            var SelConfig = '';
            if(mw.config.get('wgPageName') == LiveAbuseLog_ConfigPage[c]) var SelConfig = ' selected="selected" ';
            MenuOptions += '<option '+SelConfig+' id="'+LiveAbuseLog_ConfigPage[c]+'" name="'+LiveAbuseLog_ConfigPage[c]+'" value="'+LiveAbuseLog_ConfigText[c]+'">'+LiveAbuseLog_ConfigText[c]+'</option>';
      }
      MenuOptions  += '</select>&nbsp;&nbsp;';

// --------------------------------------------------------------------------------- Délai de rechargement

      LiveAbuseLog_TopInfoDiv.innerHTML = "Création des options : Délai";


     var InitialDelay = (LiveAbuseLog_DelayList.length-1);
     var CookieValueDelay = LiveAbuseLog_getCookie("LiveAbuseLogDelay");
     if((CookieValueDelay!='')&&(CookieValueDelay!="null")&&(CookieValueDelay!="undefined")) InitialDelay = parseInt(CookieValueDelay);

      MenuOptions  += '<label for="Option_Delay">Délai de rechargement : </label>'
                     +'<select id="Option_Delay" name="Option_Delay" onchange="LiveAbuseLog_GetLogs()" >'
      for(var d=0;d<LiveAbuseLog_DelayList.length;d++){
                 var SelDelay = '';
                 if(d==InitialDelay) var SelDelay = ' selected="selected" ';
                 MenuOptions += '<option '+SelDelay+' id="Delay'+LiveAbuseLog_DelayList[d]+'" name="Delay'+LiveAbuseLog_DelayList[d]+'" value="'+LiveAbuseLog_DelayList[d]+' secondes">'+LiveAbuseLog_DelayList[d]+' secondes</option>';
      }
      MenuOptions  += '</select>&nbsp;&nbsp;';

// --------------------------------------------------------------------------------- Limite d'entrées

      LiveAbuseLog_TopInfoDiv.innerHTML = "Création des options : Limite";

     var InitialLimit = 499;
     var CookieValueLimit = LiveAbuseLog_getCookie("LiveAbuseLogLimit");
     if((CookieValueLimit!='')&&(CookieValueLimit!="null")&&(CookieValueLimit!="undefined")) InitialLimit = parseInt(CookieValueLimit);

      MenuOptions  += '<label for="Option_Limit">Limite de la requête : </label>'
                     +'<select id="Option_Limit" name="Option_Limit" onchange="LiveAbuseLog_GetLogs()" >'
      for(var l=0;l<LiveAbuseLog_LogLimit.length;l++){
                 var SelLimit = '';
                 if(LiveAbuseLog_LogLimit[l]==InitialLimit) SelLimit = ' selected="selected" ';
                 MenuOptions += '<option '+SelLimit+' id="Limit'+LiveAbuseLog_LogLimit[l]+'" name="Limit'+LiveAbuseLog_LogLimit[l]+'" value="'+LiveAbuseLog_LogLimit[l]+' entrées">'+LiveAbuseLog_LogLimit[l]+' entrées</option>';
      }
      MenuOptions  += '</select>&nbsp;&nbsp;';


// --------------------------------------------------------------------------------- Pause

      LiveAbuseLog_TopInfoDiv.innerHTML = "Création des options : Pause";

      MenuOptions  += '<label for="Option_Pause">Pause : </label>'
                     +'<input type="checkbox" name="Option_Pause" id="Option_Pause" />&nbsp;&nbsp;';


// --------------------------------------------------------------------------------- Bouton rechargement

      LiveAbuseLog_TopInfoDiv.innerHTML = "Création des options : Rechargement";

      MenuOptions  += '</td></tr><tr><td valign="middle" >';
      MenuOptions  += '<input type = "button" value="Recharger" onclick="LiveAbuseLog_GetLogs(\'FORCE\')" onselect="LiveAbuseLog_GetLogs(\'FORCE\')" />';
      MenuOptions  += '</td><td valign="middle">';

// --------------------------------------------------------------------------------- Espaces de noms

      LiveAbuseLog_TopInfoDiv.innerHTML = "Création des options : Espaces de noms";

      MenuOptions  += '<label for="Option_Namespace">Espaces de noms : </label>'
                     +'<select id="Option_Namespace" name="Option_Namespace" onchange="LiveAbuseLog_GetLogs()" >'
                     +'<option selected="selected" id="NSAll" name="All" value="Tous">Tous</option>';
      for(var n=0;n<LiveAbuseLog_NamespaceNumbers.length;n++){
           var NSNb = LiveAbuseLog_NamespaceNumbers[n];
           var NSName = mw.config.get('wgFormattedNamespaces')[parseInt(LiveAbuseLog_NamespaceNumbers[n])];
           if(NSName=='') NSName = "Principal";
           MenuOptions += '<option id="NS'+NSNb+'" name="NS'+NSNb+'" value="'+NSName+'">'+NSName+'</option>';
      }
      MenuOptions  += '</select>&nbsp;&nbsp;';

// ---------------------------------------------------------------------------------Filtres

      LiveAbuseLog_TopInfoDiv.innerHTML = "Création des options : Filtres";

      MenuOptions  += '<label for="Option_Filtre">Filtres : </label>'
                     +'<select id="Option_Filtre" name="Option_Filtre" onchange="LiveAbuseLog_GetLogs()" >'
                     +'<option selected="selected" id="FiltreAll" name="All" value="Tous">Tous</option>';
      for(var f=1;f<LiveAbuseLog_FilterList.length;f++){
           var FilterNb = LiveAbuseLog_FilterIdList[f];
           var FilterName = LiveAbuseLog_FilterList[parseInt(LiveAbuseLog_FilterIdList[f])];
           if((FilterName)&&(FilterNb)){
                 MenuOptions += '<option id="Filtre'+FilterNb+'" name="Filtre'+FilterNb+'" value="'+FilterNb+' : '+FilterName+'">'+FilterNb+' : '+FilterName+'</option>';
           }
      }
      MenuOptions  += '</select>&nbsp;&nbsp;';

// --------------------------------------------------------------------------------- 
      MenuOptions  += '</tr></table>'
      OptionsDiv.innerHTML = MenuOptions;
}

function LiveAbuseLog_GetPageConfig(){
       var SelectConfig = document.getElementById('Option_MiseEnPage');
       var OptionsConfig = SelectConfig.getElementsByTagName('option');
       for(var o=0;o<OptionsConfig.length;o++){
              if(OptionsConfig[o].selected){
                  LiveAbuseLog_setCookie("LiveAbuseLogConfig", OptionsConfig[o].value);
                  document.location = mw.config.get('wgServer') + mw.config.get('wgArticlePath').split('$1').join(OptionsConfig[o].id);
              }
       }
}

// /////////////////////////////////////////////////////// RECHERCHE DU JOURNAL DES FILTRAGES

var LiveAbuseLog_Timout;
var LiveAbuseLog_Timout_Running = 0;

var LiveAbuseLog_GetLogs_Running = 0;

function LiveAbuseLog_GetLogs(ForceRefresh){
     var Table = document.getElementById("LiveAbuseLog_Table");
     var TableIntro = document.getElementById("LiveAbuseLog_TableIntro");
     var TableInfoDiv = document.getElementById("LiveAbuseLog_TableInfoDiv");
     var OptionPause = document.getElementById("Option_Pause");
     var OptionNamespace = document.getElementById("Option_Namespace");
     var OptionFiltre = document.getElementById("Option_Filtre");
     var OptionDelay = document.getElementById("Option_Delay");
     var OptionLimit = document.getElementById("Option_Limit");
     if((!Table)||(!TableIntro)||(!OptionPause)||(!OptionNamespace)||(!OptionFiltre)||(!OptionDelay)||(!OptionLimit)||(!TableInfoDiv)){ alert('Manque un élément'); return; }
     if(LiveAbuseLog_GetLogs_Running == 1) return;

     clearTimeout(LiveAbuseLog_Timout);
     if((OptionPause.checked)&&(!ForceRefresh)){
          LiveAbuseLog_Timout = setTimeout('LiveAbuseLog_GetLogs()', 1000*5);
          return;
     }

     var DelayOpt = OptionDelay.getElementsByTagName('option');
     for(var a=0;a<DelayOpt.length;a++){
          var ThisDelay = parseInt(DelayOpt[a].id.split('Delay').join(''));
          if(DelayOpt[a].selected){
               var LiveAbuseLog_VAR_TimeOut = ThisDelay;
               LiveAbuseLog_setCookie("LiveAbuseLogDelay", ThisDelay);
          }
     }

     LiveAbuseLog_TopInfoDiv.innerHTML = "Mise à jour du journal : requête en cours";
     LiveAbuseLog_GetLogs_Running = 1;
     var FiltreOpt = OptionFiltre.getElementsByTagName('option');
     for(var a=0;a<FiltreOpt.length;a++){
          if((FiltreOpt[a].selected)&&(FiltreOpt[a].id!="FiltreAll")){
               var FiltreNb = '&aflfilter=' + FiltreOpt[a].id.split('Filtre').join('');
          }else if((FiltreOpt[a].selected)&&(FiltreOpt[a].id=="FiltreAll")){
               var FiltreNb = '';
          }
     }

     var LimitOpt = OptionLimit.getElementsByTagName('option');
     for(var a=0;a<LimitOpt.length;a++){
          var ThisLimit = LimitOpt[a].id.split('Limit').join('')
          if(LimitOpt[a].selected){
               var LimitNb = ThisLimit;
               LiveAbuseLog_setCookie("LiveAbuseLogLimit", ThisLimit);
          }
     }

// Requête

     //alert('Envoyé');
     var AdresseRequete = mw.config.get('wgServer') + '/w/api.php?action=query&list=abuselog&afllimit=' + LimitNb + FiltreNb;
     var NouvelleRequete = new XMLHttpRequest();
     NouvelleRequete.open("GET", AdresseRequete, true);
     NouvelleRequete.send(null);
     NouvelleRequete.onreadystatechange = function() {
          if(NouvelleRequete.readyState == 4 && NouvelleRequete.status == 200) {
               LiveAbuseLog_TopInfoDiv.innerHTML = "Mise à jour du journal : requête exécutée";
               var ElementTraitement = document.createElement('div');
               ElementTraitement.innerHTML = NouvelleRequete.responseText; 
               //document.body.insertBefore(ElementTraitement,document.body.firstChild);
               var NewEntries = new Array();
               var NewEntriesCount = -1;
               var Informations = ElementTraitement.getElementsByTagName('span');
               //alert('Traitement');
               var NamespaceNb = "All";
               var NamespaceOpt = OptionNamespace.getElementsByTagName('option');
               for(var a=1;a<NamespaceOpt.length;a++){
                    if(NamespaceOpt[a].selected) NamespaceNb = parseInt(NamespaceOpt[a].id.split('NS').join(''));
               }
               for(var a=0;a<Informations.length;a++){
                    var ContenuInformation = Informations[a].innerHTML;
                    if(ContenuInformation.indexOf('user=')!=-1){
                         var ThisPageNS = parseInt(ContenuInformation.split('ns="')[1].split('"')[0]);
                         //alert('NamespaceNb : ' + NamespaceNb + ' - ThisPageNS : ' + ThisPageNS);
                         if((NamespaceNb==ThisPageNS)||(NamespaceNb=="All")){
                              NewEntriesCount++
                              NewEntries[NewEntriesCount] = new Array();
                              NewEntries[NewEntriesCount][0] = ContenuInformation.split('id="')[1].split('"')[0];
                              NewEntries[NewEntriesCount][1] = ContenuInformation.split('filter_id="')[1].split('"')[0];
                              NewEntries[NewEntriesCount][2] = ContenuInformation.split('user="')[1].split('"')[0];
                              NewEntries[NewEntriesCount][3] = ContenuInformation.split('ns="')[1].split('"')[0];
                              NewEntries[NewEntriesCount][4] = ContenuInformation.split('title="')[1].split('"')[0];
                              NewEntries[NewEntriesCount][5] = ContenuInformation.split('result="')[1].split('"')[0];
                              NewEntries[NewEntriesCount][6] = ContenuInformation.split('timestamp="')[1].split('"')[0];
                         }
                    }
               } 
               //alert('Traité');
               while(TableIntro.nextSibling.nextSibling){ TableIntro.parentNode.removeChild(TableIntro.nextSibling);}
               for(var b=(NewEntries.length-1);b>-1;b--){
                    var EditId = NewEntries[b][0];
                    var FilterID = NewEntries[b][1];
                    var UserName = LiveAbuseLog_Clean(NewEntries[b][2]);
                    var EncodedUserName = encodeURIComponent(UserName).replace(/'/g,"ZAPOSTROPHE").replace(/&/g,"%26");
                    var NamespaceNb = NewEntries[b][3];
                    var PageName = LiveAbuseLog_Clean(NewEntries[b][4]);
                    var EncodedPageName = encodeURIComponent(PageName).replace(/'/g,"ZAPOSTROPHE").replace(/&/g,"%26");
                    var Result = NewEntries[b][5];
                    var TimeStamp = NewEntries[b][6].split('Z').join('').split('T').join(' ');

                     var TD_EditID = document.createElement('td');
                     TD_EditID.innerHTML = '<a href="javascript:LiveAbuseLog_Preview(\'' + mw.config.get('wgServer') + mw.config.get('wgScript') +'?title=Special:AbuseLog&details=' + EditId + '\');" title="Voir le détail de cette modification" >Détails</a>&nbsp;|&nbsp;<a href="javascript:LiveAbuseLog_Preview(\''+mw.config.get('wgServer')+'/wiki/Special:AbuseFilter/examine/log/' + EditId + '\',\'\', true);" title="Examiner cette modification" >Examiner</a>';
                     var TD_FilterID = document.createElement('td');
                     TD_FilterID.innerHTML = '<a class="FilterLink" href="javascript:LiveAbuseLog_Preview(\''+mw.config.get('wgServer')+'/wiki/Special:AbuseFilter/' + FilterID + '\',\'\', true);" title="Voir le filtre ' + FilterID + '" >Filtre ' + FilterID + '</a>' + '&nbsp;:&nbsp;' + LiveAbuseLog_FilterList[parseInt(FilterID)] + '&nbsp;:&nbsp;' + Result;
                     var TD_UserName = document.createElement('td');
                     TD_UserName.innerHTML = '<a class="UserLink" id="UserLink_'+b+'" href="javascript:LiveAbuseLog_Preview(\''+mw.config.get('wgServer')+mw.config.get('wgScript')+'?title=User:' + EncodedUserName + '&action=edit&redlink=1\',\'User:'+EncodedUserName+'\', true);" title="Voir la page de cet utilisateur" >' + UserName + '</a>&nbsp;(<a href="javascript:LiveAbuseLog_Preview(\''+mw.config.get('wgServer')+mw.config.get('wgScript')+'?title=User talk:' + EncodedUserName + '&action=edit&redlink=1\',\'User talk'+EncodedUserName+'\', true);" title="Discuter avec cet utilisateur" >D</a>&nbsp;|&nbsp;<a href="javascript:LiveAbuseLog_Preview(\''+mw.config.get('wgServer')+'/wiki/Special:Contributions/' + EncodedUserName + '\',\'' + EncodedUserName + '\', true);" title="Contributions de cet utilisateur" >C</a>)';
                     var TD_PageName = document.createElement('td');
                     TD_PageName.innerHTML = '<a class="PageLink" id="PageLink_'+b+'" href="javascript:LiveAbuseLog_Preview(\''+mw.config.get('wgServer')+mw.config.get('wgScript')+'?title=' + EncodedPageName + '&action=edit&redlink=1\',\''+EncodedPageName+'\', true);" title="Voir la page" >' + PageName + '</a>&nbsp;(<a href="javascript:LiveAbuseLog_Preview(\'' + mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + EncodedPageName + '&action=history\',\''+EncodedPageName+'\', true);" title="Voir l\'historique de cette page page" >H</a>&nbsp;|&nbsp;<a href="javascript:LiveAbuseLog_Preview(\'' + mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + 'Special:Log&page=' + EncodedPageName + '\',\''+EncodedPageName+'\', true);" title="Voir le journal de cette page" >J</a>)';
                     var TD_TimeStamp = document.createElement('td');
                     TD_TimeStamp.innerHTML = TimeStamp;

                     var NewLine = document.createElement('tr');
                     NewLine.appendChild(TD_TimeStamp);
                     NewLine.appendChild(TD_UserName);
                     NewLine.appendChild(TD_PageName);
                     NewLine.appendChild(TD_FilterID);
                     NewLine.appendChild(TD_EditID);
                     
                     TableIntro.parentNode.insertBefore(NewLine,TableIntro.nextSibling);
               }
               var FirstLineTS = NewEntries[0][6];
               var FirstLineYear = FirstLineTS.split('-')[0];
               var FirstLineMonth = FirstLineTS.split('-')[1].split('-')[0];
               var FirstLineDay = FirstLineTS.split('-')[2].split('T')[0];
               var FirstLineTime = FirstLineTS.split('T')[1].split('Z')[0];
               var LastLineTS = NewEntries[(NewEntries.length-1)][6];
               var LastLineYear = LastLineTS.split('-')[0];
               var LastLineMonth = LastLineTS.split('-')[1].split('-')[0];
               var LastLineDay = LastLineTS.split('-')[2].split('T')[0];
               var LastLineTime = LastLineTS.split('T')[1].split('Z')[0];
               TableInfoDiv.innerHTML = 'Analyse du '
                                       +LastLineDay+'-'+LastLineMonth+'-'+LastLineYear+' à '+LastLineTime
                                       +' au '
                                       +FirstLineDay+'-'+FirstLineMonth+'-'+FirstLineYear+' à '+FirstLineTime;
               clearTimeout(LiveAbuseLog_Timout);
               LiveAbuseLog_Timout = setTimeout('LiveAbuseLog_GetLogs()', 1000*LiveAbuseLog_VAR_TimeOut);
               LiveAbuseLog_TopInfoDiv.innerHTML = "";
               LiveAbuseLog_Update_TopUsers();
               LiveAbuseLog_Update_TopPages();
               LiveAbuseLog_Update_TopFilters();
               LiveAbuseLog_GetBlockedUsers();
               LiveAbuseLog_GetProtectedPages();
               //LiveAbuseLog_GetLogBlockedUsers(0);
               //LiveAbuseLog_GetLogProtectedPages(0)
               LiveAbuseLog_GetLogs_Running = 0;
               //alert('Fini');
          }
     }
}

// /////////////////////////////////////////////////////// CLASSEMENT UTILISATEURS FILTRÉS

function LiveAbuseLog_Update_TopUsers(){
     LiveAbuseLog_TopInfoDiv.innerHTML += " Classement utilisateurs ";
     var TopUsersDiv = document.getElementById("LiveAbuseLog_TopUsersDiv");
     var Table = document.getElementById("LiveAbuseLog_Table");
     if((!Table)||(!TopUsersDiv)) return;

     var Links = Table.getElementsByTagName('a');
     var UserLinks = new Array();
     for(var a=0;a<Links.length;a++){
          if($(Links[a]).hasClass("UserLink")){
               var UserName = Links[a].innerHTML;
               UserLinks.push(UserName);
          }
     }
     UserLinks = UserLinks.sort();
     var count = 1;
     var SortedUsers = new Array();
     for(var b=0;b<UserLinks.length;b++){
          ThisUser = encodeURIComponent(UserLinks[b]).replace(/'/g,"ZAPOSTROPHE").replace(/&/g,"%26");
          if(UserLinks[(b+1)]){
               if(UserLinks[b] == UserLinks[(b+1)]){
                    count++
               }else{
                    if(count<10){var Zerocount = '0';}else{ var Zerocount = ''; }
                    if(count<100) Zerocount += '0';
                    SortedUsers.push('<li><b>'+Zerocount+count+'</b> <a href="javascript:LiveAbuseLog_Preview(\''+mw.config.get('wgServer')+'/wiki/Special:Contributions/' + ThisUser + '\',\'User:'+ThisUser+'\', true);" title="Contributions de cet utilisateur" >'+UserLinks[b]+'</a> (<a href="javascript:LiveAbuseLog_Preview(\''+mw.config.get('wgServer')+mw.config.get('wgArticlePath').split('$1').join('Special:AbuseLog?title=Special:AbuseLog&wpSearchUser='+ThisUser)+'\',\'User:'+ThisUser+'\', true);" title="Journal des filtrages pour cet utilisateur" >J</a>)</li>');
                    count=1;
               }
          }else{
               if(count<10){var Zerocount = '0';}else{ var Zerocount = ''; }
               if(count<100) Zerocount += '0';
               SortedUsers.push('<li><b>'+Zerocount+count+'</b> <a href="javascript:LiveAbuseLog_Preview(\''+mw.config.get('wgServer')+'/wiki/Special:Contributions/' + ThisUser + '\',\'User:'+ThisUser+'\', true);" title="Contributions de cet utilisateur" >'+UserLinks[b]+'</a> (<a href="javascript:LiveAbuseLog_Preview(\''+mw.config.get('wgServer')+mw.config.get('wgArticlePath').split('$1').join('Special:AbuseLog?title=Special:AbuseLog&wpSearchUser='+ThisUser)+'\',\'User:'+ThisUser+'\', true);" title="Journal des filtrages pour cet utilisateur" >J</a>)</li>');
          }
     }
     SortedUsers = SortedUsers.sort();
     var Text = '';
     for(var c=(SortedUsers.length-1);0<=c;c--){
          Text += SortedUsers[c];
     }
     NewUl = document.createElement('ul');
     NewUl.innerHTML = Text;
     //alert(Text);
     while(TopUsersDiv.firstChild){TopUsersDiv.removeChild(TopUsersDiv.firstChild);}
     TopUsersDiv.appendChild(NewUl);
}

// /////////////////////////////////////////////////////// RECHERCHE UTILISATEURS BLOQUÉS (CLASSEMENT)

function LiveAbuseLog_GetBlockedUsers(element){
     LiveAbuseLog_TopInfoDiv.innerHTML = LiveAbuseLog_TopInfoDiv.innerHTML.split("Classement utilisateurs").join("Utilisateurs bloqués ?");
     if(!element){
          var TopUsersDiv = document.getElementById("LiveAbuseLog_TopUsersDiv");
          if(!TopUsersDiv) return;
          element = TopUsersDiv.getElementsByTagName('li')[0];
     }
     element.className = "LiveAbuseLog_Running";
     var UserName = element.getElementsByTagName('a')[0].innerHTML.replace(/&amp;/g, "%26").replace(/&/g, "%26");
     var AdresseRequete = mw.config.get('wgServer') + '/w/api.php?action=query&list=blocks&bkusers=' + UserName;

     var NouvelleRequete = new XMLHttpRequest();
     NouvelleRequete.open("GET", AdresseRequete, true);
     NouvelleRequete.send(null);
     NouvelleRequete.onreadystatechange = function() {
          if(NouvelleRequete.readyState == 4 && NouvelleRequete.status == 200) {
               var ElementTraitement = document.createElement('div');
               ElementTraitement.innerHTML = NouvelleRequete.responseText; 
               var Informations = ElementTraitement.getElementsByTagName('span');
               var UserBlocked = false;
               for(a=0;a<Informations.length;a++){
                    var ContenuInformation = Informations[a].innerHTML;
                    if(ContenuInformation.indexOf('user=')!=-1){
                         UserBlocked = true;
                    }
               }
               if(UserBlocked==true) element.innerHTML = '<s>' + element.innerHTML + '</s> Utilisateur bloqué';
               var nextElement = element.nextSibling;
               if(nextElement){
                    LiveAbuseLog_GetBlockedUsers(nextElement);
               }else{
                    LiveAbuseLog_TopInfoDiv.innerHTML = LiveAbuseLog_TopInfoDiv.innerHTML.split("Utilisateurs bloqués ?").join("");
                    if(LiveAbuseLog_TopInfoDiv.innerHTML.indexOf('?')==-1) LiveAbuseLog_TopInfoDiv.innerHTML = "Rechargement terminé";
               }
               element.className = "LiveAbuseLog_Checked";
          }
     }
}

/* ***********************************************************************************************
// /////////////////////////////////////////////////////// RECHERCHE UTILISATEURS BLOQUÉS (JOURNAL)

function LiveAbuseLog_GetLogBlockedUsers(UserPosition){
     if(!UserPosition) UserPosition = 0;
     var element = document.getElementById("UserLink_"+UserPosition);
     if(!element) return;

     var UserTDNode = element.parentNode

     UserTDNode.className = "LiveAbuseLog_Running";
     var UserName = element.innerHTML.replace(/&amp;/g, "%26").replace(/&/g, "%26");
     var AdresseRequete = mw.config.get('wgServer') + '/w/api.php?action=query&list=blocks&bkusers=' + UserName;
     //alert(AdresseRequete);
     var NouvelleRequete = new XMLHttpRequest();
     NouvelleRequete.open("GET", AdresseRequete, true);
     NouvelleRequete.send(null);
     NouvelleRequete.onreadystatechange = function() {
          if(NouvelleRequete.readyState == 4 && NouvelleRequete.status == 200) {
               //alert('Reçu');
               var ElementTraitement = document.createElement('div');
               ElementTraitement.innerHTML = NouvelleRequete.responseText; 
               var Informations = ElementTraitement.getElementsByTagName('span');
               var UserBlocked = false;
               for(a=0;a<Informations.length;a++){
                    var ContenuInformation = Informations[a].innerHTML;
                    if(ContenuInformation.indexOf('user=')!=-1){
                         UserBlocked = true;
                    }
               }
               if(UserBlocked==true) UserTDNode.innerHTML = '<s>' + UserTDNode.innerHTML + '</s> Utilisateur bloqué';
               UserTDNode.className = "LiveAbuseLog_Checked";
               LiveAbuseLog_GetLogBlockedUsers((UserPosition+1));
          }
     }
}
*********************************************************************************** */

// /////////////////////////////////////////////////////// CLASSEMENT PAGES FILTRÉES

function LiveAbuseLog_Update_TopPages(){
     LiveAbuseLog_TopInfoDiv.innerHTML += " Classement pages ";
     var TopPagesDiv = document.getElementById("LiveAbuseLog_TopPagesDiv");
     var Table = document.getElementById("LiveAbuseLog_Table");
     if((!Table)||(!TopPagesDiv)) return;

     var Links = Table.getElementsByTagName('a');
     var PageLinks = new Array();
     for(var a=0;a<Links.length;a++){
          if($(Links[a]).hasClass("PageLink")){
               var UserName = Links[a].innerHTML;
               PageLinks.push(UserName);
          }
     }
     PageLinks = PageLinks.sort();
     var count = 1;
     var SortedPages = new Array();
     for(var b=0;b<PageLinks.length;b++){
          var ThisPage = encodeURIComponent(PageLinks[b]).replace(/'/g,"ZAPOSTROPHE").replace(/&/g,"%26");
          if(PageLinks[(b+1)]){
               if(PageLinks[b] == PageLinks[(b+1)]){
                    count++
               }else{
                    if(count<10){var Zerocount = '0';}else{ var Zerocount = ''; }
                    if(count<100) Zerocount += '0';
                    SortedPages.push('<li><b>'+Zerocount+count+'</b> <a href="javascript:LiveAbuseLog_Preview(\'' + mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + ThisPage + '&action=history\',\''+ThisPage+'\', true);" title="Voir l\'historique de cette page" >'+PageLinks[b]+'</a> (<a href="javascript:LiveAbuseLog_Preview(\''+mw.config.get('wgServer')+mw.config.get('wgArticlePath').split('$1').join('Special:AbuseLog?title=Special:AbuseLog&wpSearchTitle='+ThisPage)+'\',\'\', true);" title="Journal des filtrages pour cette page" >J</a>)</li>');
                    count=1;
               }
          }else{
               if(count<10){var Zerocount = '0';}else{ var Zerocount = ''; }
               if(count<100) Zerocount += '0';
               SortedPages.push('<li><b>'+Zerocount+count+'</b> <a href="javascript:LiveAbuseLog_Preview(\'' + mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + ThisPage + '&action=history\',\''+ThisPage+'\', true);" title="Voir l\'historique de cette page page" >'+PageLinks[b]+'</a> (<a href="javascript:LiveAbuseLog_Preview(\''+mw.config.get('wgServer')+mw.config.get('wgArticlePath').split('$1').join('Special:AbuseLog?title=Special:AbuseLog&wpSearchTitle='+ThisPage)+'\',\'\', true);" title="Journal des filtrages pour cette page" >J</a>)</li>');
          }
     }
     SortedPages = SortedPages.sort();
     var Text = '';
     for(var c=(SortedPages.length-1);0<=c;c--){
          Text += SortedPages[c];
     }
     NewUl = document.createElement('ul');
     NewUl.innerHTML = Text;
     //alert(Text);
     while(TopPagesDiv.firstChild){TopPagesDiv.removeChild(TopPagesDiv.firstChild);}
     TopPagesDiv.appendChild(NewUl);
}

// /////////////////////////////////////////////////////// RECHERCHE DES PAGES PROTÉGÉES (CLASSEMENT)

function LiveAbuseLog_GetProtectedPages(element){
     LiveAbuseLog_TopInfoDiv.innerHTML = LiveAbuseLog_TopInfoDiv.innerHTML.split("Classement pages").join("Pages protégées ou supprimées ?");
     if(!element){
          var TopPagesDiv = document.getElementById("LiveAbuseLog_TopPagesDiv");
          if(!TopPagesDiv) return;
          element = TopPagesDiv.getElementsByTagName('li')[0];
     }
     element.className = "LiveAbuseLog_Running";
     var PageName = element.getElementsByTagName('a')[0].innerHTML.replace(/&amp;/g, "%26").replace(/&/g, "%26");
     var AdresseRequete = mw.config.get('wgServer') + '/w/api.php?action=query&prop=info&inprop=protection&titles=' + PageName;

     var NouvelleRequete = new XMLHttpRequest();
     NouvelleRequete.open("GET", AdresseRequete, true);
     NouvelleRequete.send(null);
     NouvelleRequete.onreadystatechange = function() {
          if(NouvelleRequete.readyState == 4 && NouvelleRequete.status == 200) {
               var ElementTraitement = document.createElement('div');
               ElementTraitement.innerHTML = NouvelleRequete.responseText; 
               var Informations = ElementTraitement.getElementsByTagName('span');
               var PageProtected = false;
               var ProtectionType = '';
               for(a=0;a<Informations.length;a++){
                    var ContenuInformation = Informations[a].innerHTML;
                    if(ContenuInformation.indexOf('missing=')!=-1){ 
                         element.getElementsByTagName('a')[0].className = "new";
                    }
                    if(ContenuInformation.indexOf('redirect=')!=-1){ 
                         element.getElementsByTagName('a')[0].className = "mw-redirect";
                    }
                    if(ContenuInformation.indexOf('type=')!=-1){
                         PageProtected = true;
                         ProtectionType += '<br/>' + ContenuInformation.split('type="')[1].split('"')[0] + '-' + ContenuInformation.split('level="')[1].split('"')[0] + '-' + ContenuInformation.split('expiry="')[1].split('"')[0];
                    }
               }
               if(PageProtected==true) element.innerHTML = '<s>' + element.innerHTML + '</s> Page protégée : ' + ProtectionType;
               var nextElement = element.nextSibling;
               if(nextElement){
                    LiveAbuseLog_GetProtectedPages(nextElement);
               }else{
                    LiveAbuseLog_TopInfoDiv.innerHTML = LiveAbuseLog_TopInfoDiv.innerHTML.split("Pages protégées ou supprimées ?").join("");
                    if(LiveAbuseLog_TopInfoDiv.innerHTML.indexOf('?')==-1) LiveAbuseLog_TopInfoDiv.innerHTML = "Rechargement terminé";
               }
               element.className = "LiveAbuseLog_Checked";
          }
     }
}

/* ******************************************************************************************
// /////////////////////////////////////////////////////// RECHERCHE PAGES PROTÉGÉES (JOURNAL)

function LiveAbuseLog_GetLogProtectedPages(PagePosition){
     if(!PagePosition) PagePosition = 0;
     var element = document.getElementById("PageLink_"+PagePosition);
     if(!element) return;

     var PageTDNode = element.parentNode;
     PageTDNode.className = "LiveAbuseLog_Running";
     var PageName = element.innerHTML.replace(/&amp;/g, "%26").replace(/&/g, "%26");
     var AdresseRequete = mw.config.get('wgServer') + '/w/api.php?action=query&prop=info&inprop=protection&titles=' + PageName;

     var NouvelleRequete = new XMLHttpRequest();
     NouvelleRequete.open("GET", AdresseRequete, true);
     NouvelleRequete.send(null);
     NouvelleRequete.onreadystatechange = function() {
          if(NouvelleRequete.readyState == 4 && NouvelleRequete.status == 200) {
               var ElementTraitement = document.createElement('div');
               ElementTraitement.innerHTML = NouvelleRequete.responseText; 
               var Informations = ElementTraitement.getElementsByTagName('span');
               var PageProtected = false;
               var ProtectionType = '';
               for(a=0;a<Informations.length;a++){
                    var ContenuInformation = Informations[a].innerHTML;
                    if(ContenuInformation.indexOf('missing=')!=-1){ 
                         element.getElementsByTagName('a')[0].className = "new";
                    }
                    if(ContenuInformation.indexOf('redirect=')!=-1){ 
                         element.getElementsByTagName('a')[0].className = "mw-redirect";
                    }
                    if(ContenuInformation.indexOf('type=')!=-1){
                         PageProtected = true;
                         ProtectionType += '<br/>' + ContenuInformation.split('type="')[1].split('"')[0] + '-' + ContenuInformation.split('level="')[1].split('"')[0] + '-' + ContenuInformation.split('expiry="')[1].split('"')[0];
                    }
               }
               if(PageProtected==true) PageTDNode.innerHTML = '<s>' + PageTDNode.innerHTML + '</s> Page protégée : ' + ProtectionType;
               PageTDNode.className = "LiveAbuseLog_Checked";
               LiveAbuseLog_GetLogProtectedPages((PagePosition+1));
          }
     }
}
************************************************************************************** */

// /////////////////////////////////////////////////////// CLASSEMENT FILTRES DÉCLENCHÉS

function LiveAbuseLog_Update_TopFilters(){
     var TopFiltersDiv = document.getElementById("LiveAbuseLog_TopFiltersDiv");
     var Table = document.getElementById("LiveAbuseLog_Table");
     if((!Table)||(!TopFiltersDiv)) return;

     var Links = Table.getElementsByTagName('a');
     var FiltersLinks = new Array();
     for(var a=0;a<Links.length;a++){
          if($(Links[a]).hasClass("FilterLink")){
               var UserName = Links[a].innerHTML.replace(/Filtre /,"");
               FiltersLinks.push(UserName);
          }
     }
     FiltersLinks = FiltersLinks.sort();
     var count = 1;
     var SortedFilters = new Array();
     for(var b=0;b<FiltersLinks.length;b++){
          if(FiltersLinks[(b+1)]){
               if(FiltersLinks[b] == FiltersLinks[(b+1)]){
                    count++
               }else{
                    if(count<10){var Zerocount = '0';}else{ var Zerocount = ''; }
                    if(count<100) Zerocount += '0';
                    if(count<1000) Zerocount += '0';
                    SortedFilters.push('<li><b>'+Zerocount+count+'</b> <a href="javascript:LiveAbuseLog_Preview(\''+mw.config.get('wgServer')+'/wiki/Special:AbuseFilter/' + FiltersLinks[b] + '\',\'\', true);" title="Voir le filtre ' + FiltersLinks[b] + '" >Filtre ' + FiltersLinks[b] + '</a> (<a href="javascript:LiveAbuseLog_Preview(\''+mw.config.get('wgServer')+mw.config.get('wgArticlePath').split('$1').join('Special:AbuseLog?title=Special:AbuseLog&wpSearchFilter='+FiltersLinks[b])+'\',\'\', true);" title="Journal de ce filtre" >J</a>)&nbsp;:&nbsp;' + LiveAbuseLog_FilterList[parseInt(FiltersLinks[b])] + '</li>');
                    count=1;
               }
          }else{
               if(count<10){var Zerocount = '0';}else{ var Zerocount = ''; }
               if(count<100) Zerocount += '0';
               if(count<1000) Zerocount += '0';
               SortedFilters.push('<li><b>'+Zerocount+count+'</b> <a href="javascript:LiveAbuseLog_Preview(\''+mw.config.get('wgServer')+'/wiki/Special:AbuseFilter/' + FiltersLinks[b] + '\',\'\', true);" title="Voir le filtre ' + FiltersLinks[b] + '" >Filtre ' + FiltersLinks[b] + '</a> (<a href="javascript:LiveAbuseLog_Preview(\''+mw.config.get('wgServer')+mw.config.get('wgArticlePath').split('$1').join('Special:AbuseLog?title=Special:AbuseLog&wpSearchFilter='+FiltersLinks[b])+'\',\'\', true);" title="Journal de ce filtre" >J</a>)&nbsp;:&nbsp;' + LiveAbuseLog_FilterList[parseInt(FiltersLinks[b])] + '</li>');
          }
     }

     SortedFilters = SortedFilters.sort();
     var Text = '';
     for(var c=(SortedFilters.length-1);0<=c;c--){
          Text += SortedFilters[c];
     }
     NewUl = document.createElement('ul');
     NewUl.innerHTML = Text;
     //alert(Text);
     while(TopFiltersDiv.firstChild){TopFiltersDiv.removeChild(TopFiltersDiv.firstChild);}
     TopFiltersDiv.appendChild(NewUl);
}

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

function LiveAbuseLog_Preview(URL, Page, AddToHistory){
     if(Page){
          if((Page!='')&&(decodeURIComponent(Page).indexOf('Spécial:')==-1)&&(decodeURIComponent(Page).indexOf('Special:')==-1)&&(decodeURIComponent(Page).indexOf('Journal des déclenchements de filtre')==-1)){
               var ThisPage = Page;
          }
     }
     if(AddToHistory){
          LiveAbuseLog_PreviewHistory_LastIndex++
          LiveAbuseLog_PreviewHistory_CurrentIndex = LiveAbuseLog_PreviewHistory_LastIndex;
          LiveAbuseLog_PreviewHistory_URL.push(URL);
          LiveAbuseLog_PreviewHistory_Page.push((ThisPage ? ThisPage : "" ));
     }
     var AdresseRequete = decodeURIComponent(URL).replace(/ZAPOSTROPHE/g,"'").replace(/&amp;/g, "%26");
     //alert(AdresseRequete);
     var PreviewDivContent = document.getElementById("LiveAbuseLog_PreviewDivContent");
     var PreviewDivOptions = document.getElementById("LiveAbuseLog_PreviewDivOptions");
     if((!PreviewDivContent)||(!PreviewDivOptions)) return;
     while(PreviewDivOptions.firstChild){ PreviewDivOptions.removeChild(PreviewDivOptions.firstChild);}
     PreviewDivOptions.innerHTML = '<img src="//upload.wikimedia.org/wikipedia/commons/8/88/Throbber_allbackgrounds_twelvebar.gif" height="18" width="18" /> <b>Prévisualisation en cours : </b><a href="'+AdresseRequete+'">'+AdresseRequete+'</a>';
     PreviewDivOptions.style.display = "block";
     PreviewDivContent.style.display = "none";

     var NouvelleRequete = new XMLHttpRequest();
     NouvelleRequete.open("GET", AdresseRequete, true);
     NouvelleRequete.send(null);
     NouvelleRequete.onreadystatechange = function() {
          if(NouvelleRequete.readyState == 4 && NouvelleRequete.status == 200) {
               while(PreviewDivContent.firstChild){ PreviewDivContent.removeChild(PreviewDivContent.firstChild);}
               PreviewDivContent.innerHTML = NouvelleRequete.responseText; 
               LiveAbuseLog_cleanPreviewContent(PreviewDivContent);
               var PreviewDivOptionsContent = '<h3>'
                                             +'<a href="'+AdresseRequete+'" target="_blank" title="Voir la page">Lien Direct</a>'
                                             +' - '
                                             +'<a href="javascript:LiveAbuseLog_CancelPreview();" title="fermer la fenêtre de prévisualisation" >Fermer</a>'
                                             +' - <small>('
                                             +'<a href="javascript:LiveAbuseLog_PreviewHistory(-1);" title="Page précédente" >page précédente</a>'

               if(LiveAbuseLog_PreviewHistory_CurrentIndex!=LiveAbuseLog_PreviewHistory_LastIndex){
                  PreviewDivOptionsContent += '|'
                                             +'<a href="javascript:LiveAbuseLog_PreviewHistory(1);" title="Page suivante" >page suivante</a>'
                                             +'|<a href="javascript:LiveAbuseLog_PreviewHistory(0);" title="Revenir à la dernière page visitée" >Dernière page visitée</a>'
               }
                  PreviewDivOptionsContent += ')</small>'
                                             +'</h3>';
               if(ThisPage){
                   var DecodedThisPage = decodeURIComponent(ThisPage)
                   if((DecodedThisPage.indexOf(mw.config.get('wgFormattedNamespaces')[2]+':')!=-1)||(DecodedThisPage.indexOf(mw.config.get('wgFormattedNamespaces')[3]+':')!=-1)||(DecodedThisPage.indexOf('User:')!=-1)||(DecodedThisPage.indexOf('User talk:')!=-1)){
                         var UserName = DecodedThisPage.split(':')[1];
                         UserName = UserName.split('/')[0];
                         UserName = encodeURIComponent(UserName);
                   }
                   PreviewDivOptionsContent += '<h5>'
                                              +'<a href="javascript:LiveAbuseLog_Preview(\''
                                              +mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' +ThisPage+'&action=edit&redlink=1\',\''+ThisPage+'\', true);"'
                                              +' >Page</a>'
                                              +' - '
                                              +'<a href="javascript:LiveAbuseLog_Preview(\''
                                              +mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' +ThisPage+'&action=edit\',\''+ThisPage+'\', true);"'
                                              +' >Modifier</a>'
                                              +' - '
                                              +'<a href="javascript:LiveAbuseLog_Preview(\''
                                              +mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' +ThisPage+'&action=history\',\''+ThisPage+'\', true);"'
                                              +' >Historique</a>'
                                              +' - '
                                              +'<a href="javascript:LiveAbuseLog_Preview(\''
                                              +mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' +ThisPage+'&action=unwatch\',\''+ThisPage+'\', true);"'
                                              +' >Ne plus</a> '
                                              +'<a href="javascript:LiveAbuseLog_Preview(\''
                                              +mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' +ThisPage+'&action=watch\',\''+ThisPage+'\', true);"'
                                              +' >Suivre</a>'
                                              +' - ';
                   if(UserName){
                   PreviewDivOptionsContent += '<a href="javascript:LiveAbuseLog_Preview(\''
                                              +mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=Special:Contributions/' +UserName+'\',\'User:'+UserName+'\', true);"'
                                              +' >Contributions</a>'
                                              +' - ';
                        if(mw.config.get('wgUserGroups').indexOf("sysop")!=-1){
                             PreviewDivOptionsContent += '<a href="javascript:LiveAbuseLog_Preview(\''
                                                        +mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=Special:DeletedContributions&target=' +UserName+'\',\'User:'+UserName+'\', true);"'
                                                        +' >Contributions supprimées</a>'
                                                        +' - ';
                        }
                   }

                   if(mw.config.get('wgUserGroups').indexOf("autoconfirmed")!=-1){
                        PreviewDivOptionsContent += '<a href="javascript:LiveAbuseLog_Preview(\''
                                                   +mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=Special:Movepage/' +ThisPage+'\',\''+ThisPage+'\', true);"'
                                                   +' >Renommer</a>'
                                                   +' - ';
                   }
                   if(mw.config.get('wgUserGroups').indexOf("sysop")!=-1){
                        PreviewDivOptionsContent += '<a href="javascript:LiveAbuseLog_Preview(\''
                                                   +mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' +ThisPage+'&action=protect\',\''+ThisPage+'\', true);"'
                                                   +' >Protéger</a>'
                                                   +' - ';
                        PreviewDivOptionsContent += '<a href="javascript:LiveAbuseLog_Preview(\''
                                                   +mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' +ThisPage+'&action=delete\',\''+ThisPage+'\', true);"'
                                                   +' >Supprimer</a>'
                                                   +' - ';
                        if(UserName){
                        PreviewDivOptionsContent += '<a href="javascript:LiveAbuseLog_Preview(\''
                                                   +mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=Special:Blockip/' +UserName+'\',\'User:'+UserName+'\', true);"'
                                                   +' >Bloquer</a>'
                                                   +' - ';
                        }
                   }
                   PreviewDivOptionsContent += '</h5>';
               }
               PreviewDivOptions.innerHTML = PreviewDivOptionsContent;
               PreviewDivContent.style.display = "block";
               LiveAbuseLog_ModifyPreviewContentLinks(PreviewDivContent);
          }
     }
}

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

function LiveAbuseLog_CancelPreview(){
     var PreviewDivContent = document.getElementById("LiveAbuseLog_PreviewDivContent");
     var PreviewDivOptions = document.getElementById("LiveAbuseLog_PreviewDivOptions");
     if((!PreviewDivContent)||(!PreviewDivOptions)) return;
     while(PreviewDivContent.firstChild){ PreviewDivContent.removeChild(PreviewDivContent.firstChild);}
     while(PreviewDivOptions.firstChild){ PreviewDivOptions.removeChild(PreviewDivOptions.firstChild);}
     PreviewDivContent.style.display = "none";
     PreviewDivOptions.style.display = "none";
}


// /////////////////////////////////////////////////////// MODIFICATIONS LIENS PRÉVISUALISATION

function LiveAbuseLog_ModifyPreviewContentLinks(element){
    if(!element) element = document;
    var AllLinks = element.getElementsByTagName('a');
    for(var d=0;d<AllLinks.length;d++){
        Href = decodeURIComponent(AllLinks[d].href);
        Title = AllLinks[d].title;
        if(!Title) Title = '';
        Title= Title.replace(/ \(page inexistante\)/g,"");
        HTML = AllLinks[d].innerHTML;        
        if((Href.indexOf('javascript:')==-1)&&(Href.indexOf('#')==-1)){
            if(Href.indexOf(mw.config.get('wgServer'))==-1) Href = mw.config.get('wgServer')+Href;
            Href = Href.replace(/'/g,"ZAPOSTROPHE").replace(/%3A/g, ":").replace(/%2F/g, "/").replace(/_/g, " ");
            AllLinks[d].title = Title + " (prévisualisation)";
            AllLinks[d].href = "javascript:LiveAbuseLog_Preview(\'" + Href + "\',\'"+ Title.replace(/'/g,"ZAPOSTROPHE") +"\', true);";
        }
    }
}

// /////////////////////////////////////////////////////// MODIFICATIONS CONTENU PRÉVISUALISATION

var LiveAbuseLog_indexSummary = 0;
var LiveAbuseLog_indexNavigationBars = 10000;
var LiveAbuseLog_indexCollapsibleTables = 10000;
 
var LiveAbuseLog_Enrouler = '[enrouler]';
var LiveAbuseLog_Derouler = '[dérouler]';

var LiveAbuseLog_EnroulerBis = '[-]';
var LiveAbuseLog_DeroulerBis = '[+]';

function LiveAbuseLog_cleanPreviewContent(element){
        if(!element) element = document;
 
        var newContentWrapper = element.getElementsByTagName("div");
        var div=0;
        while(div<newContentWrapper.length){
                if( 
                ($(newContentWrapper[div]).hasClass("portlet")) 
                || 
                ($(newContentWrapper[div]).hasClass("printfooter"))
                ){
                        newContentWrapper[div].style.display="none";
                }
                if (
                ($(newContentWrapper[div]).hasClass("NavFrame"))  // ************************************* Boîtes déroulantes
                ){          
                    LiveAbuseLog_indexCollapsibleTables++;
                    NavHead =  newContentWrapper[div].firstChild;
                    var NavToggle = document.createElement("a");
                    NavToggle.className = 'NavToggle';
                    NavToggle.id = 'NavToggle' + LiveAbuseLog_indexCollapsibleTables;
                    NavToggle.href = 'javascript:LiveAbuseLog_toggleCollapsibleTables(' + LiveAbuseLog_indexCollapsibleTables + ');'; 
                    NavToggle.innerHTML = LiveAbuseLog_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' + LiveAbuseLog_indexCollapsibleTables;
                        }
                    }
                    LiveAbuseLog_toggleCollapsibleTables(LiveAbuseLog_indexCollapsibleTables);
               }
 
                Div_Id = newContentWrapper[div].id;
                if(Div_Id){
                        if(
                        (Div_Id=="toctitle")     // ************************************* Sommaire
                        ){
                                LiveAbuseLog_indexSummary = (LiveAbuseLog_indexSummary+1);
                                newContentWrapper[div].id = 'toctitle_'+LiveAbuseLog_indexSummary;
                                var TitreSommaire = newContentWrapper[div].getElementsByTagName('h2')[0];
                                TitreSommaire.innerHTML = TitreSommaire.innerHTML + ' <a href="javascript:LiveAbuseLog_afficherSommaire(\'toc_'+LiveAbuseLog_indexSummary
                                +'\',\'toctitle_'+LiveAbuseLog_indexSummary
                                +'\', \''+TitreSommaire.innerHTML
                                +'\');" >'+LiveAbuseLog_DeroulerBis+'</a>';
                                var Conteneur = newContentWrapper[div].parentNode;
                                var Sommaire = Conteneur.getElementsByTagName('ul')[0];
                                Sommaire.id = 'toc_'+LiveAbuseLog_indexSummary;
                                Sommaire.style.display="none";
                        }
                        if(
                        (Div_Id=="globalWrapper")
                        ||
                        (Div_Id=="column-content")
                        ||
                        (Div_Id=="content")
                        ||
                        (Div_Id=="bodyContent")
                        ||
                        (Div_Id=="article")
                        ||
                        (Div_Id=="mw_main")
                        ||
                        (Div_Id=="mw_contentwrapper")
                        ||
                        (Div_Id=="mmw_content")
                        ||
                        (Div_Id=="mmw_contentholder")
                        ){
                                newContentWrapper[div].id = newContentWrapper[div].id + '_Preview'; 
                        }
                        if(
                        (Div_Id=="siteNotice")
                        ||
                        (Div_Id=="p-personal")
                        ||
                        (Div_Id=="topbar")
                        ||
                        (Div_Id=="quickbar")
                        ||
                        (Div_Id=="column-one")
                        ||
                        (Div_Id=="mw_portlets")
                        ||
                        (Div_Id=="page-base")
                        ||
                        (Div_Id=="head-base")
                        ||
                        (Div_Id=="head")
                        ||
                        (Div_Id=="panel")
                        ||
                        (Div_Id=="footer")
                        ||
                        (Div_Id=="contentSub")
                        ||
                        (Div_Id=="previewnote")
                        ){
                                newContentWrapper[div].style.display= "none !important";
                        }
                }
                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" + LiveAbuseLog_indexNavigationBars ;
 
                     var Button     = document.createElement( "span" );
                     var ButtonLink = document.createElement( "a" );
                     var ButtonText = document.createTextNode( LiveAbuseLog_Enrouler );
 
                     Button.style.styleFloat = "right";
                     Button.style.cssFloat = "right";
                     Button.style.fontWeight = "normal";
                     Button.style.textAlign = "right";
                     Button.style.width = "6em";
 
                     ButtonLink.id = "collapseButton" + LiveAbuseLog_indexNavigationBars ;
                     ButtonLink.href = "javascript:LiveAbuseLog_collapseNavigationBar(" + LiveAbuseLog_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" ) ) LiveAbuseLog_collapseNavigationBar( LiveAbuseLog_indexNavigationBars );
                     LiveAbuseLog_indexNavigationBars++;
               }
        }
}
 
// /////////////////////////////////////////////////////// FONCTIONS SUBALTERNES A LA GESTION DU CONTENU DE LA PRÉVISUALISATION 
 
// -------------------------------------------- Sommaire
 
function LiveAbuseLog_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:LiveAbuseLog_masquerSommaire(\''+IDSommaire+'\',\''+IdTitre+'\', \''+TitreInitial+'\');" >'+LiveAbuseLog_EnroulerBis+'</a>';
}
 
function LiveAbuseLog_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:LiveAbuseLog_afficherSommaire(\''+IDSommaire+'\',\''+IdTitre+'\', \''+TitreInitial+'\');" >'+LiveAbuseLog_DeroulerBis+'</a>';
}
 
// -------------------------------------------- Palettes de navigation
 
function LiveAbuseLog_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 == LiveAbuseLog_Enrouler ) {
    for ( var i = 1; i < Rows.length; i++ ) {
      Rows[i].style.display = "none";
    }
    Button.firstChild.data = LiveAbuseLog_Derouler;
  } else {
    for ( var i = 1; i < Rows.length; i++ ) {
      Rows[i].style.display = Rows[0].style.display;
    }
    Button.firstChild.data = LiveAbuseLog_Enrouler ;
  }
}
 
// -------------------------------------------- Boîtes déroulantes 
 
function LiveAbuseLog_toggleCollapsibleTables(index) {
    var NavToggle = document.getElementById("NavToggle" + index);
    var NavContent = document.getElementById("NavContent" + index);
 
    if( (!NavToggle) || (!NavContent) ) return; 
 
    var Caption = NavToggle.innerHTML;  
    if (Caption == LiveAbuseLog_Enrouler) {
        NavContent.style.display = 'none';
        NavToggle.innerHTML = LiveAbuseLog_Derouler; 
    } else if (Caption == LiveAbuseLog_Derouler) {
        NavContent.style.display = 'block';
        NavToggle.innerHTML = LiveAbuseLog_Enrouler;
    }
}

function LiveAbuseLog_PreviewHistory(Mode){
    if(Mode!=0){
        var Index = (LiveAbuseLog_PreviewHistory_CurrentIndex+Mode);
    }else{
        var Index = LiveAbuseLog_PreviewHistory_LastIndex;
    }
    var Url = LiveAbuseLog_PreviewHistory_URL[Index];
    var Page = LiveAbuseLog_PreviewHistory_Page[Index];
    if((Url)&&(Page)){
        LiveAbuseLog_PreviewHistory_CurrentIndex = Index;
        LiveAbuseLog_Preview(Url, Page, false);
    }
}