var SlideScript_Timeout;
var SlideScript_TargetScroll;
var SlideScript_LastScroll;
var SlideScript_Velocity = 5;

function SlideScript_GetElementPosition(obj) {
    var position = {x:0, y:0, width:0, height:0};
	var curleft = curtop = 0;
	var currentObject = obj;
	if (currentObject.offsetParent) {
		curleft = currentObject.offsetLeft;
		curtop = currentObject.offsetTop;
		while (currentObject = currentObject.offsetParent) {
			curleft += currentObject.offsetLeft;
			curtop += currentObject.offsetTop;
		}
	}
	position.x = curleft;
	position.y = curtop;
	position.width = obj.offsetWidth;
	position.height = obj.offsetHeight;
	return position;
}

function SlideScript_GetScroll()
{
    var x,y;
    if (self.pageYOffset)
    {
	    x = self.pageXOffset;
	    y = self.pageYOffset;
    }
    else if (document.documentElement && document.documentElement.scrollTop)
    {
	    x = document.documentElement.scrollLeft;
	    y = document.documentElement.scrollTop;
    }
    else if (document.body)
    {
	    x = document.body.scrollLeft;
    	y = document.body.scrollTop;
    }
    return [x,y];
}

function SlideScript_GetWindowSize()
{
    var winW = 0;
    var winH = 0;
    if( typeof( window.innerWidth ) == 'number' ) { 
        winW = window.innerWidth;
        winH = window.innerHeight;
    } 
    else if(document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
        winW = document.documentElement.clientWidth;
        winH = document.documentElement.clientHeight;
    } 
    else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
        winW = document.body.clientWidth;
        winH = document.body.clientHeight;
    }
    return [winW,winH];
}

function SlideTo(anchor)
{
	var element = document.getElementById(anchor);
	var position = SlideScript_GetElementPosition(element);
	var windowSize = SlideScript_GetWindowSize();
	SlideScript_TargetScroll = parseInt(position.y + 10);
	if(SlideScript_TargetScroll < 0)SlideScript_TargetScroll = 0;
	clearTimeout(SlideScript_Timeout);
	var scroll = SlideScript_GetScroll();
	SlideScript_LastScroll = scroll[1];
	SlideScript_Timeout = setTimeout("SlideScript_MoveTo();", 1);
}

function SlideScript_SetScroll(xScroll, yScroll)
{
	window.scrollTo(xScroll, yScroll);
}

function SlideScript_MoveTo()
{
	var scroll = SlideScript_GetScroll();
	if(scroll[1] != SlideScript_LastScroll)return;
	var scrollToSet = scroll[1];
	if(scroll[1] == SlideScript_TargetScroll)return;
	if(Math.abs(scroll[1] - SlideScript_TargetScroll) < 5)
	{
		scrollToSet = SlideScript_TargetScroll;
		SlideScript_SetScroll(scroll[0], scrollToSet);
		SlideScript_LastScroll = scrollToSet;
	}
	else
	{
		scrollToSet = parseInt(scroll[1] * 0.95 + SlideScript_TargetScroll * 0.05);
		SlideScript_SetScroll(scroll[0], scrollToSet);
		SlideScript_LastScroll = scrollToSet;
		SlideScript_Timeout = setTimeout("SlideScript_MoveTo();", 10);		
	}
}
