


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"};

var dateS= strucDate(new Date());//date Selectionné
var dnow= strucDate(new Date());//date actuelle

//structure la date 
function strucDate(dateX) 
{return {"pos":dateX.getDay(),"jour":dateX.getDate(),"mois":dateX.getMonth()+1,"annee":dateX.getFullYear()};}
//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 scrollToTop() {
	$(window).scroll(function() {
	// Lorsque l'écran se situe soit tout en haut, soit tout en bas, on n'affiche pas le bouton
		if($(window).scrollTop() <= 500 || $(window).scrollTop() >= pos.y - 850)
		{
			$('#scrollToTop').hide();
		} else {
			$('#scrollToTop').show();
		}
		// Gestion du menu de gauche
		if($(window).scrollTop() <= 245 || $(window).scrollTop() >= pos.y - 300) 
		{
			$('#bloc_gauche ul').removeClass('menu_fixe');
		} else {
			$('#bloc_gauche ul').addClass('menu_fixe');
		}
	});
}
 
/* 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 ='#c0c0FF';
}
else 
{
koi.style.background =select_old;
}
}


function testTravail(oldX,xx,jj,mm,aa)
{
styleX="font-family:Tahoma;font-size:10px;text-align:center;";
styleX+=(oldX)?"":"color:#e0e0e0;";
styleX+="cursor:hand;border-right:1px #e0e0e0 solid;border-bottom:1px #e0e0e0 solid;";
if (jourPause[xx]||jourFeriee[jj+"-"+mm]!=null) styleX+="background:#f0f0f0;";
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,ki,source,mxS,axS)
{
	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><tr style='font-size:10px;font-family:Tahoma;text-align:center;'>";
		htm+="<td style='cursor:hand;' onclick=\"view_microcal(true,"+ki.id+","+source.id+","+(dateS.mois-1)+","+dateS.annee+");\">-</td>";
		htm+="<td colspan='5'> <b> "+moisX[dateS.mois]+"</b>&nbsp;"+dateS.annee+"</td>";
		htm+="<td  style='cursor:hand;' onclick=\"view_microcal(true,"+ki.id+","+source.id+","+(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: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--;}
					htm+="<td style='"+testTravail(false,xx,jj,mm,aa)+"' onmouseover='choix(this,true)' onmouseout='choix(this,false)'  onclick=\""+(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++;}
					
					htm+="<td style='"+testTravail(false,xx,jj,mm,aa)+"' onmouseover='choix(this,true)' onmouseout='choix(this,false)'  onclick=\""+(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;
					htm+="<td style='"+testTravail(true,xx,jj,mm,aa)+"' onmouseover='choix(this,true)' onmouseout='choix(this,false)'  onclick=\""+(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'",500);
	}
}

function EcritCook(champ, valeur) 
{
	var exp=new Date();
	var maintenant=new Date() ;
	var nbms ;
	var exputc ;
	nbms= maintenant.getTime();
	exp.setTime(nbms+3600*10*24*365) ;
	exputc=exp ;
	exputc.toUTCString();
	document.cookie=champ+"="+valeur+";expires="+exp.toUTCString();
}
// function rédefinie
function dateadd(per,n,d) {
	//alert(per);
	// format = 01/01/2005
   switch(per) {
      case "y": d.setYear(d.getFullYear()+n); break
      case "m": 
	  
	//alert (d);
		jour = d.substring(0,2);
		mois = (d.substring(3,5)*1);
		annee = (d.substring(6,10)*1);
		//alert (12 % 12);
		if (n >=12) {moisplein = n ; annee = (annee*1) + (Math.round(moisplein / 12)*1); n = moisplein % 12 ;}
		//alert (annee);
		mois = (mois*1) + (n*1); 		
		//alert (mois);	
		//alert (n);
		if (mois > 12) { annee = (annee*1) + (Math.round(mois / 12)*1); mois = (mois*1) -12; }
		if (mois < 10) mois = '0' + (mois*1);
		d = jour + '/' + mois + '/' + annee;
   }
	//alert (d);
	/*
   switch(per) {
      case "yyyy": d.setYear(d.getFullYear()+n); break
      case "m": d.setMonth(d.getMonth()+n); break
      case "ww": n*=7
      case "d": d.setDate(d.getDate()+n); break
      case "h": d.setHours(d.getHours()+n); break
      case "n": d.setMinutes(d.getMinutes()+n); break
      case "s": d.setSeconds(d.getSeconds()+n)
   }
   */
return d
}
//-------------------------------------------------------------
//  Nom Document : gfbulle.js
//  Auteur       : G.Ferraz
//  Objet        : Info Bulle...
//  Creation     : 01.12.2003
/*-------------------------------------------------------------
Version :
15.09.2008
 - Ajout possibilite d'afficher un objet cache
 - BulleHide n'est plus obligatoire
 - Optimisations diverses
15.08.2007
 - Ajout fonction Init_Bulle plus esprit DOM plus modif. mineures.
10.11.2006
 - Correction Bug sous FF si document <DIV style="float...">
15.09.2006
 - Ajout parametre x_ et y_ sur la fonction BulleWrite
 - Amelioration, modif. mineures.
29.05.2006
 - Compatibilite IE6 et DOCTYPE
10.11.2003
 - version initiale
-------------------------------------------------------------*/
var bullewrite = BulleWrite;
var Mouse_X;                // Position X en Cours de la Mouse
var Mouse_Y;                // Position Y en Cours de la Mouse
var Decal_X;                // Decalage X entre Pointeur Mouse et Bulle
var Decal_Y;                // Decalage Y entre Pointeur Mouse et Bulle
var bBULLE  = false;        // Flag Affichage de la Bulle
var Fenetre = new Object(); // pour dimension fenetre
//-- 10.11.2006 ----------------------------
// correction bug sur <DIV style="float...">
// Gestion Probleme Barre de scroll sous FireFOX
//------------------------------------------
function Win_GetDimension(){
  //-- Variables locales
  var Top, Left, Width, Height;
  var ddE = document.documentElement;
  var dB  = document.body;

  if( window.innerWidth){
    with( window){
      //-- position scrolling
      Left   = pageXOffset;
      Top    = pageYOffset;
      //-- dimension scroll compris
      Width  = innerWidth;
      Height = innerHeight;
      //-- Recup Max et min Hauteur du document
      var H_Max = Math.max( ddE.clientHeight, dB.clientHeight);
      var H_Min = Math.min( ddE.clientHeight, dB.clientHeight);
      //-- si hauteur document plus grand que fenetre
      if( H_Max > Height)
        Height = H_Min;
      //-- si hauteur document plus petit que fenetre
      else
        Height = H_Max;
      //-- Recup Max et min Largeur du document
      var L_Max = Math.max( ddE.clientWidth, dB.clientWidth);
      var L_Min = Math.min( ddE.clientWidth, dB.clientWidth);
      //-- si largeur document plus grand que fenetre
      if( L_Max > Width)
        Width = L_Min;
      //-- si largeur document plus petit que fenetre
      else
        Width = L_Max;
    }
  }
  else{ // Cas Explorer a part le plus simple
    var DocRef;
    if( ddE && ddE.clientWidth)
      DocRef = ddE;
    else
      DocRef = dB;
    with( DocRef){
      Left   = scrollLeft;
      Top    = scrollTop;
      Width  = clientWidth;
      Height = clientHeight;
    }
  }
  return({ width : Width, height : Height, top: Top, right: Left +Width, bottom: Top + Height, left: Left });
}
//------------------------------------
function ObjShowAll( div_, x_, y_, z_){
  var O_Bulle = document.getElementById( div_);
  var MaxX, MaxY;
  var Haut, Larg;
  var SavY = y_;
  if( O_Bulle){
    //-- Recup. dimension du DIV
    Larg = O_Bulle.offsetWidth;
    Haut = O_Bulle.offsetHeight;
    //-- Reajuste dimension fenetre
    MaxX = Fenetre.right  - Larg;
    MaxY = Fenetre.bottom - Haut;
    //-- Application Bornage
    if( x_ > MaxX) x_ = MaxX;
    if( x_ < Fenetre.left) x_ = Fenetre.left;
    if( y_ > MaxY) y_ = MaxY;
    if( y_ < Fenetre.top)  y_ = Fenetre.top;
    //-- si en bas On reajuste
    //-- pour que la bulle ne prenne pas le focus
    if( y_== MaxY){
      var DeltaY = MaxY -SavY;
      if( Mouse_X > x_) // Ajout optimisation placement
        y_ = MaxY - DeltaY -Haut -2*Decal_Y;
    }
    //-- Place la bulle
    O_Bulle.style.left       = x_ +"px";
    O_Bulle.style.top        = y_ +"px";
    O_Bulle.style.zIndex     = z_;
    O_Bulle.style.visibility = "visible";
  }
}
//-- 15.09.2006 ------------------------
// Ajout Fonction Add_Event
//--------------------------------------
function Add_Event( obj_, event_, func_, mode_){
  if( obj_.addEventListener)
    obj_.addEventListener( event_, func_, mode_? mode_:false);
  else
    obj_.attachEvent( 'on'+event_, func_);
}
//-- 15.09.2006 ------------------------
// Ajout parametre x_ et y_
//-- 15.09.2008 ------------------------
// Ajout passage de l'ID d'un Objet
//--------------------------------
function BulleWrite( txt_, x_, y_){
  var O_Bulle = document.getElementById( 'GF_BULLE');
  //-- Test oubli parametre ou vide
  txt_ = txt_ ? txt_ :"<span style='color:red;'><b>ERREUR<\/b> : param&egrave;tre <b>txt_<\/b> omis...<\/span>";
  if( O_Bulle){
    //-- Recup dimension d'affichage
    Fenetre = Win_GetDimension();
    // Decalage hors de la Bulle
    Decal_X =( x_ ? x_: 5);  //  Decal_X = 5 par defaut
    Decal_Y =( y_ ? y_: 5);  //  Decal_Y = 5 par defaut

    //-- Teste si ID Objet
    var tabTmp = txt_.split(':');
    if( tabTmp[0].toLowerCase() ==('id')){
      var szID = tabTmp[1];
      var O_Src = document.getElementById( szID);
      if( O_Src){
        var O_Clone = O_Src.cloneNode( true);
        O_Bulle.appendChild( O_Clone);
        O_Clone.style.display = '';
        O_Clone.style.visibility = 'visible';
        bBULLE= true;
      }
      else{
        //-- ERREUR on previent
        txt_ ="<span style=\'color:red;\'\><b>ERREUR<\/b> : Objet ID : [<b>"+ tabTmp[1] +"<\/b>] non d&eacute;finie...<\/span>";
        setTimeout( "BulleWrite(\"" + txt_ +"\"," + x_+"," + y_+")", 10);
        return( false);
      }
    }
    else{
      //-- Ecriture de la Bulle
      O_Bulle.innerHTML = "<div class='gfbulle'>" +txt_ +"<\/div>";
    }
    //-----------------------------------------//
    // IMPORTANT on n'affiche pas la Bulle     //
    // l'evenement MouseOver va avec MouseMove //
    //-----------------------------------------//
    // ObjShowAll('GF_BULLE', Mouse_X +Decal_X, Mouse_Y +Decal_Y, 1000);
    bBULLE= true;
    return( true);
  }
 return(false);
}
//------------------
function BulleHide(){
  var O_Bulle = document.getElementById( 'GF_BULLE');
  with(O_Bulle){
    innerHTML     = "";
    style.left    = -1000 +"px";
    style.top     = -1000 +"px";
    style.zIndex  = 0;
    style.visibility = "hidden";
  }
  bBULLE = false;
  return(true);
}
//--------------------
function WhereMouse(e){
  var O_Src;
  var ddE = document.documentElement;
  var dB  = document.body;
  //-- On traque les hybrides
  if( e && e.target){
    Mouse_X = e.pageX;
    Mouse_Y = e.pageY;
    O_Src   = e.target;
  }
  //-- Pour IE
  else{
    var DocRef;
    if( ddE && ddE.clientWidth)
      DocRef = ddE;
    else
      DocRef = dB;

    Mouse_X = event.clientX +DocRef.scrollLeft;
    Mouse_Y = event.clientY +DocRef.scrollTop;
    O_Src   = event.srcElement;
  }
  //-- Affiche Bulle si necessaire
  if( bBULLE){
    //-- Ajoute evenement mouseout
    if( !O_Src.gf_flag){
      O_Src.gf_flag = true;
      Add_Event( O_Src, 'mouseout', BulleHide);
    }
    ObjShowAll('GF_BULLE', Mouse_X +Decal_X, Mouse_Y +Decal_Y, 1000);
  }
  return( true);
}
//-- 15.08.2007 ---------------------------
// Fonction plus DOM que les document.write
//-----------------------------------------
function Init_Bulle(){
  if( document.createElement){
    //-- Creation du DIV Bulle
    var O_New = document.createElement('div');
    //-- Definition du style
    with( O_New){
      id               = "GF_BULLE";
      style.position   = "absolute";
      style.left       = "0px";
      style.top        = "0px";
      style.width      = "auto";
      style.height     = "auto";
      style.zIndex     = 0;
      style.visibility = "hidden";
    }
    //-- Ajout de l'element DIV
    document.body.appendChild( O_New);
    //-- Ajout evenement position
    Add_Event( document, 'mousemove', WhereMouse);
  }
}
//== INITIALISATION ==================================
Add_Event( window, 'load', Init_Bulle);
//-- EOF ------------------------------------------------------

