Calendar

configurable calendar

by aubz88

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment-with-locales.min.js"></script>

JavaScript

var data = {};
data.weeks = {};
data.currentCalendarMonth = moment().startOf('month');

buildMonth();
printMonth();

function buildMonth() {

    data.weeks = {};
    var startOfMonthISOWeek = data.currentCalendarMonth.clone().startOf('month').isoWeek();
    var endOfMonthISOWeek = data.currentCalendarMonth.clone().endOf('month').isoWeek();

    for (var i = startOfMonthISOWeek; i < endOfMonthISOWeek + 1; i++) {
        data.weeks[i] = [];
        buildWeek(i);
    }
}

function buildWeek(isoWeekNumber) {

    var start = moment().year(data.currentCalendarMonth.get('year')).week(isoWeekNumber).startOf('isoweek');
    var firstDayOfTheWeek = start.clone().subtract(3, 'days');

    for (var i = 0; i < 7; i++) {

        var day = firstDayOfTheWeek.clone().startOf('day').add(i, 'days');

        data.weeks[isoWeekNumber].push({
            date: day.get('date'),
            month: day.get('month'),
            year: day.get('year'),
            day: day
        });
    }
}

function printMonth() {
    for(var key in data.weeks) {
    	var week = '';
			
      for (var j = 0; j < 7; j++) {
      	week += data.weeks[key][j].date + ' ';
      }
      
      document.write(week);
      document.write('<br />');
    }
}