YAHOO.namespace("search");

YAHOO.search.initCalendars = function(currentDateString) {
	var currentDate = YAHOO.calendar.common.ddMMyyyyToDate(currentDateString);

	YAHOO.search.startDate = new YAHOO.widget.CalendarGroup("searchStartDateCalendar","searchStartDateCalendarContainer", {PAGES:2});
    YAHOO.search.startDate.cfg.setProperty("mindate", currentDate);
	YAHOO.calendar.common.translate(YAHOO.search.startDate);
	var searchStartDateInput = $$(".searchStartDateInput")[0];
	var startDate = YAHOO.calendar.common.ddMMyyyyToDate(searchStartDateInput.value);
	YAHOO.search.startDate.select(startDate);
	YAHOO.search.startDate.cfg.setProperty("pagedate", startDate); 				
	YAHOO.search.startDate.render();
	$$(".searchStartDateButton").each(
		function(element) {
			Event.observe(element, "click", YAHOO.search.showStartDateCalendar);
		}
	);
	searchStartDateInput.readOnly = true;
	searchStartDateInput.onfocus = function(event) {
		this.blur();
	}
	YAHOO.search.startDate.selectEvent.subscribe(YAHOO.search.handleStartDateSelect, YAHOO.search.startDate, true);
	YAHOO.calendar.common.calendars.push(YAHOO.search.startDate);
	Event.observe($("searchStartDateCalendarContainer"), "click", function(event) {
		YAHOO.calendar.common.lastClicked = YAHOO.search.startDate; 
	});
	
	YAHOO.search.nightsCount = Ext.getCmp('request.nightsCount');
	YAHOO.search.nightsCount.on("select", YAHOO.search.handleNightsCountChange);	
	YAHOO.search.endDate = new YAHOO.widget.CalendarGroup("searchEndDateCalendar","searchEndDateCalendarContainer", {PAGES:2});
	YAHOO.calendar.common.translate(YAHOO.search.endDate);
	var searchEndDateInput = $$(".searchEndDateInput")[0];
	var endDate = YAHOO.calendar.common.ddMMyyyyToDate(searchEndDateInput.value);
	YAHOO.search.endDate.select(endDate);
	YAHOO.search.endDate.cfg.setProperty("pagedate", endDate);
	YAHOO.search.endDate.render();
	YAHOO.search.updateEndDateCalendar(); 				
	$$(".searchEndDateButton").each(
		function(element) {
			Event.observe(element, "click", YAHOO.search.showEndDateCalendar);
		}
	);
	searchEndDateInput.readOnly = true;
	searchEndDateInput.onfocus = function(event) {
		this.blur();
	}
	YAHOO.search.endDate.selectEvent.subscribe(YAHOO.search.handleEndDateSelect, YAHOO.search.endDate, true);
	YAHOO.calendar.common.calendars.push(YAHOO.search.endDate);
	Event.observe($("searchEndDateCalendarContainer"), "click", function(event) {
		YAHOO.calendar.common.lastClicked = YAHOO.search.endDate; 
	});
}


YAHOO.search.showStartDateCalendar = function() {
	YAHOO.calendar.common.lastClicked = YAHOO.search.startDate;
	var startDate = YAHOO.search.startDate.getSelectedDates()[0];
    YAHOO.search.startDate.cfg.setProperty("pagedate", startDate); 				
    YAHOO.search.startDate.render();
	YAHOO.search.startDate.show();
}

YAHOO.search.showEndDateCalendar = function() {
	YAHOO.calendar.common.lastClicked = YAHOO.search.endDate; 
	var endDate = YAHOO.search.endDate.getSelectedDates()[0];
    YAHOO.search.endDate.cfg.setProperty("pagedate", endDate);
    YAHOO.search.endDate.render();
	YAHOO.search.endDate.show();
}

YAHOO.search.handleStartDateSelect = function(type,args,obj) { 
    var date = args[0][0]; 
    var year = "" + date[0], month =  "" + date[1], day = "" + date[2];
    month = month.length != 2 ? "0" + month : month; 
    day = day.length != 2 ? "0" + day : day; 
    $$(".searchStartDateInput")[0].value = day + "." + month + "." + year;
    YAHOO.search.updateEndDateCalendar();
	YAHOO.search.startDate.hide();
}

YAHOO.search.updateEndDateCalendar = function() {
	var startDate = YAHOO.search.startDate.getSelectedDates()[0];

	var minDate = YAHOO.widget.DateMath.add(startDate, YAHOO.widget.DateMath.DAY, 1);
    YAHOO.search.endDate.cfg.setProperty("mindate", minDate);
    
	var maxDate = YAHOO.widget.DateMath.add(startDate, YAHOO.widget.DateMath.DAY, 15);
    YAHOO.search.endDate.cfg.setProperty("maxdate", maxDate);

    var nightsCount = parseInt(YAHOO.search.nightsCount.getValue(), 10);

    var endDate = YAHOO.widget.DateMath.add(startDate, YAHOO.widget.DateMath.DAY, nightsCount);
	YAHOO.search.endDate.select(endDate);
    YAHOO.search.endDate.cfg.setProperty("pagedate", endDate); 				
				
	YAHOO.search.endDate.render();
}

YAHOO.search.handleNightsCountChange = function() {
    var nightsCount = parseInt(YAHOO.search.nightsCount.getValue(), 10);
	var startDate = YAHOO.search.startDate.getSelectedDates()[0];

    var endDate = YAHOO.widget.DateMath.add(startDate, YAHOO.widget.DateMath.DAY, nightsCount);
	YAHOO.search.endDate.select(endDate);
    YAHOO.search.endDate.cfg.setProperty("pagedate", endDate); 				
				
	YAHOO.search.endDate.render();
}

YAHOO.search.handleEndDateSelect = function(type,args,obj) { 
    var date = args[0][0]; 
    var year = "" + date[0], month =  "" + date[1], day = "" + date[2];
    month = month.length != 2 ? "0" + month : month; 
    day = day.length != 2 ? "0" + day : day; 
    $$(".searchEndDateInput")[0].value = day + "." + month + "." + year;

	var startDate = YAHOO.search.startDate.getSelectedDates()[0];
	var endDate = YAHOO.search.endDate.getSelectedDates()[0];
    
	YAHOO.search.nightsCount.setValue(YAHOO.widget.DateMath.getDayOffset(endDate, 2000) - YAHOO.widget.DateMath.getDayOffset(startDate, 2000));
	YAHOO.search.endDate.hide();
}