var Mac = (navigator.appVersion.indexOf("Macintosh") != -1);

var IE  = (navigator.appVersion.indexOf("MSIE") != -1) && !(navigator.userAgent.indexOf("Opera") != -1);



function pageScrollToTop() {

	pageScrollTo(0);

}



function pageScrollToObj( id ) {

	var y = _v_GetObjPosY(id);

	

	pageScrollTo( y );

}



function pageScrollTo( y ) {



	var w = window;

	var d = document.documentElement;

	var b = document.body;

	var mac = Mac && IE;

	

	var windowH = (w.innerHeight) ? w.innerHeight : (!mac) ? d.offsetHeight : b.scrollHeight;

	var pageH   = (!mac) ? b.scrollHeight : d.offsetHeight;

	var maxY    = (pageH > windowH) ? pageH - windowH : 0;



	if( _v_scrollTimer ) clearInterval( _v_scrollTimer );

	

	_v_scrollToY = y < maxY ? y : maxY;

	_v_scrollLastY = _v_GetScrollPosY();

	_v_scrollTimer = setInterval( '_v_ScrollDo();', 15 );

}



var _v_scrollToY;

var _v_scrollLastY;

var _v_scrollTimer;



function _v_ScrollDo() {

	var d = _v_scrollLastY - _v_scrollToY;

	var done = false;

	if( Math.abs(d)<1 ) {

		done = true;

		_v_scrollLastY = _v_scrollToY;

	} else if( _v_GetScrollPosY() != Math.floor(_v_scrollLastY) ) done = true;

	else _v_scrollLastY -= d / 10;

	self.scrollTo( 0, Math.floor(_v_scrollLastY) );

	if( done ) {

		clearInterval( _v_scrollTimer );

		_v_scrollTimer = null;

	}

}



function _v_GetScrollPosY() {

	var w = window;

	var d = document.documentElement;

	var b = document.body;

	return (w.scrollY) ? w.scrollY : (d.scrollTop) ? d.scrollTop  : b.scrollTop;

}



function _v_GetObjPosY( id ) {

	var o = vGetObj(id);

	if( document.getElementById ) return o.offsetTop;

	if( IE ) return o.style.pixelTop;

	return o.top;

}

