function tooltip_findPosX(obj) {
    var curleft = 0;
    if (obj.offsetParent) {
        while (true) {
            if(obj == null) {
                break;
            }
            curleft += obj.offsetLeft
            obj = obj.offsetParent;
        }
    } else if (obj.x) {
        curleft += obj.x;
    }
    return curleft;
}

function tooltip_findPosY(obj) {
    var curtop = 0;
    if (obj.offsetParent) {
        while (true) {
            if(obj == null) {
                break;
            }
            curtop += obj.offsetTop
            obj = obj.offsetParent;
        }
    } else if (obj.y) {
        curtop += obj.y;
    }
    return curtop;
}

function tooltip_show(tooltipId, parentId, posX, posY) {
    var tooltip = document.getElementById(tooltipId);

    if ((tooltip.style.top == '' || tooltip.style.top == 0) && (tooltip.style.left == '' || tooltip.style.left == 0)) {
        // need to fixate default size (MSIE problem)
        tooltip.style.width = tooltip.offsetWidth + 'px';
        tooltip.style.height = tooltip.offsetHeight + 'px';

        var parent = document.getElementById(parentId);

        var x = tooltip_findPosX(parent) + posX;
        var y = tooltip_findPosY(parent) + posY;

        tooltip.style.top = y + 'px';
        tooltip.style.left = x + 'px';
    }

    tooltip.style.visibility = 'visible';
}

function tooltip_hide(id) {
    var tooltip = document.getElementById(id);
    tooltip.style.visibility = 'hidden';
}
