MediaWiki:Common.js

De TibiaRPGBrasil Wiki
Revisão de 22h55min de 3 de julho de 2023 por Faramir (discussão | contribs) (Criou página com '→‎Códigos JavaScript aqui colocados serão carregados por todos aqueles que acessarem alguma página deste wiki: →‎Abrir Spoilers: $(document).ready(function(){ $('.showspoiler').click(function(){ var a = $('.spoiler').css('display'); if (a == "none"){ $('.showspoiler').text("Clique para fechar todos os spoilers"); $('div.spoiler').css({'display': 'block'}); } else { $('.showspoiler').text("Clique pa...')
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para navegação Ir para pesquisar

Nota: Após publicar, você pode ter que limpar o "cache" do seu navegador para ver as alterações.

  • Firefox / Safari: Pressione Shift enquanto clica Recarregar, ou pressione Ctrl-F5 ou Ctrl-R (⌘-R no Mac)
  • Google Chrome: Pressione Ctrl-Shift-R (⌘-Shift-R no Mac)
  • Internet Explorer/Edge: PressioneCtrl enquanto clica Recarregar, ou Pressione Ctrl-F5
  • Opera: Pressione Ctrl-F5.
/* Códigos JavaScript aqui colocados serão carregados por todos aqueles que acessarem alguma página deste wiki */
/* Abrir Spoilers */
$(document).ready(function(){
    $('.showspoiler').click(function(){
         var a = $('.spoiler').css('display');
        if (a == "none"){
            $('.showspoiler').text("Clique para fechar todos os spoilers");
            $('div.spoiler').css({'display': 'block'});
        } else {
            $('.showspoiler').text("Clique para abrir todos os spoilers");
            $('div.spoiler').css({'display': 'none'});
        }
    });
});

/* Sempre mostra Spoilers */
$(document).ready(function(){
    $('[data-sempre-mostrar]').click(function(){
       if($.cookie('sempre-mostrar-spoilers') === "true") {
          $.cookie('sempre-mostrar-spoilers', "false", { expires: 360, path: '/' });
       } else {
          $.cookie('sempre-mostrar-spoilers', "true", { expires: 360, path: '/' });
       }
       $('#spoil').toggle();
       $('.showhide').toggle();
    });
});

/* anuncio */
$(document).ready(function() {
googletag.cmd.push(function() { googletag.display('div-gpt-ad-1540046116529-0'); });
});

/* Quest Spoils */
$(document).ready(function(){
    var url = location.hash;
    if (url.length > 0 || $.cookie('sempre-mostrar-spoilers') === "true"){
        $('.showhide').click(function(){
            $('#spoil').toggle();
            $('.showhide').toggle();
        });
    } else {
        $('#spoil').toggle();
        $('.showhide').toggle();
        $('.showhide').click(function(){
            $('#spoil').toggle();
            $('.showhide').toggle();
        });    
    }
});

/* Tirar ícone de links externos */
$('.mapa > a').removeClass('external text');
$('#siteNotice a').removeClass('external text');

/* Tirar atributo title de links */
$('.tooltip > a').removeAttr('title');

/* Transcrições NPCs */
$(document).ready(function() {
    $('#show2, #show3').click(function() {
        $('.hide').toggle();
    });
});

/* Criaturas */
$(document).ready(function () {
    var height = $('#hab').height();
    if (height >= 50) {
        $('#hab').addClass('hide');
        $('#show').removeClass('hide');
    }
    $('#show').click(function () {
        $('.hide').toggle();
        $('.showhab').toggle();
        $('#NPC').addClass('hide');
    });
});

/* Hot Cuisine Calculator System */
if (mw.config.values.wgPageName === 'Hot_Cuisine_Calculator_System' || mw.config.values.wgPageName === 'Hot_Cuisine_Quest') {
    $(document).ready(function(){
        $.ajax({ url: '/index.php?title=Tibia_Wiki:Hot_Cuisine_Calculator_System/Codigo&action=raw',success: function(codigo) {
          var codigo_html = codigo.slice(codigo.search('<pre id="hot_cuisine_system_html">') + 34, codigo.search('</pre>'));
          $('.hot_cuisine_calc_system').html(codigo_html);
          codigo = codigo.slice(codigo.search('</pre>') + 6, codigo.length);
          var codigo_css = codigo.slice(codigo.search('<pre id="hot_cuisine_system_css">') + 33, codigo.search('</pre>'));
          $('head').append('<style type="text/css">'+codigo_css+'</style>');
          codigo = codigo.slice(codigo.search('</pre>') + 6, codigo.length);
          var codigo_js = codigo.slice(codigo.search('<pre id="hot_cuisine_system_js">') + 32, codigo.search('</pre>'));
          $('.hot_cuisine_calc_system_js').html('<script type="text/javascript">'+codigo_js+'</script>');
        }});
     });
}

/* Exercise Weapons Calculator */
if (mw.config.values.wgPageName === 'Exercise_Weapons_Calculator') {
    $(document).ready(function(){
        $.ajax({ url: '/index.php?title=Tibia_Wiki:Exercise_Weapons_Calculator/Codigo&action=raw',success: function(codigo) {
          var codigo_html = codigo.slice(codigo.search('<pre id="exercise_weapons_html">') + 32, codigo.search('</pre>'));
          $('.hot_cuisine_calc').html(codigo_html);
          codigo = codigo.slice(codigo.search('</pre>') + 6, codigo.length);
          var codigo_css = codigo.slice(codigo.search('<pre id="exercise_weapons_css">') + 31, codigo.search('</pre>'));
          $('head').append('<style type="text/css">'+codigo_css+'</style>');
          codigo = codigo.slice(codigo.search('</pre>') + 6, codigo.length);
          var codigo_js = codigo.slice(codigo.search('<pre id="exercise_weapons_js">') + 30, codigo.search('</pre>'));
          $('.hot_cuisine_calc_js').html('<script type="text/javascript">'+codigo_js+'</script>');
        }});
     });
}

/* Mapa */
if (mw.config.values.wgPageName === 'Mapa') {
    $(document).ready(function(){
        var url = location.hash;
        $(".map_wiki").append('<div id="map" style="width: 100%; height: 100%;"></div>');
        loadMapScripts();
    });
}

/* Mapa Popup */
/** Abre o popup de mapa de Monstros e NPCs */ 
$('.map_show').click(function() {
    var display = $('.map_frame',this).css('display');
    
    if (display == 'none') { showMap(this); }

    return false;
});

/** Fecha o mapa ao clicar na parte Preta (Overlay) */
$('.map_overlay').click(function() {
    $('.map_show').each(function( index ) {
        hideMap($('.map_show')[index]);
    });

    return false;
});

$('.map_logobox').click(function(event){
    event.stopPropagation();
});

/* Mapa Infobox Hunt */
$('.map_hunt').ready(function(){
    var coord = $('.map_hunt_coord',this).text();

    /** Transforma a logo do TibiaWiki em um link para a página do Mapa com as coordenadas da localiação */
    $(".map_logobox",this).append('<a href="https://www.tibiawiki.com.br/wiki/mapa#'+coord+':1" class="map_logo" target="_blank" title="Ver no mapa do Tibia Wiki"></a>');
    
    /** Box do Map */
    var mapBox = $(".map_hunt_box",this);
    mapBox.html("");
    
    /** Cria o iFrame que conterá o Mapa */
    mapBox.append('<iframe id="mapa_frame" scrolling="no" frameborder="0" width="100%" height="310" style="border-radius:12px"></iframe>');
   
    /** Pega o Map iFrame */
    var mapFrame = $("#mapa_frame",mapBox);
    /** Seta as Coordenadas do Mapa */
    // mapFrame.attr("src", mapFrame.contents().get(0).URL + "#" + coord + ":1");

    mapFrame.ready(function() {
        loadMapOnIFrame(coord, mapFrame[0]);
    });
});

/** Mapa internalizado ao Wiki - Teste */
if (mw.config.values.wgPageName === 'Mapa/Teste') {
    $(document).ready( function () {
        $(".map_wiki").append('<div id="map" style="width: 100%; height: 100%;"></div>');
        loadMapScripts();
    });
}

/** Função que faz o popup em lightbox do Mapa apareça. */
function showMap(container) {
    $('.map_frame',container).css('display', 'inline');
    $('.map_overlay',container).css('display', 'inline');

    configPopupMap(container);
}

/** Função que faz o popup em lightbox do Mapa desaparecer. */
function hideMap(container) {
    $('.map_frame',container).css('display', 'none');
    $('.map_overlay',container).css('display', 'none');
}

/** Configura o Popup (LightBox) de Mapa */
function configPopupMap(container) {
    /** Configura o Mapa. */
    $('.map_box').each(function( index ) {
        $(this).html("")
    });
    var coord = $('.map_frame_coord',container).text();
    window.history.replaceState("map", null, "#" + coord + ":1");
    $(".map_box", container).css("width", "100%").css("height", "100%")
    $(".map_box", container).append('<div id="map" style="width: 100%; height: 100%;"></div>');

    /** Transforma a logo do TibiaWiki em um link para a página do Mapa com as coordenadas da localiação */
    $(".map_logobox",container).append('<a href="https://www.tibiawiki.com.br/wiki/mapa#'+coord+':1" class="map_logo" target="_blank" title="Ver no mapa do Tibia Wiki"></a>');

    loadMapScripts();
}

/** Função que realiza o load dos scripts de Map. */
function loadMapScripts() {
    $('link[href="https://tibiamaps.io/_css/map.css"]').remove();
    $('head').append('<link rel="stylesheet" href="https://tibiamaps.io/_css/map.css">');
    $('script[src="https://tibiamaps.io/_js/map.js"]').remove();
    $('<script>').attr('src', "https://tibiamaps.io/_js/map.js").appendTo('head');
}

/** Carrega o Mapa no iframe. */
function loadMapOnIFrame(coord, iframe) {
    createCss(iframe.contentDocument, iframe.contentDocument.getElementsByTagName('head').item(0), 'https://tibiamaps.io/_css/map.css');
    createStyle(iframe.contentDocument, iframe.contentDocument.getElementsByTagName('head').item(0), {"body": {"margin": "0px"}});
    createComponent("map", {"width": "100%", "height": "100%"} ,iframe.contentDocument, iframe.contentDocument.getElementsByTagName('body').item(0));

    $.ajax({ url: '/index.php?title=Tibia_Wiki:Mapa/Codigo&action=raw',success: function(codigo) {
        var codigo_js = codigo.slice(codigo.search('<pre id="mapa_js">') + 18, codigo.search('</pre>'));
        var bodyFrame = $(iframe).contents().find('body');
        bodyFrame.append('<script type="text/javascript">var mapLocation = "#' + coord + ':1";\n'+codigo_js+'</script>');
    }});
}

/** Cria component DIV. */
function createComponent(id, css, doc, target, callback) {
    var params = {
        "name": "div",
        "id": id,
        "css": css
    };
    iframeInsertComponents(params, doc, target, callback);
}

/** Cria component LINK que carrega CSS. */
function createCss(doc, target, href, callback) {
    var params = {
        "name": "link",
        "rel": "stylesheet",
        "href": href
    };
    iframeInsertComponents(params, doc, target, callback);
}

/** Cria component Script que carrega JavaScript. */
function createScript(doc, target, code, callback) {
    var params = {
        "name": "script",
        "type": "text/javascript",
        "code": code
    };
    iframeInsertComponents(params, doc, target, callback);
}

/** Cria component STYLE que carrega CSS na HEAD. */
function createStyle(doc, target, css, callback) {
    var params = {
        "name": "style",
        "css": css
    };
    iframeInsertComponents(params, doc, target, callback);
}

/** Algumas telas utiliza iFrames e precisa injetar JavaScripts para funcionar corretamente */
function iframeInsertComponents(params, doc, target, callback) {
    //doc, target, src, callback
    var s = doc.createElement(params.name);
    if (params.name ==  "script") {
        s.type = params.type;
    }
    if (params.name ==  "link") {
        s.rel = params.rel;
    }
    if (params.name ==  "div") {
        s.id = params.id;
        if (params.css != null) {
            Object.entries(params.css).forEach(function(arr, i) {
                $(s).css(arr[0], arr[1]);
            });
        }
    }
    if(callback) {
        if (s.readyState){  //IE
            s.onreadystatechange = function(){
                if (s.readyState == "loaded" ||
                    s.readyState == "complete"){
                    s.onreadystatechange = null;
                    callback();
                }
            };
        } else {  //Others
            s.onload = function(){
                callback();
            };
        }
    }
    if (params.name ==  "style") {
        Object.entries(params.css).forEach(function(arr, i) {
            var attrs = "";
            Object.entries(arr[1]).forEach(function(attr, i) {
                attrs += '\n' + attr[0] + ': ' + attr[1];
            });
            if (i === 0) {
                s.innerText = arr[0] + ' {' + attrs + '\n}';
            }
        });
    }
    if (params.name ==  "script") {
        if (params.code.src != null && params.code.src != "") {
            s.src = params.src;
        }
        if (params.code.code != null) {
            console.log(params.code.code);
            var re = new RegExp('\n', 'g');
            s.innerText = params.code.code.replace(re, '');//.split('<br>').join('\n');
        }
    }
    if (params.name ==  "link") {
        s.href = params.href;
    }
    target.appendChild(s);        
}

/* Calculadoras - Shards */
$(document).ready(function () {
    $('#calc_shard').bind("keyup change", function () {
        var level = $('#level').val();
        var quantidade = $('#quantidade').val();
        var item = $("select#item").val();
        if (item == 2) {
            if (quantidade <= 0) {
                $('#shard-result').addClass("hide");
                $('#shard-result3').addClass("hide");
            } else if (quantidade >= 2) {
                $('#shard-result').text('Você receberá ' + $('#level').val() * $('#level').val() * 100 * $('#quantidade').val() + ' de experiência.');
                $('#shard-result').removeClass("hide");
                $('#shard-result3').removeClass("hide");
            } else {
                $('#shard-result').text('Você receberá ' + $('#level').val() * $('#level').val() * 100 + ' de experiência.');
                $('#shard-result').removeClass("hide");
                $('#shard-result3').addClass("hide");
            }
        } else {
            $('#shard-result3').addClass("hide");
            if (quantidade >= 41) {
            $('#shard-result2').removeClass("hide");
        } else {
            $('#shard-result2').addClass("hide");
        }
            if (quantidade <= 0) {
                $('#shard-result').addClass("hide");
                $('#shard-result2').addClass("hide");
            } else if (quantidade >= 1) {
                if (level >= 200) {
                    $('#shard-result').removeClass("hide");
                    $('#shard-result').text('Você receberá ' + (300 * 200) * $('#quantidade').val() + ' de experiência.');
                } else {
                    $('#shard-result').removeClass("hide");
                    $('#shard-result').text('Você receberá ' + (300 * $('#level').val()) * $('#quantidade').val() + ' de experiência.');
                }
            }
        }
        if (level >= 1 && quantidade <= 0) {
            $('#shard-result').addClass("hide");
            $('#shard-result2').addClass("hide");
            $('#shard-result3').addClass("hide");
        } else if (level <= 0 && quantidade <= 0) {
            $('#shard-result').addClass("hide");
            $('#shard-result2').addClass("hide");
            $('#shard-result3').addClass("hide");
        } else if (level <= 0 && quantidade >= 1) {
            $('#shard-result').addClass("hide");
            $('#shard-result2').addClass("hide");
            $('#shard-result3').addClass("hide");
        }
    });
});

$(document).ready(function () {
    $("#calc_shard").keydown(function (event) {
        if (event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 || (event.keyCode == 65 && event.ctrlKey === true) || (event.keyCode >= 35 && event.keyCode <= 39)) {
            return;
        } else {
            if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105)) {
                event.preventDefault();
            }
        }
    });
});

$("#botao_shard").append('<input name="quantidade" maxlength="3" id="quantidade" type="text" size="10" align="center" value="1" onclick="this.value=&#39;&#39;;" onblur="this.value=!this.value?&#39;1&#39;:this.value;" />');
$("#botao_level").append('<input name="level" maxlength="3" id="level" type="text" size="10" align="center" value="0" onclick="this.value=&#39;&#39;;" onblur="this.value=!this.value?&#39;0&#39;:this.value;" />');
$("#botao_item").append('<select id="item"><option value="1">Midnight Shard</option><option value="2">Stone of Insight</option></select>');

/* Calculadoras - Party */
$(document).ready(function () {
mw.loader.load( '/index.php?title=MediaWiki:Common.js/calc_party.js&action=raw&ctype=text/javascript' );
});  


/* Calculadoras - Blessings */
$(document).ready(function () {
mw.loader.load( '/index.php?title=MediaWiki:Common.js/blessing.js&action=raw&ctype=text/javascript' );
});  

/* Calculadoras - Skill */
$(document).ready(function () {
mw.loader.load( '/index.php?title=MediaWiki:Common.js/calc_skill.js&action=raw&ctype=text/javascript' );
});  

/* Calculadoras - Profile */
$("#input_nome").append('<form action="/Sano/char.php" type="post" id="searchForm"><input name="character" id="nome" type="text" size="25" align="center" value="Nome do Personagem" onclick="this.value=&#39;&#39;;" onblur="this.value=!this.value?&#39;Nome do Personagem&#39;:this.value;"/> <input type="submit" value="Ir" /></form>');

$("#searchForm").submit(function(event) {
	
    event.preventDefault(); 

    var $form = $( this ),
        term = $form.find('input[name="character"]').val(),
        url = $form.attr( 'action' );
		
    $.post( '/Sano/char.php', $("#searchForm").serialize(),
      function( data ) {

          $( "#result_personagem" ).empty().append('<center><table id="alter" style="text-align:left;border:none;margin-top:5px;"><tr><td colspan="4" style="text-align:center;"><b>Informações do Personagem</b></td></tr><tr><td style="width:5%"><b>Nome:</b></td><td style="width:45%">' + data.Nome + '</td><td style="width:5%"><b>Level:</b></td><td style="width:45%">' + data.Level + '</td></tr><tr class="dif"><td><b>Vocação:</b></td><td>' + data.Vocacao + '</td><td><b>Mundo:</b></td><td>' + data.Mundo + '</td></tr><tr><td><b>Guild:</b></td><td>' + data.Guild + '</td><td><b>Tutor:</b></td><td>' + data.Tutor + '</td></tr><tr class="dif"><td><b>Residencia:</b></td><td>' + data.Residencia + '</td><td><b>Casa:</b></td><td>' + data.Casa + '</td></tr><tr><td><b>Casado com:</b></td><td>' + data.Casado + '</td><td><b>Sexo:</b></td><td>' + data.Sexo + '</td></tr><tr class="dif"><td><b>Achievements:</b></td><td>' + data.Achievements + '</td><td><b>Capacidade:</b></td><td>' + data.Capacidade + '</td></tr><tr><td><b>Vida:</b></td><td>' + data.Life + '</td><td><b>Mana:</b></td><td>' + data.Mana + '</td></tr><tr class="dif"><td><b>Status:</b></td><td>' + data.Status + '</td><td><b>Velocidade:</b></td><td>' + data.Velocidade + '</td></tr><tr><td colspan="4">Você pagará ' + data.Bless + ' gps por cada benção comum e pagará ' + data.Bless3 + ' gps por cada bênção melhorada.Tendo assim o valor total de ' + data.Bless2 + ' gps por todas elas.<br/>Em uma party, você poderá compartilhar experiência com leveis: ' + data.Party + '</td></tr></table></center>');
      }, "json");
  });

/* Abas */
$(document).ready(function(){
  $('.showDiv').on('click', function () {
    $(this).siblings();
    $('.targetDiv').hide();
    $('.targetDiv2').hide();
    $('#div' + $(this).data('target')).show();
  });    
});

/* Abas Menu*/
$(document).ready(function () {
    $('.mostrar-aba').click(function () {
        var aba_id = $(this).attr('data-aba');
        var check = $("#aba-" + aba_id).css('display');
        if (check == "block") {
            $("#aba-" + aba_id).removeClass('atual');
        } else {
            $('.aba').removeClass('atual');
            $("#aba-" + aba_id).addClass('atual');
        }
    });
    $('.mostrar-todas-abas').click(function () {
        var check = $('.aba').css('display');
        if (check == "block") {
            $('.aba').removeClass('atual');
        } else {
            $('div.aba').toggleClass('atual');
        }
    });
    var url = location.href;
    hash = url.split('#')[1];
    if (hash.length > 0){
        $("#aba-" + hash).addClass('atual');
    }
});

/** Cidade Rashid
 * Esse código converte o horário local para o horário de Berlin, pegando o dia da semana corretamente, independente do Horário de Verão.
 */
 $(document).ready(function () {
    /** Objeto que contém os dados do Rashid
     * Dia da Semana
     * 0: Domingo.
     * 1: Segunda-Feira.
     * 2: Terça-Feira.
     * 3: Quarta-Feira.
     * 4: Quinta-Feira.
     * 5: Sexta-Feira.
     * 6: Sábado.
     * 
     * @param day Variavel que recebe o dia da semana.
     * @param city Variavel que recebe a Cidade em que o Rashid está.
     * @param image Variavel que recebe o link da Imagem de Background com o mapa de onde o Rashid está.
     */
    var rashidCities = {
        0: {
            "day": "domingo",
            "city": "Carlin",
            "image": "/images/5/5f/Rashid_Carlin.png"
        },
        1: {
            "day": "segunda-feira",
            "city": "Svargrond",
            "image": "/images/3/34/Rashid_Svargrond.png"
        },
        2: {
            "day": "terça-feira",
            "city": "Liberty Bay",
            "image": "/images/3/33/Rashid_Liberty_Bay.png"
        },
        3: {
            "day": "quarta-feira",
            "city": "Port Hope",
            "image": "/images/c/cf/Rashid_Port_Hope.png"
        },
        4: {
            "day": "quinta-feira",
            "city": "Ankrahmun",
            "image": "/images/2/2a/Rashid_Ankrahmun.png"
        },
        5: {
            "day": "sexta-feira",
            "city": "Darashia",
            "image": "/images/c/cb/Rashid_Darashia.png"
        },
        6: {
            "day": "sábado",
            "city": "Edron",
            "image": "/images/6/6f/Rashid_Edron.png"
        }
    }
    /** 
     * @param data Variavel que recebe a data e hora atual de qualquer país e converte para a data e hora de Berlin.
     * @param hora Variavel que recebe a Hora atual de Berlin.
     * @param dia Variavel que recebe o dia da semana, e assim ele calcula se já ocorreu o SS ou não.
     */
    var data = new Date(new Date().toLocaleString('en-US', { timeZone: 'Europe/Berlin' }));
    var hora = data.getHours();
    var sDay = data.getDay();
    var dia = (hora >= 10) ? sDay : ((sDay == 0) ? 6 : sDay - 1) ;

    /** Popula o HTML do box do Rashid na página do TibiaWiki */
    $('#rashid_city_white').html('<a style="color:#FFFFFF; text-decoration:none;" href="'+rashidCities[dia].city+'">'+rashidCities[dia].city+'</a>');
    $('#rashid_city_link').html('<a style="color:#0645ad;" href="'+rashidCities[dia].city+'">'+rashidCities[dia].city+'</a>');
    $('#tibiaday').html(''+rashidCities[dia].day+'');
    $('#rashid_home').css('background','url("'+rashidCities[dia].image+'")');
    $('#rashid_home').css('background-repeat','no-repeat');
    $('#rashid_home').css('background-size','cover');
    $('#rashid_home').css('background-position','35% 0%');
    $('#rashid_home').css('height','120px');
});

/* Semana Atual */
$(document).ready(function () {
    Date.prototype.getWeek = function () {
        var onejan = new Date(this.getFullYear(), 0, 1);
        return Math.ceil((((this - onejan) / 86400000) + onejan.getDay() + 1) / 7);
    }


    var today = new Date();
    var currentWeekNumber = today.getWeek();
    $('#semanaatual').html(currentWeekNumber);
    var currentDay = today.getDate();
    $('#diaatual').html(currentDay);
});

/* Imbuing */
if (mw.config.values.wgPageName === 'Imbuement_Tool') {
$(document).ready(function(){
$.ajax({ url: '/index.php?title=Tibia_Wiki:Imbuing/Codigo&action=raw',success: function(codigo) {
  var codigo_html = codigo.slice(codigo.search('<pre id="imbuing_html">') + 24, codigo.search('</pre>'));
  $('.imbuing').html(codigo_html);
  codigo = codigo.slice(codigo.search('</pre>') + 6, codigo.length);
  var codigo_css = codigo.slice(codigo.search('<pre id="imbuing_css">') + 23, codigo.search('</pre>'));
  $('head').append('<style type="text/css">'+codigo_css+'</style>');
  codigo = codigo.slice(codigo.search('</pre>') + 6, codigo.length);
  var codigo_js = codigo.slice(codigo.search('<pre id="imbuing_js">') + 22, codigo.search('</pre>'));
  $('.imbuing_js').html('<script type="text/javascript">'+codigo_js+'</script>');
}});
});
}

/* Geografia */
$(document).ready(function() {  $('#casa').hover(function() {      $("#house").removeClass('no');    },    function() {      $("#house").addClass("no");    });  $('#guild').hover(function() {      $("#guildh").removeClass('no');    },    function() {      $("#guildh").addClass("no");    });  $('#biblioteca').hover(function() {      $("#library").removeClass('no');    },    function() {      $("#library").addClass("no");    });  $('#ruas').hover(function() {      $("#street").removeClass('no');    },    function() {      $("#street").addClass("no");    });  $('#invasao').hover(function() {      $("#raid").removeClass('no');    },    function() {      $("#raid").addClass("no");    });   $('.huntopc a').removeAttr('href');});


/* Toggle Diálogos */
$(document).ready(function(){
  $('[data-dialog-text]').hide();
  $('[data-dialog-show]').on('click', function() {
    $element = $(this).parents('[data-dialog]').children('[data-dialog-text]')

    if($element.is(":hidden")) {
      $element.show();
    } else { 
      $element.hide();
    }
  });
});

/* Server Save */
if (mw.config.values.wgPageName === 'Home') {
$(document).ready(function () {
const threadTime = 1000; // Tempo que atualiza o Tempo para o SS. 1000 = 1 segundo.

var ssHour = 10; // Hora do SS. 10:00:00h AM de Berlin.
var ssMinute = 0; // Minuto do SS.
var ssSecond = 0; // Segundo do SS.

var ss = new Date(); // Variavel de SS.
var countDownDate = ss.getTime(); // Variavel de Time do SS.
var x = setInterval(function() {

    /* Pega Hora do SS em Berlin 
     * - Pega o horário de Berlin, e seta para o horário do SS, 10:00:00 AM sempre do dia atual ou dia seguinte, caso necessário. 
     */
    ss = new Date(new Date().toLocaleString('en-US', { timeZone: 'Europe/Berlin' }));
    if (ss.getHours() >= ssHour) {
        ss.setDate(ss.getDate() + 1);
    }
    ss.setHours(ssHour, ssMinute, ssSecond);
    countDownDate = ss.getTime();
    /* Fim - Pega Hora do SS em Berlin */

    /* Pega Hora atual em Berlin
     * - Essa forma, não importa o país, ele converte para o horário atual de Berlin.
     */
    var now = new Date(new Date().toLocaleString('en-US', { timeZone: 'Europe/Berlin' })).getTime();
    var distance = countDownDate - now; // Realiza o Calculo para saber a "Distancia" entre a hora atual até o horáio do SS.
    /* Fim - Pega Hora atual em Berlin*/
    
    /* Calculo de Horas para o SS. 
     * Transforma a distancia de horários entre o SS e a hora atual, em formato de Horas.
     */
    var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
    var pluralH = hours === 1 ? "" : "s"; // Verifica se é mais de uma Hora, se for, acrescenta o 'S' para poder deixar a descrição em plural.

    /* Calculo de  Minutos para o SS.
     * Transforma a distancia de horários entre o SS e a hora atual, em formato de Minutos.
     */
    var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
    var pluralM = minutes === 1 ? "" : "s"; // Verifica se é mais de um Minuto, se for, acrescenta o 'S' para poder deixar a descrição em plural.

    if (hours >= 1) {
        $('#serversave').text('Faltam ' + hours + 'h ' + minutes + 'min'+ ' para o Server Save.');
    } else {
        if (minutes >= 1) {
            $('#serversave').text('Faltam ' + minutes + ' min'+pluralM+ ' para o Server Save.');
        } else {
            /* Calculo de Segundos para o SS.
             * Transforma a distancia de horários entre o SS e a hora atual, em formato de Segundos.
             */
            var seconds = Math.floor((distance % (1000 * 60 * 60)) / 1000);
            var pluralS = seconds === 1 ? "" : "s"; // Verifica se é mais de um Segundo, se for, acrescenta o 'S' para poder deixar a descrição em plural.
            $('#serversave').text('Faltam ' + seconds + ' segundo' + pluralS + ' para o Server Save.');
        }
    }
}, threadTime);
});
}

const loaded_scripts = []
$(document).ready(function () {
  $('.load_js').each(function () {
    const script = $(this).attr('data-script')
    if (!loaded_scripts.includes(script)) {
      mw.loader.load('/index.php?title=MediaWiki:' + script + '&action=raw&ctype=text/javascript')
      loaded_scripts.push(script)
    }
  })
})