offsetTopreturns a value relative to offsetParent; you need to recursively add offsetParent.offsetTopacross all parents until offsetParentit is null. Consider using the jQuery method.offset ()
EDIT. jQuery, ():
function offset(elem) {
if(!elem) elem = this;
var x = elem.offsetLeft;
var y = elem.offsetTop;
while (elem = elem.offsetParent) {
x += elem.offsetLeft;
y += elem.offsetTop;
}
return { left: x, top: y };
}