var dateEnCours = new Date();

moisEnCours = dateEnCours.getMonth() + 1;
anneeEnCours = dateEnCours.getFullYear();
AujourdHuiJour = dateEnCours.getDate();
AujourdHuiMois = moisEnCours;
AujourdHuiAnnee = anneeEnCours;

// Récupération du haut
function fctGauche(champ) {
	var valretour = champ.offsetLeft;
	champ = champ.offsetParent
	while(champ) {
		valretour += champ.offsetLeft;
		champ = champ.offsetParent;
	}
	return valretour;
}

function fctHaut(champ) {
	var valretour = champ.offsetTop;
	champ = champ.offsetParent
	while(champ) {
		valretour += champ.offsetTop;
		champ = champ.offsetParent;
	}
	return valretour;
}

var NomDiv= document.getElementById('DivCalendrier');
//var NomTable = document.getElementById('TableCalendrierPrincipale');
//var NomTD = document.getElementById('TDCalendrierPrincipale');

var strCode = ''; 

function pcdCodeAffiche() {
	NomDiv.innerHTML = strCode;
	strCode = '';
}

function pcdCodeAjoute(contenu) {
	strCode += contenu;
}

var NomTxt;

var tb_Mois = [
'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin',
'Juillet', 'Aout', 'Septembre', 'Octobre', 'Novembre', 'Décembre'
];

var tb_JourSem = [
'Lun', 'Mar', 'Me', 'Jeu', 'Ven', 'Sam', 'Dim'
];

function fctEnteteDonne(mois) {
	return '<table cellpadding="3" cellspacing="1" class="CalendrierTable">'
	     + '<tr>'
		 + '<td class="CalendrierEntete" title="Année précédente" style="cursor: pointer" onclick="pcdAnneePrecedente();">&lt;&lt;</td>'
		 + '<td class="CalendrierEntete" title="Mois précédent" style="cursor: pointer" onclick="pcdMoisPrecedent();">&lt;</td>'
		 + '<td class="CalendrierFermer" title="Fermer le calendrier" style="cursor: pointer" onclick="pcdMasque();" colspan="3">FERMER</td>'
		 + '<td class="CalendrierEntete" title="Mois suivant" style="cursor: pointer" onclick="pcdMoisSuivant();">&gt;</td>'
		 + '<td class="CalendrierEntete" title="Année suivante" style="cursor: pointer" onclick="pcdAnneeSuivante();">&gt;&gt;</td>'
		 + '</tr>'
	     + '<tr>'
		 + '<td colspan="7" class="CalendrierMois">' + mois + '</td>'
		 + '</tr>'
		 + '<tr>';
}

function pcdAfficheJourSem(jour) {
	return '<td class="CalendrierJourSem">' + jour + '</td>';
}

function fctSemaineSuivante() {
	return '</tr><tr>';
}

function fctJourVide(nbCol) {
	return '<td colspan="' + nbCol + '"></td>'
}

function fctJour(jour, mois, annee) {
	if (jour == AujourdHuiJour && mois == AujourdHuiMois && annee == AujourdHuiAnnee){
		return '<td class="CalendrierTD" style="border: 1px solid #800000;" title="Aujourd\'hui" onclick="pcdClicJour(' + jour + ',' + mois + ',' + annee + ')"><b>' + jour + '</b></td>';
	}
	else
	{
		return '<td class="CalendrierTD" title="le '+fctDateFrDonne(jour, mois, annee)+'" onclick="pcdClicJour(' + jour + ',' + mois + ',' + annee + ')">' + jour + '</td>';
	}
}

function fctFinTable() {
	return '</tr></table></div>';
}


function pcdDessineCalendrier(mois, annee) {
	strCode = '';
	
	pcdCodeAjoute(fctEnteteDonne(tb_Mois[mois - 1] + ' ' + annee));
	for (i = 0; i < 7; i ++) {
		pcdCodeAjoute (pcdAfficheJourSem(tb_JourSem[i]));
	}
	
	
	var tmpDate = new Date();
	tmpDate.setMonth(mois - 1);
	tmpDate.setFullYear(annee);
	tmpDate.setDate(1);
	if (mois == 2) {
		nbJours = (annee % 4 == 0) ? 29 : 28;
	} else if (mois == 4 || mois == 6 || mois == 9 || mois == 11) {
		nbJours = 30;
	} else {
		nbJours = 31;
	}
	
	var PremierJour = tmpDate.getDay();
	
	if (PremierJour==0){
		PremierJour=7;
	}
	PremierJour=PremierJour-1
	
	
	var EstPremiereSem = 1;
	
	pcdCodeAjoute (fctSemaineSuivante());
	
	if (PremierJour != 0) {
		pcdCodeAjoute (fctJourVide(PremierJour));
	}
	var j = PremierJour;
	
	for (i = 0; i < nbJours; i ++) {
		
		if (j == 0 && !EstPremiereSem) {
			pcdCodeAjoute (fctSemaineSuivante());
		}
		
		pcdCodeAjoute (fctJour(i + 1, mois, annee));
	
		EstPremiereSem = 0;
		
		j ++;
		j %= 7;
	}
	
	pcdCodeAjoute (fctFinTable());
	
	pcdCodeAffiche();
	
	//NomTD.scrollIntoView();
}

function pcdCalendrierAffecteZoneText(champs) {
	if (NomDiv.style.display == '')
	{
		pcdMasque();
		return;
	}
	
	NomTxt = champs;

	var tmpDate = new Date();
	moisEnCours = tmpDate.getMonth() + 1;
	anneeEnCours = tmpDate.getFullYear();
	
	pcdDessineCalendrier(moisEnCours, anneeEnCours);
	
	NomDiv.style.display = '';
	gauche = fctGauche(champs);
	Haut = fctHaut(champs) + champs.offsetHeight;
	NomDiv.style.left = gauche + 'px';
	NomDiv.style.top = Haut + 'px';
									//NomDiv.scrollIntoView();
	//alert(gauche+' - '+Haut);
}


function pcdMasque() {
	NomDiv.style.display = 'none';
}


function pcdMoisSuivant() {
	moisEnCours ++;
	if (moisEnCours > 12) {
		moisEnCours = 1; 
		anneeEnCours++;
	}

	pcdDessineCalendrier(moisEnCours, anneeEnCours);
}


function pcdMoisPrecedent() {
	moisEnCours = moisEnCours - 1;
	if (moisEnCours < 1) {
		moisEnCours = 12; 
		anneeEnCours = anneeEnCours - 1;
	}

	pcdDessineCalendrier(moisEnCours, anneeEnCours);
}


function pcdAnneeSuivante() {
	anneeEnCours++;
	pcdDessineCalendrier(moisEnCours, anneeEnCours);
}


function pcdAnneePrecedente() {
	anneeEnCours = anneeEnCours - 1;
	pcdDessineCalendrier(moisEnCours, anneeEnCours);
}


function fctDateFrDonne(jour, mois, annee) {
	moisRenvoyee = '00' + mois;
	moisRenvoyee = moisRenvoyee.substr(moisRenvoyee.length - 2);
	
	jourRenvoyee = '00' + jour;
	jourRenvoyee = jourRenvoyee.substr(jourRenvoyee.length - 2);

	return jourRenvoyee + '/' + moisRenvoyee + '/' + annee;
}


function pcdClicJour(jour, mois, annee) {

	pcdMasque();

	if (typeof(NomTxt.value) != 'undefined') {
		NomTxt.value = fctDateFrDonne(jour, mois, annee);
	} else if (typeof(NomTxt.innerHTML) != 'undefined') {
		NomTxt.innerHTML = fctDateFrDonne(jour, mois, annee);
	} else {
		alert (fctDateFrDonne(jour, mois, annee));
	}
	if (typeof(LettreVerifTout) == 'function'){
		LettreVerifTout();
	}
	
}
