User:Bob/script/hideyellowboxes.js

addOnloadHook(function{ if(wgNamespaceNumber > 0 && wgNamespaceNumber % 2 != 0) { // if we're on a talk page

/* do you want the templates to be collapsed on page load? */ var autocollapse = true;

var els = new Array; els['chick']   = "next($('contentSub'))"; els['modern']  = "next($('contentSub'))"; els['monobook'] = "next($('contentSub'))"; els['myskin']  = "next($('contentSub'))"; els['simple']  = "next($('contentSub'))"; els['standard']   = "next($('catlinks'))"; els['cologneblue'] = "next($('article').childNodes[1])"; els['nostalgia']  = "$('article').childNodes[0]";

var pageEl = eval(els[skin]);

while(pageEl.className.search(/catlinks|pagetitle|subtitle/i) != -1       || pageEl.id.search(/jump-to-nav|contentSub/i) != -1) { pageEl = next(pageEl); }

if (isYellowBox(pageEl)) { // if there's a yellow box at the beginning var tableIndex = 'YellowBoxes'; var collapseCaption = "hide"; var expandCaption = "show";

var table = document.createElement('table'); table.className = 'messagebox standard-talk collapsible collapsed'; table.style.background = 'transparent'; table.style.border = '1px solid #AAAAAA'; table.setAttribute( "id", "collapsibleTable" + tableIndex ); var headtr = table.insertRow(0); var header = document.createElement("th"); header.appendChild( document.createTextNode( "Talk page templates" ) ); header.style.textAlign = "center"; var bodytr = table.insertRow(1); var td = bodytr.insertCell(0); headtr.appendChild(header);

var Button    = document.createElement( "span" ); var ButtonLink = document.createElement( "a" ); var ButtonText = document.createTextNode( collapseCaption ); Button.style.styleFloat = "right"; Button.style.cssFloat = "right"; Button.style.fontWeight = "normal"; Button.style.textAlign = "right"; Button.style.width = "6em"; ButtonLink.style.color = header.style.color; ButtonLink.setAttribute( "id", "collapseButton" + tableIndex ); ButtonLink.setAttribute( "href", "javascript:collapseTable('" + tableIndex + "');" ); ButtonLink.appendChild( ButtonText ); Button.appendChild( document.createTextNode( "[" ) ); Button.appendChild( ButtonLink ); Button.appendChild( document.createTextNode( "]" ) ); header.insertBefore( Button, header.childNodes[0] );

pageEl.parentNode.insertBefore(table,pageEl); // insert our table var templates = new Array; while(isYellowBox(pageEl)) { // keep moving through the page until we run out of yellow boxes templates.push(pageEl); pageEl = next(pageEl); }

for (i = 0; i < templates.length; i++) { templates[i] = wrapInMessageBox(templates[i],td); // put the templates in our new table }

if(autocollapse) collapseTable('YellowBoxes'); // collapse the table } }

});

function isYellowBox(el) { if(el.className.search(/messagebox|standard-talk/i) != -1) return true; else return false; }

function wrapInMessageBox(el,wrapper) { var newEl = el.cloneNode(true); wrapper.appendChild(newEl); el.parentNode.removeChild(el); return newEl; }

function next(el) { el = el.nextSibling; while (el.nodeType != 1) { // fix for Firefox el = el.nextSibling; }   return el; }

function $ { var elements = new Array; for (var i = 0; i < arguments.length; i++) { var element = arguments[i]; if (typeof element == 'string') element = document.getElementById(element); if (arguments.length == 1) return element; elements.push(element); }	return elements; }