/*
 * Обработчик дат событий для Musicdepo
 * by PsychodelEKS [psychodeleks@gmail.com]
 */

$(function(){ initEventsCalendar(); });

function initEventsCalendar()
{
	/*
	 * Установка региональных настроек календаря
	 */
	$.datepicker.regional['ru'] =
	{
		closeText: 'Закрыть',
		prevText: '&#x3c;Пред',
		nextText: 'След&#x3e;',
		currentText: 'Сегодня',
		monthNames: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],
		monthNamesShort: ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'],
		dayNames: ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'],
		dayNamesShort: ['вск', 'пнд', 'втр', 'срд', 'чтв', 'птн', 'сбт'],
		dayNamesMin: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'],
		dateFormat: 'dd.mm.yy',
		firstDay: 1,
		isRTL: false
	};
	
	$.datepicker.setDefaults($.datepicker.regional['ru']);
	
	/* ********************************************* */

	/** Обработчик дат, показывает есть ли события за данное число или нет
	 *
	 *	  Должна возвращать массив:
	 *      [0] - boolean (true/false) можно ли дату выбрать
	 *      [1] - string Дополнительный класс для ячейки (либо '' для оформления по-умолчанию)
	 *      [2] - string Всплывающая подсказка к дате.
	 */
	function checkEventsPresent( current_date )
	{
		/* Массив с объектами содержащими даты/новости/доп.инфу для дней на которые можно кликнуть
		 * генерится на сервере, возможно сделать подгрузку динамической через аякс, например для каждого месяца
		 */
		var available_dates =
		[
			{
				year:2008,
				months: [] // событий за 2008 год нет
			},
			{
				year:2009,
				months:
				[
					{
						month:4,
						days:
						[
							{day: 1, css:"holiday", tip:"2 события"},
							{day: 28, css:"", tip:"1 событие"},
							{day: 15, css:"starred", tip:"1 событие"}
		   				]
					},
					{
						month:5,
						days:
						[
							{day: 14, css:"starred", tip:"2 события"},
							{day: 12, css:"", tip:"1 событие"},
							{day: 9, css:"holiday", tip:"1 событие"}
		   				]
					}
				]
			}
		];

		/* Проходимся по цепочке ГОД->МЕСЯЦ->ДЕНЬ и проверяем есть ли события в этот день */
		for(var i in available_dates)
		{
			if(available_dates[i].year == current_date.getFullYear()) // год совпал
			{
				for(var j in available_dates[i].months)
				{
					if(available_dates[i].months[j].month == current_date.getMonth()+1) // месяц совпал
					{
						for(var k in available_dates[i].months[j].days)
						{
							if(available_dates[i].months[j].days[k].day == current_date.getDate()) // день совпал
							{
								with({day: available_dates[i].months[j].days[k]})
								{
								    return [
										true, // события в этот день есть
										day.css ? day.css : '', // если указан доп. класс передаем его, иначе пустую строку
										day.tip ? day.tip : '' // если указана подсказка передаем ее, иначе пустую строку
									];
								}
							}
						}
					}
				}
			}
		}

		return [false]; // событий не нашлось
	}
	
	/*
	 * Обработчик выбора даты
	 */
	function gotoEventsPage( dateText )
	{
		// window.location.href = 'events.php?date='+dateText;
		window.alert('Переходим на страницу событий за "'+dateText+'".');
	}
	
	/* ********************************************* */
	
	/* Создаем календарь */
	var $events_calendar = $('.event_selection_calendar_holder')
		.datepicker(
			{
				dateFormat: 'dd.mm.yy',
				duration: 'fast',
				showButtonPanel: true,
				yearRange: '-10:+5',
				changeMonth: true,
				changeYear: true,
				beforeShowDay: function(date) { return checkEventsPresent(date); },
				onSelect: function(dateText) { gotoEventsPage(dateText); }
			});
			
	$('.event_selection_calendar').bind('click.eventsCalendar', function(){ $events_calendar.datepicker('show'); } );
}