Index: event.module
===================================================================
--- event.module	(revision 272)
+++ event.module	(working copy)
@@ -348,22 +348,22 @@
   switch ($view) {
     case 'day':
         // day view
-        $headertitle = t('!weekday !month !day, !year', array('!weekday' => t(gmdate('l', $stamp)), '!month' => t(gmdate('F', $stamp)), '!day' => $day, '!year' => $year));
-        $rows = event_calendar_day('page', $stamp, $types, $terms);
+        $caption = t('!weekday !month !day, !year', array('!weekday' => t(gmdate('l', $stamp)), '!month' => t(gmdate('F', $stamp)), '!day' => $day, '!year' => $year));
+        list($thead, $tbody) = event_calendar_day('page', $stamp, $types, $terms);
       break;
     case 'week':
         // week view
         // setup calendar table header
         $temp = $stamp - (_event_day_of_week($stamp) * (86400));
-        $headertitle = t('Week of !month !day, !year', array('!month' => t(gmdate('F', $temp)), '!day' => gmdate('d', $temp), '!year' => $year));
+        $caption = t('Week of !month !day, !year', array('!month' => t(gmdate('F', $temp)), '!day' => gmdate('d', $temp), '!year' => $year));
         $colspan = 5;
-        $rows = event_calendar_week('page', $stamp, $types, $terms);
+        list($thead, $tbody) = event_calendar_week('page', $stamp, $types, $terms);
       break;
     case 'month':
         // month view
-        $headertitle = t('!month !year', array('!month' => t(gmdate('F', $stamp)), '!year' => $year));
+        $caption = t('!month !year', array('!month' => t(gmdate('F', $stamp)), '!year' => $year));
         $colspan = 5;
-        $rows = event_calendar_month('page', $stamp, $types, $terms);
+        list($thead, $tbody) = event_calendar_month('page', $stamp, $types, $terms);
       break;
     case 'table':
         // table view
@@ -371,8 +371,8 @@
         // but set a maximum $duration of 1 year.
         $duration = $duration && $duration <= 366 ? $duration : variable_get('event_table_duration', '30');
         $endstamp = $stamp + ($duration * 86400);
-        $headertitle = t('!startmonth !startdate, !startyear - !endmonth !enddate, !endyear', array('!startmonth' => t(gmdate('F', $stamp)), '!startdate' => gmdate('d', $stamp), '!startyear' => gmdate('Y', $stamp), '!endmonth' => t(gmdate('F', $endstamp)), '!enddate' => gmdate('d', $endstamp), '!endyear' => gmdate('Y', $endstamp)));
-        $rows = event_calendar_table('page', $stamp, $endstamp, $types, $terms);
+        $caption = t('!startmonth !startdate, !startyear - !endmonth !enddate, !endyear', array('!startmonth' => t(gmdate('F', $stamp)), '!startdate' => gmdate('d', $stamp), '!startyear' => gmdate('Y', $stamp), '!endmonth' => t(gmdate('F', $endstamp)), '!enddate' => gmdate('d', $endstamp), '!endyear' => gmdate('Y', $endstamp)));
+        list($thead, $tbody) = event_calendar_table('page', $stamp, $endstamp, $types, $terms);
       break;
     case 'list':
         // list view
@@ -380,8 +380,8 @@
         // but set a maximum $duration of 1 year.
         $duration = $duration && $duration <= 366 ? $duration : variable_get('event_table_duration', '30');
         $endstamp = $stamp + ($duration * 86400);
-        $headertitle = t('!startmonth !startdate, !startyear - !endmonth !enddate, !endyear', array('!startmonth' => t(gmdate('F', $stamp)), '!startdate' => gmdate('d', $stamp), '!startyear' => gmdate('Y', $stamp), '!endmonth' => t(gmdate('F', $endstamp)), '!enddate' => gmdate('d', $endstamp), '!endyear' => gmdate('Y', $endstamp)));
-        $rows = event_calendar_list('page', $stamp, $endstamp, $types, $terms);
+        $caption = t('!startmonth !startdate, !startyear - !endmonth !enddate, !endyear', array('!startmonth' => t(gmdate('F', $stamp)), '!startdate' => gmdate('d', $stamp), '!startyear' => gmdate('Y', $stamp), '!endmonth' => t(gmdate('F', $endstamp)), '!enddate' => gmdate('d', $endstamp), '!endyear' => gmdate('Y', $endstamp)));
+        $tbody = event_calendar_list('page', $stamp, $endstamp, $types, $terms);
       break;
     case 'feed':
         // rss feed
@@ -404,10 +404,7 @@
     $next = _event_nav($stamp, 'next', $view, $types, $terms, $duration);
 
     // setup calendar table header
-    $header = array(
-      array('class' => 'prev', 'data' => $prev),
-      array('class' => 'heading', 'data' => $headertitle, 'colspan' => $colspan),
-      array('class' => 'next', 'data' => $next));
+    $caption = $prev .' '. $caption .' '. $next;
 
     $node->day = $day;
     $node->month = $month;
@@ -416,7 +413,7 @@
 
     $output .= theme('event_links', array_merge(module_invoke_all('link', 'event_'. $view, $node, FALSE), $links), $view);
 
-    $output .= theme('event_calendar_'. $view, 'page', $header, $rows);
+    $output .= theme('event_calendar_'. $view, 'page', $thead, $tbody, array(), $caption);
     $output .= theme('event_ical_link', 'event/ical/'. $node->filter);
 
     // Add RSS feed and icon to events page
@@ -513,8 +510,8 @@
 
   // get weekdays array and header information
   $weekdays = event_week_days();
-  $header = event_week_header();
-	$rows = array();
+  $thead = event_week_header();
+	$tbody = array();
 
   // get GMT current date value
   $today = _event_user_date();
@@ -547,16 +544,16 @@
     }
     $week++;
     $start = 0;
-    $rows[] = array_pad($row, 7, array('class' => 'pad'));
+    $tbody[] = array_pad($row, 7, array('class' => 'pad'));
     $row = array();
   }
 
   switch ($op) {
     case 'page':
-        return $rows;
+        return array($thead, $tbody);
       break;
     case 'block':
-        return theme("event_calendar_month", $op, $header, $rows, $attributes = array('class' => strtolower($month_name)), $caption);
+        return theme("event_calendar_month", $op, $thead, $tbody, $attributes = array('class' => strtolower($month_name)), $caption);
       break;
   }
 }
@@ -570,7 +567,7 @@
 function event_calendar_week($op, $stamp, $types = NULL, $terms = NULL) {
   // get weekdays array and header information
   $weekdays = event_week_days();
-  $rows[] = event_week_header();
+  $thead = event_week_header();
 
   // get GMT current date value
   $today = _event_user_date();
@@ -590,8 +587,8 @@
       'data' => event_render_day($year, $month, $cur_day, 'week', $types, $terms));
     $stamp += 86400;
   }
-  $rows[] = $row;
-  return $rows;
+  $tbody[] = $row;
+  return array($thead, $tbody);
 }
 
 /**
@@ -611,13 +608,14 @@
   $month_name = gmdate('M', $stamp);
   $weekdays = event_week_days();
 
-  $rows[][] = array(
+	$thead[] = array('data' => gmdate('D', $stamp));
+  $tbody[][] = array(
     'class' => strtolower("$month_name ". $weekdays[$dow]['day'] . ($stamp == $today ? ' today' : '')),
     'id' => strtolower($month_name . $day),
     'data' => event_render_day($year, $month, $day, 'day', $types, $terms),
     'colspan' => 3);
 
-  return $rows;
+  return array($thead, $tbody);
 }
 
 /**
@@ -634,6 +632,7 @@
 function event_calendar_table($op, $stamp, $endstamp, $types = NULL, $terms = NULL) {
 
   $today = _event_user_date();
+	$thead[] = array('data' => '&nbsp;');
 
   while ($stamp <= $endstamp) {
     $year = gmdate('Y', $stamp);
@@ -643,14 +642,14 @@
     $dow = _event_day_of_week($stamp);
     $weekdays = event_week_days();
 
-    $rows[][] = array('colspan' => 3,
+    $tbody[][] = array('colspan' => 3,
                       'class' => strtolower("$month_name ". $weekdays[$dow]['day'] . ($stamp == $today ? ' today' : '') . ($cur_day == $day ? ' selected' : '')),
                       'id' => strtolower($month_name . $cur_day),
                       'data' => event_render_day($year, $month, $cur_day, 'table', $types, $terms));
     $stamp += 86400;
   }
 
-  return $rows;
+  return array($thead, $tbody);
 }
 
 /**
Index: event.theme
===================================================================
--- event.theme	(revision 291)
+++ event.theme	(working copy)
@@ -23,8 +23,8 @@
  * @param day
  *   The day to display.
  */
-function theme_event_calendar_week($op, $header, $rows) {
-  $output = theme("table", $header, $rows);
+function theme_event_calendar_week($op, $header, $rows, $attributes = array(), $caption = NULL) {
+  $output = theme("table", $header, $rows, $attributes, $caption);
   return '<div class="event-calendar"><div class="week-view">'. $output ."</div></div>\n";
 }
 
@@ -34,8 +34,8 @@
  * @param day
  *   The day to display.
  */
-function theme_event_calendar_day($op, $header, $rows) {
-  $output = theme("table", $header, $rows);
+function theme_event_calendar_day($op, $header, $rows, $attributes = array(), $caption = NULL) {
+  $output = theme("table", $header, $rows, $attributes, $caption);
   return '<div class="event-calendar"><div class="day-view">'. $output ."</div></div>\n";
 }
 
@@ -45,8 +45,8 @@
  * @param day
  *   The day to display.
  */
-function theme_event_calendar_table($op, $header, $rows) {
-  $output = theme("table", $header, $rows);
+function theme_event_calendar_table($op, $header, $rows, $attributes = array(), $caption = NULL) {
+  $output = theme("table", $header, $rows, $attributes, $caption);
   return '<div class="event-calendar"><div class="table-view">'. $output ."</div></div>\n";
 }
 
@@ -67,7 +67,9 @@
  *   The node being displayed
  */
 function theme_event_node_day($node) {
-  $output .= '<div class="event dayview">'."\n";
+  static $zebra;
+	
+  $output .= '<div class="event dayview'. ($zebra++%2? ' odd' : '') .'">'."\n";
 
   if (variable_get('event_type_control', 'all') != 'never') {
     if ((event_get_types('all') + event_get_types('solo')) > 1) {
