﻿// WARNING
// This script require prototype.js and scriptaculous


//  DECLARE AND INITIALIZE VARIABLES

var day_of_week = new Array('Dim','Lun','Mar','Mer','Jeu','Ven','Sam');
var month_of_year = new Array('Janvier','F&eacute;vrier','Mars','Avril','Mai','Juin','Juillet','Ao&ucirc;t','Septembre','Octobre','Novembre','D&eacute;cembre');

// TODAY
var oToday = new Date();
var nowday = oToday.getDate();
var nowmonth = oToday.getMonth();
var nowyear = oToday.getYear();
if(nowyear>99 && nowyear<1593) nowyear = nowyear-100+2000;

var Calendar = new Date();
var rqyear = Calendar.getYear();	    // Returns year
if(rqyear>99 && rqyear<1593) rqyear = rqyear-100+2000; // trick for FF & Safari
var rqmonth = Calendar.getMonth();    // Returns month (0-11)
var rqtoday = Calendar.getDate();    // Returns day (1-31)
var rqweekday = Calendar.getDay();    // Returns day (1-31)

var DAYS_OF_WEEK = 7;    // "constant" for number of days in a week
var DAYS_OF_MONTH = 31;    // "constant" for number of days in a month
var cal;    // Used for printing


// AJAX for events
// the ajax folder must be in the same folder than the file (html for ex) from where this js script is called
function getEvents(year,month,day,cat)
{
	var url = 'ajax/ajax_getevents.php?year='+year+'&month='+month+'&day='+day+'&cat='+encodeURIComponent(cat);
	o_options = new Object();
	o_options = {method: 'get',onComplete:showEvents};
	var laRequete = new Ajax.Request(url,o_options); 
	function showEvents(requete)
	{
		$('calendar_events').hide();
		$('calendar_events').update();
		var x = requete.responseXML.getElementsByTagName('event');
		var newEl = document.createElement('div');
		
		for(var i=0; i<x.length; i++)
		{
			var elem = document.createTextNode(x[i].childNodes[0].firstChild.nodeValue);
			var br = document.createElement('br');
			newEl.appendChild(elem);
			newEl.appendChild(br);
		}
		//alert(newE1.innerHTML);
		document.getElementById('calendar_events').appendChild(newEl);
		Effect.BlindDown('calendar_events', { duration: 0.2, delay: 0.5 });
	}
}


function nbEvents(year,month,day,cat)
{
	var nb_events;
	
	var url = 'ajax/ajax_nbevents.php?year='+year+'&month='+month+'&day='+day+'&cat='+encodeURIComponent(cat);
	o_options = new Object();
	o_options = {asynchronous: false,method: 'get',onComplete:showNbEvents};
	var laRequete = new Ajax.Request(url,o_options); 
	function showNbEvents(requete)
	{
		nb_events = requete.responseText;
	}
	return nb_events;
}


function nextMonth(cat)
{
	if(rqmonth<11)
		rqmonth++;
	else {
		rqmonth=0;
		rqyear++;
	}
	displayCalendar(cat);
}

function prevMonth(cat)
{
	if(rqmonth>0)
		rqmonth--;
	else {
		rqmonth=11;
		rqyear--;
	}
	displayCalendar(cat);
}


// affiche le calendrier avec les événement de la catégorie cat
function displayCalendar(cat)
{
	setCalendar(cat);
	//alert(cal);
	document.getElementById('calendar').innerHTML = cal;
	//document.getElementById('date').innerHTML = nowday +' '+ month_of_year[nowmonth] +' '+ nowyear;
}

function setCalendar(cat)
{
	Calendar.setDate(1);    // Start the calendar date at '1'
	Calendar.setMonth(rqmonth);    // Start the calendar month at now
	Calendar.setYear(rqyear);
	
	/* VARIABLES FOR FORMATTING */
	var TR_start = '<tr>';
	var TR_end = '</tr>';
	var highlight_start = '<span class="today">';
	var highlight_end   = '</span>';
	var TD_start = '<td width="30">';
	var TD_end = '</td>';
	var TD_empty = '<td class="empty">';
	var TD_date = '<td class="date">';
	var TD_day = '<td class="day">';
	var TD_event = '<td class="event" onclick="getEvents(year,month,day,\''+cat+'\')">';
	
	/* BEGIN CODE FOR CALENDAR
	NOTE: You can format the 'BORDER', 'BGCOLOR', 'CELLPADDING', 'BORDERCOLOR'
	tags to customize your calendar's look.*/
	
	cal =  '<div class="month">';
	cal += '<a href="#" class="btnPrev" onclick="prevMonth(\''+cat+'\')"><img src="images/previous.png" /></a>' + month_of_year[rqmonth]  + '   ' + rqyear + '<a href="#" class="btnNext" onclick="nextMonth(\''+cat+'\')"><img src="images/next.png" /></a>';
	cal += '</div>';	
	cal += '<div class="calendar">';
	cal += '<div class="cal_top_left"></div>';
	cal += '<div class="cal_bottom_left"></div>';
	cal += '<div class="cal_top_right"></div>';
	cal += '<div class="cal_bottom_right"></div>';
	cal += '<table border="0" cellspacing="0" cellpadding="0">' + TR_start;
	cal += TR_start;
	
	//   DO NOT EDIT BELOW THIS POINT  //
	
	// boucle pour chaque jour de la semaine (commence le lundi)
	
	
	for(index=1; index < DAYS_OF_WEEK; index++)
	{
		// BOLD TODAY'S DAY OF WEEK <--------------------------- A REVOIR
		if(rqweekday == index)
			cal += TD_day + '<b>' + day_of_week[index] + '</b>' + TD_end;
		// PRINTS DAY
		else
			cal += TD_day + day_of_week[index] + TD_end;
	}
	// fini le dimanche
	if(rqweekday == 0)
		cal += TD_day + '<b>' + day_of_week[0] + '</b>' + TD_end;
	// PRINTS DAY
	else
		cal += TD_day + day_of_week[0] + TD_end;
			
			
			
		
	cal += TR_end;
	cal += TR_start;
	
	
	
	
		
	// Bouche les trous des jours avant le mois
	if(Calendar.getDay()==0)
	{
		for(var i=0; i<6; i++)
			cal += TD_empty + '  ' + TD_end;
	} else {
		for(index=1; index < Calendar.getDay(); index++)
			cal += TD_empty + '  ' + TD_end;
	}
	
		
	// LOOPS FOR EACH DAY IN CALENDAR
	for(index=0; index < DAYS_OF_MONTH; index++)
	{
		if( Calendar.getDate() > index )
		{
			// RETURNS THE NEXT DAY TO PRINT
			week_day=Calendar.getDay();
			
			// START NEW ROW FOR FIRST DAY OF WEEK
			if(week_day == 1)
				cal += TR_start;
	
			if(week_day != DAYS_OF_WEEK)
			{
		
				// SET VARIABLE INSIDE LOOP FOR INCREMENTING PURPOSES
				var day  = Calendar.getDate();
		
				// ARE THERE EVENTS THIS DAY ?
				if(nbEvents(rqyear,rqmonth+1,day,cat)>0)
				{
					var reg = /(year)/g;
					var tmp_TD_event = TD_event.replace(reg,rqyear);
					reg = /(month)/g;
					tmp_TD_event = tmp_TD_event.replace(reg,rqmonth+1);
					reg = /(day)/g;
					tmp_TD_event = tmp_TD_event.replace(reg,day);
					cal += tmp_TD_event;
				}
				else
					cal += TD_date;
		
				// HIGHLIGHT TODAY'S DATE
				if( nowday==day && nowyear==rqyear && nowmonth==rqmonth)
				{
					cal += highlight_start + day + highlight_end + TD_end;
				}
		
				// PRINTS DAY
				else
					cal += day + TD_end;
			}
	
			// END ROW FOR LAST DAY OF WEEK
			//if(week_day == DAYS_OF_WEEK)
			if(week_day == 0)
				cal += TR_end;
		}
	
		// INCREMENTS UNTIL END OF THE MONTH
		Calendar.setDate(Calendar.getDate()+1);
	
	}// end for loop
	
	if(week_day != 0)
		cal += TR_end;
	
	
	cal += '</table></div><div style="display: none" id="calendar_events"></div><div class="footer"></div>';
}

