Index: modules/date/date.inc
===================================================================
RCS file: /cvs/drupal/contributions/modules/date/date.inc,v
retrieving revision 1.9
diff -u -r1.9 date.inc
--- modules/date/date.inc	15 Aug 2006 15:07:58 -0000	1.9
+++ modules/date/date.inc	25 Aug 2006 21:26:44 -0000
@@ -749,59 +749,78 @@
     '#type' => 'markup',
     '#value' => '<div class="date-date">',
     );
-  if (in_array('M',$granularity)) {
-    $form['mon'] = array(
-    '#default_value' => $mon,
-    '#title' => t('month'),
-    '#required' => ($required && !in_array('mon', $opt_fields)) ? $required : 0,
-    );
-    if ($select_month) {
-      $months_array = drupal_map_assoc(range(1, 12), 'map_month');
-      if (!$required || in_array('mon', $opt_fields) || $blank_default) array_unshift($months_array, '');
-      $form['mon']['#type'] = 'select';
-      $form['mon']['#options'] = $months_array;
-    }
-    else {
-      $form['mon']['#type'] = 'textfield';
-      $form['mon']['#maxlength'] = 2;
-      $form['mon']['#size'] = 2;
-    }
-  }
-  if (in_array('D',$granularity)) {
-    $form['mday'] = array(
-    '#default_value' => $mday,
-    '#title' => t('day'),
-    '#required' => ($required && !in_array('mday', $opt_fields)) ? $required : 0,
-    );
-    if ($select_day) {
-      $days_array = drupal_map_assoc(range(1, 31));
-      if (!$required || in_array('mday', $opt_fields) || $blank_default) array_unshift($days_array, '');
-      $form['mday']['#type'] = 'select';
-      $form['mday']['#options'] = $days_array;
-    }
-    else {
-      $form['mday']['#type'] = 'textfield';
-      $form['mday']['#maxlength'] = 2;
-      $form['mday']['#size'] = 2;
-    }
-  }
-  if (in_array('Y',$granularity)) {
-    $form['year'] = array(
-    '#default_value' => $year,
-    '#title' => t('year'),
-    '#required' => ($required && !in_array('year', $opt_fields)) ? $required : 0,
-    );
-    if ($select_year) {
-      $years_array = drupal_map_assoc(range($year - $years_back, $year + $years_forward));
-      // array_unshift converts the assoc array to a numeric one, can't use it here
-      if (!$required || in_array('year', $opt_fields) || $blank_default) $years_array = array(0 => '') + $years_array;
-      $form['year']['#type'] = 'select';
-      $form['year']['#options'] = $years_array;
-    }
-    else {
-      $form['year']['#type'] = 'textfield';
-      $form['year']['#maxlength'] = 4;
-      $form['year']['#size'] = 4;
+  $format = variable_get('date_format_short', 'm/d/Y - H:i');
+  $max = strlen($format);
+  for ($i = 0; $i < $max; $i++) {
+    switch ($format{$i}) {
+      case 'd':
+      case 'j':
+        if (in_array('D',$granularity)) {
+          $form['mday'] = array(
+            '#default_value' => $mday,
+            '#title' => t('day'),
+            '#required' => ($required && !in_array('mday', $opt_fields)) ? $required : 0,
+          );
+          if ($select_day) {
+            $days_array = drupal_map_assoc(range(1, 31));
+            if (!$required || in_array('mday', $opt_fields) || $blank_default) array_unshift($days_array, '');
+            $form['mday']['#type'] = 'select';
+            $form['mday']['#options'] = $days_array;
+          }
+          else {
+            $form['mday']['#type'] = 'textfield';
+            $form['mday']['#maxlength'] = 2;
+            $form['mday']['#size'] = 2;
+          }
+        }
+        break;
+
+      case 'F':
+      case 'M':
+      case 'm':
+      case 'n':
+        if (in_array('M',$granularity)) {
+          $form['mon'] = array(
+            '#default_value' => $mon,
+            '#title' => t('month'),
+            '#required' => ($required && !in_array('mon', $opt_fields)) ? $required : 0,
+          );
+          if ($select_month) {
+            $months_array = drupal_map_assoc(range(1, 12), 'map_month');
+            if (!$required || in_array('mon', $opt_fields) || $blank_default) array_unshift($months_array, '');
+            $form['mon']['#type'] = 'select';
+            $form['mon']['#options'] = $months_array;
+          }
+          else {
+            $form['mon']['#type'] = 'textfield';
+            $form['mon']['#maxlength'] = 2;
+            $form['mon']['#size'] = 2;
+          }
+        }
+        break;
+
+      case 'Y':
+      case 'y':
+        if (in_array('Y',$granularity)) {
+          $form['year'] = array(
+            '#default_value' => $year,
+            '#title' => t('year'),
+            '#required' => ($required && !in_array('year', $opt_fields)) ? $required : 0,
+          );
+          if ($select_year) {
+            $years_array = drupal_map_assoc(range($year - $years_back, $year + $years_forward));
+            // array_unshift converts the assoc array to a numeric one, can't use it here
+            if (!$required || in_array('year', $opt_fields) || $blank_default) $years_array = array(0 => '') + $years_array;
+            $form['year']['#type'] = 'select';
+            $form['year']['#options'] = $years_array;
+          }
+          else {
+            $form['year']['#type'] = 'textfield';
+            $form['year']['#maxlength'] = 4;
+            $form['year']['#size'] = 4;
+          }
+        }
+        break;
     }
   }
   $form['space1'] = array(
