User:Will Beback/Cologne Blue.js

addOnloadHook(function {    if (unescape(window.location.href).indexOf("Special:Watchlist") < 0) return;

// just one little ID attribute would be _so_ nice... var wlNotePara = document.getElementsByTagName('hr')[0]; while (wlNotePara && !(wlNotePara.nodeType == 1 && wlNotePara.tagName.toLowerCase == 'p')) wlNotePara = wlNotePara.nextSibling; if (!wlNotePara) return;

var nameSpaces = new Array ('Talk', 'User', 'User talk', 'Wikipedia', 'Wikipedia talk',                               'Image', 'Image talk', 'MediaWiki', 'MediaWiki talk',                                'Template', 'Template talk', 'Help', 'Help talk',                                'Category', 'Category talk', 'Portal', 'Portal talk'); var list = new Array ;

var prepareFilter = function { var nsRegexp = new RegExp ("^(" + nameSpaces.join("|") + "):");

var dates = document.getElementById('content').getElementsByTagName('h4'); for (var i = 0; i < dates.length; i++) {

var node = dates[i].nextSibling; while (node && node.nodeType != 1) node = node.nextSibling; if (!node) continue;

var sublist = new Array ; switch (node.tagName.toLowerCase) { case 'ul': // normal mode sublist = node.getElementsByTagName('li'); break;

case 'div': // enhanced mode var row = sublist[0] = document.createElement('span'); node.insertBefore(row, node.firstChild); var subnode; while (subnode = row.nextSibling) { row.appendChild(subnode); if (subnode.nodeType == 1 && subnode.tagName.toLowerCase == 'br') { var nextRow = document.createElement('span'); node.insertBefore(nextRow, row.nextSibling); row = sublist[sublist.length] = nextRow; }               }                break; }           for (var j = 0; j < sublist.length; j++) { var link = sublist[j].getElementsByTagName('a')[0]; if (!link) continue; var nsPrefix = nsRegexp.exec(link.title); nsPrefix = (nsPrefix ? nsPrefix[1] : "(Main)"); sublist[j].setAttribute('watchFilterNsPrefix', nsPrefix); list[list.length] = sublist[j]; }       }    };

var activateFilter = function { var nsPrefix = nsSelect.options[nsSelect.selectedIndex].value;

nsCheckbox.disabled = (nsPrefix == ""); var invert = (nsPrefix != "" && nsCheckbox.checked);

for (var i = 0; i < list.length; i++) { var show = (nsPrefix == "" || nsPrefix == list[i].getAttribute('watchFilterNsPrefix')); if (invert ? !show : show) list[i].className = list[i].className.replace(/(^|\s)hiddenStructure(\s|$)/, "$2"); else list[i].className = list[i].className.replace(/(?:(^|\s)hiddenStructure(\s|$)|$)/, " hiddenStructure$2"); }   };

var nsForm = document.createElement('form'); nsForm.style.display = 'inline'; nsForm.onsubmit = 'return false'; nsForm.appendChild(document.createTextNode('Namespace: '));

var nsSelect = document.createElement('select'); nsSelect.name = 'ns'; nsSelect.innerHTML += 'All \n'; nsSelect.innerHTML += '(Main) \n'; for (var i = 0; i < nameSpaces.length; i++) { nsSelect.innerHTML += '' + nameSpaces[i] + ' \n'; }   nsSelect.onchange = activateFilter; nsForm.appendChild(nsSelect);

var nsCheckboxLabel = document.createElement('label'); var nsCheckbox = document.createElement('input'); nsCheckbox.type = 'checkbox'; nsCheckbox.name = 'invert'; nsCheckbox.value = '1'; nsCheckbox.onclick = activateFilter; nsCheckboxLabel.appendChild(nsCheckbox); nsCheckboxLabel.appendChild(document.createTextNode(' Invert selection')); nsForm.appendChild(document.createTextNode(' ('));   nsForm.appendChild(nsCheckboxLabel);    nsForm.appendChild(document.createTextNode(') '));

wlNotePara.appendChild(document.createElement('br')); wlNotePara.appendChild(nsForm);

prepareFilter; activateFilter; });

// importScript('User:Smith609/reftool.js'); //importScript('User:Steve Crossin/revertall.js'); //Revert all script