User:Phlip/cologneblue.js
From Homestar Runner Wiki
Note: After saving, you may have to bypass your browser's cache to see the changes.
- Mozilla / Firefox: hold down Shift while clicking Reload, or press Ctrl-Shift-R (Cmd-Shift-R on Apple Mac)
- Safari: press Cmd-Option-E
- IE: hold Ctrl while clicking Refresh, or press Ctrl-F5
- Konqueror: simply click the Reload button, or press F5
- Opera users may need to completely clear their cache in Tools→Preferences.
function getChildType(node,childtype,index)
{
/*
var c = node.childNodes;
childtype = childtype.toLowerCase();
for (var i = 0; i < c.length; i++)
{
if (c[i].tagName && childtype == c[i].tagName.toLowerCase())
{
index--;
if (index <= 0) return c[i];
}
}
return null;
*/
a = node.getElementsByTagName(childtype);
if (a.length >= index)
return a[index - 1];
else
return null;
}
function dostuff()
{
///////////////////////
// Add a "Validate link to the sidebar
///////////////////////
// find the print footer, it has a canonical page URL in it
// DON'T use window.location, as it can have tags like ?action=edit and things which will mess us up
var a = document.getElementsByTagName('DIV');
var pageUrl = ""
for (var i = 0; i < a.length; i++)
{
if (a[i].className == "printfooter")
{
b = getChildType(a[i], "P", 1);
if (b) b = getChildType(b, "A", 1);
if (b)
pageUrl = b.href;
}
}
// create the validation link
a = document.getElementById('quickbar');
if (a)
{
link = document.createElement('a');
link.href = "http://validator.w3.org/check?uri=" + escape(pageUrl);
a.appendChild(link);
a.appendChild(document.createElement('br'));
link.appendChild(document.createTextNode('Validate '));
img = document.createElement('img');
img.src = "/skins/monobook/external.png";
link.appendChild(img);
}
///////////////////////
// Add links to the content page and the talk page in the top bar
///////////////////////
pageName = pageUrl.substr(32); // "http://www.hrwiki.org/index.php/".length == 32
i = pageName.indexOf(':');
if (i < 0)
{
namespace = '';
talknamespace = 'Talk:';
istalk = 0;
}
else
{
namespace = pageName.substring(0,i+1);
pageName = pageName.substring(i+1);
if (namespace == 'Talk:')
{
namespace = '';
talknamespace = 'Talk:';
istalk = 1;
}
else if (namespace.substring(namespace.length - 6) == '_talk:')
{
talknamespace = namespace;
namespace = namespace.substring(0,namespace.length - 6) + ':';
istalk = 1;
}
else
{
talknamespace = namespace.substring(0,namespace.length - 1) + '_talk:';
istalk = 0;
}
}
where = document.getElementById('langlinks');
before = where.getElementsByTagName('br');
before = before[before.length - 1];
before = before.nextSibling;
a = document.createElement('a');
a.href = 'http://www.hrwiki.org/index.php/' + namespace + pageName;
a.appendChild(document.createTextNode('page'));
if (!istalk) a.style.fontWeight = 'bolder';
where.insertBefore(a, before);
where.insertBefore(document.createTextNode(' | '), before);
a = document.createElement('a');
a.href = 'http://www.hrwiki.org/index.php/' + talknamespace + pageName;
a.appendChild(document.createTextNode('talk'));
if (istalk) a.style.fontWeight = 'bolder';
where.insertBefore(a, before);
where.insertBefore(document.createTextNode(' | '), before);
///////////////////////
// Add Show Logs and Count Edits on user pages
///////////////////////
// find the "Email user" link
quickbar = document.getElementById('quickbar');
if (quickbar)
{
emailuser = 0;
for (i = 0; i < quickbar.childNodes.length; i++)
{
if (quickbar.childNodes[i].tagName == "A")
{
if (quickbar.childNodes[i].href.indexOf("Special:Emailuser") >= 0)
{
emailuser = quickbar.childNodes[i];
break;
}
}
}
if (emailuser)
{
// we're looking at a userpage - get the username
a = emailuser.href;
i = a.indexOf("Special:Emailuser");
username = a.substr(i+25);
a = document.createElement('a');
a.href="/index.php/Special:Log?user="+username;
a.appendChild(document.createTextNode('Show Logs (user)'));
emailuser.parentNode.insertBefore(a, emailuser);
emailuser.parentNode.insertBefore(document.createElement('br'), emailuser);
a = document.createElement('a');
a.href="/index.php/Special:Log?page=User:"+username;
a.appendChild(document.createTextNode('Show Logs (target)'));
emailuser.parentNode.insertBefore(a, emailuser);
emailuser.parentNode.insertBefore(document.createElement('br'), emailuser);
a = document.createElement('a');
a.href="/index.php/Special:Countedits/"+username;
a.appendChild(document.createTextNode('Count edits'));
emailuser.parentNode.insertBefore(a, emailuser);
emailuser.parentNode.insertBefore(document.createElement('br'), emailuser);
}
}
///////////////////////
// Add "You have new messages" box if I do indeed have new messages
///////////////////////
// find the "My talk" link
quickbar = document.getElementById('quickbar');
if (quickbar)
{
talklink = 0;
for (i = 0; i < quickbar.childNodes.length; i++)
{
if (quickbar.childNodes[i].tagName == "A")
{
if (quickbar.childNodes[i].href.match(/User_talk:Phlip$/))
{
talklink = quickbar.childNodes[i];
break;
}
}
}
if (talklink)
{
// check if I have a message
// nodeType 3 is "Text node" (nodeType 1 is "Element node")
if (talklink.nextSibling.nodeType == 3 && talklink.nextSibling.nodeValue.indexOf('*') >= 0)
{
div = document.createElement("div")
div.className = "newmessagesbox"; // intentionally not "usermessages" - take that, fake message boxes!
div.appendChild(document.createTextNode("You have "));
a = document.createElement("a")
a.href = "http://www.hrwiki.org/index.php/User_talk:Phlip";
a.appendChild(document.createTextNode("new messages"));
div.appendChild(a);
div.appendChild(document.createTextNode(" ("));
a = document.createElement("a")
a.href = "http://www.hrwiki.org/index.php/User_talk:Phlip?action=history";
a.appendChild(document.createTextNode("history"));
div.appendChild(a);
div.appendChild(document.createTextNode(")."));
article = document.getElementById('article');
article.parentNode.insertBefore(div, article);
}
}
}
}
// these two lines stolen from [[User:Tom/monobook.js]]
if (window.addEventListener) window.addEventListener("load",dostuff,false);
else if (window.attachEvent) window.attachEvent("onload",dostuff);
