JavaScript - CSS para dia atual e semana indicada

by Salustiano Silva

HTML

<div id='cal'></div>

CSS

.curDay {
    font-weight:bold;
}
.highlightWeek{
    background-color:pink;
}

JavaScript

function Calendar(id, year, month, highlightWeek) { 

    var elem  = document.getElementById(id),
        mon   = month - 1,
        d     = new Date(year, mon),
        today = new Date().getDate();

    var weekDay = ["Sun", "Mon", "Tues", "Wed", "Thu", "Fri", "Sat"];

    var months = ['January', 'Frebruary', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];

    var table = ['<table><tr>']
    
    table.push('<th colspan = 4>' + months[mon] + '</th>' + '<th colspan = 3>' + year + '</th>' + '</tr><tr>')
    for (var i = 0; i <= 6; i++ ) {
        table.push('<th>' + weekDay[i] + '</th>');
    }
    table.push('</tr><tr>')
    
    for (var i=0; i<d.getDay(); i++) {
        table.push('<td></td>')
    }

    var weekNum = 1;

    while (d.getMonth() == mon) {

        var tdClass1 = today==d.getDate() ? 'curDay' : '';

        table.push('<td class="'+tdClass1+'">'+d.getDate()+'</td>');
        
        if (d.getDay() % 7 == 6) {

            weekNum++;

            if (weekNum == highlightWeek) {
                table.push('</tr><tr class="highlightWeek">');
            }
            else {
                table.push('</tr><tr>');
            }
        }

        d.setDate(d.getDate()+1);
    }
    for (var i=d.getDay(); i<7; i++) {
        table.push('<td></td>')
    }
    table.push('</tr></table>')
    elem.innerHTML = table.join('\n')
}

new Calendar("cal", 2015, 3, 2);