// JavaScript Document
/*
	fonction calendrier
	
formulaire type:	

*/

/*========================= Variables   Globales ======================================*/
// on recup la date d'aujourd'hui
// pour definir l'origine
// et le max
var date_tmp = new Date();
var jour_origine=date_tmp.getDate();
var mois_origine=date_tmp.getMonth()+1;
var annee_origine=date_tmp.getFullYear();
var annee_max=annee_origine+2;
//on ecoute le click souris
var y=0;
if (document.getElementById)
{
if(navigator.appName.substring(0,3) == "Net")document.captureEvents(Event.MOUSEDOWN);
document.onmousedown  = Pos_Souris;
}

/*############################## les fonctions ###########################################*/

function calendrier(lemois,lannee,le_module,laperiode,la_langue,id_champ) 
{
  //alert("param =   "+lemois+"  "+lannee+"  "+le_module+"  "+laperiode+"  "+la_langue)
  //globales
  id=id_champ;
  lang=la_langue;
  periode=laperiode;
  id_module=le_module;
	/*========================= Variables   Globales ======================================*/
	// on recup la date d'aujourd'hui
	// pour definir l'origine
	// et le max
	var date_tmp = new Date();
	jour_origine=date_tmp.getDate();
	mois_origine=date_tmp.getMonth()+1;
	annee_origine=date_tmp.getFullYear();
	annee_max=1*annee_origine+2;  
  //si periode==fin
  if (periode=='fin')
  {
		if (document.getElementById(id+"_debut").value!='')
		{
			date_d=document.getElementById(id+"_debut").value;
			date_d=date_d.split("-");
			jour_origine=date_d[0];
			mois_origine=date_d[1];
			annee_origine=date_d[2];
		}
		/*
		if (document.getElementById("jour_debut").value!='')jour_origine=document.getElementById("jour_debut").value;
		if (document.getElementById("mois_debut").value!='')mois_origine=document.getElementById("mois_debut").value;
		if (document.getElementById("annee_debut").value!='')annee_origine=document.getElementById("annee_debut").value;
		*/
		annee_max=1*annee_origine+2;
  }
  
  //le mois de janvier = 0 donc:
  mois_actuel=1*lemois-1;
  annee_actuelle=lannee;
  //calcul du nb de jour dans le mois
  var date_tmp = new Date(annee_actuelle,1*mois_actuel+1,0);
  var nb_jours=date_tmp.getDate();
  //calcul du nom du 1er jour du mois
  var date_tmp = new Date(annee_actuelle,mois_actuel,01);
  var jour_sem_debut=date_tmp.getDay();
  //calcul du nombre de ligne
  j_plus=(jour_sem_debut==0) ? 6 : jour_sem_debut-1;
  var nb_lignes=((nb_jours+j_plus) % 7==0)?((nb_jours+j_plus)/7):Math.floor((nb_jours+j_plus)/7)+1;
  //debut et fin du mois dans le calendrier (ici dimanche sera = 7)
  var Start = (jour_sem_debut==0)?7:jour_sem_debut;
  var date_tmp = new Date(annee_actuelle,mois_actuel,nb_jours);
  var Stop = (date_tmp.getDay()==0)?7:date_tmp.getDay();
  
  
  le_calendrier="<table class='calendrier_js' ><tr align='center'><td colspan='10'><table width='100%'>"+entete(mois_actuel,annee_actuelle)+"</table></td></tr>";
  le_calendrier+=ligne_semaine();
  construit(nb_jours,jour_sem_debut,nb_lignes,Start,Stop);
  //le_calendrier+="<tr><td colspan='10'><table>"+ligne_mois()+"</table></td></tr>";
  le_calendrier+="<tr align='right'><td colspan='10'><a href='#position_calendrier' onClick='module(\"calendrier\",\"fermer\");return false;'>"+LANGAGE('fermer')+"</a></td></tr></table>";
  
  var TheModule=document.getElementById(id_module);
  TheModule.innerHTML=le_calendrier;
  

  //positionne le calendrier:
  //var y=window.event.y;
  //alert(TheModule.style.display);
  if (TheModule.style.display=='block' || TheModule.style.display=='none')le_y=y-210*1;
  TheModule.style.top=le_y+"px";
  
  
  module(id_module,'affiche');
  //alert(le_calendrier);
}
//construction de l'entete du calendrier
function entete(mois_actuel,annee_actuelle)
{

	
	var mois_precedent,annee_precedente;
	var mois_suivant,annee_suivante;
	if (mois_actuel==0)
	{ 
		mois_precedent=12;
		annee_precedente=annee_actuelle-1;
		mois_suivant=2;
		annee_suivante=annee_actuelle;
	}
	else if (mois_actuel==11)
	{
		mois_suivant=1;
		annee_suivante=annee_actuelle+1;
		mois_precedent=11;
		annee_precedente=annee_actuelle;
	}
	else 
	{
		mois_suivant=mois_actuel+2;
		annee_suivante=annee_actuelle;
		mois_precedent=mois_actuel;
		annee_precedente=annee_actuelle;
	}
	//le mois + flèches suivant précédant
	var ligne="<tr><td align='left'>";
	if (annee_precedente>=annee_origine && (mois_precedent>=mois_origine || annee_precedente>annee_origine))
	{
		ligne+="<a href='#position_calendrier' onClick='calendrier("+mois_precedent+","+annee_precedente+",\"calendrier\",\""+periode+"\",\""+lang+"\",\""+id+"\");return false;'> << </a>";
	}
	ligne+="&nbsp;</td><td><span class='bleu_taille1'>"+MOIS(mois_actuel)+"  "+annee_actuelle+"</span></td><td align='right'>";
	if (annee_suivante<=annee_max)
	{
		ligne+="<a href='#position_calendrier' onClick='calendrier("+mois_suivant+","+annee_suivante+",\"calendrier\",\""+periode+"\",\""+lang+"\",\""+id+"\");return false;'> >> </a>";
	}
	ligne+="&nbsp;</td></tr>";
	
	// la liste déroulante des mois
	ligne+="<tr><td colspan='3' align='right'>";
	ligne+=liste_mois();
	ligne+="</select></td></tr>";
	return ligne;
}
//fonction qui construit la ligne des jours de la semaine
function ligne_semaine()
{
	//la ligne des noms des jours
	ligne="<tr align='center'>";
	for (i=1;i<=7;i++)
	{
		if (i==7)indice=0;
		else indice=i;
		ligne+="<td class='bleu_taille3'>"+JOUR(indice).substr(0,1)+"</td>";
	}
	ligne+="</tr>";
	return ligne;	
}
//fonction qui construit la ligne des mois de l'annee ( derniere ligne + liens )
function ligne_mois()
{
	/*
	var date_tmp = new Date();
    var mois_d=date_tmp.getMonth()+1;
	var annee_d=date_tmp.getFullYear();
	*/
	
	var mois_d=mois_origine*1-1;
	var annee_d=annee_origine;
	//alert(mois_d);
	//la ligne des noms des jours
	ligne="<tr align='center'>";
	for (i=0;i<=9;i++)
	{
		if (i+mois_d*1>=12){indice=(i+mois_d*1)-12;annee_l=1*annee_d+1;}
		else {indice=i+mois_d*1;annee_l=annee_d;}
		//alert(indice);
		ligne+="<td class='bleu_taille1'><a href='#calendrier' onClick='calendrier("+(1*indice+1)+","+annee_l+",\"calendrier\",\""+periode+"\",\""+lang+"\");return false;'>"+MOIS(indice).substr(0,1)+"</a></td>";
		//ligne+="<a href='#calendrier' onClick='calendrier("+indice+","+annee_l+",\"calendrier\",\""+periode+"\",\""+lang+"\")'> << </a>";
		if (i<9)ligne+="<td class='bleu_taille1'>|</td>";
	}
	ligne+="</tr>";
	return ligne;	
}
//fonction qui construit la liste déroulante des mois de l'annee ( + liens )
function liste_mois()
{
	/*
	var date_tmp = new Date();
    var mois_d=date_tmp.getMonth()+1;
	var annee_d=date_tmp.getFullYear();
	*/
	
	var mois_d=mois_origine*1-1;
	var annee_d=annee_origine;
	//alert(mois_d);
	//la ligne des noms des jours
	ligne="<select onChange='var value=this.value;value=value.split(\",\");calendrier(value[0],value[1],value[2],value[3],value[4],value[5])'>";
	ligne+="<option >"+LANGAGE('selectionnez')+"</option>";
	//alert(periode);
	for (i=0;i<=11;i++)
	{
		if (i+mois_d*1>=12){indice=(i+mois_d*1)-12;annee_l=1*annee_d+1;}
		else {indice=i+mois_d*1;annee_l=annee_d;}
		//alert(indice);
		ligne+="<option value='"+(1*indice+1)+","+annee_l+",calendrier,"+periode+","+lang+","+id+"'>"+MOIS(indice)+" "+annee_l+"</option>";
		//ligne+="<a href='#calendrier' onClick='calendrier("+indice+","+annee_l+",\"calendrier\",\""+periode+"\",\""+lang+"\")'> << </a>";
		//if (i<9)ligne+="<td class='bleu_taille1'>|</td>";
	}
	//ligne+="</tr>";
	//alert(ligne);
	return ligne;	
}
//construction du calendrier
function construit(nb_jours,jour_sem_debut,nb_lignes,Start,Stop)
{
	
	
	//chaque ligne du calendrier
	for(i=1;i<=nb_lignes;i++)
	{
		le_calendrier+="<tr>";
		//chaque colonne(jour) du calendrier
		for(j=1;j<=7;j++)
		{
			//la premiere ligne 
			if (i==1)
			{
				//alert (mois_actuel+" "+mois_origine);
				if (j<Start)cellule('','vide');
				
				else if (mois_actuel+1==mois_origine && annee_actuelle==annee_origine)
					{
						if ( (j-(Start-1))<=jour_origine )
						{cellule( j-(Start-1) , 'barre');}
						else cellule( j-(Start-1) , 'pleine');
					}
					else cellule( j-(Start-1) , 'pleine');
			}
			//la derniere ligne 
			else if (i==nb_lignes) 
			{
				if (j>Stop){cellule('','vide');}
				else if (mois_actuel+1==mois_origine && annee_actuelle==annee_origine)
					{
						if ( (7*(i-1)+j-(Start-1))<=jour_origine)
						{cellule( 7*(i-1)+j-(Start-1) , 'barre');}
						else cellule( 7*(i-1)+j-(Start-1) , 'pleine');
					}
					else cellule(7*(i-1)+j-(Start-1), 'pleine');
			}
			//le centre du calendrier
			else
			{
				if (mois_actuel+1==mois_origine && annee_actuelle==annee_origine)
				{
					if ( (7*(i-1)+j-(Start-1))<=jour_origine)
					{cellule( 7*(i-1)+j-(Start-1) , 'barre');}
					else cellule( 7*(i-1)+j-(Start-1) , 'pleine');
				}
				else cellule(7*(i-1)+j-(Start-1), 'pleine');
			}
		}
		le_calendrier+="</tr>";
	}
	
}
function cellule(variable,classe)
{
	if (classe=='vide')le_calendrier+="<td class='case_vide'>&nbsp;</td>";
	else if (classe=='barre')le_calendrier+="<td class='case_"+classe+"'>"+(variable*1)+"</td>";
		else le_calendrier+="<td class='case_"+classe+"'><a href='#position_calendrier' onClick='selectionne(\""+(variable*1)+"\",\""+(mois_actuel)+"\",\""+annee_actuelle+"\" );module(\""+id_module+"\",\"fermer\");return false;'>"+(variable*1)+"</a></td>";
	//alert (le_calendrier);
}

// affiche ou cache la 'boite' du calendrier
function module(id_module,action)
{
	var TheModule=document.getElementById(id_module);
	if (action=='fermer')
	{
		TheModule.style.display='none';
	}
	else
	{
		TheModule.style.display='';
	}
}

//
function selectionne(jour,mois,annee)
{
	
	if (document.getElementById("jour_"+periode))
	{
	the_jour=document.getElementById("jour_"+periode);
	the_mois=document.getElementById("mois_"+periode);
	the_annee=document.getElementById("annee_"+periode);
	
	/*
	the_jour.selectedIndex=1*jour-1;
	the_mois.selectedIndex=1*mois;
	the_annee.selectedIndex=1*annee-annee_origine;
	*/
	the_jour.value=1*jour;
	the_mois.value=1*mois+1;
	the_annee.value=1*annee;
	//alert(the_annee.selectedIndex);
	}
	else 
	{
		the_date=document.getElementById(id+"_"+periode);
		the_date.value=1*jour+"-"+(1*mois+1)+"-"+1*annee;
	}
}
//fonction qui retourne le jour de la semaine en francais:
function JOUR(i)
{
	switch (lang)
	{
		case 'fr':
		var jour= new Array("dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi");
		break;
		case 'en':
		var jour= new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
		break;
		case 'de':
		var jour= new Array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
		break;
		default:
		var jour= new Array("dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi");
		break;
	}
	//var jour= new Array("dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi");
	return jour[i];
}
//fonction qui retourne le mois en francais:
function MOIS(i)
{
	switch (lang)
	{
		case 'fr':
		var mois= new Array("Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Décembre");
		break;
		case 'en':
		var mois= new Array("January","February","March","April","May","June","July","August","September","October","November","December");
		break;
		case 'de':
		var mois= new Array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
		break;
		default:
		var mois= new Array("Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Décembre");
		break;
	}
	//var mois= new Array("Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Décembre");
	return mois[i];
}
function LANGAGE(indice)
{
	switch (lang)
	{
		case 'fr':
		var langage= new Array();
		langage["fermer"]='Fermer';
		langage["selectionnez"]='Sélectionnez une date';
		break;
		case 'en':
		var langage= new Array();
		langage["fermer"]='Close';
		langage["selectionnez"]='Select the date';
		break;
		case 'de':
		var langage= new Array();
		langage["fermer"]='Schliessen';
		langage["selectionnez"]='Wählen Sie das Datum';
		break;
		default:
		var langage= new Array();
		langage["fermer"]='Fermer';
		langage["selectionnez"]='Sélectionnez une date';
		break;
	}
	return langage[indice];
}
function Pos_Souris(e)
{
y = (navigator.appName.substring(0,3) == "Net") ? e.pageY : event.y+document.body.scrollTop;
}
/* fonction qui vide les champs date :*/
function vider()
{
if(document.getElementById("jour_debut"))document.getElementById("jour_debut").value='';
if(document.getElementById("mois_debut"))document.getElementById("mois_debut").value='';
if(document.getElementById("annee_debut"))document.getElementById("annee_debut").value='';
if(document.getElementById("jour_fin"))document.getElementById("jour_fin").value='';
if(document.getElementById("mois_fin"))document.getElementById("mois_fin").value='';
if(document.getElementById("annee_fin"))document.getElementById("annee_fin").value='';
}
/*fonction qui verifie la validité de la date pour les jours : 30 février 2004 => 29 février 2004 
  Dans une liste déroulante */
function date_valide(jour,mois,annee,id_jour)
{
	var date_tmp = new Date(annee,mois,jour);
	if(jour!=date_tmp.getDate())
	{
		var date_tmp2 = new Date(annee,mois+1,0);
		jour_valide=date_tmp2.getDate();
		//alert(jour_valide);
		the_liste=document.getElementById(id_jour);
		the_liste.selectedIndex=jour_valide-1;
	}
}

function effacer(periode)
{
	document.getElementById(id+"_"+periode).value="";
	/*
	document.getElementById("jour_"+periode).value="";
	document.getElementById("mois_"+periode).value="";
	document.getElementById("annee_"+periode).value="";
	*/

}

function vider(block)
{
	switch (block)
	{
		case "rech_av":
			document.getElementById("x_jours").value="";
			document.getElementById("rech_date_debut").value="";
			document.getElementById("rech_date_fin").value="";
			// on "ferme" la recherche avancée
			document.getElementById("rech_avance").style.display='none';
			document.getElementById("recherche_fleche").innerHTML="&gt;&gt;"
			break;
		case "date_fixe":
			document.getElementById("date_debut").value="";
			document.getElementById("date_fin").value="";
			break;
	}
}
function fleche()
{
	var Thefleche=document.getElementById("recherche_fleche");
	
	if (Thefleche.innerHTML=="&gt;&gt;")Thefleche.innerHTML="&lt;&lt;";
	else Thefleche.innerHTML="&gt;&gt;";
}