diff --git date_elements.inc date_elements.inc
index 9b59356..f6e2179 100644
--- date_elements.inc
+++ date_elements.inc
@@ -329,10 +329,8 @@ function date_combo_validate($element, &$form_state) {
     return;
   }
 
-  // Repeating dates have a different form structure, so get the
-  // right item values.
-  $item = isset($form_values[$field_name][$langcode]['rrule']) ? $form_values[$field_name][$langcode] : $form_values[$field_name][$langcode][$delta];
-  $posted = isset($form_values[$field_name][$langcode]['rrule']) ? $form_state['input'][$field_name][$langcode] : $form_state['input'][$field_name][$langcode][$delta];
+  $item = drupal_array_get_nested_value($form_values, $element['#parents']);
+  $posted = drupal_array_get_nested_value($form_state['input'], $element['#parents']);
 
   $field = field_widget_field($element, $form_state);
   $instance = field_widget_instance($element, $form_state);
@@ -518,4 +516,5 @@ function date_input_format($element, $field, $instance) {
     return $instance['widget']['settings']['input_format'];
   }
   return variable_get('date_format_short', 'm/d/Y - H:i');
-}
\ No newline at end of file
+}
+
