diff --git a/lib/exe/js.php b/lib/exe/js.php
index 720e34577b64b1e2f5cc3b84342a783a593cd42e..308c1b5347a1c138f4cd651ca0e0541b33922ea1 100644
--- a/lib/exe/js.php
+++ b/lib/exe/js.php
@@ -107,7 +107,6 @@ function js_out(){
 
     // init stuff
     js_runonstart("addEvent(document,'click',closePopups)");
-    js_runonstart('addTocToggle()');
     js_runonstart("initToolbar('tool__bar','wiki__text',toolbar)");
     if($conf['locktime'] != 0){
         js_runonstart("locktimer.init(".($conf['locktime'] - 60).",'".js_escape($lang['willexpire'])."',".$conf['usedraft'].", 'wiki__text')");
diff --git a/lib/scripts/behaviour.js b/lib/scripts/behaviour.js
index 7cc65579ef0c959b893efd34407c40e012c2aa89..db9dbacc2bb5b01556a4a84851bab4148311cd6d 100644
--- a/lib/scripts/behaviour.js
+++ b/lib/scripts/behaviour.js
@@ -17,6 +17,7 @@ var dw_behaviour = {
         dw_behaviour.removeHighlightOnClick();
         dw_behaviour.quickSelect();
         dw_behaviour.checkWindowsShares();
+        dw_behaviour.initTocToggle();
     },
 
     /**
@@ -89,6 +90,36 @@ var dw_behaviour = {
         jQuery('a.windows').live('click', function(){
             alert(LANG.nosmblinks);
         });
+    },
+
+    /**
+     * Adds the toggle switch to the TOC
+     */
+    initTocToggle: function() {
+        var $header = jQuery('#toc__header');
+        if(!$header.length) return;
+        var $toc    = jQuery('#toc__inside');
+
+        var $clicky = jQuery(document.createElement('span'))
+                        .attr('id','toc__toggle')
+                        .css('cursor','pointer')
+                        .click(function(){
+                            $toc.slideToggle();
+                            setClicky();
+                        });
+        $header.prepend($clicky);
+
+        var setClicky = function(){
+            if($toc.css('display') == 'none'){
+                $clicky.html('<span>+</span>');
+                $clicky[0].className = 'toc_open';
+            }else{
+                $clicky.html('<span>&minus;</span>');
+                $clicky[0].className = 'toc_close';
+            }
+        };
+
+        setClicky();
     }
 
 };
diff --git a/lib/scripts/script.js b/lib/scripts/script.js
index f5d76d27ca6dca878d814b0ad614b9b274681aec..e3216177c142cdd9b6bd6f8880915a956653607f 100644
--- a/lib/scripts/script.js
+++ b/lib/scripts/script.js
@@ -193,47 +193,6 @@ function hideLoadBar(id){
   if(obj) obj.style.display="none";
 }
 
-/**
- * Adds the toggle switch to the TOC
- */
-function addTocToggle() {
-    if(!document.getElementById) return;
-    var header = $('toc__header');
-    if(!header) return;
-    var toc = $('toc__inside');
-
-    var obj          = document.createElement('span');
-    obj.id           = 'toc__toggle';
-    obj.style.cursor = 'pointer';
-    if (toc && toc.style.display == 'none') {
-        obj.innerHTML    = '<span>+</span>';
-        obj.className    = 'toc_open';
-    } else {
-        obj.innerHTML    = '<span>&minus;</span>';
-        obj.className    = 'toc_close';
-    }
-
-    prependChild(header,obj);
-    obj.parentNode.onclick = toggleToc;
-    obj.parentNode.style.cursor = 'pointer';
-}
-
-/**
- * This toggles the visibility of the Table of Contents
- */
-function toggleToc() {
-  var toc = $('toc__inside');
-  var obj = $('toc__toggle');
-  if(toc.style.display == 'none') {
-    toc.style.display   = '';
-    obj.innerHTML       = '<span>&minus;</span>';
-    obj.className       = 'toc_close';
-  } else {
-    toc.style.display   = 'none';
-    obj.innerHTML       = '<span>+</span>';
-    obj.className       = 'toc_open';
-  }
-}
 
 /**
  * Create JavaScript mouseover popup