// JavaScript Document

// initialise the calendars
function sparkCalendar()
{
	// build new calendar objects
	var cal_startdate = new CalendarPopup();

	// calendar formatting
	cal_startdate.setCssPrefix("TEST");	
	
	// disable dates before today (cant book a skip for the past)
	// todo - for the moment dont disable dates on 1st as breaks the day-1 code below
	var now = new Date();
	if(now.getDate() != 1)
	{
		now.setDate(now.getDate()-1);
		cal_startdate.addDisabledDates(null,formatDate(now,"yyyy-MM-dd"));
	}

	// setup return value hooks
	cal_startdate.setReturnFunction("StartDate_SetNewDates");
	
	// add event handler for startdate icon click
	document.getElementById('startdate_a').onclick = function(){
		var frm = document.getElementById('bookingfrm');
		var dateStrA = getDateString(frm.startdate_year, frm.startdate_month, frm.startdate_date);
		cal_startdate.showCalendar('startdate_a',dateStrA);
		return false;
	}

	return false;	
}

// the function hook for setting values returned from startdate popup
function StartDate_SetNewDates(y,m,d)
{
	 document.forms[0].startdate_year.value=y;
	 document.forms[0].startdate_month.selectedIndex=m;
	 for (var i=0; i<document.forms[0].startdate_date.options.length; i++) {
		  if (document.forms[0].startdate_date.options[i].value==d) {
			   document.forms[0].startdate_date.selectedIndex=i;
			   }
		  }
}

// utility function - ensure two digit date months
function PadDigits(n, totalDigits) 
{ 
	n = n.toString(); 
	var pd = ''; 
	if (totalDigits > n.length) 
	{ 
		for (i=0; i < (totalDigits-n.length); i++) 
		{ 
			pd += '0'; 
		} 
	} 
	return pd + n.toString(); 
} 
	 
// utility function - get start date or null for validation routines
function getStartDateAsString()
{
	 var frm = document.forms["bookingfrm"];
	 var y = frm.startdate_year.value;
	 var m = frm.startdate_month.selectedIndex;
	 var d = frm.startdate_date.value;
	 
	 if (y=="" || m=="" || d=="") { return null; }
	 
	 d = PadDigits(d, 2);	 
	 m = PadDigits(m, 2);	 
	 
	 var str = d+'-'+m+'-'+y;
	 
	 return str;
}		 		 
	 
// utility function - generic date checker used by calendar display function (date icon on form)
function getDateString(y_obj,m_obj,d_obj)
{
	 var y = y_obj.options[y_obj.selectedIndex].value;
	 var m = m_obj.selectedIndex;
	 var d = d_obj.options[d_obj.selectedIndex].value;

	 // if no valid date return today
	 if (isNaN(y) || m < 1 || isNaN(d))
	 {
		 var today = new Date();
		 return str = today.getFullYear() + '-' + (today.getMonth()+1) + '-' + today.getDate();
	 }
	 
	 // valid date found so return it
	 return str = y+'-'+m+'-'+d;
}




// global startup function
/////////////////////////////////////////////////
if(document.getElementById && document.createTextNode)
{
	addEvent(window, 'load', function(e)
	{
		// start the calendar functions
		sparkCalendar();
		
		// setup the days-in-a-month changer
		var form = document.getElementById("bookingfrm");
		populate(form);
	});
}