/*
 * $Log: xbAnimatedElement.js,v $
 * Revision 1.2  2002/07/22 14:19:42  bc6ix
 * fix license path
 *
 * Revision 1.1  2002/06/29 18:52:01  bc6ix
 * initial commit
 *
 */

/* ***** BEGIN LICENSE BLOCK *****
 * Licensed under Version: MPL 1.1/GPL 2.0/LGPL 2.1
 * Full Terms at /xbProjects-license/mpl-tri-license.txt
 *
 * 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 = 10;
  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;
};

