﻿// Developed by Mike Kiska 4/12/2007

// Requires: Event.js

function ControlFader()
{
  var fadeInCtl = null;
  var start;
  var stop;
  var step;
  var backColor;
  var fadeInterval;
  var isIE = (window.navigator.appName == "Microsoft Internet Explorer");

  var fadeComplete = new Event();
  this.FadeComplete = fadeComplete;

  this.Fade = function( ctlID, startOpac, stopOpac, ms, fps, backgroundColor )
  {
    if ( fadeInterval != null )
      clearInterval( fadeInterval );
  
    fadeInCtl = document.getElementById( ctlID );
    start = startOpac;
    stop = stopOpac;
    step = GetStep( startOpac, stopOpac, ms, fps );   
    backColor = backgroundColor;

    FadeStep();
    fadeInterval = setInterval( FadeStep, ms / (ms * fps / 1000) );   
  };

  ControlFader.SetOpac = function(ctlID, opacity)
  {
    var fadeInCtl = document.getElementById( ctlID );

    if ( isIE )
      fadeInCtl.style.filter = 'alpha(opacity=' + opacity + ')'; 
    else
    {
      fadeInCtl.style.opacity = (opacity / 100);
      fadeInCtl.style.MozOpacity = (opacity / 100);
      fadeInCtl.style.KhtmlOpacity = (opacity / 100);
    }
  };

  var FadeStep = function()
  {
    if ( isIE )
      fadeInCtl.style.filter = 'alpha(opacity=' + start + ')';
    else
    {
      fadeInCtl.style.opacity = (start / 100);
      fadeInCtl.style.MozOpacity = (start / 100);
      fadeInCtl.style.KhtmlOpacity = (start / 100);
    }
    
    if ( backColor != null )
      fadeInCtl.style.backgroundColor = backColor;

    if ( (step > 0 && start <= stop) || (step < 0 && stop <= start) )
      start += step;
    else
    {
      clearInterval( fadeInterval );
      fadeComplete.Fire( this, start );
    }
  };

  var GetStep = function( start, stop, ms, fps )
  {
    return (stop - start) / (ms * fps / 1000);
  };
}