var tab_jours = new Array("Lun", "Mar", "Mer", "Jeu", "Ven", "Sam", "Dim");
var tab_mois = new Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre");
var tab_long_mois = new Array(31,29,31,30,31,30,31,31,30,31,30,31);

function mois_avant(){
	if (mois_courant==0){
		mois_courant = 11;
		annee_courant -= 1;
	} 
	else{
		mois_courant -= 1;
	}
	afficher_mois(mois_courant,annee_courant);
}

function mois_apres(){
	if (mois_courant==11){
		mois_courant = 0;
		annee_courant += 1;
	} 
	else{
		mois_courant += 1;
	}
	afficher_mois(mois_courant,annee_courant);
}

function afficher_mois(mois,annee){
	
	str_calend  = '<table cellspacing="0" cellpadding="0" class="tab_general">' + "\n";
	str_calend += '	<tr>' + "\n";
	str_calend += '		<td class="cell_fleche"><a href="#" class="lien_mois" onclick="mois_avant(); return false;">&laquo;</a></td>' + "\n";
	str_calend += '		<td class="cell_mois">'+ tab_mois[mois] +' '+ annee +'</td>' + "\n";
	str_calend += '		<td class="cell_fleche"><a href="#" class="lien_mois" onclick="mois_apres(); return false;">&raquo;</a></td>' + "\n";
	str_calend += '	</tr>' + "\n";
	str_calend += '</table>' + "\n";
	
	str_calend += '<table cellspacing="0" cellpadding="0" class="tab_general">' + "\n";

	// Noms des jours
	str_calend += '	<tr>' + "\n";
	for (cpt=0; cpt<=6; cpt++) {
		str_calend += '		<th class="cell_nomjour">'+ tab_jours[cpt] +'</th>' + "\n";
	}
	str_calend += '	</tr>' + "\n";

	cpt_td_jour = 0;

	le_1er = new Date(annee,mois,1);	//-- la var le_1er correspond au 1/mois/annee --
	
	str_calend += '	<tr>' + "\n";
	/** on affiche ici des cellules vides de sorte que le premier jour que l'on affiche
	*** (le 1er) soit dans la case correspondant au bon jour de la semaine ***/
	/** la fonction getDay() retourne un entier de 0 à 6, 0 étant le dimanche, ce qui ne correspond pas au tableau que nous avons
	choisi pour stocker le nom des jours que l'on fait commencer au lundi (0) pour coller à l'affichage. On utilise donc la correspondance
	(getDay()+6) % 7 pour passer sur notre représentation. **/
	while (cpt_td_jour < (le_1er.getDay()+6) % 7 ){
		str_calend += '		<td class="cell_jour_vide"></td>' + "\n";
		cpt_td_jour ++;
	}
	
	/** on affiche alors tous les jours du mois. La case de départ est fixée par la boucle while précédente. **/
	for (cpt=1; cpt <= nb_jours_dans_mois(mois,annee); cpt++){
					
		cpt_td_jour ++;
		// si debut de ligne on affiche un tr sauf cas ou le 1er est un lundi car le début de le premiere ligne est déjà écrit
		if (cpt_td_jour % 7 == 1){
			str_calend += '	<tr>' + "\n";
		}
		
		str_calend += "<td class='cell_jour'><a href='#ancre_resa' class='cell_jour_a' onclick='maj_resa("+cpt+","+mois+","+annee+");'>"+cpt+"</a></td>";
		
		if (cpt_td_jour % 7 == 0){
			str_calend += '	</tr>' + "\n";
		}
			
	}	/** fin boucle affichage des jours **/
	
	/** on complète la table avec des cellules vide **/
	if (cpt_td_jour % 7 != 0) {
		while (cpt_td_jour % 7 != 0) {
			cpt_td_jour ++;
			str_calend += '		<td class="cell_jour_vide"></td>' + "\n";
		}
		if (cpt_td_jour % 7 == 0) {
			str_calend += '	</tr>' + "\n";
		}
	}
	
	
	str_calend += '	</tr>' + "\n";
	str_calend += '</table>' + "\n";
	
	document.getElementById('calend').innerHTML = str_calend;
}

function voir(){
	mois = document.getElementById('mois').value;
	annee = document.getElementById('annee').value;
	afficher_mois(mois,annee);
}

function nb_jours_dans_mois(mois,annee){
/** cette fonction retourne le nombre de jours du mois pour un mois et une annee donnée **/
	if (mois != 1){
		return tab_long_mois[mois];	
	}
	else{
		if (is_bissextile(annee)){
			return 29;
		}
		else{
			return 28;
		}
	}
}

function is_bissextile(annee){
	if ((annee % 100 != 0 && annee % 4 == 0) || (annee % 400 == 0)){ 
		return 1; 
	}
	else {
		return 0;
	}
}	/** fin fonction is_bissextile **/


function ouvrir_calend(id){	// id = l'id du champ à modifier
	id_champ = id;
	afficher_mois(mois_courant,annee_courant);
	document.getElementById('div_calend').style.display = "block";	/** div_calend = nom du div contenant tout le calendrier **/
	calend_hideSelectBoxes();
}

function fermer_calend(){
	document.getElementById('div_calend').style.display = "none";	/** div_calend = nom du div contenant tout le calendrier **/
	calend_showSelectBoxes();
}

function maj_resa(jour,mois,annee){
	mois = mois+1;
	if(jour<10){
		jour = "0"+jour;
	}
	if(mois<10){
		mois = "0"+mois;
	}

	document.getElementById(id_champ).value= jour+"/"+mois+"/"+annee;
	fermer_calend();
}


function calend_showSelectBoxes(){
	selects = document.getElementsByTagName("select");
	for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "visible";
	}
}

// ---------------------------------------------------

function calend_hideSelectBoxes(){
	selects = document.getElementsByTagName("select");
	for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "hidden";
	}
}

date_now = new Date();
var jour_courant = date_now.getDate();
var mois_courant = date_now.getMonth();
var annee_courant = date_now.getFullYear();
var id_champ = '';	// Cette variable sert a stocker l'id du champ a mettre a jour 
//afficher_mois(mois_courant,annee_courant);
