У меня есть различные массивы и ограничения что бы работала нормально но тут самая выжимка без лишних вещей.
Вопрос в том как устроить плавную анимацию дальнейшей прокрутки. 
function down(evt) {
	evt = (evt || event);
	yDown = evt.pageY;
	tDown = new Date().getTime();
}
function up(evt) {
	evt = (evt || event);				
	time = new Date().getTime() - yDown;
	y = yDown - evt.pageY;
	speed = (y/time);            
	
}
function scroll(){
//??
document.getElementById("Scroll").style.marginTop = marginTop - speed*100;
speed = 0.9*speed;
//??
}
Вопрос как правильно сделать цикл выполнения scroll() до тех пор пока speed не станет 0 . 
С самого начала у маня был setIterval который работал всё время. 
document.getElementsByTagName("body")[0].ready = (setInterval('scroll()', 41)
По тому же принципу можно постоянно чистить этот интервал если speed < 0 и запускать заново на up(evt).
Попробовал зациклить setTimeout() вызовом в конце.
function scroll(){
document.getElementById("Scroll").style.marginTop = marginTop - speed*100;
speed = 0.9*speed;
if(speed > 0)setTimeout('scroll();',41)
}
Придумал даже такой ужас, но так и не рискнул проверить работоспособность.
for (var i=0;i <inumber;i++){
            setTimeout('scroll();',41*i)
};
Как лучше делать подобную плавную анимацию?
Задача для мобильного браузера. По этому как загрузить его как можно меньше?