var ENGLISH  = 0;
var FRANCAIS = 1;

var eCalendar;
function CCalendar(p_sParent, p_calendarID, p_objDate){
	var m_arDays;
	var m_arMonths;

	var m_objDate;
	var length;
	var m_Month;
	var m_Date;
	var m_Day;
	var m_Year;
	var m_FirstDay;
	var m_ePrev;
	var m_eNext;
	var m_NextImg;
	var m_PreviousImg;
	var m_nLanguage;
	var m_eCalendar;

	this.m_NextImg = "";
	this.m_PreviousImg = "";

	this.m_arDays		= new Array();
	this.m_arMonths		= new Array();
	this.m_arDays[ENGLISH]	= new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
	this.m_arDays[FRANCAIS]	= new Array('Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi');
	this.m_arMonths[ENGLISH]	= new Array('01','02','03','04','05','06','07','08','09','10','11','12');
	this.m_arMonths[FRANCAIS]	= new Array('01','02','03','04','05','06','07','08','09','10','11','12');

	//this.id = id;

	if (typeof CCalendar_prototype == 'undefined'){
		CCalendar_prototype = true;
		// Interface
		CCalendar.prototype.buildCalendar		= CCalendar_buildCalendar;
		CCalendar.prototype.getFormattedDate	= CCalendar_getFormattedDate;
		CCalendar.prototype.showCalendar		= CCalendar_showCalendar;
		CCalendar.prototype.attachEvent			= CCalendar_attachEvent;
		CCalendar.prototype.setLanguage			= CCalendar_setLanguage;
		CCalendar.prototype.loadShowsByMonth	= CCalendar_loadShowsByMonth;
		CCalendar.prototype.loadArtisticShow	= CCalendar_loadArtisticShow;
		CCalendar.prototype.loadArtistShows	    = CCalendar_loadArtistShows;
		CCalendar.prototype.loadCorporateShow	= CCalendar_loadCorporateShow;
		CCalendar.prototype.setMavigationImage	= CCalendar_setMavigationImage;
		CCalendar.prototype.refresh				= CCalendar_refresh;
		CCalendar.prototype.setOnClick			= CCalendar_setOnClick;
		CCalendar.prototype.dettachOnCkick		= CCalendar_dettachOnCkick;

		// fonctions internes
		CCalendar.prototype.changeMonth			= CCalendar_changeMonth;
		CCalendar.prototype.initInstance		= CCalendar_initInstance;
		CCalendar.prototype.attachChangeMonthEvent	= CCalendar_attachChangeMonthEvent;
		CCalendar.prototype.nextMonth			= CCalendar_nextMonth;
		CCalendar.prototype.previousMonth		= CCalendar_previousMonth;
		CCalendar.prototype.getLength			= CCalendar_getLength;
	}

	// Initialisation des données membres
	this.initInstance(this, p_objDate);

	this.m_nLanguage = FRANCAIS;

	var innerHTML = this.buildCalendar(p_calendarID);

	this.m_defParent = document.getElementById(p_sParent);
	this.m_defParent.innerHTML = innerHTML;

	this.m_eCalendar = document.getElementById(p_calendarID);
	this.m_eCalendar.style.visibility = "visible";

	this.attachChangeMonthEvent();
	this.loadShowsByMonth();

	var eDays = this.m_eCalendar.getElementsByTagName("A");
	for (var i = 0; i < eDays.length; i++) {
		eDays[i]._calendar = this;
		eDays[i].onclick = test; //CCalendar_loadShowsByDay;
	}
}

function CCalendar_setOnClick(p_sDay, p_iArtistID){
	if (p_iArtistID == undefined)
		p_iArtistID = "";
	var eDayTD = document.getElementById("td_day_" + p_sDay);
	//var p_month = document.getElementById("dMonth");
	//var p_year = document.getElementById("dYear");

	var eDayA = document.getElementById("day_" + p_sDay);
	if ((eDayA != undefined) && (eDayA != null)){
		//Il existe déja ==> On ne fait rien
	}else{
		eDayA = document.createElement("A");
		if ((eDayTD != undefined) && (eDayTD != null)){
			sInnerHTML = "<a id=\"day_" + p_sDay + "\" class=\"calendar_day_value\" target=\"content_frame\" href=\"evennement.php?day="+p_sDay+"&year="+this.m_Year+"&month="+(this.m_Month+1)+"&artistID="+ p_iArtistID + "\">" + p_sDay + "</a>"
			//sInnerHTML = "<a id=\"day_" + p_sDay + "\" class=\"calendar_day_value\" target=\"content_frame\" href=\"evennement.php?day="+p_sDay+"&year="+this.m_Year+"&month="+(this.m_Month+1)+"\">" + p_sDay + "</a>"
			eDayTD.innerHTML = sInnerHTML;
		}
	}
}

function CCalendar_dettachOnCkick(){

	for (i=0; i < 31; i++){
		var eDayTD = document.getElementById("td_day_" + (i+1) );
		var eDayA = document.getElementById("day_" + (i+1) );
		if ((eDayTD != undefined) && (eDayTD != null)){
			if ((eDayA != undefined) && (eDayA != null)){
				//eDayTD.innerHTML = "<td id=\"td_day_" + (i+1) + "\">" + (i+1) + "TEST" + "</td>";
				eDayTD.innerHTML = (i+1);
			}
		}
	}
}

function CCalendar_attachChangeMonthEvent(){
	this.m_ePrev = document.getElementById("nav_previous");
	this.m_ePrev.onclick = this.previousMonth;
	this.m_ePrev._calendar = this;

	this.m_eNext = document.getElementById("nav_next");
	this.m_eNext.onclick = this.nextMonth;
	this.m_eNext._calendar = this;
}

function CCalendar_buildCalendar(p_calendarID){
	if ((this.m_NextImg == "") || (this.m_PreviousImg == "")){
		sPrevious = "<div id=\"nav_previous\">&lt;</div>";
		sNext = "<div id=\"nav_next\">&gt;</div>";
	}else{
		sPrevious = "<img id=\"nav_previous\" src=\"" + this.m_PreviousImg + "\" />";
		sNext = "<img id=\"nav_next\" src=\"" + this.m_NextImg + "\" />";
	}
	var sCalendar = "<div id=\"" + p_calendarID + "\"><table class=\"calendar_table\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">"

	sCalendar += "<tr><td>";

	sCalendar += "<table class=\"calendar_toolbar\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";
	sCalendar += "<tr>";

	sCalendar += "<td class=\"navig_moth\" colspan=\"2\">" + sNext + "</td>";
	sCalendar += "</tr><tr>";
	sCalendar += "<td style=\"width:30px; padding-top:3px;\"><div id=\"dMonth\" class=\"calendar_month_decription\">&nbsp;" + this.m_arMonths[this.m_nLanguage][this.m_Month] + "&nbsp;&middot;&nbsp;</div></td>";
	sCalendar += "<td><div id=\"dYear\" class=\"calendar_year_decription\">&nbsp;" + this.m_Year + "&nbsp;</div></td>";
	sCalendar += "</tr><tr>";
	sCalendar += "<td class=\"navig_moth_bottom\" colspan=\"2\">" + sPrevious + "</td>";
	sCalendar += "</tr>";
	sCalendar += "</table>";

	sCalendar += "</td>";
	sCalendar += "<td>";
	sCalendar += "<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";
	sCalendar += "<tr>";

	for(i=0; i<this.length; i++){
		sCalendar += "<td class=\"calendar_day_list\">" + this.m_arDays[this.m_nLanguage][(i + this.m_FirstDay) % 7].substring(0,1) + "</td>";
	}
	sCalendar += "</tr>";

 	sCalendar += "<tr class=\"calendar_day_tr\">";


	var i;
	for(i=0; i<this.length; i++){
		/*if(i == this.m_Day){
			sCalendar += "<td width=\"25\"><a class=\"calendar_day_value\" href=\"\">" + (i + 1) + "</a></td>";
		}else */if (i > this.length){
			sCalendar += "<td>&nbsp;</td>";
		}else {
			sCalendar += "<td id=\"td_day_" + (i + 1) + "\">" + (i + 1) + "</td>";
			//<a id=\"day_" + (i + 1) + "\" class=\"calendar_day_value\" href=\"#\">" + (i + 1) + "</a>
		}
	}
	for(j=i; j<31; j++){
		sCalendar += "<td>&nbsp;</td>";
	}


	sCalendar += "</tr></table>";

	sCalendar += "</td></tr>";


	sCalendar += "</table></div>";

	return sCalendar;
}

function test(){
	alert("TEST");
}


function teste(){
	alert("TEST2");
}
function CCalendar_getFormattedDate(){
	return days[this.m_Day] + ', ' + months[this.m_Month] + ' ' + this.m_Date + ', ' + this.m_Year;
	//return this.month + '/' + this.date + '/' + this.year;
}

function CCalendar_getLength(p_objThis){
	switch(p_objThis.m_Month){
		case 1:
			if((p_objThis.m_objDate.getFullYear()%4==0&&p_objThis.m_objDate.getFullYear()%100!=0)||p_objThis.m_objDate.getFullYear()%400==0)
				return 29;
			else
				return 28;
		case 3:
			return 30;
		case 5:
			return 30;
		case 8:
			return 30;
		case 10:
			return 30
		default:
			return 31;
	}
}

function CCalendar_nextMonth(event){
	if ((!event) && (window.event))
		event = window.event;

	if (event){
		var eTarget = (event.target) ? event.target : event.srcElement;

		if (eTarget){
			CCalendar_changeMonth(eTarget._calendar, 1);
		}
	}
}

function CCalendar_previousMonth(event){
	if ((!event) && (window.event))
		event = window.event;

	if (event){
		var eTarget = (event.target) ? event.target : event.srcElement;

		if (eTarget){
			CCalendar_changeMonth(eTarget._calendar, -1);
		}
	}
}

function CCalendar_attachEvent(p_eEvent, p_sDayID){
}

function CCalendar_showCalendar(){
	if (this.m_defParent){
		this.m_eCalendar.style.visibility = "visible";
	}
}

function CCalendar_setLanguage(p_nLanguage){
	if ((p_nLanguage = ENGLISH) || (p_nLanguage = FRANCAIS))
		this.m_nLanguage = p_nLanguage
	else
		this.m_nLanguage = ENGLISH;
}

function CCalendar_refresh(){
	this.m_defParent.innerHTML = this.buildCalendar();
	this.m_ePrev = document.getElementById("nav_previous");
	this.m_ePrev.onclick = this.previousMonth;
	this.m_ePrev._calendar = this;

	this.m_eNext = document.getElementById("nav_next");
	this.m_eNext.onclick = this.nextMonth;
	this.m_eNext._calendar = this;
	this.loadShowsByMonth();
}

function CCalendar_changeMonth(p_objThis, p_nOffset){

	if (p_objThis.m_objDate.getMonth() != p_objThis.m_Month )
		p_objThis.m_objDate.setMonth(p_objThis.m_Month);

	p_objThis.m_objDate.setMonth(p_objThis.m_objDate.getMonth() + p_nOffset);
	p_objThis.m_Month	= p_objThis.m_objDate.getMonth();
	p_objThis.m_Date	= p_objThis.m_objDate.getDate();
	p_objThis.m_Day		= p_objThis.m_objDate.getDay();
	p_objThis.m_Year	= p_objThis.m_objDate.getFullYear();
	p_objThis.length	= p_objThis.getLength(p_objThis);

	p_objThis.m_objDate.setDate(1);
	p_objThis.m_FirstDay = p_objThis.m_objDate.getDay();
	p_objThis.m_objDate.setDate(p_objThis.m_Day);

	p_objThis.m_defParent.innerHTML = p_objThis.buildCalendar();
	p_objThis.m_ePrev = document.getElementById("nav_previous");
	p_objThis.m_ePrev.onclick = p_objThis.previousMonth;
	p_objThis.m_ePrev._calendar = p_objThis;

	p_objThis.m_eNext = document.getElementById("nav_next");
	p_objThis.m_eNext.onclick = p_objThis.nextMonth;
	p_objThis.m_eNext._calendar = p_objThis;
	p_objThis.loadShowsByMonth();
}

function CCalendar_initInstance(p_objThis, p_objDate){
	p_objThis.m_objDate = p_objDate;	// new Date();

	p_objThis.m_Month	= p_objThis.m_objDate.getMonth();
	p_objThis.m_Date	= p_objThis.m_objDate.getDate();
	p_objThis.m_Day		= p_objThis.m_objDate.getDay();
	p_objThis.m_Year	= p_objThis.m_objDate.getFullYear();
	p_objThis.length	= p_objThis.getLength(p_objThis);

	p_objThis.m_objDate.setDate(1);
	p_objThis.m_FirstDay = p_objThis.m_objDate.getDay();
	p_objThis.m_objDate.setDate(p_objThis.m_Day);
}

function CCalendar_setMavigationImage(p_Previous, p_sNext){
	if ((p_Previous != "") && (p_sNext != "")){
		this.m_NextImg		= p_sNext;
		this.m_PreviousImg	= p_Previous;
		var eImg = this.m_eCalendar.getElementsByTagName("IMG");
		if (eImg.length == 2){
			eImg[0].src.replace(this.m_NextImg);
			eImg[1].src.replace(this.m_PreviousImg);
		}else{
			eNext = "<img id=\"nav_previous\" src=\"" + this.m_PreviousImg + "\" />";
			document.getElementById("nav_previous").parentNode.innerHTML = eNext;
			eNext = "<img id=\"nav_next\" src=\"" + this.m_NextImg + "\" />";
			document.getElementById("nav_next").parentNode.innerHTML = eNext;
			this.attachChangeMonthEvent();
		}
	}
}

function CCalendar_loadShowsByDay(event){
	if ((!event) && (window.event))
		event = window.event;

	if (event){
		var eTarget = (event.target) ? event.target : event.srcElement;

		if (eTarget){
			alert(eTarget.id);//_calendar
		}
	}

	eCalendar = document.getElementById("calendar");

	arArtist = eCalendar.getElementsByTagName("input");

	var arParam = new Array();
	arParam[0] = new Array(); arParam[0]["param"] = "Year";		arParam[0]["value"] = "" + this.m_Year;
	var nMonth = Math.round (this.m_Month) + 1;
	if (nMonth < 10)
		sMonth = "0" + nMonth;
	else
		sMonth = nMonth;
	arParam[1] = new Array(); arParam[1]["param"] = "Month";	arParam[1]["value"] = "" + nMonth;

	var nDay = Math.round (this.m_Day) + 1;
	if (nDay < 10)
		sDay = "0" + nDay;
	else
		sDay = nDay;
	arParam[2] = new Array(); arParam[2]["param"] = "Day";	arParam[2]["value"] = "" + sDay;

	alert(nMonth);
	var objArchive = new CArchive("show_by_day.php", "GET", "", "", "", "", "OnResponseDay", arParam);
	objArchive.query();
}

function CCalendar_loadShowsByMonth(){
	//Charge tous les spectacles du mois
	eCalendar = document.getElementById("calendar");

	arArtist = eCalendar.getElementsByTagName("input");

	var arParam = new Array();
	arParam[0] = new Array(); arParam[0]["param"] = "Year";		arParam[0]["value"] = "" + this.m_Year;
	var nMonth = Math.round (this.m_Month) + 1;
	if (nMonth < 10)
		sMonth = "0" + nMonth;
	else
		sMonth = nMonth;
	arParam[1] = new Array(); arParam[1]["param"] = "Month";	arParam[1]["value"] = "" + sMonth;

	var objArchive = new CArchive("show_by_month.php", "GET", "", "", "", "", "OnResponseMonth", arParam);
	objArchive.query();
}

function CCalendar_loadArtisticShow(){
	eCalendar = document.getElementById("calendar");

	arArtist = eCalendar.getElementsByTagName("input");

	var arParam = new Array();
	arParam[0] = new Array(); arParam[0]["param"] = "Year";		arParam[0]["value"] = "" + this.m_Year;
	var nMonth = Math.round (this.m_Month) + 1;
	if (nMonth < 10)
		sMonth = "0" + nMonth;
	else
		sMonth = nMonth;
	arParam[1] = new Array(); arParam[1]["param"] = "Month";	arParam[1]["value"] = "" + sMonth;

	var objArchive = new CArchive("artistic_show.php", "GET", "", "", "", "", "OnResponseMonth", arParam);
	objArchive.query();
}

function CCalendar_loadCorporateShow(){
	eCalendar = document.getElementById("calendar");

	arArtist = eCalendar.getElementsByTagName("input");

	var arParam = new Array();
	arParam[0] = new Array(); arParam[0]["param"] = "Year";		arParam[0]["value"] = "" + this.m_Year;
	var nMonth = Math.round (this.m_Month) + 1;
	if (nMonth < 10)
		sMonth = "0" + nMonth;
	else
		sMonth = nMonth;
	arParam[1] = new Array(); arParam[1]["param"] = "Month";	arParam[1]["value"] = "" + sMonth;

	var objArchive = new CArchive("corporate_show.php", "GET", "", "", "", "", "OnResponseMonth", arParam);
	objArchive.query();
}

function CCalendar_loadArtistShows(artistId){

	eCalendar = document.getElementById("calendar");

	arArtist = eCalendar.getElementsByTagName("input");

	var arParam = new Array();
	arParam[0] = new Array(); arParam[0]["param"] = "Year";		arParam[0]["value"] = "" + this.m_Year;
	var nMonth = Math.round (this.m_Month) + 1;
	if (nMonth < 10)
		sMonth = "0" + nMonth;
	else
		sMonth = nMonth;
	arParam[1] = new Array(); arParam[1]["param"] = "Month";	arParam[1]["value"] = "" + sMonth;
	arParam[2] = new Array(); arParam[2]["param"] = "ArtistId";	arParam[2]["value"] = "" + artistId;

	var objArchive = new CArchive("corporate_show.php", "GET", "", "", "", "", "OnResponseMonth", arParam);
	objArchive.query();
}