User:Korath/Spoiler.js

From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
function hide_spoilerbox(num)
{
  document.getElementById("spoilercontents_" + num).style.display="none";
  var lk = document.getElementById("spoilerlk_" + num);
  lk.replaceChild(document.createTextNode("show"), lk.firstChild);
  lk.setAttribute("href", "javascript:show_spoilerbox(" + num + ")");
}

function show_spoilerbox(num)
{
  document.getElementById("spoilercontents_" + num).style.display="";
  var lk = document.getElementById("spoilerlk_" + num);
  lk.replaceChild(document.createTextNode("hide"), lk.firstChild);
  lk.setAttribute("href", "javascript:hide_spoilerbox(" + num + ")");
}

function setup_spoilerbox(initial)
{
  var divs = document.getElementsByTagName("div");
  var box;
  var contents;
  var lk;
  var txt;
  if (divs && document.getElementById)
    for (var x = 0; x < divs.length; ++x)
      if (divs[x].className.indexOf("spoilerbox") != -1)
	{
	  box = divs[x].getElementsByTagName("table")[0].getElementsByTagName("tr");
	  contents = box[1];
	  contents.id = "spoilercontents_" + x;
	  box = box[0].getElementsByTagName("td")[0].getElementsByTagName("div")[0];
	  var lk = document.createElement('a');
	  if (initial)
	    {
	      lk.setAttribute("href", "javascript:hide_spoilerbox(" + x + ")");
	      lk.appendChild(document.createTextNode("hide"));
	    }
	  else
	    {
	      lk.setAttribute("href", "javascript:show_spoilerbox(" + x + ")");
	      lk.appendChild(document.createTextNode("show"));
	      contents.style.display="none";
	    }
	  lk.id = "spoilerlk_" + x;
	  box.appendChild(document.createTextNode(" ["));
	  box.appendChild(lk);
	  box.appendChild(document.createTextNode("]"));
	}
}

function load_spoilerbox()
{
  // use setup_spoilerbox(false) instead to hide spoiler boxes by default
  setup_spoilerbox(true);
}

if (window.addEventListener) 
  window.addEventListener("load", load_spoilerbox, false);
else if (window.attachEvent) 
  window.attachEvent("onload", load_spoilerbox);