User:Cryptic/spoiler.js

// var hide_spoilers_initially = window.hide_spoilers_initially || false; var hide_endspoiler_tag = window.hide_endspoiler_tag || false; var spoiler_num = 0;

function spoiler_toggle(num) { var contents = document.getElementById('spoilercontents_' + num); var lk = document.getElementById('spoilerlk_' + num); if (!contents || !lk) return; if (contents.style.display == 'none') {     contents.style.display = ''; lk.replaceChild(document.createTextNode('hide'), lk.firstChild); } else {     contents.style.display = 'none'; lk.replaceChild(document.createTextNode('show'), lk.firstChild); } }

function setup_spoilers { var divs = document.getElementsByTagName('div'); var hide_initially = hide_spoilers_initially && !/(\?title=|\/wiki\/)(Talk|User|Wikipedia|Image|MediaWiki|Template|Help|Category|Portal)(_talk)?:/.test(window.location.href);

for (var i = 0; i < divs.length; ++i) {     var node = divs[i]; if (node.id != 'spoiler') continue;

++spoiler_num;

var lk = document.createElement('a'); lk.setAttribute('href', 'javascript:spoiler_toggle(' + spoiler_num + ')'); lk.appendChild(document.createTextNode(hide_initially ? 'show' : 'hide')); lk.id = 'spoilerlk_' + spoiler_num; lk.className = 'spoilertoggle';

node.appendChild(document.createTextNode(' [')); node.appendChild(lk); node.appendChild(document.createTextNode(']'));

var contents = document.createElement('div'); contents.className = 'spoilercontents'; contents.id = 'spoilercontents_' + spoiler_num; if (hide_initially) contents.style.display = 'none';

var depth = 0; while (depth >= 0) {         var n = node.nextSibling; if (!n) break;

if (n.id == 'spoiler') ++depth; else if (n.className && n.className.indexOf('endspoiler') >= 0                  && --depth < 0 && !hide_endspoiler_tag) break;

n.parentNode.removeChild(n); contents.appendChild(n); }

if (node.nextSibling) node.parentNode.insertBefore(contents, node.nextSibling); else node.parentNode.appendChild(contents); } }

addOnloadHook(setup_spoilers); //