
/** Copyright (c) 2007-2008 Autonoto Inc. All rights reserved. **/

//id - id of a tooltip box (<div>)
//isVisible - whether the tooltip is visible or not
//event - event object to detect mouse pointer position
function showTooltipBox(id, isVisible, event) {
    var tooltipBox = document.getElementById(id);
    

    if(isVisible){
        //alert("X: "+event.screenX + "\nY: " + event.screenY);    
        tooltipBox.style.display = "block";
    } else {
        tooltipBox.style.display = "none";
    }
    
    drawTooltipBox(tooltipBox, event);
}


function moveTooltipBox(id, event) {
    var tooltipBox = document.getElementById(id);
    drawTooltipBox(tooltipBox, event);
}

function getWinWidth(){
   var iWidth = 0;

   if (document.documentElement && document.documentElement.clientWidth){
       iWidth = parseInt(document.documentElement.clientWidth,10);
   }
   else if (document.body){
       iWidth = parseInt(document.body.offsetWidth,10);
   }

   return iWidth;
}
function getWinHeight(){
   var iHeight = 0;

   if (self.innerWidth)
   {
       iHeight = self.innerHeight;
   }
   else if (document.documentElement && document.documentElement.clientHeight){
       iHeight = parseInt(document.documentElement.clientHeight,10);
   }
   else if (document.body){
       iHeight = parseInt(document.body.offsetHeight,10);
   }

   return iHeight;
}

function drawTooltipBox(tooltipBox,e) {
    var posx = 0;
    var posy = 0;

    //this is for Opera & FF
    if (e.pageX || e.pageY) {
        posx = e.pageX;
        posy = e.pageY;
    }
    //this is for IE
    else if (e.clientX || e.clientY) {
        posx = e.clientX + document.body.scrollLeft
            + document.documentElement.scrollLeft;
        posy = e.clientY + document.body.scrollTop
            + document.documentElement.scrollTop;
    }

    //get window scroll browser independent
    var top = (window.pageYOffset)?(window.pageYOffset):
        (document.documentElement)?document.documentElement.scrollTop:
        document.body.scrollTop; 
  
    var winWidth = getWinWidth();
    var ttWidth = tooltipBox.offsetWidth + 5; //5 is a margin
    var offset_x = posx;

    var winHeight = getWinHeight();
    var ttHeight = tooltipBox.offsetHeight + 15; //15 is a margin
    var offset_y = posy;

    var tooNarrow = false;
    var tooLow    = false;

    if ( (posx + ttWidth) > winWidth) {
        var offset = winWidth - (posx + ttWidth);
        offset_x = (posx + offset);
        offset_y = (posy + 15);//display below pointer so
                               //tt doesn't cover tt icon
        tooNarrow = true;
    } else {
        offset_x = (posx + 5);
        offset_y = (posy - 20);
    }

    if ( (posy + ttHeight - top) > winHeight && !tooNarrow) {
        var offset = ttHeight;
        offset_y = top + winHeight - ttHeight - 5;
    }
    tooltipBox.style.left = offset_x + "px";
    tooltipBox.style.top  = offset_y + "px";
}
