<!--
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

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 MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function change_classe(formulaire,champ,etat) {
  eval("document." + formulaire + "." + champ).className = etat;
}

function changeto(e,highlightcolor){

	source=e.srcElement||e.target;
	
	//if (source.tagName=="TD"||source.tagName=="TABLE")return;
	
	while(source.tagName!="TR")	source=source.parentNode;
	
	if (source.style.backgroundColor!=highlightcolor&&source.id!="ignore")source.style.backgroundColor=highlightcolor;

}

function changeback(e,highlightcolor){

	source=e.srcElement||e.target;
	
	//if (source.tagName=="TD"||source.tagName=="TABLE")return;
	
	while(source.tagName!="TR")	source=source.parentNode;
	
	if (source.style.backgroundColor!=highlightcolor&&source.id!="ignore")source.style.backgroundColor=highlightcolor;

}

//////////////////////////////////////////////////////////////////
//test de validité des données entrées dans le formulaire/////////
//////////////////////////////////////////////////////////////////

String.prototype.trim = function() {

 // skip leading and trailing whitespace
 // and return everything in between
  var x=this;
  x=x.replace("/^\s*(.*)/", "$1");
  x=x.replace("/(.*?)\s*$/", "$1");
  return x;
}


function alphaNumValidation(entered, alertbox){
	RE = /^[A-Za-zàâäéèêëîïôùûç\s,'0-9\-]+$/;
	if (!RE.test(entered.value)) {
		if (alertbox) {alert(alertbox);}
			return false;
	}else {
		return true;
	}
}

function emailValidation(entered, alertbox){
	with (entered){
		apos=value.indexOf("@"); 
		dotpos=value.lastIndexOf(".");
		lastpos=value.length-1;
		if (apos < 1 || dotpos-apos < 2 || lastpos-dotpos > 3 || lastpos-dotpos < 2 || lastpos>49) 
		{
			if (alertbox) {alert(alertbox);}
			return false;
		}else {
			return true;
		}
	} 
}

// Vérification d'un date
function isDate(d) {
  // Cette fonction permet de vérifier la validité d'une date au format jj/mm/aa ou jj/mm/aaaa
  // Par Romuald
  
  if (d == "") // si la variable est vide on retourne faux
    return false;
  
  e = new RegExp("^[0-9]{1,2}\/[0-9]{1,2}\/([0-9]{2}|[0-9]{4})$");
  
  if (!e.test(d)) // On teste l'expression régulière pour valider la forme de la date
    return false; // Si pas bon, retourne faux

  // On sépare la date en 3 variables pour vérification, parseInt() converti du texte en entier
  j = parseInt(d.split("/")[0], 10); // jour
  m = parseInt(d.split("/")[1], 10); // mois
  a = parseInt(d.split("/")[2], 10); // année

  // Si l'année n'est composée que de 2 chiffres on complète automatiquement
  if (a < 1000) {
    if (a < 89)  a+=2000; // Si a < 89 alors on ajoute 2000 sinon on ajoute 1900
    else a+=1900;
  }

  // Définition du dernier jour de février
  // Année bissextile si annnée divisible par 4 et que ce n'est pas un siècle, ou bien si divisible par 400
  if (a%4 == 0 && a%100 !=0 || a%400 == 0) fev = 29;
  else fev = 28;

  // Nombre de jours pour chaque mois
  nbJours = new Array(31,fev,31,30,31,30,31,31,30,31,30,31);

  // Enfin, retourne vrai si le jour est bien entre 1 et le bon nombre de jours, idem pour les mois, sinon retourn faux
  return ( m >= 1 && m <=12 && j >= 1 && j <= nbJours[m-1] );
}


// Vérifié qu'il s'agit bien d'une date
// entered : objet contenant la date
// alertbox : le mesage en cas d'erreur
function dateValidation(entered, alertbox){

	with (entered){
		if (isDate(entered.value) == false){
			if (alertbox!="") {alert(alertbox+"\n"+" Le format est (JJ/MM/AAAA) ou (JJ/MM/AA)");} 
			return false;
		}
		else {return true;}
	}	
}

// Vérifie que l'Objet donné est bien renseigné TRUE si c'est rempli
// entered : l'objet a vérifier
// alertbox : le message en cas d'erreur
function emptyValidation(entered, alertbox){
	with (entered){
		if (value==null || value==""){
			if (alertbox!="") {alert(alertbox);} 
			return false;
		}
		else {return true;}
	}
}


function listeValidation(entered, alertbox){
	with (entered){

		checkValue = "";
		isNumber = true;

  		MyArrayOfS=value.split(",");
		
		
		// On enleve tous les caractères non numériques
		for (i = 0; i<MyArrayOfS.length ; i = i+1){
			c = MyArrayOfS[i];
			if (isNaN(c) == true || c.trim() == ""){
				if (alertbox) {alert(alertbox);}
				return false;
			}
			
		}
		
		return true;
	}
}

// Vérifie que la valeur se trouve bien dans l'interval entre min et max
function digitValidation(entered, min, max, alertbox){
	with (entered){

		checkValue = "";
		// On enleve tous les caractères non numériques
		for (i = 0; i<value.length ; i = i+1){
			c = value.charAt(i);
			if ((isNaN(c) == false) && (c != " ")){
				checkValue = checkValue+value.charAt(i);
			}
			
		}
		
		if ((checkValue.length < min) || (checkValue.length > max) || isNaN(checkValue)){
			if (min != max){
				if (alertbox!="") {alert(alertbox+"\n"+"Le champ doit comporter entre "+min+" et "+max+" chiffres");} 
				return false;
			}
			else{
				if (alertbox!="") {alert(alertbox+"\n"+"Le champ doit comporter exactement "+min+" chiffres");} 
				return false;
			}
			
		}
		else {return true;}
	}
} 

function digitValidationStrict(entered, min, max, alertbox){
	with (entered){

		checkValue = "";
		// On enleve tous les caractères non numériques
		for (i = 0; i<value.length ; i = i+1){
			c = value.charAt(i);
			
			if ((isNaN(c) == false) && (c != " ")){
				checkValue = checkValue+value.charAt(i);
			}
			else {
				if (c != " "){
				 
					if (alertbox!="") {alert(alertbox+"\n"+"Le champ doit comporter entre "+min+" et "+max+" chiffres");} 
					return false;			
				}
			}
			
		}
		
		if ((checkValue.length < min) || (checkValue.length > max) || isNaN(checkValue)){
			if (min != max){
				if (alertbox!="") {alert(alertbox+"\n"+"Le champ doit comporter entre "+min+" et "+max+" chiffres");} 
				return false;
			}
			else{
				if (alertbox!="") {alert(alertbox+"\n"+"Le champ doit comporter exactement "+min+" chiffres");} 
				return false;
			}
			
		}
		else {return true;}
	}
} 

function digitValidationStrict2(entered,max){
	with (entered){

		checkValue = "";
		// On enleve tous les caractères non numériques
		for (i = 0; i<value.length ; i = i+1){
			c = value.charAt(i);
			
			if ((isNaN(c) == false) && (c != " ")){
				checkValue = checkValue+value.charAt(i);
			}
			else {
				if (c != " "){
				 
					alert("Le code postal doit comporter "+max+" chiffres."); 
					return false;			
				}
			}
			
		}
		
		if ((checkValue.length != max) || isNaN(checkValue)){
			alert("Le code postal doit comporter "+max+" chiffres.");
			return false;
		}
		else {return true;}
	}
} 

// Fonction permettant de vérifier une valeur numérique
// ----------------------------------------------------
// - Si min != max : vérifie que le nombre est bien dans la fourchette donnée
// - Si la valeur contient un ',' il est remplacé par '.'
// - vérifcation qu'il ne s'agit pas d'un NaN, avec datatype non renseigné
// ----------------------------------------------------
// entered : l'OBJET contenant la valeur
// min : la valeur minimal
// max : la valeur maximale
// alertbox : est le texte retourné en cas d'erreur
// datatype : une vérification au niveau du type
// 
function valueValidation(entered, min, max, alertbox, datatype){
	
	
	
	with (entered){
	
		valeur = value.replace(/\,/g,".");
				
		if (isNaN(valeur) == true) {
					
				if (alertbox != "") {
					
						alert(alertbox);
						return false;
						
				} 
					
		}
		checkvalue=parseFloat(valeur);
		if (datatype){
			
			smalldatatype=datatype.toLowerCase();
			
			if (smalldatatype.charAt(0)=="i") {
				checkvalue=parseInt(valeur);
			}
			
			if (min != max) {
				if ((parseFloat(min)==min && checkvalue < min) || (parseFloat(max)==max && checkvalue > max) || value!=checkvalue){
					if (alertbox!="") {
						alert(alertbox+"\n"+"Le champ doit être compris entre "+min+" et "+max);
					} 
					return false;
				}
				return true;
			
			}
			else return true;
			
			
		}
		else {return true;}
	}
	
} 

/**************************************** deplacement fenetre ****************************************/

function getAbsoluTop(myTarget){

	var top = 0;	

	while(myTarget!= document.body) { 
		{
			top += myTarget.offsetTop;
		}
		 myTarget = myTarget.offsetParent;   
	} 
	return top;
} 

function getAbsoluLeft(myTarget){

	var Left = 0;	

	while(myTarget!= document.body) {
		{
			Left += myTarget.offsetLeft;     	
		}
		 myTarget = myTarget.offsetParent;
	}   
	return Left;

} 
//w est la variable permettant un décalage gauche de x pixels
function getCoordsBas(n,w){

	var oOmbre = document.getElementById("ombre"+n);
	var oObject = document.getElementById("element"+n);
	var oCalque = document.getElementById("smf"+n);
	var oMenus = document.getElementById("on"+n);
	
	oOmbre.style.width = String(parseInt(oMenus.offsetWidth) + 5)+'px' ;
	oOmbre.style.height = String(parseInt(oMenus.offsetHeight) + 5)+'px' ;
	oCalque.style.left = String(getAbsoluLeft(oObject)-w)+'px' ;
	oCalque.style.top = String(getAbsoluTop(oObject) - parseInt(oCalque.offsetHeight) - 3 + document.body.scrollTop)+'px' ;
	oMenus.style.left = String(getAbsoluLeft(oObject)-w)+'px' ;
	oMenus.style.top = String(getAbsoluTop(oObject) - parseInt(oMenus.offsetHeight) - 3 + document.body.scrollTop)+'px' ;


}

function getHauteurTab(n){

	var oTd = document.getElementById("td"+n);

	if (window.navigator.appName=="Microsoft Internet Explorer"&&window.navigator.appVersion.substring(0,1)>="4"){
	oTd.style.height = String(document.body.clientHeight - 30 )+'px' ;
	}
	else{
	oTd.style.height = String(window.innerHeight - 30 )+'px' ;
	}
}
var ff = null ;

/* fonctions elementaires pour les menus: */
function montre(id) {
	  if (document.getElementById) {
		  document.getElementById(id).style.visibility="visible";
		} else if (document.all) {
		  document.all[id].style.visibility="visible";
		} else if (document.layers) {
		  document.layers[id].visibility="visible";
		} 
} 
		
function cache(id) {
  if (document.getElementById) {
	  document.getElementById(id).style.visibility="hidden";
  } else if (document.all) {
	  document.all[id].style.visibility="hidden";
  } else if (document.layers) {
  document.layers[id].visibility="hidden";
 } 
}
		
/* fonctions de "haut niveau" pour les menus*/
function montre_menu(num) {  
	/* num = numero du menu. Il faut montrer le fond, puis les ecritures */
	cache_tout();			
	montre_menu2(num);
}
function montre_menu2(num) {  
	/* num = numero du menu. Il faut montrer le fond, puis les ecritures */
	montre("smf"+num.toString());
	montre("on"+num.toString());
}
function cache_menu(num) {
	cache("smf"+num.toString());
	cache("on"+num.toString());
}
function cache_tout() {
	for (var i=1; i<9 ; i++) { cache_menu(i) ; }
}



/*
  Ce programme a été écrit par
  Roy Whittle (http://www.javascript-fx.com/)
  et GRANDEMENT AMELIORE PAR
  Patrick Rutka (p.rutka@portailpro.net)
  Ce script est disponible à 
  l'adresse http://www.dynamicdrive.com/
*/

  // Le reference est pour le placer a partir de quoi !
  function flottementMenu(id_name, posX, posY, positionHorizontal, positionVerticale, vitesse, reference, auto){
	var ns = (navigator.appName.indexOf("Netscape") != -1);
    var doc = document;
	
	function init(elt) {
		 
	var elemRef;	  

	if (reference != "") {
		elemRef = support(reference);
		elt.y = getAbsoluTop(elemRef)+posY;
		elt.x = getAbsoluLeft(elemRef)+posX;		
	} else {
		
		elt.y = posY;
		elt.x = posX;	
	
	}

      //  Activer ca  ce qui suit pour positionner l'initalisation de l'emplacement du diff au debut
	  // Sinoni içl risque de parcourir tout l'écran ... au démarrage de la page
	  // Cela permet aussi de faire des effets de travelling sympa :-) si on est en 0,0
		
	  
	  if (positionHorizontal == "droite") {
		if (reference == "") {		
		   elt.x = ns?pageXOffset+innerWidth: document.body.scrollLeft+document.body.clientWidth;
		   elt.x -=posX + elt.offsetWidth;
		} else {
		   elt.x -=posX - elt.offsetWidth;
		}
	   }
	  if (positionHorizontal == "gauche") {
		if (reference != "") {		
		    elt.x -=posX + elemRef.offsetWidth;
		}
	   }
	  
	   if (positionVerticale=="bas") {
      		if (reference == "") {		
			   elt.y=ns?pageYOffset+innerHeight:document.body.scrollTop+document.body.clientHeight;
        	   elt.y -=posY + elt.offsetHeight;
			}else {
        	   elt.y -=posY + elt.offsetHeight;
			}	
       }

	  if (positionVerticale=="haut") {
      		if (reference != "") {		
        	   elt.y -=posY - elt.offsetHeight;
			}	
      }	  
	  
	}
	
    function support(id){
      var elt=doc.getElementById?doc.getElementById(id):
                              doc.all?doc.all[id]:doc.layers[id];
    
      elt.sP=function(x,y){this.style.left=x;this.style.top=y;};
     
	  return elt;
    }
    window.stabilisation=function(id_name, posX, posY, positionVerticale, positionHorizontal, vitesse, reference, auto){
      var ftlObj = support(id_name);
      var elemRef;	  

	if (reference != "") {
		elemRef = support(reference);
	}



	  pY = 0;
 	  pX = 0;
	 
	 
	  if (positionVerticale=="haut"){
         if (reference == "") {
			 pY = ns ? pageYOffset : document.body.scrollTop;
		} else {
   		   pY=getAbsoluTop(elemRef) - ftlObj.offsetHeight;
		 }
		ftlObj.y += (pY + posY- ftlObj.y)/vitesse;
      }
      else{
		  if (positionVerticale=="bas"){
		  if (reference == "") {
		   pY=ns?pageYOffset+innerHeight: document.body.scrollTop+document.body.clientHeight;
		   pY-= ftlObj.offsetHeight;
		  } else {
   		   pY=getAbsoluTop(elemRef)+elemRef.offsetHeight;
		  }
	       ftlObj.y += (pY - posY- ftlObj.y)/vitesse;
		}
      }
	 
	  if (positionHorizontal=="gauche"){
        if (reference == "") {
			pX = ns ? pageXOffset : document.body.scrollLeft;
		} else {
            pX=getAbsoluLeft(elemRef)-elemRef.style.width - ftlObj.offsetWidth;
		}
      	ftlObj.x += (pX + posX - ftlObj.x)/vitesse;
      }
      else{
 		  if (positionHorizontal=="droite"){
		  	// A vérifier pour Moz car il semble que ce la merde !!
		     if (reference == "") {
		  	  pX=ns?pageXOffset+innerWidth: document.body.scrollLeft+document.body.clientWidth;
			  pX-=ftlObj.offsetWidth;
		    } else {
	      	   pX=getAbsoluLeft(elemRef)+elemRef.offsetWidth;
		    }
        	ftlObj.x += (pX - posX - ftlObj.x)/vitesse;
		}
      }
	 
      ftlObj.sP(ftlObj.x, ftlObj.y);
	  
      if (auto) setTimeout("stabilisation('"+id_name+"',"+posX+", "+posY+", '"+positionVerticale+"', '"+positionHorizontal+"', "+vitesse+", '"+reference+"' , "+auto+" )",0);
    }
	init(support(id_name));
    stabilisation(id_name, posX, posY, positionVerticale,positionHorizontal, vitesse, reference, auto);
  }
  
  
//-->