﻿function Calendar(table, url, dates)
{
	var self = this;
	this.prevMonth = function()
	{
		currentDate.setUTCMonth(currentDate.getUTCMonth() - 1);
		self.render();
	}
	this.nextMonth = function()
	{
		currentDate.setUTCMonth(currentDate.getUTCMonth() + 1);
		self.render();
	}
	table.rows[0].cells[0].firstChild.onclick = this.prevMonth;
	table.rows[0].cells[2].firstChild.onclick = this.nextMonth;
	var today = new Date(Math.floor((new Date()).valueOf() / 86400000) * 86400000);
	var currentDate;
	if (queryString["date"])
	{
		var date = queryString["date"].split(".");
		currentDate = new Date(Date.UTC(parseInt(date[0]), parseInt(date[1]) - 1, parseInt(date[2])));
	}
	else
		currentDate = new Date(today);
	currentDate.setUTCDate(1);
	this.render = function()
	{
		var month = currentDate.getUTCMonth();
		var firstDay = currentDate.getUTCDay();
		var cell = table.rows[0].cells[1];
		cell.innerHTML = MONTHS[currentDate.getUTCMonth()] + " " + currentDate.getUTCFullYear();
		for (var i = 2; i < 8; i++)
		{
			row = table.rows[i];
			for (var j = 0 ; j < 7; j++)
			{
				cell = row.cells[j];
				cell.innerHTML = "&nbsp;";
			}
		}
		for (var i = 0; i < 42; i++)
		{
			cell = table.rows[Math.floor(i / 7 + 2)].cells[i % 7];
			if (i >= firstDay && currentDate.getUTCMonth() == month)
			{
				if (currentDate.getTime() == today.getTime())
					cell.className = "today";
				else
					cell.className = "";
				if (dates.search(currentDate.valueOf()) == -1)
					cell.innerHTML = currentDate.getUTCDate();
				else
				{
					var a = document.createElement("A");
					a.href = url + "?date=" + currentDate.getFullYear() + "." + (currentDate.getMonth() + 1) + "." + currentDate.getDate();
					a.innerHTML = "&nbsp;" + currentDate.getUTCDate() + "&nbsp;";
					cell.appendChild(a);
				}
				currentDate.setUTCDate(currentDate.getUTCDate() + 1);
			}
		}
		currentDate.setUTCMonth(currentDate.getUTCMonth() - 1);
		currentDate.setUTCDate(1);
	}
	this.render();
}

