--- dhtml_menu-orig.js	2009-01-12 11:13:30.000000000 +0100
+++ dhtml_menu-mine.js	2009-03-15 11:22:37.000000000 +0100
@@ -4,7 +4,7 @@
  * @file dhtml_menu.js
  * The Javascript code for DHTML Menu
  */
- 
+
 Drupal.dhtmlMenu = {};
 
 /**
@@ -37,12 +37,19 @@
   }
 
   /* Add jQuery effects and listeners to all menu items.
-   * The ~ (sibling) selector is unidirectional and selects 
-   * only the latter element, so we must use siblings() to get 
+   * The ~ (sibling) selector is unidirectional and selects
+   * only the latter element, so we must use siblings() to get
    * back to the link element.
    */
    $('ul.menu li.dhtml-menu:not(.leaf,.no-dhtml)').each(function() {
     var li = this;
+
+    // add special tree button
+    if ($(li).hasClass("expanded"))
+      $(li).find('a:first').after(' <a href="#" class="tree-collapse">-</a>');
+    else
+      $(li).find('a:first').after(' <a href="#" class="tree-expand">+</a>');
+
     if (effects.clone) {
       var ul = $(li).find('ul:first');
       if (ul.length) {
@@ -57,6 +64,16 @@
     }
 
     $(li).find('a:first').click(function(e) {
+      //Drupal.dhtmlMenu.toggleMenu($(li));
+      //return false;
+      window.location = this.href;
+    });
+
+    $(li).find('a:eq(1)').click(function(e) {
+      if ($(li).hasClass("collapsed"))
+        $(li).find('a:eq(1)').removeClass("tree-expand").addClass("tree-collapse").text("-");
+      else if ($(li).hasClass("expanded"))
+        $(li).find('a:eq(1)').text("+");
       Drupal.dhtmlMenu.toggleMenu($(li));
       return false;
     });
@@ -106,7 +123,7 @@
 
       // Siblings are all open menus that are neither parents nor children of this menu.
       $(li).find('li').addClass('own-children-temp');
-	  
+
       // If the relativity option is on, select only the siblings that have the same parent
       if (effects.relativity) {
         var siblings = $(li).parent().find('li.expanded').not('.own-children-temp').not(':has(#' + id + ')');
@@ -133,6 +150,7 @@
       else $(siblings).find('ul:first').css('display', 'none');
 
       $(siblings).removeClass('expanded').addClass('collapsed');
+      $(siblings).find('a:eq(1)').text("+");
     }
   }
 
