From 00540a38be97858e71163f53dddf8dee53185b1d Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sat, 10 Dec 2005 20:37:09 +0100 Subject: unobstrusive JS for TOC, better onload handling This path adds more unobstrusive JavaScript for the TOC handling. It also loads JavaScript initialiezers as soon as the DOM is parsed for Mozilla-based Browsers as described at http://dean.edwards.name/weblog/2005/09/busted/ - a IE solution was not chosen yet. darcs-hash:20051210193709-7ad00-771461e56d9661caf9ca733a6d617f009e24d0b7.gz --- lib/scripts/script.js | 65 ++++++++++++++++++++++++++++++++++----------------- 1 file changed, 43 insertions(+), 22 deletions(-) (limited to 'lib/scripts/script.js') 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 @@ -97,6 +97,19 @@ function escapeQuotes(text) { return 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 * @@ -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 = ''+showtxt+''; - hide = ''+hidetxt+''; - - document.writeln('
' + - '' + - '' + hide + '' + - '
'); - } +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 = ''; } } -- cgit v1.2.3