Index: conditional_fields.js
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/conditional_fields/conditional_fields.js,v
retrieving revision 1.7.2.5
diff -u -p -r1.7.2.5 conditional_fields.js
--- conditional_fields.js	29 Oct 2010 15:15:40 -0000	1.7.2.5
+++ conditional_fields.js	16 Feb 2011 17:01:11 -0000
@@ -104,7 +104,9 @@ Drupal.ConditionalFields.doAnimation = f
 Drupal.ConditionalFields.findValues = function(field) {
   var values = [];
   field.find('option:selected, input:checked, input:text, textarea').each( function() {
-    values[values.length] = this.value;
+    if ($('#' + this.parentNode.id + ':visible').length > 0) {
+      values[values.length] = this.value;
+    }
   });
   return values;
 }       
Index: conditional_fields.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/conditional_fields/conditional_fields.module,v
retrieving revision 1.8.2.21
diff -u -p -r1.8.2.21 conditional_fields.module
--- conditional_fields.module	29 Oct 2010 18:15:36 -0000	1.8.2.21
+++ conditional_fields.module	16 Feb 2011 17:01:12 -0000
@@ -224,15 +224,17 @@ function conditional_fields_nodeapi(&$no
       // Create an array with the selected controlling field's values
       // Check if the controlling field is viewed as well
       $field_key = array_keys($type['fields'][$field['control_field_name']]['columns']);
-      foreach ((array)$node->$field['control_field_name'] as $value) {
-        $current_values[$field['control_field_name']][] = $value[$field_key[0]];
-        if (!empty($value[$field_key[0]])) {
-          if ($node->content[$field['control_field_name']]['field']['#access'] == TRUE ||
-              ($controlling_group && $node->content[$controlling_group]['group'][$field['control_field_name']]['field']['#access'] == TRUE)) {
-            $viewed = TRUE;
+      if($node->$field['control_field_name']){ 
+        foreach ((array)$node->$field['control_field_name'] as $value) {
+          $current_values[$field['control_field_name']][] = $value[$field_key[0]];
+          if (!empty($value[$field_key[0]])) {
+            if ($node->content[$field['control_field_name']]['field']['#access'] == TRUE ||
+                ($controlling_group && $node->content[$controlling_group]['group'][$field['control_field_name']]['field']['#access'] == TRUE)) {
+              $viewed = TRUE;
+            }
           }
         }
-      }
+      } 
 
       if ($viewed) {
         // Hide the controlled field if it is not triggered
@@ -367,7 +369,7 @@ function conditional_fields_content_admi
       continue;
     }
     // - Exclude fields without Allowed values
-    if (!$allowed_values[$field['field_name']] = conditional_fields_allowed_values($field)) {
+    if (!$allowed_values[$field['field_name']] = conditional_field_allowed_values($field)) {
       continue;
     }
     // If a field is inside a controlled group, it can control or be controlled only by fields in the same group.
@@ -444,6 +446,17 @@ function conditional_fields_content_admi
   return;
 }
 
+function conditional_field_allowed_values($field) {
+  if($field['type'] == 'content_taxonomy') {
+    $field_allowed_values = content_taxonomy_allowed_values($field);
+    unset($field_allowed_values['']);
+  }
+  else {
+    $field_allowed_values = content_allowed_values($field);
+  }
+  return $field_allowed_values;
+}
+
 /**
  * Controlling field settings form
  * (just a table containing information about controlled fields)
@@ -537,8 +550,8 @@ function conditional_fields_fieldgroup_g
   foreach ($form['#content_type']['fields'] as $field) {
     $in_group = fieldgroup_get_group($form['#content_type']['type'], $field['field_name']);
     if (!$in_group) {
-      if ($allowed_values[$field['field_name']] = conditional_fields_allowed_values($field)) {
-        $available_fields[$field['field_name']] = $field;
+      if ($allowed_values[$field['field_name']] = conditional_field_allowed_values($field)) { // changed
+      $available_fields[$field['field_name']] = $field;
       }
     }
   }
@@ -666,7 +679,12 @@ function conditional_fields_node_after_b
   foreach ($controlling_fields as $controlling_field_name => $controlling_field_descendants) {
     // Check if the controlling field is in the form, user has access to it, and is editable.
     $group_of_controlling_field = conditional_fields_get_group($type_name, $controlling_field_name);
-    $controlling_field = conditional_fields_item_in_form($form, $controlling_field_name, $group_of_controlling_field);
+    $controlling_field = conditional_fields_item_in_form($form, $controlling_field_name, $group_of_controlling_field); 
+	if($form[$controlling_field_name]["tids"]){
+	  $form[$controlling_field_name]["#field_name"]=$form[$controlling_field_name]["#parents"][0];
+	}elseif($form[$group_of_controlling_field][$controlling_field_name]["tids"]){
+	  $form[$group_of_controlling_field][$controlling_field_name]["#field_name"]=$form[$group_of_controlling_field][$controlling_field_name]["#parents"][0];
+	}
     if (!$controlling_field || $controlling_field['#access'] === FALSE || $controlling_field['#type'] == 'markup') {
       $missing_controlling_fields[] = $controlling_field_name;
       continue;
@@ -679,7 +697,7 @@ function conditional_fields_node_after_b
     }
     else {
       $form[$controlling_field_name]['#controlling_fields'] = TRUE;
-      conditional_fields_item_apply_theme($form[$controlling_field_name]);
+		conditional_fields_item_apply_theme($form[$controlling_field_name]);
     }
   }
 
@@ -691,7 +709,11 @@ function conditional_fields_node_after_b
     if (!$controlled_field || $controlled_field['#access'] === FALSE) {
       continue;
     }
-
+	if($form[$controlled_field_name]["tids"]){
+	  $form[$controlled_field_name]["#field_name"]=$form[$controlled_field_name]["#parents"][0];drupal_set_message("ee");
+	}elseif($form[$group_of_controlled_field][$controlled_field_name]["tids"]){
+	  $form[$group_of_controlled_field][$controlled_field_name]["#field_name"]=$form[$group_of_controlled_field][$controlled_field_name]["#parents"][0];
+	}
     // Handle orphaned fields.
     foreach ($missing_controlling_fields as $missing_controlling_field) {
       unset($controlled_field_parents[$missing_controlling_field]);
@@ -801,7 +823,7 @@ function conditional_fields_node_after_b
 
   // Add validation function
   $form['#validate'] = array_merge(array('conditional_fields_node_editing_form_validate'), (array)$form['#validate']);
-
+	
   return $form;
 }
 
@@ -1096,7 +1118,7 @@ function conditional_fields_field_overvi
 function conditional_fields_available_fields_default_values($control_field, $conditional_fields) {
   foreach ($conditional_fields as $field) {
     $query = db_query("SELECT trigger_values FROM {conditional_fields} WHERE control_field_name = '%s' AND field_name = '%s' AND type = '%s'", $field['field_name'], $control_field, $field['type_name']);
-    $result = unserialize(db_result($query));
+    $result = unserialize(db_result($query)); 
     if ($result) {
       $default_values[$field['field_name']] = $result;
     }
