﻿   
////////////////////////////////////////////////////////////////////////////////////////////////////
// FadeBrowserMethods
////////////////////////////////////////////////////////////////////////////////////////////////////
var FadeBrowserMethods =
{
    'Chrome' : function(iDocumentElement, iOpacity)
        { iDocumentElement.style.opacity = iOpacity; },
    'Explorer' : function(iDocumentElement, iOpacity)
        {
            if (iOpacity <= 0)
            {
                iDocumentElement.style.visibility = 'hidden';
                iDocumentElement.style.filter = '';
            }
            else if (iOpacity >= 1)
            {
                iDocumentElement.style.visibility = 'visible';
                iDocumentElement.style.filter = '';
            }
            else
            {
                iDocumentElement.style.visibility = 'visible';
                iDocumentElement.style.filter = 'alpha(opacity=' + iOpacity + ')';
                iDocumentElement.filters.alpha.opacity = iOpacity * 100;
            }
        },
    'Firefox' : function(iDocumentElement, iOpacity)
        { iDocumentElement.style.opacity = iOpacity; },
    'Default' : function(iDocumentElement, iOpacity)
        {
            iDocumentElement.style.opacity = iOpacity;
            iDocumentElement.style.filter = 'alpha(opacity=' + iOpacity + ')';
        }
};


////////////////////////////////////////////////////////////////////////////////////////////////////
// Fade
////////////////////////////////////////////////////////////////////////////////////////////////////
function Fade(iElement, iBeginOpacity, iEndOpacity, iLength)
{
    var This = this;

    // Implements
    Implements(This, Effect, iElement, iLength);

    // Data members
    This.BeginOpacity = iBeginOpacity;
    This.EndOpacity = iEndOpacity;
    This.SetOpacity = null;

    // Methods
    This.Update = function(iProgress)
    {
        var opacity = This.EndOpacity * iProgress + This.BeginOpacity * (1.0 - iProgress);
        This.SetOpacity(This.Element.DocumentElement, opacity);
    }
    
    // Initialize
    {
        This.SetOpacity = (defined(FadeBrowserMethods[Browser.Name])) ? FadeBrowserMethods[Browser.Name] : FadeBrowserMethods.Default;
    }
}

////////////////////////////////////////////////////////////////////////////////////////////////////
