summaryrefslogtreecommitdiff
path: root/lib/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'lib/scripts')
-rw-r--r--lib/scripts/events.js52
-rw-r--r--lib/scripts/script.js65
2 files changed, 94 insertions, 23 deletions
diff --git a/lib/scripts/events.js b/lib/scripts/events.js
index f6360219d..fb65b1bd7 100644
--- a/lib/scripts/events.js
+++ b/lib/scripts/events.js
@@ -59,4 +59,54 @@ fixEvent.preventDefault = function() {
};
fixEvent.stopPropagation = function() {
this.cancelBubble = true;
-}; \ No newline at end of file
+};
+
+
+/**
+ * Pseudo event handler to be fired after the DOM was parsed or
+ * on window load at last.
+ *
+ * @author based upon some code by Dean Edwards
+ * @author Andreas Gohr
+ * @see http://dean.edwards.name/weblog/2005/09/busted/
+ */
+window.fireoninit = function() {
+ // quit if this function has already been called
+ if (arguments.callee.done) return;
+ // flag this function so we don't do the same thing twice
+ arguments.callee.done = true;
+
+ if (typeof window.oninit == 'function') {
+ window.oninit();
+ }
+}
+
+/**
+ * This is a pseudo Event that will be fired by the above function
+ *
+ * Use addInitEvent to bind to this event!
+ *
+ * @author Andreas Gohr
+ */
+window.oninit = function() {
+}
+
+/**
+ * Bind a function to the window.init pseudo event
+ *
+ * @author Simon Willison
+ * @see http://simon.incutio.com/archive/2004/05/26/addLoadEvent
+ */
+function addInitEvent(func) {
+ var oldoninit = window.oninit;
+ if (typeof window.oninit != 'function') {
+ window.oninit = func;
+ } else {
+ window.oninit = function() {
+ oldoninit();
+ func();
+ };
+ }
+}
+
+
diff --git a/lib/scripts/script.js b/lib/scripts/script.js
index b91859265..d589aa0b4 100644
--- a/lib/scripts/script.js
+++ b/lib/scripts/script.js
@@ -98,6 +98,19 @@ function escapeQuotes(text) {
}
/**
+ * Adds a node as the first childenode to the given parent
+ *
+ * @see appendChild()
+ */
+function prependChild(parent,element) {
+ if(!parent.firstChild){
+ parent.appendChild(element);
+ }else{
+ parent.insertBefore(element,parent.firstChild);
+ }
+}
+
+/**
* Prints a animated gif to show the search is performed
*
* @author Andreas Gohr <andi@splitbrain.org>
@@ -143,37 +156,45 @@ function suggestWikiname(){
}
/**
- * This prints the switch to toggle the Table of Contents
+ * Adds the toggle switch to the TOC
*/
-function showTocToggle(showtxt,hidetxt) {
- if(document.getElementById) {
- show = '<img src="'+DOKU_BASE+'lib/images/arrow_down.gif" alt="'+showtxt+'">';
- hide = '<img src="'+DOKU_BASE+'lib/images/arrow_up.gif" alt="'+hidetxt+'">';
-
- document.writeln('<div class=\'toctoggle\'><a href="javascript:toggleToc()" class="toc">' +
- '<span id="showlink" style="display:none;">' + show + '</span>' +
- '<span id="hidelink">' + hide + '</span>' +
- '</a></div>');
- }
+function addTocToggle() {
+ if(!document.getElementById) return;
+ var header = document.getElementById('toc__header');
+ if(!header) return;
+
+ var showimg = document.createElement('img');
+ showimg.id = 'toc__show';
+ showimg.src = DOKU_BASE+'lib/images/arrow_down.gif';
+ showimg.alt = '+';
+ showimg.onclick = toggleToc;
+ showimg.style.display = 'none';
+
+ var hideimg = document.createElement('img');
+ hideimg.id = 'toc__hide';
+ hideimg.src = DOKU_BASE+'lib/images/arrow_up.gif';
+ hideimg.alt = '-';
+ hideimg.onclick = toggleToc;
+
+ prependChild(header,showimg);
+ prependChild(header,hideimg);
}
/**
* This toggles the visibility of the Table of Contents
*/
function toggleToc() {
- var toc = document.getElementById('tocinside');
- var showlink=document.getElementById('showlink');
- var hidelink=document.getElementById('hidelink');
+ var toc = document.getElementById('toc__inside');
+ var showimg = document.getElementById('toc__show');
+ var hideimg = document.getElementById('toc__hide');
if(toc.style.display == 'none') {
- toc.style.display = tocWas;
- hidelink.style.display='';
- showlink.style.display='none';
+ toc.style.display = '';
+ hideimg.style.display = '';
+ showimg.style.display = 'none';
} else {
- tocWas = toc.style.display;
- toc.style.display = 'none';
- hidelink.style.display='none';
- showlink.style.display='';
-
+ toc.style.display = 'none';
+ hideimg.style.display = 'none';
+ showimg.style.display = '';
}
}