$(function() {
	if ($('#events-calendar').length != 0 && $('#events-calendar').attr('data-url') != 0) {
		$(function() {
			let url_events_list = $('#events-calendar').attr('data-url');
			let course_events = {};
			let get_events = function(url) {
				$.ajax({
					method: "Get",
					url: url,
					async: false,
					dataType: 'json',
					statusCode: {
						200: function(result) {
							course_events = result;
						}
					},
				});
			};
			get_events(url_events_list);
			let nowDate = new Date(),
				nowDateNumber = nowDate.getDate(),
				nowMonth = nowDate.getMonth(),
				nowYear = nowDate.getFullYear(),
				container = document.getElementById('events-calendar'),
				monthContainer = container.getElementsByClassName('month-name')[0],
				yearContainer = container.getElementsByClassName('year-name')[0],
				daysContainer = container.getElementsByClassName('days')[0],
				prev = container.getElementsByClassName('prev')[0],
				next = container.getElementsByClassName('next')[0],
				monthName = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],
				calendar_events_container = document.getElementsByClassName('calendar-events')[0],
				count_publish_events = 0,
				icon_event = ``;

			let events_current_month = course_events[monthName[nowMonth]];
            
			function setMonthCalendar(year, month, events) {
				let monthDays = new Date(year, month + 1, 0).getDate(),
					monthPrefix = new Date(year, month, 0).getDay(),
					monthDaysText = '';
				monthContainer.textContent = monthName[month];
				yearContainer.textContent = year;
				daysContainer.innerHTML = '';
				if (monthPrefix > 0) {
					for (let i = 1; i <= monthPrefix; i++) {
						monthDaysText += '<li></li>';
					}
				}
				for (let i = 1; i <= monthDays; i++) {
					monthDaysText += '<li><span>' + i + '</span></li>';
				}
				let currentMonth = monthName[month];
				let events_month = events[currentMonth];

				daysContainer.innerHTML = monthDaysText;
				for (let key in events_month) {
					let days = daysContainer.getElementsByTagName('li');
					days[monthPrefix + Number(key) - 1].classList.add('type-' + events_month[key].type);
					days[monthPrefix + Number(key) - 1].innerHTML += '<div>' + events_month[key].title + '</div>';
				}
				if (month == nowMonth && year == nowYear) {
					let days = daysContainer.getElementsByTagName('li');
					days[monthPrefix + nowDateNumber - 1].classList.add('date-now');
				}
			}
			setMonthCalendar(nowYear, nowMonth, course_events);
			prev.onclick = function() {
				let curDate = new Date(yearContainer.textContent, monthName.indexOf(monthContainer.textContent));
				curDate.setMonth(curDate.getMonth() - 1);
				let curYear = curDate.getFullYear(),
					curMonth = curDate.getMonth();
				setMonthCalendar(curYear, curMonth, course_events);
			};
			next.onclick = function() {
				let curDate = new Date(yearContainer.textContent, monthName.indexOf(monthContainer.textContent));
				curDate.setMonth(curDate.getMonth() + 1);
				let curYear = curDate.getFullYear(),
					curMonth = curDate.getMonth();
				setMonthCalendar(curYear, curMonth, course_events);
			};
		});
	}
});