Pace.Subnav = Class.create({
    active: {source: null, flash: null, callout: null},
    
    // Constructor
    initialize: function()
    {
        if ($('product-nav') == null) return; // only continue with pages that have product nav
        
        this.bind(
            {link: 'salad-sides', source: 'saladSides', flash: null, callout: null},
            {link: 'sandwich-wraps', source: 'sandwichWraps', flash: null, callout: null},
            {link: 'break-fast', source: 'breakfast', flash: null, callout: null},
            {link: 'main-course', source: 'mainCourse', flash: null, callout: null}
        );
    },
    
    // Private Methods
    bind: function()
    {
        $A(arguments).each(function(s) { if($(s.source) != null) { this.active = {source: s.source,flash: s.flash, callout: s.callout}; throw $break; }}.bind(this));
        
        $A(arguments).each(function(s) {
            if($(s.link) != null)
            {
                $(s.link).observe("click", function(event) {
                    event.stop();
                    $$('ul#product-nav li.active').each(function(s) { s.removeClassName('active'); });
                    $(s.link).up().addClassName('active');
                    $(this.active.source,s.source).invoke('toggle');
                    
                    if(s.flash != null) $(s.flash).toggle();
                    if(s.callout != null) $(s.callout).toggle();
                    if(this.active.flash != null) $(this.active.flash).toggle();
                    if(this.active.callout != null) $(this.active.callout).toggle();
                    
                    this.active = {source: s.source, flash: s.flash, callout: s.callout};
                    
                    document.fire('sIFR:refresh'); // fire custom event to recall sIFR replacement on previously hidden copy
                }.bind(this));
                
                $(s.source).hide();
                
                if(s.callout != null) $(s.callout).hide();
            } 
        }.bind(this));
        
        if($(this.active.source)!=null) { $(this.active.source).show(); }
        if($(this.active.callout)!=null) { $(this.active.callout).show(); }
    }
});
    
document.observe("dom:loaded", function()
{
    new Pace.Subnav();
});