var effects = Object();

effects.theDiv = '';
effects.current = 100;
effects.to = 100;
effects.change = 0;
effects.calc = 0;
effects.tmp = 0;

effects.fade = function(theDiv, toOpacity, time, callback)
{
  effects.callback = callback;
  if (toOpacity > 100)
    effects.to = 100;
  else if (toOpacity < 0)
    effects.to = 0;
  else
    effects.to = toOpacity;
  effects.theDiv = theDiv;
  effects.change = time / 10;

  var ele = thedom.find(effects.theDiv);
  if (typeof ele.style.opacity == "string")
    effects.current = Math.round(ele.style.opacity);
  else if (ele.filters.alpha)
    effects.current = Math.round(ele.filters.alpha.opacity);
  else
    effects.current = 100;

  setTimeout(effects.updateFade, 10);
}

effects.updateFade = function()
{
  var ele = thedom.find(effects.theDiv);

  var limitReached = false;

  if (effects.current > effects.to)
  {
    effects.calc = effects.current - effects.change;

    if (effects.calc <= effects.to)
      limitReached = true;
  }
  else
  {
    effects.calc = effects.current + effects.change;
    
    if (effects.calc >= effects.to)
      limitReached = true;
  }

  if (typeof ele.style.opacity == "string")
    ele.style.opacity = (effects.calc / 100);
  else
    ele.filter = "alpha(opacity=" + effects.calc + ")";

  effects.current = effects.calc;

  if (limitReached && effects.callback)
    effects.callback.call(this);
  else if (!limitReached)
    setTimeout(effects.updateFade, 10);
}

effects.fadeIn = function(theDiv, time, callback)
{
  effects.fade(theDiv, 100, time, callback);
}

effects.fadeOut = function(theDiv, time, callback)
{
  effects.fade(theDiv, 0, time, callback);
}

