/**
 * Bes - block excursion search
 */
var bes_ajax_resorts_for_country = curl + 'main/ajax/null/ajaxGetTeResortForCountries/';

var bes_ajax_countries_for_resort_type = curl + 'main/ajax/null/ajaxGetTeCountriesForResortType/';


function BesInitExcurFormSearch()
{
	BesInitCountriesMultiBlock('country_list_search', bes_ajax_resorts_for_country);
	
	BesInitResortTypeList('resort_type_search', bes_ajax_countries_for_resort_type);
	
	BesInitEventCheckTypesBlock('type_hotels_block_search', 'hc_all');
	
	BesInitEventCheckTypesBlock('type_transports_block_search', 'all');
	
	BesWorkScrollTopBlock('countries_scroll_top', 'country_list_search');
	BesWorkScrollTopBlock('resorts_scroll_top', 'resorts_list_search');
	BesInitCountriesScrollTop();
	BesInitResortsScrollTop();
	
	Calendar.setup(
	{
	
		inputField     :    "leave_date",
        ifFormat       :    "%Y-%m-%d",
        showsTime      :    false,
        button         :    "butt_leavedate",
        singleClick    :    true,
        step           :    1
	}
	);
	
	var e_resort_type_block = new Spry.Widget.ValidationSelect("e_resort_typeblock_search", {invalidValue:"default", validateOn:["change"]});
}
//*******************************Управление скролингом формы поиска******************************************************
function BesWorkScrollTopBlock(elm_hidden, block_id)
{
	var block = $(block_id);
	if ((null == block) || ('undefined' == typeof block))
		return;
	var elm_arr = $$('#' + block_id + ' input');
	var len = elm_arr.length;
	if (len > 0)
		for(var i = 0; i < len; i++)
			elm_arr[i].observe('click', function(){BesWorkScrollTop(elm_hidden, block_id)});
}

function  BesWorkScrollTop(elm_hidden, scroll_top_block)
{
	$(elm_hidden).value = $(scroll_top_block).scrollTop;
}

function BesInitResortsScrollTop()
{
	var elm = $('resorts_list_search');
	if ('undefined' == typeof elm)
		return;
	
	elm.scrollTop = resorts_scroll_top;
}

function BesInitCountriesScrollTop()
{
	var elm = $('country_list_search');
	if ('undefined' == typeof elm)
		return;
	
	elm.scrollTop = countries_scroll_top;
}
//**********************************************************

/**
 * ÐÐ½Ð¸ÑÐ¸Ð°Ð»Ð¸Ð·Ð°ÑÐ¸Ñ Ð±Ð»Ð¾ÐºÐ°Ðº ÑÐ¾ ÑÑÑÐ°Ð½Ð°Ð¼Ð¸
 */
function BesInitCountriesMultiBlock(elm_id, ajax_url)
{
	var ch_arr = $$('#' + elm_id + ' input');
	
	var ch_len = ch_arr.length;
	
	if (ch_len > 0)
		for(var i = 0; i < ch_len; i++)
			ch_arr[i].observe('click', function(){BesWorkWithCountriesMultiBlock(elm_id, ajax_url)});
}

function BesInitResortTypeList(elm_id, ajax_url)
{
	$(elm_id).observe('change', function(){BesWorkWithResortType(elm_id, ajax_url)});
}

function BesInitEventCheckTypesBlock(block_id, all_value)
{
	var checkbox_arr = $$('div#' + block_id +' input');
	if (checkbox_arr.length > 0)
		for (i = 0; i < checkbox_arr.length; i++)
			Event.observe(checkbox_arr[i], 'click', function(event) {BesSetStateCbHotelsType(event, block_id, all_value)});
}

function BesWorkWithCountriesMultiBlock(elm_id, ajax_url)
{
	var c_arr = BesGetCheckedElents(elm_id);
	
	var resort_type = $('resort_type_search').value;
	
	var res_arr = Array();
	
	res_arr = resort_type.split(':');
	
	if (res_arr.length <= 0)
		return;
	
	var c_len  = c_arr.length;
	if (c_len <= 0)
	{
		$('resorts_list_search').update('');
		
		BesHideResortsBlock('resorts_block_search');	
		return;
	}
	BesShowResortsBlock('resorts_block_search');
	
	var countries_str = '';
	
	for(var i = 0; i < c_len; i++)
	{
		if ('' !== countries_str)
			countries_str += ',' + c_arr[i].value;
		else
			countries_str = c_arr[i].value; 
	}
	
	new Ajax.Request(
			ajax_url,
			{
				method: 'post',
				parameters: '&countries='+countries_str + '&resort_type=' + res_arr[1] + '&resort_type_id=' + res_arr[0],
				onComplete: BesUpdateResortsBlock.bind(this),
				onFailure: BesReportError.bind(this)()
			}
		);
}

function BesWorkWithResortType(elm_id, ajax_url)
{
	var resort_type = $(elm_id).value;
	
	var res_arr = Array();
	
	res_arr = resort_type.split(':');
	
	if (res_arr.length <= 0)
		return;
		
	if ('default' == resort_type)
	{
		BesHideCountriesBlock('country_block_search');
		BesHideResortsBlock('resorts_block_search');
	}
		
	else if ('1' == res_arr[0])
		//BesGoToPage(res_arr[0]);
		new Ajax.Request(
				curl + 'ajaxsearchform/packet/',
				{
					method: 'post',
					parameters: '&resort_type=' + res_arr[1] + '&resort_type_id=' + res_arr[0],
					onComplete: BesUpdateSearchBlock.bind(this),
					onFailure: BesReportError.bind(this)()
				}
			);
		
	else	
		new Ajax.Request(
				ajax_url,
				{
					method: 'post',
					parameters: '&resort_type=' + res_arr[1] + '&global_type=' + res_arr[0] + '&type_content=checkbox',
					onComplete: BesUpdateCountriesBlock.bind(this),
					onFailure: BesReportError.bind(this)()
				}
			);
}

function BesUpdateCountriesBlock(response)
{
	var text = eval(response.responseText);
	
	if ('' != text)
	{
		BesHideResortsBlock('resorts_block_search');
		
		BesShowCountriesBlock('country_block_search');
						
		$('country_list_search').update(eval(response.responseText));
	
		BesInitCountriesMultiBlock('country_list_search', bes_ajax_resorts_for_country);
	}
}
function BesUpdateResortsBlock(response)
{
	$('resorts_list_search').update(eval(response.responseText));
}

function BesGetCheckedElents(block_id)
{
	var elm_arr = $$('#' + block_id + " input");
	
	var elm_len = elm_arr.length;
	
	var res = new Array();
	if (elm_len > 0)
		for(var i = 0; i < elm_len; i++)
			if(elm_arr[i].checked)
				res.push(elm_arr[i]);
	return res;
}

function BesUpdateSearchBlock(response)
{
	$('search_left_column').update(response.responseText);
	
	 initPacketTourFormSearch();
}

/**
 * Ð£ÑÑÐ°Ð½Ð¾Ð²ÐºÐ° ÑÐµÐºÐ±Ð¾ÐºÑÐ¾Ð²  Ð±Ð»Ð¾ÐºÐµ Ð²ÑÐ±Ð¾ÑÐ° ÑÐ¸Ð¿Ð° Ð¾ÑÐµÐ»ÐµÐ¹
 * - ÐµÑÐ»Ð¸ Ð²ÑÐ±ÑÐ°Ð½ ÑÐ± "ÐÑÐµ" Ð¾ÑÑÐ°Ð»ÑÐ½ÑÐ¼ ÑÐ± Ð°Ð²Ð¼Ð°ÑÐ¸ÑÐµÑÐºÐ¸ ÑÑÑÐ°Ð²Ð»Ð¸Ð²Ð°ÐµÑÑÑ ÑÐ¾ÑÑÐ¾ÑÐ½Ð¸Ðµ false
 * - ÐµÑÐ»Ð¸ Ð²ÑÐ±ÑÐ°Ð½ Ð´ÑÑÐ³Ð¾Ð¹ Ð»ÑÐ±Ð¾Ð¹ ÑÐ±, "ÐÑÐµ" ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑÑÑ Ð² false
 * 
 * @param object event Ð¾Ð±ÑÐµÐºÑ ÑÐ¾Ð±ÑÑÐ¸Ñ
 */
function BesSetStateCbHotelsType(event, block_id, all_value)
{
	var element = Event.element(event);
	
	var checkbox_arr = $$('div#' + block_id+ ' input');
	var len_arr = checkbox_arr.length;
	//ÐÑÐ»Ð¸ ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½ ÑÐµÐºÐ±Ð¾ÐºÑ "ÐÐ¡Ð" ÑÐ¾ Ð¾ÑÑÐ°Ð»ÑÐ½ÑÐµ Ð´Ð¾Ð¶Ð½Ñ ÑÐ±ÑÐ°ÑÑÐ²Ð°ÑÑÑÑ
	if (all_value == element.id)
	{
		element.checked = true;
		if (true == element.checked)
		{
			if (len_arr > 0)
				for (var i = 0; i < len_arr; i++)
				{	
					if (all_value != checkbox_arr[i].id)
						checkbox_arr[i].checked = false;
				}
		}
	}
	else
	{
		var state_check_box = false;
		
		if (len_arr > 0)
			for (var i = 0; i < len_arr; i++)
			{	
				if ((all_value != checkbox_arr[i].id) && (true === checkbox_arr[i].checked))
				{
					state_check_box = true;
					break;
				}
			}
		if (true === state_check_box)
			$(all_value).checked = false;
		else
			$(all_value).checked = true;
	}	
		
}

function BesReportError(response)
{
	;
}

function BesGoToPage(type_page)
{
	if (('2' == type_page) || ('child' == type_page))
		document.location.href = curl + 'tours/excursion/';
	else if ('1' == type_page)
		document.location.href = curl;
}



function BesShowResortsBlock(elm_id)
{
	deleteCssClass(elm_id, CSS_CLASS_HIDE_BlOCK);
	addCssClass(elm_id, CSS_CLASS_SHOW_BlOCK);
}

function BesHideResortsBlock(elm_id)
{
	deleteCssClass(elm_id, CSS_CLASS_SHOW_BlOCK);
	addCssClass(elm_id, CSS_CLASS_HIDE_BlOCK);
}

function BesShowCountriesBlock(elm_id)
{
	deleteCssClass(elm_id, CSS_CLASS_HIDE_BlOCK);
	addCssClass(elm_id, CSS_CLASS_SHOW_BlOCK);
}

function BesHideCountriesBlock(elm_id)
{
	deleteCssClass(elm_id, CSS_CLASS_SHOW_BlOCK);
	addCssClass(elm_id, CSS_CLASS_HIDE_BlOCK);
}