Index: conditional_fields.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/conditional_fields/conditional_fields.module,v
retrieving revision 1.1.2.15
diff -u -r1.1.2.15 conditional_fields.module
--- conditional_fields.module	19 Feb 2008 16:03:48 -0000	1.1.2.15
+++ conditional_fields.module	3 Mar 2008 17:03:49 -0000
@@ -507,20 +507,21 @@
       // Fields
     if (substr($element, 0, 6) == 'field_') {
       if ($controlling_fields[$element]) {
-        $form[$element]['#prefix'] = '<div id="conditional-'. form_clean_id($element) .'" class="conditional-field controlling-field">';
-        $form[$element]['#suffix'] = '</div>';
+        $form[$element]['#controlling_field'] = $element;
+        $form[$element]['#theme'] = 'conditional_fields_form_item';
       }
       else if ($controlled_fields[$element]) {
         if (conditional_fields_find_required_field($form[$element])) {
           $required_fields[$element] =  array('field' => $element);
         }
-        $form[$element]['#prefix'] = '<div id="conditional-'. form_clean_id($element) .'" class="conditional-field controlled-field">';
-        $form[$element]['#suffix'] = '</div>';
+        $form[$element]['#controlled_field'] = $element;
+        $form[$element]['#theme'] = 'conditional_fields_form_item';
       }
     }
     else if (substr($element, 0, 6) == 'group_') {
       // Groups
       if ($controlled_fields[$element]) {
+        // Group markup is still hardcoded.
         $form[$element]['#prefix'] = '<div id="conditional-'. form_clean_id($element) .'" class="conditional-field controlled-field">';
         $form[$element]['#suffix'] = '</div>';
       }
@@ -532,12 +533,12 @@
           }
         }
         if ($controlling_fields[$group_element]) {
-          $form[$element][$group_element]['#prefix'] = '<div id="conditional-'. form_clean_id($group_element) .'" class="conditional-field controlling-field">';
-          $form[$element][$group_element]['#suffix'] = '</div>';
+          $form[$element]['#controlling_field'] = $element;
+          $form[$element]['#theme'] = 'conditional_fields_form_item';
         }
         else if ($controlled_fields[$group_element]) {
-          $form[$element][$group_element]['#prefix'] = '<div id="conditional-'. form_clean_id($group_element) .'" class="conditional-field controlled-field">';
-          $form[$element][$group_element]['#suffix'] = '</div>';
+          $form[$element]['#controlled_field'] = $element;
+          $form[$element]['#theme'] = 'conditional_fields_form_item';
         }
       }          
     }
@@ -857,3 +858,21 @@
 function theme_conditional_field_conditional($label) {
   return t(' <span class="marker">@label</span>', array('@label' => $label));
 }
+
+/**
+ * Themes the wrappers around conditional fields.
+ * Note that if you modify the id and classes of these fields,
+ * you have to modify conditional_fields.js accordingly.
+ */
+function theme_conditional_fields_form_item($item) {
+  if ($id = $item['#controlling_field']) {
+    $output = '<div id="conditional-'. form_clean_id($id) .'" class="conditional-field controlling-field">'. drupal_render($item) .'</div>';
+  }
+  else if ($id = $item['#controlled_field']) {
+    $output = '<div id="conditional-'. form_clean_id($id) .'" class="conditional-field controlled-field">'. drupal_render($item) .'</div>';
+  }
+  else {
+    $output = drupal_render($item); 
+  }
+  return $output;
+}
