// declare freeDays global
var freeDays = [];
var freeDaysText = [];
 
// perform initial json request for free days
var t = new Date();
fetchFreeDays( t.getFullYear(), t.getMonth() );
 
 
 
$(document).ready(function() {
  // fairly standard configuration, importantly containing beforeShowDay and onChangeMonthYear custom methods
  $("#datepicker").datepicker({
    dayNames:['Neděle','Pondělí','Úterý','Středa','Čtvrtek','Pátek','Sobota'],
    dayNamesMin:['Ne','Po','Út','St','Čt','Pá','So'],
    monthNames:['Leden','Únor','Březen','Duben','Květen','Červen','Červenec','Srpen','Září','Říjen','Listopad','Prosinec'],
    dateFormat: 'yy-mm-dd',
    altField: '#date_due',
    altFormat: 'yy-mm-dd',
    beforeShowDay: highlightDays,
    onChangeMonthYear: fetchFreeDays,
    firstDay: 1,
    onSelect: function(dateText, inst) {
      var url = R4BaseUrl +"/kalendar/datum/"+dateText;
      window.location = url;
    }
  });
});
 
 
 
// query for free days in datepicker
function fetchFreeDays(year, month) {
  var start_date = '';
 
  // if a month and year were supplied, build a start_date in yyyy-mm-dd format
  if (year != undefined && month != undefined) {
    start_date = year +'-';
    start_date += month +'-';
    start_date += '01';
  }
 
  $.ajax({
    url: R4BaseUrl +"/box-kalendare/?start_date="+ start_date,
    dataType: 'json',
    async: false,
    success: function(data) {
      $.each(data, function(index, value) {
        freeDays.push(value.date); // add this date to the freeDays array
        freeDaysText.push(value.text); // add this date to the freeDays array
      });
    }
  });
}
 
// runs for every day displayed in datepicker, adds class and tooltip if matched to days in freeDays array
function highlightDays(date) {


  for (var i = 0; i < freeDays.length; i++) {
    var datePart = freeDays[i].split('-');
    if ( new Date(parseInt(datePart[0], 10), (parseInt(datePart[1], 10)-1), parseInt(datePart[2], 10), 0 , 0, 0) == date.toString()) {
      // [0] = true | false if this day is selectable, [1] = class to add, [2] = tooltip to display
      return [true, 'highlight', freeDaysText[i] ];
    }
  }
    
  return [true, ''];
}

