Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
/* Any JavaScript here will be loaded for all users on every page load. */
// Duplicate image list
importScript('User:Arkalor/dupimages.js');
/* --- Standard Functions --- */
/** name - cookie name, value - 'on' or 'off' or whatever, exdays - expiry of cookie in days */
function setCookie(name, value, exdays) { // Sets a cookie
value = name + "=" + escape(value);
if (exdays !== null) { var d = new Date(); value += ";expires=" + d.setDate(d.getDate() + exdays).toGMTString(); }
document.cookie = value;
}
/** name - cookie name, @return - cookie or empty string */
function getCookie(name) { // Gets a cookie
var c = document.cookie;
if (c.length > 0) {
var s = c.indexOf(name + "=");
if (s !== -1) {
var e = c.indexOf(";", s = s + name.length + 1);
return unescape(c.substring(s, (e !== -1) ? e : e = c.length));
}
}
return "";
}
/* --- Tooltips --- */
// default setting to turn tooltips on
var tooltipsOn = true;
var $tfb;
var $ttfb;
var $htt;
// hides the tooltip
function hideTip() {
$tfb.html("").removeClass("tooltip-ready").addClass("hidden").css("visibility", "hidden");
}
// displays the tooltip
function displayTip(e) {
$htt.not(":empty").removeClass("hidden").addClass("tooltip-ready");
moveTip(e);
$htt.not(":empty").css("visibility", "visible");
}
// moves the tooltip
function moveTip(e) {
var newTop = e.clientY + ((e.clientY > ($(window).height() / 2)) ? -($htt.not(".hidden").innerHeight() + 20) : 20);
var newLeft = e.clientX + ((e.clientX > ($(window).width() / 2)) ? -($htt.not(".hidden").innerWidth() + 20) : 20);
$htt.not(".hidden").css({
"position": "fixed",
"top": newTop + "px",
"left": newLeft + "px"
});
}
// AJAX tooltips
function showTip(e) {
$t = $(this);
$p = $t.parent();
if ($p.hasClass("selflink") == false) {
$t.removeAttr("title");
$p.removeAttr("title");
$tfb.load("/" + $t.data("tt").replace(/ /g, "_").replace(/\?/g, "%3F") + "?action=render div.tooltip-content", function () {
if ($tfb.html() == "") $tfb.html('<div class="tooltip-content"><b>Error</b><br />This target either has no tooltip<br />or was not intended to have one.</div>');
$tfb.find(".tooltip-content").css("display", "");
displayTip(e);
});
}
}
// quick tooltips
function hideTemplateTip() {
$ttfb.html("").removeClass("tooltip-ready").addClass("hidden");
}
function showTemplateTip(e) {
$ttfb.html('<div class="tooltip-content">' + $(this).next().html() + '</div>');
displayTip(e);
}
function ttBind() {
$t = $(this);
$p = $t.parent();
if ($p.hasClass("selflink") == false) {
$t.data("tt", $p.attr("title").replace(" (page does not exist)", "").replace("?", "%3F")).mouseover(showTip).mouseout(hideTip).mousemove(moveTip);
if ($p.hasClass("new")) {
els = '<sup><span class="plainlinks fromWikia">';
y = ($t.hasClass("itemlink")) ? 0 : 1;
z = ($t.hasClass("achievementlink")) ? 2 : 3;
for (x = y; x < z; x++) els += eLink(x, $t.data("tt").replace("Quest:", ""));
$p.after(els + '</span></sup>');
}
if (extDB != "http://www.asheron.wikia.com/") {
fullextURL = extDB + $t.data("tt");
$p.attr("href", fullextURL);
}
}
}
// check to see if it is active then do it
function ttMouseOver(foo) {
if (tooltipsOn && getCookie("wiki-tiploader") != "no") {
$("#WikiaArticle").mouseover(hideTip);
$("#WikiaArticle").append('<div id="tfb" class="htt"></div><div id="templatetfb" class="htt"><div>');
$tfb = $("#tfb");
$ttfb = $("#templatetfb");
$htt = $("#tfb,#templatetfb");
if (foo == 1) {
$("#WikiaArticle span.ajaxttlink").each(ttBind);
}
$("#WikiaArticle span.tttemplatelink").mouseover(showTemplateTip).mouseout(hideTemplateTip).mousemove(moveTip);
}
}
/* --- Calculate PXP --- */
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);
/* --- Collapsible Tables --- */
var autoCollapse = 2;
var collapseCaption = 'hide';
var expandCaption = 'show';
function hasClass( element, className ) {
var Classes = element.className.split( " " );
for ( var i = 0; i < Classes.length; i++ ) {
if ( Classes[i] == className ) {
return true;
}
}
return false;
}
function collapseTable( tableIndex ) {
var i;
var Button = document.getElementById( 'collapseButton' + tableIndex );
var Table = document.getElementById( 'collapsibleTable' + tableIndex );
if ( !Table || !Button ) {
return false;
}
var Rows = Table.getElementsByTagName( 'tr' );
if ( Button.firstChild.data == collapseCaption ) {
for ( i = 1; i < Rows.length; i++ ) {
Rows[i].style.display = 'none';
}
Button.firstChild.data = expandCaption;
} else {
for ( i = 1; i < Rows.length; i++ ) {
Rows[i].style.display = Rows[0].style.display;
}
Button.firstChild.data = collapseCaption;
}
}
function createCollapseButtons() {
var i;
var tableIndex = 0;
var NavigationBoxes = {};
var Tables = document.getElementsByTagName( 'table' );
for ( i = 0; i < Tables.length; i++ ) {
if ( hasClass( Tables[i], 'collapsible' ) ) {
NavigationBoxes[ tableIndex ] = Tables[i];
Tables[i].setAttribute( 'id', 'collapsibleTable' + tableIndex );
var Button = document.createElement( 'span' );
var ButtonLink = document.createElement( 'a' );
var ButtonText = document.createTextNode( collapseCaption );
Button.style.styleFloat = 'right';
Button.style.cssFloat = 'right';
Button.style.fontWeight = 'normal';
Button.style.textAlign = 'right';
Button.style.width = '6em';
ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex );
ButtonLink.setAttribute( 'href', 'javascript:collapseTable(' + tableIndex + ');' );
ButtonLink.appendChild( ButtonText );
Button.appendChild( document.createTextNode( '[' ) );
Button.appendChild( ButtonLink );
Button.appendChild( document.createTextNode( ']' ) );
var Header = Tables[i].getElementsByTagName( 'tr' )[0].getElementsByTagName( 'th' )[0];
/* only add button and increment count if there is a header row to work with */
if (Header) {
Header.insertBefore( Button, Header.childNodes[0] );
tableIndex++;
}
}
}
for ( i = 0; i < tableIndex; i++ ) {
if ( hasClass( NavigationBoxes[i], 'collapsed' ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], 'autocollapse' ) ) ) {
collapseTable( i );
}
}
}
addOnloadHook( createCollapseButtons );