MediaWiki:Common.js: Unterschied zwischen den Versionen

aus FreewarWiki, der Referenz für Freewar
Zur Navigation springen Zur Suche springen
(argh, nein! - Version 170478 von Three Of Twelve (Diskussion | Beiträge) wurde zurückgesetzt.)
(Favicon wird direkt in der Mediawiki Konfiguration gesetzt nun)
 
(94 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
/* Hinweis: Die Wiki-Überschriften sind JavaScript-technisch auskommentiert
/*********************************************************************/
== Dynamic Navigation Bars ==
/* Common.js enthält gemeinsamen JavaScript-Code für alle Benutzer. */
/* Jedes JavaScript, dass sich in dieser Seite befindet, wird für  */
/* alle Benutzer geladen. Daher bitte mit Vorsicht bearbeiten!    */
/*****************************************************************/
 
//=============================================================
/*** BEGIN: Anpassung für die Navigationsleisten ***/
 
// Sprachdefinition
var NavigationBarHide = 'Einklappen';
var NavigationBarShow = 'Ausklappen';
 
/**
* Maximale Anzahl an Navigationsleisten pro Seite.
* Gibt es auf einer Seite mehr, werden diese automatisch versteckt!
* var NavigationBarShowDefault = 0; // Alle Navigationsleisten werden versteckt
* var NavigationBarShowDefault = 1; // Alle außer die erste Navigationsleiste werden versteckt
**/
var NavigationBarShowDefault = 1;
 
/**
* Zeigt und versteckt den Inhalt und das Bild der Navigationsleiste
* Parameter:
* indexNavigationBar: Index der Navigationsleiste
**/
function toggleNavigationBar(indexNavigationBar) {
var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
 
if (!NavFrame || !NavToggle) {
return false;
}
 
// Verstecken, wenn die Leiste derzeit gezeigt wird
if (NavToggle.firstChild.data == NavigationBarHide) {
for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
if (NavChild.className == 'NavPic') {
NavChild.style.display = 'none';
}
if (NavChild.className == 'NavContent') {
NavChild.style.display = 'none';
}
if (NavChild.className == 'NavToggle') {
NavChild.firstChild.data = NavigationBarShow;
}
}
 
// Anzeigen, wenn die Leiste derzeit versteckt ist
} else if (NavToggle.firstChild.data == NavigationBarShow) {
for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
if (NavChild.className == 'NavPic') {
NavChild.style.display = 'block';
}
if (NavChild.className == 'NavContent') {
NavChild.style.display = 'block';
}
if (NavChild.className == 'NavToggle') {
NavChild.firstChild.data = NavigationBarHide;
}
}
}
}
 
 
/**
* Fügt Anzeigen/Verstecken-Link zur Navigationsleiste hinzu
  */
  */
function createNavigationBarToggleButton() {
// set up the words in your language
var indexNavigationBar = 0;
var NavigationBarHide = 'Einklappen';
// Auf alle div-Elemente anwenden
var NavigationBarShow = 'Ausklappen';
for (var i = 0; NavFrame = document.getElementsByTagName("div")[i]; i++) {
// Wenn eine Navigationsleiste gefunden wurde
// set up max count of Navigation Bars on page,
if (NavFrame.className == "NavFrame") {
// if there are more, all will be hidden
indexNavigationBar++;
// NavigationBarShowDefault = 0; // all bars will be hidden
var NavToggle = document.createElement("a");
// NavigationBarShowDefault = 1; // on pages with more than 1 bar all bars will be hidden
NavToggle.className = 'NavToggle';
var NavigationBarShowDefault = 1;
NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
 
// shows and hides content and picture (if available) of navigation bars
var NavToggleText = document.createTextNode(NavigationBarHide);
// Parameters:
NavToggle.appendChild(NavToggleText);
//    indexNavigationBar: the index of navigation bar to be toggled
function toggleNavigationBar(indexNavigationBar)
// Füge die Links als erstes div-Element hinzu
{
NavFrame.insertBefore(NavToggle, NavFrame.firstChild);
    var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
    var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
}
}
    if (!NavFrame || !NavToggle) {
// Wenn mehrere Navigationsleisten gefunden wurden, dann wird versteckt
        return false;
if (NavigationBarShowDefault < indexNavigationBar) {
    }
for (var i = 1; i <= indexNavigationBar; i++) {
toggleNavigationBar(i);
    // if shown now
}
    if (NavToggle.firstChild.data == NavigationBarHide) {
}
        for (
}
                var NavChild = NavFrame.firstChild;
 
                NavChild != null;
// Lade createNavigationBarToggleButton() nach Laden der Seite
                NavChild = NavChild.nextSibling
            ) {
            if (NavChild.className == 'NavPic') {
                NavChild.style.display = 'none';
            }
            if (NavChild.className == 'NavContent') {
                NavChild.style.display = 'none';
            }
            if (NavChild.className == 'NavToggle') {
                NavChild.firstChild.data = NavigationBarShow;
            }
        }
    // if hidden now
    } else if (NavToggle.firstChild.data == NavigationBarShow) {
        for (
                var NavChild = NavFrame.firstChild;
                NavChild != null;
                NavChild = NavChild.nextSibling
            ) {
            if (NavChild.className == 'NavPic') {
                NavChild.style.display = 'block';
            }
            if (NavChild.className == 'NavContent') {
                NavChild.style.display = 'block';
            }
            if (NavChild.className == 'NavToggle') {
                NavChild.firstChild.data = NavigationBarHide;
            }
        }
    }
}
// adds show/hide-button to navigation bars
function createNavigationBarToggleButton()
{
    var indexNavigationBar = 0;
    // iterate over all < div >-elements
    for(
            var i=0;  
            NavFrame = document.getElementsByTagName("div")[i];  
            i++
        ) {
        // if found a navigation bar
        if (NavFrame.className == "NavFrame") {
            indexNavigationBar++;
            var NavToggle = document.createElement("a");
            NavToggle.className = 'NavToggle';
            NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
            NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
            var NavToggleText = document.createTextNode(NavigationBarHide);
            NavToggle.appendChild(NavToggleText);
            // add NavToggle-Button as first div-element
            // in < div class="NavFrame" >
            NavFrame.insertBefore(
                NavToggle,
                NavFrame.firstChild
            );
            NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
        }
    }
    // if more Navigation Bars found than Default: hide all
    if (NavigationBarShowDefault < indexNavigationBar) {
        for(
                var i=1;  
                i<=indexNavigationBar;  
                i++
        ) {
            toggleNavigationBar(i);
        }
    }
}
addOnloadHook(createNavigationBarToggleButton);
/* END Dynamic Navigation Bars
// ============================================================


== Vertical Tabbing ==
jQuery( document ).ready( function( $ ) {
*/
createNavigationBarToggleButton();
} );
//addOnloadHook(createNavigationBarToggleButton);


var shownTab = Array();
/*** ENDE: Anpassung für die Navigationsleisten ***/
var disabledLink = Array();


// switches between tabs
//=============================================================
function showVTab(area, tab) {
  var div = document.getElementById('VTabContent_' + String(area) + '_' + String(tab));
  var a = document.getElementById('VTabLink_' + String(area) + '_' + String(tab));
  if (!div || !a) return;
  div.style.height = 'auto';
  if (shownTab[area]) shownTab[area].style.height = '0';
  shownTab[area] = div;


  var strong = document.getElementById('VTabStrong_' + String(area));
/*** Kampfrechner ***/
  if (!strong) {
    strong = document.createElement('strong');
    strong.id = 'VTabStrong_' + String(area);
    strong.className = 'selflink';
  }


  if (disabledLink[area]) {
// Ist in [[MediaWiki:Kampfrechner.js]] ausgelagert
    disabledLink[area].appendChild(strong.firstChild);
// Wird nur auf der Seite [[Kampfrechner]] aufgerufen
    strong.parentNode.appendChild(disabledLink[area]);
if (mw.config.get('wgTitle') === 'Kampfrechner') {
  }
        mw.loader.load('/index.php?title=MediaWiki:Kampfrechner.js&action=raw&ctype=text/javascript');
 
//importScript("MediaWiki:Kampfrechner.js");
  strong.appendChild(a.firstChild);
}
  a.parentNode.appendChild(strong);
  a.parentNode.removeChild(a);
  disabledLink[area] = a;
}
// initiates vertically tabbed areas
function initVTabs() {
  var indexVTabs = 0;
  // iterate over all tables
  for (var i = 0; table = document.getElementsByTagName('table')[i]; i++) {
    if (table.className != 'VTabs') continue;


    table.id = 'VTabs_' + String(++indexVTabs);
/*** ENDE: Kampfrechner ***/
    shownTab[indexVTabs] = disabledLink[indexVTabs] = 0;


    var numTabs = 0;
    var contents;
    for (var j = 0; tr = table.getElementsByTagName('tr')[j]; j++) {
      var caption = tr.getElementsByTagName('td')[0];
      caption.className = 'VTabCaption';
      caption.id = 'VTabCaption_' + String(indexVTabs) + '_' + String(++numTabs);


      var a = document.createElement('a');
      a.id = 'VTabLink_' + String(indexVTabs) + '_' + String(++numTabs);
      a.href = 'javascript:showVTab(' + String(indexVTabs) + ', ' + String(numTabs) + ');';
      a.appendChild(caption.firstChild);
      caption.appendChild(a);


      var content = tr.getElementsByTagName('td')[1];
/*** Kartenspezifisches ***/
      var div = document.createElement('div');
      div.className = 'VTabContent';
      div.id = 'VTabContent_' + String(indexVTabs) + '_' + String(numTabs);


      while (content.childNodes.length) {
// Gesamtkarten-Funktionen
        div.appendChild(content.childNodes[0]);
// Autorouter: Ist in [[MediaWiki:Autorouter.js]] ausgelagert
      }
// Gesamtkarte-Funktionen: Sind in [[MediaWiki:Gesamtkarte.js]] ausgelagert
// Werden nur auf der Seite [[Gesamtkarte]] aufgerufen
if (mw.config.get('wgTitle') === 'Gesamtkarte') {
mw.loader.load('/index.php?title=MediaWiki:Gesamtkarte.js&action=raw&ctype=text/javascript');
//importScript("MediaWiki:Gesamtkarte.js");
mw.loader.load('/index.php?title=MediaWiki:Autorouter.js&action=raw&ctype=text/javascript');
//importScript("MediaWiki:Autorouter.js");
}


      if (contents) {
/**
        tr.removeChild(content);
* Zeigt/Versteckt Questpassage auf interkativer Karte
      } else {
* Parameter:
        contents = content
* bool: Wenn wahr, Questpassage anzeigen, wenn falsch, dann nicht
      }
*/
      contents.rowSpan = numTabs;
function showQP(bool) {
      contents.appendChild(div);
if (bool) {
    }
document.cookie = "tiramon_deShowQP=1";
  }
} else {
}
document.cookie = "tiramon_deShowQP=0";
}
addOnloadHook(initVTabs);
location.reload();
}
/* END Vertical Tabbing
// ============================================================


== Kampfrechner ==
/**
* Generalfunktion, arbeitet an allen Questpassagen
  */
  */
function work_on_questpassages() {
// Fügt den Anzeigen/Verstecken-Link zur Map hinzu
findmenu = document.getElementById("QPinout");
if (findmenu) {
showlink = document.createElement("a");
showlink.setAttribute("href","Javascript:showQP(true)");
showlink.appendChild(document.createTextNode('anzeigen'));
hidelink = document.createElement("a");
hidelink.setAttribute("href","Javascript:showQP(false)");
hidelink.appendChild(document.createTextNode('verbergen'));
findmenu.appendChild(showlink);
findmenu.appendChild(document.createTextNode('/'));
findmenu.appendChild(hidelink);
}
// Questpassagen anzeigen, wenn gewünscht
for (var i = 0; foundspan = document.getElementsByTagName("span")[i]; i++) {
var tiramon_deShowQP = document.cookie;
if (tiramon_deShowQP.indexOf("tiramon_deShowQP=")=="-1") return(-1);
if (tiramon_deShowQP.charAt(tiramon_deShowQP.indexOf("tiramon_deShowQP=")+17) != "1") return(-1);
if (foundspan.className == "QP") {
foundspan.setAttribute("style", "display:inline;");
}
}
}
// Starte work_on_questpassages() nach Laden der Seite
jQuery( document ).ready( function( $ ) {
work_on_questpassages();
} );
//addOnloadHook(work_on_questpassages);
/*** ENDE: Kartenspezifisches ***/
//=============================================================
/*** NPC-Bilder ***/
   
   
var global_lp_a, global_a_a, global_v_a, global_lp_v, global_a_v, global_v_v;
/**
  var global_fightresult_1, global_fightresult_2, global_fightresult_3;
  * Zeigt/Versteckt NPC-Bilder
  * Parameter:
function calc_fight()
  * bool: Wenn wahr, NPC-Bilder anzeigen, wenn falsch, dann nicht
{
  */
  dif_a = global_a_a.value - global_v_v.value;
function showNI(bool)
  dif_v = global_a_v.value - global_v_a.value;
{
  if (dif_a < 1) dif_a = 1;
var DaysToExpire = 300; // Cookie wird nach so vielen Tagen gelöscht
  if (dif_v < 1) dif_v = 1;
var ExpireDate = new Date();
  fac_a = global_lp_v.value / dif_a;
 
  fac_v = global_lp_a.value / dif_v;
ExpireDate.setTime((ExpireDate.getTime() + DaysToExpire * 24 * 60 * 60 * 1000));
  if (fac_a > fac_v) {
 
    if ((global_a_a.value - global_v_v.value) > 0) lp_v = global_a_a.value - global_v_v.value;
if (bool) {
    else lp_v = 1;
document.cookie="tiramon_deShowNI=1; expires=" + ExpireDate.toGMTString();
    end_v_lp = Math.floor(global_lp_v.value - fac_v * lp_v);  
} else {
    global_fightresult_1.nodeValue = 'Verteidiger gewinnt mit ' + end_v_lp + ' LP'
document.cookie="tiramon_deShowNI=0; expires=" + ExpireDate.toGMTString();
    if (((global_lp_a.value / dif_v) < 1) && ((global_lp_a.value / dif_v) < (global_lp_v.value / dif_a))) {
}
      global_fightresult_2.nodeValue = 'Der Angreifer stirbt schon nach einem Schlag';
location.reload();
      global_fightresult_3.nodeValue = ' '
}
    }
    else {
      global_fightresult_2.nodeValue = 'Der Angreifer benötigt ' + Math.ceil(global_lp_v.value / dif_a) + ' Schläge für Sieg';
      global_fightresult_3.nodeValue = 'Der Angreifer verliert ' + String(dif_v) + ' LP pro Schlag';
    }
  }
  else {
    if ((global_a_v.value - global_v_a.value) > 0) lp_a = global_a_v.value - global_v_a.value;
    else lp_a = 1;
    end_a_lp = Math.floor(global_lp_a.value - fac_a * lp_a);
    global_fightresult_1.nodeValue = 'Angreifer gewinnt mit ' + end_a_lp + ' LP'
    global_fightresult_2.nodeValue = 'Minimale LP für Sieg: ' + String(global_lp_a.value - end_a_lp);
    global_fightresult_3.nodeValue = ' '
  }
  return false;
  }
function init_fightcalc()
{
  fc = document.getElementById('Kampfrechner');
  if (fc) {
    table = document.createElement('TABLE');
    tr = document.createElement('TR');
    td = document.createElement('TD');
    tr.appendChild(td);
    td = document.createElement('TH');
    td.appendChild(document.createTextNode('Angreifer'));
    tr.appendChild(td);
    td = document.createElement('TH');
    td.appendChild(document.createTextNode('Verteidiger'));
    tr.appendChild(td);
    table.appendChild(tr);
    // LP-Werte
    tr = document.createElement('TR');
    td = document.createElement('TD');
    td.appendChild(document.createTextNode('LP'));
    tr.appendChild(td);
    td = document.createElement('TD');
    global_lp_a = document.createElement('INPUT');
    global_lp_a.setAttribute('type', 'text');
    td.appendChild(global_lp_a);
    tr.appendChild(td);
    td = document.createElement('TD');
    global_lp_v = document.createElement('INPUT');
    global_lp_v.setAttribute('type', 'text');
    td.appendChild(global_lp_v);
    tr.appendChild(td);
    table.appendChild(tr);
   
    // A-Werte
    tr = document.createElement('TR');
    td = document.createElement('TD');
    td.appendChild(document.createTextNode('A'));
    tr.appendChild(td);
    td = document.createElement('TD');
    global_a_a = document.createElement('INPUT');
    global_a_a.setAttribute('type', 'text');
    td.appendChild(global_a_a);
    tr.appendChild(td);
    td = document.createElement('TD');
    global_a_v = document.createElement('INPUT');
    global_a_v.setAttribute('type', 'text');
    td.appendChild(global_a_v);
    tr.appendChild(td);
    table.appendChild(tr);
    // V-Werte
    tr = document.createElement('TR');
    td = document.createElement('TD');
    td.appendChild(document.createTextNode('V'));
    tr.appendChild(td);
    td = document.createElement('TD');
    global_v_a = document.createElement('INPUT');
    global_v_a.setAttribute('type', 'text');
    td.appendChild(global_v_a);
    tr.appendChild(td);
    td = document.createElement('TD');
    global_v_v = document.createElement('INPUT');
    global_v_v.setAttribute('type', 'text');
    td.appendChild(global_v_v);
    tr.appendChild(td);
    table.appendChild(tr);
    tr = document.createElement('TR');
    td = document.createElement('TD');
    td.setAttribute('colspan', '3')
    td.style.textAlign = 'center';
    inp = document.createElement('INPUT');
    inp.setAttribute('type', 'submit');
    inp.setAttribute('name', 'calc');
    inp.setAttribute('value', 'Berechnen');
    td.appendChild(inp);
    tr.appendChild(td);
    table.appendChild(tr);
    tr = document.createElement('TR');
    td = document.createElement('TD');
    td.setAttribute('colspan', '3')
    td.style.textAlign = 'center';
    global_fightresult_1 = document.createTextNode('Werte eingeben und auf Berechnen klicken');
    global_fightresult_2 = document.createTextNode(' ');
    global_fightresult_3 = document.createTextNode(' ');
    td.appendChild(global_fightresult_1);
    td.appendChild(document.createElement('BR'));
    td.appendChild(global_fightresult_2);
    td.appendChild(document.createElement('BR'));
    td.appendChild(global_fightresult_3);
    tr.appendChild(td);
    table.appendChild(tr);
    form = document.createElement('FORM');
    form.setAttribute('action', '#')
    form.setAttribute('method', 'POST')
    form.setAttribute('name', 'fightcalc')
    form.onsubmit = calc_fight;
    form.appendChild(table);
    fc.appendChild(form);
  }
}
addOnloadHook(init_fightcalc);
/* END Kampfrechner
// ============================================================


== Questpassagen für Karten==
/**
* Generalfunktion, arbeitet an allen NPC-Bildern
  */
  */
function work_on_npcimages()
function showQP(bool)
{
{
// Füge Anzeigen/Verstecken-Link hinzu
  if (bool)  
findmenu = document.getElementById("NIinout");
  {
if (findmenu) {
    document.cookie="tiramon_deShowQP=1";
showlink=document.createElement("a");
  }
showlink.setAttribute("href","Javascript:showNI(true)");
  else
showlink.appendChild(document.createTextNode('anzeigen'));
  {
    document.cookie="tiramon_deShowQP=0";
hidelink=document.createElement("a");
  }
hidelink.setAttribute("href","Javascript:showNI(false)");
  location.reload();
hidelink.appendChild(document.createTextNode('verbergen'));
}
findmenu.appendChild(showlink);
findmenu.appendChild(document.createTextNode('/'));
findmenu.appendChild(hidelink);
}
 
// Standardwert des Anzeigemodus
var NIDisplaymode = "inline";
 
// Frage gespeicherten Anzeigemodus ab
var tiramon_deShowNI=document.cookie;
if (tiramon_deShowNI.indexOf("tiramon_deShowNI=") != "-1") {
if (tiramon_deShowNI.charAt(tiramon_deShowNI.indexOf("tiramon_deShowNI=")+17)!="1") NIDisplaymode = "none";
}
 
for (var i = 0; foundspan = document.getElementsByTagName("span")[i]; i++) {
if (foundspan.className == "NI") {
foundspan.setAttribute("style", "display:" + NIDisplaymode +";");
}
}
 
}
 
// Starte work_on_npcimages() nach Laden der Seite
jQuery( document ).ready( function( $ ) {
work_on_npcimages();
} );
//addOnloadHook(work_on_npcimages);
 
/*** ENDE: NPC-Bilder ***/
 
//=============================================================
 
/*** Charakterfähigkeiten ***/
 
// Ist in [[MediaWiki:CFoptions.js]] ausgelagert
mw.loader.load('/index.php?title=MediaWiki:CFoptions.js&action=raw&ctype=text/javascript');
//importScript("MediaWiki:CFoptions.js");
 
/*** ENDE: Charakterfähigkeiten ***/


function work_on_questpassages()
//=============================================================
{
  // add show/hide links to all maps
  findmenu = document.getElementById("QPinout");
  if (findmenu)
  {
    showlink=document.createElement("a");
    showlink.setAttribute("href","Javascript:showQP(true)");
    showlink.appendChild(document.createTextNode('anzeigen'));
    hidelink=document.createElement("a");
    hidelink.setAttribute("href","Javascript:showQP(false)");
    hidelink.appendChild(document.createTextNode('verbergen'));
    findmenu.appendChild(showlink);
    findmenu.appendChild(document.createTextNode('/'));
    findmenu.appendChild(hidelink);
  }


  // enable display of QPs if wished
/*** Vertikale Tabs ***/
  for(var i=0; foundspan = document.getElementsByTagName("span")[i]; i++)
  {
    var tiramon_deShowQP=document.cookie;
    if (tiramon_deShowQP.indexOf("tiramon_deShowQP=")=="-1") return(-1);
    if (tiramon_deShowQP.charAt(tiramon_deShowQP.indexOf("tiramon_deShowQP=")+17)!="1") return(-1);
    if (foundspan.className == "QP")
    {
      foundspan.setAttribute("style", "display:inline;");
    }
  }


}
// Variablendefinition
addOnloadHook(work_on_questpassages);
var shownTab = Array();
var disabledLink = Array();
/* END QuestPassages
// ============================================================


== NPC-Bilder ein/aus ==
/**
* Änderung des aktuell ausgewählten Tabs
  */
  */
function showVTab(area, tab) {
function showNI(bool)
var div = document.getElementById('VTabContent_' + String(area) + '_' + String(tab));
{
var a = document.getElementById('VTabLink_' + String(area) + '_' + String(tab));
  if (bool)  
if (!div || !a) return;
  {
 
    document.cookie="tiramon_deShowNI=1";
div.style.height = 'auto';
  }
if (shownTab[area]) shownTab[area].style.height = '0';
  else
shownTab[area] = div;
  {
    document.cookie="tiramon_deShowNI=0";
  }
  location.reload();
}


function work_on_npcimages()
var strong = document.getElementById('VTabStrong_' + String(area));
{
if (!strong) {
  // add show/hide links to all maps
strong = document.createElement('strong');
  findmenu = document.getElementById("NIinout");
strong.id = 'VTabStrong_' + String(area);
  if (findmenu)  
strong.className = 'selflink';
  {
}
    showlink=document.createElement("a");
    showlink.setAttribute("href","Javascript:showNI(true)");
    showlink.appendChild(document.createTextNode('anzeigen'));
    hidelink=document.createElement("a");
    hidelink.setAttribute("href","Javascript:showNI(false)");
    hidelink.appendChild(document.createTextNode('verbergen'));
    findmenu.appendChild(showlink);
    findmenu.appendChild(document.createTextNode('/'));
    findmenu.appendChild(hidelink);
  }


  // enable display of NIs if wished
if (disabledLink[area]) {
  for(var i=0; foundspan = document.getElementsByTagName("span")[i]; i++)
disabledLink[area].appendChild(strong.firstChild);
  {
strong.parentNode.appendChild(disabledLink[area]);
    var tiramon_deShowNI=document.cookie;
}
    if (tiramon_deShowNI.indexOf("tiramon_deShowNI=")=="-1") return(-1);
    if (tiramon_deShowNI.charAt(tiramon_deShowNI.indexOf("tiramon_deShowNI=")+17)!="1") return(-1);
    if (foundspan.className == "NI")
    {
      foundspan.setAttribute("style", "display:inline;");
    }
  }


}
strong.appendChild(a.firstChild);
addOnloadHook(work_on_npcimages);
a.parentNode.appendChild(strong);
a.parentNode.removeChild(a);
/* END NPC-Images
disabledLink[area] = a;
// ============================================================
}


== FreewarWiki Chat ==
/**
* Initialisiert vertikale Tabs
  */
  */
function initVTabs() {
function addChat()
var indexVTabs = 0;
  {
for (var i = 0; table = document.getElementsByTagName('table')[i]; i++) {
  findchat = document.getElementById("fwwchat");
if (table.className != 'VTabs') continue;
  if (!findchat) return (0);
 
  chat = document.createElement("applet");
table.id = 'VTabs_' + String(++indexVTabs);
  chat.setAttribute("archive","http://www.freejavachat.com/java/cr.zip");
shownTab[indexVTabs] = disabledLink[indexVTabs] = 0;
  chat.setAttribute("codebase","http://www.freejavachat.com/java/");
 
  chat.setAttribute("name","cr");
var numTabs = 0;
  chat.setAttribute("code","ConferenceRoom.class");
var contents;
  chat.setAttribute("width","640");
for (var j = 0; tr = table.getElementsByTagName('tr')[j]; j++) {
  chat.setAttribute("height","480");
var caption = tr.getElementsByTagName('td')[0];
caption.className = 'VTabCaption';
caption.id = 'VTabCaption_' + String(indexVTabs) + '_' + String(++numTabs);
 
var a = document.createElement('a');
a.id = 'VTabLink_' + String(indexVTabs) + '_' + String(++numTabs);
a.href = 'javascript:showVTab(' + String(indexVTabs) + ', ' + String(numTabs) + ');';
a.appendChild(caption.firstChild);
caption.appendChild(a);
 
var content = tr.getElementsByTagName('td')[1];
var div = document.createElement('div');
div.className = 'VTabContent';
div.id = 'VTabContent_' + String(indexVTabs) + '_' + String(numTabs);
 
while (content.childNodes.length) {
div.appendChild(content.childNodes[0]);
}
if (contents) {
tr.removeChild(content);
} else {
contents = content
}
contents.rowSpan = numTabs;
contents.appendChild(div);
}
}
}
 
// Starte initVTabs() nach Laden der Seite
jQuery( document ).ready( function( $ ) {
initVTabs();
} );
//addOnloadHook(initVTabs);
 
/*** ENDE: Vertikale Tabs ***/


  param = document.createElement("param"); param.setAttribute("name","channel"); param.setAttribute("value","#freewarwiki"); chat.appendChild(param);
/* 8. ANFANG: NPC Filter für Karten */
  param = document.createElement("param"); param.setAttribute("name","user"); param.setAttribute("value","einer"); chat.appendChild(param);
  param = document.createElement("param"); param.setAttribute("name", "showbuttonpanel"); param.setAttribute("value","false"); chat.appendChild(param);
  param = document.createElement("param"); param.setAttribute("name","bg"); param.setAttribute("value","ffffff"); chat.appendChild(param);
  param = document.createElement("param"); param.setAttribute("name","fg"); param.setAttribute("value","000000"); chat.appendChild(param);
  param = document.createElement("param"); param.setAttribute("name","roomswidth"); param.setAttribute("value","0"); chat.appendChild(param);
  param = document.createElement("param"); param.setAttribute("name","lurk"); param.setAttribute("value","true"); chat.appendChild(param);
  param = document.createElement("param"); param.setAttribute("name","userprompt"); param.setAttribute("value",""); chat.appendChild(param);
  param = document.createElement("param"); param.setAttribute("name","nameprompt"); param.setAttribute("value",""); chat.appendChild(param);
  param = document.createElement("param"); param.setAttribute("name","simple"); param.setAttribute("value","false"); chat.appendChild(param);
  param = document.createElement("param"); param.setAttribute("name","restricted"); param.setAttribute("value","false"); chat.appendChild(param);
  param = document.createElement("param"); param.setAttribute("name","showjoins"); param.setAttribute("value","true"); chat.appendChild(param);
  param = document.createElement("param"); param.setAttribute("name","showserverwindow"); param.setAttribute("value","true"); chat.appendChild(param);
  param = document.createElement("param"); param.setAttribute("name","nicklock"); param.setAttribute("value","false"); chat.appendChild(param);
  param = document.createElement("param"); param.setAttribute("name","playsounds"); param.setAttribute("value","true"); chat.appendChild(param);
  param = document.createElement("param"); param.setAttribute("name","onlyshowchat"); param.setAttribute("value","false"); chat.appendChild(param);
  param = document.createElement("param"); param.setAttribute("name","showcolorpanel"); param.setAttribute("value","true"); chat.appendChild(param);
  param = document.createElement("param"); param.setAttribute("name","floatnewwindows"); param.setAttribute("value","false"); chat.appendChild(param);
  param = document.createElement("param"); param.setAttribute("name","buttonsize"); param.setAttribute("value","14"); chat.appendChild(param);
  param = document.createElement("param"); param.setAttribute("name","buttonstyle"); param.setAttribute("value","BOLD"); chat.appendChild(param);
  param = document.createElement("param"); param.setAttribute("name","nosettings");  param.setAttribute("value","false"); chat.appendChild(param);


  param = document.createElement("param"); param.setAttribute("name","loadmodules"); param.setAttribute("value","NickServPanel hide"); chat.appendChild(param);
function resetNPCBordersOnMap ()
  param = document.createElement("param"); param.setAttribute("name","loadmodules1"); param.setAttribute("value","ImagePanel hide"); chat.appendChild(param);
{
  param = document.createElement("param"); param.setAttribute("name","loadmodules2"); param.setAttribute("value","OpPanel hide"); chat.appendChild(param);
    /* Entferne Klasse und setze somit CSS-Einstellungen wieder zurück */
  param = document.createElement("param"); param.setAttribute("name","commands"); param.setAttribute("value","Image Panel;/showmodule ImagePanel;NickServ Panel;/showmodule NickServPanel;Operators Panel;/showmodule OpPanel"); chat.appendChild(param);
    $("body.ns-108 .maplink div.noIE > a").parent().parent().removeClass("MapNPCBorder");
  param = document.createElement("param"); param.setAttribute("name","userwidth"); param.setAttribute("value","16"); chat.appendChild(param);
}
  param = document.createElement("param"); param.setAttribute("name","joinsound"); param.setAttribute("value","bell.au"); chat.appendChild(param);
  param = document.createElement("param"); param.setAttribute("name","sounds"); param.setAttribute("value","Alarm;Alarm.au Are we awake?;Applause;applause.au ENCORE!!!;Awwwwwww;aww.au Awwwwwwwww;BabyCry;babycry.au Wahhhh;CashRegister;cash_register.au Woohoo!;CowMoo;moo.au moos like a cow;Crash;crash.au *** CRASHES ***;Cymbal;CrashCymbal.au Tada!;Cuckoo;Cuckoo.au Where's Dr Fraud?;DoesNotCompute;does_not_compute.au That does NOT compute!;DOH!;doh.au Homer says DOH!;Door;door.au hears a door;Drip;drip.au Drip;Explosion;explosion.au explodes;Flush;flush.au courtesy flush;Geek;computer.au computer geek detected;Giggle;giggle.au haha;Glass1;Glass.au Breaks it;Glass2;breaking_glass.au Oh No!;Goofed;goofed.au OOPS!;Hallelujah!;hallelujah.au It's a miracle!;Knock;knock.au Knocks patiently;Gong;gong.au has gonged you;Laugh 1;laugh.au Laughs hysterically;Laugh 2;laughter.au You're KIDDING!;OHYEA!;ohyeah.au Woohoo!;Rasberry;Rasberry.au Excuse me;SciFi;sci_fi.au scifi;Snore;snore.au Snores;SubDive;sub_dive_horn.au Watch out!;SubPing;scoping.au Ping!;Swish;swish.au thinks that went over someone's head!;This just in;music.au NEWSFLASH! THIS JUST IN....;Ting;join.au dropped something;Train;train.au hears a train coming...;Whee;whistle.au Whee!"); chat.appendChild(param);


  param = document.createElement("param"); param.setAttribute("name","timestamp"); param.setAttribute("value","true"); chat.appendChild(param);
function showNPCBordersOnMap (npcName)
  param = document.createElement("param"); param.setAttribute("name","playsounds"); param.setAttribute("value","true"); chat.appendChild(param);
{
  param = document.createElement("param"); param.setAttribute("name","showsendbutton"); param.setAttribute("value","true"); chat.appendChild(param);
    /* Vergleiche NPC-Name mit jedem einzelnen NPC-Namen der in der Karte eingetragen ist, falls ja, dann zeiche Rahmen um das entsprechende Feld mittels der Klasse MapNPCBorder */
  param = document.createElement("param"); param.setAttribute("name","listtime"); param.setAttribute("value","0"); chat.appendChild(param);
    var NPCMapCounter = 0;  
  param = document.createElement("param"); param.setAttribute("name","guicolors1"); param.setAttribute("value","youColor=880000;operColor=004488;voicecolor=000000;userscolor=000000"); chat.appendChild(param);
    $("body.ns-108 .maplink div.noIE > a > span.NPC").each(function(){
  param = document.createElement("param"); param.setAttribute("name","guicolors2"); param.setAttribute("value","inputcolor=dddddd;inputtextColor=000000;sessioncolor=ffffff;systemcolor=aaaaaa"); chat.appendChild(param);
        if ($(this).text().toLowerCase() == npcName.toLowerCase()) // Case-Insensitive Prüfung
  param = document.createElement("param"); param.setAttribute("name","guicolors3"); param.setAttribute("value","titleColor=888888;titletextColor=ffffff;sessiontextColor=000000"); chat.appendChild(param);
        {
  param = document.createElement("param"); param.setAttribute("name","guicolors4"); param.setAttribute("value","joinColor=228b22;partColor=228b22;talkcolor=000000"); chat.appendChild(param);
          $(this).parent().parent().parent().addClass("MapNPCBorder");
  param = document.createElement("param"); param.setAttribute("name","nick"); param.setAttribute("value",""); chat.appendChild(param);
          NPCMapCounter++;
  param = document.createElement("param"); param.setAttribute("name","passprompt"); param.setAttribute("value","Passwort (registrierte Nicknames)"); chat.appendChild(param);
        }
    });
    /* Zeige zur zusätzlichen Information, wie viele Rahmen bzw. NPCs es jetzt auf dieser Karte gibt */
    $("#map_redZK #mapNPCCount").text(NPCMapCounter);
}


  findchat.appendChild(chat);
function initNPCBordersAndLinks ()
  }
{
    /* Füge Links mit Kugelsymbol hinzu (NPC-Artikel) */
    $("body.ns-0 .layout_npc .layout_npc_location > p > b:contains('Vorkommen:')").parent().parent().find("p + ul > li, p:first-child ~ p").each(function(){
        if ($(this).find("a").hasClass("new"))
            return;
        switch ($(this).find("a").attr("title"))
        {
            case "Welt": case "Oberfläche": case "Dungeon":
                return;
            default:
                $(this).append("<span class='linktomap'><a href='/index.php/Karte:"+$(this).find("a").attr("title").replace(/ /g, "_") + "#MapNPCFilter_" + $("#firstHeading").text()+"' style='display: inline-block; height: 12px; width: 12px; overflow:hidden;'> </a></span>");
        }
    });


addOnloadHook(addChat);
    /* Erstelle Eingabefeld (Karten-Artikel) */
    $("body.ns-108 #map_redZK").append("<br /><input type='text' name='findeNPC' />  <a href='#'>NPC suchen</a><br /><span id='mapNPCCount'>0</span> NPCs wurden gefunden");
/* END QuestPassages
// ============================================================


== [[Gesamtkarte]] ==
    /* Starte NPC-Suche, bei Klick auf den NPC-Suchen-Link */
// BEGIN import code used by [[Gesamtkarte]]
    $("body.ns-108 #map_redZK > input[name='findeNPC'] + a").click(function(){
// SEE ALSO [[MediaWiki:Gesamtkarte.js]] */
        var NPCname = $(this).parent().find("input[name='findeNPC']").val();
        resetNPCBordersOnMap();
  document.write('<script type="text/javascript" src="/index.php?title=MediaWiki:Gesamtkarte.js&action=raw&ctype=text/javascript&dontcountme=s"></script>');
        showNPCBordersOnMap(NPCname);
  document.write('<script type="text/javascript" src="/index.php?title=MediaWiki:Autorouter.js&action=raw&ctype=text/javascript&dontcountme=s"></script>');
        $(this).attr("href","#MapNPCFilter_"+NPCname);
    });
/* END import code used by [[Gesamtkarte]]
// ============================================================


    /* Automatisches Absenden des Forms mit der Enter-Taste */
    $("body.ns-108 #map_redZK > input[name='findeNPC']").keypress(function(e) {
        if(e && e.which == 13)
        {
            $(this).next().click();
            window.location.replace("#MapNPCFilter_"+$(this).val());
        }
    });


    /* Wenn der Hash schon zum Ladezeitpunkt mit "#MapNPCFilter_" beginnt, direkt nach NPC suchen und im Formular eintragen */
    if (window.location.hash.substr(0,14) == "#MapNPCFilter_")
    {
        var NPCname = window.location.hash.substr(14);
        /* NPC-Namen in URLs können kodiert sein, z.B. wird Leerzeichen zu %20*/
        NPCname = decodeURI(NPCname);
        showNPCBordersOnMap(NPCname);
        $("body.ns-108 #map_redZK > input[name='findeNPC']").val(NPCname);
    }
}


== Google Analytics ==
jQuery( document ).ready( function( $ ) {
// BEING Tracking Code für [[wikipedia:de:Google Analytics|Google Analytics]] /*
initNPCBordersAndLinks();
} );
document.write('<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>');
//addOnloadHook(initNPCBordersAndLinks);
document.write('<script type="text/javascript">_uacct = "UA-466631-1"; urchinTracker();</script>');
/* ENDE: NPC Filter für Karten */
/* END Google Analytics
// ============================================================


== Charakterfähigkeitsrechner ==
// BEGIN import code used by user skill pages
// SEE ALSO [[:Kategorie:Charakterfähigkeiten]] */
  document.write('<script type="text/javascript" src="/index.php?title=MediaWiki:CFoptions.js&action=raw&ctype=text/javascript&dontcountme=s"></script>');
/* END import code used by user skill pages
// ============================================================


// END OF FILE */
//==Schnee==
  // Outsourced to [[MediaWiki:Schnee.js]]
/* DEAKTIVIERT (für Weihnachtszeit gedacht)
  if (mw.config.get('wgTitle') === 'Hauptseite') {
      mw.loader.load('/index.php?title=MediaWiki:Schnee.js&action=raw&ctype=text/javascript');
      //importScript("MediaWiki:Schnee.js");
  }
*/

Aktuelle Version vom 11. Dezember 2023, 17:01 Uhr

/*********************************************************************/
/* Common.js enthält gemeinsamen JavaScript-Code für alle Benutzer. */
/* Jedes JavaScript, dass sich in dieser Seite befindet, wird für  */
/* alle Benutzer geladen. Daher bitte mit Vorsicht bearbeiten!    */
/*****************************************************************/

//=============================================================
/*** BEGIN: Anpassung für die Navigationsleisten ***/

// Sprachdefinition
var NavigationBarHide = 'Einklappen';
var NavigationBarShow = 'Ausklappen';

/**
 * Maximale Anzahl an Navigationsleisten pro Seite.
 * Gibt es auf einer Seite mehr, werden diese automatisch versteckt!
 * 	var NavigationBarShowDefault = 0; // Alle Navigationsleisten werden versteckt
 * 	var NavigationBarShowDefault = 1; // Alle außer die erste Navigationsleiste werden versteckt
 **/
var NavigationBarShowDefault = 1;

/**
 * Zeigt und versteckt den Inhalt und das Bild der Navigationsleiste
 * Parameter:
 *	indexNavigationBar: Index der Navigationsleiste
 **/
function toggleNavigationBar(indexNavigationBar) {
	var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
	var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);

	if (!NavFrame || !NavToggle) {
		return false;
	}

	// Verstecken, wenn die Leiste derzeit gezeigt wird
	if (NavToggle.firstChild.data == NavigationBarHide) {
		for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
			if (NavChild.className == 'NavPic') {
				NavChild.style.display = 'none';
			}
			if (NavChild.className == 'NavContent') {
				NavChild.style.display = 'none';
			}
			if (NavChild.className == 'NavToggle') {
				NavChild.firstChild.data = NavigationBarShow;
			}
		}

	// Anzeigen, wenn die Leiste derzeit versteckt ist
	} else if (NavToggle.firstChild.data == NavigationBarShow) {
		for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
			if (NavChild.className == 'NavPic') {
				NavChild.style.display = 'block';
			}
			if (NavChild.className == 'NavContent') {
					NavChild.style.display = 'block';
			}
			if (NavChild.className == 'NavToggle') {
				NavChild.firstChild.data = NavigationBarHide;
			}
		}
	}
}


/**
 * Fügt Anzeigen/Verstecken-Link zur Navigationsleiste hinzu
 */
function createNavigationBarToggleButton() {
	var indexNavigationBar = 0;
	// Auf alle div-Elemente anwenden
	for (var i = 0; NavFrame = document.getElementsByTagName("div")[i]; i++) {
		// Wenn eine Navigationsleiste gefunden wurde
		if (NavFrame.className == "NavFrame") {
			indexNavigationBar++;
			var NavToggle = document.createElement("a");
			NavToggle.className = 'NavToggle';
			NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
			NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');

			var NavToggleText = document.createTextNode(NavigationBarHide);
			NavToggle.appendChild(NavToggleText);
			
			// Füge die Links als erstes div-Element hinzu
			NavFrame.insertBefore(NavToggle, NavFrame.firstChild);
			NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
		}
	}
	// Wenn mehrere Navigationsleisten gefunden wurden, dann wird versteckt
	if (NavigationBarShowDefault < indexNavigationBar) {
		for (var i = 1; i <= indexNavigationBar; i++) {
			toggleNavigationBar(i);
		}
	}
}

// Lade createNavigationBarToggleButton() nach Laden der Seite

jQuery( document ).ready( function( $ ) {
	createNavigationBarToggleButton();
} );
//addOnloadHook(createNavigationBarToggleButton);

/*** ENDE: Anpassung für die Navigationsleisten ***/

//=============================================================

/*** Kampfrechner ***/

// Ist in [[MediaWiki:Kampfrechner.js]] ausgelagert
// Wird nur auf der Seite [[Kampfrechner]] aufgerufen
if (mw.config.get('wgTitle') === 'Kampfrechner') {
        mw.loader.load('/index.php?title=MediaWiki:Kampfrechner.js&action=raw&ctype=text/javascript');
	//importScript("MediaWiki:Kampfrechner.js");
}

/*** ENDE: Kampfrechner ***/



/*** Kartenspezifisches ***/

// Gesamtkarten-Funktionen
//	Autorouter: Ist in [[MediaWiki:Autorouter.js]] ausgelagert
//	Gesamtkarte-Funktionen: Sind in [[MediaWiki:Gesamtkarte.js]] ausgelagert
// Werden nur auf der Seite [[Gesamtkarte]] aufgerufen
if (mw.config.get('wgTitle') === 'Gesamtkarte') {
	mw.loader.load('/index.php?title=MediaWiki:Gesamtkarte.js&action=raw&ctype=text/javascript');
	//importScript("MediaWiki:Gesamtkarte.js");
	mw.loader.load('/index.php?title=MediaWiki:Autorouter.js&action=raw&ctype=text/javascript');
	//importScript("MediaWiki:Autorouter.js");
}

/**
 * Zeigt/Versteckt Questpassage auf interkativer Karte
 * Parameter:
 * 	bool: Wenn wahr, Questpassage anzeigen, wenn falsch, dann nicht
 */
function showQP(bool) {
	if (bool) {
		document.cookie = "tiramon_deShowQP=1";
	} else {
		document.cookie = "tiramon_deShowQP=0";
	}
	location.reload();
}

/**
 * Generalfunktion, arbeitet an allen Questpassagen
 */
function work_on_questpassages() {
	// Fügt den Anzeigen/Verstecken-Link zur Map hinzu
	findmenu = document.getElementById("QPinout");
	if (findmenu) {
		showlink = document.createElement("a");
		showlink.setAttribute("href","Javascript:showQP(true)");
		showlink.appendChild(document.createTextNode('anzeigen'));
		
		hidelink = document.createElement("a");
		hidelink.setAttribute("href","Javascript:showQP(false)");
		hidelink.appendChild(document.createTextNode('verbergen'));
		
		findmenu.appendChild(showlink);
		findmenu.appendChild(document.createTextNode('/'));
		findmenu.appendChild(hidelink);
	}

	// Questpassagen anzeigen, wenn gewünscht
	for (var i = 0; foundspan = document.getElementsByTagName("span")[i]; i++) {
		var tiramon_deShowQP = document.cookie;
		
		if (tiramon_deShowQP.indexOf("tiramon_deShowQP=")=="-1") return(-1);
		if (tiramon_deShowQP.charAt(tiramon_deShowQP.indexOf("tiramon_deShowQP=")+17) != "1") return(-1);
		if (foundspan.className == "QP") {
			foundspan.setAttribute("style", "display:inline;");
		}
	}
}

// Starte work_on_questpassages() nach Laden der Seite
jQuery( document ).ready( function( $ ) {
	work_on_questpassages();
} );
//addOnloadHook(work_on_questpassages);

/*** ENDE: Kartenspezifisches ***/

//=============================================================

/*** NPC-Bilder ***/
 
/**
 * Zeigt/Versteckt NPC-Bilder
 * Parameter:
 * 	bool: Wenn wahr, NPC-Bilder anzeigen, wenn falsch, dann nicht
 */
function showNI(bool)
{
	var DaysToExpire = 300; // Cookie wird nach so vielen Tagen gelöscht
	var ExpireDate = new Date();

	ExpireDate.setTime((ExpireDate.getTime() + DaysToExpire * 24 * 60 * 60 * 1000));

	if (bool) {
		document.cookie="tiramon_deShowNI=1; expires=" + ExpireDate.toGMTString();
	} else {
		document.cookie="tiramon_deShowNI=0; expires=" + ExpireDate.toGMTString();
	}
	location.reload();
}

/**
 * Generalfunktion, arbeitet an allen NPC-Bildern
 */
function work_on_npcimages()
{
	// Füge Anzeigen/Verstecken-Link hinzu
	findmenu = document.getElementById("NIinout");
	if (findmenu) {
		showlink=document.createElement("a");
		showlink.setAttribute("href","Javascript:showNI(true)");
		showlink.appendChild(document.createTextNode('anzeigen'));
		
		hidelink=document.createElement("a");
		hidelink.setAttribute("href","Javascript:showNI(false)");
		hidelink.appendChild(document.createTextNode('verbergen'));
		
		findmenu.appendChild(showlink);
		findmenu.appendChild(document.createTextNode('/'));
		findmenu.appendChild(hidelink);
	}

	// Standardwert des Anzeigemodus
	var NIDisplaymode = "inline";

	// Frage gespeicherten Anzeigemodus ab
	var tiramon_deShowNI=document.cookie;
	if (tiramon_deShowNI.indexOf("tiramon_deShowNI=") != "-1") {
		if (tiramon_deShowNI.charAt(tiramon_deShowNI.indexOf("tiramon_deShowNI=")+17)!="1") NIDisplaymode = "none";
	}

	for (var i = 0; foundspan = document.getElementsByTagName("span")[i]; i++) {
		if (foundspan.className == "NI") { 
			foundspan.setAttribute("style", "display:" + NIDisplaymode +";");
		}
	}

}

// Starte work_on_npcimages() nach Laden der Seite
jQuery( document ).ready( function( $ ) {
	work_on_npcimages();
} );
//addOnloadHook(work_on_npcimages);

/*** ENDE: NPC-Bilder ***/

//=============================================================

/*** Charakterfähigkeiten ***/

// Ist in [[MediaWiki:CFoptions.js]] ausgelagert
mw.loader.load('/index.php?title=MediaWiki:CFoptions.js&action=raw&ctype=text/javascript');
//importScript("MediaWiki:CFoptions.js");

/*** ENDE: Charakterfähigkeiten ***/

//=============================================================

/*** Vertikale Tabs ***/

// Variablendefinition
var shownTab = Array();
var disabledLink = Array();

/**
 * Änderung des aktuell ausgewählten Tabs
 */
function showVTab(area, tab) {
	var div = document.getElementById('VTabContent_' + String(area) + '_' + String(tab));
	var a = document.getElementById('VTabLink_' + String(area) + '_' + String(tab));
	if (!div || !a) return;

	div.style.height = 'auto';
	if (shownTab[area]) shownTab[area].style.height = '0';
	shownTab[area] = div;

	var strong = document.getElementById('VTabStrong_' + String(area));
	if (!strong) {
		strong = document.createElement('strong');
		strong.id = 'VTabStrong_' + String(area);
		strong.className = 'selflink';
	}

	if (disabledLink[area]) {
		disabledLink[area].appendChild(strong.firstChild);
		strong.parentNode.appendChild(disabledLink[area]);
	}

	strong.appendChild(a.firstChild);
	a.parentNode.appendChild(strong);
	a.parentNode.removeChild(a);
	disabledLink[area] = a;
}

/**
 * Initialisiert vertikale Tabs
 */
function initVTabs() {
	var indexVTabs = 0;
	for (var i = 0; table = document.getElementsByTagName('table')[i]; i++) {
		if (table.className != 'VTabs') continue;

		table.id = 'VTabs_' + String(++indexVTabs);
		shownTab[indexVTabs] = disabledLink[indexVTabs] = 0;

		var numTabs = 0;
		var contents;
		for (var j = 0; tr = table.getElementsByTagName('tr')[j]; j++) {
			var caption = tr.getElementsByTagName('td')[0];
			caption.className = 'VTabCaption';
			caption.id = 'VTabCaption_' + String(indexVTabs) + '_' + String(++numTabs);

			var a = document.createElement('a');
			a.id = 'VTabLink_' + String(indexVTabs) + '_' + String(++numTabs);
			a.href = 'javascript:showVTab(' + String(indexVTabs) + ', ' + String(numTabs) + ');';
			a.appendChild(caption.firstChild);
			caption.appendChild(a);

			var content = tr.getElementsByTagName('td')[1];
			var div = document.createElement('div');
			div.className = 'VTabContent';
			div.id = 'VTabContent_' + String(indexVTabs) + '_' + String(numTabs);

			while (content.childNodes.length) {
				div.appendChild(content.childNodes[0]);
			}
			if (contents) {
				tr.removeChild(content);
			} else {
				contents = content
			}
			contents.rowSpan = numTabs;
			contents.appendChild(div);
		}
	}
}

// Starte initVTabs() nach Laden der Seite
jQuery( document ).ready( function( $ ) {
	initVTabs();
} );
//addOnloadHook(initVTabs);

/*** ENDE: Vertikale Tabs ***/

/* 8. ANFANG: NPC Filter für Karten */

function resetNPCBordersOnMap ()
{
    /* Entferne Klasse und setze somit CSS-Einstellungen wieder zurück */
    $("body.ns-108 .maplink div.noIE > a").parent().parent().removeClass("MapNPCBorder");
}

function showNPCBordersOnMap (npcName)
{
    /* Vergleiche NPC-Name mit jedem einzelnen NPC-Namen der in der Karte eingetragen ist, falls ja, dann zeiche Rahmen um das entsprechende Feld mittels der Klasse MapNPCBorder */
    var NPCMapCounter = 0; 
    $("body.ns-108 .maplink div.noIE > a > span.NPC").each(function(){
        if ($(this).text().toLowerCase() == npcName.toLowerCase()) // Case-Insensitive Prüfung
        {
           $(this).parent().parent().parent().addClass("MapNPCBorder");
           NPCMapCounter++;
        }
    });
    /* Zeige zur zusätzlichen Information, wie viele Rahmen bzw. NPCs es jetzt auf dieser Karte gibt */
    $("#map_redZK #mapNPCCount").text(NPCMapCounter);
}

function initNPCBordersAndLinks ()
{
    /* Füge Links mit Kugelsymbol hinzu (NPC-Artikel) */
    $("body.ns-0 .layout_npc .layout_npc_location > p > b:contains('Vorkommen:')").parent().parent().find("p + ul > li, p:first-child ~ p").each(function(){
        if ($(this).find("a").hasClass("new"))
            return;
        switch ($(this).find("a").attr("title"))
        {
            case "Welt": case "Oberfläche": case "Dungeon":
                return;
            default:
                $(this).append("<span class='linktomap'><a href='/index.php/Karte:"+$(this).find("a").attr("title").replace(/ /g, "_") + "#MapNPCFilter_" + $("#firstHeading").text()+"' style='display: inline-block; height: 12px; width: 12px; overflow:hidden;'> </a></span>");
        }
    });

    /* Erstelle Eingabefeld (Karten-Artikel) */
    $("body.ns-108 #map_redZK").append("<br /><input type='text' name='findeNPC' />   <a href='#'>NPC suchen</a><br /><span id='mapNPCCount'>0</span> NPCs wurden gefunden");

    /* Starte NPC-Suche, bei Klick auf den NPC-Suchen-Link */
    $("body.ns-108 #map_redZK > input[name='findeNPC'] + a").click(function(){
        var NPCname = $(this).parent().find("input[name='findeNPC']").val();
        resetNPCBordersOnMap();
        showNPCBordersOnMap(NPCname);
        $(this).attr("href","#MapNPCFilter_"+NPCname);
    });

    /* Automatisches Absenden des Forms mit der Enter-Taste */
    $("body.ns-108 #map_redZK > input[name='findeNPC']").keypress(function(e) {
        if(e && e.which == 13)
        {
            $(this).next().click();
            window.location.replace("#MapNPCFilter_"+$(this).val());
        }
    });

    /* Wenn der Hash schon zum Ladezeitpunkt mit "#MapNPCFilter_" beginnt, direkt nach NPC suchen und im Formular eintragen */
    if (window.location.hash.substr(0,14) == "#MapNPCFilter_")
    {
        var NPCname = window.location.hash.substr(14);
        /* NPC-Namen in URLs können kodiert sein, z.B. wird Leerzeichen zu %20*/
        NPCname = decodeURI(NPCname);
        showNPCBordersOnMap(NPCname);
        $("body.ns-108 #map_redZK > input[name='findeNPC']").val(NPCname);
    }
}

jQuery( document ).ready( function( $ ) {
	initNPCBordersAndLinks();
} );
//addOnloadHook(initNPCBordersAndLinks);
/* ENDE: NPC Filter für Karten */


//==Schnee==
   // Outsourced to [[MediaWiki:Schnee.js]]
/* DEAKTIVIERT (für Weihnachtszeit gedacht)
   if (mw.config.get('wgTitle') === 'Hauptseite') {
      mw.loader.load('/index.php?title=MediaWiki:Schnee.js&action=raw&ctype=text/javascript');
      //importScript("MediaWiki:Schnee.js");
   }
*/