
Под катом полная версия на 2013 год и код генератора на любой год.
function January_2013() {
return [
[ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ],
[ '', '', 1, 2, 3, 4, '5' ],
[ '6', 7, 8, 9, 10, 11, '12' ],
[ '13', 14, 15, 16, 17, 18, '19' ],
[ '20', 21, 22, 23, 24, 25, '26' ],
[ '27', 28, 29, 30, 31, '', '' ]
];
}
,
function February_2013() {
return [
[ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ],
[ '', '', '', '', '', 1, '2' ],
[ '3', 4, 5, 6, 7, 8, '9' ],
[ '10', 11, 12, 13, 14, 15, '16' ],
[ '17', 18, 19, 20, 21, 22, '23' ],
[ '24', 25, 26, 27, 28, 29, '30' ],
[ '31', '', '', '', '', '', '' ]
];
}
,
function March_2013() {
return [
[ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ],
[ '', '', '', '', '', 1, '2' ],
[ '3', 4, 5, 6, 7, 8, '9' ],
[ '10', 11, 12, 13, 14, 15, '16' ],
[ '17', 18, 19, 20, 21, 22, '23' ],
[ '24', 25, 26, 27, 28, '', '' ]
];
}
,
function April_2013() {
return [
[ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ],
[ '', 1, 2, 3, 4, 5, '6' ],
[ '7', 8, 9, 10, 11, 12, '13' ],
[ '14', 15, 16, 17, 18, 19, '20' ],
[ '21', 22, 23, 24, 25, 26, '27' ],
[ '28', 29, 30, 31, '', '', '' ]
];
}
,
function May_2013() {
return [
[ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ],
[ '', '', '', 1, 2, 3, '4' ],
[ '5', 6, 7, 8, 9, 10, '11' ],
[ '12', 13, 14, 15, 16, 17, '18' ],
[ '19', 20, 21, 22, 23, 24, '25' ],
[ '26', 27, 28, 29, 30, '', '' ]
];
}
,
function June_2013() {
return [
[ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ],
[ '', '', '', '', '', '', '1' ],
[ '2', 3, 4, 5, 6, 7, '8' ],
[ '9', 10, 11, 12, 13, 14, '15' ],
[ '16', 17, 18, 19, 20, 21, '22' ],
[ '23', 24, 25, 26, 27, 28, '29' ],
[ '30', 31, '', '', '', '', '' ]
];
}
,
function July_2013() {
return [
[ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ],
[ '', 1, 2, 3, 4, 5, '6' ],
[ '7', 8, 9, 10, 11, 12, '13' ],
[ '14', 15, 16, 17, 18, 19, '20' ],
[ '21', 22, 23, 24, 25, 26, '27' ],
[ '28', 29, 30, '', '', '', '' ]
];
}
,
function August_2013() {
return [
[ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ],
[ '', '', '', '', 1, 2, '3' ],
[ '4', 5, 6, 7, 8, 9, '10' ],
[ '11', 12, 13, 14, 15, 16, '17' ],
[ '18', 19, 20, 21, 22, 23, '24' ],
[ '25', 26, 27, 28, 29, 30, '31' ]
];
}
,
function September_2013() {
return [
[ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ],
[ '1', 2, 3, 4, 5, 6, '7' ],
[ '8', 9, 10, 11, 12, 13, '14' ],
[ '15', 16, 17, 18, 19, 20, '21' ],
[ '22', 23, 24, 25, 26, 27, '28' ],
[ '29', 30, 31, '', '', '', '' ]
];
}
,
function October_2013() {
return [
[ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ],
[ '', '', 1, 2, 3, 4, '5' ],
[ '6', 7, 8, 9, 10, 11, '12' ],
[ '13', 14, 15, 16, 17, 18, '19' ],
[ '20', 21, 22, 23, 24, 25, '26' ],
[ '27', 28, 29, 30, '', '', '' ]
];
}
,
function November_2013() {
return [
[ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ],
[ '', '', '', '', '', 1, '2' ],
[ '3', 4, 5, 6, 7, 8, '9' ],
[ '10', 11, 12, 13, 14, 15, '16' ],
[ '17', 18, 19, 20, 21, 22, '23' ],
[ '24', 25, 26, 27, 28, 29, '30' ],
[ '31', '', '', '', '', '', '' ]
];
}
,
function December_2013() {
return [
[ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ],
[ '1', 2, 3, 4, 5, 6, '7' ],
[ '8', 9, 10, 11, 12, 13, '14' ],
[ '15', 16, 17, 18, 19, 20, '21' ],
[ '22', 23, 24, 25, 26, 27, '28' ],
[ '29', 30, '', '', '', '', '' ]
];
}
И его простенький генератор.
var year = prompt("Enter year", new Date().getFullYear()),
calendar = [],
DAYS = {
SUN: 0, MON: 1, TUE: 2, WED: 3, THU: 4, FRI: 5, SAT: 6
},
MONTHS = ['January', 'February', 'March', 'April', 'May', 'June',
'July', 'August', 'September', 'October', 'November', 'December'];
for (var month = 0; month < 12; month++) {
var firstDay = new Date(year, month, 1).getDay(),
days = new Date(year, month, 0).getDate(),
lastDay = new Date(year, month, days).getDay(),
str = "\nfunction " + MONTHS[month] + "_" + year + "() ";
str += "{\n\treturn [\n\t\t[ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ],";
if (firstDay !== DAYS.SUN) {
str += "\n\t\t[ ";
}
for(var emptyDay = DAYS.SUN; emptyDay < firstDay; emptyDay++) {
str += " '',";
}
for (var day = 1; day <= days; day++) {
var date = new Date(year, month, day);
if (date.getDay() === DAYS.SUN) {
str += "\n\t\t[";
}
if (day / 10 < 1) {
str += " ";
}
if (date.getDay() === DAYS.SUN || date.getDay() === DAYS.SAT) {
str += " '" + day + "'";
} else {
str += " " + day;
}
if (date.getDay() === DAYS.SAT) {
str += " ]";
if (day !== days) {
str += ",";
}
} else {
str += ",";
}
}
for (emptyDay = lastDay; emptyDay < DAYS.SAT; emptyDay++) {
str += " ''";
if(emptyDay !== DAYS.FRI) {
str+=",";
}
}
if(lastDay !== DAYS.SAT) {
str+=" ]";
}
str += "\n\t];\n}\n";
calendar[month] = str;
}
var pre = document.getElementsByTagName('pre')[0];
pre.innerHTML = calendar;
Результирующий код подставляется в первый тег pre на странице.