﻿Date.prototype.getDaysInMonth = function()
{ return new Date(this.getFullYear(), this.getMonth() + 1, 0); }

function drawCalendar(year, month) {
    var totalWeeks = getWeeksInMonth(year, month);
    $("#calendar").css("background-image", "url(" + applicationRoot + "images/calendar/bg_" + totalWeeks + "lines.gif)");
    calendarBody = "";
    var strActiveDays = $.ajax({
      url: applicationRoot + "ajax/GetActiveDays.ashx?year=" + year + "&month=" + (month+1) + "&rand=" + Math.floor(Math.random()*100001),
      async: false
     }).responseText;
     
    var datestart = new Date(year, month, 1);
    var firsthay = datestart.getDay();
    var lastDay = datestart.getDaysInMonth().getDate();
    var today = (new Date()).getDate();
    var currentMonth = (new Date()).getMonth();
    var currentYear = (new Date()).getFullYear();
    var dayCounter = 0;
    var strClass = "";
    var linkStart = "";
    var linkEnd = "";
    for (weekCounter = 0; weekCounter < totalWeeks ; ++weekCounter){
        calendarBody += "<tr>";
        for (weekDayCounter = 1; weekDayCounter < 8; ++weekDayCounter) {
            if ((weekCounter * 7) + weekDayCounter < firsthay)
                calendarBody += "<td>&nbsp;</td>";
            else {
                dayCounter++;
                if ((dayCounter == today)&&(month==currentMonth)&&(year==currentYear)) {
                    if (strActiveDays.indexOf("#" + dayCounter + "#") > -1) {
                        strClass = " class=\"todayactive\"";
                        linkStart = "<a href=\"/agenda?date=" + year + "-" + (month + 1) + "-" + dayCounter + "\">";
                        linkEnd = "</a>";
                    }
                    else {
                        strClass = " class=\"today\"";
                        linkStart = "";
                        linkEnd = "";
                    }
                }
                else {

                    
                
                
                    if (strActiveDays.indexOf("#" + dayCounter + "#") > -1) {
                        strClass = " class=\"active\"";
                        linkStart = "<a href=\"/agenda?date=" + year + "-" + (month + 1)+ "-" + dayCounter + "\">";
                        linkEnd = "</a>";
                    }
                    else {
                        strClass = "";
                        linkStart = "";
                        linkEnd = "";
                    }



                    if (window.location.search.indexOf('date') != -1) {
                        var selectedDate = window.location.search.replace('?date=', '');

                        if ((parseInt(selectedDate.split('-')[0]) == year) &&
                            (parseInt(selectedDate.split('-')[1]) == (month + 1)) &&
                            (parseInt(selectedDate.split('-')[2]) == dayCounter)) {
                            strClass = " class=\"selectedDate\"";
                        }

                    }
                    
                }
                calendarBody += "<td " + strClass + ">" + linkStart + (dayCounter) + linkEnd + "</td>";
            }
            if (dayCounter == lastDay)
                    break;
        }
        calendarBody += "</tr>";
    }
    $("#calendar .agendacalendar tbody").html(calendarBody);
}

function getWeeksInMonth(year, month) {
    var datestart = new Date(year, month, 1);
    var firstDay = datestart.getDay() - 1;
    if (firstDay == -1)
        firstDay = 6;
    var remainingDaysFirstWeek = 7 - firstDay;
    if (remainingDaysFirstWeek = 7) remainingDaysFirstWeek = 0;
    var monthDays = datestart.getDaysInMonth().getDate();
    var weeks = Math.round((monthDays - remainingDaysFirstWeek) / 7 + 0.49999);
    return weeks;
}
