    // Calcul la position de la soouris
    // merci oreilly cookbook pour les event
    
    function getMousePos(evt) {
        if (document.all) {
        
            mouseX = event.clientX + document.body.scrollLeft - document.body.clientLeft;
            mouseY = event.clientY + document.body.scrollTop - document.body.clientTop;
            
        } else { 
           // objExplorer(evt);
            mouseX = evt.pageX;
            mouseY = evt.pageY;
           //mouseX = evt.screenX;
           //mouseY = evt.screeny;
        }
       
      // window.status = mouseX + " " + mouseY+ ' ' +dragged +' ' + dragSens;
    }
    
    function posSouris(evt) {
        getMousePos(evt);
   }

    // calcul la position X de l'objet 
    function posX(obj) {
        if(obj.nodeName != "BODY") {
            return obj.offsetLeft + posX(obj.offsetParent);
        } else {
            return 0;
        }
    }

    // calcul la position Y de l'objet 
    function posY(obj) {
        var Y = 0;
        if((obj.nodeName != "BODY")&&(obj.nodeName != "HTML")) {
               Y = parseInt(obj.offsetTop + posY(obj.offsetParent));
       }
        return Y; 
    }
    
     // retounr true si la souris est au dessus de l'objet ou sur la bordure
    function survol(obj,border_size) {  
   
        if ((mouseX >= (posX(obj)- border_size )) && (mouseX <= (posX(obj) + obj.clientWidth + border_size)) && (mouseY >= (posY(obj)- border_size)) && (mouseY <= (posY(obj) + obj.clientHeight + border_size))) {
            return true;
        } else {
            return false;
        }
        
    }
    
    //retourne  true si la souris est en dehors de l'objet ou sur la bordure
    function outside(obj,border_size) {  
      //    window.status = mouseX + " " + posX(obj) + " " + obj.clientWidth + " " +mouseY + " " + posY(obj) + " " + obj.clientHeight;
       if ((mouseX <= (posX(obj)- border_size )) || (mouseX >= (posX(obj) + obj.clientWidth + border_size)) ||(mouseY <= (posY(obj)- border_size)) || (mouseY >= (posY(obj) + obj.clientHeight + border_size))) {
            return true;
        } else {
            return false;
        }
    }
    
    // affiche une div en fonction de la position de la souris
        function afficheDiv(div_id) {
        infoDiv = document.getElementById(div_id);
        if (document.all) {
        
            ltotal = document.body.clientWidth;
            htotal = document.body.clientHeight;
                
        } else {
        
            ltotal = document.body.parentNode.clientWidth;
            htotal = document.body.parentNode.clientHeight;
        }
      //  window.status = mouseX + " " + mouseY + " " + ltotal + " " + htotal + " " +  infoDiv.offsetWidth +" " +infoDiv.offsetHeight ;
        if (ltotal < infoDiv.offsetWidth + 10 + mouseX) {;
            infoX = mouseX - 10 - infoDiv.offsetWidth;
        } else {
            infoX = mouseX + 10;
        }
        if (htotal < infoDiv.offsetHeight + 10 + mouseY) {;
            infoY = mouseY - 10 - infoDiv.offsetHeight;
        } else {
            infoY = mouseY + 10;
        }
        
        infoDiv.style.left = infoX + "px";
        infoDiv.style.top = infoY + "px";
        infoDiv.final_height = infoDiv.clientHeight;
        infoDiv.style.height = 0+"px" ;
        infoDiv.style.visibility = "visible";
        rollDownDiv(div_id,300);
    }

    function resizeYDiv(div_id, step) {
        div_2_roll = document.getElementById(div_id);
        var height = Math.min(div_2_roll.clientHeight + step,div_2_roll.final_height);     
        div_2_roll.style.height = height +"px";
       // alert(height+" "+final_height +" "+  div_2_roll.clientHeight );
        if (height >= div_2_roll.final_height) {
            clearInterval(div_2_roll.rollDownTimer);
        }
      
    
    }    
    
    function rollDownDiv (div_id,delai) {
     
        div_2_roll = document.getElementById(div_id);
        div_2_roll.style.overflow = "hidden";
        var nb_step = 25;
        step = div_2_roll.final_height/nb_step;
        tempo = delai / nb_step;
        div_2_roll.rollDownTimer = setInterval("resizeYDiv(\""+div_id+"\","+step+")", tempo);
    
    }
    
    
    
    
    function afficheDivRestricted(div_id, restrict_div_id, overlap) {
        infoDiv = document.getElementById(div_id);
        restricDiv = document.getElementById(restrict_div_id);
        
        infoX = posX(restricDiv);
        infoY = posY(restricDiv) + restricDiv.offsetWidth - overlap;
        
        infoDiv.style.left = infoX + "px";
        infoDiv.style.top = infoY + "px";
        infoDiv.final_height = infoDiv.clientHeight;
        infoDiv.style.height = 0+"px" ;
        infoDiv.style.visibility = "visible";
        rollDownDiv(div_id,300);
    }
    
    // cache une div
     
    function cacheDiv(div_id) {
        infoDiv = document.getElementById(div_id);
        infoDiv.style.visibility = "hidden";
    }
    
   
