// File: animate.js
// This routine animates an object on the screen.
// Requirements: dom.js; util.js;

var abortSlideID;

function slideID(ID, endX, endY, delay) {
  abortSlideID = false;
  var o = getObject(ID);
  var pos = getPos(o);
  var dX = Math.abs(pos.x - endX);
  var dY = Math.abs(pos.y - endY);
  var mX;
  var mY;
  var stop;

  if (dX == 0) {
    mX = 0;
    mY = 1;
  }
  if (dY == 0) {
    mY = 0;
    mX = 1;
  }
  if (dX != 0 && dY != 0) {
    if (dX >= dY) {
      mX = 1;
      mY = dY/dX;
    } else {
      mY = 1;
      mX = dX/dY;
    }
  }

  if (endX < pos.x) {mX = -mX;}
  if (endY < pos.y) {mY = -mY;}
  stop = Math.max(dX, dY);
  slide(ID, pos.x, mX, pos.y, mY, stop, delay);
}

function slide(ID, X, mX, Y, mY, stop, delay){
if (!abortSlideID) {
   if (stop > 0){
      X += mX;
      Y += mY;
      moveObject(getObject(ID), Math.round(X), Math.round(Y));
      setTimeout ('slide("'+ID+'",'+X+','+mX+','+Y+','+mY+','+(stop-1)+','+delay+')', delay);
    }
  }
}
