var DATE = 1;
var DESTINATIONGROUP = 2;
var DESTINATION = 3;

var m_oAllDatesArray = new Array();
var m_oAllDestinationGroupsArray = new Array();
var m_oSearchBoxInfoArray = new Array();

function changeDate(oKeyValue)
{
	var nDestinationGroupIndex = 0;
	var nDestinationGroupRecno = 0;
	var oDestinationArray = new Array();
	var oDestinationGroupArray = new Array();
	var oDropDown = document.getElementById("destination");
	
	oDestinationGroupArray = searchArray(m_oSearchBoxInfoArray, DATE, oKeyValue);
	
	if (oKeyValue != "-99")
	{
		oDestinationGroupArray = sortArray(oDestinationGroupArray, DESTINATIONGROUP, DESTINATION, -99);
		nDestinationGroupIndex = resetDropDown(oDestinationGroupArray, oDropDown, DESTINATIONGROUP);
	}
	else
	{
		nDestinationGroupIndex = resetDropDown(m_oAllDestinationGroupsArray, oDropDown, DESTINATIONGROUP);
	}
	
	if (nDestinationGroupIndex > 0)
	{
		nDestinationGroupRecno = oDropDown.options[nDestinationGroupIndex].value;
		oDestinationArray = searchArray(oDestinationGroupArray, DESTINATIONGROUP, nDestinationGroupRecno);
		
		if (oKeyValue == "-99")
		{
			oDestinationArray = sortArray(oDestinationArray, DESTINATION, -99, -99);
		}
	}

	resetDropDown(oDestinationArray, document.getElementById("location"), DESTINATION);
}

function changeDestination(oKeyValue)
{
	var oDateArray = new Array();
	var oDropDown = document.getElementById("checkin");
	var oDropDownDestination = document.getElementById("destination");
	
	if (oKeyValue == "-99")
	{
		oKeyValue = oDropDownDestination.options[oDropDownDestination.selectedIndex].value;
		oDateArray = searchArray(m_oSearchBoxInfoArray, DESTINATIONGROUP, oKeyValue);
	}
	else
	{
		oDateArray = searchArray(m_oSearchBoxInfoArray, DESTINATION, oKeyValue);
	}
	
	oDateArray = sortArray(oDateArray, DATE, -99, -99);
	resetDropDown(oDateArray, oDropDown, DATE);
}

function changeDestinationGroup(oKeyValue)
{
	var nDateIndex = 0;
	var nDateKey = "-99";
	var oDateArray = new Array();
	var oDestinationArray = new Array();
	var oDropDown = document.getElementById("checkin");
	
	oDateArray = searchArray(m_oSearchBoxInfoArray, DESTINATIONGROUP, oKeyValue);
	
	if (oKeyValue == "-99")
	{
		nDateIndex = resetDropDown(m_oAllDatesArray, oDropDown, DATE);
	}
	else
	{
		oDateArray = sortArray(oDateArray, DATE, DESTINATION, -99);
		nDateIndex = resetDropDown(oDateArray, oDropDown, DATE);
	}
	
	if (nDateIndex > 0 && oKeyValue != "-99")
	{
		nDateKey = oDropDown.options[nDateIndex].value;
		oDestinationArray = searchArray(oDateArray, DATE, nDateKey);
	}
	else if (oKeyValue != "-99")
	{
		oDestinationArray = sortArray(oDateArray, DESTINATION, -99, -99);
	}

	resetDropDown(oDestinationArray, document.getElementById("location"), DESTINATION);
}

function getValueFromArray(oArray, nFieldType)
{
	var nReturnValue = 0;
	
	if (nFieldType == DATE)
	{
		nReturnValue = parseInt(oArray.date);
	}
	else if (nFieldType == DESTINATIONGROUP)
	{
		nReturnValue = parseInt(oArray.destinationGroupRecno);
	}
	else if (nFieldType == DESTINATION)
	{
		nReturnValue = parseInt(oArray.destinationRecno);
	}
	
	return nReturnValue;
}

function getValueFromArrayAsString(oArray, nFieldType, bKey)
{
	var sReturnValue = "";
	
	if (nFieldType == DATE)
	{
		sReturnValue = bKey ? oArray.date : sReturnValue = oArray.formattedDate;
	}
	else if (nFieldType == DESTINATIONGROUP)
	{
		sReturnValue = bKey ? oArray.destinationGroupRecno : sReturnValue = oArray.destinationGroup;
	}
	else if (nFieldType == DESTINATION)
	{
		sReturnValue = bKey ? oArray.destinationCode : sReturnValue = oArray.destination;
	}
	
	return sReturnValue;
}

function isValid(oForm, nCobrandRecno)
{
	var sMessage = "";

	if (oForm.checkin.options[oForm.checkin.selectedIndex].value == -99)
	{
		sMessage += "Please select a Check-In Date.\n";
	}
	
	if (nCobrandRecno == 326229)
	{
		if (oForm.location.options[oForm.location.selectedIndex].value == -99)
		{
			sMessage += "Please select a Destination.\n";
		}
	}
	else
	{
		if (oForm.destination.options[oForm.destination.selectedIndex].value == -99 || oForm.destination.options[oForm.destination.selectedIndex].value == -98)
		{
			sMessage += "Please select a Destination.\n";
		}

		if (oForm.location.options[oForm.location.selectedIndex].value == -99)
		{
			sMessage += "Please select a Location.\n";
		}
	}

	if (sMessage.length > 0)
	{
		alert(sMessage);
		return false;
	}
	else
	{
		return true;
	}
}

function processBookingRequest(nId, nType)
{
	oForm = eval("document.intervaldata" + nId);
	oForm["purchasetyperecno"].value = nType;
	
	if (nType != 1) //discount rate booking
	{
		oForm["priceasfloat"].value = oForm["discountrate"].value;
		oForm["price"].value = oForm["discountrateformatted"].value;
		oForm["usediscountrate"].value = true;
	}
	else
	{
		oForm["pointsvalue"].value = "0";
	}
	
	oForm.submit();
}

function resetForm()
{
	var oDropDownInfoArray = new Array();
	var oDateDropDown = document.getElementById("checkin");
	var oDestinationDropDown = document.getElementById("location");
	var oDestinationGroupDropDown = document.getElementById("destination");
	
	oDateDropDown.selectedIndex = 0;
	oDestinationGroupDropDown.selectedIndex = 0;
	oDestinationDropDown.selectedIndex = 0;
	
	resetDropDown(m_oAllDatesArray, oDateDropDown, DATE);
	resetDropDown(m_oAllDestinationGroupsArray, oDestinationGroupDropDown, DESTINATIONGROUP);
	resetDropDown(new Array(), oDestinationDropDown, DESTINATION);
}

function searchArray(oArray, nSearchField, oSearchKey)
{
	var nCount = 0;
	var nIndex = 0;
	var nUbound = 0;
	var sValue = "";
	var oResults = new Array();
	
	nUbound = oArray.length;
	
	if (oSearchKey == "-99")
	{
		oResults = oArray;
	}
	else
	{
		for (nCount = 0; nCount < nUbound; nCount++)
		{
			sValue = getValueFromArrayAsString(oArray[nCount], nSearchField, true);
			
			if (sValue == oSearchKey)
			{
				oResults[nIndex] = oArray[nCount];
				nIndex++;
			}
		}
	}
	
	return oResults;
}

function searchBoxInfoArray(sDate, sFormattedDate, nDestinationGroupRecno, sDestinationGroup, nDestinationRecno, sDestinationCode, sDestination)
{
	this.date = sDate;
	this.formattedDate = sFormattedDate;
	this.destinationGroupRecno = nDestinationGroupRecno;
	this.destinationGroup = sDestinationGroup;
	this.destinationRecno = nDestinationRecno;
	this.destinationCode = sDestinationCode;
	this.destination = sDestination;
}

function resetDropDown(oArray, oDropDown, nFieldType)
{
	var bBreakWritten = false;
	var nBreakValue = 0;
	var nCount = 0;
	var nIndex = 0;
	var nIndexToSelect = 0;
	var nLocaleGroupNameRecno = 0;
	var nUbound = 0;
	var nValue = 0;
	var sDescription = "";
	var sSelectedKey = "-99";
	var sValue = "";
	
	nLocaleGroupNameRecno = document.getElementById("localegroupnamerecno").value;
	nUbound = oArray.length;
	sSelectedKey = oDropDown.options[oDropDown.selectedIndex].value;
	
	oDropDown.options.length = 0;
	
	if (nFieldType == DATE)
	{
		oDropDown.options[oDropDown.options.length] = new Option("- Select a Month", "-99");
	}
	else if (nFieldType == DESTINATIONGROUP)
	{
		oDropDown.options[oDropDown.options.length] = new Option("- Select a Destination", "-99");
	}
	else if (nFieldType == DESTINATION)
	{
		oDropDown.options[oDropDown.options.length] = new Option("- Select a Location", "-99");
	}
	
	nIndex++;
	sSelectedKey = sSelectedKey == "-98" ? "-99" : sSelectedKey;
	
	for (nCount = 0; nCount < nUbound; nCount++)
	{
		nValue = getValueFromArray(oArray[nCount], nFieldType);
		sValue = getValueFromArrayAsString(oArray[nCount], nFieldType, true);
		sDescription = getValueFromArrayAsString(oArray[nCount], nFieldType, false)
		
		if (nBreakValue != nValue)
		{
			if (nFieldType == DESTINATIONGROUP && !bBreakWritten && ((nLocaleGroupNameRecno == 4 && nValue >= 13) ||  nLocaleGroupNameRecno == 4 && nValue >= 42))
			{
				bBreakWritten = true;
				
				oDropDown.options[oDropDown.options.length] = new Option("", "-98");
				oDropDown.options[oDropDown.options.length] = new Option("** Worldwide Resorts **", "-98");
				
				nIndex = nIndex + 2;
			}
			
			oDropDown.options[oDropDown.options.length] = new Option(sDescription, sValue);
			nIndexToSelect = sValue == sSelectedKey ? nIndex : nIndexToSelect;
			nBreakValue = nValue;
			nIndex++;
		}
	}
	
	oDropDown.selectedIndex = nIndexToSelect;
	
	return nIndexToSelect;
}

function sortArray(oArray, nPrimarySort, nSecondarySort, nTertiarySort)
{
	var bCheckSecondary = false;
	var bCheckTertiary = false;
	var bSort = false;
	var bSorted = false;
	var nCount = 0;
	var nIndex = 0;
	var nUbound = 0;
	var nValue1 = 0;
	var nValue2 = 0;
	var oTemp = searchBoxInfoArray("", "", -99, "", -99, "", "");
	
	nUbound = oArray.length - 1;
		
	for (nCount = 0; nCount < nUbound; nCount++)
	{
		bSorted = false;
		        
		for (nIndex = 0; nIndex < nUbound - nCount; nIndex++)
		{
			bSort = false;
			bCheckSecondary = false;
			bCheckTertiary = false;
			
			nValue1 = getValueFromArray(oArray[nIndex], nPrimarySort);
			nValue2 = getValueFromArray(oArray[nIndex + 1], nPrimarySort);
			
			if (nValue1 > nValue2)
			{
				bSort = true;
			}
			else if (nValue1 == nValue2 && nSecondarySort > 0)
			{
				bCheckSecondary = true;
			}

			if (bCheckSecondary)
			{
				nValue1 = getValueFromArray(oArray[nIndex], nSecondarySort);
				nValue2 = getValueFromArray(oArray[nIndex + 1], nSecondarySort);
				
				if (nValue1 > nValue2)
				{
					bSort = true;
				}
				else if (nValue1 == nValue2 && nTertiarySort > 0)
				{
					bCheckTertiary = true;
				}
			}
			
			if (bCheckTertiary)
			{
				nValue1 = getValueFromArray(oArray[nIndex], nTertiarySort);
				nValue2 = getValueFromArray(oArray[nIndex + 1], nTertiarySort);
				
				if (nValue1 > nValue2)
				{
					bSort = true;
				}
			}
			
			if (bSort)
			{	
				oTemp = oArray[nIndex];
				oArray[nIndex] = oArray[nIndex + 1];
				oArray[nIndex + 1] = oTemp;
				bSorted = true;
			}
		}
		        
		if (!bSorted)
		{
			break;
		}
	}
	
	return oArray;
}

function togglePriceFilterMode(nPriceFilterMode, fPrice)
{
	document.getElementById("pricefiltermode").value = nPriceFilterMode;
	document.getElementById("pricefilter").value = fPrice;
	document.getElementById("regionInfo").submit();
}

function toggleTableDisplay(sRowNum)
{
	sRowParent = "availRow" + sRowNum;
	sRow = "availRowDetail" + sRowNum;
	sRowId = "#" + sRow;
	
	sImage = "availRow" + sRowNum + "Arrow";
	
	if (document.getElementById(sRow).style.display != "none")
	{
		document.getElementById(sImage).src = "/images/arrow_right.gif";
		document.getElementById(sRow).style.display = "none";
	}
	else
	{
		document.getElementById(sImage).src = "/images/arrow_down.gif";
		document.getElementById(sRow).style.display = document.getElementById(sRowParent).style.display;
	}
}