MediaWiki:Common.js

aus Kamelopedia, der wüsten Enzyklopädie
Wechseln zu: Navigation, Suche

Hinweis: Leere nach dem Speichern den Browser-Cache, um die Änderungen sehen zu können.

  • Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
  • Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
  • Internet Explorer: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
  • Opera: Extras → Internetspuren löschen … → Individuelle Auswahl → Den kompletten Cache löschen
//== hilfsfunktionen =========================================
/* Variablen füllen, damit's im Code etwas übersichtlicher bleibt */
var Seitenname   = mw.config.get( 'wgPageName' );
var NamensraumNr = mw.config.get( 'wgNamespaceNumber' );                    
var Aktion       = mw.config.get( 'wgAction' );
var Kamelname    = mw.config.get( 'wgUserName' );
/* nochn paar ehemalige globals für Dateihochladen... */
var wgScript = mw.config.get( 'wgScript' );
var wgAjaxUploadDestCheck = mw.config.get( 'wgAjaxUploadDestCheck' );
var wgAjaxLicensePreview = mw.config.get( 'wgAjaxLicensePreview' );
var wgUploadSourceIds = mw.config.get( 'wgUploadSourceIds' );
/* werden hier benutzt die vars */
var wgUserName = mw.config.get( 'wgUserName' );
var wgUserGroups = mw.config.get( 'wgUserGroups' );
var wgTitle = mw.config.get( 'wgTitle' );
var wgIsArticle = mw.config.get( 'wgIsArticle ' );
var wgCanonicalNamespace = mw.config.get( 'wgCanonicalNamespace' );
var wgScriptPath = mw.config.get( 'wgScriptPath' );
/*codeEditor*/
var wgNamespaceNumber = mw.config.get( 'wgNamespaceNumber' );  
/* CategoryTree-Extension */
var wgServer = mw.config.get( 'wgServer' ); 
/* Wikikontrolle */
var stylepath = mw.config.get( 'stylepath' );
 
/* CSS per ResourceLoader nachladen */
function importCSS(title) {
    mw.loader.load( wgServer + wgScriptPath + '/index.php?title=' + 
               encodeURIComponent(title) + '&action=raw&ctype=text/css&smaxage=21600&maxage=86400&*', 'text/css', 'true' );
}
 
/* JS per ResourceLoader nachladen */
 
function importJS(title) {
     mw.loader.load( wgServer + wgScriptPath + '/index.php?title=' + 
                encodeURIComponent(title) + '&action=raw&ctype=text/javascript&smaxage=21600&maxage=86400&*', 'text/javascript' );
}
 
//== Konstanten ===============================================
 
function CSS(page)
{
	return {type: "CSS", page: page};
}
 
function JS(page)
{
	return {type: "JS", page: page};
}
 
var defaultCSS = CSS(null);
var defaultJS = JS(null);
 
/* Zum "Übersetzen" von Sidebar-Einträgen und Menüs bitte das hier verwenden! */
var libTranslate = JS("MediaWiki:Skin/translate.js");
 
//== Zeug laden ===============================================
 
// für "MediaWiki:Skin/Namensraum:Seitenname.css" defaultCSS verwenden
// für "MediaWiki:Skin/Namensraum:Seitenname.js" defaultJS verwenden
// für andere Seiten JS("Seite") oder CSS("Seite") verwenden
 
var loadStuff = {
    // Artikel
    "Arschkarte":                     [ CSS("MediaWiki:Skin/Projekt:Ka-Mel-Oh!.css") ], //TODO: mal in die Kartenvorlagen reinflanschen
    "Artikelbaukasten":               [             defaultJS ],
    "Bewegung":                       [             defaultJS ],
    "DIR":                            [ defaultCSS ],
    "Gefälle":                        [ defaultCSS ],
    "Krumm, schief und wackelig":     [ defaultCSS ],
    "Gelbsucht":                      [             defaultJS ],
    "Latein":                         [             JS("MediaWiki:Skin/pagina_latina.js") ,libTranslate ],
    "Lorem Ipsum":                    [             JS("MediaWiki:Skin/pagina_latina.js") ,libTranslate ],
    "Pseudolink":                     [ defaultCSS            ],
    "Taschenlampe":                   [ defaultCSS, defaultJS ],
    "Wirklich leere Seite":           [ defaultCSS            ],
    "Roter Knopf/Gedrückt":           [ defaultCSS            ],     
 
    // Kamelopedia
    "Commons:Kugel":                  [ defaultCSS, defaultJS ],
    "Kamelopedia:Kalender":           [ defaultCSS            ],
    "Kamelopedia:Harmoniehütte":      [ defaultCSS            ],
    "Kamelopedia:Zeitreisemaschine":  [             defaultJS,  JS("Kamel:J*/lib/async.js"), JS("Kamel:J*/lib/wiki.js") ],
 
    // Projekt
    "Projekt:Ka-Mel-Oh!": [ defaultCSS            ],
    "Projekt:Bürokratenspiel/9. Runde/Organe/Geheimdienst": [ JS("MediaWiki:Skin/Projekt:BS9Geheimdienst.js") ],
    "Projekt:Adventure/176": [ JS("MediaWiki:Skin/Projekt:Adventure/176.js") ],
    "Projekt:Adventure/459": [ JS("MediaWiki:Skin/Projekt:Adventure/459.js") ],
    "Projekt:Panini/Frauenfussballweltmeisterschaft 2015" : [ defaultCSS ],
    // Forum
    "Forum:Kamelopedia-Design-Wettbewerb": [ defaultJS            ],
    "Projekt:Adventure 2.0": [ CSS("MediaWiki:Skin/Projekt:Adventure2.css") , JS("MediaWiki:Skin/Projekt:Adventure2/init.js")],
    "Projekt:Adventure 2.0/Autoren-Handbuch/Scripting-Anleitung": [ defaultCSS ],
 
    // Spezial
    "Spezial:Hochladen":              [ defaultCSS, defaultJS ],
    "Spezial:RatedPages":             [             defaultJS ],
    "Spezial:KamelBox":               [ defaultCSS                       ],
    "Spezial:Buschtrommel":           [JS("MediaWiki:Skin/Trommel.js")],
 
    // Frage 
    "Frage:Ich verschenke eine Million Euro, wer sie haben will muss sich nur melden und sagen, warum er oder sie das Geld haben will.": [ defaultJS ],
 
    // Echzeit-Letzte-Änderungen
    //"Kamelopedia:RTRC":               [JS("MediaWiki:Skin/Kamelopedia:RTRC.js")],
    "Kamelopedia:Aktive Seiten":      [             defaultJS ],
    "Kamelopedia:Statistik":          [ defaultCSS, defaultJS ],
    "News:Aktuelle ErregnisseS":      [CSS("MediaWiki:Skin/KameloExpress.css")],
 
    "": [] // damit oben überall Kommata stehen bleiben können
};
//
var pageName = [Seitenname.replace(/_/g, " ")];
//
var stuffOnThisPage = loadStuff[pageName];
if (stuffOnThisPage == null) stuffOnThisPage = [];
for (var i = 0; i < stuffOnThisPage.length; i++)
{
    var item = stuffOnThisPage[i];
    if (item.type == "CSS")
    {
        if (item.page == null) item.page = "MediaWiki:Skin/"+pageName+".css";
         importCSS(item.page);
    }
    else if (item.type == "JS")
    {
        if (item.page == null) item.page = "MediaWiki:Skin/"+pageName+".js";
       importJS(item.page);
    }
}
 
// lade [[Hilfe:Edittools.js]], wenn Seite bearbeitet wird (und neue toolbar aus)
//
if ((Aktion == 'edit' || Aktion == 'submit') ) {
    importCSS("MediaWiki:Skin/Edittools.css");
    //MW1.17 -> evtl. erst in Hilfe:Edittools.js anderen Krempel per resourceloader nachladen lassen
    importJS("Hilfe:Edittools.js");
}
 
// Bild-Box-Lizenz-Gedöns für Datei-Seitenbearbeitung
//
if ((NamensraumNr == 6 ) && (Aktion == 'edit' || Aktion == 'submit')) {   
    importCSS('MediaWiki:Skin/Spezial:Hochladen.css');
    importJS('MediaWiki:Skin/Spezial:Hochladen.js');
} 
 
// ==================================================================
// Schwesterprojekte
// ==================================================================
 
// KameloNews, Skin und Script
if (NamensraumNr == 108 && (Aktion == 'view' || Aktion == 'submit') && wgTitle != "Aktuelle ErregnisseS"){   
    importCSS("MediaWiki:Skin/KameloNews.css");
    importJS("MediaWiki:Skin/KameloNews.js");
}
 
// Gute Frage, Skin und Script
if (NamensraumNr == 114 || NamensraumNr == 115 || (Seitenname == "Spezial:Suche" && location.href.indexOf("Suchwort&ns114=1&fulltext") > 0)) {
    importCSS("MediaWiki:Skin/Frage.css");
    importJS("MediaWiki:Skin/Frage.js");
}
 
// KameloBooks, Skin und Script
if (NamensraumNr == 112 || NamensraumNr == 113){   
     importCSS("MediaWiki:Skin/KameloBooks.css");
     importJS("MediaWiki:Skin/KameloBooks.js");
}
 
// Kamelionary, Skin und Script
if (NamensraumNr == 106 || NamensraumNr == 107) {
     importCSS("MediaWiki:Skin/Kamelionary.css");
     importJS("MediaWiki:Skin/Kamelionary.js");
}
 
// Kamelomedia Commons, Skin
if (NamensraumNr == 110 || NamensraumNr == 111 || Seitenname.indexOf ("Kategorie:Commons:") != -1 || Seitenname.indexOf ("Kategorie:Dateien_nach_Motiv") != -1){   
     importCSS("MediaWiki:Skin/Commons.css");
}
// Dateinamensraum, Skin - und Datei-Tags werden zu Links
 if ( NamensraumNr == 6 || NamensraumNr == 10) {
      importCSS("MediaWiki:Skin/Datei.css");
}
 
// Forum, Skin
if (NamensraumNr == 102) {   
     importCSS("MediaWiki:Skin/Forum:Kamelopedia.css");
}
 
// Archiv, Skin
if (NamensraumNr == 104 || NamensraumNr == 105) {
    importCSS("MediaWiki:Skin/Archiv.css");
}
 
// ==================================================================
 
// Tag-Redirects
if (Seitenname.indexOf ("Kategorie:Commons:") != -1 ){   
   importJS("Kamel:J*/lib/nulledit.js");
    var nulledit_count = 0;
    function ne_report (text,p)
    {
        nulledit_count += p;
        if(nulledit_count == 0)
            jQuery("#tag_redirect_info").text("Fertig. Bitte lade die Seite neu und schau nach, ob noch Dateien übrig geblieben sind.");
        else
            jQuery("#tag_redirect_info").text(text + " – noch " + nulledit_count + " Nulledits");
    }
    jQuery(document).ready( function () {
        jQuery("#tag_redirect_go").bind("click",function () {
            categoryNulledit(Seitenname, ne_report);
        });
    });
}
 
// Adventure 2.0 wieder vernünftig bearbeitbar machen:
if (Seitenname.indexOf("Projekt:Adventure_2.0/") == 0) {
	importCSS("MediaWiki:Skin/Projekt:Adventure2.css")
}
 
// Feedback
if (NamensraumNr % 2 == 0 && NamensraumNr != 2 && NamensraumNr != 102 && NamensraumNr != 104 && Aktion == "view" ) {
    //importJS("MediaWiki:Skin/Feedbackknopf.js");
/* Ultrakurzfeedbackdings */
function fb_error_callback () {
        jQuery('#mw-js-message').html("Bei der Zurückfütterung ist ein Fehler aufgetreten!");
        jQuery('#mw-js-message').slideDown('fast'); 
}
 
jQuery(document).ready(function(){
 
jQuery("#p-namespaces ul").append("<li id='ca-feedback'><span><a title='Ein kurzes Feedback zu dieser Seite abgeben'>F/b</a></span></li>");
 
jQuery("body").append("<div id='f_b_background' style='display: none; position:fixed; opacity: 0.5; -moz-opacity: 0.5; width: 100%; height: 100%; top: 0px; left 0px; background-color: black;'>&nbsp;</div>");
jQuery("body").append("<div id='f_b' style='display: none; position:fixed; border: 1px black solid; background: white; left: 50%; top: 50%; width: 340px; height: 240px; padding: 30px; margin-left: -185px; margin-top: -135px;'><h5>Ultrakurzfeedback abgeben</h5><div style='font-size: 80%'>Füttere den Autor zurück: Text oder Bewertung oder beides.</div><div id='fb_preview_frame' style='display:none; font-size: 80%;'><div id='fb_preview_area'></div><div>(In der Vorschau werden die Schlangenlinien noch nicht ersetzt, später auf der Seite schon.)</div></div><form id='fb_form'><textarea style='height:100px;' /><br/><label for='fb_rating'>Kurzbewertung:</label><select name='fb_rating' id='fb_rating'><option value=''>ohne Kurzbewertung</option><option value='0'>0 Höcker –– grottenschlecht</option><option value='1'>1 Höcker –– schwach</option><option value='2'>2 Höcker –– neutrales Mittelfeld</option><option value='3'>3 Höcker –– gut</option><option value='4'>4 Höcker –– sehr gut</option><option value='5'>5 Höcker –– Spitzenbeitrag</option></select><br/><input type='checkbox' id='fb_autosign' name='fb_autosign' checked='checked' style='display:none;'><label for='fb_autosign' style='color:#777;font-size:0.8em;'>Dein Feedback wird automatisch unterschrieben!</label><br/><input type='submit' value='Abschicken' /><input id='fb_preview' type='button' value='Vorschau'><input id='fb_reset' type='reset' value='abbrechen'></form></div>"); 
 
jQuery("#fb_reset").click( function () {
  jQuery("#f_b_background, #f_b").hide();
});
 
jQuery("#fb_preview").click( function () {
  jQuery.ajax({
    url: "/api.php",
    type: "POST",
    data: {
        action: "parse",
        text: "\n{{Kurzfeedback|text="+jQuery("#fb_form textarea").val()+(jQuery("#fb_autosign")[0].checked ? " -- ~~"+"~~" : "")+"|r="+jQuery("#fb_form select").val()+"}}",
        format: "xml"
    },
    success: function (tr) {
       jQuery("#fb_preview_frame").show();
       jQuery("#fb_preview_area").html(jQuery(tr).find("text").text());
       jQuery("#f_b").css("height","350px");
       jQuery("#f_b").css("margin-top","-190px");
       jQuery("#f_b").css("width","540px");
       jQuery("#f_b").css("margin-left","-195px");
    }
  });
});
 
jQuery("#fb_form").submit( function () {
  var wgFormattedNamespaces = mw.config.get( 'wgFormattedNamespaces' );
  var wgNamespaceNumber = mw.config.get( 'wgNamespaceNumber' );
  var wgTitle = mw.config.get( 'wgTitle' );
 
  if (jQuery("#fb_form textarea").val()+jQuery("#fb_form select").val() == "")
  {
      alert("Eins von beidem, Text oder Bewertung, solltest du schon mindestens ausfüllen!");
      return false;
  }
 
  window.fb_data = {
    url: "/api.php",
    data: {
            action: "edit",
            title: wgFormattedNamespaces[wgNamespaceNumber+1]+":"+wgTitle,
            summary: "Kurzfeedback",
            appendtext: "\n{{Kurzfeedback|text="+jQuery("#fb_form textarea").val()+(jQuery("#fb_autosign")[0].checked ? " -- ~~"+"~~" : "")+"|r="+jQuery("#fb_form select").val()+"}}"
        },
    success: function () {
        jQuery("#f_b_background, #f_b").hide();
        jQuery("#ca-feedback").addClass("done");
        jQuery('#mw-js-message').html("Die Zurückfütterung war erfolgreich!");
        jQuery('#mw-js-message').slideDown('fast'); 
    },
    error: fb_error_callback,
    type: 'POST'
  };
  jQuery.ajax({
    cache: false,
    url: "/api.php",
    data: {
      format: "xml",
      action: "query",
      prop: "info",
      intoken: "edit",
      titles: wgFormattedNamespaces[wgNamespaceNumber+1]+":"+wgTitle
    },
    type: 'GET',
    success: function(tr) {
      var token = jQuery(tr).find("api query pages page").attr('edittoken');
      fb_data.data.token = token;
      var section_data = jQuery.ajax({
          async: false,
          url: "/api.php",
          data: {
              action: "parse",
              prop: "sections",
              page: fb_data.data.title,
              format: "xml"
          },
          error: fb_error_callback
      }).responseXML;
      fb_data.data.section = jQuery(section_data).find('s[line="Kurzfeedback"]').index() + 1;
      if (fb_data.data.section == 0)
      {
          fb_data.data.section = "new";
          fb_data.data.text = fb_data.data.appendtext;
          delete fb_data.data.appendtext;
      }
 
      jQuery.ajax(fb_data);
    },
    error: fb_error_callback
  });
  return false;
}
);
 
jQuery("#ca-feedback").click(function () {
    jQuery("#f_b_background, #f_b").show();
    jQuery("#fb_form textarea").focus();
});
 
});	
}
 
// Tausche [[Special:Specialpages]] gegen [[Kamelopedia:Spezialseiten]]
jQuery(document).ready(function(){
    document.getElementById("t-specialpages").innerHTML = '<a href="' + wgScriptPath +'/index.php/Kamelopedia:Spezialseiten">Spezialitäten</a>';
});
 
//Gedudel auf [[Aufzug]] und [[Gedudel]] und [[Kamelopedia:WiKa-Sekte]]
if (Seitenname == 'Aufzug' || Seitenname == 'Gedudel' || Seitenname == 'Kamelopedia:WiKa-Sekte' ) {
    document.write('<embed src="' + wgServer +'/images/c/cb/Aufzug.mid" autostart="true" type="audio/midi" loop="true" hidden="true" height="0" width="0">');
}
 
//Gedudel auf [[Mausetot]]
if (Seitenname == 'Mausetot' ) {
    document.write('<embed src="' + wgServer +'/images/a/a3/Fuchs.mid" autostart="true" type="audio/midi" loop="true" hidden="true" height="0" width="0">');
}
 
//[[Popupblocker]]
if (Seitenname == 'Popupblocker') {
    alert("Ihr Popupblocker ist aktiviert");
}
 
//================================================================================
// Ka-Mel-Oh! CSS IMMER nachladen, damit z.B. auch [[Arschkarte]] nicht doof aussieht 
// oder doch nicht, kostet nämlich auch ressourcen!
// importCSS("MediaWiki:Skin/Projekt:Ka-Mel-Oh!.css");
 
// Der doofe server stürzt dauernd ab, wenn das script da unten läuft ...
if (Seitenname == "Kinderporno" || Seitenname == "Server_Error") {
    //MW1.17+ ? window.onload...
    window.onload = function() {
        if (!document.getElementById("ServerError"))	return;
		document.getElementsByTagName("body")[0].style.backgroundColor = "#ffffff";
		document.getElementsByTagName("body")[0].style.backgroundImage = "none";
		document.getElementsByTagName("body")[0].style.fontSize = "12px";
		document.getElementsByTagName("body")[0].style.padding = "10px";
		document.getElementsByTagName("body")[0].innerHTML = document.getElementById("ServerError").innerHTML;
    }
}
 
// ================================================================================
//
//MW1.18+ ??? -> jQuery-Klapp standardmässig aktiviert (class mw-collapsible)
//
// Ein- und Ausblenden per Javascript
 
// mit den folgenden Funktionen lässt sich ein div-Konstrukt in ein Einblende-Ausblende-Ding verwandeln
//
// Variante 1 (Klick irgendwo blendet ein oder aus):
//	<div class="klapp">
//		<div class="klapp_t">Titel im ausgeblendeten Zustand</div>
//		<div class="klapp_e">Titel im ausgeblendeten Zustand</div>
//		<div class="klapp_i">Einzublendender Inhalt</div>
//	</div>
//
// Variante 2 (ein- und ausblenden nur mit Links):
//	<div class="klapp_x">
//		<div class="klapp_t">Titel im ausgeblendeten Zustand mit <span class="klapp">Einblendelink</span></div>
//		<div class="klapp_e">Titel im ausgeblendeten Zustand mit <span class="klapp">Ausblendelink</span></div>
//		<div class="klapp_i">Einzublendender Inhalt</div>
//	</div>
 
function ausklapp( element )
{
	var klapp_i = null;
	var klapp_e = null;
	var klapp_t = null;
 
	for (i=0; i<element.childNodes.length; i++)
	{
		if( element.childNodes[i].nodeType == 1 )
		{
			if ( element.childNodes[i].className == "klapp_i" )
				klapp_i = element.childNodes[i];
			else if ( element.childNodes[i].className == "klapp_t" )
				klapp_t = element.childNodes[i];
			else if ( element.childNodes[i].className == "klapp_e" )
				klapp_e = element.childNodes[i];
		}
 
		if ( klapp_i && klapp_t && klapp_e )
			break;
	}
 
	if( klapp_i.style.display != "none")
	{
		klapp_i.style.display = "none";
		klapp_e.style.display = "none";
		klapp_t.style.display = "block";
 
	}
	else
	{
		klapp_i.style.display = "block";
		klapp_e.style.display = "block";
		klapp_t.style.display = "none";
	}
 
}
 
function getKlappDiv( obj )
{
	while ( obj && obj.parentNode && obj.className != "klapp_x" )
		obj = obj.parentNode;
 
	return obj;
}
 
// Event-Handler für alle class="klapp"-Objekte zuweisen
function makeAusklapp()
{
	// klapp-div-Rahmen
	var a = document.getElementsByTagName("div"); 
	for ( div=0; div<a.length; div++ )
	{
		if ( a[div].className == "klapp" )
		{
			a[div].onclick = function () { ausklapp(this);}
		}
	}
 
	// klapp-spans-Rahmen als Link-Ersatz
	var a = document.getElementsByTagName("span"); 
	for ( span=0; span<a.length; span++ )
	{
		if ( a[span].className == "klapp" )
		{
			a[span].onclick = function () { ausklapp(getKlappDiv( this ));}
		}
	}
 
	urlKlapp();
}
 
/*
 * liest aus der URL aus, ob ein bestimmtes Objekt ausgeklappt werden soll.
 * angegeben werden kann eine oder mehrere Objekt-Id:
 * index.php?title=Hauptseite&klapp=id1/id2/id3
 */
function urlKlapp()
{
	var arg = location.href;
	var reg = new RegExp(/[?&]klapp=(.*?)($|[?&])/);
	arg = arg.match(reg);
	if( arg == null )
		return;
	arg = arg[0].replace(reg,"$1");
	if( arg == "" )
		return;
	arg = arg.split("/");
 
	for(var i=0; i<arg.length; i++)
	{
		try
		{
			ausklapp(document.getElementById(arg[i]));
		}
		catch(e)
		{
		}
	}
 
}
 
// Nach dem Laden des Fensters folgendes Ausführen:
jQuery(document).ready(makeAusklapp);
 
// ================================================================================
 
// altes dragobject für die Seiten, wo benutzt, ansonsten raus (alles mit class='jstest' ist dragbar)
if (Seitenname == 'Projekt:Gummistiefel' || 
        Seitenname == 'Kamel_Diskussion:AnnaLog/Archiv' || 
        Seitenname == 'Windowspedia' || 
        Seitenname == 'Gut_versteckt' || 
        Seitenname == 'B-Wegung' || 
        Seitenname == 'Wortspiel' || 
        Seitenname == 'Kamel:Atreju/Spielplatz' || 
        Seitenname == 'Kamel:Pille' || 
        Seitenname == 'Bewegliche_Feiertage' ||
        Seitenname == 'Kamel:J*/Ka-Mel-Oh/Testgelände' ||
        Seitenname == 'Fallstudie' ||
        Seitenname == 'Projekt_Diskussion:Gummistiefel') {
   mw.loader.using( ['jquery.ui.draggable'], function(){
  jQuery(document).ready(function(){
    jQuery( ".jstest" ).draggable({ stack: ".jstest" });
  });
});
 
}
 
// ================================================================================
// username template
 
/**
 * Username replace function ([[Vorlage:USERNAME]]) 
 * Inserts user name into <span id="insertusername"></span>
 * By [[wikia:User:Splarka|Splarka]]
 */
jQuery(document).ready(function(){
    if (typeof(disableUsernameReplace) != 'undefined' && disableUsernameReplace) return;
    if (!document.getElementById('pt-userpage'))    return;
 
    var spans = document.getElementsByTagName("span");
    for (var i=0; i<spans.length; i++) {
        var span    = spans[i];
        if (span.getAttribute('id') == "insertusername") {
            span.innerHTML  = wgUserName;
        }
    }
});
 
// ================================================================================
// FDP-Version & Zitierhilfe, nur mal so zum Spass...
if (NamensraumNr == 0 || NamensraumNr == 106) {
  jQuery(document).ready(function(addFDPVersion){
   var aZit = document.createElement("a");
   aZit.title = "Seite zitieren";
   aZit.href = mw.config.get( 'wgServer' ) + "/index.php/" + "Hilfe:Zitierhilfe";
   aZit.appendChild(document.createTextNode("Seite zitieren"));
 
   var aPDF = document.createElement("a");
   aPDF.title = "FDP-Version";
   aPDF.href = mw.config.get( 'wgServer' ) + "/index.php/" + "PDF?klapp=pdfgen";
   aPDF.appendChild(document.createTextNode("FDP-Version"));
 
   var LiZit = document.createElement("li");
   LiZit.style.whiteSpace = "nowrap";
   LiZit.id = "x-zitieren";
   LiZit.appendChild(aZit);
 
   var LiPDF = document.createElement("li");
   LiPDF.style.whiteSpace = "nowrap";
   LiPDF.id = "x-pdf";
   LiPDF.appendChild(aPDF);
 
   var ToolboxUl = document.getElementById("p-tb").getElementsByTagName("ul");
   ToolboxUl[0].appendChild(LiPDF);
   ToolboxUl[0].appendChild(LiZit);
 })
};
 
 
 
/* Artikel-Review-Autovervollständigungs-script */
if (NamensraumNr == 1 && Aktion == 'edit' && window.location.href.split('&')[2] == 'articlereview=true') {
     var hoecker  = '~~';
     templateCode = '{{Artikeltest\r'
                  + '| Humor/pkt 		=\r'
                  + '| Humor/txt 		=\r'
                  + '| Konzept/pkt 		=\r'
                  + '| Konzept/txt 		=\r'
                  + '| Formatierung/pkt	=\r'
                  + '| Formatierung/txt	=\r'
                  + '| Bilder/pkt 		=\r'
                  + '| Bilder/txt 		=\r'
                  + '| Gesamt/txt 		=\r'
                  + '| ' + hoecker + hoecker + '\r'
                  + '}}'
 
     window.onload = function() {
          var originalSource = document.getElementById('wpTextbox1').value;
          var newSource      = originalSource.replace(/\{\{Artikeltest\}\}/g, templateCode);
          document.getElementById('wpTextbox1').value = newSource;
     }
}
 
// externe links in neuem browser Fenster öffnen (nicht bei interwikis)
function externalWindow(){
    if ((typeof(disableLinkWindow) != 'undefined' && disableLinkWindow) || (!document.getElementById ('bodyContent'))) {
   return;
}
    var allinks = document.getElementById('bodyContent').getElementsByTagName('a');
    for(var i = 0; i < allinks.length; i++) {
        if(allinks[i].href.indexOf('' + wgServer +'/') == -1 && allinks[i].parentNode.className.indexOf('noblank') == -1){
            allinks[i].target = '_blank';
        }
    }
}
 
jQuery(document).ready(externalWindow);
 
//experimenteller HTML5-Player für die Datei-Seite //
jQuery(document).ready(function(){
   if ((mw.config.get( 'wgCanonicalNamespace' )=="File") && (Aktion == 'view') && (wgTitle.indexOf('.og') != -1) &&(!$.browser.msie)) {
     var isogg = true;
     var mtyp = wgTitle.substr((wgTitle.length)-3, 3);
     var $media = jQuery('#file.fullImageLink:first');
     var $mediaLink = $media.find('a');
     switch (mtyp) {
        case "ogg":
              var $mime = jQuery('<audio controls />').attr('src', $mediaLink.attr('href')).wrap('<div />');
              break;
        case "oga":
              var $mime = jQuery('<audio controls />').attr('src', $mediaLink.attr('href')).wrap('<div />');
              break;
        case "ogv":
              var $mime = jQuery('<video controls />').attr('src', $mediaLink.attr('href')).wrap('<div />');
              break;   
        default:
        isogg = false;
        break;
    } 
    if (isogg)  {
        var $info = jQuery('<div id="html5info" />').html('Der Player für diese Datei wird nur in oggfreundlichen<br />und HTML5fähigen Browsern angezeigt <a href="' + wgServer + '/index.php/Forum:Video-/_Audio-Player_(aktuelle_Infos_zu_OGG-Dateien)">(Info)</a>.<br />Alternativ die Datei halt herunterladen (Link direkt hier drunter)');
        $media.html($mime).append($info);
     }
   }
});
 
/* Funktionen zur Zeitsteuerung */
function dateFromServer () {
    return new Date(jQuery(jQuery(jQuery.ajax({
        url: "/api.php",
        data: {action:"parse", format:"xml", text:"{{#timel: m_d,_Y_H:i:s}}", prop:"text"},
        dataType: "xml",
        async: false,
        timeout: 300
    }).responseXML).find("api parse text").text()).text().replace(/[\s\n]/g, "").replace(/_/g," "));
}
 
function dateFromClient () {
    return new Date();
}
 
// Zeit vom wahlweise Server oder vom Client holen
 
var now = dateFromClient();
 
// oben: hohe Priorität, unten: niedrige Priorität
// Parameter: aktuelle Zeit als Date Objekt
// Rückgabewert: true zurückgeben, um weitere Aktionen zu unterbinden, sonst false
// Achtung: Monate werden ab 0 gezählt, Monatstage ab 1
var dateSpecificActions = [
	// cAPSLOCK dAY
	//function (d) {
	//	if ((d.getMonth() == 9 && d.getDate() == 22) ||
	//	    (d.getMonth() ==  5 && d.getDate() == 28) )
	//	{
	//		importJS("MediaWiki:Skin/dateSpecific/CAPSLOCK.js")
	//		return true;
	//	}
	//	return false;
	//}
];
 
for (var i=0; i<dateSpecificActions.length; i++)
{
    if (dateSpecificActions[i](now))
        break;
}
 
 /* Twütter Sönderzeichen-Füx vön Jüttstürnchen */
 //MW1.17 (raus, Twitter funzte eh nicht)
 if (Seitenname=="Spezial:Badtitle" && document.referrer != null && (document.referrer.indexOf("twitter.com") != -1 || document.referrer.indexOf("Forum:Twittern") != -1))
{
    location.href = unescape(location.href);
}
 
// Vorlage:DISPLAYTITLE
jQuery(document).ready(function () {
  var newTitle = jQuery("#title_replacement");
  if (newTitle.length && newTitle.length > 0)
  {
    jQuery("#firstHeading").text(newTitle.text());
  }
});
 
 
/* Warnung für Seite Kamelopedia:Das größte Schweinekamel */
if (Seitenname == "Kamelopedia:Das_größte_Schweinekamel" && (Aktion == "edit" || Aktion =="submit")) {
jQuery(document).ready(function(addSchwein){
   var tSchwein = document.createTextNode("Achtung, diese Seite ist purer Quatsch! Niemand hält dich für ein Schweinekamel. Per JavaScript bekommt jedes angemeldete Kamel seinen eigenen Namen auf dieser Seite angezeigt. Also nicht aufregen ;)");
 
   var DivSchwein = document.createElement("div");
   DivSchwein.style.fontSize = "130%";
   DivSchwein.style.fontWeight = "bold";
   DivSchwein.style.backgroundColor = "#FFD800";
   DivSchwein.style.padding = "15px";
   DivSchwein.appendChild(tSchwein);
 
   var warn = document.getElementById("firstHeading");
   warn.appendChild(DivSchwein);
 });
}
 
/* Skripte für autoconfirmed */
/* wegen Latenzen direkt hier rein, statt nachzuladen */
if ( jQuery.inArray( "autoconfirmed", wgUserGroups )  != -1 ) { 
 
/* MediaWiki:Seitenempfehlung.js */
/*
 * Version 2011-05-15.1 sollte halbwegs fehlerfrei funktionieren
 */
 
var hwList; // HatWas-Liste
var entry;
var subpath = '/Empfehlung';  // Name bzw. Pfad der Kamelbau-Unterseiten
 
// Es gibt KEINE Regeln bzgl. der persönlichen Empfehlungen, ein automatischer Daumen taucht jedoch nur auf
// Seiten auf, wo es auch potentiell lesenswertes Zeug geben tut
//
// HINWEIS an ---> DUFO <----
// FINGER WEG VON DEN NAMENSRÄUMEN, wehe, du nimmst da was raus
//
var hwNS = (typeof(hwNS) != 'undefined') ? hwNS : new Array ("", "Talk", "File", "Kamelionary", "Kamelobooks", "News", "Projekt", "Frage"); // hierhin die Namensräume, wo der Daumen auftauchen soll (Achtung! canonical namespaces!);
 
// Empfehlungsliste auslesen
function readHwList(username, action) {
  jQuery.ajax({
    url:     mw.config.get( 'wgScript' ), 
    data:    { title: "Kamel:" + username + subpath, action: "raw" },
    cache:   false,
    // Noch keine Empfehlungs-Seite angelegt
    error:   function()     { 
        hwList = new Array(); 
        switch (action) {
          case "add":
            adHW();
            break;
          case "remove":
            removeHW();
            break;
        }
    },
    // Empfehlungs-Seite auslesen
    success: function(data) { 
        hwList = data.match(/\[\[.*\]\]/g);
        switch (action) {
          case "add":
            adHW();
            break;
          case "remove":
            removeHW();
            break;
        }
    }
  });
}
 
// Seite zur Empfehlungsliste hinzufügen
function adHW() {
  // edit-Token holen
  jQuery.ajax({
    url:     '/api.php', 
    data:    { action: "query", prop: "info", intoken: "edit", titles: "Kamel:" + Kamelname + subpath, format: "xml" },
    cache:   false,
    success: function(data) { 
      var edittoken = data.getElementsByTagName('page')[0].getAttribute('edittoken');
      hwList.push(entry);          // Aktuelle Seite dazu
      hwList = sortHW(hwList); // Sortieren
      // Empfehlungsliste bearbeiten
      jQuery.ajax({
        url:     '/api.php',
        type:    'POST',
        cache:   false,
        data:    { action: "edit", title: "Kamel:" + Kamelname + subpath, text: "* " + hwList.join("\n* "), summary: "+ " + entry, token: edittoken },
        success: function(data) {
          var text = '<p>Die Seite „' + Seitenname.replace(/_/g, ' ') + '“ wurde zu deinen <a href="'
            + mw.config.get( 'wgScript' ) + '/Kamel:' + Kamelname + subpath + '">Empfehlungen</a> hinzugefügt.</p>';
          jQuery('#mw-js-message').html(text);
          jQuery('#mw-js-message').slideDown('fast');
        }
      })
    }
  });
}
 
function removeHW() {
  // edit-Token holen
  jQuery.ajax({
    url:     '/api.php', 
    data:    { action: "query", prop: "info", intoken: "edit", titles: "Kamel:" + Kamelname + subpath, format: "xml" },
    cache:   false,
    success: function(data) { 
      var edittoken = data.getElementsByTagName('page')[0].getAttribute('edittoken');
      var i = jQuery.inArray(entry, hwList);
      delete hwList[i];            // Aktuelle Seite wech
      hwList = sortHW(hwList); // Sortieren
      // Empfehlungsliste bearbeiten
      jQuery.ajax({
        url:     '/api.php',
        type:    'POST',
        cache:   false,
        data:    { action: "edit", title: "Kamel:" + Kamelname + subpath, text: "* " + hwList.join("\n* "), summary: "- " + entry, token: edittoken },
        success: function(data) {
          var text = '<p>Die Seite „' + Seitenname.replace(/_/g, ' ') + '“ wurde von deinen <a href="'
            + mw.config.get( 'wgScript' ) + '/Kamel:' + Kamelname + subpath + '">Empfehlungen</a> entfernt.</p>';
          jQuery('#mw-js-message').html(text);
          jQuery('#mw-js-message').slideDown('fast');
        }
      })
    }
  });
}
 
function showHW(username) {
  /* soll später html-Code für Empfehlungslisten ausspucken */
}
 
// doppelte & leere Einträge entfernen + alphabetisch sortieren
function sortHW(list) {
  var sorted = new Array();
  for(var i=0; i<list.length; i++){
    for(var j=i+1; j<list.length; j++){
      if (list[i] == list[j]) j = ++i;
    }
    if (typeof(list[i]) != 'undefined') sorted.push(list[i]);        
  }
  return sorted.sort();
}
 
// Das ganze starten
jQuery(document).ready(function() {
  //if(typeof(disableGaGA) != 'undefined' && disableGaGA) return;
  if(jQuery.inArray(mw.config.get( 'wgCanonicalNamespace' ), hwNS) != -1 && Aktion == "view") {
    entry = (mw.config.get( 'wgCanonicalNamespace' ) == "File") ? "[[:" + Seitenname.replace(/_/g, ' ') + "]]" 
                                             : "[[" + Seitenname.replace(/_/g, ' ') + "]]";
    jQuery('#p-views ul').append('<li class="icon"><span><a href="#"></a></span></li>');
    jQuery('#p-views li:last').ajaxComplete(function() {
      if(jQuery.inArray(entry, hwList) != -1) {
        jQuery(this).attr('id', 'ca-unhw');
        jQuery('#ca-unhw a').html('Entfehlen');
        jQuery('#ca-unhw a').attr('title', 'Seite nicht mehr empfehlen');
        jQuery('#ca-unhw a').unbind('click');
        jQuery('#ca-unhw a').bind('click', function() { readHwList(Kamelname, 'remove') });
      } else {
        jQuery(this).attr('id', 'ca-hw');
        jQuery('#ca-hw a').html('Empfehlen');
        jQuery('#ca-hw a').attr('title', 'Seite empfehlen');
        jQuery('#ca-hw a').unbind('click');
        jQuery('#ca-hw a').bind('click', function() { readHwList(Kamelname, 'add') });
      }
    });
    readHwList(Kamelname, false);
  }
})
 
/* MediaWiki:Group-autoconfirmed.js */
 
 /* Hinweis-text auf Empfehlungsseiten der Kamele */
 
if (NamensraumNr == 2 &&  Seitenname.indexOf ("/Empfehlung") != -1) {
    jQuery(document).ready(function(){ 
      var hinweis = 'Einträge auf dieser Liste werden normalerweise über den Empfehlungsdaumen hinzugefügt bzw. entfernt. <br />';
      hinweis += '<b>Wenn du diese Liste per Huf bearbeitest, beachte bitte folgendes:</b> <br />';
      hinweis += 'Außer einer reinen Liste von Seitenlinks darf auf dieser Seite kein weiterer Zauber (Design, sonstige Texte etc.) stehen, damit die Listen aller Kamele einfacher ausgewertet werden können.<br />';
      hinweis += 'Einträge sind ausschließlich im Format <br /><span style="font-family:monospace; font-weight:bold;">* [[Seite]]</span> <br /> vorzunehmen (bei Dateien zusätzlich einen Doppelpunkt vor Datei, also <span style="font-family:monospace; font-weight:bold;">* [[:Datei:Bild.jpg]]</span><br /><br />';
      hinweis += '<b>Siehe auch: <a href="/index.php?title=Kamelopedia:Empfehlungssystem" title="Kamelopedia:Empfehlungssystem">Kamelopedia-Empfehlungssystem</a>';
      // DIV basteln
      var DivHinweis = document.createElement("div");
      DivHinweis.style.backgroundColor = "#D1ECFF";
      DivHinweis.style.fontSize = "13px";
      DivHinweis.style.padding = "15px";
      DivHinweis.style.marginTop = "30px";
      DivHinweis.innerHTML = hinweis;
      // an ID firstHeading dranflanschen
      if (Aktion == "edit" || Aktion =="submit") {
        jQuery('#editform').before(DivHinweis);
        } else {
          jQuery('#catlinks').before(DivHinweis);
        }
    })   
 }
 
 /* Link zur eigenen Liste oben zm persönlichen Kram packen */
 
  mw.util.addPortletLink('p-personal', 'http://kamelopedia.net/index.php/Spezial:Mypage/Empfehlung', 'Empfehlungen', 'pt-empfehlung', 'meine Empfehlungen', '', '#pt-watchlist')
 
}; // end autoconfirmed