--- conditional_fields.old	2011-11-15 11:59:39.907063904 -0800
+++ conditional_fields.module	2011-11-15 12:02:15.808411932 -0800
@@ -986,20 +986,40 @@ function conditional_fields_node_editing
  * Checks if a submitted field value is empty
  */
 function conditional_fields_check_empty($field) {
-  // Normal fields
-  if (isset($field[0]['value'])) {
-    $value = $field[0]['value'];
-  }
-  // Node reference
-  elseif (isset($field[0]['nid'])) {
-    $value = $field[0]['nid'];
+  $ids = conditional_fields_get_checkoptions();
+  foreach (array_unique($ids) AS $id) {
+    if (isset($field[0][$id]) {
+      $value = $field[0][$id];
+      if (!count($value) || (is_string($value) && drupal_strlen(trim($value)) == 0)) {
+        return TRUE;
+      }
+    }
   }
+  return FALSE;
+}
 
-  if (!count($value) || (is_string($value) && drupal_strlen(trim($value)) == 0)) {
-    return TRUE;
+/**
+ * Returns a list of possible field ids to check for
+ */
+function conditional_fields_get_checkoptions($reset = FALSE) {
+  static $ids;
+  if (!isset($ids) || $reset)) {
+    $ids = module_invoke_all('conditional_fields_checkoptions', $ids);
   }
+  return $ids;
+}
 
-  return FALSE;
+/**
+ * Implementation of hook_conditional_fields_checkoptions()
+ */
+function conditional_fields_conditional_fields_checkoptions() {
+  return array(
+    'value', //Normal fields
+    'nid',   //Node reference
+    'uid',   //User reference
+    'rid',   //Role reference
+    'email'  //Email field
+  );
 }
 
 /**
