Utilisateur:Dr Brains/Convert.js
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) ;
Firefox (sur GNU/Linux) / Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.var Convert_Units = new Array();
Convert_Units["Longueur"] = new Array();
Convert_Units["Longueur"]["mètre en pied"] = function(unit){
return (unit/0.3048);
}
Convert_Units["Longueur"]["pied en mètre"] = function(unit){
return (unit*0.3048);
}
if( (mw.config.get('wgNamespaceNumber')>-1)&&( (mw.config.get('wgAction')=="edit")||(mw.config.get('wgAction')=="submit")) ){
addOnloadHook(Convert_AddButton);
document.write('<style type="text/css">'
+ '#MenuReplaceSpan{'
+ 'text-align:left;'
+ '}'
+ '</style>');
}
function Convert_AddButton(){
if(!document.editform) return;
var Toolbar = document.getElementById('toolbar');
if(!Toolbar){
Toolbar = document.createElement('div');
Toolbar.id = 'toolbar';
document.editform.insertBefore(Toolbar, document.editform.firstChild);
}
var button = '<img src="//upload.wikimedia.org/wikipedia/commons/3/37/Button_no_neutral.png" heigth="23" width="23" alt="Conversion" />';
var NewButton = document.createElement('a')
NewButton.title = "Convertir un nombre dans une autre unité";
NewButton.href="javascript:Convert_OpenMenu();";
NewButton.innerHTML = button;
Toolbar.appendChild(NewButton);
}
function Convert_Cancel(){
var MenuDiv = document.getElementById('Menu_Conversion');
MenuDiv.parentNode.removeChild(MenuDiv);
}
function Convert_OpenMenu(){
var OldMenuDiv = document.getElementById('Menu_Conversion');
if(OldMenuDiv){
Convert_Cancel();
return;
}
var Toolbar = document.getElementById('toolbar');
if(!Toolbar) Toolbar = document.getElementById('Oldbar');
var MenuDiv = document.createElement('div');
MenuDiv.id = 'Menu_Conversion';
Toolbar.parentNode.insertBefore(MenuDiv, Toolbar.nextSibling);
var MenuSelect = document.createElement('select');
MenuSelect.id = 'TypeSelect';
MenuSelect.innerHTML += '<option value="Type de conversion" disabled="disabled" selected="selected" >Type de conversion</option>';
for(var Type in Convert_Units){
if(!Convert_Units.hasOwnProperty(Type)) continue;
MenuSelect.innerHTML += '<optgroup label="'+Type+'" >'+Type+'</optgroup>';
for(var ConvertType in Convert_Units[Type]){
if(!Convert_Units[Type].hasOwnProperty(ConvertType)) continue;
MenuSelect.innerHTML += '<option value="'+Type+'||'+ConvertType+'" >'+ConvertType+'</option>';
}
}
MenuDiv.appendChild(MenuSelect);
var MenuReplace = document.createElement("span");
MenuReplace.id = 'MenuReplaceSpan';
MenuDiv.appendChild(MenuReplace);
MenuReplace.innerHTML = '<input id="Arrondi" type="text" value="0" />'
+ '<label for="Arrondi" >Arrondi</label>'
+ '<input type="button" value="Remplacer" onclick="Convert_Replace();" onselect="Convert_Replace();"/>'
+ ' <input type="button" value="Annuler" onclick="Convert_Cancel();" onselect="Convert_Cancel();"/>'
}
function Convert_Replace(){
var Select = document.getElementById('TypeSelect');
if(!Select) return;
var ConvertFunction = false;
var Selected = Select.getElementsByTagName('option');
for(var a=0;a<Selected.length;a++){
if(Selected[a].selected){
var TextSelected = Selected[a].value;
var Type = TextSelected.split("||")[0];
var ConvertType = TextSelected.split("||")[1];
if(!Type || !ConvertType) return;
ConvertFunction = Convert_Units[Type][ConvertType];
}
}
if(!ConvertFunction) return;
var TextArea = document.getElementById('wpTextbox1');
if(!TextArea) return;
var Round = 0;
var RoundInput = document.getElementById("Arrondi");
var RoundInputValue = parseInt(RoundInput.value);
if(!RoundInputValue){
RoundInput.value = Round;
}else{
Round = RoundInputValue;
}
if (document.selection && document.selection.createRange) { // IE/Opera
//save window scroll position
if (document.documentElement && document.documentElement.scrollTop)
var winScroll = document.documentElement.scrollTop
else if (document.body)
var winScroll = document.body.scrollTop;
//get current selection
TextArea.focus();
var range = document.selection.createRange();
selText = range.text;
if(selText.charAt(selText.length - 1) == ' ') { //exclude ending space char
selText = selText.substring(0, selText.length - 1);
}
if(!selText) return;
var ConvertedValue = Convert_Round(ConvertFunction(parseInt(selText)), Round);
if(!ConvertedValue) return;
range.text = ConvertedValue;
//restore window scroll position
if (document.documentElement && document.documentElement.scrollTop)
document.documentElement.scrollTop = winScroll
else if (document.body)
document.body.scrollTop = winScroll;
}else if (TextArea.selectionStart || TextArea.selectionStart == '0'){ // Mozilla
//save textarea scroll position
var textScroll = TextArea.scrollTop;
//get current selection
TextArea.focus();
var startPos = TextArea.selectionStart;
var endPos = TextArea.selectionEnd;
selText = TextArea.value.substring(startPos, endPos);
if(selText.charAt(selText.length - 1) == ' ') { //exclude ending space char
selText = selText.substring(0, selText.length - 1);
}
if(!selText) return;
var ConvertedValue = Convert_Round(ConvertFunction(parseInt(selText)), Round);
if(!ConvertedValue) return;
TextArea.value = TextArea.value.substring(0, startPos) + ConvertedValue + TextArea.value.substring(endPos, TextArea.value.length);
//restore textarea scroll position
TextArea.scrollTop = textScroll;
}
}
function Convert_Round(Result, Round){
Result = "" + Result;
var IntegerPart = Result.split(".")[0];
if(Round==0) return IntegerPart;
var FloatPart = Result.split(".")[1];
if(FloatPart.length<Round){
while(FloatPart.length<Round){
FloatPart += "0";
}
}else if(FloatPart.length>Round){
FloatPart = FloatPart.substring(0, Round);
}
return IntegerPart+"."+FloatPart;
}