var calendarUrl = '?date=';
var calendarYear = 2010;
var calendarMonth = 6;
var calendarViewId = 'calendar';
var calendarNavId = 'month';
function setPreviousYear()
{
calendarYear--;
displayCalendar();
}
function setPreviousMonth()
{
if (calendarMonth <= 0) {
calendarMonth = 11;
calendarYear--;
} else {
calendarMonth--;
}
displayCalendar();
}
function setNextMonth()
{
if (calendarMonth >= 11) {
calendarMonth = 0;
calendarYear++;
} else {
calendarMonth++;
}
displayCalendar();
}
function setNextYear()
{
calendarYear++;
displayCalendar();
}
function displayCalendar()
{
// отрисовка календаря
var month = calendarMonth;
var year = calendarYear;
var htmlCod = '
';
htmlCod += '';
htmlCod += '| ' + arrWeekDays[0] + ' | ';
htmlCod += '' + arrWeekDays[1] + ' | ';
htmlCod += '' + arrWeekDays[2] + ' | ';
htmlCod += '' + arrWeekDays[3] + ' | ';
htmlCod += '' + arrWeekDays[4] + ' | ';
htmlCod += '' + arrWeekDays[5] + ' | ';
htmlCod += '' + arrWeekDays[6] + ' | ';
htmlCod += '
';
htmlCod += '';
month = parseInt(month);
year = parseInt(year);
var i = 0;
var days = getDaysInMonth(month + 1, year);
var firstOfMonth = new Date (year, month, 1);
// возвращает день недели для первого дня месяца (0-Вс, 1-Пн, ...)
var startingPos = firstOfMonth.getDay();
days += startingPos;
// проставляем пустые ячейки в начале
for (i = 0; i < startingPos; i++) {
if (i % 7 == 0) {
htmlCod += '
';
}
htmlCod += " | ";
}
// отрисовываем календарь
for (i = startingPos; i < days; i++) {
if (i % 7 == 0) {
htmlCod += '
';
}
htmlCod += '| ';
htmlCod += linkDay;
htmlCod += ' | ';
}
// проставляем пустые ячейки в конце
for (i = days; i < 42; i++) {
if (i % 7 == 0) {
htmlCod += '
';
}
htmlCod += ' | ';
}
htmlCod += '
';
document.getElementById(calendarViewId).innerHTML = htmlCod;
// отрисовка страницы навигации
var navStringCod = '';
navStringCod += '<< ';
navStringCod += ' ' + arrMonth[calendarMonth] + ' ' + calendarYear + ' ';
navStringCod += ' >>';
navStringCod += '';
document.getElementById(calendarNavId).innerHTML = navStringCod;
}
function getDaysInMonth(month, year)
{
var days;
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
days = 31;
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
days = 30;
} else if (month == 2) {
if (isLeapYear(year)) {
days = 29;
} else {
days = 28;
}
}
return (days);
}
function isLeapYear (year)
{
if (((year % 4) == 0) && ((year % 100) != 0) || ((year % 400) == 0)) {
return (true);
} else {
return (false);
}
}