/*  Copyright BRONNI.RU , 2002-2007  |  www.bronni.ru
 * -----------------------------------------------------------
 *
 * События, возникающие на странице выбора параметров поиска
 *
 */

var selectedDepartureCityId = -1;
if (typeof(Default_DeparureCity)) {selectedDepartureCityId = Default_DeparureCity;}

var selectedCountryId = -1;
if (typeof(Default_Country)) {selectedCountryId = Default_Country;}

var selectedCityIds = [];
var selectedHotelIds = [];
var selectedStarIds = [];

function IsFilterContains(filter, value)
{
	if (filter.length == 0) {return true;}
	for (i=0; i<filter.length; i++){ if (filter[i] == value) {return true};}
	return false;
}

function RenderItemsComboBox(array, control, filter)
{
	if (array == null){return;}
	for (var i=0;i<array.length; i++)
	{
		if (filter && IsFilterContains(filter, array[i].id)){control.add(new ComboBoxItem(array[i].russianName, array[i].id));}		
	}
}

function RenderItemsListBox(array, control)
{
	if (array == null){return;}
	
	control.clearItems();
	for (var i=0;i<array.length; i++)
	{
		control.add(new ListBoxItem(array[i].russianName, array[i].id));		
	}
	control.dataBind();
}

function ClearList(control)
{
}

function LoadCities_callback()
{
	RenderItemsListBox(citiesDS, CitiesListBox);
	selectedCityIds = [];
	ClearHotels();
	RenderItemsListBox(hotelsDS, HotelsListBox);
}

function OnSelectCountry(value)
{
	CitiesListBox.setValues([], false);
	HotelsListBox.setValues([], false);

	selectedCountryId = value;
	selectedCityIds = [];
	selectedHotelIds = [];
	LoadCities(selectedCountryId, LoadCities_callback);
}

function LoadHotels_callback()
{
	RenderItemsListBox(hotelsDS, HotelsListBox);
	ClearRedundantHotels();
}

function OnSelectCity(selectedArray)
{
	selectedCityIds = selectedArray;
	LoadHotels(selectedCountryId, selectedCityIds, selectedStarIds, LoadHotels_callback);
}

function OnSelectStar(selectedArray)
{
	selectedStarIds = selectedArray;
	LoadHotels(selectedCountryId, selectedCityIds, selectedStarIds, LoadHotels_callback);
}


/* Вспомогательные методы */

// Проверяем, что каждому выбранному отелю соответствует отель в листе отелей.
function ClearRedundantHotels()
{
	// var selectedHotels = strToIntArray(HotelsListBox.valcon.value);
	var selectedHotels = HotelsListBox.selectedItems;
	var hotels = GetHotelList();
	var trustedIds = new Array();
	for(var i = 0; i < selectedHotels.length; i++)
	{
		if(Contains(hotels, selectedHotels[i]))
			trustedIds.push(selectedHotels[i]);
	}
	HotelsListBox.selectedItems = trustedIds;
	HotelsListBox.valcon.value = trustedIds.join(',');
}

// Возвращает список отелей для текущего города.
function GetHotelList()
{
	var hotels = new Array();
	var temp = HotelsListBox.options;
	for(var i = 0; i < HotelsListBox.options.length; i++)
	{
		hotels.push(HotelsListBox.options[i].value);
	}
	return hotels;
}