MediaWiki:Common.js: Difference between revisions
(Tested on another wiki. Feel free to rollback if this causes any problems.) |
(purge button) |
||
Line 1: | Line 1: | ||
/* Any JavaScript here will be loaded for all users on every page load. */ | /* Any JavaScript here will be loaded for all users on every page load. */ | ||
PurgeButtonText = 'Refresh'; | |||
importScriptPage('PurgeButton/code.js', 'dev'); | |||
function xp_at_level(level) | function xp_at_level(level) |
Revision as of 13:39, 1 October 2009
/* Any JavaScript here will be loaded for all users on every page load. */
PurgeButtonText = 'Refresh';
importScriptPage('PurgeButton/code.js', 'dev');
function xp_at_level(level)
{
if (level < 2)
return 0;
if (level == 2)
return 1000;
if (level <= 126)
return Math.ceil((Math.pow((level + 5), 5) - Math.pow(6, 5)) / 9.0);
return Math.round((Math.pow((level + 5), 5) - Math.pow(6, 5)) / 9.0);
}
function xp_to_next_level(level)
{
if (level < 0 || level > 274)
return 0;
return xp_at_level(level + 1) - xp_at_level(level);
}
function percent_xp_to_next_level(level, percent)
{
return Math.floor(xp_to_next_level(level) * percent / 100.0);
}
function format_xp(mystring)
{
var result;
var pos;
mystring += '';
if (mystring.length <= 3) {
result = mystring;
} else {
var count = 0;
result = "";
for (pos = mystring.length - 3; pos >= 0 && count < 20; pos -= 3, count++) {
if (result.length == 0)
result = mystring.substr(pos, 3);
else
result = mystring.substr(pos, 3) + "," + result;
}
if (pos > -3)
result = mystring.substr(0, 3+pos) + "," + result;
}
return result;
}
function calc_and_display_pxp(index)
{
var level = parseInt(document.getElementById("pxp_level_input_" + index).value);
var percent = parseFloat(document.getElementById("pxp_percent_input_" + index).value);
document.getElementById("pxp_result_" + index).innerHTML = " = " + format_xp(percent_xp_to_next_level(level, percent));
return false;
}
function hasClass(element, className)
{
return element.className.indexOf(className) != -1;
}
function createPXPCalculationForms()
{
var paras = document.getElementsByTagName("p");
var offset = 0;
for (var index = 0; index < paras.length; index++) {
if (hasClass(paras[index], "calc-pxp")) {
var form = document.createElement("form");
var input1 = document.createElement("input");
var input2 = document.createElement("input");
var input3 = document.createElement("input");
var span = document.createElement("span");
form.setAttribute("onSubmit", "return calc_and_display_pxp(" + offset + ");");
input1.setAttribute("size", "6");
input1.setAttribute("value", "200");
input1.setAttribute("id", "pxp_level_input_" + offset);
input2.setAttribute("size", "6");
input2.setAttribute("value", "10");
input2.setAttribute("id", "pxp_percent_input_" + offset);
input3.setAttribute("type", "button");
input3.setAttribute("value", "Calculate PXP");
input3.setAttribute("onclick", "javascript:calc_and_display_pxp(" + offset + ");");
span.setAttribute("id", "pxp_result_" + offset);
span.innerHTML = "??? xp";
form.appendChild(document.createTextNode("Level: "));
form.appendChild(input1);
form.appendChild(document.createTextNode(" Percent: "));
form.appendChild(input2);
form.appendChild(input3);
form.appendChild(span);
paras[index].appendChild(form);
offset++;
}
}
}
addOnloadHook(createPXPCalculationForms);