--- conditional_fields.module.org	2009-12-01 01:13:24.000000000 +0000
+++ conditional_fields.module	2009-12-01 01:26:26.000000000 +0000
@@ -538,14 +538,13 @@
 /**
  * Alteration of the node editing form
  */
-function conditional_fields_node_editing_form(&$form, $form_state) {
+function conditional_fields_node_editing_form(&$form, $form_state, $need_unique_ids = FALSE) {
   $type_name = $form['type']['#value'];
 
   // Do nothing if there are no conditional fields
   if (!$data = conditional_fields_load_data($type_name)) {
     return;
   }
-
   // Remove from data fields that user can't edit
   // and apply orphaned fields settings
   $orphaned_settings = variable_get('c_fields_edit_' . $type_name, C_FIELDS_ORPHANED_SHOW_TRIGGERED);
@@ -613,7 +612,11 @@
   // To do: look if we should make this themeable
   foreach ($data as $row) {
     // Add javascript settings for this field
-    $settings['controlling_fields']['#conditional-' . conditional_fields_form_clean_id($row['control_field_name'])]['#conditional-' . conditional_fields_form_clean_id($row['field_name'])] = array('field_id' => '#conditional-' . conditional_fields_form_clean_id($row['field_name']), 'trigger_values' => $row['trigger_values']);
+    if ( $need_unique_ids ) {
+      $settings['controlling_fields']['#conditional-' . conditional_fields_form_clean_id($form[$row['control_field_name']]['#id'])]['#conditional-' . conditional_fields_form_clean_id($form[$row['field_name']]['#id'])] = array('field_id' => '#conditional-' . conditional_fields_form_clean_id($form[$row['field_name']]['#id']), 'trigger_values' => $row['trigger_values']);
+    } else {
+      $settings['controlling_fields']['#conditional-' . conditional_fields_form_clean_id($row['control_field_name'])]['#conditional-' . conditional_fields_form_clean_id($row['field_name'])] = array('field_id' => '#conditional-' . conditional_fields_form_clean_id($row['field_name']), 'trigger_values' => $row['trigger_values']);
+    }
     // To do: feature, add an array of controlled fields to js to allow for multiple controlling fields for a field.
 
     // Build helper arrays
@@ -634,15 +637,15 @@
         $form[$element]['#conditional_fields_multiple'] = TRUE;
       }
       if ($controlling_fields[$element]) {
-        $form[$element]['#controlling_field'] = $element;
+        $form[$element]['#controlling_field'] = $need_unique_ids ? $form[$element]['#id'] : $element ;
         $form[$element]['#theme'] = array('conditional_fields_form_item');
       }
       else if ($controlled_fields[$element]) {
         if ($form[$element]['#required']) {
           conditional_fields_unset_required_field($form[$element]);
-          $required_fields[$element] = array('field' => $element);
+          $required_fields[$element] = array('field' => ($need_unique_ids ? $form[$element]['#id'] : $element));
         }
-        $form[$element]['#controlled_field'] = $element;
+        $form[$element]['#controlled_field'] = $need_unique_ids ? $form[$element]['#id'] : $element ;
         $form[$element]['#theme'] = array('conditional_fields_form_item');
       }
     }
@@ -650,7 +653,7 @@
       // Groups
       if ($controlled_fields[$element]) {
         // Group markup is still hardcoded.
-        $form[$element]['#prefix'] = '<div id="conditional-' . conditional_fields_form_clean_id($element) . '" class="conditional-field controlled-field">' . $form[$element]['#prefix'];
+        $form[$element]['#prefix'] = '<div id="conditional-' . conditional_fields_form_clean_id($need_unique_ids ? $form[$element]['#id'] : $element) . '" class="conditional-field controlled-field">' . $form[$element]['#prefix'];
         $form[$element]['#suffix'] = $form[$element]['#suffix'] . '</div>';
       }
       // Fields in groups
@@ -658,12 +661,12 @@
         // All required fields inside a conditional group must be handled by conditional fields
         if ($controlled_fields[$element] && $form[$element][$group_element]['#required']) {
           conditional_fields_unset_required_field($form[$element][$group_element]);
-          $required_fields[$group_element] = array('field' => $group_element, 'in_group' => $element);
+          $required_fields[$group_element] = array('field' => ($need_unique_ids ? $form[$element][$group_element]['#id'] : $group_element), 'in_group' => ($need_unique_ids ? $form[$element]['#id'] : $element));
           $form[$element][$group_element]['#theme'] = array('conditional_fields_form_item');
         }
         // Manage also conditional fields inside normal groups
         if ($controlling_fields[$group_element]) {
-          $form[$element][$group_element]['#controlling_field'] = $group_element;
+          $form[$element][$group_element]['#controlling_field'] = $need_unique_ids ? $form[$element][$group_element]['#id'] : $group_element ;
           $form[$element][$group_element]['#theme'] = array('conditional_fields_form_item');
         }
         else if ($controlled_fields[$group_element]) {
@@ -676,7 +679,7 @@
             conditional_fields_unset_required_field($form[$element][$group_element]);
             $required_fields[$group_element] = array('field' => $group_element, 'in_group' => $element);
           }
-          $form[$element][$group_element]['#controlled_field'] = $group_element;
+          $form[$element][$group_element]['#controlled_field'] = $need_unique_ids ? $form[$element][$group_element]['#id'] : $group_element ;
           $form[$element][$group_element]['#theme'] = array('conditional_fields_form_item');
         }
       }
@@ -938,6 +941,9 @@
     drupal_add_js(array('ConditionalFields' => $settings), 'setting');
     drupal_add_js(drupal_get_path('module', 'conditional_fields') . '/conditional_fields.js');
     $js = TRUE;
+  } else {
+    unset($settings['ui_settings']);
+    drupal_add_js(array('ConditionalFields' => $settings), 'setting');
   }
 }
 
