Index: dynamic_persistent_menu.module
===================================================================
--- dynamic_persistent_menu.module	(revision 3141)
+++ dynamic_persistent_menu.module	(working copy)
@@ -129,7 +129,8 @@
   // Build the menus
   
   $output = '<ul style="display:inline" class="dynamic-persistent-menu-menu">';
-
+  $num_items = count($menu);
+  $k = 0;
   foreach($menu as $menu_item) {
     $link = $menu_item['link'];
     if ($link['hidden'] == 0) {
@@ -142,25 +143,43 @@
           $display = 'none';
         }
       }
-      
+      if ($k == 0) {
+        $extra_class = 'first';
+      }
+      if ($k == $num_items - 1) {
+        $extra_class = 'last';
+      }
+
       if (is_array($trail) && in_array($link['mlid'], $trail)) {
         $link['in_active_trail'] = TRUE;
       }
       
-      $output .= theme('dynamic_persistent_menu_menu_item', $link, 'dynamic-persistent-menu-menu-item', 'dynamic-persistent-menu-menu'.$link['mlid']);
-    
+      $output .= theme('dynamic_persistent_menu_menu_item', $link, 'dynamic-persistent-menu-menu-item ' . $extra_class, 'dynamic-persistent-menu-menu'.$link['mlid']);
+      $extra_class = '';
       // Submenu
       
       if ($menu_item['link']['has_children']) {
         $submenu_items ='';
-        foreach($menu_item['below'] as $submenu_item) {
+        $num_sub_items = 0;
+        foreach($menu_item['below'] as $i => $submenu_item) if ($link2['hidden'] == 0) $num_sub_items++;
+        $i = 0;
+        foreach($menu_item['below'] as  $submenu_item) {
           $link2 = $submenu_item['link'];
+
           if ($link2['hidden'] == 0) {
             if (is_array($trail) && in_array($link2['mlid'], $trail)) {
               $link2['in_active_trail'] = TRUE;
             }
-            $submenu_items .= theme('dynamic_persistent_menu_menu_item', $link2, 'dynamic-persistent-menu-sub-menu-item', 'dynamic-persistent-menu-sub-menu-item'.$link2['mlid']);;
+            if ($i == 0) {
+              $extra_class = 'first';
+            }
+            if ($i == $num_sub_items - 1) {
+              $extra_class = 'last';
+            }
+            $submenu_items .= theme('dynamic_persistent_menu_menu_item', $link2, 'dynamic-persistent-menu-sub-menu-item ' . $extra_class, 'dynamic-persistent-menu-sub-menu-item'.$link2['mlid']);
+            $i++;
           }
+          $extra_class = '';
         }
         if ($submenu_items !='') {
           $submenu .= '<ul class="block dynamic-persistent-menu-sub-menu" id="dynamic-persistent-menu-sub-menu'. $link['mlid'] .'" style="display:'. $display  .'">';
@@ -169,6 +188,7 @@
         }
       }
     }
+    $k++;
   }
   $output .= '</ul>';
   $output .= $submenu;
