/**
 * Created by IntelliJ IDEA.
 * User: Judd
 * Date: Jan 27, 2011
 * Time: 4:15:31 PM
 * Description: An object that outlines different behaviors for the creation and management of slideshows on different pages.
 * Some pages will have a grid view, some will not.
 */
    var gallerySwap = {
        initialGallery : function(mainSelector, grid, elementGroup){
            var timeoutVal;
            elementGroup === 'sort_'? timeoutVal = 5000 : timeoutVal = 0;
            if (elementGroup === undefined) elementGroup = '';
            $('#grid_nav, .grid_gallery_icon, #'+elementGroup+'gallery_controls').remove();
            mainSelector.after('<div id="'+elementGroup+'gallery_controls" class="gallery_controls image_gallery_elements">' +
                                    '<div id="'+elementGroup+'gallery_nav" class="gallery_nav image_gallery_elements subelement"></div>' +
                                    '<div id="'+elementGroup+'gallery_prev" class="gallery_prev image_gallery_elements subelement"></div>' +
                                    '<div id="'+elementGroup+'gallery_next" class="gallery_next image_gallery_elements subelement"></div>')
                               .cycle({
                                   fx: 'fade',
                                   speed:  'fast',
                                   timeout: timeoutVal,
                                   pause: true,
                                   cleartypeNoBg: true,
                                   pauseOnPagerHover: true,
                                   pager:  '#'+elementGroup+'gallery_nav',
                                   prev: '#'+elementGroup+'gallery_prev',
                                   next: '#'+elementGroup+'gallery_next'
                               });
            /* Grid view startup code */
            if (grid){
                mainSelector.after('<div id="'+elementGroup+'grid_gallery_icon" class="grid_gallery_icon image_gallery_elements subelement">');
                $('.grid_gallery_icon').click(function(){gallerySwap.gridToggle( mainSelector, grid, elementGroup)});
            }
        },
        gridViewGallery: function(mainSelector, grid, elementGroup){
            var galleryGridOverlay = $('.gallery_grid.overlay');
            galleryGridOverlay.css({'opacity':'1'});
            $('#'+elementGroup+'gallery_nav, #'+elementGroup+'gallery_prev, #'+elementGroup+'gallery_next').remove();
            $('.gallery_grid.overlay').show();
            $('.grid_gallery_icon').css({'background-position': '-26px 0'});
            $('.slideshow.gallery_box, .image.gallery')
                .before('<div id="grid_nav" class="image_gallery_elements">')
                .cycle({
                    fx: 'fade',
                    speed:  'fast',
                    timeout: 0,
                    cleartypeNoBg: true,
                    pager:  '#grid_nav',
                    pagerAnchorBuilder: function(idx, slide) {
                        var slideImg = $(slide).children('img')[0];
                        return '<a href="#"><img src="' + slideImg.src + '" width="150" height="96" /></a>';
                    },
                    onPagerEvent: function(idx, slide) {
                        if (elementGroup === 'homepage_'){
                            galleryGridOverlay.css({'background-color':'#050505','display':'block'});
                        } else {
                            galleryGridOverlay.css({'background-color':'#fff','display':'block'});
                        }
                        gallerySwap.gridToggle(mainSelector, grid, elementGroup);
                        setTimeout(function(){
                            galleryGridOverlay.animate(
                                {'opacity':'0'},
                                {duration : 400, complete : function(){
                                    $(this).css({'display':'none'});
                                }});
                        }, 100);
                    }
                });
        },
        gridToggle: function(mainSelector, grid, elementGroup) {
            if ($('.gallery_grid.overlay').css('display') === 'block'){
                $('#grid_nav').remove();
                $('.grid_gallery_icon').css({'background-position': '0 0'});
                this.initialGallery(mainSelector, grid, elementGroup);
                setTimeout(function(){
                    $('.gallery_grid.overlay').css({'display':'none'});
                },500);
            } else {
                this.gridViewGallery(mainSelector, grid, elementGroup);
            }
        }
    }
