var MOVER_DATA = new Array();

function performMove( dataId ) {
  var data = MOVER_DATA[dataId];
  data.movingDiv = (data.movingDiv + 1) % (data.ANIM_DIV_COUNT);
  data.movingDivNext = (data.movingDiv + 1) % (data.ANIM_DIV_COUNT)

  data.changeMove();

  moveDiv( data, false );
  moveDiv( data, true );

  setTimeout( 'performMove( "' + dataId + '" )', (data.MOVE_DURATION_SEC + data.PAUSE_DURATION_SEC) * 1000);
}

function moveDiv( data, next ) {
  var divId = data.DIV_ID + (next ? data.movingDivNext : data.movingDiv);
  var myDiv = Ext.fly( divId );
  if (next) {
    myDiv.setX( data.POS_X - data.MOVE_X * data.WIDTH );
  }
  if (next) {
    myDiv.setY( data.POS_Y - data.MOVE_Y * data.HEIGHT );
  }
  myDiv.shift({
    x: myDiv.getX() + data.MOVE_X * data.WIDTH,
    y: myDiv.getY() + data.MOVE_Y * data.HEIGHT,

    easing: data.EASING,
    duration: data.MOVE_DURATION_SEC
  });
}

function addMove(config) {
  var data = {
    DIV_ID : config.DIV_ID,
    MOVE_DURATION_SEC : config.MOVE_DURATION_SEC,
    PAUSE_DURATION_SEC : config.PAUSE_DURATION_SEC,
    EASING : config.EASING,
    MOVE_X : config.MOVE_X,
    MOVE_Y : config.MOVE_Y,
    changeMove : config.changeMove,

    movingDiv : -1
  };

  var index = 0;
  var myDiv = Ext.fly( data.DIV_ID + index );
  data.POS_X = myDiv.getX();
  data.POS_Y = myDiv.getY();
  data.WIDTH = myDiv.getWidth();
  data.HEIGHT = myDiv.getHeight();

  for (index = 1; true ; index++)
  {
    myDiv = Ext.fly( data.DIV_ID + index );
    if (myDiv == null) {
      data.ANIM_DIV_COUNT = index;
      break;
    }
    myDiv.setX( data.POS_X - data.WIDTH );
    myDiv.setY( data.POS_Y );
  }

  MOVER_DATA[ data.DIV_ID ] = data;

  setTimeout( 'performMove( "' + data.DIV_ID + '" )', data.PAUSE_DURATION_SEC * 1000 );
}

