// JavaScript Document

function animate(elementID, newLeft, newTop, newWidth, newHeight, time, callback)
{
  var el = document.getElementById(elementID);
  if(el == null) return;
 
  var cLeft = parseInt(el.style.left);
  var cTop = parseInt(el.style.top);
  var cWidth = parseInt(el.style.width);
  var cHeight = parseInt(el.style.height);
  
  var totalFrames = 1; if(time > 0) { totalFrames = time/40; }
  var fLeft = newLeft - cLeft;  if(fLeft != 0) { fLeft /= totalFrames; }
  var fTop = newTop - cTop; if(fTop != 0) { fTop /= totalFrames; }
  var fWidth = newWidth - cWidth; if(fWidth != 0) { fWidth /= totalFrames; }
  var fHeight = newHeight - cHeight; if(fHeight != 0) { fHeight /= totalFrames; }
    
  doFrame(elementID, cLeft, newLeft, fLeft, cTop, newTop, fTop, cWidth, newWidth, fWidth, cHeight, newHeight, fHeight, callback);
}

function doFrame(eID, cLeft, nLeft, fLeft, cTop, nTop, fTop, cWidth, nWidth, fWidth, cHeight, nHeight, fHeight, callback)
{
  var el = document.getElementById(eID);
  if(el == null) { return; }

  cLeft = moveSingleVal(cLeft, nLeft, fLeft);
  cTop = moveSingleVal(cTop, nTop, fTop);
  cWidth = moveSingleVal(cWidth, nWidth, fWidth);
  cHeight = moveSingleVal(cHeight, nHeight, fHeight);

  el.style.left = Math.round(cLeft) + 'px';
  el.style.top = Math.round(cTop) + 'px';
  el.style.width = Math.round(cWidth) + 'px';
  el.style.height = Math.round(cHeight) + 'px';
  
  if(cLeft == nLeft && cTop == nTop && cHeight == nHeight && cWidth == nWidth)
  {
    if(callback != null) { callback(); }
    return;
  }
    
  setTimeout( 'doFrame("'+eID+'",'+cLeft+','+nLeft+','+fLeft+','+cTop+','+nTop+','+fTop+','+cWidth+','+nWidth+','+fWidth+','+cHeight+','+nHeight+','+fHeight+','+callback+')', 40);
}

function moveSingleVal(currentVal, finalVal, frameAmt)
{
  if(frameAmt == 0 || currentVal == finalVal) { return finalVal; }
  currentVal += frameAmt;
  if((frameAmt > 0 && currentVal >= finalVal) || (frameAmt < 0 && currentVal <= finalVal)) { return finalVal; }
  return currentVal;
}

