var active_tooltip = null;

jQuery(document).ready(function(){

	jQuery(document).click(function() {
		if (active_tooltip) {
			active_tooltip.style.display = 'none';
			active_tooltip = null;
		}
		return true;
	});
	
	jQuery('.mytooltip_a').click(function() {
		if (active_tooltip) {
			active_tooltip.style.display = 'none';
			active_tooltip = null;
		}
	
		var offset = getOffset(this);
		var $this = jQuery(this);
		var div_id = $this.attr('id') + '_div';
		var div = document.getElementById(div_id);
		div.style.top = offset.top + 15 + 'px';
		div.style.left = offset.left + 50 + 'px';
		div.style.display = 'block';
		active_tooltip = div;

		return false;
	});
});

function getOffset(elem) {
    if (elem.getBoundingClientRect) {
        // "правильный" вариант
        return getOffsetRect(elem)
    } else {
        // пусть работает хоть как-то
        return getOffsetSum(elem)
    }
}

function getOffsetSum(elem) {
    var top=0, left=0
    while(elem) {
        top = top + parseInt(elem.offsetTop)
        left = left + parseInt(elem.offsetLeft)
        elem = elem.offsetParent
    }

    return {top: top, left: left}
}

function getOffsetRect(elem) {
    // (1)
    var box = elem.getBoundingClientRect()

    // (2)
    var body = document.body
    var docElem = document.documentElement

    // (3)
    var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop
    var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft

    // (4)
    var clientTop = docElem.clientTop || body.clientTop || 0
    var clientLeft = docElem.clientLeft || body.clientLeft || 0

    // (5)
    var top  = box.top +  scrollTop - clientTop
    var left = box.left + scrollLeft - clientLeft

    return { top: Math.round(top), left: Math.round(left) }
}