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) {
	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 ar[month]
}

function getMonthName(month) {
	var ar = new Array(12)
	ar[0] = "Gennaio"
	ar[1] = "Febbraio"
	ar[2] = "Marzo"
	ar[3] = "Aprile"
	ar[4] = "Maggio"
	ar[5] = "Giugno"
	ar[6] = "Luglio"
	ar[7] = "Agosto"
	ar[8] = "Settembre"
	ar[9] = "Ottobre"
	ar[10] = "Novembre"
	ar[11] = "Dicembre"
	return ar[month]
}
function getDayName(day) {
	var weekDay = new Array(7)
	weekDay[0] = "Domenica"
	weekDay[1] = "Lunedì"
	weekDay[2] = "Martedì"
	weekDay[3] = "Mercoledì"
	weekDay[4] = "Giovedì"
	weekDay[5] = "Venerdì"
	weekDay[6] = "Sabato"
	return weekDay[day]
}

function writeCalMonthYearName() {
	var now = new Date()
	var year = now.getFullYear()
	var month = now.getMonth()
	var date = now.getDate()
	monthName = getMonthName(month)
	document.write (monthName + ' ' + year)
	}


function setCal() {
	var now = new Date()
	var year = now.getFullYear()
	var month = now.getMonth()
	var monthName = getMonthName(month)
	var date = now.getDate()
	now = null
	var firstDayInstance = new Date(year, month, 1)
	var firstDay = firstDayInstance.getDay()
	firstDayInstance = null
	var days = getDays(month, year)
	drawCal(firstDay + 1, days, date, monthName, year, month, 1)

}



function drawCal(firstDay, lastDate, date, monthName, year, month, bCurr) {

	// create array of abbreviated day names
	var weekDay = new Array(7)
	weekDay[0] = "D"
	weekDay[1] = "L"
	weekDay[2] = "M"
	weekDay[3] = "M"
	weekDay[4] = "G"
	weekDay[5] = "V"
	weekDay[6] = "S"
	// create basic table structure
	var text = ""
	text += '<table width="100%" bgcolor=#000000 style="font-family: sans-serif,Verdana, Avant Garde, Helvetica, Arial; font-size:9px; color:#ffffff" cellspacing=1 cellpadding=1>'
	// create first row of table to set column width and specify week day
	text += '<tr>'
	for (var dayNum = 0; dayNum < 7; ++dayNum) {
		text += '<td bgcolor="#808080" align="middle"><span style="font-family: sans-serif,Verdana, Avant Garde, Helvetica, Arial; font-size: 9px; color:white;">' + weekDay[dayNum] + '</span></td>' 
	}
	text += '</tr>'
	var digit = 1
	var curCell = 1
	var now = new Date()
	var month = now.getMonth()
	if (bCurr==0){ 
		month -= 1
		if (month==-1){
			month=11
			year-=1
		}
	}

	if (bCurr==2){ 
		month += 1
		if (month==12){
			month=0
		}
	}
	if (bCurr==3){ 
		month += 2
		if (month==12){
			month=0
		}
		if (month==13){
			month=1
		}
	}
	for (var row = 1; row <= Math.ceil((lastDate + firstDay - 1) / 7); ++row) {
		text += '<tr>'
		for (var col = 1; col <= 7; ++col) {
			if (col==1)
				var fow=digit
			if (digit > lastDate)
				break
			if (curCell < firstDay) {
				text += '<td></td>';
				curCell++
			} else {
				if (digit == date && bCurr == 1) { // current cell represent today's date
					text += '<td align="middle" bgcolor="#ff9900">'
					text += '&nbsp;<font color=#000000>'+digit+'</fpnt>&nbsp;</td>'
				} else
					text += '<td align="middle" bgcolor="#404040">&nbsp;' + digit + '&nbsp;</td>'
				digit++
			}
		}

		text += '</tr>'
	}

	// close all basic table tags
	text += '</table>'

	// print accumulative HTML string
	document.write(text) 
}