<!--


var HTMLCode="";
var DaysList = new Array("Jour_Vide", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam", "Dim");
var MonthsList = new Array("Mois_Vide", "Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre");
var MonthLength = new Array("Mois_longueur_vide",31,29,31,30,31,30,31,31,30,31,30,31);
var QueryDate=0;	/* Jour demande(date)*/
var QueryMonth=0;	/* Mois demande*/
var QueryYear=0;	/* Annee demandee*/
var QueryDay=0;		/* Jour de la semaine du jour demande, inconnu*/
var FirstDay=0;		/* Jour de la semaine du 1er jour du mois*/
var WeekRef=0;		/* Numerotation des semaines*/
var WeekOne=0;		/* Numerotation des semaines*/

	var date = new Date();
	QueryDate  = date.getDate();
	QueryMonth = date.getMonth()+1;
	QueryYear = date.getYear();


var Today=new Date();
var TodaysYear=Today.getYear();
var TodaysMonth=Today.getMonth()+1;
var TodaysDate=Today.getDate();
var TodaysDay=Today.getDay()+1;
if(TodaysYear < 2000)
{
	TodaysYear+=1900
}

/* On commence par verifier les donnees fournies par l'utilisateur*/
function CheckData()
{
	MonthLength[2]=CheckLeap(QueryYear);
	
	/* on teste si la date choisie est anterieure au lundi 20 decembre 1582*/
	if((QueryYear * 10000+QueryMonth * 100+QueryDate)< 15821220)
	{
		alert("Vous avez choisi une date anterieure au 20 decembre 1582, hors du calendrier Gregorien. \nVeuillez selectionner une date plus recente.");
		document.Cal.reset();
		CheckData()
	}
	/* on verifie si la date est coherente*/
	else if(MonthLength[QueryMonth] < QueryDate)
	{
		alert("Il n'y a pas "+QueryDate+" jours en "+MonthsList[QueryMonth]+" "+QueryYear+" mais "+MonthLength[QueryMonth]+". \nVeuillez choisir une autre date.");
		document.Cal.reset();
		CheckData()
	}
	else
	{
		DisplaySchedule()
	}
}

/* Teste une annee pour determiner si elle est bissextile ou pas*/
function CheckLeap(yy)
{
	if((yy % 100 !=0 && yy % 4==0)||(yy % 400==0))
	{
		return 29
	}
	else
	{
		return 28
	}
}

/* Renvoie le numero de la semaine correspondant a la date requise*/
function DefWeekNum(dd)
{
	numd=0;
	numw=0;
	for(n=1;n<QueryMonth;n++)
	{
		numd+=MonthLength[n]
	}
	numd=numd+dd -(9 - DefDateDay(QueryYear,1,1));
	numw=Math.floor(numd / 7)+1;
	if(DefDateDay(QueryYear,1,1)==1)
	{
		numw++
	}
	return numw
}

/* Renvoie le numero du jour de la semaine correspondant a la date requise */
function DefDateDay(yy,mm,dd)
{
	return Math.floor((Date2Days(yy,mm,dd)-2)% 7)+1
}


/* Transforme la date en nb de jours theoriques */
function Date2Days(yy,mm,dd)
{
	if(mm > 2)
	{
		var bis=Math.floor(yy/4)- Math.floor(yy/100)+Math.floor(yy/400);
		var zy=Math.floor(yy * 365+bis);
		var zm=(mm-1)* 31 - Math.floor(mm * 0.4+2.3);
		return(zy+zm+dd)
	}
	else
	{
		var bis=Math.floor((yy-1)/4)- Math.floor((yy-1)/100)+Math.floor((yy-1)/400);
		var zy=Math.floor(yy * 365+bis);
		return(zy+(mm-1)* 31+dd)
	}
}

/* D?cr?mente la data */
function DateMoins( oReference, oObjetReference1, oObjetReference2 )
{
	QueryDate = 1;
	if( QueryMonth == 1 ) 
	{
		QueryMonth = 12;
		QueryYear = QueryYear - 1;
	}
	else
	{
		QueryMonth=QueryMonth-1;
	}	
	DisplaySchedule( oReference, oObjetReference1, oObjetReference2 );
}

/* Incremente la date */
function DatePlus( oReference, oObjetReference1, oObjetReference2 )
{
	QueryDate = 1;
	if( QueryMonth == 12 ) 
	{
		QueryMonth = 1;
		QueryYear = QueryYear + 1;
	}
	else
	{
		QueryMonth=QueryMonth+1;
	}	
	DisplaySchedule( oReference, oObjetReference1, oObjetReference2 );
}


/* Produit le code HTML qui formera le calendrier */
function DisplaySchedule( oReference, oObjetReference1, oObjetReference2 )
{
	HTMLCode="<table cellspacing=0 cellpadding=3 border=0 class='Style_ISICalendrier'>";

	QueryDay=DefDateDay(QueryYear,QueryMonth,QueryDate);
	WeekRef=DefWeekNum(QueryDate);
	WeekOne=DefWeekNum(1);
	
	HTMLCode += "<tr align=center><td colspan=8 class=TITRE>";
	HTMLCode += "<table cellspacing=0 cellpadding=0><tr><td><img src='"+__CHEMIN_IMAGES_+"fleche1.gif' style='cursor: pointer;' onClick=\"Javascript: DateMoins('"+oReference+"','"+oObjetReference1+"','"+oObjetReference2+"');\" ></td><td width=100% align=center><b>"+MonthsList[QueryMonth]+" "+QueryYear+"</b></td><td><img src='"+__CHEMIN_IMAGES_+"fleche2.gif' style='cursor: pointer;' onClick=\"Javascript: DatePlus('"+oReference+"','"+oObjetReference1+"','"+oObjetReference2+"'); \" ></td><td><img src='"+__CHEMIN_IMAGES_+"ferme.gif' style='cursor: pointer;' onClick='JavaScript: ISICalendrier_Cacher( );'></td></tr></table>";
	HTMLCode += "</td></tr><tr align=center>";

	sDateAfficheD_l = '';
	sDateAfficheF_l = '';
	
	// ---- Affiche les jours
	for(s=1;s<8;s++)
	{
		// --- Si le jour est jour courrant
		if(QueryDay==s)
		{
			HTMLCode+="<td class='Style_ISICalendrier_TitreJourSelection' >"+DaysList[s]+"</td>";
		}
		else
		{
			HTMLCode+="<td class='Style_ISICalendrier_TitreJour' >"+DaysList[s]+"</td>";
		}
	}

	HTMLCode+="<td class='Style_ISICalendrier_TitreSemaine' >Sem</td></tr>";
	a=0;
	for(i=(1-DefDateDay(QueryYear,QueryMonth,1));i<MonthLength[QueryMonth];i++)
	{
		HTMLCode+="<tr align=center>";
		for(j=1;j<8;j++)
		{
			if((i+j) < 10 ) sJour_l = '0'+(i+j);
			else sJour_l = (i+j);
			
			if(QueryMonth < 10) sMois_l = '0'+QueryMonth;
			else sMois_l = QueryMonth;
			
			sDateAffiche_l = sJour_l+"/"+sMois_l+"/"+QueryYear;
			
			if((i+j)<=0)
			{
				HTMLCode+="<td class='Style_ISICalendrier_JourVide' >&nbsp;</td>"
			}
			else if((i+j)==QueryDate)
			{				
				if( sDateAfficheD_l == '' ) sDateAfficheD_l = (i+j)+"/"+sMois_l+"/"+QueryYear;
				HTMLCode+="<td class='Style_ISICalendrier_JourSelection' onClick=\"JavaScript: ISICalendrier_Valorise( '"+oReference+"','','','"+sDateAffiche_l+"','' ); \" >"+(i+j)+"</td>"
			}
			else if((i+j)> MonthLength[QueryMonth])
			{
				if( sDateAfficheF_l == '' ) sDateAfficheF_l = (i+j-1)+"/"+sMois_l+"/"+QueryYear;
				
				HTMLCode+="<td class='Style_ISICalendrier_JourVide'>&nbsp;</td>"
			}
			else
			{
				if( sDateAfficheD_l == '' ) sDateAfficheD_l = (i+j)+"/"+sMois_l+"/"+QueryYear;								
				HTMLCode+="<td class='Style_ISICalendrier_Jour' onClick=\"JavaScript: ISICalendrier_Valorise( '"+oReference+"','','','"+sDateAffiche_l+"','' ); \" >"+(i+j)+"</td>"
			}
		}
		
		if( sDateAfficheF_l == '' ) sDateAfficheF_l = (i+j-1)+"/"+sMois_l+"/"+QueryYear;
		
		if((WeekOne+a)==WeekRef)
		{
			HTMLCode+="<td class='Style_ISICalendrier_SemaineSelection' onClick=\"JavaScript: ISICalendrier_Valorise( '"+oReference+"','"+oObjetReference1+"','"+oObjetReference2+"','"+sDateAfficheD_l+"','"+sDateAfficheF_l+"' ); \">"+WeekRef+"</td>"
		}
		else
		{
			HTMLCode+="<td class='Style_ISICalendrier_Semaine' onClick=\"JavaScript: ISICalendrier_Valorise( '"+oReference+"','"+oObjetReference1+"','"+oObjetReference2+"','"+sDateAfficheD_l+"','"+sDateAfficheF_l+"' ); \">"+(WeekOne+a)+"</td>"
		}

		sDateAfficheD_l = '';
		sDateAfficheF_l = '';		
		HTMLCode+="</tr>";
		a++;
		i=i+6;
	}
	
	
	document.getElementById('oIdDivISICalendrier').innerHTML=HTMLCode+"</table>";
}

document.write("<div id='oIdDivISICalendrier'  style='border: 1px solid #000000; display: none; position: absolute; z-index: 1;'>&nbsp;</div>");


function ISICalendrier_Valorise( oObjetReference, oObjetReference1, oObjetReference2, sDateD, sDateF )
{
	// --- Si p?riode semaine
	if(( oObjetReference1 != '') && ( oObjetReference2 != '') && (sDateD != '') && (sDateF != ''))
	{
		document.getElementById( oObjetReference1 ).value = sDateD;
		document.getElementById( oObjetReference2 ).value = sDateF;
	}
	// --- Si date unique
	else
	{
		document.getElementById( oObjetReference ).value = sDateD;
	}

	ISICalendrier_Cacher( );
}

function ISICalendrier_Cacher( )
{
	document.getElementById('oIdDivISICalendrier').style.display = 'none';
}

function ISICalendrier_Afficher( oObjet, oObjet1, oObjet2 )
{
	document.getElementById('oIdDivISICalendrier').style.display = 'block';	
	document.getElementById('oIdDivISICalendrier').style.left = event.x;
	document.getElementById('oIdDivISICalendrier').style.top = event.y;	
	DisplaySchedule( oObjet, oObjet1, oObjet2 );
}

//-->
