// JavaScript Document

var langue= "FR";
//

var moisXGB=["","January","February","March","April","May","June","July","August","September","October","November","December"];
var JourMGB=["Su","Mo","Tu","We","Th","Fr","Sa"];
var startWeekGB=0;
var jourPauseGB={0:true,6:true}; //jour de pause de la semaine
var jourFerieeGB={"1-1":"jour an","1-5":"fête du travail","8-5":"armistice","14-7":"fête nationale","15-8":"ascencion","1-11":"armistice","11-11":"toussain","25-12":"noel"};
var todayGB = "today";
//
var moisXFR=["","Janvier","Fevrier","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Decembre"];
var JourMFR=["Di","Lu","Ma","Me","Je","Ve","Sa"];
var startWeekFR=1;
var jourPauseFR={0:true,6:true}; //jour de pause de la semaine
var jourFerieeFR={"1-1":"Jour de l'an","1-5":"F&ecirc;te du travail","8-5":"Armistice","14-7":"F&ecirc;te nationale","15-8":"Ascencion","1-11":"Armistice","11-11":"Toussaint","25-12":"No&euml;l"}; 
var todayFR = "Aujourd'hui";

//
var moisX = eval("moisX" + langue ); 
var JourM = eval("JourM" + langue ); 
var startWeek=eval("startWeek" + langue ); ;//debut de la semaine 0=dim,1=lun,...
var jourPause=eval("jourPause" + langue ); ; //jour de pause de la semaine
var jourFeriee=eval("jourFeriee" + langue ); ;
var today=eval("today" + langue ); ;

//
var fermable_microcal=true;
//var select_old= null;

//structure la date 
function strucDate(dateX) 
{
return {"pos":dateX.getDay(),"jour":dateX.getDate(),"mois":dateX.getMonth()+1,"annee":dateX.getFullYear()};
}


//var dateS= strucDate(new Date());//date Selectionné
//var dateA= strucDate(new Date());//date Affichée
var dnow= strucDate(new Date());//date actuelle
var seetoday= true;//affiche today


//retourne le ième jour du 1er du mois
function premJourMois(mois,annee) 
{
return (new Date(annee,mois-1,1).getDay());
}
//retourne le jour max du mois
function JmaxMois(mois,annee) 
{
return (new Date(annee,mois,0).getDate());
}


/* Test une date si elle est correct...spécial killer*/
function testTypeDate(dateEntree)
{
tst=false;
try
{
rc=dateEntree.split("/");nd=new Date(rc[2],(rc[1]-1),rc[0]);
tst=(rc[2]>1800&&rc[2]<2200&&rc[2]==nd.getFullYear()&&rc[1]==(nd.getMonth()+1)&&rc[0]==nd.getDate());
} catch(e) {}
return tst;
}

//selection de la zone avec la souris
function choix(koi,code)
{
if (code) 
{  
koi.select_old = koi.style.background;
koi.style.background = '#c0c0FF';
}
else 
{
koi.style.background = koi.select_old;
}
}


//test si année bissextile
function bissextile(annee) {
return (annee%4==0 && annee %100!=0 || annee%400==0);
}

//Retourne le nombre de jour depuis le 1er janvier (num de semaine)
function nbJAnnee(dateX){
var nb_mois=[,0,31,59,90,120,151,181,212,243,273,304,334];
j=dateX.jour ; m=dateX.mois ; a=dateX.annee;
nb=nb_mois[m]+j-1 ;
if (bissextile(a) && m>2) nb++;
return nb;
}




function testTravail(dateS,oldX,xx,jj,mm,aa)
{
var cssparent = "";
if (jourPause[xx] != null) 
cssparent="RP";
else if (jourFeriee[jj+"-"+mm] != null) 
cssparent="BG";
else
cssparent="";

if (jj==dateS.jour && mm==dateS.mois && aa==dateS.annee) 
{
styleX="dayselected"+cssparent;
}
else if (jj==dnow.jour&&mm==dnow.mois&&aa==dnow.annee) 
{
styleX="daytoday"+cssparent;
}
else
{
styleX = (oldX)?("daynormal"+cssparent):("daynormalnomonth"+cssparent);
}
return styleX;
}

//affiche le calendrier
function view_microcal(dateS,init,actif,ki,sourceid,mxS,axS)
{

if(typeof(document.getElementById(ki).process)!="undefined")
{
if(document.getElementById(ki).process==true && init)
return;
}
document.getElementById(ki).process=true;


if(typeof(document.getElementById(ki).dateS)=="undefined")
{
dateS = document.getElementById(ki).dateS;
document.getElementById(ki).dateS =  strucDate(new Date());
}
dateS = document.getElementById(ki).dateS;

if(init)
{
dateA=strucDate(new Date(dateS.annee,dateS.mois-1,dateS.jour));
}


if (actif )
{
//decalage du mois su on clique sur -/+
if (mxS!=-1) 
{
clearTimeout(cc);
//if(init!=false)
//alert(actif);
//if(init)
document.getElementById(ki).focus();
fermable_microcal=true;
dateA.mois=mxS;
dateA.annee=axS;
if (dateA.mois<1) {dateA.annee--;dateA.mois+=12;}
if (dateA.mois>12) {dateA.annee++;dateA.mois-=12;}
}
//init
Dstart=(premJourMois(dateA.mois,dateA.annee)+7-startWeek)%7;
jmaxi=JmaxMois(dateA.mois,dateA.annee);
jmaxiAvant=JmaxMois((dateA.mois-1),dateA.annee);
//si on veux ajouter le numero de la semaine ...
//idxWeek=parseInt(nbJAnnee(strucDate(new Date(dateA.mois+'-01-'+dateA.annee)))/7,10)+1;

ymaxi=parseInt((jmaxi+Dstart+1)/7,10);

//generation du tableau
//--entête
htm="<table class=\"calendar\"><tr>";
htm+="<td class=\"swapmonth\" onclick=\"view_microcal(null,false,true,'"+ki+"','"+sourceid+"',"+(dateA.mois-1)+","+dateA.annee+");\"><<</td>";
htm+="<td colspan='5' class=\"monthandyear\"> <b> "+moisX[dateA.mois]+"</b>&nbsp;"+dateA.annee+"</td>";
htm+="<td class=\"swapmonth\" onclick=\"view_microcal(null,false,true,'"+ki+"','"+sourceid+"',"+(dateA.mois+1)+","+dateA.annee+")\">>></td></tr>";
//--corps
htm+="<tr>";
//affichage des jours DLMMJVS
for (x=0;x<7;x++) 
htm+="<td  class=\"dayslist\"><b>"+JourM[(x+startWeek)%7]+"</b></td>";

htm+="</tr>"

// alert(jmaxi);
//------------------------
for (var y=0;y<=ymaxi;y++)
{
htm+="<tr>";
for (var x=0;x<7;x++)
{
idxP=y*7+x-Dstart+1;   //numero du jour
aa=dateA.annee;
xx=(x+startWeek)%7;

var musttest=false;

//jour du mois précedent
if (idxP<=0)
{
jj=idxP+jmaxiAvant;
mm=dateA.mois-1;
if (mm==0)
{
mm=12;
aa--;
}
musttest=false;
}
else if (idxP>jmaxi) //jour du mois suivant
{
jj=idxP-jmaxi;
mm=dateA.mois+1;
if (mm==13)
{
mm=1;
aa++;
}
musttest=false;

}
else //jour du mois en cours
{
jj=idxP;
mm=dateA.mois;
musttest=true;

}
var alt = "";
if (jourFeriee[jj+"-"+mm] != null) 
{
alt = jourFeriee[jj+"-"+mm];
}
htm+="<td class=\""+testTravail(dateS,musttest,xx,jj,mm,aa)+"\" onmouseover='choix(this,true)' onmouseout='choix(this,false)'  onclick=\"document.getElementById('"+ki+"').dateS=strucDate(new Date("+aa+","+(mm-1)+","+jj+"));document.getElementById('"+ki+"').value='"+((jj<10)?"0":"")+jj+"/"+((mm<10)?"0":"")+mm+"/"+aa+"';document.getElementById('"+ki+"').style.color='black';document.getElementById('"+sourceid+"').style.visibility='hidden';\"><span  alt = \""+alt+"\"title=\""+alt+"\">"+jj+"</span></td>";//testTravail(dateS,musttest,xx,jj,mm,aa)+"/"+
}
htm+="</tr>"
}//-------------------------
if(seetoday)
{
htm+="<tr>";
htm+="<td colspan='7' class=\"todayTD\"><a href=\"javascript:document.getElementById('"+ki+"').dateS=strucDate(new Date("+dnow.annee+","+(dnow.mois-1)+","+dnow.jour+"));document.getElementById('"+ki+"').value='"+((jj<10)?"0":"")+jj+"/"+((mm<10)?"0":"")+mm+"/"+aa+"';document.getElementById('"+ki+"').style.color='black';void(0);\" class=\"today\">"+today+"</a></td>";
htm+="</tr>"
}
htm+="</table>"
//affiche le tableau
document.getElementById(sourceid).innerHTML=htm;
document.getElementById(sourceid).style.visibility="";
} 
else
{
//ferme le calendrier
if (fermable_microcal) 
  CalendarHide(ki,sourceid);
}
}

function CalendarHide(ki,sourceid)
{
cc = setTimeout("document.getElementById('"+ki+"').process=false;document.getElementById('"+sourceid+"').style.visibility='hidden';",500);
}
var cc=false;
