A quanto pare questo è un caso che non sia mai capitato a nessuno online...comunque o risolto "alla buona" (non è perfetto) e gradirei condividerlo con tutti gli sfortunati che avranno a che fare con questo stesso problema.
codice:
$(document).ready(function ()
{
var height= $("#main").height();
$("body").css("height", height);
$('#up').mouseover(function()
{
if($(window).scrollTop() < height/2)
{
$('html, body').animate({scrollTop: 0}, 200000, 'easeOutSine');
}
else
{
$('html, body').animate({scrollTop: 0}, 600000 , 'easeOutSine');
}
});
$('#up').mouseout(function()
{
$('html, body').stop();
});
$('#down').mouseover(function()
{
if($(window).scrollTop() < height/2)
{
$('html, body').animate({scrollTop:$('#end').offset().top}, 600000 , 'easeOutSine');
}
else
{
$('html, body').animate({scrollTop:$('#end').offset().top}, 200000, 'easeOutSine');
}
});
$('#down').mouseout(function()
{
$('html, body').stop();
});
});
Praticamente non ho fatto altro che determinare l'altezza totale (nel mio caso oltre i 60000 px...e sono solo all'inizio) e dividerla per due, se si sta nella parte superiore del body la velocità di discesa è maggiore di quella di salita e viceversa se ci sitrova nella parte inferiore. Inoltre ho aggiunto easeOutSine in modo da bilanciare la differenza di velocità che si viene a creare man mano che si scrolla.
Ho fatto bene???
Ciaoo