diff --git a/lib/scripts/script.js b/lib/scripts/script.js
index 418d2f0697dba1e547f3965b46cf189755dfb25c..0d445ab5bb52c20395082ea25e3d11fcfe9cc30f 100644
--- a/lib/scripts/script.js
+++ b/lib/scripts/script.js
@@ -557,7 +557,7 @@ addInitEvent(function(){
  * @author Andreas Gohr <andi@splitbrain.org>
  */
 addInitEvent(function(){
-    var highlightorfinish = new RegExp('DIV|H[123]');
+    var break_classes = new RegExp('secedit|toc|page');
     var btns = getElementsByClass('btn_secedit',document,'form');
     for(var i=0; i<btns.length; i++){
         addEvent(btns[i],'mouseover',function(e){
@@ -565,19 +565,19 @@ addInitEvent(function(){
             if(tgt.form) tgt = tgt.form;
             tgt = tgt.parentNode.previousSibling;
             if(tgt.nodeName != "DIV") tgt = tgt.previousSibling;
-            while(tgt.nodeName == 'DIV') {
+            while(!break_classes.test(tgt.className)) {
                 tgt.className += ' section_highlight';
-                do {
-                    tgt = (tgt.previousSibling != null) ? tgt.previousSibling : tgt.parentNode;
-                } while (!highlightorfinish.test(tgt.nodeName));
+                if (tgt.tagName == 'H1') break;
+                tgt = (tgt.previousSibling != null) ? tgt.previousSibling : tgt.parentNode;
             }
         });
 
         addEvent(btns[i],'mouseout',function(e){
-            var secs = getElementsByClass('section_highlight',document,'div');
+            var secs = getElementsByClass('section_highlight');
             for(var j=0; j<secs.length; j++){
-                secs[j].className = secs[j].className.replace(/ section_highlight/,'');
+                secs[j].className = secs[j].className.replace(/section_highlight/,'');
             }
+            var secs = getElementsByClass('section_highlight');
         });
     }
 });