la cosa strana che vedo è questo controllo
if (!rscale<=offset) {

chi sarebbe rscale e poi xchè !rscale che equivale al false di questo var come fa ad essere minore di offset..

cmq metti quale trace x vedere la var che valore assumono e troverai l'inghippo