Index: trunk/xpressme_integration_kit/wp-content/plugins/xpressme/include/custom_functions.php
===================================================================
--- trunk/xpressme_integration_kit/wp-content/plugins/xpressme/include/custom_functions.php	(revision 329)
+++ trunk/xpressme_integration_kit/wp-content/plugins/xpressme/include/custom_functions.php	(revision 338)
@@ -766,205 +766,37 @@
 
 	extract( $r );
-	if ($xoops_config->is_wp20){
-		ob_start();
-			get_calendar(true);
-			$output = ob_get_contents();
-		ob_end_clean();
-		$output = preg_replace('/<th abbr=/', '<th align="center"  abbr=', $output); //week name align center
-		$output = preg_replace('/<td>/', '<td align="center">', $output); //days align center
-		$output = preg_replace('/<td id="today">/', '<td id="today" align="center">', $output); //today align center
-
-		return $output;
-	}
-
+	
 	ob_start();
-	// Quick check. If we have no posts at all, abort!
-	if ( !$posts ) {
-//		$gotsome = $wpdb->get_var("SELECT ID from $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish' ORDER BY post_date DESC LIMIT 1");
-		$gotsome = $wpdb->get_var("SELECT 1 as test FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish' LIMIT 1"); //WP2.8
-		if ( !$gotsome )
-			return;
-	}
-
-	if ( isset($_GET['w']) )
-		$w = ''.intval($_GET['w']);
-
-	// week_begins = 0 stands for Sunday
+		get_calendar(true);
+		$calendar = ob_get_contents();
+	ob_end_clean();
+	$calendar = preg_replace('/<th abbr=/', '<th align="center"  abbr=', $calendar); //week name align center
+	$calendar = preg_replace('/<td>/', '<td align="center">', $calendar); //days align center
+	$calendar = preg_replace('/<td id="today">/', '<td id="today" align="center">', $calendar); //today align center
+	$calendar = preg_replace('/<span style="color:[^>]*>/', '', $calendar); //wp2011 color delete
+	$calendar = preg_replace('/<\/span>/', '', $calendar); //wp2011 color delete
+
 	$week_begins = intval(get_option('start_of_week'));
-
-	// Let's figure out when we are
-	if ( !empty($monthnum) && !empty($year) ) {
-		$thismonth = ''.zeroise(intval($monthnum), 2);
-		$thisyear = ''.intval($year);
-	} elseif ( !empty($w) ) {
-		// We need to get the month from MySQL
-		$thisyear = ''.intval(substr($m, 0, 4));
-		$d = (($w - 1) * 7) + 6; //it seems MySQL's weeks disagree with PHP's
-		$thismonth = $wpdb->get_var("SELECT DATE_FORMAT((DATE_ADD('${thisyear}0101', INTERVAL $d DAY) ), '%m')");
-	} elseif ( !empty($m) ) {
-		$thisyear = ''.intval(substr($m, 0, 4));
-		if ( strlen($m) < 6 )
-				$thismonth = '01';
-		else
-				$thismonth = ''.zeroise(intval(substr($m, 4, 2)), 2);
-	} else {
-		$thisyear = gmdate('Y', current_time('timestamp'));
-		$thismonth = gmdate('m', current_time('timestamp'));
-	}
-
-	$unixmonth = mktime(0, 0 , 0, $thismonth, 1, $thisyear);
-
-	// Get the next and previous month and year with at least one post
-	$previous = $wpdb->get_row("SELECT DISTINCT MONTH(post_date) AS month, YEAR(post_date) AS year
-		FROM $wpdb->posts
-		WHERE post_date < '$thisyear-$thismonth-01'
-		AND post_type = 'post' AND post_status = 'publish'
-			ORDER BY post_date DESC
-			LIMIT 1");
-	$next = $wpdb->get_row("SELECT	DISTINCT MONTH(post_date) AS month, YEAR(post_date) AS year
-		FROM $wpdb->posts
-		WHERE post_date >	'$thisyear-$thismonth-01'
-		AND MONTH( post_date ) != MONTH( '$thisyear-$thismonth-01' )
-		AND post_type = 'post' AND post_status = 'publish'
-			ORDER	BY post_date ASC
-			LIMIT 1");
-
-	echo '<table  summary="' . __('Calendar') . '">
-	<caption>' . sprintf(_c('%1$s %2$s|Used as a calendar caption'), $wp_locale->get_month($thismonth), date('Y', $unixmonth)) . '</caption>
-	<thead>
-	<tr>';
-
-	$myweek = array();
-
-	for ( $wdcount=0; $wdcount<=6; $wdcount++ ) {
-		$myweek[] = $wp_locale->get_weekday(($wdcount+$week_begins)%7);
-	}
-
-	foreach ( $myweek as $wd ) {
-
-		for($week_num=0;$week_num<=6;$week_num++){
-			$week_name = $wp_locale->get_weekday($week_num);
-			if ($week_name === $wd) break;
+	$head_pattrn = '<thead>\s*<tr>\s*(<th[^>]*>.*<\/th>)\s*(<th[^>]*>.*<\/th>)\s*(<th[^>]*>.*<\/th>)\s*(<th[^>]*>.*<\/th>)\s*(<th[^>]*>.*<\/th>)\s*(<th[^>]*>.*<\/th>)\s*(<th[^>]*>.*<\/th>)\s*<\/tr>\s*<\/thead>';
+	if(preg_match('/'. $head_pattrn . '/s' ,$calendar,$head_match)){
+		$sun_index = 1 - $week_begins;
+		if ($sun_index < 1) $sun_index = $sun_index +7;
+		$sat_index = 7 - $week_begins;
+		if ($sat_index < 1) $sat_index = $sat_index +7;
+		
+		$sun_head = $head_match[$sun_index];
+		$sat_head = $head_match[$sat_index];
+		
+		$pattrn = '(<th[^>]*>)(.*)(<\/th>)';
+		if(preg_match('/'. $pattrn . '/' ,$sun_head,$sun_match)){
+			$sun_head_after = $sun_match[1] . '<span style="color: ' . $sun_color . '">' . $sun_match[2] . '</span>'. $sun_match[3];
+			$calendar = str_replace($sun_head,$sun_head_after,$calendar);
 		}
-		
-		$day_name = (true == $initial) ? $wp_locale->get_weekday_initial($wd) : $wp_locale->get_weekday_abbrev($wd);
-		if ($week_num ==0) $day_name = '<span style="color: ' . $sun_color . '">' . $day_name . '</span>';
-		if ($week_num ==6) $day_name = '<span style="color: ' . $sat_color . '">' . $day_name . '</span>';
-		echo "\n\t\t<th align=\"center\" abbr=\"$wd\" scope=\"col\" title=\"$wd\">$day_name</th>";
-	}
-
-	echo '
-	</tr>
-	</thead>
-
-	<tfoot>
-	<tr>';
-
-	if ( $previous ) {
-		echo "\n\t\t".'<td abbr="' . $wp_locale->get_month($previous->month) . '" colspan="3" id="prev"><a href="' .
-		get_month_link($previous->year, $previous->month) . '" title="' . sprintf(__('View posts for %1$s %2$s'), $wp_locale->get_month($previous->month),
-			date('Y', mktime(0, 0 , 0, $previous->month, 1, $previous->year))) . '">&laquo; ' . $wp_locale->get_month_abbrev($wp_locale->get_month($previous->month)) . '</a></td>';
-	} else {
-		echo "\n\t\t".'<td colspan="3" id="prev" class="pad">&nbsp;</td>';
-	}
-
-	echo "\n\t\t".'<td class="pad">&nbsp;</td>';
-
-	if ( $next ) {
-		echo "\n\t\t".'<td abbr="' . $wp_locale->get_month($next->month) . '" colspan="3" id="next"><a href="' .
-		get_month_link($next->year, $next->month) . '" title="' . sprintf(__('View posts for %1$s %2$s'), $wp_locale->get_month($next->month),
-			date('Y', mktime(0, 0 , 0, $next->month, 1, $next->year))) . '">' . $wp_locale->get_month_abbrev($wp_locale->get_month($next->month)) . ' &raquo;</a></td>';
-	} else {
-		echo "\n\t\t".'<td colspan="3" id="next" class="pad">&nbsp;</td>';
-	}
-
-	echo '
-	</tr>
-	</tfoot>
-
-	<tbody>
-	<tr>';
-
-	// Get days with posts
-	$dayswithposts = $wpdb->get_results("SELECT DISTINCT DAYOFMONTH(post_date)
-		FROM $wpdb->posts WHERE MONTH(post_date) = '$thismonth'
-		AND YEAR(post_date) = '$thisyear'
-		AND post_type = 'post' AND post_status = 'publish'
-		AND post_date < '" . current_time('mysql') . '\'', ARRAY_N);
-	if ( $dayswithposts ) {
-		foreach ( (array) $dayswithposts as $daywith ) {
-			$daywithpost[] = $daywith[0];
+		if(preg_match('/'. $pattrn . '/' ,$sat_head,$sat_match)){
+			$sat_head_after = $sat_match[1] . '<span style="color: ' . $sat_color . '">' . $sat_match[2] . '</span>'. $sat_match[3];
+			$calendar = str_replace($sat_head,$sat_head_after,$calendar);
 		}
-	} else {
-		$daywithpost = array();
-	}
-
-	if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false || strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'camino') !== false || strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'safari') !== false)
-		$ak_title_separator = "\n";
-	else
-		$ak_title_separator = ', ';
-
-	$ak_titles_for_day = array();
-	$ak_post_titles = $wpdb->get_results("SELECT post_title, DAYOFMONTH(post_date) as dom "
-		."FROM $wpdb->posts "
-		."WHERE YEAR(post_date) = '$thisyear' "
-		."AND MONTH(post_date) = '$thismonth' "
-		."AND post_date < '".current_time('mysql')."' "
-		."AND post_type = 'post' AND post_status = 'publish'"
-	);
-	if ( $ak_post_titles ) {
-		foreach ( (array) $ak_post_titles as $ak_post_title ) {
-
-				$post_title = apply_filters( "the_title", $ak_post_title->post_title );
-				$post_title = str_replace('"', '&quot;', wptexturize( $post_title ));
-
-				if ( empty($ak_titles_for_day['day_'.$ak_post_title->dom]) )
-					$ak_titles_for_day['day_'.$ak_post_title->dom] = '';
-				if ( empty($ak_titles_for_day["$ak_post_title->dom"]) ) // first one
-					$ak_titles_for_day["$ak_post_title->dom"] = $post_title;
-				else
-					$ak_titles_for_day["$ak_post_title->dom"] .= $ak_title_separator . $post_title;
-		}
-	}
-
-
-	// See how much we should pad in the beginning
-	$pad = calendar_week_mod(date('w', $unixmonth)-$week_begins);
-	if ( 0 != $pad )
-		echo "\n\t\t".'<td colspan="'.$pad.'" class="pad">&nbsp;</td>';
-
-	$daysinmonth = intval(date('t', $unixmonth));
-	for ( $day = 1; $day <= $daysinmonth; ++$day ) {
-		if ( isset($newrow) && $newrow )
-			echo "\n\t</tr>\n\t<tr>\n\t\t";
-		$newrow = false;
-
-		if ( $day == gmdate('j', (time() + (get_option('gmt_offset') * 3600))) && $thismonth == gmdate('m', time()+(get_option('gmt_offset') * 3600)) && $thisyear == gmdate('Y', time()+(get_option('gmt_offset') * 3600)) )
-			echo '<td id="today" align="center">';
-		else
-			echo '<td align="center">';
-
-		if ( in_array($day, $daywithpost) ) // any posts today?
-				echo '<a href="' . get_day_link($thisyear, $thismonth, $day) . "\" title=\"$ak_titles_for_day[$day]\">$day</a>";
-		else
-			echo $day;
-		echo '</td>';
-
-		if ( 6 == calendar_week_mod(date('w', mktime(0, 0 , 0, $thismonth, $day, $thisyear))-$week_begins) )
-			$newrow = true;
-	}
-
-	$pad = 7 - calendar_week_mod(date('w', mktime(0, 0 , 0, $thismonth, $day, $thisyear))-$week_begins);
-	if ( $pad != 0 && $pad != 7 )
-		echo "\n\t\t".'<td class="pad" colspan="'.$pad.'">&nbsp;</td>';
-
-	echo "\n\t</tr>\n\t</tbody>\n\t</table>";
-
-	$output = ob_get_contents();
-	ob_end_clean();
-//	echo $output;
-//	$cache[ $key ] = $output;
-//	wp_cache_set( 'get_calendar', $cache, 'calendar' );
-	return $output;
+	}
+	return $calendar;
 }
 ?>
