// Common Javascript for Ski Holiday Extras

function check_resort(objForm)
{
	if(objForm.checkresort.value > 0 && objForm.checkresort.value != objForm.resortid.value)
	{
		if(confirm("Choosing another resort will remove all the items currently in your basket. Are you sure?"))
		{
			objForm.checkresort.value = objForm.resortid.value;
			return true;
		}
		else
		{
			return false;	
		}
	}
	else if(objForm.checkdate.value.length > 0 &&objForm.checkdate.value != objForm.departure_monthyear.value + "-" + objForm.departure_day.value)
	{
		if(confirm("Choosing another date will remove all the items currently in your basket. Are you sure?"))
		{
			objForm.checkdate.value = objForm.departure_monthyear.value + "-" + objForm.departure_day.value;
			return true;
		}
		else
		{
			return false;	
		}
	}
}

function changeMonth(objForm, date)
{
	var today = new Date();
	var daySelection = objForm.departure_day.value;
	date = date.split('-');
	var month = date[1];
	var year = date[0];
	var max = 31; // days in the month
	
	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;
	}
	
	var start = (today.getMonth()+1 == month && year == today.getFullYear()) ? today.getDate() : 1;
	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;
	}
}

// update a 'child' dropdown, based on the value of a 'parent' one, and a predefined content array
function updateDropdown(childId, parentValue, content, keepFirst)
{
	var childElement = document.getElementById(childId);
	if ( ! childElement )
	{
		return false;
	}
	
	// preserve current drop-down value, in case it's still valid
	var childValue = childElement.value;
	
	// truncate child dropdown; keep first element (e.g. 'Any') if required
	keepFirst = (keepFirst ? 1 : 0);
	childElement.length = keepFirst;
	
	// Create select options for sub-elements matching current selection
	for (var i = 0; i < content.length; i++)
	{
		if (content[i][0] == parentValue)
		{
			childElement[childElement.length] = new Option
			(
				content[i][2],
				content[i][1],
				(content[i][1] == childValue),
				(content[i][1] == childValue)
			);
			childElement[childElement.length - 1].className = content[i][3];
		}
	}
	
	// if there's only one [real] element, select it
	if(childElement.length == keepFirst + 1)
	{
		childElement.options[keepFirst].selected = true;
	}
	
	if(childElement.length > keepFirst)
	{
		childElement.disabled = false;
	}
	else 
	{
		childElement.disabled = true;
	}
}

function update_dates_from_calendar(dateval)
{
	var date = dateval.split("-");

	var monthyear = document.getElementById("departure_monthyear");
	monthyear.value = date[0] + "-" + date[1];
	
	// update the days drop down
	changeMonth(monthyear.form, monthyear.value);
	
	var day = document.getElementById("departure_day");
	day.value = date[2];
}

function update_calendar_from_dates()
{
	var monthyear = document.getElementById("departure_monthyear");
	var day = document.getElementById("departure_day");
	var calendar = document.getElementById("f_date_c");
	
	calendar.value = monthyear.value + "-" + day.value;
}
function disallowDate(date) {
  // date is a JS Date object
  if ( date.getMonth() > 3 && date.getMonth() != 11 ) {
    return true; // disable July 5 2003
  }
  return false; // enable other dates
};

