if(!window.JSFX)
  JSFX=new Object();

JSFX.FadeImageRunning    = false;
JSFX.FadeImageMinOpacity = 65;
JSFX.FadeImageAutoUp   = 10;
JSFX.FadeImageAutoDown   = 10;
JSFX.FadeImageSavedOver  = null;
JSFX.FadeImageSavedOut   = null;

document.write('<STYLE TYPE="text/css">.imageFader{ position:relative; filter:alpha(opacity='+JSFX.FadeImageMinOpacity+'); -moz-opacity:'+JSFX.FadeImageMinOpacity/101+'}</STYLE>');

JSFX.fadeImage_actionOnMouseOver = function(e)
{
  srcElement=e ? e.target : event.srcElement;
  if(srcElement.className && srcElement.className=="imageFader")
    JSFX.fadeUp(srcElement);
  if(JSFX.FadeImageSavedOver != null)
    JSFX.FadeImageSavedOver(e);
}

JSFX.fadeImage_actionOnMouseOut = function(e)

{
  srcElement=e ? e.target : event.srcElement;
  if(srcElement.className && srcElement.className=="imageFader")
    JSFX.fadeDown(srcElement);
  if(JSFX.FadeImageSavedOut != null)
    JSFX.FadeImageSavedOut(e);
}

JSFX.fadeImageAuto = function(minOpacity, stepUp, stepDown)

{
  if(minOpacity)
    JSFX.FadeImageMinOpacity = minOpacity;
  if(stepUp)
    JSFX.FadeImageAutoUp  = stepUp;
  if(stepDown)
    JSFX.FadeImageAutoDown  = stepDown;

  JSFX.FadeImageSavedOver = document.onmouseover;
  JSFX.FadeImageSavedOut  = document.onmouseout;
  document.onmouseover  = JSFX.fadeImage_actionOnMouseOver ;
  document.onmouseout = JSFX.fadeImage_actionOnMouseOut ;
  JSFX.setMinOpacity(JSFX.FadeImageMinOpacity);
}

JSFX.setMinOpacity = function(minOpacity)

{
  if(document.layers) return;
  for(i=0 ; i<document.images.length ; i++)
  {
    var img = document.images[i];
    if(img.className=="imageFader")
    {
      if(img.filters)
        img.filters.alpha.opacity = JSFX.FadeImageMinOpacity;
      else
        img.style.MozOpacity = JSFX.FadeImageMinOpacity/101;
    }
  }
}

JSFX.fadeUpImg = function(imgName, step)

{
  if(document.layers || window.opera)
    return;

  img = document.images[imgName];
  if(img)
    JSFX.fadeUp(img, step);
}

JSFX.fadeUp = function(img, step)

{

  if(img)
  {
    if(!step) step=JSFX.FadeImageAutoUp;

    if(img.fade == null)
    {
      img.fade = new Object();
      img.fade.state   = "OFF";
      img.fade.upStep  = step;
      img.fade.downStep  = step;
      img.fade.minOpacity  = JSFX.FadeImageMinOpacity;
      img.fade.index = img.fade.minOpacity;
    }

    if(img.fade.state == "OFF")
    {
      img.fade.upStep  = step;
      img.fade.state = "FADE_UP";
      JSFX.startImageFading();
    }

    else if( img.fade.state == "FADE_UP_DOWN"
      || img.fade.state == "FADE_DOWN")
    {
      img.fade.upStep  = step;
      img.fade.state = "FADE_UP";
    }
  }
}

JSFX.fadeDownImg = function(imgName, step)
{
  if(document.layers || window.opera)
    return;

  img = document.images[imgName];
  if(img)
    JSFX.fadeDown(img, step);
}

JSFX.fadeDown = function(img, step)

{
  if(img)
  {
    if(!step) step=JSFX.FadeImageAutoDown;
    if(img.fade.state=="ON")
    {
      img.fade.downStep  = step;
      img.fade.state="FADE_DOWN";
      JSFX.startImageFading();
    }
    else if(img.fade.state == "FADE_UP")
    {
      img.fade.downStep  = step;
      img.fade.state="FADE_UP_DOWN";
    }
  }
}

JSFX.startImageFading = function()
{
  if(!JSFX.FadeImageRunning)
    JSFX.FadeImageAnimation();
}

JSFX.FadeImageAnimation = function()

{
  JSFX.FadeImageRunning = false;
  for(i=0 ; i<document.images.length ; i++)
  {
    var img = document.images[i];
    if(img.fade)
    {
      if(img.fade.state == "FADE_UP")
      {
        img.fade.index+=img.fade.upStep;
        if(img.fade.index > 100)
          img.fade.index = 100;

        if(img.filters)
          img.filters.alpha.opacity = img.fade.index;
        else
          img.style.MozOpacity = img.fade.index/101;

        if(img.fade.index == 100)
          img.fade.state="ON";
        else
          JSFX.FadeImageRunning = true;
      }
      else if(img.fade.state == "FADE_UP_DOWN")
      {
        img.fade.index+=img.fade.upStep;
        if(img.fade.index > 100)
          img.fade.index = 100;

        if(img.filters)
          img.filters.alpha.opacity = img.fade.index;
        else
          img.style.MozOpacity = img.fade.index/101;

        if(img.fade.index == 100)
          img.fade.state="FADE_DOWN";
        JSFX.FadeImageRunning = true;
      }
      else if(img.fade.state == "FADE_DOWN")
      {
        img.fade.index-=img.fade.downStep;
        if(img.fade.index < img.fade.minOpacity)
          img.fade.index = img.fade.minOpacity;

        if(img.filters)
          img.filters.alpha.opacity = img.fade.index;
        else
          img.style.MozOpacity = img.fade.index/101;

        if(img.fade.index == img.fade.minOpacity)
          img.fade.state="OFF";
        else
          JSFX.FadeImageRunning = true;
      }
    }
  }

  if(JSFX.FadeImageRunning)
    setTimeout("JSFX.FadeImageAnimation()", 40);
}
