// JavaScript Document
var menu_actif = null;
var sous_menu_actif = null;
var cache_top = new Array();
var cache_left = new Array();	
var cache_taile_menu = new Array();	
var timeout_cache_tout = null;


// ---------------------------------------------


function getHauteur(objet){
	return objet.offsetHeight;
}

function getOffsetY(){

	return document.body.scrollTop;
		
}

// ---------------------------------------------

function setVisible(id) {

  if (document.getElementById) {
	  document.getElementById(id).style.visibility="visible";
	  fAffiche(id);	
  } else if (document.all) {
	  document.all[id].style.visibility="visible";  
	  fAffiche(id);
  } else if (document.layers) {
	  document.layers[id].visibility="visible";
	  fAffiche(id);	
  } 
} 


function setInvisible(id) {//alert(id);

	if (document.getElementById) {
		document.getElementById(id).style.visibility="hidden";
		//fHide(id);
	} else if (document.all) {
		document.all[id].style.visibility="hidden";
		fHide(id);
	} else if (document.layers) {
		document.layers[id].visibility="hidden";
		fHide(id);
	} 
}




function cacheMenu() {

	if (menu_actif != null) {	

		cache_menu(menu_actif);			
		
	}
	
	if (sous_menu_actif != null) {	

		cache_menu(sous_menu_actif);			
		
	} 
	
	menu_actif = null;
	sous_menu_actif = null;

}

function afficheMenu(menu_key) {

	unSetCacheTout();

	cacheMenu();
	
	menu_actif = menu_key;
	montre_menu(menu_key);
	sous_menu_actif = null;

}

function afficheSousMenu(menu_key) {

	unSetCacheTout();

	if (sous_menu_actif != null) {	

		cache_menu(sous_menu_actif);			
		
	} 
	
	montre_menu(menu_key);
	sous_menu_actif = menu_key;

}

function setCacheTout() {

	if (!timeout_cache_tout) {
	
		timeout_cache_tout = setTimeout("cacheMenu()",300);
		
	} 

}

function unSetCacheTout() {

	if (!timeout_cache_tout) return;

	clearTimeout(timeout_cache_tout);
	timeout_cache_tout = null;

}

function montre_menu(num) {  
	setVisible("smf"+num);
	setVisible("on"+num);
	
}

function cache_menu(num) {
	setInvisible("smf"+num);
	setInvisible("on"+num);
}


//fonction retournant l'ordonnée absolue d'un objet 
function getTopCache(myTarget){

	var key = myTarget.id.toString();

	//alert(" verif cache top : "+key+" "+cache_top[key]);

	if (cache_top[key] > 0) {
		//alert("Cache top : "+myTarget.id);
		return cache_top[myTarget.id];
	} else {

		var top = 0;	

		while(myTarget!= document.body) { 
			{
				top += myTarget.offsetTop;
			}
			 myTarget = myTarget.offsetParent;   
		} 
		
		cache_top[key] = top;
		
		//alert(" MAJ cache : "+key+" "+cache_top[key]);
		
		return top;
		
	}
} 

//fonction retournant l'abscisse absolue d'un objet
function getLeftCache(myTarget){

	var key = myTarget.id.toString();

	var Left = 0;	
	
	//alert(" verif cache left : "+key+" "+cache_left[key]);
	
	if (cache_left[key] > 0) {
		//alert("Cache left : "+myTarget.id);
		return cache_left[myTarget.id];

	} else {
	
		while(myTarget!= document.body) {
			{
				Left += myTarget.offsetLeft;     	
			}
			 myTarget = myTarget.offsetParent;
		}   
		
		cache_left[key] = top;
		
		//alert(" MAJ cache : "+key+" "+cache_left[key]);
		
		return Left;
	}		
} 

function placeMenu(n,w,z){

	var oOmbre = document.getElementById("ombre"+n);
	var oObject = document.getElementById("element"+n);
	var oCalque = document.getElementById("smf"+n);
	var oMenus = document.getElementById("on"+n);
	
	
	
	if (cache_taile_menu[n] > 0) {
		//alert("Cache menu taille : "+n);
		
	} else {
	 
		oOmbre.style.width = String(parseInt(oMenus.offsetWidth) + 5)+'px' ;
		oOmbre.style.height = String(parseInt(oMenus.offsetHeight) + 5)+'px' ;
		oCalque.style.left = String(getLeftCache(oObject)-w)+'px' ;
		oMenus.style.left = String(getLeftCache(oObject)-w)+'px' ;

		cache_taile_menu[n] = 1;
		//alert("CATCH : Cache menu taille : "+n);
	}
	
	oCalque.style.top = String(getTopCache(oObject) + oObject.offsetHeight + z + document.body.scrollTop)+'px' ;
	oMenus.style.top = String(getTopCache(oObject) + oObject.offsetHeight + z + document.body.scrollTop)+'px' ;


}

 // 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);
 }
	
	
