var courtVKS = {
	
	DOM: {},
	
	
	/**
	 * Объявляем внутренние переменные и обработчики сообытий
	 */
	init: function() {
		//Запоминаем часто используемые DOM-элементы
		this.setDOM();
		//Объявляем обработчики сообытий
		this.bind();
		//Инициализируем методы и переменные объекта сервиса
		courtVKSPopup.init();
	},
	
	
	/**
	 * Запоминаем часто используемые DOM-элементы
	 */
	setDOM: function() {
		this.DOM.$document = $(document);
		//Страница сервиса
		this.DOM.$service = $('.js-vks');
		//Элементы календаря
		this._setDOMCalendar();
	},
	
	
	/**
	 * Запоминаем часто используемые DOM-элементы календаря
	 */
	_setDOMCalendar: function() {
		//Панель управления над календарем
		this.DOM.$panel = this.DOM.$service.find('.js-court_calendar-control_panel');
		//Контейнер, в котором располагается календарь
		this.DOM.$container = this.DOM.$service.find('.js-vks-calendar');
		//Календарь
		this.DOM.$calendar = this.DOM.$service.find('.js-court_calendar-body');
		//Шапка календаря (список наименований дней недели)
		this.DOM.$daysName = this.DOM.$calendar.find('.js-court_calendar-body-head');
		//Дни календаря
		this.DOM.$days = this.DOM.$service.find('.js-vks-front-day');
		//Для запоминания выбранного дня
		this.DOM.$selectDay = null;
		//Для запоминания дня, над которым расположен курсор
		this.DOM.$hoverDay = null;
	},
	
	
	/**
	 * Объявляем обработчики сообытий
	 */
	bind: function() {
		var self = this;
		
		this.DOM.$container
			//Обработчик событие загрузки календаря при смене месяца
			.bind('calendarChange', function(){
				//Переопределяем часто используемые DOM-элементы календаря
				self._setDOMCalendar();
			})
			//Обработчик наведения курсора на день в календаре
			.delegate('.js-vks-front-day--active', 'hover', function() {
				var $this = $(this),
					isShadow = !self.DOM.$calendar.hasClass('calendar-hide') ? true : false;
				
				//Запоминаем день, над которым расположен курсор
				self.DOM.$hoverDay = $this;
				
				if (isShadow && !courtVKSPopup.isExportShow) {
					$this
						.find('.js-vks-day-hover')
						.toggleClass('g-hidden');
				}
			})
			//Обработчик клика по дню в календаре
			.delegate('.js-vks-front-day--active', 'click', function(){
				var $this = $(this),
					param = {};
				
				if (!self.DOM.$selectDay && !courtVKSPopup.isExportShow) {
					param = {
						'showPopup': true,
						'loadMeetings': true
					}
					//Запоминаем выбранный день
					self.DOM.$selectDay = $this;
				} else if (!$this.hasClass('calendar-selected') || courtVKSPopup.isExportShow) {
					param = {
						'hidePopup': true,
						'hideShadow': false
					}
				}
				
				//Объявляем событие клика по дню в календаре
				self.DOM.$service.trigger('courtVKSDayClick', [param]);
			});
	},
	
	
	/**
	 * Функция устанавливает тень на календарь
	 */
	showShadow: function() {
		this.DOM.$calendar.addClass('calendar-hide');
	},
	
	
	/**
	 * Функция снимает тень с календаря
	 */
	hideShadow: function() {
		this.DOM.$calendar.removeClass('calendar-hide');
	}
}

$(function(){
	//После загрузки скриптов шаблона всплывающего окна
	$(document).bind('courtPopupLoad', function() {
		courtVKS.init();
	});
});