// Global variables

var mapIsReady = 0;
var tab4Args = "";

//Global variables for search Id & Itineary Id
var mapItSearchId;
var mapItItinId;
var saleLeftIndx=0;
var saleLeftTimeOut;

var currentFlight=""; //current input id for flights' airport completer 

// setMapReady()
// --------------------------------------------------------------------------------
// Called when the map is fully rendered and is available to take commands
//
function setMapReady() {
	mapIsReady = 1;
	if(flashMap) {
		if(mapItSearchId > 0)  {
			LoadAjaxCallFunction("/jsp/home/displayOnMapSS.jsp", "&searchId=" + mapItSearchId + "&itineraryId=" + mapItItinId, displayOnMapCallback);
		}
		else {
			drawSearchOnMap('Y');
		}
		
		displayWizardPosition("", "<b>Welcome to vayama.</b> You can start your flight search by either entering your information into the <b>find a flight</b> box on the left or by clicking on your departure and arrival cities in the vayama map.","TopLeft");
	}
}


// setMapError()
// --------------------------------------------------------------------------------
// Called when is the map is in an error condition
//
function setMapError() {
	mapIsReady = 0;
}


// ChangeFindFlightMode()
// --------------------------------------------------------------------------------
// Change the find a flight box between RT, OW, and MC
//
function ChangeFindFlightMode(changeTo)
{
	
	if (changeTo == 'RT') {
		LoadAjaxContent('findAFlight', '/jsp/home/findAFlightRTSS.jsp', '');
	}
	else if (changeTo == 'OW') {
		LoadAjaxContent('findAFlight', '/jsp/home/findAFlightOWSS.jsp', '');
	}
	else {
		LoadAjaxContent('findAFlight', '/jsp/home/findAFlightMCSS.jsp', '');
	}


	// Refresh the map
	if(flashMap && mapIsReady) {
		setTimeout("refreshmap()",100); 
	}
}


// clearfrom1()
// --------------------------------------------------------------------------------
// Clear OD 1 in the find a flight box (any mode)
//
function clearfrom1(){

	document.getElementById("deptPlace1hidden").value = '';
	document.getElementById("deptPlace1").value = '';	
	document.getElementById("arrivalPlace1hidden").value = '';
	document.getElementById("arrivalPlace1").value = '';
	document.getElementById("trip-mto-1").innerHTML = "";
	document.getElementById("trip-mwhen-1").innerHTML = "";
	document.getElementById("FromDate1").value="dd-mon-yyyy";
	document.getElementById("FromTime1").value="00.00-00.00";

	clearmap();
	clearfrom2();
}


// clearfrom2()
// --------------------------------------------------------------------------------
// Clear OD 2 in the find a flight box (any mode)
//
function clearfrom2(){

	document.getElementById("deptPlace2hidden").value = '';
	document.getElementById("deptPlace2").value = '';
	document.getElementById("arrivalPlace2hidden").value = '';
	document.getElementById("arrivalPlace2").value = '';
	document.getElementById("trip-mto-2").innerHTML = "";
	document.getElementById("trip-mwhen-2").innerHTML = "";
	document.getElementById("FromDate2").value="dd-mon-yyyy";
	document.getElementById("FromTime2").value="00.00-00.00";	

	clearfrom3();
}


// clearfrom3()
// --------------------------------------------------------------------------------
// Clear OD 3 in the find a flight box (any mode)
//
function clearfrom3(){

	document.getElementById("deptPlace3hidden").value = '';
	document.getElementById("deptPlace3").value = '';
	document.getElementById("arrivalPlace3hidden").value = '';
	document.getElementById("arrivalPlace3").value = '';
	document.getElementById("trip-mto-3").innerHTML = "";
	document.getElementById("trip-mwhen-3").innerHTML = "";
	document.getElementById("FromDate3").value="dd-mon-yyyy";
	document.getElementById("FromTime3").value="00.00-00.00";
}


// toggleMultiCityTab()
// --------------------------------------------------------------------------------
// Toggles the tabs in the find a flight box for multi-city
//
function toggleMultiCityTab(divSelected) {

	for (var i=1;i<4;i++) {

		if( i == divSelected) {
			document.getElementById("trip-int-"+i).style.display = "block";
			document.getElementById("trip-mh-"+i).className = "selected";
		}
		else {
			document.getElementById("trip-int-"+i).style.display = "none";
			document.getElementById("trip-mh-"+i).className = "";

			if(document.getElementById("deptPlace" + i +"hidden").value !== "" && document.getElementById("arrivalPlace" + i +"hidden").value != "") {
				document.getElementById("trip-mto-"+i).innerHTML = document.getElementById("deptPlace" + i +"hidden").value + "-" + document.getElementById("arrivalPlace" + i +"hidden").value;  
				document.getElementById("trip-mwhen-"+i).innerHTML = document.getElementById("FromDate" + i).value + " " + document.getElementById("FromTime" + i).options[document.getElementById("FromTime" + i).selectedIndex].text;
			}
		}
	}
}


// drawSearchOnMap()
// --------------------------------------------------------------------------------
// Constructs the array of airports and passes it to the function to generate
// XML for the map.
//
function drawSearchOnMap(displayCCMessage) {

	var mode	= document.getElementById("tripType").value;
	var fromMt1 = document.getElementById("deptPlace1hidden").value;
	var ToMt1 	= document.getElementById("arrivalPlace1hidden").value;
	var fromMt2 = document.getElementById("deptPlace2hidden").value;
	var ToMt2 	= document.getElementById("arrivalPlace2hidden").value;
	var fromMt3 = document.getElementById("deptPlace3hidden").value;
	var ToMt3 	= document.getElementById("arrivalPlace3hidden").value;
	var Mtarray = [];

	if(fromMt1.length > 0) { Mtarray = [fromMt1, "-"]; }
	if((fromMt1.length > 0) &&(ToMt1.length > 0) ) { Mtarray = [fromMt1,ToMt1]; }
	if((fromMt1.length > 0)&& (ToMt1.length > 0) && (fromMt2.length > 0)) {	Mtarray = [fromMt1,ToMt1,fromMt2, "-"]; }
	if((fromMt1.length > 0) && (ToMt1.length > 0) && (fromMt2.length > 0) && (ToMt2.length > 0)) {	Mtarray = [fromMt1,ToMt1,fromMt2,ToMt2]; }
	if((fromMt1.length > 0) && (ToMt1.length > 0) && (fromMt2.length > 0) && (ToMt2.length > 0) && (fromMt3.length > 0)) {	Mtarray = [fromMt1,ToMt1,fromMt2,ToMt2,fromMt3, "-"]; }
	if((fromMt1.length > 0) && (ToMt1.length > 0) && (fromMt2.length > 0) && (ToMt2.length > 0) && (fromMt3.length > 0) && (ToMt3.length > 0)) {	Mtarray = [fromMt1,ToMt1,fromMt2,ToMt2,fromMt3,ToMt3]; } 
	
	if(Mtarray.length > 0) { 
		generateSearchXMLForMap(Mtarray, mode, displayCCMessage); 
	}
}


// generateSearchXMLForMap()
// --------------------------------------------------------------------------------
// Passes the search O/D array to a AJAX function to generate map XML
//
function generateSearchXMLForMap(strArray, mode, displayCCMessage) {

	var tempDiv;
	var pop2=false;

	if(strArray[0].length>3)
	{	
		pop2=true;

		var country = new String(strArray[0]);
		airportsInArea(country);
	}
	else {

		if(strArray[0].length > 0) {
			
			var airportList = "";
			for (var i=0; i < strArray.length; i++) {
				airportList += strArray[i];
				
				if (i < strArray.length - 1) airportList += ",";
			}
			//Safety check .. just to be sure airports are being passed.
			if(airportList != "") {
				var arguments = "airports=" + airportList + "&searchMode=" + mode;
				LoadAjaxCallFunction('/jsp/home/generateMapSearchXMLSS.jsp', arguments, generateSearchXMLForMapCallback);
			}
		}
	}
	

	// Display the warning message about countries
	if (displayCCMessage == 'Y') {
		var splitdiv= document.getElementById('deptPlace1').value.split(', ');
		var countryName = splitdiv[2];
			
		if(splitdiv[1] != 'Puerto Rico' ) {
					
			if(countryName != 'US' && trim(countryName) != 'HI' && splitdiv[1] != 'Canada' && document.getElementById('deptPlace1').value.indexOf("(") != -1  && document.getElementById('deptPlace1').value != "" )
			{
				LoadAjaxCallFunction('/jsp/home/creditCardCountriesSS.jsp', '', displayCreditCardMessage);
			}
		}
	}
}


// displayCreditCardMessage()
// --------------------------------------------------------------------------------
// Display the credit card list of countries on the screen
//
function displayCreditCardMessage(displayBuffer) {

	var tosendString = "<DisplayWizard><caption><![CDATA[ " + trim(displayBuffer) + "]]></caption><X>20</X><Y>20</Y><Width>400</Width><Height>160</Height></DisplayWizard>";
	
	if(flashMap && mapIsReady){
		flashMap.SendCommand(tosendString);
	}
}


// generateSearchXMLForMapCallback()
// --------------------------------------------------------------------------------
// Gets the search XML from the map and instruct the map to display
//
function generateSearchXMLForMapCallback(resultObj) {

	if (flashMap && mapIsReady) {
		flashMap.SendCommand(trim(resultObj));
	}
}


// fareSearch()
// --------------------------------------------------------------------------------
// Conduct a fare search and get the searchId
//
function fareSearch() {

	// Search trackers
	try{
		//Site Catalyst Tracking
		fareSearchSC();	
	}
	catch(error){ }


	// Validate the fare search form
	if(validateFields()) {

		// Display the popunder
		callPopUnder();

		//Reset the  mapItSearchId & mapItItinId to 0. This will enable the search arc to be drawn
		mapItSearchId = 0
		mapItItinId = 0;
		
		// Insure that the search is displayed on the map rather than results
		drawSearchOnMap('N');

		//Reset the search Id. This is done to identify the back button from results page.
		LoadAjaxCallFunction('/jsp/home/resetSearchId.jsp', "s=" + sessionId, resetSearchIdCallback);

		//Tracker
		LoadAjaxCallFunction('/jsp/common/bookingflowtracker.jsp', 's='+ sessionId +'&flowstep=SearchClicked&cb=' + Math.random());
	}
}


function resetSearchIdCallback() {
	
	// Construct the fare search
	constructFareSearch(0);

}


// constructFareSearch()
// --------------------------------------------------------------------------------
// Construct the fare search query string from the find a flight form
//
function constructFareSearch(searchType) {

	var tripid = '';
	var Origtarray;
	var Desttarray;
	var DateArray;
	var CabinClass;
	var CarrPreferance;
	var noAdults;
	var noSenior;
	var noChild;
	var Non_stops = '';
	var TimeArray;
	var searchText;
		
	
	// Extract the find a flight variables
	var from1 = document.getElementById("deptPlace1hidden").value;
	var To1 	= document.getElementById("arrivalPlace1hidden").value;
	
	var from2 = document.getElementById("deptPlace2hidden").value;
	var To2 	= document.getElementById("arrivalPlace2hidden").value;
	
	var from3 = document.getElementById("deptPlace3hidden").value;
	var To3 	= document.getElementById("arrivalPlace3hidden").value;
	
	var fromDate1 = document.getElementById("FromDate1").value;
	var fromDate2 = document.getElementById("FromDate2").value;
	var fromDate3 = document.getElementById("FromDate3").value;
	 

	// Build the arrays for RT
	if (document.getElementById("tripType").value == "RT") {

		var pref1 =  getpreferedtime(document.getElementById("FromTime1").value);
		var hrsBandF1 =  gethrsBandA(document.getElementById("FromTime1").value);
		var pref2 =  getpreferedtime(document.getElementById("FromTime2").value);
		var hrsBandF2 =  gethrsBandA(document.getElementById("FromTime2").value);
		
		if( ((from1 != null) && (from1.length > 0))  && ((To1 != null) && (To1.length > 0)) && (fromDate1 != 'dd-mon-yyy')  && (fromDate2 != 'dd-mon-yyy')){
		
			Origtarray = [from1,To1];
			Desttarray = [To1, from1];
			DateArray=[formatDateForBusSvcs(fromDate1, "N"),formatDateForBusSvcs(fromDate2, "N")];
			TimeArray = [Math.ceil(pref1),Math.ceil(hrsBandF1),Math.ceil(pref2),Math.ceil(hrsBandF2)];
		}
	}


	// Build the arrays for OW and MC
	else {
		
		// MC - 3 ODs
		if((from1.length > 0) && (To1.length > 0) && (from2.length > 0) && (To2.length > 0) && (from3.length > 0) && (To3.length > 0) && ((fromDate1 !='dd-mon-yyy') && (fromDate2 !='dd-mon-yyy') && (fromDate3 !='dd-mon-yyy'))){	

			  	Origtarray = [from1,from2,from3];
				Desttarray = [To1,To2,To3];
				DateArray=[formatDateForBusSvcs(fromDate1, "N"), formatDateForBusSvcs(fromDate2, "N"), formatDateForBusSvcs(fromDate3, "N")];

				var pref1 =  getpreferedtime(document.getElementById("FromTime1").value);
				var hrsBandF1 =  gethrsBandA(document.getElementById("FromTime1").value);
				var pref2 =  getpreferedtime(document.getElementById("FromTime2").value);
				var hrsBandF2 =  gethrsBandA(document.getElementById("FromTime2").value);
				var pref3 =  getpreferedtime(document.getElementById("FromTime3").value);
				var hrsBandF3 =  gethrsBandA(document.getElementById("FromTime3").value);

				TimeArray = [Math.ceil(pref1),Math.ceil(hrsBandF1),Math.ceil(pref2),Math.ceil(hrsBandF2),Math.ceil(pref3),Math.ceil(hrsBandF3)];

		}
		
		// MC - 2 OD
		else if((from1.length > 0) && (To1.length > 0) && (from2.length > 0) && (To2.length > 0) && ((fromDate1 !='dd-mon-yyy') && (fromDate2 !='dd-mon-yyy'))){	

			  	Origtarray = [from1,from2];
				Desttarray = [To1,To2];
				DateArray=[formatDateForBusSvcs(fromDate1, "N"), formatDateForBusSvcs(fromDate2, "N")];

				var pref1 = getpreferedtime(document.getElementById("FromTime1").value);
				var hrsBandF1 = gethrsBandA(document.getElementById("FromTime1").value);
				var pref2 = getpreferedtime(document.getElementById("FromTime2").value);
				var hrsBandF2 = gethrsBandA(document.getElementById("FromTime2").value);

				TimeArray = [Math.ceil(pref1),Math.ceil(hrsBandF1),Math.ceil(pref2),Math.ceil(hrsBandF2)];

		}
		
		// MC / OW - 1 OD
		else if((from1.length > 0) &&(To1.length > 0) && (fromDate1 !='dd-mon-yyy')){	

			  	Origtarray = [from1];
				Desttarray = [To1];
				DateArray=[formatDateForBusSvcs(fromDate1, "N")];

				var pref1 = getpreferedtime(document.getElementById("FromTime1").value);
				var hrsBandF1 = gethrsBandA(document.getElementById("FromTime1").value);
				TimeArray = [Math.ceil(pref1),Math.ceil(hrsBandF1)];
		}
	}


	// Get the other preferences
	noAdults = document.getElementById('pAdults').value;
	noSenior = document.getElementById('pSeniors').value;
	noChild = document.getElementById('pChildren').value;
	CabinClass = document.getElementById('pClass').value;
	CarrPreferance = document.getElementById('pCarrierhidden').value;
	
	// Get nonstop preference	
	if(document.getElementById("pNonStop").checked) { Non_stops = 'Y'; }	
	
	// Prepare the variables
	var vayamavisit = getCookie("vayamaVisit");
	var clickthrough = "N";
	
	if (vayamavisit == null || vayamavisit == "") vayamavisit = "0";

	var couponCode = document.getElementById("pCouponcode").value;
	
	var arguments = "s=" + sessionId + "&vayamaVisit=" + vayamavisit + "&clickThrough=" + clickthrough + "&originArray=" + Origtarray + "&destArray=" + Desttarray + "&dateArray=" + DateArray + "&cabinClass=" + CabinClass + "&carrPreferance=" + CarrPreferance + "&noAdults=" + noAdults + "&noSenior=" + noSenior + "&noChild=" + noChild + "&nonStops=" + Non_stops + "&timeArray=" +  TimeArray + "&couponCode=" + couponCode + "&tripType=" + document.getElementById("tripType").value + "&random=" + Math.random();
	

	// Send the parameters to the searching page to complete the search
	var url2Open = "http://" + hostName + "/jsp/home/searching.jsp?" + arguments;
	window.open(url2Open, "_self");
	
}


// clearFindAFlight()
// --------------------------------------------------------------------------------
// Clear the find a flight box and results
//
function clearFindAFlight() {

	// RT and OW have 1 value
	var clearToCount = 1;
	
	
	// Multi city has 3 sets
	if (document.getElementById("tripType").value == "MC")
		clearToCount = 3;

	for(var i=1; i <= clearToCount; i++) {
		
		document.getElementById("deptPlace"+i+"hidden").value ='';
		document.getElementById("arrivalPlace"+i+"hidden").value ='';
		document.getElementById("deptPlace"+i).value ='';
		document.getElementById("arrivalPlace"+i).value ='';
		
		document.getElementById("FromDate"+i).value = 'dd-mon-yyyy';

		// Only multi-city has the expanded date and city summaries for tabs
		if (document.getElementById("tripType").value == "MC") {
			document.getElementById("trip-mto-"+i).innerHTML = '';
			document.getElementById("trip-mwhen-"+i).innerHTML = '';
		}

	}


	// RT has one additional date for the return
	if (document.getElementById("tripType").value == "RT")
		document.getElementById("FromDate2").value = 'dd-mon-yyyy';


	setdefaultselect("pAdults","1");
	setdefaultselect("pChildren","0");
	setdefaultselect("pClass","Y");

	document.getElementById("pCarrier").value="";
	document.getElementById("pNonStop").checked=false;
	

	popdown(true);
	refreshmap();
}


// showInfantInfo()
// --------------------------------------------------------------------------------
// Display information about booking infants
//
function showInfantInfo() {

	// Load infantInfoSS html into the messageHolder
	LoadAjaxInDivAndCallFunction('messageHolder', '/jsp/home/infantInfoSS.jsp', '', showInfantInfoCallback);

}


// showInfantInfoCallback()
// --------------------------------------------------------------------------------
// Display information about booking infants
//
function showInfantInfoCallback() {
	
	displayInfo(document.getElementById('infant'), 'messageHolder', 'right');
}


// displayInfo()
// --------------------------------------------------------------------------------
// Display the universal popup
//
function displayInfo(target, contentTarget, position, addOffset) {

	if (document.getElementById(contentTarget) && document.getElementById("tooltipContent")) {
		
		document.getElementById("tooltipContent").innerHTML = document.getElementById(contentTarget).innerHTML;
		
		var x = findPosX(target);
		var y = findPosY(target) - 2;
		var rightPos = true;
	
		if (position == "right") {
			x += 20;
			x += target.offsetWidth;
			
			if (addOffset) x += addOffset;
		}
		else {
			x -= 20;
			if (addOffset) x += addOffset;
			rightPos = false;
		}
	
		universalPopup( y, x, rightPos);
	}
}


// hideInfo()
// --------------------------------------------------------------------------------
// Hide the universal popup
//
function hideInfo() {
	if(document.getElementById("tooltip")) {
		document.getElementById("tooltip").style.display='none';
	}
	if(document.getElementById('messageHolder')) {
		document.getElementById('messageHolder').innerHtml = '';
	}
}


// findPosX()
// --------------------------------------------------------------------------------
// Get the X Position of the object
//
function findPosX(obj) {
    var curleft = 0;
    if (obj.offsetParent) {
        while (obj.offsetParent) {
            curleft += obj.offsetLeft;
            obj = obj.offsetParent;
        }
    }
    else if (obj.x)
        curleft += obj.x;
    return curleft;
}


// findPosY()
// --------------------------------------------------------------------------------
// Get the Y Position of the object
//
function findPosY(obj) {
    var curtop = 0;
    if (obj.offsetParent) {
        while (obj.offsetParent) {
            curtop += obj.offsetTop;
            obj = obj.offsetParent;
        }
    }
    else if (obj.y)
        curtop += obj.y;
    return curtop;
}


// refreshmap()
// --------------------------------------------------------------------------------
// Clears the map and redisplays the initial wizard message
//
function refreshmap() {

    if(flashMap && mapIsReady){
		flashMap.SendCommand("<ResetMap />");
		displayWizardPosition("Step 1", "Your previous search has been cleared. You can restart your flight search by either entering your information into the <b>find a flight</b> box on the left or by clicking on your departure and arrival cities in the vayama map.","TopLeft");
	}
}


// validateFields()
// --------------------------------------------------------------------------------
// Validates the user entry in the find a flight box
//
function validateFields() {

	// Make sure dep city 1 is present
	if(document.getElementById("deptPlace1hidden").value == '') {
		document.getElementById("messageHolder").innerHTML = 'please enter a departure city';
		displayInfo(document.getElementById('deptPlace1'), 'messageHolder', 'right');
		return false;
	}

	// Make sure arv city 1 is present
	if(document.getElementById("arrivalPlace1hidden").value == '') {
		document.getElementById("messageHolder").innerHTML = 'please enter an arrival city';
		displayInfo(document.getElementById('arrivalPlace1'), 'messageHolder', 'right');
		return false;
	}

	// Insure that the dep city 1 != arv city 1
	if(document.getElementById("deptPlace1hidden").value == document.getElementById("arrivalPlace1hidden").value){
		document.getElementById("messageHolder").innerHTML = "departure and arrival cities cannot be the same";
		displayInfo(document.getElementById('arrivalPlace1'), 'messageHolder', 'right'); 
		return false;
	}


	// Make sure dep date 1 is present
	if( (document.getElementById("FromDate1").value == 'dd-mon-yyyy') || (document.getElementById("FromDate1").value == '') ) {
		document.getElementById("messageHolder").innerHTML = 'please enter a valid departure date';
		displayInfo(document.getElementById('FromDate1'), 'messageHolder', 'right', 100);
		return false;
	}


	// If RT make sure arrive date 1 is present
	if (document.getElementById("tripType").value == "RT") {
		if( (document.getElementById("FromDate2").value == 'dd-mon-yyyy') || (document.getElementById("FromDate2").value == '') ) {
			document.getElementById("messageHolder").innerHTML = 'please enter a valid return date';
			displayInfo(document.getElementById('FromDate2'), 'messageHolder', 'right', 100);
			return false;
		}

		// Make sure that OD1 and OD2 are in date order
		if(getJSDateFromDisplayDate(document.getElementById("FromDate2").value) <= getJSDateFromDisplayDate(document.getElementById("FromDate1").value)) {
			document.getElementById("messageHolder").innerHTML = 'please enter a date after or equal to your departure date';
			displayInfo(document.getElementById('FromDate2'), 'messageHolder', 'right', 100);
			return false;
		}		

	}


	// If MC continue validating
	if (document.getElementById("tripType").value == "MC") {

		if(document.getElementById("arrivalPlace2hidden").value != '') {

			// Check to make sure that dates are present if arrival cities are present
			if( (document.getElementById("FromDate2").value == 'dd-mon-yyyy') || (document.getElementById("FromDate2").value == '') ) {
				document.getElementById("messageHolder").innerHTML = 'please enter a valid date';
				displayInfo(document.getElementById('FromDate2'), 'messageHolder', 'right', 100);
				return false;
			}
			
			// Make sure that OD1 and OD2 are in date order
			if(getJSDateFromDisplayDate(document.getElementById("FromDate2").value) <= getJSDateFromDisplayDate(document.getElementById("FromDate1").value)) {
				document.getElementById("messageHolder").innerHTML = 'please enter a date after or equal to your departure date';
				displayInfo(document.getElementById('FromDate2'), 'messageHolder', 'right', 100);
				return false;
			}
			
			// Insure that the dep city 2 != arv city 2
			if(document.getElementById("deptPlace2hidden").value != '' && (document.getElementById("deptPlace2hidden").value == document.getElementById("arrivalPlace2hidden").value)){
				document.getElementById("messageHolder").innerHTML = "departure and arrival cities cannot be the same";
				displayInfo(document.getElementById('arrivalPlace2'), 'messageHolder', 'right'); 
				return false;
			}			
			
		}

		if(document.getElementById("arrivalPlace3hidden").value != '') {
			
			// Make sure that OD3 has a date if a city is present
			if( (document.getElementById("FromDate3").value == 'dd-mon-yyyy') || (document.getElementById("FromDate3").value == '') ) {
				document.getElementById("messageHolder").innerHTML = 'please enter a valid date';
				displayInfo(document.getElementById('FromDate3'), 'messageHolder', 'right', 100);
				return false;
			}
			
			// Make sure OD2 and OD3 are in date order
			if(getJSDateFromDisplayDate(document.getElementById("FromDate3").value) <= getJSDateFromDisplayDate(document.getElementById("FromDate2").value)) {
				document.getElementById("messageHolder").innerHTML = 'please enter a date after or equal to your previous departure date';
				displayInfo(document.getElementById('FromDate3'), 'messageHolder', 'right', 100);
				return false;
			}
			
			// Insure that the dep city 3 != arv city 3
			if(document.getElementById("deptPlace3hidden").value != '' && (document.getElementById("deptPlace3hidden").value == document.getElementById("arrivalPlace3hidden").value)){
				document.getElementById("messageHolder").innerHTML = "departure and arrival cities cannot be the same";
				displayInfo(document.getElementById('arrivalPlace3'), 'messageHolder', 'right'); 
				return false;
			}				
		}
	}


	// Test the purchase date to make sure it is not too soon
	var testDate = getJSDateFromDisplayDate(document.getElementById("FromDate1").value);
	var todayDate = new Date();

	if(todayDate.getTime() + (86400000 * 4) > testDate.getTime()) {
		errorSC("findflights","searchedlessthanfourdays");

		document.getElementById("messageHolder").innerHTML = 'sorry, you cannot buy a ticket on vayama for a flight departing within 4 days';
		displayInfo(document.getElementById('FromDate1'), 'messageHolder', 'right', 100);
		return false;		
	}


	// Make sure we have at least one traveler
	var noAdults = 1 * document.getElementById('pAdults').value;
	var noChild = 1 * document.getElementById('pChildren').value;

	if(noAdults + noChild == 0) {
		document.getElementById("messageHolder").innerHTML = 'please specify at least one traveler';
		displayInfo(document.getElementById('pAdults'), 'messageHolder', 'right');		
		return false;
	}	

	// Make sure we dont have over 6 people on a reservation
	if(noAdults + noChild > 6) {
		document.getElementById("messageHolder").innerHTML = 'vayama can book up to 6 passengers in one reservation, for more please call 1.650.265.1856';
		displayInfo(document.getElementById('pAdults'), 'messageHolder', 'right', 60);	
		return false;
	}	


	// Make sure that the number of children does not exceed the number of adults
	if(noAdults == 0 && noChild > 0) {
		document.getElementById("messageHolder").innerHTML = 'Please specify at least one adult traveler.  If you have a child who will be traveling without an accompanying adult,<br /> you will need to contact the airline directly as vayama will be unable to accommodate your request';
		displayInfo(document.getElementById('pChildren'), 'messageHolder', 'right', 20);	
		return false;
	}

	return true;
}


// universalPopup()
// --------------------------------------------------------------------------------
// Display a universal popup on the page
//
function universalPopup(top, left, tip){

	var x = left;
	
	document.getElementById("tooltip").style.display="";
	
	if (!tip) {
		x-= document.getElementById("tooltip").offsetWidth;
	}
	
	document.getElementById("tooltip").style.top=top+"px";
	document.getElementById("tooltip").style.left= x +"px";
	document.getElementById('tip').className = (tip) ? 'tipL' : 'tipR';
		
	setPopupCover("tooltip");
}


// setUniversalPopupCover()
// --------------------------------------------------------------------------------
// If IE, make sure that the popup works on top of pulldowns
//
function setUniversalPopupCover(popupName)
{
	if(navigator.appName != "Microsoft Internet Explorer") return;
	
	var popupDiv = document.getElementById(popupName);
	var cov = document.getElementById(popupName+"Cover");
	cov.style.display = "block";
	cov.style.left = popupDiv.style.left;
	cov.style.top = popupDiv.style.top;
	cov.style.width = popupDiv.offsetWidth;
	cov.style.height = popupDiv.offsetHeight;
	
}           


// ExpandHomeText()
// --------------------------------------------------------------------------------
// Show full article content
//
function ExpandHomeText() {

	LoadAjaxContent('homeLowerRight', '/jsp/home/homeLowerHomeRightExpSS.jsp');
}


// UnExpandHomeText()
// --------------------------------------------------------------------------------
// Return back to normal view
//
function UnExpandHomeText() {
	
	LoadAjaxContent('homeLowerRight', '/jsp/home/homeLowerHomeRightSS.jsp');
}




// setdefaultselect()
// --------------------------------------------------------------------------------
// Generic function to set values of selects
//
function setdefaultselect(varobjname , defaultval) {
	var selobj = document.getElementById(varobjname);

	for(var i=0;i<selobj.length;i++) {
		if(selobj[i].value == defaultval) {
			selobj[i].selected = true;
			break;
		}
	}
}


// clearmap()
// --------------------------------------------------------------------------------
// Clear the map of any arcs and wizard messages
//
function clearmap() {

    if(flashMap && mapIsReady){
		drawSearchOnMap('Y');
		unDisplayWizard();
	}
}


// clearOptIn()
// --------------------------------------------------------------------------------
// Clear the text in opt in
//
function clearOptIn() {
	document.getElementById("signuptext").value = "";
	document.getElementById("signuptext").onclick = "";
}


// AddOptIn()
// --------------------------------------------------------------------------------
// OptIn Submit
//
function AddOptIn() {
	
	var signUpEmail = document.getElementById("signuptext").value;
	
	if (signUpEmail != "" && signUpEmail != "enter your email here" && signUpEmail.indexOf("@") != -1 && signUpEmail.indexOf(".") != -1) {
		LoadAjaxCallFunction('/jsp/home/optInSS.jsp', "email=" + document.getElementById("signuptext").value, optInCallback);
	}
}


// optInCallback()
// --------------------------------------------------------------------------------
// opt in submit callback
//
function optInCallback() {
	
	document.getElementById("optInActive").style.display="none";
	document.getElementById("optInSubmitted").style.display="";

}
 
function getpreferedtime(timeval)
{
	var timeArray = timeval.split('-');
	var Btime = Number(timeArray[0].substr(0,2));
	var Etime = Number(timeArray[1].substr(0,2));

	PrefTime = Btime + ((Etime-Btime)/2); 

	return PrefTime;
}



function gethrsBandA(timeval)
{

	var timeArray = timeval.split('-');
	var Btime = Number(timeArray[0].substr(0,2));
	var Etime = Number(timeArray[1].substr(0,2));

	HrsBeforeAndAfter = (Etime-Btime)/2;

	return HrsBeforeAndAfter;
}


// AddToTrip()
// --------------------------------------------------------------------------------
// Callback from map when airport is clicked
//
function AddToTrip(iatacode) {
	document.getElementById("selectedArpFromMap").value = iatacode;
	LoadAjaxCallFunction('/jsp/common/cityNameFromAirportCodeSS.jsp', "iatacode=" + iatacode, popAirportsinFF);
}


// popAirportsinFF()
// --------------------------------------------------------------------------------
// Place the airports into the find a flight box from the map
//
function popAirportsinFF(returnedString) {

	returnedString = trim(returnedString);

	// Populate the Round trip and OW
	if (document.getElementById("tripType").value != "MC") {

		if (document.getElementById("deptPlace1").value == "") {
			
			document.getElementById("deptPlace1hidden").value = document.getElementById("selectedArpFromMap").value;
			document.getElementById("deptPlace1").value = "" + returnedString + "";

			displayWizard("Step 2", "Ok, you're leaving from <b>" + returnedString + "</b>. Now, please click your destination on the map or enter it in the 'find a flight' box.");
		}
		else {

			document.getElementById("arrivalPlace1hidden").value = document.getElementById("selectedArpFromMap").value;
			document.getElementById("arrivalPlace1").value = "" + returnedString + "";			

			displayWizard("Step 3", "Great, you're going to <b>" + returnedString + "</b>. Make sure your travel details are in the 'find a flight' box and click <b>search</b>. Your results will be shown under the map.");
		}
	}

	// Populate the MC
	else {

		if (document.getElementById("deptPlace1").value == "") {

			document.getElementById("deptPlace1hidden").value = document.getElementById("selectedArpFromMap").value;
			document.getElementById("deptPlace1").value = "" + returnedString + "";

			displayWizard("Step 2", "Ok, you're leaving from <b>" + returnedString + "</b>. Now, please click your next destination on the map or enter it in the find a flight box. You can select up to four cities in your trip. Make sure your travel details are right and click <b>search</b> when your trip is complete.");

		} else {

			var addMsg = 0;

			if (document.getElementById("arrivalPlace1").value == "") {

				document.getElementById("arrivalPlace1hidden").value = document.getElementById("selectedArpFromMap").value;
				document.getElementById("arrivalPlace1").value = "" + returnedString + "";
				
				document.getElementById("deptPlace2hidden").value = document.getElementById("selectedArpFromMap").value;
				document.getElementById("deptPlace2").value = "" + returnedString + "";
				addMsg = 1;
			} 
			else if (document.getElementById("deptPlace2").value == "") {
				
				document.getElementById("deptPlace2hidden").value = document.getElementById("selectedArpFromMap").value;
				document.getElementById("deptPlace2").value = "" + returnedString + "";			
				addMsg = 1;
			} 
			else if (document.getElementById("arrivalPlace2").value == "") {

				document.getElementById("arrivalPlace2hidden").value = document.getElementById("selectedArpFromMap").value;
				document.getElementById("arrivalPlace2").value = "" + returnedString + "";		
				
				document.getElementById("deptPlace3hidden").value = document.getElementById("selectedArpFromMap").value;
				document.getElementById("deptPlace3").value = "" + returnedString + "";	
				addMsg = 1;
			} 
			else if (document.getElementById("deptPlace3").value == "") {

				document.getElementById("deptPlace3hidden").value = document.getElementById("selectedArpFromMap").value;
				document.getElementById("deptPlace3").value = "" + returnedString + "";			
				addMsg = 1;
			} 
			else if (document.getElementById("arrivalPlace3").value == "") {

				document.getElementById("arrivalPlace3hidden").value = document.getElementById("selectedArpFromMap").value;
				document.getElementById("arrivalPlace3").value = "" + returnedString + "";	
				addMsg = 1;
			} 

			if (addMsg == 1) {
				displayWizard("Step 3", "Ok, we added <b>" + returnedString + "</b> to your trip. Now, please click your next destination on the map or enter it in the find a flight box. Make sure your travel details are right and click <b>search</b> when you're trip is complete.");
			}
			else {
				displayWizard("Step 3", "vayama can currently handle up to three destinations in a multi-city search. You can make changes in the find a flight box on the left of the map.");				
			}
		}
	}

	drawSearchOnMap('Y');

}


// DeleteFromTrip()
// --------------------------------------------------------------------------------
// Callback from map when airport is clicked to be deleted (not implemented in vayama 2)
//
function DeleteFromTrip(passedArpString) {
}


// displayWizardPosition()
// --------------------------------------------------------------------------------
// Display the wizard with position defined
//
function displayWizardPosition(title, description, position) {
	var X = 20;
	var Y = 250;
	if(position == "Center"){
		X = 150;
		Y = 140;
	} else if (position == "BottomLeft")
	{
		X = 20;
		Y = 250;
	}else if (position == "BottomRight")
	{
		X = 290;
		Y = 270;
	}else if (position == "TopLeft")
	{
		X = 20;
		Y = 20;
	}else if (position == "TopRight")
	{
		X = 280;
		Y = 20;
	}
	
	var tosendString = "<DisplayWizard><caption><![CDATA[ " + description + "]]></caption><X>"+X+"</X><Y>"+Y+"</Y><Width>400</Width><Height>90</Height></DisplayWizard>";
	
	if(flashMap && mapIsReady){
		flashMap.SendCommand(tosendString);
	}
}


// displayWizard()
// --------------------------------------------------------------------------------
// Display the wizard
//
function displayWizard(title, description) {

	var sendString = "<DisplayWizard><caption><![CDATA[ " + description + "]]></caption><X>20</X><Y>250</Y><Width>400</Width><Height>90</Height></DisplayWizard>";

	if(flashMap && mapIsReady){
		flashMap.SendCommand(sendString);
	}
}


// displayWizardTravel()
// --------------------------------------------------------------------------------
// Display wizard used by SEO pages
//
function displayWizardTravel() { 

	//substitute undersores with spaces

	while (title.indexOf("_") > -1)

		title = title.replace("_"," ");

	while (text.indexOf("_") > -1)

		text = text.replace("_"," "); 

	var sendString="<DisplayWizard><caption><![CDATA[";

	//check if it is not for intlFlights page

	if(typeof intlFlights == "undefined"){

		//default text for display wizard

		var titleD="<b><font size='+2' color='#fa531b'>vayama has great international fares";

		var textD="";

		//default text for D or OD

		if(typeof travelName != "undefined"){

			titleD+=" to "+ travelName+"</font></b><br/>";

			textD+="Search our specially-negotiated deals to <b>"+travelName+"</b>. Enter your origin and travel dates and find that great fare!";

		}

		else if(typeof travelName1 != "undefined"){

			titleD+=" to "+ travelName2+"</font></b><br/>";

			textD+="Search our specially-negotiated deals from <b>"+travelName1+"</b> to <b>"+travelName2+"</b>. Enter your travel dates and find that great fare!";

		}

		else if(typeof airlineNameOD != "undefined"){

			titleD+=" to "+ travelNameD+"</font></b><br/>";

			textD+="Search our specially-negotiated deals from <b>"+travelNameO+"</b> to <b>"+travelNameD+"</b> on <b>"+airlineNameOD+"</b>. Enter your travel dates and find that great fare!";

		}

		else if(typeof airlineNameD != "undefined"){

			titleD+=" to "+ travelName2+"</font></b><br/>";

			textD+="Search our specially-negotiated deals to <b>"+travelName2+"</b> on <b>"+airlineNameD+"</b>. Enter your origin and travel dates and find that great fare!";

		}

		else if(typeof airlineNameDC != "undefined"){

			titleD+=" to "+ travelName2+"</font></b><br/>";

			textD+="Search our specially-negotiated deals to <b>"+travelName2+"</b> on <b>"+airlineNameDC+"</b>. Enter your origin, destination and travel dates and find that great fare!";

		}

		else if(typeof travelAirline != "undefined"){

			titleD+=" on "+ travelAirline+"</font></b><br/>";

			textD+="Search our specially-negotiated deals on <b>"+travelAirline+"</b>. Enter your origin, destination and travel dates and find that great fare!";

		}

        else titleD+="</font></b><br/>";
	

		//custom or default text for display wizard

		if(title!='null') sendString+="<b><font size='+1' color='#ff6929'>"+title+"</font></b><br/>";

		else sendString+=titleD+"</font></p>";

		

		if(text!='null') sendString+="<b>"+text+"</b>";

		else sendString+=textD+"</font></p>";

			

		sendString+="]]></caption><X>10</X><Y>10</Y><Width>520</Width><Height>90</Height></DisplayWizard>";											

		if(flashMap && mapIsReady){

			flashMap.SendCommand(sendString);

		}

	}

	else{ 

		if(title=='null' && text=='null'){

			unDisplayWizard();

		}

		else{

			if(title!='null') sendString+="<b><font size='+1' color='#ff6929'>"+title+"</font></b><br/>";

			if(text!='null') sendString+="<b>"+text+"</b>";

			sendString+="]]></caption><X>0</X><Y>0</Y><Width>520</Width><Height>90</Height></DisplayWizard>";											

			if(flashMap && mapIsReady){

				flashMap.SendCommand(sendString);

			}
		}
	}
}


// unDisplayWizard()
// --------------------------------------------------------------------------------
// Remove any wizards currently displayed
//
function unDisplayWizard() {
    if(flashMap && mapIsReady){
		flashMap.SendCommand("<UnDisplayWizard />");
	}
}



// callPopUnder()
// --------------------------------------------------------------------------------
// Display the evil popunder
//
function callPopUnder(){

	if(typeof(exitPopupWin)=="undefined") {
		
		
		var from1 = document.getElementById("deptPlace1hidden").value;
		var To1 	= document.getElementById("arrivalPlace1hidden").value;
		
		var from2 = document.getElementById("deptPlace2hidden").value;
		var To2 	= document.getElementById("arrivalPlace2hidden").value;
		
		var from3 = document.getElementById("deptPlace3hidden").value;
		var To3 	= document.getElementById("arrivalPlace3hidden").value;
		
		var fromDate1 = document.getElementById("FromDate1").value;
		var fromDate2 = document.getElementById("FromDate2").value;
		var fromDate3 = document.getElementById("FromDate3").value;
		
		var noAdults = document.getElementById('pAdults').value;
		var noChild = document.getElementById('pChildren').value;
		var CabinClass = document.getElementById('pClass').value;

		var arguments = "from1=" + from1 + "&to1=" + To1 + "&from2=" + from2 + "&to2=" + To2 + "&from3=" + from3 + "&to3=" + To3 + "&fromDate1=" + fromDate1 + "&fromDate2=" + fromDate2 + "&fromDate3=" + fromDate3 + "&cabinClass=" + CabinClass + "&noAdults=" + noAdults + "&noChild=" + noChild + "&tripType=" + document.getElementById("tripType").value;


		// Determine the appropriate popunder
		var randomnumber=Math.floor(Math.random()*101);
		
		if (randomnumber <= 10) {
			exitPopupWin = window.open('/jsp/home/baPopupAltSS.jsp' + '?' + arguments, 'vayamaexit', 'scrollbars=yes, resizable=yes, toolbar=no, menubar=no, status=no, location=no, left=10, top=10, height=468px, width=860px');
		}
		else {
			exitPopupWin = window.open('/jsp/home/bbPopupAltSS.jsp' + '?' + arguments, 'vayamaexit', 'scrollbars=yes, resizable=yes, toolbar=no, menubar=no, status=no, location=no, left=10, top=10, height=580px, width=1020px');			
		}

		if(exitPopupWin) {
			exitPopupWin.blur();
			window.focus();
		}
	}
}


// getCookie()
// --------------------------------------------------------------------------------
// Read a cookie
//
function getCookie(name) {
    var start = document.cookie.indexOf(name + "=");
    var len = start + name.length + 1;
    if ((!start) && (name != document.cookie.substring(0, name.length))) {
        return null;
    }
    if (start == -1) {
        return null;
    }
    var end = document.cookie.indexOf(";", len);
    if (end == -1) {
        end = document.cookie.length;
    }
    return unescape(document.cookie.substring(len, end));
}

		
// setCookie()
// --------------------------------------------------------------------------------
// set a cookie
//
function setCookie(name, value) {
    document.cookie = name + "=" + value + ";path=/";
}


// getScreenCenterY()
// --------------------------------------------------------------------------------
// Center in visible area
//
function getScreenCenterY() {  
	var y = 0;    
	y = getScrollOffset()+(getInnerHeight()/2);    
	return(y);  
} 
function getInnerHeight() {  
	var y;  
	if (self.innerHeight)  y = self.innerHeight;  //non IE
	else y = document.documentElement.clientHeight;  
	return(y);  
}  

function getScrollOffset() {  
	var y;  
	if (self.pageYOffset)    y = self.pageYOffset;// non IE   
	else y = document.documentElement.scrollTop;  
	return(y);  
}  


// setOpacityY()
// --------------------------------------------------------------------------------
// sets an element's opacity level, used for fading in effect
//
function setOpacity(id, level) {
    var element = document.getElementById(id); 
    element.style.display = 'inline';
    element.style.zoom = 1;
    element.style.opacity = level;
    element.style.MozOpacity = level;
    element.style.KhtmlOpacity = level;
    element.style.filter = "alpha(opacity=" + (level * 100) + ");";
}


// fadeIn()
// --------------------------------------------------------------------------------
// fades in an element
//
function fadeIn(id, steps, duration, interval, fadeOutSteps, fadeOutDuration){  
    var fadeInComplete;
    for (i = 0; i <= 1; i += (1 / steps)) {
      setTimeout("setOpacity('" + id + "', " + i + ")", i * duration); 
      fadeInComplete = i * duration;             
    }
    //set the timeout to start after the fade in time and the interval to display the 
    //message on the screen have both completed  
} 

// getSaleLeft()
// --------------------------------------------------------------------------------
// displays big bottom left sale on homepage through ajax
//
function getSaleLeft(i,clear){ 
	if( typeof(i)=="undefined" ||  isNaN(i) ) i=0;
	fadeIn('saleLeft', 20, 500, 1, 1, 1) 
	LoadAjaxContent('saleLeft', '/jsp/home/saleLeft.jsp', 'i=' + i);
	if(clear){
		clearTimeout(saleLeftTimeOut);
		clear=false;
	}
}

// startLeftSale()
// --------------------------------------------------------------------------------
// iterate through all the left sale on homepage through ajax
// 
function startLeftSale(i){ 
	var leftSaleSize = 3;
	saleLeftIndx = i;
	if(saleLeftIndx>leftSaleSize-1) saleLeftIndx=0;  
	
	getSaleLeft(saleLeftIndx);  
	saleLeftTimeOut = setTimeout("startLeftSale("+(saleLeftIndx+1)+",false)",9000);
}
