if (typeof Jifty == "undefined") Jifty = { };
Jifty.SmoothScroll = {
interval: '',
steps: 20,
scrollTo: function( y ) {
if ( Jifty.SmoothScroll.interval )
clearInterval( Jifty.SmoothScroll.interval );
var stepsize = parseInt( ( y - Jifty.Utils.getScrollTop() ) / Jifty.SmoothScroll.steps );
Jifty.SmoothScroll.interval
= setInterval('Jifty.SmoothScroll.scrollWindow('+stepsize+','+y+')',10);
},
scrollWindow: function( amount, y ) {
var curpos = Jifty.Utils.getScrollTop();
var isAbove = ( curpos < y );
window.scrollTo( 0, curpos + amount );
var newpos = Jifty.Utils.getScrollTop();
var newIsAbove = ( newpos < y );
if ( ( isAbove != newIsAbove ) || ( curpos == newpos ) ) {
/* We've just scrolled past the destination, or we haven't moved
from the last scroll (i.e., we're at the bottom of the page),
so scroll exactly to the position
*/
window.scrollTo( 0, y );
clearInterval( Jifty.SmoothScroll.interval );
}
}
};