MediaWiki:Common.js: Unterschied zwischen den Versionen

aus FreewarWiki, der Referenz für Freewar
Zur Navigation springen Zur Suche springen
(browserspezifischer bugfix, siehe disku)
(Favicon wird direkt in der Mediawiki Konfiguration gesetzt nun)
 
(32 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 96: Zeile 96:


// Lade createNavigationBarToggleButton() nach Laden der Seite
// Lade createNavigationBarToggleButton() nach Laden der Seite
addOnloadHook(createNavigationBarToggleButton);
 
jQuery( document ).ready( function( $ ) {
createNavigationBarToggleButton();
} );
//addOnloadHook(createNavigationBarToggleButton);
 
/*** ENDE: Anpassung für die Navigationsleisten ***/
/*** ENDE: Anpassung für die Navigationsleisten ***/


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


/*** ENDE: Kampfrechner ***/
/*** ENDE: Kampfrechner ***/




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


Zeile 171: Zeile 179:


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


/*** ENDE: Kartenspezifisches ***/
/*** ENDE: Kartenspezifisches ***/
Zeile 238: Zeile 249:


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


/*** ENDE: NPC-Bilder ***/
/*** ENDE: NPC-Bilder ***/
Zeile 247: Zeile 261:


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


/*** ENDE: Charakterfähigkeiten ***/
/*** ENDE: Charakterfähigkeiten ***/
Zeile 333: Zeile 348:


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


/*** ENDE: Vertikale Tabs ***/
/*** ENDE: Vertikale Tabs ***/
/* Favicon Austausch - Entfernen sobald das Favicon durch einen Systemadministrator ausgetauscht wurde*/
var head = document.getElementsByTagName('head')[0];
head.removeChild(document.getElementsByTagName('link')[0]);
var icon = document.createElement('link');
icon.setAttribute('type', 'image/x-icon');
icon.setAttribute('rel', 'shortcut icon');
icon.setAttribute('href', 'http://fwwiki.staticdata.de/images/2/26/Favicon.png');
head.appendChild(icon);
/* ENDE: Favicon Austausch */


/* 8. ANFANG: NPC Filter für Karten */
/* 8. ANFANG: NPC Filter für Karten */
Zeile 383: Zeile 389:
                 return;
                 return;
             default:
             default:
                 $(this).append("<span class='linktomap'><a href='/index.php/Karte:"+$(this).find("a").attr("title").replace(/ /, "_") + "#MapNPCFilter_" + $("#firstHeading").text()+"' style='display: inline-block; height: 12px; width: 12px; overflow:hidden;'> </a></span>");
                 $(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>");
         }
         }
     });
     });
Zeile 411: Zeile 417:
     {
     {
         var NPCname = window.location.hash.substr(14);
         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);
         showNPCBordersOnMap(NPCname);
         $("body.ns-108 #map_redZK > input[name='findeNPC']").val(NPCname);
         $("body.ns-108 #map_redZK > input[name='findeNPC']").val(NPCname);
Zeile 416: Zeile 424:
}
}


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


/*
== schnee ==
////////////////////////////////////////////////////////////////////////
// SnowFlakes-Script (c) 2009, Dominik Scholz / go4u.de Webdesign
////////////////////////////////////////////////////////////////////////
// amount of snow flakes
var snow_amount = 50;
// colors of snowflakes
var snow_color = new Array('#AAAACC', '#DDDDFF', '#CCCCDD', '#F3F3F3', '#F0FFFF');
// fonts to be used for snowflakes
var snow_type = new Array('Arial Black', 'Arial Narrow', 'Times', 'Comic Sans MS');
// char used for snowflakes
var snow_char = '*';
// vertical snowflakes speed
var snow_speed = 2.4;
// timeout for animation
var snow_timeout = 70;
// maximum size of snowflakes
var snow_maxsize = 22;
// minimum size of snowflakes
var snow_minsize = 8;
// maximal drift in each direction (left/right)
var snow_drift = 15;
////////////////////// don't edit below this line //////////////////////
var snow_flakes = new Array();
var snow_body_width = 0;
var snow_body_height = 0;
var snow_resizing = false;
var snow_range = snow_maxsize - snow_minsize;
var snow_eventHandlerResize = window.onresize;
var snow_eventHandlerLoad = window.onload;
// register window resize event
//window.onresize = snow_resize;
//window.onload = snow_start;
// Schnee nur auf Hauptseite , by JaPPe
var url=document.URL.split("/");
if( url[4] == "Hauptseite" ) {
  window.onresize = snow_resize;
  window.onload = snow_start;
}
// start snow
function snow_start()
{
if (snow_eventHandlerLoad != null) snow_eventHandlerLoad();
// init window size
snow_window_size();
// add new flakes
while (snow_amount > snow_flakes.length)
snow_flake_create(snow_flakes.length);
// start to move snow
snow_move();
}
////////////////////////////// functions ///////////////////////////////
// creates a new snowflake
function snow_flake_create(i)
{
// select body tag
var insertBody = document.getElementsByTagName('body')[0];
// create span child for flake
var insertFlake = document.createElement('div');
insertFlake.id            = 'flake'+i;
insertFlake.style.position = 'absolute';
insertFlake.style.left    = '0px';
insertFlake.style.top      = '-'+snow_maxsize+'px';
insertFlake.style.zIndex  = 20000;
insertFlake.innerHTML      = snow_char;
insertBody.appendChild(insertFlake);
// create array element
snow_flakes[i]      = new Array();
snow_flakes[i].x    = snow_random(snow_body_width-2*snow_drift-snow_maxsize-3) + snow_drift+1;
snow_flakes[i].y    = -snow_maxsize-snow_random(snow_body_height);
snow_flakes[i].size  = snow_random(snow_range) + snow_minsize;
snow_flakes[i].count = snow_random(10000);
insertFlake.style.color = snow_color[snow_random(snow_color.length-1)];
insertFlake.style.family = snow_type[snow_random(snow_type.length-1)];
insertFlake.style.fontSize = (snow_random(snow_range)+snow_minsize)+"px";
}
// restarts an existing snow flake
function snow_flake_restart(i)
{
snow_flakes[i]      = new Array();
snow_flakes[i].x    = snow_random(snow_body_width-2*snow_drift-snow_maxsize-3) + snow_drift+1;
snow_flakes[i].y    = -snow_maxsize;
snow_flakes[i].size  = snow_random(snow_range) + snow_minsize;
snow_flakes[i].count = 0;
}
// move existing flakes
function snow_move()
{
for (i=0; i<snow_flakes.length; i++)
{
var flake = document.getElementById('flake'+i);
// restart existing flake
if ((snow_flakes[i].y + snow_flakes[i].size + 20) >= snow_body_height)
snow_flake_restart(i);
snow_flakes[i].count++;
snow_flakes[i].y += snow_speed;
x = snow_flakes[i].x + Math.sin(snow_flakes[i].count / snow_flakes[i].size) * 15;
y = snow_flakes[i].y;
flake.style.left = x + 'px';
flake.style.top  = y + 'px';
}
// do it again
window.setTimeout('snow_move();', snow_timeout);
}
function snow_random(range)
{
    return Math.floor(Math.random() * range);
}
function snow_window_size()
{
// save old width
var old_width = snow_body_width;
// get new width
    snow_body_width = document.body.clientWidth - snow_maxsize - 20;
    snow_body_height = document.body.clientHeight;
if ((window.innerHeight) && (window.innerHeight > snow_body_height))
snow_body_height = window.innerHeight;
else if ((document.body && document.body.offsetHeight) && (document.body.offsetHeight > snow_body_height))
    snow_body_height = document.body.offsetHeight;
// calculate correction ratio
var ratio = snow_body_width / old_width;
// for all flakes
for (i=0; i<snow_flakes.length; i++)
{
var flake = document.getElementById('flake'+i);
// do width correction
snow_flakes[i].x *= ratio;
// restart existing flake
if ((snow_flakes[i].y + snow_flakes[i].size + 20) >= snow_body_height)
snow_flake_restart(i);
}
}
// handle resize event
function snow_resize()
{
if (snow_eventHandlerResize != null) snow_eventHandlerResize();
snow_window_size();
}
*/
// END snow


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