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
  • Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
// var document, XMLHttpRequest, ActiveXObject, addOnloadHook, wgUserName, wgPageName, wgNamespaceNumber, wgTitle, cTBWL_Screenreader;
// http://www.jslint.com/


/*
* Project:  Toolbar Watchlist, Version: 0.2.0beta, Date: 2007-09-25
* Copyright (C) 2007 [[de:User:Revolus]] (revolus@web.de)
* http://www.gnu.org/copyleft/gpl.html
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
	
Licence:
	You may redistribute this script either under the terms of the GNU GPL
	or GNU FDL with no invariant sections. But either way, you have to
	accept the non-warranty clause as stated in the GNU GPL.
*/


/////////////////////////////////////////////////////////////
// libTBWL.js
////////////////////////////////////////////////////////////


var cTBWL_Title_Page = wgPageName+" - Wikipedia";
var vTBWL_Addons = [];
if(typeof(cTBWL_Screenreader) === "undefined") { var cTBWL_Screenreader = false; }

var vTBWL_Headline = false;
var vTBWL_Special_Content = false;

var TBWL_LinkTitle = function(ns, title) {
	return title;
	};
	
var TBWL_UserTitle = function(name) {
	return name;
	};
	
var TBWL_WikiEncodeURI = function(str) {
	var elm = /([\x23|\x24|\x26|\x2B|\x2C|\x2F|\x3A|\x3B|\x3D|\x3F|\x40])/g;
	var callback = function(a, b) {
		var res = b.charCodeAt(0).toString(16).toUpperCase();
		if(res.length<2) { res = "0"+res; }
		return "%"+res;
		};
	return encodeURI(str).replace(elm, callback).replace(/\x22/g, "%22").replace(/\\/g, "%5C");
	};
	
var TBWL_WikiEncodeAnchor = function(str) {
	var elm = /([\x23|\x26|\x2B|\x2C|\x2F|\x3B|\x3D|\x3F|\x40])/g;
	var callback = function(a, b) {
		var res = b.charCodeAt(0).toString(16).toUpperCase();
		if(res.length<2) { res = "0"+res; }
		return "%"+res;
		};
	return encodeURI(str.replace(/ /g, "_")).replace(elm, callback).replace(/\x22/g, "%22").replace(/\\/g, "%5C").replace(/%/g, ".");
	};
	
var TBWL_CommentTitle = function(depth, res, str, ns, title) {
	var pattern = /(.*?)\/\* ?(.*?) ?\*\//g;
	var callback = function(a, Text, Section) {
		TBWL_CommentTitle.doText(depth, res, Text, ns, title);
		TBWL_CommentTitle.doSection(depth, res, Section, ns, title);
		};
	(str+"/**/").replace(pattern, callback);
	};
	
TBWL_CommentTitle.doLink = function(depth, res, text, ns, title) {
	if(!text) { return; }
	var pattern = /^([^\x23\x7c]*)\x23?([^\x7c]*)\x7c?(.*)$/;
	var callback = function(a, Link, Abs, Text) {
		if(Abs === "") {
			if(Text === "") { Text = Link; } // Text
			res.push(depth, ["WPLink", "", "", Link, Text, "", "", ""],
				depth+1, ["SetAttribute", "title", Link]); // Link|Text
			}
		else {
			if(Text === "") { Text = Link+"#"+Abs; } // Link#Abs
			res.push(depth, ["WPLink", "", "", Link, Text, "", "", Abs],
				depth+1, ["SetAttribute", "title", Link+"#"+Abs]); // Link#Abs|Text
			}
		};
	text.replace(pattern, callback);
	};
	
TBWL_CommentTitle.doText = function(depth, res, text, ns, title) {
	if(!text) { return; }
	var pattern = /(.*?)\[\[(.*?)\]\]/g;
	var callback = function(a, Text, Link) {
		res.push(depth, ["Text", Text, ""]);
		TBWL_CommentTitle.doLink(depth, res, Link, ns, title);
		};
	(text+"[[]]").replace(pattern, callback);
	};
	
TBWL_CommentTitle.doSection = function(depth, res, text, ns, title) {
	if(!text) { return; }
	var pattern = /\[\[\.*?|(.*?)\]\]|\[\[(.*?)\]\]/g;
	text = text.replace(pattern, "$1");
	res.push(
		depth, ["Node", "span", "TBWL_SectionLink"],
			depth+1, ["Text", " /* ", ""],
			depth+1, ["WPLink", "", "", title, text, "", "", text],
				depth+2, ["SetAttribute", "title", title+"#"+text],
			depth+1, ["Text", " */ ", ""]);
	};
	
var TBWL_GetAjaxObject = function() {
	var res;
	if((typeof(XMLHttpRequest) === "function") && (res = new XMLHttpRequest())) { return res; }
	if(typeof(ActiveXObject) === "function") {
		var MsAjax = ["MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];
		for(var i=0; i<MsAjax.length; i++) {
			try { if((res = new ActiveXObject(MsAjax[i]))) { return res; } }
			catch(e) {}
			}
		}
	return false;
	};
	
var TBWL_Cookie = {
	"Read": (function(name) {
		var arr = document.cookie.split(';');
		for(var i=0; i<arr.length; i++) {
			var b = true;
			var c;
			var aName = [];
			var aText = arr[i].split('');
			var cName = name.split('');
			while((c = aText.shift()) === ' ') {}
			do {
				aName.push(c);
				if(c !== cName.shift()) { b = false; break; }
				} while('=' !== (c = aText.shift()));
			if(b && (cName.length===0)) { return aText.join(""); }
			}
		return false;
		}),
	"Write": (function(name, value, expires) {
		expires = new Date((new Date()).getTime() + expires).toGMTString();
		document.cookie = name +"="+ value +"; expires="+ expires +";";
		}),
	"Delete": (function(name) {
		document.cookie = name+ "=; expires=Thu, 01-Jan-70 00:00:01 GMT;";
		})
	};
	
var TBWL_CreateElement = {
	"generic": (function(/* func, [...] */) {
		var a = [];
		for(var i=1; i<arguments.length; i++) { a.push(arguments[i]); }
		var res = TBWL_CreateElement[arguments[0]].apply(this, a);
		if(typeof(res) === "object") { this.appendChild(res); }
		return res;
		}),
		
	"Node": (function(tag, className) {
		var res = document.createElement(tag);
		res.className = className;
		res.app = TBWL_CreateElement.generic;
		return res;
		}),
		
	"Text": (function(text, className) {
		var res = TBWL_CreateElement.Node("span", className);
		res.appendChild((typeof(text) === "string") ?document.createTextNode(text) :text);
		return res;
		}),
		
	"Space": (function() {
		this.appendChild(document.createTextNode(" "));
		}),
		
	"Link": (function(text, href, className) {
		var res = TBWL_CreateElement.Node("a", "");
		res.appendChild((typeof(text) === "string") ?document.createTextNode(text) :text);
		res.setAttribute("href", href);
		return TBWL_CreateElement.Text(res, className);
		}),
		
	"WPLink": (function(server, ns, title, text, data, className, anchor) {
		if(server === "") { server = "/w/"; }
		if(ns !== "") { title = ns +':'+ title; }
		var href = "/w/index.php?title=" +TBWL_WikiEncodeURI(title.replace(/ /g, "_"));
		if(data !== "") { href += "&"+data; }
		if(anchor !== "") { href += "#" + TBWL_WikiEncodeAnchor(anchor.replace(/ /g, "_")).replace(/%/g, "."); }
		return TBWL_CreateElement.Link(text, href, className);
		}),
		
	"AddClass": (function(className) {
		if(className !== "") {
			var s = this.getAttribute("class");
			return(this.className = (s === "" ?"" :s+" ") + className);
			}
		return className;
		}),
		
	"SetAttribute": (function(name, value) {
		return this.setAttribute(name, value);
		}),
 
	"AddNode": (function(obj) {
		if(!obj) { return obj; }
		return this.appendChild((typeof(obj)==="string") ?document.createTextNode(obj) :obj);
		})
	};
	
var TBWL_StructureToHMTL = function(container, arr) {
	if(!arr) { return false; }
	var index = 0;
	var e;
	var iter = function(container) {
		var depth = arr[index];
		while(true) {
			if(typeof(e = arr[index+1]) === "undefined") { return; }
			var i = arr[index+2];
			var elem = e && container && TBWL_CreateElement.generic.apply(container, e);
			index += 2;
			switch(i - depth) {
				case 1: iter(elem); continue;
				case 0: continue;
				default: return;
				}
			}
		};
	iter(container);
	return container;
	};
	
var TBWL_SetHeadline = function(str) {
	vTBWL_Headline.replaceChild(TBWL_CreateElement.Text(str, "TBWL_H1"), vTBWL_Headline.firstChild);
	};
	
var TBWL_Replace_Special = function(obj) {
	vTBWL_Special_Content = vTBWL_Special_Content.parentNode.replaceChild(obj, vTBWL_Special_Content);
	};
	
var TBWL_Inititalize_Replace_Special = function() {
	TBWL_Inititalize_Replace_Special = function() {};
	
	var e = document.getElementById("bodyContent");
	var f = e.getElementsByTagName("p");
	e.removeChild(f[1]);
	vTBWL_Special_Content = f[0];
	};
	
var TBWL_CallArrayFunctions = function(/* funcs, [...] */) {
	var funcs = arguments[0];
	var a = [];
	for(var i=1; i<arguments.length; i++) {
		a.push(arguments[i]);
		}
	for(i=0; i<funcs.length; i++) {
		funcs[i].apply(this, a);
		}
	};
	
var TBWL_Initialize = function() {
	document.getElementById("pt-watchlist").firstChild.setAttribute("href", "/wiki/Special:TBWL");
	vTBWL_Headline = document.getElementsByTagName("h1")[0];
	TBWL_CallArrayFunctions(vTBWL_Addons);
	};
 
addOnloadHook((function() {
	TBWL_Initialize();
	}));
	
	
/////////////////////////////////////////////////////////////
// tbwlAjax.js
/////////////////////////////////////////////////////////////


var cTBWL_SynchronJAX = false;
var vTBWL_AjaxCallback = [];

var TBWL_AjaxCallback = function(req, callbacks, correctAnswer, usefullEdits) {
	TBWL_CallArrayFunctions(callbacks, req.readyState);
	if(req.readyState === 4) {
		if(req.status === 200) {
			var rsp = eval("("+req.responseText+")");
			if((rsp = correctAnswer(rsp))) {
				rsp = usefullEdits(rsp);
				TBWL_CallArrayFunctions(callbacks, rsp[0], rsp[1], rsp[2]);
				}
			else { TBWL_CallArrayFunctions(callbacks, false); }
			}
		else { TBWL_CallArrayFunctions(callbacks, req.status); }
		}
	};
	
var TBWL_Request = function(req, callbacks, correctAnswer, usefullEdits, what) {
	var callback = function() {
		TBWL_AjaxCallback(req, callbacks, correctAnswer, usefullEdits);
		};
	req.open("GET", what, !cTBWL_SynchronJAX);
	req.onreadystatechange = callback;
	req.send("rand1=" +String(Math.random())+ "&rand2=" +String(Math.random()));
	};
	
	
/////////////////////////////////////////////////////////////
// tbwlPage.js
/////////////////////////////////////////////////////////////


var cTBWL_UsefullDelta = (new Date()).getTime() - 7 * 24 * 3600000;
var vTBWL_Page_Ajax = false;
var cTBWL_Page_Request = mw.config.get('wgServer')+mw.config.get('wgScriptPath')+"/api.php?action=query&list=watchlist&wllimit=500&wlprop=user|title|ids|flags|comment|timestamp|sizes&format=json";
var vTBWL_Page_Date = "";

var TBWL_Page_Structure = function(obj, p, index) {
	var difflen = obj.newlen-obj.oldlen;
	var aDate = p("Date") + '.' + p("Month") + '.' + p("FullYear");
	var aTime = p("Hours") + ':' + p("Minutes") + ':' + p("Seconds");
	var res = [
		0, ["Text", aDate, "TBWL_date"+(vTBWL_Page_Date===aDate ?" TBWL_same_date" :'') ],
		0, ["Space"],
		0, ["Node", "span", "TBWL_entry"],
			1, ["WPLink", "", "", obj.title, TBWL_LinkTitle(obj.ns, obj.title), "", "TBWL_title", ""],
			1, ["Text", " .. ", "TBWL_delim"],
			1, ["WPLink", "", "User", obj.user, TBWL_UserTitle(obj.user), "", "TBWL_user", ""],
			1, ["Text", " .. ", "TBWL_delim"],
			1, ["WPLink", "", "", obj.title, aTime, "diff=prev&oldid="+obj.revid, "TBWL_time", ""],
			1, ["Text", " .. ", "TBWL_delim"],
			1, ["Node", "span", "TBWL_len"],
				2, ["Text", String(obj.oldlen)+" ", "TBWL_oldlen"],
				2, ["Text", String(obj.newlen)+" ", "TBWL_newlen"],
				2, (difflen>  0) && ["Text", "+"+String(difflen),           "TBWL_difflen TBWL_diffplus"],
				2, (difflen===0) && ["Text",     String(difflen),           "TBWL_difflen TBWL_diffequal"],
				2, (difflen<  0) && ["Text", "−"+String(Math.abs(difflen)), "TBWL_difflen TBWL_diffminus"],
			1, ["Space"],
			1, ["Node", "span", "TBWL_flags"],
				2, (typeof(obj.bot)    !== "undefined") && ["Text", "B", "TBWL_bot"],
					3, ["SetAttribute", "title", "Bot-Edit"],
				2, (typeof(obj["new"]) !== "undefined") && ["Text", "N", "TBWL_new"],
					3, ["SetAttribute", "title", "kleiner Edit"],
				2, (typeof(obj.minor)  !== "undefined") && ["Text", "K", "TBWL_minor"],
					3, ["SetAttribute", "title", "Seite neu angelegt"],
			1, ["Text", " .. ", "TBWL_delim"],
			1, ["Node", "span", "TBWL_comment"]
		];
	TBWL_CommentTitle(2, res, obj.comment||"ohne Kommentar", obj.ns, obj.title);
	vTBWL_Page_Date = aDate;
	return res;
	};
	
var TBWL_Page_CorrectAnswer = function(obj) {
	return (("undefined" !== typeof(obj)) &&
		("undefined" !== typeof(obj.query)) &&
		("undefined" !== typeof(obj.query.watchlist)) &&
		(obj.query.watchlist.length>0)) ?obj.query.watchlist :false;
	};
	
var TBWL_Page_UsefullEdits = function(obj) {
	var res = [[], [], []]; // Alle, usefull, !usefull
	for(var i=0; i<obj.length; i++) {
		var t = /(....)-(..)-(..)T(..):(..):(..)Z/.exec(obj[i].timestamp);
		res[2][i] = obj[i];
		res[2][i].index = i;
		var d = new Date(Number(t[1]), Number(t[2])-1, Number(t[3]), Number(t[4]), Number(t[5]), Number(t[6]));
		d.setTime(d.getTime() - d.getTimezoneOffset()*60000);
		res[2][i].date = d;
		if((res[2][i].usefull = TBWL_Page_UsefullEdits.UsefullEdit(res[2][i]))) { res[0].push(res[2][i]); }
		else { res[1].push(res[2][i]); }
		}
	return res;
	};
	
TBWL_Page_UsefullEdits.UsefullEdit = function(obj) {
	return (wgUserName !== obj.user) && (obj.date.getTime() > cTBWL_UsefullDelta);
	};
	
var TBWL_Page_EntryWrapper = function(obj, index) {
	var res = TBWL_CreateElement.Node("li", "TBWL_entry");
	res.app("AddClass", "TBWL_entry_" + (index%2 === 0 ?"even" :"odd"));
	res.app("AddClass", "TBWL_entry_"+ String(index%3) +"mod3");
	res.app("AddClass", "TBWL_entry_"+ String(index));
	return res;
	};
	
var TBWL_Page_ItemToHTML = function(obj, index) {
	var res = TBWL_Page_EntryWrapper(obj, index);
	if((typeof(obj.bot)==="undefined") && (typeof(obj["new"])==="undefined") && (typeof(obj.minor)==="undefined")) {
		res.app("AddClass", "TBWL_noflags");
		}
	if((typeof(obj.comment) === "undefined") || (obj.comment === "")) {
		res.app("AddClass", "TBWL_nocomment");
		}
	var p = function(n) {
		var i = obj.date["get"+n]();
		return(i<10 ?"0"+String(i) :String(i));
		};
	TBWL_StructureToHMTL(res, TBWL_Page_Structure(obj, p, index));
	return res;
	};
	
var TBWL_Page_ItemsToHTML = function(obj) {
	var res = TBWL_CreateElement.Node("ol", "");
	res.id = "TBWL_entries";
	for(var i=0; i<obj.length; i++) {
		res.appendChild(TBWL_Page_ItemToHTML(obj[i], i));
		}
	return res;
	};
	
var TBWL_AjaxCallback_Page = function(obj) {
	switch(typeof obj) {
		case "number" : switch(obj) {
			case(1): TBWL_SetHeadline("(1) Anfrage wird gesendet…", "TBWL_H1"); break;
			case(2): TBWL_SetHeadline("(2) Warte auf Antwort…", "TBWL_H1"); break;
			case(3): TBWL_SetHeadline("(3) Erhalte Anwort…", "TBWL_H1"); break;
			case(4): TBWL_SetHeadline("Verbesserte Beobachtungsliste", "TBWL_H1"); break;
			
			case(0): TBWL_Replace_Special(TBWL_CreateElement.Text("Die Beobachtungsliste enthält keine Einträge", "")); break;
			default: TBWL_Replace_Special(TBWL_CreateElement.Text("Fehler-Nummer: "+String(obj), "")); break;
			} break;
		case "number" : if(obj>=100) { TBWL_Replace_Special(TBWL_CreateElement.Text(obj, "TBWL_HTTP")); } break;
		case "boolean": TBWL_Replace_Special(TBWL_CreateElement.Text("Fehlerhafte Antwort", "TBWL_WrongAnswer")); break;
		case "object" : TBWL_Replace_Special(TBWL_Page_ItemsToHTML(obj)); break;
		}
	};
	
var TBWL_Initialize_Page = function() {
	document.title = cTBWL_Title_Page;
	
	vTBWL_Page_Ajax = TBWL_GetAjaxObject();
	if(vTBWL_Page_Ajax) {
		document.title = cTBWL_Title_Page;
		TBWL_SetHeadline("(0) Initialisiere…", "TBWL_H1");
		TBWL_Request((vTBWL_Page_Ajax = TBWL_GetAjaxObject()), vTBWL_AjaxCallback, TBWL_Page_CorrectAnswer, TBWL_Page_UsefullEdits, cTBWL_Page_Request);
		}
	else {
		TBWL_SetHeadline("Fehlgeschlagen, kein Ajax-Objekt", "TBWL_H1");
		}
	};
	
if((wgNamespaceNumber === -1) && (wgTitle === "TBWL")) {
	vTBWL_Addons.unshift(TBWL_Initialize_Page);
	vTBWL_AjaxCallback.push(TBWL_AjaxCallback_Page);
	vTBWL_Addons.unshift(TBWL_Inititalize_Replace_Special);
	}


/////////////////////////////////////////////////////////////
// tbwlHistory.js
/////////////////////////////////////////////////////////////
	
	
var vTBWL_History_AjaxCallback = [];
var cTBWL_History_Request = mw.config.get('wgServer')+mw.config.get('wgScriptPath')+"/api.php?action=query&prop=revisions&rvprop=ids|flags|timestamp|user|size|comment&rvlimit=50&format=json&titles=";
var vTBWL_Hist_Date = "";

var TBWL_Hist_Structure = function(obj, p, index) {
	var difflen = obj.newlen-obj.oldlen;
	var aDate = p("Date") + '.' + p("Month") + '.' + p("FullYear");
	var aTime = p("Hours") + ':' + p("Minutes") + ':' + p("Seconds");
	var res = [
		0, ["Node", "span", "TBWL_comment"]
		];
	TBWL_CommentTitle(2, res, obj.comment||"ohne Kommentar", obj.ns, obj.title);
	vTBWL_Hist_Date = aDate;
	return res;
	};
	
var TBWL_Hist_CorrectAnswer = function(obj) {
	if("undefined" === typeof(obj)) { return false; }
	if("undefined" === typeof(obj.pages)) { return false; }
	for(var e in obj) { obj = obj[e]; break; }
	return ("undefined" !== typeof(obj.revisions)) && (obj.revisions.length>0) && obj.revisions;
	};
	
var TBWL_Hist_UsefullEdits = function(obj) {
	var res = [[], [], []]; // Alle, usefull, !usefull
	for(var i=0; i<obj.length; i++) {
		var t = /(....)-(..)-(..)T(..):(..):(..)Z/.exec(obj[i].timestamp);
		res[2][i] = obj[i];
		res[2][i].index = i;
		var d = new Date(Number(t[1]), Number(t[2])-1, Number(t[3]), Number(t[4]), Number(t[5]), Number(t[6]));
		d.setTime(d.getTime() - d.getTimezoneOffset()*60000);
		res[2][i].date = d;
		if((res[2][i].usefull = TBWL_Hist_UsefullEdits.UsefullEdit(res[2][i]))) { res[0].push(res[2][i]); }
		else { res[1].push(res[2][i]); }
		}
	return res;
	};
	
TBWL_Hist_UsefullEdits.UsefullEdit = function(obj) {
	return true;
	};
	
var TBWL_Hist_EntryWrapper = function(obj, index) {
	var res = TBWL_CreateElement.Node("li", "TBWL_entry");
	res.app("AddClass", "TBWL_entry_" + (index%2 === 0 ?"even" :"odd"));
	res.app("AddClass", "TBWL_entry_"+ String(index%3) +"mod3");
	res.app("AddClass", "TBWL_entry_"+ String(index));
	return res;
	};
	
var TBWL_Hist_ItemToHTML = function(obj, index) {
	var res = TBWL_Hist_EntryWrapper(obj, index);
	if((typeof(obj.bot)==="undefined") && (typeof(obj["new"])==="undefined") && (typeof(obj.minor)==="undefined")) {
		res.app("AddClass", "TBWL_noflags");
		}
	if((typeof(obj.comment) === "undefined") || (obj.comment === "")) {
		res.app("AddClass", "TBWL_nocomment");
		}
	var p = function(n) {
		var i = obj.date["get"+n]();
		return(i<10 ?"0"+String(i) :String(i));
		};
	TBWL_StructureToHMTL(res, TBWL_Hist_Structure(obj, p, index));
	return res;
	};
	
var TBWL_Hist_ItemsToHTML = function(obj) {
	var res = TBWL_CreateElement.Node("ol", "");
	res.id = "TBWL_entries";
	for(var i=0; i<obj.length; i++) {
		res.appendChild(TBWL_Hist_ItemToHTML(obj[i], i));
		}
	return res;
	};
	
var TBWL_AjaxCallback_History = function(obj) {
	switch(typeof obj) {
		case "number" : switch(obj) {
			case(1): TBWL_SetHeadline("(1) Anfrage wird gesendet…", "TBWL_H1"); break;
			case(2): TBWL_SetHeadline("(2) Warte auf Antwort…", "TBWL_H1"); break;
			case(3): TBWL_SetHeadline("(3) Erhalte Anwort…", "TBWL_H1"); break;
			case(4): TBWL_SetHeadline("Verbesserte Beobachtungsliste", "TBWL_H1"); break;
			
			case(0): TBWL_Replace_Special(TBWL_CreateElement.Text("Die Versionsgeschichte enthält keine Einträge", "")); break;
			default: TBWL_Replace_Special(TBWL_CreateElement.Text("Fehler-Nummer: "+String(obj)), ""); break;
			} break;
		case "number" : if(obj>=100) { TBWL_Watchlist_Status(TBWL_CreateElement.Text(obj, "TBWL_HTTP")); } break;
		case "boolean": TBWL_Replace_Special(TBWL_CreateElement.Text("Fehlerhafte Antwort", "TBWL_WrongAnswer")); break;
		case "object" : TBWL_Replace_Special(TBWL_Hist_ItemsToHTML(obj)); break;
		}
	};
	
var TBWL_Initialize_History = function() {
	document.title = cTBWL_Title_Page;
	
	vTBWL_Page_Ajax = TBWL_GetAjaxObject();
	if(vTBWL_Page_Ajax) {
		document.title = cTBWL_Title_Page;
		TBWL_SetHeadline("(0) Initialisiere…", "TBWL_H1");
		TBWL_Request((vTBWL_Page_Ajax = TBWL_GetAjaxObject()), vTBWL_AjaxCallback, TBWL_Page_CorrectAnswer, TBWL_Page_UsefullEdits, cTBWL_Page_Request);
		}
	else {
		TBWL_SetHeadline("Fehlgeschlagen, kein Ajax-Objekt", "TBWL_H1");
		}
	};
	
if((wgNamespaceNumber === -1) && (wgTitle === "HISTORY")) {
	vTBWL_Addons.unshift(TBWL_Initialize_History);
	vTBWL_Addons.unshift(TBWL_Inititalize_Replace_Special);
	vTBWL_AjaxCallback.push(TBWL_AjaxCallback_History);
	}


/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////


if(cTBWL_Screenreader) {
	cTBWL_SynchronJAX = true; // (A)JAX-Aufrufe sychron: Blockierender Aufruf für Screenreader; scheint wirkungslos zu sein...
	
	/////////////////////////////////////////////////////////////
	// tbwlPageSR.js
	/////////////////////////////////////////////////////////////
	
	TBWL_Page_Structure = function(obj, p, index) {
		var difflen = obj.newlen-obj.oldlen;
		var aDate = p("Date") + '.' + p("Month") + '.' + p("FullYear");
		var aTime = p("Hours") + ':' + p("Minutes");
		var res = [
			0, ["Node", "span", "TBWL_entry"],
				1, (aDate !== vTBWL_Page_Date) && ["Node", "h3", ""],
					2, ["Text", aDate, "TBWL_date"],
				1, ["Node", "h4", ""],
					2, ["WPLink", "", "", obj.title, TBWL_LinkTitle(obj.ns, obj.title), "", "TBWL_title", ""],
				1, ["WPLink", "", "", obj.title, aTime, "oldid="+obj.revid, "TBWL_time", ""],
				1, ["Space"],
				1, ["WPLink", "", "User", obj.user, TBWL_UserTitle(obj.user), "", "TBWL_user", ""],
				1, ["Space"],
				1, ["Node", "span", "TBWL_flags"],
					2, (typeof(obj.bot)    !== "undefined") && ["Text", "B", "TBWL_bot"],
					2, (typeof(obj["new"]) !== "undefined") && ["Text", "N", "TBWL_new"],
					2, (typeof(obj.minor)  !== "undefined") && ["Text", "K", "TBWL_minor"],
				1, ["Space"],
				1, ["Node", "span", "TBWL_len"],
					2, ["Text", String(obj.oldlen)+" ", "TBWL_oldlen"],
					2, ["Text", String(obj.newlen)+" ", "TBWL_newlen"],
					2, (difflen > 0) && ["Text", "+"+String(difflen),           "TBWL_difflen TBWL_diffplus"],
					2, (difflen===0) && ["Text",     String(difflen),           "TBWL_difflen TBWL_diffequal"],
					2, (difflen < 0) && ["Text", "−"+String(Math.abs(difflen)), "TBWL_difflen TBWL_diffminus"],
				1, ["Space"],
				1, ["Text", "Bytes", ""],
				1, ["Space"],
				1, ["Node", "span", "TBWL_comment"]
			];
		if(typeof(obj.comment) === "string") { TBWL_CommentTitle(2, res, obj.comment, obj.ns, obj.title); }
		res.push(
				1, ["Space"],
				1, ["WPLink", "", "", obj.title, "Unterschied", "diff=prev&oldid="+obj.revid, "TBWL_diff", ""],
				1, ["Space"],
				1, ["WPLink", "", "", obj.title, "Versionen", "action=history", "TBWL_history", ""],
				1, ["Space"],
				1, ["WPLink", "", "", "Special:Contributions", "Beiträge", "contribs=user&target="+encodeURIComponent(obj.user), "TBWL_contributions", ""]
				);
		vTBWL_Page_Date = aDate;
		return res;
		};
		
	TBWL_CommentTitle.doSection = function(depth, res, text, ns, title) {
		if(!text) { return; }
		var pattern = /\[\[\.*?|(.*?)\]\]|\[\[(.*?)\]\]/g;
		text = text.replace(pattern, "$1");
		res.push(
			depth, ["Node", "span", "TBWL_SectionLink"],
				depth+1, ["WPLink", "", "", title, "#", "", "", text],
					depth+2, ["Text", text, ""],
					depth+2, ["SetAttribute", "title", title+"#"+text]);
		};
		
	TBWL_Page_ItemsToHTML = function(obj) {
		var res = TBWL_CreateElement.Node("ul", "");
		res.id = "TBWL_entries";
		for(var i=0; i<obj.length; i++) {
			res.appendChild(TBWL_Page_ItemToHTML(obj[i], i));
			}
		return res;
		};
	/////////////////////////////////////////////////////////////
	// tbwlJAWS.js
	/////////////////////////////////////////////////////////////
	
	var TBWL_AjaxCallback_JawsHack = function(obj) {
		if(typeof(obj) !== "object") { return; }
		var e = document.getElementById("searchInput");
		if(!e) { return; }
		var s = e.value;
		e.value = String(Math.random());
		window.setTimeout((function() {
			e.value = s;
			}), 100);
		};
	 
	vTBWL_AjaxCallback.push(TBWL_AjaxCallback_JawsHack);
	}