/*
 * xbAnimatedElement.js
 * $Revision: 1.2 $ $Date: 2003/02/07 16:04:18 $
 */

/* ***** BEGIN LICENSE BLOCK *****
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
 *
 * The contents of this file are subject to the Mozilla Public License Version
 * 1.1 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 * http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * The Original Code is Netscape Cross Browser Positionable Element code.
 *
 * The Initial Developer of the Original Code is
 * Netscape Communications Corporation.
 * Portions created by the Initial Developer are Copyright (C) 2002
 * the Initial Developer. All Rights Reserved.
 *
 * Contributor(s): Bob Clary <bclary@netscape.com>
 *
 * ***** END LICENSE BLOCK ***** */

/*
 * xbAnimatedElement - 
 * use DHMTL to position an element along a curve
 */

function xbAnimatedElement(id, pathFunc)
{
  this.id              = id;
  this.name            = 'xbAnimatedElement_' + (++xbAnimatedElement._name);
  this.runId           = null;  
  this.refreshInterval = 100;
  this.div             = null;
  this.pathFunc        = pathFunc;
  this.tick            = 0;
  
  window[this.name] = this;
}  

xbAnimatedElement._name = -1;

xbAnimatedElement.prototype.start = function ()
{
  this.stop();
  
  // since start() should be called after the document has loaded, we can finally assign element
  if (!this.div)
  {
    if (document.getElementById)
    {
      this.div = document.getElementById(this.id);
      this.styleObj = this.div.style;	
    }
    else if (document.layers)
    {
      this.div = document.layers[this.id];
      this.styleObj = this.div;
    }
    else if (document.all)
    {
      this.div = document.all[this.id];
      this.styleObj = this.div.style;	
    }
  }	
  
  var newPos = this.pathFunc(this.tick++);

  this.styleObj.left = newPos.x;
  this.styleObj.top  = newPos.y;

  this.runId = setTimeout(this.name + '.start()', this.refreshInterval);    
};

xbAnimatedElement.prototype.stop = function ()
{
  if (this.runId)
    clearTimeout(this.runId);
    
  this.runId = null;
};

