//************************************************************************
//Genere le calendrier perpetuel
//*************************************************************************

//variables globales**********************************************

var DaysList;
var MonthsList;
var MonthLength = new Array(0,31,29,31,30,31,30,31,31,30,31,30,31);

if(lang == 'fr'){
	DaysList = new Array("","Lun", "Mar", "Mer", "Jeu", "Ven", "Sam","Dim" );
	MonthsList = new Array("","Jan", "F&eacute;v", "Mars", "Avr", "Mai", "Juin", "Juil", "Ao&ucirc;t", "Sept", "Oct", "Nov", "D&eacute;c");
}
if(lang == 'en'){
	DaysList = new Array("","Mon", "Tue", "Wed", "Thu", "Fri", "Sat","Sun" );
	MonthsList = new Array("","Jan", "Feb", "Mar", "Apr", "May", "June", "July", "Aug", "Sept", "Oct", "Nov", "Dec");
}

var QueryDate = 0; /* Jour demande (date)*/
var QueryMonth = 0 /* Mois demande*/
var QueryYear = 0; /* Annee demandee*/
var QueryDay = 0; /* Jour de la semaine du jour demande, inconnu*/
var FirstDay = 0; /* Jour de la semaine du 1er jour du mois*/
var WeekRef = 0; /* Numerotation des semaines*/
var WeekOne = 0; /* Numerotation des semaines*/
var currentMonth = 0;
var currentYear = 0;

function changeCal(y,m,j,ou,quoi){
	
	var conte = DisplaySchedule(y,m,j,ou,quoi);
	var finalconte
	if(ou == 'cal'){
		finalconte = '<table id="'+ou+'" class="txtcal">' + conte + '</table>';
	}else{
		finalconte = '<table id="'+ou+'">' + conte + '</table>';
		
	}
	 

	document.getElementById(quoi).innerHTML = finalconte;
	var urlPage = String(document.location);
	if((urlPage.indexOf("saison_calendrier.php") != -1)||(urlPage.indexOf("troupe_page-acteur") != -1)){
		montreDates();
	}
	
}



function DisplaySchedule(y,m,jj,ou,quoi){

/*alert(y+","+m+","+jj+","+ou+","+quoi)*/
	QueryDate = jj;
	QueryMonth = m;
	QueryYear = y;
	MonthLength[2] = CheckBisex(QueryYear);
	
	QueryDay = DefDateDay(QueryYear,QueryMonth,QueryDate);
	WeekRef = DefWeekNum(QueryDate);
	WeekOne = DefWeekNum(1);
	YearPlus = QueryYear;
	YearLess = QueryYear;
	MonthPlus = eval(QueryMonth) + 1;
	MonthLess = eval(QueryMonth) - 1;

	if(QueryMonth == 12){
		MonthPlus = 1;
		YearPlus = eval(YearPlus) + 1;
	}

	if(QueryMonth == 1){
		MonthLess = 12;
		YearLess = eval(YearLess) - 1;
	}


	HTMLCode = '';
//entete des noms des jours
	HTMLCode += '<tr><td colspan="15" class="mois">';
	if(ou != 'calannuel'){//defilement des mois : arriere
		HTMLCode += '<span style="cursor:pointer" onclick="changeCal(' + YearLess + ',' + MonthLess + ',' + jj + ',\''+ou+'\',\''+quoi+'\');montreLiens();">&lt;</span>&nbsp;&nbsp;&nbsp;&nbsp;';
	}/*else{//defilement des mois : arriere
		HTMLCode += '<span style="cursor:pointer" onclick="changeCal(' + YearLess + ',' + MonthLess + ',' + jj + ',\''+ou+'\',\''+quoi+'\');montreDates();">&lt;</span>&nbsp;&nbsp;&nbsp;&nbsp;';
	}*/

	HTMLCode +=  MonthsList[QueryMonth] + ' ' + QueryYear;

	if(ou != 'calannuel'){//defilement des mois : avant
		HTMLCode += '&nbsp;&nbsp;&nbsp;&nbsp;<span style="cursor:pointer" onclick="changeCal(' + YearPlus + ',' + MonthPlus + ',' + jj + ',\''+ou+'\',\''+quoi+'\');montreLiens();">&gt;</span>';
	}/*else{//defilement des mois : avant
		HTMLCode += '&nbsp;&nbsp;&nbsp;&nbsp;<span style="cursor:pointer" onclick="changeCal(' + YearPlus + ',' + MonthPlus + ',' + jj + ',\''+ou+'\',\''+quoi+'\');montreDates();">&gt;</span>';
	}*/

	HTMLCode += '</td></tr><tr>';
	a = 0;
	for (s=1; s<8; s++){
		dd = DaysList[s].substr(0,1)
		HTMLCode += '<td colspan="2" class="jours">' + dd + '</td>'; 
	}

//affichage des numeros de jours et semaines*****************
	for (i=(1-DefDateDay(QueryYear,QueryMonth,1)); i<MonthLength[QueryMonth]; i++){
		HTMLCode += '<tr>';

//jours**************************
		for (j=1; j<8; j++){
			var jour
			if(QueryMonth < 10){
				if((i+j) < 10){
					jour = QueryYear + '-0' + QueryMonth + '-0' + (i+j);
					
				}else{
					jour = QueryYear + '-0' + QueryMonth + '-' + (i+j);
				}
			}else{
				if((i+j) < 10){
					jour = QueryYear + '-' + QueryMonth + '-0' + (i+j);
				}else{
					jour = QueryYear + '-' + QueryMonth + '-' + (i+j);					
				}
			}
			HTMLCode += '<td class="date">&nbsp;</td>';
			if (((i+j) <= 0)||((i+j) > MonthLength[QueryMonth])) { 
				HTMLCode += '<td class="date">&nbsp;</td>'; 

			}else if ((i+j) > MonthLength[QueryMonth]) { 
				HTMLCode += '<td class="date">&nbsp;</td>'; 
			}else {
				if(((i+j) == jj)&&(QueryMonth == currentMonth)&&(QueryYear == currentYear)){
					HTMLCode += '<td class="dateDuJour" id="d_'+jour+'">' + (i+j) +'</td>'; 
					
				}else{
					HTMLCode += '<td class="date" id="d_'+jour+'">' + (i+j) +'</td>'; 
					
				}

			}
		}
		
		HTMLCode += "</tr>";
		a++;
		i = i + 6;
	}
	return HTMLCode;
	}
//*****************************************************************



// Teste une annee pour determiner si elle est bissextile ou pas
function CheckBisex(yy){
	if ((yy % 100 != 0 && yy % 4 == 0) || (yy % 400 == 0)){ 
		return 29; 
	}else{ 
		return 28; 
	}
}
//*****************************************************************



// Renvoie le numero de la semaine correspondant a la date requise
function DefWeekNum(dd){
	numd = 0;
	numw = 0;
	for (n=1; n<QueryMonth; n++){
		numd += MonthLength[n];
	}
	numd = numd + dd - (9 - DefDateDay(QueryYear,1,1));
	numw = Math.floor(numd / 7) + 1;

	if (DefDateDay(QueryYear,1,1) == 1) { 
		numw++; 
	}
	return numw;
}
//*****************************************************************
// Renvoie le numero du jour de la semaine correspondant a la date requise 
function DefDateDay(yy,mm,dd){
	return Math.floor((Date2Days(yy,mm,dd)-2) % 7) + 1;
}
//*************************************************************************

// Transforme la date en nb de jours theoriques */
function Date2Days(yy,mm,dd){
	if (mm > 2){
		var bis = Math.floor(yy/4) - Math.floor(yy/100) + Math.floor(yy/400);
		var zy = Math.floor(yy * 365 + bis);
		var zm = (mm-1) * 31 - Math.floor(mm * 0.4 + 2.3);
		return (zy + zm + dd);
	}else{
		var bis = Math.floor((yy-1)/4) - Math.floor((yy-1)/100) + Math.floor((yy-1)/400);
		var zy = Math.floor(yy * 365 + bis);
		return (zy + (mm-1) * 31 + dd);
	}
}