﻿var Calendar = {
		/*
		* parses the date string in the format yyyy-mm-dd
		* can be overloaded to support other date string formats
		*
		* returns the date object
		*/
	parse : function( dateString) {
		datePattern = /(\d\d\d\d)-(\d\d)-(\d\d)/;
		if ( result=dateString.match( datePattern)) 
		{ 
			date = new Date();
			date.setFullYear( result[1], result[2]-1, result[3]);
			return date;
		}
		else
		{
			return "Orangevolt Calendar : Parsing date '" + dateString + "' using pattern '" + datePattern + "' failed.";
		}
	},
	
		/*
		* returns the html replacing the blogger date
		*/
	renderHTML : function( date, origDateString) {
		months = [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
		
		return "<span class='cal' title='" + 
			origDateString + 
			"'><span class='cal_month'>" + 
			months[ date.getMonth()] + 
			"</span><span class='cal_day'>" + 
			date.getDate() + 
			"</span></span>";
	},
	
	inject : function() {
		$$('h2.date-header').each( function( date_header) {
			text = date_header.lastChild.nodeValue;
			date = Calendar.parse( text);			
			if( 'object'== typeof date)		// date object was returned (i.e. as expected)
			{
					date_header.lastChild.nodeValue="";
					new Insertion.Bottom( 
						date_header,
						Calendar.renderHTML( date, text)
					)
			}
			else							// not-a-date-object-but-something-else was returned -> error
			{
				new Insertion.Bottom(
					date_header,
					"<span style='color:red;font-style:italic'>" + date + "</span>"
				);
			}
		});
	},

	Calendar : function() {
		/*
		* make calendar widget unobtrusive
		* and call it after the dom tree is completely loaded
		*/
		//Event.observe( window, 'load', Calendar.inject, false); 
		FastInit.addOnLoad( Calendar.inject);
	}
};

Calendar.Calendar();

