User:BsBsBs/monobook.js

/* Note: After saving, you have to bypass your browser's cache to see the changes. To do this in Firefox/Mozilla/Safari: hold down Shift while clicking Reload, or press Ctrl-Shift-R). If you use Internet Explorer: press Ctrl-F5, Opera/Konqueror: press F5.   ==AzaToth's reversion tools ==  */ // importScript('User:AzaToth/twinkle.js');   /*  ==WikEd, replaces Firefox's text edit window ==  */   // install User:Cacycle/wikEd in-browser text editor document.write(' ');   /*  ==Lupin's anti-vandal tools ==  */     // Script from User:Lupin/recent2.js document.write('');   /*  ==Popups==  */ /* User:Lupin/popups.js */   document.write(' ');   /**/ /*  == Watchlist sorter ==  Sorts your watchlist by namespace, and also adds spaces for readability. */  addOnloadHook(function {  if (location.href.indexOf('Special:Watchlist') == -1) return; //Are we on a watchlist?  //days = document.getElementById('bodyContent').getElementsByTagName('ul');  days = document.evaluate( //Hell knows how it works - found in "Dive into Greasemonkey"    "//ul[@class='special']",    document,    null,    XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,    null);  for (d = 0; d < days.snapshotLength; d++) { //For each day    day = days.snapshotItem(d);    newday = document.createElement('ul'); //This will replace the old listing    while ((diffs = day.getElementsByTagName('li')).length > 0) { //Are there any diffs left?      //Try to extract the namespace      As = diffs[0].getElementsByTagName('a');      if (As[0].innerHTML == 'diff')        pagename = As[2].innerHTML;      else        pagename = As[1].innerHTML;      if (pagename.indexOf(':') == -1)        namespace = 'Main';      else        namespace = pagename.split(':')[0]; //This will fail for articles which contain ":" in name      hdrs = newday.getElementsByTagName('h5'); //Get the list of namespace headers      hdr = null;      for (j=0; j<hdrs.length; j++) //Find the header        if (hdrs[j].innerHTML==namespace) {          hdr = hdrs[j]; break;        }      if (hdr==null) { //Not found? Make a new one! hdr = document.createElement('h5');       hdr.innerHTML = namespace;        newday.appendChild(hdr);        namespacesub = document.createElement('ul');        newday.appendChild(namespacesub);      }      hdr.nextSibling.appendChild(diffs[0]); //Move the diff    }    newday.appendChild(document.createElement('hr')); //For readablility    day.parentNode.replaceChild(newday,day);  } });