Utilisateur:Zelda/japan.js

Un article de Wikipédia, l'encyclopédie libre.

Note : Après avoir publié la page, vous devrez forcer son rechargement pour voir les changements : Mozilla / Konqueror / Firefox : Shift-Ctrl-R, Internet Explorer / Opera : Ctrl-F5, Safari : Cmd-R.

//<pre><nowiki>
/**
 * Ajout d'un bouton à la toolbar d'édition
 * fonction copiée depuis insertButton()
 */
function addJapanButton() {
        var toolbar = document.getElementById("toolbar"); 
        if (!toolbar) return;
 
	var image = document.createElement("img");
        image.width = 23;
        image.height = 22;
        image.src = "http://upload.wikimedia.org/wikipedia/commons/e/ec/Button_base.png";
        image.border = 0;
        image.style.cursor = "pointer";
 
        var ref = document.createElement("a");
        ref.setAttribute("href", "javascript:japanConvert()");
        ref.setAttribute("accesskey", "<");
        ref.setAttribute("title", "Conversion en macrons");
        ref.appendChild(image);
 
        toolbar.appendChild(ref);
}
 
/**
 * Conversion des accents circonflexes vers des macrons
 */
function convertToMacrons(textToConvert) {
	var text = textToConvert;
	text = text.replace(new RegExp("aa", "g"), "ā").replace(new RegExp("Aa", "g"), "Ā");
	text = text.replace(new RegExp("ii", "g"), "ī").replace(new RegExp("Ii", "g"), "Ī");
	text = text.replace(new RegExp("ee", "g"), "ē").replace(new RegExp("Ee", "g"), "Ē");
	text = text.replace(new RegExp("uu", "g"), "ū").replace(new RegExp("Uu", "g"), "Ū");
	text = text.replace(new RegExp("oo", "g"), "ō").replace(new RegExp("Oo", "g"), "Ō");
	text = text.replace(new RegExp("ou", "g"), "ō").replace(new RegExp("Ou", "g"), "Ō");
	text = text.replace(new RegExp("â", "g"), "ā").replace(new RegExp("Â", "g"), "Ā");
	text = text.replace(new RegExp("î", "g"), "ī").replace(new RegExp("Î", "g"), "Ī");
	text = text.replace(new RegExp("ê", "g"), "ē").replace(new RegExp("Ê", "g"), "Ē");
	text = text.replace(new RegExp("û", "g"), "ū").replace(new RegExp("Û", "g"), "Ū");
	text = text.replace(new RegExp("ô", "g"), "ō").replace(new RegExp("Ô", "g"), "Ō");
	return text;
}
 
/**
 * fonction de conversion de texte sélectionnée
 * inspirée de insertTags(), elle même inspirée de phpBB
 */
function japanConvert() {
	var txtarea = document.getElementById("wpTextbox1");
	// IE
	if (document.selection  && !is_gecko) {
		var range = document.selection.createRange();
		var theSelection = range.text;
		if (!theSelection) {
			return;
		}
		txtarea.focus();
		range.text = convertToMacrons(theSelection);
	// Mozilla
	} else if(txtarea.selectionStart || txtarea.selectionStart == '0') {
		var replaced = false;
		var startPos = txtarea.selectionStart;
		var endPos = txtarea.selectionEnd;
		if (endPos-startPos) {
			replaced = true;
		}
		if (! replaced) {
			return;
		}
		var scrollTop = txtarea.scrollTop;
		var theSelection = (txtarea.value).substring(startPos, endPos);
		var replacedSelection = convertToMacrons(theSelection);
 
		txtarea.value = txtarea.value.substring(0, startPos) + replacedSelection +
			txtarea.value.substring(endPos, txtarea.value.length);
		txtarea.focus();
 
		//set new selection 
		var cPos = startPos+(replacedSelection.length);
		txtarea.selectionStart = cPos;
		txtarea.selectionEnd = cPos;
		txtarea.scrollTop = scrollTop;
	}
}
 
addLoadEvent(addJapanButton);
//</nowiki></pre>