/*
 * main.js
 * 
 * common functions for all applications
 * 
 * 
 */

window.heidi = 
{
    menus: new Array(),
    queue_general:
    {
        scope: 'heidi',
        position: 'end'
    },
    queue_logo_in:
    {
        scope: 'logo',
        position: 'start',
        limit: 1
    },
    queue_logo_out:
    {
        scope: 'logo',
        position: 'end'
    },
    queue_loading:
    {
        scope: 'loading',
        position: 'start'
    }
};


/*
 * showLoading()
 * 
 * shows #loading
 * 
 */
function showLoading()
{
    new Effect.Appear
    (
        'loading',
        {
            duration: .75,
            queue: window.heidi.queue_loading
        }
    );
}


/*
 * hideLoading()
 * 
 * hides #loading
 * 
 */
function hideLoading()
{
    new Effect.Fade
    (
        'loading',
        {
            duration: .1,
            queue: window.heidi.queue_loading
        }
    );
}


/*
 * openPopup()
 * 
 * shows #popup after AJAX request & sets up the scrollbar, if needed.
 * 
 */
function openPopup()
{
    // init scrollbar
    $('popupContent').setStyle
    ({
        overflow: 'hidden'
    });
    
    Event.observe
    (
        'popup',
        'click',
        closePopup.bindAsEventListener()
    );
    
    new Effect.Appear
    (
        'popup',
        {
            duration: .5,
            afterFinish: function()
            {
                window.heidi.popupScrollbar = new Control.ScrollBar('popupContent','popupTrack');
                window.heidi.popupScrollbar.recalculateLayout();
            }
        }
    );
}


/*
 * closePopup()
 * 
 * hides #popup & disables the scrollbar.
 * 
 */
function closePopup(event)
{
    if (event == 'cancelUpdateCart' || Event.element(event).identify() == 'popup')
    {
        new Effect.Fade
        (
            'popup',
            {
                duration: .2,
                beforeStart: function()
                {
                    window.heidi.popupScrollbar.disable();
                }
            }
        );
    }
}

/*
 * clearPopupContent()
 * 
 * clears #popupContent, and disables the scrollbar
 * 
 */
function clearPopupContent()
{
    new Effect.Opacity
    (
        'popupContent', 
        { 
            from: 1, 
            to: 0,
            beforeStart: function()
            {
                window.heidi.popupScrollbar.disable();
            },
            afterFinish: function(effect) 
            { 
                effect.element.update().setOpacity(1);
            }
        }
    );
}
