Search code examples
tabsmootoolsslideshowspry

MooTools Slideshow and Spry Tabs


I'm new to this forum and I have a sticky problem with the website that I'm building for my client. I am having trouble with my MooTools Slideshow. I have a page with 4 Spry tabs and 3 of them have slideshows. I've set up the page for multiple slideshows, but only the first tab works correctly. These are 2 issues I'm having:

  1. The thumbnails work properly for the first tab, but for the other tabs they seem to stack upon one another and flutter when you mouseover.

  2. When you switch to a different tab, you get a smaller photo artifact for a couple of seconds in the right corner of the slideshow screen (I have a feeling this will go away when #1 is resolved).

I was given this help from another forum: The issue is probably that slideshow can't calculate dimensions properly when it is hidden. It's really a general issue with javascript/DOM-manipulation: when an element is set as display:none - like the hidden tabs - nodes inside of them have no height/width. The workaround would be to initialize each slideshow once the tab is visible.

Being a js implementer and not a coder, I don't really know how to accomplish this or even if it will work. How would I initialize each slideshow on tab visibility?

Here is where the website can be viewed: http://www.interimdesigngroup.com/threesprings/area.shtml

Any help would be appreciated!

Thanks, Nektar 72


Solution

  • Replace slideshow initialization for all three tabs with the following:

    <script>
        var activeSlideShow = false;
        var activateSlideShow = function(el) {
            if(activeSlideShow) {
                activeSlideShow.destroy();
            }
            switch(el.getProperty('tabindex')){
                case '0':
                    activeSlideShow = new Slideshow('balch',
                        {
                            '1.jpg': { caption: '' },
                            '2.jpg': { caption: '' },
                            '3.jpg': { caption: '' }, 
                            '4.jpg': { caption: '' }, 
                            '5.jpg': { caption: '' }, 
                            '6.jpg': { caption: '' }, 
                            '7.jpg': { caption: '' }, 
                            '8.jpg': { caption: '' }, 
                            '9.jpg': { caption: '' }, 
                            '10.jpg': { caption: '' }, 
                            '11.jpg': { caption: '' }
                        }, 
                        {
                            captions: { delay: 1000 },
                            delay: 3000,
                            height: 467,
                            hu: 'images/balch/',
                            width: 350
                        }
                    );
                break;
                case '3':
                    activeSlideShow = new Slideshow('poi', 
                        {
                            '1.jpg': { caption: 'Blue Ridge' }, 
                            '2.jpg': { caption: 'Blue Ridge' }, 
                            '3.jpg': { caption: 'Blue Ridge' }, 
                            '4.jpg': { caption: 'Blue Ridge' }, 
                            '5.jpg': { caption: 'Blue Ridge' }, 
                            '6.jpg': { caption: 'Blue Ridge' }, 
                            '7.jpg': { caption: 'Grouse Valley' }, 
                            '8.jpg': { caption: 'Grouse Valley' },
                            '9.jpg': { caption: 'Grouse Lake' },
                            '10.jpg': { caption: 'Wildflowers in Yokohl Valley' }, 
                            '11.jpg': { caption: 'Wildflowers in Yokohl Valley' }, 
                            '12.jpg': { caption: 'Wildflowers in Yokohl Valley' }, 
                            '13.jpg': { caption: 'Wildflowers in Yokohl Valley' }, 
                            '14.jpg': { caption: 'Tule River' }, 
                            '15.jpg': { caption: 'Tule River' }, 
                            '16.jpg': { caption: 'Tule River' }, 
                            '17.jpg': { caption: 'Tule River' }, 
                            '18.jpg': { caption: 'Tule River' }, 
                            '19.jpg': { caption: 'Tule River' }, 
                            '20.jpg': { caption: 'Tule River' }, 
                            '21.jpg': { caption: 'Tule River' }, 
                            '22.jpg': { caption: 'Tule River' }, 
                            '23.jpg': { caption: 'Dome Rock' }
                        },
                        {
                            captions: { delay: 1000 },
                            delay: 3000, 
                            height: 300, 
                            hu: 'images/poi/', 
                            width: 400 
                        }
                    );
                break;
                case '1':
                default:
                    activeSlideShow = new Slideshow('springville',
                        {
                            '1.jpg': { caption: '' }, 
                            '2.jpg': { caption: '' }, 
                            '3.jpg': { caption: '' }, 
                            '4.jpg': { caption: '' }, 
                            '5.jpg': { caption: '' }, 
                            '6.jpg': { caption: '' }, 
                            '7.jpg': { caption: '' }, 
                            '8.jpg': { caption: '' }, 
                            '9.jpg': { caption: '' }, 
                            '10.jpg': { caption: '' }, 
                            '11.jpg': { caption: '' }, 
                            '12.jpg': { caption: '' }, 
                            '13.jpg': { caption: '' }
                        }, 
                        { 
                            captions: { delay: 1000 }, 
                            delay: 3000, 
                            height: 300, 
                            hu: 'images/springville/', 
                            width: 400 
                        }
                    );
                break;
            }
        }
        window.addEvent('domready', function(){
            var tabs = $$('#TabbedPanels1 ul li');
            tabs.addEvent('click', function(e){
                activateSlideShow(this);
            });
            activateSlideShow(tabs[0]);
        });
    </script>