function (/*DomNode*/ node, /*Object*/ computedStyle) (view source)
var s = computedStyle||gcs(node), me = d._getMarginExtents(node, s);
var l = node.offsetLeft - me.l, t = node.offsetTop - me.t;
if(d.isMoz){// Mozilla:// If offsetParent has a computed overflow != visible, the offsetLeft is decreased// by the parent's border.// We don't want to compute the parent's style, so instead we examine node's// computed left/top which is more stable.var sl = parseFloat(s.left), st = parseFloat(s.top);
if(!isNaN(sl)&&!isNaN(st)){
l = sl, t = st;
}else{// If child's computed left/top are not parseable as a number (e.g. "auto"), we// have no choice but to examine the parent's computed style.var p = node.parentNode;
if(p && p.style){var pcs = gcs(p);
if(pcs.overflow!= "visible"){var be = d._getBorderExtents(p, pcs);
l += be.l, t += be.t;
}}}}elseif(d.isOpera){// On Opera, offsetLeft includes the parent's bordervar p = node.parentNode;
if(p){var be = d._getBorderExtents(p);
l -= be.l, t -= be.t;
}}return{
l: l,
t: t,
w: node.offsetWidth + me.w,
h: node.offsetHeight + me.h};