var calendarPanel;
var over_calendarPanel = false;
var calendarTargetId = null;
var mindate = new Date();
var maxdate = new Date();
maxdate.setDate(maxdate.getDate()+365);

YAHOO.util.Event.addListener('arr_cal', 'click', focusA);
YAHOO.util.Event.addListener('dep_cal', 'click', focusB);

function focusA() {
	document.getElementById('arrival').focus();
}
function focusB() {
	document.getElementById('departure').focus();
}
function checkDeparture() {
	var tempA = document.getElementById('arrival').value.split("/");
	var arrival = new Date(tempA[2],tempA[1]-1,tempA[0]);
	var tempB  = document.getElementById('departure').value.split("/");
	var departure = new Date(tempB[2],tempB[1]-1,tempB[0]);
	
	if(arrival >= departure) {
		arrival.setDate(arrival.getDate()+1);
		var newDay = arrival.getDate();
		if (newDay < 10) newDay = '0'+newDay;
		var newMonth = arrival.getMonth()+1;
		if (newMonth < 10) newMonth = '0'+newMonth;
		var newYear = arrival.getFullYear();
		var newDep = newDay + "/" + newMonth + "/" + newYear;
		document.getElementById('departure').value = newDep;	
	}

}

function popupCalendar() {
	calendarPanel = new YAHOO.widget.Calendar("calendar","calendarPanel");
	
	calendarPanel.cfg.setProperty("DATE_FIELD_DELIMITER", "/");
	calendarPanel.cfg.setProperty("MDY_DAY_POSITION", 1);
	calendarPanel.cfg.setProperty("MDY_MONTH_POSITION", 2);
	calendarPanel.cfg.setProperty("MDY_YEAR_POSITION", 3);
	calendarPanel.cfg.setProperty("MD_DAY_POSITION", 1);
	calendarPanel.cfg.setProperty("MD_MONTH_POSITION", 2);
	calendarPanel.cfg.setProperty("mindate", mindate);
	calendarPanel.cfg.setProperty("maxdate", maxdate);
	
	calendarPanel.cfg.setProperty("MONTHS_SHORT",   ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"]);
	calendarPanel.cfg.setProperty("MONTHS_LONG",    ["Januari", "Fenruari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"]);
	calendarPanel.cfg.setProperty("WEEKDAYS_1CHAR", ["Z", "M", "D", "W", "D", "V", "Z"]);
	calendarPanel.cfg.setProperty("WEEKDAYS_SHORT", ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za"]);
	calendarPanel.cfg.setProperty("WEEKDAYS_MEDIUM",["Zon", "Maa", "Din", "Woe", "Don", "Vri", "Zat"]);
	calendarPanel.cfg.setProperty("WEEKDAYS_LONG",  ["Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag", "Zaterdag"]);
	
	calendarPanel.selectEvent.subscribe(calendarSelectHandler,calendarPanel, true);
	calendarPanel.renderEvent.subscribe(setupListeners,calendarPanel, true);
	YAHOO.util.Event.addListener('arrival', 'focus', showCal);
	YAHOO.util.Event.addListener('arrival', 'blur', hideCal);
	YAHOO.util.Event.addListener('departure', 'focus', showCal);
	YAHOO.util.Event.addListener('departure', 'blur', hideCal);
	YAHOO.util.Dom.setStyle('calendarPanel', 'display', 'none');
	calendarPanel.render();
}

function setupListeners() {
	YAHOO.util.Event.addListener('calendarPanel', 'mouseover', overCal);
	YAHOO.util.Event.addListener('calendarPanel', 'mouseout', outCal);
}

var calendarSelectHandler = function(type,args,obj) {
	var dates = args[0];
	var date = dates[0];
	var year = date[0], month = date[1], day = date[2];

	var dateString = '';
	if (day < 10) dateString += '0';
	dateString += day + '/';
	if (month < 10) dateString += '0';
	dateString += month + '/';
	dateString += year;
	
	var inputField = document.getElementById(calendarTargetId);
	inputField.value = dateString;
	over_calendarPanel = false;
	hideCal();
}

function showCal() {
	calendarTargetId = this.id;
	calendarStr = document.getElementById(calendarTargetId).value;

	if (calendarStr != null && calendarStr.length != 0) {
		var tempDate = calendarStr.split("/");
		var year = tempDate[2];
		var month = tempDate[1];
		var day = tempDate[0];
		// Date creator function need the input string like mm/dd/yyyy
		var dateStr = month + '/' + day + '/' + year;
		var dateStrD = day + '/' + month + '/' + year;
		var date = new Date(dateStr);

		if (date != null && (day==date.getDate()) && (month==date.getMonth() + 1) && (year==date.getFullYear())) {
			calendarPanel.cfg.setProperty('selected', dateStrD);
			calendarPanel.cfg.setProperty('pagedate', date, true);
			calendarPanel.render();
		} else {
			calendarPanel.cfg.setProperty('selected', '');
			calendarPanel.cfg.setProperty('pagedate', null, true);
			calendarPanel.render();
		}
	}

	var xy = YAHOO.util.Dom.getXY(calendarTargetId);
	YAHOO.util.Dom.setStyle('calendarPanel', 'display', 'block');
	xy[1] = xy[1] + 25;
	YAHOO.util.Dom.setXY('calendarPanel', xy);
}

function hideCal() {
	if (!over_calendarPanel) {
		YAHOO.util.Dom.setStyle('calendarPanel', 'display', 'none');
		if(calendarTargetId == 'arrival') checkDeparture();
		calendarTargetId = null;
	}
}

function overCal() {
	over_calendarPanel = true;
}

function outCal() {
	over_calendarPanel = false;
}
