  // when definitions
var  TWEEN_AT_END   = 0;
var  TWEEN_NOW      = 1;

  // how definitions
var  TWEEN_EASE     = 0;
var  TWEEN_EVEN     = 1;
var  TWEEN_FAST     = 2;
var  TWEEN_RUBBER   = 3;


// TWEEN FUNCTIONS
function Tween (who, what, where, when, how)
{
  this.who     = who;
  this.what    = what;
  this.where   = where;
  this.when    = when;
  this.how     = how;
}

function buildCmdList (tween, cmds)
{
  var suffix = ')';
  var prefix;
  var start;

  if (tween.what == "left")
  {
    prefix = 'setLeft("' + tween.who + '", ';
    start  = getLeft(tween.who);
  }
  if (tween.what == "top")
  {
    prefix = 'setTop("' + tween.who + '", ';
    start  = getTop(tween.who);
  }
  if (tween.what == "paddingLeft")
  {
    prefix = 'setPaddingLeft("' + tween.who + '", ';
    start  = getPaddingLeft(tween.who);
  }
  if (tween.what == "marginLeft")
  {
    prefix = 'setMarginLeft("' + tween.who + '", ';
    start  = getMarginLeft(tween.who);
  }
  if (tween.what == "marginTop")
  {
    prefix = 'setMarginTop("' + tween.who + '", ';
    start  = getMarginTop(tween.who);
  }
  if (tween.what == "height")
  {
    prefix = 'setHeight("' + tween.who + '", ';
    start  = getHeight(tween.who);
  }
  if (tween.what == "width")
  {
    prefix = 'setWidth("' + tween.who + '", ';
    start  = getWidth(tween.who);
  }
  if (tween.what == "opacity")
  {
    prefix = 'setOpacity("' + tween.who + '", ';
    start  = getOpacity(tween.who);
  }

  if (tween.how == TWEEN_RUBBER)
    calcIncrementsRubber (start, tween.where, cmds);
  else
  if (tween.how == TWEEN_EASE)
    calcIncrementsEase   (start, tween.where, cmds);
  else
  if (tween.how == TWEEN_FAST)
    calcIncrementsFast   (start, tween.where, cmds);
  else
  if (tween.how == TWEEN_EVEN)
    calcIncrementsEven   (start, tween.where, cmds);

  for (var ndx=0; ndx < cmds.length; ndx++)
    cmds[ndx] = prefix + cmds[ndx] + suffix;
}


function calcIncrementsEase (orgValue, newValue, cmds)
{
  var delta;
  try
  {
    orgValue = parseInt(orgValue);
    newValue = parseInt(newValue);
    delta    = newValue - orgValue;

    cmds[0]   = orgValue + delta * .01;
    cmds[1]   = orgValue + delta * .02;
    cmds[2]   = orgValue + delta * .04;
    cmds[3]   = orgValue + delta * .07;
    cmds[4]   = orgValue + delta * .12;
    cmds[5]   = orgValue + delta * .2;
    cmds[6]   = orgValue + delta * .5;
    cmds[7]   = orgValue + delta * .8;
    cmds[8]   = orgValue + delta * .88;
    cmds[9]   = orgValue + delta * .93;
    cmds[10]  = orgValue + delta * .96;
    cmds[11]  = orgValue + delta * .98;
    cmds[12]  = orgValue + delta * .99;
    cmds[13]  = newValue;
  }
  catch (err)
  {
    alert (err.description);
  }
}
function calcIncrementsEven (orgValue, newValue, cmds)
{
  var delta;
  try
  {
    orgValue = parseInt(orgValue);
    newValue = parseInt(newValue);
    delta    = newValue - orgValue;

    cmds[0]   = orgValue + delta * .08;
    cmds[1]   = orgValue + delta * .16;
    cmds[2]   = orgValue + delta * .24;
    cmds[3]   = orgValue + delta * .32;
    cmds[4]   = orgValue + delta * .40;
    cmds[5]   = orgValue + delta * .48;
    cmds[6]   = orgValue + delta * .58;
    cmds[7]   = orgValue + delta * .68;
    cmds[8]   = orgValue + delta * .76;
    cmds[9]   = orgValue + delta * .84;
    cmds[10]  = orgValue + delta * .92;
    cmds[11]  = newValue;
  }
  catch (err)
  {
    alert (err.description);
  }
}
function calcIncrementsFast (orgValue, newValue, cmds)
{
  var delta;
  try
  {
    orgValue = parseInt(orgValue);
    newValue = parseInt(newValue);
    delta    = newValue - orgValue;

    cmds[0]   = orgValue + delta * .2;
    cmds[1]   = orgValue + delta * .4;
    cmds[2]   = orgValue + delta * .6;
    cmds[3]   = orgValue + delta * .8;
    cmds[4]   = newValue;
  }
  catch (err)
  {
    alert (err.description);
  }
}
function calcIncrementsRubber (orgValue, newValue, cmds)
{
  var delta;
  try
  {
    orgValue = parseInt(orgValue);
    newValue = parseInt(newValue);
    delta    = newValue - orgValue;

    cmds[0]   = orgValue + delta * .02;
    cmds[1]   = orgValue + delta * .06;
    cmds[2]   = orgValue + delta * .3;
    cmds[3]   = orgValue + delta * .7;
    cmds[4]   = orgValue + delta * .99;
    cmds[5]   = orgValue + delta * 1.1;
    cmds[6]   = orgValue + delta * 1.02;
    cmds[7]   = orgValue + delta * .95;
    cmds[8]   = orgValue + delta * 1;
    cmds[9]   = orgValue + delta * 1.04;
    cmds[10]  = orgValue + delta * 1.01;
    cmds[11]  = orgValue + delta * .99;
    cmds[12]  = orgValue + delta * 1;
    cmds[13]  = newValue;
  }
  catch (err)
  {
    alert (err.description);
  }
}


