MediaWiki:Common.js : Différence entre versions

De Clash of Clans France
Aller à : navigation, rechercher
m (Révocation des modifications de Menerv (discussion) vers la dernière version de BUCANERO)
Ligne 1 : Ligne 1 :
 
if (wgPageName === "Gemmes") {
 
if (wgPageName === "Gemmes") {
   importScriptPage('MediaWiki:GemCalculators.js');
+
 
 +
 
 +
 
 +
 
 +
var hasClass = (function() {
 +
  var reCache = {};
 +
  return function(element, className) {
 +
      return ( reCache[className] ? reCache[className] :
 +
        (reCache[className] = new RegExp( "(?:\\s|^)" + className +
 +
        "(?:\\s|$)" ) ) ).test(element.className);
 +
  };
 +
})();
 +
 +
function hasClassTest(element, className) {
 +
  // No reason to have two functions that do the same thing
 +
  // return element.className.indexOf(className) != -1;
 +
  return hasClass(element, className);
 +
}
 +
function doCalcDarkElixirToGems(resources) {
 +
  var ranges = [1,10,100,1000,10000,100000];
 +
  var gems = [1,5,25,125,600,3000];
 +
  var storagemax = 200000;
 +
 +
  if (isNaN(resources)) return("???");
 +
  else if (resources < 0) return("???");
 +
  else if (resources == 0) return(0);
 +
  else if (resources <= ranges[0]) return(gems[0]);
 +
 +
  for (var i = 1; i < ranges.length-1; i++)
 +
      if (resources <= ranges[i])
 +
        return(Math.round((resources - ranges[i-1])/((ranges[i] - ranges[i-1])/(gems[i] - gems[i-1])) + gems[i-1]));
 +
 +
  if (resources <= storagemax)
 +
      return(Math.round((resources - ranges[ranges.length-2])/((ranges[ranges.length-1] - ranges[ranges.length-2])/(gems[gems.length-1] - gems[gems.length-2])) + gems[gems.length-2]));         
 +
  else
 +
      return(doCalcDarkElixirToGems(resources % storagemax) + Math.floor(resources/storagemax)*doCalcDarkElixirToGems(storagemax));
 +
 +
  return("???");
 +
}
 +
 +
function doCalcResourceToGems(resources) {
 +
  var ranges = [100,1000,10000,100000,1000000,10000000];
 +
  var gems = [1,5,25,125,600,3000];
 +
  var storagemax = 8001000;
 +
 +
  if (isNaN(resources)) return("???");
 +
  else if (resources < 0) return("???");
 +
  else if (resources == 0) return(0);
 +
  else if (resources <= ranges[0]) return(gems[0]);
 +
 +
  for (var i = 1; i < ranges.length-1; i++)
 +
      if (resources <= ranges[i])
 +
        return(Math.round((resources - ranges[i-1])/((ranges[i] - ranges[i-1])/(gems[i] - gems[i-1])) + gems[i-1]));
 +
 +
  if (resources <= storagemax)
 +
      return(Math.round((resources - ranges[ranges.length-2])/((ranges[ranges.length-1] - ranges[ranges.length-2])/(gems[gems.length-1] - gems[gems.length-2])) + gems[gems.length-2]));         
 +
  else
 +
      return(doCalcResourceToGems(resources % storagemax) + Math.floor(resources/storagemax)*doCalcResourceToGems(storagemax));
 +
 +
  return("???");
 +
}
 +
 +
function doCalcTimeToGems(secondsinput) {
 +
  var timerange = [60,3600,86400,604800];
 +
  var gemsrange = [1,20,260,1000];
 +
 +
  if (isNaN(secondsinput)) secondsinput = 0;
 +
 +
  if (secondsinput < 0)
 +
      return "???";
 +
  else if (secondsinput === 0)
 +
      gems = 0;
 +
  else if (secondsinput <= 246)
 +
      gems = gemsrange[0];
 +
  else {
 +
      var idx = 3;
 +
 +
      for (var i = 1; i < timerange.length; i ++) {
 +
        if (secondsinput <= timerange[i]) {
 +
            idx = i;
 +
            break;
 +
        }
 +
      }
 +
 +
      gems = Math.ceil((secondsinput + 1 - timerange[idx - 1]) *
 +
        (gemsrange[idx] - gemsrange[idx - 1]) /
 +
        (timerange[idx] - timerange[idx - 1])) + gemsrange[idx - 1] - 1;
 +
  }
 +
 +
  return gems;
 +
}
 +
 +
/* doCalcGemToCash mis à jour le 29 Juin 2017 */
 +
function doCalcGemToCash(gemsinput) {
 +
  var cost = [1.09, 5.49, 10.99, 21.99, 54.99, 109.99];
 +
  var gems = [80, 500, 1200, 2500, 6500, 14000];
 +
 +
  if (isNaN(gemsinput)) return("???");
 +
 +
  if (gemsinput <= 0) return(0);
 +
 +
  for (var i = gems.length-1; i > 0; i--)
 +
      if (gemsinput > gems[i-1]*2)
 +
        return(cost[i] + doCalcGemToCash(gemsinput - gems[i]));
 +
 +
  return(cost[0] + doCalcGemToCash(gemsinput - gems[0]));
 +
}
 +
 +
function calcGemToCash(index) {
 +
  var gems = parseInt(document.getElementById("gem_input_" + index).value.replace(/,/g, ''));
 +
  document.getElementById("cash_result_" + index).innerHTML = " = " + Math.round(doCalcGemToCash(gems)*100)/100 + " €";
 +
 +
  return false;
 +
}
 +
 +
function calcResourceToGems(index) {
 +
  var resources = parseInt(document.getElementById("resource_input_" + index).value.replace(/,/g, ''));
 +
  var result    = doCalcResourceToGems(resources);
 +
 +
  if (result != 1)
 +
      document.getElementById("gem_result_" + index).innerHTML = " = " + result + " gemmes";
 +
  else
 +
      document.getElementById("gem_result_" + index).innerHTML = " = " + result + " gemme";   
 +
 +
  return false;
 +
}
 +
 +
function calcDarkElixirToGems(index) {
 +
  var resources = parseInt(document.getElementById("de_input_" + index).value.replace(/,/g, ''));
 +
  var result    = doCalcDarkElixirToGems(resources);
 +
 +
  if (result != 1)
 +
      document.getElementById("de_gem_result_" + index).innerHTML = " = " + result + " gemmes";
 +
  else
 +
      document.getElementById("de_gem_result_" + index).innerHTML = " = " + result + " gemme";   
 +
 +
  return false;
 +
}
 +
 +
function calcGemsToTime (index) {
 +
  var gems      = parseInt(document.getElementById("gems2_input_" + index).value.replace(/,/g, ''));
 +
  var timerange = [60,3600,86400,604800];
 +
  var gemsrange = [1,20,260,1000];
 +
  var seconds   = 0;
 +
  var days      = 0;
 +
  var hours    = 0;
 +
  var minutes  = 0;
 +
 +
  if (isNaN(gems)) gems = 0;
 +
 +
  if (gems < 0) {
 +
      document.getElementById("time_result_" + index).innerHTML = " = ???";
 +
      return false;
 +
  }
 +
  else if (gems == 0) {
 +
      seconds = 0;
 +
  }
 +
  else if (gems <= gemsrange[0]) {
 +
      seconds = 246;
 +
  }
 +
  else {
 +
      gems = gems + 1;
 +
 +
      if (gems <= gemsrange[1]) {
 +
          seconds = Math.ceil((gems - gemsrange[0])*((timerange[1] - timerange[0])/(gemsrange[1] - gemsrange[0])) + timerange[0])-1;
 +
      }
 +
      else if (gems <= gemsrange[2]) {
 +
          seconds = Math.ceil((gems - gemsrange[1])*((timerange[2] - timerange[1])/(gemsrange[2] - gemsrange[1])) + timerange[1])-1;
 +
      }
 +
      else {
 +
          seconds = Math.ceil((gems - gemsrange[2])*((timerange[3] - timerange[2])/(gemsrange[3] - gemsrange[2])) + timerange[2])-1;
 +
      }
 +
  }
 +
 +
  days    = Math.floor(seconds/(24*60*60));
 +
  seconds = seconds % (24*60*60);
 +
  hours  = Math.floor(seconds/(60*60));
 +
  seconds = seconds % (60*60);
 +
  minutes = Math.floor(seconds/60);
 +
  seconds = seconds % 60;
 +
 +
  document.getElementById("time_result_" + index).innerHTML = " = " + days + "j " + hours + "h " + minutes + "m " + seconds + "s";
 +
 +
  return false;
 +
}
 +
 +
function calcTimeToGems(index) {
 +
  var days    = parseInt(document.getElementById("days_input_" + index).value.replace(/,/g, ''));
 +
  var hours  = parseInt(document.getElementById("hours_input_" + index).value.replace(/,/g, ''));
 +
  var minutes = parseInt(document.getElementById("minutes_input_" + index).value.replace(/,/g, ''));
 +
  var seconds = parseInt(document.getElementById("seconds_input_" + index).value.replace(/,/g, ''));
 +
 +
  var ranges = [60,3600,86400,604800];
 +
  var gems  = [1,20,260,1000];
 +
  var result = 0;
 +
 +
  if (isNaN(days))    days = 0;
 +
  if (isNaN(hours))  hours = 0;
 +
  if (isNaN(minutes)) minutes = 0;
 +
  if (isNaN(seconds)) seconds = 0;
 +
 +
  seconds = seconds + minutes*60 + hours*3600 + days*86400;
 +
 +
  if (seconds < 0) {
 +
      result = "???"
 +
  }
 +
  else if (seconds == 0) {
 +
      result = 0;
 +
  }
 +
  else if (seconds <= ranges[0]) {
 +
      result = 1;
 +
  }
 +
  else if (seconds <= ranges[1]) {
 +
      result = Math.floor((seconds - ranges[0])/((ranges[1] - ranges[0])/(gems[1] - gems[0])) + gems[0]);
 +
  }
 +
  else if (seconds <= ranges[2]) {
 +
      result = Math.floor((seconds - ranges[1])/((ranges[2] - ranges[1])/(gems[2] - gems[1])) + gems[1]);
 +
  }
 +
  else {
 +
      result = Math.floor((seconds - ranges[2])/((ranges[3] - ranges[2])/(gems[3] - gems[2])) + gems[2]);
 +
  }
 +
 +
  if (result != 1) {
 +
      document.getElementById("gem_time_result_" + index).innerHTML = " = " + result + " gemmes";
 +
  }
 +
  else {
 +
      document.getElementById("gem_time_result_" + index).innerHTML = " = " + result + " gemme";   
 +
  }
 +
 +
  return false;
 +
}
 +
 +
function createGemToCashCalculator() {
 +
  var paras  = document.getElementsByTagName("p");
 +
  var offset = 0;
 +
 +
  for (var index = 0; index < paras.length; index++) {
 +
      if (hasClassTest(paras[index], "calc-g2c")) {
 +
        var form  = document.createElement("form");
 +
        var input1 = document.createElement("input");
 +
        var input2 = document.createElement("input");
 +
        var span  = document.createElement("span");
 +
 +
        form.setAttribute("onSubmit", "return calcGemToCash(" + offset + ");");
 +
        input1.setAttribute("size", "10");
 +
        input1.setAttribute("value", "0");
 +
        input1.setAttribute("id", "gem_input_" + offset);
 +
 +
        input2.setAttribute("type", "button");
 +
        input2.setAttribute("value", "Calculer le coût");
 +
        input2.setAttribute("onclick", "javascript:calcGemToCash(" + offset + ");");
 +
 +
        span.setAttribute("id", "cash_result_" + offset);
 +
        span.innerHTML = " = 0 €";
 +
 +
        form.appendChild(document.createTextNode("Gemmes: "));
 +
        form.appendChild(input1);
 +
        form.appendChild(input2);
 +
        form.appendChild(span);
 +
 +
        paras[index].appendChild(form);
 +
        offset++;
 +
      }
 +
  }   
 +
}
 +
 +
function createResourceToGemCalculator() {
 +
  var paras = document.getElementsByTagName("p");
 +
  var offset = 0;
 +
 +
  for (var index = 0; index < paras.length; index++) {
 +
      if (hasClassTest(paras[index], "calc-r2g")) {
 +
        var form  = document.createElement("form");
 +
        var input1 = document.createElement("input");
 +
        var input2 = document.createElement("input");
 +
        var span  = document.createElement("span");
 +
 +
        form.setAttribute("onSubmit", "return calcResourceToGems(" + offset + ");");
 +
        input1.setAttribute("size", "10");
 +
        input1.setAttribute("value", "0");
 +
        input1.setAttribute("id", "resource_input_" + offset);
 +
 +
        input2.setAttribute("type", "button");
 +
        input2.setAttribute("value", "Calculer le coût en gemmes");
 +
        input2.setAttribute("onclick", "javascript:calcResourceToGems(" + offset + ");");
 +
 +
        span.setAttribute("id", "gem_result_" + offset);
 +
        span.innerHTML = " = 0 gemme";
 +
 +
        form.appendChild(document.createTextNode("Or/Elixir: "));
 +
        form.appendChild(input1);
 +
        form.appendChild(input2);
 +
        form.appendChild(span);
 +
 +
        paras[index].appendChild(form);
 +
        offset++;
 +
      }
 +
  }   
 +
}
 +
 +
function createDarkElixirToGemCalculator() {
 +
  var paras = document.getElementsByTagName("p");
 +
  var offset = 0;
 +
 +
  for (var index = 0; index < paras.length; index++) {
 +
      if (hasClassTest(paras[index], "calc-de2g")) {
 +
        var form  = document.createElement("form");
 +
        var input1 = document.createElement("input");
 +
        var input2 = document.createElement("input");
 +
        var span  = document.createElement("span");
 +
 +
        form.setAttribute("onSubmit", "return calcDarkElixirToGems(" + offset + ");");
 +
        input1.setAttribute("size", "10");
 +
        input1.setAttribute("value", "0");
 +
        input1.setAttribute("id", "de_input_" + offset);
 +
 +
        input2.setAttribute("type", "button");
 +
        input2.setAttribute("value", "Calculer le coût en gemmes");
 +
        input2.setAttribute("onclick", "javascript:calcDarkElixirToGems(" + offset + ");");
 +
 +
        span.setAttribute("id", "de_gem_result_" + offset);
 +
        span.innerHTML = " = 0 gemme";
 +
 +
        form.appendChild(document.createTextNode("Elixir noir: "));
 +
        form.appendChild(input1);
 +
        form.appendChild(input2);
 +
        form.appendChild(span);
 +
 +
        paras[index].appendChild(form);
 +
        offset++;
 +
      }
 +
  }   
 +
}
 +
 +
function createGemsToTimeCalculator() {
 +
  var paras = document.getElementsByTagName("p");
 +
  var offset = 0;
 +
 +
  for (var index = 0; index < paras.length; index++) {
 +
      if (hasClassTest(paras[index], "calc-g2t")) {
 +
        var form  = document.createElement("form");
 +
        var input1 = document.createElement("input");
 +
        var input2 = document.createElement("input");
 +
        var span  = document.createElement("span");
 +
 +
        form.setAttribute("onSubmit", "return calcGemsToTime(" + offset + ");");
 +
        input1.setAttribute("size", "10");
 +
        input1.setAttribute("value", "0");
 +
        input1.setAttribute("id", "gems2_input_" + offset);
 +
 +
        input2.setAttribute("type", "button");
 +
        input2.setAttribute("value", "Calculer le temps");
 +
        input2.setAttribute("onclick", "javascript:calcGemsToTime(" + offset + ");");
 +
 +
        span.setAttribute("id", "time_result_" + offset);
 +
        span.innerHTML = " = 0j 0h 0m 0s";
 +
 +
        form.appendChild(document.createTextNode("Gemmes: "));
 +
        form.appendChild(input1);
 +
        form.appendChild(input2);
 +
        form.appendChild(span);
 +
 +
        paras[index].appendChild(form);
 +
        offset++;
 +
      }
 +
  }   
 +
}
 +
 +
function createTimeToGemCalculator() {
 +
  var paras = document.getElementsByTagName("p");
 +
  var offset = 0;
 +
 +
  for (var index = 0; index < paras.length; index++) {
 +
      if (hasClassTest(paras[index], "calc-t2g")) {
 +
        var form  = document.createElement("form");
 +
        var input1 = document.createElement("input");
 +
        var input2 = document.createElement("input");
 +
        var input3 = document.createElement("input");
 +
        var input4 = document.createElement("input");
 +
        var input5 = document.createElement("input");
 +
        var span  = document.createElement("span");
 +
 +
        form.setAttribute("onSubmit", "return calcTimeToGems(" + offset + ");");
 +
        input1.setAttribute("size", "5");
 +
        input1.setAttribute("value", "0");
 +
        input1.setAttribute("id", "days_input_" + offset);
 +
 +
        input2.setAttribute("size", "5");
 +
        input2.setAttribute("value", "0");
 +
        input2.setAttribute("id", "hours_input_" + offset);
 +
 +
        input3.setAttribute("size", "5");
 +
        input3.setAttribute("value", "0");
 +
        input3.setAttribute("id", "minutes_input_" + offset);
 +
 +
        input4.setAttribute("size", "5");
 +
        input4.setAttribute("value", "0");
 +
        input4.setAttribute("id", "seconds_input_" + offset);
 +
 +
        input5.setAttribute("type", "button");
 +
        input5.setAttribute("value", "Calculer le coût en gemmes");
 +
        input5.setAttribute("onclick", "javascript:calcTimeToGems(" + offset + ");");
 +
 +
        span.setAttribute("id", "gem_time_result_" + offset);
 +
        span.innerHTML = " = 0 gemme";
 +
 +
        form.appendChild(document.createTextNode("J: "));
 +
        form.appendChild(input1);
 +
        form.appendChild(document.createTextNode(" H: "));
 +
        form.appendChild(input2);
 +
        form.appendChild(document.createTextNode(" M: "));
 +
        form.appendChild(input3);
 +
        form.appendChild(document.createTextNode(" S: "));
 +
        form.appendChild(input4);
 +
        form.appendChild(input5);
 +
        form.appendChild(span);
 +
 +
        paras[index].appendChild(form);
 +
        offset++;
 +
      }
 +
  }   
 +
}
 +
 +
addOnloadHook(createGemToCashCalculator);
 +
addOnloadHook(createTimeToGemCalculator);
 +
addOnloadHook(createResourceToGemCalculator);
 +
addOnloadHook(createGemsToTimeCalculator);
 +
addOnloadHook(createDarkElixirToGemCalculator);
 +
 
 +
 
 +
 
 +
 
 
}
 
}

Version du 10 mars 2018 à 14:49

if (wgPageName === "Gemmes") {




var hasClass = (function() {
   var reCache = {};
   return function(element, className) {
      return ( reCache[className] ? reCache[className] :
         (reCache[className] = new RegExp( "(?:\\s|^)" + className +
         "(?:\\s|$)" ) ) ).test(element.className);
   };
})();
 
function hasClassTest(element, className) {
   // No reason to have two functions that do the same thing
   // return element.className.indexOf(className) != -1;
   return hasClass(element, className);
}
function doCalcDarkElixirToGems(resources) {
   var ranges = [1,10,100,1000,10000,100000];
   var gems = [1,5,25,125,600,3000];
   var storagemax = 200000;
 
   if (isNaN(resources)) return("???");
   else if (resources < 0) return("???");
   else if (resources == 0) return(0);
   else if (resources <= ranges[0]) return(gems[0]);
 
   for (var i = 1; i < ranges.length-1; i++)
      if (resources <= ranges[i]) 
         return(Math.round((resources - ranges[i-1])/((ranges[i] - ranges[i-1])/(gems[i] - gems[i-1])) + gems[i-1]));
 
   if (resources <= storagemax)
      return(Math.round((resources - ranges[ranges.length-2])/((ranges[ranges.length-1] - ranges[ranges.length-2])/(gems[gems.length-1] - gems[gems.length-2])) + gems[gems.length-2]));           
   else 
      return(doCalcDarkElixirToGems(resources % storagemax) + Math.floor(resources/storagemax)*doCalcDarkElixirToGems(storagemax));
 
   return("???");
}
 
function doCalcResourceToGems(resources) {
   var ranges = [100,1000,10000,100000,1000000,10000000];
   var gems = [1,5,25,125,600,3000];
   var storagemax = 8001000;
 
   if (isNaN(resources)) return("???");
   else if (resources < 0) return("???");
   else if (resources == 0) return(0);
   else if (resources <= ranges[0]) return(gems[0]);
 
   for (var i = 1; i < ranges.length-1; i++)
      if (resources <= ranges[i]) 
         return(Math.round((resources - ranges[i-1])/((ranges[i] - ranges[i-1])/(gems[i] - gems[i-1])) + gems[i-1]));
 
   if (resources <= storagemax)
      return(Math.round((resources - ranges[ranges.length-2])/((ranges[ranges.length-1] - ranges[ranges.length-2])/(gems[gems.length-1] - gems[gems.length-2])) + gems[gems.length-2]));           
   else 
      return(doCalcResourceToGems(resources % storagemax) + Math.floor(resources/storagemax)*doCalcResourceToGems(storagemax));
 
   return("???");
}
 
function doCalcTimeToGems(secondsinput) {
   var timerange = [60,3600,86400,604800];
   var gemsrange = [1,20,260,1000];
 
   if (isNaN(secondsinput)) secondsinput = 0;
 
   if (secondsinput < 0)
      return "???";
   else if (secondsinput === 0)
      gems = 0;
   else if (secondsinput <= 246)
      gems = gemsrange[0];
   else {
      var idx = 3;
 
      for (var i = 1; i < timerange.length; i ++) {
         if (secondsinput <= timerange[i]) {
            idx = i;
            break;
         }
      }
 
      gems = Math.ceil((secondsinput + 1 - timerange[idx - 1]) *
         (gemsrange[idx] - gemsrange[idx - 1]) /
         (timerange[idx] - timerange[idx - 1])) + gemsrange[idx - 1] - 1;
   }
 
   return gems;
}
 
/* doCalcGemToCash mis à jour le 29 Juin 2017 */
function doCalcGemToCash(gemsinput) {
   var cost = [1.09, 5.49, 10.99, 21.99, 54.99, 109.99];
   var gems = [80, 500, 1200, 2500, 6500, 14000];
 
   if (isNaN(gemsinput)) return("???");
 
   if (gemsinput <= 0) return(0);
 
   for (var i = gems.length-1; i > 0; i--) 
      if (gemsinput > gems[i-1]*2)
         return(cost[i] + doCalcGemToCash(gemsinput - gems[i]));
 
   return(cost[0] + doCalcGemToCash(gemsinput - gems[0]));
}
 
function calcGemToCash(index) {
   var gems = parseInt(document.getElementById("gem_input_" + index).value.replace(/,/g, ''));
   document.getElementById("cash_result_" + index).innerHTML = " = " + Math.round(doCalcGemToCash(gems)*100)/100 + " €";
 
   return false;
}
 
function calcResourceToGems(index) {
   var resources = parseInt(document.getElementById("resource_input_" + index).value.replace(/,/g, ''));
   var result    = doCalcResourceToGems(resources);
 
   if (result != 1)
      document.getElementById("gem_result_" + index).innerHTML = " = " + result + " gemmes";
   else
      document.getElementById("gem_result_" + index).innerHTML = " = " + result + " gemme";    
 
   return false;
}
 
function calcDarkElixirToGems(index) {
   var resources = parseInt(document.getElementById("de_input_" + index).value.replace(/,/g, ''));
   var result    = doCalcDarkElixirToGems(resources);
 
   if (result != 1)
      document.getElementById("de_gem_result_" + index).innerHTML = " = " + result + " gemmes";
   else
      document.getElementById("de_gem_result_" + index).innerHTML = " = " + result + " gemme";    
 
   return false;
}
 
function calcGemsToTime (index) {
   var gems      = parseInt(document.getElementById("gems2_input_" + index).value.replace(/,/g, ''));
   var timerange = [60,3600,86400,604800];
   var gemsrange = [1,20,260,1000];
   var seconds   = 0;
   var days      = 0;
   var hours     = 0;
   var minutes   = 0;
 
   if (isNaN(gems)) gems = 0;
 
   if (gems < 0) {
       document.getElementById("time_result_" + index).innerHTML = " = ???";
       return false;
   }
   else if (gems == 0) {
       seconds = 0;
   }
   else if (gems <= gemsrange[0]) {
       seconds = 246;
   }
   else {
       gems = gems + 1;
 
       if (gems <= gemsrange[1]) {
           seconds = Math.ceil((gems - gemsrange[0])*((timerange[1] - timerange[0])/(gemsrange[1] - gemsrange[0])) + timerange[0])-1;
       }
       else if (gems <= gemsrange[2]) {
           seconds = Math.ceil((gems - gemsrange[1])*((timerange[2] - timerange[1])/(gemsrange[2] - gemsrange[1])) + timerange[1])-1;
       }
       else {
           seconds = Math.ceil((gems - gemsrange[2])*((timerange[3] - timerange[2])/(gemsrange[3] - gemsrange[2])) + timerange[2])-1;
       }
   }
 
   days    = Math.floor(seconds/(24*60*60));
   seconds = seconds % (24*60*60);
   hours   = Math.floor(seconds/(60*60));
   seconds = seconds % (60*60);
   minutes = Math.floor(seconds/60);
   seconds = seconds % 60;
 
   document.getElementById("time_result_" + index).innerHTML = " = " + days + "j " + hours + "h " + minutes + "m " + seconds + "s";
 
   return false;
}
 
function calcTimeToGems(index) {
   var days    = parseInt(document.getElementById("days_input_" + index).value.replace(/,/g, ''));
   var hours   = parseInt(document.getElementById("hours_input_" + index).value.replace(/,/g, ''));
   var minutes = parseInt(document.getElementById("minutes_input_" + index).value.replace(/,/g, ''));
   var seconds = parseInt(document.getElementById("seconds_input_" + index).value.replace(/,/g, ''));
 
   var ranges = [60,3600,86400,604800];
   var gems   = [1,20,260,1000];
   var result = 0;
 
   if (isNaN(days))    days = 0;
   if (isNaN(hours))   hours = 0;
   if (isNaN(minutes)) minutes = 0;
   if (isNaN(seconds)) seconds = 0;
 
   seconds = seconds + minutes*60 + hours*3600 + days*86400;
 
   if (seconds < 0) {
       result = "???"
   }
   else if (seconds == 0) {
       result = 0;
   }
   else if (seconds <= ranges[0]) {
      result = 1;
   }
   else if (seconds <= ranges[1]) {
      result = Math.floor((seconds - ranges[0])/((ranges[1] - ranges[0])/(gems[1] - gems[0])) + gems[0]);
   }
   else if (seconds <= ranges[2]) {
      result = Math.floor((seconds - ranges[1])/((ranges[2] - ranges[1])/(gems[2] - gems[1])) + gems[1]);
   }
   else {
      result = Math.floor((seconds - ranges[2])/((ranges[3] - ranges[2])/(gems[3] - gems[2])) + gems[2]);
   }
 
   if (result != 1) {
       document.getElementById("gem_time_result_" + index).innerHTML = " = " + result + " gemmes";
   }
   else {
       document.getElementById("gem_time_result_" + index).innerHTML = " = " + result + " gemme";    
   }
 
   return false;
}
 
function createGemToCashCalculator() {
   var paras  = document.getElementsByTagName("p");
   var offset = 0;
 
   for (var index = 0; index < paras.length; index++) {
      if (hasClassTest(paras[index], "calc-g2c")) {
         var form   = document.createElement("form");
         var input1 = document.createElement("input");
         var input2 = document.createElement("input");
         var span   = document.createElement("span");
 
         form.setAttribute("onSubmit", "return calcGemToCash(" + offset + ");");
         input1.setAttribute("size", "10");
         input1.setAttribute("value", "0");
         input1.setAttribute("id", "gem_input_" + offset);
 
         input2.setAttribute("type", "button");
         input2.setAttribute("value", "Calculer le coût");
         input2.setAttribute("onclick", "javascript:calcGemToCash(" + offset + ");");
 
         span.setAttribute("id", "cash_result_" + offset);
         span.innerHTML = " = 0 €";
 
         form.appendChild(document.createTextNode("Gemmes: "));
         form.appendChild(input1);
         form.appendChild(input2);
         form.appendChild(span);
 
         paras[index].appendChild(form);
         offset++;
      }
   }     
}
 
function createResourceToGemCalculator() {
   var paras = document.getElementsByTagName("p");
   var offset = 0;
 
   for (var index = 0; index < paras.length; index++) {
      if (hasClassTest(paras[index], "calc-r2g")) {
         var form   = document.createElement("form");
         var input1 = document.createElement("input");
         var input2 = document.createElement("input");
         var span   = document.createElement("span");
 
         form.setAttribute("onSubmit", "return calcResourceToGems(" + offset + ");");
         input1.setAttribute("size", "10");
         input1.setAttribute("value", "0");
         input1.setAttribute("id", "resource_input_" + offset);
 
         input2.setAttribute("type", "button");
         input2.setAttribute("value", "Calculer le coût en gemmes");
         input2.setAttribute("onclick", "javascript:calcResourceToGems(" + offset + ");");
 
         span.setAttribute("id", "gem_result_" + offset);
         span.innerHTML = " = 0 gemme";
 
         form.appendChild(document.createTextNode("Or/Elixir: "));
         form.appendChild(input1);
         form.appendChild(input2);
         form.appendChild(span);
 
         paras[index].appendChild(form);
         offset++;
      }
   }     
}
 
function createDarkElixirToGemCalculator() {
   var paras = document.getElementsByTagName("p");
   var offset = 0;
 
   for (var index = 0; index < paras.length; index++) {
      if (hasClassTest(paras[index], "calc-de2g")) {
         var form   = document.createElement("form");
         var input1 = document.createElement("input");
         var input2 = document.createElement("input");
         var span   = document.createElement("span");
 
         form.setAttribute("onSubmit", "return calcDarkElixirToGems(" + offset + ");");
         input1.setAttribute("size", "10");
         input1.setAttribute("value", "0");
         input1.setAttribute("id", "de_input_" + offset);
 
         input2.setAttribute("type", "button");
         input2.setAttribute("value", "Calculer le coût en gemmes");
         input2.setAttribute("onclick", "javascript:calcDarkElixirToGems(" + offset + ");");
 
         span.setAttribute("id", "de_gem_result_" + offset);
         span.innerHTML = " = 0 gemme";
 
         form.appendChild(document.createTextNode("Elixir noir: "));
         form.appendChild(input1);
         form.appendChild(input2);
         form.appendChild(span);
 
         paras[index].appendChild(form);
         offset++;
      }
   }     
}
 
function createGemsToTimeCalculator() {
   var paras = document.getElementsByTagName("p");
   var offset = 0;
 
   for (var index = 0; index < paras.length; index++) {
      if (hasClassTest(paras[index], "calc-g2t")) {
         var form   = document.createElement("form");
         var input1 = document.createElement("input");
         var input2 = document.createElement("input");
         var span   = document.createElement("span");
 
         form.setAttribute("onSubmit", "return calcGemsToTime(" + offset + ");");
         input1.setAttribute("size", "10");
         input1.setAttribute("value", "0");
         input1.setAttribute("id", "gems2_input_" + offset);
 
         input2.setAttribute("type", "button");
         input2.setAttribute("value", "Calculer le temps");
         input2.setAttribute("onclick", "javascript:calcGemsToTime(" + offset + ");");
 
         span.setAttribute("id", "time_result_" + offset);
         span.innerHTML = " = 0j 0h 0m 0s";
 
         form.appendChild(document.createTextNode("Gemmes: "));
         form.appendChild(input1);
         form.appendChild(input2);
         form.appendChild(span);
 
         paras[index].appendChild(form);
         offset++;
      }
   }     
}
 
function createTimeToGemCalculator() {
   var paras = document.getElementsByTagName("p");
   var offset = 0;
 
   for (var index = 0; index < paras.length; index++) {
      if (hasClassTest(paras[index], "calc-t2g")) {
         var form   = document.createElement("form");
         var input1 = document.createElement("input");
         var input2 = document.createElement("input");
         var input3 = document.createElement("input");
         var input4 = document.createElement("input");
         var input5 = document.createElement("input");
         var span   = document.createElement("span");
 
         form.setAttribute("onSubmit", "return calcTimeToGems(" + offset + ");");
         input1.setAttribute("size", "5");
         input1.setAttribute("value", "0");
         input1.setAttribute("id", "days_input_" + offset);
 
         input2.setAttribute("size", "5");
         input2.setAttribute("value", "0");
         input2.setAttribute("id", "hours_input_" + offset);
 
         input3.setAttribute("size", "5");
         input3.setAttribute("value", "0");
         input3.setAttribute("id", "minutes_input_" + offset);
 
         input4.setAttribute("size", "5");
         input4.setAttribute("value", "0");
         input4.setAttribute("id", "seconds_input_" + offset);
 
         input5.setAttribute("type", "button");
         input5.setAttribute("value", "Calculer le coût en gemmes");
         input5.setAttribute("onclick", "javascript:calcTimeToGems(" + offset + ");");
 
         span.setAttribute("id", "gem_time_result_" + offset);
         span.innerHTML = " = 0 gemme";
 
         form.appendChild(document.createTextNode("J: "));
         form.appendChild(input1);
         form.appendChild(document.createTextNode(" H: "));
         form.appendChild(input2);
         form.appendChild(document.createTextNode(" M: "));
         form.appendChild(input3);
         form.appendChild(document.createTextNode(" S: "));
         form.appendChild(input4);
         form.appendChild(input5);
         form.appendChild(span);
 
         paras[index].appendChild(form);
         offset++;
      }
   }     
}
 
addOnloadHook(createGemToCashCalculator);
addOnloadHook(createTimeToGemCalculator);
addOnloadHook(createResourceToGemCalculator);
addOnloadHook(createGemsToTimeCalculator);
addOnloadHook(createDarkElixirToGemCalculator);




}