Benutzer:Sweets/monobook.js

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Hinweis: Leere nach dem Veröffentlichen 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/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
  • Opera: Strg+F5
//Links in Titelleiste

var time = new Date();

var monthnames = new Array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");

var sites = new Array(
"Kategorie:Wikipedia:Schnelllöschen",
"Spezial:Newpages",
"Wikipedia:Ich brauche Hilfe",
"Wikipedia:Löschkandidaten/"+time.getDate()+". "+monthnames[time.getMonth()]+" "+(time.getYear()+((time.getYear() < 1900) ? 1900 : 0))
);

function insert()
{
 var link = "";
 var linktext = "";
 
 for (var i = 0; i < sites.length; i++)
 {
  var space = document.createTextNode(" | ");
  link = document.createElement("a");
  linktext = document.createTextNode(sites[i]);
  link.appendChild(linktext);
  link.setAttribute("href", "http://de.wikipedia.org/wiki/"+sites[i]);
  link.setAttribute("style", "text-decoration:none;color:brown");
  document.getElementById("contentTop").appendChild(space);
  document.getElementById("contentTop").appendChild(link);
 }
}

// Bausteinbox

/* Idee der he-Wikipedia, siehe dortige History fuer die Autoren */
var Templates = new Array (100); 
var CurlyBracket = "}"; 

Templates[9] = "'''''' bezeichnet\n*\n*\n";
Templates[10] = "";
Templates[11] = "\n{{Begriffsklärung}" + CurlyBracket;

Templates[19] = "{{Dieser Artikel|behandelt . Für weitere Bedeutungen siehe'' [[";
Templates[20] = "Name";
Templates[21] = " (Begriffsklärung)|]].}}";

Templates[29] = "#REDIRECT [[";
Templates[30] = "";
Templates[31] = "]]";

Templates[39] = "{{Personendaten|\n NAME=\n|ALTERNATIVNAMEN=\n|KURZBESCHREIBUNG=\n|GEBURTSDATUM=\n|GEBURTSORT=\n";
Templates[40] = "";
Templates[41] = "|STERBEDATUM=\n|STERBEORT=\n}" + CurlyBracket;

Templates[49] = "{{Subst:Löschantrag}" + CurlyBracket +"\n''";
Templates[50] = "";
Templates[51] = "'' --~~"+"~~\n----\n";

Templates[59] = "{{Löschen}" + CurlyBracket + "\n''";
Templates[60] = "";
Templates[61] = "'' --~~"+"~~\n----\n";

Templates[69] = "\n{{URV}" + CurlyBracket + " [http://";
Templates[70] = "www.beispiel.com";
Templates[71] = "] --~~"+"~~\n";

Templates[79] = "\n{{Neutralität}" + CurlyBracket;
Templates[80] = "";
Templates[81] = "\n";

Templates[89] = "\n[[Kategorie:";
Templates[90] = "";
Templates[91] = "]]";

function InsertTemplate(TemplateIndex)
{
 if (TemplateIndex>0) insertTags(Templates[TemplateIndex*10-1],Templates[TemplateIndex*10+1],Templates[TemplateIndex*10]);
};

function box() {
 document.getElementById("contentSub").innerHTML = '\nTextbaustein einfügen:\n<select name="x" style="vertical-align: baseline;float:right" onchange="InsertTemplate(this.selectedIndex);this.selectedIndex=0;this.focus();">\n    <option>Textbaustein auswählen...</option>\n    <option>Begriffsklärung</option>\n    <option>Begriffsklärung II</option>\n    <option>Weiterleitung</option>\n    <option>Personendaten</option>\n    <option>Löschantrag</option>\n    <option>Schnelllöschen</option>\n    <option>URV</option>\n    <option>Neutralität</option>\n    <option>Kategorie</option>\n</select>';
}

// Inhalts-Verbergefunktion

var hidetext = "verbergen";
var showtext = "zeigen";
var fol = null;

function showHideToggle() {
	if(document.getElementById) {
		var alldivs = document.getElementsByTagName("div");
		for (var i=0;i<alldivs.length;i++) {
			if (alldivs[i].className == "hide") {
				fol = alldivs[i].lastChild;
				fol.setAttribute("id", "hidebody"+i);
				fol = alldivs[i].firstChild;
				fol.innerHTML += '[<a href="javascript:toggleHide(' + i + ')" id="toggleLink'+i+'">' + hidetext + '</a>]';
			}
		}
	}
}

function toggleHide(hiden) {
	var hide = document.getElementById("hidebody" + hiden);
	var showhidelink = document.getElementById("toggleLink" + hiden);
	if(hide.style.display == 'none') {
		hide.style.display = 'inline';
		fol = showhidelink.firstChild;
		fol.nodeValue = hidetext;
	} else {
		hide.style.display = 'none';
		fol = showhidelink.firstChild;
		fol.nodeValue = showtext;
	}
}

// Tabellensortierung
var sortingOn = true; // set to false to deactivate sorting function

var num, order, oldtable = new Array(), numbering = new Array();

var texts = new Array();
texts['sortalphabetic'] = "nach Alphabet sortieren";
texts['sortnumeric'] = "numerisch sortieren";
texts['hidenumbering'] = "Nummerierung verbergen";
texts['shownumbering'] = "Nummerierung anzeigen";
texts['restoretable'] = "ursprüngliche Tabelle wiederherstellen";

var special = new Array();
special["ä"] = "a";
special["ö"] = "o";
special["ü"] = "u";
special["ß"] = "s";

var month = new Array();
month["Januar"] = "01";
month["Februar"] = "02";
month["März"] = "03";
month["April"] = "04";
month["Mai"] = "05";
month["Juni"] = "06";
month["Juli"] = "07";
month["August"] = "08";
month["September"] = "09";
month["Oktober"] = "10";
month["November"] = "11";
month["Dezember"] = "12";

function plain(text) {
 text = text.replace(/<[^>]*>/gi, "").replace(/\s+/gi, " ");

 if ((order == "123") || (order == "321")) {
  var monthnames = "";
  for (var mname in month) monthnames += mname + "|";
  var regex = RegExp("(\\d+)\\. (" + monthnames.substring(0, monthnames.length - 1) + ") (\\d*)", "");
  var match = regex.exec(text);
  if (match) {
   if (match[1].length == 1) match[1] = "0" + match[1];
   text = text.replace(match[0], match[3] + month[match[2]] + match[1]);
  }
 }

 text = text.toLowerCase();

 for (var rep in special) text = text.replace(RegExp(rep, "g"), special[rep]);

 text = text.replace(/\./g, "").replace(/,/g, ".").replace(/&nbsp;/g, " ").replace(/^ +/g, "").replace(/ +$/g, "");
 return text;
}

function getbgcolor(node) {
 var an = node;
 var bgc = 'transparent';
 while (bgc == 'transparent') {
  if (an.currentStyle) bgc = an.currentStyle.backgroundColor;
  else bgc = window.getComputedStyle(an, "").getPropertyValue('background-color');
  an = an.parentNode;
  }
  
 bgc.match(/rgb\((\d+), (\d+), (\d+)\)/);
 var r = parseInt(RegExp.$1);
 var g = parseInt(RegExp.$2);
 var b = parseInt(RegExp.$3);
 if ((r + g + b < 350) || ((r + g + 20) < b)) return 'rgb(220, 220, 220)';
 return 'rgb(0, 0, 255)';
}

function arrSort(a, b) {
 if ((order == '123') || (order == 'abc')) var s = 1;
 else if ((order == '321') || (order == 'cba')) var s = -1;

 var h1;
 var h2;
 if (a.childNodes[columnnum]) h1 = plain(a.childNodes[columnnum].innerHTML);
 else h1 = "";
 if (b.childNodes[columnnum]) h2 = plain(b.childNodes[columnnum].innerHTML);
 else h2 = "";

 if ((order == '123') || (order == '321')) {
  if ((isNaN(h1) == false) && (isNaN(h2) == false)) return (h2 - h1) * s;
  else if ((isNaN(h1) == true) && (isNaN(h2) == false)) return -1;
  else if ((isNaN(h1) == false) && (isNaN(h2) == true)) return 1;
 }

 if (h1 == h2) return 0;
 else if (h1 > h2) return -1 * s;
 else return 1 * s;
}

function sort(column, table, offset) {
 var revorder;
 if ((order == "abc") || (order == "cba")) {
  if (order == "abc") revorder = "cba";
  else revorder = "abc";

  var slinkabc = document.getElementById("changelinkabc_" + table + '_' + column + '_' + offset);
  slinkabc.setAttribute("href", 'javascript:order=\'' + revorder + '\';sort('+column+', '+table+', '+offset+')');
  slinkabc.removeChild(slinkabc.firstChild);
  slinkabc.appendChild(document.createTextNode(revorder));
 }
 else  if ((order == "123") || (order == "321")) {
  if (order == "123") revorder = "321";
  else revorder = "123";

  var slink321 = document.getElementById("changelink321_" + table + '_' + column + '_' + offset);
  slink321.setAttribute("href", 'javascript:order=\'' + revorder + '\';sort('+column+', '+table+', '+offset+')');
  slink321.removeChild(slink321.firstChild);
  slink321.appendChild(document.createTextNode(revorder));
 }

 columnnum = column + numbering[table];
 var ntable = document.getElementById("table" + table);
 var ntbody = ntable.lastChild;

 var nth, ntds = new Array();
 var ntrs = ntbody.childNodes;

 nth = ntrs[offset].cloneNode(true);
 i = 0;
 do {
 ntds[i] = ntrs[i + offset + 1].cloneNode(true);
 i++;
 } while ((i + offset + 1 < ntrs.length) && (ntrs[i + offset + 1].lastChild.tagName != "TH"));
 for (var j=offset;j<i + offset + 1;j++) ntbody.removeChild(ntrs[offset]);

 ntds.sort(arrSort);

 ntbody.insertBefore(nth, ntbody.childNodes[offset]);
 for (var j=0;j<i;j++) ntbody.insertBefore(ntds[j], ntbody.childNodes[offset + 1]);
}

function donumbering(table) {
 var ntable = document.getElementById("table" + table);

 var ntrs = ntable.lastChild.childNodes;
 var ntd, text, c = 1;

 if (numbering[table] == false) {
  numbering[table] = true;

  var st = document.getElementById("numberingstyle_" + table);
  var sttext = document.createTextNode(".donumbering_" + table + "{display:none}");
  st.appendChild(sttext);
  
  for (var i=0;i<ntrs.length;i++) {
   if ((ntrs[i].lastChild.tagName == "TH")) {
    ntd = document.createElement("th");
    ntd.style.verticalAlign = "top";
    var numlink = document.createElement("a");
    numlink.setAttribute("title", texts['hidenumbering']);
    numlink.setAttribute("href", "javascript:donumbering(" + table + ");");
    numlink.appendChild(document.createTextNode("->"));
    ntd.appendChild(numlink);
    c = 1;
   }
   else {
    ntd = document.createElement("td");
    ntd.style.verticalAlign = "top";
    ntd.innerHTML = c + ".";
    c++;
   }
   
   ntrs[i].insertBefore(ntd, ntrs[i].firstChild);
  }
 }
 else {
  numbering[table] = false;

  var st = document.getElementById("numberingstyle_" + table);
  var sttext = document.createTextNode(".donumbering_" + table + "{display:block}");
  st.appendChild(sttext);

  for (var i=0;i<ntrs.length;i++) ntrs[i].removeChild(ntrs[i].firstChild);
 }
}


// restores table on sorting delivered with HTML code
function restoreTable(table) {
 var ts = document.getElementsByTagName("table");
 ts[table].parentNode.replaceChild(oldtable[table].cloneNode(true), ts[table]);
 if (numbering[table] == true) {
  numbering[table] = false;
  var st = document.getElementById("numberingstyle_" + table);
  var sttext = document.createTextNode(".donumbering_" + table + "{display:block}");
  st.appendChild(sttext);
 }
}

// sets links for sorting and strips textnodes in Mozillas
function setSortLinks() {
 if (sortingOn == true) {
  var trs, inh = "", ths, th, tds, tr, col = 0, row = 0, ntbody, newtbody, bgc, sattr = "";
  
  var numstyle;
  var head = document.getElementsByTagName("HEAD")[0];
  
  var style = document.createElement("style");
  style.setAttribute( 'type', 'text/css');
  var styletext = document.createTextNode(".donumbering{position:relative;width:100%;}\n.restlinkcontainer{position:relative;width:100%;}\n.numberinglink{position:absolute;left:-25px;}\n.restorelink{position:absolute;left:-10px;}\n.sortlinkcontainer{position:relative;height:10px;width:100%;}\n.sortlinksup{font-size:smaller;position:absolute;top:0;right:0;}");
  style.appendChild(styletext);
  head.appendChild(style);
  
  var ts = document.getElementsByTagName("table");
  var numts = new Array(ts.length);
  
  for (var i=0;i<ts.length;i++) {
   if ((ts[i].className.indexOf("nosort") == -1) && (ts[i].id != "toc")) {
    numstyle = document.createElement("style");
    numstyle.setAttribute("id", "numberingstyle_" + i);
    head.appendChild(numstyle);

    ts[i].id = "table"+i;
    ntbody = ts[i].lastChild;
    newtbody = ntbody.cloneNode(false);
    trs = ntbody.childNodes;
    row = 0;
    for (var j=0;j<trs.length;j++) {
     if (trs[j].nodeType == 1) {
      tr = trs[j].cloneNode(false);
      if (trs[j].lastChild.tagName == "TH") {
       ths = trs[j].childNodes;
       col = 0;
       for (var k=0;k<ths.length;k++) {
        th = ths[k].cloneNode(true);
        if (th.nodeType == 1) {
         inh = plain(th.innerHTML);
         if ((th.className.indexOf("nosort") == -1) && (trs[j].className.indexOf("nosort") == -1) && (th.colSpan == 1) && (inh.length > 3) && (trs[j].childNodes.length > 2)) {
          th.style.verticalAlign = "top";
          
          sattr = getbgcolor(ths[k]);
          
          var div = document.createElement("div");
          div.setAttribute("class", "sortlinkcontainer");
          var sup = document.createElement("sup");
          sup.setAttribute("class", "sortlinksup");
          var slinkabc = document.createElement("a");
          slinkabc.setAttribute("href", 'javascript:order=\'abc\';sort('+col+', '+i+', '+row+')');
          slinkabc.setAttribute("title", texts['sortalphabetic']);
          slinkabc.setAttribute("style", "color:" + sattr);
          slinkabc.setAttribute("id", 'changelinkabc_'+i+'_'+col+'_'+row);
          slinkabc.appendChild(document.createTextNode("abc"));
          var slink321 = document.createElement("a");
          slink321.setAttribute("href", 'javascript:order=\'321\';sort('+col+', '+i+', '+row+')');
          slink321.setAttribute("title", texts['sortnumeric']);
          slink321.setAttribute("style", "color:" + sattr);
          slink321.setAttribute("id", 'changelink321_'+i+'_'+col+'_'+row);
          slink321.appendChild(document.createTextNode("321"));
          sup.appendChild(document.createTextNode("["));
          sup.appendChild(slinkabc);
          sup.appendChild(document.createTextNode("] [")); // be careful! space is nonbreaking
          sup.appendChild(slink321);
          sup.appendChild(document.createTextNode("]"));
          div.appendChild(sup);
          th.insertBefore(div, th.firstChild);
          
          numts[i] = true;
         }
         col += th.colSpan;
         
         tr.appendChild(th);
        }
       }
      }
      else {
       tds = trs[j].childNodes;
       for (var k=0;k<tds.length;k++) {
        if (tds[k].nodeType == 1) {
         tr.appendChild(tds[k].cloneNode(true));
        }
       }
      }    
      row++;
      newtbody.appendChild(tr);   
     }
    }
    ts[i].replaceChild(newtbody, ntbody);
   }
  }

  for (var i=0;i<ts.length;i++) {
   numbering[i] = false;
   if (numts[i] == true) {
    trs = ts[i].lastChild.childNodes;
    for (var j=0;j<trs.length;j++) {
     if ((trs[j].lastChild.tagName == "TH") && (trs[j].firstChild.colSpan == 1)) {
     
      var div = document.createElement("div");
      div.setAttribute("class", "donumbering donumbering_" + i);
      var numlink = document.createElement("a");
      numlink.setAttribute("title", texts['shownumbering']);
      numlink.setAttribute("class", "numberinglink");
      numlink.setAttribute("href", "javascript:donumbering(" + i + ");");
      numlink.appendChild(document.createTextNode("<-"));
      div.appendChild(numlink);
      var restlink = document.createElement("a");
      restlink.setAttribute("title", texts['restoretable']);
      restlink.setAttribute("class", "restorelink");
      restlink.setAttribute("href", "javascript:restoreTable(" + i + ");");
      restlink.appendChild(document.createTextNode("R"));
      rdiv = div.cloneNode(false);
      rdiv.setAttribute("class", "restlinkcontainer");
      rdiv.appendChild(restlink);

      trs[j].firstChild.insertBefore(div, trs[j].firstChild.firstChild);
      trs[j].firstChild.insertBefore(rdiv, trs[j].firstChild.firstChild);
      trs[j].firstChild.style.paddingLeft = "25px";
     }
    }
    oldtable[i] = ts[i].cloneNode(true);
   }
  }
 }
}

function getSchweiz() {
 var x = document.getElementsByTagName("html")[0].innerHTML;
 x = x.replace(/ß/, "ss");
}

// Funktionen starten

function start() {
 if (document.getElementById("editform") != null) box();
 insert();
 showHideToggle();
 setSortLinks();
 getSchweiz();
}
window.onload = start;