/* -----------------------------------------| Системные настройки |--------------------------------------*/
var sysSettings = {
	//Ключ для карт google (conference.su)
	gMapKey : 'AIzaSyCh5VV-7IGMf_3mmoEat4QmXjbL49l_8kA',
	//Ключ для карт yandex
	yMapKey :	'ANViZ04BAAAAWSjpXwIAk-x6UGgjVAFRPIQy1djdAs2N8ioAAAAAAAAAAACK8GVslfH62fwMuhJOsd-eTkPPsQ==',
	//Координаты офиса Мск
	mskOfficeCoords : {lat : 55.746711, lng : 37.630732},
	//Координаты офиса Спб
	spbOfficeCoords : {lat : 59.937769, lng : 30.320656}
};
 
 
/**
 * Псевдо-класс отвечающий за функционирование элементов интерфейса
 */
var Interface = function(){};
Interface.prototype = {
	/**
	 * Инициализация элементов интерфейса
	 */
	init : function()
	{
		//Hover для блоков
		if ($('.base-block').length)
		{
			$('.base-block').live('mouseover', function(){$(this).addClass('base-block-hover')});
			$('.base-block').live('mouseout', function(){$(this).removeClass('base-block-hover')});
		}
		//Эффекты для виждетов
		if ($('.widget').length)
		{
			//Свёртывание виджета
			$('.widget .wheader .collapse').live('click', function(){
				if ($(this).hasClass('toggle-opened'))
				{
					$(this).removeClass('toggle-opened');
					$(this).addClass('toggle-closed');
					$('.widget .wbody, .widget .wfooter').animate({height:'toggle'}, 300);
				}
				else
				{
					$(this).removeClass('toggle-closed');
					$(this).addClass('toggle-opened');
					$('.widget .wbody, .widget .wfooter').animate({height:'toggle'}, 300);
				}
			});
		}
	},
	/**
	 * Загрузка скриптов для google maps
	 */
	gmLoad : function(callback)
	{
		//Если скрипты уже не загружены, то загружаем
		if(!$('script[src*="maps.google.com"]').length)
		{
			var script = document.createElement('script');
			script.type = 'text/javascript';
			script.src = 'http://maps.google.com/maps/api/js?sensor=false&region=RU&key=' + sysSettings.gMapKey + '&language=' + sysLang;
			if (callback && callback != '')
			{
				script.src += '&callback=' + callback;
			}
			document.body.appendChild(script);
		}
	},
	/**
	 * Отображение всплавающего диалога с предупреждением 
	 */
	showPricePopup : function(container)
	{
		//Если была установлена кука, диалог отображать не нужно
		var popupClosed = $.cookie('popupClosed');
		if (popupClosed !== null || popupClosed == 1)
		{
			return true;
		}
		//Отображаем диалог
		$(container).dialog({
			width			:	400,
			height			:	'auto',
			position		:	['right', 'bottom'],
			resizable		:	false,
			draggable		:	false,
			modal			:	false,
			dialogClass		:	'popup-dialog',
			title			:	$(container).find('.popup-header'),
			buttons: {
				'btn1'	: function(){
					$(this).dialog('close');
					//Ставим куку, чтобы окно больше не появлялось (на 1 год)
					var curDate = new Date();
					var cookieDate = new Date();
					cookieDate.setTime(curDate.getTime() + (31536000 * 1000)); 
					$.cookie('popupClosed', 1, {expires: cookieDate, path: '/'});
				},
				'btn2'	: function(){
					$(this).dialog('close');
				}
			}
		});
		//Fix для кнопок диалога
		Funcs.uiDialogButtonsFix(container);
	},
	/**
	 * Контроль ввода только чисел в текстовое поле 
	 */
	digitsInputControl : function(elemets)
	{
		$(elemets).keypress(function(event){
			var key, keyChar;
			if (!event) var event = window.event;
			if (event.keyCode) key = event.keyCode;
			else if(event.which) key = event.which;
			if (key == null || key == 0 || key == 8 || key == 13 || key == 9 || key == 46 || key == 37 || key == 39 ) return true;
			keyChar = String.fromCharCode(key);
			if (!/\d/.test(keyChar)) return false;
		});
		$(elemets).change(function(){
			var curVal = $(this).val();
			var re = /^[\d]+$/;
			if (!re.test(curVal)) return $(this).val('');
		});
	},
	/**
	 * Контроль значений в числовом диапазоне (для 2 текстовых полей)
	 */
	numRangeControl : function(minElem, maxElem)
	{
		$(minElem).change(function(){
			var maxVal = parseInt($(maxElem).val());
			var minVal = parseInt($(minElem).val());
			if (minVal > maxVal)
			{
				$(minElem).val(maxVal);
			}
		});
		$(maxElem).change(function(){
			var maxVal = parseInt($(maxElem).val());
			var minVal = parseInt($(minElem).val());
			if (minVal > maxVal)
			{
				$(maxElem).val(minVal);
			}
		});
	},
	/**
	 * Русификация jquery ui date picker
	 */
	datepickerRus : function()
	{
		$.datepicker.regional['ru'] = {
				closeText: 'Закрыть',
				prevText: '&#x3c;Пред',
				nextText: 'След&#x3e;',
				currentText: 'Сегодня',
				monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь',
				'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
				monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн',
				'Июл','Авг','Сен','Окт','Ноя','Дек'],
				dayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'],
				dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'],
				dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],
				weekHeader: 'Не',
				dateFormat: 'dd.mm.yy',
				firstDay: 1,
				isRTL: false,
				showMonthAfterYear: false,
				yearSuffix: ''
		};
		$.datepicker.setDefaults($.datepicker.regional['ru']);
	},
	/**
	 * Инициализация кадендаря
	 */
	calendarInit : function (element, minYear, maxYear)
	{
		//Русификация jquery ui date picker
		if (sysLang == 'ru')
		{
			this.datepickerRus();
		}
		var curDate = new Date();
		var curYear = curDate.getFullYear();
		if (!minYear)
		{
			minYear = curYear-150;
		}
		if (!maxYear)
		{
			maxYear = curYear+150;
		}
		var datepicker = $(element).datepicker({
				showOn: 'button',
				buttonImage: '/img/calendar.gif',
				buttonImageOnly: true,
				buttonText: '',
				dateFormat: 'dd.mm.yy',
				changeMonth: true,
				changeYear: true,
				yearRange: minYear+':'+maxYear
		});
		//Вызов календаря при клике на полу input
		$(element).click(function(){
			$(this).datepicker('show');
		});
		return datepicker;
	},
	/**
	 * Отображение карт для страницы Контакты
	 */
	contactsMapsShow : function()
	{
		//Офис Мск
		var mskCoords = new google.maps.LatLng(sysSettings.mskOfficeCoords.lat, sysSettings.mskOfficeCoords.lng);
		var mskMapOptions = {
			zoom: 15,
			center: mskCoords,
			mapTypeId: google.maps.MapTypeId.ROADMAP
		}
		var mskMap = new google.maps.Map(document.getElementById('msk-office-map'), mskMapOptions);
		mskMap.setCenter(mskCoords);
		//Добавляем маркер
		var mskMarker = new google.maps.Marker({
			position: mskCoords,
			map : mskMap
		});
		//Офис Спб
		var spbCoords = new google.maps.LatLng(sysSettings.spbOfficeCoords.lat, sysSettings.spbOfficeCoords.lng);
		var spbMapOptions = {
			zoom: 15,
			center: spbCoords,
			mapTypeId: google.maps.MapTypeId.ROADMAP
		}
		var spbMap = new google.maps.Map(document.getElementById('spb-office-map'), spbMapOptions);
		spbMap.setCenter(spbCoords);
		//Добавляем маркер
		var spbMarker = new google.maps.Marker({
			position: spbCoords,
			map : spbMap
		});
	}
};

/**
 * Объект класса для работы с интерфейсом
 */
Interface = new Interface();

/**
 * Псевдо-класс, содержащий функции общего назначения
 */
var Funcs = function(){};
Funcs.prototype = {
	/**
	 * Проверка на IE6
	 */
	detectIe6 : function()
	{
		var browser = navigator.appName;
		if (browser == "Microsoft Internet Explorer")
		{
			var b_version = navigator.appVersion;
			var re = /\MSIE\s+(\d\.\d\b)/;
			var res = b_version.match(re);
			if (res[1] <= 6)
			{
				return true;
			}
		}
		return false;
	},
	/**
	 * Проверка на IE9
	 */
	detectIe9 : function()
	{
		var browser = navigator.appName;
		if (browser == "Microsoft Internet Explorer")
		{
			var b_version = navigator.appVersion;
			var re = /\Trident\/5\.0/;
			var res = re.test(b_version);
			if (res)
			{
				return true;
			}
		}
		return false;
	},
	/**
	 * Fix для перевода текста кнопок в диалогах. Применяется, так как не было найдено способа динамичесски установить текст для кнопки (jqueryui bug).
	 * При этом, текст для кнопок берётся из блока с классом ui-fix-buttons, который располагается внутри блока, для которого создаётся диалог. 
	 * По умолчанию текст для кнопок задаётся в виде "btn#N", где #N - порядковый номер кнопки
	 */
	uiDialogButtonsFix : function (dialogCont)
	{
		//Получаем тексты для кнопок и формируем из них массив
		var i=0;
		var buttons = {};
		$(dialogCont).find('.ui-fix-buttons span').each(function(){
			buttons[i] = $(this).text();
			i++;
		});
		var j=0;
		//Проходимся по кнопкам в диалоге и заменяем их текст
		$(dialogCont).next().find('button.ui-button span').each(function(){
			$(this).text(buttons[j]);
			j++;
		});	
	},
	/**
	 * Очистка полей формы
	 * @param string elem DOM-элемент - форма
	 */
	clearForm : function(elem)
	{
		$(elem).find('input[type!="radio"][type!="checkbox"]').each(function(){
			$(this).val('');
		});
		$(elem).find('select').each(function(){
			$(this).find('option').removeAttr('selected');
			$(this).find('option:first').attr('selected','selected');
		});
	}
}
Funcs = new Funcs();



/**
 * Псевдо-класс отвечающий за работу с площадками
 */
var Sites = function(siteId)
{
	if (siteId)
	{
		this.siteId = siteId;
	}
};
Sites.prototype = {
	/**
	 * Подготовка координат для google maps
	 */
	gmPrepareCoords : function()
	{
		var selfObj = this;
		var paramsCont = $('#map-params');
		//Получаем координаты из DOM
		var coordsStr = $(paramsCont).find('.coords').text();
		var coords;
		//Если для площадки нет координат
		if ($.trim(coordsStr) == '')
		{
			//Получаем адрес без индекса из DOM
			var reg = /\d{6}/
			var address = $(paramsCont).find('.site-address').text();
			address = address.replace(reg, '');
			//Получаем координаты на основе адреса с помощью geocoder
			geocoder = new google.maps.Geocoder();
			geocoder.geocode( {'address': address}, function(results, status)
			{
				//Если координаты успешно получены, инициализируем карту
				if (status == google.maps.GeocoderStatus.OK)
				{
					selfObj.gmInit(results[0].geometry.location.lat(), results[0].geometry.location.lng());
				}
			});
		}
		//Если координаты есть в DOM
		else
		{
			//Выделяем широту и долготу и координат, инициализируем карту
			var coordsParts = coordsStr.split(',');
			selfObj.gmInit(coordsParts[0], coordsParts[1]);
		}
	},
	/**
	 * Инициализация google maps
	 */
	gmInit : function (Ja, Ka)
	{
		var paramsCont = $('#map-params');
		//Инициализация карты с заданными параметрами
		var siteLatlng = new google.maps.LatLng(Ja, Ka);
		var myOptions = {
			zoom: 15,
			center: siteLatlng,
			mapTypeId: google.maps.MapTypeId.ROADMAP
		}
		var map = new google.maps.Map(document.getElementById('site-map'), myOptions);
		map.setCenter(siteLatlng);
		//Добавляем маркер с площадкой
		var contentString = $(paramsCont).find('.message').html();
		var infowindow = new google.maps.InfoWindow({
			content : contentString,
			maxWidth : 350
		});
		var marker = new google.maps.Marker({
			position: siteLatlng,
			map : map,
			title : $(paramsCont).find('.site-name').text()
		});
		google.maps.event.addListener(marker, 'click', function() {
		  infowindow.open(map, marker);
		});
	},
	/**
	 * Галерея фотографий номеров
	 */
	roomsGallery : function()
	{
		//Получаем данные по номерам из DOM
		var fancyParams = [];
		var i = 0;
		$('#site-photo .room-photo').each(function(){
			var curPhotoParams = {
				'href'	:	$(this).find('.photo-url').text(),
				'title'	:	$(this).find('.room-name').text()
			}
			fancyParams[i] = curPhotoParams;
			i++;
		});
		//Инициализируем галерею
		$.fancybox(fancyParams, {'type' : 'image', 'cyclic' : true});
	},
	/**
	 * Отображение фотографий залов
	 */
	hallsPhoto : function()
	{
		$('.site-halls .hall-photo-link').click(function(){
			//Получаем id зала, для которого была вызвана галерея
			var selectedHallRowId = $(this).parent().parent().attr('id');
			var selectedHallId = selectedHallRowId.replace('hall-', '');
			//Инициализация параметров
			var fancyParams = [];
			var fancyPos = 0;
			var i = 0;
			//Проходимся по строкам в таблице с залами
			$('#site-halls-table tbody tr').each(function(){
				//Информация по текущей строке
				var curHallRow = this;
				var curHallRowId = $(curHallRow).attr('id');
				var curHallId = curHallRowId.replace('hall-', '');
				/**
				 * Если id зала в текущей строке совпадает с id зала, для
				 * которого была вызвана галерея
				 */
				if (curHallId == selectedHallId)
				{
					fancyPos = i;
				}
				//Добавляем в массив настроек для fancybox url'ы фото и названия залов
				$(curHallRow).find('.photo-url').each(function(){
					var curPhotoParams = {
						'href'	:	$(this).text(),
						'title'	:	$(curHallRow).find('.hall-photo-link').text()
					}
					fancyParams[i] = curPhotoParams;
					i++;
				});
			});
			//Инициализация галлереи
			$.fancybox(fancyParams, {'type' : 'image', 'index' : fancyPos, 'cyclic' : true});
		});
	},
	/**
	 * Всплывающие подсказки
	 */
	tooltipsInit : function()
	{	
		//Комментарий к цене
		var hallTooltipConf = {
			bodyHandler: function() { 
				return $(this).parent().parent().find('.price-comment').text()
			}
		}
		$.extend(hallTooltipConf, main.config.tooltip);
		$('#site-page table .price-str').tooltip(hallTooltipConf);
		//Состав банкетов
		var mealTooltipConf = {
			bodyHandler: function() { 
				return $(this).parent().find('.meal-desc').text()
			}
		}
		$.extend(mealTooltipConf, main.config.tooltip);
		$('#site-meals-table .meal-name-text').tooltip(mealTooltipConf);
		//Бесплатное техническое оснащение
		var hallEqTooltipConf = {
			bodyHandler: function() { 
				return $(this).parent().find('.free-equipment').html()
			}
		}
		$.extend(hallEqTooltipConf, main.config.tooltip);
		$('#site-halls-table .free-equipment-link').tooltip(hallEqTooltipConf);
	},
	/**
	 * Форматирование ячеек в таблице с фиксированным центром
	 */
	fixedTableAdjust : function(container)
	{
		//Ширина фиксированных и скролящегося блоков
		var fixedColWidth = $(container).find('.fixed-col td:first').width() + 20;
		var fixedContentWidth = $(container).width() - fixedColWidth;
		$(container).find('.first-td div').width(fixedColWidth);
		$(container).find('.fixed-header').width(fixedContentWidth);
		//Добавляем зазор между фиксированным центром и его правым скроллбаром
		fixedContentWidth += 17;
		$(container).find('.scroll-content').width(fixedContentWidth);
		//Fix для случая, когда всего 2 рассадки и таблица в скролящемся блоке сужается
		if ($(container).find('.scroll-content tr:first .content-cell').length < 3)
		{
			var newWidth = $(container).find('.fixed-header table tr:eq(1) td:first').width();
			$(container).find('.scroll-content table tr').each(function(){
				$(this).find('td:gt(0)').width(newWidth);
			});
		}
		//Устанавливаем высоту фиксированной колонки и фиксированного блока относительно высоты окна
		var relHeight = $(window).height() - 300;
		$(container).find('.scroll-content').height(relHeight);
		$(container).find('.fixed-col').height(relHeight - 17);
		//Высота скролящегося блока относительно высоты контейнера
		heightDiff = 25;
		var fixedHeight = $(container).find('.fixed-col').height();
		var hallsTableHeight = $(container).find('.fixed-col table').height();
		//Если высота блока со скролящимся контентом больше высоты самого контента
		if ((fixedHeight - hallsTableHeight) > heightDiff)
		{
			//Меняем высоту блока с фиксированным столбцом
			var newFixedHeight =  hallsTableHeight + heightDiff;
			$(container).find('.fixed-col').css('height', newFixedHeight);
			//Для ie6 просто меняем высоту блока
			if (Funcs.detectIe6())
			{
				$(container).find('.scroll-content').css('height', newFixedHeight);
			}
			//Для нормальных браузеров применяем анимацию
			else
			{
				$(container).find('.scroll-content').animate(
					{height: newFixedHeight}, 500, function() {}
				);
			}
		}
	},
	/**
	 * Скроллинг в таблице с фиксированным центром
	 */
	tableFixedScroll : function(container)
	{
		$(container).find('.fixed-header').scrollLeft($(container).find('.scroll-content').scrollLeft());
		$(container).find('.fixed-col').scrollTop($(container).find('.scroll-content').scrollTop());
	}
}

/**
 * Псевдо-класс отвечающий за работу с залами
 */
var Halls = function(hallId)
{
	if (hallId)
	{
		this.hallId = hallId;
	}
};
Halls.prototype = {
	/**
	 * Загрузка станций метро для города
	 */
	loadCityStations : function()
	{
		var selfObj = this;
		//Максимальное кол-во станций для выбора
		var maxStations = 15;
		//Скрываем блок с выбором метро
		$('#halls-search-stations').hide();
		//Меняем класс у ссылки
		$('#halls-search-metro-block .toggle-category').removeClass('category-opened').addClass('category-closed');
		var cityId = $('#halls-city option:selected').val();
		//Загрузка станций
		var url = '/halls/city.stations/format/json/';
		if (sysLang != 'ru')
		{
			url = '/' + sysLang + url;
		}
		$.ajax({
			type: 'POST',
			url: url,
			data: 'city=' + cityId,
			success: function(result) 
			{
				//Если есть станции для города
				if (result.status == 1)
				{
					$('#halls-search-metro-block').show();
					$('#halls-search-stations').html(result.content);
					$('#max-stations-count').text(maxStations);
					//Инициализация механизма выбора станций
					selfObj.metroSelectInit();
				}
				//Если нет станций или возникла ошибка
				else
				{
					$('#halls-search-metro-block').hide();
				}
			}
		});
	},
	/**
	 * Загрузка списка площадок для города
	 */
	loadCitySites : function(cityId)
	{
		//Если площадка не выбрана
		if (cityId == 'any')
		{
			return false;
		}
		var url = '/halls/city.sites/format/json/';
		if (sysLang != 'ru')
		{
			url = '/' + sysLang + url;
		}
		$.ajax({
			type: 'POST',
			url: url,
			data: 'city=' + cityId,
			success: function(sites) 
			{
				//Добавляем станции в список
				var optionsCont = '<option value="' + $('#halls-site option:first').val() + '">' + $('#halls-site option:first').text() + '</option>';
				sitesCount = sites.length;
				for (i = 0; i < sitesCount; i++)
				{
					optionsCont += '<option value="' + sites[i].id + '">' + sites[i].title + '</option>';
				}
				$('#halls-site').html(optionsCont);
			}
		});
	},
	//Отображаем/скрываем блок с выбором загородных конф. залов в зависимости от выбранного города
	outOfTownBlockToggle : function(cityId)
	{
		var mskId = $('#halls-city-msk').val(); //Id города Москва
		var outOfTownBlock = $('#halls-outoftown-line');
		if (cityId == mskId)
		{
			$(outOfTownBlock).show();
			$(outOfTownBlock).find('#halls-outoftown').attr('checked', 'checked');
		}
		else
		{
			$(outOfTownBlock).hide();
			$(outOfTownBlock).find('#halls-outoftown').attr('checked', '');
		}
	},
	/**
	 * Инициализация механизма выбора станций метро
	 */
	metroSelectInit : function()
	{
		var selfObj = this;
		//Устанавливаем обработчик выбора станции в первом списке
		$('#metro-stations-select .source input:checkbox').die();
		$('#metro-stations-select .source input:checkbox').live('click', function(){
			var curItemId = $(this).attr('id').replace('station', '');
			var curItemName = $(this).parent().find('label').text();
			var selStationsCount = $('#metro-stations-select .selected .select-block-body .station').length;
			//Максимальное кол-во станций для выбора
			var maxStations = parseInt($('#max-stations-count').text());
			//Если идёт выбор станции - добавляем её во второй список
			if ($(this).attr('checked'))
			{
				//Ограничение на кол-во выбранных станций
				if (selStationsCount >= maxStations)
				{
					$('#metro-stations-select .source .max-text').addClass('error', 50, function() {
						setTimeout(function() {
							$('#metro-stations-select .source .max-text').removeClass('error', 50);
						}, 2500);
					});
					return false;
				}
				var selectedItemTpl = $('#metro-stations-select .selected .tmp-station').html().toString();
				selectedItemTpl = selectedItemTpl.replace(/#id/g, curItemId);
				selectedItemTpl = selectedItemTpl.replace('#name', curItemName);
				$('#metro-stations-select .selected .select-block-body').append(selectedItemTpl);
			}
			//Если идёт отмена выбора, удаляем станцию из второго списка
			else
			{
				$('#metro-stations-select .selected').find('#sel-station' + curItemId).parent().remove();
				$(this).attr('checked', '');
			}
			selfObj.metroSelectCount(); //Меняем кол-во выбранных станций
		});
		//Устанавливаем обработчик выбора станции во втором списке (выбранные станции)
		$('#metro-stations-select .selected input:checkbox').die();
		$('#metro-stations-select .selected input:checkbox').live('click', function(){
			var curItemId = $(this).attr('id').replace('sel-station', '');
			$(this).parent().remove();
			$('#metro-stations-select .source').find('#station' + curItemId).attr('checked', '');
			selfObj.metroSelectCount(); //Меняем кол-во выбранных станций
		});
		//Удаление выбранных станций
		$('#halls-search-stations .stations-delete').die();
		$('#halls-search-stations .stations-delete').live('click',function(){
			$('#metro-stations-select .selected .select-block-body .station').remove();
			$('#metro-stations-select .source input:checkbox').attr('checked', '');
			selfObj.metroSelectCount(); //Меняем кол-во выбранных станций
		});
	},
	/**
	 * Счётчик кол-ва выбранных станций метро
	 */
	metroSelectCount : function(count)
	{
		if (typeof count == 'undefined')
		{
			count = $('#metro-stations-select .selected .select-block-body .station').length;
		}
		$('#sel-stations-count').text(count);
	},
	/**
	 * Инициализация слайдера для выбора диапазоны стоимости залов
	 */
	priceSliderInit : function()
	{
		var priceSlider = $('#halls-price-slider .slider-content');
		var sliderRange = $('#slider-range');
		//Инициализация слайдера
		$(priceSlider).slider({
			range: true,
			min: 100,
			max: 1000000,
			values: [ $('#halls-default-min').val(), $('#halls-default-max').val() ],
			step: 100,
			//Смена значений выбранной стоимости
			slide: function( event, ui )
			{
				$(sliderRange).find('.min').val(ui.values[0]);
				$(sliderRange).find('.max').val(ui.values[1]);
			}
		});
		//Максимальная стоимость на шкале
		$('#halls-price-slider .min-text').text($(priceSlider).slider('option', 'min'));
		$('#halls-price-slider .max-text').text($(priceSlider).slider('option', 'max'));
		//Смена позици на слайдере при изменении значений в текстовых полях, контроль диапазона
		var minElem = $(sliderRange).find('.min');
		var maxElem = $(sliderRange).find('.max');
		$(minElem).change(function(){
			var minVal = parseInt($(this).val());
			var maxVal =parseInt( $(maxElem).val());
			if (minVal > maxVal)
			{
				minVal = maxVal;
				$(minElem).val(maxVal);
			}
			$(priceSlider).slider('values', 0, minVal);
		});
		$(maxElem).change(function(){
			var minVal = parseInt($(minElem).val());
			var maxVal = parseInt($(this).val());
			if (minVal > maxVal)
			{
				maxVal = minVal;
				$(maxElem).val(minVal);
			}
			//Контроль максимального значения слайдера
			var sliderMax = $(priceSlider).slider('option', 'max');
			if (maxVal > sliderMax)
			{
				maxVal = sliderMax;
			}
			$(priceSlider).slider('values', 1, maxVal);
		});
		//Контроль ввода для полей ввода стоимости
		Interface.digitsInputControl($(sliderRange).find('.min, .max'));
	},
	/**
	 * Отображение/скрытие блоков в фильтре
	 */
	filterOptionsToggleInit : function()
	{
		$('#halls-search-form .toggle-category').click(function()
		{
			if ($(this).hasClass('category-closed'))
			{
				$(this).removeClass('category-closed');
				$(this).addClass('category-opened');
				$(this).parent().next().show();
			}
			else
			{
				$(this).removeClass('category-opened');
				$(this).addClass('category-closed');
				$(this).parent().next().hide();
			}
			//Для блока с рассадками отображаем дополнительные действия
			if ($(this).parent().attr('id') == 'halls-search-sets-top')
			{
				if ($('#halls-search-sets-types').is(':visible'))
				{
					$('#halls-search-sets-top .actions').show();
				}
				else
				{
					$('#halls-search-sets-top .actions').hide();
				}
			}
		});
	},
	/**
	 * Инициализация механизма выбора типов рассадок 
	 */
	setsSelectInit : function()
	{
		var setTypesCont = $('#halls-search-sets-types');
		var setTypeTopCont = $('#halls-search-sets-top');
		//Если по какой-то причине checkbox отмечен, а класс не добавлен (загрузка страницы)
		$(setTypesCont).find('.set-type input:checked').each(function(){
			$(this).parent().parent().addClass('selected');
		})
		//Выбор рассадок
		$(setTypesCont).find('.set-type input:checkbox').change(function(){
			$(this).parent().parent().toggleClass('selected');
		});
		//Выбор всех
		$(setTypeTopCont).find('.select-all').click(function(){
			$(setTypesCont).find('.set-type input:checkbox').attr('checked', 'checked');
			$(setTypesCont).find('.set-type').addClass('selected');
		});
		//Сброс выбора
		$(setTypeTopCont).find('.reset').click(function(){
			$(setTypesCont).find('.set-type input:checkbox').attr('checked', '');
			$(setTypesCont).find('.set-type').removeClass('selected');
		});
	},
	/**
	 * Всплывающие подсказки
	 */
	searchTooltipsInit : function()
	{
		//Комментарий к цене
		var priceTooltipConf = {
			bodyHandler: function() { 
				return $(this).parent().parent().parent().find('.price-comment').text()
			}
		}
		$.extend(priceTooltipConf, main.config.tooltip);
		$('#halls-search-list .hall .tooltip-item').tooltip(priceTooltipConf);
	},
	/**
	 * Сброс параметров в форме подбора залов
	 */
	resetSearchForm : function()
	{
		//Город
		var mskCityId = $('#halls-city-msk').val();
		$('#halls-city option').removeAttr('selected');
		$('#halls-city option[value="' + mskCityId +'"]').attr('selected', 'selected');
		//Площадка
		$('#halls-site option:first').attr('selected', 'selected');
		//Станции метро
		this.loadCityStations();
		/**
		 * Устанавливаем кол-во выбранных станций раным 0, чтобы ранее выбранные станции не попали в запрос. Попасть в запрос
		 * они могут по той причне, что списки станций загружаются с помощью ajax
		 */
		this.metroSelectCount(0);
		//Загородные к.з.
		$('#halls-outoftown-line').show();
		$('#halls-outoftown').attr('checked', 'checked');
		//Вместимость, площадь
		$('#halls-seats option:first').attr('selected', 'selected');
		$('#halls-size option:first').attr('selected', 'selected');
		//Типы рассадок
		$('#halls-search-sets-top .toggle-category').removeClass('category-opened').addClass('category-closed');
		$('#halls-search-sets-types').hide();
		$('#halls-search-sets-top .actions').hide();
		$('#halls-search-sets-types .set-type input:checkbox').attr('checked', '');
		$('#halls-search-sets-types .set-type').removeClass('selected');
		//Стоимость
		var defMinPrice = $('#halls-default-min').val();
		var defMaxPrice = $('#halls-default-max').val();
		$('#minPrice').val(defMinPrice);
		$('#maxPrice').val(defMaxPrice);
		$('#halls-price-slider .slider-content').slider('values', 0, defMinPrice);
		$('#halls-price-slider .slider-content').slider('values', 1, defMaxPrice);
	},
	/**
	 * Полбор залов по параметрам
	 */
	searchHalls : function(page, scroll)
	{
		var selfObj = this;
		//Если не указан номер страницы, получаем вномер выделенной страницы
		if (!page || page == 0)
		{
			page = parseInt($('#halls-search-top-panel .pages .active').text());
		}
		//Параметр, отвечающий за необходимость прокрутки
		if (typeof scroll == 'undefined')
		{
			scroll = 1;
		}
		//Формируем запрос на поиск залов
		var request = this.prepareSearchRequest(page);
		/**
		 * Определяем, какой прелоадер показывать в зависимости от того, на какой панели
		 * было выбрано действие (страницы/смена кол-ва страниц/сортировка)
		 */
		var loaderElem ;
		if ($(window).scrollTop() > 1300)
		{
			loaderElem = $('#halls-search-bottom-loader');
		}
		else
		{
			loaderElem = $('#halls-search-top-loader');
		}
		//Отправляем запрос на сервер
		$.ajax({
			type: 'POST',
			url: '/halls/search/format/json/',
			dataType: 'json',
			data: request,
			beforeSend: function(){
				$(loaderElem).show();
			},
			success: function(result) 
			{
				//Отображаем полученнный контент
				if (typeof result.content != 'undefined')
				{
					$('#halls-search-body').html(result.content);
				}
				//Инициализируем высплывающие подсказки
				selfObj.searchTooltipsInit();
				//Если нужен скроллинг
				if (scroll == 1)
				{
					$.scrollTo(
						'#halls-search-list',
						{duration : 400, offset: {top: -200, left: 0}}
					);
				}
				//Fixpng для ie6
				if (Funcs.detectIe6())
				{
					$('#halls-search-list img').ifixpng();
				}
			},
			complete: function(){
				$(loaderElem).hide();
			}
		});
		
	},
	/**
	 * Подготовка запроса на поиск залов
	 */
	prepareSearchRequest : function(page)
	{
		//Формируем условие для поиска
		var searchWhere = {};
		//Площадка
		var selSite = $('#halls-site option:selected').val();
		if (selSite != 'any')
		{
			searchWhere['site'] = selSite;
		}
		//Станции метро
		searchWhere['metro'] = [];
		var selStationsCount = parseInt($('#sel-stations-count').text());
		if (selStationsCount > 0)
		{
			var i = 0;
			$('#halls-search-stations .selected .select-block-body input:checked').each(function(){
				searchWhere['metro'][i] = $(this).val();
				i++;
			});
		}
		//Загородные конф. залы
		if ($('#halls-outoftown').attr('checked'))
		{
			searchWhere['outoftown'] = 1;
		}
		else
		{
			searchWhere['outoftown'] = 0;
		}
		//Вместимость
		searchWhere['seats'] = $('#halls-seats option:selected').val();
		//Вместимость
		searchWhere['size'] = $('#halls-size option:selected').val();
		//Типы рассадок
		searchWhere['sets'] = [];
		i = 0;
		$('#halls-search-sets-types input:checked').each(function(){
			searchWhere['sets'][i] = $(this).val();
			i++;
		});
		//Кол-во номеров в конференц-отеле
		searchWhere['roomsCount'] = $('#halls-hotel-rooms-count').val();
		//Количество часов аренды
		searchWhere['rentHours'] = $('#halls-hotel-rent-hours').val();
		//Стоимость
		searchWhere['min'] = $('#minPrice').val();
		searchWhere['max'] = $('#maxPrice').val();
		//Группировка
		var groupBySiteControll = $('.group-by-site input[name="group-by-site"]');
		var groupBySite = 1;
		//Если существует элемент, ответственный за группировку
		if ($(groupBySiteControll).length)
		{
			groupBySite = parseInt($('.group-by-site input[name="group-by-site"]').val());
		}
		//Получаем данные по типу сортировки
		var sortParams = {};
		var curItemId = '';
		var itemsPerPage;
		var searchPanelCont = $('#halls-search-top-panel');
		//Если существует панель с контроллами
		if ($(searchPanelCont).length)
		{
			//Получаем данные по типу сортировки
			if ($(searchPanelCont).find('.sort .desc').length)
			{
				curItemId = $(searchPanelCont).find('.sort .desc input:hidden').val();
				sortParams['sortType'] = 'DESC';
			}
			else if ($(searchPanelCont).find('.sort .asc').length)
			{
				curItemId = $(searchPanelCont).find('.sort .asc input:hidden').val();
				sortParams['sortType'] = 'ASC';
			}
			sortParams['sortBy'] = curItemId.replace('sort-by-', '');
			//Элементов на странице
			itemsPerPage = $(searchPanelCont).find('select[name="hallsPerPage"] option:selected').val();
		}
		//Параметры по умолчанию (если нет панели с контроллами)
		else
		{
			sortParams['sortBy'] = 'price';
			sortParams['sortType'] = 'ASC';
			itemsPerPage = 40;
		}
		//Формируем объект запроса
		var request = {
			'request' : {
				'page'			:	page,
				'where'			:	searchWhere,
				'itemsPerPage'	:	itemsPerPage,
				'cityId'		:	$('#halls-city option:selected').val(),
				'sortBy'		:	sortParams['sortBy'],
				'sortType'		:	sortParams['sortType'],
				'groupBySite'	:	groupBySite
			}
		};
		return request;
	},
	/**
	 * Назначение событий для элементов при поиске залов
	 */
	searchInitEvents : function()
	{
		var selfObj = this;
		//Смена режима сортировки
		$('.sort .sort-by').live('click', function(){
			//Определяем, какой класс нужно добавить элементу, который определяет тип сортировки
			var newClass = '';
			if ($(this).hasClass('asc'))
			{
				newClass = 'desc';
			}
			else
			{
				newClass = 'asc';
			}
			//Удаляем все классы с элементов, которые определяют тип сортировки
			$('.sort .sort-by').removeClass('asc');
			$('.sort .sort-by').removeClass('desc');
			//Добавляем класс, определяющий тип сортировки нужному элементу
			if ($(this).hasClass('by-size'))
			{
				$('.sort .by-size').addClass(newClass);
			}
			else if ($(this).hasClass('by-site'))
			{
				$('.sort .by-site').addClass(newClass);
			}
			else
			{
				$('.sort .by-price').addClass(newClass);
			}
			//Запускаем поиск залов
			selfObj.searchHalls(1);
		});
		//Смена количества элементов на странице
		$('.per-page select').live('change', function(){
			var curValue = $(this).find('option:selected').val();
			$('.per-page select option[value="' + curValue + '"]').attr('selected', 'selected');
			selfObj.searchHalls(1);
		});
		//Включение/отключение группировки по площадке
		$('.group-by-site .group-by').live('click', function(){
			var groupBySite = 1;
			if ($(this).hasClass('turn-on'))
			{
				groupBySite = 1;
			}
			else if ($(this).hasClass('turn-off'))
			{
				groupBySite = 0;
			}
			$('.group-by-site input[name="group-by-site"]').val(groupBySite);
			selfObj.searchHalls(1);
		});
		//Запуск поиска по залам
		$('#halls-filter-apply').click(function(){
			selfObj.searchHalls(1);
		});
		//Сброс параметров подбора
		$('#halls-filter-reset').click(function(){
			selfObj.resetSearchForm();
			//Поиск залов
			selfObj.searchHalls(1, 0);
			//Скроллинг к шапке формы
			$.scrollTo(
				'#halls-search-form',
				{duration : 400, offset: {top: -200, left: 0}}
			);
		});
		//Назначение событий для элементов, связанных с заказом залов
		selfObj.initOrderEvents();
	},
	/**
	 * Назначение событий для элементов, связанных с заказом залов
	 */
	initOrderEvents : function()
	{
		var selfObj = this;
		//Добавление зала к заказу / удаление из заказа по нажатию на checkbox
		$('#halls-search-list .order-link input[name="order"]').live('change', function(){
			var order;
			var parentCont = $(this).parent();
			//Изменяем интерфейс
			if ($(this).attr('checked'))
			{
				//Контроль за максимальным кол-вом выбранных для заказа залов
				var curOrdersCount = $('#halls-search-list .hall input[name="order"]:checked').length;
				if (!selfObj.controlHallOrdersCount(curOrdersCount))
				{
					$(this).removeAttr('checked');
					return false;
				}
				order = 1;
				$(parentCont).find('.order-add').hide();
				$(parentCont).find('.order-go').show();
			}
			else
			{
				order = 0;
				$(parentCont).find('.order-go').hide();
				$(parentCont).find('.order-add').show();
			}
			//Отправляем запрос
			var orderRequest = {
				'order'		:	order,
				'hall'		:	$(this).val()
			};
			selfObj.hallOrder(orderRequest);
		});
		//Добавление зала к заказу по нажатию соответствующей ссылки
		$('#halls-search-list .order-add').live('click', function(event){
			//Контроль за максимальным кол-вом выбранных для заказа залов
			var curOrdersCount = $('#halls-search-list .hall input[name="order"]:checked').length + 1;
			if (!selfObj.controlHallOrdersCount(curOrdersCount))
			{
				return false;
			}
			var parentCont = $(this).parent();
			var orderChElem = $(parentCont).find('input[name="order"]');
			//Изменяем интерфейс
			$(this).hide();
			$(parentCont).find('.order-go').show();
			$(orderChElem).attr('checked', 'checked');
			//Формируем запрос
			var orderRequest = {
				'order'		:	1,
				'hall'		:	$(orderChElem).val()
			};
			//Отправляем запрос
			selfObj.hallOrder(orderRequest);
		});
		//Отображение списка заказов
		$('#halls-search-list .order-go').live('click', function(event){
			event.preventDefault();
			selfObj.showHallOrders();
		});		
	},
	/**
	 * Контроль за максимальным кол-вом выбранных для заказа залов
	 */
	controlHallOrdersCount : function(curOrdersCount)
	{
		var maxHallOrders = 70;
		if (curOrdersCount > maxHallOrders)
		{
			alert(messages['halls']['search']['maxHallOrders']);
			return false;
		}
		return true;
	},
	/**
	 * Заказ зала
	 */
	hallOrder : function(orderRequest, callback)
	{
		//Добавляем в заказ время
		var rentCalcHoursElem = $('#hall-' + orderRequest['hall'] + ' .rent-calc-hours');
		if ($(rentCalcHoursElem).length)
		{
			orderRequest['hours'] = parseInt($(rentCalcHoursElem).text());
		}
		else
		{
			orderRequest['hours'] = parseInt($('#halls-hotel-rent-hours').val());
		}
		var request = {};
		request['request'] = orderRequest;
		//Отправляем запрос на сервер
		$.ajax({
			type: 'GET',
			url: '/halls/order/',
			dataType: 'json',
			data: request,
			success: function(result) 
			{
				//Ошибка при обработке запроса
				if (result.status == 0)
				{
					alert(messages['halls']['search']['maxHallOrders']);
				}
				//result.status == 2 В сессии находится id удалённой заявки
				//result.status == 3 Истекло время жизни сессии или была добавлена новая заявка
				if (result.status == 2 || result.status == 3)
				{
					//Отменяем выбор всех залов, кроме текущего
					var hallsContainers = $('#halls-search-list div.hall[id!="hall-' + orderRequest['hall'] + '"]');
					$(hallsContainers).find('.order-go:visible').hide();
					$(hallsContainers).find('.order-add:hidden').show();
					$(hallsContainers).find('input[name="order"]:checked').removeAttr('checked');
					//Выводим сообщение
					if (result.status == 2)
					{
						alert(result.messages[0]);
					}
				}
			}
		});
	},
	/**
	 * Отображение списка заказов на залы
	 */
	showHallOrders : function()
	{
		var container = $('#halls-orders-dialog');
		var dialogHeight = $(window).height() / 2;
		if (dialogHeight < 500)
		{
			dialogHeight = 500;
		}
		//Отображаем диалог
		$(container).dialog({
			width			:	500,
			height			:	600,
			position		:	['center', 'center'],
			resizable		:	false,
			draggable		:	false,
			modal			:	true,
			dialogClass		:	'modal-dialog',
			title			:	$(container).find('.dialog-header').text(),
			buttons:
			{
				'btn1'	: function(){
					$('#ordered-halls').html('');
					$(this).dialog('close');
				},
				'btn2'	: function(){
					var ordersCount = $(container).find('.ordered-hall').length;
					if (ordersCount > 0)
					{
						location.href = $(container).find('.order-link').attr('href');
					}
				}
			},
			//Ie scrollbar fix for modal ui dialog
			open: function(event, ui)
			{
				if ($.browser.msie)
				{
					$('body').css('overflow','hidden');
					$('.ui-widget-overlay').css('width','100%');
				}
			},
			close: function(event, ui)
			{
				if ($.browser.msie)
				{
					$('body').css('overflow','auto');
				}
			}
		});

		//Fix для кнопок диалога
		Funcs.uiDialogButtonsFix(container);
		//Подгружаем в диалог список заказов по залам
		this.loadHallOrders();
	},
	/**
	 * Загрузка данных по заказам на залы
	 */
	loadHallOrders : function()
	{
		var selfObj = this;
		var loader = $('#halls-orders-dialog-loader');
		//Отправляем запрос на сервер
		$.ajax({
			type: 'POST',
			url: '/halls/orders/format/html/',
			beforeSend: function(){
				$(loader).show();
			},
			success: function(result) 
			{
				//Добавляем полученный контент в DOM
				$('#ordered-halls').html(result);
				//Назначаем события для элементов в списке заказов на залы 
				selfObj.initOrdersFormEvents();
				if (Funcs.detectIe6())
				{
					$('#ordered-halls img').ifixpng();
				}
			},
			complete: function(){
				$(loader).hide();
			}
		});
	},
	/**
	 * Назначение событий для элементов в списке заказов на залы
	 */
	initOrdersFormEvents : function()
	{
		var selfObj = this;
		var container = $('#halls-orders-dialog');
		//Контроль за количеством заказанных залов
		this.hallOrdersCountCotrol(container);
		//Удаление заказа на зал
		$(container).find('.order-delete').live('click', function(){
			var hallId = $(this).parent().attr('id').replace('ordered-hall-', '');
			//Удаляем заказа из списка заказов
			$(container).find('#ordered-hall-' + hallId).remove();
			//Если для данной площадки больше нет залов, удаляем блок с заголовком
			var siteId = $(this).parent().find('.hall-site').text();
			var siteCont = $(container).find('#ordered-hall-site-' + siteId);
			if ($(siteCont).find('.ordered-hall').length == 0)
			{
				$(siteCont).remove();
			}
			//Контроль за количеством заказанных залов
			selfObj.hallOrdersCountCotrol(container);
			//Отменяем выбор зала в подборе
			var hallCont = $('#hall-' + hallId);
			$(hallCont).find('.order-go').hide();
			$(hallCont).find('.order-add').show();
			$(hallCont).find('input[name="order"]').removeAttr('checked');
			//Отправляем запрос на удаление заказа на зал
			var orderRequest = {
				'order'		:	0,
				'hall'		:	hallId
			};
			selfObj.hallOrder(orderRequest);
		});
	},
	/**
	 * Контроль за количеством заказанных залов, при отсутствии заказаов -
	 * выполняем необходимые действия
	 */
	hallOrdersCountCotrol : function(container)
	{
		//Если нет заказанных залов
		if ($(container).find('.ordered-hall').length == 0)
		{
			//Показываем продупреждение, если необходимо
			var noOrdersBlock = $(container).find('.no-orders');
			if ($(noOrdersBlock).is(':hidden'))
			{
				$(noOrdersBlock).show();
			}
			//Отменяем выбор залов
			var hallsList = $('#halls-search-list');
			$(hallsList).find('.order-go:visible').hide();
			$(hallsList).find('.order-add:hidden').show();
			$(hallsList).find('input[name="order"]:checked').removeAttr('checked');
		}
	}
};


/* --------------------| Функциии, вызывающиеся в момент $(document).ready для разделов |----------------*/
/**
 * Функции инициализации для разделов
 */
var main = {
	/**
	 * Настройки
	 */
	config : 
	{
		/**
		 * Всплывающие подсказки
		 */
		tooltip : 
		{
			track: true, 
			delay: 0, 
			showURL: false, 
			extraClass: 'tooltip'
		}
	},
	/**
	 * Конференц-площадки
	 */
	sites : 
	{
		/**
		 * Список площадок для города/всей России
		 */
		list :
		{
			init : function()
			{
				var duration = 600; //Скорость прокрутки
				//События для реализаци прокрутки
				$('.top-link').click(function(event){
					event.preventDefault();
					$.scrollTo('div.indent',{duration : duration});
				});
				if ($('#site-city').length)
				{
					$('#site-city').change(function(){
						var curCityBlockId = '#section-header-' + $(this).find('option:selected').val();
						$.scrollTo($(curCityBlockId),{
							duration : duration,
							offset: {top: -80, left: 0}
						});
					});
				}
				/*
				 * Было решено убрать переход к конкретной гостинице/конференц-центру
				if ($('#capital-sites-cur-site').length)
				{
					$('#capital-sites-cur-site').change(function(){
						var curSiteBlockId = '#site-' + $(this).find('option:selected').val();
						$.scrollTo($(curSiteBlockId),{
							duration : duration,
							offset: {top: -200, left: 0}
						});
						$(curSiteBlockId).addClass('site-item-hover');
						setTimeout(function() {	
							$(curSiteBlockId).removeClass('site-item-hover');
						}, 5000);
						return false;
					});
				}	
				*/
			}
		},
		/**
		 * Страница площадки
		 */
		site :
		{
			init : function()
			{
				//Псевдо-класс для работы с площадками
				var siteId = $('#site-id').text();
				Sites = new Sites(siteId);
				//Карта google
				$('#site-map-link').fancybox({});
				$('#site-map-link').click(function(e){
					e.preventDefault();
					Interface.gmLoad('Sites.gmPrepareCoords');
				});
				//Галерея фотографий номеров	
				$('#site-photo-link').click(function(e){
					e.preventDefault();
					Sites.roomsGallery();
				});
				//Модальное окно с типами рассадок
				$('#halls-sets-link').fancybox({
					ajax : {
						type	: 'POST'
					},
					onComplete : function()
					{
						$.fancybox.resize();
						//Выравнивание ширины таблицы с рассадками
						Sites.fixedTableAdjust($('#halls-sets-inner'));
						//Правильный скроллинг для таблицы с фиксированным центром
						$('#halls-sets-inner .scroll-content').scroll(function(){
							Sites.tableFixedScroll($('#halls-sets-inner'));
						});
					}
				});
				//Назначаем события для отображения фотографий залов
				Sites.hallsPhoto();
				//Всплывающие подсказки
				Sites.tooltipsInit();
				//Отображение всплывающего диалога с предупреждением по ценам
				Interface.showPricePopup($('.popup'));
			}
		},
		/**
		 * Список рекомендованных площадок
		 */
		recom : 
		{
			init : function()
			{
				//Конфигурация слайдера
				$('.slider .prev, .slider .next').css('display', 'block');
				var sliderCont = $('#recom-sites-banner');
				var playInterval = 6000;
				$(sliderCont).slides({
					playInterval: playInterval,
					pauseInterval: 6000,
					navigation: false, 
					pagination: false,
					fade: {
						interval: 1000,
						crossfade: false,
						easing: ''
					}
				});
				setTimeout(function() {
					$(sliderCont).slides('play');
				}, playInterval);
				//Контролы для слайдера
				$('.slider .next').click(function(){
					$(sliderCont).slides('next');
				});
				$('.slider .prev').click(function(){
					$(sliderCont).slides('previous');
				});
				$('.mainContent .slider').bind('mouseover',function(){
					$(sliderCont).slides('stop');
				});
				$('.mainContent .slider').bind('mouseleave',function(){
					setTimeout(function() {
						$(sliderCont).slides('play');
					}, 500);	
				});
			}
		}
	},
	/**
	 * Конференц-залы
	 */
	halls :
	{
		/**
		 * Подбор залов
		 */
		search : 
		{
			init : function()
			{
				//Создаём бъект псевдо-класса для работы с залами
				Halls = new Halls();
				//Сброс параметров формы подбора залов, если не был передан id конкретной площадки
				var curUrl = location.href;
				if (curUrl.indexOf('/site/') == -1)
				{
					Halls.resetSearchForm();
				}
				//Если передан id конкретной площадки, то делаем скроллинг к списку залов
				else
				{
					$.scrollTo(
						'#halls-search-body',
						{duration : 400, offset: {top: -10, left: 0}}
					);
				}
				//Отображаем/скрываем блок с выбором загородных конф. залов
				Halls.outOfTownBlockToggle($('#halls-city option:selected').val());
				//Действия при смене города
				$('#halls-city').change(function(){
					//Загружаем станции метро
					Halls.loadCityStations();
					//Загружаем список площадок			
					Halls.loadCitySites($(this).find('option:selected').val());
					//Отображаем/скрываем блок с выбором загородных конф. залов
					Halls.outOfTownBlockToggle($(this).find('option:selected').val());				
				});
				//Инициализируем слайдер для выбора диапазона стоимости
				Halls.priceSliderInit();
				//Инициализация отображения/скрытие блоков в фильтре
				Halls.filterOptionsToggleInit();
				//Инициализация механизма выбора типов рассадок 
				Halls.setsSelectInit();
				//Назначаем события для элементов
				Halls.searchInitEvents();
				//Устанавливаем кол-во страниц по умолчанию при перезагрузке страницы (firefox fix)
				$('.per-page select option').removeAttr('selected');
				$('.per-page select option:first').attr('selected', 'selected');
				//Отправка формы по нажатию enter
				$('#halls-search-form').bind($.browser.opera ? 'keypress' : 'keyup', function (event) {
					//Если нажата клавиша "Enter"
					if (event.keyCode == 13)
					{
						Halls.searchHalls(1);
					}
				});
				//Контроль ввода для полей ввода стоимости
				Interface.digitsInputControl($('#halls-hotel-rooms-count, #halls-hotel-rent-hours'));
				//Всплывающие подсказки
				Halls.searchTooltipsInit();
				//Отображение всплывающего диалога с предупреждением по ценам
				Interface.showPricePopup($('.popup'));
			}
		}
	},
	/**
	 * Оформление заказа
	 */
	order :
	{
		/**
		 * Форма заказа
		 */
		form :
		{
			init : function()
			{
				var orderForm = $('#order-form');
				Interface.calendarInit($(orderForm).find('.datepicker'));
				//Если форма была отправлена, скролл к форме
				if ($('#order-container .form-errors-msg').length)
				{
					$.scrollTo($('#order-container'),{
					   duration : 500,
					   offset: {top: -20, left: -100}
					});
				}
				//Отображение/скрытие деталей по услуге
				$(orderForm).find('.need-service-line input:radio').change(function(){
					if($(this).val() == 1)
					{
						$(this).parents('div.need-service-line').next().show();
					}
					else
					{
						$(this).parents('div.need-service-line').next().hide();
					}
				});
				//Отправка формы
				$('#order-process-action').click(function(){
					$(orderForm).submit();
				});
			}
		}
	},
	/**
	 * Новости
	 */
	news :
	{
		init : function()
		{
			//Переход на архив новостей за выбранный год
			if ($('#news-archive-link').length)
			{
				$('#news-archive-link').click(function(e){
					e.preventDefault();
					var urlHref = $('#news-archive-link').next().text();	
					urlHref = urlHref.replace('#year', $('#news-archive-year option:selected').val());
					location.href = urlHref;
				})
			}
		}
	},
	/**
	 * Статические страницы + ряд динамических
	 */
	index :
	{
		/**
		 * Страница "Автоматизация мероприятия""
		 */
		eventAuto :
		{
			/**
			 * Отправка запроса на тестирование демо-версии
			 */
			sendRequest : function()
			{
				var loader = $('#demo-request-loader');
				var demoRequestForm = $('#demo-request-form');
				$.ajax({
					type: 'POST',
					url: '/index/event.auto/format/json/',
					data: $(demoRequestForm).serialize(),
					beforeSend : function()
					{
						$(loader).show();
					},
					success: function(result)
					{
						//Если были ошибки
						if (result.status == 0)
						{
							var msgsCount = result.messages.length;
							var errorsCont = $('#demo-request-content .form-errors ul');
							//Проходимся по полученных ошибкам и отображаем их
							for (i=0; i < msgsCount; i ++)
							{
								var erorsContent = '';
								for (i=0; i < msgsCount; i ++)
								{
									erorsContent += '<li>' + result.messages[i] + '</li>';
								}
								$(errorsCont).html(erorsContent);
							}
							$(errorsCont).parent().show();
							$.scrollTo($(errorsCont),{
							   duration : 500,
							   offset: {top: 50, left: -100}
							});
						}
						//Если ошибок не было
						else
						{
							$('#demo-request-content .form-errors').hide();
							//Отображаем/скрываем элементы
							$('#demo-request-send').addClass('hidden');
							$('#demo-request-content .request-form').hide();
							$('#demo-request-content .note').hide();
							$('#demo-request-more').removeClass('hidden');
							$('#demo-request-content .request-result').show();
						}
					},
					complete : function()
					{
						$(loader).hide();
					}
				});
			},
			/**
			 * Галерея скриншотов демо-версии
			 */
			showScreens : function()
			{
				//Путь к скринам
				var curLang = $('#demo-lang option:selected').val();
				var screensPath = '/img/demo_screens/' + curLang + '/';
				//Массив из имён файлов скринов
				var screensImgs = [
					'login.png', 'step1.png', 'step2.png', 'step3_1.png', 'step3_2.png', 'step3_3.png', 'step4.png', 'step5.png', 'letter.png',
					'lk_services.png', 'lk_persons.png', 'lk_payment.png', 'lk_profile.png', 'lk_contacts.png'
				];
				//Формируем объект с параметрами для инициализации галереи
				var screens = [];
				var screensImgsCount = screensImgs.length;
				for (i = 0; i < screensImgsCount; i++)
				{
					screens[i] = {
						'href'		:	screensPath + screensImgs[i],
						'title'		:	demoScreensTitles[i]
					}
				}
				//Инициализация галереи
				$.fancybox(screens, {'type' : 'image', 'cyclic' : true, 'titlePosition' : 'over', 'margin' : 15});
			},
			init : function()
			{
				//Скроллинг к началу контента
				$.scrollTo($('.submenu'),{
				   duration : 500,
				   offset: {top: 180, left: -100}
				});
				//Назначаем события
				var selfObj = this;
				$('#demo-request-send').click(function(){
					selfObj.sendRequest();
				});
				$('#demo-request-more').click(function(){
					//Очищаем форму
					Funcs.clearForm($('#demo-request-form'));
					//Refresh каптчи
					$('#kcaptcha').attr('src','/kcaptcha/captcha/rand/'+Math.random()+'/');
					//Отображаем/скрываем элементы
					$('#demo-request-more').addClass('hidden');
					$('#demo-request-content .request-result').hide();
					$('#demo-request-send').removeClass('hidden');
					$('#demo-request-content .request-form').show();
					$('#demo-request-content .note').show();
				});
				$('#demo-show-btn').click(function(){
					selfObj.showScreens();
				});
			}
		}
	}
}

/* --------------------|  Автозагрузка функций общих для всех разделов |----------------*/
$(document).ready(function(){
	Interface.init();
	//Ie select fix
	if ($.browser.msie && !Funcs.detectIe9()) 
	{
		$('select.ie-width-fix').fixSelect();
	}
});
