function findFirstOf(text, characters){
for(var i = 0; i < text.length; ++i){
for(var j = 0; j < characters.length; ++j){
if(text[i] == characters[j]) return i;
}
}
return text.length;
}
function findLastOf(text, characters){
for(var i = text.length; i > 0; --i){
for(var j = 0; j < characters.length; ++j){
if(text[i-1] == characters[j]) return i-1;
}
}
return text.length;
}
function findFirstNotOf(text, characters){
for(var i = 0; i < text.length; ++i){
for(var j = 0; j < characters.length; ++j){
if(text[i] != characters[j]) return i;
}
}
return text.length;
}
function findLastNotOf(text, characters){
for(var i = text.length; i > 0; --i){
for(var j = 0; j < characters.length; ++j){
if(text[i-1] != characters[j]) return i-1;
}
}
return text.length;
}
function trim(text, characters){
var first = findFirstNotOf(text, characters);
var last = findLastNotOf(text, characters);
var length = last - first + (last == text.length ? 0 : 1);
return text.substr(first, length);
}
function wrapTitle(separators) {
if(wgAction != 'view' && wgAction != 'purge') return false;
var title = document.getElementById("firstHeading");
var saveTitle = title.firstChild.data;
while(title.hasChildNodes()){
title.removeChild(title.firstChild);
}
var littleTitle = document.createElement("span");
littleTitle.appendChild(document.createTextNode(saveTitle));
littleTitle.setAttribute("style", "font-size:50%");
// split title by all separators
var titleParts = new Array(saveTitle);
for(var i = 0; i < separators.length; ++i){
var newParts = new Array();
for(var j = 0; j < titleParts.length; ++j){
var newSubParts = titleParts[j].split(separators[i]);
for(var k = 0; k < newSubParts.length; ++k){
newParts.push(newSubParts[k]);
}
}
titleParts = newParts;
}
// trim all title parts
for(var i = 0; i < titleParts.length; ++i){
titleParts[i] = trim(titleParts[i], " \t\n");
}
title.appendChild(littleTitle);
for(var i = 0; i < titleParts.length; ++i){
title.appendChild(document.createElement("br"));
title.appendChild(document.createTextNode(titleParts[i]));
}
return true;
}
function createTopBox(){
var box = document.createElement("div");
box.setAttribute("style", "float:right;text-align:right;font-size:0.8em;");
var title = document.getElementById("firstHeading")
title.parentNode.insertBefore(box, title);
return box;
}
function addToBox(box, element){
if(box == null || element == null) return false;
var subBox = document.createElement("div");
if(typeof(element) == "object" && (element instanceof Array)){
if(element.length > 0) subBox.appendChild(element[0]);
for(var i = 1; i < element.length; ++i){
subBox.appendChild(document.createTextNode(", "));
subBox.appendChild(element[i]);
}
}else{
subBox.appendChild(element);
}
box.appendChild(subBox);
}
function createPurgeLink(){
if(wgAction != 'view' && wgAction != 'purge') return null;
var link = document.createElement("a");
link.appendChild(document.createTextNode("purge"));
link.setAttribute("href", mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=" + encodeURIComponent(mw.config.get('wgPageName')) + "&action=purge");
return link;
}
function createUserLinks(){
if(wgAction != 'view' && wgAction != 'purge') return null;
if(wgNamespaceNumber != 2 && wgNamespaceNumber != 3) return null;
var username = wgPageName.substring(findFirstOf(wgPageName, ":") + 1, wgPageName.length);
var separators = new Array("/", ":");
username = username.substring(0, findFirstOf(username, separators));
var userpage = document.createElement("a");
userpage.appendChild(document.createTextNode(username));
userpage.setAttribute("href", mw.config.get('wgServer') + mw.config.get('wgArticlePath').replace('$1', wgFormattedNamespaces[2] + ":" + encodeURIComponent(username)));
var usertalk = document.createElement("a");
usertalk.appendChild(document.createTextNode("Diskussion"));
usertalk.setAttribute("href", mw.config.get('wgServer') + mw.config.get('wgArticlePath').replace('$1', wgFormattedNamespaces[3] + ":" + encodeURIComponent(username)));
var contributions = document.createElement("a");
contributions.appendChild(document.createTextNode("Beiträge"));
contributions.setAttribute("href", mw.config.get('wgServer') + mw.config.get('wgArticlePath').replace('$1', wgFormattedNamespaces[-1] + ":" + "Beiträge" + "/" + encodeURIComponent(username)));
return new Array(userpage, usertalk, contributions);
}
function format_watchlists(){
if(wgNamespaceNumber != -1) return false;
$('li').each(function(index){
var elements = $(this).attr("class").split(" ");
var i;
for(i = 0; i < elements.length; ++i){
if(elements[i].substr(0, 10) == "watchlist-"){
$(this).addClass(elements[i].substr(0, 11))
}
}
});
return true;
}
function setup(){
var separators = new Array("/", ":");
wrapTitle(separators);
var box = createTopBox();
addToBox(box, createUserLinks());
addToBox(box, createPurgeLink());
format_watchlists();
}
$(setup);