Index: merci.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/merci/merci.module,v
retrieving revision 1.1.2.36
diff -u -r1.1.2.36 merci.module
--- merci.module	18 Dec 2009 16:16:21 -0000	1.1.2.36
+++ merci.module	18 Dec 2009 18:51:23 -0000
@@ -1131,7 +1131,6 @@
     
     //DIFF?
     $type_settings = merci_content_type_rules($content_type);
-    $hours_of_operation = merci_load_hours_of_operation($content_type);
     $return = array();
 
     // Convert start/end dates to local time.
@@ -2249,12 +2248,12 @@
        form_set_error('field_merci_date][0][value][date', t('Reservations cannot start on a %day.', array('%day' => $start_name)));
      }
      else {
-       $start_time = date_format($start_object, 'H:s');
+       $start_time = date_format($start_object, 'H:i');
        if ($start_time < $start_hours['open']) {
-       form_set_error('field_merci_date][0][value][time', t('Reservations cannot start on a %day before %start.', array('%day' => $start_name, '%start' => date("g:i a", strtotime($start_hours['open'])))));
+         form_set_error('field_merci_date][0][value][time', t('Reservations cannot start on a %day before %start.', array('%day' => $start_name, '%start' => merci_format_time($start_hours['open']))));
        }
        elseif ($start_time > $start_hours['close']) {
-       form_set_error('field_merci_date][0][value][time', t('Reservations cannot start on a %day after %end.', array('%day' => $start_name, '%end' => date("g:i a", strtotime($start_hours['close'])))));
+         form_set_error('field_merci_date][0][value][time', t('Reservations cannot start on a %day after %end.', array('%day' => $start_name, '%end' => merci_format_time($start_hours['close']))));
        }
      }
    
@@ -2263,13 +2262,12 @@
        form_set_error('field_merci_date][0][value2][date', t('Reservations cannot end on a %day.', array('%day' => $end_name)));
      }
      else {
-       $end_time = date_format($end_object, 'H:s');
+       $end_time = date_format($end_object, 'H:i');
        if ($end_time < $end_hours['open']) {
-       form_set_error('field_merci_date][0][value2][time', t('Reservations cannot end on a %day before %start.', array('%day' => $end_name, '%start' => $end_hours['open'])));
+         form_set_error('field_merci_date][0][value2][time', t('Reservations cannot end on a %day before %start.', array('%day' => $end_name, '%start' => merci_format_time($end_hours['open']))));
        }
        elseif ($end_time > $end_hours['close']) {
-         //TODO - Format time to 12PM
-       form_set_error('field_merci_date][0][value2][time', t('Reservations cannot end on a %day after %end.', array('%day' => $end_name, '%end' => $end_hours['close'])));
+         form_set_error('field_merci_date][0][value2][time', t('Reservations cannot end on a %day after %end.', array('%day' => $end_name, '%end' => merci_format_time($end_hours['close']))));
        }
      }
      }
@@ -2410,12 +2408,24 @@
            $message .= '<th>' . date( 'm/d/Y' , $date_timestamp ) . '</th>';
           
            $time = $hours_date['open'];
+           if ($minutes = (int) substr($time, 3)) {
+             $hour = (substr($time, 0, 2) + 1);
+             $quarters = (int)((60-$minutes)/15);
+             $time = ($hour < 10 ? '0'. $hour : $hour) .':00';
+             if ($quarters > 0) {
+               $message.= '<th colspan="'. $quarters .'">&nbsp;</th>';
+             }
+           }
+           $end_time = substr($hours_date['close'], 0, 2) .':00';
            
-           while ( $time < $hours_date['close'] ) {
+           while ( $time < $end_time ) {
            
-             $message .= '<th colspan="4">' . date( 'g:i a' , strtotime( $time ) ) . '</th>';
+             $message .= '<th colspan="4">' . merci_format_time($time) . '</th>';
              
              $time = date( 'H:i' , strtotime( $time . ' +1 hour' ) ); 
+             if (substr($time, 0, 2) == '00') {
+               $time = '24'. substr($time, 2);
+             }
            
            }
                    
@@ -2430,6 +2440,16 @@
              $message .= '</th>';
              
              $time = $hours_date['open'];
+             if ($minutes = (int) substr($time, 3)) {
+               $hour = substr($time, 0, 2);
+               $quarters = (int)(($minutes+14)/15);
+               if ($quarters == 4) {
+                 $time = ($hour <= 8 ? '0' : '') . ($hour + 1) .':00';
+               }
+               else {
+                 $time = $hour .':'. ($quarters ? $quarters*15 : '00');
+               }
+             }
              
              while ( $time < $hours_date['close'] ) {
              
@@ -2439,6 +2459,9 @@
                  $message .= '<td class="available"></td>';
                        
                $time = date( 'H:i' , strtotime( $time . ' +15 minutes' ) ); 
+               if ($time == '00:00') {
+                 $time = '24:00';
+               }
              
              } // while
              
@@ -3165,4 +3188,32 @@
     break;
   }
 }
-?>
\ No newline at end of file
+
+/**
+ * Calculates the short hour/minute time format based on the site settings.
+ */
+function merci_time_format() {
+  static $time_only_format = NULL;
+  if (empty($time_only_format)) {
+    $short_date_format = variable_get('date_format_short', 'm/d/Y - H:i');
+    $time_only_format = date_limit_format($short_date_format, array('hour', 'minute'));
+  }
+  return $time_only_format;
+}
+
+/**
+ * Formats a time value into the site's preferred format.
+ * 
+ * @param object $hours_minutes
+ *   A string of the form 'H:MM' or 'HH:MM'
+ * @return
+ *   A string in 12- or 24-hour format with no leading zero.
+ */
+function merci_format_time($hours_minutes) {
+  $return = date(merci_time_format(), strtotime($hours_minutes));
+  if ($return[0] == '0') {
+    return substr($return, 1);
+  }
+  return $return;
+}
+
