_ _    _ _____  ___   __                       
 __      _(_) | _(_)___ / ( _ ) / /_   ___ ___  _ __ ___  
 \ \ /\ / / | |/ / | |_ \ / _ \| '_ \ / __/ _ \| '_ ` _ \ 
  \ V  V /| |   <| |___) | (_) | (_) | (_| (_) | | | | | |
   \_/\_/ |_|_|\_\_|____/ \___/ \___(_)___\___/|_| |_| |_|

Benutzer:Reimmichl-212/vector.js

Der folgende Artikel befasst sich mit dem Thema Benutzer:Reimmichl-212/vector.js, einem Thema von großer Aktualität. Es werden verschiedene Aspekte im Zusammenhang mit Benutzer:Reimmichl-212/vector.js untersucht, von seinem Ursprung bis zu seinen Auswirkungen auf die aktuelle Gesellschaft. Die unterschiedlichen Perspektiven und Meinungen zu Benutzer:Reimmichl-212/vector.js werden analysiert, um eine umfassende und objektive Sicht auf das Thema zu liefern. Darüber hinaus werden relevante Daten und aktuelle Studien vorgestellt, die es uns ermöglichen, die Bedeutung und den Einfluss von Benutzer:Reimmichl-212/vector.js in unserer Umwelt besser zu verstehen.
/**
FAQ:
	Frage:	Wie übernehme ich dieses Skript?
	Antwort:	Einfach "Quelltext betrachten", alles markieren und kopieren, dann in deine eigene
	 		monobook.js (also in ])
	 		oder ander Skinseite /common.js, /vector.js kopieren).
	 		Am sinnvollsten ist es dabei, wenn du die Originalversion von ]
	 		übernimmst, da diese immer auf dem neuesten Stand ist.
	Frage:	Kann ich dieses Skript einfach so übernehmen, oder muss ich da tausend Sachen ändern?
	Antwort:	Du kannst natürlich alles ändern, aber du musst nicht. Einfach erstmal kopieren, ausprobieren,
	 		und dann so anpassen, dass es deinem Bedarf gerecht wird.

	Weitere Fragen und Antworten findest du hier: ]

	<nowiki> {{subst:Benutzer:PDD/monobook.js.DLWS}} </nowiki> <--- diese Zeile bitte nicht löschen

	Originalskript ursprünglich gefunden bei ]
	bearbeitet von ]
	      ""       ]
	      ""       ]
	      ""       ] (2005-09-07 und 2006-02-21)
	      ""       ] (2006-02-03)
	      ""       ] (ab 2006-04-22)
	      ""       ] (2015-08-30)
@Dependencies: mediawiki.util
**/
/* global $, mw, importScript */
/* eslint no-implicit-globals:0, one-var:0, vars-on-top:0,camelcase:0, no-underscore-dangle:0, no-unused-vars:0, no-use-before-define:0 */
/* jshint curly:false, eqeqeq:true, latedef:false, strict:false, undef:false, unused:false, scripturl:true */
// (PDD: note to self: version auch in alert-Funktion ändern!)
var version = '0.99q';
// Hier bitte eine Signaturvariante aussuchen! <nowiki>
// (Signaturvariante 1: sinnvoll bei unter "Einstellungen" typografisch angepassten Signaturen)
var usersignature = '~~~~';
// (Signaturvariante 2: Datum kleiner, kein Zeilenumbruch nach dem Leerzeichen)
// var usersignature = '<span style="white-space:nowrap;">-- ~~~ <small>~~~~~</small></span>';
// (Wiki-Standard-Signatur, bitte das Leerzeichen nach den zwei Strichen beachten)
// var usersignature = '-- ~~~~';
// </nowiki>

// *************** SETUP Teil 1a **********************************
// systemweite Default-Optionen aus ]
window.NavigationBarShowDefault = 0; // Navi-Leisten: alle einklappen = 0; alle ausklappen = 15 (z.B.)
var linkFA_enabled = true; // „Featured Articles“ in fremdsprachigen Wikipedias markieren?

// systemweite Default-Optionen aus ]
var oldEditsectionLinks = false; // -Links bei Abschnitten ganz nach rechts?

// *************** SETUP Teil 1b **********************************
// Parameter für Gadgets
// Gadgets müssen über ] → Gadgets mit Ausnahme der Rechtschreibpruefung und markAdmins freigeschaltet werden

// Gadget: ] sollte  deaktiviert werden-
var markadmins = true; // Admins u.ä. besonders hervorheben?
if (markadmins) {
	window.marksubpages = true; // auch Links auf Admin-Unterseiten markieren?
	window.mawatchlist = true; // auch auf der Beobachtungsliste?
	window.macontribs = true; // auch auf den Benutzerbeiträgen?

	window.markatxt = 'A'; // Markierung für Admins
	window.markrenatxt = 'A-Ren'; // Markierung für umbenannte Admins
	window.markbureautxt = 'B'; // Markierung für Bürokraten
	window.markstewtxt = 'S'; // Markierung für Stewards
	window.markombudsmantxt = 'Omb'; // Markierung für Ombudspersonen

	window.markexadmins = true; // zusätzlich: Ex-Admins besonders hervorheben?
	window.markexatxt = 'Ex-A'; // Markierung für Ex-Admins

	window.markexbureaucrats = true; // zusätzlich: Ex-Bürokraten besonders hervorheben?
	window.markexbureautxt = 'Ex-B'; // Markierung für Ex-Bürokraten

	window.markarbcom = true; // zusätzlich: Schiedsgericht besonders hervorheben?
	window.markarbcomtxt = 'SG'; // Markierung für Schiedsgerichtler

	window.markcheckuser = true; // zusätzlich: CheckUser besonders hervorheben?
	window.markcheckusertxt = 'CU'; // Markierung für Checkuser-Berechtigte

	window.markoversight = true; // zusätzlich: Oversighter besonders hervorheben?
	window.markoversighttxt = 'OS'; // Markierung für Oversight-Berechtigte

	window.markcomadmins = true; // zusätzlich: Commons-Admins besonders hervorheben?
	window.markcomatxt = 'Com-A'; // Markierung für Commons-Admins

	window.markwdadmins = true; // zusätzlich: Wikidata-Admins besonders hervorheben?
	window.markwdatxt = 'WD-A'; // Markierung für Wikidata-Admins
}

// Gadget: popups.js (Lupin, Navpop) // mw.user.options.get('gadget-navigation-popups')
var lupinpopups = false; // Popup-Modul einbinden?
if (lupinpopups) {
	// Optionen für Lupin-Popups
	// (ausführliche Liste siehe ] bzw.
	// aktueller und auf englisch ])
	var addpopupLink = true; // Link auf Popups in Messages hinzufügen?
	addpopupLink = addpopupLink ? ' (mit ])' : '';
	window.popupDelay = 1; // Popupverzögerung in s (DEFAULT: 0.5)
	window.simplePopups = false; // auf true setzen, wenn Laden im Hintergrund unerwünscht (DEFAULT: false)
	window.popupStructure = 'menus'; // Aussehen der Popups (DEFAULT: 'shortmenus')
	window.popupActionsMenu = false; // separates "actions"-Menu (DEFAULT: true)
	window.popupImages = true; // Bilder im Popup erwünscht? (DEFAULT: true)
	window.popupSubpopups = true; // Popups für Links innerhalb von Popups generieren? (DEFAULT: true)
	window.popupAdminLinks = false; // Funktionen, die nur Admins nutzen können (DEFAULT: false)
	// nächste Option sollte bei Verwendung von showRedundantLinks.js *nicht* auf true gesetzt werden
	window.removeTitles = false; // Originaltitel der Links nach popups verschieben? (DEFAULT: true)
	window.popupFixRedirs = true; // Links auf Redirects korrigieren? (DEFAULT: false)
	window.popupWatchRedirredPages = false; // korrigierte Seite beobachten? (DEFAULT: null)
	window.popupRedirAutoClick = 'wpSave'; // ausgeführte Aktion beim Korrigieren von Redirects (DEFAULT: 'wpDiff')
	window.popupRedlinkRemoval = true; // Rote Links entfernen? (DEFAULT: false)
	window.popupFixDabs = true; // Links auf BKLs korrigieren? (DEFAULT: false)
	window.popupWatchDisambiggedPages = false; // korrigierte Seite beobachten? (DEFAULT: null)
	window.popupLastModified = true; // Zeit seit letzter Änderung anzeigen? (DEFAULT: true)
	window.popupDiffDates = true; // Änderungsdaten bei Diffs anzeigen? (DEFAULT: true)
	window.popupOnlyArticleLinks = true; // Popups nur für Artikel-Links (DEFAULT: true)
	window.imagePopupsForImages = false; // Bildvorschau laden, wenn Mausposition über Bild? (DEFAULT: true)
	window.popupMaxWidth = 400; // Maximalbreite des Popup-Fensters (DEFAULT: 350)
	window.popupRevertSummaryPrompt = true; // Prompt zum Ändern des Revert-Kommentars? (DEFAULT: false)
	window.popupMaxPreviewSentences = 2; // Anzahl der angezeigten Sätze in der Vorschau (DEFAULT: 4)
	// <nowiki>
	// deutsche Texte für Lupin
	window.popupFixDabsSummary = 'Ersetze BKL-Seite ] durch ]' + addpopupLink;
	window.popupExtendedRevertSummary = 'Revert auf Version vom %s von Benutzer %s, oldid %s' + addpopupLink;
	window.popupRevertSummary = 'Revert auf Version %s' + addpopupLink;
	window.popupRevertToPreviousSummary = 'Revert auf Vorgängerversion der Version %s' + addpopupLink;
	window.popupQueriedRevertSummary = 'Revert auf Version $1 vom $2 von $3' + addpopupLink;
	window.popupQueriedRevertToPreviousSummary = 'Revert auf Vorgängerversion der Version $1 vom $2 von $3' + addpopupLink;
	window.popupFixRedirsSummary = 'Ersetze Redirect ] durch ]' + addpopupLink;
	window.popupRedlinkSummary = 'Entferne Link auf leere Seite ]' + addpopupLink;
	window.popupRmDabLinkSummary = 'Entferne Link auf BKL-Seite ]' + addpopupLink;
}
// </nowiki>
// Gadget: APPERs RP ] // alt ]
//  Das Gadget sollte hiefür deaktiviert sein!
var rechtschreibpruefung = true; //  Rechtschreibprüfung?
window.DontAutorunRP = true; // true = manuell = RP durch Anklicken; false = automatische RP
window.RPonAllPages = true; // nicht nur auf Artikelseiten?

// Gadget: Extra-Editbuttons, siehe: ]
// Anzahl und Reihenfolge wählbar (siehe: ])
var customEditButtons = 'A,A3,B,C,E,F,G,H,I,I1,I2,J1,K,M,O,P,PO,Q,R,R3,S,T,T1,U,V,W,X,Y1,Y2,VP,VC,VN,SM';
var rmEditButtons = ; // zu entfernende Standard-Editbuttons (0…10)
var myButtons = {}; // eigene Buttons?

// *************** SETUP Teil 2 **********************************
// Parameter für diese monobook.js (Quickbar, Module etc.)

var zeigeversion = true; // monobook-Version anzeigen?
var zeigehilfe = true; // kurze Hilfetexte beim überfahren mit der Maus anzeigen?
var qbnewpage = true; // sollen Seiten aus dem QuickBar im neuen Fenster aufgerufen werden?
var rclimit = 500; // angezeigte Anzahl auf "Letzte Änderungen"
var nplimit = 500; // angezeigte Anzahl auf "Neue Artikel"
var nulimit = 1000; // angezeigte Anzahl auf "Neuanmeldungs-Logbuch"
var nvlimit = 500; // angezeigte Anzahl auf "Alte, gesichtete Seiten"
var ndlimit = 250; // angezeigte Anzahl auf "Neue Dateien"
var usedropdown = false; // keine Dropdowns gewünscht?
var timeout = 50000; // 50 Sekunden auf das Neuladen der Seite warten
var timezoneshift = 0; // Unterschied lokale Zeit zur Systemzeit (bleibt für Mitteleuropäer 0)
var debugme = mw.config.set('debug', false); // Debug-Modus?
var qbfontsize = 100; // Schriftgröße im QuickBar (relativ in %)

// <nowiki>
// Modul: changeBeschriftungen.js
var beschriftungen = true; // kosmetische Änderungen an der MediaWiki-Oberfläche?
if (beschriftungen)
	var markhandsoff = true, // fremde Benutzerseiten grafisch markieren?
		// Beschriftungen: personal toolbar
		cbmytalk = 'Meine Diskussion',
		cbprefs = 'Einstellungen',
		cbwatchlist = 'Beobachtungsliste',
		cbmyconts = 'Meine Beiträge',
		cblogout = 'X',
		// Beschriftungen: current article
		cbedit = 'Bearbeiten',
		cbhistory = 'Versionen',
		cbmove = 'Verschieben',
		cbwatch = 'Beobachten',
		cbunwatch = 'Ignorieren',
		// Beschriftungen: tools
		cbwhatlinkshere = 'Links a. d. Seite',
		cblinked = 'Verlinkte Änderungen',
		cbmail = 'E-Mail senden',
		cbupload = 'Datei hochladen',
		cbprint = 'Druckversion',
		cbblock = 'User sperren',
		// Beschriftungen: portlets
		cblang = 'Interwiki';

// Modul: bkl-check.js
var bklcheck = true; // BKL-Links hervorheben?

// Modul: Sperrstatus.js
var sperrstatus = true; // Sperrstatus einer Seite farblich anzeigen?

// Modul: eintragen.js
var autosave = true; // automatisches Speichern von QS/LA/SLA/Vandal-Einträgen?
var signogrundparam = false; // auf true setzen, wenn Signatur das SLA-Eintragen behindert
var emptylinesafterhr = 1; // Leerzeilen zwischen LA-Baustein und Artikeltext
var defaultSLA = 'Kein Artikel'; // Standard-SLA-Grund
var defaultVandal = 'vandaliert in ]'; // Standardgrund für Vandalismusmeldung (Benutzer)
var defaultAVandal = 'Edit-War'; // Standardgrund für Vandalismusmeldung (Artikel)

// Modul: hinweise.js
var hinweis = true; // Portal- und Redaktionshinweis verwenden?

// Modul: godmode-light.js
var godmodelight = true; // "Zurücksetzen" einblenden?
var godmodenewstyle = true; // neuer Rollback-Kommentartext?

// Modul: addEditAndRevertLinks.js
var editlinkoldversion = true; // Bearbeiten-Link für ältere Versionen anzeigen?
if (editlinkoldversion)
	var editlinktxt = 'edit', // Text des Edit-Links
		revertwithreason = true, // Revert-Link mit Grund-Eingabe anzeigen?
		revlinktxt = 'rev', // Text des Revert-Links
		revlinkshowuser = true, // beim Revertieren über (Rev)-Link letzten Benutzer angeben?
		rvisminor = true, // sind Reverts mit "(rev)"-Link Minor-Changes?
		aearldefault = 'Grund: keine Verbesserung des Artikels', // Defaultgrund beim Revertieren
		aerhistory = true, // Links auch in der Versionsgeschichte?
		aearlhere = true; // Revertaktion im selben Browserfenster?

// Modul: addLogsLink.js
var addlogslink = true; // Zusatzlinks zu Spezial:Log einfügen?
if (addlogslink)
	var pagelogtext = 'Page:Log', // Text des Seitenlogbuch-Links
		userlogtext1 = 'User:Log:1', // Texte der beiden Benutzerlog-Links
		userlogtext2 = 'User:Log:2',

		addusercontriblink = true, // auf Benutzerseiten auch noch Link auf Contributions?
		usercontribtext = 'User:Contribs', // Text des Contributions-Links ("Benutzerbeiträge")
		userdeledittext = 'User:DelEdits', // Text des Links auf Deleted Edits
		userstatstext = 'User:Stats', // Text des Links auf Benutzerstatistik
		userstatstype = 'xt', // Art der Benutzerstatistik (Auswahl: xt/x/super/quick)
		usergallerytext = 'User:Gallery', // Text des Links auf Bildergalerie des Benutzers
		userstimmrechttext = 'User:Stimmrecht', // Text des Links auf Stimmrechtcheck

		adduserarticlelink = true, // auf Benutzerseiten Link auf erstellte Artikel?
		userarticletext = 'User:Articles', // Text des Links auf erstellte Artikel
		userarticletype = 'x', // verwendeter Artikelcounter (Auswahl: x)

		addbrowselink = true, // auf allen Seiten Link zum alphabetischen Browsen?
		browseuserprefix = true, // bei Nutzerseiten stattdessen alle Unterseiten des Nutzers zeigen?
		browsetext = 'Browse', // Text des Links auf Browsing-Seite

		addbrowsedellink = true, // auf allen Seiten Link zum Browsen in gelöschten Seiten?
		browsedeltext = 'BrowseDel', // Text des Links auf BrowseDel-Seite

		addiusagelink = true, // bei Bildern Link zur Bildnutzung (Commons)?
		imgusagetext = 'IMG:C-Usage'; // Text des Links auf Bildnutzung

// Modul: mwArticleStatistics.js
var addstatslink = true; // Zusatzlinks zu Statistiktool einfügen?

// Modul: modifyCA.js
var addeditintro = true; // Tab zum Editieren des Nullabschnitts (Intros) einer Seite hinzufügen?
var editintrotext = 'IntroBearbeiten'; // Beschriftung des Tabs
var addpageinfo = true; // Tab für Seiteninfo hinzufügen?
var pageinfotext = 'Info'; // Beschriftung des Tabs
var addpurge = true; // Tab zum Purgen (Servercache-Updaten) einer Seite hinzufügen?
var purgetext = 'Purge'; // Beschriftung des Tabs
var addwatchers = false; // Tab mit Link zum Watchers-Tool hinzufügen?
var watcherstext = 'ºº'; // Beschriftung des Tabs

// Modul: markUTF8.js
var markutf8 = true; // Sonderzeichenbenutzernamen besonders hervorheben?
var muwatchlist = true; // auch auf der Beobachtungsliste?
var mucontribs = true; // auch auf den Benutzerbeiträgen?
var markutf8txt = 'UTF8!'; // Markierung für UTF8-kodierte Nutzernamen etc.
var markltrtxt = 'UTF8:LTR!'; // Markierung für Lemmata mit LTR-Mark

// Modul: markErledigt.js
var markerledigt = true; // Erledigt-Button auf Seiten mit ]

// Modul: reftoggle.js
var reftoggle = false; // "Quellen verstecken"/"Quellen anzeigen"-Schalter für Fußnoten?

// Modul: quickedit.js
var qeEnabled = false; // QuickEdit aktivieren?
var qeEnableSection0 = false; // QuickEdit-Link für Abschnitt 0 (Einleitung)?
var qeEnableAccessKeys = true; // Tastaturbefehle aktivieren?
var qeShowErrors = true; // Fehlermeldungen anzeigen
var qeTextboxHeight = 20; // Höhe des Textfelds

// Modul: APPERs IP-Patrol Vandalenmarkierer
var ippvandalmark = false; // IP-Patrol-Vandalenmarkierung aktivieren?

// Modul: coordinates.js
// (für dieses Modul im CSS #editpage-copywarn nicht ausblenden!)
var coordinates = false; // Koordinate_Artikel in Editfenster generierbar?

// Modul: unsigned.js
var unsigning = true; // Einfügen von Unsigned bei unsignierten Beiträgen auf Diskussionsseiten?
var ssubst = true; // unsigniert-Baustein mit subst einfügen?
var max_history_entries = 36; // Anzahl der angezeigten Edits (max. 36)

// Modul: signing.js
var signing = false; // automatische Unterschrift auf Diskussionsseiten?

// Modul: SearchBox.js
var searchbox = false; // erweitertes suchen/ersetzen

// </nowiki>
/** Fliegelflagel (von Schnark)
@Meta-Script: weitere Skriptsammlung, einfach zu verwenden ]
standardmäßig u.a. aktiv ] und ]
 **/// <nowiki>
var fliegelflagel = mw.libs.fliegelflagel ? 0 : true; // empfehlenswert

// Modul: wikEdDiff.js (Cacycle)
var cacyclediff = false, // verbesserte Diff-Ansicht (Cacycle) einbinden? Redundant mit Schnark's Diff
	wikEdFullDiff = !cacyclediff ? 0 : false;

// weitere Module
var showredundantlinks = false; // zeigt doppelte Links an
var ripe = false; // Ripe-Tooltips?
var imgdupecheck = true; // Bilder-Duplikate anzeigen
var diffhistory = true; // bei Nachsichtungen Übersicht der ungesichteten Versionen zeigen (von P.Copp)
var hideduplicatecontribs = true; // bei Benutzerbeiträgen Checkboxen zum Filtern einblenden (von P.Copp)
var hidenslinksearch = true; // bei Weblink-Suche unnötiges Zeugs ausblenden (nach P.Copp)

// special rights options
var adddelreason = true; // Löschgrund einfügen (von P.Copp)
var dellinknowcommons = true; // Löschlink bei NowCommons-Bildern (von Revvar/Codeispoetry)
var loescheimer = true; // erleichtertes LK-Abarbeiten (von mnh)
var filter_rfdtoc_by_default = true; // Löscheimer: TOC der LK-Seite filtern?

// **************** SETUP Ende ***********************************

var user = mw.config.get('wgUserName'); // username wird automatisch übernommen

// aktuelle Zeit ermitteln
var jetzt = new Date();
// recalculate 4 furriners
var jetztfixed = jetzt.getTime();
jetztfixed += (timezoneshift * 3600 * 1000);
jetzt.setTime(jetztfixed);
// fill date variables
var Monate = mw.config.get('wgMonthNames');
var Monatekurz = ;
var Jahr = jetzt.getYear();
if (Jahr < 999)
	Jahr += 1900;

var Monat = jetzt.getMonth() + 1;
var Tag = jetzt.getDate();
var Stunde = jetzt.getHours();
var Minute = jetzt.getMinutes();
// fill WP date variables
var WPDatum = Tag + '._' + Monate + '_' + Jahr;
var WPDatum2 = Jahr + '/' + Monate + '/' + Tag;
var WPDatum3 = Monate + ' ' + Jahr;
var WPDatum4 = Jahr + '-' + LeadingZero(Monat);
var WPDatum5 = Jahr + LeadingZero(Monat) + '/';
var refDatum = Tag + '. ' + Monatekurz + '. ' + Jahr;
var refDatumlang = Tag + '. ' + Monate + ' ' + Jahr;
var ndDatum = Jahr + '-' + LeadingZero(Monat) + '-' + LeadingZero(Tag);

// Lemma-Varianten (work in progress) + redundant zu addLogsLink etc.
// get page title
var pagetitle = mw.config.get('wgPageName');
var spagetitle = mw.config.get('wgTitle');
var cpn = mw.config.get('wgCanonicalSpecialPageName');
// var cns = mw.config.get('wgCanonicalNamespace');
var ns = mw.config.get('wgNamespaceNumber');
var cLang = mw.config.get('wgContentLanguage');
var sPath = mw.config.get('wgScriptPath');
var action = mw.config.get('wgAction');
var server = mw.config.get('wgServer');

// do real spaces; fix for lemmas with '&'
var ptitle = pagetitle.replace(/_/g, ' ').split('&').join('%26');
var sptitle = spagetitle.replace(/_/g, ' ').split('&').join('%26');
// do + escaped (" " to "+")
var pesctitle = spaceEscape(ptitle);
var spesctitle = spaceEscape(sptitle);
// lemmatitle for external lookup
var spesctitlelookup = spesctitle.split('+(');
// Komma-Lemma für Personen (Klammerzusätze weg etc.)
var personlemma = spagetitle.split(' (');
var titlesplit = personlemma.split(' ');
var i;
if (titlesplit.length > 1) {
	personlemma = titlesplit + ',';
	for (i = 0; i < (titlesplit.length - 1); i++)
		personlemma += ' ' + titlesplit;
}

var import_url;
// stub for internal links
// now all links are https (secure.wikimedia.org is also deprecated since 2012)
var intlinkstub = '//' + cLang + '.wikipedia.orghttps://wiki386.com/de/';
var intfuncstub = '//' + cLang + '.wikipedia.org' + sPath + '/index.php?';
var summary = document.getElementById('wpSummary');
var textbox = document.getElementById('wpTextbox1');

/* Vector Modifications: font must be smaller */
var isVector = '';
if (mw.config.get('skin') === 'vector') {
	isVector = 'font-size:78%;'; // scaled proportional with width
	qbfontsize *= 0.84; // scale factor
}

// page type variables: namespaces
var isArticle, isUserpage, isArticleTalk, isProject, isFile, isTemplate, isHelp, isCategory, isSpecial, isUserMainpage;
switch (ns) {
	case 0:
		isArticle = true;
		break;
	case 1:
		isArticleTalk = true;
		break;
	case 2: // user & user_talk lumped together
	case 3:
		isUserpage = true;
		break;
	case 4:
		isProject = true;
		break; // Wikipedia:
	case 6:
		isFile = true;
		break;
	case 10:
		isTemplate = true;
		break;
	case 12:
		isHelp = true;
		break; // Hilfe:
	case 14:
		isCategory = true;
		break;
	case -1:
		isSpecial = true;
		break;
}
var isGeneric = (!isFile && !isCategory && !isTemplate);

// page type variables: namespace == -1
var isRestore, isContrib, isDelContrib, isWatchlist, isCompare;
if (isSpecial)
	switch (cpn) {
		case 'Undelete':
			isRestore = true;
			break;
		case 'Contributions':
			isContrib = true;
			break;
		case 'ComparePages':
			isCompare = true;
			break;
		case 'Watchlist':
			isWatchlist = true;
			break;
		case 'DeletedContributions':
			isDelContrib = true;
			break;
	}

// talk page namespace
var isTalk = (!isSpecial && isOdd(ns));

// individual page specials
var isLKpage = (isProject && (spagetitle.indexOf('Löschkandidaten') !== -1));

// userpage/name stuff, vor allem für IPs
var userPageOwner = '';
var isIPUser = false; // handelt es sich um eine IP?
// get URL parameters (used for page type variables)
var UrlParameters = {}; // FIXME deprecated in helperFunctions.js, use mw.util.getParamValue( instead

(function () { // returns UrlParameters
var para,
	readUrlParameters = location.search.substring(1, location.search.length).split('&');
for (i = 0; i < readUrlParameters.length; i++) {
	para = readUrlParameters.split('=');
	UrlParameters)] = decodeURIComponent(para);
}
}());

// Helper-Function
function _getUser() { // returns isIPUser, userPageOwner
	var target = mw.util.getParamValue('target');
	if (isContrib || isDelContrib) {
		if (target) {
			userPageOwner = target.split('+').join('_');
		} else {
			target = decodeURIComponent(location.href.substring(location.href.indexOf('https://wiki386.com/de/') + 6)).split('#');
			userPageOwner = target.substring(target.indexOf('Beiträge/') + 9);
		}
	} else if (isUserpage && spagetitle === user) {
		isUserMainpage = true;
		userPageOwner = spagetitle;
	}
	if (userPageOwner > '' && mw.util.isIPAddress(userPageOwner))
		isIPUser = true;
}

// page type variables: other stuff
var isPHP = document.URL.indexOf('index.php') > 0;
var isDiff = UrlParameters.diff;
var isEdit = /^(edit|submit)$/.test(action);
var isHistory = (action === 'history');

// Admin & editor functions
var adminflag = hasRight('sysop');
var editorflag = hasRight('editor');
var dev = 'РDD3';
// Browserkram
var userbrowser = 'Standard';
if (navigator.userAgent.indexOf('Opera') > -1)
	userbrowser = 'Opera';

if (navigator.userAgent.indexOf('Safari') > -1)
	userbrowser = 'Standard';

if (navigator.userAgent.indexOf('MSIE') > -1) {
	userbrowser = 'IE';
	if (navigator.userAgent.indexOf('MSIE 7') > -1)
		userbrowser = 'IE7';
}

// force Browserswitches
if (userbrowser === 'IE' || userbrowser === 'IE7') {
	godmodelight = false;
	showredundantlinks = false;
}
if (userbrowser === 'Opera')
	godmodelight = false;

/*
 * ab hier wird der Quickbar (der Kasten oben links) zusammengebaut
 *
 * zuerst die allgemeinen Variablen (hier bitte nix ändern!)
 */
var Quickbar = '<div class="pBody noprint" id="p-quickbar" style="position:absolute; top:0; left:0; width:14.1em; z-index:10;' +
	isVector + '">',
	// optional:  opacity:0.9,
	xxx = '',
	trenner = '<hr>',
	br = '<br>',
	qbtarget = qbnewpage ? '_blank' : '_self',
	dropdown = usedropdown,
	scrpt = '',
	scrptn = 0,
	indropdown,
	ind;

/*
 * Quickbar-Zusammenbau, Teil 1:
 *
 * die Belegung der einzelnen Abschnitte
 */

function qbWPIntern() {
	w(0, trenner, 'Wikipedia', '');

	// w (1,intlinkstub+'Hilfe:MediaWiki','MW',qbtarget,'MediaWiki-Hilfe');
	// w (1,intlinkstub+'Wikipedia:Hilfe','RTFM',qbtarget,'Wikipedia-Hilfe');
	// w (1,intlinkstub+'Hilfe:Textgestaltung','TG',qbtarget,'Hilfe zur Textgestaltung');
	// w (1,intlinkstub+'Hilfe:Farben','FT',qbtarget,'Hilfe zur Farbgestaltung');
	w(1, intlinkstub + 'Wikipedia:Kurier', 'K', qbtarget, 'Kurier – Das Wikipedia-Nachrichtenblatt');
	w(1, intlinkstub + 'Wikipedia:Fragen zur Wikipedia', 'FZW', qbtarget, 'Fragen zur Wikipedia');
	w(1, intlinkstub + 'Wikipedia:Auskunft', 'AU', qbtarget, 'Auskunft');
	// w (1,intlinkstub+'Wikipedia:Autorenportal','P',qbtarget,'Autorenportal');
	w(1, intlinkstub + 'Wikipedia:Projektneuheiten', 'NEU', qbtarget, 'Projektneuheiten');
	w(1, intlinkstub + 'Wikipedia:Verbesserungsvorschläge', 'VV', qbtarget, 'Verbesserungsvorschläge');
	// w (1,intlinkstub+'Wikipedia:Tellerrand','TE',qbtarget,'Tellerrand');
	w(1, intlinkstub + 'Wikipedia:Administratoren/Anfragen', 'AAF', qbtarget, 'Administratoren/Anfragen');
	w(1, intlinkstub + 'Wikipedia:Administratoren/Notizen', 'AN', qbtarget, 'Administratoren/Notizen');
	w(1, intlinkstub + 'Wikipedia:Kandidaturen', 'AK', qbtarget, 'Kandidaturen');
	w(1, intlinkstub + 'Wikipedia:Adminwiederwahl', 'A/W', qbtarget, 'Adminwiederwahl');
	w(1, intlinkstub + 'Wikipedia:Dritte_Meinung', '3M', qbtarget, 'Dritte Meinung');
	w(1, intlinkstub + 'Wikipedia:Vermittlungsausschuss', 'VA', qbtarget, 'Vermittlungsausschuss');
	w(1, intlinkstub + 'Wikipedia:Schiedsgericht/Anfragen', 'SG/A', qbtarget, 'Schiedsgericht/Anfragen');
	// w (1,intlinkstub+'Wikipedia:Projektdiskussionen','PRD',qbtarget,'Projektdiskussionen');
	w(1, intlinkstub + 'Wikipedia:Checkuser/Anfragen', 'CU/A', qbtarget, 'Checkuser/Anfragen');
	// w (1,intlinkstub+'Wikipedia:Abkürzungen','ABK',qbtarget,'Abkürzungen');
}

function qbPatrol() {
	w(0, trenner, 'Überwachung', '');

	w(1, intfuncstub + 'title=Special:Recentchanges&hideminor=0&hideliu=1&hidebots=1&hidepatrolled=0&days=7&limit=' + rclimit, 'RCs', qbtarget, 'Letzte Änderungen');
	w(1, intlinkstub + 'Special:Contributions/newbies', 'RCNs', qbtarget, 'Beiträge neuer Benutzer');
	w(1, intfuncstub + 'title=Special:Newpages&namespace=0&limit=' + nplimit, 'NeuA', qbtarget, 'Neue Artikel');
	// w (1,intlinkstub+'Special:Newimages','NeuD',qbtarget,'Neue Dateien (Bilder)');
	w(1, intfuncstub + 'title=Special:Log&limit=' + nulimit + '&type=newusers', 'NeuB', qbtarget, 'Neue Benutzer');
	w(1, intfuncstub + 'title=Special:Listfiles&limit=' + ndlimit, 'NeuD', qbtarget, 'Neue Dateien');
	w(1, intfuncstub + 'title=Special:OldReviewedPages&limit=' + nvlimit, 'NeuE', qbtarget, 'Neue Edits in gesichteten Artikeln');
	// w (1,intfuncstub+'title=Special:ArticleFeedbackv5','NeuF',qbtarget,'Neues Feedback');
	w(1, intlinkstub + 'Wikipedia:Vandalismusmeldung', 'VM', qbtarget, 'Vandalismusmeldung');
	w(1, intlinkstub + 'Wikipedia:Oversight/Kontakt', 'OSA', qbtarget, 'Oversight-Kontakt');
	w(1, intlinkstub + 'Wikipedia:Sperrprüfung', 'SP', qbtarget, 'Sperrprüfung');
	w(1, intlinkstub + 'Wikipedia:Löschprüfung', 'LP', qbtarget, 'Löschprüfung');
	w(1, intlinkstub + 'Wikipedia:Entsperrwünsche', 'EW', qbtarget, 'Entsperrwünsche');
	w(1, intlinkstub + 'Wikipedia:Administratoren/Probleme', 'AP', qbtarget, 'Admin-Probleme');
	w(1, intlinkstub + 'Special:Log', 'Log', qbtarget, 'Logbücher');

	if (adminflag) {
		w(1, intlinkstub + 'Special:AbuseLog', 'ELog', qbtarget, 'Bearbeitungsfilter-Logbuch');
		w(1, intlinkstub + 'Wikipedia:Erkennung_offener_Proxys', 'EOP', qbtarget, 'Erkennung offener Proxys');
	}
	// w (1,'irc://irc.freenode.net/wikipedia-de','IRC',qbtarget,'IRC-Chat #wikipedia-de');
}

function qbWartung() {
	w(0, trenner, 'Wartung', '');

	// w (1,intlinkstub+'Wikipedia:Löschregeln','WP:LR',qbtarget,'Löschregeln');
	w(1, intlinkstub + 'Kategorie:Wikipedia:Schnelllöschen', 'SLK', qbtarget, 'Schnelllöschkandidaten');
	w(1, intlinkstub + 'Wikipedia:Löschkandidaten', 'LK', qbtarget, 'Löschkandidaten');
	w(1, intlinkstub + 'Wikipedia:Löschkandidaten/' + WPDatum, 'LKH', qbtarget, 'Löschkandidaten (heute)');
	// w (1,intlinkstub+'Wikipedia:Löschkandidaten/Bilder/'+WPDatum,'BildLK',qbtarget,'Löschkandidaten (Bilder)');
	// w (1,intlinkstub+'Wikipedia:WikiProjekt_Kategorien/Diskussionen/'+WPDatum2,'KatLK',qbtarget,'Löschkandidaten (Kategorien)');
	w(1, intlinkstub + 'Wikipedia:Löschkandidaten/Urheberrechtsverletzungen', 'URV', qbtarget, 'Löschkandidaten (URVs)');

	w(1, intlinkstub + 'Wikipedia:Qualitätssicherung/' + WPDatum, 'QS', qbtarget, 'Qualitätssicherung');
	w(1, intlinkstub + 'Wikipedia:Redundanz/' + WPDatum3, 'RED', qbtarget, 'Redundanz');
	w(1, intlinkstub + 'Kategorie:Wikipedia:Unverständlich', 'Wirr', qbtarget, 'Unverständlich');

	w(1, intlinkstub + 'Wikipedia:Kandidaturen von Artikeln, Listen und Portalen', 'KALP', qbtarget, 'Kandidaturen von Artikeln, Listen und Portalen');
	w(1, intlinkstub + 'Wikipedia:Kandidaten für lesenswerte Artikel', 'KLA', qbtarget, 'Kandidaten für lesenswerte Artikel');

	w(1, intlinkstub + 'Wikipedia:Review', 'RV', qbtarget, 'Review');
	w(1, intlinkstub + 'Wikipedia:Kandidaten für exzellente Bilder', 'KEB', qbtarget, 'Kandidaten für exzellente Bilder');
	// w (1,intlinkstub+'Wikipedia:Kandidaten für exzellente Aufnahmen','KEAU',qbtarget,'Kandidaten für exzellente Aufnahmen');
}

function qbUserTools() {
	if (userPageOwner === '')
		return;

	if (isIPUser) {
		// w (1,"http://www.ripe.net/whois?form_type=simple&full_query_string=&searchtext="+userPageOwner+"&do_search=Search",'IPripe',qbtarget,'IPripe');
		w(1, 'http://www.mxtoolbox.com/SuperTool.aspx?action=scan%3a' + userPageOwner, 'PScan', qbtarget, 'Portscan');
		// w (1,"http://network-tools.com/default.asp?prog=lookup&host="+userPageOwner,'IPinfo',qbtarget,'IPInfo');
		// w (1,"http://toolserver.org/~chm/whois.php?ip="+userPageOwner,'IPinfo',qbtarget,'IPInfo');
		w(1, '//tools.wmflabs.org/whois/' + userPageOwner + '/lookup', 'IPinfo', qbtarget, 'IPInfo');
		// w (1,"http://www.dnsstuff.com/tools/tracert.ch?ip="+userPageOwner,'IPtrcrt',qbtarget,'Traceroute');
		// w (1,"https://www.dan.me.uk/torcheck?ip="+userPageOwner,'TOR',qbtarget,'TOR-Node-Check');
		// w (1,"http://toolserver.org/~krimpet/torcheck.php?ip="+userPageOwner,'K-TOR',qbtarget,'Krimpets TOR-Node-Check');
		w(1, '//tools.wmflabs.org/guc/?user=' + userPageOwner + '&blocks=true&lang=de', 'IP-GUC', qbtarget, 'Global user contributions');
		// w (1,"http://toolserver.org/~vvv/rangecontribs.php?wiki=dewiki_p&user="+userPageOwner.substring(0, userPageOwner.lastIndexOf('.')),'IP-RaC',qbtarget,'IP range contributions');
		w(1, '//de.wikipedia.org' + sPath + '/api.php?action=query&list=usercontribs&format=xml&uclimit=500&ucstart=' + getFutureDate() + '&ucend=' + getPastDate() + '&ucuserprefix=' + userPageOwner.substring(0, userPageOwner.lastIndexOf('.')) + '.', 'IP-RaC', qbtarget, 'IP range contributions via API');
		w(1, 'http://jodies.de/ipcalc?host=' + userPageOwner + '&mask1=18&mask2=', 'Rng', qbtarget, 'Range/Subnet Rechner');
		// w (1,"http://toolserver.org/~krimpet/rbhelper.php?db=dewiki_p&ip="+userPageOwner,'RngB?',qbtarget,'Range Block Finder');
		// w (1,"//tools.wmflabs.org/erwin85/blockfinder.php?lang=de&family=wikipedia&ip="+userPageOwner,'RngB?',qbtarget,'Range Block Finder');
		w(1, '//tools.wmflabs.org/blockcalc/index.php?lang=de', 'BCalc', qbtarget, 'Rangeblock Calculator');
		w(1, 'http://nativeforeigner.com/calc/', 'BCalcNF', qbtarget, 'Another Rangeblock Calculator');
		w(1, 'http://www.mikero.com/misc/ipcalc/?start=' + userPageOwner + '&end=' + userPageOwner, 'BCalcM', qbtarget, 'Yet another Rangeblock Calculator');
	} else {
		// w (1,"http://www.ripe.net/whois",'ripe',qbtarget,'Ripe-Lookup');
		// w (1,"http://www.denic.de/de/",'denic',qbtarget,'Domain-Lookup');
		// w (1,"http://www.iks-jena.de/cgi-bin/whois",'iks-whois',qbtarget,'IKS-Whois-Lookup');

		w(1, '//tools.wmflabs.org/quentinv57-tools/tools/sulinfo.php?username=' + userPageOwner + '&showblocks=1&showlocked=1', 'GUA', qbtarget, 'Global user accounts');
		// w (1,"http://toolserver.org/~purodha/sample/dbswithuser.php?usr="+userPageOwner+"&go=Go%21&uselang=de",'GUA+',qbtarget,'Global user accounts (ausführlich)');
		w(1, '//tools.wmflabs.org/guc/?user=' + userPageOwner + '&blocks=true&lang=de', 'GUC', qbtarget, 'Global user contributions');

		if (user !== userPageOwner)
			// w (1,"http://toolserver.org/~cyroxx/familiar/familiar.php?user1="+spaceEscape(user)+"&user2="+spaceEscape(userPageOwner),'UFam',qbtarget,'Are U familiar? (cyroxx)');
			// w (1,"http://toolserver.org/~merl/familiar.php?user1="+spaceEscape(user)+"&user2="+spaceEscape(userPageOwner),'UFam',qbtarget,'Are U familiar? (Merlissimo-Backup)');
			w(1, '//tools.wmflabs.org/intersect-contribs/?project=dewiki&user1=' + spaceEscape(user) + '&user2=' + spaceEscape(userPageOwner), 'IntC', qbtarget, 'Intersect Contribs (pietrodn)');
		// w (1,"//tools.wmflabs.org/erwin85/contribs.php?lang=de&family=wikipedia&users="+spaceEscape(user)+"|"+spaceEscape(userPageOwner)+"&limit=500&submit=Submit",'ErwC',qbtarget,'Multiple Contribs (erwin85)');

	}
}

function qbToolserver() {
	w(0, trenner, 'Toolserver', '');

	qbUserTools();

	// w (1,"http://toolserver.org/~leon/stats/wikicharts/index.php?lang=de&wiki=dewiki&ns=Artikel&limit=200&month=" + LeadingZero(Monat) + "%2F" + Jahr + "&mode=view",'WCh',qbtarget,'WikiCharts');
	w(1, '//tools.wmflabs.org/xtools/adminstats/?project=de.wikipedia.org', 'AdmA', qbtarget, 'Adminaktivität (letzte 100 Tage)');
	// w (1,"http://toolserver.org/~aka/cgi-bin/revstat.cgi?period=168",'RStat',qbtarget,'Revert-Statistik (letzte Woche)');
	// w (1,"http://toolserver.org/~luxo/Geburtstag.php",'GK',qbtarget,'Wikipedia Geburtstagskalender');
	w(1, '//tools.wmflabs.org/wiki-todo/?language=de', '2Do', qbtarget, 'Wikipedia ToDo');
	// w (1,"http://toolserver.org/~aka/cgi-bin/reviewcnt.cgi",'RCt',qbtarget,'Sichtungsstatistik');

	if (isArticle) {
		// w (1,"http://stats.grok.se/de/"+WPDatum5+ptitle,'ASt',qbtarget,'Wikipedia article traffic statistics');
		w(1, 'http://stats.grok.se/de/latest90/' + ptitle, 'ASt', qbtarget, 'Wikipedia article traffic statistics');
		// w (1,"http://toolserver.org/~mzmcbride/cgi-bin/watcher.py?db=dewiki_p&titles="+pesctitle,'AWa',qbtarget,'Watcher');
		// w (1,"https://tools.wmflabs.org/xtools-articleinfo/?wikilang=de&wikifam=.wikipedia.org&page="+pesctitle+"&since=&until=&grouped=on&order=-rev_timestamp&max=100&order=-rev_timestamp&format=html",'ACnt',qbtarget,'Beiträge zu diesem Artikel');
		w(1, '//tools.wmflabs.org/wikihistory/wh.php?page_title=' + pesctitle + '&lang=de', 'AHst', qbtarget, 'WikiHistory (APPER)');
	}
	if (rechtschreibpruefung && !isSpecial && (isArticle || window.RPonAllPages))
		w(4, 'javascript:window.spellcheck();', 'SpellChk', '', 'Rechtschreibprüfung');

}

function qbCategoryTools() {
	if (!isCategory)
		return;

	w(0, trenner, 'Kategorie-Tools', '');

	// w (1,"http://toolserver.org/~daniel/WikiSense/CategoryIntersect.php?wikilang=de&wikifam=.wikipedia.org&basecat="+spesctitle+"&userlang=de",'K:Scan',qbtarget,'Kategorie: CatScan');

	w(1, '//tools.wmflabs.org/catscan2/quick_intersection.php?lang=de&project=wikipedia&cats=' + spesctitle + '&ns=0&depth=12&max=30000&start=0&format=html&redirects=&callback=', 'K:Scan', qbtarget, 'Kategorie: CatScan');
	w(1, '//tools.wmflabs.org/catscan2/catscan2.php?depth=3&categories=' + spesctitle + '&interface_language=de&doit=1', 'K:Scan2', qbtarget, 'Kategorie: CatScan 2.0');
	// w (1,"//tools.wmflabs.org/erwin85/categorycount.php?lang=de&family=wikipedia&namespaces=0&category="+spesctitle+"&subcats=1&d=100&submit=Submit",'K:Count',qbtarget,'Kategorie: Anzahl der Artikel');
	// w (1,"http://toolserver.org/~daniel/WikiSense/CategoryIntersect.php?wikilang=de&wikifam=.wikipedia.org&basecat="+spesctitle+"&basedeep=5&mode=rc&hours=168&onlynew=on&userlang=de&go=Scannen",'K:NeuA',qbtarget,'Kategorie: Neue Artikel');
	// w (1,"http://toolserver.org/~daniel/WikiSense/CategoryIntersect.php?wikilang=de&wikifam=.wikipedia.org&basecat="+spesctitle+"&basedeep=5&mode=cs&tagcat=Wikipedia%3AL%C3%B6schkandidat&tagdeep=1&userlang=de&go=Scannen",'K:LA',qbtarget,'Kategorie: Artikel mit Löschantrag');
	w(1, 'http://tools.wmflabs.org/catscan2/catscan2.php?language=de&project=wikipedia&depth=5&categories=' + spesctitle + '&max_age=168&only_new=1&interface_language=de&doit=1', 'K:NeuA', qbtarget, 'Kategorie: Neue Artikel');
	w(1, '//tools.wmflabs.org/missingtopics/?language=de&project=wikipedia&article=&category=' + spesctitle + '&depth=5&wikimode=0&limitnum=1&doit=Run', 'K:Miss', qbtarget, 'Kategorie: Fehlende Artikel');
	w(1, '//tools.wmflabs.org/sighting/deep_out_of_sight.php?category=' + spesctitle + '&depth=9', 'K:NeuE', qbtarget, 'Kategorie: Nachzusichtende Artikel');
	w(1, '//tools.wmflabs.org/sighting/deep_insight.php?category=' + spesctitle + '&depth=9', 'K:UsP', qbtarget, 'Kategorie: Erstzusichtende Artikel');
}

function qbImageTools() {
	if (!isFile)
		return;

	w(0, trenner, 'Bild-Tools', '');

	w(1, '//tools.wmflabs.org/commonshelper/?interface=de&lang=de&project=wikipedia&image=' + spesctitle + '&doit=\'Text generieren\'', 'D:M2C', qbtarget, 'Datei: Move-to-commons-Assistent');
	// w (1,"http://toolserver.org/~luxo/reworkhelper/index.php?image="+pesctitle,'D:RWH',qbtarget,'Datei: Reworkhelper');

	w(1, 'http://commons.wikimedia.orghttps://wiki386.com/de/Special:Upload', 'C-Up', qbtarget, 'Commons-Upload');
	// w (1,"http://toolserver.org/~daniel/WikiSense/CommonsClash.php?wikilang=de&wikifam=.wikipedia.org&order=img_name&max=200&format=html",'C-C',qbtarget,'CommonsClash');
	w(1, '//tools.wmflabs.org/commonshelper/?interface=de&lang=de&project=wikipedia', 'M2C', qbtarget, 'Move-to-commons-Assistent');
}

function qbExternTools() {
	w(0, trenner, 'Externe Tools', '');

	// w (1,"http://www.copyscape.com",'CopySc',qbtarget,'CopyScape');
	// w (1,"http://toolserver.org/~revvar/urv.php",'URV?',qbtarget,'URV-Suche');
	w(1, 'http://vs.aka-online.de/cgi-bin/globalwpsearch.pl?search=' + pesctitle + '&timeout=300&minor=1', 'GWS', qbtarget, 'GlobalWikiSearch');
	w(1, 'http://wikipedia.ramselehof.de/wikiblame.php?article=' + pesctitle + '&user_lang=de&skipversions=2&ignorefirst=3&limit=250&searchmethod=lin', 'WBlame', qbtarget, 'Wikiblame');
	w(1, 'http://vs.aka-online.de/cgi-bin/wppagehiststat.pl?lang=de&page=' + pesctitle, 'WPHS', qbtarget, 'Seitenstatistik');
	// w (1,"http://www.itp.uni-hannover.de/~krohn/wscan.html.utf8",'Krohn',qbtarget,'Krohn');

	// w (1,"http://toolserver.org/~arnomane/cgi-bin/WP-autoreview.pl?l=de&do_typo_check=ON&Go%21=Go%21&lemma="+pesctitle,'AR',qbtarget,'AutoReview');
	// w (1,"http://toolserver.org/~timl/cgi-bin/wikilint?l=de&do_typo_check=ON&remove_century=ON&url=http://de.wikipedia.orghttps://wiki386.com/de/"+pesctitle,'WL',qbtarget,'WikiLint (Autoreviewer)');

	// w (1,"http://www.canoo.net",'Canoo',qbtarget,'Canoo');
	w(1, 'http://www.cia.gov/cia/publications/factbook/index.html', 'FactB', qbtarget, 'CIA World Factbook');
	w(1, 'http://www.retrobibliothek.de/retrobib/suche.html', 'rbib', qbtarget, 'retro-bib (u. a. Meyers Konversationslexikon 1888)');

	if (isArticle)
		w(1, 'http://www.zeno.org/Zeno/0/Suche?&q=' + spesctitlelookup + '&h=1', 'Zeno', qbtarget, 'Verschiedene Lexika bei zeno.org');
	 else
		w(1, 'http://www.zeno.org/Bibliothek', 'Zeno', qbtarget, 'Verschiedene Lexika bei zeno.org');

	w(1, 'http://www.ddb.de', 'DNB', qbtarget, 'Deutsche Nationalbibliothek');

	if (isArticle) {
		var personlemma = quickEscape(this.personlemma, 1);
		w(1, 'http://dispatch.opac.d-nb.de/DB=4.1/CMD?ACT=SRCHA&IKT=8514&SRT=YOP&TRM=' + personlemma, 'DNB-GND', qbtarget, 'DNB (GND-Suche)');
		w(1, 'http://swb2.bsz-bw.de/DB=2.104/SET=2/TTL=2/CMD?ACT=SRCHA&IKT=1&TRM=' + personlemma, 'OGND-GND', qbtarget, 'OGND (GND-Suche)');
	} else {
		w(1, 'http://dnb.ddb.de/', 'DNB-GND', qbtarget, 'DNB (GND-Suche)');
		w(1, 'http://swb2.bsz-bw.de/DB=2.104/SET=2/TTL=2/LNG=DU/START_WELCOME', 'OGND-GND', qbtarget, 'OGND (GND-Suche)');
	}

	w(1, 'https://kvk.bibliothek.kit.edu/', 'KVK', qbtarget, 'Karlsruher Virtueller Katalog');
	w(1, '//tools.wmflabs.org/isbn/IsbnCheckAndFormat?Language=Deutsch&FormatOnlyRaw=no&Test=http%3A%2F%2Fswb.bsz-bw.de%2FDB%3D2.1%2FCMD%3FACT%3DSRCHA%26IKT%3D1007%26TRM%3DMAGIC', 'ISBN', qbtarget, 'ISBN Checker/Formatter');
	// w (1,"http://mdz10.bib-bvb.de/~ndb/ndbmaske.html",'A/NDB',qbtarget,'Allgemeine/Neue Deutsche Biographie');
	w(1, 'http://www.deutsche-biographie.de/', 'A/NDB', qbtarget, 'Allgemeine/Neue Deutsche Biographie');
	// w (1,"http://bse.sci-lib.com/",'Бсэ',qbtarget,'Большая советская энциклопедия');
	w(1, 'http://encycl.yandex.ru/dict/bse', 'Бсэ', qbtarget, 'Большая советская энциклопедия');
	w(1, 'http://wikyrilliza.visuelya.de/index.php', 'Вик', qbtarget, 'Wikyrilliza');
	// w (1,"http://www.mcaviglia.ch/gmap/get_coor_ext.asp?l=de",'Coord',qbtarget,'Get Coordinates');
	w(1, 'http://tools.freeside.sk/geolocator/geolocator.html', 'Coord', qbtarget, 'GeoLocator');
	w(1, 'http://hbz-da.de/wikipedia/lifo.php', 'U2W', qbtarget, 'URL-in-Wiki-Konverter');
}

function qbEditTags() {
	if (isFile || !isEdit)
		return;

	w(0, trenner, 'Editierhilfen', '');

	w(3, 'br,\'\',\'\'', 'br', '', 'Zeilenumbruch');
	w(3, '\'&\',\'nbsp;\',\'\'', 'nbsp', '', 'Geschütztes Leerzeichen');
	w(3, '\'†\',\'\',\'\'', '†', '', 'Kreuz');
	// w (3,"'—','',''",'—','','Geviertstrich (Spiegelstrich)');
	w(3, '\'–\',\'\',\'\'', '–', '', 'Halbgeviertstrich (Gedankenstrich)');
	// w (3,"'-','',''",'-','','Viertelgeviertstrich (Bindestrich)');
	// w (3,"'−','',''",'−','','Minuszeichen');
	w(3, '\'→\',\'\',\'\'', '→', '', 'Pfeil nach rechts');
	w(3, '\'←\',\'\',\'\'', '←', '', 'Pfeil nach links');
	w(3, '\'<!-- \',\' -->\',\'\'', '// comment', '', '<!--Kommentar-->');
	w(3, '\'„\',\'“\',\'\'', '„“', '', 'Anführungszeichen');
	// </nowiki>
	w(3, '\'<nowiki>\',\'</nowiki>\',\'\'', 'Nowiki', '', '<nowiki>');
	w(3, '\'<code><nowiki>\',\'</nowiki></code>\',\'\'', 'Code', '', '<code+nowiki>');
	w(3, '\'<onlyinclude>\',\'</onlyinclude>\',\'\'', 'OIncl', '', '<onlyinclude>');
	// <nowiki>
	w(3, '\'<span class=\\u0022plainlinks\\u0022>\',\'</span>\',\'\'', 'Plain', '', 'Plain Link');
	w(3, '\'<small>\',\'</small>\',\'\'', '<small>small</small>', '', 'Klein');
	w(3, '\'<s>\',\'</s>\',\'\'', '<s>strike</s>', '', 'Durchstreichen');
	w(3, '\'<u>\',\'</u>\',\'\'', '<u>under</u>', '', 'Unterstreichen');

	w(3, '\'<ref>\',\'</ref>\',\'\'', '<small></small>', '', 'Referenz');
	w(3, '\'<ref name=\\u0022name\\u0022>\',\'</ref>\',\'\'', '<small></small>', '', 'Referenz-Name');
	w(3, '\'<ref name=\\u0022name\\u0022 \\u002F>\',\'\',\'\'', '<small></small>', '', 'Referenz-Name-Wiederholung');
	// w (3,"'<ref group=\\u0022name\\u0022>','</ref>',''",'<small></small>','','Referenz-Gruppe');
	// w (3,"'<ref group=\\u0022name\\u0022 name=\\u0022name\\u0022>','</ref>',''",'<small></small>','','Referenz-Gruppe-Name');

	w(3, '\'{{lang|ru|\',\'}}\',\'\'', 'ru', '', 'Russisch');
	w(3, '\'{{HeS|\',\'}}<!--x-->\',\'\'', 'HeS', '', 'Hebräisch (mit Bidi-Stopper)');

	w(3, '\'<math>\',\'</math>\',\'\'', 'Math');
	w(3, '\':<math>\\u005Cmathrm{\',\'}</math>\',\'\'', 'ChemForm');

	w(3, '\'\\n{{Kasten|1=\',\' ' + usersignature + '}}\\n\',\'\'', 'Kast', '', 'Kasten');

	// temporary
	w(3, '\'{{SortKeyName|\',\'|nl=1}}\',\'\'', 'SKN', '', 'SortKeyName');

}

function qbArticleTemps() {
	if (isFile || !isEdit)
		return;

	var personlemma = tagEscape(this.personlemma);
	var spagetitle = tagEscape(this.spagetitle);

	w(0, trenner, 'Artikelbausteine', '');

	w(3, '\'== Einzelnachweise ==\\n<references />\\n\',\'\',\'\'', 'Refs', '', '== Einzelnachweise ==');
	w(3, '\'== Literatur ==\\n\',\'\',\'\'', 'Lit', '', '== Literatur ==');
	w(3, '\'== Weblinks ==\\n\',\'\',\'\'', 'Web', '', '== Weblinks ==');

	w(3, '\'{{Commonscat}}\\n\',\'\',\'\'', 'ComC', '', 'Commonscat');

	w(3, '\']\\n\',\'\'', 'Kat:', '', ']');
	w(3, '\'{{DEFAULTSORT:' + quickEscape(personlemma, 2) + '}}\\n\',\'\',\'\'', 'DefSrt', '', '{{DEFAULTSORT:');
	w(3, '\']\',\'\'', 'User:', '', ']');
	w(3, '\']\',\'\'', 'WP:', '', ']');

	w(0, br, '', '');

	w(3, '\'* {{DNB-Portal|\',\'}}\\n\',\'\'', 'DNB-P', '', 'PND (individualisiert mit Treffern)');
	w(3, '\'{{Normdaten|TYP=p|GND=\',\'|LCCN=|NDL=|VIAF=}}\\n\',\'\'', 'ND', '', 'Normdaten (GND individualisiert)');
	// w (3,"'* {{PNDfehlt|" + refDatumlang + "|','}}\\n',''","PNDF",'','PNDfehlt (nicht individualisiert, aber mit Treffern)');
	w(3, '\'{{Normdaten|TYP=p|GND=|LCCN=|NDL=|VIAF=|GNDName=\',\'|GNDfehlt=ja|GNDCheck=' + ndDatum + '|REMARK=}}\\n\',\'\'', 'PNDF', '', 'PNDfehlt (nicht individualisiert, aber mit Treffern)');

	w(3, '\'{{Personendaten\\n|NAME=' + personlemma + '\\n|ALTERNATIVNAMEN=\\n|KURZBESCHREIBUNG=\\n|GEBURTSDATUM=\\n|GEBURTSORT=\\n|STERBEDATUM=\\n|STERBEORT=\\n}}\\n\',\'\',\'\'', 'PD', '', '{{Personendaten...');

	w(3, '\'* {{ADB|Band|SeiteStart|SeiteEnde|' + personlemma + '|Artikelautor}}\\n\',\'\',\'\'', 'ADB', '', '{{ADB...');
	w(3, '\'* {{NDB|Band|SeiteStart|SeiteEnde|' + personlemma + '|Artikelautor}}\\n\',\'\',\'\'', 'NDB', '', '{{NDB...');
	w(3, '\'* {{ÖBL|Band|SeiteStart|SeiteEnde|' + personlemma + '|Artikelautor}}\\n\',\'\',\'\'', 'ÖBL', '', '{{ÖBL...');
	w(3, '\'* {{HLS|Artikelnummer|' + personlemma + '|Autor=Artikelautor}}\\n\',\'\',\'\'', 'HLS', '', '{{HLS...');
	w(3, '\'* {{WWW-DDR|Artikelnummer|' + personlemma + '|Artikelautor}}\\n\',\'\',\'\'', 'DDR', '', '{{WWW-DDR...');
	w(3, '\'* {{BBKL|x/name_x_y|autor=|artikel=' + personlemma + '|band=|spalten=–}}\\n<!-- bitte vollständig ausfüllen -->\\n\',\'\',\'\'', 'BBKL', '', '{{BBKL...');
	// w (3,"'* {{RE|Band|SpalteStart|SpalteEnde|" + personlemma + "|Artikelautor|Wikisource-Lemma}}\\n','',''","RE",'','{{RE...');
	// w (3,"'* {{DNP|Band|SpalteStart|SpalteEnde|" + personlemma + "|Artikelautor}}\\n','',''","DNP",'','{{DNP...');

	w(3, '\'* {{IMDb|nm\',\'|' + spagetitle + '}}\\n\',\'\'', 'IMDb-n', '', '{{IMDb Name...');
	w(3, '\'* {{IMDb|tt\',\'|' + spagetitle + '}}\\n\',\'\'', 'IMDb-t', '', '{{IMDb Titel...');
	w(3, '\'* {{IMDb|co\',\'|' + spagetitle + '}}\\n\',\'\'', 'IMDb-u', '', '{{IMDb Unternehmen...');
	w(3, '\'* {{OFDb|\',\'|' + spagetitle + '}}\\n\',\'\'', 'OFDb', '', '{{OFDb...');

	w(0, br, '', '');

	w(2, '\'\',\'#REDIRECT ]\',1', 'Redir', '', '#REDIRECT ]');
	w(2, '\'+Überarbeiten\',\'{{Überarbeiten}}\\n\',3', 'Überarb', '', '{{Überarbeiten}}');
	w(2, '\'+Quelle\',\'{{Quelle}}\\n\',3', 'Quelle?', '', '{{Quelle}}');
	w(2, '\'+Lückenhaft\',\'{{Lückenhaft|Es fehlen...}}\\n\',3', 'Lücke', '', 'Lückenhaft');
	// w (2,"'+Rechtshinweis','{{Rechtshinweis}}',2","Recht");
	// w (2,"'+Gesundheitshinweis','{{Gesundheitshinweis}}',2","Gesundh.");
}

function qbMarkupTools() {
	if (isFile || !isEdit)
		return;

	w(0, trenner, 'Markup-Tools', '');

	w(4, 'addPersData();', 'AutoPD', '', 'Automatische Kategorien und Personendaten'); // extern
	w(4, 'wpTextReplace();', 'Replace', '', 'Suchen und Ersetzen');

	w(4, 'ReplaceQuoteSigns();', 'FixQuote', '', 'Anführungszeichen korrigieren'); // extern
	w(4, 'convertEntities();', 'FixEnt', '', 'HTML-Entities entfernen'); // extern
	w(4, 'fixDash();', 'FixDash', '', 'Striche auf Halbgeviert vereinheitlichen'); // extern
	w(4, 'ReplaceMarkup();', 'FixMark', '', 'Verschiedene Markup-Korrekturen'); // extern
	w(4, 'undate();', 'UnDate', '', 'Daten entlinken');
}

function qbImageTemps() {
	if (!isFile || !isEdit)
		return;

	w(0, trenner, 'Bildbausteine', '');
	w(4, 'nowcomm();', 'NowCommons', '', 'NowCommons-Baustein setzen');

	w(2, '\'+DÜP\',\'{{Dateiüberprüfung|Quelle|Urheber|Lizenz|Freigabe|Gezeigtes Werk|1923|Besonderer Fall}}\\n\\n\',3', 'DÜP', '', 'Dateiüberprüfung (bitte überflüssige Parameter entfernen)');
}

function qbUsertalkTemps() {
	if (!isUserpage || !isTalk || !isEdit)
		return;

	var usersignature = tagEscape(this.usersignature);

	w(0, trenner, 'Benutzerbausteine', '');

	// w (3,"'{{subst:Benutzer:PDD/Greetings/Hallo|1=" + tagEscape(user) + "}} " + usersignature + "\\n','','','Willkommen!'","Hallo",'','Baustein PDD:Hallo');
	w(3, '\'{{subst:Benutzer:PDD/Greetings/HalloG|1=' + tagEscape(user) + '|2=' + usersignature + '}}\\n\',\'\',\'\',\'Willkommen!\'', 'Hallo', '', 'Baustein PDD:HalloG');
	// w (3,"'{{subst:Begrüßungsbox|1=" + tagEscape(user) + "|2=a}}\\n','','','Willkommen!'","HalloC",'','Baustein Begrüßungsbox');
	w(3, '\'{{subst:Benutzer:PDD/Greetings/Danke}} ' + usersignature + '\\n\',\'\',\'\',\'Probier doch mal die Spielwiese!\'', 'Danke', '', 'Baustein PDD:Danke');
	w(3, '\'{{subst:Benutzer:LKD/V/VHinweis}}\\n\',\'\',\'\',\'Bitte damit aufhören.\'', 'Stop', '', 'Baustein LKD/V/VHinweis');
	// w (3,"'{{subst:Benutzer:Blah/Vorlage:Vandale}}\\n','',''",'Vand','','Baustein Blah:Vandale');
	// w (3,"'{{subst:Benutzer:Tobi B./Vorlage:Löschvandale}} " + usersignature + "\\n','',''",'LöschV','','Baustein Tobi B.:Löschvandale');
	w(3, '\'{{subst:Benutzer:PDD/Greetings/KinderKinder!}}\\n\',\'\',\'\'', 'Kind', '', 'Baustein PDD:Kind');
	w(3, '\'{{subst:Benutzer:Chaddy/Vorlage:Signaturhinweis}} ' + usersignature + '\\n\',\'\',\'\',\'Bitte Diskussionsbeiträge unterschreiben!\'', 'Sign!', '', 'Signieren nicht vergessen');
	w(3, '\'{{subst:Vorschau}}\\n\',\'\',\'\'', 'Vorschau', '', '{{subst:Vorschau}}');
	// w (3,"'{{subst:Benutzer:PDD/Greetings/Linkspam}} " + usersignature + "\\n','',''",'Linkspam','','Baustein PDD:Linkspam');
	w(3, '\'{{subst:Benutzer:LKD/V/LHinweis}} ' + usersignature + '\\n\',\'\',\'\'', 'Linkspam', '', 'Baustein LKD:Linkspam');
	// w (3,"'{{subst:Benutzer:Complex/Greetings/WP-WEB}} " + usersignature + "\\n','',''",'LinkspamC','','Baustein Complex:WP-WEB'); // Abwandlung von ]
	if (adminflag)
		w(3, '\'{{subst:Gelöscht|wwni|ka|wer|rel|pov|que|urv|g=ja|art=}} ' + usersignature + '\\n\',\'\',\'\',\'Dein Artikel wurde gelöscht. Was nun?\'', 'SLA-ex', '', 'Autorenbenachrichtigung nach Schnelllöschung');

}

function qbAdminTools() {
	if (!adminflag)
		return;

	if (isUserMainpage && isEdit) {
		w(0, trenner, '', '');
		w(2, '\'+Gesperrter Benutzer\',\'{{Gesperrter Benutzer}}\',1', 'BSp', '', 'Benutzer gesperrt');
		w(2, '\'+Offener Proxy\',\'{{Offener Proxy}}\',2', 'OP', '', 'Offener Proxy');
		w(2, '\'+Gesperrte IP\',\'{{IP-Sperrung}}\',2', 'IP-S', '', 'IP gesperrt');
	}

	if (isRestore) {
		w(0, trenner, '', '');
		w(4, 'revAllDeletedVersions();', 'Auswahl umkehren?', '', 'Versionsauswahl umkehren?');
	}
}

function qbAutoTemps() {
	if (isSpecial && !isContrib)
		return;

	w(0, trenner, 'Auto-Bausteine', '');

	if (isGeneric && !isSpecial) {
		w(4, 'eintragen(1);', 'QS+', '', '+Qualitätssicherung');
		w(4, 'eintragen(5);', 'URV+', '', '+URV');
		w(4, 'eintragen(2);', 'LA+', '', '+Löschantrag');
	}
	if ((isCategory) && !isSpecial) {
		w(4, 'eintragen(7);', 'KatLA+', '', '+Löschantrag (Kategorie)');
		w(4, 'eintragen(14);', 'KatMove+', '', '+Verschiebeantrag (Kategorie)');
	}
	if (isTemplate)
		w(4, 'eintragen(8);', 'VorLA+', '', '+Löschantrag (Vorlage)');

	if (!isSpecial)
		w(4, 'eintragen(3);', 'SLA+', '', '+Schnelllöschantrag');

	// if (hinweis) {
	// if (isGeneric && !isSpecial)  w (4,"hinweis(1);","PH+","","+Portalhinweis");
	// if (isGeneric && !isSpecial)  w (4,"hinweis(2);","RH+","","+Redaktionshinweis");
	// }
	if (pagetitle === 'Wikipedia:Spielwiese')
		w(4, 'eintragen(10);', 'SPW-Reset', '', 'Spielwiese zurücksetzen');

	if (isContrib || isUserpage)
		w(4, 'eintragen(6);', 'VANDAL+', '', '+Vandalismusmeldung (Benutzer)');

	if (isArticle || isCategory)
		w(4, 'eintragen(9);', 'VANDAL+', '', '+Vandalismusmeldung (Artikel)');

}

/*
 * Quickbar-Zusammenbau, Teil 2:
 * zuerst die Reihenfolge der einzelnen Abschnitte:
 */

mw.loader.using(, // load modules first
	function () {
		_getUser();
		qbWPIntern();
		qbPatrol();
		qbWartung();
		qbToolserver();
		qbCategoryTools();
		qbImageTools();
		qbExternTools();
		// ab hier keine Dropdowns mehr
		closedropdown();
		dropdown = false;
		// die folgenden werden nur im Edit-Modus eingeblendet
		qbEditTags();
		qbArticleTemps();
		qbMarkupTools();
		qbImageTemps();
		qbUsertalkTemps();
		// der folgende Abschnitt wird nur bei Admins eingeblendet
		qbAdminTools();
		// Automatisches Bausteinsetzen
		qbAutoTemps();

		/*
	 * hier wird der Quickbar in die Seite geschrieben
	 * (ab hier bitte nichts ändern)
	 */
		var version = window.version || '?';
		if (!isEdit || zeigeversion || isPHP)
			Quickbar += '<div style="text-align:right;font-size:' + qbfontsize + '%;">' +
		(zeigeversion ?
			('<a href="#" onclick="amIuptodate()" title="Versionscheck">' + (adminflag ? 'A/' : '') + version + '</a>&nbsp;&nbsp;') :
			'') +
		(!isEdit ?
			('<input type="checkbox" id="reloadme" name="reloadme" onchange="setReload()" title="Seite alle ' + (timeout / 1000) + ' s neu laden?" style="vertical-align:middle;"/>&nbsp;&nbsp;') :
			'&nbsp;') +
		'<a href="' + mw.config.get('wgScript') + '?title=Special%3APrefixindex&prefix=' + user +
		'&namespace=2" target="' + qbtarget + '" title="Meine Seiten im Benutzernamensraum">' +
		((user.split(' ').length < 10) ? user.split(' ') + '/.' : 'MyPages') +
		'</a>' +
		(userbrowser !== 'Standard' ?
			('&nbsp;&nbsp;<a href="#" onclick="badBrowser()" title="Browser nicht unterstützt">' +
				userbrowser.charAt(0) + userbrowser.charAt(1) + '!</a>') :
			'') + '</div>';

		Quickbar += '<div style="font-size:' + qbfontsize + '%;margin:0;padding:0 0 2px 2px;"' + ((isVector > '') ? ' class="mw-body"' : '') + '>' + xxx + '</div></div>';
		Quickbar = $($.parseHTML(Quickbar)); // FIXME: in initQuickbar() save as jQuery for later manipulation
		if (scrpt > '') {
			Quickbar.append('<script>function _doopt(was){switch(was){' + scrpt + '};}</script>');
			scrpt = '';
		}

		$('body').append(Quickbar);
		// FIXME: Hack for Vector! Need fix in initQuickbar(), .paddingTop is not same!?
		if (isVector > '')
			Quickbar.height(Quickbar.outerHeight() - 170);

	});

//
// ab hier functions
//

function w(was, lurl, linktext, targt, title) {
	title = title || linktext;
	if (!zeigehilfe)
		title = '';

	if (!dropdown) {
		switch (was) {
			case 0:
				xxx += lurl;
				break;
			case 1:
				xxx += '<a href="' + lurl + '" target="' + targt + '" title="' + title + '">' + linktext + '</a>&nbsp; ';
				break;
			case 2:
				xxx += '<a href="#" onclick="newtext(' + lurl + ')" title="' + title + '">' + linktext + '</a>&nbsp; ';
				break;
			case 3:
				xxx += '<a href="#" onclick="insertTagsWrapper(' + lurl + ')" title="' + title + '">' + linktext + '</a>&nbsp; ';
				break;
			case 4:
				xxx += '<a href="#" onclick="' + lurl + '" title="' + title + '">' + linktext + '</a>&nbsp; ';
				break;
		}
	} else { // todo: Hilfe bei Dropdowns. Benutzt die überhaupt jemand???
		var ltext = '__________'.substr(1, ind) + linktext;
		switch (was) {
			case 0:
				if (lurl === br) {
					xxx += '<option>' + linktext + '</option>';
					ind = 2;
				} else if (lurl === trenner) {
					newdropdown(linktext);
				}
				break;
			case 1:
				xxx += '<option value="1|' + lurl + '">' + ltext + '</option>';
				break;
			case 2:
				xxx += '<option value="2|' + scrptn + '">' + ltext + '</option>';
				scrpt += 'case ' + scrptn + ':newtext(' + lurl + ');break;';
				scrptn++;
				break;
			case 3:
				xxx += '<option value="3|' + scrptn + '">' + ltext + '</option>';
				scrpt += 'case ' + scrptn + ':insertTagsWrapper(' + lurl + ');break;';
				scrptn++;
				break;
			case 4:
				xxx += '<option value="4|' + scrptn + '">' + ltext + '</option>';
				scrpt += 'case ' + scrptn + ':' + lurl + ';break;';
				scrptn++;
				break;
		} // switch
	} // else
} // w

function dodropdown(aktion) {
	var zutun = aktion.split('|');
	var was = Number(zutun);
	var wie = zutun;
	switch (was) {
		case 1:
			window.open(wie);
			break;
		default:
			_doopt(Number(wie));
	} // switch
} // dodropdown

function newdropdown(oname) {
	closedropdown();
	xxx += '<select size="1" onchange="dodropdown(this.value);" style="width:135px;font-size:9px;">';
	if (oname > '')
		xxx += '<option>' + oname + '</option>';

	indropdown = true;
	ind = 2;
}

function closedropdown() {
	if (indropdown)
		xxx += '</select>';

	indropdown = false;
}

function newtext(subj, text, wo) {
	// wo=1 : Text austauschen
	// wo=2 : Text am Ende anhängen
	// wo=3 : Text vorne Einfügen
	if (subj > '') {
		if (summary.value > '')
			summary.value += ', ';

		summary.value += subj;
	}

	switch (wo) {
		case 1:
			textbox.value = text + '\n';
			break;
		case 2:
			textbox.value += '\n' + text;
			break;
		case 3:
			textbox.value = text + '\n' + textbox.value;
			break;
	}
	textbox.focus();
}

function insertTagsWrapper(tagOpen, tagClose, sampleText, subj) {
	if (subj > '') {
		if (summary.value > '')
			summary.value += ', ';

		summary.value += subj;
	}
	mw.toolbar.insertTags(untagEscape(tagOpen), untagEscape(tagClose), untagEscape(sampleText));
}

// Krimskrams
function isEven(myNumber) {
	return (myNumber % 2 === 0);
}
function isOdd(myNumber) {
	return (!isEven(myNumber));
}
function LeadingZero(x) {
	return (x >= 10 || x < 0 ? '' : '0') + x;
}
function hasRight(right) {
	var specialrights = false;
	var userrights = mw.config.get('wgUserGroups');
	if (typeof userrights !== 'object')
		return specialrights;

	if (typeof userrights !== 'string')
		return specialrights;

	for (i = 0; i < userrights.length; i++)
		if (userrights === right)
			specialrights = true;

	return specialrights;
}
function quickEscape(text, esctype) {
	// esctype = 1 -> normal umlaut escapes
	// esctype = 2 -> wikisort umlaut escapes
	text = text.replace(//g, 'A').replace(//g, 'a')
		.replace(//g, 'Ae').replace(//g, 'ae')
		.replace(//g, 'B').replace(//g, 'b')
		.replace(//g, 'C').replace(//g, 'c')
		.replace(//g, 'D').replace(//g, 'd')
		.replace(/ȸ/g, 'db')
		.replace(//g, 'Dz').replace(//g, 'dz')
		.replace(//g, 'E').replace(//g, 'e')
		.replace(//g, 'F').replace(//g, 'f')
		.replace(//g, 'G').replace(//g, 'g')
		.replace(//g, 'H').replace(//g, 'h')
		.replace(/Ƕ/g, 'Hv').replace(/ƕ/g, 'hv')
		.replace(//g, 'I').replace(//g, 'i')
		.replace(/IJ/g, 'Ij').replace(/ij/g, 'ij')
		.replace(//g, 'J').replace(//g, 'j')
		.replace(//g, 'K').replace(//g, 'k')
		.replace(//g, 'L').replace(//g, 'l')
		.replace(//g, 'Lj').replace(/lj/g, 'lg')
		.replace(//g, 'M').replace(//g, 'm')
		.replace(//g, 'N').replace(//g, 'n')
		.replace(//g, 'Nj').replace(/nj/g, 'nj')
		.replace(//g, 'O').replace(//g, 'o')
		.replace(/Œ/g, 'Oe').replace(/œ/g, 'oe')
		.replace(/Ƣ/g, 'Oi').replace(/ƣ/g, 'oi')
		.replace(//g, 'P').replace(//g, 'p')
		.replace(/Ɋ/g, 'Q').replace(/ɋ/g, 'q')
		.replace(/ȹ/g, 'qp')
		.replace(//g, 'R').replace(//g, 'r')
		.replace(//g, 'S').replace(//g, 's')
		.replace(/ß/g, 'ss')
		.replace(//g, 'T').replace(//g, 't')
		.replace(/Þ/g, 'Th').replace(/þ/g, 'th')
		.replace(//g, 'U').replace(//g, 'u')
		.replace(//g, 'V').replace(//g, 'v')
		.replace(//g, 'W').replace(//g, 'w')
		.replace(//g, 'X').replace(//g, 'x')
		.replace(//g, 'Y').replace(//g, 'y')
		.replace(//g, 'Z').replace(//g, 'z');

	if (esctype === 1)
		text = text.replace(/Ä/g, 'Ae').replace(/ä/g, 'ae')
			.replace(/Ö/g, 'Oe').replace(/ö/g, 'oe')
			.replace(/Ü/g, 'Ue').replace(/ü/g, 'ue')
			.replace(/Ə/g, 'Ae').replace(/ə/g, 'ae');
	 else
		text = text.replace(/Ä/g, 'A').replace(/ä/g, 'a')
			.replace(/Ö/g, 'O').replace(/ö/g, 'o')
			.replace(/Ü/g, 'U').replace(/ü/g, 'u')
			.replace(/Ə/g, 'A').replace(/ə/g, 'a');

	return text;
}
function tagEscape(text) {
	return text.replace(/'/g, '%27')
		.replace(/"/g, '%22');
}
function untagEscape(text) {
	return text.replace(/%27/g, '\'')
		.replace(/%22/g, '"');
}
function spaceEscape(text) {
	return text.replace(/ /g, '+')
		.replace(/_/g, '+');
}
// helper functions for getting API timestamp
function getAPItimestamp(dateobject) {
	return (dateobject.getFullYear() * 10000000000) + ((dateobject.getMonth() + 1) * 100000000) + (dateobject.getDate() * 1000000) + (dateobject.getHours() * 10000) + (dateobject.getMinutes() * 100);
}
function getFutureDate() {
	var dateobject = new Date();
	// adding 3 hours to dateobject
	dateobject.setTime(dateobject.getTime() + (3 * 3600 * 1000));
	return (getAPItimestamp(dateobject));
}
function getPastDate() {
	var dateobject = new Date();
	// subtracting 3 days from dateobject
	dateobject.setTime(dateobject.getTime() - (3 * 24 * 3600 * 1000));
	return (getAPItimestamp(dateobject));
}
// </nowiki>
/*
 * 3xImport von ]
 * aus ] und ]
 */
/**
@description Imports a user javascript page from any Wikipedia project into the actual document.
@version 0.1.3
@date 2007/03/22
@author: based on function importPage from ]s monobook.js, extended by ]
@revision 2. Sep. 2015
@param page Name of the user page without the "user:" prefix and function importJSL without the ".js" appendix
@param lang (optional) Language code of the corresponding wikipedia project. Default is the German project.
@return true on success, false otherwise
 **/
// Helper-Function: zum Einbinden der Module <nowiki>
function importPage(page, lang) { // all languages support
	try {
		/* check the parameters and set defaults */
		if (!page)
			throw Error('importPage: Missing parameter page.');

		lang = lang || 'de'; // cLang
		/* create import url */
		import_url = '//' + lang + '.wikipedia.org' + sPath + '/index.php?title=User:' + page +
			'&action=raw&ctype=text/javascript&maxage=86400&smaxage=60&bcache=1&debug=' + debugme;
		mw.loader.load(import_url, 'text/javascript');
		return true;
	} catch (e) {
		alert(e.message);
		return false;
	}
}
// Helper-Function
window.importJavascriptL = // FIXME: replace deprecated name
window.importJSL = function (page, lang) {
	return importPage(page + '.js', lang);
};

/**
@description Imports a user css page from any Wikipedia project into the actual document.
@version 0.1.1
@date 2007/03/26
@author: based on function importPage from ]s monobook.js, rewritten by ]
@param page Name of the user page without the "user:" prefix and the ".css" appendix
@param lang (optional) Language code of the corresponding wikipedia project. Default is the callers project.
@return true on success, false otherwise
 **/
// Helper-Function
function importCSSL(page, lang) {
	try {
		/* check the parameters and set defaults */
		if (!page)
			throw Error('importCSSL: Missing parameter page.');

		lang = lang || cLang;
		/* create import url */
		import_url = '//' + lang + '.wikipedia.org' + sPath + '/index.php?title=User:' + page +
			'.css&action=raw&ctype=text/css&smaxage=0&debug=' + debugme;
		/* import page */
		mw.loader.load(import_url, 'text/css');
		return true;
	} catch (e) {
		alert(e.message);
		return false;
	}
}

// ***** FOOT-Block *****
// </nowiki> <- nicht löschen!!!

// ausgelagerte obligatorische Funktionen
importJSL('PDD/supportFuncs'); // ]
importJSL(dev + '/helperFunctions'); // ]
importJSL(dev + '/eintragen'); // ]
// importJSL('PDD/alertOnChanges'); // ]

// obligatorisch nur für editpages
if (isEdit) {
	importJSL('PDD/wpTextReplace'); // ]
	importJSL('BLueFiSH.as/JS/replaceQuoteSigns'); // ]
	importJSL('BLueFiSH.as/JS/markup'); // ]
	importJSL('PDD/convertEntities'); // ]
	importJSL('Euku/persDaten'); // ]

	// Signierfunktionen
	if (!isArticle) {
		if (signing)
			importJSL('Perhelion/signing');
		 // ]
		if (unsigning)
			importJSL('Lustiger_seth/unsigned');
		 // ]
	}
	// extended search & replace feature
	if (searchbox)
		importJSL('Zocky/SearchBox', 'en');
	 // ]

	// coordinates: Generierung der Koordinaten-Vorlage
	if (coordinates)
		importJSL('Dschwen/coordinates');
	 // ]
}

// ausgelagerte optionale Funktionen (Autoload)

// Skriptsammlung Fliegelflagel, ]
if (fliegelflagel) {
	(function (module) {
		if (mw.loader.getState(module))
			mw.loader.using(module).done(function () {
				((mw.libs.ve.targetLoader && mw.libs.ve.targetLoader.addPlugin) || mw.libs.ve.addPlugin)(function () {
					var ve = $.Deferred();
					mw.hook('userjs.schnark-fliegelflagel.ve').fire(ve);
					return ve.promise();
				});
			});

	}('ext.visualEditor.desktopArticleTarget.init'));
	mw.hook('userjs.schnark-fliegelflagel.userdefine').fire({
		version: 1.1,
		profile: undefined,
		additional: {
		},
		config: {
		}
	});
	// importJSL('Schnark/js/fliegelflagel.js/define');
	importJSL(dev + '/js/fliegelflagel-define');
	importJSL('Schnark/js/fliegelflagel.js/load');
}

// Revert/Loglink-Funktionen: möglichst früh einbinden
// Revert godmode-light
if (godmodelight && !adminflag && !editorflag && !isEdit && !(isSpecial && !isContrib))
	importJSL('PDD/godmode-light'); // ]

// Revert addEditAndRevertLinks
if (!(!aerhistory && isHistory) && !isEdit && (editlinkoldversion || revertwithreason))
	importJSL('PDD/addEditAndRevertLinks'); // ]

// LogLinks addLogsLink
if (addlogslink && !isSpecial)
	importJSL('PDD/addLogsLink');
// ]
// Statistik mwArticleStatistics
if (addstatslink && !isSpecial)
	importJSL('°/mwArticleStatistics', 'de');
// ]

// jetzt alles andere, was optional ist
if (!isSpecial && (addeditintro || addpurge))
	importJSL('PDD/modifyCA');
// ]
// changeBeschriftungen *nach* modifyCA.js (!)
if (beschriftungen)
	importJSL('PDD/changeBeschriftungen');
// ]
if (bklcheck && !fliegelflagel)
	importJSL('Schnark/js/bkl-check', 'de');
// ]
if (sperrstatus)
	importJSL('Stefan/Sperrstatus');
// ]
if (rechtschreibpruefung && !isSpecial)
// can't load with RescoureLoader
	importScript('MediaWiki:Gadget-Rechtschreibpruefung.js');

if (ippvandalmark && !isEdit)
	importPage('APPER/IP-Patrol/js');
// ]
if (showredundantlinks && !isSpecial)
	importJSL('PDD/showRedundantLinks');
// ]

// Portal- und Redaktionshinweis
if (hinweis)
	importJSL('DerHexer/hinweise');
// ]

// showreftoggle
if (reftoggle && !isSpecial)
	importJSL('Malte_Schierholz/reftoggle');
// ]

// quickedit
if (qeEnabled)
	importJSL('ASM/quickedit');
// ]

// RIPE tooltips
if (ripe && !isEdit)
	importJSL('PDD/tooltips');
// ]

// adddelreason
if (adddelreason && adminflag)
	importJSL('P.Copp/scripts/adddeletereason');
// ]

// dellinknowcommons
if (dellinknowcommons && adminflag && isFile)
	importJSL('PDD/dellink-nc');
// ]

// loescheimer
if (loescheimer && adminflag)
	importJSL('PDD/modifyLKs');
// ]

// Cacycle’s diff
if (cacyclediff && (isDiff || isEdit))
	importJSL('Cacycle/wikEdDiff', 'en');
// ]

// Codeispoetrys DupeCheck
if (imgdupecheck && isFile)
	importJSL('PDD/checkDupes');
// ]

// P.Copp’s Diffhistory
if (diffhistory)
	importJSL('P.Copp/scripts/diffhistory');
// ]

// P.Copp’s Hideduplicatecontribs
if (isContrib && hideduplicatecontribs)
	importJSL('PDD/hideduplicatecontribs');
// ]

// hideNsLinkSearch.js
if (hidenslinksearch)
	importJSL('PDD/hideNsLinkSearch');
// ]

// Markierskripte ganz zum Schluss einbinden, da sie innerHTML verändern
if (markerledigt)
	importJSL('Euku/markErledigt');
// ]

if (markadmins && action !== 'submit' && !isDiff)
	if (!(!window.mawatchlist && isWatchlist) && !(!window.macontribs && isContrib)) {
		importJSL('PDD/markAdmins');
	}
// ]

if (markutf8 && !(!muwatchlist && isWatchlist) && !(!mucontribs && isContrib))
	importJSL('PDD/markUTF8');
// ]

// EOF