Index: navigation.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/navigation/navigation.module,v
retrieving revision 1.24
diff -u -r1.24 navigation.module
--- navigation.module	30 May 2004 22:00:21 -0000	1.24
+++ navigation.module	1 Jun 2004 03:19:18 -0000
@@ -9,10 +9,17 @@
 function navigation_display_tabs($mid) {
   $output = "";
   if(navigation_menu_allowed($mid) && ($menu = navigation_load_menu($mid))) {
-   $output = "<div class=\"tabs\" id=\"tabs-$mid\">\n";
     $selected = navigation_load_selected_items($mid);
     $output .= navigation_build_tabs($menu, 0, 0, $selected);
-    $output .= "</div>\n";
+  }
+  return $output;
+}
+
+function navigation_display_fulltabs($mid) {
+  $output = "";
+  if(navigation_menu_allowed($mid) && ($menu = navigation_load_menu($mid))) {
+    $selected = navigation_load_selected_items($mid);
+    $output .= navigation_build_fulltabs($menu, 0, 0, $selected);
   }
   return $output;
 }
@@ -76,6 +83,50 @@
   }
 }
 
+/**
+ * navigation_build_tabs: Builds collapsed menu structure - ideal for use with
+ * DHTML/CSS for dropdown menus.
+ */
+function navigation_build_fulltabs($menu, $row, $active_parent, $selected) {
+
+  // Pretty-print mini-macro
+  for ($i = 0; $i < $row; $i++)
+  {
+    $spaces .= "  ";
+  }
+
+  if($menu[$row]) {
+    unset($tabrow);
+    unset($children);
+    foreach ($menu[$row] as $item) {
+      unset($rowOutput);
+      if (navigation_item_allowed($menu[mid], $item->iid) && (in_array($active_parent, $item->parents) || !$active_parent)) {
+        $children = $item->iid;
+
+        // Output the item.
+        if ($selected[$item->iid]) {
+          $menuOutput .= "\n$spaces  <li id=\"item-$item->iid\">". navigation_l($item->name, $item->url, array("title" => $item->description, "class" => "active-tab"));
+        }
+        else {
+          $menuOutput .= "\n$spaces  <li id=\"item-$item->iid\">". navigation_l($item->name, $item->url, array("title" => $item->description));
+        }
+
+        // Check: item has children
+        $rowOutput = navigation_build_fulltabs($menu, $row + 1, $children, $selected);
+        if ($rowOutput) {
+          // Output submenu
+          $menuOutput .= "\n$rowOutput\n$spaces  </li>";
+        }
+      }
+		}
+    if ($menuOutput) {
+      $output = "$spaces<ul class=\"tab-row" . $row . "\">\n$menuOutput\n$spaces</ul>\n";
+    }
+	}
+
+  return $output;
+}
+
 function navigation_build_tabs($menu, $row, $active_parent, $selected) {
   // only try and build the next row if it exists
   if($menu[$row]) {
