
function selectField(eventType) 
{
	unflagError(eventType.target); // get rid of any error styles that could be applied to this field
	eventType.target.select(); // highlight the field, so the user can start typing over the existing value
}

function getDateFromString(dateString) 
{
	// replace dashes and periods with slashes
	dateString = dateString.replace(/-/g,"/");
	dateString = dateString.replace(/\./g,"/");
	
	// convert no year format to show year
	dateString = convertNoYearFormat(dateString);

	// convert 2 digit years to 4
	dateString = dateString.replace(/\/(\d\d)$/,"/20$1");
	
	var validFormat = /(^\d\d\/\d\d\/\d\d\d\d$)/;
	if ( !validFormat.test(dateString) ) return null;
	else return new Date(dateString);
}

function updateDate(eventType) 
{
	unflagError(eventType.target); // get rid of any error styles that could be applied to this field
	var dateField = eventType.target; // target element that changed
	var value = trim(dateField.value); // trim whitespace
	var date = validatedDate(value);
	SearchForm.setByFieldId(eventType.target.id,date,false);
}

function changedDate(eventType) {
	var dateField = eventType.target; // target element that changed
	var value = trim(dateField.value); // trim whitespace
	var date = validatedDate(value);
	SearchForm.setByFieldId(eventType.target.id,date,false);
	SearchForm.initField(eventType.target.id);
}

function validateDate(dateField,suppressErrorMessages) {
	// replace dashes and periods with slashes
	dateField.value = dateField.value.replace(/-/g,"/");
	dateField.value = dateField.value.replace(/\./g,"/");
	
	// convert no year format to show year
	dateField.value = convertNoYearFormat(dateField.value);

	// convert 2 digit years to 4
	dateField.value = dateField.value.replace(/\/(\d\d)$/,"/20$1");

	var validFormat = /(^\d\d\/\d\d\/\d\d\d\d$)/;
	
	if ( !validFormat.test(dateField.value) ) { 
		if ( !suppressErrorMessages ) {
			if ( dateField.id == "outboundDate" ) {
				alert("Please enter a valid departure date.  Enter using the format mm/dd/yyyy");
			}
			if ( dateField.id == "inboundDate" ) {
				alert("Please enter a valid return date.  Enter using the format mm/dd/yyyy");
			}
			dateField.focus();
		}
		return false;
	}
	else {
		var thisDate = new Date(dateField.value);
		var dayOfWeekDivID = dateField.id + "DayOfWeek";
		get(dayOfWeekDivID).innerHTML = thisDate.format("DD");
		return true;
	}
}

function convertNoYearFormat(dateString) {
	var now = getCurrentDateRef();
	todaysMonth = now.getMonth() + 1;
	todaysDate = now.getDate();
	todaysYear = now.getFullYear();
	
	var noYearFormat = /^\d+\/\d+$/;
	if ( noYearFormat.test(dateString) ) {
		var month = parseInt(dateString.split("/")[0],10);
		var date = parseInt(dateString.split("/")[1],10);
		if ( month < todaysMonth || month == todaysMonth && date < todaysDate ) {
			dateString += "/" + (todaysYear + 1);
		}
		else {
			dateString += "/" + todaysYear;
		}
	}
	return dateString;
}

var defaultDaysBetweenDates = 14;

function resolveLinkPath(hrefObj) {
	hrefObj.href = resolveScheme(hrefObj.href);
}

function showCalendars(eventType) {
	if ( eventType.target.id == "outbound-calendarIcon" ) {
		try { 
				showCalendar("outboundDate",SearchForm.getOutboundDate().getMonth(),SearchForm.getOutboundDate().getFullYear());
				get("outboundFlexibility").style.display = "none";
				if(get("searchBox").className == "roundTrip"){
					get("inboundFlexibility").style.display = "block"; 
				}
			}
		catch(e) { showCalendar("outboundDate",SearchForm.getDefaultOutboundDate().getMonth(),SearchForm.getDefaultOutboundDate().getFullYear()); }
	}	
	else if ( eventType.target.id == "inbound-calendarIcon" ) {
		try { 
				showCalendar("inboundDate",SearchForm.getInboundDate().getMonth(),SearchForm.getInboundDate().getFullYear());
				get("inboundFlexibility").style.display = "none";
				if(get("searchBox").className == "roundTrip" || get("searchBox").className == "oneWay"){
					get("outboundFlexibility").style.display = "block"; 
				}
				 
				}
		catch(e) { showCalendar("inboundDate",SearchForm.getDefaultInboundDate().getMonth(),SearchForm.getDefaultInboundDate().getFullYear()); }
	}
}

function showCalendar(dateFieldID,month,year) {
	var output = getCalendarMonthOutput(dateFieldID,month,year);
	var calendarDiv = createElement("div","calendarDiv");
	calendarDiv.style.top = getTopPos(get(dateFieldID)) + "px";
	calendarDiv.style.left = getRightPos(get(dateFieldID)) + "px";
	calendarDiv.innerHTML = output;
	calendarDiv.style.display = "block";
}

function getCalendarMonthOutput(dateFieldID,month,year) {
	var currentDate = new Date(year,month,1,12,0,0,0);
	var lastDayLastMonth = currentDate.clone();
	lastDayLastMonth.addDay(-1);
	var prevMonth = lastDayLastMonth.getMonth();
	var prevMonthYear = lastDayLastMonth.getFullYear();
	
	var firstDayNextMonth = currentDate.clone();
	if ( firstDayNextMonth.getMonth() < 11 ) {
		firstDayNextMonth.setMonth(firstDayNextMonth.getMonth()+1);
	} else {
		 firstDayNextMonth.setMonth(0);
		 firstDayNextMonth.setFullYear(firstDayNextMonth.getFullYear()+1)
	}
	var nextMonth = firstDayNextMonth.getMonth();
	var nextMonthYear = firstDayNextMonth.getFullYear();
	
	//var prevMonth = 0;var prevYear= 0;var nextMonth = 0;var nextYear = 0;
	
	// calculate earliest travel date ( 2 days after today )
	var earliestTravelDate = getCurrentDateRef();
	earliestTravelDate.setHours(0);earliestTravelDate.setMinutes(0);earliestTravelDate.setSeconds(0);earliestTravelDate.setMilliseconds(0);
	//earliestTravelDate.addDay(2);
	
	// calculate latest travel date ( a year from yesterday )
	var latestTravelDate = earliestTravelDate.clone();
	latestTravelDate.setFullYear( latestTravelDate.getFullYear() + 1 );
	latestTravelDate.addDay(-1);
	
	var showPrevMonth = false;
	if ( lastDayLastMonth.getTime() >= earliestTravelDate.getTime() ) {
		showPrevMonth = true;
	}
	
	var showNextMonth = false;
	if ( firstDayNextMonth.getTime() <= latestTravelDate.getTime() ) {
		showNextMonth = true;
	}

	var output = "<table class=\"calendar " + dateFieldID + "\" cellspacing=0 cellpadding=2><tr><th></th>";
	
	
	if ( showPrevMonth ) {
		output += "<th><a href='' onclick=\"showCalendar('" + dateFieldID + "'," + prevMonth + "," + prevMonthYear + ");return false\"><img class='calendarArrow' src='" + imageHost + "/images/su08/calendarArrowLeft.gif' width='9' height='13' alt='Previous Month'/></a></th>";
	}
	else {
		output += "<th>&nbsp;</th>";
	}
	
	output += "<th colspan=3>" + currentDate.getFullMonthName() + "&nbsp;" + currentDate.getFullYear() + "</th>";

	if ( showNextMonth ) {
		output += "<th><a href='' onclick=\"showCalendar('" + dateFieldID + "'," + nextMonth + "," + nextMonthYear + ");return false\"><img class='calendarArrow' src='" + imageHost + "/images/su08/calendarArrowRight.gif' width='9' height='13' alt='Next Month'/></a></th>";
	}
	else {
		output += "<th>&nbsp;</th>";
	}

	output += "<th><a href='' onclick=\"hideCalendar();return false\"><img style=\"margin-left:5px\" src='" + imageHost + "/images/su08/closeWindowButton.gif' width='15' height='15' alt='Close Calendar'/></a></th></tr>";
	
	output += "<tr><td class=\"dayOfWeek\">Su</td><td class=\"dayOfWeek\">Mo</td><td class=\"dayOfWeek\">Tu</td><td class=\"dayOfWeek\">We</td><td class=\"dayOfWeek\">Th</td><td class=\"dayOfWeek\">Fr</td><td class=\"dayOfWeek\">Sa</td></tr>";
	
	
	// pad days of week to calendar if first day of month is not a Sunday
	var startDayOfWeek = 0;
	while ( currentDate.getDay() > startDayOfWeek ) {
		output += "<td>&nbsp;</td>";
		startDayOfWeek++;
	} 
	
	while ( currentDate.getMonth() == month || currentDate.getDay() != 0 ) 
	{
		var calDateClass = "invalid";
		var validDate = false;
		
		if ( currentDate.getTime() >= earliestTravelDate && currentDate.getTime() <= latestTravelDate ) {
			calDateClass = "validDate";
			validDate = true;
			
			try {
				
				if ( currentDate.getTime() == SearchForm.getOutboundDate().getTime() ) {
					//alert(currentDate.getDate() +"\n"+	currentDate.getMonth() +"\n"+	currentDate.getFullYear() +"\n");
					calDateClass += " date1";
				}
				if ( SearchForm.tripType > 1 && currentDate.getTime() == SearchForm.getInboundDate().getTime() ) calDateClass += " date2";
			}
			catch(e) {} // above block won't work when there is an invalid date in one of the fields

	    }
	
		if ( currentDate.getDay() == 0 ) output += "<tr>";
		
		if ( currentDate.getMonth() != month ) {
			output += "<td>&nbsp;</td>"; // padded days after last day of month
		}
		else if ( validDate ) {
			output += "<td onclick='chooseDate(\"" + dateFieldID + "\"," + currentDate.getTime() + ");return false' class='" + calDateClass + "'><a id='calChoice' href='#' onclick='return false'>" + currentDate.getDate() + "</a></td>";
		}
		else {
			output += "<td class='" + calDateClass + "'>" + currentDate.getDate() + "</td>";
		}
		
		if ( currentDate.getDay() == 6 ) output += "</tr>";
		currentDate.addDay();
	}
	output += "</table>";

	return output;
}

// JQUERY 
      	
jQuery(document).ready(function()
{

      	jQuery("img#checkIn-calendarIcon.calendarLink").click(function (e) 
		{
      		if(jQuery.browser.safari)
			{
      			showCalendar("checkInDate",(new Date(jQuery("#checkInDate").val())).getMonth(),(new Date(jQuery("#checkInDate").val())).getFullYear());
      		}
			else
			{
      			showCalendar("checkInDate",(new Date(jQuery("#checkInDate").val())).getMonth(),(new Date(jQuery("#checkInDate").val())).getFullYear()+100);
      		}
      		return false;
      	});
      	
      	jQuery("img#checkOut-calendarIcon.calendarLink").click(function (e) 
		{
      		if(jQuery.browser.safari)
			{
      			showCalendar("checkOutDate",(new Date(jQuery("#checkOutDate").val())).getMonth(),(new Date(jQuery("#checkOutDate").val())).getFullYear());
      		}
			else
			{
      			showCalendar("checkOutDate",(new Date(jQuery("#checkOutDate").val())).getMonth(),(new Date(jQuery("#checkOutDate").val())).getFullYear()+100);
      		}
      		return false;
      	});
      	
      	jQuery("input.dateField").change(function (e) {
			var value = trim(this.value); // trim whitespace
			var date = validatedDate(value);
			SearchForm.setByFieldId(this.id,date,false);
			SearchForm.initField(this.id);
      	});
		
      	jQuery("a.footerQuestion").click(showAnswer);
		
});

//Ni, 2010-03-15 add for SU Footer
function showAnswer() {
	var targetDiv = jQuery( jQuery(this).attr("target") );
	if ( targetDiv.is(':hidden') ) jQuery("div.footAnswer:visible").hide();
	jQuery(targetDiv).slideToggle();
	return false;
}
