function showContainer(page){
	show(page);
	//document.getElementById('container').style.visibility='visible';
}

function setLang(lang){
	if( lang.match("fr|en") ){
		date = new Date;
		document.cookie = 'language='+lang+';';
	} else {
		document.cookie = 'language=fr;';
	}
}

function ajax(contenu,conteneur){
	
	reg = new RegExp("MSIE 6|Netscape");
	
	if( navigator.appVersion.match(reg) || navigator.appName.match(reg) || true  ){
		window.open(contenu+"&nav=page","", "menubar=no, status=no, scrollbars=yes, menubar=no");
		return;
	}
	
	var XHR = null;
	if(window.XMLHttpRequest){ // Firefox
		XHR = new XMLHttpRequest();
	} else if(window.ActiveXObject){ // Internet Explorer
		XHR = new ActiveXObject("Microsoft.XMLHTTP");
	} else { // XMLHttpRequest non supporté par le navigateur
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest... Merci d'utiliser un navigateur plus récent.");
		return;
	}
	
	document.getElementById(conteneur).innerHTML = '<center><br/><br/><br/><br/><br/><br/><img src="./images/loading.gif"</center>'
	document.getElementById(conteneur).style.visibility='visible';
	
	// envoie de la requête, methode GET et de l'url
	XHR.open("GET",contenu, true);
	// on guette les changements d'état de l'objet
	XHR.onreadystatechange = function attente(){
		// l'état est à 4, requête reçu !
		if(XHR.readyState == 4 && XHR.status == 200) {
			// ecriture de la réponse
			document.getElementById(conteneur).innerHTML = XHR.responseText;
		}
	}
	XHR.send(null);		// le travail est terminé
	
	return;
}

//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
function showHide(element) {
	if( element.style.display == 'block' || element.style.display == '' ){
		element.style.display = 'none';
	} else {
		element.style.display = 'block';
	}
}


//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
moisX=["","Janvier","Fevrier","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Decembre"];
JourM=["Di","Lu","Ma","Me","Je","Ve","Sa"];

var fermable_microcal=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"};

//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());
}

function testDateAnte(jj, mm, aa)
{
	tst=false;
	//if (jj==dnow.jour&&mm==dnow.mois&&aa==dnow.annee)
	if( aa > dnow.annee ){
		return false;
	} else {
		if( mm > dnow.mois ){
			return false
		} else {
			if( aa == dnow.annee && mm == dnow.mois && jj > dnow.jour ){
				return false;
			} else  {
				return true;
			}
		}
	}
}

/* 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) 
	{
		select_old= koi.style.background;
		koi.style.background ='#aaaaFF';
	}
	else 
	{
		koi.style.background =select_old;
	}
}


function testTravail(oldX,xx,jj,mm,aa, valide)
{
	styleX="font-family:Tahoma;font-size:10px;text-align:center;";
	styleX+=(oldX)?"":"color:#a0a0a0;"; // Couleur des dates des autres mois
	if( valide ){
		styleX+="cursor:hand;border-right:1px #a0a0a0 solid;border-bottom:1px #a0a0a0 solid;";
	}
	if (jourPause[xx]||jourFeriee[jj+"-"+mm]!=null) styleX+="background:#f0f0f0;";
	if (jj==dnow.jour&&mm==dnow.mois&&aa==dnow.annee) styleX+="border:1px 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,ki,source,mxS,axS, ante)
{
	if (actif)
	{
		//decalage du mois su on clique sur -/+
		if (mxS!=-1) 
		{
			clearTimeout(cc);
			ki.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>";
			htm+="<tr style='font-size:11px;font-family:Tahoma;text-align:center;'>";
				htm+="<td style='cursor:hand;' onclick=\"view_microcal(true,"+ki.id+","+source.id+","+(dateS.mois-1)+","+dateS.annee+", "+ante+");\">-</td>";
				htm+="<td colspan='5'> <b> "+moisX[dateS.mois]+"</b>&nbsp;"+dateS.annee+"</td>";
				if( ante == 1 && dateS.mois+1 > dnow.mois && dateS.annee >= dnow.annee ){
					htm+="<td style=\"color:#a0a0a0;\">+</td>";
				} else {
					htm+="<td  style='cursor:hand;' onclick=\"view_microcal(true,"+ki.id+","+source.id+","+(dateS.mois+1)+","+dateS.annee+", "+ante+")\">+</td>";
				}
			htm+="</tr>";
			//--corps
			htm+="<tr>";
			//affichage des jours DLMMJVS
			for (x=0;x<7;x++){
				htm+="<td style='font-size:10px;font-family:Tahoma;'><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--;}
					if( ante == 1 && !testDateAnte(jj,mm,aa) ){
						htm+="<td style='"+testTravail(false,xx,jj,mm,aa, false)+"' >"+jj+"</td>";
					} else {
						htm+="<td style='"+testTravail(false,xx,jj,mm,aa, true)+"' onmouseover='choix(this,true)' onmouseout='choix(this,false)'  onclick=\" if( testDateAnte("+jj+","+mm+","+aa+") ){ "+(ki.id)+".value='"+((jj<10)?"0":"")+jj+"/"+((mm<10)?"0":"")+mm+"/"+aa+"';"+(ki.id)+".style.color='black'; } \">"+jj+"</td>";
					}
				}
				else if (idxP>jmaxi) //jour du mois suivant
				{
					jj=idxP-jmaxi;mm=dateS.mois+1;
					if (mm==13)
					{mm=1;aa++;}
					if( ante == 1 && !testDateAnte(jj,mm,aa) ){
						htm+="<td style='"+testTravail(false,xx,jj,mm,aa, false)+"' >"+jj+"</td>";
					} else {
						htm+="<td style='"+testTravail(false,xx,jj,mm,aa, true)+"' onmouseover='choix(this,true)' onmouseout='choix(this,false)'  onclick=\" if( testDateAnte("+jj+","+mm+","+aa+") ){ "+(ki.id)+".value='"+((jj<10)?"0":"")+jj+"/"+((mm<10)?"0":"")+mm+"/"+aa+"';"+(ki.id)+".style.color='black'; } \">"+jj+"</td>";
					}
				}
				else //jour du mois en cours
				{
					jj=idxP;mm=dateS.mois;
					if( ante == 1 && !testDateAnte(jj,mm,aa) ){
						htm+="<td style='"+testTravail(false,xx,jj,mm,aa, false)+"' >"+jj+"</td>";
					} else {
						htm+="<td style='"+testTravail(true,xx,jj,mm,aa, true)+"' onmouseover='choix(this,true)' onmouseout='choix(this,false)'  onclick=\" if( testDateAnte("+jj+","+mm+","+aa+") ){ "+(ki.id)+".value='"+((jj<10)?"0":"")+jj+"/"+((mm<10)?"0":"")+mm+"/"+aa+"';"+(ki.id)+".style.color='black'; } \">"+jj+"</td>";
					}
				}
			}
			htm+="</tr>"
		}//-------------------------
		htm+="</table>"
		//affiche le tableau
		source.innerHTML=htm;
		source.style.visibility="";
	}
	else
	{
		//ferme le calendrier
		if (fermable_microcal) 
			cc=setTimeout(source.id+".style.visibility='hidden'",150);
	}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------

function trim(str, chars) {
	return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
