﻿// Special thanks to netlobo.com for this javascript tooltip code

// Empty Variables to hold the mouse position and the window size
var mousePos = null;
var winSize = null;

// Set events to catch mouse position and window size
document.onmousemove = mouseMove;
window.onresize = windowResize;

// The mouseMove and mouseCoords function track the mouse position for us
function mouseMove(ev)
{
    ev = ev || window.event;
    mousePos = mouseCoords(ev);
}

function mouseCoords(ev)
{
    if(ev.pageX || ev.pageY)
    {
        return {x:ev.pageX, y:ev.pageY};
    }
  
    return {x:ev.clientX + document.body.scrollLeft - document.body.clientLeft, y:ev.clientY + document.body.scrollTop  - document.body.clientTop};
}

// The windowResize function keeps track of the window size for us
function windowResize()
{
    winSize = {
        x: ( document.body.clientWidth ) ?
        document.body.clientWidth : window.innerWidth ,
        y: ( document.body.clientHeight ) ?
        document.body.clientHeight : window.innerHeight
    }
}

// This function shows our tool-tips
function showTip( )
{
    var tip = document.getElementById('t'+this.id);
    tip.style.position = "absolute";
    //var newTop = mousePos.y - tip.clientHeight - 10;
    var newTop = document.documentElement.scrollTop + mousePos.y + 20;
    var newLeft = mousePos.x - ( tip.clientWidth / 2 );
    
    if( newTop < 0 )
        newTop = mousePos.y + 20;
    
    if( newLeft < 0 )
        newLeft = 0;
    
    if(( mousePos.x + ( tip.clientWidth / 2 ) ) >= winSize.x - 1 )
        newLeft = winSize.x - tip.clientWidth - 2;
        
    tip.style.top = newTop;
    tip.style.left = newLeft;
    tip.style.display = "block";
}

// This function moves the tool-tips when our mouse moves
function moveTip( )
{
    var tip = document.getElementById('t'+this.id);    
    //var newTop = mousePos.y - tip.clientHeight - 10;
    var newTop = document.documentElement.scrollTop + mousePos.y + 20;
    var newLeft = mousePos.x - ( tip.clientWidth / 2 );
  
  if( newTop < 0 )
    newTop = mousePos.y + 20;
  
  if( newLeft < 0 )
    newLeft = 0;
  
  if(( mousePos.x + ( tip.clientWidth / 2 ) ) >= winSize.x - 1 )
    newLeft = winSize.x - tip.clientWidth - 2;
  
    tip.style.top = newTop;
    tip.style.left = newLeft;
}

// This function hides the tool-tips
function hideTip( )
{
    var tip = document.getElementById('t' + this.id);
    tip.style.display = "none";
}

// This function allows us to reference elements using their class attributes
document.getElementsByClassName = function(clsName){
    var retVal = new Array();
    var elements = document.getElementsByTagName("*");
    
    for(var i = 0;i < elements.length;i++)
    {
        if(elements[i].className.indexOf(" ") >= 0)
        {
            var classes = elements[i].className.split(" ");
            for(var j = 0;j < classes.length;j++)
            {
                if(classes[j] == clsName)
                    retVal.push(elements[i]);
            }
        }
        else if(elements[i].className == clsName)
            retVal.push(elements[i]);
    }
    
    return retVal;
}

// This is what runs when the page loads to set everything up
window.onload = function(){
    var ttips = document.getElementsByClassName('ttip');
  
    for( var i = 0; i < ttips.length; i++ )
    {
        ttips[i].onmouseover = showTip;
        ttips[i].onmouseout = hideTip;
        ttips[i].onmousemove = moveTip;
    }
    
    windowResize( );
}