Rtk.Util.Positioning = function() {

    function _isElementVisible(element)
    {
        var element_is_visible = true;
        var parent_node = element.parentNode;

        while (parent_node.tagName.toUpperCase() != "BODY")
        {
	    if (parent_node.style.display == "none" || parent_node.style.visibility == "hidden")
	    {
	        element_is_visible = false;
	        break;
	    }

	    parent_node = parent_node.parentNode;
	}

        return element_is_visible;
    }

    return {
        GetPositionInDocument: function(element)
        {

	    if (!element || element == null || !element.offsetParent || !_isElementVisible(element))
	        return [0, 0];

	    var left = 0, top = 0;

	    while (element && element != null && element.offsetParent && element.tagName.toUpperCase != "BODY")
            {

	        left += element.offsetLeft;
	        top  += element.offsetTop;

	        element = element.offsetParent;
	    }

	    var result = [ left, top ];
	    result.left = left;
	    result.top = top;

	    return result;
	}
    };

}();

