Les pages de droit public principalement ainsi que toutes autres branches de droit - Webmestre : Bertrand GRONDIN
Ce wiki possède 556 articles.

MediaWiki:Common.js : Différence entre versions

De Gdn
Aller à : navigation, rechercher
m (Révocation des modifications de Galdrad (discussion) vers la dernière version de Grondin)
 
(4 révisions intermédiaires par le même utilisateur non affichées)
(Aucune différence)

Version actuelle en date du 18 mars 2015 à 19:01

//192.168.254.24//192.168.254.24//192.168.254.24//192.168.254.24//192.168.254.24/* N’importe quel JavaScript ici sera chargé pour n’importe quel utilisateur et pour chaque page accédée. */
/* 
__FORCETOC__

== infobulles et touches d’accès ==
<pre>*/
var ta = new Object();
ta['pt-userpage'] = new Array('.','Ma page utilisateur');
ta['pt-anonuserpage'] = new Array('.','La page utilisateur de l’IP avec laquelle vous contribuez');
ta['pt-mytalk'] = new Array('n','Ma page de discussion');
ta['pt-anontalk'] = new Array('n','Discussion à propos des modifications depuis cette adresse IP');
ta['pt-preferences'] = new Array('','Mes préférences');
ta['pt-watchlist'] = new Array('l','liste des pages dont vous suivez les modifications.');
ta['pt-mycontris'] = new Array('y','Liste de mes contributions');
ta['pt-login'] = new Array('o','Vous êtes invité à vous identifier, mais ce n’est pas obligatoire.');
ta['pt-anonlogin'] = new Array('o','Vous êtes invité à vous identifier, mais ce n’est pas obligatoire.');
ta['pt-logout'] = new Array('o','Se déconnecter');
ta['ca-talk'] = new Array('t','Discussion à propos de l’article');
ta['ca-edit'] = new Array('e','Vous pouvez modifier cette page. Merci d’utiliser le bouton de prévisualisation avant de sauvegarder.');
ta['ca-addsection'] = new Array('+','Ajouter un commentaire à cette discussion.');
ta['ca-viewsource'] = new Array('e','Cette page est protégée. Vous pouvez voir sa source.');
ta['ca-history'] = new Array('h','Anciennes versions de cette page.');
ta['ca-protect'] = new Array('=','Protéger cette page');
ta['ca-delete'] = new Array('d','Supprimer cette page');
ta['ca-undelete'] = new Array('d','Restaurer les modifications effectuées sur cette page avant sa suppression');
ta['ca-move'] = new Array('m','Renommer cette page');
ta['ca-watch'] = new Array('w','Ajouter cette page à votre liste de suivi');
ta['ca-unwatch'] = new Array('w','Retirer cette page de votre liste de suivi');
ta['search'] = new Array('f','Chercher dans ce wiki');
ta['p-logo'] = new Array('','Page principale');
ta['n-mainpage'] = new Array('z','Visitez la page principale');
ta['n-portal'] = new Array('','À propos de ce projet, ce que vous pouvez faire, où trouver les choses');
ta['n-currentevents'] = new Array('','Trouver des informations sur les évènements actuels');
ta['n-recentchanges'] = new Array('r','Liste des changements récents sur le wiki');
ta['n-randompage'] = new Array('x','Charger une page aléatoire');
ta['n-help'] = new Array('','Aide');
ta['n-sitesupport'] = new Array('','Aidez-nous');
ta['t-whatlinkshere'] = new Array('j','Liste de tous les wikis qui lient vers cette page');
ta['t-recentchangeslinked'] = new Array('k','Changements récents dans les pages qui lient vers cette page');
ta['feed-rss'] = new Array('','Flux RSS pour cette page');
ta['feed-atom'] = new Array('','Flux Atom pour cette page');
ta['t-contributions'] = new Array('','Voir la liste de contributions de cet utilisateur');
ta['t-emailuser'] = new Array('','Envoyer un courriel à cet utilisateur');
ta['t-upload'] = new Array('u','Télécharger une image ou des fichiers');
ta['t-specialpages'] = new Array('q','Liste de toutes les pages spéciales');
ta['ca-nstab-main'] = new Array('c','Voir l’article');
ta['ca-nstab-user'] = new Array('c','Voir la page utilisateur');
ta['ca-nstab-media'] = new Array('c','Voir la page du média');
ta['ca-nstab-special'] = new Array('','Ceci est une page spéciale, vous ne pouvez la modifier.');
ta['ca-nstab-project'] = new Array('a','Voir la page du projet');
ta['ca-nstab-image'] = new Array('c','Voir la page de l’image');
ta['ca-nstab-mediawiki'] = new Array('c','Voir le message système');
ta['ca-nstab-template'] = new Array('c','Voir le modèle');
ta['ca-nstab-help'] = new Array('c','Voir la page d’aide');
ta['ca-nstab-category'] = new Array('c','Voir la page de la catégorie');

/*</pre>

==Générateur de tableaux==
<pre>*/

/**
 *
 * English: Generate an array using Mediawiki syntax
 *
 * @author: fr:user:dake
 * @version: 0.1
 */
 
function generateTableau(nbCol, nbRow, border, styleHeader, styleLine)
{
        var code = "\n";
        if (styleHeader==1) {
                code += '{{entête tableau charte}}\n';
        } else {
                code += '{| border="' + border + '"\n';
                code += '|+ Titre du tableau\n';
        }
        
        for (var i=0;i<nbCol;i++) code += '! en-tête ' + i + '\n'
        
        for (var j=0;j<nbRow;j++) {
                if ((j+1)%2==0 && styleLine==1) {
                        code += '|-{'+'{ligne grise}'+'}\n'
                } else {                
                        code += '|-----\n'
                }
                
                for (var i=0;i<nbCol;i++) code += '| élément\n';
        }
        
        code += '|}';
        insertTags('','', code); 
}

/**
 *
 * English: Open a popup with parameters to generate an array. 
 * The number of rows/columns can be modified. Some additional
 * parameters are related to templates available on :fr
 *
 * @author: fr:user:dake
 * @version: 0.1
 */
 
function popupTableau()
{
  var popup = window.open('','name','height=400,width=500');
  
  javaCode =  '<script type="text\/javascript">function insertCode(){';
  javaCode += 'var row = parseInt(document.paramForm.inputRow.value); '
  javaCode += 'var col = parseInt(document.paramForm.inputCol.value); '
  javaCode += 'var bord = parseInt(document.paramForm.inputBorder.value); '
  javaCode += 'var styleHeader = document.paramForm.inputHeader.checked; '
  javaCode += 'var styleLine = document.paramForm.inputLine.checked; '
  javaCode += 'window.opener.generateTableau(col,row,bord,styleHeader,styleLine); '
  javaCode += '}<\/script>';
  
  popup.document.write('<html><head><title>Paramètres du tableau</title>');
  popup.document.write('<script type="text\/javascript" src="\/skins-1.5\/common\/wikibits.js"><!-- wikibits js --><\/script>');
  popup.document.write('<style type="text\/css" media="screen,projection">/*<![CDATA[*/ @import "\/skins-1.5\/monobook\/main.css?5"; /*]]>*/<\/style>');
  popup.document.write(javaCode); 
  popup.document.write('</head><body>');
  popup.document.write('<p>Veuillez entrer les paramètres du tableau : </p>');
  popup.document.write('<form name="paramForm">');
  popup.document.write('Nombre de lignes : <input type="text" name="inputRow" value="3" ><p>');
  popup.document.write('Nombre de colonnes : <input type="text" name="inputCol" value="3" ><p>');
  popup.document.write('Largeur de la bordure : <input type="text" name="inputBorder" value="1" ><p>');
  popup.document.write('En-tête en gris (style « charte graphique ») : <input type="checkbox" name="inputHeader" checked="1" ><p>');
  popup.document.write('Lignes grises alternées (style « charte graphique ») : <input type="checkbox" name="inputLine" checked="1" ><p>');
  popup.document.write('</form">');
  popup.document.write('<p><a href="javascript:insertCode()"> Insérer le code dans la fenêtre d\'édition</a></p>');
  popup.document.write('<p><a href="javascript:self.close()"> Fermer</a></p>');
  popup.document.write('</body></html>');
  popup.document.close();
}

/*</pre>

== Insersion des caractères spéciaux ==

<pre>*/

/**
 * Ajoutez le menu pour choisir des sous-ensembles de caractères spéciaux
 * @note	L'ordre de cette liste doit correspondre a celui de MediaWiki:Edittools !
 */

function addCharSubsetMenu() {
  var specialchars = document.getElementById('specialchars');

  if (specialchars) {
    var menu = "<select style=\"display:inline\" onChange=\"chooseCharSubset(selectedIndex)\">";
    menu += "<option>Wiki (modèles)</option>";
    menu += "<option>API</option>";
    menu += "<option>Latin/Romain</option>";
    menu += "<option>Grec</option>";
    menu += "<option>Cyrillique</option>";
    menu += "<option>AHD</option>";
    menu += "<option>Allemand</option>";
    menu += "<option>Catalan</option>";
    menu += "<option>Croate</option>";
    menu += "<option>Espagnol</option>";
    menu += "<option>Espéranto</option>";
    menu += "<option>Estonien</option>";
    menu += "<option>Français</option>";
    menu += "<option>Gallois</option>";
    menu += "<option>Hawaien</option>";
    menu += "<option>Islandais</option>";
    menu += "<option>Italien</option>";
    menu += "<option>Japonais</option>";
    menu += "<option>Maltais</option>";
    menu += "<option>Pinyin</option>";
    menu += "<option>Portugais</option>";
    menu += "<option>Rōmaji</option>";
    menu += "<option>Roumain</option>";
    menu += "<option>Scandinave</option>";
    menu += "<option>Serbe</option>";
    menu += "<option>Tchèque</option>";
    menu += "<option>Turc</option>";
    menu += "<option>Vieil anglais</option>";
    menu += "<option>Vietnamien</option>";
    menu += "</select>";
    specialchars.innerHTML = menu + specialchars.innerHTML;

    /* default subset - try to use a cookie some day */
    chooseCharSubset(0);
  }
}

/* select subsection of special characters */
function chooseCharSubset(s) {
  var l = document.getElementById('specialchars').getElementsByTagName('p');
  for (var i = 0; i < l.length ; i++) {
    l[i].style.display = i == s ? 'inline' : 'none';
    l[i].style.visibility = i == s ? 'visible' : 'hidden';
  }
}

addOnloadHook(addCharSubsetMenu);

/*</pre>

== Insertion de nouveaux boutons ==
<pre>*/

//Remplit la variable mwCustomEditButtons (voir /skins-1.5/commons/wikibits.js) pour ajouter des boutons à la barre d'outils
function addCustomButton(imageFile, speedTip, tagOpen, tagClose, sampleText)
{
 mwCustomEditButtons[mwCustomEditButtons.length] =
 {"imageFile": imageFile,
  "speedTip": speedTip,
  "tagOpen": tagOpen,
  "tagClose": tagClose,
  "sampleText": sampleText};
}


addCustomButton('http://upload.wikimedia.org/wikipedia/commons/0/03/Button_paragraphe_1.png','Paragraphe de premier niveau','= ',' =\n','Texte à insérer');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/c/cf/Button_paragraphe_2.png','Paragraphe de deuxième niveau','== ',' ==\n','Texte à insérer');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/b/ba/Button_paragraphe_3.png','Paragraphe de troisième niveau','=== ',' ===\n','Texte à insérer');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/6/61/Button_paragraphe_4.png','Paragraphe de quatrième niveau','==== ',' ====\n','Texte à insérer');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/7/79/Button_paragraphe_5.png','Paragraphe de cinquième niveau','===== ',' =====\n','Texte à insérer');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/e/e8/Button_paragraphe_6.png','Paragraphe de sixième niveau','====== ',' ======\n','Texte à insérer');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/a/a0/Button_references_alt.png','Ajoute une référence','<ref>','</ref>','');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/9/9a/Button_references.png','Liste des références','<references />\n','','');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/4/4b/Button_class_text.png','Classe texte','<div class=\"text\">\n\n','\n</div>','Insérez les paragraphes');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/0/07/Button_justice.png','Classe jurisprudence','<div class=\"jur\">\n','\n</div>','Insérez les notes de jurisprudence');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/b/bf/Button_pagename.png','Titrage','\{\{Titre\n\|1=','\n\|2=\n\|3=\n\}\}','Insérez votre titre');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/a/a4/TableStart.png','Tableau échelons','\{\{subst:TCE\n\|grade1=','\n\|grade2=\n\n\}\}','Insérez votre tableau');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/5/5c/Button_ligne_tableau.png','ligne tableau FP','\{\{subst:LigneTEC\|','\|\|\}\}\n','Insérez l’échelon');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/4/4c/TableRow.png','ligne tableau FP','\{\{subst:LigneTEC1\n\|1=','\n\|2=\n\|3=\n\|4=\n\|5=\n\|6=\n\|7=\n\}\}\n','Insérez l’échelon');

//Ressemble à la fonction de /skins-1.5/commons/wikibits.js pour insérer un autre lien que insertTags
function marque_tab()
{
 var toolbar = document.getElementById('toolbar');
 if (!toolbar) return false;
 
 var textbox = document.getElementById('wpTextbox1');
 if (!textbox) return false;
 
 if (!document.selection && textbox.selectionStart == null)
 return false;
 
 var image = document.createElement("img");
 image.width = 23;
 image.height = 22;
 image.src = 'http://upload.wikimedia.org/wikipedia/commons/0/04/Button_array.png';
 image.border = 0;
 image.alt = 'Tableau';
 image.title = 'Tableau';
 image.style.cursor = "pointer";
 image.onclick = function() {
   popupTableau();
   return false;
 }
 toolbar.appendChild(image);
}


addOnloadHook(marque_tab);

/*</pre>

== AJAX, Cookies et HTML Parser ==

<pre> */

var ajax = new objAJAX()
var cookies = new objCookies()

//--------------------------------------------------------------------------------------------objAJAX
function objAJAX() {
        // AJAX taken from http://jibbering.com/2002/4/httprequest.html. Thanx :)
        this.conn = false
        /*@cc_on @*/
        /*@if (@_jscript_version >= 5)
        // JScript gives us Conditional compilation, we can cope with old IE versions.
        // and security blocked creation of the objects.
        try {
                this.conn = new ActiveXObject("Msxml2.XMLHTTP")
        } catch (e) {
                try {
                        this.conn = new ActiveXObject("Microsoft.XMLHTTP")
                } catch (E) {
                        this.conn = false
                }
        }
        @end @*/
        if (!this.conn && typeof XMLHttpRequest != 'undefined') {
                try {
                        this.conn = new XMLHttpRequest()
                } catch (e) {
                        this.conn =false
                }
        }
        if (!this.conn && window.createRequest) {
                try {
                        this.conn = window.createRequest()
                } catch (e) {
                        this.conn = false
                }
        }

        this.url = null
        this.requestType = "GET"
        this.unsync = true
        this.parser = new objHTMLparser()
}

objAJAX.prototype.sendRequest = function (url, type, unsync, data) {
        if (!this.conn)
                return null
        if (this.conn.readyState != 0 && this.conn.readyState != 4)
                return "busy"
        if (url)
                this.url = url
        if (type)
                this.requestType = type
        if (unsync != null)
                this.unsync = unsync
//alert(this.requestType + " ++ " + this.url + " ++ " + this.unsync)
        this.conn.open(this.requestType, this.url, this.unsync)
        this.conn.send(data)
}

objAJAX.prototype.getResult = function () {
        if (!this.conn)
                return null
        return this.conn.responseText
}

objAJAX.prototype.abort = function () {
        this.conn.onreadystatechange = null
        this.conn.abort()
}

//------------------------------------------------------------------------------------------ObjCookie

function objCookies() {
        this.value = null
        this.name = null
        this.expires = null
}

objCookies.prototype.get = function (which) {
        this.allcookies = document.cookie
        var start = this.allcookies.indexOf("; " + which + "=")
        if (start == -1) {
                start = this.allcookies.indexOf(which + "=")
                if (start != 0)
                        return null
        } else
                start += "; ".length
        this.name = which
        var end = this.allcookies.indexOf(";", start)
        if (end == -1)
                end = this.allcookies.length
        this.value = this.allcookies.substring(start + which.length + 1, end)
        var arr = this.allcookies.substring(start, this.allcookies.length).split("; ")
        this.expires = null
        if (arr.length > 0)
                if (/expires=/.test(arr[1]))
                        this.expires = arr[1].substring("expires=".length, arr[1].length)
        return this.value
}

objCookies.prototype.set = function (name, value, expires) {
        document.cookie = name + "=" + value + ";" + (expires ? "expires=" + expires + ";" : "") + "path=/;" + "domain=fr.wikipedia.org;"
        this.allcookies = document.cookie
}

objCookies.prototype.setWithDelay = function (name, value, delay) {
// delay is in millisecond
        var d = new Date()
        d.setTime(d.getTime() + delay)
        this.set(name, value, d.toGMTString())
}

objCookies.prototype.kill = function (which) {
        if (this.get(which))
                this.set(which, null, "Thu, 01-Jan-70 00:00:01 GMT")
}

//--------------------------------------------------------------------------------------objHTMLparser

function objHTMLparser(str) {
        this.html = str
}

objHTMLparser.prototype.parse = function (elmt, str) {
	if (str !== null)
		this.html = str
	if (this.html.indexOf("<" + elmt) == -1 || this.html.indexOf("</" + elmt + ">") == -1)
		return null
	var arr1 = this.html.split("<" + elmt)
	var elmts = new Array()
	for (var cpt = 1 ; cpt < arr1.length ; cpt++) {
		var el = new Object()
		el.innerHTML = arr1[cpt].substring(arr1[cpt].indexOf(">"), arr1[cpt].length).split("</" + elmt)[0]
		var prop = arr1[cpt].split(">")[0].split(/\s/g)
		for (var cpt1 = 1 ; cpt1 < prop.length ; cpt1++) {
			if (prop[cpt1].indexOf("=") != -1)
				el[prop[cpt1]] = true
			else
				el[prop[cpt1].split("=")[0]] = prop[cpt1].substring(prop[cpt1].indexOf("="), prop[cpt1].length)
		}
		elmts[cpt-1] = el
	}
	this.elmts[elmt] = elmts
}

/*</pre>

== Historique en couleurs ==

<pre> */

/*************************************************/
// Nom : DeluxeHistory
// Auteur : Dake
// Basé sur du code Ajax de GôTô
// Dernière mise à jour : 8 avril 2006
// Commentaires : 
/*************************************************/
var sysopsDeluxeHistory = null;
var botsDeluxeHistory = null;

function extractUsers(res) {
	pattern = /title\=\"Utilisateur:(.*?)\"/g;
	s = "";
	while((result = pattern.exec(res)) != null) {
		s += result[1] + "||";
	}
	return s;
}

/*************************************************/
// Auteur : Dake
// Basé sur du code de GôTô
/*************************************************/
function getBots() {
	try {
		netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
	} catch (e) {
	  // mange l'exception
	}

	if (!cookies.get("botsDeluxeHistory")) {
		ajax.conn.onreadystatechange = function () {
			if (ajax.conn.readyState == 4) {
				botsDeluxeHistory = extractUsers(ajax.getResult())
				// conservé pour une semaine
				cookies.setWithDelay("botsDeluxeHistory", botsDeluxeHistory, 1000*3600*24*7)
				getSysops();
			}
		}
		ajax.sendRequest("http://grondin.tuxfamily.org/index.php?title=Special:Listusers&group=bot&limit=500&offset=0&action=raw", "GET", true)
	} else {
		botsDeluxeHistory = cookies.get("botsDeluxeHistory")
		getSysops();
	}
}

/*************************************************/
// Auteur : Dake
// Basé sur du code de GôTô
/*************************************************/				
function getSysops() {
	try {
		netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
	} catch (e) {
	 // mange l'exception
	}

	if (!cookies.get("sysopsDeluxeHistory")) {
		ajax.conn.onreadystatechange = function () {
			if (ajax.conn.readyState == 4) {
				sysopsDeluxeHistory = extractUsers(ajax.getResult())
				// conservé pour une semaine
				cookies.setWithDelay("sysopsDeluxeHistory", sysopsDeluxeHistory, 1000*3600*24*7)
				deluxeHistoryProcess();
			}
		}
		ajax.sendRequest("http://grondin.tuxfamily.org/index.php?title=Special:Listusers&group=sysop&limit=500&offset=0&action=raw", "GET", true)
	} else {
		sysopsDeluxeHistory = cookies.get("sysopsDeluxeHistory")
		deluxeHistoryProcess();
	}
}
				
// code by Martin Honnen
function getOuterHTML (node) {
	if (node.nodeType == 3)
			return node.nodeValue;
	else if (node.nodeType == 1) {
			var html = '';
		html += '<' + node.nodeName;
		for (var a = 0; a < node.attributes.length; a++)
			html += ' ' + node.attributes[a].nodeName + '="' +
		node.attributes[a].nodeValue + '"';
			if (node.childNodes.length == 0)
			html += ' \/>';
			else {
			html += '>';
			for (var c = 0; c < node.childNodes.length; c++)
			html += getOuterHTML(node.childNodes[c]);
			html += '<\/' + node.nodeName + '>';
		}
			return html;
		}
}
		
function deluxeHistoryProcess() {					
	sysopsList = sysopsDeluxeHistory.split("||")
	botsList = botsDeluxeHistory.split("||")		
	
	var lis = document.getElementById("pagehistory").getElementsByTagName("li");

	for (i=0; i<lis.length; i++) {
		spanNode = lis[i].getElementsByTagName("span");
		username = spanNode[0].childNodes[0].childNodes[0].nodeValue;
		
		// check le statut du contributeur
		var className = "history-user-normal";
		
		// bot ? 
		for (j=0;j<botsList.length;j++) {
			if (botsList[j].indexOf(username)==0) {
				className = "history-user-bot"
				break;
			}
		}  
		
		// sysop ? 
		for (j=0;j<sysopsList.length;j++) {
			if (sysopsList[j].indexOf(username)==0) {
				className = "history-user-sysop"
				break;
			}
		}
	
		// ip ? 
		var ip = /\d{1,3}\.\d{1,3}.\d{1,3}.\d{1,3}/;
		
		if (ip.exec(username)) {
			className = "history-user-ip"
		}

                // ajout des icônes
		specialOp = "";
		var comment = "";
					
		for (h=0;h<spanNode.length;h++) {
			if (spanNode[h].getAttribute("class") == "comment") { 
				comment = getOuterHTML(spanNode[h])
				break;
			}
		}
				
		var regexExpEvents = new Array();
      	        regexExpEvents[0] = /((r|R)(é|e)vocation|(r|R)v |(R|r)evert|(v|V)andal(isme|e))/;
      	        regexExpEvents[1] = /(a restauré|a effacé|(s|S)uppression)/;	
		regexExpEvents[2] = /((R|r)enommage|a déplacé)/;
		regexExpEvents[3] = /((semi|Semi)-(p|P)rotection|(P|p)rotection)/;
		
		var iconsEvents = new Array();
iconsEvents[0] = "http://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Crystal_Clear_action_reload.png/20px-Crystal_Clear_action_reload.png"
iconsEvents[1] = "http://upload.wikimedia.org/wikipedia/commons/thumb/0/0c/Crystal_Clear_action_exit.png/20px-Crystal_Clear_action_exit.png"
iconsEvents[2] = "http://upload.wikimedia.org/wikipedia/commons/thumb/4/45/Crystal_Clear_action_2rightarrow.png/20px-Crystal_Clear_action_2rightarrow.png"
iconsEvents[3] = "http://upload.wikimedia.org/wikipedia/commons/thumb/f/ff/Crystal_Clear_action_lock.png/20px-Crystal_Clear_action_lock.png"
		
		
		if (comment) {
			for (k=0;k<regexExpEvents.length;k++) {
				if (regexExpEvents[k].test(comment)) {
					imgTag = "<img src=\"" + iconsEvents[k] + "\" />" 
					specialOp = "<div class=\"" + className + 
                                                    "\" style=\"float: right; vertical-align:top;\">" + 
                                                    imgTag + "</div>"
				}
			}	
		}
		
		lis[i].innerHTML = "<div class=\"" + className + "\">" + specialOp  + lis[i].innerHTML + "</div>"

		
		inputNodes = lis[i].getElementsByTagName("input");
		for (j=0;j<inputNodes.length;j++) {
			inputNodes[j].style.visibility='visible';
		}

		for (j=0;j<spanNode.length;j++) {
			if(spanNode[j].getAttribute("class")=="history-user") {
				spanNode[j].setAttribute("class", className)
			}
		}
	}
}
					
function deluxeHistoryLoader() {
	if (document.URL.indexOf("&action=history")==-1) return;		
	getBots();
}	

addOnloadHook(deluxeHistoryLoader);

/* </pre>

== bouton Remplacement ==

<pre> */

/***
	*Expressions régulières
	*Auteur: ThomasV, Pathoschild
	*Note : cet outil utilise la syntaxe javascript : on utilise $ (et pas \) pour appeler un groupe dans la chaîne de remplacement.
	*Tutoriel : http://www.regular-expressions.info/tutorial.html
	****/
 
	/* create form */
	function custom() {
 
		/* if already open */
		if(document.getElementById('regexform')) customremove()
		else {	
                        editbox = document.getElementById('wpTextbox1');
			/* container */
			regexform = document.createElement('div');
			regexform.setAttribute('id','regexform');
			editbox.parentNode.insertBefore(regexform,editbox.parentNode.firstChild);
 
			/* form tag */
			var formform = document.createElement('form');
			formform.setAttribute('id','regexformform');
			formform.setAttribute('onSubmit','customgo(); return false;');
			regexform.appendChild(formform);
 
			// add input boxes
		        var newinput = document.createElement('input');
		        newinput.setAttribute('id','formsearch');
		        newlabel = document.createElement('label');
		        newlabel.setAttribute('for','formsearch');
			newlabel.appendChild(document.createTextNode("Remplacer "));
 
			formform.appendChild(newlabel);
			formform.appendChild(newinput);
 
			var newinput = document.createElement('input');
			newinput.setAttribute('id','formreplace');
			newlabel = document.createElement('label');
			newlabel.setAttribute('for','formreplace');
			newlabel.appendChild(document.createTextNode(' par '));
 
			formform.appendChild(newlabel);
			formform.appendChild(newinput);
 
			// go! link
			var go_button = document.createElement('input');
			go_button.setAttribute('type',"submit");
			go_button.setAttribute('title',"go!");
			go_button.setAttribute('value',"go!");
			formform.appendChild(go_button);
 
		}
	}
 
 
 
	/* run patterns */
	function customgo() {
		/* get search and replace strings */
 
                search = document.getElementById('formsearch').value;
		search = search.replace(/\\n/g, '\n');
 
                replace = document.getElementById('formreplace').value;
		replace = replace.replace(/\\n/g, '\n');
 
		/* convert input to regex */
 
		// without delimiters
		if(!search.match(/^\s*\/[\s\S]*\/[a-z]*\s*$/i)) {
			search = new RegExp(search,'g');
		}
		// with delimiters
		else {
			// break into parts
			var regpattern = search.replace(/^\s*\/([\s\S]*)\/[a-z]*\s*$/i,'$1');
			var regmodifiers = search.replace(/^\s*\/[\s\S]*\/([a-z]*)\s*$/,'$1');
			// filter invalid flags
			regmodifiers = regmodifiers.replace(/[^gim]/ig,'');
 
			search = new RegExp(regpattern, regmodifiers);
		}
 
		/* perform */
		editbox.value = editbox.value.replace(search,replace);
 
	}
 
	/* remove form */
	function customremove() {
		regexform.parentNode.removeChild(regexform);
		patterncount = -1;
	}
 
 
	/*******************
	*** create button
	********************/
        function add_regexp_button(){
 
             toolbar = document.getElementById("toolbar");
		  if(toolbar){
			var image = document.createElement("img");
			image.width = 23;
			image.height = 22;
			image.border = 0;
			image.className = "mw-toolbar-editbutton";
			image.style.cursor = "pointer";
			image.alt = "regexp";
			image.title = "Expression régulière";
			image.src = "http://upload.wikimedia.org/wikipedia/commons/a/a0/Button_references_alt.png";
			image.onclick = custom;
			toolbar.appendChild(image);
                 }
       }
 
       addOnloadHook(add_regexp_button)

/* </pre> */