--- conditional_fields.old	2010-01-18 02:28:47.000000000 +0100
+++ conditional_fields.module	2010-01-28 11:21:51.000000000 +0100
@@ -222,16 +222,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
-      foreach ((array)$node->$field['control_field_name'] as $value) {
-        $current_values[$field['control_field_name']][] = $value['value'];
-        if (!empty($value['value'])) {
-          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']){ //line adde by ole
+		foreach ((array)$node->$field['control_field_name'] as $value) {
+			$current_values[$field['control_field_name']][] = $value['value'];
+			if (!empty($value['value'])) {
+			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;
+			}
+			}
+		}
+	  }	//line adde by ole
       if ($viewed) {
         // Hide the controlled field if it is not triggered
         if (!conditional_fields_is_triggered($current_values[$field['control_field_name']], $field['trigger_values'])) {
@@ -362,7 +363,7 @@ function conditional_fields_content_admi
       continue;
     }
     // - Exclude fields without Allowed values
-    if (!$allowed_values[$field['field_name']] = content_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.
@@ -439,6 +440,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)
@@ -532,8 +544,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']] = content_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; 
       }
     }
   }
@@ -641,7 +653,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;
@@ -654,7 +671,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]);
     }
   }
 
@@ -666,7 +683,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]);
@@ -776,7 +797,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;
 }
 
@@ -1058,7 +1079,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;
     }
@@ -1300,7 +1321,6 @@ function theme_conditional_fields_form_i
   if (!$item['#controlling_fields'] && !$item['#controlled_fields']) {
     return $rendered_item;
   }
-
   $id = 'conditional-' . conditional_fields_form_clean_id($item['#field_name']);
   $classes = array('conditional-field');
 
