
function animatedObject(elementName,loop,speed,steps,endRoutines,route){

  this.elementName = elementName;
  this.loop = loop;
  this.speed = speed;
  this.steps = steps;
  this.frameIndex = 0;
  this.endRoutines = endRoutines;
  this.route = route.split(',');

  this.animate = animateObject;
  this.moveTo = moveToObject;
  this.show = showObject;
  this.hide = hideObject;
  this.setRoute = setRouteObject;
  this.setEndRoutines = setEndRoutinesObject;

  animatedObjects[elementName] = this;
}


function stopTimeline(timelineNumber){
   animationTime[timelineNumber] = animationTimeline[timelineNumber].length;
}

function startTimeline(timelineNumber) {
  animationTime[timelineNumber] = 0;
  timelineController(timelineNumber);
}

function timelineController(timelineNumber) {
    if (animationTime[timelineNumber] <= animationTimeline[timelineNumber].length - 1) {
      animationTime[timelineNumber]++;
        if (animationTimeline[timelineNumber][animationTime[timelineNumber]] != null){
          eval(animationTimeline[timelineNumber][animationTime[timelineNumber]]);
        }
        setTimeout('timelineController(' + timelineNumber + ')', 100);
    }
}

function showObject(){
  eval(layerObj + '["' + this.elementName + '"]' + styleObj + '.visibility = "visible"');
}
        
function hideObject(){
  eval(layerObj + '["' + this.elementName + '"]' + styleObj + '.visibility = "hidden"');
}

function setRouteObject(route) {
  this.route = route.split(',');
}

function setEndRoutinesObject(endRoutines) {
  this.endRoutines = endRoutines;
}

function moveToObject(left, top){
    if (isNS) { 
      top -= 4;
      left -= 4;
    }
    if (!isNS && this.elementName.substring(0, 3) == 'com') {
      left -= 4;
      top -= 4;
    }
  eval(layerObj + '["' + this.elementName + '"]' + styleObj + '.top = top');
  eval(layerObj + '["' + this.elementName + '"]' + styleObj + '.left = left');
}

function animateObject(){
    if (this.route.length > 4 && this.frameIndex < this.route.length)  {
      this.moveTo(this.route[this.frameIndex], this.route[this.frameIndex + 1]);
      this.frameIndex += 2;
      setTimeout('animatedObjects["' + this.elementName + '"].animate()', this.speed);
    }
    else if (this.route.length == 4 && this.frameIndex <= this.steps) {
      this.moveTo(parseInt(this.route[0]) + (this.frameIndex * ((parseInt(this.route[2]) - parseInt(this.route[0])) / this.steps)), parseInt(this.route[1]) + (this.frameIndex * ((parseInt(this.route[3]) - parseInt(this.route[1])) / this.steps)));
      this.frameIndex++;
      setTimeout('animatedObjects["' + this.elementName + '"].animate()', this.speed);         
    }
    else {
      eval(this.endRoutines + "");
      this.frameIndex = 0;
        if (this.loop == "yes"){
          this.animate();
        }
    }
}

