/*
*	Fichier calendrier.js : génère un calendrier client mensuel permettant de sélectionner une date
*/

// Variables globales
var aujourdhui=new Date();
var fenetre;
var champ;
var MSG_JOURS;
var MSG_MOIS;

// Fonction detruireFenetre, permet de detruire la popup calendrier lorsque la fenetre appelante disparait
function detruireFenetre()
{
	if (fenetre)
		if (!fenetre.closed)
			fenetre.close();
	fenetre=null;
}
window.onunload=detruireFenetre;

// Fonction getJour, retourne le nom du i-ème jour [0..6] de la semaine en français
function getJour(jour)
{
	tabJour=MSG_JOURS.split(",");
	return tabJour[jour];
}

// Fonction getMois, retourne le nom du i-ème mois [0..11] de l'année en français
function getMois(mois)
{
	tabMois=MSG_MOIS.split(",");
	return tabMois[mois];
}

// Fonction getSemaine, retourne le numéro de la semaine correspondant à la date
function getSemaine(date)
{
	debut=new Date(date.getFullYear(),0,1);
	jour=debut.getDay();
	nbMsJour=86400000;
	if(jour==0)jour=7;
	(jour>4)&&(jour-=4)||(jour+=3);
	return Math.ceil((((date-debut)/nbMsJour)+jour)/7);
}

// Fonction insererDateChamp, permet d'insérer la date choisie dans le calendrier dans le champ
function insererDateChamp(jour)
{
	f=fenetre.document.forms[0];
	mois=f.mois.selectedIndex+1;
	annee=f.annee.options[f.annee.selectedIndex].value;
	date=new Date(annee,mois,jour);
	if (mois<10) mois="0"+mois;
	libelle=jour+"-"+mois+"-"+annee;
	//eval("fenetre.opener.document.forms[0]"+champ+".value='"+libelle+"';");
	champ.value=libelle;
	fenetre.close();
	fenetre=null;
}

// Fonction afficherCalendrier, permet de calculer et d'afficher dans un conteneur un calendrier mensuel
// Avec des liens sur les jours qui permettent d'insérer automatiquement une date dans un champ texte
function afficherCalendrier(mois,annee)
{
	tmp="<table id=\"calendrier\">";
	tmp+="<tr><th colspan=\"8\">"+getMois(mois)+" "+annee+"</th></tr>";
	tmp+="<tr class=\"jour\"><th class=\"semaine\">Sem</th><th>L</th>";
	tmp+="<th>M</th><th>M</th><th>J</th><th>V</th><th>S</th><th>D</th>";
	date=new Date(annee,mois,1,0,0,0);
	numCaseInit=date.getDay()-1;
	if (numCaseInit==-1) numCaseInit=6;
	for (numCase=0;numCase<42;numCase++)
	{
		if ((numCase%7)==0)
		{
			tmp+="</tr><tr><td class=\"semaine\">"+getSemaine(date)+"</td>";
		}
		tmp+="<td";
		//if (numCase<numCaseInit || date.getMonth()!=mois)
		if (numCase<numCaseInit || date.getMonth()!=mois || date<aujourdhui || date.getDay()==0)
		{
			tmp+=">&nbsp;";
		}
		else
		{
			tmp+=" class=\"clickable\"><a href=\"javascript:opener.insererDateChamp("+date.getDate()+")\">";
		}
		if (numCase>=numCaseInit && date.getMonth()==mois)
		{
			tmp+=date.getDate();
			date.setDate(date.getDate()+1);
		}
		tmp+="</td>";
	}
	tmp+="</tr></table>";
	if (fenetre)
		fenetre.document.getElementById("conteneur").innerHTML=tmp;
	else
		document.getElementById("conteneur").innerHTML=tmp;
}

// Fonction majCalendrier, réaffiche le calendrier en fonction du mois et de l'année choisis dans le menu
function majCalendrier()
{

	if (fenetre)
		f=fenetre.document.forms[0];
	else
		f=document.forms[0];
	mois=f.mois.options[f.mois.selectedIndex].value;
	annee=f.annee.options[f.annee.selectedIndex].value;
	afficherCalendrier(mois,annee);
}

// Fonction genererSelecteurMois, génère une boite de sélection des mois
function genererSelecteurMois(mois)
{
	tmp="<select name=\"mois\" onchange=\"opener.majCalendrier()\">";
	for (i=0;i<12;i++)
	{
		tmp+="<option value="+i;
		if (i==mois)tmp+=" selected";
		tmp+=">"+getMois(i)+"</option>";
	}
	tmp+="</select>";
	return tmp;
}

// Fonction genererSelecteurAnnee, génère une boite de sélection des années
function genererSelecteurAnnee(annee)
{
	tmp="<select name=\"annee\" onchange=\"opener.majCalendrier()\">";
	//for (i=annee-1;i<annee+10;i++)
	for (i=annee-1;i<annee+1;i++)
	{
		tmp+="<option value="+i;
		if (i==annee)tmp+=" selected";
		tmp+=">"+i+"</option>";
	}
	tmp+="</select>";
	return tmp;
}

// Fonction moisPrecedent, positionne les boites de sélections mois et annee au mois précédent
function moisPrecedent()
{
	indMois=fenetre.document.forms[0].mois.selectedIndex;
	indAnnee=fenetre.document.forms[0].annee.selectedIndex;
	if (indMois==0)
	{
		if (indAnnee>0)
		{
			indMois=11;
			indAnnee--;
		}
	}
	else
	{
		indMois--;
	}
	fenetre.document.forms[0].mois.selectedIndex=indMois;
	fenetre.document.forms[0].annee.selectedIndex=indAnnee;
	majCalendrier();
}

// Fonction moisSuivant, positionne les boites de sélections mois et annee au mois suivant
function moisSuivant()
{
	indMois=fenetre.document.forms[0].mois.selectedIndex;
	indAnnee=fenetre.document.forms[0].annee.selectedIndex;
	if (indMois==11)
	{
		if (indAnnee<2)
		{
			indMois=0;
			indAnnee++;
		}
	}
	else
	{
		indMois++;
	}
	fenetre.document.forms[0].mois.selectedIndex=indMois;
	fenetre.document.forms[0].annee.selectedIndex=indAnnee;
	majCalendrier();
}

// Fonction popupCalendrier ouvre le menu et le calendrier dans une popup
function popupCalendrier(_champ)
{
	if (fenetre)
		if(fenetre.closed)
			fenetre=null;
	if (!fenetre)
	{
		champ=_champ;
		fenetre=window.open("about:blank","calendrier","height=210,width=250,screenX=530,screenY=420,top=420,left=530,toolbar=no,scrollbars=no,resizable=no,menubar=no,location=no,status=no,directories=no");
		tmp="<html><head><title>Calendrier</title>";
		tmp+="<link rel=\"stylesheet\" type=\"text/css\" href=\"/css/commun.css\">";
		tmp+="<link rel=\"stylesheet\" type=\"text/css\" href=\"/css/intranet.css\">";
		tmp+="<scr"+"ipt type=\"text/javascript\">";
		tmp+="MSG_JOURS=\""+MSG_JOURS+"\";";
		tmp+="MSG_MOIS=\""+MSG_MOIS+"\";";
		tmp+="<"+"/script>";
		tmp+="<scr"+"ipt type=\"text/javascript\" src=\"/js/calendrier.js\"><"+"/script>";
		tmp+="</head><body onLoad=\"majCalendrier()\" id=\"calendrier\"><form name=\"calendrier\">";
		tmp+="<p><input type=\"button\" class=\"bouton\" name=\"precedent\" value=\"&lt;&lt\" onclick=\"opener.moisPrecedent()\">";
		tmp+=genererSelecteurMois(aujourdhui.getMonth());
		tmp+=genererSelecteurAnnee(aujourdhui.getFullYear());
		tmp+="<input type=\"button\" class=\"bouton\" name=\"suivant\" value=\"&gt;&gt\" onclick=\"opener.moisSuivant()\"></p>";
		tmp+="<div id=\"conteneur\"></div></form></body></html>";
		fenetre.document.open();
		fenetre.document.write(tmp);
		fenetre.document.close();
	}
	//majCalendrier();
	fenetre.focus();
	return false;
}