// Parameter initialized from request object
var TOOLMODE="";
var errmsg = [];

// Helper objects for date compares
var todayObj = new Date();

function setMode(newMode){

	// reset departure calendar as it is always visible when a mode is changed 
	document.getElementById('dep').style.display='block';
	document.getElementById('calendarWrapper').style.display='block';

	// hide route text 
	//document.getElementById('toolAreaNotification').style.display='none';
	// hide notification text 
	if (errmsg.length > 0){
		parent.document.getElementById('redirectError').style.display='block';
		errmsg = [];
	} else {
		parent.document.getElementById('redirectError').style.display='none';
	}

	// always try to close the calendars if they are initialized
	// if dep calendar exists then the dest calendar exists also
	// they came in pairs .. just like animals in Noah's Ark
	if (typeof YAHOO.finnair.calendar.dep != "undefined"){
		YAHOO.finnair.calendar.dep.hide();
		YAHOO.finnair.calendar.dest.hide();
	}
		
	mode=newMode;

	if(mode=='RETURNTRIP'){		
		// return trip - show destination calendar, hide one-way destination pulldown & wizard panel  
		document.getElementById('destCalendar').style.display='block';		
		if (YAHOO.util.Dom.hasClass("dest","oneway")){
			YAHOO.util.Dom.removeClass("dest","oneway");		
		}
		parent.document.getElementById('notificationError').style.display='none';
		document.forms[formIndex].TRIP_TYPE_SCHEDULE.value = "R";
		// If returning from oneway view select the previously selected date back to return calendar
		if (oneWayInUse){
			var destDateField = document.getElementById("destDay");   
			var destDate = destDateField.value.split('.');
			YAHOO.finnair.calendar.dest.select(YAHOO.widget.DateMath.getDate(destDate[2], (destDate[1]-1), destDate[0]));
		}
		oneWayInUse = false;
	}
	
	if(mode=='ONEWAY'){
		// oneway - hide destination calendar, show one-way destination pulldown & wizard panel 
		document.getElementById('destCalendar').style.display='none';
		YAHOO.util.Dom.addClass("dest","oneway");		
		//YAHOO.util.Dom.addClass("toolAreaNotification","narrow");
		parent.document.getElementById('notificationError').style.display='none';
		document.forms[formIndex].TRIP_TYPE_SCHEDULE.value = "O";
		oneWayInUse = true;
		// Clear the selected return date from result form but not from the displayed field
		document.forms[formIndex].retdate_day.value = "";
		document.forms[formIndex].retdate_month.value = "";
	}
	
	// update info text to show help for current mode 
	if (TOOLMODE == "1"){
		parent.resizeIframe("toolboxSelectedTool");
	}
}

// Handle calendar day select
function handleSelectDay(type,args,obj){
	// Show error only on first page load

	var dates = args[0];   
	var date = dates[0];   
	var newYear = date[0], newMonth = date[1], newDay = date[2];
	var dateObj = YAHOO.widget.DateMath.getDate(newYear, (newMonth-1), newDay);
	var depDateField = document.getElementById("depDay");   
	var destDateField = document.getElementById("destDay");   
	
	if (obj.id == "dep"){
		var arrDates = YAHOO.finnair.calendar.dest.getSelectedDates();
    	depDateField.value = newDay + "." + newMonth + "." + newYear; 
		document.forms[formIndex].date_day.value = newDay;
		document.forms[formIndex].date_month.value = (dateObj.getMonth()+1) +"."+newYear; 
		// Normally the new departure date is also the earliest possible return date
		var newReturnDate = dateObj;
		YAHOO.finnair.calendar.dest.cfg.setProperty("mindate",(newReturnDate.getMonth()+1)+"/"+newReturnDate.getDate()+"/"+newReturnDate.getFullYear());
		YAHOO.finnair.calendar.dest.cfg.setProperty("modified_today_in_use", false);
		YAHOO.finnair.calendar.dest.cfg.setProperty("start_render_date",(newReturnDate.getMonth()+1)+"/"+newReturnDate.getFullYear());

		// If the new minimun date for return calendar is after the currently selected return date we 
		// shift the calendar forward
		if (YAHOO.widget.DateMath.before(arrDates[0],dateObj)){
			YAHOO.finnair.calendar.dest.select(newReturnDate);
			YAHOO.finnair.calendar.dest.cfg.setProperty("pagedate", (newReturnDate.getMonth()+1) + "/" + newReturnDate.getFullYear());
		}
	} else {
    	destDateField.value = newDay + "." + newMonth + "." + newYear;  	
		document.forms[formIndex].retdate_day.value = newDay;
		document.forms[formIndex].retdate_month.value = (dateObj.getMonth()+1) +"."+newYear;
	} 

	// Hide the active calendar
	obj.hide();

	// render both calendars
	YAHOO.finnair.calendar.dep.render();   
	YAHOO.finnair.calendar.dest.render();   
}
var showCalendar = function(e, obj){
 obj.hide();
 this.show();
}