﻿$(document).ready(function()
{
    $("#info-graphic").click(function()
    {
        showTooltip(this);
        return false;
    });
    $("a.close-tooltip").click(function()
    {
        closeTooltip();
        return false;
    });
});

showTooltip = function(selector)
{
    var clickElementy = getAbsoluteTop(selector) - $('#tooltip').height() + 10; 
    var clickElementx = getAbsoluteLeft(selector) - 400;
    
    $("#tooltip").css(
    {
    	left: clickElementx + "px",
    	top: clickElementy + "px"
    });
    $("#tooltip").hide().fadeIn("fast");
    addViewportListener();
}

addViewportListener = function()
{
    if ($("#viewport-listener").length == 0)
    {
   		var viewport = $("div#viewport");
   		viewport.append("<div id='viewport-listener'></div>");
   		$("#viewport-listener").css("width",viewport.width()).css("height",viewport.height()).click(function(event)
   		{
   			closeTooltip();
   		});
   	}
}

closeTooltip = function ()
{
    $("#tooltip").css("display", "none");
    $("#viewport-listener").unbind("click").remove();
}

function getAbsoluteLeft(o)
{
    // Get an object left position from the upper left viewport corner
    // o = document.getElementById(objectId)
    oLeft = o.offsetLeft            // Get left position from the parent object
    while (o.offsetParent != null) {   // Parse the parent hierarchy up to the document element
        oParent = o.offsetParent    // Get parent object reference
        oLeft += oParent.offsetLeft // Add parent left position
        o = oParent
    }
    return oLeft;
}

function getAbsoluteTop(o)
{
    // Get an object top position from the upper left viewport corner
    //o = document.getElementById(objectId)
    oTop = o.offsetTop            // Get top position from the parent object
    while (o.offsetParent != null) { // Parse the parent hierarchy up to the document element
        oParent = o.offsetParent  // Get parent object reference
        oTop += oParent.offsetTop // Add parent top position
        o = oParent
    }
    return oTop;
}
