var semaphore = 0;

//Losque la souris passe sur un element, on change la forme du pointeur de la souris et la couleur de fond 
function onOver(objet){
	objet.style.cursor = 'pointer';
	if(objet.id == "precedent" || objet.id == "suivant"){
		objet.className = "precedentSuivantOver";
		//objet.style.color = "#bc1318";
	}
	else{
		objet.className = "jourOver";
		//objet.style.backgroundColor = "#bc1318";
	}
	
}
//Lorsque la souris quite un element on remet la couleur originale
function onOut(objet,type){
	if(objet.id == "precedent" || objet.id == "suivant"){
		objet.className = "";
		//objet.style.color = "#424242";
	}
	else{
		objet.className = type;
		//objet.style.backgroundColor = "#66b739";
	}
}
//En fonction du mois en chiffre en revoie le mois en lettre
function texteMois(month){
	var texte = "";
	switch(month){
		case 0 : texte = "Janvier";break;
		case 1 : texte = "Fevrier";break;
		case 2 : texte = "Mars";break;
		case 3 : texte = "Avril";break;
		case 4 : texte = "Mai";break;
		case 5 : texte = "Juin";break;
		case 6 : texte = "Juillet";break;
		case 7 : texte = "Août";break;
		case 8 : texte = "Septembre";break;
		case 9 : texte = "Octobre";break;
		case 10 : texte = "Novembre";break;
		case 11 : texte = "Décembre";break;
	}
	return texte;
}
//Fonction appellé lorsqu'une date est selectionné, on la formate (jj/mm/aaaa), on l'ecrit de le champ de date et on supprime le calendrier
function selectionJour(id,box,month,year,day){
	var object = document.getElementById(id);
	var jour;
	(day-9)>0 ? jour = ""+day : jour = "0"+day;
	var mois;
	month+=1;
	(month-9)>0 ? mois = ""+month : mois = "0"+month;
	//alert(id+" "+jour+"/"+mois+"/"+year);
	object.value = jour+"/"+mois+"/"+year;
	quiter(box);
}
//Cette fonction permet de changer le mois du calendrier pour le mois suivant
function moisSuivant(id,box,month,year){
	//document.getElementById("semaphore").value = 1;
	semaphore = 1;
	var object = document.getElementById(id);
	object.focus();
	var retourMonth;
	var retourYear;
	if(month == 11){
		retourMonth = 0;
		retourYear = year+1;
	}
	else{
		retourMonth = month+1;
		retourYear = year;
	}
	calendrierDate(object,box,retourMonth,retourYear);
}
//Cette fonction permet de changer le mois du calendrierpour le mois precedent
function moisPrecedent(id,box,month,year){
	//document.getElementById("semaphore").value = 1;
	semaphore = 1;
	var object = document.getElementById(id);
	object.focus();
	var retourMonth;
	var retourYear;
	if(month == 0){
		retourMonth = 11;
		retourYear = year-1;
	}
	else{
		retourMonth = month-1;
		retourYear = year;
	}
	calendrierDate(object,box,retourMonth,retourYear);
}
//Cette fonction renvoie le nombre de jour que possede le mois 'month' dans l'annee 'year'
function nombreJour(month,year){
	var bissextile = false;
	var nbJour;
	if(year%4 == 0 && year%100 !=0 || year%400 == 0){
		bissextile = true;
	}
	if(month == 0 || month == 2 || month == 4 || month == 6 || month == 7 || month == 9 || month == 11){
		nbJour = 31;
	}
	if(month == 3 || month == 5 || month == 8 || month == 10){
		nbJour = 30;
	}
	if(month == 1){
		bissextile ? nbJour = 29 : nbJour = 28;
	}
	return nbJour;
}
//Cette fonction renvoie le numero du jour de la semaine du 1er du mois 'month' de l'année 'year' (lun => 0, dim => 6)
function premierJour(month,year){
	var date = new Date();
	var jour1;
	date.setFullYear(year,month,1);
	if(date.getDay() == 0){
		jour1 = 6;
	}
	else{
		jour1 = date.getDay()-1;
	}
	return (jour1);
}
//Cette fonction affiche le calendrier
function afficheCalendrier(texte,box){
	document.getElementById(box).style.visibility = 'visible';
	document.getElementById(box).innerHTML = texte;
}
//envoi la date du jour a la creation du calendrier
function calendrier(object,box){
	//if(document.getElementById("semaphore").value == 0){
	if(semaphore == 0){
		//alert('vidage');
		//object.value = "";
		var date = new Date();
		var month = date.getMonth();
		var year = date.getFullYear();
		calendrierDate(object,box,month,year);
	}
}
//c'est ici que l'on cree le calendrier
function calendrierDate(object,box,month,year){
	var calendrier = "";
	var nbJour = nombreJour(month,year);
	var numJour = 1;
	var jour1 = premierJour(month,year);
	var premiereLigne = true;
	var dateDuJour = new Date();
	var type = "";
	//Le mois et l'année
	calendrier += "<div id='moisAnnee'>";
	/*if(dateDuJour.getMonth()+1 <= month || dateDuJour.getFullYear() != year){
		calendrier += "<div id='precedent' onClick=\"moisPrecedent('"+object.id+"','"+box+"',"+month+","+year+");\" onMouseOver=\"onOver(this);\" onMouseOut=\"onOut(this,'')\"><=</div>";
	}
	else{
		calendrier += "<div id='precedent' onClick=\"moisPrecedent('"+object.id+"','"+box+"',"+month+","+year+");\" onMouseOver=\"onOver(this);\" onMouseOut=\"onOut(this,'')\">&nbsp;</div>";
	}*/
	calendrier += "<div id='precedent' onClick=\"moisPrecedent('"+object.id+"','"+box+"',"+month+","+year+");\" onMouseOver=\"onOver(this);\" onMouseOut=\"onOut(this,'')\"><=</div>";
	calendrier += "<div id='suivant' onClick=\"moisSuivant( '"+object.id+"','"+box+"',"+month+","+year+");\" onMouseOver=\"onOver(this);\" onMouseOut=\"onOut(this,'')\">=></div>";
	calendrier += "<div>"+texteMois(month)+" "+year+"</div>";
	calendrier += "</div>";
	//Les labels des jours
	calendrier += "<ul id='jourLabel'><li>L</li>";	
	calendrier += "<li>M</li>";
	calendrier += "<li>M</li>";
	calendrier += "<li>J</li>";
	calendrier += "<li>V</li>";
	calendrier += "<li>S</li>";
	calendrier += "<li>D</li></ul>";
	//Les jours du mois courants
	while(numJour <= nbJour){
		calendrier += "<ul class='ligneJour'>";
		for(var i=0;i<7;i++){
			if(premiereLigne && i<jour1){
				calendrier += "<li class='jourVide'>&nbsp;</li>";
			}
			else{
				if(numJour <= nbJour){
					(dateDuJour.getDate() == numJour && dateDuJour.getMonth() == month && dateDuJour.getFullYear() == year) ? type = "jourCourant" : type="jourSelect";
					calendrier += "<li class='"+type+"' onMouseDown=\"selectionJour('"+object.id+"','"+box+"',"+month+","+year+","+numJour+")\" onMouseOver=\"onOver(this,'"+type+"');\" onMouseOut=\"onOut(this,'"+type+"')\">"+numJour+"</li>";
					numJour++;
				}
				else{
					calendrier += "<li class='jourVide'>&nbsp;</li>";
				}
			}
		}
		calendrier += "</ul>";
		premiereLigne = false;
	}
	afficheCalendrier(calendrier,box);
}
//appellé lorsque l'on efface le calendrier
function quiter(box){
	//if(document.getElementById("semaphore").value == 0){
	if(semaphore == 0){
		document.getElementById(box).innerHTML = "";	
		document.getElementById(box).style.visibility = 'hidden';
	}
	else{
		//document.getElementById("semaphore").value = 0;
		semaphore = 0;
	}
}