Calendar = function(containerId, instanceName, daysSetFile, rubriqueId) {
	var html = '<table cellspacing="0" cellpadding="0">';
	var date = new Date();
	html += '<tr><td colspan="7" style="text-align:center;background-color:#AB80B5;color:white;height:20px"><b>AGENDA</b></td></tr>';
	html += '<tr><td><a href="javascript:' + instanceName + '.selectPreviousYear()"><b>&lt;</b></a></td><td colspan="5" style="text-align:center"></td><td style="text-align:right"><a href="javascript:' + instanceName + '.selectNextYear()"><b>&gt;</b></a></td></tr>';
	html += '<tr><td><a href="javascript:' + instanceName + '.selectPreviousMonth()"><b>&lt;</b></a></td><td colspan="5" style="text-align:center"></td><td style="text-align:right"><a href="javascript:' + instanceName + '.selectNextMonth()"><b>&gt;</b></a></td></tr>';
	html += '<tr><td style="text-align:center">lu</td><td style="text-align:center">ma</td><td style="text-align:center">me</td><td style="text-align:center">je</td><td style="text-align:center">ve</td><td style="text-align:center">sa</td><td style="text-align:center">di</td></tr>';
	for (var i = 0; i < 6; i++) {
		html += '<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>';
	}
	html += '</table>';
	document.getElementById(containerId).innerHTML = html;
	this.containerId = containerId;
	this.instanceName = instanceName;
	this.daysSetFile = daysSetFile;
	this.rubriqueId = rubriqueId;
	//this.setYear(date.getFullYear());
	//this.setMonth(date.getMonth() + 1);
	//this.setDays();
};
Calendar.prototype.setYear = function(year) {
	this.year = year;
	document.getElementById(this.containerId).firstChild.firstChild.childNodes[1].childNodes[1].innerHTML = year;
};
Calendar.prototype.setMonth = function(month) {
	this.month = month;
	document.getElementById(this.containerId).firstChild.firstChild.childNodes[2].childNodes[1].innerHTML = getMonthName(month).toUpperCase();
};
Calendar.prototype.setDays = function() {
	calendarUpdating = true;
	var date = new Date(this.year, this.month - 1, 1);
	var today = new Date();
	var day = date.getDay();
	day = day > 0 ? day - 1 : 6;
	var days;
	var element;
	var containerId = this.containerId;
	var instanceName = this.instanceName;
	var year = this.year;
	var month = this.month;
	var request = new XMLHttpRequest();
	request.onreadystatechange = function() {
		if (request.readyState == 4) {
			if (request.status == 200) {
				days = request.responseText.split(";");
				for (var i = 0; i < 42; i++) {
					date = new Date(year, month - 1, 1 - day + i);
					element = document.getElementById(containerId).firstChild.firstChild.childNodes[4 + parseInt(i / 7)].childNodes[i % 7];
					element.className = (date.getMonth() == month - 1) ? "innerMonth" : "outerMonth";
					element.innerHTML = date.getDate();
					for (var j = 0; j < days.length; j++) {
						var temp = days[j].split("-");
						if (temp[1] == date.getMonth() + 1 && temp[2] == date.getDate()) {
							element.innerHTML = "<a href=\"?annee=" + year + "&mois=" + month + "&date=" + days[j] + "\"><b>" + date.getDate() + "</b></a>";
							break;
						}
					}
				}
				calendarUpdating = false;
			}
		}
	};
	var dateDebut = new Date(this.year, this.month - 1, 1 - day);
	var dateFin = new Date(this.year, this.month - 1, 1 - day + 41);
	request.open("get", this.daysSetFile + "?rubriqueid=" + this.rubriqueId + "&datedebut=" + dateDebut.toISOString() + "&datefin=" + dateFin.toISOString(), true);
	request.send(null);
};
Calendar.prototype.selectPreviousYear = function() {
	if (calendarUpdating)
		return;
	this.setYear(this.year - 1);
	this.setDays();
};
Calendar.prototype.selectNextYear = function() {
	if (calendarUpdating)
		return;
	this.setYear(this.year + 1);
	this.setDays();
};
Calendar.prototype.selectPreviousMonth = function() {
	if (calendarUpdating)
		return;
	if (this.month == 1) {
		this.month = 12;
		this.year--;
		this.setYear(this.year);
	} else {
		this.month--;
	}
	this.setMonth(this.month);
	this.setDays();
};
Calendar.prototype.selectNextMonth = function() {
	if (calendarUpdating)
		return;
	if (this.month == 12) {
		this.month = 1;
		this.year++;
		this.setYear(this.year);
	} else {
		this.month++;
	}
	this.setMonth(this.month);
	this.setDays();
};
function getMonthName(month) {
	var a = new Array(
		"janvier",
		"février",
		"mars",
		"avril",
		"mai",
		"juin",
		"juillet",
		"août",
		"septembre",
		"octobre",
		"novembre",
		"décembre"
	);
	return a[month - 1];
}
Date.prototype.toISOString = function() {
	return this.getFullYear() + "-" + ((this.getMonth() + 1).toString().length == 1 ? "0" + (this.getMonth() + 1) : (this.getMonth() + 1)) + "-" + (this.getDate().toString().length == 1 ? "0" + this.getDate() : this.getDate());
};
var calendarUpdating = false;