YAHOO.namespace("booking");

YAHOO.booking.initCalendars = function(currentDateString , options) {
	var currentDate = YAHOO.calendar.common.stringToDate(currentDateString);
	options.each(function(calendarOptions) {
		if (calendarOptions) {
			var calendar = new YAHOO.widget.Calendar(null, calendarOptions.container.id);
			calendar.opt = calendarOptions;
			calendar.cfg.setProperty("mindate", YAHOO.calendar.common.stringToDate(calendarOptions.mindate));
			calendar.cfg.setProperty("maxdate", YAHOO.calendar.common.stringToDate(calendarOptions.maxdate));
			YAHOO.calendar.common.translate(calendar);
			var selectedDate = YAHOO.calendar.common.stringToDate(calendarOptions.input.getValue());
			if (selectedDate != null) {
				calendar.select(selectedDate);
			} else {
				selectedDate = YAHOO.calendar.common.stringToDate(calendarOptions.mindate);
			}
			calendar.cfg.setProperty("pagedate", selectedDate); 				
			calendar.render();
			Event.observe(calendarOptions.button, "click", function(event) {
				YAHOO.booking.showCalendar(calendar); 
			});
			calendar.selectEvent.subscribe(YAHOO.booking.handleSelect, calendar, true);
			
			YAHOO.calendar.common.calendars.push(calendar);
			Event.observe(calendarOptions.container, "click", function(event) {
				YAHOO.calendar.common.lastClicked = calendar; 
			});
		}
	});
}


YAHOO.booking.showCalendar = function(calendar) {
	YAHOO.calendar.common.lastClicked = calendar;
	var selectedDate = calendar.getSelectedDates()[0];
	if (selectedDate != null) {
		calendar.cfg.setProperty("pagedate", selectedDate); 				
	}
	calendar.render();
	calendar.show();
}

YAHOO.booking.handleSelect = function(type,args,calendar) {
    var date = args[0][0]; 
    var year = "" + date[0], month =  "" + date[1], day = "" + date[2];
    var fullDate = new Date(0);
    fullDate.setFullYear(year,month - 1,day);
    calendar.opt.input.setValue(dateFormat(fullDate, YAHOO.calendar.common.dateFormat.toLowerCase()));
    calendar.hide();
}
