MediaWiki:Refreshed.js

MediaWiki interface page

Note: After saving, you may have to bypass your browser's cache to see the changes.

document.getElementById('test1').innerHTML = '<div id="unitSelectContainer"><span class="unitSelect">Units: </span><select id="unitSelect" onchange="setPrefCookie()"><option value="default">Default</option><option value="metric">Metric</option><option value="imperial">Imperial</option></select></div>';

var x = document.getElementById("mw-content-text");
var lengthString = x.getElementsByClassName("convertable-length");
var lengthInitial = Array.prototype.map.call(
    lengthString,
    function(element) {
        return element.innerHTML;
    }
);
jQuery( document ).ready( function( $ ) {
    switchInitial();
} );

//source: w3schools
function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
    var expires = "expires="+d.toUTCString();
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}

function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1);
        }
        if (c.indexOf(name) == 0) {
            return c.substring(name.length, c.length);
        }
    }
    return "";
}
// end
function switchInitial() {
  var prefCookie = getCookie("unitsPref");
  if (prefCookie == "") {
    return;
  }
  document.getElementById("unitSelect").value = prefCookie;
  switchUnits();
}

function setPrefCookie() {
  var unitPref = document.getElementById("unitSelect").value;
  setCookie("unitsPref", unitPref, 1000);
  switchUnits();
}

function switchUnits() {
  var i;
  var prefCookie = getCookie("unitsPref");
  for (i = 0; i < lengthString.length; i++) {
    var lStripped = lengthInitial[i].replace(/[^0-9.]/g, "");
    if (prefCookie == "default") {
      lengthString[i].innerHTML = lengthInitial[i];
    }
    if (prefCookie == "metric") {
      if (lengthInitial[i].match(/(\sm\s|km|meter|cm)/)) {
        lengthString[i].innerHTML = lengthInitial[i];
      } else if (lengthString[i].innerHTML.match(/feet|foot/)) {
        lengthString[i].innerHTML = Math.round(lStripped * 0.3048) + " meters";
      } else if (lengthString[i].innerHTML.match(/mile/)) {
        lengthString[i].innerHTML = Math.round(lStripped * 1.609344) + " km";
      } else if (lengthString[i].innerHTML.match(/mph/)) {
        lengthString[i].innerHTML = Math.round(lStripped * 1.609344) + " km/h";
      } else if (lengthString[i].innerHTML.match(/inch/)) {
        lengthString[i].innerHTML = Math.round(lStripped * 2.54) + " cm";
      }
    }
    if (prefCookie == "imperial") {
      if (lengthInitial[i].match(/(feet|foot|inch|mile|mph)/)) {
        lengthString[i].innerHTML = lengthInitial[i];
      } else if (lengthString[i].innerHTML.match(/meter|metre|\sm\s/)) {
        lengthString[i].innerHTML = Math.round(lStripped * 3.28084) + " feet";
      }  else if (lengthString[i].innerHTML.match(/km$/)) {
        lengthString[i].innerHTML = Math.round(lStripped * 0.621371) + " miles";
      } else if (lengthString[i].innerHTML.match(/km\/h/)) {
        lengthString[i].innerHTML = Math.round(lStripped * 0.621371) + " mph";
      } else if (lengthString[i].innerHTML.match(/cm/)) {
        lengthString[i].innerHTML = Math.round(lStripped * 0.393701 * 10)/10 + " inches";
      }
    }
  }
}