moisX=["","Janvier","Fevrier","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Decembre"];
JourM=["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"];
var fermable_microcal=true;
var fermable_microcal2=true;
var select_old= null;
var startWeek=0;//debut de la semaine 0=dim,1=lun,...
var jourPause={0:true,6:true}; //jour de pause de la semaine
var jourFeriee={"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"};

function MM_findObj(n, d)
{ //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function masque(masque_tab)
{
objet=MM_findObj(masque_tab);

if(objet.style.display=='none')
	objet.style.display='block';
else
	objet.style.display='none';
}

//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 dnow= strucDate(new Date());//date actuelle
//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 correcte...spécial quiller*/
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(qoi,code)
{
if (code) 
{  select_old= qoi.style.background;
   qoi.style.background ='#666666';
}
else 
{
qoi.style.background =select_old;
}
}
function testTravail(oldX,xx,jj,mm,aa)
{
styleX="font-family:verdana;font-size:9px;text-align:center; padding:5px";
styleX+=(oldX)?"":"color:#666666;";
styleX+="cursor:hand; border-right:1px solid #333333; border-right:1px solid #333333;border-bottom:1px solid #333333;";
if (jourPause[xx]||jourFeriee[jj+"-"+mm]!=null) styleX+="background:#333333;";
if (jj==dnow.jour&&mm==dnow.mois&&aa==dnow.annee) styleX+="border:2px red solid;";
return styleX;
}
//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;
}
//affiche le calendrier
function view_microcal(actif,qui,source,mxS,axS)
{
if (actif)
{
//decalage du mois si on clique sur -/+
if (mxS!=-1) 
{
//clearTimeout(cc);
objet=MM_findObj(qui);
objet.focus();
fermable_microcal=true;
dateS.mois=mxS;
dateS.annee=axS;
if (dateS.mois<1) {dateS.annee--;dateS.mois+=12;}
if (dateS.mois>12) {dateS.annee++;dateS.mois-=12;}
}
//init
Dstart=(premJourMois(dateS.mois,dateS.annee)+7-startWeek)%7;
jmaxi=JmaxMois(dateS.mois,dateS.annee);
jmaxiAvant=JmaxMois((dateS.mois-1),dateS.annee);
//si on veux ajouter le numero de la semaine ...
//idxWeek=parseInt(nbJAnnee(strucDate(new Date(dateS.mois+'-01-'+dateS.annee)))/7,10)+1;
ymaxi=parseInt((jmaxi+Dstart+1)/7,10);
//generation du tableau
//--entête
htm="<table><tr style='font-size:9px;font-family:verdana;text-align:center;'>";
htm+="<td onclick=\"view_microcal(true,'"+qui+"','"+source+"',"+(dateS.mois-1)+","+dateS.annee+");\">-</td>";
htm+="<td colspan='5'> <b> "+moisX[dateS.mois]+"</b>&nbsp;"+dateS.annee+"</td>";
htm+="<td onclick=\"view_microcal(true,'"+qui+"','"+source+"',"+(dateS.mois+1)+","+dateS.annee+");\">+</td></tr>";
//--corps
htm+="<tr>";
//affichage des jours DLMMJVS
for (x=0;x<7;x++) 
htm+="<td  style='font-size:9px;font-family:verdana;'><b>"+JourM[(x+startWeek)%7]+"</b></td>";
htm+="</tr>";
//------------------------
for (y=0;y<=ymaxi;y++)
{
htm+="<tr>";
for (x=0;x<7;x++)
{
idxP=y*7+x-Dstart+1;   //numero du jour
aa=dateS.annee;
xx=(x+startWeek)%7;
//jour du mois précedent
if (idxP<=0)
{
jj=idxP+jmaxiAvant;mm=dateS.mois-1;
if (mm==0)
{mm=12;aa--;}
htm+="<td style='"+testTravail(false,xx,jj,mm,aa)+"' onmouseover='choix(this,true)' onmouseout='choix(this,false)'  onclick=\"document.getElementById('"+qui+"').value='"+((jj<10)?"0":"")+jj+"/"+((mm<10)?"0":"")+mm+"/"+aa+"';view_microcal(false,'"+qui+"','"+source+"',-1,0);\">"+jj+"</td>";
}
else if (idxP>jmaxi) //jour du mois suivant
{
jj=idxP-jmaxi;mm=dateS.mois+1;
if (mm==13)
{mm=1;aa++;}
htm+="<td style='"+testTravail(false,xx,jj,mm,aa)+"' onmouseover='choix(this,true)' onmouseout='choix(this,false)'  onclick=\"document.getElementById('"+qui+"').value='"+((jj<10)?"0":"")+jj+"/"+((mm<10)?"0":"")+mm+"/"+aa+"';view_microcal(false,'"+qui+"','"+source+"',-1,0);\">"+jj+"</td>";}
else //jour du mois en cours
{
jj=idxP;mm=dateS.mois;
htm+="<td style='"+testTravail(true,xx,jj,mm,aa)+"' onmouseover='choix(this,true)' onmouseout='choix(this,false)'  onclick=\"document.getElementById('"+qui+"').value='"+((jj<10)?"0":"")+jj+"/"+((mm<10)?"0":"")+mm+"/"+aa+"';view_microcal(false,'"+qui+"','"+source+"',-1,0);\">"+jj+"</td>";}
}
htm+="</tr>";
}//-------------------------
htm+="</table>";

//affiche le tableau
source=MM_findObj(source);
source.innerHTML=htm;
source.style.visibility="";
}
else
{
	source=MM_findObj(source);
	//ferme le calendrier
	if (fermable_microcal)
	   source.style.visibility='hidden';
	   //cc=setTimeout(objet.style.visibility='hidden',200);
	   //cc=setTimeout(source.id+".style.visibility='hidden'",200);
}
}

function view_microcal2(actif,qui,source,mxS,axS)
{
if (actif)
{
//decalage du mois si on clique sur -/+
if (mxS!=-1) 
{
//clearTimeout(cc);
objet=MM_findObj(qui);
objet.focus();
fermable_microcal2=true;
dateS.mois=mxS;
dateS.annee=axS;
if (dateS.mois<1) {dateS.annee--;dateS.mois+=12;}
if (dateS.mois>12) {dateS.annee++;dateS.mois-=12;}
}
//init
Dstart=(premJourMois(dateS.mois,dateS.annee)+7-startWeek)%7;
jmaxi=JmaxMois(dateS.mois,dateS.annee);
jmaxiAvant=JmaxMois((dateS.mois-1),dateS.annee);
//si on veux ajouter le numero de la semaine ...
//idxWeek=parseInt(nbJAnnee(strucDate(new Date(dateS.mois+'-01-'+dateS.annee)))/7,10)+1;

ymaxi=parseInt((jmaxi+Dstart+1)/7,10);
//generation du tableau
//--entête
htm="<table><tr style='font-size:9px;font-family:verdana;text-align:center;'>";
htm+="<td onclick=\"view_microcal2(true,'"+qui+"','"+source+"',"+(dateS.mois-1)+","+dateS.annee+");\">-</td>";
htm+="<td colspan='5'> <b> "+moisX[dateS.mois]+"</b>&nbsp;"+dateS.annee+"</td>";
htm+="<td onclick=\"view_microcal2(true,'"+qui+"','"+source+"',"+(dateS.mois+1)+","+dateS.annee+");\">+</td></tr>";
//--corps
htm+="<tr>";
//affichage des jours DLMMJVS
for (x=0;x<7;x++) 
htm+="<td  style='font-size:9px;font-family:verdana;'><b>"+JourM[(x+startWeek)%7]+"</b></td>";
htm+="</tr>";

//------------------------
for (y=0;y<=ymaxi;y++)
{
htm+="<tr>";
for (x=0;x<7;x++)
{
idxP=y*7+x-Dstart+1;   //numero du jour
aa=dateS.annee;
xx=(x+startWeek)%7;
//jour du mois précedent
if (idxP<=0)
{
jj=idxP+jmaxiAvant;mm=dateS.mois-1;
if (mm==0)
{mm=12;aa--;}
htm+="<td style='"+testTravail(false,xx,jj,mm,aa)+"' onmouseover='choix(this,true)' onmouseout='choix(this,false)'  onclick=\"document.getElementById('"+qui+"').value='"+((jj<10)?"0":"")+jj+"/"+((mm<10)?"0":"")+mm+"/"+aa+"';view_microcal2(false,'"+qui+"','"+source+"',-1,0);\">"+jj+"</td>";
}
else if (idxP>jmaxi) //jour du mois suivant
{
jj=idxP-jmaxi;mm=dateS.mois+1;
if (mm==13)
{mm=1;aa++;}
htm+="<td style='"+testTravail(false,xx,jj,mm,aa)+"' onmouseover='choix(this,true)' onmouseout='choix(this,false)'  onclick=\"document.getElementById('"+qui+"').value='"+((jj<10)?"0":"")+jj+"/"+((mm<10)?"0":"")+mm+"/"+aa+"';view_microcal2(false,'"+qui+"','"+source+"',-1,0);\">"+jj+"</td>";}
else //jour du mois en cours
{
jj=idxP;mm=dateS.mois;
htm+="<td style='"+testTravail(true,xx,jj,mm,aa)+"' onmouseover='choix(this,true)' onmouseout='choix(this,false)'  onclick=\"document.getElementById('"+qui+"').value='"+((jj<10)?"0":"")+jj+"/"+((mm<10)?"0":"")+mm+"/"+aa+"';view_microcal2(false,'"+qui+"','"+source+"',-1,0);\">"+jj+"</td>";}
}
htm+="</tr>";
}//-------------------------
htm+="</table>";

//affiche le tableau
source=MM_findObj(source);
source.innerHTML=htm;
source.style.visibility="";
} else
{
source=MM_findObj(source);
//ferme le calendrier
if (fermable_microcal2) 
   source.style.visibility='hidden';
   //cc=setTimeout(source.style.visibility='hidden',200);
   //cc=setTimeout(source.id+".style.visibility='hidden'",200);
}
}
