
//// Search form presets handling	////

// Show individual airports after an airport group has been selected
function changeAirports(element, type, keepFirst)
{
	// Get element for sub-menu
	var subElement;
	var subList;
	if (type == 'dep_airport_groups')
	{
		subElement = eval('document.forms.' + element.form.name + '.airportfromid');
		subList = arrDepAirports;
	}
	else if (type == 'dest_airport_groups')
	{
		subElement = eval('document.forms.' + element.form.name + '.airporttoid');
		subList = arrDestAirports;
	}
	else if (type == 'dest_resort_groups')
	{
		subElement = eval('document.forms.' + element.form.name + '.resorttoid');
		subList = arrDestResorts;
	}
	else if (type == 'dest_resort_airports')
	{
		subElement = eval('document.forms.' + element.form.name + '.resorttoid');
		subList = arrDestResortAirports;
	}

	// Id for the current main menu selection, e.g. airport group id
	var elementId = element.value;

	// Clear out elements (if keepFirst is 1, the first item, probably "Any", will be kept)
	subElement.options.length = keepFirst;

	// Create select options for sub-elements matching current selection
	for (var i = 0; i < subList.length; i++)
	{
		if (subList[i][2] == elementId)
		{
			subElement[subElement.length] = new Option
			(
				subList[i][1],
				subList[i][0]
			);
		}
	}

	if(subElement.length > 1)
	{
		subElement.disabled = false;
	}
	else 
	{
		subElement.disabled = true;
	}
	

}

function checkQuickSearch(objForm)
{
	var len = 0;
	if(objForm.airportgroupfromid)
	{
		len = objForm.airportgroupfromid.value.length;
	}
	else
	{
		len = objForm.airportcombinedfromid.value.length;
	}
	if(	(len +
		objForm.airportgrouptoid.value.length) 
		== 0 )
		{
			alert("Please select a departure or destination area");
			return false;
		}
	return true;
}


// Store form values in a cookie for when user clicks 'back'
function saveFormValues(objForm, searchType)
{
	var airportfromgroup;
	var airporttogroup;
	var day;
	var monthyear;
	var daysplusminus;
	var nights;
	var airportto;
	var airportfrom;
	var price = "";
	var boardbasis = "";
	var rating = "";

	switch ( searchType )
	{
		case "quicksearch":
			if(!checkQuickSearch(objForm)) return false;
			airportfromgroup = objForm.airportgroupfromid.value;
			airporttogroup = objForm.airportgrouptoid.value;
			day = objForm.departure_day.value;
			monthyear = objForm.departure_monthyear.value;
			nights = objForm.duration.value;
			break
		case "resortsearch":
			airportfromgroup = objForm.airportgroupfromid.value;
			day = objForm.departure_day.value;
			monthyear = objForm.departure_monthyear.value;
			nights = objForm.duration.value;
			break;
		case "generalsearch":
			airportfromgroup = objForm.airportgroupfromid.value;
			airporttogroup = objForm.airportgrouptoid.value;
			day = objForm.departure_day.value;
			monthyear = objForm.departure_monthyear.value;
			nights = objForm.duration.value;
			airportfrom = objForm.airportfromid.value;
			//airportto = objForm.resorttoid.value;
			airportto = objForm.airporttoid.value;
			daysplusminus = objForm.depvariance.value;
			break;
		case "fullsearch":
			if(!checkQuickSearch(objForm)) return false;
			for(i = 0; i<objForm.boardbasis.length; i++)
			{
				if(objForm.boardbasis[i].checked)
				{
					boardbasis = objForm.boardbasis[i].value;
					break;
				}
				
			}
			rating = objForm.rating.value;
		case "fullsearch_ai":
			price = objForm.price.value;
		case "fullsearch_fo":
			airportfromgroup = objForm.airportgroupfromid.value;
			airporttogroup = objForm.airportgrouptoid.value;
			day = objForm.departure_day.value;
			monthyear = objForm.departure_monthyear.value;
			nights = objForm.duration.value;
			airportfrom = objForm.airportfromid.value;
			airportto = objForm.airporttoid.value;
			daysplusminus = objForm.depvariance.value;			
			break;
	
	};

	var cookieString = escape(''
		+ airportfromgroup + ':'
		+ airportfrom + ':'
		+ airporttogroup + ':'
		+ airportto + ':'
		+ day + ':'
		+ monthyear + ':'
		+ daysplusminus + ':'
		+ nights  + ':'
		+ boardbasis + ':'
		+ price + ':'
		+ rating );

	document.cookie = searchType + objForm.name + '=' + cookieString;
	return true;
}

// Restore form values from cookie
function restoreFormValues(objForm, searchType)
{
	var cookies = document.cookie;
	var indexSearch = searchType + objForm.name + '=';

	var pos = cookies.indexOf(indexSearch);
	if (pos == -1)
	{
		return;
	}

	var start = pos + searchType.length + objForm.name.length + 1;
	
	var end = cookies.indexOf(';', start);
	if (end == -1)
	{
		end = cookies.length;
	}

	var cookie = unescape(cookies.substring(start, end));

	var parts = cookie.split(':');

	switch ( searchType )
	{
		case "quicksearch":
			objForm.airportgroupfromid.value = parts[0];
			objForm.airportgrouptoid.value = parts[2];
			changeAirports(objForm.airportgrouptoid, 'dest_airport_groups', true); 
			objForm.airporttoid.value = parts[3];
			objForm.departure_monthyear.value = parts[5];
			changeMonth(objForm, objForm.departure_monthyear.value);
			objForm.departure_day.value = parts[4];
			objForm.duration.value = parts[7];
			break
		case "resortsearch":
			objForm.airportgroupfromid.value = parts[0];
			objForm.departure_monthyear.value = parts[5];
			changeMonth(objForm, objForm.departure_monthyear.value);
			objForm.departure_day.value = parts[4];
			objForm.duration.value = parts[7];
			break;
		case "generalsearch":
			objForm.airportgroupfromid.value = parts[0];
			objForm.airportgrouptoid.value = parts[2];
			objForm.departure_monthyear.value = parts[5];
			changeMonth(objForm, objForm.departure_monthyear.value);
			objForm.departure_day.value = parts[4];
			objForm.depvariance.value = parts[6];
			objForm.duration.value = parts[7];

			changeAirports(objForm.airportgroupfromid, 'dep_airport_groups', true); 
			//changeAirports(objForm.resortgrouptoid, 'dest_airport_groups', true); 
			//objForm.resorttoid.value = parts[3];
			objForm.airportfromid.value = parts[1];		
			break;
		case "fullsearch":
			objForm.boardbasis.value = parts[8];
			for(i = 0; i<objForm.boardbasis.length; i++)
			{
				objForm.boardbasis[i].checked = false;
				if(objForm.boardbasis[i].value == parts[8])
				{
					objForm.boardbasis[i].checked = true;
				}
				
			}
			objForm.rating.value = parts[10];
			objForm.airportgroupfromid.value = parts[0];
			objForm.airportgrouptoid.value = parts[2];
			objForm.departure_monthyear.value = parts[5];
			changeMonth(objForm, objForm.departure_monthyear.value);
			objForm.departure_day.value = parts[4];
			objForm.depvariance.value = parts[6];
			objForm.duration.value = parts[7];

			changeAirports(objForm.airportgroupfromid, 'dep_airport_groups', true); 
			changeAirports(objForm.airportgrouptoid, 'dest_airport_groups', true); 

			objForm.airporttoid.value = parts[3];
			objForm.airportfromid.value = parts[1];		
			objForm.price.value = parts[9];
			break;
		case "fullsearch_ai":
			objForm.boardbasis.value = 2;
		case "fullsearch_fo":		
			objForm.airportgroupfromid.value = parts[0];
			objForm.airportgrouptoid.value = parts[2];
			
			objForm.departure_monthyear.value = parts[5];
			changeMonth(objForm, objForm.departure_monthyear.value);
			objForm.departure_day.value = parts[4];
			
			objForm.depvariance.value = parts[6];
			objForm.duration.value = parts[7];

			changeAirports(objForm.airportgroupfromid, 'dep_airport_groups', true); 
			changeAirports(objForm.airportgrouptoid, 'dest_airport_groups', true); 

			objForm.airporttoid.value = parts[3];
			objForm.airportfromid.value = parts[1];		
			objForm.price.value = parts[9];
			break;
	};
}


function changeMonth(objForm, date)
{
	var month, year;
	var today = new Date();

	// Get the existing day of month, to preserve where possible
	var daySelection = objForm.departure_day.value;
	
	date = date.split('-');
	month = date[1];
	year = date[0];


	var start = (today.getMonth()+1 == month && year == today.getFullYear()) ? today.getDate() : 1;
	var max = 31;
	
	if(2 == month)
	{
		max = 28;
		if((year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)))
		{
			max = 29;
		}
	}
	else if(4 == month || 6 == month || 9 == month || 11 == month)
	{
		max = 30;
	}
	
	objForm.departure_day.options.length = 0;
	var foundSelected = false;
	var selectedIndex; 

	for(var i = start; i < (max+1); i++)
	{
		var txt = '' + i;
		var isSelected = false;

		if(txt.length == 1)
		{
			txt = "0" + txt;
		}
		
		if (i == daySelection)
		{
			selectedIndex = i;
			foundSelected = true;
		}
		
		objForm.departure_day.options[objForm.departure_day.options.length]
			= new Option(txt, txt, false);
	}

	// Set selection if not done so already
	if ((! foundSelected) && objForm.departure_day.options.length)
	{
		if (daySelection < start)
		{
			objForm.departure_day.options[0].selected = true;
		}
		else if (daySelection > max)
		{
			objForm.departure_day.options[objForm.departure_day.options.length-1].selected = true;
		}
	}
	else if (selectedIndex)
	{
		//objForm.departure_day.options[selectedIndex-start].selected = true;
		objForm.departure_day.selectedIndex = selectedIndex-start;
	}
}
