Aller au contenu

Utilisateur:Dr Brains/Convert.js

Une page de Wikipédia, l'encyclopédie libre.
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) ;

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();"/>'
                           + '&nbsp;&nbsp;<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;
}