Benutzer:Port(u*o)s/monobook.js

In der heutigen Welt ist Benutzer:Port(u*o)s/monobook.js ein Thema, das die Aufmerksamkeit und das Interesse vieler Menschen auf der ganzen Welt geweckt hat. Ob aufgrund seiner Auswirkungen auf die Gesellschaft, seiner Relevanz im wissenschaftlichen Bereich oder seines Einflusses auf die Populärkultur, Benutzer:Port(u*o)s/monobook.js ist zu einem Thema von großer Bedeutung geworden. Da sich immer mehr Menschen für Benutzer:Port(u*o)s/monobook.js interessieren, kommt es zu Debatten, Recherchen und Diskussionen, die ein breites Spektrum an Aspekten im Zusammenhang mit diesem Thema abdecken. In diesem Artikel werden wir die verschiedenen Facetten von Benutzer:Port(u*o)s/monobook.js und seine heutigen Auswirkungen im Detail untersuchen.
 // FAQ:
 //
 // Frage:   Wie übernehme ich dieses Skript?
 //
 // Antwort: Einfach "Quelltext betrachten", alles markieren und kopieren, und dann in deine eigene
 //          monobook.js (also hierhinein: ]) 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

 //
 // 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>

 // Originalskript ursprünglich gefunden bei ]
 // bearbeitet von ]
 // bearbeitet von ]
 // bearbeitet von ]
 // bearbeitet von ] (2005-09-07)
 // bearbeitet von ] (2006-02-03)
 // bearbeitet wieder von ] (2006-02-21)
 // bearbeitet von ] (ab 2006-04-22)

 // *************** SETUP Teil 1a **********************************
 // systemweite Default-Optionen aus ]
 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;  // "Bearbeiten"-Links bei Abschnitten ganz nach rechts?

 // *************** SETUP Teil 1b **********************************
 // Parameter für Gadgets
 // Gadgets müssen über ] -> Gadgets freigeschaltet werden

 // 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";
 // zu entfernende Standard-Edit buttons (0...10)
 var rmEditButtons = ; // Standardbutton entfernen
 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 usedropdown = false;        // Wenn keine Dropdowns gewünscht sind, hier false eintragen!
 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 = false;            // Debug-Modus?
 var qbfontsize = 100;            // Schriftgröße im QuickBar (relativ in Prozent)

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

 // 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?
 var editlinktxt = "edit";       // Text des Edit-Links
 var revertwithreason = true;    // Revert-Link mit Grund-Eingabe anzeigen?
 var revlinktxt = "rev";         // Text des Revert-Links
 var revlinkshowuser = true;     // beim Revertieren über (Rev)-Link letzten Benutzer angeben?
 var rvisminor = true;           // sind Reverts mit "(rev)"-Link Minor-Changes?
 var aearldefault = "Grund: keine Verbesserung des Artikels";      // Defaultgrund beim Revertieren
 var aerhistory = true;                       // Links auch in der Versionsgeschichte?
 var aearlhere = true;                        // Revertaktion im selben Browserfenster?

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

 var addusercontriblink = true;  // auf Benutzerseiten auch noch Link auf Contributions?
 var usercontribtext = "User:Contribs";       // Text des Contributions-Links ("Benutzerbeiträge")
 var userdeledittext = "User:DelEdits";       // Text des Links auf Deleted Edits
 var userstatstext = "User:Stats";            // Text des Links auf Benutzerstatistik
 var userstatstype = "soxredp";               // Art der Benutzerstatistik
                                              // (dab/yaec/kate/wannabe_kate/misza/soxred/soxredp/soxredquick)
 var usergallerytext = "User:Gallery";        // Text des Links auf Bildergalerie des Benutzers
 var userstimmrechttext = "User:Stimmrecht";  // Text des Links auf Stimmrechtcheck

 var adduserarticlelink = true;  // auf Benutzerseiten Link auf erstellte Artikel?
 var userarticletext = "User:Articles";       // Text des Links auf erstellte Artikel
 var userarticletype = "soxred";              // verwendeter Artikelcounter
                                              // (escaladix/soxred)

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

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

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

 // Modul: modifyCA.js
 var addeditintro = true;        // TAB zum Editieren des Nullabschnitts (Intros) einer Seite hinzufügen?
 var editintrotext = "IntroBearbeiten";  // Beschriftung des TABs
 var addpurge = true;            // TAB zum Purgen (Servercache-Updaten) einer Seite hinzufügen?
 var purgetext = "Purge";                // Beschriftung des TABs

 // Modul: markAdmins.js
 var markadmins = true;          // Admins u.ä. besonders hervorheben?
 var marksubpages = true;              // auch Links auf Admin-Unterseiten markieren?
 var mawatchlist = true;               // auch auf der Beobachtungsliste?
 var macontribs = true;                // auch auf den Benutzerbeiträgen?
 var markatxt = "A";              // Markierung für Admins
 var markrenatxt = "A-Ren";       // Markierung für umbenannte Admins
 var markstewtxt = "S";           // Markierung für Stewards
 var markombudsmantxt = "Omb";    // Markierung für Ombudspersonen
 var markbureautxt = "B";         // Markierung für Bürokraten

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

 var markexadmins = true;       // zusätzlich: Ex-Admins besonders hervorheben?
 var markexatxt = "Ex-A";         // Markierung für Ex-Admins
 var markexbureautxt = "Ex-B";    // Markierung für Ex-Bürokraten

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

 var markoversight = true;      // zusätzlich: Oversights besonders hervorheben?
 var markoversighttxt = "OS";     // Markierung für Oversight-Berechtigte
 
 var markcheckuser = true;      // zusätzlich: CheckUser besonders hervorheben?
 var markcheckusertxt = "CU";     // Markierung für Checkuser-Berechtigte

 // 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: newgallery.js
 var newgallery = false;         // Anzahl Bilder/Zeile in Galerien verändern?
 var gallery_len = 6;            // Breite der Galerien
 var bCategory = true;                 // nur in Kategorien?
 var bArticle = true;                  // (oder/und) nur in Artikeln?

 // 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 RP
 var rechtschreibpruefung = false;  // Rechtschreibprüfung aktivieren?
 var AutorunRP = false;                // false = RP durch Anklicken; true = automatische RP

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

 // Modul: osm.js
 var openstreetmap = false; // OpenStreetMap-Link anschalten?

 // 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?
 // Liste der Nicht-Diskussionsseiten, die ebenfalls unterschrieben werden sollen:
 var regpages = new Array(':Verbesserungsvorschläge', ':Löschkandidaten', ':Löschprüfung', ':Entsperrwünsche', ':Kandidaturen', ':Qualitätssicherung', ':Fragen_zur_Wikipedia', ':Meinungsbilder', ':Review', ':Bilderwünsche', ':Kandidaten');

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

 // </nowiki>

 // Modul: popups.js (Lupin, Navpop)
 var lupinpopups = false;        // Popup-Modul einbinden?
 // Optionen für Lupin-Popups
 // (ausführliche Liste siehe ] bzw.
 // aktueller und auf englisch ])
 popupDelay = 1;                // Popupverzögerung in s (DEFAULT: 0.5)
 simplePopups = false;          // auf true setzen, wenn Laden im Hintergrund unerwünscht (DEFAULT: false)
 popupStructure = 'menus';      // Aussehen der Popups (DEFAULT: 'shortmenus')
 popupActionsMenu = false;      // separates "actions"-Menu (DEFAULT: true)
 popupImages = true;            // Bilder im Popup erwünscht? (DEFAULT: true)
 popupSubpopups = true;         // Popups für Links innerhalb von Popups generieren? (DEFAULT: true)
 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
 removeTitles = false;          // Originaltitel der Links nach popups verschieben? (DEFAULT: true)
 popupFixRedirs = true;                  // Links auf Redirects korrigieren? (DEFAULT: false)
 popupWatchRedirredPages = false;        // korrigierte Seite beobachten? (DEFAULT: null)
 popupRedirAutoClick = 'wpSave';         // ausgeführte Aktion beim Korrigieren von Redirects (DEFAULT: 'wpDiff')
 popupRedlinkRemoval = true;             // Rote Links entfernen? (DEFAULT: false)
 popupFixDabs = true;                    // Links auf BKLs korrigieren? (DEFAULT: false)
 popupWatchDisambiggedPages = false;     // korrigierte Seite beobachten? (DEFAULT: null)
 popupLastModified = true;      // Zeit seit letzter Änderung anzeigen? (DEFAULT: true)
 popupDiffDates = true;         // Änderungsdaten bei Diffs anzeigen? (DEFAULT: true)
 popupOnlyArticleLinks = true;  // Popups nur für Artikel-Links (DEFAULT: true)
 imagePopupsForImages = false;  // Bildvorschau laden, wenn Mausposition über Bild? (DEFAULT: true)
 popupMaxWidth = 400;           // Maximalbreite des Popup-Fensters (DEFAULT: 350)
 popupRevertSummaryPrompt = true;        // Prompt zum Ändern des Revert-Kommentars? (DEFAULT: false)
 popupMaxPreviewSentences = 2;  // Anzahl der angezeigten Sätze in der Vorschau (DEFAULT: 4)
 // <nowiki>
 // Link auf Popups zu Messages hinzufügen?
 addpopuplink = true;
 // deutsche Texte für Lupin
 popupFixDabsSummary = "Ersetze BKL-Seite ] durch ]" + (addpopuplink ? " mit ]" : "");
 popupExtendedRevertSummary = "Revert auf Version vom %s von Benutzer %s, oldid %s" + (addpopuplink ? " mit ]" : "");
 popupRevertSummary = "Revert auf Version %s" + (addpopuplink ? " mit ]" : "");
 popupRevertToPreviousSummary = "Revert auf Vorgängerversion der Version %s" + (addpopuplink ? " mit ]" : "");
 popupQueriedRevertSummary = "Revert auf Version $1 vom $2 von $3" + (addpopuplink ? " mit ]" : "");
 popupQueriedRevertToPreviousSummary = "Revert auf Vorgängerversion der Version $1 vom $2 von $3" + (addpopuplink ? " mit ]" : "");
 popupFixRedirsSummary = "Ersetze Redirect ] durch ]" + (addpopuplink ? " mit ]" : "");
 popupRedlinkSummary = "Entferne Link auf leere Seite ]" + (addpopuplink ? " mit ]" : "");
 popupRmDabLinkSummary = "Entferne Link auf BKL-Seite ]" + (addpopuplink ? " mit ]" : "");

 // Modul: wikEdDiff.js (Cacycle)
 var cacyclediff = true;        // Cacycle-Diff einbinden?
 var wikEdFullDiff = false;

 // weitere Module
 var showredundantlinks = false; // zeigt doppelte Links an
 var ripe = false;               // Ripe-Tooltips?
 var irrenhaus = false;          // Script für mehr Abwechslung im "neue Nachrichten"-Balken
 var js_highlight = false;       // javascript-code farbig hervorheben  (.js and pre-tags)
 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)

 // 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 ***********************************

 // (PDD: note to self: version auch in alert-Funktion ändern!)
 var version  = '0.99b';

 var user  = 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 = new Array("", "Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember");
 var Monatekurz = new Array("", "Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez");
 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;

 // Lemma-Varianten (work in progress) + redundant zu addLogsLink etc.
 // get page title
 var pagetitle = wgPageName;
 var spagetitle = wgTitle;
 // 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(' ');
 if (titlesplit.length > 1) {
    personlemma = titlesplit + ',';
    for (i=0; i<(titlesplit.length-1); i++)
        personlemma=personlemma + " "+titlesplit;
 }

 // get URL parameters (used for page type variables)
 var UrlParameters = new Array ();
 readparams();

 function readparams() {
  var asReadInUrlParameters;
  var asReadInUrlParameter;

  // Get URL parameters
  asReadInUrlParameters = location.search.substring(1, location.search.length).split("&");
  for (i = 0; i < asReadInUrlParameters.length; i++) {
    asReadInUrlParameter = asReadInUrlParameters.split("=");
    UrlParameters)] = decodeURIComponent(asReadInUrlParameter);
  }
 }

 // page type variables: namespaces
 var isArticle       = (mw.config.get('wgNamespaceNumber') == 0);
 var isArticleTalk   = (mw.config.get('wgNamespaceNumber') == 1);
 var isDatei         = (wgCanonicalNamespace == "File");
 var isCategory      = (wgCanonicalNamespace == "Category");
 var isTemplate      = (wgCanonicalNamespace == "Template");
 var isGeneric       = false;
 if ((!isDatei) && (!isCategory) && (!isTemplate))
     isGeneric  = true;
 var isProject       = (wgCanonicalNamespace == "Project"); /* NR Wikipedia: */
 var isHelp          = (wgCanonicalNamespace == "Help");    /* NR Hilfe */

 // page type variables: namespace == -1
 var isSpecial  = (wgCanonicalNamespace == "Special");
 var isRestore = (isSpecial && (wgCanonicalSpecialPageName == "Undelete"));
 var isContrib = (isSpecial && (wgCanonicalSpecialPageName == "Contributions"));
 var isDelContrib = (isSpecial && (wgCanonicalSpecialPageName == "DeletedContributions"));
 var isWatchlist = (isSpecial && (wgCanonicalSpecialPageName == "Watchlist"));

 // page type variables: namespace == -1
 var isTalk = (!isSpecial && isOdd(mw.config.get('wgNamespaceNumber')));

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

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

 // userpage/name stuff, vor allem für IPs
 var userPageOwner = "";
 if (isContrib || isDelContrib)  {
   if (UrlParameters) userPageOwner = UrlParameters.split('+').join('_');
   else {
        userPageOwner = decodeURIComponent(location.href.substring(location.href.indexOf("https://wikifreehand.com/de/") + 6)).split('#');
        userPageOwner = userPageOwner.substring(userPageOwner.indexOf("Beiträge/") + 9);
   }
 }

 // page type variables: user & user discussion lumped together
 var isUserpage = ( (wgCanonicalNamespace == "User") || (wgCanonicalNamespace == "User_talk") );
 var isUserMainpage = false;
 if (isUserpage)
    if (wgTitle == wgTitle.split("/")) {
        isUserMainpage = true;
        userPageOwner = wgTitle;
    }

 // handelt es sich um eine IP?
 var isIPUser = false;
 if (userPageOwner != "")
    if (userPageOwner.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/) != null)
       if ((userPageOwner.split(".") > 1) && (userPageOwner.split(".") < 255))
          isIPUser = true;

 // Admin & editor functions
 var adminflag = false;
 if (hasRight("sysop")) adminflag = true;

 var editorflag = false;
 if (hasRight("editor")) editorflag = true;

 // 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:5px; left:0px; width:14.1em; z-index:10;">';
 // optional:  opacity:0.9;
 var xxx      = '';

 var trenner='<hr />';
 var br     ='<br />';

 var qbtarget = '_self';
 if (qbnewpage) qbtarget = '_blank';

 var dropdown = usedropdown;
 var scrpt    = '';
 var scrptn   = 0;
 var indropdown;
 var ind;

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

 function buildQuickbar() {
    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();
 }


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

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

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

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

    w (1,'/w/index.php?title=Special:Recentchanges&hideminor=0&hideliu=1&hidebots=1&hidepatrolled=0&days=7&limit='+rclimit,'RCs',qbtarget,'Letzte Änderungen');
    w (1,'https://wikifreehand.com/de/Special:Contributions/newbies','RCNs',qbtarget,'Beiträge neuer Benutzer');
    w (1,'/w/index.php?title=Special:Newpages&namespace=0&limit='+nplimit,'NeuA',qbtarget,'Neue Artikel');
    // w (1,'https://wikifreehand.com/de/Special:Newimages','NeuD',qbtarget,'Neue Dateien (Bilder)');
    w (1,'/w/index.php?title=Special:Log&limit='+nulimit+'&type=newusers','NeuB',qbtarget,'Neue Benutzer');
    w (1,'/w/index.php?title=Special:OldReviewedPages&limit='+nvlimit,'NeuE',qbtarget,'Neue Edits in gesichteten Artikeln');
    w (1,'https://wikifreehand.com/de/Wikipedia:Vandalismusmeldung','VM',qbtarget,'Vandalismusmeldung');
    w (1,'https://wikifreehand.com/de/Wikipedia:Oversight/Kontakt','OSA',qbtarget,'Oversight-Kontakt');
    w (1,'https://wikifreehand.com/de/Wikipedia:Sperrprüfung','SP',qbtarget,'Sperrprüfung');
    w (1,'https://wikifreehand.com/de/Wikipedia:Löschprüfung','LP',qbtarget,'Löschprüfung');
    w (1,'https://wikifreehand.com/de/Wikipedia:Entsperrwünsche','EW',qbtarget,'Entsperrwünsche');
    w (1,'https://wikifreehand.com/de/Wikipedia:Administratoren/Probleme','AP',qbtarget,'Admin-Probleme');
    w (1,'https://wikifreehand.com/de/Special:Log','Log',qbtarget,'Logfiles');
    // w (1,'irc://irc.freenode.net/wikipedia-de','IRC',qbtarget,'IRC-Chat #wikipedia-de');
 }

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

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

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

    w (1,'https://wikifreehand.com/de/Wikipedia:Kandidaturen von Artikeln, Listen und Portalen','KALP',qbtarget,'Kandidaturen von Artikeln, Listen und Portalen');

    w (1,'https://wikifreehand.com/de/Wikipedia:Review','RV',qbtarget,'Review');
    w (1,'https://wikifreehand.com/de/Wikipedia:Kandidaten für exzellente Bilder','KEB',qbtarget,'Kandidaten für exzellente Bilder');
    // w (1,'https://wikifreehand.com/de/Wikipedia:Kandidaten für exzellente Aufnahmen','KEAU',qbtarget,'Kandidaten für exzellente Aufnahmen');
 }

 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,"http://toolserver.org/~vvv/adminstats.php?wiki=dewiki_p&tlimit=2419200",'AdmA',qbtarget,'Adminaktivität (letzte 4 Wochen)');
    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,"http://toolserver.org/~magnus/wikitodo.php?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://toolserver.org/~mzmcbride/cgi-bin/watcher.py?db=dewiki_p&titles="+pesctitle,'AWa',qbtarget,'Watcher');
        w (1,"http://toolserver.org/~daniel/WikiSense/Contributors.php?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');
    }
 }

 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);
        w (1,"http://network-tools.com/default.asp?prog=lookup&host="+userPageOwner,'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,"http://toolserver.org/~luxo/contributions/contributions.php?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,"http://de.wikipedia.org/w/api.php?action=query&list=usercontribs&format=xmlfm&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,"http://toolserver.org/~erwin85/blockfinder.php?lang=de&family=wikipedia&ip="+userPageOwner,'RngB?',qbtarget,'Range Block Finder');
    } else {
        // w (1,"http://www.ripe.net/whois",'ripe',qbtarget);
        // 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,"http://toolserver.org/~vvv/sulutil.php?user="+userPageOwner,'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,"http://toolserver.org/~luxo/contributions/contributions.php?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?');
*/
    }

    // w (1,"http://toolserver.org/~interiot/cgi-bin/count_edits?user="+user+"&dbname=dewiki_p",'EC+',qbtarget,'Mein Editcount');
    w (1,"http://toolserver.org/~chm/blockcalc.php",'BCalc',qbtarget,'Rangeblock-Calculator');

 }

 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,"http://toolserver.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://toolserver.org/~magnus/missingtopics.php?project=wikipedia&language=de&category="+spesctitle+"&depth=5&wikimode=0&doit=Run",'K:Miss',qbtarget,'Kategorie: Fehlende Artikel');
    w (1,"http://toolserver.org/~magnus/deep_out_of_sight.php?category="+spesctitle+"&depth=9",'K:NeuE',qbtarget,'Kategorie: Nachzusichtende Artikel');
    w (1,"http://toolserver.org/~magnus/deep_insight.php?category="+spesctitle+"&depth=9",'K:UsP',qbtarget,'Kategorie: Erstzusichtende Artikel');
 }

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

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

    w (1,"http://toolserver.org/~magnus/commonshelper.php?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://wikifreehand.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,"http://toolserver.org/~magnus/commonshelper.php?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);
    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);

    // 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://wikifreehand.com/de/'+pesctitle,'WL',qbtarget,'WikiLint (Autoreviewer)');

    // w (1,"http://www.canoo.net",'Canoo',qbtarget);
    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=%22" + spesctitlelookup + "%22&h=1",'Zeno',qbtarget,'Verschiedene Lexika bei zeno.org');
        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) {
        w (1,"http://dispatch.opac.ddb.de/DB=4.1/CMD?ACT=SRCHA&IKT=8514&SRT=YOP&TRM="+quickEscape(personlemma,1),'DNB-PND',qbtarget,'DNB (PND-Suche)');
    } else {
        w (1,"http://dnb.ddb.de/",'DNB-PND',qbtarget,'DNB (PND-Suche)');
    }

    w (1,"http://www.ubka.uni-karlsruhe.de/kvk.html",'KVK',qbtarget,'Karlsruher Virtueller Katalog');
    // w (1,"http://toolserver.org/gradzeichen/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/suche.html",'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.utf8",'Вик',qbtarget,'Wikyrilliza');
    w (1,"http://www.mcaviglia.ch/gmap/get_coor_ext.asp?l=de",'Coord',qbtarget,'Get Coordinates');
 }

 function qbEditTags() {
    if (isDatei) return;
    if (!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 />','',''",'<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,"'<math>','</math>',''",'Math');
    w (3,"':<math>\\u005Cmathrm{','}</math>',''",'ChemForm');

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

 function qbArticleTemps() {
    if (isDatei) return;
    if (!isEdit) return;

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

    w (3,"'== Einzelnachweise ==\\n<references></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:" + tagEscape(quickEscape(personlemma,2)) + "}}\\n','',''","DefSrt",'','{{DEFAULTSORT:');
    w (3,"']',''","User:",'',']');
    w (3,"']',''","WP:",'',']');

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

    w (3,"'{{Normdaten|PND=','}}\\n',''","ND",'','Normdaten (PND individualisiert)');
    w (3,"'{{Personendaten\\n|NAME=" + tagEscape(personlemma) + "\\n|ALTERNATIVNAMEN=\\n|KURZBESCHREIBUNG=\\n|GEBURTSDATUM=\\n|GEBURTSORT=\\n|STERBEDATUM=\\n|STERBEORT=\\n}}\\n','',''",'PD','','{{Personendaten...');
    w (3,"'* {{DNB-Portal|','}}\\n',''","DNB-P",'','PND (individualisiert mit Treffern)');
    w (3,"'* {{PND|','}}\\n',''","PND",'','PND (individualisiert mit Treffern)');
    // w (3,"'* {{PND|','|Keine Treffer im DNB-OPAC, " + refDatumlang + "}}\\n',''","PNDx",'','PND (individualisiert, ohne Treffer)');
    w (3,"'* {{PNDfehlt|" + refDatumlang + "|','}}\\n',''","PNDF",'','PNDfehlt (nicht individualisiert, aber mit Treffern)');

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

    w (3,"'* {{IMDb Name|','|" + tagEscape(wgTitle) + "}}\\n',''","IMDb-n",'','{{IMDb Name...');
    w (3,"'* {{IMDb Titel|tt','|" + tagEscape(wgTitle) + "}}\\n',''","IMDb-t",'','{{IMDb Titel...');
    w (3,"'* {{IMDb Firma|','|" + tagEscape(wgTitle) + "}}\\n',''","IMDb-f",'','{{IMDb Firma...');
    w (3,"'* {{OFDb|','|" + tagEscape(wgTitle) + "}}\\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 (isDatei) return;
    if (!isEdit) return;

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

    w (4,"addPersData();","AutoPD",'','Automatische Kategorien und Personendaten'); // extern
    w (4,"wpTextReplace();","Replace",'','Suchen und Ersetzen');
    if (rechtschreibpruefung && !AutorunRP && !isSpecial)
        w (4,"spellcheck();","SpellChk",'','Rechtschreibprüfung');
    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 (!isDatei) return;
    if (!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|Besonderer Fall}}\\n\\n',3","DÜP",'','Dateiüberprüfung (bitte überflüssige Parameter entfernen)');
 }

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

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

    // w (3,"'{{subst:Benutzer:PDD/Greetings/Hallo|1=" + tagEscape(user) + "}} " + tagEscape(usersignature) + "\\n','','','Willkommen!'","Hallo",'','Baustein PDD:Hallo');
    w (3,"'{{subst:Benutzer:PDD/Greetings/HalloG|1=" + tagEscape(user) + "|2=" + tagEscape(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}} " + tagEscape(usersignature) + "\\n','','','Probier doch mal die Spielwiese!'",'Danke','','Baustein PDD:Danke');
    w (3,"'{{subst:Benutzer:Complex/Greetings/TestMitStopschild}}\\n','','','Bitte damit aufhören.'",'Stop','','Baustein Complex:TestMitStopschild'); // Abwandlung von ]
    // w (3,"'{{subst:Benutzer:Blah/Vorlage:Vandale}}\\n','',''",'Vand','','Baustein Blah:Vandale');
    // w (3,"'{{subst:Benutzer:Tobi B./Vorlage:Löschvandale}} " + tagEscape(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}} " + tagEscape(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}} " + tagEscape(usersignature) + "\\n','',''",'Linkspam','','Baustein PDD:Linkspam');
    w (3,"'{{subst:Benutzer:LKD/V/LHinweis}} " + tagEscape(usersignature) + "\\n','',''",'Linkspam','','Baustein LKD:Linkspam');
    // w (3,"'{{subst:Benutzer:Complex/Greetings/WP-WEB}} " + tagEscape(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=}} " + tagEscape(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");
    if (( isGeneric)  && (!isSpecial))  w (4,"eintragen(5);","URV+","","+URV");
    if (( isGeneric)  && (!isSpecial))  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) && (!isSpecial))  w (4,"eintragen(8);","VorLA+","","+Löschantrag (Vorlage)");
    if (                 (!isSpecial)) {
         w (4,"eintragen(3);","SLA+","","+Schnelllöschantrag");
         // w (4,"eintragen(3, 'Kein Artikel.');","SLA+/KA","","+Schnelllöschantrag (Kein Artikel)");
    }

    if (hinweis) {
       // if (( isGeneric)  && (!isSpecial))  w (4,"hinweis(1);","PH+","","+Portalhinweis");
       // if (( isGeneric)  && (!isSpecial))  w (4,"hinweis(2);","RH+","","+Redaktionshinweis");
    }
    if (wgPageName == "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)");
    }
 }


 /*
  * hier wird der Quickbar in die Seite geschrieben
  * (ab hier bitte nichts ändern)
  */

 buildQuickbar();
 document.write(Quickbar);

 if (typeof(version) == 'undefined') var version = "?";
 if (!isEdit || zeigeversion || isPHP) {
  document.write(
      '<div align=right>',

    (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?"></input>&nbsp;&nbsp;')
         : '&nbsp;',

      '<a href="/w/index.php?title=Spezial%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>');
 }
 document.write('<div style="font-size:',qbfontsize,'%;">',xxx,'</div></div>');

 if (scrpt > '') {
    document.write('<script> function _doopt (was) { switch (was) {', scrpt, '}}<\/script>');
    scrpt='';
 }

 //
 // ab hier functions
 //

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

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

 function closedropdown () {
  if (indropdown) xxx=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 (document.editform.wpSummary.value > "") document.editform.wpSummary.value += ", ";
      document.editform.wpSummary.value = document.editform.wpSummary.value + subj;
   }

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

 function insertTagsWrapper(tagOpen, tagClose, sampleText, subj) {
   if (subj > "") {
      if (document.editform.wpSummary.value > "") document.editform.wpSummary.value += ", ";
      document.editform.wpSummary.value = document.editform.wpSummary.value + subj;
   }
   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;
   if (typeof wgUserGroups != 'object') return(specialrights);
   if (typeof wgUserGroups != 'string') return(specialrights); 
   for (i=0;i<wgUserGroups.length;i++) {
       if (wgUserGroups == right) specialrights = true;
   }
   return(specialrights); 
 }
 function quickEscape(text, esctype)
 {
   // esctype = 1 -> normal umlaut escapes
   // esctype = 2 -> wikisort umlaut escapes

   text = text.replace(/ß/g, "ss");

   text = text.replace(/Á/g,"A").replace(/á/g,"a")
              .replace(/À/g,"A").replace(/à/g,"a")
              .replace(/Ă/g,"A").replace(/ă/g,"a")
              .replace(/Â/g,"A").replace(/â/g,"a")
              .replace(/Å/g,"A").replace(/å/g,"a")
              .replace(/Ā/g,"A").replace(/ā/g,"a")
              .replace(/Ć/g,"C").replace(/ć/g,"c")
              .replace(/Č/g,"C").replace(/č/g,"c")
              .replace(/Ç/g,"C").replace(/ç/g,"c")
              .replace(/Đ/g,"Dj").replace(/đ/g,"dj")
              .replace(/É/g,"E").replace(/é/g,"e")
              .replace(/È/g,"e").replace(/è/g,"e")
              .replace(/Ë/g,"e").replace(/ë/g,"e")
              .replace(/Ě/g,"e").replace(/ě/g,"e")
              .replace(/Ğ/g,"G").replace(/ğ/g,"g")
              .replace(/Í/g,"I").replace(/í/g,"i")
              .replace(/Ì/g,"I").replace(/ì/g,"i")
              .replace(/Ï/g,"I").replace(/ï/g,"i")
              .replace(/İ/g,"I").replace(/ı/g,"i")
              .replace(/Î/g,"I").replace(/î/g,"i")
              .replace(/Ł/g,"L").replace(/ł/g,"l")
              .replace(/Ļ/g,"L").replace(/ļ/g,"l")
              .replace(/Ń/g,"N").replace(/ń/g,"n")
              .replace(/Ñ/g,"N").replace(/ñ/g,"n")
              .replace(/Ň/g,"N").replace(/ň/g,"n")
              .replace(/Ņ/g,"N").replace(/ņ/g,"n")
              .replace(/Ó/g,"O").replace(/ó/g,"o")
              .replace(/Ò/g,"O").replace(/ò/g,"o")
              .replace(/Ô/g,"O").replace(/ô/g,"o")
              .replace(/Ø/g,"O").replace(/ø/g,"o")
              .replace(/Õ/g,"O").replace(/õ/g,"o")
              .replace(/Ő/g,"O").replace(/ő/g,"o")
              .replace(/Ř/g,"R").replace(/ř/g,"r")
              .replace(/Ś/g,"S").replace(/ś/g,"s")
              .replace(/Š/g,"S").replace(/š/g,"s")
              .replace(/Ş/g,"S").replace(/ş/g,"s")
              .replace(/Ţ/g,"T").replace(/ţ/g,"t")
              .replace(/Ú/g,"U").replace(/ú/g,"u")
              .replace(/Ù/g,"U").replace(/ù/g,"u")
              .replace(/Ű/g,"U").replace(/ű/g,"u")
              .replace(/Ů/g,"U").replace(/ů/g,"u")
              .replace(/Ý/g,"Y").replace(/ý/g,"y")
              .replace(/Ÿ/g,"Y").replace(/ÿ/g,"y")
              .replace(/Ź/g,"Z").replace(/ź/g,"z")
              .replace(/Ž/g,"Z").replace(/ž/g,"z")
              .replace(/Ż/g,"Z").replace(/ż/g,"z")
              .replace(/Æ/g,"Ae").replace(/æ/g,"ae")
              .replace(/Œ/g,"Oe").replace(/œ/g,"oe");

   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)
 {
   text = text.replace(/'/g, "%27");
   text = text.replace(/"/g, "%22");
   return(text);
 }
 function untagEscape(text)
 {
   text = text.replace(/%27/g, "'");
   text = text.replace(/%22/g, "\"");
   return(text);
 }
 function spaceEscape(text)
 {
   text = text.replace(/ /g, "+");
   text = text.replace(/_/g, "+");
   return(text);
 }

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

 // Funktion: importPage()
 // zum Einbinden der Module
 function importPage(seite, lang) { // all languages support
    name='User:'; // international name, works in all wikipedias
    if(!lang) lang = wgContentLanguage;

    // new version
    seite = 'http://' + lang + '.wikipedia.org' + wgScriptPath + '/index.php?title=' + name + seite +
           '&action=raw&ctype=text/javascript&smaxage=0';

    var head = document.getElementsByTagName('head').item(0);
    var js = document.createElement('script');
    js.setAttribute('type', 'text/javascript');
    js.setAttribute('src', seite);
    js.setAttribute('charset', 'utf-8');
    head.appendChild(js);

    return false;
    // old version
    // document.write('<SCRIPT TYPE="text/javascript" SRC="http://' + lang
    // + '.wikipedia.org/w/index.php?title=' + name + seite
    // + '&action=raw&ctype=text/javascript&smaxage=0"><\/SCRIPT>');
 }

 /*
  * 3xImport von ]
  * aus ] und ]
  */

 /**
 Imports a user javascript page from any wikipedia project into the actual document.

 @version 0.1
 @date 2007/03/22
 @author: based on function importPage from ]s monobook.js, extended by ]
 @param page Name of the user page without the "user:" prefix and the ".js" appendix
 @param lang (optional) Language code of the corresponding wikipedia project. Default is the callers project.
 @return "true" on success, "false" otherwise
 */

 function importJavascriptL(page, lang)
 {
    try {
        /* check the parameters and set defaults */
        if(!page) throw("importJavascriptL: Missing parameter page.");
        if(!lang) lang = wgContentLanguage;

        /* create import url */
        var import_url = 'http://' + lang + '.wikipedia.org' + wgScriptPath + '/index.php?title=User:' + page +
           '.js&action=raw&ctype=text/javascript&smaxage=0';

        /* import page */
        var Head = document.getElementsByTagName('head').item(0);
        var Script = document.createElement('script');
        Script.setAttribute('type', 'text/javascript');
        Script.setAttribute('src', import_url);
        Script.setAttribute('charset', 'utf-8');
        Head.appendChild(Script);

        return true;
    } catch(e) {
        alert(e.message);
        return false;
    }
 }

 /**
 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
 */

 function importCSSL(page, lang)
 {
    try {
        /* check the parameters and set defaults */
        if(!page) throw("importCSSL: Missing parameter page.");
        if(!lang) lang = wgContentLanguage;

        /* create import url */
        var import_url = 'http://' + lang + '.wikipedia.org' + wgScriptPath + '/index.php?title=User:' + page +
           '.css&action=raw&ctype=text/css&smaxage=0';

        /* import page */
        var Head = document.getElementsByTagName('head').item(0);
        var CSS = document.createElement('style');
        CSS.setAttribute('type', 'text/css');
        CSS.setAttribute('charset', 'utf-8');
        CSS.appendChild(document.createTextNode("@import url(" + import_url + ");"));
        Head.appendChild(CSS);

        return true;
    } catch(e) {
        alert(e.message);
        return false;
    }
 }

 /**
 Asynchron import of a Javascript file from the toolserver.

 @version 0.1
 @date 2007/04/24
 @author based on function importPage from ]s monobook.js, rewritten by ]
 @param path Path to the toolserver script without the ".js" appendix
 */

 function import_JS_from_TS(path)
 {
    try {
        /* check the parameter */
        if(!path) throw("import_JS_from_TS: Missing parameter path.");

        /* create import url */
        var import_url = 'http://toolserver.org/' + path + '.js';

        /* import */
        setTimeout(function(e) {
          var Head = document.getElementsByTagName('head').item(0);
          var Script = document.createElement('script');
          Script.setAttribute('type', 'text/javascript');
          Script.setAttribute('src', import_url);
          Script.setAttribute('charset', 'utf-8');
          Head.appendChild(Script);
        }, 1000);

    } catch(e) {
        alert(e.message);
        return;
    }
 }


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

 // ausgelagerte obligatorische Funktionen
 importJavascriptL('PDD/supportFuncs','de'); // ]
 importJavascriptL('PDD/helperFunctions','de'); // ]
 importJavascriptL('PDD/eintragen','de'); // ]
 importJavascriptL('PDD/alertOnChanges','de'); // ]

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

 // ausgelagerte optionale Funktionen (Autoload)

 // revert/loglink-Funktionen: möglichst früh einbinden
 // Revert godmode-light
 if (godmodelight && !adminflag && !editorflag && !isEdit && !(isSpecial && !isContrib)) {
     importJavascriptL('PDD/godmode-light','de'); // ]
     // importJavascriptL('Olliminatore/godmode-light','en');  // ]
 }
 // Revert addEditAndRevertLinks
 if (!(!aerhistory && isHistory) && !isEdit) {
    if (editlinkoldversion || revertwithreason)
       importJavascriptL('PDD/addEditAndRevertLinks','de'); // ]
 }
 // LogLinks addLogsLink
 if (addlogslink && !isSpecial) importJavascriptL('PDD/addLogsLink','de'); // ]

 // jetzt alles andere, was optional ist
 if (!isSpecial)
    if (addeditintro || addpurge) importJavascriptL('PDD/modifyCA','de'); // ]
 // changeBeschriftungen *nach* modifyCA.js (!)
 if (beschriftungen) importJavascriptL('PDD/changeBeschriftungen','de'); // ]
 if (sperrstatus) importJavascriptL('Stefan/Sperrstatus','de'); // ]
 if (rechtschreibpruefung && !isSpecial) {
    DontAutorunRP = !AutorunRP;
    importPage('APPER/RP/js'); // ]
 }
 if (ippvandalmark && !isEdit) importPage('APPER/IP-Patrol/js'); // ]
 if (showredundantlinks && !isSpecial)
    importJavascriptL('PDD/showRedundantLinks','de'); // ]
 // Signierfunktionen
 if (isEdit && !isArticle) {
    if (signing) importJavascriptL('Olliminatore/signing','de'); // ]
    if (unsigning) importJavascriptL('Lustiger_seth/unsigned','de'); // ]
 }

 // extended search & replace feature
 if (isEdit && searchbox) importJavascriptL('Zocky/SearchBox','en');  // ]

 // Portal- und Redaktionshinweis
 if (hinweis) importJavascriptL('DerHexer/hinweise','de'); // ]

 // Kackbalken-Script
 if (irrenhaus) importJavascriptL('Revvar/irrenhaus','de');  // ]

 // Syntax highlighter
 if (js_highlight) importJavascriptL('Olliminatore/shCore','en');  // ]

 // openstreetmap: OpenStreetMap bei Georeferenzen
 if (openstreetmap && !isSpecial)
    importJavascriptL('Magnus_Manske/osm','de'); // ]

 // coordinates: Generierung der Koordinaten-Vorlage
 if (coordinates && isEdit) importJavascriptL('Dschwen/coordinates','de');  // ]

 // showreftoggle
 if (reftoggle && !isSpecial)
    importJavascriptL('Malte_Schierholz/reftoggle','de');  // ]

 // setGallery
 if (newgallery && !isSpecial)
    importJavascriptL('Olliminatore/newgallery','de'); // ]

 // quickedit
 if (qeEnabled) importJavascriptL('ASM/quickedit','de'); // ]

 // RIPE tooltips
 if (ripe && !isEdit) importJavascriptL('PDD/tooltips','de'); // ]

 // adddelreason
 if (adddelreason && adminflag)
    importJavascriptL('P.Copp/scripts/adddeletereason','de'); // ]

 // dellinknowcommons
 if (dellinknowcommons && adminflag && isDatei)
    importJavascriptL('PDD/dellink-nc','de'); // ]

 // loescheimer
 if (loescheimer && adminflag)
    importJavascriptL('PDD/modifyLKs','de'); // ]

 // Lupin's popups
 if (lupinpopups) importJavascriptL('Lupin/popups','en');   // ]

 // Cacycle's diff
 if (cacyclediff) importJavascriptL('Cacycle/wikEdDiff','en');   // ]

 // Codeispoetrys DupeCheck
 if (imgdupecheck && isDatei)
    importJavascriptL('PDD/checkDupes','de');   // ]

 // P.Copp's Diffhistory
 if (diffhistory) importJavascriptL('P.Copp/scripts/diffhistory','de');   // ]

 // P.Copp's Hideduplicatecontribs
 // if (isContrib && hideduplicatecontribs) importJavascriptL('P.Copp/scripts/hideduplicatecontribs','de');   // ]
 if (isContrib && hideduplicatecontribs) importJavascriptL('PDD/hideduplicatecontribs','de');   // ]

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

 if (!(!mawatchlist && isWatchlist) && !(!macontribs && isContrib)) {
    if (markadmins)
       importJavascriptL('PDD/markAdmins','de'); // ]
 }
 if (!(!muwatchlist && isWatchlist) && !(!mucontribs && isContrib)) {
    if (markutf8)
       importJavascriptL('PDD/markUTF8','de'); // ]
 }
 ////// Fügt neben dem eigenen Benutzernamen eine Zahl mit den wartenden Neulingen ein. Gesuchte Wunschmentoren werden gesondert angezeigt.
// Idee: ], Ur-Skript: ]
// kleine Erweiterung von ]
//<nowiki>
 addOnloadHook(function() { // put onload in wikibits.js
 
  function newRequest() {
   try {
      if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
      } else {
        return new ActiveXObject("MSXML2.XMLHTTP");
      }
   } catch (e) {
      return false;
   }
  }
 
  var req;
    if (req = newRequest()) {
    var text = "/w/api.php?format=xml&action=query&prop=categoryinfo&titles=Kategorie:Mentor gesucht";
    req.open("GET", text, false);
    req.send("");
    var menteecount = req.responseXML.getElementsByTagName("categoryinfo").getAttributeNode("pages").nodeValue;
  }
  var req;
    if (req = newRequest()) {
    var text = "/w/api.php?format=xml&action=query&prop=categoryinfo&titles=Kategorie:Wunschmentor gesucht";
    req.open("GET", text, false);
    req.send("");
    var wmenteecount = req.responseXML.getElementsByTagName("categoryinfo").getAttributeNode("pages").nodeValue;
  }
 
 // From ]
        function aswcAddlilink(tabs, url, name, id, title, key) {
         var na = document.createElement('a');
         na.href = url;
         na.appendChild(document.createTextNode(name));
         var li = document.createElement('li');
         if(id) li.id = id;
         li.appendChild(na);
         //tabs.appendChild(li); // to end
         ta_hi = document.getElementById('pt-userpage'); // to versions tab
         if (ta_hi) tabs.insertBefore(li, ta_hi);
         if (id) {
                 if (key && title) ta = ;
                 else if (key) ta = ;
                 else if (title) ta = ;
         }
         akeytt(); // re-render the title and accesskeys from existing code in wikibits.js
         return li;
        };
        aswcAddlilink(document.getElementById('p-personal').getElementsByTagName('ul'), "http://de.wikipedia.orghttps://wikifreehand.com/de/Kategorie:Mentor_gesucht", menteecount , "ca-mentee", "Wartende Neulinge", "");
        if (wmenteecount > 0)
            aswcAddlilink(document.getElementById('p-personal').getElementsByTagName('ul'), "http://de.wikipedia.orghttps://wikifreehand.com/de/Kategorie:Wunschmentor_gesucht", "WM: " + wmenteecount, "ca-wmentee", "Wartende Neulinge mit Wunschmentor", "");
 });
//</nowiki>
////// Der folge Teil fügt ein Tab zur Benutzerseite eines "wartenden Neulings" ein, mit dem man ihn sofort übernehmen kann.
////// von ] (17:31, 30. August 2009), Autor ist ], kleine Änderung von ]
//<nowiki>
 
/* Voraussetzungen */
/* isUserpage und isUserMainpage */
var isUserMainpageI = false;
if (wgCanonicalNamespace == "User")
    if (wgTitle == wgTitle.split("/"))
        isUserMainpageI = true;
 
/* UrlParameters, von PDD */
var UrlParameters = new Array ();
readparams();
 
function readparams() {
    var asReadInUrlParameters;
    var asReadInUrlParameter;
 
    asReadInUrlParameters = location.search.substring(1, location.search.length).split("&");
    for (i = 0; i < asReadInUrlParameters.length; i++) {
        asReadInUrlParameter = asReadInUrlParameters.split("=");
        UrlParameters)] = decodeURIComponent(asReadInUrlParameter);
    }
}
/* Ende der Voraussetzungen */
 
/* Optionale Variablen */
if(typeof mentorenbuttonplatz == 'undefined')
    mentorenbuttonplatz = "";
if(typeof mentorenbuttontext == 'undefined')
    mentorenbuttontext = "Als Mentee übernehmen";
/* Ende optionale Variablen */
 
/* Mentee übernehmen */
function addMentee() {
    var editl = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' +wgPageName + '&action=edit&irmentee=1';
    if(wgUserName == wgTitle)
        alert('Du willst Dich selbst für Dich als Mentor? Jaja... verarschen kann ich mich selbst...');
    location.href = editl;
}
 
/* Mentor-Gesucht- o. Wunschmentor-Gesucht-Baustein ersetzen */
function replaceMenteeTemplate() {
    document.editform.wpTextbox1.value = document.editform.wpTextbox1.value.replace(/{{Mentor gesucht*}}/g, '{{Benutzer:' + wgUserName + '/Vorlage Mentor}}');
    document.editform.wpSummary.value = 'Mentorenprogramm';
    document.editform.wpSave.click();
    return;
}
 
/* Button in die Buttonleiste einfügen */
function addMenteeButton() {
    mentorgesucht = false;
    links = document.getElementById('mw-normal-catlinks');
    if(!links)
        return;
    links = links.getElementsByTagName('a');
    if(!links)
        return;
    for(var i in links) {
        if(!links.title)
            continue;
        var regmatch = links.title.match(/^Kategorie:(Wunschm|M)entor gesucht/);
        if(regmatch) {
            mentorgesucht = true;
            break;
        }
     }
    if(isUserMainpageI && mentorgesucht) {
        switch(mentorenbuttonplatz) {
            case "portlet":
                var a   = document.createElement("a");
                a.textContent   = mentorenbuttontext;
                a.onclick       = function() { addMentee(); };
                a.style.cursor  = "default";
                var li  = document.createElement("li");
                li.appendChild(a);
                var up = document.getElementById('pt-userpage');
                if (up)
                    up.parentNode.insertBefore(li, up);
            break;
            case "none": // ausblenden
                  // nichts zu tun
            break;
            default:
                var a   = document.createElement("a");
                a.textContent   = mentorenbuttontext;
                a.onclick       = function() { addMentee(); };
                a.style.cursor  = "default";
                var li  = document.createElement("li");
                li.appendChild(a);
                var watch = document.getElementById('ca-watch') ||
                            document.getElementById('ca-unwatch');
                if (watch)
                    watch.parentNode.insertBefore(li, watch);
            break;
        }
    }
}
 
/* replaceMenteeTemplate aufrufen */
if(UrlParameters)
    addOnloadHook(replaceMenteeTemplate);
 
$(addMenteeButton);
//</nowiki>
 
// ] - www.mcaviglia.ch - Zeile bitte stehen Lassen
document.write('<script type="text/javascript" src="'
+ 'http://www.mcaviglia.ch/gmap/get_coor_js.asp?l=de"></script>'); 
 
// Und hier ist die monobook.js zu Ende.