var pickupCalendar;
var dropoffCalendar;

// Make calendars when the page has loaded
YAHOO.util.Event.onDOMReady(
	function()
	{
		var defaultPickUpDate = document.getElementById('pickupdate').value;
		var defaultDropOffDate = document.getElementById('dropoffdate').value;

		pickupCalendar = new YAHOO.widget.Calendar(
			'pickupcalendar',
			{
				pagedate: defaultPickUpDate.substring(3, 5) + '/' + defaultPickUpDate.substring(6, 10),
				selected: defaultPickUpDate.substring(3, 5) + '/' + defaultPickUpDate.substring(0, 2) + '/' + defaultPickUpDate.substring(6, 10),
				mindate: new Date(),
				title: '',
				close: false,
				iframe: true,
				LOCALE_WEEKDAYS: 'short',
				HIDE_BLANK_WEEKS: true,
				START_WEEKDAY: 1
			}
		);
		
		pickupCalendar.selectEvent.subscribe(
			function(type, args, obj) {
				var date = args[0][0];

				var year = date[0].toString();
				var month = (date[1] <= 9 ? "0" + date[1].toString() : date[1].toString());
				var day = (date[2] <= 9 ? "0" + date[2].toString() : date[2].toString());
				
				var dateString = day + "/" + month + "/" + year;
				
				document.getElementById('pickupdate').value = dateString;
				document.getElementById('dropoffdate').value = dateString;
				
				dropoffCalendar.cfg.setProperty('pagedate', dateString.substring(3));
				dropoffCalendar.cfg.setProperty('selected', dateString);
				dropoffCalendar.render();
				
				obj.hide();
			},
			pickupCalendar,
			true
		);
		
		pickupCalendar.render();
		
		
		dropoffCalendar = new YAHOO.widget.Calendar(
			'dropoffcalendar',
			{
				pagedate: defaultDropOffDate.substring(3, 5) + '/' + defaultDropOffDate.substring(6, 10),
				selected: defaultDropOffDate.substring(3, 5) + '/' + defaultDropOffDate.substring(0, 2) + '/' + defaultDropOffDate.substring(6, 10),
				mindate: new Date(),
				title: '',
				close: false,
				iframe: true,
				LOCALE_WEEKDAYS: 'short',
				HIDE_BLANK_WEEKS: true,
				START_WEEKDAY: 1
			}
		);
		
		dropoffCalendar.selectEvent.subscribe(
			function(type, args, obj) {
				var date = args[0][0];
				
				var year = date[0].toString();
				var month = (date[1] <= 9 ? "0" + date[1].toString() : date[1].toString());
				var day = (date[2] <= 9 ? "0" + date[2].toString() : date[2].toString());
				
				var dateString = day + "/" + month + "/" + year;
				
				document.getElementById('dropoffdate').value = dateString;
				
				obj.hide();
			},
			dropoffCalendar,
			true
		);
		
		dropoffCalendar.render();
	}
);


// Open calendars when the text inputs are clicked.
// Note that clicking the calendar icon triggers the text input, which calls this
YAHOO.util.Event.addListener('pickupdate', 'focus', function() {
	pickupCalendar.show();
});

YAHOO.util.Event.addListener('dropoffdate', 'focus', function() {
	dropoffCalendar.show();
});


// Hide calendars when esc is pressed
YAHOO.util.Event.addListener(document, 'keypress', function(e)
{
	if (e.keyCode == 27) // esc
	{
		pickupCalendar.hide();
		dropoffCalendar.hide();
	}
});


// Hide calendars on click away.
YAHOO.util.Event.addListener(document, 'click', function(e)
{
	var target = (e && e.target) || (event && event.srcElement);

	if (target.id != 'pickupdate' && target.id != 'pickupdateimg')
	{
		if (checkParentIsCalendarDiv(target, 'pickupcalendar') === false)
		{
			pickupCalendar.hide();
		}
	}

	if (target.id != 'dropoffdate' && target.id != 'dropoffdateimg')
	{
		if (checkParentIsCalendarDiv(target, 'dropoffcalendar') === false)
		{
			dropoffCalendar.hide();
		}
	}
});

checkParentIsCalendarDiv = function(t, calendarDivId)
{
	while (t.parentNode)
	{
		if (t == document.getElementById(calendarDivId))
		{
			return true;
		}
		
		t = t.parentNode;
	}
	
	return false;
}

