// Smooth-Scroller object

Scroller = {
	
	getpagescroll: function() {		// get the current page scroll value
		var pos = new Array();
		var x = 0, y = 0;
	
		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;
		}
	
		pos['x'] = x;
		pos['y'] = y;
	
		return pos;
	},
	
	getpagesize: function() {		// get the current page visible size
		var pos = new Array();
		var x = 0, y = 0;
	
		if ( self.innerHeight )
		{
			x = self.innerWidth;
			y = self.innerHeight;
		}
		else if ( document.documentElement && document.documentElement.clientHeight )
		{
			x = document.documentElement.clientWidth;
			y = document.documentElement.clientHeight;
		}
		else if ( document.body )
		{
			x = document.body.clientWidth;
			y = document.body.clientHeight;
		}
	
		pos['x'] = x;
		pos['y'] = y;
	
		return pos;
	},
	
	doscroll: function( dir, dest, distance ) {		// actually do the scroll
		
		var origin = Scroller.getpagescroll();
	
		window.scrollBy( 0, dir * ((distance/10)+1) );
	
		if ( dir == -1 )
		{
			if ( dest < origin['y'] )
				setTimeout( 'Scroller.doscroll('+dir+','+dest+','+(origin['y']-dest)+');', 10 );
		}
		else
		{
			var size = Scroller.getpagesize();
		
			if ( dest > (origin['y']+size['y']) )
				setTimeout( 'Scroller.doscroll('+dir+','+dest+','+(dest-(origin['y']+size['y']))+');', 10 );
		}
	},
	
	scrolltodiv: function( obj ) {		// scroll to make a div visible, if not already visible

		if ( typeof obj == 'string' )
			obj = document.getElementById( obj );
	
		if ( obj )
		{
			var origin = Scroller.getpagescroll();
			var size = Scroller.getpagesize();
			var objTop = obj.offsetTop;
		
			if ( objTop < origin['y'] )
				Scroller.doscroll( -1, objTop, origin['y']-objTop );
			else if ( objTop > (origin['y']+size['y']) )
				Scroller.doscroll( 1, objTop, objTop-(origin['y']+size['y']) );
		}
	}
}
