if (typeof(LWS) === 'undefined') {
    var LWS = {};
}

/**
 * Functionality for the Collections pages
 */
LWS.collectionView = (function () {
    var config,                 // configuration object
        boolHasVideo = false,   // set to true when the video has been embedded
        init;                   // public function
        
    config = {
        classes : {
            active                  : 'active',
            hidden                  : 'hidden',
            hiddenVideo             : 'hiddenVideo',
            last                    : 'last',
            view                    : 'view'
        },
        ids : {
            backstageView           : 'backstageView',
            backstageViewTrigger    : 'backstageViewTrigger',
            mainView                : 'mainView',
            mainViewTrigger         : 'mainViewTrigger',
            videoViewTrigger        : 'videoViewTrigger',
            videoView               : 'videoView'
        },
        text : {
            video                   : 'Video'
        }
    };
    
    /**
     * Embeds Vimeo video
     *
     * @param el {object} Container to put the video in
     * @private
     */
    function createVideo(el) {
        var flashvars = {
                autoplay : '1',
                js_api: 1 // required in order to use the Javascript API
            },
            params = {
                allowscriptaccess: 'always',
                wmode : 'transparent'
            },
            attributes = {
                play : 'true'
            };

        swfobject.embedSWF('http://vimeo.com/moogaloop.swf?clip_id=' + LWSVideoId, 'videoContainer', '940', '529', '9.0.0', '', flashvars, params, attributes);

        boolHasVideo = true;
    }
    
    init = function () {
        var elBackstageView = $('#' + config.ids.backstageView),
            elBackstageViewTrigger = $('#' + config.ids.backstageViewTrigger),
            elBackstageViewTriggerParent = elBackstageViewTrigger.parent(),
            elMainView = $('#' + config.ids.mainView),
            elMainViewTrigger = $('#' + config.ids.mainViewTrigger),
            elVideoContainer,
            elVideoView,
            elVideoViewTrigger,
            elVideoViewTriggerParent;
            
        // If this collection has a video
        if (typeof(LWSVideoId) !== 'undefined') {
            
            // create trigger
            elVideoViewTriggerParent = $('<li class="' + config.classes.last + '"></li>');
            elVideoViewTrigger = $('<a href="#' + config.ids.videoView + '">' + config.text.video + '</a>');
            elVideoViewTriggerParent.append(elVideoViewTrigger);
            elBackstageViewTriggerParent.after(elVideoViewTriggerParent);
            
            // create section
            elVideoView = $('<div class="' + config.classes.view + ' ' + config.classes.hiddenVideo + '" id="' + config.ids.videoView + '"></div>');
            elVideoView.append($('<h2>' + config.text.video + '</h2>'));
            elVideoContainer = $('<div><div id="videoContainer"></div></div>');
            elVideoView.append(elVideoContainer);
            
            elBackstageView.after(elVideoView);
        
            elVideoViewTrigger.bind('click', function () {
                var moogaloop = document.getElementById('videoContainer');
            
                elBackstageView.addClass(config.classes.hidden);
                elMainView.addClass(config.classes.hidden);
                elVideoView.removeClass(config.classes.hiddenVideo);
                elVideoViewTrigger.addClass(config.classes.active);
                elMainViewTrigger.removeClass(config.classes.active);
                elBackstageViewTrigger.removeClass(config.classes.active);
                
                // if the video has not yet been created
                if (!boolHasVideo) {
                    createVideo(elVideoContainer);
                }
                
                if (moogaloop && moogaloop.api_play) {
                    moogaloop.api_play();
                }
                
                return false;
            });
        }
        
        // collection doesn't have a video
        else {
            elBackstageViewTriggerParent.addClass(config.classes.last);
        }
        
        elBackstageView.addClass(config.classes.hidden);
        elMainViewTrigger.addClass(config.classes.active);
            
        elBackstageViewTrigger.bind('click', function () {
            var moogaloop = document.getElementById('videoContainer');
            
            elMainView.addClass(config.classes.hidden);
            elBackstageView.removeClass(config.classes.hidden);
            elBackstageViewTrigger.addClass(config.classes.active);
            elMainViewTrigger.removeClass(config.classes.active);
            if (elVideoViewTrigger) {
                elVideoView.addClass(config.classes.hiddenVideo);
                elVideoViewTrigger.removeClass(config.classes.active);
                if (moogaloop && moogaloop.api_pause) {
                    moogaloop.api_pause();
                }
            }
            
            return false;
        });
        
        elMainViewTrigger.bind('click', function () {
            var moogaloop = document.getElementById('videoContainer');
            
            elBackstageView.addClass(config.classes.hidden);
            elMainView.removeClass(config.classes.hidden);
            elMainViewTrigger.addClass(config.classes.active);
            elBackstageViewTrigger.removeClass(config.classes.active);
            if (elVideoViewTrigger) {
                elVideoView.addClass(config.classes.hiddenVideo);
                elVideoViewTrigger.removeClass(config.classes.active);
                if (moogaloop && moogaloop.api_pause) {
                    moogaloop.api_pause();
                }
            }
            
            return false;
        });        
    };
    
    return {
        init : init
    };
}());

LWS.core = (function () {
    var init;
    
    init = function () {
        LWS.collectionView.init();
        LWS.lightbox.init();
    };
    
    return {
        init : init
    };
}());

LWS.lightbox = (function () {
    var config,
        init;
        
    config = {
        classes : {
            'pressContent' : 'pressContent'
        },
        ids : {
            'mainView'  : 'mainView'
        }
    };
    
    init = function () {
        var currTrigger,
            i,
            mainView,
            triggers,
            length;
            
        mainView = $('#' + config.ids.mainView).find('li[class!=hero]');
    //    if (mainView.length) {
        triggers = mainView;
    //    }
    //    else {
    //        triggers = $('.' + config.classes.pressContent).find('li');
    //    }
        length = triggers.length;
        for (i = 0; i < length; i += 1) {
            currTrigger = $(triggers[i]);
            currTrigger.colorbox({
                inline : true,
                opacity : 0.9,
                rel : 'mainView',
                transition: 'fade'
            });
        }
    };
    
    return {
        init : init
    };
}());

$('document').ready(function () {
    LWS.core.init();
});