// xAniLine r1, Copyright 2006-2007 Michael Foster (Cross-Browser.com)

// Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL



function xAniLine(e, x, y, t, a, oe)

{

  if (!(e=xGetElementById(e))) return;

  var x0 = xLeft(e), y0 = xTop(e); // start positions

  x = Math.round(x); y = Math.round(y);

  var dx = x - x0, dy = y - y0; // displacements

  var fq = 1 / t; // frequency

  if (a) fq *= (Math.PI / 2);

  var t0 = new Date().getTime(); // start time

  var tmr = setInterval(

    function() {

      var et = new Date().getTime() - t0; // elapsed time

      if (et < t) {

        var f = et * fq; // constant velocity

        if (a == 1) f = Math.sin(f); // sine acceleration

        else if (a == 2) f = 1 - Math.cos(f); // cosine acceleration

        f = Math.abs(f);

        e.style.left = Math.round(f * dx + x0) + 'px'; // instantaneous positions

        e.style.top = Math.round(f * dy + y0) + 'px';

      }

      else {

        clearInterval(tmr);

        e.style.left = x + 'px'; // target positions

        e.style.top = y + 'px';

        if (typeof oe == 'function') oe(); // 'onEnd' handler

        else if (typeof oe == 'string') eval(oe);

      }

    }, 10 // timer resolution

  );

}


