﻿function FareCalendarsCheckAction (_ReturnDateTimeId, _FareCalendarsCheckId, _DivCompareSitesId, _DepartAroundLabelWrapperId, _DepartLabelWrapperId, _StayAboutWrapper ) {
	if ($( _FareCalendarsCheckId ).checked) { 
		$( _ReturnDateTimeId ).hide();
		$( _DivCompareSitesId ).hide();
		$( _DepartLabelWrapperId ).hide();
		$( _DepartAroundLabelWrapperId ).show();
		$( _StayAboutWrapper ).show();

	} else { 
		$( _StayAboutWrapper ).hide();
		$( _ReturnDateTimeId ).show(); 
		$( _DivCompareSitesId ).show(); 
		$( _DepartAroundLabelWrapperId ).hide();
		$( _DepartLabelWrapperId ).show();
	}
}

function RoundTripAction (_ReturnDateTimeId, _FareCalendarWrapperId, _FareCalendarsCheckId, _DivCompareSitesId, _DepartAroundLabelWrapperId, _DepartLabelWrapperId, showFareCalendarOption, _StayAboutWrapper) {
	$( _FareCalendarWrapperId ).show();
	if ((showFareCalendarOption == true) && ( $( _FareCalendarsCheckId ).checked == true )) {
		$( _DivCompareSitesId ).hide();
		$( _DepartLabelWrapperId ).hide();
		$( _DepartAroundLabelWrapperId ).show();
		$( _StayAboutWrapper ).show();
	} else {
		$( _StayAboutWrapper ).hide();
		$( _ReturnDateTimeId ).show();
		$( _DivCompareSitesId ).show();
		$( _DepartAroundLabelWrapperId ).hide();
		$( _DepartLabelWrapperId ).show();
	}
}

function FormInit( _oneWayId, _RoundTripId, _ReturnDateTimeId, _FareCalendarWrapperId, _FareCalendarsCheckId, _DivCompareSitesId, _DepartAroundLabelWrapperId, _DepartLabelWrapperId, showFareCalendarOption, _StayAboutWrapper) {
	if( $( _oneWayId ).checked == true ) {
		$( _FareCalendarWrapperId ).hide();
		$( _ReturnDateTimeId ).hide();
		$( _StayAboutWrapper ).hide();
	} else {
		if ((showFareCalendarOption == true) && ( $( _FareCalendarsCheckId ).checked == true )) {
			$( _ReturnDateTimeId ).hide();
			$( _DivCompareSitesId ).hide();
			$( _DepartLabelWrapperId ).hide();
			$( _DepartAroundLabelWrapperId ).show();
			$( _StayAboutWrapper ).show();
		}
	}
}


function storeTimeStamp(){
	var elapsedTimeStamp = new Date();
	document.cookie = 'ElapsedTimeStamp='+elapsedTimeStamp.getTime();
}

function storeCalendarTimeStamp(){
	var elapsedTimeStamp = new Date();
	document.cookie = 'ElapsedCalendarTimeStamp='+elapsedTimeStamp.getTime();
}

function searchClickHandler(origin, destination, departDate, returnDate, departTimeDd , returnTimeDd , nonStop, oneWay, roundTrip, travelers, ServerDepartDate, ServerReturnDate){
	var specValid = verifyInputs(origin, destination, departDate, returnDate, departTimeDd , returnTimeDd , nonStop, oneWay, roundTrip, travelers);
	if(specValid){
		if(!ignore_popup_blocker_msg)
			specValid = setTravelProviders(origin, destination, ServerDepartDate, ServerReturnDate, nonStop, roundTrip, travelers);
		storeCalendarTimeStamp();
	}
	return specValid;
}

function verifyInputs(origin, destination, departDate, returnDate, departTimeDd , returnTimeDd , nonStop, oneWay, roundTrip, travelers) {
	var oneDayInMili = 24 * 60 * 60 * 1000;
	currDate.setHours(0); currDate.setMinutes(0); currDate.setSeconds(0); currDate.setMilliseconds(0);


	// validate origin
	if($(origin).value == '') {
		alert('Please insert an origin airport or city');
		return false;
	}

	// validate departure date
	var depDateV = $(departDate).value;
	var depDate = getDateFromString(depDateV, dateFormat);
	if( !isDate(depDateV) ) {
		alert('Please insert a valid depart date (' + dateFormat.toLowerCase() + ').');
		return false;
	}
	
	// departure date not in the past?
	if( depDate.valueOf() < currDate.valueOf() ) {
		alert('Please insert a depart date that has not yet occurred.');
		return false;
	}
	
	// departure date less than 330 days in the future?
	if( (depDate.valueOf() - (331*oneDayInMili)) > currDate.valueOf() ) {
		alert('Your travel dates must be within 11 months from today.');
		return false;
	}	


      // if trip type is round-trip then we need to validate destination parameters
      if($(roundTrip).checked == true) {

      		// validate destination
		if($(destination).value == '') {
			alert('Please insert a destination airport or city');
			return false;
		}
		
		// validate return date
		var retDateV = $(returnDate).value;
		var retDate = getDateFromString(retDateV, dateFormat);
		if( !isDate( retDateV ) ) {
			alert('Please insert a valid return date (' + dateFormat.toLowerCase() + ').');
			return false;
		}

	 	// return date not in the past?
    	 	if( retDate - currDate < 0 ) {
    	     		alert('Please insert a return date that has not yet occurred.');
	     		return false;
		}	

		// return date less than 330 days in the future?
		if( (retDate.valueOf() - (331*oneDayInMili)) > currDate.valueOf() ) {
			alert('Your travel dates must be within 11 months from today.');
			return false;
		}

		// compare dates
		if( depDate.valueOf() > retDate.valueOf() ) {
			alert('Please insert a depart date not inferior to the return date.');
			return false;
		}
	}
	return true;
}

function setTravelProviders(origin, destination, departDate, returnDate, nonStop, roundTrip, travelers){
	var tmp = "";
	var csChecked = '';
	var csUnchecked = '';
	var return_value = true;
	$A( $$(".Spec_Compare") ).each( 
		function( item ){
			if( item.select("input").first().checked == 1 ){
				csChecked = csChecked + (csChecked==''?'':'|') + item.readAttribute("provider");
				var originParsed = encodeURIComponent($(origin).value);
				var destinationParsed = encodeURIComponent($(destination).value);				
				
				var _url = "DeepLinkEntry.aspx?Provider="+item.readAttribute("provider")+
					"&origin="+originParsed+
					"&destination="+destinationParsed+
					"&departDate="+$(departDate).value+
					"&returnDate="+$(returnDate).value+
					"&NonStop="+$(nonStop).checked+
					"&isRoundTrip="+$(roundTrip).checked+
					"&Travelers="+$(travelers ).value.replace('__ossli_','')+
					"&CompareSite=true"+
					"&AdId="+item.readAttribute("adid");

				try {
					var newWindow = window.open(_url, '_blank', 'resizable,toolbar=yes,location=yes,scrollbars=yes');
					newWindow.blur();
					// Google analytics tracking	
					var company = item.readAttribute("provider");
					if (company != '')
						company = company + '/';
					pageTracker._trackPageview('/Outbound/CS/'+company+item.readAttribute("adid")+'/1/'+item.readAttribute("locale")+'/'+item.readAttribute("cpc"));

				} catch(e) {
					showPopupBlocker();
					return_value = false;
				}
				
				tmp += ""+ item.readAttribute("provider") + ',';
			} else {
				csUnchecked = csUnchecked + (csUnchecked==''?'':'|') + item.readAttribute("provider");
			}
		}
	);
	window.focus();
	document.cookie = 'csChecked='+csChecked;
	document.cookie = 'csUnchecked='+csUnchecked;
	$("wtCompareToSites_ti").value = tmp.substr( 0 , tmp.length - 1 );
	return $("wtCompareToSites_ti").value && return_value;
}





function DaysArray(n) {
	var result;
	
	for (var i = 1; i <= n; i++) {
		result[i] = 31;
		if (i==4 || i==6 || i==9 || i==11) { result[i] = 30; }
		if (i==2) { result[i] = 29; }
	} 

	return result;
}

function handleDateOnChange(inputId, serverInputId){
	var elem = $(inputId);
	var newDate = getDateFromString(elem.value, dateFormat);
	elem.value = getStringFromDate(newDate, dateFormat);
	
	var serverElem = $(serverInputId);
	serverElem.value = getStringFromDate(newDate, serverDateFormat);
}


function isDate(dtStr){
	var dd = getDateFromString(dtStr,dateFormat);
	if(dd > 0) { return true; } else { return false; }
}

function computeLaterDate(dateInput1, dateInput2) {
	dtString1 = $(dateInput1).value;
	dtString2 = $(dateInput2).value;
	
	if( !isDate(dtString1) )
		return;
	
	var milisecondsToAdd = 24 * 60 * 60 * 1000; // 24 hours
	
	try {
		var dt1 = new Date( getDateFromFormat(dtString1, dateFormat) );
		var dt2 = new Date( getDateFromFormat(dtString2, dateFormat) );
		
		if(dt2 < dt1) {
			$(dateInput2).style.color = 'black';
			dt2 = new Date(dt1.getTime() + milisecondsToAdd);
			$(dateInput2).value = formatDate(dt2, dateFormat);
			$(dateInput2).onchange();
		}
	} catch(e) { }
}


function computeBeforeDate(dateInput1, dateInput2) {
	dtString1 = $(dateInput1).value;
	dtString2 = $(dateInput2).value;
	
	if( !isDate(dtString2) )
		return;
	
	try {
		var dt1 = new Date( getDateFromFormat(dtString1, dateFormat) );
		var dt2 = new Date( getDateFromFormat(dtString2, dateFormat) );
		
		if( !isDate( $(dateInput1).value ) || dt2 < dt1) {		
			var dateTimeTmp = new Date();
			var currentDate = new Date( dateTimeTmp.getFullYear(), dateTimeTmp.getMonth(), dateTimeTmp.getDate() );
			
			dt1 = dt2;
			if(dt2 < currentDate) {
				dt1 = dateTimeTmp;
			}
			
			$(dateInput1).style.color = 'black';
			$(dateInput1).value = formatDate(dt1, dateFormat);
			$(dateInput1).onchange();
		}
	} catch(e) { }
}


//CompareSites Dynamic Update
var csImpressions='';
var csOrigin='';
var csDestination='';
var csIsOneWay='';


function compareSitesUpdate(id,originId,destinationId,oneWayId,impressions, scenarioCode, locale, RoundTripId, FareCalendarsCheckId, showFareCalendarOption){
	if (
			( $( oneWayId ).checked == true ) || 
			( showFareCalendarOption == false) || 
			(
				( $( RoundTripId ).checked == true ) && 
				( showFareCalendarOption == true ) &&
				( $( FareCalendarsCheckId ).checked == false )
			)
		  ) 
	{

	var origin = $(originId).value;
	var destination = $(destinationId).value;
	var isOneWay = $(oneWayId).checked;

	if(csOrigin != origin || csDestination != destination || csIsOneWay != isOneWay){
		var csChecked = '';
		var csUnchecked = '';
		$A( $$(".Spec_Compare") ).each(
			function( item ){
				if( item.select("input").first().checked == 1 ){
					csChecked = csChecked + (csChecked==''?'':'|') + item.readAttribute("provider");
				} else {
					csUnchecked = csUnchecked + (csUnchecked==''?'':'|') + item.readAttribute("provider");
				}
			}
		);
		var content;
		var url = '/MetaSearchAjax/CompareSites.aspx?'+  
			'Origin='+encodeURIComponent(origin)+  
			'&Destination='+encodeURIComponent(destination)+  
			'&IsOneWay='+encodeURIComponent(isOneWay)+  
			'&Impressions='+encodeURIComponent(impressions)+
			'&Checked='+encodeURIComponent(csChecked)+
			'&Unchecked='+encodeURIComponent(csUnchecked)+
			'&PrevOrigin='+encodeURIComponent(csOrigin)+  
			'&PrevDestination='+encodeURIComponent(csDestination) +
			'&PrevIsOneWay='+encodeURIComponent(csIsOneWay) + 
			'&ScenarioCode=' + scenarioCode + 
			'&LocaleCode=' + locale;

		csOrigin = origin;
		csDestination = destination;
		csIsOneWay = isOneWay;

		new Ajax.Request(url,{ 
			method:'get',
			onSuccess: function(response){  
				var divContent = $(id);  
				if(response.status!=0){
					var content = '';
					content = response.responseText; 
					if(content != ""){
						if(content.indexOf('NO_CHANGES') == -1){
							divContent.update(content);
						}
						divContent.show();
					} else{
						//hide Compare Sites
						divContent.hide();
					}
				}
			}
		});
	}
	}
}