Календарик

Под катом полная версия на 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 на странице.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *