function showCalendar(element, year, month, startDate, endDate) {
	
	var currentMonth = document.createElement("table");
	Element.addClassName(currentMonth,'eventCalendar');
	var tableBody = document.createElement("tbody");
	
	var firstDayOfMonth = getFirstDayOfMonth(year, month);
	var lastDayOfMonth = getLastDayOfMonth(year, month);
	var dayCounter = 1;
	
	if(endDate < startDate) {
		endDate += lastDayOfMonth;
	}
	
	var headerRow = document.createElement("tr");
	headerRow.appendChild(createHeaderCell("S"));
	headerRow.appendChild(createHeaderCell("M"));
	headerRow.appendChild(createHeaderCell("T"));
	headerRow.appendChild(createHeaderCell("W"));
	headerRow.appendChild(createHeaderCell("T"));
	headerRow.appendChild(createHeaderCell("F"));
	headerRow.appendChild(createHeaderCell("S"));
	tableBody.appendChild(headerRow);
	
	while(keepGoing(dayCounter, lastDayOfMonth, endDate)) {
		var currentWeek = document.createElement("tr");
		for(var dayOfWeek = 0; dayOfWeek < 7 && keepGoing(dayCounter, lastDayOfMonth, endDate); dayOfWeek++) {
			var currentDay = document.createElement("td");
			if(dayOfWeek >= firstDayOfMonth) {
				if(dayCounter >= startDate && dayCounter <= endDate) {
					Element.addClassName(currentDay,'eventTakingPlace');
				}
				if(selectedDayIsToday(year, month, dayCounter)) {
					Element.addClassName(currentDay,'today');
				}
				var dateText = document.createTextNode(dayCounter);
				if(dayCounter > lastDayOfMonth && endDate > lastDayOfMonth) {
					var dateText = document.createTextNode(dayCounter - lastDayOfMonth);
				}
				currentDay.appendChild(dateText);
				dayCounter++;
				firstDayOfMonth = 0;
			}
			currentWeek.appendChild(currentDay);
		}
		tableBody.appendChild(currentWeek);
	}
	
	currentMonth.appendChild(tableBody);
	element.appendChild(currentMonth);
	
}

function keepGoing(currentDay, lastDayOfMonth, endDate) {
	return currentDay <= lastDayOfMonth || (endDate > lastDayOfMonth && currentDay <= endDate);
}

function getFirstDayOfMonth(year, month) {
	var firstDay = new Date(year, month, 1);
	return firstDay.getDay();
}

function getLastDayOfMonth(year, month) {
	return(new Date((new Date(year, month+1,1))-1)).getDate();
} 

function createHeaderCell(text) {
	var headerCell = document.createElement("th");
	headerCell.appendChild(document.createTextNode(text));
	return headerCell;
}

function selectedDayIsToday(year, month, day) {
	var today = new Date();
	return today.getFullYear() == year && today.getMonth() == month && today.getDate() == day;
}