User:Nick1nildram/monobook.js

// add css and javascript links to personal toolbar function addTools { var myprefs = document.getElementById('pt-preferences'); var newpt; var newa;

var username = document.getElementById('pt-userpage').getElementsByTagName('a').item(0).firstChild.nodeValue; newpt = document.createElement('li'); newa = document.createElement('a'); newa.href='/w/index.php?title=User:' + username + '/monobook.css&action=edit'; newa.appendChild(document.createTextNode('css')); newpt.appendChild(newa); myprefs.parentNode.insertBefore(newpt, myprefs);

newpt = document.createElement('li'); newa = document.createElement('a'); newa.href='/w/index.php?title=User:' + username + '/monobook.js&action=edit'; newa.appendChild(document.createTextNode('js')); newpt.appendChild(newa); myprefs.parentNode.insertBefore(newpt, myprefs); }

// add "favourites" to navigation box function addToNav { var lastnav = document.getElementById('n-sitesupport'); var newnav; var newa;

newnav = document.createElement('li'); newa = document.createElement('a'); newa.href='/wiki/Wiktionary:Beer parlour'; newa.appendChild(document.createTextNode('Beer parlour')); newnav.appendChild(newa); lastnav.parentNode.appendChild(newnav);

newnav = document.createElement('li'); newa = document.createElement('a'); newa.href='/wiki/Wiktionary:Requested_articles'; newa.appendChild(document.createTextNode('Requests')); newnav.appendChild(newa);

newnav.appendChild(document.createTextNode(' '));

newa = document.createElement('a'); newa.href='/wiki/Category:Requested_articles'; newa.appendChild(document.createTextNode('(cat)')); newnav.appendChild(newa);

lastnav.parentNode.appendChild(newnav);

newnav = document.createElement('li'); newa = document.createElement('a'); newa.href='/wiki/Category:English words spelled with diacritics or ligatures'; newa.appendChild(document.createTextNode('Diacritics & ligatures')); newnav.appendChild(newa); lastnav.parentNode.appendChild(newnav);

newnav = document.createElement('li'); newa = document.createElement('a'); newa.href='/wiki/Category:English eponyms'; newa.appendChild(document.createTextNode('Eponyms')); newnav.appendChild(newa); lastnav.parentNode.appendChild(newnav);

newnav = document.createElement('li'); newa = document.createElement('a'); newa.href='/wiki/User:Hippietrail/Template/Pronunciation_section'; newa.appendChild(document.createTextNode('Pronunciation')); newnav.appendChild(newa); lastnav.parentNode.appendChild(newnav);

newnav = document.createElement('li'); newa = document.createElement('a'); newa.href='http://www.collins.co.uk/wordexchange/'; newa.className = 'external text'; newa.appendChild(document.createTextNode('Collins')); newnav.appendChild(newa); lastnav.parentNode.appendChild(newnav);

newnav = document.createElement('li'); newa = document.createElement('a'); newa.href='http://encarta.msn.com/encnet/features/dictionary/dictionaryhome.aspx'; newa.className = 'external text'; newa.appendChild(document.createTextNode('Encarta')); newnav.appendChild(newa); lastnav.parentNode.appendChild(newnav);

newnav = document.createElement('li'); newa = document.createElement('a'); newa.href='http://buscon.rae.es/diccionario/drae.htm'; newa.className = 'external text'; newa.appendChild(document.createTextNode('Real Academia')); newnav.appendChild(newa); lastnav.parentNode.appendChild(newnav);

//newnav = document.createElement('li'); //newnav.appendChild(document.createTextNode(hack_pagetitle)); //lastnav.parentNode.appendChild(newnav);

//newnav = document.createElement('li'); //newnav.appendChild(document.createTextNode(hack)); //lastnav.parentNode.appendChild(newnav); }

// add citations tab function addCiteTab { var currentpagetype = 'dunno'; var foundclass;

// get name of article var pagetitle = document.getElementById('p-cactions').getElementsByTagName('ul').item(0).getElementsByTagName('li').item(0).firstChild.href;

// http://en.wiktionary.org/wiki/underpaid if (pagetitle.search(/\/wiki\//) != -1) { pagetitle = pagetitle.replace(/^.*\/wiki\/(.*)/, "$1") // http://en.wiktionary.org/w/index.php?title=amado&action=edit } else if (pagetitle.search(/\/w\//) != -1) { pagetitle = pagetitle.replace(/^.*\/w\/index\.php\?title=(.*)\&action\=edit$/, "$1"); }

pagetitle = pagetitle.replace(/_/g, ' ');

// find the spot and add our new tab var talktabli = document.getElementById('ca-talk');

if (!talktabli) { currentpagetype = 'special'; } else { pagetitle = pagetitle.replace(/^Editing (.*?)( \(section\))?$/, "$1");

if (pagetitle.search(/\/Citations$/) != -1) { currentpagetype = 'cite'; } else if (pagetitle.search(/^Talk:/) != -1) { currentpagetype = 'talk'; } else if (pagetitle.search(/[:\/]/) != -1) { currentpagetype = 'other'; } else { currentpagetype = 'article'; } }  //hack_pagetitle = 'Title: ' + pagetitle; //hack = 'Type: ' + currentpagetype;

if (currentpagetype == 'article' || currentpagetype == 'talk' || currentpagetype == 'cite') {

var lookfor;

// look for link to cite page so we know if it's red or blue if (currentpagetype == 'article') { lookfor = pagetitle + '/Citations'; } else if (currentpagetype == 'cite') { lookfor = pagetitle.replace(/^(.*)\/Citations$/, "$1"); }

if (currentpagetype == 'article' || currentpagetype == 'cite') { var allas = document.getElementById('bodyContent').getElementsByTagName('a'); //hack = 'lookfor: ' + lookfor;

if (allas != -1) { for (var i = 0; i < allas.length; i++) { if (allas[i].title == lookfor) { foundclass = allas[i].className; break; }       }      }    }

// create the cite tab var citetabli = document.createElement('li'); citetabli.id = 'ca-cite';

var citetablink = document.createElement('a');

if (currentpagetype == 'article') { // citation page definitely doesn't exist if (foundclass == 'new') { citetablink.href = '/w/index.php?title=' + pagetitle + '/Citations&action=edit'; citetabli.className = 'new'; // citation page definitely exists } else if (foundclass == '') { citetablink.href = '/wiki/' + pagetitle + '/Citations'; // impossible to tell whether citation page exists } else { citetablink.href = '/wiki/' + pagetitle + '/Citations'; citetabli.className = 'dunno'; }

citetablink.appendChild(document.createTextNode('citations')); citetabli.appendChild(citetablink);

} else if (currentpagetype == 'cite') { // fix up the article tab // citation page definitely doesn't exist if (foundclass == 'new') { talktabli.previousSibling.firstChild.href = pagetitle.replace(/^(.*)\/Citations$/, "/w/index.php?title=$1&action=edit"); talktabli.previousSibling.className = 'new'; // citation page definitely exists } else if (foundclass == '') { talktabli.previousSibling.firstChild.href = pagetitle.replace(/^(.*)\/Citations$/, "\/wiki\/$1"); talktabli.previousSibling.className = ''; // impossible to tell whether citation page exists } else { citetablink.href = '/wiki/' + pagetitle + '/Citations'; talktabli.previousSibling.firstChild.href = pagetitle.replace(/^(.*)\/Citations$/, "\/wiki\/$1"); talktabli.previousSibling.className = 'dunno'; }

// fix up the talk tab talktabli.firstChild.href = pagetitle.replace(/^(.*)\/Citations$/, "\/wiki\/Talk:$1"); talktabli.className = 'dunno';

// build the cite tab var citetablink = document.createElement('a'); citetablink.href = pagetitle.replace(/^(.*)$/, "\/wiki\/$1");

citetablink.appendChild(document.createTextNode('citations')); citetabli.appendChild(citetablink); citetabli.className = 'selected';

} else if (currentpagetype == 'talk') { // build the cite tab var citetablink = document.createElement('a'); citetablink.href = pagetitle.replace(/^Talk:(.*)$/, "\/wiki\/$1\/Citations");

citetablink.appendChild(document.createTextNode('citations')); citetabli.appendChild(citetablink); citetabli.className = 'dunno'; }

// add the cite tab talktabli.parentNode.insertBefore(citetabli, talktabli.nextSibling); } }

// reparent the templates used list so it's in a div with an id for css to use // the offending elements are a br, text, and ul at offset +5,6,7 from the closest // previous id, which will be wpDiff or wpPreview function reparentTemplateList { if (document.getElementById('editpage-copywarn')) {

var closestid = document.getElementById('wpDiff'); if (!closestid) { closestid = document.getElementById('wpPreview'); }

var br = closestid.nextSibling.nextSibling.nextSibling.nextSibling.nextSibling; var txt = br.nextSibling; var ul = txt.nextSibling;

//hack = 'br=' + br.tagName + ', txt=' + txt.tagName + ', ul=' +ul.tagName;

// is there a template list section? if (br.tagName == 'BR' && txt.nodeType == 3 && ul.tagName == 'UL') {

var span = document.createElement('span'); span.id = 'templates-used';

// can we use surroundContents? if (document.getElementById && document.createRange) { //hack = '(firefox) ' + hack; var range = document.createRange; range.setStartBefore(br, 0); range.setEndBefore(document.getElementById('editpage-copywarn'));

range.surroundContents(span);

// no surroundContents - do it manually } else { var form = document.getElementById('editform'); //hack = '(msie) ' + hack; span.appendChild(br.cloneNode(false)); span.appendChild(txt.cloneNode(false)); span.appendChild(ul.cloneNode(true)); form.removeChild(br); form.removeChild(txt); ul.replaceNode(span); }   }  } }

function customiseMyPage { reparentTemplateList; addTools; addCiteTab; addToNav; }

var is_macmsie = false; //var hack = 'nothing special'; //var hack_pagetitle ='';

// none of this seems to work on Mac Internet Explorer 5 if (navigator.appName == "Microsoft Internet Explorer" && navigator.appVersion.indexOf("­Mac") != -1) is_macmsie = true;

if (is_macmsie != true) { if (window.addEventListener) window.addEventListener("load",customiseMyPage,false); else if (window.attachEvent) window.attachEvent("onload",customiseMyPage); }