anzi ti merita mettere tutto in una sola funzione così le evemtuali correzioni le fai una volta sola. Anzichè ritornare un numero (left o top) ritorni una array con entrambi, indice [0] sta il top indice [1] sta il left
codice:
<div style="position:absolute; top:100px; left:101px;">
<div style="position:absolute; top:100px; left:200px;">
<input id="foo">
</div>
</div>
<script>
function AutoSuggestControl(){}//<- questo puoi cancellarlo dopo i test
AutoSuggestControl.prototype.getAll=function(oNode){
var iLeft=0, iTop=0;
while(oNode.offsetParent) {
iLeft+=oNode.offsetLeft; iTop+=oNode.offsetTop;
oNode = oNode.offsetParent;
}
return [iTop, iLeft];
};
var boh=new AutoSuggestControl();
var coords=boh.getAll(document.getElementById('foo'));
alert('elemento form top='+coords[0]+', elemento form left='+coords[1]);
</script>