﻿function MoveToElement(element, pre_x, pre_y) {
  var x1 = x2 = x3 = 0;
  var y1 = y2 = y3 = 0;
  if (document.documentElement) {
      x1 = document.documentElement.scrollLeft || 0;
      y1 = document.documentElement.scrollTop || 0;
  }
  if (document.body) {
      x2 = document.body.scrollLeft || 0;
      y2 = document.body.scrollTop || 0;
  }
  x3 = window.scrollX || 0;
  y3 = window.scrollY || 0;
  var x = Math.max(x1, Math.max(x2, x3));
  var y = Math.max(y1, Math.max(y2, y3));
  data = getElementPosition(element);
  x = x - data[0];
  y = y - data[1];
  window.scrollTo(data[0] + Math.floor(x / 2), data[1] + Math.floor(y / 2));
  x = (x >= 0) ? x : -x;
  y = (y >= 0) ? y : -y;
  if((x > 0 || y > 0) && (x != pre_x || y != pre_y)){
	window.setTimeout("MoveToElement('" + element +"','"+x+"','"+y+"')", 25);
  }
}


function getElementPosition(element) {
var offsetTrail = (typeof element == 'string') ? document.getElementById(element) : element;
var offsetLeft = 0;
var offsetTop = 0;

while (offsetTrail) {
offsetLeft += offsetTrail.offsetLeft;
offsetTop += offsetTrail.offsetTop;
offsetTrail = offsetTrail.offsetParent;
}

if (navigator.userAgent.indexOf('Mac') != -1 && typeof document.body.leftMargin != "undefined") {
offsetLeft += document.body.leftMargin;
offsetTop += document.body.topMargin;
}


	data = new Array(2);
	data[0]=offsetLeft;
	data[1]=offsetTop;
	return data;
} 


