function daysInMonth(month, year) {
    var d = new Date(year, month, 0);
    return d.getDate();
}

function firstDayOfMonth(month, year) {
    month = month - 1;
    var d = new Date();
    d.setDate(1);
    d.setYear(year);
    d.setMonth(month);
    return d.getDay();
}

function isIn(value, array) {
    for (var i = 0; i <= array.length; i++)
        if (value == array[i])
            return true;
    return false;
}

var zi = ['L', 'M', 'M', 'J', 'V', 'S', 'D'];
var luni = ['Ianuarie', 'Februarie', 'Martie', 'Aprilie', 'Mai', 'Iunie', 'Iulie', 'August', 'Septembrie', 'Octombrie', 'Noiembrie', 'Decembrie'];

function calendar(luna, an, highlight1, hightlight2) {
    var prima_zi_din_saptamana = firstDayOfMonth(luna, an);
    var zile_in_luna = daysInMonth(luna, an);

    if (prima_zi_din_saptamana == 0)
        prima_zi_din_saptamana = 7;

    var r = '<table class="calendar" cellpadding="0" cellspacing="0">';
    r += '<tr><th colspan="7">' + luni[luna - 1] + ' '  + an + '</th></tr>';
    for (var i = 0; i <= 6; i++) {
        r += '<th style="border-bottom: 1px solid #666666;">' + zi[i] + '</th>';
    }
    r += '</tr>';

    r += '<tr>';
    for (var j = 1; j < prima_zi_din_saptamana; j++)
        r += '<td> </td>'

    i = 1;
    while (i <= zile_in_luna) {
        if (isIn(i, highlight1))
            r += '<td style="background-color: #1862c4; color: white">' + i + '</td>';
        else if (isIn(i, hightlight2))
            r += '<td style="background-color: #14a143; color: white">' + i + '</td>';
        else
            r += '<td>' + i + '</td>';
        j++;
        if (j == 8) {
            r += '</tr>';
            j = 1;
        }
        if (j == 1 && i < zile_in_luna)
            r += '<tr>';
        i++;
    }
    if (j != 1) { // se iese cu j = 1 (luni), saptamana noua la sfarsit de luna, nu mai randam o noua linie (saptamana)
        for (; j <= 7; j++)
            r += '<td> </td>';
        r += '</tr>';
    }
    r += '</table>';
    return r;
}

