User:Ais523/highlightmyname.js

//This script (User:ais523/highlightmyname.js) highlights all instances of the

//logged-in user's username on pages by giving them a bright red background. It only

//checks bodyContent, not titles or sidebars.

//

function highlightmyname(n,p) //node, parent node

{

while(n!=null)

{

if(n.nodeType==3) //text node

{

if(n.data.toLowerCase().indexOf(mw.config.get('wgUserName').toLowerCase())!=-1)

{

var ix=n.data.toLowerCase().indexOf(mw.config.get('wgUserName').toLowerCase());

var t1=ix?document.createTextNode(n.data.substr(0,ix)):null;

var t2=document.createTextNode(n.data.substr(ix,mw.config.get('wgUserName').length));

var t3=ix+mw.config.get('wgUserName').length==n.data.length?null:

document.createTextNode(n.data.substr(ix+mw.config.get('wgUserName').length));

var s1=document.createElement("SPAN");

s1.style.backgroundColor="#FF0000";

s1.appendChild(t2);

var s2=document.createElement("SPAN");

if(t1!=null) s2.appendChild(t1);

s2.appendChild(s1);

if(t3!=null) s2.appendChild(t3);

p.replaceChild(s2,n);

if(t3!=null) highlightmyname(t3,s2); //find remaining occurences in the new nodes

n=s2.nextSibling;

}

else

n=n.nextSibling;

}

else

{

if(n.firstChild!=null) highlightmyname(n.firstChild,n);

n=n.nextSibling;

}

}

}

addOnloadHook(function() {

if(location.href.indexOf("?ais523")==-1&&location.href.indexOf("&ais523")==-1)

highlightmyname(document.getElementById('bodyContent').firstChild,

document.getElementById('bodyContent'));

});

//

//Category:Wikipedia scripts