MediaWiki:Common.js: Unterschied zwischen den Versionen

aus FreewarWiki, der Referenz für Freewar
Zur Navigation springen Zur Suche springen
(-Besucherecke, geht jetzt direkt über MediaWiki:Sidebar)
K (Änderungen von Three Of Twelve rückgängig gemacht und letzte Version von WikiWiki wiederhergestellt)
Zeile 1: Zeile 1:
/* Hinweis: Die Wiki-Überschriften sind JavaScript-technisch auskommentiert
/* Hinweis: Die Wiki-Überschriften sind JavaScript-technisch auskommentiert
== Multiple onload functions ==
// setup onload functions this way:
// aOnloadFunctions[aOnloadFunctions.length] = function_name; // without brackets! */
if (!window.aOnloadFunctions) {
  var aOnloadFunctions = new Array();
}
window.onload = function() {
  if (window.aOnloadFunctions) {
    for (var _i=0; _i<aOnloadFunctions.length; _i++) {
      aOnloadFunctions[_i]();
    }
  }
}
/* END Enable multiple onload functions
// ============================================================
== Dynamic Navigation Bars ==
== Dynamic Navigation Bars ==
  */
  // NEEDS Enable multiple onload functions */
   
   
  // set up the words in your language
  // set up the words in your language
Zeile 108: Zeile 127:
  }
  }
   
   
  addOnloadHook(createNavigationBarToggleButton);
  aOnloadFunctions[aOnloadFunctions.length] = createNavigationBarToggleButton;
   
   
  /* END Dynamic Navigation Bars
  /* END Dynamic Navigation Bars
// ============================================================
== Vertical Tabbing ==
*/
var shownTab = Array();
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));
  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;
}
// 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);
    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);
    }
  }
}
addOnloadHook(initVTabs);
/* END Vertical Tabbing
  // ============================================================
  // ============================================================


== Kampfrechner ==
== Kampfrechner ==
  */
  // NEEDS Enable multiple onload functions */
   
   
  var global_lp_a, global_a_a, global_v_a, global_lp_v, global_a_v, global_v_v;
  var global_lp_a, global_a_a, global_v_a, global_lp_v, global_a_v, global_v_v;
Zeile 337: Zeile 274:
   }
   }
  }
  }
  addOnloadHook(init_fightcalc);
  aOnloadFunctions[aOnloadFunctions.length] = init_fightcalc;
   
   
  /* END Kampfrechner
  /* END Kampfrechner
// ============================================================
== Besucherecke ==
// NEEDS multiple onload functions */
function init_gamesdyn()
{
  div = document.getElementById('p-Besucherecke');
  /* li = document.createElement('li');
    * ifr = document.createElement('iframe');
    * ifr.setAttribute('src', 'http://voting.gdynamite.de/45/');
    * ifr.setAttribute('width', '88');
    * ifr.setAttribute('height', '31');
    * ifr.setAttribute('frameborder', '0');
    * ifr.setAttribute('marginwidth', '0');
    * ifr.setAttribute('marginheight', '0');
    * ifr.setAttribute('scrolling', 'no');
    * ifr.setAttribute('hspace', '0');
    * ifr.setAttribute('vspace', '0');
    * li.appendChild(document.createTextNode('Vote für Freewar:'));
    * li.appendChild(ifr);
    * div.getElementsByTagName('ul')[0].appendChild(li); */
  toolbar = document.getElementById('p-tb')
  toolbar.parentNode.insertBefore(div, toolbar);
}
aOnloadFunctions[aOnloadFunctions.length] = init_gamesdyn;
/* END Besucherecke
  // ============================================================
  // ============================================================


== Questpassagen für Karten==
== Questpassagen für Karten==
  */
  // NEEDS multiple onload functions */
   
   
  function showQP(bool)
  function showQP(bool)
Zeile 388: Zeile 353:


  }
  }
  addOnloadHook(work_on_questpassages);
  aOnloadFunctions[aOnloadFunctions.length] = work_on_questpassages;
   
   
  /* END QuestPassages
  /* END QuestPassages
Zeile 394: Zeile 359:


== NPC-Bilder ein/aus ==
== NPC-Bilder ein/aus ==
  */
  // NEEDS multiple onload functions */
   
   
  function showNI(bool)
  function showNI(bool)
Zeile 439: Zeile 404:


  }
  }
  addOnloadHook(work_on_npcimages);
  aOnloadFunctions[aOnloadFunctions.length] = work_on_npcimages;
   
   
  /* END NPC-Images
  /* END NPC-Images
Zeile 445: Zeile 410:


== FreewarWiki Chat ==
== FreewarWiki Chat ==
  */
  // NEEDS multiple onload functions */
   
   
  function addChat()
  function addChat()
Zeile 503: Zeile 468:
   }
   }


  addOnloadHook(addChat);
  aOnloadFunctions[aOnloadFunctions.length] = addChat;
   
   
  /* END QuestPassages
  /* END QuestPassages
Zeile 513: Zeile 478:
   
   
   document.write('<script type="text/javascript" src="/index.php?title=MediaWiki:Gesamtkarte.js&action=raw&ctype=text/javascript&dontcountme=s"></script>');
   document.write('<script type="text/javascript" src="/index.php?title=MediaWiki:Gesamtkarte.js&action=raw&ctype=text/javascript&dontcountme=s"></script>');
  document.write('<script type="text/javascript" src="/index.php?title=MediaWiki:Autorouter.js&action=raw&ctype=text/javascript&dontcountme=s"></script>');
   
   
  /* END import code used by [[Gesamtkarte]]
  /* END import code used by [[Gesamtkarte]]
  // ============================================================
  // ============================================================


 
== Tabellensortierung ==
// BEGIN table sort algorithm
// SEE ALSO [[Vorlage:Sort]] */
var global_col;
function get_col(tr, th)
{
  for (i = 0; _th = tr.getElementsByTagName('th')[i]; i++)
    if (_th == th) return i;
}
function innerText(elem)
{
  var ret = '';
  for (n = 0; child = elem.childNodes[n]; n++)
  {
    if (child.nodeType == 3) ret += child.nodeValue;
    else ret += innerText(child);
  }
  return ret;
}
function trim(s)
{
  while (s.charAt(0) == ' ' || s.charAt(0) == '\n') s = s.substr(1);
  while (s.charAt(s.length - 1) == ' ' || s.charAt(s.length - 1) == '\n') s = s.substr(0, s.length - 1);
  return s;
}
function rowsort(a, b)
{
  var n = -1, s1, s2;
  for (i = 0; n < global_col; i++) if (a.childNodes[i].nodeType == 1)
  {
    n += a.childNodes[i].colSpan;
    s1 = trim(innerText(a.childNodes[i]));
  }
  n = -1;
  for (i = 0; n < global_col; i++) if (b.childNodes[i].nodeType == 1)
  {
    n += b.childNodes[i].colSpan;
    s2 = trim(innerText(b.childNodes[i]));
  }
  if (isNaN(s1) || isNaN(s2))
  {
    if (s1 == s2) return 0;
    arr = new Array(s1, s2);
    arr.sort();
    if (arr[0] == s1) return -1;
    return 1;
  } else return (Number(s1) - Number(s2));
}
function toggle_sort()
{
  // Hierarchie:
  //    button td        tr        tbody      table      th
  var th = this.parentNode.parentNode.parentNode.parentNode.parentNode;
  //          th tr        tbody      table
  var tbody = th.parentNode.parentNode;
  global_col = get_col(th.parentNode, th), cur_row = 0;
  var rows = new Array();
  for (i = 0; tr = tbody.childNodes[i]; i++)
  {
    if (tr.nodeType != 1) continue;
    if (tr.getElementsByTagName('th').length) continue;
    rows[rows.length] = tr;
    tbody.removeChild(tr);
    i -= 1;
  }
  rows.sort(rowsort);
  if (this.parentNode.className == 'SortToggleUp') rows.reverse();
  for (i = 0; i < rows.length; i++) tbody.appendChild(rows[i]);
}
function init_sort()
{
  for (i = 0; th = document.getElementsByTagName('th')[i]; i++)
  {
    for (j = 0; sort = th.getElementsByTagName('table')[j]; j++)
    {
      if (sort.className != 'SortToggle') continue;
      sort.getElementsByTagName('a')[0].href = '#';
      sort.getElementsByTagName('a')[0].onclick = toggle_sort;
      sort.getElementsByTagName('a')[1].href = '#';
      sort.getElementsByTagName('a')[1].onclick = toggle_sort;
    }
  }
}
aOnloadFunctions[aOnloadFunctions.length] = init_sort;
/* END table sort algorithm
// ============================================================


== Google Analytics ==
== Google Analytics ==
Zeile 527: Zeile 586:
   
   
  /* END Google Analytics
  /* 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 */
  // END OF FILE */

Version vom 10. März 2009, 23:28 Uhr

/* Hinweis: Die Wiki-Überschriften sind JavaScript-technisch auskommentiert
== Multiple onload functions ==
 // setup onload functions this way:
 // aOnloadFunctions[aOnloadFunctions.length] = function_name; // without brackets! */
 
 if (!window.aOnloadFunctions) {
   var aOnloadFunctions = new Array();
 }
 
 window.onload = function() {
   if (window.aOnloadFunctions) {
     for (var _i=0; _i<aOnloadFunctions.length; _i++) {
       aOnloadFunctions[_i]();
     }
   }
 }
 
 /* END Enable multiple onload functions
 // ============================================================

== Dynamic Navigation Bars ==
 // NEEDS Enable multiple onload functions */
 
 // set up the words in your language
 var NavigationBarHide = 'Einklappen';
 var NavigationBarShow = 'Ausklappen';
 
 // set up max count of Navigation Bars on page,
 // if there are more, all will be hidden
 // NavigationBarShowDefault = 0; // all bars will be hidden
 // NavigationBarShowDefault = 1; // on pages with more than 1 bar all bars will be hidden
 var NavigationBarShowDefault = 1;
 
 
 // shows and hides content and picture (if available) of navigation bars
 // Parameters:
 //     indexNavigationBar: the index of navigation bar to be toggled
 function toggleNavigationBar(indexNavigationBar)
 {
    var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
    var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
 
    if (!NavFrame || !NavToggle) {
        return false;
    }
 
    // if shown now
    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;
            }
        }
 
    // 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);
        }
    }
 
 }
 
 aOnloadFunctions[aOnloadFunctions.length] = createNavigationBarToggleButton;
 
 /* END Dynamic Navigation Bars
 // ============================================================

== Kampfrechner ==
 // NEEDS Enable multiple onload functions */
 
 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;
 
 function calc_fight()
 {
   dif_a = global_a_a.value - global_v_v.value;
   dif_v = global_a_v.value - global_v_a.value;
   if (dif_a < 1) dif_a = 1;
   if (dif_v < 1) dif_v = 1;
   fac_a = global_lp_v.value / dif_a;
   fac_v = global_lp_a.value / dif_v;
   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;
     else lp_v = 1;
     end_v_lp = Math.floor(global_lp_v.value - fac_v * lp_v);  
     global_fightresult_1.nodeValue = 'Verteidiger gewinnt mit ' + end_v_lp + ' LP'
     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';
       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);
   }
 }
 aOnloadFunctions[aOnloadFunctions.length] = init_fightcalc;
 
 /* END Kampfrechner
 // ============================================================

== Besucherecke ==
 // NEEDS multiple onload functions */
 
 function init_gamesdyn()
 {
   div = document.getElementById('p-Besucherecke');
   /* li = document.createElement('li');
    * ifr = document.createElement('iframe');
    * ifr.setAttribute('src', 'http://voting.gdynamite.de/45/');
    * ifr.setAttribute('width', '88');
    * ifr.setAttribute('height', '31');
    * ifr.setAttribute('frameborder', '0');
    * ifr.setAttribute('marginwidth', '0');
    * ifr.setAttribute('marginheight', '0');
    * ifr.setAttribute('scrolling', 'no');
    * ifr.setAttribute('hspace', '0');
    * ifr.setAttribute('vspace', '0');
    * li.appendChild(document.createTextNode('Vote für Freewar:'));
    * li.appendChild(ifr);
    * div.getElementsByTagName('ul')[0].appendChild(li); */
   toolbar = document.getElementById('p-tb')
   toolbar.parentNode.insertBefore(div, toolbar);
 }
 aOnloadFunctions[aOnloadFunctions.length] = init_gamesdyn;
 
 /* END Besucherecke
 // ============================================================

== Questpassagen für Karten==
 // NEEDS multiple onload functions */
 
 function showQP(bool)
 {
   if (bool) 
   {
     document.cookie="tiramon_deShowQP=1";
   }
   else
   {
     document.cookie="tiramon_deShowQP=0";
   }
   location.reload();
 }

 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
   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;");
     }
   }

 }
 aOnloadFunctions[aOnloadFunctions.length] = work_on_questpassages;
 
 /* END QuestPassages
 // ============================================================

== NPC-Bilder ein/aus ==
 // NEEDS multiple onload functions */
 
 function showNI(bool)
 {
   if (bool) 
   {
     document.cookie="tiramon_deShowNI=1";
   }
   else
   {
     document.cookie="tiramon_deShowNI=0";
   }
   location.reload();
 }

 function work_on_npcimages()
 {
   // add show/hide links to all maps
   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);
   }

   // enable display of NIs if wished
   for(var i=0; foundspan = document.getElementsByTagName("span")[i]; i++)
   {
     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;");
     }
   }

 }
 aOnloadFunctions[aOnloadFunctions.length] = work_on_npcimages;
 
 /* END NPC-Images
 // ============================================================

== FreewarWiki Chat ==
 // NEEDS multiple onload functions */
 
 function addChat()
   {
   findchat = document.getElementById("fwwchat");
   if (!findchat) return (0);
   chat = document.createElement("applet");
   chat.setAttribute("archive","http://www.freejavachat.com/java/cr.zip");
   chat.setAttribute("codebase","http://www.freejavachat.com/java/");
   chat.setAttribute("name","cr");
   chat.setAttribute("code","ConferenceRoom.class");
   chat.setAttribute("width","640");
   chat.setAttribute("height","480");

   param = document.createElement("param"); param.setAttribute("name","channel"); param.setAttribute("value","#freewarwiki"); chat.appendChild(param);
   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);
   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);
   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);
   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);
   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);
   param = document.createElement("param"); param.setAttribute("name","listtime"); param.setAttribute("value","0"); chat.appendChild(param);
   param = document.createElement("param"); param.setAttribute("name","guicolors1"); param.setAttribute("value","youColor=880000;operColor=004488;voicecolor=000000;userscolor=000000"); chat.appendChild(param);
   param = document.createElement("param"); param.setAttribute("name","guicolors2"); param.setAttribute("value","inputcolor=dddddd;inputtextColor=000000;sessioncolor=ffffff;systemcolor=aaaaaa"); chat.appendChild(param);
   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);
   param = document.createElement("param"); param.setAttribute("name","nick"); param.setAttribute("value",""); chat.appendChild(param);
   param = document.createElement("param"); param.setAttribute("name","passprompt"); param.setAttribute("value","Passwort (registrierte Nicknames)"); chat.appendChild(param);

   findchat.appendChild(chat);
   }

 aOnloadFunctions[aOnloadFunctions.length] = addChat;
 
 /* END QuestPassages
 // ============================================================

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

== Tabellensortierung ==
 // BEGIN table sort algorithm
 // SEE ALSO [[Vorlage:Sort]] */
 
 var global_col;
 
 function get_col(tr, th)
 {
   for (i = 0; _th = tr.getElementsByTagName('th')[i]; i++)
     if (_th == th) return i;
 }
 
 function innerText(elem)
 {
   var ret = '';
   for (n = 0; child = elem.childNodes[n]; n++)
   {
     if (child.nodeType == 3) ret += child.nodeValue;
     else ret += innerText(child);
   }
   return ret;
 }
 
 function trim(s)
 {
   while (s.charAt(0) == ' ' || s.charAt(0) == '\n') s = s.substr(1);
   while (s.charAt(s.length - 1) == ' ' || s.charAt(s.length - 1) == '\n') s = s.substr(0, s.length - 1);
   return s;
 }
 
 function rowsort(a, b)
 {
   var n = -1, s1, s2;
   for (i = 0; n < global_col; i++) if (a.childNodes[i].nodeType == 1)
   {
     n += a.childNodes[i].colSpan;
     s1 = trim(innerText(a.childNodes[i]));
   }
   n = -1;
   for (i = 0; n < global_col; i++) if (b.childNodes[i].nodeType == 1)
   {
     n += b.childNodes[i].colSpan;
     s2 = trim(innerText(b.childNodes[i]));
   }
 
   if (isNaN(s1) || isNaN(s2))
   {
     if (s1 == s2) return 0;
     arr = new Array(s1, s2);
     arr.sort();
     if (arr[0] == s1) return -1;
     return 1;
   } else return (Number(s1) - Number(s2));
 }
 
 function toggle_sort()
 {
   // Hierarchie:
   //     button td         tr         tbody      table      th
   var th = this.parentNode.parentNode.parentNode.parentNode.parentNode;
   //          th tr         tbody      table
   var tbody = th.parentNode.parentNode;
   global_col = get_col(th.parentNode, th), cur_row = 0;
   var rows = new Array();
   for (i = 0; tr = tbody.childNodes[i]; i++)
   {
     if (tr.nodeType != 1) continue;
     if (tr.getElementsByTagName('th').length) continue;
     rows[rows.length] = tr;
     tbody.removeChild(tr);
     i -= 1;
   }
   rows.sort(rowsort);
   if (this.parentNode.className == 'SortToggleUp') rows.reverse();
   for (i = 0; i < rows.length; i++) tbody.appendChild(rows[i]);
 }
 
 function init_sort()
 {
   for (i = 0; th = document.getElementsByTagName('th')[i]; i++)
   {
     for (j = 0; sort = th.getElementsByTagName('table')[j]; j++)
     {
       if (sort.className != 'SortToggle') continue;
       sort.getElementsByTagName('a')[0].href = '#';
       sort.getElementsByTagName('a')[0].onclick = toggle_sort;
       sort.getElementsByTagName('a')[1].href = '#';
       sort.getElementsByTagName('a')[1].onclick = toggle_sort;
     }
   }
 }
 
 aOnloadFunctions[aOnloadFunctions.length] = init_sort;
 
 /* END table sort algorithm
 // ============================================================

== Google Analytics ==
 // BEING Tracking Code für [[wikipedia:de:Google Analytics|Google Analytics]] /*
 
 document.write('<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>');
 document.write('<script type="text/javascript">_uacct = "UA-466631-1"; urchinTracker();</script>');
 
 /* END Google Analytics
 // ============================================================

 // END OF FILE */