// xWinScrollTo r3, Copyright 2003-2007 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL var xWinScrollWin = null; function xWinScrollTo(win,x,y,uTime) { var e = win; if (!e.timeout) e.timeout = 25; var st = xScrollTop(e, 1); var sl = xScrollLeft(e, 1); e.xTarget = x; e.yTarget = y; e.slideTime = uTime; e.stop = false; e.yA = e.yTarget - st; e.xA = e.xTarget - sl; // A = distance if (e.slideLinear) e.B = 1/e.slideTime; else e.B = Math.PI / (2 * e.slideTime); // B = period e.yD = st; e.xD = sl; // D = initial position var d = new Date(); e.C = d.getTime(); if (!e.moving) { xWinScrollWin = e; _xWinScrollTo(); } } function _xWinScrollTo() { var e = xWinScrollWin || window; var now, s, t, newY, newX; now = new Date(); t = now.getTime() - e.C; if (e.stop) { e.moving = false; } else if (t < e.slideTime) { setTimeout("_xWinScrollTo()", e.timeout); s = e.B * t; if (!e.slideLinear) s = Math.sin(s); // if (e.slideLinear) s = e.B * t; // else s = Math.sin(e.B * t); newX = Math.round(e.xA * s + e.xD); newY = Math.round(e.yA * s + e.yD); e.scrollTo(newX, newY); e.moving = true; } else { e.scrollTo(e.xTarget, e.yTarget); xWinScrollWin = null; e.moving = false; if (e.onslideend) e.onslideend(); } }