
 var todayDay = new Date(); // сегодня
 var todayDate = todayDay.getDate();
 var todayMonth = todayDay.getMonth();
 var todayYear = todayDay.getFullYear();

 var startDay = new Date(); // первый день в недельном календаре
 var startDate = 0;
 var startMonth = 0;
 var startYear = 0;

 var currentDay = new Date(); // выбранная дата
 var currentDate = 0;
 var currentMonth = 0;
 var currentYear = 0;

 var verticalOffset = 0; // вертикальное смещение календаря

// =======================================================
// ЛИСТАЕМ НЕДЕЛИ
// =======================================================
function changeWeek(d) {
 startDay.setDate(startDate + d * 7);
 startDate = startDay.getDate();
 startMonth = startDay.getMonth();
 startYear = startDay.getFullYear();

 // создаем календарь в новом контейнере
 createWeekCalendar(startDate, startMonth, startYear, 1, d);

 if (d==1) {
  anim = '-=38px';
 } else {
  anim = '+=38px';
 }

 // смещаем общий контейнер
 $('#dayline_weeks').animate({ top: anim }, {
  duration: 500,
  specialEasing: {
   top: 'easeOutBounce'
  },
  complete: function() {
   $('#dayline_old div').unbind("click.EventLine"); // убираем события с предыдущего контейнера
   $('#dayline_old').remove(); // удаляем контейнер
  }
 });
 
}


// =======================================================
// СОЗДАЕМ КАЛЕНДАРЬ НА НЕДЕЛЮ
// (входные данные - день, который должен быть в списке)
// =======================================================
function createWeekCalendar(day, month, year, createnew, direction) {

 if (createnew==1) {

  $('#dayline_new').attr('id','dayline_old'); // переименовываем старый контейнер

  if (direction==1) {
   verticalOffset += 38;
   new_pos = 'top:'+ verticalOffset +'px; left:0px;';
   $('#dayline_weeks').append('<div id="dayline_new" class="dayline" style="position:absolute; ' + new_pos + '"></div>');
  } else {
   verticalOffset -= 38;
   new_pos = 'top:'+ verticalOffset +'px; left:0px;';
   $('#dayline_weeks').prepend('<div id="dayline_new" class="dayline" style="position:absolute; ' + new_pos + '"></div>');
  }

 }

 // уточняем сегодняшнюю дату
 todayDay = new Date();
 todayDate = todayDay.getDate();
 todayMonth = todayDay.getMonth();
 todayYear = todayDay.getFullYear();
 //todayDay = Date(todayYear, todayMonth, todayDate); // чтобы время убрать

 // входная дата для расчетов
 tempDay = new Date(year, month, day);

 // начинаем с понедельника
 // воскресенье: 0 -6, понедельник: 1 0, вторник: 2 -1, среда: 3 -2, четверг: 4 -3, пятница: 5 -4, суббота: 6 -5
 tempWeekDay = tempDay.getDay();
 if (tempWeekDay==0) { // воскресенье
  backOffset = -6;
 } else {
  backOffset = -1 * (tempWeekDay - 1);
 }

 // дата начала календаря (понедельник)
 // startDayTime = tempDay.getTime() + backOffset * 86400000;
 // startDay.setTime(startDayTime);
 startDay = tempDay; // создаем дату (заданный день)
 startDay.setDate(tempDay.getDate() + backOffset); // откатываем назад до понедельника

 startDate = startDay.getDate(startDay);
 startMonth = startDay.getMonth(startDay);
 startYear = startDay.getFullYear(startDay);

 //alert(startDate+' '+startMonth+' '+startYear);

 var daysHTML = ''; // лента дней

 //$('#dayline').empty();

 // создаем календарь
 for (var i = 0; i < 7; i++) {

  var oneDayDate = 0;
  var oneDayMonth = 0;
  var oneDayYear = 0;
  var oneDayWeekday = '';

  var oneDay = new Date();
  oneDay.setTime(startDay.getTime() + i * 86400000); // 24 * 60 * 60 * 1000
  oneDayDate = oneDay.getDate();
  oneDayMonth = oneDay.getMonth();
  oneDayYear = oneDay.getFullYear();
  oneDayWeekday = oneDay.getDay();

  dayBlockClass = 'day_block';
  dayClass = 'day';
  if (oneDayDate==currentDate && oneDayMonth==currentMonth && oneDayYear==currentYear) { dayBlockClass = 'day_block day_block_selected'; } // текущий выбранный день
  if (oneDayDate==todayDate && oneDayMonth==todayMonth && oneDayYear==todayYear) { dayClass = 'today'; } // сегодняшний день

  // если надо, показываем год
  if (oneDayYear!=todayYear) {
   //yearHTML = '<div class="year">' + oneDayYear + '</div>';
   yearHTML = ' ' + oneDayYear;
  } else {
   yearHTML = '';
  }

  var oneDayHTML = '';

  datestring = oneDayYear+'-'+(oneDayMonth+1)+'-'+oneDayDate;

  oneDayHTML += '<div class="' + dayBlockClass + '" id="day' + i + '" name="' + datestring + '">';
  oneDayHTML += '<div class="' + dayClass + '">';
  oneDayHTML += '<div class="month">' + oneDay.getDate() + ' ' + getMonthName(oneDayMonth) + yearHTML + '</div>';
  oneDayHTML += '<div class="weekday">' + getWeekdayName(oneDayWeekday) + '</div>';
  oneDayHTML += '</div></div>';

  //alert(oneDayHTML);

 if (createnew==0) {
  element_id = '#dayline_old';
  $('#dayline_old').append(oneDayHTML);
 } else {
  element_id = '#dayline_new';
  $('#dayline_new').append(oneDayHTML);
 }

 // НАЗНАЧАЕМ СОБЫТИЕ НА КНОПКУ ДНЯ
 $(element_id + ' #day'+i).bind("click.EventLine",function(){
  $(element_id + ' .day_block').each(function() {
   //alert($(this).attr('id'));
   $(this).removeClass('day_block_selected');
  });
  $(this).addClass('day_block_selected');
  sel_date = $(this).attr('name');
  sel_date_array = sel_date.split('-');
  setCurrentDay(sel_date_array[2], sel_date_array[1]-1, sel_date_array[0]);
  updateEvents(sel_date);
 });

 //daysHTML += oneDayHTML;

 }

 //alert(daysHTML);
 //$('#dayline').html(daysHTML);

}


// =======================================================
// ПОЛУЧАЕМ НАЗВАНИЕ МЕСЯЦА
// =======================================================
function getMonthName(month) {
 //month_names = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'];
 month_names = ['января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря'];
 return month_names[month];
}

// =======================================================
// ПОЛУЧАЕМ НАЗВАНИЕ ДНЯ НЕДЕЛИ
// =======================================================
function getWeekdayName(weekday) {
 //weekday_names = ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Вс'];
 weekday_names = ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота', 'воскресенье'];
 return weekday_names[weekday];
}

// =======================================================
// ЗАДАЕМ ТЕКУЩИЙ ВЫБРАННЫЙ ДЕНЬ
// (в формате JS, месяцы начинаются с 0)
// =======================================================
function setCurrentDay(day, month, year) {
 currentDate = day;
 currentMonth = month;
 currentYear = year;
 currentDay = Date(year, month, day);
}

// ==================================================
// показать текущую неделю
// ==================================================
function show_current_week() {
 //setCurrentDay(todayDate,todayMonth,todayYear);
 createWeekCalendar(todayDate,todayMonth,todayYear,0);
}

// ==================================================
// показать текущую неделю и выбрать сегодняшний день
// ==================================================
function show_today() {
 setCurrentDay(todayDate,todayMonth,todayYear);
 createWeekCalendar(todayDate,todayMonth,todayYear,0);
}

// ==================================================
// ОБНОВЛЯЕМ ЛЕНТУ ПО ТАЙМЕРУ ТАЙМЕР
// ==================================================
function updateLiveEventsTimer() {
 if (todayDate==currentDate && todayMonth==currentMonth && todayYear==currentYear) { // если выбран сегодняшний день
  updateEvents('');
 } else {
  // другой день, ничего не делаем
 }
 clearTimeout(eventsUpdateTimer);
 eventsUpdateTimer = setTimeout(updateLiveEventsTimer, 180000);
}

// ===============================================
// НЕПОСРЕДСТВЕННОЕ ОБНОВЛЕНИЕ ЛЕНТЫ СОБЫТИЙ
// ===============================================
function updateEvents(selected_date) {
 //$(document.body).css('cursor','wait');
 $('#main_loader').css('display','block');
 $.ajax({
  url: "/main/events.php",
  dataType: 'html',
  type: 'POST',
  data: { date: selected_date },
  cache: false,
  context: document.body,
  beforeSend: function(){
  },
  success: function(response){
   $('#event_cards').fadeOut(100).html(response).fadeIn(500);
   $('#main_loader').css('display','none');
  }
 });
}


// ===============================================
// СКРЫТЬ/ПОКАЗАТЬ КАЛЕНДАРЬ
// ===============================================
function toggleCalendar() {
 if (calendar_open) {
  $('#calendar').stop().animate({ "height": '0px' }, 300, "swing", function(){
   $('#toggle_calendar').html('Открыть календарь...');
   calendar_open = false;
  });
 } else {
  $('#calendar').stop().animate({ "height": '50px' }, 300, "swing", function(){
   $('#toggle_calendar').html('Скрыть календарь');
   calendar_open = true;
  });
 }
}


