/* opacity.js -- JavaScript for fading objects in and out.  */

/*
 * Copyright (C) 2005 Tudor Hulubei <tudor@hulubei.net>.
 * Distributed under the GNU General Public License.
 */


function MakeObjectHidden(name)
{
    document.write("<style type='text/css'>#" + name +
                   " { visibility: hidden; }</style>");
}


function HideObject(name)
{
    if (document.getElementById)
    {
        var objectId = name;
        var object = document.getElementById(objectId);

        if (object)
        {
            SetOpacity(object, 100);
            FadeOut(objectId, 0);
        }

        return object;
    }

    return null;
}


function ShowObject(name)
{
    if (document.getElementById)
    {
        var objectId = name;
        var object = document.getElementById(objectId);

        if (object)
        {
            SetOpacity(object, 0);
            object.style.visibility = "visible";
            // Nicely fade in the object, but turn it on immediately
            // if it takes more than a few seconds.
            var date = new Date();
            date.setTime(date.getTime() + 3 * 1000);
            FadeIn(objectId, 0, date.getTime());
        }

        return object;
    }

    return null;
}


function FadeIn(objectId, opacity, timeLimit)
{
    var delay = 10;

    if (document.getElementById)
    {
        var object = document.getElementById(objectId);
        if (object && (opacity <= 100))
        {
            var current = new Date();
            if (current.getTime() >= timeLimit)
            {
                opacity = 100;
                SetOpacity(object, opacity);
            }
            else
            {
                SetOpacity(object, opacity);
                opacity += 5;
                window.setTimeout(
                    "FadeIn('" + objectId + "'," +
                    opacity + "," + timeLimit + ")", delay);
            }
        }
    }
}


function FadeOut(objectId, opacity)
{
    if (document.getElementById)
    {
        var object = document.getElementById(objectId);
        if (object)
        {
            if (opacity > 0)
            {
                SetOpacity(object, opacity);
                opacity -= 5;
                window.setTimeout(
                    "FadeOut('" + objectId + "'," + opacity + ")", 10);
            }
            else
                object.style.visibility = "hidden";
        }
    }
}


function SetOpacity(object, opacity)
{
    opacity = (opacity >= 100) ? 99.999 : opacity;
    opacity = (opacity < 0) ? 0 : opacity;

    /* IE/Win.  */
    object.style.filter = "alpha(opacity:" + opacity + ")";
    /* Safari<1.2, Konqueror.  */
    object.style.KHTMLOpacity = opacity / 100;
    /* Older Mozilla and Firefox.  */
    object.style.MozOpacity = opacity / 100;
    /* Safari 1.2, newer Firefox and Mozilla, CSS3.  */
    object.style.opacity = opacity / 100;
}


/* Local Variables: */
/* mode: C++ */
/* End: */

