function writeCalendar(m, d, y){
	// these are labels for the days of the week
	cal_days_labels = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
	// these are human-readable month name labels, in order
	cal_months_labels = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
	// these are the days of the week for each month, in order
	cal_days_in_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
	
	var baseURL
	baseURL = "/on_this_day/"

	today = new Date()
	if(y == undefined || y == ""){
		var y = today.getFullYear()
	}
	if(m == undefined || m == ""){
		var m = today.getMonth()
	}else{
		m = m - 1	
	}
	if(d == undefined || d == ""){
		var d = today.getDate()
	}
	thisDay = new Date(y, m, 1)	;
	
	var startingDay = thisDay.getDay();
	var monthLength = cal_days_in_month[m];
	if (m == 1) { // February only!
	  if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0){
		monthLength = 29;
	  }
	}
	var html = '<table  width="100%">';
	//write previous month
	if(m==0){
		html += '<tr><td><a href="' + baseURL + 'december"><<</a></td>';
	}else{
		html += '<tr><td><a href="' +  baseURL + cal_months_labels[m-1] + '"><<</a></td>';
	}
	//write this month
	html += '<td colspan="5" align="center"><a href="' +  baseURL + cal_months_labels[m] + '">' + cal_months_labels[m] + '</a></td>';
	//write next month
	if(m==11){
		html += '<td><a href="' + baseURL + 'january">>></a></td></tr>';
	}else{
		html += '<td><a href="' +  baseURL + cal_months_labels[m+1] + '">>></a></td></tr>';
	}
	//write this head
	html += '<tr><td>Su</td><td>Mo</td><td>Tu</td><td>We</td><td>Tr</td><td>Fr</td><td>Sa</td></tr>';
	//where do we start?
	var colCount = 0;
	if(startingDay != 0){
		html += '<tr><td colspan="' + (startingDay) + '">&nbsp;</td>';
		colCount = startingDay 
	}
	var i;
	for(i=1;i<monthLength;i++){
		if(colCount==0){html += '<tr>'}
		if(i != d){
			html += '<td><a href="' + baseURL + cal_months_labels[m] + '_' + i + '">' + i + '</a></td>'
		}else{
			html += '<td class="onTd"><strong><a href="' + baseURL + cal_months_labels[m] + '_' + i + '">' + i + '</a></strong></td>'
		}
		colCount ++;
		if(colCount == 7){
			html += '</tr>';
			colCount=0
		}
	}
	//clean up after loop
	if(colCount!=0){
		html += '<td colspan="' + (7 - colCount) + '">&nbsp;</td></tr>'
	}
	html += '</table>';
	document.write(html);
}

