    var slideDelay = 10;
    var slideSteps = [12,12,12,12,9,7,7,7,6,6,5,5,2,2,2,-2,-2,-2];
    var slideTimers = new Object();
    var slidePositions = new Object();
    function slideTo(id, to, from, step) {
      clearTimeout(slideTimers[id]);
      if(slidePositions[id] == undefined) slidePositions[id] = 0;
      if(step == undefined) step = 1;
      if(from == undefined) from = slidePositions[id];
      var distance, move;
      if(step == slideSteps.length) slidePositions[id] = to; else {
        distance = to - from;
        move = distance * (slideSteps[step-1]/100);
        slidePositions[id] = slidePositions[id] + (distance >= 0 ? Math.ceil(move) : Math.floor(move));
      }
      document.getElementById(id).style.top = 0 - slidePositions[id] + "px";
      step++;
      if(step == slideSteps.length && Math.abs((to - slidePositions[id]) / distance) > Math.abs(slideSteps[slideSteps.length-1] / 100)) step--;
      if(step <= slideSteps.length) slideTimers[id] = setTimeout(function() { slideTo(id, to, from, step); }, slideDelay);
    }
