setCal()

function getTime() {
	// initialize time-related variables with current time settings
	var now = new Date()
	var hour = now.getHours()
	var minute = now.getMinutes()
	now = null
	var ampm = "" 
	
	// validate hour values and set value of ampm
	if (hour >= 12) {
		hour -= 12
		ampm = "PM"
	}
	else
		ampm = "AM"
	hour = (hour == 0) ? 12 : hour
	
	// add zero digit to a one digit minute
	if (minute < 10)
	minute = "0" + minute // do not parse this number!
	
	// return time string
	return hour + ":" + minute + " ";// + ampm
}

function leapYear(year) {
	if (year % 4 == 0) // basic rule
	return true // is leap year
	/* else */ // else not needed when statement is "return"
	return false // is not leap year
}

function getDays(month, year) {
	// create array to hold number of days in each month
	var ar = new Array(12)
	ar[0] = 31 // January
	ar[1] = (leapYear(year)) ? 29 : 28 // February
	ar[2] = 31 // March
	ar[3] = 30 // April
	ar[4] = 31 // May
	ar[5] = 30 // June
	ar[6] = 31 // July
	ar[7] = 31 // August
	ar[8] = 30 // September
	ar[9] = 31 // October
	ar[10] = 30 // November
	ar[11] = 31 // December
	
	// return number of days in the specified month (parameter)
	return ar[month]
}

function getMonthName(month) {
	// create array to hold name of each month
	var ar = new Array(12)
	ar[0] = "Январь"
	ar[1] = "Февраль"
	ar[2] = "Март"
	ar[3] = "Апрель"
	ar[4] = "Май"
	ar[5] = "Июнь"
	ar[6] = "Июль"
	ar[7] = "Август"
	ar[8] = "Сентябрь"
	ar[9] = "Октябрь"
	ar[10] = "Ноябрь"
	ar[11] = "Декабрь"
	
	// return name of specified month (parameter)
	return ar[month]
}

function setCal() {
	// standard time attributes
	var now = new Date()
	var year = now.getYear()
	if (year < 1000)
	year+=1900
	var month = now.getMonth()
	var monthName = getMonthName(month)
	var date = now.getDate()
	now = null
	
	// create instance of first day of month, and extract the day on which it occurs
	var firstDayInstance = new Date(year, month, 1)
	var firstDay = firstDayInstance.getDay()
	firstDayInstance = null
	
	// number of days in current month
	var days = getDays(month, year)
	
	// call function to draw calendar
	drawCal(firstDay + 1, days, date, monthName, year)
}

function drawCal(firstDay, lastDate, date, monthName, year) {
	// constant table settings
	var headerHeight = 25 // height of the table's header cell
	var border = 0 // 3D height of table's border
	var cellspacing = 0 // width of table's border
	var headerColor = "#ffffff" // color of table's header
	var headerSize = "+2" // size of tables header font
	var colWidth = 10 // width of columns in table
	var dayCellHeight = 24 // height of cells containing days of the week
	var dayColor = "darkblue" // color of font representing week days
	var cellHeight = 14 // height of cells representing dates in the calendar
	var todayColor = "red" // color specifying today's date in the calendar
	var timeColor = "purple" // color of font representing current time

	// create basic table structure
	var text = "" // initialize accumulative variable to empty string
	text+='<table width="211" align="center" border="0" cellspacing="0" cellpadding="0" class="btab"><tr><td height="33" class="bname">'+monthName + ' ' + year+'</td></tr></table>'
	//text += '<CENTER>'
	text += '<div style="width:211; text-align:center; "><table width="211" border="0" cellspacing="0" cellpadding="0" class="calendarTable">' // table settings
	//text += '<th height="33" class="bname">' // create table header cell
	//text += '<FONT COLOR="' + headerColor + '" SIZE=' + headerSize + '>' // set font for table header
	//text += monthName + ' ' + year 
	//text += '</FONT>' // close table header's font settings
	//text += '</TH>' // close header cell
	//text += '</th>'
	
	// variables to hold constant settings
	//var openCol = '<TD WIDTH=' + colWidth + ' HEIGHT=' + dayCellHeight + '>'
	//<td class="calendarBody">
	var openCol = '<td class="calendarBody" WIDTH=' + colWidth + ' HEIGHT=' + dayCellHeight + '>'
	//openCol += '<FONT COLOR="' + dayColor + '" style="font-size:11px; font-weight:bold">'
	//var closeCol = '</FONT></TD>'
	var closeCol = '</td>'
	
	// create array of abbreviated day names
	var weekDay = new Array(7)
	weekDay[0] = "Вс"
	weekDay[1] = "Пн"
	weekDay[2] = "Вт"
	weekDay[3] = "Ср"
	weekDay[4] = "Чт"
	weekDay[5] = "Пт"
	weekDay[6] = "Сб"
	
	// create first row of table to set column width and specify week day
	text += '<tr>'
	for (var dayNum = 0; dayNum < 7; ++dayNum) {
	text += openCol + weekDay[dayNum] + closeCol 
	}
	text += '</tr>'
	
	// declaration and initialization of two variables to help with tables
	var digit = 1
	var curCell = 1
	
	for (var row = 1; row <= Math.ceil((lastDate + firstDay - 1) / 7); ++row) {
	text += '<tr>'
	for (var col = 1; col <= 7; ++col) {
	if (digit > lastDate)
	break
	if (curCell < firstDay) {
	text += '<TD></TD>';
	curCell++
	} else {
	if (digit == date) { // current cell represent today's date
	text += '<TD align="center" class="calendarBody" style="border:1px solid #ee5555">'// HEIGHT=' + cellHeight// + ' style="border:1px solid #ee5555">'
	//text += '<FONT COLOR="' + todayColor + '" style="font-size:13px; font-weight:bold">'
	text += digit
	//text += '</FONT><BR>'
	//text += '<FONT COLOR="' + timeColor + /*'" SIZE=2>'*/ ' style="font-size:11px;font-weight:bold"'
	//text += '<CENTER>' + getTime() + '</CENTER>'
	//text += getTime()
	//text += '</FONT>'
	text += '</TD>'
	}else
		text += '<TD class="calendarBody" align="center">' + digit + '</TD>'
	digit++
	}
	}
	text += '</TR>'
	}
	
	// close all basic table tags
	text += '</TABLE></div>'
	//text += '</CENTER>'
	
	// print accumulative HTML string
	document.write(text) 
}
