]> sipb.mit.edu Git - ikiwiki.git/blobdiff - underlays/javascript/toggle.js
Add an underlay for javascript, and add ikiwiki.js containing some utility code.
[ikiwiki.git] / underlays / javascript / toggle.js
diff --git a/underlays/javascript/toggle.js b/underlays/javascript/toggle.js
new file mode 100644 (file)
index 0000000..d190b73
--- /dev/null
@@ -0,0 +1,29 @@
+// Uses CSS to hide toggleables, to avoid any flashing on page load. The
+// CSS is only emitted after it tests that it's going to be able
+// to show the toggleables.
+if (document.getElementById && document.getElementsByTagName && document.createTextNode) {
+       document.write('<style type="text/css">div.toggleable { display: none; }</style>');
+       hook("onload", inittoggle);
+}
+
+function inittoggle() {
+       var as = getElementsByClass('toggle');
+       for (var i = 0; i < as.length; i++) {
+               var id = as[i].href.match(/#(\w.+)/)[1];
+               if (document.getElementById(id).className == "toggleable")
+                       document.getElementById(id).style.display="none";
+               as[i].onclick = function() {
+                       toggle(this);
+                       return false;
+               }
+       }
+}
+
+function toggle(s) {
+       var id = s.href.match(/#(\w.+)/)[1];
+       style = document.getElementById(id).style;
+       if (style.display == "none")
+               style.display = "block";
+       else
+               style.display = "none";
+}