function leftOfElement(obj) {
	 var curleft = 0;
	 if (obj.offsetParent) {
	     while (obj.offsetParent) {
		 curleft += obj.offsetLeft;
		 obj = obj.offsetParent;
	     }
	 } else if (obj.x) {
	     curleft += obj.x;
	 }
	 return curleft;
     }

     function topOfElement(obj) {
	 var curtop = 0;
	 if (obj.offsetParent) {
	     while (obj.offsetParent) {
		 curtop += obj.offsetTop;
		 obj = obj.offsetParent;
	     }
	 } else if (obj.y) {
	     curtop += obj.y;
	 }
	 return curtop;
     }


function pointOnElement(e,pos) {
   var p = [ leftOfElement(e), topOfElement(e)];

   if(pos=='TL') {
     // done
   } else if(pos=='TR') {
      p = [ p[0]+e.offsetWidth, p[1] ];
   } else if(pos=='BR') {
      p = [ p[0]+e.offsetWidth, p[1]+e.offsetHeight ];
   } else if(pos=='TR') {
      p = [ p[0], p[1]+e.offsetHeight ];
   } else if(pos=='C') {
      p = [ p[0]+e.offsetWidth/2, p[1]+e.offsetHeight/2 ];
   } else if(pos=='TC') {
      p = [ p[0]+e.offsetWidth/2, p[1] ];
   } else if(pos=='BC') {
      p = [ p[0]+e.offsetWidth/2, p[1]+e.offsetHeight ];
   } else if(pos=='LC') {
      p = [ p[0], p[1]+e.offsetHeight/2 ];
   } else if(pos=='RC') {
      p = [ p[0]+e.offsetWidth, p[1]+e.offsetHeight/2 ];
   }

   return p;
}

function positionRelative(movingElement,elementOnMoving,fixedElement,
			movingPos,fixedPos) {

  var movingP = pointOnElement(elementOnMoving,movingPos);
  var fixedP = pointOnElement(fixedElement,fixedPos);

  var l = parseInt(movingElement.style.left);
  var t = parseInt(movingElement.style.top);

  movingElement.style.left = (l+fixedP[0]-movingP[0])+'px';
  movingElement.style.top = (t+fixedP[1]-movingP[1])+'px';
}
