diff --git a/date_elements.inc b/date_elements.inc
index 656d499..462bc18
--- a/date_elements.inc
+++ b/date_elements.inc
@@ -292,6 +292,9 @@ function date_combo_element_process($element, &$form_state, $form) {
   $process = date_process_values($field, $instance);
   foreach ($process as $processed) {
     if (!isset($element['#default_value'][$processed])) {
+      if (empty($element['#default_value']) || !is_array($element['#default_value'])) {
+        $element['#default_value'] = array();
+      }
       $element['#default_value'][$processed] = '';
     }
     $date = date_local_date($element['#default_value'], $element['#date_timezone'], $field, $instance, $processed);
diff --git a/tests/date_field.test b/tests/date_field.test
index b8aad59..e513c81
--- a/tests/date_field.test
+++ b/tests/date_field.test
@@ -84,8 +84,8 @@ abstract class DateFieldBasic extends DrupalWebTestCase {
       'field_name' => $field_name,
       'label' => $label,
       'bundle' => $bundle,
-      // Move the date right below the title.
-      'weight' => -4,
+      // Move the date to the top.
+      'weight' => -100,
       'widget' => array(
         'type' => $widget_type,
         // Increment for minutes and seconds, can be 1, 5, 10, 15, or 30.
@@ -202,8 +202,8 @@ abstract class DateFieldBasic extends DrupalWebTestCase {
       'field_name' => $field_name,
       'label' => $label,
       'bundle' => $bundle,
-      // Move the date right below the title.
-      'weight' => -4,
+      // Move the date to the top.
+      'weight' => -100,
       'widget' => array(
         'type' => $widget_type,
         // Increment for minutes and seconds, can be 1, 5, 10, 15, or 30.
