SmoothScroll = {
	speed: 10,
	_interval : false,
	_lastScrollTop : -1,
	
	scrollTo: function(id, scrollContainer)
	{
		var start, parent, dest;

		start=this._getScrollTop(scrollContainer);
		parent=document.getElementById(id);
		dest=parent.offsetTop;
		if((navigator.appVersion.indexOf('MSIE 7.')!=-1))
		{
			while(parent=parent.parentNode)
			{
				if(!isNaN(parent.offsetTop))
					dest+=parent.offsetTop;
			}
		}
		clearInterval(this._interval);
		this._lastScrollTop=-1;
		this._interval = setInterval(this._doScroll.partial(dest, parseInt((dest-start)/(100/this.speed)), id, scrollContainer).bind(this), 10);
	},
	
	_doScroll : function(dest, amount, id, scrollContainer)
	{
		if(Math.abs(dest-this._getScrollTop(scrollContainer)) > Math.abs(amount) && this._lastScrollTop!=this._getScrollTop(scrollContainer))
		{
			this._lastScrollTop = this._getScrollTop(scrollContainer);
			if(!scrollContainer)
				window.scrollBy(0, amount);
			else
				scrollContainer.scrollTop += amount;
		}
		else
		{
			if(!scrollContainer)
				window.scrollTo(null, dest);
			else
				scrollContainer.scrollTop = dest;
			clearInterval(this._interval);
		}
	},

	_getScrollTop: function(scrollContainer)
	{
		if(!scrollContainer)
		{
			return document.body.scrollTop? document.body.scrollTop :
				(window.pageYOffset? window.pageYOffset :
					(document.body.parentElement? document.body.parentElement.scrollTop : 0))
		}
		else
			return scrollContainer.scrollTop;
	}
}

