Блондинка,
попробуйте дописать refresh и сегодня самостоятельно ... все примеры у вас есть.
<!DOCTYPE HTML>
<html lang="ru">
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
body { width: 960px; }
body, select, input { font: 14px serif; }
#calendar { width: 330px; display: inline-block; border: 1px solid #a9a9a9; border-radius: 6px/4px; padding: 5px; }
#navigation_panel { background-color: #c5e3ff; height: 53px; border: 1px solid #a9a9a9; border-radius: 6px/4px; padding: 5px; margin-bottom: 3px; text-align: center; vertical-align: middle; }
#navigation_panel button, #navigation_panel #calendar_year { background-color: #94cdff; color: #00f; font: 14px serif; border: 1px solid #00f; }
#calendar_month { background-color: transparent; color: #00f; font: 14px serif; border: 1px solid #00f; }
#navigation_panel button { height: 24px; vertical-align: middle; }
#background_month { background-color: #94cdff; display: inline-block; }
button.minus { border-radius: 6px 0 0 6px / 4px 0 0 4px; margin-right: -5px; }
button.plus { border-radius: 0 6px 6px 0 / 0 4px 4px 0; margin-left: -5px; }
.month_plus { margin-right: 35px; }
#presently { width: 252px; margin-top: 5px; border-radius: 6px/4px; }
#calendar_month { width: 89px; display: inline-block; }
#calendar_year { width: 54px; display: inline-block; }
select { height: 24px; }
input { height: 20px; border: 1px solid #a9a9a9; display: inline-block; text-align: center; }
#table { width: 100%; height: 222px; padding: 2px; }
#table, td { border: 1px solid #a9a9a9; border-radius: 6px/4px; }
td { margin: 1px; text-align: center; }
td.week-day { height: 33px; }
.prevMonth{
background-color: #228B22;
}
.curMonth{
background-color: #FF69B4;
}
.nextMonth{
background-color: #48D1CC;
}
.curDay{
background-color: #FFFACD;
}
</style>
</head>
<body>
<div id="calendar">
<div id="navigation_panel">
<button class="month_minus minus">‹</button>
<span id="background_month"><select id="calendar_month"></select></span>
<button class="month_plus plus">›</button>
<button class="year_minus minus">‹</button>
<input type="text" size="4" id="calendar_year">
<button class="year_plus plus">›</button><br>
<button id="presently">сегодня</button>
</div>
<table id="table">
<thead>
<tr><td class="week-day">Пн.</td><td class="week-day">Вт.</td><td class="week-day">Ср.</td><td class="week-day">Чт.</td><td class="week-day">Пт.</td><td class="week-day">Сб.</td><td class="week-day">Вс.</td></tr>
</thead>
<tbody></tbody>
</table>
</div>
<script>
Date.prototype.reduce = function(callback, value) {
var year = this.getFullYear();
var month = this.getMonth();
var step = new Date(year, month, 1);
var last = new Date(year, month + 1, 0);
step.setHours(24 * (0 - (step.getDay() + 6) % 7));
last.setHours(24 * (6 - (last.getDay() + 6) % 7));
for (var i = 0; step <= last; i++) {
value = callback(value, new Date(+step), i, this);
step.setHours(24);
}
return value;
};
var data = new Date();
var selectMonth = document.querySelector('#calendar_month');
var monthNames = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'];
monthNames.forEach(function(monthName, i) {
selectMonth.options[i] = new Option(monthName, i)
})
selectMonth.addEventListener("change", function() {
data.setMonth(this.value);
createCalendar(data);
});
var minusMonth = document.querySelector('.month_minus');
minusMonth.addEventListener("click", function() {
data.setMonth(data.getMonth() - 1);
createCalendar(data);
});
var plusMonth = document.querySelector('.month_plus');
plusMonth.addEventListener("click", function() {
data.setMonth(data.getMonth() + 1);
createCalendar(data);
});
var minusYear = document.querySelector('.year_minus');
minusYear.addEventListener("click", function() {
data.setYear(data.getFullYear() - 1);
createCalendar(data);
});
var plusYear = document.querySelector('.year_plus');
plusYear.addEventListener("click", function() {
data.setYear(data.getFullYear() + 1);
createCalendar(data);
});
var inputYear = document.querySelector('#calendar_year');
inputYear.addEventListener('input', function () {
if (/^\d{4}$/.test(this.value)) {
data.setYear(this.value);
createCalendar(data);
}
});
// и т.д.
function createCalendar(data)
{
var now = (new Date()).setHours(0,0,0,0);
var year = data.getFullYear();
inputYear.value = year;
var month = data.getMonth();
selectMonth.selectedIndex = month;
var cls = ['prevMonth', 'curMonth', 'nextMonth'], indexCls = 0;
var html = data.reduce(function(value, current, index, source) {
var date = current.getDate();
if(date == 1) indexCls++;
var className = cls[indexCls];
if (+now == +current) { // если дата равна сегодня
className += ' curDay';
//
}
if (current.getDay() == 1) value += '<tr>';
return value + '<td class="'+className+'">' + date;
}, '');
document.querySelector('#table tbody').innerHTML = html;
}
createCalendar(data);
// и т.д
</script>
</body>
</html>