			function setDefaultCruiseDate() {
			    if(document.getElementById("cruise_month") != null)
                {
				    var date = new Date();
				    var month = date.getMonth() + 1;
				    var day = date.getDate();
				    var year = date.getFullYear() - 2007;
    				
				    if( day > 19 )
				    {
					    month += 2;
				    }
				    else
				    {
					    month++;
				    }

				    if( month > 12 )
				    {
					    month = month % 12;
					    year++;
				    }

                
				    document.getElementById("cruise_month").options.selectedIndex = month;
				    document.getElementById("cruise_year").options.selectedIndex = year;
				}
			}
			
			function setDefaultDates() {
				var date = new Date();
				var dayOfWeek = date.getDay();
				var day = date.getDate();
				
				if( dayOfWeek >= 4 )
				{
					day = day + 12 - dayOfWeek;
				}
				else
				{
					day = day + 5 - dayOfWeek;
				}
				
				date.setDate( day );
				
				var startDay = date.getDate();
				var startMonth = date.getMonth() + 1;
				
				if( startDay < 10 ) startDay = "0" + startDay;
				if( startMonth < 10 ) startMonth = "0" + startMonth;
				
				var startDate =  startMonth + "/" + startDay + "/0" + (date.getFullYear() - 2000);
	
				date.setDate( date.getDate() + 2 );
				
				var endDay = date.getDate();
				var endMonth = date.getMonth() + 1;
				
				if( endMonth < 10 ) endMonth = "0" + endMonth;
				if( endDay < 10 ) endDay = "0" + endDay;
				
				var endDate = endMonth + "/" + endDay + "/0" + (date.getFullYear() - 2000);
				
                if( document.getElementById("flightDepartDate") != null )
                {
				    document.getElementById("flightDepartDate").value=startDate;
				    document.getElementById("flightAriveDate").value=endDate;

				    document.getElementById("flightDepartDate1").value=startDate;
				    document.getElementById("flightDepartDate2").value=startDate;
				    document.getElementById("flightDepartDate3").value=startDate;
			    }

                if( document.getElementById("HotelCheckinDate") != null )
                {
				    document.getElementById("HotelCheckinDate").value=startDate;
				    document.getElementById("HotelCheckoutDate").value=endDate;
				}

                if( document.getElementById("PackagesDepartDate") != null )
                {
				    document.getElementById("PackagesDepartDate").value=startDate;
				    document.getElementById("PackagesAriveDate").value=endDate;
				}

                if( document.getElementById("CarPickupDate") != null )
                {
				    document.getElementById("CarPickupDate").value=startDate;
				    document.getElementById("CarDropoffDate").value=endDate;
				    if( document.getElementById("pickup_time") != null )
                    {
				        document.getElementById("pickup_time").options.selectedIndex = 11;
				    }
				    
				    if( document.getElementById("return_time") != null )
                    {
				        document.getElementById("return_time").options.selectedIndex = 11;
				    }
				}
				
                if( document.getElementById("DestinationID") != null )
                {
				    document.getElementById("DestinationID").options.selectedIndex = 0;
				    document.getElementById("cruise_duration").options.selectedIndex = 0;
				    document.getElementById("VendorID").options.selectedIndex = 0;
				}
				
				if( document.getElementById("nonStopFlightCheck") != null )
                		{
				    document.getElementById("nonStopFlightCheck").checked = false;
				    document.getElementById("numMultiLegs").options.selectedIndex = 0;
				    document.getElementById("segDepartCity0").value = "";
				    document.getElementById("segDepartCity1").value = "";
				    document.getElementById("segDepartCity2").value = "";
				    document.getElementById("segDepartCity3").value = "";
				    document.getElementById("segArriveCity0").value = "";
				    document.getElementById("segArriveCity1").value = "";
				    document.getElementById("segArriveCity2").value = "";
				    document.getElementById("segArriveCity3").value = "";
				}
				
				if( document.getElementById("adults") != null )
               		{
				    document.getElementById("adults").options.selectedIndex = 2;
				    document.getElementById("infantsInLap").options.selectedIndex = 0;
				    document.getElementById("seniors").options.selectedIndex = 0;
				    document.getElementById("prefVendors0").options.selectedIndex = 0;
				}
				if( document.getElementById("hotel_address") != null )
                		{
				    document.getElementById("hotel_address").value = "";
				    document.getElementById("hotel_city").value = "";
				    document.getElementById("search_distance").options.selectedIndex = 1;
				    document.getElementById("hotel_state").options.selectedIndex = 0;
				    document.getElementById("hotel_zipcode").value = "";
				    document.getElementById("hotel_country").options.selectedIndex = 0;
				    document.getElementById("number_rooms").options.selectedIndex = 0;
				    document.getElementById("number_per_room").options.selectedIndex = 0;
				    document.getElementById("hotel_rate").options.selectedIndex = 0;
				    document.getElementById("hotel_chain").options.selectedIndex = 0;
				    document.getElementById("hotel_name").value = "";
				    document.getElementById("hotel_rating").options.selectedIndex = 0;
    				
				    document.getElementById("hotel_amenities[0]").checked = false;
				    document.getElementById("hotel_amenities[1]").checked = false;
				    document.getElementById("hotel_amenities[2]").checked = false;
				    document.getElementById("hotel_amenities[3]").checked = false;
				    document.getElementById("hotel_amenities[4]").checked = false;
				    document.getElementById("hotel_amenities[5]").checked = false;
				    document.getElementById("hotel_amenities[6]").checked = false;
				    document.getElementById("hotel_amenities[7]").checked = false;
				    document.getElementById("hotel_amenities[8]").checked = false;
				    document.getElementById("hotel_amenities[9]").checked = false;
				    document.getElementById("hotel_amenities[10]").checked = false;
				    document.getElementById("hotel_amenities[11]").checked = false;
				}
				
				if( document.getElementById("trip_type") != null )
                		{
				    document.getElementById("trip_type").options.selectedIndex = 0;
				    document.getElementById("departure").value = "";
				    document.getElementById("regions").options.selectedIndex = 0;
				    document.getElementById("destid").options.selectedIndex = 0;
				    document.getElementById("num_rooms").options.selectedIndex = 0;
				    document.getElementById("room1_adults").options.selectedIndex = 1;
				    document.getElementById("room1_children").options.selectedIndex = 0;
				    document.getElementById("room2_adults").options.selectedIndex = 1;
				    document.getElementById("room2_children").options.selectedIndex = 0;
				}
				
				if( document.getElementById("pickup_city") != null )
                		{
				    document.getElementById("pickup_city").value = "";
				    document.getElementById("car_type").options.selectedIndex = 0;
				    document.getElementById("car_company").options.selectedIndex = 0;
				}
				
				if( document.getElementById("travelSpeciality") != null )
				{
				    setTravelSpecValues();
				}
				
				if( document.getElementById("flightType") != null )
				{
				    document.getElementById("flightType").options.selectedIndex = 0;
				    document.getElementById("flightClass").options.selectedIndex = 0;
				}
				
				document.getElementById("VendorSearchForm").VendorID.options.selectedIndex = 0;
				document.getElementById("DestinationInfo").options.selectedIndex = 0;
				document.getElementById("TravelTools").options.selectedIndex = 0;
				
				


								
				
				if( document.getElementById("YourInterests") != null   )
				{
					var yourInterests = document.getElementById("YourInterests");
					if(window.location.search.substring(1) == "hawaii" )
					{
						yourInterests.style.display = 'block';
						document.getElementById('ID2E412').checked = true;
					}
				    	else
					{
						document.getElementById('ID770E5').checked = true;
						yourInterests.style.display = 'none';
					}
				}
				
			}

			function switchAirFields()
			{
			    if(document.getElementById("flightType") != null)
			    {
			      var caseValue = document.getElementById("flightType").options.selectedIndex;
			      
				  switch (caseValue) {
				    case 0:
						hideDiv("NumberOfLegs");
						showDiv("Return");
				    	showDiv("Flight1");
				    	hideDiv("Flight1Header");
				    	hideDiv("Flight2");
				    	hideDiv("Flight3");
				    	hideDiv("Flight4");
				    	break;
				      
				    case 1:
						hideDiv("NumberOfLegs");
						hideDiv("Return");
						showDiv("Flight1");
						hideDiv("Flight1Header");
						hideDiv("Flight2");
						hideDiv("Flight3");
						hideDiv("Flight4");
						break;
				      
				    case 2:
						showDiv("NumberOfLegs");
						hideDiv("Return");
						hideDiv("Flight1");
						showDiv("Flight1Header");
						hideDiv("Flight2");
				      	hideDiv("Flight3");
				      	hideDiv("Flight4");

						switch( document.getElementById("numMultiLegs").options.selectedIndex )
						{
							case 2:
								showDiv("Flight4");
							case 1:
								showDiv("Flight3");
							case 0:
								showDiv("Flight2");
							default:
								showDiv("Flight1");
						}
				      break;
 				    }
 			    }
			}

			function switchHotelFields(caseValue)
			{
			    if(document.getElementById("hotel_address"))
			    {
				  switch (caseValue) {
				    case 0:
						hideDiv("HotelCitySelected");
						showDiv("HotelCityNotSelected");
						showDiv("HotelAddressSelected");
						hideDiv("HotelAddressNotSelected");
						showDiv("HotelCityLabel");
						showDiv("HotelAddress");
						showDiv("HotelAddressFields");
						document.getElementById("hotel_address").value="";
						document.getElementById("hotel_city").value="";
						document.getElementById("hotel_state").value="";
						document.getElementById("hotel_zipcode").value="";
						document.getElementById("hotel_country").value="";
						document.getElementById("search_type").value = "Address";
						break;
				      
				    case 1:
						showDiv("HotelCitySelected");
						hideDiv("HotelCityNotSelected");
						hideDiv("HotelAddressSelected");
						showDiv("HotelAddressNotSelected");
						hideDiv("HotelCityLabel");
						hideDiv("HotelAddress");
						hideDiv("HotelAddressFields");
						document.getElementById("hotel_city").value="";
						document.getElementById("search_type").value = "City";
						break;
 				    }
 				}
			}

			function switchHotelMoreOptions(caseValue)
			{
			    if( document.getElementById("HotelMoreOptions") != null )
			    {
				    switch ( caseValue )
				    {	
					    case 0:
						    hideDiv("HotelMoreOptions");
						    showDiv("HotelShowMoreOptions");
						    break;

					    case 1:
						    showDiv("HotelMoreOptions");
						    hideDiv("HotelShowMoreOptions");
						    break;
				    }
				}
					
			}
			
			function setRooms()
			{
			    if( document.getElementById("Room1Header") != null )
			    {
				    hideDiv("Room1Header");
				    hideDiv("Room2");
				}
			}

			function switchRooms( selectObj )
			{
				switch ( selectObj.options.selectedIndex )
				{
					case 0:
						hideDiv("Room1Header");
						hideDiv("Room2");
						break;

					case 1:
						showDiv("Room1Header");
						showDiv("Room2");
						break;
				}
			}
			
			function validateCruiseForm()
			{
				var errors = "";
				
				var selectedMonth = document.getElementById("cruise_month").options.selectedIndex;
				var selectedYear = document.getElementById("cruise_year").options.selectedIndex + 2009;
				var today = new Date();
				
				if( today.getFullYear() > selectedYear )
				{
					errors += "Please select this or a future year for the sailing year.";
				}
				else
				{
					// If selected month is any month then don't validate month.
					if( selectedMonth != 0 && today.getFullYear() == selectedYear && today.getMonth() + 1 > selectedMonth )
					{
						errors += "Please select this or a future month for the sailing month.";
					}
				}
				
				if( errors == null || errors == "" )
				{
					return true;
				}
				else
				{
					window.alert( errors );
					return false;
				}
			}

			function validateAirForm()
			{
				var parsedDate = null;

				var nonStopFlightCheck = document.getElementById("nonStopFlightCheck");
				
				if( nonStopFlightCheck.checked )
				{
					document.getElementById("maxConnections").value = 0;
				}
				else
				{
					document.getElementById("maxConnections").value = -1;
				}
				
				var flightType = document.getElementById("flightType").options.selectedIndex;
				
				var errors = "";

				if( flightType == 0 || flightType == 1 )
				{
					errors += validateRequired( document.getElementById("segDepartCity0").value, "From city name or airport code" );
					errors += validateRequired( document.getElementById("segArriveCity0").value, "To city name or airport code" );

					var departDate = document.getElementById("flightDepartDate").value;
					
					var departErrors = validateDate( departDate, "leave" ); 
					
					if( departErrors == null || departErrors == "" )
					{				
						parsedDate = parseDate( departDate );
						
						if( parsedDate != null )
						{
						    document.getElementById("segDepartDay0").value=parsedDate.getDate();
						    document.getElementById("segDepartMonth0").value=parsedDate.getMonth() + 1;
						}
					}
					else
					{
						errors += departErrors;
					}
					
					if( flightType == 0 )
					{
						document.getElementById("segDepartCity1").value = document.getElementById("segArriveCity0").value;
						document.getElementById("segArriveCity1").value = document.getElementById("segDepartCity0").value;
					
						var destDate = document.getElementById("flightAriveDate").value;
						var destErrors = validateDate( destDate, "return" );
						
						if( destErrors == null || destErrors == "" )
						{
							parsedDate = parseDate( destDate );
							
							if( parsedDate != null )
						    {
							    document.getElementById("segDepartDay1").value=parsedDate.getDate();
							    document.getElementById("segDepartMonth1").value=parsedDate.getMonth() + 1;
							}
							
							document.getElementById("segDepartTime1").value=document.getElementById("flightAriveTime").value;
						}
						else
						{
							errors += destErrors;
						}
		
						if( errors == null || errors == "" )
						{
							errors += validateDates( departDate, "leave date", destDate, "return date" );
						}
					}
				}
				else
				{
					var date1 = null;
					var date2 = null;
					var date3 = null;
					var date4 = null;

					// Multi-part flight.
					switch( document.getElementById("numMultiLegs").options.selectedIndex )
					{
						case 2:
							errors += validateRequired( document.getElementById("segDepartCity3").value, "Flight 4 from city name or airport code" );
							errors += validateRequired( document.getElementById("segArriveCity3").value, "Flight 4 to city name or airport code" );
							date4 = parseDate( document.getElementById("flightDepartDate3").value );
							errors += validateDate( document.getElementById("flightDepartDate3").value, "flight 4 leave" );
							
							if( date4 != null )
							{
							    document.getElementById("segDepartDay3").value=date4.getDate();
							    document.getElementById("segDepartMonth3").value=date4.getMonth() + 1;
							}
				
						case 1:
							errors += validateRequired( document.getElementById("segDepartCity2").value, "Flight 3 from city name or airport code" );
							errors += validateRequired( document.getElementById("segArriveCity2").value, "Flight 3 to city name or airport code" );
							date3 = parseDate( document.getElementById("flightDepartDate2").value );
							errors += validateDate( document.getElementById("flightDepartDate2").value, "flight 3 leave" );
							
							if( date3 != null )
							{
							    document.getElementById("segDepartDay2").value=date3.getDate();
							    document.getElementById("segDepartMonth2").value=date3.getMonth() + 1;
							}

						case 0:
							errors += validateRequired( document.getElementById("segDepartCity1").value, "Flight 2 from city name or airport code" );
							errors += validateRequired( document.getElementById("segArriveCity1").value, "Flight 2 to city name or airport code" );
							date2 = parseDate( document.getElementById("flightDepartDate1").value );			
							errors += validateDate( document.getElementById("flightDepartDate1").value, "flight 2 leave" );
							
							if( date2 != null )
							{
							    document.getElementById("segDepartDay1").value=date2.getDate();
							    document.getElementById("segDepartMonth1").value=date2.getMonth() + 1;
							}

							errors += validateRequired( document.getElementById("segDepartCity0").value, "Flight 1 from city name or airport code" );
							errors += validateRequired( document.getElementById("segArriveCity0").value, "Flight 1 to city name or airport code" );
							date1 = parseDate( document.getElementById("flightDepartDate").value );
							errors += validateDate( document.getElementById("flightDepartDate").value, "flight 1 leave" );
							
							if( date1 != null )
							{
							    document.getElementById("segDepartDay0").value=date1.getDate();
							    document.getElementById("segDepartMonth0").value=date1.getMonth() + 1;
							}

					}
				}

				if( date4 != null && date3 != null && date4 < date3 )
				{
					errors += "The flight 4 leave date can't be before flight 3 leave date.\n";
				}

				if( date3 != null && date2 != null && date3 < date2 )
				{
					errors += "The flight 3 leave date can't be before flight 2 leave date.\n";
				}
			
				if( date2 != null && date1 != null && date2 < date1 )
				{
					errors += "The flight 2 leave date can't be before flight 1 leave date.\n";
				}
				
				if( errors == null || errors == "" )
				{
					return true;
				}
				else
				{
					window.alert( errors );
					return false;
				}
		
			}

			function validateHotelForm()
			{
				var errors = "";
				
				if( document.getElementById("search_type").value == "City" )
				{
					errors += validateRequired( document.getElementById("hotel_city").value, "City or Zip Code");
				}
				else
				{
					errors += validateRequired( document.getElementById("hotel_address").value, "Address");
					errors += validateRequired( document.getElementById("hotel_city").value, "City");
					errors += validateRequired( document.getElementById("hotel_zipcode").value, "Zip code");
				}
				
				errors += validateDate( document.getElementById("HotelCheckinDate").value, "hotel check-in" );
				errors += validateDate( document.getElementById("HotelCheckoutDate").value, "hotel check-out" );

				errors += validateDates( document.getElementById("HotelCheckinDate").value, "hotel check-in", document.getElementById("HotelCheckoutDate").value, "hotel check-out" );
				
				var date = parseDate(document.getElementById("HotelCheckinDate").value);
				
				if( date != null )
				{
				    document.getElementById("checkin_day").value = date.getDate();
				    document.getElementById("checkin_month").value = date.getMonth() + 1;
				}
				
				date = parseDate(document.getElementById("HotelCheckoutDate").value);
				
				if( date != null )
				{
				    document.getElementById("checkout_day").value = date.getDate();
				    document.getElementById("checkout_month").value = date.getMonth() + 1;
				}
				
				if( errors == "" )
				{
					return true;
				}
				else
				{
					window.alert( errors );
					return false;
				}
			}

			function validateCarForm()
			{
				var errors = "";
				
				errors += validateRequired( document.getElementById("pickup_city").value, "Pickup location" );

				errors += validateDate( document.getElementById("CarPickupDate").value, "pickup" );
				
				errors += validateDates( document.getElementById("CarPickupDate").value, "pickup date", document.getElementById("CarDropoffDate").value, "dropoff date" );

				var parsedDate = parseDate( document.getElementById("CarPickupDate").value );

                if( parsedDate != null )
                {
				    document.getElementById("pickup_day").value=parsedDate.getDate();
				    document.getElementById("pickup_month").value=parsedDate.getMonth() + 1;
				    document.getElementById("pickup_year").value=parsedDate.getFullYear();
			    }
				
				errors += validateDate( document.getElementById("CarDropoffDate").value, "dropoff" );

				parsedDate = parseDate( document.getElementById("CarDropoffDate").value );

                if( parsedDate != null )
                {
				    document.getElementById("return_day").value=parsedDate.getDate();
				    document.getElementById("return_month").value=parsedDate.getMonth() + 1;
				    document.getElementById("return_year").value=parsedDate.getFullYear();
				}
	
				if( errors == null || errors == "" )
				{
					return true;
				}
				else
				{
					window.alert( errors );
					return false;
				}
			}
			
			function validatePackagesForm()
			{
				var errors = "";
				
				errors += validateRequired( document.getElementById("departure").value, "From city name or airport code" );
				errors += validateRequired( document.getElementById("regions").value, "Destination region" );
				errors += validateRequired( document.getElementById("destname").value, "Destination" );
				errors += validateDate( document.getElementById("PackagesDepartDate").value, "leave" );
				errors += validateDate( document.getElementById("PackagesAriveDate").value, "return" );
				errors += validateDates( document.getElementById("PackagesDepartDate").value, "leave date", document.getElementById("PackagesAriveDate").value, "return date" );
				
				var parsedDate = parseDate( document.getElementById("PackagesDepartDate").value );
				
				if( parsedDate != null )
				{
				    document.getElementById("depart_day").value=parsedDate.getDate();
				    document.getElementById("depart_month").value=parsedDate.getMonth() + 1;
				 }
				
				parsedDate = parseDate( document.getElementById("PackagesAriveDate").value );
				
				if( parsedDate != null )
				{
				    document.getElementById("dest_day").value=parsedDate.getDate();
				    document.getElementById("dest_month").value=parsedDate.getMonth() + 1;
				}
				
				if( errors == null || errors == "" )
				{
					return true;
				}
				else
				{
					window.alert( errors );
					return false;
				}
			}

			function validateDates( startDate, startDateName, endDate, endDateName )
			{
				var errors = "";
				
				var date1 = parseDate( startDate );
				var date2 = parseDate( endDate );
				
				if( !(date1 == null || date2 == null) && (date1 > date2) )
				{
					errors = errors + "The " + endDateName + " has to be after the " + startDateName + ".\n";
				}
				
				return errors;
			}

			function validateDate( date, dateName )
			{
				var errors = "";
				var date1 = parseDate( date );
				
				if( date1 == null )
				{
					errors +=  "Please specify a valid " + dateName + " date.\n";
				}
				else
				{
					var yesterday = new Date();
					yesterday.setDate( yesterday.getDate() -1 );

					if( date1 <= yesterday )
					{
						errors += "The " + dateName + " date has to be today or after.\n";
					}
					else
					{
					    var millisFromToday = date1 - new Date();
					    
					    if( millisFromToday > 0 && ((((millisFromToday/1000)/60)/60)/24) > 340 )
					    {
					        errors += "The " + dateName + " date must be less then 340 days from the booking day.\n";
					    }
					}
				}
				
				return errors;
			}
			
			function validateRequired( string, name )
			{
				var errors = "";

				if( string == null || string == "" )
				{
					errors = name + " is required.\n";
				}

				return errors;
			}
			
			function chooseUrl( form, id, fieldName )
			{
				var options = document.getElementById(id).options;
				var url = options[options.selectedIndex].value;
				
				if( url == '')
				{
				    window.alert('Please select a ' + fieldName + '.');
				}
				else
				{
				    document.location.href = url;
				}
				
				return false;
				    
			}
			
			function validateCruiseInfo( form )
			{
			    if( form.VendorID.options.selectedIndex == 0 )
			    {
			        window.alert('Please select a cruise line.');
			        return false;
			    }
			    else
			    {
			        return true;
			    }
			}
			
			function getQueryVariable(variable) {
			      var value = "";
                  var query = window.location.search.substring(1);
                  
                  var vars = query.split("&");
                  
                  for (var i=0;i<vars.length;i++) {
                    var pair = vars[i].split("=");
                    if (pair[0] == variable) {
                      value = pair[1];
                      break;
                    }
                  }
                    
                  return value;
              }
              
              function setTravelSpecValues() {
              
                var travelSpec = decode( getQueryVariable("travelSpeciality"));
                
                if( travelSpec != "" )
                {
                    var travelSpecOptions = document.getElementById("travelSpeciality").options;
                    
                    for( i = 0; i < travelSpecOptions.length; i++ )
                    {
                        if( travelSpecOptions[i].text == travelSpec )
                        {
                            document.getElementById("travelSpeciality").options.selectedIndex = i;
                            break;
                        }
                    }
                }
                else
                {
                    document.getElementById("travelSpeciality").options.selectedIndex = 0;
                }
                
                var travelDest = decode( getQueryVariable("travelDestination"));
                
                if( travelDest != "" )
                {
                    var travelDestOptions = document.getElementById("travelDestination").options;
                    
                    for( i = 0; i < travelDestOptions.length; i++ )
                    {
                        if( travelDestOptions[i].text == travelDest )
                        {
                            document.getElementById("travelDestination").options.selectedIndex = i;
                            break;
                        }
                    }
                }
                else
                {
                    document.getElementById("travelDestination").options.selectedIndex = 0;
                }
                
                var travelCruise = decode( getQueryVariable("travelCruiseLine"));
                
                if( travelCruise != "" )
                {
                    var travelCruiseOptions = document.getElementById("travelCruiseLine").options;
                    
                    for( i = 0; i < travelCruiseOptions.length; i++ )
                    {
                        if( travelCruiseOptions[i].text == travelCruise )
                        {
                            document.getElementById("travelCruiseLine").options.selectedIndex = i;
                            break;
                        }
                    }
                }
                else
                {
                    document.getElementById("travelCruiseLine").options.selectedIndex = 0;
                }
				
              }
              
              function decode(str) {
                     return unescape(str.replace(/\+/g, " "));
                }