Aller au contenu

Utilisateur:Mirabel75/common.js

La bibliothèque libre.

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 : Allez dans Menu → Settings (Opera → Préférences sur un Mac) et ensuite à Confidentialité & sécurité → Effacer les données d'exploration → Images et fichiers en cache.
// [[Catégorie:JavaScript du Wiktionnaire]]
importScriptFromWikipedia('MediaWiki:Gadget-sel_t.js');
importScriptFromWikipedia('MediaWiki:Gadget-nuxedtoolkit.js');
//importScriptFromWikipedia('MediaWiki:Gadget-searchbox.js');
importStylesheetFromWikipedia('MediaWiki:Gadget-searchbox.css');


// test, line#0
 
// EOC@line#24
	var tmp_VERSION = '2.2.2';
// EOC@line#30
if (typeof(sel_t)!='object')
{
//	importScript('User:Nux/sel_t.js')
	alert('Probleme sel_t.js');
}
if (typeof (nuxedtoolkit)!='object')
{
//	importScript('User:Nux/nuxedtoolkit.js')
	alert('Probleme nuxedtoolkit.js');
}
// EOC@line#42
//importStylesheet('User:Nux/SearchBox.css');
// EOC@line#48
var tmp_nuxsr_lang = {'_' : ''
	,'_num_ ocurrences of _str_ replaced with _str_' : 'Remplacement de $1 [$2] par [$3].'
	,'searching from the beginning' : 'Recherche depuis le début'
	,'name conflict error' : 'Erreur fatale : conflit de nom.'
};
// EOC@line#58
if (nuxsr!==undefined)
{
	alert(tmp_nuxsr_lang['name conflict error']);
}
var nuxsr = new Object();
nuxsr.ver = nuxsr.version = tmp_VERSION;
nuxsr.lang = tmp_nuxsr_lang;
 
 
 
nuxsr.btns =
{
	sr :
	{
		attrs :
		{
			title : 'Rechercher et remplacer',
			alt : "Boite",
			style : "width:auto;height:auto",
			id : 'SearchIcon'
		},
		icons :
		{
			oldbar : '//upload.wikimedia.org/wikipedia/commons/f/f3/Buttonnahled.png',
			newbar : '//commons.wikimedia.org/w/thumb.php?f=Buttonnahled.png&width=21px'
		}
	},
	tc :
	{
		attrs :
		{
			title : 'Modifier la casse',
			alt : "Casse",
			style : "width:auto;height:auto"
		},
		icons :
		{
			oldbar : '//upload.wikimedia.org/wikipedia/commons/1/12/Button_case.png',
			newbar : '//commons.wikimedia.org/w/thumb.php?f=Button_case.png&width=21px'
		}
	},
	so1 :
	{
		attrs :
		{
			title : 'Trier dans l\'ordre alphabétique',
			alt : "Trier haut",
			style : "width:auto;height:auto"
		},
		icons :
		{
			oldbar : '//upload.wikimedia.org/wikipedia/commons/6/6f/Button_arrow_up.PNG',
			newbar : '//commons.wikimedia.org/w/thumb.php?f=Button_arrow_up.PNG&width=21px'
		}
	},
	so2 :
	{
		attrs :
		{
			title : 'Trier dans l\'ordre décroissant',
			alt : "Trier bas",
			style : "width:auto;height:auto"
		},
		icons :
		{
			oldbar : '//upload.wikimedia.org/wikipedia/commons/2/2b/Button_arrow_down.PNG',
			newbar : '//commons.wikimedia.org/w/thumb.php?f=Button_arrow_down.PNG&width=21px'
		}
	}
};
 
 
 
nuxsr.boxHTML =
	'<form name="nuxsr_form"><div id="srBox" style="line-height: 1.5em;">'
		+'<div>'
			+'<span style="float:left;padding-top:0px;">'
				+'<span class="label">Rechercher</span><br />'
				+'<input size="25" type="text" name="nuxsr_search" id="nuxsr_search" accesskey="F" tabindex="8" onkeypress="event.which == 13 && nuxsr.next()"; value="" />'
			+'</span>'
			+'<span style="float:left;padding-top:0px;">'
				+'<span class="label">Remplacer</span><br />'
				+'<input size="25" type="text" name="nuxsr_replace" id="nuxsr_replace" accesskey="G" tabindex="9" onkeypress="event.which == 13 && nuxsr.next()"; value="" />'
			+'</span>'
			+'<span>'
				+'<label><input type="checkbox" name="nuxsr_case" onclick="nuxsr.t.focus()" tabindex="10" />Respecter la casse</label>'
				+'<label><input type="checkbox" name="nuxsr_regexp" onclick="nuxsr.t.focus()" tabindex="11" />RegEx</label>'
				+'<br />'
				+'<a href="javascript:nuxsr.back()" title="rechercher le précédent [alt-2]" accesskey="2">&lt;</a>&nbsp;'
				+'<a href="javascript:nuxsr.next()" title="rechercher le suivant [alt-3]" accesskey="3">suivant</a> &nbsp; '
				+'<a href="javascript:nuxsr.replace();nuxsr.back()" title="Remplacer le précédent [alt-4]" accesskey="4">&lt;</a>&nbsp;'
				+'<a href="javascript:nuxsr.replace()" title="Remplacer le courant">remplacer</a>&nbsp;'
				+'<a href="javascript:nuxsr.replace();nuxsr.next()" title="Remplacer le suivant [alt-5]" accesskey="5">&gt;</a> &nbsp; '
				+'<a href="javascript:nuxsr.replaceAll()" title="Remplacer dans toute la page [alt-7]" accesskey="7">tout remplacer</a> &nbsp; '
			+'</span>'
		+'</div>'
		+'<div style="clear:both;padding-top:3px;">'
			+'<span>'
				+'<a href="javascript:nuxsr.mem.remind()" style="background:inherit">Regex prédéfini</a>'
		//		+' <a href="javascript:nuxsr.mass_rep(nuxsr.mass_rep_htmlspecialchars)" title="Zamień specjalne znaki HTML na encje HTML">HTMLSpecialChars</a>'
			+'</span>'
			+' &nbsp; '
			+'<span>'
				+'<a href="javascript:nuxsr.gotoLine()" style="background:inherit" title="Aller à la ligne n°">Ligne n°</a>'
				+' <input type="text" name="nuxsr_goto_line" tabindex="12" style="width:55px" />'
			+'</span>'
		+'</div>'
		+'<div style="clear:both"></div>'
	+'</div></form>'
;
 
 
 
 
 
 
 
 
 
// nuxsr.i=document.getElementById('SearchIcon');
// EOC@line#154
nuxsr.getSearchString = function ()
{
	var str = nuxsr.s.value;
	if (!nuxsr.f.nuxsr_regexp.checked)
	{
		str = str.replace(/([\[\]\{\}\|\.\*\?\(\)\$\^\\])/g,'\\$1');
	}
	return str;
};
nuxsr.getReplaceString = function ()
{
	var str = nuxsr.r.value;
	if (!nuxsr.f.nuxsr_regexp.checked)
	{
 
		//str=str.replace(/([\$\\])/g,'\\$1');
	}
	else
	{
		//str=str.replace(/\\n/g,"\n").replace(/\\t/g,"\t").replace(/&backslash;/g,"\\").replace(/&dollar;/g,"\$")
		str = str.replace(/'/g,"\\'");
		eval ("str='"+str+"'");
	}
	return str;
};
// EOC@line#183
nuxsr.back = function ()
{
	if (nuxsr.s.value==='')
	{
		nuxsr.t.focus();
		return;
	}
 
	var searchString = nuxsr.getSearchString();
	var selBB = sel_t.getSelBound(nuxsr.t);
 
 
	searchString="^([\\s\\S]*)("+searchString+")";
	var re=new RegExp(searchString, (nuxsr.f.nuxsr_case.checked ? "" : "i"));
	var res = re.exec (nuxsr.t.value.substring(0,selBB.start));
	if (!res)
	{
		res = re.exec (nuxsr.t.value);
	}
 
 
	if (res)
	{
		sel_t.setSelRange (nuxsr.t, res[1].length, res[1].length+res[2].length)
	}
	else
	{
		selBB.start = selBB.end;
		sel_t.setSelBound (nuxsr.t, selBB, false);
	}
 
 
	nuxsr.sync();
}
 
nuxsr.next = function (norev)
{
	if (nuxsr.s.value==='')
	{
		nuxsr.t.focus();
		return
	}
 
	var searchString = nuxsr.getSearchString();
	var selBB = sel_t.getSelBound(nuxsr.t);
 
 
	var re=new RegExp(searchString, (nuxsr.f.nuxsr_case.checked ? "g" : "gi"));
	re.lastIndex=selBB.end;
	var res = re.exec (nuxsr.t.value);
	if (!res && !norev)
	{
		nuxsr.msg(nuxsr.lang['searching from the beginning']);
		re.lastIndex=0;
		res = re.exec (nuxsr.t.value);
	}
 
 
	if (res)
	{
		sel_t.setSelRange (nuxsr.t, res.index, res.index+res[0].length);
	}
	else
	{
		selBB.start = selBB.end;
		sel_t.setSelBound (nuxsr.t, selBB, false);
	}
 
 
	nuxsr.sync();
};
// EOC@line#258
nuxsr.replace = function ()
{
	//
 
	var str = sel_t.getSelStr(nuxsr.t, true);
 
	//
 
	var searchString = nuxsr.getSearchString();
	var replaceString = nuxsr.getReplaceString();
	var selBB = sel_t.getSelBound(nuxsr.t);
 
	var re=new RegExp(searchString, (nuxsr.f.nuxsr_case.checked ? "g" : "gi"));
 
	//
 
	var matchesArr = re.exec(str);
 
	if (matchesArr && matchesArr[0].length==str.length)
	{
 
		str = str.replace(re, replaceString);
 
 
		var sel_tmp = {
			start : selBB.start,
			strlen_post : str.length
		};
 
 
		sel_t.qsetSelStr(nuxsr.t, str, true);
 
 
		sel_t.setSelRange (nuxsr.t, sel_tmp.start, sel_tmp.start + sel_tmp.strlen_post);
	}
 
	//
 
	nuxsr.t.focus();
};
 
nuxsr.replaceAll = function ()
{
	//
 
	var str = sel_t.getSelStr(nuxsr.t, true);
 
	//
 
	var searchString = nuxsr.getSearchString();
	var replaceString = nuxsr.getReplaceString();
 
	var re=new RegExp(searchString, (nuxsr.f.nuxsr_case.checked ? "g" : "gi"));
 
	//
 
	var matchesArr = str.match(re);
 
	//
 
	str = str.replace(re, replaceString);
 
	//
 
	sel_t.qsetSelStr(nuxsr.t, str, true);
 
	nuxsr.t.focus();
 
	//
 
	if (matchesArr.length)
	{
		nuxsr.msg(nuxsr.lang['_num_ ocurrences of _str_ replaced with _str_'].replace(/\$1/, matchesArr.length).replace(/\$2/, nuxsr.s.value).replace(/\$3/, nuxsr.r.value));
	}
 
	return;
};
// EOC@line#339
nuxsr.toggleCase = function ()
{
	var selBB = sel_t.getSelBound(nuxsr.t);
	if (selBB.end>selBB.start)
	{
		var str = sel_t.getSelStr(nuxsr.t);
		if (str==str.toUpperCase())
		{
			str = str.toLowerCase();
		}
		else if (str==str.toLowerCase() && selBB.end-selBB.start>1)
		{
			str = str.substring(0,1).toUpperCase()+str.substring(1).toLowerCase();
		}
		else
		{
			str = str.toUpperCase();
		}
 
 
		sel_t.setSelStr(nuxsr.t, str, false);
	}
	nuxsr.sync();
};

nuxsr.sort1 = function ()
{
	var selBB = sel_t.getSelBound(nuxsr.t);
	if (selBB.end>selBB.start)
	{
		var str = sel_t.getSelStr(nuxsr.t);
                blackboard=str.split("\n");
		blackboard = blackboard.sort() ;
		sel_t.setSelStr(nuxsr.t, blackboard.join("\n"), false);
	}
	nuxsr.sync();
};

nuxsr.sort2 = function ()
{
	var selBB = sel_t.getSelBound(nuxsr.t);
	if (selBB.end>selBB.start)
	{
		var str = sel_t.getSelStr(nuxsr.t);
                blackboard=str.split("\n")
		blackboard = blackboard.reverse()
		sel_t.setSelStr(nuxsr.t, blackboard.join("\n"), false);
	}
	nuxsr.sync();
}

// EOC@line#368
nuxsr.sync = function ()
{
	nuxsr.t.focus();
}
// EOC@line#376
nuxsr.init = function ()
{
	if(document.getElementById('wpTextbox1'))
	{
		//
 
		nuxsr.t=document.editform.wpTextbox1;
 
 
		//
 
		nuxedtoolkit.prepare();
		var group_el = nuxedtoolkit.addGroup();
		nuxedtoolkit.addBtn(
			group_el, 'nuxsr.showHide()',
			nuxsr.btns.sr.icons, nuxsr.btns.sr.attrs
		);
		nuxedtoolkit.addBtn(
			group_el, 'nuxsr.toggleCase()',
			nuxsr.btns.tc.icons, nuxsr.btns.tc.attrs
		);
 		nuxedtoolkit.addBtn(
			group_el, 'nuxsr.sort1()',
			nuxsr.btns.so1.icons, nuxsr.btns.so1.attrs
		);
  		nuxedtoolkit.addBtn(
			group_el, 'nuxsr.sort2()',
			nuxsr.btns.so2.icons, nuxsr.btns.so2.attrs
		);

		nuxsr.i=document.getElementById('SearchIcon');
		nuxsr.i.accessKey="F";
 
		//
 
		var srbox = document.createElement('div');
		srbox.innerHTML = nuxsr.boxHTML;
		srbox.firstChild.style.display = 'none';
 
		//el=document.getElementById('editform');
		el=document.getElementById('wpTextbox1');
		el.parentNode.insertBefore(srbox,el);
		nuxsr.srbox = srbox;
 
		nuxsr.f=document.nuxsr_form;
		nuxsr.s=document.nuxsr_form.nuxsr_search;
		nuxsr.r=document.nuxsr_form.nuxsr_replace;
 
		//
 
		if (document.editform.messages === undefined)
		{
			el=document.createElement('textarea');
			el.cols=nuxsr.t.cols;
			el.style.cssText=nuxsr.t.style.cssText;
			el.rows=5;
			el.id='messages';
			el.style.display='none';
			el.style.width='auto';
			nuxsr.t.parentNode.insertBefore(el,nuxsr.t.nextSibling);
		}
	}
 
 
 
 
}
// EOC@line#440
nuxsr.showHide = function ()
{
	if (nuxsr.f.style.display=='none')
	{
 
		document.editform.messages.style.display='block';
		nuxsr.f.style.display='block';
		nuxsr.i.accessKey="none";
		//nuxsr.t.style.width='auto';
		nuxsr.s.focus();
// EOC@line#457
	}
	else
	{
		document.editform.messages.style.display='none';
		nuxsr.f.style.display='none';
 
		nuxsr.i.accessKey="F";
	}
}
// EOC@line#470
nuxsr.gotoLine = function ()
{
	if (nuxsr.f.nuxsr_goto_line.value==='')
	{
		nuxsr.t.focus();
		return;
	}
 
	var lineno = parseInt(nuxsr.f.nuxsr_goto_line.value);
 
 
	var index = (lineno==1) ? 0 : nuxsr.indexOfNthMatch (nuxsr.t.value, '\n', lineno-1);
 
 
	if (index>=0)
	{
		if (index>0)
		{
			index++;
		}
		sel_t.setSelRange (nuxsr.t, index, index);
	}
 
 
	nuxsr.sync();
};
 
nuxsr.indexOfNthMatch = function (haystack, needle, n)
{
    var index = -1;
 
    for (var i=1; i<=n && ((index=haystack.indexOf(needle, index+1)) != -1); i++)
    {
        if (i == n)
		{
            return index;
		}
    }
 
    return -1;
}
// EOC@line#516
//addOnloadHook(nuxsr.init);
 
//hookEvent("load", function() {
 
//	var el=document.getElementById('wpTextbox1');
//	if (el)
//		el.parentNode.insertBefore(nuxsr.srbox,el);
//});
if (mw.config.get('wgAction') == 'edit' || mw.config.get('wgAction') == 'submit')
{
$(nuxsr.init);
$(window).load(function() {
	var el=document.getElementById('wpTextbox1');
	if (el)
		el.parentNode.insertBefore(nuxsr.srbox,el);
});
}
// EOC@line#528
nuxsr.mem = {
s : [
	' - ',
	'"(.*?)"([^>])'
],
r : [
	' – ',
	'„$1”$2'
]
};
nuxsr.mem.index = -1;
nuxsr.mem.remind = function()
{
	nuxsr.mem.index++;
	nuxsr.mem.index%=nuxsr.mem.s.length;
	nuxsr.s.value = nuxsr.mem.s[nuxsr.mem.index];
	nuxsr.r.value = nuxsr.mem.r[nuxsr.mem.index];
}
// EOC@line#573
nuxsr.mass_rep_htmlspecialchars = {
	s : ['&',		'>',		'<'],
	r : ['&amp;',	'&gt;',		'&lt;']
};
 
nuxsr.mass_rep = function (obj)
{
	//
 
	//
	var prev_ser_RE = nuxsr.f.nuxsr_regexp.checked;
	nuxsr.f.nuxsr_regexp.checked = true;
// EOC@line#593
	//
 
	//
	var selBB = sel_t.getSelBound(nuxsr.t);
	var field_len = nuxsr.t.value.length;
	var field_len_diff = 0;
 
	//
 
	//
	for (var i=0; i<obj.s.length; i++)
	{
		nuxsr.s.value = obj.s[i];
		nuxsr.r.value = obj.r[i];
		nuxsr.replaceAll();
 
		// recalculate end of the user's selection
		if (selBB.start!=selBB.end)
		{
			field_len_diff = nuxsr.t.value.length - field_len;
			selBB.end += field_len_diff;
			field_len = nuxsr.t.value.length;
		}
 
		sel_t.setSelBound(nuxsr.t, selBB, false);
	}
 
	//
 
	//
	nuxsr.f.nuxsr_regexp.checked = prev_ser_RE;
}
 
 
 
 
nuxsr.msg = function (str)
{
	document.editform.messages.value = str+'\n'+document.editform.messages.value;
}
 
// test, EOF










//============================================================
// Script pour le Trévoux (Phe's product)
// le troisème document.write() n'est pas indispensable (il ajoute un bouton dans la fenêtre des diffs en dessous des diffs pour avoir des meilleurs diffs) et est utile pour voir plus facilement les modifications faites par le script. Le code est dans Trévoux.js, la plupart des regexp dans Trévoux_data_1.js pour alléger le script principal.
//============================================================
var server = mw.config.get('wgServer');
 
 jQuery.getScript(server + '/w/index.php?title=User:Acer11/Trévoux_data_1.js&action=raw&ctype=text/javascript', function() {
  jQuery.getScript(server + '/w/index.php?title=User:Acer11/Trévoux_data_2.js&action=raw&ctype=text/javascript', function() {
  mw.loader.load(server + '/w/index.php?title=User:Acer11/Trévoux.js&action=raw&ctype=text/javascript');
 });
});
 
// Facilite l'utilisation du Modèle EncL.
jQuery.getScript(server + '/w/index.php?title=User:Phe/Diderot.js&action=raw&ctype=text/javascript');
 
 
//Boutons pour le trévoux : sc et latin
if(mw.config.get('wgNamespaceNumber') == 104 && $.inArray(mw.config.get('wgAction'), ['edit', 'submit']) !== -1) {
 if(mw.user.options.get('usebetatoolbar')) {
  mw.loader.using('ext.wikiEditor', function() {
   $(function() {
    $('#wpTextbox1').wikiEditor('addToToolbar', {
      section: 'advanced',
      group: 'format',
      tools: {
        'sc': {
          label: 'Small caps',
          type: 'button',
          icon: '//upload.wikimedia.org/wikipedia/commons/6/6e/Small_caps.svg?size=23px',
          action: {
            type: 'encapsulate',
            options: {
              pre: '{{sc|',
              peri: '',
              post: '}}',
              ownline: false
            }
          }
        },
        'la': {
          label: 'Latin',
          type: 'button',
          icon: '//upload.wikimedia.org/wikipedia/commons/thumb/0/04/ISO_639_Icon_la.svg/23px-ISO_639_Icon_la.svg.png',
          action: {
            type: 'encapsulate',
            options: {
              pre: "''{{lang|la|",
              peri: '',
              post: "}}''",
              ownline: false
            }
          }
        },
        'section': {
          label: 'Section',
          type: 'button',
          icon: '//upload.wikimedia.org/wikipedia/commons/c/c5/Toolbaricon_bold_sharp.png',
          action: {
            type: 'encapsulate',
            options: {
 	      regex: /^\n?(☞? ?)(.*)$/,
 	      regexReplace: '##"$2"##\n<nowiki/>\n\n$1$2',
            }
          }
        }
      }
    });
   });
  });
 } else if (mwCustomEditButtons) {
   mwCustomEditButtons[mwCustomEditButtons.length] = {
    "imageFile": "//upload.wikimedia.org/wikipedia/commons/a/a2/SmallcapsButton.png",
    "speedTip": "small caps",
    "tagOpen": '{{sc|',
    "tagClose": '}}',
    "sampleText": ""};
   mwCustomEditButtons[mwCustomEditButtons.length] = {
    "imageFile": "/w/skins/common/images/button_sig.png",
    "speedTip": "latin",
    "tagOpen": "''{{lang|la|",
    "tagClose": "}}''",
    "sampleText": ""};
 }
}
 
//=======================================
//Test Catégories Encyclopédie
mw.loader.load(server + '/w/index.php?title=User:Acélan/Dictionnaire-cat.js&action=raw&ctype=text/javascript');
 
 
//==============================
// Boutons Théâtre
mw.loader.load(server + '/w/index.php?title=User:Hsarrazin/Theatre.js&action=raw&ctype=text/javascript');
importScript('User:Hsarrazin/theatre.js');







/*
if (mwCustomEditButtons) {
   mwCustomEditButtons[mwCustomEditButtons.length] = {
    "imageFile": "http://upload.wikimedia.org/wikipedia/commons/a/a2/SmallcapsButton.png",
    "speedTip": "small caps",
    "tagOpen": '{{sc|',
    "tagClose": '}}',
    "sampleText": ""};
}
*/







/* CharInsert specific */
window.charinsertDontMove = false;
window.charinsertMoveHigh = true;window.editToolsRecall = true;
window.charinsertCustom = { User: '|  =  {\{+}}  [\[+|]]  —  “+”  ‽  Æ  æ  Œ  œ  ℩  {\{hws|+|+}}  {\{hwe|+|+}}  <section.begin="+"_/>  <section.end="+"_/>' };
if(window.updateEditTools) window.updateEditTools();







mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:Hedonil/XTools/XTools.js&action=raw&ctype=text/javascript');







if (mw.config.get("wgPageName").search(/^.*/) == 0) {
    mw.loader.using("ext.gadget.ChangeCategorie", function() {
        change_category.set_user_data( { 
            list : [ "Aspect visuel de Wikisource", "Illustrations", "Promotion de Wikisource", "Fichiers PDF", "Fichiers DjVu", "Lettrines", "Wikisource technique", "Wikisource sonore", "Administration de Wikisource" ]
       });
    });
}




//Wikipedia:WikiProject User scripts | Scripts
 
function format() {
    var txt = document.editform.wpTextbox1;
    txt.value = typo(txt.value);
    txt.value = linksimplifyer(txt.value);
}
 
function typo(str){
 
     //espace 
    str = str.replace(/\n +/g, "\n");
 
 
    // espace

    str = str.replace(/(\n\n\n)+/g, "\n");
    str = str.replace(/- \n/g, "");
    // fix divers
    str = str.replace(/  /g, " ");
    str = str.replace(/\n +/g, "\n");
    str = str.replace(/ +\n/g, '\n');
    str = str.replace(/ +<br *\/?>/g, '<br />');
    str = str.replace(/\s+$/g, '');
    str = str.replace(/ +<\/ref>/g, '</ref>');
    str = str.replace(/ +}}/g, '}}');
    str = str.replace(/([^\!])--([^>])/g, '$1—$2');
    str = str.replace(/([^\|])-\n/g, '$1');
    str = str.replace(/  +/g, ' ');


 
    // typographie
    str = str.replace(/�/g, "");
    str = str.replace(/■/g, "");
    str = str.replace(/ -/g, " —");
    str = str.replace(/- /g, "— ");
    str = str.replace(/ - /g, " — ");
    str = str.replace(/ -,/g, " —,");
    str = str.replace(/ - ,/g, " —,");
 
    str = str.replace(/( *);( *)/g, " ; ");
    str = str.replace(/( *)\!( *)/g, " ! ");
    str = str.replace(/( *):( *)/g, " : ");
    str = str.replace(/( *)\?( *)/g, " ? ");
    str = str.replace(/( *),( *)/g, ", ");
    str = str.replace(/(\[\[.*?) :/g, "$1:");
    str = str.replace(/: (.*?\]\])/g, ":$1");
    str = str.replace(/\( /g, "(");
    str = str.replace(/\) /g, ")");
 
    str = str.replace(/([^'])'([^'])/g, "$1’$2");
    str = str.replace(/’ /g, "’");
    str = str.replace(/ ’/g, "’");
    str = str.replace(/ ’ /g, "’");
    str = str.replace(/ '',/g, "'',");
    str = str.replace(/ ''\./g, "''.");    
    str = str.replace(/ \./g, "\.");
    str = str.replace(/’test’/g, "'test'");
    str = str.replace(/\[\[[Ii]mage : /g, "[[Image:");
    str = str.replace(/\[\[[Ii]mage :/g, "[[Image:");
    str = str.replace(/\[\[[Ii]mage: /g, "[[Image:"); 
 
    str = str.replace(/\.\.\./g, "…");
    str = str.replace(/\.\.\.\.+/g, "\.\.\.");
    str = str.replace(/etc\.\.+/g, "etc\.");
 
    str = str.replace(/oeu/g, "œu");
    str = str.replace(/O[Ee]/g, "Œ");
 
    str = str.replace(/([^=]) ?"([^"].*?)"/g, "$1«$2»");
    str = str.replace(/( *)«( *)/g, " « ");
    str = str.replace(/\n «/g, "\n« ");
    str = str.replace(/( *)»( *)/g, " » ");
    str = str.replace(/ « text » /g, "\"text\"");
    str = str.replace(/» ,/g, "»,");
 
    str = str.replace(/(\f*)’(\f*)/g, "’");
 
    // fix catégories
    str = str.replace(/\[\[ ?[Cc]ategory/g, "[[Catégorie");
    str = str.replace(/\[\[ ?[Cc]atégorie ?: ?/g, "[[Catégorie:");
 
    // réparation liens internes
    str = str.replace(/\[\[ ?([^\]]*?) ?\]\]/g, "[[$1]]");
    str = str.replace(/\[\[([^\]]*?)( |_)#([^\]]*?)\]\]/g, "[[$1#$3]]");
 
    // syntaxe wiki
    str = str.replace(/<i>(.*?)<\/i>/gi, "''$1''");
    str = str.replace(/<b>(.*?)<\/b>/gi, "'''$1'''");
    str = str.replace(/<br\/>/gi, "<br />");
    str = str.replace(/<br>/gi, "<br />");
 
    //* puces
    str = str.replace(/^([\*#]+) /gm, "$1");
    str = str.replace(/^([\*#]+)/gm, "$1 ");
 
    //mise en page
    str = str.replace(/\n*(\{\{Titre)/g, "\n$1");
    str = str.replace(/\n*(\{\{Navigateur)/g, "\n$1");
    str = str.replace(/\[\[(.*?) —/g, "\[\[$1 -");
    str = str.replace(/\|( *)—( *)/g, "\|");

    //initiales
  
    str = str.replace(/(\nO )+/g, "\nÔ "); 
    str = str.replace(/(\nA )+/g, "\nÀ "); 
    str = str.replace(/([—\!\?\.\:] )O /g, "$1Ô ");     //fix pour Ô  
    str = str.replace(/([—\!\?\.\:] )A /g, "$1À ");   //fix pour À  
    str = str.replace(/Murdslone/g, "Murdstone"); 
    str = str.replace(/fauteurl/g, "fauteuil"); 
    str = str.replace(/foret/g, "forêt"); 
    str = str.replace(/ tète/g, " tête"); 
    str = str.replace(/M" /g, "\{\{Mrs\}\} ");
    str = str.replace(/Mme /g, "\{\{Mme\}\} ");
    str = str.replace(/Emilie/g, "Émilie"); 
    str = str.replace(/Edouard/g, "Édouard"); 
    str = str.replace(/iMurdstone/g, "Murdstone"); 
    str = str.replace(/Gomment/g, "Comment");
    str = str.replace(/Gomme/g, "Comme");
    str = str.replace(/faimse/g, "Tamise");
    str = str.replace(/ubstant/g, "ubliant");
    str = str.replace(/secole/g, "l’école");
    str = str.replace(/commense/g, "commence");
    str = str.replace(/môme/g, "même");
    str = str.replace(/Dr Strong/g, "\{\{Dr\}\} Strong");
    str = str.replace(/eft/g, "est");
    str = str.replace(/efpece/g, "espece");
    str = str.replace(/ufage/g, "usage");
    str = str.replace(/qus/g, "que");
    str = str.replace(/dift/g, "dist");
    str = str.replace(/fur-tout/g, "sur-tout");
    str = str.replace(/lorfq/g, "lorsq");
    str = str.replace(/toutà-coup/g, "tout-à-coup");
    str = str.replace(/dh/g, "dîn");
    str = str.replace(/M. Orner/g, "M. Omer");
    str = str.replace(/''voyez''vous/g, "voyez-vous");
    str = str.replace(/tran qu’il sement/g, "tranquillement");
    str = str.replace(/tran qu’il/g, "tranquil");
    str = str.replace(/visité/g, "visite");

    //mot entier
    str = str.replace(/(\ O )+/g, "\ Ô "); 
    str = str.replace(/(\ A )+/g, "\ À "); 
    str = str.replace(/Celte/g, "Cette"); 
    str = str.replace(/celte/g, "cette"); 
    str = str.replace(/fds/g, "fils"); 
    str = str.replace(/ebap./g, "chap."); 
    str = str.replace(/ehap./g, "chap.");
    str = str.replace(/cliap./g, "chap.");
    str = str.replace(/Epistémon/g, "Épistémon"); 


 
    return trim(str);
}







$(function() {
  $.typo.add(function(str) {
    str = str.replace(/( tète )+/g, " tête ");
    str = str.replace(/( tôte )+/g, " tête ");
    str = str.replace(/( môme )+/g, " même ");
    str = str.replace(/(…\. )+/g, "… ");
    str = str.replace(/(\.… )+/g, "… ");
    str = str.replace(/( …)+/g, "…");
    str = str.replace(/(‘)+/g, "’");
    str = str.replace(/(`)+/g, "’");
    str = str.replace(/(– )+/g, "— ");
    str = str.replace(/(-, )+/g, " ; ");
 
    str = str.replace(/([—\!\?\.\:] )O /g, "$1Ô ");     //fix pour Ô  
    str = str.replace(/([—\!\?\.\:] )A /g, "$1À ");     //fix pour À  - devrait générer moins de faux positifs que la situation actuelle
    str = str.replace(/(\nA )+/g, "\nÀ ");    // désactiver pour le Trévoux…
 
    str = str.replace(/\{\{lang\|([a-z])([a-z])\|''([^']*?)''([^\}]*)\}\}+/g, "''\{\{lang\|$1$2\|$3$4\}\}''");    //fix pour lang
    str = str.replace(/\{\{lang\|gr\|+/g, "\{\{lang\|grc\|");    //fix pour gr au lieu de grc
 
    str = str.replace(/\{\{réplique\|([^']*?)\}\}/gi, "\{\{Personnage\|$1\|c\}\}");    //fix pour Réplique -> Personnage (pb de fonctionnement)
    str = str.replace(/\{\{Personnage\|([a-zA-ZÉÈéèŒ\. \-]*?)\|c\}\}\{\{didascalie\|,?/g, "\{\{PersonnageD\|$1\|c\|");    //fix pour PersonnageD
 
    str = str.replace(/(<sup>er<\/sup>)+/g, "\{\{er\}\}"); // fix pour les abbréviations
    str = str.replace(/(\{\{e\|e\}\}<\/sup>)+/g, "\{\{e\}\}");
    str = str.replace(/(<sup>e<\/sup>)+/g, "\{\{e\}\}");
    str = str.replace(/(D<sup>r<\/sup>)+/g, "\{\{Dr\}\}");
    str = str.replace(/(M<sup>r<\/sup>)+/g, "\{\{Mr\}\}");
    str = str.replace(/(M<sup>me<\/sup>)+/g, "\{\{Mme\}\}");
    str = str.replace(/(M<sup>lle<\/sup>)+/g, "\{\{Mlle\}\}");
    str = str.replace(/(M<sup>elle<\/sup>)+/g, "\{\{Mlle\}\}");
    str = str.replace(/(2<sup>me<\/sup>)+/g, "\{\{2me\}\}");
 
    str = str.replace(/( <ref>)+/g, "<ref>"); //fix pour les ref
    str = str.replace(/<center>([^']*?)<\/center>/g, "\{\{c\|$1\}\}");  //fix pour les center
    str = str.replace(/<div align=\"center\" >([^']*?)<\/div>/g, "\{\{c\|$1\}\}");  //fix pour les div center
    str = str.replace(/<div style=\"text-align:center; \" \>([^']*?)<\/div>/g, "\{\{c\|$1\}\}");  //fix pour les div center
 
    str = str.replace(/  /g, " ");
    str = str.replace(/(_)+/g, " ");
 
    str = str.replace(/\n : */g, "\n:");             // fix pour les : dans les poèmes
    str = str.replace(/(:+) *: */g, "$1:");
    str = str.replace(/:: /g, "::");
    str = str.replace(/<poem>/g, "<poem class=\"verse\">");  //fix pour les poèmes
    str = str.replace(/class= « verse » /g, "class=\"verse\"");
 
    str = str.replace(/## « /g, "## \"");    // fix pour les sections
    str = str.replace(/ » ##/g, "\" ##");
 
    str = str.replace(/<big>(.*)<\/big>/gi, "$1"); //suppression des "big" 
    str = str.replace(/&#160;»/g, " »");
 
    str = str.replace(/ *\n/g, " ");     // Suppression des saut de ligne à l'intérieur d'un paragraphe -->
    str = str.replace(/  /g, "\n\n");               // Fix pour changement de paragraphe
    str = str.replace(/\n +/g, "\n\n");             // Fix pour changement de paragraphe impair
    str = str.replace(/ ?\n*$/g, "");               // Suppression saut de ligne fin de page
    return str;
  });
});





 
//simplifier certains liens : [[Dog|dog]] to [[dog]] and [[Dog|dogs]] to [[dog]]s
function linksimplifyer(str){
  var m = str.match(/\[\[([^[]*?)\|([^[]*?)\]\]/g);
  if (m)
  {
    for (var i = 0; i < m.length; i++)
    {
      var n_arr = m[i].toString().match(/\[\[([^[]*?)\|([^[]*?)\]\]/);
      var n = n_arr[0];
      var a = n_arr[1];
      var b = n_arr[2];
 
      if (b.indexOf(a) == 0 || b.indexOf(TurnFirstToLower(a)) == 0)
      {
        var k = n.replace(/\[\[([^\]\|]*?)\|(\1)([\w]*?)\]\]/i, "[[$2]]$3");
        str = str.replace(n, k);
      }
    }
  }
 
  str = str.replace(/\[\[([^\]\|]+)\|([^\]\|]+)\]\]([A-Za-z\'][A-Za-z]*)([\.\,\;\:\"\!\?\s\n])/g, "[[$1|$2$3]]$4");
 
  return str;
}
 
//trim start and end, trim spaces from the end of lines
function trim(str) {
   str = str.replace(/ $/gm, "");
   return str.replace(/^\s*|\s*$/g, "");
}
 
//turns first character to lowercase
function TurnFirstToLower(input) {
  if (input != "")
  {
    var input = trim(input);
    var temp = input.substr(0, 1);
    return temp.toLowerCase() + input.substr(1, input.length);
  }
  else
    return "";
}
 
$(document).ready(function () {
  if(document.forms.editform) {
    mw.util.addPortletLink('p-personal', 'javascript:format()', 'typo', 'ca-format', 'Corrections de la mise en page et de la typographie', '', document.getElementById('ca-edit'));
  }
});
 
function form() {
    var txt = document.editform.wpTextbox1;
    txt.value = fr(txt.value);
    txt.value = linksimplifyer(txt.value);
}
 
function fr(str){
 
    //descartes
    str = str.replace(/lorsque/g, "lors que");
    str = str.replace(/ss/g, "ſſ");
    str = str.replace(/ê/g, "eſ");
    str = str.replace(/ et /g, " & ");
    str = str.replace(/â/g, "a");
    str = str.replace(/s([a-zé])/g, "ſ$1");
    str = str.replace(/mouvements/g, "mouvemens");
    str = str.replace(/celui/g, "celuy");
    str = str.replace(/ ſoi/g, " ſoy");
    str = str.replace(/ici/g, "icy");
    str = str.replace(/notre/g, "noſtre");
    str = str.replace(/ô/g, "oſ");
    str = str.replace(/és/g, "ez");
    str = str.replace(/lui/g, "luy");
    str = str.replace(/ſait/g, "ſçait");
    str = str.replace(/quoi/g, "quoy");
    str = str.replace(/veine/g, "vene");
    str = str.replace(/très /g, "tres-");
    str = str.replace(/ moi /g, " moy ");
    str = str.replace(/([Tt])oi /g, "$1oy ");
    str = str.replace(/toi,/g, "toy,");
    str = str.replace(/ toi\./g, " toy.");
    str = str.replace(/([a-z])ait /g, "$1oit ");
    str = str.replace(/ ai /g, " ay ");
    str = str.replace(/ ’ai /g, " ’ay ");
    str = str.replace(/ effet /g, " effect ");
 
    return trim(str);
}
 
$(document).ready(function () {
  if(document.forms.editform) {
    mw.util.addPortletLink('p-personal', 'javascript:form()', 'fr', 'ca-form', 'Corrections de la mise en page et de la typographie', '', document.getElementById('ca-edit'));
  }
});






 
var predefinedSummaries = {
    "Liste": "",
    "Lien": "Lien(s)",
    "Mise à jour": "Mise à jour",
    "Ajout": "Ajout",
    "Correction" : "Correction",
    "Précision": "Précision",
    "Mise en forme": "Mise en forme",
    "Compléments": "Compléments",
    "Création": "Création"
};
 
$(document).ready(function () {
    var summary = document.getElementById("wpSummary");
    if (!summary) return;
 
    var dropdown = document.createElement("select");
    dropdown.style.width = "10%";
 
    for (var label in predefinedSummaries) {
        var option = document.createElement("option");
        option.setAttribute("value", predefinedSummaries[label]);
        option.appendChild(document.createTextNode(label));
        dropdown.appendChild(option);
    }
 
    dropdown.onchange = function () {
        summary.value = summary.value.replace(/(\/\*.*?\*\/\s+)?.*/,
            "$1" + dropdown.options[dropdown.selectedIndex].value);
    };
 
    summary.parentNode.insertBefore(dropdown, summary.nextSibling);
});