if(!window.JSFX)
    JSFX=new Object();

JSFX.FadeImageRunning    = false;
JSFX.FadeImageMinOpacity = 50;
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 the document already had an onMouseOver handler, call it ***/
    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 the document already had an onMouseOut handler, call it ***/
    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;

    /*** Save the original document mouseOver/Out events ***/
    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.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;
            }
        }
    }
    /*** Check to see if we need to animate any more frames. ***/
    if(JSFX.FadeImageRunning)
        setTimeout("JSFX.FadeImageAnimation()", 40);
}

function setOpacity(testObj,value) {
	testObj.style.opacity = value/10;
	testObj.style.filter = 'alpha(opacity=' + value*10 + ')';
}
