﻿var calendrier = new Calendrier();

//Constructeur du calendrier
function Calendrier() 
{
this.date=new Date();
this.mois=new Array("Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień");
this.champJour=null;
this.champMois=null;
this.champAnnee=null;
this.timer=null;
this.Fenetre=null;
}

//Initialisation
function initCalendrier(Div, TxtLink)
{
 calendrier.Fenetre=Div;
 Div.style.display='';
 if (navigator.appName == 'Microsoft Internet Explorer')
    {
    var Drps = document.getElementsByTagName("select");
    for (var i=0; i<Drps.length; i++)
        {Drps[i].style.visibility='hidden';}
    }
 initTimerCalendrier();
 calendrier.champJour=document.getElementById(TxtLink+"1");
 calendrier.champMois=document.getElementById(TxtLink+"2");
 calendrier.champAnnee=document.getElementById(TxtLink+"3");    
 calendrier.date=getDateCalendrier(calendrier.champJour.value+"/"+calendrier.champMois.value+"/"+calendrier.champAnnee.value);
 getContenuCalendrier();
}

//Retourne un objet Date à partir d'un string
function getDateCalendrier(txtDt)
{
var dt=new Date();
var reqControleDate=new RegExp("^[0-9]{2}(/){1}[0-9]{2}(/){1}[0-9]{4}$","g");
if (txtDt.match(reqControleDate))
    {
    dt.setDate(txtDt.substring(0,2));
    dt.setMonth(txtDt.substring(3,5)-1);
    dt.setFullYear(txtDt.substring(6,10));
    }
return dt;
}

//Retourne une date au format texte
function formatDateCalendrier(dt) 
{
var Y=dt.getFullYear();
var D=dt.getDate();
if (D<10) {D="0"+D;}
var M=dt.getMonth()+1;
if (M<10) {M="0"+M;}
return D+"/"+M+"/"+Y;
}

//Crée le contenu du calendrier pour la date 
function getContenuCalendrier()
{
var mois=calendrier.mois[calendrier.date.getMonth()];
var annee=calendrier.date.getFullYear();
var txtContenu="<table cellspacing='0' cellpadding='0' border='0' class='Calendrier' onmouseover='stopTimerCalendrier();' onmouseout='initTimerCalendrier();'>";
txtContenu+="<tr><td><img src='Images/Calendrier/FlecheCalendrierGauche.gif' alt='' style='border: none; cursor: pointer' onclick='calendrier.date.setMonth("+(calendrier.date.getMonth()-1)+");getContenuCalendrier();'></td><td colspan='5' class='CalendrierTitre'>"+mois+" "+annee+"</td><td><img src='Images/Calendrier/FlecheCalendrierDroite.gif' alt='' style='border: none; cursor: pointer' onclick='calendrier.date.setMonth("+(calendrier.date.getMonth()+1)+");getContenuCalendrier();'></td></tr>";
txtContenu+="<tr><td class='CalendrierJour'>P</td><td class='CalendrierJour'>W</td><td class='CalendrierJour'>S</td><td class='CalendrierJour'>C</td><td class='CalendrierJour'>P</td><td class='CalendrierJour'>S</td><td class='CalendrierJour'>N</td></tr>";
txtContenu+="<tr>";
var dtAujourdhui=new Date();
var dtJour1=new Date();
dtJour1.setDate(1);
dtJour1.setMonth(calendrier.date.getMonth());
dtJour1.setFullYear(calendrier.date.getFullYear());
var nbJourDecalage=dtJour1.getDay();
if (nbJourDecalage==0) {nbJourDecalage=7};
var nbCase=0;
var dtBoucle=dtJour1;
dtBoucle.setDate(1-nbJourDecalage);
for (var i=0; i<42; i++)
    {
    dtBoucle.setDate(dtBoucle.getDate()+1);
    var txtDt=formatDateCalendrier(dtBoucle);
    var classe="CalendrierMoisActif";
    if (dtBoucle.getMonth()!=calendrier.date.getMonth()) {classe="CalendrierMoisInactif"};
    if (txtDt==calendrier.champJour.value+"/"+calendrier.champMois.value+"/"+calendrier.champAnnee.value) {classe="CalendrierJourSelection"};
    if (((calendrier.champJour.value=="")||(calendrier.champMois.value=="")||(calendrier.champAnnee.value==""))&&(txtDt==formatDateCalendrier(dtAujourdhui))) {classe="CalendrierJourSelection"};
    txtContenu+="<td class='"+classe+"'><a href=\"javascript:selectDateCalendrier('"+txtDt+"')\" title=\""+txtDt+"\" class='"+classe+"'>"+dtBoucle.getDate()+"</a></td>";
    nbCase++;
    if (nbCase==7) 
        {
        txtContenu+"</tr>";
        if (i<41) {txtContenu+="<tr>"};
        nbCase=0;
        dtBoucle.setDate(dtBoucle.getDate()+1);
        if (dtBoucle.getMonth()!=calendrier.date.getMonth()) 
            {i=42;}
        else
            {dtBoucle.setDate(dtBoucle.getDate()-1);}
        }
    }
txtContenu+="</table>";
if (document.getElementById) 
    {
    calendrier.Fenetre.innerHTML=txtContenu;
    }    
}

//Click sur une date du calendrier
function selectDateCalendrier(txtDate)
{
calendrier.champJour.value=txtDate.substring(0,2);
calendrier.champMois.value=txtDate.substring(3,5);
if (calendrier.champMois.value.length==1) {calendrier.champMois.value="0"+calendrier.champMois.value;}
calendrier.champAnnee.value=txtDate.substring(6,10);
cacheCalendrier();
}

//Cache le calendrier
function cacheCalendrier()
{
calendrier.Fenetre.style.display='none';
if (navigator.appName == 'Microsoft Internet Explorer')
   {
   var Drps = document.getElementsByTagName("select");
   for (var i=0; i<Drps.length; i++)
       {Drps[i].style.visibility='visible';}
   }
stopTimerCalendrier();
}

//Declenche la minuterie de l'effacement du calendrier
function initTimerCalendrier()
{
if (calendrier.timer==null) 
    {
    calendrier.timer=setTimeout("cacheCalendrier()", 2000);
    }
}

//Stoppe la minuterie quand la souris est sur le calendrier
function stopTimerCalendrier()
{
if (calendrier.timer!=null) 
    {
    clearTimeout(calendrier.timer);
    calendrier.timer=null;
    }
}

