diff --git a/lib/exe/js.php b/lib/exe/js.php
index 93d5439e0a2b180502107b798073fa59b1bd489e..0e0a22d423553f51b9711f21f4fe70fb075d172a 100644
--- a/lib/exe/js.php
+++ b/lib/exe/js.php
@@ -61,8 +61,9 @@ function js_out(){
                 DOKU_INC.'lib/scripts/media.js',
                 DOKU_INC.'lib/scripts/compatibility.js',
 # disabled for FS#1958                DOKU_INC.'lib/scripts/hotkeys.js',
-                DOKU_TPLINC.'script.js',
                 DOKU_INC.'lib/scripts/behaviour.js',
+                DOKU_INC.'lib/scripts/page.js',
+                DOKU_TPLINC.'script.js',
             );
 
     // add possible plugin scripts and userscript
diff --git a/lib/scripts/script.js b/lib/scripts/script.js
index b44d95d6f06148462ea59358dd49bd1a5768567b..3e2ec4f89a4a58ed51f741ca1e644688df7a65c2 100644
--- a/lib/scripts/script.js
+++ b/lib/scripts/script.js
@@ -180,104 +180,6 @@ function hideLoadBar(id){
   if(obj) obj.style.display="none";
 }
 
-
-/**
- * Create JavaScript mouseover popup
- */
-function insitu_popup(target, popup_id) {
-
-    // get or create the popup div
-    var fndiv = $(popup_id);
-    if(!fndiv){
-        fndiv = document.createElement('div');
-        fndiv.id        = popup_id;
-        fndiv.className = 'insitu-footnote JSpopup dokuwiki';
-
-        // autoclose on mouseout - ignoring bubbled up events
-        addEvent(fndiv,'mouseout',function(e){
-            var p = e.relatedTarget || e.toElement;
-            while (p && p !== this) {
-                p = p.parentNode;
-            }
-            if (p === this) {
-                return;
-            }
-            // okay, hide it
-            this.style.display='none';
-        });
-        getElementsByClass('dokuwiki', document.body, 'div')[0].appendChild(fndiv);
-    }
-
-    var non_static_parent = fndiv.parentNode;
-    while (non_static_parent != document && gcs(non_static_parent)['position'] == 'static') {
-        non_static_parent = non_static_parent.parentNode;
-    }
-
-    var fixed_target_parent = target;
-    while (fixed_target_parent != document && gcs(fixed_target_parent)['position'] != 'fixed') {
-        fixed_target_parent = fixed_target_parent.parentNode;
-    }
-
-    // position the div and make it visible
-    if (fixed_target_parent != document) {
-        // the target has position fixed, that means the footnote needs to be fixed, too
-        fndiv.style.position = 'fixed';
-    } else {
-        fndiv.style.position = 'absolute';
-    }
-
-    if (fixed_target_parent != document || non_static_parent == document) {
-        fndiv.style.left = findPosX(target)+'px';
-        fndiv.style.top  = (findPosY(target)+target.offsetHeight * 1.5) + 'px';
-    } else {
-        fndiv.style.left = (findPosX(target) - findPosX(non_static_parent)) +'px';
-        fndiv.style.top  = (findPosY(target)+target.offsetHeight * 1.5 - findPosY(non_static_parent)) + 'px';
-    }
-
-    fndiv.style.display = '';
-    return fndiv;
-}
-
-/**
- * Display an insitu footnote popup
- *
- * @author Andreas Gohr <andi@splitbrain.org>
- * @author Chris Smith <chris@jalakai.co.uk>
- */
-function footnote(e){
-    var fndiv = insitu_popup(e.target, 'insitu__fn');
-
-    // locate the footnote anchor element
-    var a = $("fn__" + e.target.id.substr(5));
-    if (!a){ return; }
-
-    // anchor parent is the footnote container, get its innerHTML
-    var content = new String (a.parentNode.parentNode.innerHTML);
-
-    // strip the leading content anchors and their comma separators
-    content = content.replace(/<sup>.*<\/sup>/gi, '');
-    content = content.replace(/^\s+(,\s+)+/,'');
-
-    // prefix ids on any elements with "insitu__" to ensure they remain unique
-    content = content.replace(/\bid=(['"])([^"']+)\1/gi,'id="insitu__$2');
-
-    // now put the content into the wrapper
-    fndiv.innerHTML = content;
-}
-
-/**
- * Add the event handlers to footnotes
- *
- * @author Andreas Gohr <andi@splitbrain.org>
- */
-addInitEvent(function(){
-    var elems = getElementsByClass('fn_top',null,'a');
-    for(var i=0; i<elems.length; i++){
-        addEvent(elems[i],'mouseover',function(e){footnote(e);});
-    }
-});
-
-
 /**
  * Handler to close all open Popups
  */
@@ -314,38 +216,3 @@ addInitEvent(function(){
     }
 });
 
-
-/**
- * Highlight the section when hovering over the appropriate section edit button
- *
- * @author Andreas Gohr <andi@splitbrain.org>
- */
-addInitEvent(function(){
-    var btns = getElementsByClass('btn_secedit',document,'form');
-    for(var i=0; i<btns.length; i++){
-        addEvent(btns[i],'mouseover',function(e){
-            var tgt = this.parentNode;
-            var nr = tgt.className.match(/(\s+|^)editbutton_(\d+)(\s+|$)/)[2];
-            do {
-                tgt = tgt.previousSibling;
-            } while (tgt !== null && typeof tgt.tagName === 'undefined');
-            if (tgt === null) return;
-            while(typeof tgt.className === 'undefined' ||
-                  tgt.className.match('(\\s+|^)sectionedit' + nr + '(\\s+|$)') === null) {
-                if (typeof tgt.className !== 'undefined') {
-                    tgt.className += ' section_highlight';
-                }
-                tgt = (tgt.previousSibling !== null) ? tgt.previousSibling : tgt.parentNode;
-            }
-            if (typeof tgt.className !== 'undefined') tgt.className += ' section_highlight';
-        });
-
-        addEvent(btns[i],'mouseout',function(e){
-            var secs = getElementsByClass('section_highlight');
-            for(var j=0; j<secs.length; j++){
-                secs[j].className = secs[j].className.replace(/section_highlight/g,'');
-            }
-        });
-    }
-});
-