var currentY=0;
var newY=0;

/* taken from http://www.quirksmode.org/js/findpos.html			*/
/* this function finds the X,Y coords of an HTML DOM object 	*/
/* it returns an Array obj[x,y]									*/
function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	}
	return curtop;
}
/* end of findPos*/


function scrollBodyTo(to){
    life = 2;
    curXY=getScrollXY();
	currentY= curXY[1];
	if ((this.play)) clearInterval(this.play);
	startTime=new Date().getTime();
	
	
	if(!document.getElementById(to))
	{
	//occurs when user clicks scroll link before page has fully loaded
	//try timeout return 1 time
	    setTimeout('scrollBodyTo('+to+')', 1500);
	    return;
	    //alert('Div with an ID of '+to+' not found!'); return;
	}
	    
	this.y=findPos(document.getElementById(to))-currentY;
	this.life=life*1000;
	if(this.y!=0) this.play=setInterval(animate,10);
	
}

function animate(){
	this.del=(new Date().getTime()-startTime);
	this.delta=del/this.life;
	this.newy=Math.round(Math.easeOutQuad(del,currentY,this.y,this.life));
	window.scrollTo(0,this.newy);
	if (this.delta>1 || this.delta <0) {
	    clearInterval(this.play);
	}
}
scrollBodyTo.prototype.animate=animate;


//  Taken from:
//  Easing Equations v1.5
//  May 1, 2003
//  (c) 2003 Robert Penner, all rights reserved. 
//  This work is subject to the terms in http://www.robertpenner.com/easing_terms_of_use.html.

Math.easeLinear = function (t,b,c,d){
	return c*t/d + b;
}

Math.easeInQuad = function (t, b, c, d) { 
    return c*(t/=d)*t + b; 
}

Math.easeOutQuad = function (t, b, c, d) { 
    return -c * (t/=d)*(t-2) + b; 
}

Math.easeInOutQuad = function (t, b, c, d) { 
    if ((t/=d/2) < 1) return c/2*t*t + b; 
    return -c/2 * ((--t)*(t-2) - 1) + b; 
} 

function getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}