// JavaScript Document
// custom functions by DBS

// calendar initialisation, calendar support functions, booking form permit visablity toggler, form validation
// © 2006 Matthew Harris, DBS, www.dbs-uk.co.uk

// this MUST be included after calendar and validation JS files

// initialise the calendars
function sparkCalendar()
{
	// build new calendar objects
	var cal_select_date = new CalendarPopup();

	// calendar formatting
	cal_select_date.setCssPrefix("TEST");	
	
	// disable dates before today (cant book 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_select_date.addDisabledDates(null,formatDate(now,"yyyy-MM-dd"));
	}

	// setup return value hooks
	cal_select_date.setReturnFunction("SelectDate_SetNewDates");
	
	// add event handler for startdate icon click
	if(document.getElementById('date_select'))
	{
		document.getElementById('date_select').onclick = function(){
			var frm = document.getElementById('bookavisit');
			var dateStrA = getDateString(frm.date_year, frm.date_month, frm.date_day);
			cal_select_date.showCalendar('date_select',dateStrA);
			return false;
		}
	}
	
	return false;	
}

// the function hook for setting values returned from startdate popup
function SelectDate_SetNewDates(y,m,d)
{
	var frm = document.getElementById("bookavisit");
	
	 frm.date_year.value=y;
	 frm.date_month.selectedIndex=m;
	 for (var i=0; i<frm.date_day.options.length; i++) {
		  if (frm.date_day.options[i].value==d) {
			   frm.date_day.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["bookavisit"];
	 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)
	{
		sparkCalendar();
	});
}