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

MediaWiki:Common.js

De Gdn
Révision de 12 septembre 2009 à 09:37 par Galdrad (discuter | contributions) (Amélioration)

Aller à : navigation, rechercher

Note : après avoir enregistré vos modifications, il se peut que vous deviez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

  • Firefox / Safari : Maintenez la touche Maj (Shift) en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ou Ctrl-R (⌘-R sur un Mac) ;
  • Google Chrome : Appuyez sur Ctrl-Maj-R (⌘-Shift-R sur un Mac) ;
  • Internet Explorer : Maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ;
  • Opera : Videz le cache dans Outils → Préférences.
//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','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> */