function backToTop() { 
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)); 
window.scrollTo(Math.floor(x / 2), Math.floor(y / 2)); 
if (x > 0 || y > 0) { 
window.setTimeout("backToTop()", 25); 
} 
} 


var waitTimer;

function backToTop() { 
	jumpTo(0, 0, 7, 5);
} 

function jumpTo(dstY, srcY, scrollRate, waitMillSec) {
  if(waitTimer) {
		clearTimeout(waitTimer);
  }
  
  if( ! dstY || dstY < 0 ) {
		dstY = 0;
  }
  
  if( ! srcY ) {
		srcY = 0 + getWindowYOffset();
  }
  
  if( ! scrollRate ) {
		scrollRate = 5;
  }

  if( ! waitMillSec ) {
		waitMillSec = 20;
  }

  srcY += (dstY - getWindowYOffset()) / scrollRate;
  
  if(srcY < 0) {
		srcY = 0;
  }
  
  posY = Math.floor(srcY);
  window.scrollTo(0, posY);

  if(posY != dstY) {
		waitTimer = setTimeout("jumpTo("+ dstY +", "+ srcY +", "+ scrollRate +", "+ waitMillSec +")", waitMillSec);
  } else if(posY == dstY) {
		clearTimeout(waitTimer);
  } else if(posY < 1) {
		window.scroll(0, 0);
  }
}

function getWindowYOffset() {
	if (document.documentElement) { 
		return document.documentElement.scrollTop;
	} else if (document.body) { 
		return document.body.scrollTop;
	} else {
		return 0;
	}
}
