Plugin Directory

Changeset 2057701


Ignore:
Timestamp:
03/26/2019 02:42:38 PM (7 years ago)
Author:
collinsinternet
Message:

Version 1.7.0

Location:
brightcove-video-connect/trunk
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • brightcove-video-connect/trunk/assets/js/brightcove-admin.js

    r1995128 r2057701  
    6161                    nonce :            wpbc.preload.nonce,
    6262                    tags :             this.get( 'tags' ),
     63                    oldFolderId:             this.get( 'oldFolderId' ),
     64                    folderId :         this.get( 'folderId' ),
    6365                    type :             this.get( 'mediaType' ),
    6466                    custom_fields:     this.get( 'custom_fields' ),
     
    271273            this.dates         = options.dates || 'all';
    272274            this.tag           = options.tag || '';
     275            this.folderId      = options.folderId || '';
     276            this.oldFolderId   = options.oldFolderId || '';
    273277
    274278            this.listenTo( wpbc.broadcast, 'change:activeAccount', function ( accountId ) {
     
    298302                this.fetch();
    299303
     304            } );
     305
     306            this.listenTo( wpbc.broadcast, 'change:folder', function ( folderId ) {
     307
     308                this.oldFolderId = this.folderId;
     309
     310                if ( 'all' === folderId ) {
     311                    folderId = '';
     312                }
     313
     314                this.folderId = folderId;
     315                this.fetch();
    300316            } );
    301317
     
    374390                    search :         this.searchTerm,
    375391                    tags :           this.tag,
     392                    oldFolderId:     this.oldFolderId,
     393                    folderId:            this.folderId,
    376394                    tagName :        wpbc.preload.tags[this.tag],
    377395                    type : this.mediaType || 'videos'
    378396                } );
    379397
    380                 var previousRequest = _.pick( options.data, 'account', 'dates', 'posts_per_page', 'search', 'tags', 'type' );
     398                var previousRequest = _.pick( options.data, 'account', 'dates', 'posts_per_page', 'search', 'tags', 'type', 'folderId', 'tagName' );
    381399
    382400                // Determine if we're infinite scrolling or not.
     
    393411                    options.data.videoIds = this.videoIds.length ? this.videoIds : 'none';
    394412                }
     413
    395414
    396415                options.data.query = args;
     
    450469         * @param {Object|Array} resp The raw response Object/Array.
    451470         * @param {Object} xhr
    452          * @returns {Array} The array of model attributes to be added to the collection
     471         * @returns {Array} The array of model attributes to be added to the
     472         *   collection
    453473         */
    454474        parse : function ( response, status, request, checksum ) {
     
    475495
    476496            /**
    477              * In playlist video search, we remove the videos that already exist in the playlist.
     497             * In playlist video search, we remove the videos that already exist in
     498             * the playlist.
    478499             */
    479500            if ( _.isArray( this.excludeVideoIds ) ) {
     
    483504            }
    484505
     506            if (data.length === 0) {
     507                wpbc.broadcast.trigger('videoEdit:message', 'No videos found.', 'error',
     508                    true)
     509            }
     510
    485511            var allMedia = _.map( data, function ( attrs ) {
    486512                var id, media, newAttributes;
     
    507533                return media;
    508534            }, this );
     535
    509536
    510537            if ( this.additionalRequest ) {
     
    748775      'change .brightcove-media-dates': 'datesChanged',
    749776      'change .brightcove-media-tags': 'tagsChanged',
     777            'change .brightcove-media-folders': 'foldersChanged',
    750778      'change .brightcove-empty-playlists': 'emptyPlaylistsChanged',
    751779      'click #media-search': 'searchHandler',
     
    760788                mediaType : mediaType,
    761789                tags :      wpbc.preload.tags,
     790                folders:    wpbc.preload.folders,
     791                folderId:   this.model.get( 'folderId' ),
    762792                account :   this.model.get( 'account' )
    763793            };
     
    823853            wpbc.broadcast.trigger( 'change:tag', event.target.value );
    824854        },
     855
     856    foldersChanged: function (event) {
     857      this.model.set('oldFolderId', this.model.get('folderId'));
     858      this.model.set('folderId', event.target.value);
     859      wpbc.broadcast.trigger('change:folder', event.target.value);
     860    },
    825861
    826862        emptyPlaylistsChanged : function ( event ) {
     
    10921128            } );
    10931129
     1130            this.listenTo(wpbc.broadcast, 'change:folder', function (folder) {
     1131                this.clearPreview();
     1132                this.model.set('oldFolderId', this.model.get('folderId'));
     1133                this.model.set('folderId', folder);
     1134
     1135            })
     1136
    10941137            this.listenTo( wpbc.broadcast, 'change:date', function ( date ) {
    10951138
     
    12761319
    12771320        /**
    1278          * Clear the preview view and remove highlighted class from previous selected video.
     1321         * Clear the preview view and remove highlighted class from previous
     1322         * selected video.
    12791323         */
    12801324        clearPreview : function () {
    12811325
     1326            var messages = $('.brightcove-message');
     1327            messages.addClass('hidden');
     1328
    12821329            if ( this.detailsView instanceof MediaDetailsView ) {
    12831330                this.detailsView.remove();
     
    13141361            newMessage.text( message );
    13151362
    1316             messages.append( newMessage );
     1363            messages.html( newMessage );
    13171364            messages.removeClass( 'hidden' );
    13181365
     
    13301377                this.makeNoticesDismissible();
    13311378            }
     1379            $('html, body').animate({scrollTop: 0}, 'fast')
     1380
    13321381        },
    13331382
     
    27732822            this.model.set( 'poster', this.$el.find( '.brightcove-poster' ).val() );
    27742823            this.model.set( 'thumbnail', this.$el.find( '.brightcove-thumbnail' ).val() );
     2824            this.model.set( 'folderId', this.$el.find( '.brightcove-folder' ).val() );
    27752825
    27762826            // Captions
     
    28722922            this.listenTo( wpbc.broadcast, 'insert:shortcode', this.insertShortcode );
    28732923            options = this.model.toJSON();
     2924            options.folders = wpbc.preload.folders;
     2925            this.model.set( 'oldFolderId', options.folder_id);
    28742926
    28752927            // Render the model into the template
  • brightcove-video-connect/trunk/assets/js/brightcove-admin.js.map

    r1995128 r2057701  
    1 {"version":3,"sources":["src/models/media.js","src/models/media-collection.js","src/models/brightcove-media-manager.js","src/models/brightcove-modal.js","src/models/upload-collection.js","src/models/upload.js","src/views/brightcove.js","src/views/toolbar.js","src/views/upload-video-manager.js","src/views/brightcove-media-manager.js","src/views/brightcove-modal.js","src/views/media-details.js","src/views/media.js","src/views/playlist-edit.js","src/views/upload-details.js","src/views/upload-window.js","src/views/upload.js","src/views/video-edit.js","src/views/video-preview.js","src/views/media-collection.js","src/app.js"],"names":[],"mappings":"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","file":"brightcove-admin.js","sourcesContent":["/**\n * Media model for Media CPT\n */\n\nvar MediaModel = Backbone.Model.extend(\n\t{\n\n\t\t/**\n\t\t * Copied largely from WP Attachment sync function\n\t\t * Triggered when attachment details change\n\t\t * Overrides Backbone.Model.sync\n\t\t *\n\t\t * @param {string} method\n\t\t * @param {wp.media.model.Media} model\n\t\t * @param {Object} [options={}]\n\t\t *\n\t\t * @returns {Promise}\n\t\t */\n\t\tsync : function ( method, model, options ) {\n\n\t\t\tvar accountHash = null;\n\n\t\t\t// Set the accountHash to the wpbc.preload.accounts[*] where the account_id\n\t\t\t// matches this media objects account_id.\n\t\t\t_.find( wpbc.preload.accounts, function ( account, hash ) {\n\t\t\t\tif ( account.account_id === this.get( 'account_id' ) ) {\n\t\t\t\t\taccountHash = hash;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}, this );\n\n\t\t\t// If the attachment does not yet have an `id`, return an instantly\n\t\t\t// rejected promise. Otherwise, all of our requests will fail.\n\t\t\tif ( _.isUndefined( this.id ) ) {\n\t\t\t\treturn $.Deferred().rejectWith( this ).promise();\n\t\t\t}\n\n\t\t\t// Overload the `read` request so Media.fetch() functions correctly.\n\t\t\tif ( 'read' === method ) {\n\t\t\t\toptions         = options || {};\n\t\t\t\toptions.context = this;\n\t\t\t\toptions.data    = _.extend( options.data || {}, {\n\t\t\t\t\taction : 'bc_media_fetch',\n\t\t\t\t\tid :     this.id\n\t\t\t\t} );\n\n\t\t\t\treturn wp.media.ajax( options );\n\n\t\t\t\t// Overload the `update` request so properties can be saved.\n\t\t\t} else if ( 'update' === method ) {\n\t\t\t\toptions         = options || {};\n\t\t\t\toptions.context = this;\n\t\t\t\t// Set the action and ID.\n\t\t\t\toptions.data = _.extend( options.data || {}, {\n\t\t\t\t\taccount :          accountHash,\n\t\t\t\t\taction :           'bc_media_update',\n\t\t\t\t\tdescription :      this.get( 'description' ),\n\t\t\t\t\tlong_description : this.get( 'long_description' ),\n\t\t\t\t\tname :             this.get( 'name' ),\n\t\t\t\t\tnonce :            wpbc.preload.nonce,\n\t\t\t\t\ttags :             this.get( 'tags' ),\n\t\t\t\t\ttype :             this.get( 'mediaType' ),\n\t\t\t\t\tcustom_fields:     this.get( 'custom_fields' ),\n\t\t\t\t\thistory:           this.get( '_change_history' ),\n\t\t\t\t\tposter:            this.get( 'poster' ),\n\t\t\t\t\tthumbnail:         this.get( 'thumbnail' ),\n\t\t\t\t\tcaptions:          this.get( 'captions' )\n\t\t\t\t} );\n\n\t\t\t\tvar video_ids = this.get( 'video_ids' );\n\t\t\t\tif ( video_ids ) {\n\t\t\t\t\toptions.data.playlist_id     = this.id;\n\t\t\t\t\toptions.data.playlist_videos = video_ids;\n\t\t\t\t\toptions.data.type            = 'playlists';\n\t\t\t\t} else {\n\t\t\t\t\toptions.data.video_id = this.id;\n\t\t\t\t}\n\n\t\t\t\toptions.success = this.successFunction;\n\t\t\t\toptions.error   = this.failFunction;\n\n\t\t\t\twpbc.broadcast.trigger( 'spinner:on' );\n\t\t\t\treturn wp.media.ajax( options );\n\n\t\t\t\t// Overload the `delete` request so attachments can be removed.\n\t\t\t\t// This will permanently delete an attachment.\n\t\t\t} else if ( 'delete' === method ) {\n\t\t\t\toptions = options || {};\n\t\t\t\tvar self = this;\n\n\t\t\t\toptions.data = _.extend( options.data || {}, {\n\t\t\t\t\taccount : accountHash,\n\t\t\t\t\taction :  'bc_media_delete',\n\t\t\t\t\tid :      this.get( 'id' ),\n\t\t\t\t\tnonce :   wpbc.preload.nonce,\n\t\t\t\t\ttype :    this.get( 'mediaType' ),\n\t\t\t\t} );\n\n\t\t\t\treturn wp.media.ajax( options ).done( function ( response ) {\n\t\t\t\t\tself.destroyed = true;\n\t\t\t\t\twpbc.broadcast.trigger( 'delete:successful', response );\n\t\t\t\t\tif ( 'videos' === self.get( 'mediaType' ) || ! _.isUndefined( self.get( 'video_ids' ) ) ) {\n\t\t\t\t\t\twpbc.preload.videos = undefined;\n\t\t\t\t\t} else {\n\t\t\t\t\t\twpbc.preload.playlists = undefined;\n\t\t\t\t\t}\n\t\t\t\t\twpbc.responses = {};\n\t\t\t\t} ).fail( function ( response ) {\n\t\t\t\t\tself.destroyed = false;\n\t\t\t\t\twpbc.broadcast.trigger( 'videoEdit:message', response, 'error' );\n\t\t\t\t\twpbc.broadcast.trigger( 'spinner:off' );\n\t\t\t\t} );\n\n\t\t\t\t// Otherwise, fall back to `Backbone.sync()`.\n\t\t\t} else {\n\t\t\t\t/**\n\t\t\t\t * Call `sync` directly on Backbone.Model\n\t\t\t\t */\n\t\t\t\treturn Backbone.Model.prototype.sync.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Convert date strings into Date objects.\n\t\t *\n\t\t * @param {Object} resp The raw response object, typically returned by fetch()\n\t\t * @returns {Object} The modified response object, which is the attributes hash\n\t\t *    to be set on the model.\n\t\t */\n\t\tparse : function ( resp ) {\n\t\t\tif ( ! resp ) {\n\t\t\t\treturn resp;\n\t\t\t}\n\n\t\t\tresp.date     = new Date( resp.date );\n\t\t\tresp.modified = new Date( resp.modified );\n\t\t\treturn resp;\n\t\t},\n\n\t\tgetAccountName : function () {\n\n\t\t\tvar account_id      = this.get( 'account_id' );\n\t\t\tvar matchingAccount = _.findWhere( wpbc.preload.accounts, {account_id : this.get( 'account_id' )} );\n\t\t\treturn undefined === matchingAccount ? this.getSelectedAccountName() : matchingAccount.account_name;\n\t\t},\n\n\t\tgetSelectedAccountName : function () {\n      var elt = document.getElementById( 'brightcove-media-source' );\n\n      if ( elt.selectedIndex === -1 ) {\n        return 'unavailable';\n      }\n\n      return elt.options[elt.selectedIndex].text;\n\t\t},\n\n\t\tgetReadableDuration : function () {\n\n\t\t\tvar duration = this.get( 'duration' );\n\n\t\t\tif ( duration ) {\n\t\t\t\tduration    = Number( duration / 1000 );\n\t\t\t\tvar hours   = Math.floor( duration / 3600 );\n\t\t\t\tvar minutes = Math.floor( duration % 3600 / 60 );\n\t\t\t\tvar seconds = Math.floor( duration % 3600 % 60 );\n\t\t\t\treturn ((hours > 0 ? hours + \":\" + (minutes < 10 ? \"0\" : \"\") : \"\") + minutes + \":\" + (seconds < 10 ? \"0\" : \"\") + seconds);\n\t\t\t}\n\t\t\treturn duration;\n\t\t},\n\n\t\tgetReadableDate : function ( field ) {\n\n\t\t\tvar updated_at = this.get( field );\n\n\t\t\tif ( updated_at ) {\n\n\t\t\t\tvar date = new Date( updated_at );\n\n\t\t\t\tvar hour = date.getHours();\n\t\t\t\tvar min  = date.getMinutes();\n\t\t\t\tvar year = date.getFullYear();\n\t\t\t\tvar mon  = date.getMonth() + 1;\n\t\t\t\tvar day  = date.getDate();\n\t\t\t\tvar ampm = hour >= 12 ? 'pm' : 'am';\n\n\t\t\t\thour = hour % 12;\n\t\t\t\thour = hour ? hour : 12;\n\n\t\t\t\tmin = min < 10 ? '0' + min : min;\n\n\t\t\t\tvar readableDate = year + '/' + mon + '/' + day + ' - ' + hour + ':' + min + ' ' + ampm;\n\t\t\t\treturn readableDate;\n\t\t\t}\n\t\t\treturn updated_at;\n\t\t},\n\n\t\tsuccessFunction : function ( message ) {\n\t\t\twpbc.broadcast.trigger( 'videoEdit:message', message, 'success' );\n\t\t\twpbc.broadcast.trigger( 'spinner:off' );\n\t\t\tif ( _.isArray( this.get( 'video_ids' ) ) && wpbc.preload && wpbc.preload.playlists ) {\n\t\t\t\tvar id = this.get( 'id' );\n\t\t\t\t_.each( wpbc.preload.playlists, function ( playlist, index ) {\n\t\t\t\t\tif ( playlist.id === id ) {\n\t\t\t\t\t\twpbc.preload.playlists[index] = this.toJSON();\n\t\t\t\t\t}\n\t\t\t\t}, this );\n\t\t\t}\n\t\t\twpbc.responses = {};\n\t\t\tif ( 'videos' === this.get( 'mediaType' ) || ! _.isUndefined( this.get( 'video_ids' ) ) ) {\n\t\t\t\twpbc.preload.videos = undefined;\n\t\t\t} else {\n\t\t\t\twpbc.preload.playlists = undefined;\n\t\t\t}\n\t\t},\n\n\t\tfailFunction : function ( message ) {\n\t\t\twpbc.broadcast.trigger( 'videoEdit:message', message, 'error' );\n\t\t\twpbc.broadcast.trigger( 'spinner:off' );\n\t\t}\n\t}\n);\n","var MediaCollection = Backbone.Collection.extend(\n\t{\n\t\tmodel :      MediaModel,\n\t\t/**\n\t\t * @param {Array} [models=[]] Array of models used to populate the collection.\n\t\t * @param {Object} [options={}]\n\t\t */\n\t\tinitialize : function ( models, options ) {\n\t\t\toptions = options || {};\n\t\t\tif ( options.activeAccount ) {\n\t\t\t\tthis.activeAccount = options.activeAccount;\n\t\t\t}\n\n\t\t\tthis.additionalRequest = false;\n\n\t\t\tthis.pageNumber = this.pageNumber || 1;\n\n\t\t\tif ( ! this.mediaType && (this.mediaCollectionViewType === 'existingPlaylists' || this.mediaCollectionViewType === 'libraryPlaylists') ) {\n\t\t\t\tthis.mediaType = 'videos';\n\t\t\t}\n\n\t\t\tthis.mediaCollectionViewType = options.mediaCollectionViewType || 'grid';\n\n\t\t\tif ( options.excludeVideoIds && 'libraryPlaylists' === options.mediaCollectionViewType ) {\n\t\t\t\tthis.excludeVideoIds = options.excludeVideoIds;\n\t\t\t}\n\n\t\t\tif ( options.videoIds && ! models ) {\n\t\t\t\tthis.mediaType = 'videos';\n\t\t\t\tthis.videoIds  = options.videoIds;\n\t\t\t\tthis.fetch();\n\t\t\t} else if ( 'playlists' !== options.mediaType ) {\n\t\t\t\tthis.mediaType = 'videos';\n\t\t\t\tthis.fetch();\n\t\t\t}\n\n\t\t\tthis.mediaType = options.mediaType;\n\n\t\t\tif ( 'videos' === this.mediaType ) {\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:uploadedFileDetails', function ( video ) {\n\t\t\t\t\t// Add the newly uploaded file\n\t\t\t\t\tthis.add( video, {at : 0} );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tthis.activeAccount = options.activeAccount || 'all';\n\t\t\tthis.searchTerm    = options.searchTerm || '';\n\t\t\tthis.dates         = options.dates || 'all';\n\t\t\tthis.tag           = options.tag || '';\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:activeAccount', function ( accountId ) {\n\t\t\t\tthis.activeAccount = accountId;\n\t\t\t\twp.heartbeat.enqueue( 'brightcove_heartbeat', { 'accountId': accountId }, true );\n\t\t\t\tthis.fetch();\n\t\t\t} );\n\n\t\t\t$( document ).on( 'heartbeat-tick.brightcove_heartbeat', function( event, data ) {\n\t\t\t\tif ( data.hasOwnProperty( 'brightcove_heartbeat' ) ) {\n\t\t\t\t\twp.heartbeat.enqueue( 'brightcove_heartbeat', { 'accountId': data['brightcove_heartbeat']['account_id'] }, true );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:searchTerm', function ( searchTerm ) {\n\t\t\t\tthis.searchTerm = searchTerm;\n\t\t\t\tthis.fetch();\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:tag', function ( tag ) {\n\n\t\t\t\tif ( 'all' === tag ) {\n\t\t\t\t\ttag = '';\n\t\t\t\t}\n\n\t\t\t\tthis.tag = tag;\n\t\t\t\tthis.fetch();\n\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:date', function ( date ) {\n\t\t\t\tthis.date = date;\n\t\t\t\tthis.fetch();\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'tabChange', function ( settings ) {\n\t\t\t\tthis.killPendingRequests();\n\t\t\t\tif ( settings.mediaType !== this.mediaType ) {\n\t\t\t\t\tthis.mediaType = settings.mediaType;\n\t\t\t\t\tvar preload    = wpbc.preload[this.mediaType];\n\t\t\t\t\tvar model;\n\t\t\t\t\t// Remove all models from the collection\n\t\t\t\t\twhile ( model = this.first() ) {\n\t\t\t\t\t\tthis.remove( model );\n\t\t\t\t\t}\n\t\t\t\t\tif ( preload !== undefined ) {\n\t\t\t\t\t\tthis.add( preload );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.fetch();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t},\n\n\t\tkillPendingRequests : function () {\n\t\t\t// Kill all pending requests\n\t\t\t_.each( wpbc.requests, function ( request ) {\n\t\t\t\trequest.abort();\n\t\t\t} );\n\n\t\t\twpbc.requests = [];\n\t\t},\n\n\t\tchecksum : function ( object ) {\n\t\t\tif ( ! _.isString( object ) ) {\n\t\t\t\tif ( _.isFunction( object.toJSON ) ) {\n\t\t\t\t\tobject = object.toJSON();\n\t\t\t\t} else {\n\t\t\t\t\tobject = JSON.stringify( object );\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tvar checksum = 0x12345678;\n\n\t\t\tfor ( var i = 0; i < object.length; i ++ ) {\n\t\t\t\tchecksum += (object.charCodeAt( i ) * (i + 1));\n\t\t\t}\n\n\t\t\treturn checksum;\n\t\t},\n\n\t\t/**\n\t\t * Overrides Backbone.Collection.sync\n\t\t *\n\t\t * @param {String} method\n\t\t * @param {Backbone.Model} model\n\t\t * @param {Object} [options={}]\n\t\t * @returns {Promise}\n\t\t */\n\t\tsync : function ( method, model, options ) {\n\t\t\tvar args, fallback;\n\n\t\t\t// Overload the read method so Media.fetch() functions correctly.\n\t\t\tif ( 'read' === method ) {\n\t\t\t\toptions      = options || {};\n\t\t\t\toptions.data = _.extend( options.data || {}, {\n\t\t\t\t\taction :         'bc_media_query',\n\t\t\t\t\taccount :        this.activeAccount || wpbc.preload.defaultAccountId,\n\t\t\t\t\tdates :          this.date,\n\t\t\t\t\tposts_per_page : wpbc.posts_per_page,\n\t\t\t\t\tpage_number :    this.pageNumber,\n\t\t\t\t\tnonce :          wpbc.preload.nonce,\n\t\t\t\t\tsearch :         this.searchTerm,\n\t\t\t\t\ttags :           this.tag,\n\t\t\t\t\ttagName :        wpbc.preload.tags[this.tag],\n\t\t\t\t\ttype : this.mediaType || 'videos'\n\t\t\t\t} );\n\n\t\t\t\tvar previousRequest = _.pick( options.data, 'account', 'dates', 'posts_per_page', 'search', 'tags', 'type' );\n\n\t\t\t\t// Determine if we're infinite scrolling or not.\n\t\t\t\tthis.additionalRequest = _.isEqual( previousRequest, wpbc.previousRequest );\n\t\t\t\tif ( ! this.additionalRequest ) {\n\t\t\t\t\toptions.data.page_number = 1;\n\t\t\t\t}\n\t\t\t\t/* Prevent reloading on the playlist edit as the playlist videos are one request and library videos another */\n\t\t\t\tif ( this.mediaCollectionViewType !== 'existingPlaylists' ) {\n\t\t\t\t\twpbc.previousRequest = previousRequest;\n\t\t\t\t}\n\n\t\t\t\tif ( this.videoIds ) {\n\t\t\t\t\toptions.data.videoIds = this.videoIds.length ? this.videoIds : 'none';\n\t\t\t\t}\n\n\t\t\t\toptions.data.query = args;\n\n\t\t\t\tif ( ! _.contains( ['libraryPlaylists', 'existingPlaylists'], this.mediaCollectionViewType ) ) {\n\t\t\t\t\tthis.killPendingRequests();\n\t\t\t\t}\n\n\t\t\t\tvar requestChecksum = this.checksum( options.data );\n\n\t\t\t\tif ( ! _.isUndefined( wpbc.responses[requestChecksum] ) ) {\n\t\t\t\t\tthis.parse( {data : wpbc.responses[requestChecksum]}, 'cached' );\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tvar request = $.ajax( {\n\t\t\t\t\t                      type :    'POST',\n\t\t\t\t\t                      url :     wp.ajax.settings.url,\n\t\t\t\t\t                      context : this,\n\t\t\t\t\t                      data :    options.data\n\t\t\t\t                      } ).done( function ( response, status, request ) {\n\t\t\t\t\tthis.parse( response, status, request, requestChecksum );\n\t\t\t\t} ).fail( this.fetchFail );\n\n\t\t\t\twpbc.requests.push( request );\n\t\t\t\twpbc.broadcast.trigger( 'spinner:on' );\n\n\t\t\t\treturn request;\n\n\t\t\t\t// Otherwise, fall back to Backbone.sync()\n\t\t\t} else {\n\t\t\t\t/**\n\t\t\t\t * Call wp.media.model.MediaCollection.sync or Backbone.sync\n\t\t\t\t */\n\t\t\t\tfallback = MediaCollection.prototype.sync ? MediaCollection.prototype : Backbone;\n\t\t\t\treturn fallback.sync.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\tfetchFail : function () {\n\t\t\tif ( this.pageNumber > 1 ) {\n\t\t\t\tthis.pageNumber --;\n\t\t\t}\n\t\t\twpbc.broadcast.trigger( 'fetch:finished' );\n\t\t\twpbc.broadcast.trigger( 'spinner:off' );\n\t\t\twpbc.broadcast.trigger( 'fetch:apiError' );\n\t\t\tif ( 'abort' === status ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * A custom AJAX-response parser.\n\t\t *\n\t\t * See trac ticket #24753\n\t\t *\n\t\t * @param {Object|Array} resp The raw response Object/Array.\n\t\t * @param {Object} xhr\n\t\t * @returns {Array} The array of model attributes to be added to the collection\n\t\t */\n\t\tparse : function ( response, status, request, checksum ) {\n\t\t\twpbc.broadcast.trigger( 'fetch:finished' );\n\t\t\twpbc.broadcast.trigger( 'spinner:off' );\n\t\t\tif ( ! _.contains( ['success', 'cached'], status ) || ( 'cached' !== status && ! response['success'] ) ) {\n\t\t\t\twpbc.broadcast.trigger( 'fetch:apiError' );\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar data = response.data;\n\n\t\t\tif ( \"success\" === status ) {\n\t\t\t\twpbc.responses[checksum] = data;\n\t\t\t}\n\n\t\t\tif ( false === data ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif ( ! _.isArray( data ) ) {\n\t\t\t\tdata = [data];\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * In playlist video search, we remove the videos that already exist in the playlist.\n\t\t\t */\n\t\t\tif ( _.isArray( this.excludeVideoIds ) ) {\n\t\t\t\t_.each( this.excludeVideoIds, function ( videoId ) {\n\t\t\t\t\tdata = _.without( data, _.findWhere( data, {id : videoId} ) );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tvar allMedia = _.map( data, function ( attrs ) {\n\t\t\t\tvar id, media, newAttributes;\n\n\t\t\t\tif ( attrs instanceof Backbone.Model ) {\n\t\t\t\t\tid    = attrs.get( 'id' );\n\t\t\t\t\tattrs = attrs.attributes;\n\t\t\t\t} else {\n\t\t\t\t\tid = attrs.id;\n\t\t\t\t}\n\n\t\t\t\tmedia = this.findWhere( {id : id} );\n\t\t\t\tif ( ! media ) {\n\t\t\t\t\tmedia = this.add( attrs );\n\t\t\t\t} else {\n\t\t\t\t\tnewAttributes = media.parse( attrs );\n\n\t\t\t\t\tif ( ! _.isEqual( media.attributes, newAttributes ) ) {\n\t\t\t\t\t\tmedia.set( newAttributes );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tmedia.set( 'viewType', this.mediaCollectionViewType );\n\t\t\t\treturn media;\n\t\t\t}, this );\n\n\t\t\tif ( this.additionalRequest ) {\n\t\t\t\tthis.add( allMedia );\n\t\t\t} else {\n\t\t\t\tthis.set( allMedia );\n\t\t\t}\n\t\t}\n\t}\n);\n","var BrightcoveMediaManagerModel = Backbone.Model.extend(\n\t{\n\t\tdefaults :   {\n\t\t\tview :    'grid',\n\t\t\tdate :    'all',\n\t\t\ttags :    'all',\n\t\t\ttype :    null, // enum[playlist, video]\n\t\t\tpreload : true,\n\t\t\tsearch :  '',\n\t\t\taccount : wpbc.preload.defaultAccountId,\n\t\t\tposter: {},\n\t\t\tthumbnail: {}\n\t\t},\n\t\tinitialize : function ( options ) {\n\t\t\t_.defaults( options, this.defaults );\n\n\t\t\twp.heartbeat.enqueue( 'brightcove_heartbeat', { 'accountId': wpbc.preload.defaultAccountId }, true );\n\n\t\t\tvar collection = new MediaCollection( [], {mediaType : options.mediaType} );\n\t\t\tcollection.reset();\n\t\t\t/* Prevent empty element from living in our collection */\n\n\t\t\tif ( options.preload && options.preload.length ) {\n\t\t\t\tcollection.add( options.preload );\n\t\t\t}\n\n\t\t\toptions.preload = ! ! options.preload; // Whether or not a preload var was present.\n\n\t\t\tthis.set( 'media-collection-view', new MediaCollectionView( {collection : collection} ) );\n\t\t\tthis.set( 'options', options );\n\n\t\t}\n\t}\n);\n\n","/**\n * Media model for Media CPT\n */\n\nvar BrightcoveModalModel = Backbone.Model.extend(\n\t{\n\n\t\tgetMediaManagerSettings : function () {\n\t\t\tvar tab      = this.get( 'tab' );\n\t\t\tvar settings = {\n\t\t\t\t'upload' :    {\n\t\t\t\t\taccounts :  'all',\n\t\t\t\t\tdate :      'all',\n\t\t\t\t\tembedType : 'modal',\n\t\t\t\t\tmediaType : 'videos',\n\t\t\t\t\tmode :      'uploader',\n\t\t\t\t\tpreload :   true,\n\t\t\t\t\tsearch :    '',\n\t\t\t\t\ttags :      'all',\n\t\t\t\t\tviewType :  'grid',\n\t\t\t\t\tposter:     {},\n\t\t\t\t\tthumbnail:  {}\n\t\t\t\t},\n\t\t\t\t'videos' :    {\n\t\t\t\t\taccounts :  'all',\n\t\t\t\t\tdate :      'all',\n\t\t\t\t\tembedType : 'modal',\n\t\t\t\t\tmediaType : 'videos',\n\t\t\t\t\tmode :      'manager',\n\t\t\t\t\tpreload :   true,\n\t\t\t\t\tsearch :    '',\n\t\t\t\t\ttags :      'all',\n\t\t\t\t\tviewType :  'grid'\n\t\t\t\t},\n\t\t\t\t'playlists' : {\n\t\t\t\t\taccounts :  'all',\n\t\t\t\t\tdate :      'all',\n\t\t\t\t\tembedType : 'modal',\n\t\t\t\t\tmediaType : 'playlists',\n\t\t\t\t\tmode :      'manager',\n\t\t\t\t\tpreload :   true,\n\t\t\t\t\tsearch :    '',\n\t\t\t\t\ttags :      'all',\n\t\t\t\t\tviewType :  'grid'\n\t\t\t\t},\n        'video-experience' : {\n          accounts :  'all',\n          date :      'all',\n          embedType : 'modal',\n          mediaType : 'videoexperience',\n          mode :      'manager',\n          preload :   true,\n          search :    '',\n          tags :      'all',\n          viewType :  'grid'\n        }\n        ,\n        'playlist-experience' : {\n          accounts :  'all',\n          date :      'all',\n          embedType : 'modal',\n          mediaType : 'playlistexperience',\n          mode :      'manager',\n          preload :   true,\n          search :    '',\n          tags :      'all',\n          viewType :  'grid'\n        }\n\t\t\t};\n\n\t\t\tif ( undefined !== settings[tab] ) {\n\t\t\t\treturn settings[tab];\n\t\t\t}\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n);\n\n","/**\n * Collection model to contain pending uploads\n */\n\nvar UploadModelCollection = Backbone.Collection.extend(\n\t{\n\n\t\tinitialize : function ( options ) {\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:queuedFilesAdded', this.queuedFilesAdded );\n\t\t},\n\n\t\tqueuedFilesAdded : function ( queuedFiles ) {\n\t\t\t_.each( queuedFiles, function ( queuedFile ) {\n\t\t\t\tthis.add( new UploadModel( queuedFile ) );\n\t\t\t}, this );\n\t\t}\n\n\t}\n);\n\n","/**\n * Model to contain pending upload\n */\n\nvar UploadModel = Backbone.Model.extend(\n\t{\n\n\t\tinitialize : function ( options ) {\n\t\t},\n\n\t\thumanReadableSize : function () {\n\t\t\tvar bytes = this.get( 'size' );\n\t\t\tif ( bytes === 0 ) {\n\t\t\t\treturn '0 Byte';\n\t\t\t}\n\t\t\tvar k     = 1000;\n\t\t\tvar sizes = ['Bytes', 'KB', 'MB', 'GB'];\n\t\t\tvar i     = Math.floor( Math.log( bytes ) / Math.log( k ) );\n\t\t\treturn (bytes / Math.pow( k, i )).toPrecision( 3 ) + ' ' + sizes[i];\n\t\t}\n\n\t}\n);\n","var BrightcoveView = wp.Backbone.View.extend(\n\t{\n\t\tsubviews : null,\n\n\t\tregisterSubview : function ( view ) {\n\n\t\t\tthis.subviews = this.subviews || [];\n\t\t\tthis.subviews.push( view );\n\n\t\t},\n\n\t\tremove : function () {\n\n\t\t\t_.invoke( this.subviews, 'remove' );\n\t\t\twp.Backbone.View.prototype.remove.call( this );\n\n\t\t},\n\n\t\tinsertShortcode : function () {\n\n\t\t\tif ( ! this.model ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar shortcode = wpbc.shortcode;\n\n            if ( undefined === this.mediaType ) {\n\t\t\t\tvar template = wp.template( 'brightcove-mediatype-notice' );\n\n\t\t\t\t// Throw a notice to the user that the file is not the correct format\n\t\t\t\t$( '#lost-connection-notice' ).before( template );\n\n\t\t\t\t// Allow the user to dismiss the notice\n\t\t\t\t$( '#js-mediatype-dismiss' ).on( 'click', function() {\n\t\t\t\t\t$( '#js-mediatype-notice' ).first().fadeOut( 500, function() {\n\t\t\t\t\t\t$( this ).remove();\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tif( wpbc.modal.target === 'content' ) {\n\t\t\t\twindow.send_to_editor( shortcode );\n\t\t\t} else {\n\t\t\t\t$( wpbc.modal.target ).val( shortcode );\n\t\t\t\t$( wpbc.modal.target ).change();\n\t\t\t}\n\n\t\t\twpbc.broadcast.trigger( 'close:modal' );\n\t\t}\n\t}\n);\n","/**\n * This is the toolbar to handle sorting, filtering, searching and grid/list\n * view toggles. State is captured in the brightcove-media-manager model.\n */\nvar ToolbarView = BrightcoveView.extend(\n\t{\n\t\ttagName :   'div',\n\t\tclassName : 'media-toolbar wp-filter',\n\t\ttemplate :  wp.template( 'brightcove-media-toolbar' ),\n\n\t\tevents : {\n      'click .view-list': 'toggleList',\n      'click .view-grid': 'toggleGrid',\n      'click .brightcove-toolbar': 'toggleToolbar',\n      'change .brightcove-media-source': 'sourceChanged',\n      'change .brightcove-media-dates': 'datesChanged',\n      'change .brightcove-media-tags': 'tagsChanged',\n      'change .brightcove-empty-playlists': 'emptyPlaylistsChanged',\n      'click #media-search': 'searchHandler',\n      'keyup .search': 'enterHandler'\n\t\t},\n\n\t\trender : function () {\n\t\t\tvar mediaType = this.model.get( 'mediaType' );\n\t\t\tvar options   = {\n\t\t\t\taccounts :  wpbc.preload.accounts,\n\t\t\t\tdates :     {},\n\t\t\t\tmediaType : mediaType,\n\t\t\t\ttags :      wpbc.preload.tags,\n\t\t\t\taccount :   this.model.get( 'account' )\n\t\t\t};\n\n\t\t\tvar dates    = wpbc.preload.dates;\n\t\t\tvar date_var = this.model.get( 'date' );\n\t\t\t/* @todo: find out if this is working */\n\t\t\tif ( dates !== undefined && dates[mediaType] !== undefined && dates[mediaType][date_var] !== undefined ) {\n\t\t\t\toptions.dates = dates[mediaType][date_var];\n\t\t\t}\n\n\t\t\tthis.$el.html( this.template( options ) );\n\t\t\tvar spinner = this.$el.find( '.spinner' );\n\t\t\tthis.listenTo( wpbc.broadcast, 'spinner:on', function () {\n\t\t\t\tspinner.addClass( 'is-active' ).removeClass( 'hidden' );\n\t\t\t} );\n\t\t\tthis.listenTo( wpbc.broadcast, 'spinner:off', function () {\n\t\t\t\tspinner.removeClass( 'is-active' ).addClass( 'hidden' );\n\t\t\t} );\n\t\t},\n\n\t\t// List view Selected\n\t\ttoggleList : function () {\n\t\t\tthis.trigger( 'viewType', 'list' );\n\t\t\tthis.$el.find( '.view-list' ).addClass( 'current' );\n\t\t\tthis.$el.find( '.view-grid' ).removeClass( 'current' );\n\t\t},\n\n\t\t// Grid view Selected\n\t\ttoggleGrid : function () {\n\t\t\tthis.trigger( 'viewType', 'grid' );\n\t\t\tthis.$el.find( '.view-grid' ).addClass( 'current' );\n\t\t\tthis.$el.find( '.view-list' ).removeClass( 'current' );\n\t\t},\n\n\t\t// Toggle toolbar help\n\t\ttoggleToolbar : function () {\n\t\t\tvar template = wp.template( 'brightcove-tooltip-notice' );\n\n\t\t\t// Throw a notice to the user that the file is not the correct format\n\t\t\t$( '.brightcove-media-videos' ).before( template );\n\t\t\t// Allow the user to dismiss the notice\n\t\t\t$( '#js-tooltip-dismiss' ).on( 'click', function() {\n\t\t\t\t$( '#js-tooltip-notice' ).first().fadeOut( 500, function() {\n\t\t\t\t\t$( this ).remove();\n\t\t\t\t} );\n\t\t\t} );\n\t\t},\n\n\t\t// Brightcove source changed\n\t\tsourceChanged : function ( event ) {\n\n\t\t\t// Store the currently selected account on the model.\n\t\t\tthis.model.set( 'account', event.target.value );\n\t\t\twpbc.broadcast.trigger( 'change:activeAccount', event.target.value );\n\t\t},\n\n\t\tdatesChanged : function ( event ) {\n\t\t\twpbc.broadcast.trigger( 'change:date', event.target.value );\n\t\t},\n\n\t\ttagsChanged : function ( event ) {\n\t\t\twpbc.broadcast.trigger( 'change:tag', event.target.value );\n\t\t},\n\n\t\temptyPlaylistsChanged : function ( event ) {\n\t\t\tvar emptyPlaylists = $( event.target ).prop( 'checked' );\n\t\t\twpbc.broadcast.trigger( 'change:emptyPlaylists', emptyPlaylists );\n\t\t},\n\n    enterHandler : function ( event ) {\n      if ( event.keyCode === 13 ) {\n        this.searchHandler( event );\n      }\n    },\n\n\t\tsearchHandler : function ( event ) {\n\t\t\tvar searchTerm = $( '#media-search-input' ).val();\n\n\t\t\tif ( searchTerm.length > 2 && searchTerm !== this.model.get( 'search' ) ) {\n\t\t\t\tthis.model.set( 'search', searchTerm );\n\t\t\t\twpbc.broadcast.trigger( 'change:searchTerm', searchTerm );\n\t\t\t} else if (searchTerm.length === 0) {\n  \t\t\twpbc.broadcast.trigger( 'change:searchTerm', \"\" );\n\t\t\t}\n\t\t}\n\t}\n);\n\n","var UploadVideoManagerView = BrightcoveView.extend(\n\t{\n\t\tclassName : \"brightcove-file-uploader\",\n\n\t\tevents : {\n\t\t\t'click .brightcove-start-upload' : 'triggerUpload'\n\t\t},\n\n\t\tinitialize : function ( options ) {\n\t\t\t/**\n\t\t\t * If you're looking for the Plupload instance, you're in the wrong place, check the UploadWindowView\n\t\t\t */\n\t\t\tthis.collection = new UploadModelCollection();\n\t\t\tif ( options ) {\n\t\t\t\tthis.options = options;\n\n\t\t\t\tthis.successMessage = options.successMessage || this.successMessage;\n\t\t\t}\n\n\t\t\tthis.uploadWindow = new UploadWindowView();\n\n\t\t\tthis.listenTo( this.collection, 'add', this.fileAdded );\n\t\t\tthis.listenTo( wpbc.broadcast, 'pendingUpload:selectedItem', this.selectedItem );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:prepareUpload', this.prepareUpload );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:successMessage', this.successMessage );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:errorMessage', this.errorMessage );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:clear', this.resetUploads );\n\t\t\tthis.listenTo( wpbc.broadcast, 'upload:video', this.resetUploads );\n\t\t},\n\n\t\tresetUploads : function () {\n\t\t\twhile ( model = this.collection.first() ) {\n\t\t\t\tthis.collection.remove( model );\n\t\t\t}\n\t\t},\n\n\t\terrorMessage : function ( message ) {\n\t\t\tthis.message( message, 'error' );\n\t\t},\n\n\t\tsuccessMessage : function ( message ) {\n\t\t\tthis.message( message, 'success' );\n\t\t},\n\n\t\tmessage : function ( message, type ) {\n\t\t\tvar messages       = this.$el.find( '.brightcove-messages' );\n\t\t\tvar messageClasses = '';\n\t\t\tif ( 'success' === type ) {\n\t\t\t\tmessageClasses = 'notice updated';\n\t\t\t} else if ( 'error' === type ) {\n\t\t\t\tmessageClasses = 'error';\n\t\t\t}\n\t\t\tvar newMessage = $( '<div class=\"wrap\"><div class=\"brightcove-message\"><p class=\"message-text\"></p></div></div>' );\n\t\t\tmessages.append( newMessage );\n\t\t\tnewMessage.addClass( messageClasses ).find( '.message-text' ).text( message );\n\t\t\tnewMessage.delay( 4000 ).fadeOut( 500, function () {\n\t\t\t\t$( this ).remove();\n\t\t\t\twpbc.broadcast.trigger('upload:video');\n\t\t\t} );\n\t\t},\n\n\t\tprepareUpload : function () {\n\t\t\twpbc.uploads = wpbc.uploads || {};\n\t\t\tthis.collection.each( function ( upload ) {\n\t\t\t\twpbc.uploads[upload.get( 'id' )] = {\n\t\t\t\t\taccount : upload.get( 'account' ),\n\t\t\t\t\tname :    upload.get( 'fileName' ),\n\t\t\t\t\ttags :    upload.get( 'tags' )\n\t\t\t\t};\n\t\t\t} );\n\t\t\twpbc.broadcast.trigger( 'uploader:startUpload' );\n\t\t},\n\n\t\tfileAdded : function ( model, collection ) {\n\t\t\t// Start upload triggers progress bars under every video.\n\t\t\t// Need to re-render when one model is added\n\t\t\tif ( this.collection.length === 1 ) {\n\t\t\t\tthis.render();\n\t\t\t}\n\t\t\tvar pendingUpload = new UploadView( {model : model} );\n\t\t\tpendingUpload.render();\n\t\t\tpendingUpload.$el.appendTo( this.$el.find( '.brightcove-pending-uploads' ) );\n\t\t},\n\n\t\ttriggerUpload : function () {\n\t\t\twpbc.broadcast.trigger( 'uploader:prepareUpload' );\n\t\t},\n\n\t\tselectedItem : function ( model ) {\n\t\t\tthis.uploadDetails = new UploadDetailsView( {model : model} );\n\t\t\tthis.uploadDetails.render();\n\t\t\tthis.$el.find( '.brightcove-pending-upload-details' ).remove();\n\t\t\tthis.uploadDetails.$el.appendTo( this.$el.find( '.brightcove-upload-queued-files' ) );\n\t\t},\n\n\t\trender : function ( options ) {\n\t\t\tif ( this.collection.length ) {\n\t\t\t\tthis.template = wp.template( 'brightcove-uploader-queued-files' );\n\t\t\t} else {\n\t\t\t\tthis.template = wp.template( 'brightcove-uploader-inline' );\n\t\t\t\tthis.uploadWindow.render();\n\t\t\t\tthis.uploadWindow.$el.appendTo( $( 'body' ) );\n\t\t\t}\n\t\t\tthis.$el.html( this.template( options ) );\n\t\t\tif ( this.collection.length ) {\n\t\t\t\tthis.$el.find( '.brightcove-start-upload' ).show();\n\t\t\t} else {\n\t\t\t\tthis.$el.find( '.brightcove-start-upload' ).hide();\n\t\t\t}\n\t\t}\n\t}\n);\n","var BrightcoveRouter = Backbone.Router.extend({\n\troutes: {\n\t\t'add-new-brightcove-video' : \"addNew\"\n\t},\n\taddNew: function() {\n\t\twpbc.broadcast.trigger('upload:video');\n\t}\n});\n\nvar BrightcoveMediaManagerView = BrightcoveView.extend(\n\t{\n\t\ttagName :   'div',\n\t\tclassName : 'brightcove-media',\n\n\t\tevents : {\n\t\t\t/*\n\t\t\t 'click .brightcove.media-button': 'insertIntoPost'\n\t\t\t */\n\t\t},\n\n\t\tscrollHandler : function () {\n\t\t\twpbc.broadcast.trigger( 'scroll:mediaGrid' );\n\t\t},\n\n\t\tinitialize : function ( options ) {\n\n\t\t\tvar scrollRefreshSensitivity = wp.media.isTouchDevice ? 300 : 200;\n\t\t\tthis.scrollHandler           = _.chain( this.scrollHandler ).bind( this ).throttle( scrollRefreshSensitivity ).value();\n\t\t\tthis.options                 = options;\n\t\t\tthis.mode                    = options.mode || 'manager';\n\n\t\t\toptions.preload = this.options.preload ? wpbc.preload[this.options.mediaType] : false;\n\n\t\t\tthis.model = new BrightcoveMediaManagerModel( options );\n\n\t\t\t/* Search and dropdowns */\n\t\t\tthis.toolbar = new ToolbarView( {model : this.model} );\n\n\t\t\t/* Uploader View */\n\t\t\tthis.uploader = new UploadVideoManagerView();\n\n\t\t\tthis.model.set( 'accounts', wpbc.preload.accounts ); // All accounts.\n\t\t\tthis.model.set( 'activeAccount', options.account ); // Active account ID / All\n\n\t\t\tthis.listenTo( this.toolbar, 'viewType', function ( viewType ) {\n\t\t\t\tthis.model.set( 'view', viewType ); // Set the model view type\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'videoEdit:message', this.message );\n\t\t\tthis.listenTo( wpbc.broadcast, 'permanent:message', this.permanentMessage );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'remove:permanentMessage', function () {\n\n\t\t\t\tif ( wpbc.permanentMessage ) {\n\t\t\t\t\twpbc.permanentMessage.remove();\n\t\t\t\t}\n\n\t\t\t\tthis.$el.find( '.brightcove-message' ).addClass( 'hidden' );\n\n\t\t\t} );\n\n\t\t\t// We only care when a change occurs\n\t\t\tthis.listenTo( this.model, 'change:view', function ( model, type ) {\n\t\t\t\tthis.model.get( 'media-collection-view' ).setViewType( type );\n\t\t\t} );\n\n\t\t\tthis.listenTo( this.model, 'change:mode', function ( model, mode ) {\n\n\t\t\t\tif ( 'uploader' !== mode ) {\n\t\t\t\t\twpbc.broadcast.trigger( 'uploader:clear' );\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'cancelPreview:media', function ( settings ) {\n\t\t\t\tthis.clearPreview();\n\t\t\t\tthis.detailsView = undefined;\n\t\t\t\tthis.model.set( 'mode', 'manager' );\n\t\t\t\tthis.render();\n\n\t\t\t\t// Disable \"Insert Into Post\" button since no video would be selected.\n\t\t\t\twpbc.broadcast.trigger( 'toggle:insertButton' );\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:emptyPlaylists', function ( hideEmptyPlaylists ) {\n\n\t\t\t\tvar mediaCollectionView = this.model.get( 'media-collection-view' );\n\t\t\t\tthis.model.set( 'mode', 'manager' );\n\n\t\t\t\t_.each( mediaCollectionView.collection.models, function ( playlistModel ) {\n\n\t\t\t\t\t// Don't hide smart playlists. Only Manual playlists will have playlistType as 'EXPLICIT'.\n\t\t\t\t\tif ( 'EXPLICIT' !== playlistModel.get ( 'type' ) ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Manual play list will have videos populated in video_ids. Empty playlists will have zero video_ids.\n\t\t\t\t\tif ( playlistModel.get( 'video_ids' ).length === 0 ) {\n\t\t\t\t\t\tif ( hideEmptyPlaylists ) {\n\t\t\t\t\t\t\tplaylistModel.view.$el.hide();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tplaylistModel.view.$el.show();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'delete:successful', function ( message ) {\n\n\t\t\t\tthis.startGridView();\n\t\t\t\tthis.message( message, 'success' );\n\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:activeAccount', function ( accountId ) {\n\n\t\t\t\tthis.clearPreview();\n\t\t\t\tthis.model.set( 'activeAccount', accountId );\n\t\t\t\tthis.model.set( 'mode', 'manager' );\n\t\t\t\tthis.render();\n\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:tag', function ( tag ) {\n\n\t\t\t\tthis.clearPreview();\n\t\t\t\tthis.model.set( 'tag', tag );\n\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:date', function ( date ) {\n\n\t\t\t\tthis.clearPreview();\n\t\t\t\tthis.model.set( 'date', date );\n\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'upload:video', function () {\n\t\t\t\tthis.showUploader();\n\t\t\t} );\n\n\t\t\tthis.listenTo( this.model, 'change:search', function ( model, searchTerm ) {\n\t\t\t\tthis.model.get( 'search' );\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'start:gridview', function () {\n\n\t\t\t\t_.invoke( this.subviews, 'remove' );\n\n\t\t\t\tthis.detailsView = null; // Prevent selected view from not being toggleable when we hit the back button on edit\n\n\t\t\t\tthis.startGridView();\n\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'tabChange', function ( settings ) {\n\n\t\t\t\tthis.model.set( settings );\n\n\t\t\t\tif ( this.detailsView instanceof MediaDetailsView ) {\n\n\t\t\t\t\tthis.detailsView.remove();\n\n\t\t\t\t\tthis.detailsView = undefined;\n\n\t\t\t\t}\n\n\t\t\t\tthis.render();\n\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'edit:media', function ( model ) {\n\n\t\t\t\tvar mediaType = this.model.get( 'mediaType' );\n\n\t\t\t\tif ( mediaType === 'videos' ) {\n\n\t\t\t\t\t// We just hit the edit button with the edit window already open.\n\t\t\t\t\tif ( 'editVideo' === this.model.get( 'mode' ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\t// hide the previous notification\n\t\t\t\t\tvar messages = this.$el.find( '.brightcove-message' );\n\t\t\t\t\tmessages.addClass( 'hidden' );\n\n\t\t\t\t\tthis.editView = new VideoEditView( {model : model} );\n\n\t\t\t\t\tthis.registerSubview( this.editView );\n\t\t\t\t\tthis.model.set( 'mode', 'editVideo' );\n\t\t\t\t\tthis.render();\n\n\t\t\t\t} else if ( mediaType === 'videoexperience' ) {\n\n\t\t\t\t\t// We just hit the edit button with the edit window already open.\n\t\t\t\t\tif ( 'editVideo' === this.model.get( 'mode' ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\t// hide the previous notification\n\t\t\t\t\tvar messages = this.$el.find( '.brightcove-message' );\n\t\t\t\t\tmessages.addClass( 'hidden' );\n\n\t\t\t\t\tthis.editView = new VideoEditView( {model : model} );\n\n\t\t\t\t\tthis.registerSubview( this.editView );\n\t\t\t\t\tthis.model.set( 'mode', 'editVideo' );\n\t\t\t\t\tthis.render();\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// We just hit the edit button with the edit window already open.\n\t\t\t\t\tif ( 'editPlaylist' === this.model.get( 'mode' ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.editView = new PlaylistEditView( {model : model} );\n\n\t\t\t\t\tthis.registerSubview( this.editView );\n\t\t\t\t\tthis.model.set( 'mode', 'editPlaylist' );\n\t\t\t\t\tthis.render();\n\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'preview:media', function ( model, shortcode ) {\n\n\t\t\t\tvar mediaType = this.model.get( 'mediaType' );\n\n\t\t\t\tif ( mediaType === 'videos' ) {\n\n\t\t\t\t\t// We just hit the preview button with the preview window already open.\n\t\t\t\t\tif ( 'previewVideo' === this.model.get( 'mode' ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.previewView = new VideoPreviewView( {model : model, shortcode: shortcode} );\n\n\t\t\t\t\tthis.registerSubview( this.previewView );\n\t\t\t\t\tthis.model.set( 'mode', 'previewVideo' );\n\t\t\t\t\tthis.render();\n\n\t\t\t\t} else {\n\n\t\t\t\t\t/**\n\t\t\t\t\t * @todo: playlist preview view\n\t\t\t\t\t */\n\t\t\t\t\tthis.model.set( 'mode', 'editPlaylist' );\n\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:searchTerm', function ( mediaView ) {\n\t\t\t\tthis.clearPreview();\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'select:media', function ( mediaView ) {\n\n\t\t\t\t// Handle selection in the video experience tab.\n\t\t\t\tif ( mediaView.model.collection && 'videoexperience' === mediaView.model.collection.mediaType ) {\n\n\t\t\t\t\t// Toggle the selected state.\n\t\t\t\t\tmediaView.$el.toggleClass( 'highlighted' );\n\t\t\t\t\tmediaView.model.set( 'isSelected', mediaView.$el.hasClass( 'highlighted' ) );\n\n\t\t\t\t\t// Collect the selected models and extract their IDs.\n\t\t\t\t\tvar selected = _.filter( mediaView.model.collection.models, function( model ) {\n\t\t\t\t\t\treturn model.get( 'isSelected' );\n\t\t\t\t\t} ),\n\t\t\t\t\tselectedIds = _.map( selected, function( model ) {\n\t\t\t\t\t\treturn model.get( 'id' );\n\t\t\t\t\t} );\n\n\t\t\t\t\tthis.detailsView.model.set( 'id', selectedIds );\n\n\t\t\t\t\t// Clear the shortcode and disable insertion if no items are selected.\n\t\t\t\t\tif ( _.isEmpty( selectedIds ) && 'videoexperience' !== this.model.get( 'mediaType' )) {\n\t\t\t\t\t\twpbc.broadcast.trigger( 'toggle:insertButton' );\n\t\t\t\t\t\t$( '#shortcode' ).val( '' );\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Otherwise, enable insertion.\n\t\t\t\t\t\twpbc.broadcast.trigger( 'toggle:insertButton', 'enabled' );\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t/* If user selects same thumbnail they want to hide the details view */\n\t\t\t\t\tif ( this.detailsView && this.detailsView.model === mediaView.model ) {\n\n\t\t\t\t\t\tthis.detailsView.$el.toggle();\n\t\t\t\t\t\tmediaView.$el.toggleClass( 'highlighted' );\n\t\t\t\t\t\tthis.model.get( 'media-collection-view' ).$el.toggleClass( 'menu-visible' );\n\t\t\t\t\t\twpbc.broadcast.trigger( 'toggle:insertButton' );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.clearPreview();\n\t\t\t\t\t\tthis.detailsView = new MediaDetailsView( {model : mediaView.model, el : $( '.brightcove.media-frame-menu' ), mediaType : this.model.get( 'mediaType' )} );\n\t\t\t\t\t\tthis.registerSubview( this.detailsView );\n\n\t\t\t\t\t\tthis.detailsView.render();\n\t\t\t\t\t\tthis.detailsView.$el.toggle( true ); // Always show new view\n\t\t\t\t\t\tthis.model.get( 'media-collection-view' ).$el.addClass( 'menu-visible' );\n\t\t\t\t\t\tmediaView.$el.addClass( 'highlighted' );\n\t\t\t\t\t\twpbc.broadcast.trigger( 'toggle:insertButton', 'enabled' );\n\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\n\t\t},\n\n\t\t/**\n\t\t * Clear the preview view and remove highlighted class from previous selected video.\n\t\t */\n\t\tclearPreview : function () {\n\n\t\t\tif ( this.detailsView instanceof MediaDetailsView ) {\n\t\t\t\tthis.detailsView.remove();\n\t\t\t}\n\n\t\t\tthis.model.get( 'media-collection-view' ).$el.find( '.highlighted' ).removeClass( 'highlighted' );\n\n\t\t},\n\n\t\tstartGridView : function () {\n\n\t\t\tthis.model.set( 'mode', 'manager' );\n\t\t\tthis.render();\n\n\t\t},\n\n\t\tmessage : function ( message, type, permanent ) {\n\n\t\t\tvar messages = this.$el.find( '.brightcove-message' );\n\n\t\t\tif ( 'success' === type ) {\n\n\t\t\t\tmessages.addClass( 'updated' );\n\t\t\t\tmessages.removeClass( 'error' );\n\n\t\t\t} else if ( 'error' === type ) {\n\n\t\t\t\tmessages.addClass( 'error' );\n\t\t\t\tmessages.removeClass( 'updated' );\n\n\t\t\t}\n\n\t\t\tvar newMessage = $( '<p></p>' );\n\t\t\tnewMessage.text( message );\n\n\t\t\tmessages.append( newMessage );\n\t\t\tmessages.removeClass( 'hidden' );\n\n\t\t\tif ( permanent ) {\n\n\t\t\t\tif ( wpbc.permanentMessage ) {\n\t\t\t\t\twpbc.permanentMessage.remove();\n\t\t\t\t}\n\n\t\t\t\twpbc.permanentMessage = newMessage;\n\n\t\t\t} else {\n\t\t\t\t// Make the notice dismissable.\n\t\t\t\tmessages.addClass( 'notice is-dismissible' );\n\t\t\t\tthis.makeNoticesDismissible();\n\t\t\t}\n\t\t},\n\n\t\t// Make notices dismissible, mimics core function, fades them empties.\n\t\tmakeNoticesDismissible : function() {\n\t\t\t$( '.notice.is-dismissible' ).each( function() {\n\t\t\t\tvar $el = $( this ),\n\t\t\t\t\t$button = $( '<button type=\"button\" class=\"notice-dismiss\"><span class=\"screen-reader-text\"></span></button>' ),\n\t\t\t\t\tbtnText = commonL10n.dismiss || '';\n\n\t\t\t\t// Ensure plain text\n\t\t\t\t$button.find( '.screen-reader-text' ).text( btnText );\n\t\t\t\t$button.on( 'click.wp-dismiss-notice', function( event ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t$el.fadeTo( 100, 0, function() {\n\t\t\t\t\t\t$el.slideUp( 100, function() {\n\t\t\t\t\t\t\t$el.addClass( 'hidden' )\n\t\t\t\t\t\t\t\t.css( {\n\t\t\t\t\t\t\t\t\t'opacity': 1,\n\t\t\t\t\t\t\t\t\t'margin-bottom': 0,\n\t\t\t\t\t\t\t\t\t'display': ''\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t.empty();\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\t$el.append( $button );\n\t\t\t});\n\t\t},\n\n\t\tshowUploader : function () {\n\n\t\t\tthis.model.set( 'mode', 'uploader' );\n\t\t\tthis.render();\n\n\t\t},\n\n\t\tpermanentMessage : function ( message ) {\n\t\t\tthis.message( message, 'error', true );\n\t\t},\n\n\t\trender : function () {\n\n\t\t\tvar options = this.model.get( 'options' );\n\t\t\tvar contentContainer;\n\n\t\t\tvar mode = this.model.get( 'mode' );\n\n\t\t\t// Nuke all registered subviews\n\t\t\t_.invoke( this.subviews, 'remove' );\n\n\t\t\tif ( 'uploader' === mode ) {\n\n\t\t\t\tthis.template = wp.template( 'brightcove-uploader-container' );\n\n\t\t\t\tthis.$el.empty();\n\t\t\t\tthis.$el.html( this.template( options ) );\n\t\t\t\tthis.uploader.render();\n\t\t\t\tthis.uploader.delegateEvents();\n\t\t\t\tthis.uploader.$el.appendTo( $( '.brightcove-uploader' ) );\n\n\t\t\t} else if ( 'manager' === mode ) {\n\n\t\t\t\tthis.template = wp.template( 'brightcove-media' );\n\n\t\t\t\tthis.$el.html( this.template( options ) );\n\t\t\t\tthis.toolbar.render();\n\t\t\t\tthis.toolbar.delegateEvents();\n\t\t\t\tthis.toolbar.$el.show();\n\t\t\t\tthis.toolbar.$el.appendTo( this.$el.find( '.media-frame-router' ) );\n\n\t\t\t\t// Add the Media views to the media manager\n\t\t\t\tvar mediaCollectionView = this.model.get( 'media-collection-view' );\n\n\t\t\t\tmediaCollectionView.render();\n\t\t\t\tmediaCollectionView.delegateEvents();\n\n\t\t\t\tvar mediaCollectionContainer = this.$el.find( '.media-frame-content' );\n\n\t\t\t\tmediaCollectionContainer.on( 'scroll', this.scrollHandler );\n\t\t\t\tmediaCollectionView.$el.appendTo( mediaCollectionContainer );\n\n\t\t\t\tif ( ! ! wpbc.initialSync ) {\n\n\t\t\t\t\twpbc.broadcast.trigger( 'remove:permanentMessage' );\n\t\t\t\t\twpbc.broadcast.trigger( 'permanent:message', wpbc.preload.messages.ongoingSync );\n\n\t\t\t\t}\n\t\t\t\tif ( 'videoexperience' === this.model.get( 'mediaType' ) ) {\n\t\t\t\t\tthis.detailsView = new MediaDetailsView( {\n\t\t\t\t\t\tmodel : new MediaModel( this.model.attributes ),\n\t\t\t\t\t\tel : $( '.brightcove.media-frame-menu' ),\n\t\t\t\t\t\tmediaType : this.model.get( 'mediaType' )\n\t\t\t\t\t} );\n\t\t\t\t\tthis.registerSubview( this.detailsView );\n\n\t\t\t\t\tthis.detailsView.render();\n\t\t\t\t\tthis.detailsView.$el.toggle( true ); // Always show new view\n          wpbc.broadcast.trigger( 'toggle:insertButton', 'enabled' );\n\t\t\t\t\tthis.model.get( 'media-collection-view' ).$el.addClass( 'menu-visible' );\n\t\t\t\t}\n\t\t\t} else if ( 'editVideo' === mode ) {\n\n\t\t\t\tthis.toolbar.$el.hide();\n\n\t\t\t\tcontentContainer = this.$el.find( '.media-frame-content' );\n\n\t\t\t\tcontentContainer.empty();\n\t\t\t\tthis.editView.render();\n\t\t\t\tthis.editView.delegateEvents();\n\t\t\t\tthis.editView.$el.appendTo( contentContainer );\n\t\t\t\tthis.$el.find( '.brightcove.media-frame-content' ).addClass( 'edit-view' );\n\n\t\t\t} else if ( 'editPlaylist' === mode ) {\n\n\t\t\t\tthis.toolbar.$el.hide();\n\n\t\t\t\tcontentContainer = this.$el;\n\n\t\t\t\tcontentContainer.empty();\n\t\t\t\tcontentContainer.html( '<div class=\"playlist-edit-container\"></div>' );\n\n\t\t\t\tcontentContainer = contentContainer.find( '.playlist-edit-container' );\n\n\t\t\t\tthis.editView.render();\n\t\t\t\tthis.editView.delegateEvents();\n\t\t\t\tthis.editView.$el.appendTo( contentContainer );\n\t\t\t\tcontentContainer.addClass( 'playlist' );\n\n\t\t\t} else if ( 'previewVideo' === mode ) {\n\n\t\t\t\tthis.toolbar.$el.hide();\n\n\t\t\t\tcontentContainer = this.$el.find( '.media-frame-content' );\n\n\t\t\t\tcontentContainer.empty();\n\t\t\t\tthis.previewView.render();\n\t\t\t\tthis.detailsView.render( {detailsMode : 'preview'} );\n\t\t\t\tthis.previewView.delegateEvents();\n\t\t\t\tthis.previewView.$el.appendTo( contentContainer );\n\t\t\t\tthis.$el.find( '.brightcove.media-frame-toolbar' ).hide();\n\t\t\t\tbrightcove.createExperiences();\n\n\t\t\t}\n\n\t\t\tif ( 'editPlaylist' !== mode ) {\n\t\t\t\tthis.$el.find( '.media-frame-content' ).removeClass( 'playlist' );\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t}\n);\n","var BrightcoveModalView = BrightcoveView.extend(\n\t{\n\t\ttagName :   'div',\n\t\tclassName : 'media-modal brightcove',\n\t\ttemplate :  wp.template( 'brightcove-media-modal' ),\n\n\t\tevents : {\n\t\t\t'click .brightcove.media-menu-item'     : 'changeTab',\n\t\t\t'click .brightcove.media-button-insert' : 'insertIntoPost',\n\t\t\t'click .media-modal-close'              : 'closeModal',\n\t\t\t'click .brightcove.save-sync'           : 'saveSync',\n\t\t\t'click .brightcove.button.back'         : 'back'\n\t\t},\n\n\t\tinitialize : function ( options ) {\n\t\t\tthis.model                  = new BrightcoveModalModel( {tab : options.tab} );\n\t\t\tthis.brightcoveMediaManager = new BrightcoveMediaManagerView( this.model.getMediaManagerSettings() );\n\t\t\tthis.registerSubview( this.brightcoveMediaManager );\n\t\t\tthis.listenTo( wpbc.broadcast, 'toggle:insertButton', function ( state ) {\n\t\t\t\tthis.toggleInsertButton( state );\n\t\t\t} );\n\t\t\tthis.listenTo( wpbc.broadcast, 'close:modal', this.closeModal );\n\t\t},\n\n\t\tsaveSync : function( evnt ) {\n\t\t\t// This event is triggered when the \"Save and Sync Changes\" button is clicked from edit video screen.\n\t\t\twpbc.broadcast.trigger( 'save:media', evnt );\n\t\t},\n\n\t\tback : function( evnt ) {\n\t\t\t// This event is triggered when the \"Back\" button is clicked from edit video screen.\n\t\t\twpbc.broadcast.trigger( 'back:editvideo', evnt );\n\t\t},\n\n\t\tinsertIntoPost : function ( evnt ) {\n\t\t\tevnt.preventDefault();\n\n\t\t\t// Exit if the 'button' is disabled.\n\t\t\tif ( $( evnt.currentTarget ).hasClass( 'disabled' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\twpbc.shortcode = $( '#shortcode' ).val();\n\n\t\t\t// Media Details will trigger the insertion since it's always active and contains\n\t\t\t// the model we're inserting\n\t\t\twpbc.broadcast.trigger( 'insert:shortcode' );\n\t\t},\n\n\t\ttoggleInsertButton : function ( state ) {\n\t\t\tvar button     = this.$el.find( '.brightcove.media-button-insert' ),\n\t\t\t\tprocessing = $('.attachment.highlighted' ).find( '.processing' ).length;\n\n\t\t\tbutton.show();\n\n\t\t\tif ( 1 === processing ) {\n\t\t\t\tbutton.attr( 'disabled', 'disabled' );\n\t\t\t} else if ( 'enabled' === state ) {\n\t\t\t\tbutton.removeAttr( 'disabled' );\n\t\t\t} else if ( 'disabled' === state ) {\n\t\t\t\tbutton.attr( 'disabled', 'disabled' );\n\t\t\t} else if ( undefined !== button.attr( 'disabled' ) ) {\n\t\t\t\tbutton.removeAttr( 'disabled' );\n\t\t\t} else {\n\t\t\t\tbutton.attr( 'disabled', 'disabled' );\n\t\t\t}\n\t\t},\n\n\t\tchangeTab : function ( event ) {\n\t\t\tevent.preventDefault();\n\n\t\t\tif ( $( event.target ).hasClass( 'active' ) ) {\n\t\t\t\treturn; // Clicking the already active tab\n\t\t\t}\n\t\t\t$( event.target ).addClass( 'active' );\n\t\t\tvar tab  = _.without( event.target.classList, 'media-menu-item', 'brightcove' )[0];\n\t\t\tvar tabs = ['videos', 'upload', 'playlists', 'video-experience', 'playlist-experience'];\n\t\t\t_.each( _.without( tabs, tab ), function ( otherTab ) {\n\t\t\t\t$( '.brightcove.media-menu-item.' + otherTab ).removeClass( 'active' );\n\t\t\t} );\n\n\t\t\tif ( _.contains( tabs, tab ) ) {\n\t\t\t\tthis.model.set( 'tab', tab );\n\t\t\t\twpbc.broadcast.trigger( 'spinner:off' );\n\t\t\t\twpbc.broadcast.trigger( 'tabChange', this.model.getMediaManagerSettings() );\n\t\t\t}\n\n\t\t},\n\n\t\tcloseModal : function ( evnt ) {\n\n\t\t\t// If we are in the editVideo mode, switch back to the video view.\n\t\t\tif ( 'editVideo' === wpbc.modal.brightcoveMediaManager.model.get('mode') ) {\n\t\t\t\twpbc.broadcast.trigger( 'start:gridview' );\n\t\t\t}\n\n\t\t\t// Exit if the container button is disabled.\n\t\t\tif ( ! _.isUndefined( evnt ) && $( evnt.currentTarget ).parent().hasClass( 'disabled' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.$el.hide();\n\t\t\t$( 'body' ).removeClass( 'modal-open' );\n\t\t},\n\n\t\tmessage : function ( message ) {\n\t\t\tvar messageContainer = this.$el.find( '.brightcove-message' );\n\n\t\t},\n\n\t\trender : function ( options ) {\n\t\t\tthis.$el.html( this.template( options ) );\n\n\t\t\tthis.brightcoveMediaManager.render();\n\t\t\tthis.brightcoveMediaManager.$el.appendTo( this.$el.find( '.media-frame-content' ) );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'edit:media', function( model, mediaType ) {\n\t\t\t\tif ( 'videos' === mediaType ) {\n\t\t\t\t\t// When edit Video screen is opened, hide the \"Insert Into Post\" button and show video save button.\n\t\t\t\t\tthis.$el.find( '.brightcove.button.save-sync' ).show();\n\t\t\t\t\tthis.$el.find( '.brightcove.button.back' ).show();\n\t\t\t\t\tthis.$el.find( '.brightcove.media-button-insert' ).hide();\n\t\t\t\t} else {\n\t\t\t\t\t// When edit playlist screen is opened, hide all the buttons.\n\t\t\t\t\tthis.$el.find( '.brightcove.button.save-sync' ).hide();\n\t\t\t\t\tthis.$el.find( '.brightcove.button.back' ).hide();\n\t\t\t\t\tthis.$el.find( '.brightcove.media-button-insert' ).hide();\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'save:media back:editvideo start:gridView', function() {\n\t\t\t\tthis.$el.find( '.brightcove.button.save-sync' ).hide();\n\t\t\t\tthis.$el.find( '.brightcove.button.back' ).hide();\n\t\t\t\tthis.$el.find( '.brightcove.media-button-insert' ).show();\n\t\t\t\twpbc.broadcast.trigger( 'toggle:insertButton' );\n\t\t\t} );\n\t\t}\n\n\t}\n);\n\n","var MediaDetailsView = BrightcoveView.extend(\n\t{\n\t\ttagName :   'div',\n\t\tclassName : 'media-details',\n\n\t\tattributes : function () {\n\t\t\treturn {\n\t\t\t\t'tabIndex' :     0,\n\t\t\t\t'role' :         'checkbox',\n\t\t\t\t'aria-label' :   this.model.get( 'title' ),\n\t\t\t\t'aria-checked' : false,\n\t\t\t\t'data-id' :      this.model.get( 'id' )\n\t\t\t};\n\t\t},\n\n\t\tevents : {\n\t\t\t'click .brightcove.edit.button' :    'triggerEditMedia',\n\t\t\t'click .brightcove.preview.button' : 'triggerPreviewMedia',\n\t\t\t'click .brightcove.back.button' :    'triggerCancelPreviewMedia',\n\t\t\t'click .playlist-details input[name=\"embed-style\"]' :  'togglePlaylistSizing',\n            'change #aspect-ratio' : 'toggleUnits',\n            'change .experience-details input[name=\"sizing\"],.experience-details input[name=\"embed-style\"]' : 'toggleExperienceUnits',\n            'change #video-player, #autoplay, #mute, input[name=\"embed-style\"], input[name=\"sizing\"], #aspect-ratio, #width, #height' : 'generateShortcode',\n\t\t\t'change #generate-shortcode' : 'toggleShortcodeGeneration',\n\t\t},\n\n\t\ttriggerEditMedia : function ( event ) {\n\t\t\tevent.preventDefault();\n\t\t\twpbc.broadcast.trigger( 'edit:media', this.model, this.mediaType );\n\t\t},\n\n\t\ttriggerPreviewMedia : function ( event ) {\n\t\t\tevent.preventDefault();\n\t\t\tvar shortcode = $( '#shortcode' ).val();\n\t\t\twpbc.broadcast.trigger( 'preview:media', this.model, shortcode );\n\t\t},\n\n\t\ttriggerCancelPreviewMedia : function ( event ) {\n\t\t\twpbc.broadcast.trigger( 'cancelPreview:media', this.mediaType );\n\t\t},\n\n\t\ttogglePlaylistSizing: function( event ) {\n\t\t\tvar embedStyle = $( '.playlist-details input[name=\"embed-style\"]:checked' ).val(),\n\t\t\t\t$sizing = $( '#sizing-fixed, #sizing-responsive' );\n\n\t\t\tif ( 'iframe' === embedStyle ) {\n\t\t\t\t$sizing.removeAttr( 'disabled' );\n\t\t\t} else {\n\t\t\t\t$sizing.attr( 'disabled', true );\n\t\t\t}\n\t\t},\n\n\t\ttoggleUnits: function( event ) {\n\t\t\tvar value = $( '#aspect-ratio' ).val();\n\n\t\t\tif ( 'custom' === value ) {\n\t\t\t\t$( '#height' ).removeAttr( 'readonly' );\n\t\t\t} else {\n\t\t\t\tvar $height = $( '#height' ),\n\t\t\t\t\twidth = $( '#width' ).val();\n\n\t\t\t\t$height.attr( 'readonly', true );\n\n\t\t\t\tif ( width > 0 ) {\n\t\t\t\t\tif ( '16:9' === value ) {\n\t\t\t\t\t\t$height.val( width/( 16/9 ) );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$height.val( width/( 4/3 ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n    toggleExperienceUnits: function( event ) {\n      var $sizingField=$( 'input[name=\"sizing\"]:checked' );\n      var $sizing = $sizingField.val();\n      var $embedStyle = $( 'input[name=\"embed-style\"]:checked' ).val();\n      var $height = $( '#height' );\n      var $width = $( '#width' );\n      var $inputSizing = $( 'input[name=\"sizing\"]' );\n      var $sizingDiv = $('.embed-sizing-div');\n\n      $height.removeAttr('readonly');\n      $width.removeAttr('readonly');\n      $sizingField.show();\n      $sizingDiv.show();\n\n      if ( 'responsive' === $sizing && 'javascript' === $embedStyle ) {\n        $height.attr('readonly', true);\n      }\n      else if ( 'fixed' === $sizing && 'javascript' === $embedStyle ) {\n        $height.removeAttr('readonly');\n        $width.removeAttr('readonly');\n      }\n      else {\n      \t$inputSizing.attr('checked',false);\n        $('#sizing-fixed').attr('checked', true);\n        $sizingDiv.hide();\n      }\n\n    },\n\n\t\tgenerateShortcode: function () {\n\t\t\tswitch (this.mediaType){\n\t\t\t\tcase 'videos':\n\t\t\t\t\tthis.generateVideoShortcode();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'videoexperience':\n\t\t\t\t\tthis.generateExperienceShortcode();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'playlistexperience':\n\t\t\t\t\tthis.generatePlaylistExperienceShortcode();\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.generatePlaylistShortcode();\n\t\t\t}\n\t\t},\n\n\t\tgenerateVideoShortcode: function () {\n\t\t\tvar videoId = this.model.get( 'id' ).replace( /\\D/g, '' ),\n\t\t\t\taccountId = this.model.get( 'account_id' ).replace( /\\D/g, '' ),\n\t\t\t\tplayerId = $( '#video-player' ).val(),\n\t\t\t\tautoplay = ( $( '#autoplay' ).is( ':checked' ) ) ? 'autoplay': '',\n\t\t\t\tmute = ( $( '#mute' ).is( ':checked' ) ) ? 'muted': '',\n\t\t\t\tembedStyle = $( 'input[name=\"embed-style\"]:checked' ).val(),\n\t\t\t\tsizing = $( 'input[name=\"sizing\"]:checked' ).val(),\n\t\t\t\taspectRatio = $( '#aspect-ratio' ).val(),\n\t\t\t\tpaddingTop = '',\n\t\t\t\twidth = $( '#width' ).val(),\n\t\t\t\theight = $( '#height' ).val(),\n\t\t\t\tunits = 'px',\n\t\t\t\tminWidth = '0px',\n\t\t\t\tmaxWidth = width + units,\n\t\t\t\tshortcode;\n\n\t\t\tif ( '16:9' === aspectRatio ) {\n\t\t\t\tpaddingTop = '56';\n\t\t\t} else if ( '4:3' === aspectRatio ) {\n\t\t\t\tpaddingTop = '75';\n\t\t\t} else {\n\t\t\t\tpaddingTop = ( ( height / width ) * 100 );\n\t\t\t}\n\n\t\t\tif ( 'responsive' === sizing ) {\n\t\t\t\twidth = '100%';\n\t\t\t\theight = '100%';\n\t\t\t} else {\n\t\t\t\twidth = width + units;\n\t\t\t\theight = height + units;\n\n\t\t\t\tif ( 'iframe' === embedStyle ) {\n\t\t\t\t\tminWidth = width;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tshortcode = '[bc_video video_id=\"' + videoId + '\" account_id=\"' + accountId + '\" player_id=\"' + playerId + '\" ' +\n\t\t\t\t'embed=\"' + embedStyle + '\" padding_top=\"' + paddingTop + '%\" autoplay=\"' + autoplay + '\" ' +\n\t\t\t\t'min_width=\"' + minWidth + '\" max_width=\"' + maxWidth + '\" ' +\n\t\t\t\t'mute=\"' + mute + '\" width=\"' + width + '\" height=\"' + height + '\"' +\n\t\t\t\t' ]';\n\n\t\t\t$( '#shortcode' ).val( shortcode );\n\t\t},\n\t\tgenerateExperienceShortcode: function () {\n\t\t\tvar videoIds, accountId;\n\t\t\tif ( 'undefined' !== typeof this.model.get( 'id' ) ) {\n        this.model.set( 'account_id', this.model.get( 'account' ) );\n        videoIds = this.model.get( 'id' ).join( ',' );\n        accountId = this.model.get( 'account_id' ).replace( /\\D/g, '' );\n\t\t\t} else {\n        videoIds = '';\n        accountId = document.getElementById( 'brightcove-media-source' ).value;\n\t\t\t}\n\n\t\t\tvar experienceId = $( '#video-player' ).val(),\n\t\t\tembedStyle = $( 'input[name=\"embed-style\"]:checked' ).val(),\n\t\t\tsizing = $( 'input[name=\"sizing\"]:checked' ).val(),\n\t\t\twidth = $( '#width' ).val(),\n\t\t\theight = $( '#height' ).val(),\n\t\t\tunits = 'px',\n\t\t\tminWidth = '0px',\n\t\t\tmaxWidth = width + units,\n\t\t\tshortcode;\n\n\n\t\t\tif ( 'responsive' === sizing ) {\n\t\t\t\twidth = '100%';\n\t\t\t\theight = '100%';\n\t\t\t} else {\n\t\t\t\twidth = width + units;\n\t\t\t\theight = height + units;\n\n\t\t\tif ( 'iframe' === embedStyle ) {\n\t\t\t\tminWidth = width;\n\t\t\t}\n\t\t}\n\n\t\tshortcode = '[bc_experience experience_id=\"' + experienceId + '\" account_id=\"' + accountId + '\" ' +\n\t\t'embed=\"' + embedStyle + '\" min_width=\"' + minWidth + '\" max_width=\"' + maxWidth + '\" ' +\n\t\t'width=\"' + width + '\" height=\"' + height + '\" ' +\n\t\t'video_ids=\"' + videoIds + '\" ' +\n\t\t' ]';\n\n\t\t$( '#shortcode' ).val( shortcode );\n\t\t},\n\n\n\t\tgeneratePlaylistShortcode: function () {\n\t\t    var playlistId = this.model.get( 'id' ).replace( /\\D/g, '' ),\n\t\t\t\taccountId = this.model.get( 'account_id' ).replace( /\\D/g, '' ),\n\t\t\t\tplayerId = $( '#video-player' ).val(),\n\t\t\t\tautoplay = ( $( '#autoplay' ).is( ':checked' ) ) ? 'autoplay': '',\n\t\t\t\tmute = ( $( '#mute' ).is( ':checked' ) ) ? 'muted': '',\n\t\t\t\tembedStyle = $( 'input[name=\"embed-style\"]:checked' ).val(),\n\t\t\t\tsizing = $( 'input[name=\"sizing\"]:checked' ).val(),\n\t\t\t\taspectRatio = $( '#aspect-ratio' ).val(),\n\t\t\t\tpaddingTop = '',\n\t\t\t\twidth = $( '#width' ).val(),\n\t\t\t\theight = $( '#height' ).val(),\n\t\t\t    units = 'px',\n\t\t\t    minWidth = '0px;',\n\t\t\t    maxWidth = width + units,\n\t\t\t\tshortcode;\n\n\t\t    if ( 'in-page-vertical' === embedStyle ) {\n\t\t\t    shortcode = '[bc_playlist playlist_id=\"' + playlistId + '\" account_id=\"' + accountId + '\" player_id=\"' + playerId + '\" ' +\n\t\t\t\t    'embed=\"in-page-vertical\" autoplay=\"' + autoplay + '\" mute=\"' + mute + '\" ' +\n\t\t\t\t    'min_width=\"\" max_width=\"\" padding_top=\"\" ' +\n\t\t\t\t    'width=\"' + width + units + '\" height=\"' + height + units + '\"' +\n\t\t\t\t    ' ]';\n\t\t    } else if ( 'in-page-horizontal' === embedStyle ) {\n\t\t\t    shortcode = '[bc_playlist playlist_id=\"' + playlistId + '\" account_id=\"' + accountId + '\" player_id=\"' + playerId + '\" ' +\n\t\t\t\t    'embed=\"in-page-horizontal\" autoplay=\"' + autoplay + '\" mute=\"' + mute + '\" ' +\n\t\t\t\t    'min_width=\"\" max_width=\"\" padding_top=\"\" ' +\n\t\t\t\t    'width=\"' + width + units + '\" height=\"' + height + units + '\"' +\n\t\t\t\t    ' ]';\n\t\t    } else if ( 'iframe' === embedStyle ) {\n\t\t\t    if ( '16:9' === aspectRatio ) {\n\t\t\t\t    paddingTop = '56';\n\t\t\t    } else if ( '4:3' === aspectRatio ) {\n\t\t\t\t    paddingTop = '75';\n\t\t\t    } else {\n\t\t\t\t    paddingTop = ( ( height / width ) * 100 );\n\t\t\t    }\n\n\t\t\t    if ( 'responsive' === sizing ) {\n\t\t\t\t    width = '100%';\n\t\t\t\t    height = '100%';\n\t\t\t    } else {\n\t\t\t    \twidth = width + units;\n\t\t\t    \theight = height + units;\n\n\t\t\t\t\tminWidth = width;\n\t\t\t    }\n\n\t\t\t    shortcode = '[bc_playlist playlist_id=\"' + playlistId + '\" account_id=\"' + accountId + '\" player_id=\"' + playerId + '\" ' +\n\t\t\t\t    'embed=\"iframe\" autoplay=\"' + autoplay + '\" mute=\"' + mute + '\" ' +\n\t\t\t\t    'min_width=\"' + minWidth + '\" max_width=\"' + maxWidth + '\" padding_top=\"' + paddingTop + '%\" ' +\n\t\t\t\t    'width=\"' + width + '\" height=\"' + height + '\"' +\n\t\t\t\t    ' ]';\n\t\t    }\n\n\t\t    $( '#shortcode' ).val( shortcode );\n        },\n\t\tgeneratePlaylistExperienceShortcode:function () {\n      var playlistId = this.model.get( 'id' ).replace( /\\D/g, '' ),\n          accountId = this.model.get( 'account_id' ).replace( /\\D/g, '' ),\n          experienceId = $( '#video-player' ).val(),\n          embedStyle = $( 'input[name=\"embed-style\"]:checked' ).val(),\n          sizing = $( 'input[name=\"sizing\"]:checked' ).val(),\n          width = $( '#width' ).val(),\n          height = $( '#height' ).val(),\n          units = 'px',\n          minWidth = '0px',\n          maxWidth = width + units,\n          shortcode;\n\n\n      if ( 'responsive' === sizing ) {\n        width = '100%';\n        height = '100%';\n      } else {\n        width = width + units;\n        height = height + units;\n\n        if ( 'iframe' === embedStyle ) {\n          minWidth = width;\n        }\n      }\n\n      shortcode = '[bc_experience experience_id=\"' + experienceId + '\" account_id=\"' + accountId + '\" ' +\n          'embed=\"' + embedStyle + '\" min_width=\"' + minWidth + '\" max_width=\"' + maxWidth + '\" ' +\n          'width=\"' + width + '\" height=\"' + height + '\" ' +\n          'playlist_id=\"' + playlistId + '\" ' +\n          ' ]';\n\n      $( '#shortcode' ).val( shortcode );\n    },\n\n\t\ttoggleShortcodeGeneration: function () {\n\t\t    var method = $( '#generate-shortcode' ).val(),\n                $fields = $( '#video-player, #autoplay, input[name=\"embed-style\"], input[name=\"sizing\"], #aspect-ratio, #width, #height, #units' );\n\n\t\t    if ( 'manual' === method ) {\n\t\t    \t$( '#shortcode' ).removeAttr( 'readonly' );\n                $fields.attr( 'disabled', true );\n\t\t\t} else {\n                $( '#shortcode' ).attr( 'readonly', true );\n                $fields.removeAttr( 'disabled' );\n\t\t\t}\n        },\n\n\t\tinitialize : function ( options ) {\n\t\t\toptions        = options || {};\n\t\t\tthis.type      = options.type ? options.type : 'grid';\n\t\t\tthis.mediaType = options.mediaType;\n\t\t\tthis.listenTo( wpbc.broadcast, 'insert:shortcode', this.insertShortcode );\n\t\t\tthis.listenTo( this.model, 'change', this.render );\n\t\t},\n\n\t\t/**\n\t\t * @returns {wp.media.view.Media} Returns itself to allow chaining\n\t\t */\n\t\trender : function ( options ) {\n\t\t\toptions                     = _.extend( {}, options, this.model.toJSON() );\n\t\t\toptions.duration            = this.model.getReadableDuration();\n\t\t\toptions.updated_at_readable = this.model.getReadableDate( 'updated_at' );\n\t\t\toptions.created_at_readable = this.model.getReadableDate( 'created_at' );\n\t\t\toptions.account_name        = this.model.getAccountName();\n\n\t\t\tthis.template = wp.template( 'brightcove-media-item-details-' + this.mediaType );\n\n\t\t\tthis.$el.html( this.template( options ) );\n\n\t\t\tthis.delegateEvents();\n\t\t\tthis.generateShortcode();\n\n\t\t\treturn this;\n\t\t},\n\n\t\t/* Prevent this.remove() from removing the container element for the details view */\n\t\tremove : function () {\n\t\t\tthis.undelegateEvents();\n\t\t\tthis.$el.empty();\n\t\t\tthis.stopListening();\n\t\t\treturn this;\n\t\t}\n\t}\n);\n\n","var MediaView = BrightcoveView.extend(\n\t{\n\t\ttagName :   'li',\n\t\tclassName : 'attachment brightcove',\n\n\t\tattributes : function () {\n\t\t\treturn {\n\t\t\t\t'tabIndex' :     0,\n\t\t\t\t'role' :         'checkbox',\n\t\t\t\t'aria-label' :   this.model.get( 'title' ),\n\t\t\t\t'aria-checked' : false,\n\t\t\t\t'data-id' :      this.model.get( 'id' )\n\t\t\t};\n\t\t},\n\n\t\tevents : {\n\t\t\t'click .attachment-preview' : 'toggleDetailView',\n\t\t\t'click .video-move-up' :      'videoMoveUp',\n\t\t\t'click .video-move-down' :    'videoMoveDown',\n\t\t\t'click .trash' :              'removeVideoFromPlaylist',\n\t\t\t'click .add-to-playlist' :    'videoAdd',\n\t\t\t'click .edit' :               'triggerEditMedia',\n\t\t\t'click .preview' :            'triggerPreviewMedia'\n\t\t},\n\n\t\ttriggerEditMedia : function ( event ) {\n\t\t\tevent.preventDefault();\n\t\t\twpbc.broadcast.trigger( 'edit:media', this.model );\n\t\t},\n\n\t\ttriggerPreviewMedia : function ( event ) {\n\t\t\tevent.preventDefault();\n\t\t\twpbc.broadcast.trigger( 'preview:media', this.model );\n\t\t},\n\n\t\tbuttons : {},\n\n\t\tinitialize : function ( options ) {\n\t\t\toptions   = options || {};\n\t\t\tthis.type = options.type ? options.type : 'grid';\n\n\t\t\t// We only care when a change occurs\n\t\t\tthis.listenTo( this.model, 'change:view', function ( model, type ) {\n\t\t\t\tif ( this.type !== type ) {\n\t\t\t\t\tthis.type = type;\n\t\t\t\t\tthis.render();\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthis.render();\n\t\t},\n\n\t\trender : function () {\n\t\t\tvar options                 = this.model.toJSON();\n\t\t\toptions.duration            = this.model.getReadableDuration();\n\t\t\toptions.updated_at_readable = this.model.getReadableDate( 'updated_at' );\n\t\t\toptions.account_name        = this.model.getAccountName();\n\n\t\t\tif ( 'existingPlaylists' === options.viewType ) {\n\t\t\t\tthis.template = wp.template( 'brightcove-playlist-edit-video-in-playlist' );\n\t\t\t} else if ( 'libraryPlaylists' === options.viewType ) {\n\t\t\t\tthis.template = wp.template( 'brightcove-playlist-edit-video-in-library' );\n\t\t\t} else {\n\t\t\t\tthis.template = wp.template( 'brightcove-media-item-' + this.type );\n\t\t\t}\n\n\t\t\toptions.buttons = this.buttons;\n\n\t\t\tthis.$el.html( this.template( options ) );\n\n\t\t\tthis.$el.toggleClass( 'uploading', options.uploading );\n\n\t\t\treturn this;\n\t\t},\n\n\t\ttoggleDetailView : function () {\n\t\t\twpbc.broadcast.trigger( 'select:media', this );\n\t\t},\n\n\t\tvideoMoveUp : function () {\n\t\t\twpbc.broadcast.trigger( 'playlist:moveUp', this );\n\t\t},\n\n\t\tvideoMoveDown : function () {\n\t\t\twpbc.broadcast.trigger( 'playlist:moveDown', this );\n\t\t},\n\n\t\tvideoAdd : function () {\n\t\t\twpbc.broadcast.trigger( 'playlist:add', this );\n\t\t},\n\n\t\tremoveVideoFromPlaylist : function () {\n\t\t\twpbc.broadcast.trigger( 'playlist:remove', this );\n\t\t}\n\t}\n);\n","var PlaylistEditView = BrightcoveView.extend(\n\t{\n\t\ttagName :   'div',\n\t\tclassName : 'playlist-edit brightcove attachment-details',\n\t\ttemplate :  wp.template( 'brightcove-playlist-edit' ),\n\n\t\tevents : {\n\t\t\t'click .brightcove.button.save-sync' : 'saveSync',\n\t\t\t'click .brightcove.playlist-back' :    'back',\n\t\t\t'change .brightcove-name' :            'updatedName'\n\t\t},\n\n\t\tdeleteVideo : function ( event ) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.model.set( 'mediaType', 'videos' );\n\t\t\tthis.model.destroy();\n\t\t},\n\n\t\tupdatedName : function ( event ) {\n\t\t\tvar name = this.model.get( 'name' );\n\t\t\tif ( name !== event.target.value ) {\n\t\t\t\tthis.model.set( 'name', event.target.value );\n\t\t\t\tthis.model.save();\n\t\t\t}\n\t\t},\n\n\t\tback : function ( event ) {\n\t\t\tevent.preventDefault();\n\t\t\twpbc.broadcast.trigger( 'start:gridview' );\n\n\t\t},\n\n\t\tsaveSync : function ( event ) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.model.set( 'name', this.$el.find( '.brightcove-name' ).val() );\n\t\t\tthis.model.set( 'description', this.$el.find( '.brightcove-description' ).val() );\n\t\t\tthis.model.set( 'long_description', this.$el.find( '.brightcove-long-description' ).val() );\n\t\t\tthis.model.set( 'tags', this.$el.find( '.brightcove-tags' ).val() );\n\t\t\tthis.model.set( 'mediaType', 'videos' );\n\t\t\tthis.model.save();\n\t\t},\n\n\t\tinitialize : function () {\n\t\t\tthis.listenTo( wpbc.broadcast, 'tabChange', function () {\n\t\t\t\t_.invoke( this.subviews, 'remove' );\n\t\t\t} );\n\t\t\twpbc.broadcast.trigger( 'spinner:off' );\n\t\t},\n\n\t\trender : function ( options ) {\n\t\t\toptions = this.model.toJSON();\n\t\t\tthis.$el.html( this.template( options ) );\n\t\t\tthis.spinner = this.$el.find( '.spinner' );\n\n\t\t\tif ( options.video_ids ) {\n\t\t\t\tthis.killPendingRequests();\n\n\t\t\t\tthis.playlistVideosView = new MediaCollectionView( {\n\t\t\t\t\tel : this.$el.find( '.existing-videos' ),\n\t\t\t\t\tvideoIds : options.video_ids,\n\t\t\t\t\tactiveAccount : this.model.get( 'account_id' ),\n\t\t\t\t\tmediaCollectionViewType : 'existingPlaylists',\n\t\t\t\t\tmediaType : 'playlists'\n\t\t\t\t} );\n\n\t\t\t\tthis.libraryVideosView  = new MediaCollectionView( {\n\t\t\t\t\tel : this.$el.find( '.library-videos' ),\n\t\t\t\t\texcludeVideoIds : options.video_ids,\n\t\t\t\t\tactiveAccount : this.model.get( 'account_id' ),\n\t\t\t\t\tmediaCollectionViewType : 'libraryPlaylists',\n\t\t\t\t\tmediaType : 'playlists'\n\t\t\t\t} );\n\n\t\t\t\tthis.registerSubview( this.playlistVideosView );\n\t\t\t\tthis.registerSubview( this.libraryVideosView );\n\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'playlist:changed', _.throttle( this.playlistChanged, 300 ) );\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'insert:shortcode', this.insertShortcode );\n\t\t\t}\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'spinner:on', function () {\n\t\t\t\tthis.spinner.addClass( 'is-active' ).removeClass( 'hidden' );\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'spinner:off', function () {\n\t\t\t\tthis.spinner.removeClass( 'is-active' ).addClass( 'hidden' );\n\t\t\t} );\n\t\t},\n\n\t\tplaylistChanged : function ( videoIds ) {\n\t\t\tthis.killPendingRequests();\n\t\t\tthis.model.set( 'video_ids', videoIds );\n\t\t\tthis.model.save();\n\t\t},\n\n\t\tkillPendingRequests : function () {\n\t\t\t// Kill all pending requests\n\t\t\t_.each( wpbc.requests, function ( request ) {\n\t\t\t\trequest.abort();\n\t\t\t} );\n\n\t\t\twpbc.requests = [];\n\t\t}\n\t}\n);\n","var UploadDetailsView = BrightcoveView.extend(\n\t{\n\t\tclassName : 'brightcove-pending-upload-details attachment-details',\n\t\ttagName :   'div',\n\t\ttemplate :  wp.template( 'brightcove-pending-upload-details' ),\n\n\t\tevents : {\n\t\t\t'keyup .brightcove-name' :          'nameChanged',\n\t\t\t'keyup .brightcove-tags' :          'tagsChanged',\n\t\t\t'change .brightcove-media-source' : 'accountChanged'\n\t\t},\n\n\t\tinitialize : function ( options ) {\n\t\t\tthis.listenTo( wpbc.broadcast, 'pendingUpload:hideDetails', this.hide );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:fileUploaded', function ( file ) {\n\t\t\t\tif ( file.id === this.model.get( 'id' ) ) {\n\t\t\t\t\tthis.model.set( 'uploaded', true );\n\t\t\t\t\tthis.render();\n\t\t\t\t}\n\t\t\t} );\n\t\t\tthis.model.set( 'ingestSuccess', true );\n\t\t\tthis.model.set( 'uploadSuccess', true );\n\t\t},\n\n\t\tnameChanged : function ( event ) {\n\t\t\tthis.model.set( 'fileName', event.target.value );\n\t\t},\n\n\t\ttagsChanged : function ( event ) {\n\t\t\tthis.model.set( 'tags', event.target.value );\n\t\t},\n\n\t\taccountChanged : function ( event ) {\n\t\t\tthis.model.set( 'account', event.target.value );\n\t\t},\n\n\t\thide : function () {\n\t\t\tthis.$el.hide();\n\t\t},\n\n\t\trender : function ( options ) {\n\t\t\toptions          = options || {};\n\t\t\toptions.fileName = this.model.get( 'fileName' );\n\t\t\toptions.tags     = this.model.get( 'tags' );\n\t\t\toptions.size     = this.model.humanReadableSize();\n\t\t\toptions.accounts = this.model.get( 'accounts' );\n\t\t\toptions.account  = this.model.get( 'account' );\n\t\t\toptions.uploaded = this.model.get( 'uploaded' );\n\t\t\tthis.$el.html( this.template( options ) );\n\t\t}\n\n\t}\n);\n","UploadWindowView = BrightcoveView.extend(\n\t{\n\t\tclassName : 'uploader-window',\n\t\ttemplate :  wp.template( 'brightcove-uploader-window' ),\n\n\t\tinitialize : function ( options ) {\n\t\t\t_.bindAll( this, 'uploaderFilesAdded' );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:queuedFilesAdded', this.hide );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:startUpload', this.uploaderStartUpload );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:clear', this.resetUploads );\n\t\t},\n\n\t\trender : function ( options ) {\n\t\t\tthis.$el.html( this.template( options ) );\n\t\t\t_.defer( _.bind( this.afterRender, this ) );\n\t\t},\n\n\t\tresetUploads : function () {\n\t\t\tif ( this.uploader && this.uploader.files ) {\n\t\t\t\tthis.uploader.files = []; // Reset pending uploads\n\t\t\t}\n\t\t},\n\n\t\tafterRender : function () {\n\t\t\tthis.uploader = new plupload.Uploader( _.defaults( this.options, wpbc.preload.plupload ) );\n\n\t\t\t// Uploader has neither .on nor .listenTo\n\t\t\tthis.uploader.added    = this.uploaderFilesAdded;\n\t\t\tthis.uploader.progress = this.uploaderUploadProgress;\n\t\t\tthis.uploader.bind( 'FilesAdded', this.uploaderFilesAdded );\n\t\t\tthis.uploader.bind( 'UploadProgress', this.uploaderUploadProgress );\n\t\t\tthis.uploader.bind( 'BeforeUpload', this.uploaderBeforeUpload );\n\t\t\tthis.uploader.bind( 'FileUploaded', this.uploaderFileUploaded );\n\n\t\t\tthis.uploader.bind( 'init', this.uploaderAfterInit );\n\n\t\t\tthis.uploader.init();\n\t\t\t$( 'html' ).on( 'dragenter', _.bind( this.show, this ) );\n\t\t\t/* the following dropzone function code is taken from the wp.Uploader code */\n\t\t\tvar drop_element = wpbc.preload.plupload.drop_element.replace( /[^a-zA-Z0-9-]+/g, '' );\n\t\t\tvar dropzone     = $( '#' + drop_element );\n\t\t\tdropzone.on( 'dropzone:leave', _.bind( this.hide, this ) );\n\t\t},\n\n\t\tuploaderAfterInit : function ( uploader ) {\n\t\t\tvar drop_element = wpbc.preload.plupload.drop_element.replace( /[^a-zA-Z0-9-]+/g, '' );\n\t\t\tvar timer, active, dragdrop,\n\t\t\t    dropzone     = $( '#' + drop_element );\n\n\t\t\tdragdrop = uploader.features.dragdrop;\n\n\t\t\t// Generate drag/drop helper classes.\n\t\t\tif ( ! dropzone ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdropzone.toggleClass( 'supports-drag-drop', ! ! dragdrop );\n\n\t\t\tif ( ! dragdrop ) {\n\t\t\t\treturn dropzone.unbind( '.wp-uploader' );\n\t\t\t}\n\n\t\t\t// 'dragenter' doesn't fire correctly, simulate it with a limited 'dragover'.\n\t\t\tdropzone.bind( 'dragover.wp-uploader', function () {\n\t\t\t\tif ( timer ) {\n\t\t\t\t\tclearTimeout( timer );\n\t\t\t\t}\n\n\t\t\t\tif ( active ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tdropzone.trigger( 'dropzone:enter' ).addClass( 'drag-over' );\n\t\t\t\tactive = true;\n\t\t\t} );\n\n\t\t\tdropzone.bind( 'dragleave.wp-uploader, drop.wp-uploader', function () {\n\t\t\t\t// Using an instant timer prevents the drag-over class from\n\t\t\t\t// being quickly removed and re-added when elements inside the\n\t\t\t\t// dropzone are repositioned.\n\t\t\t\t//\n\t\t\t\t// @see https://core.trac.wordpress.org/ticket/21705\n\t\t\t\ttimer = setTimeout( function () {\n\t\t\t\t\tactive = false;\n\t\t\t\t\tdropzone.trigger( 'dropzone:leave' ).removeClass( 'drag-over' );\n\t\t\t\t}, 0 );\n\t\t\t} );\n\t\t},\n\n\t\tshow : function () {\n\t\t\tvar $el = this.$el.show();\n\n\t\t\t// Ensure that the animation is triggered by waiting until\n\t\t\t// the transparent element is painted into the DOM.\n\t\t\t_.defer( function () {\n\t\t\t\t$el.css( {opacity : 1} );\n\t\t\t} );\n\t\t},\n\n\t\thide : function () {\n\t\t\tvar $el = this.$el.css( {opacity : 0} );\n\n\t\t\twp.media.transition( $el ).done( function () {\n\t\t\t\t// Transition end events are subject to race conditions.\n\t\t\t\t// Make sure that the value is set as intended.\n\t\t\t\tif ( '0' === $el.css( 'opacity' ) ) {\n\t\t\t\t\t$el.hide();\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// https://core.trac.wordpress.org/ticket/27341\n\t\t\t_.delay( function () {\n\t\t\t\tif ( '0' === $el.css( 'opacity' ) && $el.is( ':visible' ) ) {\n\t\t\t\t\t$el.hide();\n\t\t\t\t}\n\t\t\t}, 500 );\n\t\t},\n\n\t\tuploaderFilesAdded : function ( uploader, queuedFiles ) {\n\t\t\twpbc.broadcast.trigger( 'uploader:queuedFilesAdded', queuedFiles );\n\t\t},\n\n\t\tuploaderStartUpload : function () {\n\t\t\tthis.uploader.start();\n\t\t},\n\n\t\tuploaderUploadProgress : function ( up, file ) {\n\t\t\twpbc.broadcast.trigger( 'uploader:uploadProgress', file );\n\t\t},\n\n\t\tuploaderBeforeUpload : function ( up, file ) {\n\t\t\tup.settings.multipart_params = _.defaults(\n\t\t\t\twpbc.uploads[file.id],\n\t\t\t\twpbc.preload.plupload.multipart_params,\n\t\t\t\t{nonce : wpbc.preload.nonce}\n\t\t\t);\n\t\t},\n\n\t\tuploaderFileUploaded : function ( up, file, response ) {\n\t\t\tvar status = JSON.parse( response.response );\n\t\t\twpbc.broadcast.trigger( 'uploader:fileUploaded', file );\n\t\t\tif ( status.data.upload === 'success' && status.data.ingest === 'success' ) {\n\t\t\t\tif ( status.data.videoDetails ) {\n\t\t\t\t\t// Add newly uploaded file to preload list.\n\t\t\t\t\twpbc.broadcast.trigger( 'uploader:uploadedFileDetails', status.data.videoDetails );\n\t\t\t\t}\n\t\t\t\twpbc.broadcast.trigger( 'uploader:successfulUploadIngest', file );\n\t\t\t} else {\n\t\t\t\tfile.percent = 0;\n\t\t\t\tfile.status  = plupload.UPLOADING;\n\t\t\t\tup.state     = plupload.STARTED;\n\t\t\t\tup.trigger( 'StateChanged' );\n\t\t\t\twpbc.broadcast.trigger( 'uploader:failedUploadIngest', file );\n\t\t\t}\n\t\t}\n\t}\n);\n","var UploadView = BrightcoveView.extend(\n\t{\n\t\tclassName : 'brightcove-pending-upload',\n\t\ttagName :   'tr',\n\t\ttemplate :  wp.template( 'brightcove-pending-upload' ),\n\n\t\tevents : {\n\t\t\t'click' : 'toggleRow'\n\t\t},\n\n\t\tinitialize : function () {\n\t\t\tthis.listenTo( wpbc.broadcast, 'pendingUpload:selectedRow', this.otherToggledRow );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:uploadProgress', this.uploadProgress );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:getParams', this.getParams );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:successfulUploadIngest', this.successfulUploadIngest );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:failedUploadIngest', this.failedUploadIngest );\n\n\t\t\tvar options = {\n\t\t\t\t'fileName' :      this.model.get( 'name' ),\n\t\t\t\t'tags' :          '',\n\t\t\t\t'accounts' :      wpbc.preload.accounts, // All accounts.\n\t\t\t\t'account' :       wpbc.preload.defaultAccount,\n\t\t\t\t'ingestSuccess' : false,\n\t\t\t\t'uploadSuccess' : false,\n\t\t\t\t'uploaded' :      false\n\t\t\t};\n\n\t\t\tthis.model.set( options );\n\n\t\t\tthis.listenTo( this.model, 'change:fileName', this.render );\n\t\t\tthis.listenTo( this.model, 'change:account', this.render );\n\t\t},\n\n\t\trender : function ( options ) {\n\t\t\toptions               = options || {};\n\t\t\toptions.fileName      = this.model.get( 'fileName' );\n\t\t\toptions.size          = this.model.humanReadableSize();\n\t\t\tvar sourceHash        = this.model.get( 'account' );\n\t\t\toptions.accountName   = wpbc.preload.accounts[sourceHash].account_name;\n\t\t\toptions.percent       = this.model.get( 'percent' );\n\t\t\toptions.activeUpload  = this.model.get( 'activeUpload' );\n\t\t\toptions.ingestSuccess = this.model.get( 'ingestSuccess' );\n\t\t\toptions.uploadSuccess = this.model.get( 'uploadSuccess' );\n\n\t\t\tthis.$el.html( this.template( options ) );\n\t\t\tif ( this.model.get( 'selected' ) ) {\n\t\t\t\tthis.$el.addClass( 'selected' );\n\t\t\t}\n\t\t\tif ( this.model.get( 'ingestSuccess' ) ) {\n\t\t\t\tthis.$el.addClass( 'ingest-success' );\n\t\t\t}\n\t\t\tif ( this.model.get( 'uploadSuccess' ) ) {\n\t\t\t\tthis.$el.addClass( 'upload-success' );\n\t\t\t}\n\t\t},\n\n\t\tgetParams : function ( fileId ) {\n\t\t\twpbc.broadcast.trigger( 'uploader:params', \"abcde\" );\n\t\t},\n\n\t\tfailedUploadIngest : function ( file ) {\n\t\t\t// Make sure we're acting on the right file.\n\t\t\tif ( file.id === this.model.get( 'id' ) ) {\n\t\t\t\twpbc.broadcast.trigger( 'uploader:errorMessage', wpbc.preload.messages.unableToUpload.replace( '%%s%%', this.model.get( 'fileName' ) ) );\n\t\t\t\tthis.render();\n\t\t\t}\n\t\t},\n\n\t\tsuccessfulUploadIngest : function ( file ) {\n\t\t\t// Make sure we're acting on the right file.\n\t\t\tif ( file.id === this.model.get( 'id' ) ) {\n\t\t\t\twpbc.broadcast.trigger( 'uploader:successMessage', wpbc.preload.messages.successUpload.replace( '%%s%%', this.model.get( 'fileName' ) ) );\n\t\t\t\tthis.render();\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Render if we're the active upload.\n\t\t * Re-render if we thought we were but we no longer are.\n\t\t * @param file Fired from UploadProgress on plUpload\n\t\t */\n\t\tuploadProgress :         function ( file ) {\n\t\t\t// Make sure we're acting on the right file.\n\t\t\tif ( file.id === this.model.get( 'id' ) ) {\n\t\t\t\tthis.model.set( 'activeUpload', true );\n\t\t\t\tthis.model.set( 'percent', file.percent );\n\t\t\t\tthis.render();\n\t\t\t} else {\n\t\t\t\tif ( this.model.get( 'activeUpload' ) ) {\n\t\t\t\t\tthis.model.unset( 'activeUpload' );\n\t\t\t\t\tthis.render();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\ttoggleRow : function ( event ) {\n\t\t\tthis.$el.toggleClass( 'selected' );\n\t\t\tif ( this.$el.hasClass( 'selected' ) ) {\n\t\t\t\tthis.model.set( 'selected', true );\n\t\t\t\twpbc.broadcast.trigger( 'pendingUpload:selectedRow', this.cid );\n\t\t\t} else {\n\t\t\t\twpbc.broadcast.trigger( 'pendingUpload:hideDetails', this.cid );\n\t\t\t}\n\t\t},\n\n\t\totherToggledRow : function ( cid ) {\n\t\t\t// Ignore broadcast from self\n\t\t\tif ( cid !== this.cid ) {\n\t\t\t\tthis.$el.removeClass( 'selected' );\n\t\t\t\tthis.model.unset( 'selected' );\n\t\t\t} else {\n\t\t\t\twpbc.broadcast.trigger( 'pendingUpload:selectedItem', this.model );\n\t\t\t}\n\t\t}\n\t}\n);\n","var VideoEditView = BrightcoveView.extend(\n\t{\n\t\ttagName :   'div',\n\t\tclassName : 'video-edit brightcove attachment-details',\n\t\ttemplate :  wp.template( 'brightcove-video-edit' ),\n\n\t\tevents : {\n\t\t\t'click .brightcove.button.save-sync' :      'saveSync',\n\t\t\t'click .brightcove.delete' :                'deleteVideo',\n\t\t\t'click .brightcove.button.back' :           'back',\n\t\t\t'click .setting .button' :                  'openMediaManager',\n\t\t\t'click .attachment .check' :                'removeAttachment',\n\t\t\t'click .caption-secondary-fields .delete' : 'removeCaptionRow',\n\t\t\t'click .add-remote-caption' :               'addCaptionRow'\n\t\t},\n\n\t\tback : function ( event ) {\n\t\t\tevent.preventDefault();\n\n\t\t\t// Exit if the 'button' is disabled.\n\t\t\tif ( $( event.currentTarget ).hasClass( 'disabled' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\twpbc.broadcast.trigger( 'start:gridview' );\n\t\t},\n\n\t\tdeleteVideo : function () {\n\t\t\tif ( confirm( wpbc.preload.messages.confirmDelete ) ) {\n\t\t\t\twpbc.broadcast.trigger( 'spinner:on' );\n\t\t\t\tthis.model.set( 'mediaType', 'videos' );\n\t\t\t\tthis.model.destroy();\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Allow the user to attach a video still or thumbnail.\n\t\t *\n\t\t * @param {Event} evnt\n\t\t */\n\t\topenMediaManager: function ( evnt ) {\n\t\t\tevnt.preventDefault();\n\n\t\t\tvar elem         = $( evnt.currentTarget ).parents( '.setting' ),\n\t\t\t\teditor       = elem.data('editor'),\n\t\t\t\tmediaManager = wp.media.frames.brightcove = wp.media(),\n\t\t\t\tthat         = this,\n\t\t\t\toptions      = {\n\t\t\t\t\tstate:    'insert',\n\t\t\t\t\ttitle:    wp.media.view.l10n.addMedia,\n\t\t\t\t\tmultiple: false\n\t\t\t\t};\n\n\t\t\t// Open the media manager\n\t\t\tmediaManager.open( editor, options );\n\n\t\t\t// Listen for selection of media\n\t\t\tmediaManager.on( 'select', function() {\n\t\t\t\tvar media = mediaManager.state().get( 'selection' ).first().toJSON(),\n\t\t\t\t\tfield = $( evnt ).parents( '.setting' );\n\n\t\t\t\t// Set the selected attachment to the correct field\n\t\t\t\tthat.setAttachment( media, field );\n\n\t\t\t\t// Make this action available to other areas of the application\n\t\t\t\twpbc.broadcast.trigger( 'media:selected' );\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * Set the hidden input to the ID of the selected attachment.\n\t\t *\n\t\t * @param {Object} media\n\t\t * @param {String} field\n\t\t * @returns {boolean}\n\t\t */\n\t\tsetAttachment: function( media, field ) {\n\t\t\tvar field           = field.prevObject[0].currentTarget,\n\t\t\t\tfield           = $( field ).prev( 'input' ),\n\t\t\t\tattachment      = field.parents( '.attachment' ),\n\t\t\t\tpreview         = attachment.find( '.-image' );\n\n\t\t\t// Perform different setup actions based on the type of upload\n\t\t\tif ( attachment.context.className.indexOf( 'captions' ) > -1 ) {\n\t\t\t\t// Executed if the user is uploading a closed caption\n\t\t\t\tif ( 'vtt' === media.subtype ) {\n\t\t\t\t\tthis.addCaptionRow( false, media );\n\t\t\t\t} else {\n\t\t\t\t\tvar template = wp.template( 'brightcove-badformat-notice' );\n\n\t\t\t\t\t// Throw a notice to the user that the file is not the correct format\n\t\t\t\t\t$( '.brightcove-media-videos' ).prepend( template );\n\n\t\t\t\t\t// Allow the user to dismiss the notice\n\t\t\t\t\t$( '.badformat.notice-dismiss' ).on( 'click', function() {\n\t\t\t\t\t\t$( '.notice.badformat' ).first().fadeOut( 500, function() {\n\t\t\t\t\t\t\t$( this ).remove();\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Executed if the user is uploading a poster image or thumbnail\n\t\t\t\tvar selectedMedia = {\n\t\t\t\t\turl:    media.sizes.full.url,\n\t\t\t\t\twidth:  media.sizes.full.width,\n\t\t\t\t\theight: media.sizes.full.height\n\t\t\t\t};\n\n\t\t\t\t// Set up our preview image\n\t\t\t\tvar image = document.createElement( 'img' );\n\n\t\t\t\t// Set image properties\n\t\t\t\timage.src       = media.sizes.full.url;\n\t\t\t\timage.className = 'thumbnail';\n\n\t\t\t\t// Display a preview image\n\t\t\t\tattachment.addClass( 'active' );\n\t\t\t\tpreview.html( image ); // .html() considered okay because auth is required to view this screen\n\t\t\t}\n\n\t\t\t// Add our meta to the hidden field\n\t\t\tfield.val( JSON.stringify( selectedMedia ) );\n\t\t},\n\n\t\t/**\n\t\t * Allow the user to remove media from a given field.\n\t\t *\n\t\t * @param {Event} evnt\n\t\t * @returns {boolean}\n\t\t */\n\t\tremoveAttachment: function( evnt ) {\n\t\t\tvar container = $( evnt.currentTarget ).parents( '.attachment' ),\n\t\t\t\timage     = container.find( '.-image' ),\n\t\t\t\tfield     = container.next( 'input' );\n\n\t\t\t// Empty the field\n\t\t\tfield.val( '' );\n\n\t\t\t// Remove the preview image\n\t\t\tcontainer.removeClass( 'active' );\n\t\t\timage.empty();\n\t\t},\n\n\t\t/**\n\t\t * Add a caption row\n\t\t *\n\t\t * @param {Event} evnt\n\t\t * @param {Object} media\n\t\t */\n\t\taddCaptionRow: function( evnt, media ) {\n\t\t\t// If using the add remote file link, prevent the page from jumping to the top\n\t\t\tif ( evnt ) {\n\t\t\t\tevnt.preventDefault();\n\t\t\t}\n\n\t\t\tvar source = undefined;\n\t\t\tif ( media ) {\n\t\t\t\tsource = media.url;\n\t\t\t}\n\n\t\t\tthis.addCaption( source );\n\t\t},\n\n\t\taddCaption: function( source, language, label ) {\n\t\t\tvar newRow     = $( document.getElementById( 'js-caption-empty-row' ) ).clone(),\n\t\t\t\tcontainer  = document.getElementById( 'js-captions' ),\n\t\t\t\tcaptionUrl = document.getElementById( 'js-caption-url' );\n\n\t\t\t// Clean up our cloned row\n\t\t\tnewRow.find( 'input' ).prop( 'disabled', false );\n\t\t\tnewRow.removeAttr( 'id' );\n\t\t\tnewRow.removeClass( 'empty-row' );\n\n\t\t\tif ( source ) {\n\t\t\t\tnewRow.find( '.brightcove-captions' ).val( source );\n\t\t\t}\n\n\t\t\tif ( language ) {\n\t\t\t\tnewRow.find( '.brightcove-captions-language' ).val( language );\n\t\t\t}\n\n\t\t\tif ( label ) {\n\t\t\t\tnewRow.find( '.brightcove-captions-label' ).val( label );\n\t\t\t}\n\n\t\t\t// Append our new row to the container\n\t\t\t$( container ).append( newRow );\n\n\t\t\t// Update the context button text\n\t\t\tthis.updateCaptionText();\n\t\t},\n\n\t\t/**\n\t\t * Remove a caption\n\t\t *\n\t\t * @param {Event} evnt\n\t\t */\n\t\tremoveCaptionRow: function( evnt ) {\n\t\t\tevnt.preventDefault();\n\n\t\t\tvar caption   = evnt.currentTarget,\n\t\t\t\tcontainer = $( caption ).parents( '.caption-repeater' ),\n\t\t\t\tsource    = container.find( '.brightcove-captions' ),\n\t\t\t\tlanguage  = container.find( '.brightcove-captions-launguage' ),\n\t\t\t\tlabel     = container.find( '.brightcove-captions-label' );\n\n\t\t\t// Empty the input fields\n\t\t\t$( source ).val( '' );\n\t\t\t$( language ).val( '' );\n\t\t\t$( label ).val( '' );\n\n\t\t\t// Remove the container entirely\n\t\t\tcontainer.remove();\n\n\t\t\t// Update the context button text\n\t\t\tthis.updateCaptionText();\n\t\t},\n\n\t\t/**\n\t\t * Updates the caption text based on number of captions\n\t\t */\n\t\tupdateCaptionText: function() {\n\t\t\tvar button = $( '.captions .button-secondary' ),\n\t\t\t\tlink   = $( '.add-remote-caption' );\n\n\t\t\tif ( 1 < document.getElementsByClassName( 'caption-repeater' ).length ) {\n\t\t\t\tbutton.text( wpbc.str_addcaption );\n\t\t\t\tlink.text( wpbc.str_addremote );\n\t\t\t} else {\n\t\t\t\tbutton.text( wpbc.str_selectfile );\n\t\t\t\tlink.text( wpbc.str_useremote );\n\t\t\t}\n\t\t},\n\n\t\tsaveSync : function ( evnt ) {\n\t\t\tevnt.preventDefault();\n\n\t\t\tvar $mediaFrame = $( evnt.currentTarget ).parents( '.media-modal' ),\n\t\t\t\t$allButtons = $mediaFrame.find( '.button, .button-link'),\n\t\t\t\tSELF = this;\n\n\t\t\t// Exit if the 'button' is disabled.\n\t\t\tif ( $allButtons.hasClass( 'disabled' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Disable the button for the duration of the request.\n\t\t\t$allButtons.addClass( 'disabled' );\n\n\t\t\t// Hide the delete link for the duration of the request.\n\t\t\t$mediaFrame.find( '.delete-action' ).hide();\n\n\t\t\twpbc.broadcast.trigger( 'spinner:on' );\n\t\t\tthis.model.set( 'name', this.$el.find( '.brightcove-name' ).val() );\n\t\t\tthis.model.set( 'description', this.$el.find( '.brightcove-description' ).val() );\n\t\t\tthis.model.set( 'long_description', this.$el.find( '.brightcove-long-description' ).val() );\n\n\t\t\t// Trim whitespace and commas from tags beginning/end.\n\t\t\tthis.model.set( 'tags', this.$el.find( '.brightcove-tags' ).val().trim().replace(/(^,)|(,$)/g, '' ) );\n\t\t\tthis.model.set( 'height', this.$el.find( '.brightcove-height' ).val() );\n\t\t\tthis.model.set( 'width', this.$el.find( '.brightcove-width' ).val() );\n\t\t\tthis.model.set( 'mediaType', 'videos' );\n\t\t\tthis.model.set( 'poster', this.$el.find( '.brightcove-poster' ).val() );\n\t\t\tthis.model.set( 'thumbnail', this.$el.find( '.brightcove-thumbnail' ).val() );\n\n\t\t\t// Captions\n\t\t\tvar captions = [];\n\t\t\tthis.$el.find( '.caption-repeater.repeater-row' ).not( '.empty-row' ).each( function() {\n\t\t\t\tvar caption   = $( this ),\n\t\t\t\t\tfileName  = caption.find( '.brightcove-captions' ).val(),\n\t\t\t\t\textension = fileName.split( '?' )[0], // if the URL has a query string, strip it before validating filetype\n\t\t\t\t\textension = extension.split( '.' ).pop();\n\n\t\t\t\tif ( 'vtt' === extension ) {\n\t\t\t\t\tcaptions.push(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'source'  : fileName,\n\t\t\t\t\t\t\t'language': caption.find( '.brightcove-captions-language' ).val(),\n\t\t\t\t\t\t\t'label'   : caption.find( '.brightcove-captions-label' ).val()\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tvar template = wp.template( 'brightcove-badformat-notice' );\n\n\t\t\t\t\t// Throw a notice to the user that the file is not the correct format\n\t\t\t\t\t$( '.brightcove-media-videos' ).prepend( template );\n\n\t\t\t\t\t// Allow the user to dismiss the notice\n\t\t\t\t\t$( '.badformat.notice-dismiss' ).on( 'click', function() {\n\t\t\t\t\t\t$( '.notice.badformat' ).first().fadeOut( 500, function() {\n\t\t\t\t\t\t\t$( this ).remove();\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} );\n\t\t\tthis.model.set( 'captions', captions );\n\n\t\t\t// Custom fields\n\t\t\tvar custom = {},\n\t\t\t\tcustom_fields = this.model.get( 'custom' );\n\n\t\t\t_.each( this.$el.find( '.brightcove-custom-string, .brightcove-custom-enum' ), function( item ) {\n\t\t\t\tvar key = item.getAttribute( 'data-id' ),\n\t\t\t\t\tval = item.value.trim();\n\n\t\t\t\tif ( '' !== val ) {\n\t\t\t\t\tcustom[ key ] = val;\n\n\t\t\t\t\tvar obj = _.find( custom_fields, function( item ) { return item.id == key } );\n\t\t\t\t\tobj.value = val;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthis.model.set( 'custom_fields', custom );\n\t\t\tthis.model.set( 'custom', custom_fields );\n\n\t\t\tthis.model.save()\n\t\t\t\t.done( function() {\n\t\t\t\t\tif ( $mediaFrame.length > 0 ) {\n\t\t\t\t\t\t// Update the tag dropdown and wpbc.preload.tags with any new tag values.\n\t\t\t\t\t\tvar tagInput =  $mediaFrame.find( '.brightcove-tags' ).val(),\n\t\t\t\t\t\t\teditTags,\n\t\t\t\t\t\t\tnewTags;\n\n\t\t\t\t\t\tif ( tagInput ) {\n\t\t\t\t\t\t\teditTags     = tagInput.split( ',' );\n\t\t\t\t\t\t\tnewTags      = _.difference( editTags, wpbc.preload.tags );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Add any new tags to the tags object and the dropdown.\n\t\t\t\t\t\t_.each( newTags, function( newTag ){\n\t\t\t\t\t\t\tnewTag = newTag.trim();\n\t\t\t\t\t\t\tif ( '' !== newTag ) {\n\t\t\t\t\t\t\t\twpbc.preload.tags.push( newTag );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t\twpbc.preload.tags.sort();\n\t\t\t\t\t}\n\t\t\t\t} )\n\t\t\t\t.always( function() {\n\t\t\t\t\t// Re-enable the button when the request has completed.\n\t\t\t\t\t$allButtons.removeClass( 'disabled' );\n\n\t\t\t\t\t// Show the delete link.\n\t\t\t\t\t$mediaFrame.find( '.delete-action' ).show();\n\t\t\t\t} );\n\n\t\t\t// Hide the video edit screen after save.\n\t\t\twpbc.broadcast.trigger( 'start:gridview' );\n\t\t},\n\n\t\t/**\n\t\t * Render the actual view for the Video Edit screen.\n\t\t *\n\t\t * @param {Object} options\n\t\t */\n\t\trender : function ( options ) {\n\t\t\tthis.listenTo( wpbc.broadcast, 'save:media', this.saveSync );\n\t\t\tthis.listenTo( wpbc.broadcast, 'back:editvideo', this.back );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'insert:shortcode', this.insertShortcode );\n\t\t\toptions = this.model.toJSON();\n\n\t\t\t// Render the model into the template\n\t\t\tthis.$el.html( this.template( options ) );\n\n\t\t\t// Render custom fields into the template\n\t\t\tvar customContainer = this.$el.find( '#brightcove-custom-fields' ),\n\t\t\t\tstringTmp = wp.template( 'brightcove-video-edit-custom-string' ),\n\t\t\t\tenumTmp = wp.template( 'brightcove-video-edit-custom-enum' );\n\n\t\t\t_.each( this.model.get('custom'), function( custom ) {\n\t\t\t\tif ( '_change_history' === custom.id ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tswitch( custom.type ) {\n\t\t\t\t\tcase 'string':\n\t\t\t\t\t\tcustomContainer.append( stringTmp( custom ) );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'enum':\n\t\t\t\t\t\tcustomContainer.append( enumTmp( custom ) );\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Render the change history\n\t\t\tvar history = this.model.get( 'history' );\n\n\t\t\tif ( history !== undefined ) {\n\t\t\t\tvar historyStr = '';\n\n\t\t\t\t// Parse our fetched JSON object\n\t\t\t\thistory = JSON.parse( history );\n\n\t\t\t\t_.each( history, function( item ) {\n\t\t\t\t\thistoryStr += item.user + ' - ' + item.time + '\\n';\n\t\t\t\t} );\n\n\t\t\t\tif ( '' !== historyStr ) {\n\t\t\t\t\tthis.$el.find( 'textarea.brightcove-change-history' ).val( historyStr );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Configure a spinner to provide feedback during updates\n\t\t\tvar spinner = this.$el.find( '.spinner' );\n\t\t\tthis.listenTo( wpbc.broadcast, 'spinner:on', function () {\n\t\t\t\tspinner.addClass( 'is-active' ).removeClass( 'hidden' );\n\t\t\t} );\n\t\t\tthis.listenTo( wpbc.broadcast, 'spinner:off', function () {\n\t\t\t\tspinner.removeClass( 'is-active' ).addClass( 'hidden' );\n\t\t\t} );\n\n\t\t\t// If there's already a poster or thumbnail set, display it\n\t\t\tif ( this.model.get( 'poster' ) ) {\n\t\t\t\tthis.displayAttachment( 'poster' );\n\t\t\t}\n\n\t\t\tif ( this.model.get( 'thumbnail' ) ) {\n\t\t\t\tthis.displayAttachment( 'thumbnail' );\n\t\t\t}\n\n\t\t\t// Captions\n\t\t\tif ( this.model.get( 'captions' ) ) {\n\t\t\t\tvar captions = this.model.get( 'captions' );\n\t\t\t\tfor ( var i = 0, l = captions.length; i < l; i++ ) {\n\t\t\t\t\tvar caption = captions[i];\n\t\t\t\t\tthis.addCaption( caption.source, caption.language, caption.label );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n);","var VideoPreviewView = BrightcoveView.extend( {\n\ttagName :   'div',\n\tclassName : 'video-preview brightcove',\n\ttemplate :  wp.template( 'brightcove-video-preview' ),\n\tshortcode: '',\n\n\tinitialize: function( options ) {\n\t\tthis.shortcode = options.shortcode;\n\t},\n\n\trender : function ( options ) {\n\t\tvar that = this;\n\n\t\toptions            = options || {};\n\t\toptions.id         = this.model.get( 'id' );\n\t\toptions.account_id = this.model.get( 'account_id' );\n\n\t\t$.ajax({\n\t\t\turl: ajaxurl,\n\t\t\tdataType: 'json',\n\t\t\tmethod: 'POST',\n\t\t\tdata: {\n\t\t\t\t'action':'bc_resolve_shortcode',\n\t\t\t\t'shortcode': this.shortcode,\n\t\t\t\t'video_id' : options.id,\n\t\t\t\t'account_id': options.account_id,\n\t\t\t},\n\t\t\tsuccess: function( results ) {\n\t\t\t\tthat.$el.html( results.data );\n\t\t\t}\n\t\t});\n\n\t\tthis.listenTo( wpbc.broadcast, 'insert:shortcode', this.insertShortcode );\n\t}\n} );\n","var MediaCollectionView = BrightcoveView.extend(\n\t{\n\t\ttagName :   'ul',\n\t\tclassName : 'brightcove-media attachments',\n\n\t\tattributes : {\n\t\t\ttabIndex : - 1\n\t\t},\n\n\t\tevents : {\n\t\t\t/* scroll fired on playlist edits, but for media grids it's handled by firing 'scroll:mediaGrid' in brightcove-media-manager */\n\t\t\t'scroll' : 'scrollHandler'\n\t\t},\n\n\t\tloadMoreMediaItems : function () {\n\t\t\tthis.fetchingResults = true;\n\t\t\tthis.collection.fetch();\n\t\t},\n\n\t\tscrollHandler : function () {\n\t\t\t// We don't fetch for videos in an existing playlist\n\t\t\tif ( 'existingPlaylists' === this.collection.mediaCollectionViewType ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar scrollThreshold = 200; // How many px from bottom until we fetch the next page.\n\t\t\tif ( ! this.fetchingResults && this.el.scrollTop + this.el.clientHeight + scrollThreshold > this.el.scrollHeight ) {\n\t\t\t\tthis.collection.pageNumber += 1;\n\t\t\t\tthis.loadMoreMediaItems();\n\t\t\t}\n\t\t},\n\n\t\tinitialize : function ( options ) {\n\t\t\tthis.fetchingResults = false;\n\t\t\tthis.listenTo( wpbc.broadcast, 'fetch:finished', function () {\n\t\t\t\tthis.fetchingResults = false;\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'fetch:apiError', this.handleAPIError );\n\n\t\t\tvar scrollRefreshSensitivity = wp.media.isTouchDevice ? 300 : 200;\n\t\t\tthis.scrollHandler           = _.chain( this.scrollHandler ).bind( this ).throttle( scrollRefreshSensitivity ).value();\n\t\t\tthis.listenTo( wpbc.broadcast, 'scroll:mediaGrid', this.scrollHandler );\n\t\t\toptions    = options || {};\n\t\t\tthis.el.id = _.uniqueId( '__attachments-view-' );\n\n\t\t\t// Occurs on playlist edit, existing videos.\n\t\t\tif ( ! this.collection && options.videoIds ) {\n\t\t\t\tthis.collection = new MediaCollection(\n\t\t\t\t\tnull,\n\t\t\t\t\t{\n\t\t\t\t\t\tvideoIds : options.videoIds,\n\t\t\t\t\t\tactiveAccount : options.activeAccount,\n\t\t\t\t\t\tmediaCollectionViewType : options.mediaCollectionViewType\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'playlist:moveUp', this.videoMoveUp );\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'playlist:moveDown', this.videoMoveDown );\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'playlist:remove', this.videoRemove );\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'playlist:add', this.videoAdd );\n\t\t\t} else if ( ! this.collection && 'libraryPlaylists' === options.mediaCollectionViewType ) {\n\t\t\t\tthis.collection = new MediaCollection(\n\t\t\t\t\tnull,\n\t\t\t\t\t{\n\t\t\t\t\t\texcludeVideoIds : options.excludeVideoIds,\n\t\t\t\t\t\tactiveAccount : options.activeAccount,\n\t\t\t\t\t\tmediaCollectionViewType : options.mediaCollectionViewType\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'playlist:remove', this.videoRemove );\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'playlist:add', this.videoAdd );\n\t\t\t}\n\n\t\t\t_.defaults( this.options, {\n\t\t\t\trefreshSensitivity : wp.media.isTouchDevice ? 300 : 200,\n\t\t\t\trefreshThreshold :   3,\n\t\t\t\tVideoView :          wp.media.view.Video,\n\t\t\t\tsortable :           false,\n\t\t\t\tresize :             true,\n\t\t\t\tidealColumnWidth :   202\n\t\t\t} );\n\n\t\t\tthis._viewsByCid = {};\n\t\t\tthis.resizeEvent = 'resize.media-modal-columns';\n\n\t\t\tthis.listenTo( this.collection, 'add', function ( media ) {\n\t\t\t\tthis.views.add( this.createMediaView( media ), {\n\t\t\t\t\tat : this.collection.indexOf( media )\n\t\t\t\t} );\n\t\t\t}, this );\n\n\t\t\tthis.listenTo( this.collection, 'remove', function ( media ) {\n\t\t\t\tif ( media ) {\n\t\t\t\t\tif ( media.view ) {\n\t\t\t\t\t\tmedia.view.remove();\n\t\t\t\t\t} else if ( media.cid && this._viewsByCid[media.cid] ) {\n\t\t\t\t\t\tthis._viewsByCid[media.cid].remove();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, this );\n\n\t\t\tthis.listenTo( this.collection, 'reset', this.render );\n\n\t\t\t// Throttle the scroll handler and bind this.\n\t\t\tthis.scroll = _.chain( this.scroll ).bind( this ).throttle( this.options.refreshSensitivity ).value();\n\n\t\t\tthis.options.scrollElement = this.options.scrollElement || this.el;\n\t\t\t$( this.options.scrollElement ).on( 'scroll', this.scroll );\n\n\t\t\t_.bindAll( this, 'setColumns' );\n\n\t\t\tif ( this.options.resize ) {\n\t\t\t\tthis.on( 'ready', this.bindEvents );\n\t\t\t\t// this.controller.on('open', this.setColumns);\n\n\t\t\t\t// Call this.setColumns() after this view has been rendered in the DOM so\n\t\t\t\t// attachments get proper width applied.\n\t\t\t\t_.defer( this.setColumns, this );\n\t\t\t}\n\t\t},\n\n\t\thandleAPIError: function() {\n\t\t\tthis.el.innerText = wpbc.str_apifailure;\n\t\t},\n\n\t\trender : function () {\n\t\t\t// hide the spinner when content has finished loading\n\t\t\tthis.listenTo( wpbc.broadcast, 'spinner:off', function() {\n\t\t\t\t$( '#js-media-loading' ).css( 'display', 'none' );\n\t\t\t} );\n\n\t\t\tthis.$el.empty();\n\t\t\tthis.collection.each( function ( mediaModel ) {\n\t\t\t\tmediaModel.view = new MediaView( {model : mediaModel} );\n\t\t\t\tthis.registerSubview( mediaModel.view );\n\t\t\t\tmediaModel.view.render();\n\t\t\t\tmediaModel.view.delegateEvents();\n\t\t\t\tmediaModel.view.$el.appendTo( this.$el );\n\n\t\t\t\twpbc.broadcast.trigger( 'spinner:off' );\n\t\t\t}, this );\n\t\t},\n\n\t\tsetViewType : function ( type ) {\n\t\t\tthis.collection.each( function ( mediaModel ) {\n\t\t\t\tmediaModel.set( 'view', type );\n\t\t\t}, this );\n\t\t},\n\n\t\tbindEvents : function () {\n\t\t\tthis.$window.off( this.resizeEvent ).on( this.resizeEvent, _.debounce( this.setColumns, 50 ) );\n\t\t},\n\n\t\tsetColumns : function () {\n\t\t\tvar prev  = this.columns,\n\t\t\t    width = this.$el.width();\n\n\t\t\tif ( width ) {\n\t\t\t\tthis.columns = Math.min( Math.round( width / this.options.idealColumnWidth ), 12 ) || 1;\n\n\t\t\t\tif ( ! prev || prev !== this.columns ) {\n\t\t\t\t\tthis.$el.closest( '.media-frame-content' ).attr( 'data-columns', this.columns );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @param {wp.media.model.Video} attachment\n\t\t * @returns {wp.media.View}\n\t\t */\n\t\tcreateMediaView : function ( attachment ) {\n\t\t\tattachment.set( 'viewType', this.collection.mediaCollectionViewType );\n\t\t\tvar view = new MediaView( {\n\t\t\t\tcontroller : this.controller,\n\t\t\t\tmodel :      attachment,\n\t\t\t\tcollection : this.collection,\n\t\t\t\tselection :  this.options.selection\n\t\t\t} );\n\t\t\tthis.registerSubview( view );\n\t\t\tthis._viewsByCid[attachment.cid] = view;\n\t\t\treturn view;\n\t\t},\n\n\t\tprepare : function () {\n\t\t\t// Create all of the Video views, and replace\n\t\t\t// the list in a single DOM operation.\n\t\t\tif ( this.collection.length ) {\n\t\t\t\tthis.views.set( this.collection.map( this.createMediaView, this ) );\n\n\t\t\t\t// If there are no elements, clear the views and load some.\n\t\t\t} else {\n\t\t\t\tthis.views.unset();\n\t\t\t\tthis.collection.more().done( this.scroll );\n\t\t\t}\n\t\t},\n\n\t\tready : function () {\n\t\t\t// Trigger the scroll event to check if we're within the\n\t\t\t// threshold to query for additional attachments.\n\t\t\tthis.scroll();\n\t\t},\n\n\t\tscroll : function () {\n\t\t\tvar view      = this,\n\t\t\t    el        = this.options.scrollElement,\n\t\t\t    scrollTop = el.scrollTop,\n\t\t\t    toolbar;\n\n\t\t\t// The scroll event occurs on the document, but the element\n\t\t\t// that should be checked is the document body.\n\t\t\tif ( el === document ) {\n\t\t\t\tel        = document.body;\n\t\t\t\tscrollTop = $( document ).scrollTop();\n\t\t\t}\n\n\t\t\tif ( 'function' !== this.collection.hasMore || ! $( el ).is( ':visible' ) || ! this.collection.hasMore() ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttoolbar = this.views.parent.toolbar;\n\n\t\t\t// Show the spinner only if we are close to the bottom.\n\t\t\tif ( el.scrollHeight - ( scrollTop + el.clientHeight ) < el.clientHeight / 3 ) {\n\t\t\t\ttoolbar.get( 'spinner' ).show();\n\t\t\t}\n\n\t\t\tif ( el.scrollHeight < scrollTop + ( el.clientHeight * this.options.refreshThreshold ) ) {\n\t\t\t\tthis.collection.more().done( function () {\n\t\t\t\t\tview.scroll();\n\t\t\t\t\ttoolbar.get( 'spinner' ).hide();\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\n\t\tvideoMoveUp : function ( videoView ) {\n\t\t\tvar model = videoView.model;\n\t\t\tvar index = this.collection.indexOf( model );\n\t\t\tif ( index > 0 ) {\n\t\t\t\tthis.collection.remove( model, {silent : true} ); // silence this to stop excess event triggers\n\t\t\t\tthis.collection.add( model, {at : index - 1} );\n\t\t\t}\n\t\t\tthis.render();\n\t\t\tthis.playlistChanged();\n\t\t},\n\n\t\tvideoMoveDown : function ( videoView ) {\n\t\t\tvar model = videoView.model;\n\t\t\tvar index = this.collection.indexOf( model );\n\t\t\tif ( index < this.collection.models.length ) {\n\t\t\t\tthis.collection.remove( model, {silent : true} ); // silence this to stop excess event triggers\n\t\t\t\tthis.collection.add( model, {at : index + 1} );\n\t\t\t}\n\t\t\tthis.render();\n\t\t\tthis.playlistChanged();\n\t\t},\n\n\t\tvideoRemove : function ( videoView ) {\n\t\t\tvar model = videoView.model;\n\t\t\tif ( - 1 === this.collection.indexOf( model ) ) {\n\t\t\t\t// this is the library model\n\t\t\t\tthis.collection.add( model );\n\t\t\t} else {\n\t\t\t\t// this is the playlist collection\n\t\t\t\tthis.collection.remove( model, {silent : true} ); // silence this to stop excess event triggers\n\t\t\t\tthis.playlistChanged();\n\t\t\t}\n\t\t\tthis.render();\n\t\t},\n\n\t\tvideoAdd : function ( videoView ) {\n\t\t\t/**\n\t\t\t * Video add is heard by two collections, the one containing the videos for the playlists\n\t\t\t * and the one containing the videos that we can add to them.\n\t\t\t * We handle the add by adding from the collection where it doesn't exist (the playlist) and removing\n\t\t\t * where it does (the library).\n\t\t\t */\n\t\t\tvar model = videoView.model;\n\t\t\tif ( - 1 === this.collection.indexOf( model ) ) {\n\t\t\t\t// this is the playlist collection\n\t\t\t\tthis.collection.add( model );\n\t\t\t\tthis.playlistChanged();\n\t\t\t} else {\n\t\t\t\t// this is the library model\n\t\t\t\tthis.collection.remove( model, {silent : true} );\n\t\t\t\tthis.render();\n\t\t\t}\n\t\t},\n\n\t\tplaylistChanged : function () {\n\t\t\tvar videoIds = [];\n\t\t\tthis.collection.each( function ( video ) {\n\t\t\t\tvideoIds.push( video.id );\n\t\t\t} );\n\t\t\tthis.videoIds = videoIds;\n\t\t\t// var syncPlaylist = _.throttle(_.bind(this.syncPlaylist, this), 2000);\n\t\t\tthis.syncPlaylist();\n\t\t},\n\n\t\tsyncPlaylist : function () {\n\t\t\twpbc.broadcast.trigger( 'playlist:changed', this.videoIds );\n\t\t}\n\n\t}\n);\n\n","\tvar App = {\n\t\trenderMediaManager: function(mediaType) {\n\t\t\tvar brightcoveMediaContainer = $('.brightcove-media-' + mediaType);\n\t\t\tvar content_ifr = document.getElementById('content_ifr');\n\t\t\tif ( brightcoveMediaContainer.length ) {\n\t\t\t\tvar brightcoveMediaManager = new BrightcoveMediaManagerView({\n\t\t\t\t\tel: brightcoveMediaContainer,\n\t\t\t\t\tdate: 'all',\n\t\t\t\t\tembedType: 'page',\n\t\t\t\t\tpreload: true,\n\t\t\t\t\tmode: 'manager',\n\t\t\t\t\tsearch: '',\n\t\t\t\t\taccounts: 'all',\n\t\t\t\t\ttags: 'all',\n\t\t\t\t\tmediaType: mediaType,\n\t\t\t\t\tviewType: 'grid'\n\t\t\t\t});\n\t\t\t\tbrightcoveMediaManager.render();\n\t\t\t}\n\t\t},\n\n\t\tload: function() {\n\t\t\twpbc.requests = [];\n\t\t\twpbc.responses = {};\n\t\t\twpbc.broadcast = _.extend({}, Backbone.Events); // pubSub object\n\n\t\t\tthis.loaded();\n\n\t\t},\n\n\t\tloaded: function() {\n\t\t\tvar brightcoveModalContainer = $('.brightcove-modal');\n\n\t\t\tvar router = new BrightcoveRouter;\n\t\t\twpbc.triggerModal = function() {\n\t\t\t\tif (!wpbc.modal) {\n\t\t\t\t\twpbc.modal = new BrightcoveModalView({\n\t\t\t\t\t\tel: brightcoveModalContainer,\n\t\t\t\t\t\ttab: 'videos'\n\t\t\t\t\t});\n\t\t\t\t\twpbc.modal.render();\n\t\t\t\t\twpbc.modal.$el.find( '.spinner' ).addClass( 'is-active' );\n\t\t\t\t} else {\n\t\t\t\t\twpbc.modal.$el.show();\n\t\t\t\t}\n\n\t\t\t\t// Prevent body scrolling by adding a class to 'body'.\n\t\t\t\t$( 'body' ).addClass( 'modal-open' );\n\t\t\t};\n\n\t\t\tvar bc_sanitize_ids = function( id ) {\n\t\t\t\treturn id.replace(/\\D/g,'');\n\t\t\t};\n\n\t\t\t// Load the appropriate media type manager into the container element,\n\t\t\t// We only support loading one per page.\n\t\t\t_.each(['videos', 'playlists'], function(mediaType){\n\t\t\t\tApp.renderMediaManager(mediaType);\n\t\t\t});\n\n\t\t\t$('.account-toggle-button').on('click',function(event){\n\t\t\t\tevent.preventDefault();\n\t\t\t\t$(this).hide();\n\t\t\t\t$('.brightcove-account-row.hidden').show();\n\t\t\t});\n\n\t\t\t$('.brightcove-add-new-video').on('click', function(e) {\n\t\t\t\te.preventDefault();\n\t\t\t\trouter.navigate('add-new-brightcove-video', { trigger:true });\n\t\t\t});\n\n\t\t\t$(document).on('click', '.brightcove-add-media', function( e ) {\n\t\t\t\te.preventDefault();\n\t\t\t\twpbc.triggerModal();\n\t\t\t\twpbc.modal.target = e.currentTarget.dataset.target;\n\t\t\t});\n\n\t\t\t$(document).keyup(function(e) {\n\t\t\t\tif (27 === e.keyCode) {\n\t\t\t\t\t// Close modal on ESCAPE if it's open.\n\t\t\t\t\twpbc.broadcast.trigger('close:modal');\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t$('a.brightcove-action-delete-source').on('click',function(e){\n\t\t\t\tvar message = $(this).data('alert-message');\n\t\t\t\tif( !confirm( message ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t}\n\t};\n\n\tjQuery( document ).ready( function() {\n\t\tApp.load();\n\t\tvar router = new BrightcoveRouter;\n\t\tif ( ! Backbone.History.started ) {\n\t\t\tBackbone.history.start();\n\t\t}\n\t} );\n"]}
     1{"version":3,"sources":["src/models/media.js","src/models/media-collection.js","src/models/brightcove-media-manager.js","src/models/brightcove-modal.js","src/models/upload-collection.js","src/models/upload.js","src/views/brightcove.js","src/views/toolbar.js","src/views/upload-video-manager.js","src/views/brightcove-media-manager.js","src/views/brightcove-modal.js","src/views/media-details.js","src/views/media.js","src/views/playlist-edit.js","src/views/upload-details.js","src/views/upload-window.js","src/views/upload.js","src/views/video-edit.js","src/views/video-preview.js","src/views/media-collection.js","src/app.js"],"names":[],"mappings":"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","file":"brightcove-admin.js","sourcesContent":["/**\n * Media model for Media CPT\n */\n\nvar MediaModel = Backbone.Model.extend(\n\t{\n\n\t\t/**\n\t\t * Copied largely from WP Attachment sync function\n\t\t * Triggered when attachment details change\n\t\t * Overrides Backbone.Model.sync\n\t\t *\n\t\t * @param {string} method\n\t\t * @param {wp.media.model.Media} model\n\t\t * @param {Object} [options={}]\n\t\t *\n\t\t * @returns {Promise}\n\t\t */\n\t\tsync : function ( method, model, options ) {\n\n\t\t\tvar accountHash = null;\n\n\t\t\t// Set the accountHash to the wpbc.preload.accounts[*] where the account_id\n\t\t\t// matches this media objects account_id.\n\t\t\t_.find( wpbc.preload.accounts, function ( account, hash ) {\n\t\t\t\tif ( account.account_id === this.get( 'account_id' ) ) {\n\t\t\t\t\taccountHash = hash;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}, this );\n\n\t\t\t// If the attachment does not yet have an `id`, return an instantly\n\t\t\t// rejected promise. Otherwise, all of our requests will fail.\n\t\t\tif ( _.isUndefined( this.id ) ) {\n\t\t\t\treturn $.Deferred().rejectWith( this ).promise();\n\t\t\t}\n\n\t\t\t// Overload the `read` request so Media.fetch() functions correctly.\n\t\t\tif ( 'read' === method ) {\n\t\t\t\toptions         = options || {};\n\t\t\t\toptions.context = this;\n\t\t\t\toptions.data    = _.extend( options.data || {}, {\n\t\t\t\t\taction : 'bc_media_fetch',\n\t\t\t\t\tid :     this.id\n\t\t\t\t} );\n\n\t\t\t\treturn wp.media.ajax( options );\n\n\t\t\t\t// Overload the `update` request so properties can be saved.\n\t\t\t} else if ( 'update' === method ) {\n\t\t\t\toptions         = options || {};\n\t\t\t\toptions.context = this;\n\t\t\t\t// Set the action and ID.\n\t\t\t\toptions.data = _.extend( options.data || {}, {\n\t\t\t\t\taccount :          accountHash,\n\t\t\t\t\taction :           'bc_media_update',\n\t\t\t\t\tdescription :      this.get( 'description' ),\n\t\t\t\t\tlong_description : this.get( 'long_description' ),\n\t\t\t\t\tname :             this.get( 'name' ),\n\t\t\t\t\tnonce :            wpbc.preload.nonce,\n\t\t\t\t\ttags :             this.get( 'tags' ),\n\t\t\t\t\toldFolderId:\t\t\t this.get( 'oldFolderId' ),\n\t\t\t\t\tfolderId :         this.get( 'folderId' ),\n\t\t\t\t\ttype :             this.get( 'mediaType' ),\n\t\t\t\t\tcustom_fields:     this.get( 'custom_fields' ),\n\t\t\t\t\thistory:           this.get( '_change_history' ),\n\t\t\t\t\tposter:            this.get( 'poster' ),\n\t\t\t\t\tthumbnail:         this.get( 'thumbnail' ),\n\t\t\t\t\tcaptions:          this.get( 'captions' )\n\t\t\t\t} );\n\n\t\t\t\tvar video_ids = this.get( 'video_ids' );\n\t\t\t\tif ( video_ids ) {\n\t\t\t\t\toptions.data.playlist_id     = this.id;\n\t\t\t\t\toptions.data.playlist_videos = video_ids;\n\t\t\t\t\toptions.data.type            = 'playlists';\n\t\t\t\t} else {\n\t\t\t\t\toptions.data.video_id = this.id;\n\t\t\t\t}\n\n\t\t\t\toptions.success = this.successFunction;\n\t\t\t\toptions.error   = this.failFunction;\n\n\t\t\t\twpbc.broadcast.trigger( 'spinner:on' );\n\t\t\t\treturn wp.media.ajax( options );\n\n\t\t\t\t// Overload the `delete` request so attachments can be removed.\n\t\t\t\t// This will permanently delete an attachment.\n\t\t\t} else if ( 'delete' === method ) {\n\t\t\t\toptions = options || {};\n\t\t\t\tvar self = this;\n\n\t\t\t\toptions.data = _.extend( options.data || {}, {\n\t\t\t\t\taccount : accountHash,\n\t\t\t\t\taction :  'bc_media_delete',\n\t\t\t\t\tid :      this.get( 'id' ),\n\t\t\t\t\tnonce :   wpbc.preload.nonce,\n\t\t\t\t\ttype :    this.get( 'mediaType' ),\n\t\t\t\t} );\n\n\t\t\t\treturn wp.media.ajax( options ).done( function ( response ) {\n\t\t\t\t\tself.destroyed = true;\n\t\t\t\t\twpbc.broadcast.trigger( 'delete:successful', response );\n\t\t\t\t\tif ( 'videos' === self.get( 'mediaType' ) || ! _.isUndefined( self.get( 'video_ids' ) ) ) {\n\t\t\t\t\t\twpbc.preload.videos = undefined;\n\t\t\t\t\t} else {\n\t\t\t\t\t\twpbc.preload.playlists = undefined;\n\t\t\t\t\t}\n\t\t\t\t\twpbc.responses = {};\n\t\t\t\t} ).fail( function ( response ) {\n\t\t\t\t\tself.destroyed = false;\n\t\t\t\t\twpbc.broadcast.trigger( 'videoEdit:message', response, 'error' );\n\t\t\t\t\twpbc.broadcast.trigger( 'spinner:off' );\n\t\t\t\t} );\n\n\t\t\t\t// Otherwise, fall back to `Backbone.sync()`.\n\t\t\t} else {\n\t\t\t\t/**\n\t\t\t\t * Call `sync` directly on Backbone.Model\n\t\t\t\t */\n\t\t\t\treturn Backbone.Model.prototype.sync.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Convert date strings into Date objects.\n\t\t *\n\t\t * @param {Object} resp The raw response object, typically returned by fetch()\n\t\t * @returns {Object} The modified response object, which is the attributes hash\n\t\t *    to be set on the model.\n\t\t */\n\t\tparse : function ( resp ) {\n\t\t\tif ( ! resp ) {\n\t\t\t\treturn resp;\n\t\t\t}\n\n\t\t\tresp.date     = new Date( resp.date );\n\t\t\tresp.modified = new Date( resp.modified );\n\t\t\treturn resp;\n\t\t},\n\n\t\tgetAccountName : function () {\n\n\t\t\tvar account_id      = this.get( 'account_id' );\n\t\t\tvar matchingAccount = _.findWhere( wpbc.preload.accounts, {account_id : this.get( 'account_id' )} );\n\t\t\treturn undefined === matchingAccount ? this.getSelectedAccountName() : matchingAccount.account_name;\n\t\t},\n\n\t\tgetSelectedAccountName : function () {\n      var elt = document.getElementById( 'brightcove-media-source' );\n\n      if ( elt.selectedIndex === -1 ) {\n        return 'unavailable';\n      }\n\n      return elt.options[elt.selectedIndex].text;\n\t\t},\n\n\t\tgetReadableDuration : function () {\n\n\t\t\tvar duration = this.get( 'duration' );\n\n\t\t\tif ( duration ) {\n\t\t\t\tduration    = Number( duration / 1000 );\n\t\t\t\tvar hours   = Math.floor( duration / 3600 );\n\t\t\t\tvar minutes = Math.floor( duration % 3600 / 60 );\n\t\t\t\tvar seconds = Math.floor( duration % 3600 % 60 );\n\t\t\t\treturn ((hours > 0 ? hours + \":\" + (minutes < 10 ? \"0\" : \"\") : \"\") + minutes + \":\" + (seconds < 10 ? \"0\" : \"\") + seconds);\n\t\t\t}\n\t\t\treturn duration;\n\t\t},\n\n\t\tgetReadableDate : function ( field ) {\n\n\t\t\tvar updated_at = this.get( field );\n\n\t\t\tif ( updated_at ) {\n\n\t\t\t\tvar date = new Date( updated_at );\n\n\t\t\t\tvar hour = date.getHours();\n\t\t\t\tvar min  = date.getMinutes();\n\t\t\t\tvar year = date.getFullYear();\n\t\t\t\tvar mon  = date.getMonth() + 1;\n\t\t\t\tvar day  = date.getDate();\n\t\t\t\tvar ampm = hour >= 12 ? 'pm' : 'am';\n\n\t\t\t\thour = hour % 12;\n\t\t\t\thour = hour ? hour : 12;\n\n\t\t\t\tmin = min < 10 ? '0' + min : min;\n\n\t\t\t\tvar readableDate = year + '/' + mon + '/' + day + ' - ' + hour + ':' + min + ' ' + ampm;\n\t\t\t\treturn readableDate;\n\t\t\t}\n\t\t\treturn updated_at;\n\t\t},\n\n\t\tsuccessFunction : function ( message ) {\n\t\t\twpbc.broadcast.trigger( 'videoEdit:message', message, 'success' );\n\t\t\twpbc.broadcast.trigger( 'spinner:off' );\n\t\t\tif ( _.isArray( this.get( 'video_ids' ) ) && wpbc.preload && wpbc.preload.playlists ) {\n\t\t\t\tvar id = this.get( 'id' );\n\t\t\t\t_.each( wpbc.preload.playlists, function ( playlist, index ) {\n\t\t\t\t\tif ( playlist.id === id ) {\n\t\t\t\t\t\twpbc.preload.playlists[index] = this.toJSON();\n\t\t\t\t\t}\n\t\t\t\t}, this );\n\t\t\t}\n\t\t\twpbc.responses = {};\n\t\t\tif ( 'videos' === this.get( 'mediaType' ) || ! _.isUndefined( this.get( 'video_ids' ) ) ) {\n\t\t\t\twpbc.preload.videos = undefined;\n\t\t\t} else {\n\t\t\t\twpbc.preload.playlists = undefined;\n\t\t\t}\n\t\t},\n\n\t\tfailFunction : function ( message ) {\n\t\t\twpbc.broadcast.trigger( 'videoEdit:message', message, 'error' );\n\t\t\twpbc.broadcast.trigger( 'spinner:off' );\n\t\t}\n\t}\n);\n","var MediaCollection = Backbone.Collection.extend(\n\t{\n\t\tmodel :      MediaModel,\n\t\t/**\n\t\t * @param {Array} [models=[]] Array of models used to populate the collection.\n\t\t * @param {Object} [options={}]\n\t\t */\n\t\tinitialize : function ( models, options ) {\n\t\t\toptions = options || {};\n\t\t\tif ( options.activeAccount ) {\n\t\t\t\tthis.activeAccount = options.activeAccount;\n\t\t\t}\n\n\t\t\tthis.additionalRequest = false;\n\n\t\t\tthis.pageNumber = this.pageNumber || 1;\n\n\t\t\tif ( ! this.mediaType && (this.mediaCollectionViewType === 'existingPlaylists' || this.mediaCollectionViewType === 'libraryPlaylists') ) {\n\t\t\t\tthis.mediaType = 'videos';\n\t\t\t}\n\n\t\t\tthis.mediaCollectionViewType = options.mediaCollectionViewType || 'grid';\n\n\t\t\tif ( options.excludeVideoIds && 'libraryPlaylists' === options.mediaCollectionViewType ) {\n\t\t\t\tthis.excludeVideoIds = options.excludeVideoIds;\n\t\t\t}\n\n\t\t\tif ( options.videoIds && ! models ) {\n\t\t\t\tthis.mediaType = 'videos';\n\t\t\t\tthis.videoIds  = options.videoIds;\n\t\t\t\tthis.fetch();\n\t\t\t} else if ( 'playlists' !== options.mediaType ) {\n\t\t\t\tthis.mediaType = 'videos';\n\t\t\t\tthis.fetch();\n\t\t\t}\n\n\t\t\tthis.mediaType = options.mediaType;\n\n\t\t\tif ( 'videos' === this.mediaType ) {\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:uploadedFileDetails', function ( video ) {\n\t\t\t\t\t// Add the newly uploaded file\n\t\t\t\t\tthis.add( video, {at : 0} );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tthis.activeAccount = options.activeAccount || 'all';\n\t\t\tthis.searchTerm    = options.searchTerm || '';\n\t\t\tthis.dates         = options.dates || 'all';\n\t\t\tthis.tag           = options.tag || '';\n\t\t\tthis.folderId      = options.folderId || '';\n\t\t\tthis.oldFolderId   = options.oldFolderId || '';\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:activeAccount', function ( accountId ) {\n\t\t\t\tthis.activeAccount = accountId;\n\t\t\t\twp.heartbeat.enqueue( 'brightcove_heartbeat', { 'accountId': accountId }, true );\n\t\t\t\tthis.fetch();\n\t\t\t} );\n\n\t\t\t$( document ).on( 'heartbeat-tick.brightcove_heartbeat', function( event, data ) {\n\t\t\t\tif ( data.hasOwnProperty( 'brightcove_heartbeat' ) ) {\n\t\t\t\t\twp.heartbeat.enqueue( 'brightcove_heartbeat', { 'accountId': data['brightcove_heartbeat']['account_id'] }, true );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:searchTerm', function ( searchTerm ) {\n\t\t\t\tthis.searchTerm = searchTerm;\n\t\t\t\tthis.fetch();\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:tag', function ( tag ) {\n\n\t\t\t\tif ( 'all' === tag ) {\n\t\t\t\t\ttag = '';\n\t\t\t\t}\n\n\t\t\t\tthis.tag = tag;\n\t\t\t\tthis.fetch();\n\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:folder', function ( folderId ) {\n\n\t\t\t\tthis.oldFolderId = this.folderId;\n\n\t\t\t\tif ( 'all' === folderId ) {\n\t\t\t\t\tfolderId = '';\n\t\t\t\t}\n\n\t\t\t\tthis.folderId = folderId;\n\t\t\t\tthis.fetch();\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:date', function ( date ) {\n\t\t\t\tthis.date = date;\n\t\t\t\tthis.fetch();\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'tabChange', function ( settings ) {\n\t\t\t\tthis.killPendingRequests();\n\t\t\t\tif ( settings.mediaType !== this.mediaType ) {\n\t\t\t\t\tthis.mediaType = settings.mediaType;\n\t\t\t\t\tvar preload    = wpbc.preload[this.mediaType];\n\t\t\t\t\tvar model;\n\t\t\t\t\t// Remove all models from the collection\n\t\t\t\t\twhile ( model = this.first() ) {\n\t\t\t\t\t\tthis.remove( model );\n\t\t\t\t\t}\n\t\t\t\t\tif ( preload !== undefined ) {\n\t\t\t\t\t\tthis.add( preload );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.fetch();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t},\n\n\t\tkillPendingRequests : function () {\n\t\t\t// Kill all pending requests\n\t\t\t_.each( wpbc.requests, function ( request ) {\n\t\t\t\trequest.abort();\n\t\t\t} );\n\n\t\t\twpbc.requests = [];\n\t\t},\n\n\t\tchecksum : function ( object ) {\n\t\t\tif ( ! _.isString( object ) ) {\n\t\t\t\tif ( _.isFunction( object.toJSON ) ) {\n\t\t\t\t\tobject = object.toJSON();\n\t\t\t\t} else {\n\t\t\t\t\tobject = JSON.stringify( object );\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tvar checksum = 0x12345678;\n\n\t\t\tfor ( var i = 0; i < object.length; i ++ ) {\n\t\t\t\tchecksum += (object.charCodeAt( i ) * (i + 1));\n\t\t\t}\n\n\t\t\treturn checksum;\n\t\t},\n\n\t\t/**\n\t\t * Overrides Backbone.Collection.sync\n\t\t *\n\t\t * @param {String} method\n\t\t * @param {Backbone.Model} model\n\t\t * @param {Object} [options={}]\n\t\t * @returns {Promise}\n\t\t */\n\t\tsync : function ( method, model, options ) {\n\t\t\tvar args, fallback;\n\n\t\t\t// Overload the read method so Media.fetch() functions correctly.\n\t\t\tif ( 'read' === method ) {\n\t\t\t\toptions      = options || {};\n\t\t\t\toptions.data = _.extend( options.data || {}, {\n\t\t\t\t\taction :         'bc_media_query',\n\t\t\t\t\taccount :        this.activeAccount || wpbc.preload.defaultAccountId,\n\t\t\t\t\tdates :          this.date,\n\t\t\t\t\tposts_per_page : wpbc.posts_per_page,\n\t\t\t\t\tpage_number :    this.pageNumber,\n\t\t\t\t\tnonce :          wpbc.preload.nonce,\n\t\t\t\t\tsearch :         this.searchTerm,\n\t\t\t\t\ttags :           this.tag,\n\t\t\t\t\toldFolderId:     this.oldFolderId,\n\t\t\t\t\tfolderId: \t\t\t this.folderId,\n\t\t\t\t\ttagName :        wpbc.preload.tags[this.tag],\n\t\t\t\t\ttype : this.mediaType || 'videos'\n\t\t\t\t} );\n\n\t\t\t\tvar previousRequest = _.pick( options.data, 'account', 'dates', 'posts_per_page', 'search', 'tags', 'type', 'folderId', 'tagName' );\n\n\t\t\t\t// Determine if we're infinite scrolling or not.\n\t\t\t\tthis.additionalRequest = _.isEqual( previousRequest, wpbc.previousRequest );\n\t\t\t\tif ( ! this.additionalRequest ) {\n\t\t\t\t\toptions.data.page_number = 1;\n\t\t\t\t}\n\t\t\t\t/* Prevent reloading on the playlist edit as the playlist videos are one request and library videos another */\n\t\t\t\tif ( this.mediaCollectionViewType !== 'existingPlaylists' ) {\n\t\t\t\t\twpbc.previousRequest = previousRequest;\n\t\t\t\t}\n\n\t\t\t\tif ( this.videoIds ) {\n\t\t\t\t\toptions.data.videoIds = this.videoIds.length ? this.videoIds : 'none';\n\t\t\t\t}\n\n\n\t\t\t\toptions.data.query = args;\n\n\t\t\t\tif ( ! _.contains( ['libraryPlaylists', 'existingPlaylists'], this.mediaCollectionViewType ) ) {\n\t\t\t\t\tthis.killPendingRequests();\n\t\t\t\t}\n\n\t\t\t\tvar requestChecksum = this.checksum( options.data );\n\n\t\t\t\tif ( ! _.isUndefined( wpbc.responses[requestChecksum] ) ) {\n\t\t\t\t\tthis.parse( {data : wpbc.responses[requestChecksum]}, 'cached' );\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tvar request = $.ajax( {\n\t\t\t\t\t                      type :    'POST',\n\t\t\t\t\t                      url :     wp.ajax.settings.url,\n\t\t\t\t\t                      context : this,\n\t\t\t\t\t                      data :    options.data\n\t\t\t\t                      } ).done( function ( response, status, request ) {\n\t\t\t\t\tthis.parse( response, status, request, requestChecksum );\n\t\t\t\t} ).fail( this.fetchFail );\n\n\t\t\t\twpbc.requests.push( request );\n\t\t\t\twpbc.broadcast.trigger( 'spinner:on' );\n\n\t\t\t\treturn request;\n\n\t\t\t\t// Otherwise, fall back to Backbone.sync()\n\t\t\t} else {\n\t\t\t\t/**\n\t\t\t\t * Call wp.media.model.MediaCollection.sync or Backbone.sync\n\t\t\t\t */\n\t\t\t\tfallback = MediaCollection.prototype.sync ? MediaCollection.prototype : Backbone;\n\t\t\t\treturn fallback.sync.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\tfetchFail : function () {\n\t\t\tif ( this.pageNumber > 1 ) {\n\t\t\t\tthis.pageNumber --;\n\t\t\t}\n\t\t\twpbc.broadcast.trigger( 'fetch:finished' );\n\t\t\twpbc.broadcast.trigger( 'spinner:off' );\n\t\t\twpbc.broadcast.trigger( 'fetch:apiError' );\n\t\t\tif ( 'abort' === status ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * A custom AJAX-response parser.\n\t\t *\n\t\t * See trac ticket #24753\n\t\t *\n\t\t * @param {Object|Array} resp The raw response Object/Array.\n\t\t * @param {Object} xhr\n\t\t * @returns {Array} The array of model attributes to be added to the\n\t\t *   collection\n\t\t */\n\t\tparse : function ( response, status, request, checksum ) {\n\t\t\twpbc.broadcast.trigger( 'fetch:finished' );\n\t\t\twpbc.broadcast.trigger( 'spinner:off' );\n\t\t\tif ( ! _.contains( ['success', 'cached'], status ) || ( 'cached' !== status && ! response['success'] ) ) {\n\t\t\t\twpbc.broadcast.trigger( 'fetch:apiError' );\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar data = response.data;\n\n\t\t\tif ( \"success\" === status ) {\n\t\t\t\twpbc.responses[checksum] = data;\n\t\t\t}\n\n\t\t\tif ( false === data ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif ( ! _.isArray( data ) ) {\n\t\t\t\tdata = [data];\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * In playlist video search, we remove the videos that already exist in\n\t\t\t * the playlist.\n\t\t\t */\n\t\t\tif ( _.isArray( this.excludeVideoIds ) ) {\n\t\t\t\t_.each( this.excludeVideoIds, function ( videoId ) {\n\t\t\t\t\tdata = _.without( data, _.findWhere( data, {id : videoId} ) );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tif (data.length === 0) {\n\t\t\t\twpbc.broadcast.trigger('videoEdit:message', 'No videos found.', 'error',\n\t\t\t\t\ttrue)\n\t\t\t}\n\n\t\t\tvar allMedia = _.map( data, function ( attrs ) {\n\t\t\t\tvar id, media, newAttributes;\n\n\t\t\t\tif ( attrs instanceof Backbone.Model ) {\n\t\t\t\t\tid    = attrs.get( 'id' );\n\t\t\t\t\tattrs = attrs.attributes;\n\t\t\t\t} else {\n\t\t\t\t\tid = attrs.id;\n\t\t\t\t}\n\n\t\t\t\tmedia = this.findWhere( {id : id} );\n\t\t\t\tif ( ! media ) {\n\t\t\t\t\tmedia = this.add( attrs );\n\t\t\t\t} else {\n\t\t\t\t\tnewAttributes = media.parse( attrs );\n\n\t\t\t\t\tif ( ! _.isEqual( media.attributes, newAttributes ) ) {\n\t\t\t\t\t\tmedia.set( newAttributes );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tmedia.set( 'viewType', this.mediaCollectionViewType );\n\t\t\t\treturn media;\n\t\t\t}, this );\n\n\n\t\t\tif ( this.additionalRequest ) {\n\t\t\t\tthis.add( allMedia );\n\t\t\t} else {\n\t\t\t\tthis.set( allMedia );\n\t\t\t}\n\t\t}\n\t}\n);\n","var BrightcoveMediaManagerModel = Backbone.Model.extend(\n\t{\n\t\tdefaults :   {\n\t\t\tview :    'grid',\n\t\t\tdate :    'all',\n\t\t\ttags :    'all',\n\t\t\ttype :    null, // enum[playlist, video]\n\t\t\tpreload : true,\n\t\t\tsearch :  '',\n\t\t\taccount : wpbc.preload.defaultAccountId,\n\t\t\tposter: {},\n\t\t\tthumbnail: {}\n\t\t},\n\t\tinitialize : function ( options ) {\n\t\t\t_.defaults( options, this.defaults );\n\n\t\t\twp.heartbeat.enqueue( 'brightcove_heartbeat', { 'accountId': wpbc.preload.defaultAccountId }, true );\n\n\t\t\tvar collection = new MediaCollection( [], {mediaType : options.mediaType} );\n\t\t\tcollection.reset();\n\t\t\t/* Prevent empty element from living in our collection */\n\n\t\t\tif ( options.preload && options.preload.length ) {\n\t\t\t\tcollection.add( options.preload );\n\t\t\t}\n\n\t\t\toptions.preload = ! ! options.preload; // Whether or not a preload var was present.\n\n\t\t\tthis.set( 'media-collection-view', new MediaCollectionView( {collection : collection} ) );\n\t\t\tthis.set( 'options', options );\n\n\t\t}\n\t}\n);\n\n","/**\n * Media model for Media CPT\n */\n\nvar BrightcoveModalModel = Backbone.Model.extend(\n\t{\n\n\t\tgetMediaManagerSettings : function () {\n\t\t\tvar tab      = this.get( 'tab' );\n\t\t\tvar settings = {\n\t\t\t\t'upload' :    {\n\t\t\t\t\taccounts :  'all',\n\t\t\t\t\tdate :      'all',\n\t\t\t\t\tembedType : 'modal',\n\t\t\t\t\tmediaType : 'videos',\n\t\t\t\t\tmode :      'uploader',\n\t\t\t\t\tpreload :   true,\n\t\t\t\t\tsearch :    '',\n\t\t\t\t\ttags :      'all',\n\t\t\t\t\tviewType :  'grid',\n\t\t\t\t\tposter:     {},\n\t\t\t\t\tthumbnail:  {}\n\t\t\t\t},\n\t\t\t\t'videos' :    {\n\t\t\t\t\taccounts :  'all',\n\t\t\t\t\tdate :      'all',\n\t\t\t\t\tembedType : 'modal',\n\t\t\t\t\tmediaType : 'videos',\n\t\t\t\t\tmode :      'manager',\n\t\t\t\t\tpreload :   true,\n\t\t\t\t\tsearch :    '',\n\t\t\t\t\ttags :      'all',\n\t\t\t\t\tviewType :  'grid'\n\t\t\t\t},\n\t\t\t\t'playlists' : {\n\t\t\t\t\taccounts :  'all',\n\t\t\t\t\tdate :      'all',\n\t\t\t\t\tembedType : 'modal',\n\t\t\t\t\tmediaType : 'playlists',\n\t\t\t\t\tmode :      'manager',\n\t\t\t\t\tpreload :   true,\n\t\t\t\t\tsearch :    '',\n\t\t\t\t\ttags :      'all',\n\t\t\t\t\tviewType :  'grid'\n\t\t\t\t},\n        'video-experience' : {\n          accounts :  'all',\n          date :      'all',\n          embedType : 'modal',\n          mediaType : 'videoexperience',\n          mode :      'manager',\n          preload :   true,\n          search :    '',\n          tags :      'all',\n          viewType :  'grid'\n        }\n        ,\n        'playlist-experience' : {\n          accounts :  'all',\n          date :      'all',\n          embedType : 'modal',\n          mediaType : 'playlistexperience',\n          mode :      'manager',\n          preload :   true,\n          search :    '',\n          tags :      'all',\n          viewType :  'grid'\n        }\n\t\t\t};\n\n\t\t\tif ( undefined !== settings[tab] ) {\n\t\t\t\treturn settings[tab];\n\t\t\t}\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n);\n\n","/**\n * Collection model to contain pending uploads\n */\n\nvar UploadModelCollection = Backbone.Collection.extend(\n\t{\n\n\t\tinitialize : function ( options ) {\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:queuedFilesAdded', this.queuedFilesAdded );\n\t\t},\n\n\t\tqueuedFilesAdded : function ( queuedFiles ) {\n\t\t\t_.each( queuedFiles, function ( queuedFile ) {\n\t\t\t\tthis.add( new UploadModel( queuedFile ) );\n\t\t\t}, this );\n\t\t}\n\n\t}\n);\n\n","/**\n * Model to contain pending upload\n */\n\nvar UploadModel = Backbone.Model.extend(\n\t{\n\n\t\tinitialize : function ( options ) {\n\t\t},\n\n\t\thumanReadableSize : function () {\n\t\t\tvar bytes = this.get( 'size' );\n\t\t\tif ( bytes === 0 ) {\n\t\t\t\treturn '0 Byte';\n\t\t\t}\n\t\t\tvar k     = 1000;\n\t\t\tvar sizes = ['Bytes', 'KB', 'MB', 'GB'];\n\t\t\tvar i     = Math.floor( Math.log( bytes ) / Math.log( k ) );\n\t\t\treturn (bytes / Math.pow( k, i )).toPrecision( 3 ) + ' ' + sizes[i];\n\t\t}\n\n\t}\n);\n","var BrightcoveView = wp.Backbone.View.extend(\n\t{\n\t\tsubviews : null,\n\n\t\tregisterSubview : function ( view ) {\n\n\t\t\tthis.subviews = this.subviews || [];\n\t\t\tthis.subviews.push( view );\n\n\t\t},\n\n\t\tremove : function () {\n\n\t\t\t_.invoke( this.subviews, 'remove' );\n\t\t\twp.Backbone.View.prototype.remove.call( this );\n\n\t\t},\n\n\t\tinsertShortcode : function () {\n\n\t\t\tif ( ! this.model ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar shortcode = wpbc.shortcode;\n\n            if ( undefined === this.mediaType ) {\n\t\t\t\tvar template = wp.template( 'brightcove-mediatype-notice' );\n\n\t\t\t\t// Throw a notice to the user that the file is not the correct format\n\t\t\t\t$( '#lost-connection-notice' ).before( template );\n\n\t\t\t\t// Allow the user to dismiss the notice\n\t\t\t\t$( '#js-mediatype-dismiss' ).on( 'click', function() {\n\t\t\t\t\t$( '#js-mediatype-notice' ).first().fadeOut( 500, function() {\n\t\t\t\t\t\t$( this ).remove();\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tif( wpbc.modal.target === 'content' ) {\n\t\t\t\twindow.send_to_editor( shortcode );\n\t\t\t} else {\n\t\t\t\t$( wpbc.modal.target ).val( shortcode );\n\t\t\t\t$( wpbc.modal.target ).change();\n\t\t\t}\n\n\t\t\twpbc.broadcast.trigger( 'close:modal' );\n\t\t}\n\t}\n);\n","/**\n * This is the toolbar to handle sorting, filtering, searching and grid/list\n * view toggles. State is captured in the brightcove-media-manager model.\n */\nvar ToolbarView = BrightcoveView.extend(\n\t{\n\t\ttagName :   'div',\n\t\tclassName : 'media-toolbar wp-filter',\n\t\ttemplate :  wp.template( 'brightcove-media-toolbar' ),\n\n\t\tevents : {\n      'click .view-list': 'toggleList',\n      'click .view-grid': 'toggleGrid',\n      'click .brightcove-toolbar': 'toggleToolbar',\n      'change .brightcove-media-source': 'sourceChanged',\n      'change .brightcove-media-dates': 'datesChanged',\n      'change .brightcove-media-tags': 'tagsChanged',\n\t\t\t'change .brightcove-media-folders': 'foldersChanged',\n      'change .brightcove-empty-playlists': 'emptyPlaylistsChanged',\n      'click #media-search': 'searchHandler',\n      'keyup .search': 'enterHandler'\n\t\t},\n\n\t\trender : function () {\n\t\t\tvar mediaType = this.model.get( 'mediaType' );\n\t\t\tvar options   = {\n\t\t\t\taccounts :  wpbc.preload.accounts,\n\t\t\t\tdates :     {},\n\t\t\t\tmediaType : mediaType,\n\t\t\t\ttags :      wpbc.preload.tags,\n\t\t\t\tfolders:    wpbc.preload.folders,\n\t\t\t\tfolderId:   this.model.get( 'folderId' ),\n\t\t\t\taccount :   this.model.get( 'account' )\n\t\t\t};\n\n\t\t\tvar dates    = wpbc.preload.dates;\n\t\t\tvar date_var = this.model.get( 'date' );\n\t\t\t/* @todo: find out if this is working */\n\t\t\tif ( dates !== undefined && dates[mediaType] !== undefined && dates[mediaType][date_var] !== undefined ) {\n\t\t\t\toptions.dates = dates[mediaType][date_var];\n\t\t\t}\n\n\t\t\tthis.$el.html( this.template( options ) );\n\t\t\tvar spinner = this.$el.find( '.spinner' );\n\t\t\tthis.listenTo( wpbc.broadcast, 'spinner:on', function () {\n\t\t\t\tspinner.addClass( 'is-active' ).removeClass( 'hidden' );\n\t\t\t} );\n\t\t\tthis.listenTo( wpbc.broadcast, 'spinner:off', function () {\n\t\t\t\tspinner.removeClass( 'is-active' ).addClass( 'hidden' );\n\t\t\t} );\n\t\t},\n\n\t\t// List view Selected\n\t\ttoggleList : function () {\n\t\t\tthis.trigger( 'viewType', 'list' );\n\t\t\tthis.$el.find( '.view-list' ).addClass( 'current' );\n\t\t\tthis.$el.find( '.view-grid' ).removeClass( 'current' );\n\t\t},\n\n\t\t// Grid view Selected\n\t\ttoggleGrid : function () {\n\t\t\tthis.trigger( 'viewType', 'grid' );\n\t\t\tthis.$el.find( '.view-grid' ).addClass( 'current' );\n\t\t\tthis.$el.find( '.view-list' ).removeClass( 'current' );\n\t\t},\n\n\t\t// Toggle toolbar help\n\t\ttoggleToolbar : function () {\n\t\t\tvar template = wp.template( 'brightcove-tooltip-notice' );\n\n\t\t\t// Throw a notice to the user that the file is not the correct format\n\t\t\t$( '.brightcove-media-videos' ).before( template );\n\t\t\t// Allow the user to dismiss the notice\n\t\t\t$( '#js-tooltip-dismiss' ).on( 'click', function() {\n\t\t\t\t$( '#js-tooltip-notice' ).first().fadeOut( 500, function() {\n\t\t\t\t\t$( this ).remove();\n\t\t\t\t} );\n\t\t\t} );\n\t\t},\n\n\t\t// Brightcove source changed\n\t\tsourceChanged : function ( event ) {\n\n\t\t\t// Store the currently selected account on the model.\n\t\t\tthis.model.set( 'account', event.target.value );\n\t\t\twpbc.broadcast.trigger( 'change:activeAccount', event.target.value );\n\t\t},\n\n\t\tdatesChanged : function ( event ) {\n\t\t\twpbc.broadcast.trigger( 'change:date', event.target.value );\n\t\t},\n\n\t\ttagsChanged : function ( event ) {\n\t\t\twpbc.broadcast.trigger( 'change:tag', event.target.value );\n\t\t},\n\n    foldersChanged: function (event) {\n      this.model.set('oldFolderId', this.model.get('folderId'));\n      this.model.set('folderId', event.target.value);\n      wpbc.broadcast.trigger('change:folder', event.target.value);\n    },\n\n\t\temptyPlaylistsChanged : function ( event ) {\n\t\t\tvar emptyPlaylists = $( event.target ).prop( 'checked' );\n\t\t\twpbc.broadcast.trigger( 'change:emptyPlaylists', emptyPlaylists );\n\t\t},\n\n    enterHandler : function ( event ) {\n      if ( event.keyCode === 13 ) {\n        this.searchHandler( event );\n      }\n    },\n\n\t\tsearchHandler : function ( event ) {\n\t\t\tvar searchTerm = $( '#media-search-input' ).val();\n\n\t\t\tif ( searchTerm.length > 2 && searchTerm !== this.model.get( 'search' ) ) {\n\t\t\t\tthis.model.set( 'search', searchTerm );\n\t\t\t\twpbc.broadcast.trigger( 'change:searchTerm', searchTerm );\n\t\t\t} else if (searchTerm.length === 0) {\n  \t\t\twpbc.broadcast.trigger( 'change:searchTerm', \"\" );\n\t\t\t}\n\t\t}\n\t}\n);\n\n","var UploadVideoManagerView = BrightcoveView.extend(\n\t{\n\t\tclassName : \"brightcove-file-uploader\",\n\n\t\tevents : {\n\t\t\t'click .brightcove-start-upload' : 'triggerUpload'\n\t\t},\n\n\t\tinitialize : function ( options ) {\n\t\t\t/**\n\t\t\t * If you're looking for the Plupload instance, you're in the wrong place, check the UploadWindowView\n\t\t\t */\n\t\t\tthis.collection = new UploadModelCollection();\n\t\t\tif ( options ) {\n\t\t\t\tthis.options = options;\n\n\t\t\t\tthis.successMessage = options.successMessage || this.successMessage;\n\t\t\t}\n\n\t\t\tthis.uploadWindow = new UploadWindowView();\n\n\t\t\tthis.listenTo( this.collection, 'add', this.fileAdded );\n\t\t\tthis.listenTo( wpbc.broadcast, 'pendingUpload:selectedItem', this.selectedItem );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:prepareUpload', this.prepareUpload );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:successMessage', this.successMessage );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:errorMessage', this.errorMessage );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:clear', this.resetUploads );\n\t\t\tthis.listenTo( wpbc.broadcast, 'upload:video', this.resetUploads );\n\t\t},\n\n\t\tresetUploads : function () {\n\t\t\twhile ( model = this.collection.first() ) {\n\t\t\t\tthis.collection.remove( model );\n\t\t\t}\n\t\t},\n\n\t\terrorMessage : function ( message ) {\n\t\t\tthis.message( message, 'error' );\n\t\t},\n\n\t\tsuccessMessage : function ( message ) {\n\t\t\tthis.message( message, 'success' );\n\t\t},\n\n\t\tmessage : function ( message, type ) {\n\t\t\tvar messages       = this.$el.find( '.brightcove-messages' );\n\t\t\tvar messageClasses = '';\n\t\t\tif ( 'success' === type ) {\n\t\t\t\tmessageClasses = 'notice updated';\n\t\t\t} else if ( 'error' === type ) {\n\t\t\t\tmessageClasses = 'error';\n\t\t\t}\n\t\t\tvar newMessage = $( '<div class=\"wrap\"><div class=\"brightcove-message\"><p class=\"message-text\"></p></div></div>' );\n\t\t\tmessages.append( newMessage );\n\t\t\tnewMessage.addClass( messageClasses ).find( '.message-text' ).text( message );\n\t\t\tnewMessage.delay( 4000 ).fadeOut( 500, function () {\n\t\t\t\t$( this ).remove();\n\t\t\t\twpbc.broadcast.trigger('upload:video');\n\t\t\t} );\n\t\t},\n\n\t\tprepareUpload : function () {\n\t\t\twpbc.uploads = wpbc.uploads || {};\n\t\t\tthis.collection.each( function ( upload ) {\n\t\t\t\twpbc.uploads[upload.get( 'id' )] = {\n\t\t\t\t\taccount : upload.get( 'account' ),\n\t\t\t\t\tname :    upload.get( 'fileName' ),\n\t\t\t\t\ttags :    upload.get( 'tags' )\n\t\t\t\t};\n\t\t\t} );\n\t\t\twpbc.broadcast.trigger( 'uploader:startUpload' );\n\t\t},\n\n\t\tfileAdded : function ( model, collection ) {\n\t\t\t// Start upload triggers progress bars under every video.\n\t\t\t// Need to re-render when one model is added\n\t\t\tif ( this.collection.length === 1 ) {\n\t\t\t\tthis.render();\n\t\t\t}\n\t\t\tvar pendingUpload = new UploadView( {model : model} );\n\t\t\tpendingUpload.render();\n\t\t\tpendingUpload.$el.appendTo( this.$el.find( '.brightcove-pending-uploads' ) );\n\t\t},\n\n\t\ttriggerUpload : function () {\n\t\t\twpbc.broadcast.trigger( 'uploader:prepareUpload' );\n\t\t},\n\n\t\tselectedItem : function ( model ) {\n\t\t\tthis.uploadDetails = new UploadDetailsView( {model : model} );\n\t\t\tthis.uploadDetails.render();\n\t\t\tthis.$el.find( '.brightcove-pending-upload-details' ).remove();\n\t\t\tthis.uploadDetails.$el.appendTo( this.$el.find( '.brightcove-upload-queued-files' ) );\n\t\t},\n\n\t\trender : function ( options ) {\n\t\t\tif ( this.collection.length ) {\n\t\t\t\tthis.template = wp.template( 'brightcove-uploader-queued-files' );\n\t\t\t} else {\n\t\t\t\tthis.template = wp.template( 'brightcove-uploader-inline' );\n\t\t\t\tthis.uploadWindow.render();\n\t\t\t\tthis.uploadWindow.$el.appendTo( $( 'body' ) );\n\t\t\t}\n\t\t\tthis.$el.html( this.template( options ) );\n\t\t\tif ( this.collection.length ) {\n\t\t\t\tthis.$el.find( '.brightcove-start-upload' ).show();\n\t\t\t} else {\n\t\t\t\tthis.$el.find( '.brightcove-start-upload' ).hide();\n\t\t\t}\n\t\t}\n\t}\n);\n","var BrightcoveRouter = Backbone.Router.extend({\n\troutes: {\n\t\t'add-new-brightcove-video' : \"addNew\"\n\t},\n\taddNew: function() {\n\t\twpbc.broadcast.trigger('upload:video');\n\t}\n});\n\nvar BrightcoveMediaManagerView = BrightcoveView.extend(\n\t{\n\t\ttagName :   'div',\n\t\tclassName : 'brightcove-media',\n\n\t\tevents : {\n\t\t\t/*\n\t\t\t 'click .brightcove.media-button': 'insertIntoPost'\n\t\t\t */\n\t\t},\n\n\t\tscrollHandler : function () {\n\t\t\twpbc.broadcast.trigger( 'scroll:mediaGrid' );\n\t\t},\n\n\t\tinitialize : function ( options ) {\n\n\t\t\tvar scrollRefreshSensitivity = wp.media.isTouchDevice ? 300 : 200;\n\t\t\tthis.scrollHandler           = _.chain( this.scrollHandler ).bind( this ).throttle( scrollRefreshSensitivity ).value();\n\t\t\tthis.options                 = options;\n\t\t\tthis.mode                    = options.mode || 'manager';\n\n\t\t\toptions.preload = this.options.preload ? wpbc.preload[this.options.mediaType] : false;\n\n\t\t\tthis.model = new BrightcoveMediaManagerModel( options );\n\n\t\t\t/* Search and dropdowns */\n\t\t\tthis.toolbar = new ToolbarView( {model : this.model} );\n\n\t\t\t/* Uploader View */\n\t\t\tthis.uploader = new UploadVideoManagerView();\n\n\t\t\tthis.model.set( 'accounts', wpbc.preload.accounts ); // All accounts.\n\t\t\tthis.model.set( 'activeAccount', options.account ); // Active account ID / All\n\n\t\t\tthis.listenTo( this.toolbar, 'viewType', function ( viewType ) {\n\t\t\t\tthis.model.set( 'view', viewType ); // Set the model view type\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'videoEdit:message', this.message );\n\t\t\tthis.listenTo( wpbc.broadcast, 'permanent:message', this.permanentMessage );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'remove:permanentMessage', function () {\n\n\t\t\t\tif ( wpbc.permanentMessage ) {\n\t\t\t\t\twpbc.permanentMessage.remove();\n\t\t\t\t}\n\n\t\t\t\tthis.$el.find( '.brightcove-message' ).addClass( 'hidden' );\n\n\t\t\t} );\n\n\t\t\t// We only care when a change occurs\n\t\t\tthis.listenTo( this.model, 'change:view', function ( model, type ) {\n\t\t\t\tthis.model.get( 'media-collection-view' ).setViewType( type );\n\t\t\t} );\n\n\t\t\tthis.listenTo( this.model, 'change:mode', function ( model, mode ) {\n\n\t\t\t\tif ( 'uploader' !== mode ) {\n\t\t\t\t\twpbc.broadcast.trigger( 'uploader:clear' );\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'cancelPreview:media', function ( settings ) {\n\t\t\t\tthis.clearPreview();\n\t\t\t\tthis.detailsView = undefined;\n\t\t\t\tthis.model.set( 'mode', 'manager' );\n\t\t\t\tthis.render();\n\n\t\t\t\t// Disable \"Insert Into Post\" button since no video would be selected.\n\t\t\t\twpbc.broadcast.trigger( 'toggle:insertButton' );\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:emptyPlaylists', function ( hideEmptyPlaylists ) {\n\n\t\t\t\tvar mediaCollectionView = this.model.get( 'media-collection-view' );\n\t\t\t\tthis.model.set( 'mode', 'manager' );\n\n\t\t\t\t_.each( mediaCollectionView.collection.models, function ( playlistModel ) {\n\n\t\t\t\t\t// Don't hide smart playlists. Only Manual playlists will have playlistType as 'EXPLICIT'.\n\t\t\t\t\tif ( 'EXPLICIT' !== playlistModel.get ( 'type' ) ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Manual play list will have videos populated in video_ids. Empty playlists will have zero video_ids.\n\t\t\t\t\tif ( playlistModel.get( 'video_ids' ).length === 0 ) {\n\t\t\t\t\t\tif ( hideEmptyPlaylists ) {\n\t\t\t\t\t\t\tplaylistModel.view.$el.hide();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tplaylistModel.view.$el.show();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'delete:successful', function ( message ) {\n\n\t\t\t\tthis.startGridView();\n\t\t\t\tthis.message( message, 'success' );\n\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:activeAccount', function ( accountId ) {\n\n\t\t\t\tthis.clearPreview();\n\t\t\t\tthis.model.set( 'activeAccount', accountId );\n\t\t\t\tthis.model.set( 'mode', 'manager' );\n\t\t\t\tthis.render();\n\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:tag', function ( tag ) {\n\n\t\t\t\tthis.clearPreview();\n\t\t\t\tthis.model.set( 'tag', tag );\n\n\t\t\t} );\n\n\t\t\tthis.listenTo(wpbc.broadcast, 'change:folder', function (folder) {\n\t\t\t\tthis.clearPreview();\n\t\t\t\tthis.model.set('oldFolderId', this.model.get('folderId'));\n\t\t\t\tthis.model.set('folderId', folder);\n\n\t\t\t})\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:date', function ( date ) {\n\n\t\t\t\tthis.clearPreview();\n\t\t\t\tthis.model.set( 'date', date );\n\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'upload:video', function () {\n\t\t\t\tthis.showUploader();\n\t\t\t} );\n\n\t\t\tthis.listenTo( this.model, 'change:search', function ( model, searchTerm ) {\n\t\t\t\tthis.model.get( 'search' );\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'start:gridview', function () {\n\n\t\t\t\t_.invoke( this.subviews, 'remove' );\n\n\t\t\t\tthis.detailsView = null; // Prevent selected view from not being toggleable when we hit the back button on edit\n\n\t\t\t\tthis.startGridView();\n\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'tabChange', function ( settings ) {\n\n\t\t\t\tthis.model.set( settings );\n\n\t\t\t\tif ( this.detailsView instanceof MediaDetailsView ) {\n\n\t\t\t\t\tthis.detailsView.remove();\n\n\t\t\t\t\tthis.detailsView = undefined;\n\n\t\t\t\t}\n\n\t\t\t\tthis.render();\n\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'edit:media', function ( model ) {\n\n\t\t\t\tvar mediaType = this.model.get( 'mediaType' );\n\n\t\t\t\tif ( mediaType === 'videos' ) {\n\n\t\t\t\t\t// We just hit the edit button with the edit window already open.\n\t\t\t\t\tif ( 'editVideo' === this.model.get( 'mode' ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\t// hide the previous notification\n\t\t\t\t\tvar messages = this.$el.find( '.brightcove-message' );\n\t\t\t\t\tmessages.addClass( 'hidden' );\n\n\t\t\t\t\tthis.editView = new VideoEditView( {model : model} );\n\n\t\t\t\t\tthis.registerSubview( this.editView );\n\t\t\t\t\tthis.model.set( 'mode', 'editVideo' );\n\t\t\t\t\tthis.render();\n\n\t\t\t\t} else if ( mediaType === 'videoexperience' ) {\n\n\t\t\t\t\t// We just hit the edit button with the edit window already open.\n\t\t\t\t\tif ( 'editVideo' === this.model.get( 'mode' ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\t// hide the previous notification\n\t\t\t\t\tvar messages = this.$el.find( '.brightcove-message' );\n\t\t\t\t\tmessages.addClass( 'hidden' );\n\n\t\t\t\t\tthis.editView = new VideoEditView( {model : model} );\n\n\t\t\t\t\tthis.registerSubview( this.editView );\n\t\t\t\t\tthis.model.set( 'mode', 'editVideo' );\n\t\t\t\t\tthis.render();\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// We just hit the edit button with the edit window already open.\n\t\t\t\t\tif ( 'editPlaylist' === this.model.get( 'mode' ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.editView = new PlaylistEditView( {model : model} );\n\n\t\t\t\t\tthis.registerSubview( this.editView );\n\t\t\t\t\tthis.model.set( 'mode', 'editPlaylist' );\n\t\t\t\t\tthis.render();\n\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'preview:media', function ( model, shortcode ) {\n\n\t\t\t\tvar mediaType = this.model.get( 'mediaType' );\n\n\t\t\t\tif ( mediaType === 'videos' ) {\n\n\t\t\t\t\t// We just hit the preview button with the preview window already open.\n\t\t\t\t\tif ( 'previewVideo' === this.model.get( 'mode' ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.previewView = new VideoPreviewView( {model : model, shortcode: shortcode} );\n\n\t\t\t\t\tthis.registerSubview( this.previewView );\n\t\t\t\t\tthis.model.set( 'mode', 'previewVideo' );\n\t\t\t\t\tthis.render();\n\n\t\t\t\t} else {\n\n\t\t\t\t\t/**\n\t\t\t\t\t * @todo: playlist preview view\n\t\t\t\t\t */\n\t\t\t\t\tthis.model.set( 'mode', 'editPlaylist' );\n\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'change:searchTerm', function ( mediaView ) {\n\t\t\t\tthis.clearPreview();\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'select:media', function ( mediaView ) {\n\n\t\t\t\t// Handle selection in the video experience tab.\n\t\t\t\tif ( mediaView.model.collection && 'videoexperience' === mediaView.model.collection.mediaType ) {\n\n\t\t\t\t\t// Toggle the selected state.\n\t\t\t\t\tmediaView.$el.toggleClass( 'highlighted' );\n\t\t\t\t\tmediaView.model.set( 'isSelected', mediaView.$el.hasClass( 'highlighted' ) );\n\n\t\t\t\t\t// Collect the selected models and extract their IDs.\n\t\t\t\t\tvar selected = _.filter( mediaView.model.collection.models, function( model ) {\n\t\t\t\t\t\treturn model.get( 'isSelected' );\n\t\t\t\t\t} ),\n\t\t\t\t\tselectedIds = _.map( selected, function( model ) {\n\t\t\t\t\t\treturn model.get( 'id' );\n\t\t\t\t\t} );\n\n\t\t\t\t\tthis.detailsView.model.set( 'id', selectedIds );\n\n\t\t\t\t\t// Clear the shortcode and disable insertion if no items are selected.\n\t\t\t\t\tif ( _.isEmpty( selectedIds ) && 'videoexperience' !== this.model.get( 'mediaType' )) {\n\t\t\t\t\t\twpbc.broadcast.trigger( 'toggle:insertButton' );\n\t\t\t\t\t\t$( '#shortcode' ).val( '' );\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Otherwise, enable insertion.\n\t\t\t\t\t\twpbc.broadcast.trigger( 'toggle:insertButton', 'enabled' );\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t/* If user selects same thumbnail they want to hide the details view */\n\t\t\t\t\tif ( this.detailsView && this.detailsView.model === mediaView.model ) {\n\n\t\t\t\t\t\tthis.detailsView.$el.toggle();\n\t\t\t\t\t\tmediaView.$el.toggleClass( 'highlighted' );\n\t\t\t\t\t\tthis.model.get( 'media-collection-view' ).$el.toggleClass( 'menu-visible' );\n\t\t\t\t\t\twpbc.broadcast.trigger( 'toggle:insertButton' );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.clearPreview();\n\t\t\t\t\t\tthis.detailsView = new MediaDetailsView( {model : mediaView.model, el : $( '.brightcove.media-frame-menu' ), mediaType : this.model.get( 'mediaType' )} );\n\t\t\t\t\t\tthis.registerSubview( this.detailsView );\n\n\t\t\t\t\t\tthis.detailsView.render();\n\t\t\t\t\t\tthis.detailsView.$el.toggle( true ); // Always show new view\n\t\t\t\t\t\tthis.model.get( 'media-collection-view' ).$el.addClass( 'menu-visible' );\n\t\t\t\t\t\tmediaView.$el.addClass( 'highlighted' );\n\t\t\t\t\t\twpbc.broadcast.trigger( 'toggle:insertButton', 'enabled' );\n\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\n\t\t},\n\n\t\t/**\n\t\t * Clear the preview view and remove highlighted class from previous\n\t\t * selected video.\n\t\t */\n\t\tclearPreview : function () {\n\n\t\t\tvar messages = $('.brightcove-message');\n\t\t\tmessages.addClass('hidden');\n\n\t\t\tif ( this.detailsView instanceof MediaDetailsView ) {\n\t\t\t\tthis.detailsView.remove();\n\t\t\t}\n\n\t\t\tthis.model.get( 'media-collection-view' ).$el.find( '.highlighted' ).removeClass( 'highlighted' );\n\n\t\t},\n\n\t\tstartGridView : function () {\n\n\t\t\tthis.model.set( 'mode', 'manager' );\n\t\t\tthis.render();\n\n\t\t},\n\n\t\tmessage : function ( message, type, permanent ) {\n\n\t\t\tvar messages = this.$el.find( '.brightcove-message' );\n\n\t\t\tif ( 'success' === type ) {\n\n\t\t\t\tmessages.addClass( 'updated' );\n\t\t\t\tmessages.removeClass( 'error' );\n\n\t\t\t} else if ( 'error' === type ) {\n\n\t\t\t\tmessages.addClass( 'error' );\n\t\t\t\tmessages.removeClass( 'updated' );\n\n\t\t\t}\n\n\t\t\tvar newMessage = $( '<p></p>' );\n\t\t\tnewMessage.text( message );\n\n\t\t\tmessages.html( newMessage );\n\t\t\tmessages.removeClass( 'hidden' );\n\n\t\t\tif ( permanent ) {\n\n\t\t\t\tif ( wpbc.permanentMessage ) {\n\t\t\t\t\twpbc.permanentMessage.remove();\n\t\t\t\t}\n\n\t\t\t\twpbc.permanentMessage = newMessage;\n\n\t\t\t} else {\n\t\t\t\t// Make the notice dismissable.\n\t\t\t\tmessages.addClass( 'notice is-dismissible' );\n\t\t\t\tthis.makeNoticesDismissible();\n\t\t\t}\n\t\t\t$('html, body').animate({scrollTop: 0}, 'fast')\n\n\t\t},\n\n\t\t// Make notices dismissible, mimics core function, fades them empties.\n\t\tmakeNoticesDismissible : function() {\n\t\t\t$( '.notice.is-dismissible' ).each( function() {\n\t\t\t\tvar $el = $( this ),\n\t\t\t\t\t$button = $( '<button type=\"button\" class=\"notice-dismiss\"><span class=\"screen-reader-text\"></span></button>' ),\n\t\t\t\t\tbtnText = commonL10n.dismiss || '';\n\n\t\t\t\t// Ensure plain text\n\t\t\t\t$button.find( '.screen-reader-text' ).text( btnText );\n\t\t\t\t$button.on( 'click.wp-dismiss-notice', function( event ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t$el.fadeTo( 100, 0, function() {\n\t\t\t\t\t\t$el.slideUp( 100, function() {\n\t\t\t\t\t\t\t$el.addClass( 'hidden' )\n\t\t\t\t\t\t\t\t.css( {\n\t\t\t\t\t\t\t\t\t'opacity': 1,\n\t\t\t\t\t\t\t\t\t'margin-bottom': 0,\n\t\t\t\t\t\t\t\t\t'display': ''\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t.empty();\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\t$el.append( $button );\n\t\t\t});\n\t\t},\n\n\t\tshowUploader : function () {\n\n\t\t\tthis.model.set( 'mode', 'uploader' );\n\t\t\tthis.render();\n\n\t\t},\n\n\t\tpermanentMessage : function ( message ) {\n\t\t\tthis.message( message, 'error', true );\n\t\t},\n\n\t\trender : function () {\n\n\t\t\tvar options = this.model.get( 'options' );\n\t\t\tvar contentContainer;\n\n\t\t\tvar mode = this.model.get( 'mode' );\n\n\t\t\t// Nuke all registered subviews\n\t\t\t_.invoke( this.subviews, 'remove' );\n\n\t\t\tif ( 'uploader' === mode ) {\n\n\t\t\t\tthis.template = wp.template( 'brightcove-uploader-container' );\n\n\t\t\t\tthis.$el.empty();\n\t\t\t\tthis.$el.html( this.template( options ) );\n\t\t\t\tthis.uploader.render();\n\t\t\t\tthis.uploader.delegateEvents();\n\t\t\t\tthis.uploader.$el.appendTo( $( '.brightcove-uploader' ) );\n\n\t\t\t} else if ( 'manager' === mode ) {\n\n\t\t\t\tthis.template = wp.template( 'brightcove-media' );\n\n\t\t\t\tthis.$el.html( this.template( options ) );\n\t\t\t\tthis.toolbar.render();\n\t\t\t\tthis.toolbar.delegateEvents();\n\t\t\t\tthis.toolbar.$el.show();\n\t\t\t\tthis.toolbar.$el.appendTo( this.$el.find( '.media-frame-router' ) );\n\n\t\t\t\t// Add the Media views to the media manager\n\t\t\t\tvar mediaCollectionView = this.model.get( 'media-collection-view' );\n\n\t\t\t\tmediaCollectionView.render();\n\t\t\t\tmediaCollectionView.delegateEvents();\n\n\t\t\t\tvar mediaCollectionContainer = this.$el.find( '.media-frame-content' );\n\n\t\t\t\tmediaCollectionContainer.on( 'scroll', this.scrollHandler );\n\t\t\t\tmediaCollectionView.$el.appendTo( mediaCollectionContainer );\n\n\t\t\t\tif ( ! ! wpbc.initialSync ) {\n\n\t\t\t\t\twpbc.broadcast.trigger( 'remove:permanentMessage' );\n\t\t\t\t\twpbc.broadcast.trigger( 'permanent:message', wpbc.preload.messages.ongoingSync );\n\n\t\t\t\t}\n\t\t\t\tif ( 'videoexperience' === this.model.get( 'mediaType' ) ) {\n\t\t\t\t\tthis.detailsView = new MediaDetailsView( {\n\t\t\t\t\t\tmodel : new MediaModel( this.model.attributes ),\n\t\t\t\t\t\tel : $( '.brightcove.media-frame-menu' ),\n\t\t\t\t\t\tmediaType : this.model.get( 'mediaType' )\n\t\t\t\t\t} );\n\t\t\t\t\tthis.registerSubview( this.detailsView );\n\n\t\t\t\t\tthis.detailsView.render();\n\t\t\t\t\tthis.detailsView.$el.toggle( true ); // Always show new view\n          wpbc.broadcast.trigger( 'toggle:insertButton', 'enabled' );\n\t\t\t\t\tthis.model.get( 'media-collection-view' ).$el.addClass( 'menu-visible' );\n\t\t\t\t}\n\t\t\t} else if ( 'editVideo' === mode ) {\n\n\t\t\t\tthis.toolbar.$el.hide();\n\n\t\t\t\tcontentContainer = this.$el.find( '.media-frame-content' );\n\n\t\t\t\tcontentContainer.empty();\n\t\t\t\tthis.editView.render();\n\t\t\t\tthis.editView.delegateEvents();\n\t\t\t\tthis.editView.$el.appendTo( contentContainer );\n\t\t\t\tthis.$el.find( '.brightcove.media-frame-content' ).addClass( 'edit-view' );\n\n\t\t\t} else if ( 'editPlaylist' === mode ) {\n\n\t\t\t\tthis.toolbar.$el.hide();\n\n\t\t\t\tcontentContainer = this.$el;\n\n\t\t\t\tcontentContainer.empty();\n\t\t\t\tcontentContainer.html( '<div class=\"playlist-edit-container\"></div>' );\n\n\t\t\t\tcontentContainer = contentContainer.find( '.playlist-edit-container' );\n\n\t\t\t\tthis.editView.render();\n\t\t\t\tthis.editView.delegateEvents();\n\t\t\t\tthis.editView.$el.appendTo( contentContainer );\n\t\t\t\tcontentContainer.addClass( 'playlist' );\n\n\t\t\t} else if ( 'previewVideo' === mode ) {\n\n\t\t\t\tthis.toolbar.$el.hide();\n\n\t\t\t\tcontentContainer = this.$el.find( '.media-frame-content' );\n\n\t\t\t\tcontentContainer.empty();\n\t\t\t\tthis.previewView.render();\n\t\t\t\tthis.detailsView.render( {detailsMode : 'preview'} );\n\t\t\t\tthis.previewView.delegateEvents();\n\t\t\t\tthis.previewView.$el.appendTo( contentContainer );\n\t\t\t\tthis.$el.find( '.brightcove.media-frame-toolbar' ).hide();\n\t\t\t\tbrightcove.createExperiences();\n\n\t\t\t}\n\n\t\t\tif ( 'editPlaylist' !== mode ) {\n\t\t\t\tthis.$el.find( '.media-frame-content' ).removeClass( 'playlist' );\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t}\n);\n","var BrightcoveModalView = BrightcoveView.extend(\n\t{\n\t\ttagName :   'div',\n\t\tclassName : 'media-modal brightcove',\n\t\ttemplate :  wp.template( 'brightcove-media-modal' ),\n\n\t\tevents : {\n\t\t\t'click .brightcove.media-menu-item'     : 'changeTab',\n\t\t\t'click .brightcove.media-button-insert' : 'insertIntoPost',\n\t\t\t'click .media-modal-close'              : 'closeModal',\n\t\t\t'click .brightcove.save-sync'           : 'saveSync',\n\t\t\t'click .brightcove.button.back'         : 'back'\n\t\t},\n\n\t\tinitialize : function ( options ) {\n\t\t\tthis.model                  = new BrightcoveModalModel( {tab : options.tab} );\n\t\t\tthis.brightcoveMediaManager = new BrightcoveMediaManagerView( this.model.getMediaManagerSettings() );\n\t\t\tthis.registerSubview( this.brightcoveMediaManager );\n\t\t\tthis.listenTo( wpbc.broadcast, 'toggle:insertButton', function ( state ) {\n\t\t\t\tthis.toggleInsertButton( state );\n\t\t\t} );\n\t\t\tthis.listenTo( wpbc.broadcast, 'close:modal', this.closeModal );\n\t\t},\n\n\t\tsaveSync : function( evnt ) {\n\t\t\t// This event is triggered when the \"Save and Sync Changes\" button is clicked from edit video screen.\n\t\t\twpbc.broadcast.trigger( 'save:media', evnt );\n\t\t},\n\n\t\tback : function( evnt ) {\n\t\t\t// This event is triggered when the \"Back\" button is clicked from edit video screen.\n\t\t\twpbc.broadcast.trigger( 'back:editvideo', evnt );\n\t\t},\n\n\t\tinsertIntoPost : function ( evnt ) {\n\t\t\tevnt.preventDefault();\n\n\t\t\t// Exit if the 'button' is disabled.\n\t\t\tif ( $( evnt.currentTarget ).hasClass( 'disabled' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\twpbc.shortcode = $( '#shortcode' ).val();\n\n\t\t\t// Media Details will trigger the insertion since it's always active and contains\n\t\t\t// the model we're inserting\n\t\t\twpbc.broadcast.trigger( 'insert:shortcode' );\n\t\t},\n\n\t\ttoggleInsertButton : function ( state ) {\n\t\t\tvar button     = this.$el.find( '.brightcove.media-button-insert' ),\n\t\t\t\tprocessing = $('.attachment.highlighted' ).find( '.processing' ).length;\n\n\t\t\tbutton.show();\n\n\t\t\tif ( 1 === processing ) {\n\t\t\t\tbutton.attr( 'disabled', 'disabled' );\n\t\t\t} else if ( 'enabled' === state ) {\n\t\t\t\tbutton.removeAttr( 'disabled' );\n\t\t\t} else if ( 'disabled' === state ) {\n\t\t\t\tbutton.attr( 'disabled', 'disabled' );\n\t\t\t} else if ( undefined !== button.attr( 'disabled' ) ) {\n\t\t\t\tbutton.removeAttr( 'disabled' );\n\t\t\t} else {\n\t\t\t\tbutton.attr( 'disabled', 'disabled' );\n\t\t\t}\n\t\t},\n\n\t\tchangeTab : function ( event ) {\n\t\t\tevent.preventDefault();\n\n\t\t\tif ( $( event.target ).hasClass( 'active' ) ) {\n\t\t\t\treturn; // Clicking the already active tab\n\t\t\t}\n\t\t\t$( event.target ).addClass( 'active' );\n\t\t\tvar tab  = _.without( event.target.classList, 'media-menu-item', 'brightcove' )[0];\n\t\t\tvar tabs = ['videos', 'upload', 'playlists', 'video-experience', 'playlist-experience'];\n\t\t\t_.each( _.without( tabs, tab ), function ( otherTab ) {\n\t\t\t\t$( '.brightcove.media-menu-item.' + otherTab ).removeClass( 'active' );\n\t\t\t} );\n\n\t\t\tif ( _.contains( tabs, tab ) ) {\n\t\t\t\tthis.model.set( 'tab', tab );\n\t\t\t\twpbc.broadcast.trigger( 'spinner:off' );\n\t\t\t\twpbc.broadcast.trigger( 'tabChange', this.model.getMediaManagerSettings() );\n\t\t\t}\n\n\t\t},\n\n\t\tcloseModal : function ( evnt ) {\n\n\t\t\t// If we are in the editVideo mode, switch back to the video view.\n\t\t\tif ( 'editVideo' === wpbc.modal.brightcoveMediaManager.model.get('mode') ) {\n\t\t\t\twpbc.broadcast.trigger( 'start:gridview' );\n\t\t\t}\n\n\t\t\t// Exit if the container button is disabled.\n\t\t\tif ( ! _.isUndefined( evnt ) && $( evnt.currentTarget ).parent().hasClass( 'disabled' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.$el.hide();\n\t\t\t$( 'body' ).removeClass( 'modal-open' );\n\t\t},\n\n\t\tmessage : function ( message ) {\n\t\t\tvar messageContainer = this.$el.find( '.brightcove-message' );\n\n\t\t},\n\n\t\trender : function ( options ) {\n\t\t\tthis.$el.html( this.template( options ) );\n\n\t\t\tthis.brightcoveMediaManager.render();\n\t\t\tthis.brightcoveMediaManager.$el.appendTo( this.$el.find( '.media-frame-content' ) );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'edit:media', function( model, mediaType ) {\n\t\t\t\tif ( 'videos' === mediaType ) {\n\t\t\t\t\t// When edit Video screen is opened, hide the \"Insert Into Post\" button and show video save button.\n\t\t\t\t\tthis.$el.find( '.brightcove.button.save-sync' ).show();\n\t\t\t\t\tthis.$el.find( '.brightcove.button.back' ).show();\n\t\t\t\t\tthis.$el.find( '.brightcove.media-button-insert' ).hide();\n\t\t\t\t} else {\n\t\t\t\t\t// When edit playlist screen is opened, hide all the buttons.\n\t\t\t\t\tthis.$el.find( '.brightcove.button.save-sync' ).hide();\n\t\t\t\t\tthis.$el.find( '.brightcove.button.back' ).hide();\n\t\t\t\t\tthis.$el.find( '.brightcove.media-button-insert' ).hide();\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'save:media back:editvideo start:gridView', function() {\n\t\t\t\tthis.$el.find( '.brightcove.button.save-sync' ).hide();\n\t\t\t\tthis.$el.find( '.brightcove.button.back' ).hide();\n\t\t\t\tthis.$el.find( '.brightcove.media-button-insert' ).show();\n\t\t\t\twpbc.broadcast.trigger( 'toggle:insertButton' );\n\t\t\t} );\n\t\t}\n\n\t}\n);\n\n","var MediaDetailsView = BrightcoveView.extend(\n\t{\n\t\ttagName :   'div',\n\t\tclassName : 'media-details',\n\n\t\tattributes : function () {\n\t\t\treturn {\n\t\t\t\t'tabIndex' :     0,\n\t\t\t\t'role' :         'checkbox',\n\t\t\t\t'aria-label' :   this.model.get( 'title' ),\n\t\t\t\t'aria-checked' : false,\n\t\t\t\t'data-id' :      this.model.get( 'id' )\n\t\t\t};\n\t\t},\n\n\t\tevents : {\n\t\t\t'click .brightcove.edit.button' :    'triggerEditMedia',\n\t\t\t'click .brightcove.preview.button' : 'triggerPreviewMedia',\n\t\t\t'click .brightcove.back.button' :    'triggerCancelPreviewMedia',\n\t\t\t'click .playlist-details input[name=\"embed-style\"]' :  'togglePlaylistSizing',\n            'change #aspect-ratio' : 'toggleUnits',\n            'change .experience-details input[name=\"sizing\"],.experience-details input[name=\"embed-style\"]' : 'toggleExperienceUnits',\n            'change #video-player, #autoplay, #mute, input[name=\"embed-style\"], input[name=\"sizing\"], #aspect-ratio, #width, #height' : 'generateShortcode',\n\t\t\t'change #generate-shortcode' : 'toggleShortcodeGeneration',\n\t\t},\n\n\t\ttriggerEditMedia : function ( event ) {\n\t\t\tevent.preventDefault();\n\t\t\twpbc.broadcast.trigger( 'edit:media', this.model, this.mediaType );\n\t\t},\n\n\t\ttriggerPreviewMedia : function ( event ) {\n\t\t\tevent.preventDefault();\n\t\t\tvar shortcode = $( '#shortcode' ).val();\n\t\t\twpbc.broadcast.trigger( 'preview:media', this.model, shortcode );\n\t\t},\n\n\t\ttriggerCancelPreviewMedia : function ( event ) {\n\t\t\twpbc.broadcast.trigger( 'cancelPreview:media', this.mediaType );\n\t\t},\n\n\t\ttogglePlaylistSizing: function( event ) {\n\t\t\tvar embedStyle = $( '.playlist-details input[name=\"embed-style\"]:checked' ).val(),\n\t\t\t\t$sizing = $( '#sizing-fixed, #sizing-responsive' );\n\n\t\t\tif ( 'iframe' === embedStyle ) {\n\t\t\t\t$sizing.removeAttr( 'disabled' );\n\t\t\t} else {\n\t\t\t\t$sizing.attr( 'disabled', true );\n\t\t\t}\n\t\t},\n\n\t\ttoggleUnits: function( event ) {\n\t\t\tvar value = $( '#aspect-ratio' ).val();\n\n\t\t\tif ( 'custom' === value ) {\n\t\t\t\t$( '#height' ).removeAttr( 'readonly' );\n\t\t\t} else {\n\t\t\t\tvar $height = $( '#height' ),\n\t\t\t\t\twidth = $( '#width' ).val();\n\n\t\t\t\t$height.attr( 'readonly', true );\n\n\t\t\t\tif ( width > 0 ) {\n\t\t\t\t\tif ( '16:9' === value ) {\n\t\t\t\t\t\t$height.val( width/( 16/9 ) );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$height.val( width/( 4/3 ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n    toggleExperienceUnits: function( event ) {\n      var $sizingField=$( 'input[name=\"sizing\"]:checked' );\n      var $sizing = $sizingField.val();\n      var $embedStyle = $( 'input[name=\"embed-style\"]:checked' ).val();\n      var $height = $( '#height' );\n      var $width = $( '#width' );\n      var $inputSizing = $( 'input[name=\"sizing\"]' );\n      var $sizingDiv = $('.embed-sizing-div');\n\n      $height.removeAttr('readonly');\n      $width.removeAttr('readonly');\n      $sizingField.show();\n      $sizingDiv.show();\n\n      if ( 'responsive' === $sizing && 'javascript' === $embedStyle ) {\n        $height.attr('readonly', true);\n      }\n      else if ( 'fixed' === $sizing && 'javascript' === $embedStyle ) {\n        $height.removeAttr('readonly');\n        $width.removeAttr('readonly');\n      }\n      else {\n      \t$inputSizing.attr('checked',false);\n        $('#sizing-fixed').attr('checked', true);\n        $sizingDiv.hide();\n      }\n\n    },\n\n\t\tgenerateShortcode: function () {\n\t\t\tswitch (this.mediaType){\n\t\t\t\tcase 'videos':\n\t\t\t\t\tthis.generateVideoShortcode();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'videoexperience':\n\t\t\t\t\tthis.generateExperienceShortcode();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'playlistexperience':\n\t\t\t\t\tthis.generatePlaylistExperienceShortcode();\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.generatePlaylistShortcode();\n\t\t\t}\n\t\t},\n\n\t\tgenerateVideoShortcode: function () {\n\t\t\tvar videoId = this.model.get( 'id' ).replace( /\\D/g, '' ),\n\t\t\t\taccountId = this.model.get( 'account_id' ).replace( /\\D/g, '' ),\n\t\t\t\tplayerId = $( '#video-player' ).val(),\n\t\t\t\tautoplay = ( $( '#autoplay' ).is( ':checked' ) ) ? 'autoplay': '',\n\t\t\t\tmute = ( $( '#mute' ).is( ':checked' ) ) ? 'muted': '',\n\t\t\t\tembedStyle = $( 'input[name=\"embed-style\"]:checked' ).val(),\n\t\t\t\tsizing = $( 'input[name=\"sizing\"]:checked' ).val(),\n\t\t\t\taspectRatio = $( '#aspect-ratio' ).val(),\n\t\t\t\tpaddingTop = '',\n\t\t\t\twidth = $( '#width' ).val(),\n\t\t\t\theight = $( '#height' ).val(),\n\t\t\t\tunits = 'px',\n\t\t\t\tminWidth = '0px',\n\t\t\t\tmaxWidth = width + units,\n\t\t\t\tshortcode;\n\n\t\t\tif ( '16:9' === aspectRatio ) {\n\t\t\t\tpaddingTop = '56';\n\t\t\t} else if ( '4:3' === aspectRatio ) {\n\t\t\t\tpaddingTop = '75';\n\t\t\t} else {\n\t\t\t\tpaddingTop = ( ( height / width ) * 100 );\n\t\t\t}\n\n\t\t\tif ( 'responsive' === sizing ) {\n\t\t\t\twidth = '100%';\n\t\t\t\theight = '100%';\n\t\t\t} else {\n\t\t\t\twidth = width + units;\n\t\t\t\theight = height + units;\n\n\t\t\t\tif ( 'iframe' === embedStyle ) {\n\t\t\t\t\tminWidth = width;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tshortcode = '[bc_video video_id=\"' + videoId + '\" account_id=\"' + accountId + '\" player_id=\"' + playerId + '\" ' +\n\t\t\t\t'embed=\"' + embedStyle + '\" padding_top=\"' + paddingTop + '%\" autoplay=\"' + autoplay + '\" ' +\n\t\t\t\t'min_width=\"' + minWidth + '\" max_width=\"' + maxWidth + '\" ' +\n\t\t\t\t'mute=\"' + mute + '\" width=\"' + width + '\" height=\"' + height + '\"' +\n\t\t\t\t' ]';\n\n\t\t\t$( '#shortcode' ).val( shortcode );\n\t\t},\n\t\tgenerateExperienceShortcode: function () {\n\t\t\tvar videoIds, accountId;\n\t\t\tif ( 'undefined' !== typeof this.model.get( 'id' ) ) {\n        this.model.set( 'account_id', this.model.get( 'account' ) );\n        videoIds = this.model.get( 'id' ).join( ',' );\n        accountId = this.model.get( 'account_id' ).replace( /\\D/g, '' );\n\t\t\t} else {\n        videoIds = '';\n        accountId = document.getElementById( 'brightcove-media-source' ).value;\n\t\t\t}\n\n\t\t\tvar experienceId = $( '#video-player' ).val(),\n\t\t\tembedStyle = $( 'input[name=\"embed-style\"]:checked' ).val(),\n\t\t\tsizing = $( 'input[name=\"sizing\"]:checked' ).val(),\n\t\t\twidth = $( '#width' ).val(),\n\t\t\theight = $( '#height' ).val(),\n\t\t\tunits = 'px',\n\t\t\tminWidth = '0px',\n\t\t\tmaxWidth = width + units,\n\t\t\tshortcode;\n\n\n\t\t\tif ( 'responsive' === sizing ) {\n\t\t\t\twidth = '100%';\n\t\t\t\theight = '100%';\n\t\t\t} else {\n\t\t\t\twidth = width + units;\n\t\t\t\theight = height + units;\n\n\t\t\tif ( 'iframe' === embedStyle ) {\n\t\t\t\tminWidth = width;\n\t\t\t}\n\t\t}\n\n\t\tshortcode = '[bc_experience experience_id=\"' + experienceId + '\" account_id=\"' + accountId + '\" ' +\n\t\t'embed=\"' + embedStyle + '\" min_width=\"' + minWidth + '\" max_width=\"' + maxWidth + '\" ' +\n\t\t'width=\"' + width + '\" height=\"' + height + '\" ' +\n\t\t'video_ids=\"' + videoIds + '\" ' +\n\t\t' ]';\n\n\t\t$( '#shortcode' ).val( shortcode );\n\t\t},\n\n\n\t\tgeneratePlaylistShortcode: function () {\n\t\t    var playlistId = this.model.get( 'id' ).replace( /\\D/g, '' ),\n\t\t\t\taccountId = this.model.get( 'account_id' ).replace( /\\D/g, '' ),\n\t\t\t\tplayerId = $( '#video-player' ).val(),\n\t\t\t\tautoplay = ( $( '#autoplay' ).is( ':checked' ) ) ? 'autoplay': '',\n\t\t\t\tmute = ( $( '#mute' ).is( ':checked' ) ) ? 'muted': '',\n\t\t\t\tembedStyle = $( 'input[name=\"embed-style\"]:checked' ).val(),\n\t\t\t\tsizing = $( 'input[name=\"sizing\"]:checked' ).val(),\n\t\t\t\taspectRatio = $( '#aspect-ratio' ).val(),\n\t\t\t\tpaddingTop = '',\n\t\t\t\twidth = $( '#width' ).val(),\n\t\t\t\theight = $( '#height' ).val(),\n\t\t\t    units = 'px',\n\t\t\t    minWidth = '0px;',\n\t\t\t    maxWidth = width + units,\n\t\t\t\tshortcode;\n\n\t\t    if ( 'in-page-vertical' === embedStyle ) {\n\t\t\t    shortcode = '[bc_playlist playlist_id=\"' + playlistId + '\" account_id=\"' + accountId + '\" player_id=\"' + playerId + '\" ' +\n\t\t\t\t    'embed=\"in-page-vertical\" autoplay=\"' + autoplay + '\" mute=\"' + mute + '\" ' +\n\t\t\t\t    'min_width=\"\" max_width=\"\" padding_top=\"\" ' +\n\t\t\t\t    'width=\"' + width + units + '\" height=\"' + height + units + '\"' +\n\t\t\t\t    ' ]';\n\t\t    } else if ( 'in-page-horizontal' === embedStyle ) {\n\t\t\t    shortcode = '[bc_playlist playlist_id=\"' + playlistId + '\" account_id=\"' + accountId + '\" player_id=\"' + playerId + '\" ' +\n\t\t\t\t    'embed=\"in-page-horizontal\" autoplay=\"' + autoplay + '\" mute=\"' + mute + '\" ' +\n\t\t\t\t    'min_width=\"\" max_width=\"\" padding_top=\"\" ' +\n\t\t\t\t    'width=\"' + width + units + '\" height=\"' + height + units + '\"' +\n\t\t\t\t    ' ]';\n\t\t    } else if ( 'iframe' === embedStyle ) {\n\t\t\t    if ( '16:9' === aspectRatio ) {\n\t\t\t\t    paddingTop = '56';\n\t\t\t    } else if ( '4:3' === aspectRatio ) {\n\t\t\t\t    paddingTop = '75';\n\t\t\t    } else {\n\t\t\t\t    paddingTop = ( ( height / width ) * 100 );\n\t\t\t    }\n\n\t\t\t    if ( 'responsive' === sizing ) {\n\t\t\t\t    width = '100%';\n\t\t\t\t    height = '100%';\n\t\t\t    } else {\n\t\t\t    \twidth = width + units;\n\t\t\t    \theight = height + units;\n\n\t\t\t\t\tminWidth = width;\n\t\t\t    }\n\n\t\t\t    shortcode = '[bc_playlist playlist_id=\"' + playlistId + '\" account_id=\"' + accountId + '\" player_id=\"' + playerId + '\" ' +\n\t\t\t\t    'embed=\"iframe\" autoplay=\"' + autoplay + '\" mute=\"' + mute + '\" ' +\n\t\t\t\t    'min_width=\"' + minWidth + '\" max_width=\"' + maxWidth + '\" padding_top=\"' + paddingTop + '%\" ' +\n\t\t\t\t    'width=\"' + width + '\" height=\"' + height + '\"' +\n\t\t\t\t    ' ]';\n\t\t    }\n\n\t\t    $( '#shortcode' ).val( shortcode );\n        },\n\t\tgeneratePlaylistExperienceShortcode:function () {\n      var playlistId = this.model.get( 'id' ).replace( /\\D/g, '' ),\n          accountId = this.model.get( 'account_id' ).replace( /\\D/g, '' ),\n          experienceId = $( '#video-player' ).val(),\n          embedStyle = $( 'input[name=\"embed-style\"]:checked' ).val(),\n          sizing = $( 'input[name=\"sizing\"]:checked' ).val(),\n          width = $( '#width' ).val(),\n          height = $( '#height' ).val(),\n          units = 'px',\n          minWidth = '0px',\n          maxWidth = width + units,\n          shortcode;\n\n\n      if ( 'responsive' === sizing ) {\n        width = '100%';\n        height = '100%';\n      } else {\n        width = width + units;\n        height = height + units;\n\n        if ( 'iframe' === embedStyle ) {\n          minWidth = width;\n        }\n      }\n\n      shortcode = '[bc_experience experience_id=\"' + experienceId + '\" account_id=\"' + accountId + '\" ' +\n          'embed=\"' + embedStyle + '\" min_width=\"' + minWidth + '\" max_width=\"' + maxWidth + '\" ' +\n          'width=\"' + width + '\" height=\"' + height + '\" ' +\n          'playlist_id=\"' + playlistId + '\" ' +\n          ' ]';\n\n      $( '#shortcode' ).val( shortcode );\n    },\n\n\t\ttoggleShortcodeGeneration: function () {\n\t\t    var method = $( '#generate-shortcode' ).val(),\n                $fields = $( '#video-player, #autoplay, input[name=\"embed-style\"], input[name=\"sizing\"], #aspect-ratio, #width, #height, #units' );\n\n\t\t    if ( 'manual' === method ) {\n\t\t    \t$( '#shortcode' ).removeAttr( 'readonly' );\n                $fields.attr( 'disabled', true );\n\t\t\t} else {\n                $( '#shortcode' ).attr( 'readonly', true );\n                $fields.removeAttr( 'disabled' );\n\t\t\t}\n        },\n\n\t\tinitialize : function ( options ) {\n\t\t\toptions        = options || {};\n\t\t\tthis.type      = options.type ? options.type : 'grid';\n\t\t\tthis.mediaType = options.mediaType;\n\t\t\tthis.listenTo( wpbc.broadcast, 'insert:shortcode', this.insertShortcode );\n\t\t\tthis.listenTo( this.model, 'change', this.render );\n\t\t},\n\n\t\t/**\n\t\t * @returns {wp.media.view.Media} Returns itself to allow chaining\n\t\t */\n\t\trender : function ( options ) {\n\t\t\toptions                     = _.extend( {}, options, this.model.toJSON() );\n\t\t\toptions.duration            = this.model.getReadableDuration();\n\t\t\toptions.updated_at_readable = this.model.getReadableDate( 'updated_at' );\n\t\t\toptions.created_at_readable = this.model.getReadableDate( 'created_at' );\n\t\t\toptions.account_name        = this.model.getAccountName();\n\n\t\t\tthis.template = wp.template( 'brightcove-media-item-details-' + this.mediaType );\n\n\t\t\tthis.$el.html( this.template( options ) );\n\n\t\t\tthis.delegateEvents();\n\t\t\tthis.generateShortcode();\n\n\t\t\treturn this;\n\t\t},\n\n\t\t/* Prevent this.remove() from removing the container element for the details view */\n\t\tremove : function () {\n\t\t\tthis.undelegateEvents();\n\t\t\tthis.$el.empty();\n\t\t\tthis.stopListening();\n\t\t\treturn this;\n\t\t}\n\t}\n);\n\n","var MediaView = BrightcoveView.extend(\n\t{\n\t\ttagName :   'li',\n\t\tclassName : 'attachment brightcove',\n\n\t\tattributes : function () {\n\t\t\treturn {\n\t\t\t\t'tabIndex' :     0,\n\t\t\t\t'role' :         'checkbox',\n\t\t\t\t'aria-label' :   this.model.get( 'title' ),\n\t\t\t\t'aria-checked' : false,\n\t\t\t\t'data-id' :      this.model.get( 'id' )\n\t\t\t};\n\t\t},\n\n\t\tevents : {\n\t\t\t'click .attachment-preview' : 'toggleDetailView',\n\t\t\t'click .video-move-up' :      'videoMoveUp',\n\t\t\t'click .video-move-down' :    'videoMoveDown',\n\t\t\t'click .trash' :              'removeVideoFromPlaylist',\n\t\t\t'click .add-to-playlist' :    'videoAdd',\n\t\t\t'click .edit' :               'triggerEditMedia',\n\t\t\t'click .preview' :            'triggerPreviewMedia'\n\t\t},\n\n\t\ttriggerEditMedia : function ( event ) {\n\t\t\tevent.preventDefault();\n\t\t\twpbc.broadcast.trigger( 'edit:media', this.model );\n\t\t},\n\n\t\ttriggerPreviewMedia : function ( event ) {\n\t\t\tevent.preventDefault();\n\t\t\twpbc.broadcast.trigger( 'preview:media', this.model );\n\t\t},\n\n\t\tbuttons : {},\n\n\t\tinitialize : function ( options ) {\n\t\t\toptions   = options || {};\n\t\t\tthis.type = options.type ? options.type : 'grid';\n\n\t\t\t// We only care when a change occurs\n\t\t\tthis.listenTo( this.model, 'change:view', function ( model, type ) {\n\t\t\t\tif ( this.type !== type ) {\n\t\t\t\t\tthis.type = type;\n\t\t\t\t\tthis.render();\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthis.render();\n\t\t},\n\n\t\trender : function () {\n\t\t\tvar options                 = this.model.toJSON();\n\t\t\toptions.duration            = this.model.getReadableDuration();\n\t\t\toptions.updated_at_readable = this.model.getReadableDate( 'updated_at' );\n\t\t\toptions.account_name        = this.model.getAccountName();\n\n\t\t\tif ( 'existingPlaylists' === options.viewType ) {\n\t\t\t\tthis.template = wp.template( 'brightcove-playlist-edit-video-in-playlist' );\n\t\t\t} else if ( 'libraryPlaylists' === options.viewType ) {\n\t\t\t\tthis.template = wp.template( 'brightcove-playlist-edit-video-in-library' );\n\t\t\t} else {\n\t\t\t\tthis.template = wp.template( 'brightcove-media-item-' + this.type );\n\t\t\t}\n\n\t\t\toptions.buttons = this.buttons;\n\n\t\t\tthis.$el.html( this.template( options ) );\n\n\t\t\tthis.$el.toggleClass( 'uploading', options.uploading );\n\n\t\t\treturn this;\n\t\t},\n\n\t\ttoggleDetailView : function () {\n\t\t\twpbc.broadcast.trigger( 'select:media', this );\n\t\t},\n\n\t\tvideoMoveUp : function () {\n\t\t\twpbc.broadcast.trigger( 'playlist:moveUp', this );\n\t\t},\n\n\t\tvideoMoveDown : function () {\n\t\t\twpbc.broadcast.trigger( 'playlist:moveDown', this );\n\t\t},\n\n\t\tvideoAdd : function () {\n\t\t\twpbc.broadcast.trigger( 'playlist:add', this );\n\t\t},\n\n\t\tremoveVideoFromPlaylist : function () {\n\t\t\twpbc.broadcast.trigger( 'playlist:remove', this );\n\t\t}\n\t}\n);\n","var PlaylistEditView = BrightcoveView.extend(\n\t{\n\t\ttagName :   'div',\n\t\tclassName : 'playlist-edit brightcove attachment-details',\n\t\ttemplate :  wp.template( 'brightcove-playlist-edit' ),\n\n\t\tevents : {\n\t\t\t'click .brightcove.button.save-sync' : 'saveSync',\n\t\t\t'click .brightcove.playlist-back' :    'back',\n\t\t\t'change .brightcove-name' :            'updatedName'\n\t\t},\n\n\t\tdeleteVideo : function ( event ) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.model.set( 'mediaType', 'videos' );\n\t\t\tthis.model.destroy();\n\t\t},\n\n\t\tupdatedName : function ( event ) {\n\t\t\tvar name = this.model.get( 'name' );\n\t\t\tif ( name !== event.target.value ) {\n\t\t\t\tthis.model.set( 'name', event.target.value );\n\t\t\t\tthis.model.save();\n\t\t\t}\n\t\t},\n\n\t\tback : function ( event ) {\n\t\t\tevent.preventDefault();\n\t\t\twpbc.broadcast.trigger( 'start:gridview' );\n\n\t\t},\n\n\t\tsaveSync : function ( event ) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.model.set( 'name', this.$el.find( '.brightcove-name' ).val() );\n\t\t\tthis.model.set( 'description', this.$el.find( '.brightcove-description' ).val() );\n\t\t\tthis.model.set( 'long_description', this.$el.find( '.brightcove-long-description' ).val() );\n\t\t\tthis.model.set( 'tags', this.$el.find( '.brightcove-tags' ).val() );\n\t\t\tthis.model.set( 'mediaType', 'videos' );\n\t\t\tthis.model.save();\n\t\t},\n\n\t\tinitialize : function () {\n\t\t\tthis.listenTo( wpbc.broadcast, 'tabChange', function () {\n\t\t\t\t_.invoke( this.subviews, 'remove' );\n\t\t\t} );\n\t\t\twpbc.broadcast.trigger( 'spinner:off' );\n\t\t},\n\n\t\trender : function ( options ) {\n\t\t\toptions = this.model.toJSON();\n\t\t\tthis.$el.html( this.template( options ) );\n\t\t\tthis.spinner = this.$el.find( '.spinner' );\n\n\t\t\tif ( options.video_ids ) {\n\t\t\t\tthis.killPendingRequests();\n\n\t\t\t\tthis.playlistVideosView = new MediaCollectionView( {\n\t\t\t\t\tel : this.$el.find( '.existing-videos' ),\n\t\t\t\t\tvideoIds : options.video_ids,\n\t\t\t\t\tactiveAccount : this.model.get( 'account_id' ),\n\t\t\t\t\tmediaCollectionViewType : 'existingPlaylists',\n\t\t\t\t\tmediaType : 'playlists'\n\t\t\t\t} );\n\n\t\t\t\tthis.libraryVideosView  = new MediaCollectionView( {\n\t\t\t\t\tel : this.$el.find( '.library-videos' ),\n\t\t\t\t\texcludeVideoIds : options.video_ids,\n\t\t\t\t\tactiveAccount : this.model.get( 'account_id' ),\n\t\t\t\t\tmediaCollectionViewType : 'libraryPlaylists',\n\t\t\t\t\tmediaType : 'playlists'\n\t\t\t\t} );\n\n\t\t\t\tthis.registerSubview( this.playlistVideosView );\n\t\t\t\tthis.registerSubview( this.libraryVideosView );\n\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'playlist:changed', _.throttle( this.playlistChanged, 300 ) );\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'insert:shortcode', this.insertShortcode );\n\t\t\t}\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'spinner:on', function () {\n\t\t\t\tthis.spinner.addClass( 'is-active' ).removeClass( 'hidden' );\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'spinner:off', function () {\n\t\t\t\tthis.spinner.removeClass( 'is-active' ).addClass( 'hidden' );\n\t\t\t} );\n\t\t},\n\n\t\tplaylistChanged : function ( videoIds ) {\n\t\t\tthis.killPendingRequests();\n\t\t\tthis.model.set( 'video_ids', videoIds );\n\t\t\tthis.model.save();\n\t\t},\n\n\t\tkillPendingRequests : function () {\n\t\t\t// Kill all pending requests\n\t\t\t_.each( wpbc.requests, function ( request ) {\n\t\t\t\trequest.abort();\n\t\t\t} );\n\n\t\t\twpbc.requests = [];\n\t\t}\n\t}\n);\n","var UploadDetailsView = BrightcoveView.extend(\n\t{\n\t\tclassName : 'brightcove-pending-upload-details attachment-details',\n\t\ttagName :   'div',\n\t\ttemplate :  wp.template( 'brightcove-pending-upload-details' ),\n\n\t\tevents : {\n\t\t\t'keyup .brightcove-name' :          'nameChanged',\n\t\t\t'keyup .brightcove-tags' :          'tagsChanged',\n\t\t\t'change .brightcove-media-source' : 'accountChanged'\n\t\t},\n\n\t\tinitialize : function ( options ) {\n\t\t\tthis.listenTo( wpbc.broadcast, 'pendingUpload:hideDetails', this.hide );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:fileUploaded', function ( file ) {\n\t\t\t\tif ( file.id === this.model.get( 'id' ) ) {\n\t\t\t\t\tthis.model.set( 'uploaded', true );\n\t\t\t\t\tthis.render();\n\t\t\t\t}\n\t\t\t} );\n\t\t\tthis.model.set( 'ingestSuccess', true );\n\t\t\tthis.model.set( 'uploadSuccess', true );\n\t\t},\n\n\t\tnameChanged : function ( event ) {\n\t\t\tthis.model.set( 'fileName', event.target.value );\n\t\t},\n\n\t\ttagsChanged : function ( event ) {\n\t\t\tthis.model.set( 'tags', event.target.value );\n\t\t},\n\n\t\taccountChanged : function ( event ) {\n\t\t\tthis.model.set( 'account', event.target.value );\n\t\t},\n\n\t\thide : function () {\n\t\t\tthis.$el.hide();\n\t\t},\n\n\t\trender : function ( options ) {\n\t\t\toptions          = options || {};\n\t\t\toptions.fileName = this.model.get( 'fileName' );\n\t\t\toptions.tags     = this.model.get( 'tags' );\n\t\t\toptions.size     = this.model.humanReadableSize();\n\t\t\toptions.accounts = this.model.get( 'accounts' );\n\t\t\toptions.account  = this.model.get( 'account' );\n\t\t\toptions.uploaded = this.model.get( 'uploaded' );\n\t\t\tthis.$el.html( this.template( options ) );\n\t\t}\n\n\t}\n);\n","UploadWindowView = BrightcoveView.extend(\n\t{\n\t\tclassName : 'uploader-window',\n\t\ttemplate :  wp.template( 'brightcove-uploader-window' ),\n\n\t\tinitialize : function ( options ) {\n\t\t\t_.bindAll( this, 'uploaderFilesAdded' );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:queuedFilesAdded', this.hide );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:startUpload', this.uploaderStartUpload );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:clear', this.resetUploads );\n\t\t},\n\n\t\trender : function ( options ) {\n\t\t\tthis.$el.html( this.template( options ) );\n\t\t\t_.defer( _.bind( this.afterRender, this ) );\n\t\t},\n\n\t\tresetUploads : function () {\n\t\t\tif ( this.uploader && this.uploader.files ) {\n\t\t\t\tthis.uploader.files = []; // Reset pending uploads\n\t\t\t}\n\t\t},\n\n\t\tafterRender : function () {\n\t\t\tthis.uploader = new plupload.Uploader( _.defaults( this.options, wpbc.preload.plupload ) );\n\n\t\t\t// Uploader has neither .on nor .listenTo\n\t\t\tthis.uploader.added    = this.uploaderFilesAdded;\n\t\t\tthis.uploader.progress = this.uploaderUploadProgress;\n\t\t\tthis.uploader.bind( 'FilesAdded', this.uploaderFilesAdded );\n\t\t\tthis.uploader.bind( 'UploadProgress', this.uploaderUploadProgress );\n\t\t\tthis.uploader.bind( 'BeforeUpload', this.uploaderBeforeUpload );\n\t\t\tthis.uploader.bind( 'FileUploaded', this.uploaderFileUploaded );\n\n\t\t\tthis.uploader.bind( 'init', this.uploaderAfterInit );\n\n\t\t\tthis.uploader.init();\n\t\t\t$( 'html' ).on( 'dragenter', _.bind( this.show, this ) );\n\t\t\t/* the following dropzone function code is taken from the wp.Uploader code */\n\t\t\tvar drop_element = wpbc.preload.plupload.drop_element.replace( /[^a-zA-Z0-9-]+/g, '' );\n\t\t\tvar dropzone     = $( '#' + drop_element );\n\t\t\tdropzone.on( 'dropzone:leave', _.bind( this.hide, this ) );\n\t\t},\n\n\t\tuploaderAfterInit : function ( uploader ) {\n\t\t\tvar drop_element = wpbc.preload.plupload.drop_element.replace( /[^a-zA-Z0-9-]+/g, '' );\n\t\t\tvar timer, active, dragdrop,\n\t\t\t    dropzone     = $( '#' + drop_element );\n\n\t\t\tdragdrop = uploader.features.dragdrop;\n\n\t\t\t// Generate drag/drop helper classes.\n\t\t\tif ( ! dropzone ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdropzone.toggleClass( 'supports-drag-drop', ! ! dragdrop );\n\n\t\t\tif ( ! dragdrop ) {\n\t\t\t\treturn dropzone.unbind( '.wp-uploader' );\n\t\t\t}\n\n\t\t\t// 'dragenter' doesn't fire correctly, simulate it with a limited 'dragover'.\n\t\t\tdropzone.bind( 'dragover.wp-uploader', function () {\n\t\t\t\tif ( timer ) {\n\t\t\t\t\tclearTimeout( timer );\n\t\t\t\t}\n\n\t\t\t\tif ( active ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tdropzone.trigger( 'dropzone:enter' ).addClass( 'drag-over' );\n\t\t\t\tactive = true;\n\t\t\t} );\n\n\t\t\tdropzone.bind( 'dragleave.wp-uploader, drop.wp-uploader', function () {\n\t\t\t\t// Using an instant timer prevents the drag-over class from\n\t\t\t\t// being quickly removed and re-added when elements inside the\n\t\t\t\t// dropzone are repositioned.\n\t\t\t\t//\n\t\t\t\t// @see https://core.trac.wordpress.org/ticket/21705\n\t\t\t\ttimer = setTimeout( function () {\n\t\t\t\t\tactive = false;\n\t\t\t\t\tdropzone.trigger( 'dropzone:leave' ).removeClass( 'drag-over' );\n\t\t\t\t}, 0 );\n\t\t\t} );\n\t\t},\n\n\t\tshow : function () {\n\t\t\tvar $el = this.$el.show();\n\n\t\t\t// Ensure that the animation is triggered by waiting until\n\t\t\t// the transparent element is painted into the DOM.\n\t\t\t_.defer( function () {\n\t\t\t\t$el.css( {opacity : 1} );\n\t\t\t} );\n\t\t},\n\n\t\thide : function () {\n\t\t\tvar $el = this.$el.css( {opacity : 0} );\n\n\t\t\twp.media.transition( $el ).done( function () {\n\t\t\t\t// Transition end events are subject to race conditions.\n\t\t\t\t// Make sure that the value is set as intended.\n\t\t\t\tif ( '0' === $el.css( 'opacity' ) ) {\n\t\t\t\t\t$el.hide();\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// https://core.trac.wordpress.org/ticket/27341\n\t\t\t_.delay( function () {\n\t\t\t\tif ( '0' === $el.css( 'opacity' ) && $el.is( ':visible' ) ) {\n\t\t\t\t\t$el.hide();\n\t\t\t\t}\n\t\t\t}, 500 );\n\t\t},\n\n\t\tuploaderFilesAdded : function ( uploader, queuedFiles ) {\n\t\t\twpbc.broadcast.trigger( 'uploader:queuedFilesAdded', queuedFiles );\n\t\t},\n\n\t\tuploaderStartUpload : function () {\n\t\t\tthis.uploader.start();\n\t\t},\n\n\t\tuploaderUploadProgress : function ( up, file ) {\n\t\t\twpbc.broadcast.trigger( 'uploader:uploadProgress', file );\n\t\t},\n\n\t\tuploaderBeforeUpload : function ( up, file ) {\n\t\t\tup.settings.multipart_params = _.defaults(\n\t\t\t\twpbc.uploads[file.id],\n\t\t\t\twpbc.preload.plupload.multipart_params,\n\t\t\t\t{nonce : wpbc.preload.nonce}\n\t\t\t);\n\t\t},\n\n\t\tuploaderFileUploaded : function ( up, file, response ) {\n\t\t\tvar status = JSON.parse( response.response );\n\t\t\twpbc.broadcast.trigger( 'uploader:fileUploaded', file );\n\t\t\tif ( status.data.upload === 'success' && status.data.ingest === 'success' ) {\n\t\t\t\tif ( status.data.videoDetails ) {\n\t\t\t\t\t// Add newly uploaded file to preload list.\n\t\t\t\t\twpbc.broadcast.trigger( 'uploader:uploadedFileDetails', status.data.videoDetails );\n\t\t\t\t}\n\t\t\t\twpbc.broadcast.trigger( 'uploader:successfulUploadIngest', file );\n\t\t\t} else {\n\t\t\t\tfile.percent = 0;\n\t\t\t\tfile.status  = plupload.UPLOADING;\n\t\t\t\tup.state     = plupload.STARTED;\n\t\t\t\tup.trigger( 'StateChanged' );\n\t\t\t\twpbc.broadcast.trigger( 'uploader:failedUploadIngest', file );\n\t\t\t}\n\t\t}\n\t}\n);\n","var UploadView = BrightcoveView.extend(\n\t{\n\t\tclassName : 'brightcove-pending-upload',\n\t\ttagName :   'tr',\n\t\ttemplate :  wp.template( 'brightcove-pending-upload' ),\n\n\t\tevents : {\n\t\t\t'click' : 'toggleRow'\n\t\t},\n\n\t\tinitialize : function () {\n\t\t\tthis.listenTo( wpbc.broadcast, 'pendingUpload:selectedRow', this.otherToggledRow );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:uploadProgress', this.uploadProgress );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:getParams', this.getParams );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:successfulUploadIngest', this.successfulUploadIngest );\n\t\t\tthis.listenTo( wpbc.broadcast, 'uploader:failedUploadIngest', this.failedUploadIngest );\n\n\t\t\tvar options = {\n\t\t\t\t'fileName' :      this.model.get( 'name' ),\n\t\t\t\t'tags' :          '',\n\t\t\t\t'accounts' :      wpbc.preload.accounts, // All accounts.\n\t\t\t\t'account' :       wpbc.preload.defaultAccount,\n\t\t\t\t'ingestSuccess' : false,\n\t\t\t\t'uploadSuccess' : false,\n\t\t\t\t'uploaded' :      false\n\t\t\t};\n\n\t\t\tthis.model.set( options );\n\n\t\t\tthis.listenTo( this.model, 'change:fileName', this.render );\n\t\t\tthis.listenTo( this.model, 'change:account', this.render );\n\t\t},\n\n\t\trender : function ( options ) {\n\t\t\toptions               = options || {};\n\t\t\toptions.fileName      = this.model.get( 'fileName' );\n\t\t\toptions.size          = this.model.humanReadableSize();\n\t\t\tvar sourceHash        = this.model.get( 'account' );\n\t\t\toptions.accountName   = wpbc.preload.accounts[sourceHash].account_name;\n\t\t\toptions.percent       = this.model.get( 'percent' );\n\t\t\toptions.activeUpload  = this.model.get( 'activeUpload' );\n\t\t\toptions.ingestSuccess = this.model.get( 'ingestSuccess' );\n\t\t\toptions.uploadSuccess = this.model.get( 'uploadSuccess' );\n\n\t\t\tthis.$el.html( this.template( options ) );\n\t\t\tif ( this.model.get( 'selected' ) ) {\n\t\t\t\tthis.$el.addClass( 'selected' );\n\t\t\t}\n\t\t\tif ( this.model.get( 'ingestSuccess' ) ) {\n\t\t\t\tthis.$el.addClass( 'ingest-success' );\n\t\t\t}\n\t\t\tif ( this.model.get( 'uploadSuccess' ) ) {\n\t\t\t\tthis.$el.addClass( 'upload-success' );\n\t\t\t}\n\t\t},\n\n\t\tgetParams : function ( fileId ) {\n\t\t\twpbc.broadcast.trigger( 'uploader:params', \"abcde\" );\n\t\t},\n\n\t\tfailedUploadIngest : function ( file ) {\n\t\t\t// Make sure we're acting on the right file.\n\t\t\tif ( file.id === this.model.get( 'id' ) ) {\n\t\t\t\twpbc.broadcast.trigger( 'uploader:errorMessage', wpbc.preload.messages.unableToUpload.replace( '%%s%%', this.model.get( 'fileName' ) ) );\n\t\t\t\tthis.render();\n\t\t\t}\n\t\t},\n\n\t\tsuccessfulUploadIngest : function ( file ) {\n\t\t\t// Make sure we're acting on the right file.\n\t\t\tif ( file.id === this.model.get( 'id' ) ) {\n\t\t\t\twpbc.broadcast.trigger( 'uploader:successMessage', wpbc.preload.messages.successUpload.replace( '%%s%%', this.model.get( 'fileName' ) ) );\n\t\t\t\tthis.render();\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Render if we're the active upload.\n\t\t * Re-render if we thought we were but we no longer are.\n\t\t * @param file Fired from UploadProgress on plUpload\n\t\t */\n\t\tuploadProgress :         function ( file ) {\n\t\t\t// Make sure we're acting on the right file.\n\t\t\tif ( file.id === this.model.get( 'id' ) ) {\n\t\t\t\tthis.model.set( 'activeUpload', true );\n\t\t\t\tthis.model.set( 'percent', file.percent );\n\t\t\t\tthis.render();\n\t\t\t} else {\n\t\t\t\tif ( this.model.get( 'activeUpload' ) ) {\n\t\t\t\t\tthis.model.unset( 'activeUpload' );\n\t\t\t\t\tthis.render();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\ttoggleRow : function ( event ) {\n\t\t\tthis.$el.toggleClass( 'selected' );\n\t\t\tif ( this.$el.hasClass( 'selected' ) ) {\n\t\t\t\tthis.model.set( 'selected', true );\n\t\t\t\twpbc.broadcast.trigger( 'pendingUpload:selectedRow', this.cid );\n\t\t\t} else {\n\t\t\t\twpbc.broadcast.trigger( 'pendingUpload:hideDetails', this.cid );\n\t\t\t}\n\t\t},\n\n\t\totherToggledRow : function ( cid ) {\n\t\t\t// Ignore broadcast from self\n\t\t\tif ( cid !== this.cid ) {\n\t\t\t\tthis.$el.removeClass( 'selected' );\n\t\t\t\tthis.model.unset( 'selected' );\n\t\t\t} else {\n\t\t\t\twpbc.broadcast.trigger( 'pendingUpload:selectedItem', this.model );\n\t\t\t}\n\t\t}\n\t}\n);\n","var VideoEditView = BrightcoveView.extend(\n\t{\n\t\ttagName :   'div',\n\t\tclassName : 'video-edit brightcove attachment-details',\n\t\ttemplate :  wp.template( 'brightcove-video-edit' ),\n\n\t\tevents : {\n\t\t\t'click .brightcove.button.save-sync' :      'saveSync',\n\t\t\t'click .brightcove.delete' :                'deleteVideo',\n\t\t\t'click .brightcove.button.back' :           'back',\n\t\t\t'click .setting .button' :                  'openMediaManager',\n\t\t\t'click .attachment .check' :                'removeAttachment',\n\t\t\t'click .caption-secondary-fields .delete' : 'removeCaptionRow',\n\t\t\t'click .add-remote-caption' :               'addCaptionRow'\n\t\t},\n\n\t\tback : function ( event ) {\n\t\t\tevent.preventDefault();\n\n\t\t\t// Exit if the 'button' is disabled.\n\t\t\tif ( $( event.currentTarget ).hasClass( 'disabled' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\twpbc.broadcast.trigger( 'start:gridview' );\n\t\t},\n\n\t\tdeleteVideo : function () {\n\t\t\tif ( confirm( wpbc.preload.messages.confirmDelete ) ) {\n\t\t\t\twpbc.broadcast.trigger( 'spinner:on' );\n\t\t\t\tthis.model.set( 'mediaType', 'videos' );\n\t\t\t\tthis.model.destroy();\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Allow the user to attach a video still or thumbnail.\n\t\t *\n\t\t * @param {Event} evnt\n\t\t */\n\t\topenMediaManager: function ( evnt ) {\n\t\t\tevnt.preventDefault();\n\n\t\t\tvar elem         = $( evnt.currentTarget ).parents( '.setting' ),\n\t\t\t\teditor       = elem.data('editor'),\n\t\t\t\tmediaManager = wp.media.frames.brightcove = wp.media(),\n\t\t\t\tthat         = this,\n\t\t\t\toptions      = {\n\t\t\t\t\tstate:    'insert',\n\t\t\t\t\ttitle:    wp.media.view.l10n.addMedia,\n\t\t\t\t\tmultiple: false\n\t\t\t\t};\n\n\t\t\t// Open the media manager\n\t\t\tmediaManager.open( editor, options );\n\n\t\t\t// Listen for selection of media\n\t\t\tmediaManager.on( 'select', function() {\n\t\t\t\tvar media = mediaManager.state().get( 'selection' ).first().toJSON(),\n\t\t\t\t\tfield = $( evnt ).parents( '.setting' );\n\n\t\t\t\t// Set the selected attachment to the correct field\n\t\t\t\tthat.setAttachment( media, field );\n\n\t\t\t\t// Make this action available to other areas of the application\n\t\t\t\twpbc.broadcast.trigger( 'media:selected' );\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * Set the hidden input to the ID of the selected attachment.\n\t\t *\n\t\t * @param {Object} media\n\t\t * @param {String} field\n\t\t * @returns {boolean}\n\t\t */\n\t\tsetAttachment: function( media, field ) {\n\t\t\tvar field           = field.prevObject[0].currentTarget,\n\t\t\t\tfield           = $( field ).prev( 'input' ),\n\t\t\t\tattachment      = field.parents( '.attachment' ),\n\t\t\t\tpreview         = attachment.find( '.-image' );\n\n\t\t\t// Perform different setup actions based on the type of upload\n\t\t\tif ( attachment.context.className.indexOf( 'captions' ) > -1 ) {\n\t\t\t\t// Executed if the user is uploading a closed caption\n\t\t\t\tif ( 'vtt' === media.subtype ) {\n\t\t\t\t\tthis.addCaptionRow( false, media );\n\t\t\t\t} else {\n\t\t\t\t\tvar template = wp.template( 'brightcove-badformat-notice' );\n\n\t\t\t\t\t// Throw a notice to the user that the file is not the correct format\n\t\t\t\t\t$( '.brightcove-media-videos' ).prepend( template );\n\n\t\t\t\t\t// Allow the user to dismiss the notice\n\t\t\t\t\t$( '.badformat.notice-dismiss' ).on( 'click', function() {\n\t\t\t\t\t\t$( '.notice.badformat' ).first().fadeOut( 500, function() {\n\t\t\t\t\t\t\t$( this ).remove();\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Executed if the user is uploading a poster image or thumbnail\n\t\t\t\tvar selectedMedia = {\n\t\t\t\t\turl:    media.sizes.full.url,\n\t\t\t\t\twidth:  media.sizes.full.width,\n\t\t\t\t\theight: media.sizes.full.height\n\t\t\t\t};\n\n\t\t\t\t// Set up our preview image\n\t\t\t\tvar image = document.createElement( 'img' );\n\n\t\t\t\t// Set image properties\n\t\t\t\timage.src       = media.sizes.full.url;\n\t\t\t\timage.className = 'thumbnail';\n\n\t\t\t\t// Display a preview image\n\t\t\t\tattachment.addClass( 'active' );\n\t\t\t\tpreview.html( image ); // .html() considered okay because auth is required to view this screen\n\t\t\t}\n\n\t\t\t// Add our meta to the hidden field\n\t\t\tfield.val( JSON.stringify( selectedMedia ) );\n\t\t},\n\n\t\t/**\n\t\t * Allow the user to remove media from a given field.\n\t\t *\n\t\t * @param {Event} evnt\n\t\t * @returns {boolean}\n\t\t */\n\t\tremoveAttachment: function( evnt ) {\n\t\t\tvar container = $( evnt.currentTarget ).parents( '.attachment' ),\n\t\t\t\timage     = container.find( '.-image' ),\n\t\t\t\tfield     = container.next( 'input' );\n\n\t\t\t// Empty the field\n\t\t\tfield.val( '' );\n\n\t\t\t// Remove the preview image\n\t\t\tcontainer.removeClass( 'active' );\n\t\t\timage.empty();\n\t\t},\n\n\t\t/**\n\t\t * Add a caption row\n\t\t *\n\t\t * @param {Event} evnt\n\t\t * @param {Object} media\n\t\t */\n\t\taddCaptionRow: function( evnt, media ) {\n\t\t\t// If using the add remote file link, prevent the page from jumping to the top\n\t\t\tif ( evnt ) {\n\t\t\t\tevnt.preventDefault();\n\t\t\t}\n\n\t\t\tvar source = undefined;\n\t\t\tif ( media ) {\n\t\t\t\tsource = media.url;\n\t\t\t}\n\n\t\t\tthis.addCaption( source );\n\t\t},\n\n\t\taddCaption: function( source, language, label ) {\n\t\t\tvar newRow     = $( document.getElementById( 'js-caption-empty-row' ) ).clone(),\n\t\t\t\tcontainer  = document.getElementById( 'js-captions' ),\n\t\t\t\tcaptionUrl = document.getElementById( 'js-caption-url' );\n\n\t\t\t// Clean up our cloned row\n\t\t\tnewRow.find( 'input' ).prop( 'disabled', false );\n\t\t\tnewRow.removeAttr( 'id' );\n\t\t\tnewRow.removeClass( 'empty-row' );\n\n\t\t\tif ( source ) {\n\t\t\t\tnewRow.find( '.brightcove-captions' ).val( source );\n\t\t\t}\n\n\t\t\tif ( language ) {\n\t\t\t\tnewRow.find( '.brightcove-captions-language' ).val( language );\n\t\t\t}\n\n\t\t\tif ( label ) {\n\t\t\t\tnewRow.find( '.brightcove-captions-label' ).val( label );\n\t\t\t}\n\n\t\t\t// Append our new row to the container\n\t\t\t$( container ).append( newRow );\n\n\t\t\t// Update the context button text\n\t\t\tthis.updateCaptionText();\n\t\t},\n\n\t\t/**\n\t\t * Remove a caption\n\t\t *\n\t\t * @param {Event} evnt\n\t\t */\n\t\tremoveCaptionRow: function( evnt ) {\n\t\t\tevnt.preventDefault();\n\n\t\t\tvar caption   = evnt.currentTarget,\n\t\t\t\tcontainer = $( caption ).parents( '.caption-repeater' ),\n\t\t\t\tsource    = container.find( '.brightcove-captions' ),\n\t\t\t\tlanguage  = container.find( '.brightcove-captions-launguage' ),\n\t\t\t\tlabel     = container.find( '.brightcove-captions-label' );\n\n\t\t\t// Empty the input fields\n\t\t\t$( source ).val( '' );\n\t\t\t$( language ).val( '' );\n\t\t\t$( label ).val( '' );\n\n\t\t\t// Remove the container entirely\n\t\t\tcontainer.remove();\n\n\t\t\t// Update the context button text\n\t\t\tthis.updateCaptionText();\n\t\t},\n\n\t\t/**\n\t\t * Updates the caption text based on number of captions\n\t\t */\n\t\tupdateCaptionText: function() {\n\t\t\tvar button = $( '.captions .button-secondary' ),\n\t\t\t\tlink   = $( '.add-remote-caption' );\n\n\t\t\tif ( 1 < document.getElementsByClassName( 'caption-repeater' ).length ) {\n\t\t\t\tbutton.text( wpbc.str_addcaption );\n\t\t\t\tlink.text( wpbc.str_addremote );\n\t\t\t} else {\n\t\t\t\tbutton.text( wpbc.str_selectfile );\n\t\t\t\tlink.text( wpbc.str_useremote );\n\t\t\t}\n\t\t},\n\n\t\tsaveSync : function ( evnt ) {\n\t\t\tevnt.preventDefault();\n\n\t\t\tvar $mediaFrame = $( evnt.currentTarget ).parents( '.media-modal' ),\n\t\t\t\t$allButtons = $mediaFrame.find( '.button, .button-link'),\n\t\t\t\tSELF = this;\n\n\t\t\t// Exit if the 'button' is disabled.\n\t\t\tif ( $allButtons.hasClass( 'disabled' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Disable the button for the duration of the request.\n\t\t\t$allButtons.addClass( 'disabled' );\n\n\t\t\t// Hide the delete link for the duration of the request.\n\t\t\t$mediaFrame.find( '.delete-action' ).hide();\n\n\t\t\twpbc.broadcast.trigger( 'spinner:on' );\n\t\t\tthis.model.set( 'name', this.$el.find( '.brightcove-name' ).val() );\n\t\t\tthis.model.set( 'description', this.$el.find( '.brightcove-description' ).val() );\n\t\t\tthis.model.set( 'long_description', this.$el.find( '.brightcove-long-description' ).val() );\n\n\t\t\t// Trim whitespace and commas from tags beginning/end.\n\t\t\tthis.model.set( 'tags', this.$el.find( '.brightcove-tags' ).val().trim().replace(/(^,)|(,$)/g, '' ) );\n\t\t\tthis.model.set( 'height', this.$el.find( '.brightcove-height' ).val() );\n\t\t\tthis.model.set( 'width', this.$el.find( '.brightcove-width' ).val() );\n\t\t\tthis.model.set( 'mediaType', 'videos' );\n\t\t\tthis.model.set( 'poster', this.$el.find( '.brightcove-poster' ).val() );\n\t\t\tthis.model.set( 'thumbnail', this.$el.find( '.brightcove-thumbnail' ).val() );\n\t\t\tthis.model.set( 'folderId', this.$el.find( '.brightcove-folder' ).val() );\n\n\t\t\t// Captions\n\t\t\tvar captions = [];\n\t\t\tthis.$el.find( '.caption-repeater.repeater-row' ).not( '.empty-row' ).each( function() {\n\t\t\t\tvar caption   = $( this ),\n\t\t\t\t\tfileName  = caption.find( '.brightcove-captions' ).val(),\n\t\t\t\t\textension = fileName.split( '?' )[0], // if the URL has a query string, strip it before validating filetype\n\t\t\t\t\textension = extension.split( '.' ).pop();\n\n\t\t\t\tif ( 'vtt' === extension ) {\n\t\t\t\t\tcaptions.push(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'source'  : fileName,\n\t\t\t\t\t\t\t'language': caption.find( '.brightcove-captions-language' ).val(),\n\t\t\t\t\t\t\t'label'   : caption.find( '.brightcove-captions-label' ).val()\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tvar template = wp.template( 'brightcove-badformat-notice' );\n\n\t\t\t\t\t// Throw a notice to the user that the file is not the correct format\n\t\t\t\t\t$( '.brightcove-media-videos' ).prepend( template );\n\n\t\t\t\t\t// Allow the user to dismiss the notice\n\t\t\t\t\t$( '.badformat.notice-dismiss' ).on( 'click', function() {\n\t\t\t\t\t\t$( '.notice.badformat' ).first().fadeOut( 500, function() {\n\t\t\t\t\t\t\t$( this ).remove();\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} );\n\t\t\tthis.model.set( 'captions', captions );\n\n\t\t\t// Custom fields\n\t\t\tvar custom = {},\n\t\t\t\tcustom_fields = this.model.get( 'custom' );\n\n\t\t\t_.each( this.$el.find( '.brightcove-custom-string, .brightcove-custom-enum' ), function( item ) {\n\t\t\t\tvar key = item.getAttribute( 'data-id' ),\n\t\t\t\t\tval = item.value.trim();\n\n\t\t\t\tif ( '' !== val ) {\n\t\t\t\t\tcustom[ key ] = val;\n\n\t\t\t\t\tvar obj = _.find( custom_fields, function( item ) { return item.id == key } );\n\t\t\t\t\tobj.value = val;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthis.model.set( 'custom_fields', custom );\n\t\t\tthis.model.set( 'custom', custom_fields );\n\n\t\t\tthis.model.save()\n\t\t\t\t.done( function() {\n\t\t\t\t\tif ( $mediaFrame.length > 0 ) {\n\t\t\t\t\t\t// Update the tag dropdown and wpbc.preload.tags with any new tag values.\n\t\t\t\t\t\tvar tagInput =  $mediaFrame.find( '.brightcove-tags' ).val(),\n\t\t\t\t\t\t\teditTags,\n\t\t\t\t\t\t\tnewTags;\n\n\t\t\t\t\t\tif ( tagInput ) {\n\t\t\t\t\t\t\teditTags     = tagInput.split( ',' );\n\t\t\t\t\t\t\tnewTags      = _.difference( editTags, wpbc.preload.tags );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Add any new tags to the tags object and the dropdown.\n\t\t\t\t\t\t_.each( newTags, function( newTag ){\n\t\t\t\t\t\t\tnewTag = newTag.trim();\n\t\t\t\t\t\t\tif ( '' !== newTag ) {\n\t\t\t\t\t\t\t\twpbc.preload.tags.push( newTag );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t\twpbc.preload.tags.sort();\n\t\t\t\t\t}\n\t\t\t\t} )\n\t\t\t\t.always( function() {\n\t\t\t\t\t// Re-enable the button when the request has completed.\n\t\t\t\t\t$allButtons.removeClass( 'disabled' );\n\n\t\t\t\t\t// Show the delete link.\n\t\t\t\t\t$mediaFrame.find( '.delete-action' ).show();\n\t\t\t\t} );\n\n\t\t\t// Hide the video edit screen after save.\n\t\t\twpbc.broadcast.trigger( 'start:gridview' );\n\t\t},\n\n\t\t/**\n\t\t * Render the actual view for the Video Edit screen.\n\t\t *\n\t\t * @param {Object} options\n\t\t */\n\t\trender : function ( options ) {\n\t\t\tthis.listenTo( wpbc.broadcast, 'save:media', this.saveSync );\n\t\t\tthis.listenTo( wpbc.broadcast, 'back:editvideo', this.back );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'insert:shortcode', this.insertShortcode );\n\t\t\toptions = this.model.toJSON();\n\t\t\toptions.folders = wpbc.preload.folders;\n\t\t\tthis.model.set( 'oldFolderId', options.folder_id);\n\n\t\t\t// Render the model into the template\n\t\t\tthis.$el.html( this.template( options ) );\n\n\t\t\t// Render custom fields into the template\n\t\t\tvar customContainer = this.$el.find( '#brightcove-custom-fields' ),\n\t\t\t\tstringTmp = wp.template( 'brightcove-video-edit-custom-string' ),\n\t\t\t\tenumTmp = wp.template( 'brightcove-video-edit-custom-enum' );\n\n\t\t\t_.each( this.model.get('custom'), function( custom ) {\n\t\t\t\tif ( '_change_history' === custom.id ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tswitch( custom.type ) {\n\t\t\t\t\tcase 'string':\n\t\t\t\t\t\tcustomContainer.append( stringTmp( custom ) );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'enum':\n\t\t\t\t\t\tcustomContainer.append( enumTmp( custom ) );\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Render the change history\n\t\t\tvar history = this.model.get( 'history' );\n\n\t\t\tif ( history !== undefined ) {\n\t\t\t\tvar historyStr = '';\n\n\t\t\t\t// Parse our fetched JSON object\n\t\t\t\thistory = JSON.parse( history );\n\n\t\t\t\t_.each( history, function( item ) {\n\t\t\t\t\thistoryStr += item.user + ' - ' + item.time + '\\n';\n\t\t\t\t} );\n\n\t\t\t\tif ( '' !== historyStr ) {\n\t\t\t\t\tthis.$el.find( 'textarea.brightcove-change-history' ).val( historyStr );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Configure a spinner to provide feedback during updates\n\t\t\tvar spinner = this.$el.find( '.spinner' );\n\t\t\tthis.listenTo( wpbc.broadcast, 'spinner:on', function () {\n\t\t\t\tspinner.addClass( 'is-active' ).removeClass( 'hidden' );\n\t\t\t} );\n\t\t\tthis.listenTo( wpbc.broadcast, 'spinner:off', function () {\n\t\t\t\tspinner.removeClass( 'is-active' ).addClass( 'hidden' );\n\t\t\t} );\n\n\t\t\t// If there's already a poster or thumbnail set, display it\n\t\t\tif ( this.model.get( 'poster' ) ) {\n\t\t\t\tthis.displayAttachment( 'poster' );\n\t\t\t}\n\n\t\t\tif ( this.model.get( 'thumbnail' ) ) {\n\t\t\t\tthis.displayAttachment( 'thumbnail' );\n\t\t\t}\n\n\t\t\t// Captions\n\t\t\tif ( this.model.get( 'captions' ) ) {\n\t\t\t\tvar captions = this.model.get( 'captions' );\n\t\t\t\tfor ( var i = 0, l = captions.length; i < l; i++ ) {\n\t\t\t\t\tvar caption = captions[i];\n\t\t\t\t\tthis.addCaption( caption.source, caption.language, caption.label );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n);","var VideoPreviewView = BrightcoveView.extend( {\n\ttagName :   'div',\n\tclassName : 'video-preview brightcove',\n\ttemplate :  wp.template( 'brightcove-video-preview' ),\n\tshortcode: '',\n\n\tinitialize: function( options ) {\n\t\tthis.shortcode = options.shortcode;\n\t},\n\n\trender : function ( options ) {\n\t\tvar that = this;\n\n\t\toptions            = options || {};\n\t\toptions.id         = this.model.get( 'id' );\n\t\toptions.account_id = this.model.get( 'account_id' );\n\n\t\t$.ajax({\n\t\t\turl: ajaxurl,\n\t\t\tdataType: 'json',\n\t\t\tmethod: 'POST',\n\t\t\tdata: {\n\t\t\t\t'action':'bc_resolve_shortcode',\n\t\t\t\t'shortcode': this.shortcode,\n\t\t\t\t'video_id' : options.id,\n\t\t\t\t'account_id': options.account_id,\n\t\t\t},\n\t\t\tsuccess: function( results ) {\n\t\t\t\tthat.$el.html( results.data );\n\t\t\t}\n\t\t});\n\n\t\tthis.listenTo( wpbc.broadcast, 'insert:shortcode', this.insertShortcode );\n\t}\n} );\n","var MediaCollectionView = BrightcoveView.extend(\n\t{\n\t\ttagName :   'ul',\n\t\tclassName : 'brightcove-media attachments',\n\n\t\tattributes : {\n\t\t\ttabIndex : - 1\n\t\t},\n\n\t\tevents : {\n\t\t\t/* scroll fired on playlist edits, but for media grids it's handled by firing 'scroll:mediaGrid' in brightcove-media-manager */\n\t\t\t'scroll' : 'scrollHandler'\n\t\t},\n\n\t\tloadMoreMediaItems : function () {\n\t\t\tthis.fetchingResults = true;\n\t\t\tthis.collection.fetch();\n\t\t},\n\n\t\tscrollHandler : function () {\n\t\t\t// We don't fetch for videos in an existing playlist\n\t\t\tif ( 'existingPlaylists' === this.collection.mediaCollectionViewType ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar scrollThreshold = 200; // How many px from bottom until we fetch the next page.\n\t\t\tif ( ! this.fetchingResults && this.el.scrollTop + this.el.clientHeight + scrollThreshold > this.el.scrollHeight ) {\n\t\t\t\tthis.collection.pageNumber += 1;\n\t\t\t\tthis.loadMoreMediaItems();\n\t\t\t}\n\t\t},\n\n\t\tinitialize : function ( options ) {\n\t\t\tthis.fetchingResults = false;\n\t\t\tthis.listenTo( wpbc.broadcast, 'fetch:finished', function () {\n\t\t\t\tthis.fetchingResults = false;\n\t\t\t} );\n\n\t\t\tthis.listenTo( wpbc.broadcast, 'fetch:apiError', this.handleAPIError );\n\n\t\t\tvar scrollRefreshSensitivity = wp.media.isTouchDevice ? 300 : 200;\n\t\t\tthis.scrollHandler           = _.chain( this.scrollHandler ).bind( this ).throttle( scrollRefreshSensitivity ).value();\n\t\t\tthis.listenTo( wpbc.broadcast, 'scroll:mediaGrid', this.scrollHandler );\n\t\t\toptions    = options || {};\n\t\t\tthis.el.id = _.uniqueId( '__attachments-view-' );\n\n\t\t\t// Occurs on playlist edit, existing videos.\n\t\t\tif ( ! this.collection && options.videoIds ) {\n\t\t\t\tthis.collection = new MediaCollection(\n\t\t\t\t\tnull,\n\t\t\t\t\t{\n\t\t\t\t\t\tvideoIds : options.videoIds,\n\t\t\t\t\t\tactiveAccount : options.activeAccount,\n\t\t\t\t\t\tmediaCollectionViewType : options.mediaCollectionViewType\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'playlist:moveUp', this.videoMoveUp );\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'playlist:moveDown', this.videoMoveDown );\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'playlist:remove', this.videoRemove );\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'playlist:add', this.videoAdd );\n\t\t\t} else if ( ! this.collection && 'libraryPlaylists' === options.mediaCollectionViewType ) {\n\t\t\t\tthis.collection = new MediaCollection(\n\t\t\t\t\tnull,\n\t\t\t\t\t{\n\t\t\t\t\t\texcludeVideoIds : options.excludeVideoIds,\n\t\t\t\t\t\tactiveAccount : options.activeAccount,\n\t\t\t\t\t\tmediaCollectionViewType : options.mediaCollectionViewType\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'playlist:remove', this.videoRemove );\n\t\t\t\tthis.listenTo( wpbc.broadcast, 'playlist:add', this.videoAdd );\n\t\t\t}\n\n\t\t\t_.defaults( this.options, {\n\t\t\t\trefreshSensitivity : wp.media.isTouchDevice ? 300 : 200,\n\t\t\t\trefreshThreshold :   3,\n\t\t\t\tVideoView :          wp.media.view.Video,\n\t\t\t\tsortable :           false,\n\t\t\t\tresize :             true,\n\t\t\t\tidealColumnWidth :   202\n\t\t\t} );\n\n\t\t\tthis._viewsByCid = {};\n\t\t\tthis.resizeEvent = 'resize.media-modal-columns';\n\n\t\t\tthis.listenTo( this.collection, 'add', function ( media ) {\n\t\t\t\tthis.views.add( this.createMediaView( media ), {\n\t\t\t\t\tat : this.collection.indexOf( media )\n\t\t\t\t} );\n\t\t\t}, this );\n\n\t\t\tthis.listenTo( this.collection, 'remove', function ( media ) {\n\t\t\t\tif ( media ) {\n\t\t\t\t\tif ( media.view ) {\n\t\t\t\t\t\tmedia.view.remove();\n\t\t\t\t\t} else if ( media.cid && this._viewsByCid[media.cid] ) {\n\t\t\t\t\t\tthis._viewsByCid[media.cid].remove();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, this );\n\n\t\t\tthis.listenTo( this.collection, 'reset', this.render );\n\n\t\t\t// Throttle the scroll handler and bind this.\n\t\t\tthis.scroll = _.chain( this.scroll ).bind( this ).throttle( this.options.refreshSensitivity ).value();\n\n\t\t\tthis.options.scrollElement = this.options.scrollElement || this.el;\n\t\t\t$( this.options.scrollElement ).on( 'scroll', this.scroll );\n\n\t\t\t_.bindAll( this, 'setColumns' );\n\n\t\t\tif ( this.options.resize ) {\n\t\t\t\tthis.on( 'ready', this.bindEvents );\n\t\t\t\t// this.controller.on('open', this.setColumns);\n\n\t\t\t\t// Call this.setColumns() after this view has been rendered in the DOM so\n\t\t\t\t// attachments get proper width applied.\n\t\t\t\t_.defer( this.setColumns, this );\n\t\t\t}\n\t\t},\n\n\t\thandleAPIError: function() {\n\t\t\tthis.el.innerText = wpbc.str_apifailure;\n\t\t},\n\n\t\trender : function () {\n\t\t\t// hide the spinner when content has finished loading\n\t\t\tthis.listenTo( wpbc.broadcast, 'spinner:off', function() {\n\t\t\t\t$( '#js-media-loading' ).css( 'display', 'none' );\n\t\t\t} );\n\n\t\t\tthis.$el.empty();\n\t\t\tthis.collection.each( function ( mediaModel ) {\n\t\t\t\tmediaModel.view = new MediaView( {model : mediaModel} );\n\t\t\t\tthis.registerSubview( mediaModel.view );\n\t\t\t\tmediaModel.view.render();\n\t\t\t\tmediaModel.view.delegateEvents();\n\t\t\t\tmediaModel.view.$el.appendTo( this.$el );\n\n\t\t\t\twpbc.broadcast.trigger( 'spinner:off' );\n\t\t\t}, this );\n\t\t},\n\n\t\tsetViewType : function ( type ) {\n\t\t\tthis.collection.each( function ( mediaModel ) {\n\t\t\t\tmediaModel.set( 'view', type );\n\t\t\t}, this );\n\t\t},\n\n\t\tbindEvents : function () {\n\t\t\tthis.$window.off( this.resizeEvent ).on( this.resizeEvent, _.debounce( this.setColumns, 50 ) );\n\t\t},\n\n\t\tsetColumns : function () {\n\t\t\tvar prev  = this.columns,\n\t\t\t    width = this.$el.width();\n\n\t\t\tif ( width ) {\n\t\t\t\tthis.columns = Math.min( Math.round( width / this.options.idealColumnWidth ), 12 ) || 1;\n\n\t\t\t\tif ( ! prev || prev !== this.columns ) {\n\t\t\t\t\tthis.$el.closest( '.media-frame-content' ).attr( 'data-columns', this.columns );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @param {wp.media.model.Video} attachment\n\t\t * @returns {wp.media.View}\n\t\t */\n\t\tcreateMediaView : function ( attachment ) {\n\t\t\tattachment.set( 'viewType', this.collection.mediaCollectionViewType );\n\t\t\tvar view = new MediaView( {\n\t\t\t\tcontroller : this.controller,\n\t\t\t\tmodel :      attachment,\n\t\t\t\tcollection : this.collection,\n\t\t\t\tselection :  this.options.selection\n\t\t\t} );\n\t\t\tthis.registerSubview( view );\n\t\t\tthis._viewsByCid[attachment.cid] = view;\n\t\t\treturn view;\n\t\t},\n\n\t\tprepare : function () {\n\t\t\t// Create all of the Video views, and replace\n\t\t\t// the list in a single DOM operation.\n\t\t\tif ( this.collection.length ) {\n\t\t\t\tthis.views.set( this.collection.map( this.createMediaView, this ) );\n\n\t\t\t\t// If there are no elements, clear the views and load some.\n\t\t\t} else {\n\t\t\t\tthis.views.unset();\n\t\t\t\tthis.collection.more().done( this.scroll );\n\t\t\t}\n\t\t},\n\n\t\tready : function () {\n\t\t\t// Trigger the scroll event to check if we're within the\n\t\t\t// threshold to query for additional attachments.\n\t\t\tthis.scroll();\n\t\t},\n\n\t\tscroll : function () {\n\t\t\tvar view      = this,\n\t\t\t    el        = this.options.scrollElement,\n\t\t\t    scrollTop = el.scrollTop,\n\t\t\t    toolbar;\n\n\t\t\t// The scroll event occurs on the document, but the element\n\t\t\t// that should be checked is the document body.\n\t\t\tif ( el === document ) {\n\t\t\t\tel        = document.body;\n\t\t\t\tscrollTop = $( document ).scrollTop();\n\t\t\t}\n\n\t\t\tif ( 'function' !== this.collection.hasMore || ! $( el ).is( ':visible' ) || ! this.collection.hasMore() ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttoolbar = this.views.parent.toolbar;\n\n\t\t\t// Show the spinner only if we are close to the bottom.\n\t\t\tif ( el.scrollHeight - ( scrollTop + el.clientHeight ) < el.clientHeight / 3 ) {\n\t\t\t\ttoolbar.get( 'spinner' ).show();\n\t\t\t}\n\n\t\t\tif ( el.scrollHeight < scrollTop + ( el.clientHeight * this.options.refreshThreshold ) ) {\n\t\t\t\tthis.collection.more().done( function () {\n\t\t\t\t\tview.scroll();\n\t\t\t\t\ttoolbar.get( 'spinner' ).hide();\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\n\t\tvideoMoveUp : function ( videoView ) {\n\t\t\tvar model = videoView.model;\n\t\t\tvar index = this.collection.indexOf( model );\n\t\t\tif ( index > 0 ) {\n\t\t\t\tthis.collection.remove( model, {silent : true} ); // silence this to stop excess event triggers\n\t\t\t\tthis.collection.add( model, {at : index - 1} );\n\t\t\t}\n\t\t\tthis.render();\n\t\t\tthis.playlistChanged();\n\t\t},\n\n\t\tvideoMoveDown : function ( videoView ) {\n\t\t\tvar model = videoView.model;\n\t\t\tvar index = this.collection.indexOf( model );\n\t\t\tif ( index < this.collection.models.length ) {\n\t\t\t\tthis.collection.remove( model, {silent : true} ); // silence this to stop excess event triggers\n\t\t\t\tthis.collection.add( model, {at : index + 1} );\n\t\t\t}\n\t\t\tthis.render();\n\t\t\tthis.playlistChanged();\n\t\t},\n\n\t\tvideoRemove : function ( videoView ) {\n\t\t\tvar model = videoView.model;\n\t\t\tif ( - 1 === this.collection.indexOf( model ) ) {\n\t\t\t\t// this is the library model\n\t\t\t\tthis.collection.add( model );\n\t\t\t} else {\n\t\t\t\t// this is the playlist collection\n\t\t\t\tthis.collection.remove( model, {silent : true} ); // silence this to stop excess event triggers\n\t\t\t\tthis.playlistChanged();\n\t\t\t}\n\t\t\tthis.render();\n\t\t},\n\n\t\tvideoAdd : function ( videoView ) {\n\t\t\t/**\n\t\t\t * Video add is heard by two collections, the one containing the videos for the playlists\n\t\t\t * and the one containing the videos that we can add to them.\n\t\t\t * We handle the add by adding from the collection where it doesn't exist (the playlist) and removing\n\t\t\t * where it does (the library).\n\t\t\t */\n\t\t\tvar model = videoView.model;\n\t\t\tif ( - 1 === this.collection.indexOf( model ) ) {\n\t\t\t\t// this is the playlist collection\n\t\t\t\tthis.collection.add( model );\n\t\t\t\tthis.playlistChanged();\n\t\t\t} else {\n\t\t\t\t// this is the library model\n\t\t\t\tthis.collection.remove( model, {silent : true} );\n\t\t\t\tthis.render();\n\t\t\t}\n\t\t},\n\n\t\tplaylistChanged : function () {\n\t\t\tvar videoIds = [];\n\t\t\tthis.collection.each( function ( video ) {\n\t\t\t\tvideoIds.push( video.id );\n\t\t\t} );\n\t\t\tthis.videoIds = videoIds;\n\t\t\t// var syncPlaylist = _.throttle(_.bind(this.syncPlaylist, this), 2000);\n\t\t\tthis.syncPlaylist();\n\t\t},\n\n\t\tsyncPlaylist : function () {\n\t\t\twpbc.broadcast.trigger( 'playlist:changed', this.videoIds );\n\t\t}\n\n\t}\n);\n\n","\tvar App = {\n\t\trenderMediaManager: function(mediaType) {\n\t\t\tvar brightcoveMediaContainer = $('.brightcove-media-' + mediaType);\n\t\t\tvar content_ifr = document.getElementById('content_ifr');\n\t\t\tif ( brightcoveMediaContainer.length ) {\n\t\t\t\tvar brightcoveMediaManager = new BrightcoveMediaManagerView({\n\t\t\t\t\tel: brightcoveMediaContainer,\n\t\t\t\t\tdate: 'all',\n\t\t\t\t\tembedType: 'page',\n\t\t\t\t\tpreload: true,\n\t\t\t\t\tmode: 'manager',\n\t\t\t\t\tsearch: '',\n\t\t\t\t\taccounts: 'all',\n\t\t\t\t\ttags: 'all',\n\t\t\t\t\tmediaType: mediaType,\n\t\t\t\t\tviewType: 'grid'\n\t\t\t\t});\n\t\t\t\tbrightcoveMediaManager.render();\n\t\t\t}\n\t\t},\n\n\t\tload: function() {\n\t\t\twpbc.requests = [];\n\t\t\twpbc.responses = {};\n\t\t\twpbc.broadcast = _.extend({}, Backbone.Events); // pubSub object\n\n\t\t\tthis.loaded();\n\n\t\t},\n\n\t\tloaded: function() {\n\t\t\tvar brightcoveModalContainer = $('.brightcove-modal');\n\n\t\t\tvar router = new BrightcoveRouter;\n\t\t\twpbc.triggerModal = function() {\n\t\t\t\tif (!wpbc.modal) {\n\t\t\t\t\twpbc.modal = new BrightcoveModalView({\n\t\t\t\t\t\tel: brightcoveModalContainer,\n\t\t\t\t\t\ttab: 'videos'\n\t\t\t\t\t});\n\t\t\t\t\twpbc.modal.render();\n\t\t\t\t\twpbc.modal.$el.find( '.spinner' ).addClass( 'is-active' );\n\t\t\t\t} else {\n\t\t\t\t\twpbc.modal.$el.show();\n\t\t\t\t}\n\n\t\t\t\t// Prevent body scrolling by adding a class to 'body'.\n\t\t\t\t$( 'body' ).addClass( 'modal-open' );\n\t\t\t};\n\n\t\t\tvar bc_sanitize_ids = function( id ) {\n\t\t\t\treturn id.replace(/\\D/g,'');\n\t\t\t};\n\n\t\t\t// Load the appropriate media type manager into the container element,\n\t\t\t// We only support loading one per page.\n\t\t\t_.each(['videos', 'playlists'], function(mediaType){\n\t\t\t\tApp.renderMediaManager(mediaType);\n\t\t\t});\n\n\t\t\t$('.account-toggle-button').on('click',function(event){\n\t\t\t\tevent.preventDefault();\n\t\t\t\t$(this).hide();\n\t\t\t\t$('.brightcove-account-row.hidden').show();\n\t\t\t});\n\n\t\t\t$('.brightcove-add-new-video').on('click', function(e) {\n\t\t\t\te.preventDefault();\n\t\t\t\trouter.navigate('add-new-brightcove-video', { trigger:true });\n\t\t\t});\n\n\t\t\t$(document).on('click', '.brightcove-add-media', function( e ) {\n\t\t\t\te.preventDefault();\n\t\t\t\twpbc.triggerModal();\n\t\t\t\twpbc.modal.target = e.currentTarget.dataset.target;\n\t\t\t});\n\n\t\t\t$(document).keyup(function(e) {\n\t\t\t\tif (27 === e.keyCode) {\n\t\t\t\t\t// Close modal on ESCAPE if it's open.\n\t\t\t\t\twpbc.broadcast.trigger('close:modal');\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t$('a.brightcove-action-delete-source').on('click',function(e){\n\t\t\t\tvar message = $(this).data('alert-message');\n\t\t\t\tif( !confirm( message ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t}\n\t};\n\n\tjQuery( document ).ready( function() {\n\t\tApp.load();\n\t\tvar router = new BrightcoveRouter;\n\t\tif ( ! Backbone.History.started ) {\n\t\t\tBackbone.history.start();\n\t\t}\n\t} );\n"]}
  • brightcove-video-connect/trunk/assets/js/brightcove-admin.min.js

    r1995128 r2057701  
    11( function( $ ){
    22
    3 var MediaModel=Backbone.Model.extend({sync:function(e,t,i){var a=null;if(_.find(wpbc.preload.accounts,function(e,t){if(e.account_id===this.get("account_id"))return a=t,!0},this),_.isUndefined(this.id))return $.Deferred().rejectWith(this).promise();if("read"===e)return(i=i||{}).context=this,i.data=_.extend(i.data||{},{action:"bc_media_fetch",id:this.id}),wp.media.ajax(i);if("update"===e){(i=i||{}).context=this,i.data=_.extend(i.data||{},{account:a,action:"bc_media_update",description:this.get("description"),long_description:this.get("long_description"),name:this.get("name"),nonce:wpbc.preload.nonce,tags:this.get("tags"),type:this.get("mediaType"),custom_fields:this.get("custom_fields"),history:this.get("_change_history"),poster:this.get("poster"),thumbnail:this.get("thumbnail"),captions:this.get("captions")});var s=this.get("video_ids");return s?(i.data.playlist_id=this.id,i.data.playlist_videos=s,i.data.type="playlists"):i.data.video_id=this.id,i.success=this.successFunction,i.error=this.failFunction,wpbc.broadcast.trigger("spinner:on"),wp.media.ajax(i)}if("delete"!==e)return Backbone.Model.prototype.sync.apply(this,arguments);var o=this;return(i=i||{}).data=_.extend(i.data||{},{account:a,action:"bc_media_delete",id:this.get("id"),nonce:wpbc.preload.nonce,type:this.get("mediaType")}),wp.media.ajax(i).done(function(e){o.destroyed=!0,wpbc.broadcast.trigger("delete:successful",e),"videos"!==o.get("mediaType")&&_.isUndefined(o.get("video_ids"))?wpbc.preload.playlists=void 0:wpbc.preload.videos=void 0,wpbc.responses={}}).fail(function(e){o.destroyed=!1,wpbc.broadcast.trigger("videoEdit:message",e,"error"),wpbc.broadcast.trigger("spinner:off")})},parse:function(e){return e&&(e.date=new Date(e.date),e.modified=new Date(e.modified)),e},getAccountName:function(){this.get("account_id");var e=_.findWhere(wpbc.preload.accounts,{account_id:this.get("account_id")});return void 0===e?this.getSelectedAccountName():e.account_name},getSelectedAccountName:function(){var e=document.getElementById("brightcove-media-source");return-1===e.selectedIndex?"unavailable":e.options[e.selectedIndex].text},getReadableDuration:function(){var e=this.get("duration");if(e){e=Number(e/1e3);var t=Math.floor(e/3600),i=Math.floor(e%3600/60),a=Math.floor(e%3600%60);return(0<t?t+":"+(i<10?"0":""):"")+i+":"+(a<10?"0":"")+a}return e},getReadableDate:function(e){var t=this.get(e);if(t){var i=new Date(t),a=i.getHours(),s=i.getMinutes(),o=12<=a?"pm":"am";return a%=12,i.getFullYear()+"/"+(i.getMonth()+1)+"/"+i.getDate()+" - "+(a=a||12)+":"+(s=s<10?"0"+s:s)+" "+o}return t},successFunction:function(e){if(wpbc.broadcast.trigger("videoEdit:message",e,"success"),wpbc.broadcast.trigger("spinner:off"),_.isArray(this.get("video_ids"))&&wpbc.preload&&wpbc.preload.playlists){var i=this.get("id");_.each(wpbc.preload.playlists,function(e,t){e.id===i&&(wpbc.preload.playlists[t]=this.toJSON())},this)}wpbc.responses={},"videos"!==this.get("mediaType")&&_.isUndefined(this.get("video_ids"))?wpbc.preload.playlists=void 0:wpbc.preload.videos=void 0},failFunction:function(e){wpbc.broadcast.trigger("videoEdit:message",e,"error"),wpbc.broadcast.trigger("spinner:off")}}),MediaCollection=Backbone.Collection.extend({model:MediaModel,initialize:function(e,t){(t=t||{}).activeAccount&&(this.activeAccount=t.activeAccount),this.additionalRequest=!1,this.pageNumber=this.pageNumber||1,this.mediaType||"existingPlaylists"!==this.mediaCollectionViewType&&"libraryPlaylists"!==this.mediaCollectionViewType||(this.mediaType="videos"),this.mediaCollectionViewType=t.mediaCollectionViewType||"grid",t.excludeVideoIds&&"libraryPlaylists"===t.mediaCollectionViewType&&(this.excludeVideoIds=t.excludeVideoIds),t.videoIds&&!e?(this.mediaType="videos",this.videoIds=t.videoIds,this.fetch()):"playlists"!==t.mediaType&&(this.mediaType="videos",this.fetch()),this.mediaType=t.mediaType,"videos"===this.mediaType&&this.listenTo(wpbc.broadcast,"uploader:uploadedFileDetails",function(e){this.add(e,{at:0})}),this.activeAccount=t.activeAccount||"all",this.searchTerm=t.searchTerm||"",this.dates=t.dates||"all",this.tag=t.tag||"",this.listenTo(wpbc.broadcast,"change:activeAccount",function(e){this.activeAccount=e,wp.heartbeat.enqueue("brightcove_heartbeat",{accountId:e},!0),this.fetch()}),$(document).on("heartbeat-tick.brightcove_heartbeat",function(e,t){t.hasOwnProperty("brightcove_heartbeat")&&wp.heartbeat.enqueue("brightcove_heartbeat",{accountId:t.brightcove_heartbeat.account_id},!0)}),this.listenTo(wpbc.broadcast,"change:searchTerm",function(e){this.searchTerm=e,this.fetch()}),this.listenTo(wpbc.broadcast,"change:tag",function(e){"all"===e&&(e=""),this.tag=e,this.fetch()}),this.listenTo(wpbc.broadcast,"change:date",function(e){this.date=e,this.fetch()}),this.listenTo(wpbc.broadcast,"tabChange",function(e){if(this.killPendingRequests(),e.mediaType!==this.mediaType){this.mediaType=e.mediaType;for(var t,i=wpbc.preload[this.mediaType];t=this.first();)this.remove(t);void 0!==i?this.add(i):this.fetch()}})},killPendingRequests:function(){_.each(wpbc.requests,function(e){e.abort()}),wpbc.requests=[]},checksum:function(e){_.isString(e)||(e=_.isFunction(e.toJSON)?e.toJSON():JSON.stringify(e));for(var t=305419896,i=0;i<e.length;i++)t+=e.charCodeAt(i)*(i+1);return t},sync:function(e,t,i){if("read"!==e)return(MediaCollection.prototype.sync?MediaCollection.prototype:Backbone).sync.apply(this,arguments);(i=i||{}).data=_.extend(i.data||{},{action:"bc_media_query",account:this.activeAccount||wpbc.preload.defaultAccountId,dates:this.date,posts_per_page:wpbc.posts_per_page,page_number:this.pageNumber,nonce:wpbc.preload.nonce,search:this.searchTerm,tags:this.tag,tagName:wpbc.preload.tags[this.tag],type:this.mediaType||"videos"});var a=_.pick(i.data,"account","dates","posts_per_page","search","tags","type");this.additionalRequest=_.isEqual(a,wpbc.previousRequest),this.additionalRequest||(i.data.page_number=1),"existingPlaylists"!==this.mediaCollectionViewType&&(wpbc.previousRequest=a),this.videoIds&&(i.data.videoIds=this.videoIds.length?this.videoIds:"none"),i.data.query=void 0,_.contains(["libraryPlaylists","existingPlaylists"],this.mediaCollectionViewType)||this.killPendingRequests();var s=this.checksum(i.data);if(!_.isUndefined(wpbc.responses[s]))return this.parse({data:wpbc.responses[s]},"cached"),!0;var o=$.ajax({type:"POST",url:wp.ajax.settings.url,context:this,data:i.data}).done(function(e,t,i){this.parse(e,t,i,s)}).fail(this.fetchFail);return wpbc.requests.push(o),wpbc.broadcast.trigger("spinner:on"),o},fetchFail:function(){1<this.pageNumber&&this.pageNumber--,wpbc.broadcast.trigger("fetch:finished"),wpbc.broadcast.trigger("spinner:off"),wpbc.broadcast.trigger("fetch:apiError"),status},parse:function(e,t,i,a){if(wpbc.broadcast.trigger("fetch:finished"),wpbc.broadcast.trigger("spinner:off"),!_.contains(["success","cached"],t)||"cached"!==t&&!e.success)return wpbc.broadcast.trigger("fetch:apiError"),!1;var s=e.data;if("success"===t&&(wpbc.responses[a]=s),!1===s)return!1;_.isArray(s)||(s=[s]),_.isArray(this.excludeVideoIds)&&_.each(this.excludeVideoIds,function(e){s=_.without(s,_.findWhere(s,{id:e}))});var o=_.map(s,function(e){var t,i,a;return e instanceof Backbone.Model?(t=e.get("id"),e=e.attributes):t=e.id,(i=this.findWhere({id:t}))?(a=i.parse(e),_.isEqual(i.attributes,a)||i.set(a)):i=this.add(e),i.set("viewType",this.mediaCollectionViewType),i},this);this.additionalRequest?this.add(o):this.set(o)}}),BrightcoveMediaManagerModel=Backbone.Model.extend({defaults:{view:"grid",date:"all",tags:"all",type:null,preload:!0,search:"",account:wpbc.preload.defaultAccountId,poster:{},thumbnail:{}},initialize:function(e){_.defaults(e,this.defaults),wp.heartbeat.enqueue("brightcove_heartbeat",{accountId:wpbc.preload.defaultAccountId},!0);var t=new MediaCollection([],{mediaType:e.mediaType});t.reset(),e.preload&&e.preload.length&&t.add(e.preload),e.preload=!!e.preload,this.set("media-collection-view",new MediaCollectionView({collection:t})),this.set("options",e)}}),BrightcoveModalModel=Backbone.Model.extend({getMediaManagerSettings:function(){var e=this.get("tab"),t={upload:{accounts:"all",date:"all",embedType:"modal",mediaType:"videos",mode:"uploader",preload:!0,search:"",tags:"all",viewType:"grid",poster:{},thumbnail:{}},videos:{accounts:"all",date:"all",embedType:"modal",mediaType:"videos",mode:"manager",preload:!0,search:"",tags:"all",viewType:"grid"},playlists:{accounts:"all",date:"all",embedType:"modal",mediaType:"playlists",mode:"manager",preload:!0,search:"",tags:"all",viewType:"grid"},"video-experience":{accounts:"all",date:"all",embedType:"modal",mediaType:"videoexperience",mode:"manager",preload:!0,search:"",tags:"all",viewType:"grid"},"playlist-experience":{accounts:"all",date:"all",embedType:"modal",mediaType:"playlistexperience",mode:"manager",preload:!0,search:"",tags:"all",viewType:"grid"}};return void 0!==t[e]&&t[e]}}),UploadModelCollection=Backbone.Collection.extend({initialize:function(e){this.listenTo(wpbc.broadcast,"uploader:queuedFilesAdded",this.queuedFilesAdded)},queuedFilesAdded:function(e){_.each(e,function(e){this.add(new UploadModel(e))},this)}}),UploadModel=Backbone.Model.extend({initialize:function(e){},humanReadableSize:function(){var e=this.get("size");if(0===e)return"0 Byte";var t=Math.floor(Math.log(e)/Math.log(1e3));return(e/Math.pow(1e3,t)).toPrecision(3)+" "+["Bytes","KB","MB","GB"][t]}}),BrightcoveView=wp.Backbone.View.extend({subviews:null,registerSubview:function(e){this.subviews=this.subviews||[],this.subviews.push(e)},remove:function(){_.invoke(this.subviews,"remove"),wp.Backbone.View.prototype.remove.call(this)},insertShortcode:function(){if(this.model){var e=wpbc.shortcode;if(void 0===this.mediaType){var t=wp.template("brightcove-mediatype-notice");$("#lost-connection-notice").before(t),$("#js-mediatype-dismiss").on("click",function(){$("#js-mediatype-notice").first().fadeOut(500,function(){$(this).remove()})})}"content"===wpbc.modal.target?window.send_to_editor(e):($(wpbc.modal.target).val(e),$(wpbc.modal.target).change()),wpbc.broadcast.trigger("close:modal")}}}),ToolbarView=BrightcoveView.extend({tagName:"div",className:"media-toolbar wp-filter",template:wp.template("brightcove-media-toolbar"),events:{"click .view-list":"toggleList","click .view-grid":"toggleGrid","click .brightcove-toolbar":"toggleToolbar","change .brightcove-media-source":"sourceChanged","change .brightcove-media-dates":"datesChanged","change .brightcove-media-tags":"tagsChanged","change .brightcove-empty-playlists":"emptyPlaylistsChanged","click #media-search":"searchHandler","keyup .search":"enterHandler"},render:function(){var e=this.model.get("mediaType"),t={accounts:wpbc.preload.accounts,dates:{},mediaType:e,tags:wpbc.preload.tags,account:this.model.get("account")},i=wpbc.preload.dates,a=this.model.get("date");void 0!==i&&void 0!==i[e]&&void 0!==i[e][a]&&(t.dates=i[e][a]),this.$el.html(this.template(t));var s=this.$el.find(".spinner");this.listenTo(wpbc.broadcast,"spinner:on",function(){s.addClass("is-active").removeClass("hidden")}),this.listenTo(wpbc.broadcast,"spinner:off",function(){s.removeClass("is-active").addClass("hidden")})},toggleList:function(){this.trigger("viewType","list"),this.$el.find(".view-list").addClass("current"),this.$el.find(".view-grid").removeClass("current")},toggleGrid:function(){this.trigger("viewType","grid"),this.$el.find(".view-grid").addClass("current"),this.$el.find(".view-list").removeClass("current")},toggleToolbar:function(){var e=wp.template("brightcove-tooltip-notice");$(".brightcove-media-videos").before(e),$("#js-tooltip-dismiss").on("click",function(){$("#js-tooltip-notice").first().fadeOut(500,function(){$(this).remove()})})},sourceChanged:function(e){this.model.set("account",e.target.value),wpbc.broadcast.trigger("change:activeAccount",e.target.value)},datesChanged:function(e){wpbc.broadcast.trigger("change:date",e.target.value)},tagsChanged:function(e){wpbc.broadcast.trigger("change:tag",e.target.value)},emptyPlaylistsChanged:function(e){var t=$(e.target).prop("checked");wpbc.broadcast.trigger("change:emptyPlaylists",t)},enterHandler:function(e){13===e.keyCode&&this.searchHandler(e)},searchHandler:function(e){var t=$("#media-search-input").val();2<t.length&&t!==this.model.get("search")?(this.model.set("search",t),wpbc.broadcast.trigger("change:searchTerm",t)):0===t.length&&wpbc.broadcast.trigger("change:searchTerm","")}}),UploadVideoManagerView=BrightcoveView.extend({className:"brightcove-file-uploader",events:{"click .brightcove-start-upload":"triggerUpload"},initialize:function(e){this.collection=new UploadModelCollection,e&&(this.options=e,this.successMessage=e.successMessage||this.successMessage),this.uploadWindow=new UploadWindowView,this.listenTo(this.collection,"add",this.fileAdded),this.listenTo(wpbc.broadcast,"pendingUpload:selectedItem",this.selectedItem),this.listenTo(wpbc.broadcast,"uploader:prepareUpload",this.prepareUpload),this.listenTo(wpbc.broadcast,"uploader:successMessage",this.successMessage),this.listenTo(wpbc.broadcast,"uploader:errorMessage",this.errorMessage),this.listenTo(wpbc.broadcast,"uploader:clear",this.resetUploads),this.listenTo(wpbc.broadcast,"upload:video",this.resetUploads)},resetUploads:function(){for(;model=this.collection.first();)this.collection.remove(model)},errorMessage:function(e){this.message(e,"error")},successMessage:function(e){this.message(e,"success")},message:function(e,t){var i=this.$el.find(".brightcove-messages"),a="";"success"===t?a="notice updated":"error"===t&&(a="error");var s=$('<div class="wrap"><div class="brightcove-message"><p class="message-text"></p></div></div>');i.append(s),s.addClass(a).find(".message-text").text(e),s.delay(4e3).fadeOut(500,function(){$(this).remove(),wpbc.broadcast.trigger("upload:video")})},prepareUpload:function(){wpbc.uploads=wpbc.uploads||{},this.collection.each(function(e){wpbc.uploads[e.get("id")]={account:e.get("account"),name:e.get("fileName"),tags:e.get("tags")}}),wpbc.broadcast.trigger("uploader:startUpload")},fileAdded:function(e,t){1===this.collection.length&&this.render();var i=new UploadView({model:e});i.render(),i.$el.appendTo(this.$el.find(".brightcove-pending-uploads"))},triggerUpload:function(){wpbc.broadcast.trigger("uploader:prepareUpload")},selectedItem:function(e){this.uploadDetails=new UploadDetailsView({model:e}),this.uploadDetails.render(),this.$el.find(".brightcove-pending-upload-details").remove(),this.uploadDetails.$el.appendTo(this.$el.find(".brightcove-upload-queued-files"))},render:function(e){this.collection.length?this.template=wp.template("brightcove-uploader-queued-files"):(this.template=wp.template("brightcove-uploader-inline"),this.uploadWindow.render(),this.uploadWindow.$el.appendTo($("body"))),this.$el.html(this.template(e)),this.collection.length?this.$el.find(".brightcove-start-upload").show():this.$el.find(".brightcove-start-upload").hide()}}),BrightcoveRouter=Backbone.Router.extend({routes:{"add-new-brightcove-video":"addNew"},addNew:function(){wpbc.broadcast.trigger("upload:video")}}),BrightcoveMediaManagerView=BrightcoveView.extend({tagName:"div",className:"brightcove-media",events:{},scrollHandler:function(){wpbc.broadcast.trigger("scroll:mediaGrid")},initialize:function(e){var t=wp.media.isTouchDevice?300:200;this.scrollHandler=_.chain(this.scrollHandler).bind(this).throttle(t).value(),this.options=e,this.mode=e.mode||"manager",e.preload=!!this.options.preload&&wpbc.preload[this.options.mediaType],this.model=new BrightcoveMediaManagerModel(e),this.toolbar=new ToolbarView({model:this.model}),this.uploader=new UploadVideoManagerView,this.model.set("accounts",wpbc.preload.accounts),this.model.set("activeAccount",e.account),this.listenTo(this.toolbar,"viewType",function(e){this.model.set("view",e)}),this.listenTo(wpbc.broadcast,"videoEdit:message",this.message),this.listenTo(wpbc.broadcast,"permanent:message",this.permanentMessage),this.listenTo(wpbc.broadcast,"remove:permanentMessage",function(){wpbc.permanentMessage&&wpbc.permanentMessage.remove(),this.$el.find(".brightcove-message").addClass("hidden")}),this.listenTo(this.model,"change:view",function(e,t){this.model.get("media-collection-view").setViewType(t)}),this.listenTo(this.model,"change:mode",function(e,t){"uploader"!==t&&wpbc.broadcast.trigger("uploader:clear")}),this.listenTo(wpbc.broadcast,"cancelPreview:media",function(e){this.clearPreview(),this.detailsView=void 0,this.model.set("mode","manager"),this.render(),wpbc.broadcast.trigger("toggle:insertButton")}),this.listenTo(wpbc.broadcast,"change:emptyPlaylists",function(t){var e=this.model.get("media-collection-view");this.model.set("mode","manager"),_.each(e.collection.models,function(e){"EXPLICIT"===e.get("type")&&0===e.get("video_ids").length&&(t?e.view.$el.hide():e.view.$el.show())})}),this.listenTo(wpbc.broadcast,"delete:successful",function(e){this.startGridView(),this.message(e,"success")}),this.listenTo(wpbc.broadcast,"change:activeAccount",function(e){this.clearPreview(),this.model.set("activeAccount",e),this.model.set("mode","manager"),this.render()}),this.listenTo(wpbc.broadcast,"change:tag",function(e){this.clearPreview(),this.model.set("tag",e)}),this.listenTo(wpbc.broadcast,"change:date",function(e){this.clearPreview(),this.model.set("date",e)}),this.listenTo(wpbc.broadcast,"upload:video",function(){this.showUploader()}),this.listenTo(this.model,"change:search",function(e,t){this.model.get("search")}),this.listenTo(wpbc.broadcast,"start:gridview",function(){_.invoke(this.subviews,"remove"),this.detailsView=null,this.startGridView()}),this.listenTo(wpbc.broadcast,"tabChange",function(e){this.model.set(e),this.detailsView instanceof MediaDetailsView&&(this.detailsView.remove(),this.detailsView=void 0),this.render()}),this.listenTo(wpbc.broadcast,"edit:media",function(e){var t=this.model.get("mediaType");if("videos"===t){if("editVideo"===this.model.get("mode"))return!0;this.$el.find(".brightcove-message").addClass("hidden"),this.editView=new VideoEditView({model:e}),this.registerSubview(this.editView),this.model.set("mode","editVideo"),this.render()}else if("videoexperience"===t){if("editVideo"===this.model.get("mode"))return!0;this.$el.find(".brightcove-message").addClass("hidden"),this.editView=new VideoEditView({model:e}),this.registerSubview(this.editView),this.model.set("mode","editVideo"),this.render()}else{if("editPlaylist"===this.model.get("mode"))return!0;this.editView=new PlaylistEditView({model:e}),this.registerSubview(this.editView),this.model.set("mode","editPlaylist"),this.render()}}),this.listenTo(wpbc.broadcast,"preview:media",function(e,t){if("videos"===this.model.get("mediaType")){if("previewVideo"===this.model.get("mode"))return!0;this.previewView=new VideoPreviewView({model:e,shortcode:t}),this.registerSubview(this.previewView),this.model.set("mode","previewVideo"),this.render()}else this.model.set("mode","editPlaylist")}),this.listenTo(wpbc.broadcast,"change:searchTerm",function(e){this.clearPreview()}),this.listenTo(wpbc.broadcast,"select:media",function(e){if(e.model.collection&&"videoexperience"===e.model.collection.mediaType){e.$el.toggleClass("highlighted"),e.model.set("isSelected",e.$el.hasClass("highlighted"));var t=_.filter(e.model.collection.models,function(e){return e.get("isSelected")}),i=_.map(t,function(e){return e.get("id")});this.detailsView.model.set("id",i),_.isEmpty(i)&&"videoexperience"!==this.model.get("mediaType")?(wpbc.broadcast.trigger("toggle:insertButton"),$("#shortcode").val("")):wpbc.broadcast.trigger("toggle:insertButton","enabled")}else this.detailsView&&this.detailsView.model===e.model?(this.detailsView.$el.toggle(),e.$el.toggleClass("highlighted"),this.model.get("media-collection-view").$el.toggleClass("menu-visible"),wpbc.broadcast.trigger("toggle:insertButton")):(this.clearPreview(),this.detailsView=new MediaDetailsView({model:e.model,el:$(".brightcove.media-frame-menu"),mediaType:this.model.get("mediaType")}),this.registerSubview(this.detailsView),this.detailsView.render(),this.detailsView.$el.toggle(!0),this.model.get("media-collection-view").$el.addClass("menu-visible"),e.$el.addClass("highlighted"),wpbc.broadcast.trigger("toggle:insertButton","enabled"))})},clearPreview:function(){this.detailsView instanceof MediaDetailsView&&this.detailsView.remove(),this.model.get("media-collection-view").$el.find(".highlighted").removeClass("highlighted")},startGridView:function(){this.model.set("mode","manager"),this.render()},message:function(e,t,i){var a=this.$el.find(".brightcove-message");"success"===t?(a.addClass("updated"),a.removeClass("error")):"error"===t&&(a.addClass("error"),a.removeClass("updated"));var s=$("<p></p>");s.text(e),a.append(s),a.removeClass("hidden"),i?(wpbc.permanentMessage&&wpbc.permanentMessage.remove(),wpbc.permanentMessage=s):(a.addClass("notice is-dismissible"),this.makeNoticesDismissible())},makeNoticesDismissible:function(){$(".notice.is-dismissible").each(function(){var t=$(this),e=$('<button type="button" class="notice-dismiss"><span class="screen-reader-text"></span></button>'),i=commonL10n.dismiss||"";e.find(".screen-reader-text").text(i),e.on("click.wp-dismiss-notice",function(e){e.preventDefault(),t.fadeTo(100,0,function(){t.slideUp(100,function(){t.addClass("hidden").css({opacity:1,"margin-bottom":0,display:""}).empty()})})}),t.append(e)})},showUploader:function(){this.model.set("mode","uploader"),this.render()},permanentMessage:function(e){this.message(e,"error",!0)},render:function(){var e,t=this.model.get("options"),i=this.model.get("mode");if(_.invoke(this.subviews,"remove"),"uploader"===i)this.template=wp.template("brightcove-uploader-container"),this.$el.empty(),this.$el.html(this.template(t)),this.uploader.render(),this.uploader.delegateEvents(),this.uploader.$el.appendTo($(".brightcove-uploader"));else if("manager"===i){this.template=wp.template("brightcove-media"),this.$el.html(this.template(t)),this.toolbar.render(),this.toolbar.delegateEvents(),this.toolbar.$el.show(),this.toolbar.$el.appendTo(this.$el.find(".media-frame-router"));var a=this.model.get("media-collection-view");a.render(),a.delegateEvents();var s=this.$el.find(".media-frame-content");s.on("scroll",this.scrollHandler),a.$el.appendTo(s),wpbc.initialSync&&(wpbc.broadcast.trigger("remove:permanentMessage"),wpbc.broadcast.trigger("permanent:message",wpbc.preload.messages.ongoingSync)),"videoexperience"===this.model.get("mediaType")&&(this.detailsView=new MediaDetailsView({model:new MediaModel(this.model.attributes),el:$(".brightcove.media-frame-menu"),mediaType:this.model.get("mediaType")}),this.registerSubview(this.detailsView),this.detailsView.render(),this.detailsView.$el.toggle(!0),wpbc.broadcast.trigger("toggle:insertButton","enabled"),this.model.get("media-collection-view").$el.addClass("menu-visible"))}else"editVideo"===i?(this.toolbar.$el.hide(),(e=this.$el.find(".media-frame-content")).empty(),this.editView.render(),this.editView.delegateEvents(),this.editView.$el.appendTo(e),this.$el.find(".brightcove.media-frame-content").addClass("edit-view")):"editPlaylist"===i?(this.toolbar.$el.hide(),(e=this.$el).empty(),e.html('<div class="playlist-edit-container"></div>'),e=e.find(".playlist-edit-container"),this.editView.render(),this.editView.delegateEvents(),this.editView.$el.appendTo(e),e.addClass("playlist")):"previewVideo"===i&&(this.toolbar.$el.hide(),(e=this.$el.find(".media-frame-content")).empty(),this.previewView.render(),this.detailsView.render({detailsMode:"preview"}),this.previewView.delegateEvents(),this.previewView.$el.appendTo(e),this.$el.find(".brightcove.media-frame-toolbar").hide(),brightcove.createExperiences());return"editPlaylist"!==i&&this.$el.find(".media-frame-content").removeClass("playlist"),this}}),BrightcoveModalView=BrightcoveView.extend({tagName:"div",className:"media-modal brightcove",template:wp.template("brightcove-media-modal"),events:{"click .brightcove.media-menu-item":"changeTab","click .brightcove.media-button-insert":"insertIntoPost","click .media-modal-close":"closeModal","click .brightcove.save-sync":"saveSync","click .brightcove.button.back":"back"},initialize:function(e){this.model=new BrightcoveModalModel({tab:e.tab}),this.brightcoveMediaManager=new BrightcoveMediaManagerView(this.model.getMediaManagerSettings()),this.registerSubview(this.brightcoveMediaManager),this.listenTo(wpbc.broadcast,"toggle:insertButton",function(e){this.toggleInsertButton(e)}),this.listenTo(wpbc.broadcast,"close:modal",this.closeModal)},saveSync:function(e){wpbc.broadcast.trigger("save:media",e)},back:function(e){wpbc.broadcast.trigger("back:editvideo",e)},insertIntoPost:function(e){e.preventDefault(),$(e.currentTarget).hasClass("disabled")||(wpbc.shortcode=$("#shortcode").val(),wpbc.broadcast.trigger("insert:shortcode"))},toggleInsertButton:function(e){var t=this.$el.find(".brightcove.media-button-insert"),i=$(".attachment.highlighted").find(".processing").length;t.show(),1===i?t.attr("disabled","disabled"):"enabled"===e?t.removeAttr("disabled"):"disabled"===e?t.attr("disabled","disabled"):void 0!==t.attr("disabled")?t.removeAttr("disabled"):t.attr("disabled","disabled")},changeTab:function(e){if(e.preventDefault(),!$(e.target).hasClass("active")){$(e.target).addClass("active");var t=_.without(e.target.classList,"media-menu-item","brightcove")[0],i=["videos","upload","playlists","video-experience","playlist-experience"];_.each(_.without(i,t),function(e){$(".brightcove.media-menu-item."+e).removeClass("active")}),_.contains(i,t)&&(this.model.set("tab",t),wpbc.broadcast.trigger("spinner:off"),wpbc.broadcast.trigger("tabChange",this.model.getMediaManagerSettings()))}},closeModal:function(e){"editVideo"===wpbc.modal.brightcoveMediaManager.model.get("mode")&&wpbc.broadcast.trigger("start:gridview"),!_.isUndefined(e)&&$(e.currentTarget).parent().hasClass("disabled")||(this.$el.hide(),$("body").removeClass("modal-open"))},message:function(e){this.$el.find(".brightcove-message")},render:function(e){this.$el.html(this.template(e)),this.brightcoveMediaManager.render(),this.brightcoveMediaManager.$el.appendTo(this.$el.find(".media-frame-content")),this.listenTo(wpbc.broadcast,"edit:media",function(e,t){"videos"===t?(this.$el.find(".brightcove.button.save-sync").show(),this.$el.find(".brightcove.button.back").show()):(this.$el.find(".brightcove.button.save-sync").hide(),this.$el.find(".brightcove.button.back").hide()),this.$el.find(".brightcove.media-button-insert").hide()}),this.listenTo(wpbc.broadcast,"save:media back:editvideo start:gridView",function(){this.$el.find(".brightcove.button.save-sync").hide(),this.$el.find(".brightcove.button.back").hide(),this.$el.find(".brightcove.media-button-insert").show(),wpbc.broadcast.trigger("toggle:insertButton")})}}),MediaDetailsView=BrightcoveView.extend({tagName:"div",className:"media-details",attributes:function(){return{tabIndex:0,role:"checkbox","aria-label":this.model.get("title"),"aria-checked":!1,"data-id":this.model.get("id")}},events:{"click .brightcove.edit.button":"triggerEditMedia","click .brightcove.preview.button":"triggerPreviewMedia","click .brightcove.back.button":"triggerCancelPreviewMedia",'click .playlist-details input[name="embed-style"]':"togglePlaylistSizing","change #aspect-ratio":"toggleUnits",'change .experience-details input[name="sizing"],.experience-details input[name="embed-style"]':"toggleExperienceUnits",'change #video-player, #autoplay, #mute, input[name="embed-style"], input[name="sizing"], #aspect-ratio, #width, #height':"generateShortcode","change #generate-shortcode":"toggleShortcodeGeneration"},triggerEditMedia:function(e){e.preventDefault(),wpbc.broadcast.trigger("edit:media",this.model,this.mediaType)},triggerPreviewMedia:function(e){e.preventDefault();var t=$("#shortcode").val();wpbc.broadcast.trigger("preview:media",this.model,t)},triggerCancelPreviewMedia:function(e){wpbc.broadcast.trigger("cancelPreview:media",this.mediaType)},togglePlaylistSizing:function(e){var t=$('.playlist-details input[name="embed-style"]:checked').val(),i=$("#sizing-fixed, #sizing-responsive");"iframe"===t?i.removeAttr("disabled"):i.attr("disabled",!0)},toggleUnits:function(e){var t=$("#aspect-ratio").val();if("custom"===t)$("#height").removeAttr("readonly");else{var i=$("#height"),a=$("#width").val();i.attr("readonly",!0),0<a&&("16:9"===t?i.val(a/(16/9)):i.val(a/(4/3)))}},toggleExperienceUnits:function(e){var t=$('input[name="sizing"]:checked'),i=t.val(),a=$('input[name="embed-style"]:checked').val(),s=$("#height"),o=$("#width"),d=$('input[name="sizing"]'),n=$(".embed-sizing-div");s.removeAttr("readonly"),o.removeAttr("readonly"),t.show(),n.show(),"responsive"===i&&"javascript"===a?s.attr("readonly",!0):"fixed"===i&&"javascript"===a?(s.removeAttr("readonly"),o.removeAttr("readonly")):(d.attr("checked",!1),$("#sizing-fixed").attr("checked",!0),n.hide())},generateShortcode:function(){switch(this.mediaType){case"videos":this.generateVideoShortcode();break;case"videoexperience":this.generateExperienceShortcode();break;case"playlistexperience":this.generatePlaylistExperienceShortcode();break;default:this.generatePlaylistShortcode()}},generateVideoShortcode:function(){var e,t=this.model.get("id").replace(/\D/g,""),i=this.model.get("account_id").replace(/\D/g,""),a=$("#video-player").val(),s=$("#autoplay").is(":checked")?"autoplay":"",o=$("#mute").is(":checked")?"muted":"",d=$('input[name="embed-style"]:checked').val(),n=$('input[name="sizing"]:checked').val(),l=$("#aspect-ratio").val(),r="",c=$("#width").val(),h=$("#height").val(),p="0px",g=c+"px";r="16:9"===l?"56":"4:3"===l?"75":h/c*100,"responsive"===n?h=c="100%":(c+="px",h+="px","iframe"===d&&(p=c)),e='[bc_video video_id="'+t+'" account_id="'+i+'" player_id="'+a+'" embed="'+d+'" padding_top="'+r+'%" autoplay="'+s+'" min_width="'+p+'" max_width="'+g+'" mute="'+o+'" width="'+c+'" height="'+h+'" ]',$("#shortcode").val(e)},generateExperienceShortcode:function(){var e,t;t=void 0!==this.model.get("id")?(this.model.set("account_id",this.model.get("account")),e=this.model.get("id").join(","),this.model.get("account_id").replace(/\D/g,"")):(e="",document.getElementById("brightcove-media-source").value);var i,a=$("#video-player").val(),s=$('input[name="embed-style"]:checked').val(),o=$('input[name="sizing"]:checked').val(),d=$("#width").val(),n=$("#height").val(),l="0px",r=d+"px";"responsive"===o?n=d="100%":(d+="px",n+="px","iframe"===s&&(l=d)),i='[bc_experience experience_id="'+a+'" account_id="'+t+'" embed="'+s+'" min_width="'+l+'" max_width="'+r+'" width="'+d+'" height="'+n+'" video_ids="'+e+'"  ]',$("#shortcode").val(i)},generatePlaylistShortcode:function(){var e,t=this.model.get("id").replace(/\D/g,""),i=this.model.get("account_id").replace(/\D/g,""),a=$("#video-player").val(),s=$("#autoplay").is(":checked")?"autoplay":"",o=$("#mute").is(":checked")?"muted":"",d=$('input[name="embed-style"]:checked').val(),n=$('input[name="sizing"]:checked').val(),l=$("#aspect-ratio").val(),r="",c=$("#width").val(),h=$("#height").val(),p="px",g="0px;",u=c+p;"in-page-vertical"===d?e='[bc_playlist playlist_id="'+t+'" account_id="'+i+'" player_id="'+a+'" embed="in-page-vertical" autoplay="'+s+'" mute="'+o+'" min_width="" max_width="" padding_top="" width="'+c+p+'" height="'+h+p+'" ]':"in-page-horizontal"===d?e='[bc_playlist playlist_id="'+t+'" account_id="'+i+'" player_id="'+a+'" embed="in-page-horizontal" autoplay="'+s+'" mute="'+o+'" min_width="" max_width="" padding_top="" width="'+c+p+'" height="'+h+p+'" ]':"iframe"===d&&(r="16:9"===l?"56":"4:3"===l?"75":h/c*100,"responsive"===n?h=c="100%":(h+=p,g=c+=p),e='[bc_playlist playlist_id="'+t+'" account_id="'+i+'" player_id="'+a+'" embed="iframe" autoplay="'+s+'" mute="'+o+'" min_width="'+g+'" max_width="'+u+'" padding_top="'+r+'%" width="'+c+'" height="'+h+'" ]'),$("#shortcode").val(e)},generatePlaylistExperienceShortcode:function(){var e,t=this.model.get("id").replace(/\D/g,""),i=this.model.get("account_id").replace(/\D/g,""),a=$("#video-player").val(),s=$('input[name="embed-style"]:checked').val(),o=$('input[name="sizing"]:checked').val(),d=$("#width").val(),n=$("#height").val(),l="0px",r=d+"px";"responsive"===o?n=d="100%":(d+="px",n+="px","iframe"===s&&(l=d)),e='[bc_experience experience_id="'+a+'" account_id="'+i+'" embed="'+s+'" min_width="'+l+'" max_width="'+r+'" width="'+d+'" height="'+n+'" playlist_id="'+t+'"  ]',$("#shortcode").val(e)},toggleShortcodeGeneration:function(){var e=$("#generate-shortcode").val(),t=$('#video-player, #autoplay, input[name="embed-style"], input[name="sizing"], #aspect-ratio, #width, #height, #units');"manual"===e?($("#shortcode").removeAttr("readonly"),t.attr("disabled",!0)):($("#shortcode").attr("readonly",!0),t.removeAttr("disabled"))},initialize:function(e){e=e||{},this.type=e.type?e.type:"grid",this.mediaType=e.mediaType,this.listenTo(wpbc.broadcast,"insert:shortcode",this.insertShortcode),this.listenTo(this.model,"change",this.render)},render:function(e){return(e=_.extend({},e,this.model.toJSON())).duration=this.model.getReadableDuration(),e.updated_at_readable=this.model.getReadableDate("updated_at"),e.created_at_readable=this.model.getReadableDate("created_at"),e.account_name=this.model.getAccountName(),this.template=wp.template("brightcove-media-item-details-"+this.mediaType),this.$el.html(this.template(e)),this.delegateEvents(),this.generateShortcode(),this},remove:function(){return this.undelegateEvents(),this.$el.empty(),this.stopListening(),this}}),MediaView=BrightcoveView.extend({tagName:"li",className:"attachment brightcove",attributes:function(){return{tabIndex:0,role:"checkbox","aria-label":this.model.get("title"),"aria-checked":!1,"data-id":this.model.get("id")}},events:{"click .attachment-preview":"toggleDetailView","click .video-move-up":"videoMoveUp","click .video-move-down":"videoMoveDown","click .trash":"removeVideoFromPlaylist","click .add-to-playlist":"videoAdd","click .edit":"triggerEditMedia","click .preview":"triggerPreviewMedia"},triggerEditMedia:function(e){e.preventDefault(),wpbc.broadcast.trigger("edit:media",this.model)},triggerPreviewMedia:function(e){e.preventDefault(),wpbc.broadcast.trigger("preview:media",this.model)},buttons:{},initialize:function(e){e=e||{},this.type=e.type?e.type:"grid",this.listenTo(this.model,"change:view",function(e,t){this.type!==t&&(this.type=t,this.render())}),this.render()},render:function(){var e=this.model.toJSON();return e.duration=this.model.getReadableDuration(),e.updated_at_readable=this.model.getReadableDate("updated_at"),e.account_name=this.model.getAccountName(),"existingPlaylists"===e.viewType?this.template=wp.template("brightcove-playlist-edit-video-in-playlist"):"libraryPlaylists"===e.viewType?this.template=wp.template("brightcove-playlist-edit-video-in-library"):this.template=wp.template("brightcove-media-item-"+this.type),e.buttons=this.buttons,this.$el.html(this.template(e)),this.$el.toggleClass("uploading",e.uploading),this},toggleDetailView:function(){wpbc.broadcast.trigger("select:media",this)},videoMoveUp:function(){wpbc.broadcast.trigger("playlist:moveUp",this)},videoMoveDown:function(){wpbc.broadcast.trigger("playlist:moveDown",this)},videoAdd:function(){wpbc.broadcast.trigger("playlist:add",this)},removeVideoFromPlaylist:function(){wpbc.broadcast.trigger("playlist:remove",this)}}),PlaylistEditView=BrightcoveView.extend({tagName:"div",className:"playlist-edit brightcove attachment-details",template:wp.template("brightcove-playlist-edit"),events:{"click .brightcove.button.save-sync":"saveSync","click .brightcove.playlist-back":"back","change .brightcove-name":"updatedName"},deleteVideo:function(e){e.preventDefault(),this.model.set("mediaType","videos"),this.model.destroy()},updatedName:function(e){this.model.get("name")!==e.target.value&&(this.model.set("name",e.target.value),this.model.save())},back:function(e){e.preventDefault(),wpbc.broadcast.trigger("start:gridview")},saveSync:function(e){e.preventDefault(),this.model.set("name",this.$el.find(".brightcove-name").val()),this.model.set("description",this.$el.find(".brightcove-description").val()),this.model.set("long_description",this.$el.find(".brightcove-long-description").val()),this.model.set("tags",this.$el.find(".brightcove-tags").val()),this.model.set("mediaType","videos"),this.model.save()},initialize:function(){this.listenTo(wpbc.broadcast,"tabChange",function(){_.invoke(this.subviews,"remove")}),wpbc.broadcast.trigger("spinner:off")},render:function(e){e=this.model.toJSON(),this.$el.html(this.template(e)),this.spinner=this.$el.find(".spinner"),e.video_ids&&(this.killPendingRequests(),this.playlistVideosView=new MediaCollectionView({el:this.$el.find(".existing-videos"),videoIds:e.video_ids,activeAccount:this.model.get("account_id"),mediaCollectionViewType:"existingPlaylists",mediaType:"playlists"}),this.libraryVideosView=new MediaCollectionView({el:this.$el.find(".library-videos"),excludeVideoIds:e.video_ids,activeAccount:this.model.get("account_id"),mediaCollectionViewType:"libraryPlaylists",mediaType:"playlists"}),this.registerSubview(this.playlistVideosView),this.registerSubview(this.libraryVideosView),this.listenTo(wpbc.broadcast,"playlist:changed",_.throttle(this.playlistChanged,300)),this.listenTo(wpbc.broadcast,"insert:shortcode",this.insertShortcode)),this.listenTo(wpbc.broadcast,"spinner:on",function(){this.spinner.addClass("is-active").removeClass("hidden")}),this.listenTo(wpbc.broadcast,"spinner:off",function(){this.spinner.removeClass("is-active").addClass("hidden")})},playlistChanged:function(e){this.killPendingRequests(),this.model.set("video_ids",e),this.model.save()},killPendingRequests:function(){_.each(wpbc.requests,function(e){e.abort()}),wpbc.requests=[]}}),UploadDetailsView=BrightcoveView.extend({className:"brightcove-pending-upload-details attachment-details",tagName:"div",template:wp.template("brightcove-pending-upload-details"),events:{"keyup .brightcove-name":"nameChanged","keyup .brightcove-tags":"tagsChanged","change .brightcove-media-source":"accountChanged"},initialize:function(e){this.listenTo(wpbc.broadcast,"pendingUpload:hideDetails",this.hide),this.listenTo(wpbc.broadcast,"uploader:fileUploaded",function(e){e.id===this.model.get("id")&&(this.model.set("uploaded",!0),this.render())}),this.model.set("ingestSuccess",!0),this.model.set("uploadSuccess",!0)},nameChanged:function(e){this.model.set("fileName",e.target.value)},tagsChanged:function(e){this.model.set("tags",e.target.value)},accountChanged:function(e){this.model.set("account",e.target.value)},hide:function(){this.$el.hide()},render:function(e){(e=e||{}).fileName=this.model.get("fileName"),e.tags=this.model.get("tags"),e.size=this.model.humanReadableSize(),e.accounts=this.model.get("accounts"),e.account=this.model.get("account"),e.uploaded=this.model.get("uploaded"),this.$el.html(this.template(e))}});UploadWindowView=BrightcoveView.extend({className:"uploader-window",template:wp.template("brightcove-uploader-window"),initialize:function(e){_.bindAll(this,"uploaderFilesAdded"),this.listenTo(wpbc.broadcast,"uploader:queuedFilesAdded",this.hide),this.listenTo(wpbc.broadcast,"uploader:startUpload",this.uploaderStartUpload),this.listenTo(wpbc.broadcast,"uploader:clear",this.resetUploads)},render:function(e){this.$el.html(this.template(e)),_.defer(_.bind(this.afterRender,this))},resetUploads:function(){this.uploader&&this.uploader.files&&(this.uploader.files=[])},afterRender:function(){this.uploader=new plupload.Uploader(_.defaults(this.options,wpbc.preload.plupload)),this.uploader.added=this.uploaderFilesAdded,this.uploader.progress=this.uploaderUploadProgress,this.uploader.bind("FilesAdded",this.uploaderFilesAdded),this.uploader.bind("UploadProgress",this.uploaderUploadProgress),this.uploader.bind("BeforeUpload",this.uploaderBeforeUpload),this.uploader.bind("FileUploaded",this.uploaderFileUploaded),this.uploader.bind("init",this.uploaderAfterInit),this.uploader.init(),$("html").on("dragenter",_.bind(this.show,this));var e=wpbc.preload.plupload.drop_element.replace(/[^a-zA-Z0-9-]+/g,"");$("#"+e).on("dropzone:leave",_.bind(this.hide,this))},uploaderAfterInit:function(e){var t,i,a,s=wpbc.preload.plupload.drop_element.replace(/[^a-zA-Z0-9-]+/g,""),o=$("#"+s);if(a=e.features.dragdrop,o){if(o.toggleClass("supports-drag-drop",!!a),!a)return o.unbind(".wp-uploader");o.bind("dragover.wp-uploader",function(){t&&clearTimeout(t),i||(o.trigger("dropzone:enter").addClass("drag-over"),i=!0)}),o.bind("dragleave.wp-uploader, drop.wp-uploader",function(){t=setTimeout(function(){i=!1,o.trigger("dropzone:leave").removeClass("drag-over")},0)})}},show:function(){var e=this.$el.show();_.defer(function(){e.css({opacity:1})})},hide:function(){var e=this.$el.css({opacity:0});wp.media.transition(e).done(function(){"0"===e.css("opacity")&&e.hide()}),_.delay(function(){"0"===e.css("opacity")&&e.is(":visible")&&e.hide()},500)},uploaderFilesAdded:function(e,t){wpbc.broadcast.trigger("uploader:queuedFilesAdded",t)},uploaderStartUpload:function(){this.uploader.start()},uploaderUploadProgress:function(e,t){wpbc.broadcast.trigger("uploader:uploadProgress",t)},uploaderBeforeUpload:function(e,t){e.settings.multipart_params=_.defaults(wpbc.uploads[t.id],wpbc.preload.plupload.multipart_params,{nonce:wpbc.preload.nonce})},uploaderFileUploaded:function(e,t,i){var a=JSON.parse(i.response);wpbc.broadcast.trigger("uploader:fileUploaded",t),"success"===a.data.upload&&"success"===a.data.ingest?(a.data.videoDetails&&wpbc.broadcast.trigger("uploader:uploadedFileDetails",a.data.videoDetails),wpbc.broadcast.trigger("uploader:successfulUploadIngest",t)):(t.percent=0,t.status=plupload.UPLOADING,e.state=plupload.STARTED,e.trigger("StateChanged"),wpbc.broadcast.trigger("uploader:failedUploadIngest",t))}});var UploadView=BrightcoveView.extend({className:"brightcove-pending-upload",tagName:"tr",template:wp.template("brightcove-pending-upload"),events:{click:"toggleRow"},initialize:function(){this.listenTo(wpbc.broadcast,"pendingUpload:selectedRow",this.otherToggledRow),this.listenTo(wpbc.broadcast,"uploader:uploadProgress",this.uploadProgress),this.listenTo(wpbc.broadcast,"uploader:getParams",this.getParams),this.listenTo(wpbc.broadcast,"uploader:successfulUploadIngest",this.successfulUploadIngest),this.listenTo(wpbc.broadcast,"uploader:failedUploadIngest",this.failedUploadIngest);var e={fileName:this.model.get("name"),tags:"",accounts:wpbc.preload.accounts,account:wpbc.preload.defaultAccount,ingestSuccess:!1,uploadSuccess:!1,uploaded:!1};this.model.set(e),this.listenTo(this.model,"change:fileName",this.render),this.listenTo(this.model,"change:account",this.render)},render:function(e){(e=e||{}).fileName=this.model.get("fileName"),e.size=this.model.humanReadableSize();var t=this.model.get("account");e.accountName=wpbc.preload.accounts[t].account_name,e.percent=this.model.get("percent"),e.activeUpload=this.model.get("activeUpload"),e.ingestSuccess=this.model.get("ingestSuccess"),e.uploadSuccess=this.model.get("uploadSuccess"),this.$el.html(this.template(e)),this.model.get("selected")&&this.$el.addClass("selected"),this.model.get("ingestSuccess")&&this.$el.addClass("ingest-success"),this.model.get("uploadSuccess")&&this.$el.addClass("upload-success")},getParams:function(e){wpbc.broadcast.trigger("uploader:params","abcde")},failedUploadIngest:function(e){e.id===this.model.get("id")&&(wpbc.broadcast.trigger("uploader:errorMessage",wpbc.preload.messages.unableToUpload.replace("%%s%%",this.model.get("fileName"))),this.render())},successfulUploadIngest:function(e){e.id===this.model.get("id")&&(wpbc.broadcast.trigger("uploader:successMessage",wpbc.preload.messages.successUpload.replace("%%s%%",this.model.get("fileName"))),this.render())},uploadProgress:function(e){e.id===this.model.get("id")?(this.model.set("activeUpload",!0),this.model.set("percent",e.percent),this.render()):this.model.get("activeUpload")&&(this.model.unset("activeUpload"),this.render())},toggleRow:function(e){this.$el.toggleClass("selected"),this.$el.hasClass("selected")?(this.model.set("selected",!0),wpbc.broadcast.trigger("pendingUpload:selectedRow",this.cid)):wpbc.broadcast.trigger("pendingUpload:hideDetails",this.cid)},otherToggledRow:function(e){e!==this.cid?(this.$el.removeClass("selected"),this.model.unset("selected")):wpbc.broadcast.trigger("pendingUpload:selectedItem",this.model)}}),VideoEditView=BrightcoveView.extend({tagName:"div",className:"video-edit brightcove attachment-details",template:wp.template("brightcove-video-edit"),events:{"click .brightcove.button.save-sync":"saveSync","click .brightcove.delete":"deleteVideo","click .brightcove.button.back":"back","click .setting .button":"openMediaManager","click .attachment .check":"removeAttachment","click .caption-secondary-fields .delete":"removeCaptionRow","click .add-remote-caption":"addCaptionRow"},back:function(e){e.preventDefault(),$(e.currentTarget).hasClass("disabled")||wpbc.broadcast.trigger("start:gridview")},deleteVideo:function(){confirm(wpbc.preload.messages.confirmDelete)&&(wpbc.broadcast.trigger("spinner:on"),this.model.set("mediaType","videos"),this.model.destroy())},openMediaManager:function(i){i.preventDefault();var e=$(i.currentTarget).parents(".setting").data("editor"),a=wp.media.frames.brightcove=wp.media(),s=this,t={state:"insert",title:wp.media.view.l10n.addMedia,multiple:!1};a.open(e,t),a.on("select",function(){var e=a.state().get("selection").first().toJSON(),t=$(i).parents(".setting");s.setAttachment(e,t),wpbc.broadcast.trigger("media:selected")})},setAttachment:function(e,t){t=t.prevObject[0].currentTarget;var i=(t=$(t).prev("input")).parents(".attachment"),a=i.find(".-image");if(-1<i.context.className.indexOf("captions"))if("vtt"===e.subtype)this.addCaptionRow(!1,e);else{var s=wp.template("brightcove-badformat-notice");$(".brightcove-media-videos").prepend(s),$(".badformat.notice-dismiss").on("click",function(){$(".notice.badformat").first().fadeOut(500,function(){$(this).remove()})})}else{var o={url:e.sizes.full.url,width:e.sizes.full.width,height:e.sizes.full.height},d=document.createElement("img");d.src=e.sizes.full.url,d.className="thumbnail",i.addClass("active"),a.html(d)}t.val(JSON.stringify(o))},removeAttachment:function(e){var t=$(e.currentTarget).parents(".attachment"),i=t.find(".-image");t.next("input").val(""),t.removeClass("active"),i.empty()},addCaptionRow:function(e,t){e&&e.preventDefault();var i=void 0;t&&(i=t.url),this.addCaption(i)},addCaption:function(e,t,i){var a=$(document.getElementById("js-caption-empty-row")).clone(),s=document.getElementById("js-captions");document.getElementById("js-caption-url");a.find("input").prop("disabled",!1),a.removeAttr("id"),a.removeClass("empty-row"),e&&a.find(".brightcove-captions").val(e),t&&a.find(".brightcove-captions-language").val(t),i&&a.find(".brightcove-captions-label").val(i),$(s).append(a),this.updateCaptionText()},removeCaptionRow:function(e){e.preventDefault();var t=e.currentTarget,i=$(t).parents(".caption-repeater"),a=i.find(".brightcove-captions"),s=i.find(".brightcove-captions-launguage"),o=i.find(".brightcove-captions-label");$(a).val(""),$(s).val(""),$(o).val(""),i.remove(),this.updateCaptionText()},updateCaptionText:function(){var e=$(".captions .button-secondary"),t=$(".add-remote-caption");1<document.getElementsByClassName("caption-repeater").length?(e.text(wpbc.str_addcaption),t.text(wpbc.str_addremote)):(e.text(wpbc.str_selectfile),t.text(wpbc.str_useremote))},saveSync:function(e){e.preventDefault();var a=$(e.currentTarget).parents(".media-modal"),t=a.find(".button, .button-link");if(!t.hasClass("disabled")){t.addClass("disabled"),a.find(".delete-action").hide(),wpbc.broadcast.trigger("spinner:on"),this.model.set("name",this.$el.find(".brightcove-name").val()),this.model.set("description",this.$el.find(".brightcove-description").val()),this.model.set("long_description",this.$el.find(".brightcove-long-description").val()),this.model.set("tags",this.$el.find(".brightcove-tags").val().trim().replace(/(^,)|(,$)/g,"")),this.model.set("height",this.$el.find(".brightcove-height").val()),this.model.set("width",this.$el.find(".brightcove-width").val()),this.model.set("mediaType","videos"),this.model.set("poster",this.$el.find(".brightcove-poster").val()),this.model.set("thumbnail",this.$el.find(".brightcove-thumbnail").val());var s=[];this.$el.find(".caption-repeater.repeater-row").not(".empty-row").each(function(){var e=$(this),t=e.find(".brightcove-captions").val();if("vtt"!==t.split("?")[0].split(".").pop()){var i=wp.template("brightcove-badformat-notice");return $(".brightcove-media-videos").prepend(i),void $(".badformat.notice-dismiss").on("click",function(){$(".notice.badformat").first().fadeOut(500,function(){$(this).remove()})})}s.push({source:t,language:e.find(".brightcove-captions-language").val(),label:e.find(".brightcove-captions-label").val()})}),this.model.set("captions",s);var o={},d=this.model.get("custom");_.each(this.$el.find(".brightcove-custom-string, .brightcove-custom-enum"),function(e){var t=e.getAttribute("data-id"),i=e.value.trim();""!==i&&(o[t]=i,_.find(d,function(e){return e.id==t}).value=i)}),this.model.set("custom_fields",o),this.model.set("custom",d),this.model.save().done(function(){if(0<a.length){var e,t,i=a.find(".brightcove-tags").val();i&&(e=i.split(","),t=_.difference(e,wpbc.preload.tags)),_.each(t,function(e){""!==(e=e.trim())&&wpbc.preload.tags.push(e)}),wpbc.preload.tags.sort()}}).always(function(){t.removeClass("disabled"),a.find(".delete-action").show()}),wpbc.broadcast.trigger("start:gridview")}},render:function(e){this.listenTo(wpbc.broadcast,"save:media",this.saveSync),this.listenTo(wpbc.broadcast,"back:editvideo",this.back),this.listenTo(wpbc.broadcast,"insert:shortcode",this.insertShortcode),e=this.model.toJSON(),this.$el.html(this.template(e));var t=this.$el.find("#brightcove-custom-fields"),i=wp.template("brightcove-video-edit-custom-string"),a=wp.template("brightcove-video-edit-custom-enum");_.each(this.model.get("custom"),function(e){if("_change_history"!==e.id)switch(e.type){case"string":t.append(i(e));break;case"enum":t.append(a(e))}});var s=this.model.get("history");if(void 0!==s){var o="";s=JSON.parse(s),_.each(s,function(e){o+=e.user+" - "+e.time+"\n"}),""!==o&&this.$el.find("textarea.brightcove-change-history").val(o)}var d=this.$el.find(".spinner");if(this.listenTo(wpbc.broadcast,"spinner:on",function(){d.addClass("is-active").removeClass("hidden")}),this.listenTo(wpbc.broadcast,"spinner:off",function(){d.removeClass("is-active").addClass("hidden")}),this.model.get("poster")&&this.displayAttachment("poster"),this.model.get("thumbnail")&&this.displayAttachment("thumbnail"),this.model.get("captions"))for(var n=this.model.get("captions"),l=0,r=n.length;l<r;l++){var c=n[l];this.addCaption(c.source,c.language,c.label)}}}),VideoPreviewView=BrightcoveView.extend({tagName:"div",className:"video-preview brightcove",template:wp.template("brightcove-video-preview"),shortcode:"",initialize:function(e){this.shortcode=e.shortcode},render:function(e){var t=this;(e=e||{}).id=this.model.get("id"),e.account_id=this.model.get("account_id"),$.ajax({url:ajaxurl,dataType:"json",method:"POST",data:{action:"bc_resolve_shortcode",shortcode:this.shortcode,video_id:e.id,account_id:e.account_id},success:function(e){t.$el.html(e.data)}}),this.listenTo(wpbc.broadcast,"insert:shortcode",this.insertShortcode)}}),MediaCollectionView=BrightcoveView.extend({tagName:"ul",className:"brightcove-media attachments",attributes:{tabIndex:-1},events:{scroll:"scrollHandler"},loadMoreMediaItems:function(){this.fetchingResults=!0,this.collection.fetch()},scrollHandler:function(){if("existingPlaylists"!==this.collection.mediaCollectionViewType){!this.fetchingResults&&this.el.scrollTop+this.el.clientHeight+200>this.el.scrollHeight&&(this.collection.pageNumber+=1,this.loadMoreMediaItems())}},initialize:function(e){this.fetchingResults=!1,this.listenTo(wpbc.broadcast,"fetch:finished",function(){this.fetchingResults=!1}),this.listenTo(wpbc.broadcast,"fetch:apiError",this.handleAPIError);var t=wp.media.isTouchDevice?300:200;this.scrollHandler=_.chain(this.scrollHandler).bind(this).throttle(t).value(),this.listenTo(wpbc.broadcast,"scroll:mediaGrid",this.scrollHandler),e=e||{},this.el.id=_.uniqueId("__attachments-view-"),!this.collection&&e.videoIds?(this.collection=new MediaCollection(null,{videoIds:e.videoIds,activeAccount:e.activeAccount,mediaCollectionViewType:e.mediaCollectionViewType}),this.listenTo(wpbc.broadcast,"playlist:moveUp",this.videoMoveUp),this.listenTo(wpbc.broadcast,"playlist:moveDown",this.videoMoveDown),this.listenTo(wpbc.broadcast,"playlist:remove",this.videoRemove),this.listenTo(wpbc.broadcast,"playlist:add",this.videoAdd)):this.collection||"libraryPlaylists"!==e.mediaCollectionViewType||(this.collection=new MediaCollection(null,{excludeVideoIds:e.excludeVideoIds,activeAccount:e.activeAccount,mediaCollectionViewType:e.mediaCollectionViewType}),this.listenTo(wpbc.broadcast,"playlist:remove",this.videoRemove),this.listenTo(wpbc.broadcast,"playlist:add",this.videoAdd)),_.defaults(this.options,{refreshSensitivity:wp.media.isTouchDevice?300:200,refreshThreshold:3,VideoView:wp.media.view.Video,sortable:!1,resize:!0,idealColumnWidth:202}),this._viewsByCid={},this.resizeEvent="resize.media-modal-columns",this.listenTo(this.collection,"add",function(e){this.views.add(this.createMediaView(e),{at:this.collection.indexOf(e)})},this),this.listenTo(this.collection,"remove",function(e){e&&(e.view?e.view.remove():e.cid&&this._viewsByCid[e.cid]&&this._viewsByCid[e.cid].remove())},this),this.listenTo(this.collection,"reset",this.render),this.scroll=_.chain(this.scroll).bind(this).throttle(this.options.refreshSensitivity).value(),this.options.scrollElement=this.options.scrollElement||this.el,$(this.options.scrollElement).on("scroll",this.scroll),_.bindAll(this,"setColumns"),this.options.resize&&(this.on("ready",this.bindEvents),_.defer(this.setColumns,this))},handleAPIError:function(){this.el.innerText=wpbc.str_apifailure},render:function(){this.listenTo(wpbc.broadcast,"spinner:off",function(){$("#js-media-loading").css("display","none")}),this.$el.empty(),this.collection.each(function(e){e.view=new MediaView({model:e}),this.registerSubview(e.view),e.view.render(),e.view.delegateEvents(),e.view.$el.appendTo(this.$el),wpbc.broadcast.trigger("spinner:off")},this)},setViewType:function(t){this.collection.each(function(e){e.set("view",t)},this)},bindEvents:function(){this.$window.off(this.resizeEvent).on(this.resizeEvent,_.debounce(this.setColumns,50))},setColumns:function(){var e=this.columns,t=this.$el.width();t&&(this.columns=Math.min(Math.round(t/this.options.idealColumnWidth),12)||1,e&&e===this.columns||this.$el.closest(".media-frame-content").attr("data-columns",this.columns))},createMediaView:function(e){e.set("viewType",this.collection.mediaCollectionViewType);var t=new MediaView({controller:this.controller,model:e,collection:this.collection,selection:this.options.selection});return this.registerSubview(t),this._viewsByCid[e.cid]=t},prepare:function(){this.collection.length?this.views.set(this.collection.map(this.createMediaView,this)):(this.views.unset(),this.collection.more().done(this.scroll))},ready:function(){this.scroll()},scroll:function(){var e,t=this,i=this.options.scrollElement,a=i.scrollTop;i===document&&(i=document.body,a=$(document).scrollTop()),"function"===this.collection.hasMore&&$(i).is(":visible")&&this.collection.hasMore()&&(e=this.views.parent.toolbar,i.scrollHeight-(a+i.clientHeight)<i.clientHeight/3&&e.get("spinner").show(),i.scrollHeight<a+i.clientHeight*this.options.refreshThreshold&&this.collection.more().done(function(){t.scroll(),e.get("spinner").hide()}))},videoMoveUp:function(e){var t=e.model,i=this.collection.indexOf(t);0<i&&(this.collection.remove(t,{silent:!0}),this.collection.add(t,{at:i-1})),this.render(),this.playlistChanged()},videoMoveDown:function(e){var t=e.model,i=this.collection.indexOf(t);i<this.collection.models.length&&(this.collection.remove(t,{silent:!0}),this.collection.add(t,{at:i+1})),this.render(),this.playlistChanged()},videoRemove:function(e){var t=e.model;-1===this.collection.indexOf(t)?this.collection.add(t):(this.collection.remove(t,{silent:!0}),this.playlistChanged()),this.render()},videoAdd:function(e){var t=e.model;-1===this.collection.indexOf(t)?(this.collection.add(t),this.playlistChanged()):(this.collection.remove(t,{silent:!0}),this.render())},playlistChanged:function(){var t=[];this.collection.each(function(e){t.push(e.id)}),this.videoIds=t,this.syncPlaylist()},syncPlaylist:function(){wpbc.broadcast.trigger("playlist:changed",this.videoIds)}}),App={renderMediaManager:function(e){var t=$(".brightcove-media-"+e);document.getElementById("content_ifr");t.length&&new BrightcoveMediaManagerView({el:t,date:"all",embedType:"page",preload:!0,mode:"manager",search:"",accounts:"all",tags:"all",mediaType:e,viewType:"grid"}).render()},load:function(){wpbc.requests=[],wpbc.responses={},wpbc.broadcast=_.extend({},Backbone.Events),this.loaded()},loaded:function(){var e=$(".brightcove-modal"),t=new BrightcoveRouter;wpbc.triggerModal=function(){wpbc.modal?wpbc.modal.$el.show():(wpbc.modal=new BrightcoveModalView({el:e,tab:"videos"}),wpbc.modal.render(),wpbc.modal.$el.find(".spinner").addClass("is-active")),$("body").addClass("modal-open")};_.each(["videos","playlists"],function(e){App.renderMediaManager(e)}),$(".account-toggle-button").on("click",function(e){e.preventDefault(),$(this).hide(),$(".brightcove-account-row.hidden").show()}),$(".brightcove-add-new-video").on("click",function(e){e.preventDefault(),t.navigate("add-new-brightcove-video",{trigger:!0})}),$(document).on("click",".brightcove-add-media",function(e){e.preventDefault(),wpbc.triggerModal(),wpbc.modal.target=e.currentTarget.dataset.target}),$(document).keyup(function(e){27===e.keyCode&&wpbc.broadcast.trigger("close:modal")}),$("a.brightcove-action-delete-source").on("click",function(e){var t=$(this).data("alert-message");if(!confirm(t))return!1})}};jQuery(document).ready(function(){App.load();new BrightcoveRouter;Backbone.History.started||Backbone.history.start()});
     3var MediaModel=Backbone.Model.extend({sync:function(e,t,i){var a=null;if(_.find(wpbc.preload.accounts,function(e,t){if(e.account_id===this.get("account_id"))return a=t,!0},this),_.isUndefined(this.id))return $.Deferred().rejectWith(this).promise();if("read"===e)return(i=i||{}).context=this,i.data=_.extend(i.data||{},{action:"bc_media_fetch",id:this.id}),wp.media.ajax(i);if("update"===e){(i=i||{}).context=this,i.data=_.extend(i.data||{},{account:a,action:"bc_media_update",description:this.get("description"),long_description:this.get("long_description"),name:this.get("name"),nonce:wpbc.preload.nonce,tags:this.get("tags"),oldFolderId:this.get("oldFolderId"),folderId:this.get("folderId"),type:this.get("mediaType"),custom_fields:this.get("custom_fields"),history:this.get("_change_history"),poster:this.get("poster"),thumbnail:this.get("thumbnail"),captions:this.get("captions")});var s=this.get("video_ids");return s?(i.data.playlist_id=this.id,i.data.playlist_videos=s,i.data.type="playlists"):i.data.video_id=this.id,i.success=this.successFunction,i.error=this.failFunction,wpbc.broadcast.trigger("spinner:on"),wp.media.ajax(i)}if("delete"!==e)return Backbone.Model.prototype.sync.apply(this,arguments);var o=this;return(i=i||{}).data=_.extend(i.data||{},{account:a,action:"bc_media_delete",id:this.get("id"),nonce:wpbc.preload.nonce,type:this.get("mediaType")}),wp.media.ajax(i).done(function(e){o.destroyed=!0,wpbc.broadcast.trigger("delete:successful",e),"videos"!==o.get("mediaType")&&_.isUndefined(o.get("video_ids"))?wpbc.preload.playlists=void 0:wpbc.preload.videos=void 0,wpbc.responses={}}).fail(function(e){o.destroyed=!1,wpbc.broadcast.trigger("videoEdit:message",e,"error"),wpbc.broadcast.trigger("spinner:off")})},parse:function(e){return e&&(e.date=new Date(e.date),e.modified=new Date(e.modified)),e},getAccountName:function(){this.get("account_id");var e=_.findWhere(wpbc.preload.accounts,{account_id:this.get("account_id")});return void 0===e?this.getSelectedAccountName():e.account_name},getSelectedAccountName:function(){var e=document.getElementById("brightcove-media-source");return-1===e.selectedIndex?"unavailable":e.options[e.selectedIndex].text},getReadableDuration:function(){var e=this.get("duration");if(e){e=Number(e/1e3);var t=Math.floor(e/3600),i=Math.floor(e%3600/60),a=Math.floor(e%3600%60);return(0<t?t+":"+(i<10?"0":""):"")+i+":"+(a<10?"0":"")+a}return e},getReadableDate:function(e){var t=this.get(e);if(t){var i=new Date(t),a=i.getHours(),s=i.getMinutes(),o=12<=a?"pm":"am";return a%=12,i.getFullYear()+"/"+(i.getMonth()+1)+"/"+i.getDate()+" - "+(a=a||12)+":"+(s=s<10?"0"+s:s)+" "+o}return t},successFunction:function(e){if(wpbc.broadcast.trigger("videoEdit:message",e,"success"),wpbc.broadcast.trigger("spinner:off"),_.isArray(this.get("video_ids"))&&wpbc.preload&&wpbc.preload.playlists){var i=this.get("id");_.each(wpbc.preload.playlists,function(e,t){e.id===i&&(wpbc.preload.playlists[t]=this.toJSON())},this)}wpbc.responses={},"videos"!==this.get("mediaType")&&_.isUndefined(this.get("video_ids"))?wpbc.preload.playlists=void 0:wpbc.preload.videos=void 0},failFunction:function(e){wpbc.broadcast.trigger("videoEdit:message",e,"error"),wpbc.broadcast.trigger("spinner:off")}}),MediaCollection=Backbone.Collection.extend({model:MediaModel,initialize:function(e,t){(t=t||{}).activeAccount&&(this.activeAccount=t.activeAccount),this.additionalRequest=!1,this.pageNumber=this.pageNumber||1,this.mediaType||"existingPlaylists"!==this.mediaCollectionViewType&&"libraryPlaylists"!==this.mediaCollectionViewType||(this.mediaType="videos"),this.mediaCollectionViewType=t.mediaCollectionViewType||"grid",t.excludeVideoIds&&"libraryPlaylists"===t.mediaCollectionViewType&&(this.excludeVideoIds=t.excludeVideoIds),t.videoIds&&!e?(this.mediaType="videos",this.videoIds=t.videoIds,this.fetch()):"playlists"!==t.mediaType&&(this.mediaType="videos",this.fetch()),this.mediaType=t.mediaType,"videos"===this.mediaType&&this.listenTo(wpbc.broadcast,"uploader:uploadedFileDetails",function(e){this.add(e,{at:0})}),this.activeAccount=t.activeAccount||"all",this.searchTerm=t.searchTerm||"",this.dates=t.dates||"all",this.tag=t.tag||"",this.folderId=t.folderId||"",this.oldFolderId=t.oldFolderId||"",this.listenTo(wpbc.broadcast,"change:activeAccount",function(e){this.activeAccount=e,wp.heartbeat.enqueue("brightcove_heartbeat",{accountId:e},!0),this.fetch()}),$(document).on("heartbeat-tick.brightcove_heartbeat",function(e,t){t.hasOwnProperty("brightcove_heartbeat")&&wp.heartbeat.enqueue("brightcove_heartbeat",{accountId:t.brightcove_heartbeat.account_id},!0)}),this.listenTo(wpbc.broadcast,"change:searchTerm",function(e){this.searchTerm=e,this.fetch()}),this.listenTo(wpbc.broadcast,"change:tag",function(e){"all"===e&&(e=""),this.tag=e,this.fetch()}),this.listenTo(wpbc.broadcast,"change:folder",function(e){this.oldFolderId=this.folderId,"all"===e&&(e=""),this.folderId=e,this.fetch()}),this.listenTo(wpbc.broadcast,"change:date",function(e){this.date=e,this.fetch()}),this.listenTo(wpbc.broadcast,"tabChange",function(e){if(this.killPendingRequests(),e.mediaType!==this.mediaType){this.mediaType=e.mediaType;for(var t,i=wpbc.preload[this.mediaType];t=this.first();)this.remove(t);void 0!==i?this.add(i):this.fetch()}})},killPendingRequests:function(){_.each(wpbc.requests,function(e){e.abort()}),wpbc.requests=[]},checksum:function(e){_.isString(e)||(e=_.isFunction(e.toJSON)?e.toJSON():JSON.stringify(e));for(var t=305419896,i=0;i<e.length;i++)t+=e.charCodeAt(i)*(i+1);return t},sync:function(e,t,i){if("read"!==e)return(MediaCollection.prototype.sync?MediaCollection.prototype:Backbone).sync.apply(this,arguments);(i=i||{}).data=_.extend(i.data||{},{action:"bc_media_query",account:this.activeAccount||wpbc.preload.defaultAccountId,dates:this.date,posts_per_page:wpbc.posts_per_page,page_number:this.pageNumber,nonce:wpbc.preload.nonce,search:this.searchTerm,tags:this.tag,oldFolderId:this.oldFolderId,folderId:this.folderId,tagName:wpbc.preload.tags[this.tag],type:this.mediaType||"videos"});var a=_.pick(i.data,"account","dates","posts_per_page","search","tags","type","folderId","tagName");this.additionalRequest=_.isEqual(a,wpbc.previousRequest),this.additionalRequest||(i.data.page_number=1),"existingPlaylists"!==this.mediaCollectionViewType&&(wpbc.previousRequest=a),this.videoIds&&(i.data.videoIds=this.videoIds.length?this.videoIds:"none"),i.data.query=void 0,_.contains(["libraryPlaylists","existingPlaylists"],this.mediaCollectionViewType)||this.killPendingRequests();var s=this.checksum(i.data);if(!_.isUndefined(wpbc.responses[s]))return this.parse({data:wpbc.responses[s]},"cached"),!0;var o=$.ajax({type:"POST",url:wp.ajax.settings.url,context:this,data:i.data}).done(function(e,t,i){this.parse(e,t,i,s)}).fail(this.fetchFail);return wpbc.requests.push(o),wpbc.broadcast.trigger("spinner:on"),o},fetchFail:function(){1<this.pageNumber&&this.pageNumber--,wpbc.broadcast.trigger("fetch:finished"),wpbc.broadcast.trigger("spinner:off"),wpbc.broadcast.trigger("fetch:apiError"),status},parse:function(e,t,i,a){if(wpbc.broadcast.trigger("fetch:finished"),wpbc.broadcast.trigger("spinner:off"),!_.contains(["success","cached"],t)||"cached"!==t&&!e.success)return wpbc.broadcast.trigger("fetch:apiError"),!1;var s=e.data;if("success"===t&&(wpbc.responses[a]=s),!1===s)return!1;_.isArray(s)||(s=[s]),_.isArray(this.excludeVideoIds)&&_.each(this.excludeVideoIds,function(e){s=_.without(s,_.findWhere(s,{id:e}))}),0===s.length&&wpbc.broadcast.trigger("videoEdit:message","No videos found.","error",!0);var o=_.map(s,function(e){var t,i,a;return e instanceof Backbone.Model?(t=e.get("id"),e=e.attributes):t=e.id,(i=this.findWhere({id:t}))?(a=i.parse(e),_.isEqual(i.attributes,a)||i.set(a)):i=this.add(e),i.set("viewType",this.mediaCollectionViewType),i},this);this.additionalRequest?this.add(o):this.set(o)}}),BrightcoveMediaManagerModel=Backbone.Model.extend({defaults:{view:"grid",date:"all",tags:"all",type:null,preload:!0,search:"",account:wpbc.preload.defaultAccountId,poster:{},thumbnail:{}},initialize:function(e){_.defaults(e,this.defaults),wp.heartbeat.enqueue("brightcove_heartbeat",{accountId:wpbc.preload.defaultAccountId},!0);var t=new MediaCollection([],{mediaType:e.mediaType});t.reset(),e.preload&&e.preload.length&&t.add(e.preload),e.preload=!!e.preload,this.set("media-collection-view",new MediaCollectionView({collection:t})),this.set("options",e)}}),BrightcoveModalModel=Backbone.Model.extend({getMediaManagerSettings:function(){var e=this.get("tab"),t={upload:{accounts:"all",date:"all",embedType:"modal",mediaType:"videos",mode:"uploader",preload:!0,search:"",tags:"all",viewType:"grid",poster:{},thumbnail:{}},videos:{accounts:"all",date:"all",embedType:"modal",mediaType:"videos",mode:"manager",preload:!0,search:"",tags:"all",viewType:"grid"},playlists:{accounts:"all",date:"all",embedType:"modal",mediaType:"playlists",mode:"manager",preload:!0,search:"",tags:"all",viewType:"grid"},"video-experience":{accounts:"all",date:"all",embedType:"modal",mediaType:"videoexperience",mode:"manager",preload:!0,search:"",tags:"all",viewType:"grid"},"playlist-experience":{accounts:"all",date:"all",embedType:"modal",mediaType:"playlistexperience",mode:"manager",preload:!0,search:"",tags:"all",viewType:"grid"}};return void 0!==t[e]&&t[e]}}),UploadModelCollection=Backbone.Collection.extend({initialize:function(e){this.listenTo(wpbc.broadcast,"uploader:queuedFilesAdded",this.queuedFilesAdded)},queuedFilesAdded:function(e){_.each(e,function(e){this.add(new UploadModel(e))},this)}}),UploadModel=Backbone.Model.extend({initialize:function(e){},humanReadableSize:function(){var e=this.get("size");if(0===e)return"0 Byte";var t=Math.floor(Math.log(e)/Math.log(1e3));return(e/Math.pow(1e3,t)).toPrecision(3)+" "+["Bytes","KB","MB","GB"][t]}}),BrightcoveView=wp.Backbone.View.extend({subviews:null,registerSubview:function(e){this.subviews=this.subviews||[],this.subviews.push(e)},remove:function(){_.invoke(this.subviews,"remove"),wp.Backbone.View.prototype.remove.call(this)},insertShortcode:function(){if(this.model){var e=wpbc.shortcode;if(void 0===this.mediaType){var t=wp.template("brightcove-mediatype-notice");$("#lost-connection-notice").before(t),$("#js-mediatype-dismiss").on("click",function(){$("#js-mediatype-notice").first().fadeOut(500,function(){$(this).remove()})})}"content"===wpbc.modal.target?window.send_to_editor(e):($(wpbc.modal.target).val(e),$(wpbc.modal.target).change()),wpbc.broadcast.trigger("close:modal")}}}),ToolbarView=BrightcoveView.extend({tagName:"div",className:"media-toolbar wp-filter",template:wp.template("brightcove-media-toolbar"),events:{"click .view-list":"toggleList","click .view-grid":"toggleGrid","click .brightcove-toolbar":"toggleToolbar","change .brightcove-media-source":"sourceChanged","change .brightcove-media-dates":"datesChanged","change .brightcove-media-tags":"tagsChanged","change .brightcove-media-folders":"foldersChanged","change .brightcove-empty-playlists":"emptyPlaylistsChanged","click #media-search":"searchHandler","keyup .search":"enterHandler"},render:function(){var e=this.model.get("mediaType"),t={accounts:wpbc.preload.accounts,dates:{},mediaType:e,tags:wpbc.preload.tags,folders:wpbc.preload.folders,folderId:this.model.get("folderId"),account:this.model.get("account")},i=wpbc.preload.dates,a=this.model.get("date");void 0!==i&&void 0!==i[e]&&void 0!==i[e][a]&&(t.dates=i[e][a]),this.$el.html(this.template(t));var s=this.$el.find(".spinner");this.listenTo(wpbc.broadcast,"spinner:on",function(){s.addClass("is-active").removeClass("hidden")}),this.listenTo(wpbc.broadcast,"spinner:off",function(){s.removeClass("is-active").addClass("hidden")})},toggleList:function(){this.trigger("viewType","list"),this.$el.find(".view-list").addClass("current"),this.$el.find(".view-grid").removeClass("current")},toggleGrid:function(){this.trigger("viewType","grid"),this.$el.find(".view-grid").addClass("current"),this.$el.find(".view-list").removeClass("current")},toggleToolbar:function(){var e=wp.template("brightcove-tooltip-notice");$(".brightcove-media-videos").before(e),$("#js-tooltip-dismiss").on("click",function(){$("#js-tooltip-notice").first().fadeOut(500,function(){$(this).remove()})})},sourceChanged:function(e){this.model.set("account",e.target.value),wpbc.broadcast.trigger("change:activeAccount",e.target.value)},datesChanged:function(e){wpbc.broadcast.trigger("change:date",e.target.value)},tagsChanged:function(e){wpbc.broadcast.trigger("change:tag",e.target.value)},foldersChanged:function(e){this.model.set("oldFolderId",this.model.get("folderId")),this.model.set("folderId",e.target.value),wpbc.broadcast.trigger("change:folder",e.target.value)},emptyPlaylistsChanged:function(e){var t=$(e.target).prop("checked");wpbc.broadcast.trigger("change:emptyPlaylists",t)},enterHandler:function(e){13===e.keyCode&&this.searchHandler(e)},searchHandler:function(e){var t=$("#media-search-input").val();2<t.length&&t!==this.model.get("search")?(this.model.set("search",t),wpbc.broadcast.trigger("change:searchTerm",t)):0===t.length&&wpbc.broadcast.trigger("change:searchTerm","")}}),UploadVideoManagerView=BrightcoveView.extend({className:"brightcove-file-uploader",events:{"click .brightcove-start-upload":"triggerUpload"},initialize:function(e){this.collection=new UploadModelCollection,e&&(this.options=e,this.successMessage=e.successMessage||this.successMessage),this.uploadWindow=new UploadWindowView,this.listenTo(this.collection,"add",this.fileAdded),this.listenTo(wpbc.broadcast,"pendingUpload:selectedItem",this.selectedItem),this.listenTo(wpbc.broadcast,"uploader:prepareUpload",this.prepareUpload),this.listenTo(wpbc.broadcast,"uploader:successMessage",this.successMessage),this.listenTo(wpbc.broadcast,"uploader:errorMessage",this.errorMessage),this.listenTo(wpbc.broadcast,"uploader:clear",this.resetUploads),this.listenTo(wpbc.broadcast,"upload:video",this.resetUploads)},resetUploads:function(){for(;model=this.collection.first();)this.collection.remove(model)},errorMessage:function(e){this.message(e,"error")},successMessage:function(e){this.message(e,"success")},message:function(e,t){var i=this.$el.find(".brightcove-messages"),a="";"success"===t?a="notice updated":"error"===t&&(a="error");var s=$('<div class="wrap"><div class="brightcove-message"><p class="message-text"></p></div></div>');i.append(s),s.addClass(a).find(".message-text").text(e),s.delay(4e3).fadeOut(500,function(){$(this).remove(),wpbc.broadcast.trigger("upload:video")})},prepareUpload:function(){wpbc.uploads=wpbc.uploads||{},this.collection.each(function(e){wpbc.uploads[e.get("id")]={account:e.get("account"),name:e.get("fileName"),tags:e.get("tags")}}),wpbc.broadcast.trigger("uploader:startUpload")},fileAdded:function(e,t){1===this.collection.length&&this.render();var i=new UploadView({model:e});i.render(),i.$el.appendTo(this.$el.find(".brightcove-pending-uploads"))},triggerUpload:function(){wpbc.broadcast.trigger("uploader:prepareUpload")},selectedItem:function(e){this.uploadDetails=new UploadDetailsView({model:e}),this.uploadDetails.render(),this.$el.find(".brightcove-pending-upload-details").remove(),this.uploadDetails.$el.appendTo(this.$el.find(".brightcove-upload-queued-files"))},render:function(e){this.collection.length?this.template=wp.template("brightcove-uploader-queued-files"):(this.template=wp.template("brightcove-uploader-inline"),this.uploadWindow.render(),this.uploadWindow.$el.appendTo($("body"))),this.$el.html(this.template(e)),this.collection.length?this.$el.find(".brightcove-start-upload").show():this.$el.find(".brightcove-start-upload").hide()}}),BrightcoveRouter=Backbone.Router.extend({routes:{"add-new-brightcove-video":"addNew"},addNew:function(){wpbc.broadcast.trigger("upload:video")}}),BrightcoveMediaManagerView=BrightcoveView.extend({tagName:"div",className:"brightcove-media",events:{},scrollHandler:function(){wpbc.broadcast.trigger("scroll:mediaGrid")},initialize:function(e){var t=wp.media.isTouchDevice?300:200;this.scrollHandler=_.chain(this.scrollHandler).bind(this).throttle(t).value(),this.options=e,this.mode=e.mode||"manager",e.preload=!!this.options.preload&&wpbc.preload[this.options.mediaType],this.model=new BrightcoveMediaManagerModel(e),this.toolbar=new ToolbarView({model:this.model}),this.uploader=new UploadVideoManagerView,this.model.set("accounts",wpbc.preload.accounts),this.model.set("activeAccount",e.account),this.listenTo(this.toolbar,"viewType",function(e){this.model.set("view",e)}),this.listenTo(wpbc.broadcast,"videoEdit:message",this.message),this.listenTo(wpbc.broadcast,"permanent:message",this.permanentMessage),this.listenTo(wpbc.broadcast,"remove:permanentMessage",function(){wpbc.permanentMessage&&wpbc.permanentMessage.remove(),this.$el.find(".brightcove-message").addClass("hidden")}),this.listenTo(this.model,"change:view",function(e,t){this.model.get("media-collection-view").setViewType(t)}),this.listenTo(this.model,"change:mode",function(e,t){"uploader"!==t&&wpbc.broadcast.trigger("uploader:clear")}),this.listenTo(wpbc.broadcast,"cancelPreview:media",function(e){this.clearPreview(),this.detailsView=void 0,this.model.set("mode","manager"),this.render(),wpbc.broadcast.trigger("toggle:insertButton")}),this.listenTo(wpbc.broadcast,"change:emptyPlaylists",function(t){var e=this.model.get("media-collection-view");this.model.set("mode","manager"),_.each(e.collection.models,function(e){"EXPLICIT"===e.get("type")&&0===e.get("video_ids").length&&(t?e.view.$el.hide():e.view.$el.show())})}),this.listenTo(wpbc.broadcast,"delete:successful",function(e){this.startGridView(),this.message(e,"success")}),this.listenTo(wpbc.broadcast,"change:activeAccount",function(e){this.clearPreview(),this.model.set("activeAccount",e),this.model.set("mode","manager"),this.render()}),this.listenTo(wpbc.broadcast,"change:tag",function(e){this.clearPreview(),this.model.set("tag",e)}),this.listenTo(wpbc.broadcast,"change:folder",function(e){this.clearPreview(),this.model.set("oldFolderId",this.model.get("folderId")),this.model.set("folderId",e)}),this.listenTo(wpbc.broadcast,"change:date",function(e){this.clearPreview(),this.model.set("date",e)}),this.listenTo(wpbc.broadcast,"upload:video",function(){this.showUploader()}),this.listenTo(this.model,"change:search",function(e,t){this.model.get("search")}),this.listenTo(wpbc.broadcast,"start:gridview",function(){_.invoke(this.subviews,"remove"),this.detailsView=null,this.startGridView()}),this.listenTo(wpbc.broadcast,"tabChange",function(e){this.model.set(e),this.detailsView instanceof MediaDetailsView&&(this.detailsView.remove(),this.detailsView=void 0),this.render()}),this.listenTo(wpbc.broadcast,"edit:media",function(e){var t=this.model.get("mediaType");if("videos"===t){if("editVideo"===this.model.get("mode"))return!0;this.$el.find(".brightcove-message").addClass("hidden"),this.editView=new VideoEditView({model:e}),this.registerSubview(this.editView),this.model.set("mode","editVideo"),this.render()}else if("videoexperience"===t){if("editVideo"===this.model.get("mode"))return!0;this.$el.find(".brightcove-message").addClass("hidden"),this.editView=new VideoEditView({model:e}),this.registerSubview(this.editView),this.model.set("mode","editVideo"),this.render()}else{if("editPlaylist"===this.model.get("mode"))return!0;this.editView=new PlaylistEditView({model:e}),this.registerSubview(this.editView),this.model.set("mode","editPlaylist"),this.render()}}),this.listenTo(wpbc.broadcast,"preview:media",function(e,t){if("videos"===this.model.get("mediaType")){if("previewVideo"===this.model.get("mode"))return!0;this.previewView=new VideoPreviewView({model:e,shortcode:t}),this.registerSubview(this.previewView),this.model.set("mode","previewVideo"),this.render()}else this.model.set("mode","editPlaylist")}),this.listenTo(wpbc.broadcast,"change:searchTerm",function(e){this.clearPreview()}),this.listenTo(wpbc.broadcast,"select:media",function(e){if(e.model.collection&&"videoexperience"===e.model.collection.mediaType){e.$el.toggleClass("highlighted"),e.model.set("isSelected",e.$el.hasClass("highlighted"));var t=_.filter(e.model.collection.models,function(e){return e.get("isSelected")}),i=_.map(t,function(e){return e.get("id")});this.detailsView.model.set("id",i),_.isEmpty(i)&&"videoexperience"!==this.model.get("mediaType")?(wpbc.broadcast.trigger("toggle:insertButton"),$("#shortcode").val("")):wpbc.broadcast.trigger("toggle:insertButton","enabled")}else this.detailsView&&this.detailsView.model===e.model?(this.detailsView.$el.toggle(),e.$el.toggleClass("highlighted"),this.model.get("media-collection-view").$el.toggleClass("menu-visible"),wpbc.broadcast.trigger("toggle:insertButton")):(this.clearPreview(),this.detailsView=new MediaDetailsView({model:e.model,el:$(".brightcove.media-frame-menu"),mediaType:this.model.get("mediaType")}),this.registerSubview(this.detailsView),this.detailsView.render(),this.detailsView.$el.toggle(!0),this.model.get("media-collection-view").$el.addClass("menu-visible"),e.$el.addClass("highlighted"),wpbc.broadcast.trigger("toggle:insertButton","enabled"))})},clearPreview:function(){$(".brightcove-message").addClass("hidden"),this.detailsView instanceof MediaDetailsView&&this.detailsView.remove(),this.model.get("media-collection-view").$el.find(".highlighted").removeClass("highlighted")},startGridView:function(){this.model.set("mode","manager"),this.render()},message:function(e,t,i){var a=this.$el.find(".brightcove-message");"success"===t?(a.addClass("updated"),a.removeClass("error")):"error"===t&&(a.addClass("error"),a.removeClass("updated"));var s=$("<p></p>");s.text(e),a.html(s),a.removeClass("hidden"),i?(wpbc.permanentMessage&&wpbc.permanentMessage.remove(),wpbc.permanentMessage=s):(a.addClass("notice is-dismissible"),this.makeNoticesDismissible()),$("html, body").animate({scrollTop:0},"fast")},makeNoticesDismissible:function(){$(".notice.is-dismissible").each(function(){var t=$(this),e=$('<button type="button" class="notice-dismiss"><span class="screen-reader-text"></span></button>'),i=commonL10n.dismiss||"";e.find(".screen-reader-text").text(i),e.on("click.wp-dismiss-notice",function(e){e.preventDefault(),t.fadeTo(100,0,function(){t.slideUp(100,function(){t.addClass("hidden").css({opacity:1,"margin-bottom":0,display:""}).empty()})})}),t.append(e)})},showUploader:function(){this.model.set("mode","uploader"),this.render()},permanentMessage:function(e){this.message(e,"error",!0)},render:function(){var e,t=this.model.get("options"),i=this.model.get("mode");if(_.invoke(this.subviews,"remove"),"uploader"===i)this.template=wp.template("brightcove-uploader-container"),this.$el.empty(),this.$el.html(this.template(t)),this.uploader.render(),this.uploader.delegateEvents(),this.uploader.$el.appendTo($(".brightcove-uploader"));else if("manager"===i){this.template=wp.template("brightcove-media"),this.$el.html(this.template(t)),this.toolbar.render(),this.toolbar.delegateEvents(),this.toolbar.$el.show(),this.toolbar.$el.appendTo(this.$el.find(".media-frame-router"));var a=this.model.get("media-collection-view");a.render(),a.delegateEvents();var s=this.$el.find(".media-frame-content");s.on("scroll",this.scrollHandler),a.$el.appendTo(s),wpbc.initialSync&&(wpbc.broadcast.trigger("remove:permanentMessage"),wpbc.broadcast.trigger("permanent:message",wpbc.preload.messages.ongoingSync)),"videoexperience"===this.model.get("mediaType")&&(this.detailsView=new MediaDetailsView({model:new MediaModel(this.model.attributes),el:$(".brightcove.media-frame-menu"),mediaType:this.model.get("mediaType")}),this.registerSubview(this.detailsView),this.detailsView.render(),this.detailsView.$el.toggle(!0),wpbc.broadcast.trigger("toggle:insertButton","enabled"),this.model.get("media-collection-view").$el.addClass("menu-visible"))}else"editVideo"===i?(this.toolbar.$el.hide(),(e=this.$el.find(".media-frame-content")).empty(),this.editView.render(),this.editView.delegateEvents(),this.editView.$el.appendTo(e),this.$el.find(".brightcove.media-frame-content").addClass("edit-view")):"editPlaylist"===i?(this.toolbar.$el.hide(),(e=this.$el).empty(),e.html('<div class="playlist-edit-container"></div>'),e=e.find(".playlist-edit-container"),this.editView.render(),this.editView.delegateEvents(),this.editView.$el.appendTo(e),e.addClass("playlist")):"previewVideo"===i&&(this.toolbar.$el.hide(),(e=this.$el.find(".media-frame-content")).empty(),this.previewView.render(),this.detailsView.render({detailsMode:"preview"}),this.previewView.delegateEvents(),this.previewView.$el.appendTo(e),this.$el.find(".brightcove.media-frame-toolbar").hide(),brightcove.createExperiences());return"editPlaylist"!==i&&this.$el.find(".media-frame-content").removeClass("playlist"),this}}),BrightcoveModalView=BrightcoveView.extend({tagName:"div",className:"media-modal brightcove",template:wp.template("brightcove-media-modal"),events:{"click .brightcove.media-menu-item":"changeTab","click .brightcove.media-button-insert":"insertIntoPost","click .media-modal-close":"closeModal","click .brightcove.save-sync":"saveSync","click .brightcove.button.back":"back"},initialize:function(e){this.model=new BrightcoveModalModel({tab:e.tab}),this.brightcoveMediaManager=new BrightcoveMediaManagerView(this.model.getMediaManagerSettings()),this.registerSubview(this.brightcoveMediaManager),this.listenTo(wpbc.broadcast,"toggle:insertButton",function(e){this.toggleInsertButton(e)}),this.listenTo(wpbc.broadcast,"close:modal",this.closeModal)},saveSync:function(e){wpbc.broadcast.trigger("save:media",e)},back:function(e){wpbc.broadcast.trigger("back:editvideo",e)},insertIntoPost:function(e){e.preventDefault(),$(e.currentTarget).hasClass("disabled")||(wpbc.shortcode=$("#shortcode").val(),wpbc.broadcast.trigger("insert:shortcode"))},toggleInsertButton:function(e){var t=this.$el.find(".brightcove.media-button-insert"),i=$(".attachment.highlighted").find(".processing").length;t.show(),1===i?t.attr("disabled","disabled"):"enabled"===e?t.removeAttr("disabled"):"disabled"===e?t.attr("disabled","disabled"):void 0!==t.attr("disabled")?t.removeAttr("disabled"):t.attr("disabled","disabled")},changeTab:function(e){if(e.preventDefault(),!$(e.target).hasClass("active")){$(e.target).addClass("active");var t=_.without(e.target.classList,"media-menu-item","brightcove")[0],i=["videos","upload","playlists","video-experience","playlist-experience"];_.each(_.without(i,t),function(e){$(".brightcove.media-menu-item."+e).removeClass("active")}),_.contains(i,t)&&(this.model.set("tab",t),wpbc.broadcast.trigger("spinner:off"),wpbc.broadcast.trigger("tabChange",this.model.getMediaManagerSettings()))}},closeModal:function(e){"editVideo"===wpbc.modal.brightcoveMediaManager.model.get("mode")&&wpbc.broadcast.trigger("start:gridview"),!_.isUndefined(e)&&$(e.currentTarget).parent().hasClass("disabled")||(this.$el.hide(),$("body").removeClass("modal-open"))},message:function(e){this.$el.find(".brightcove-message")},render:function(e){this.$el.html(this.template(e)),this.brightcoveMediaManager.render(),this.brightcoveMediaManager.$el.appendTo(this.$el.find(".media-frame-content")),this.listenTo(wpbc.broadcast,"edit:media",function(e,t){"videos"===t?(this.$el.find(".brightcove.button.save-sync").show(),this.$el.find(".brightcove.button.back").show()):(this.$el.find(".brightcove.button.save-sync").hide(),this.$el.find(".brightcove.button.back").hide()),this.$el.find(".brightcove.media-button-insert").hide()}),this.listenTo(wpbc.broadcast,"save:media back:editvideo start:gridView",function(){this.$el.find(".brightcove.button.save-sync").hide(),this.$el.find(".brightcove.button.back").hide(),this.$el.find(".brightcove.media-button-insert").show(),wpbc.broadcast.trigger("toggle:insertButton")})}}),MediaDetailsView=BrightcoveView.extend({tagName:"div",className:"media-details",attributes:function(){return{tabIndex:0,role:"checkbox","aria-label":this.model.get("title"),"aria-checked":!1,"data-id":this.model.get("id")}},events:{"click .brightcove.edit.button":"triggerEditMedia","click .brightcove.preview.button":"triggerPreviewMedia","click .brightcove.back.button":"triggerCancelPreviewMedia",'click .playlist-details input[name="embed-style"]':"togglePlaylistSizing","change #aspect-ratio":"toggleUnits",'change .experience-details input[name="sizing"],.experience-details input[name="embed-style"]':"toggleExperienceUnits",'change #video-player, #autoplay, #mute, input[name="embed-style"], input[name="sizing"], #aspect-ratio, #width, #height':"generateShortcode","change #generate-shortcode":"toggleShortcodeGeneration"},triggerEditMedia:function(e){e.preventDefault(),wpbc.broadcast.trigger("edit:media",this.model,this.mediaType)},triggerPreviewMedia:function(e){e.preventDefault();var t=$("#shortcode").val();wpbc.broadcast.trigger("preview:media",this.model,t)},triggerCancelPreviewMedia:function(e){wpbc.broadcast.trigger("cancelPreview:media",this.mediaType)},togglePlaylistSizing:function(e){var t=$('.playlist-details input[name="embed-style"]:checked').val(),i=$("#sizing-fixed, #sizing-responsive");"iframe"===t?i.removeAttr("disabled"):i.attr("disabled",!0)},toggleUnits:function(e){var t=$("#aspect-ratio").val();if("custom"===t)$("#height").removeAttr("readonly");else{var i=$("#height"),a=$("#width").val();i.attr("readonly",!0),0<a&&("16:9"===t?i.val(a/(16/9)):i.val(a/(4/3)))}},toggleExperienceUnits:function(e){var t=$('input[name="sizing"]:checked'),i=t.val(),a=$('input[name="embed-style"]:checked').val(),s=$("#height"),o=$("#width"),d=$('input[name="sizing"]'),l=$(".embed-sizing-div");s.removeAttr("readonly"),o.removeAttr("readonly"),t.show(),l.show(),"responsive"===i&&"javascript"===a?s.attr("readonly",!0):"fixed"===i&&"javascript"===a?(s.removeAttr("readonly"),o.removeAttr("readonly")):(d.attr("checked",!1),$("#sizing-fixed").attr("checked",!0),l.hide())},generateShortcode:function(){switch(this.mediaType){case"videos":this.generateVideoShortcode();break;case"videoexperience":this.generateExperienceShortcode();break;case"playlistexperience":this.generatePlaylistExperienceShortcode();break;default:this.generatePlaylistShortcode()}},generateVideoShortcode:function(){var e,t=this.model.get("id").replace(/\D/g,""),i=this.model.get("account_id").replace(/\D/g,""),a=$("#video-player").val(),s=$("#autoplay").is(":checked")?"autoplay":"",o=$("#mute").is(":checked")?"muted":"",d=$('input[name="embed-style"]:checked').val(),l=$('input[name="sizing"]:checked').val(),n=$("#aspect-ratio").val(),r="",c=$("#width").val(),h=$("#height").val(),p="0px",g=c+"px";r="16:9"===n?"56":"4:3"===n?"75":h/c*100,"responsive"===l?h=c="100%":(c+="px",h+="px","iframe"===d&&(p=c)),e='[bc_video video_id="'+t+'" account_id="'+i+'" player_id="'+a+'" embed="'+d+'" padding_top="'+r+'%" autoplay="'+s+'" min_width="'+p+'" max_width="'+g+'" mute="'+o+'" width="'+c+'" height="'+h+'" ]',$("#shortcode").val(e)},generateExperienceShortcode:function(){var e,t;t=void 0!==this.model.get("id")?(this.model.set("account_id",this.model.get("account")),e=this.model.get("id").join(","),this.model.get("account_id").replace(/\D/g,"")):(e="",document.getElementById("brightcove-media-source").value);var i,a=$("#video-player").val(),s=$('input[name="embed-style"]:checked').val(),o=$('input[name="sizing"]:checked').val(),d=$("#width").val(),l=$("#height").val(),n="0px",r=d+"px";"responsive"===o?l=d="100%":(d+="px",l+="px","iframe"===s&&(n=d)),i='[bc_experience experience_id="'+a+'" account_id="'+t+'" embed="'+s+'" min_width="'+n+'" max_width="'+r+'" width="'+d+'" height="'+l+'" video_ids="'+e+'"  ]',$("#shortcode").val(i)},generatePlaylistShortcode:function(){var e,t=this.model.get("id").replace(/\D/g,""),i=this.model.get("account_id").replace(/\D/g,""),a=$("#video-player").val(),s=$("#autoplay").is(":checked")?"autoplay":"",o=$("#mute").is(":checked")?"muted":"",d=$('input[name="embed-style"]:checked').val(),l=$('input[name="sizing"]:checked').val(),n=$("#aspect-ratio").val(),r="",c=$("#width").val(),h=$("#height").val(),p="px",g="0px;",u=c+p;"in-page-vertical"===d?e='[bc_playlist playlist_id="'+t+'" account_id="'+i+'" player_id="'+a+'" embed="in-page-vertical" autoplay="'+s+'" mute="'+o+'" min_width="" max_width="" padding_top="" width="'+c+p+'" height="'+h+p+'" ]':"in-page-horizontal"===d?e='[bc_playlist playlist_id="'+t+'" account_id="'+i+'" player_id="'+a+'" embed="in-page-horizontal" autoplay="'+s+'" mute="'+o+'" min_width="" max_width="" padding_top="" width="'+c+p+'" height="'+h+p+'" ]':"iframe"===d&&(r="16:9"===n?"56":"4:3"===n?"75":h/c*100,"responsive"===l?h=c="100%":(h+=p,g=c+=p),e='[bc_playlist playlist_id="'+t+'" account_id="'+i+'" player_id="'+a+'" embed="iframe" autoplay="'+s+'" mute="'+o+'" min_width="'+g+'" max_width="'+u+'" padding_top="'+r+'%" width="'+c+'" height="'+h+'" ]'),$("#shortcode").val(e)},generatePlaylistExperienceShortcode:function(){var e,t=this.model.get("id").replace(/\D/g,""),i=this.model.get("account_id").replace(/\D/g,""),a=$("#video-player").val(),s=$('input[name="embed-style"]:checked').val(),o=$('input[name="sizing"]:checked').val(),d=$("#width").val(),l=$("#height").val(),n="0px",r=d+"px";"responsive"===o?l=d="100%":(d+="px",l+="px","iframe"===s&&(n=d)),e='[bc_experience experience_id="'+a+'" account_id="'+i+'" embed="'+s+'" min_width="'+n+'" max_width="'+r+'" width="'+d+'" height="'+l+'" playlist_id="'+t+'"  ]',$("#shortcode").val(e)},toggleShortcodeGeneration:function(){var e=$("#generate-shortcode").val(),t=$('#video-player, #autoplay, input[name="embed-style"], input[name="sizing"], #aspect-ratio, #width, #height, #units');"manual"===e?($("#shortcode").removeAttr("readonly"),t.attr("disabled",!0)):($("#shortcode").attr("readonly",!0),t.removeAttr("disabled"))},initialize:function(e){e=e||{},this.type=e.type?e.type:"grid",this.mediaType=e.mediaType,this.listenTo(wpbc.broadcast,"insert:shortcode",this.insertShortcode),this.listenTo(this.model,"change",this.render)},render:function(e){return(e=_.extend({},e,this.model.toJSON())).duration=this.model.getReadableDuration(),e.updated_at_readable=this.model.getReadableDate("updated_at"),e.created_at_readable=this.model.getReadableDate("created_at"),e.account_name=this.model.getAccountName(),this.template=wp.template("brightcove-media-item-details-"+this.mediaType),this.$el.html(this.template(e)),this.delegateEvents(),this.generateShortcode(),this},remove:function(){return this.undelegateEvents(),this.$el.empty(),this.stopListening(),this}}),MediaView=BrightcoveView.extend({tagName:"li",className:"attachment brightcove",attributes:function(){return{tabIndex:0,role:"checkbox","aria-label":this.model.get("title"),"aria-checked":!1,"data-id":this.model.get("id")}},events:{"click .attachment-preview":"toggleDetailView","click .video-move-up":"videoMoveUp","click .video-move-down":"videoMoveDown","click .trash":"removeVideoFromPlaylist","click .add-to-playlist":"videoAdd","click .edit":"triggerEditMedia","click .preview":"triggerPreviewMedia"},triggerEditMedia:function(e){e.preventDefault(),wpbc.broadcast.trigger("edit:media",this.model)},triggerPreviewMedia:function(e){e.preventDefault(),wpbc.broadcast.trigger("preview:media",this.model)},buttons:{},initialize:function(e){e=e||{},this.type=e.type?e.type:"grid",this.listenTo(this.model,"change:view",function(e,t){this.type!==t&&(this.type=t,this.render())}),this.render()},render:function(){var e=this.model.toJSON();return e.duration=this.model.getReadableDuration(),e.updated_at_readable=this.model.getReadableDate("updated_at"),e.account_name=this.model.getAccountName(),"existingPlaylists"===e.viewType?this.template=wp.template("brightcove-playlist-edit-video-in-playlist"):"libraryPlaylists"===e.viewType?this.template=wp.template("brightcove-playlist-edit-video-in-library"):this.template=wp.template("brightcove-media-item-"+this.type),e.buttons=this.buttons,this.$el.html(this.template(e)),this.$el.toggleClass("uploading",e.uploading),this},toggleDetailView:function(){wpbc.broadcast.trigger("select:media",this)},videoMoveUp:function(){wpbc.broadcast.trigger("playlist:moveUp",this)},videoMoveDown:function(){wpbc.broadcast.trigger("playlist:moveDown",this)},videoAdd:function(){wpbc.broadcast.trigger("playlist:add",this)},removeVideoFromPlaylist:function(){wpbc.broadcast.trigger("playlist:remove",this)}}),PlaylistEditView=BrightcoveView.extend({tagName:"div",className:"playlist-edit brightcove attachment-details",template:wp.template("brightcove-playlist-edit"),events:{"click .brightcove.button.save-sync":"saveSync","click .brightcove.playlist-back":"back","change .brightcove-name":"updatedName"},deleteVideo:function(e){e.preventDefault(),this.model.set("mediaType","videos"),this.model.destroy()},updatedName:function(e){this.model.get("name")!==e.target.value&&(this.model.set("name",e.target.value),this.model.save())},back:function(e){e.preventDefault(),wpbc.broadcast.trigger("start:gridview")},saveSync:function(e){e.preventDefault(),this.model.set("name",this.$el.find(".brightcove-name").val()),this.model.set("description",this.$el.find(".brightcove-description").val()),this.model.set("long_description",this.$el.find(".brightcove-long-description").val()),this.model.set("tags",this.$el.find(".brightcove-tags").val()),this.model.set("mediaType","videos"),this.model.save()},initialize:function(){this.listenTo(wpbc.broadcast,"tabChange",function(){_.invoke(this.subviews,"remove")}),wpbc.broadcast.trigger("spinner:off")},render:function(e){e=this.model.toJSON(),this.$el.html(this.template(e)),this.spinner=this.$el.find(".spinner"),e.video_ids&&(this.killPendingRequests(),this.playlistVideosView=new MediaCollectionView({el:this.$el.find(".existing-videos"),videoIds:e.video_ids,activeAccount:this.model.get("account_id"),mediaCollectionViewType:"existingPlaylists",mediaType:"playlists"}),this.libraryVideosView=new MediaCollectionView({el:this.$el.find(".library-videos"),excludeVideoIds:e.video_ids,activeAccount:this.model.get("account_id"),mediaCollectionViewType:"libraryPlaylists",mediaType:"playlists"}),this.registerSubview(this.playlistVideosView),this.registerSubview(this.libraryVideosView),this.listenTo(wpbc.broadcast,"playlist:changed",_.throttle(this.playlistChanged,300)),this.listenTo(wpbc.broadcast,"insert:shortcode",this.insertShortcode)),this.listenTo(wpbc.broadcast,"spinner:on",function(){this.spinner.addClass("is-active").removeClass("hidden")}),this.listenTo(wpbc.broadcast,"spinner:off",function(){this.spinner.removeClass("is-active").addClass("hidden")})},playlistChanged:function(e){this.killPendingRequests(),this.model.set("video_ids",e),this.model.save()},killPendingRequests:function(){_.each(wpbc.requests,function(e){e.abort()}),wpbc.requests=[]}}),UploadDetailsView=BrightcoveView.extend({className:"brightcove-pending-upload-details attachment-details",tagName:"div",template:wp.template("brightcove-pending-upload-details"),events:{"keyup .brightcove-name":"nameChanged","keyup .brightcove-tags":"tagsChanged","change .brightcove-media-source":"accountChanged"},initialize:function(e){this.listenTo(wpbc.broadcast,"pendingUpload:hideDetails",this.hide),this.listenTo(wpbc.broadcast,"uploader:fileUploaded",function(e){e.id===this.model.get("id")&&(this.model.set("uploaded",!0),this.render())}),this.model.set("ingestSuccess",!0),this.model.set("uploadSuccess",!0)},nameChanged:function(e){this.model.set("fileName",e.target.value)},tagsChanged:function(e){this.model.set("tags",e.target.value)},accountChanged:function(e){this.model.set("account",e.target.value)},hide:function(){this.$el.hide()},render:function(e){(e=e||{}).fileName=this.model.get("fileName"),e.tags=this.model.get("tags"),e.size=this.model.humanReadableSize(),e.accounts=this.model.get("accounts"),e.account=this.model.get("account"),e.uploaded=this.model.get("uploaded"),this.$el.html(this.template(e))}});UploadWindowView=BrightcoveView.extend({className:"uploader-window",template:wp.template("brightcove-uploader-window"),initialize:function(e){_.bindAll(this,"uploaderFilesAdded"),this.listenTo(wpbc.broadcast,"uploader:queuedFilesAdded",this.hide),this.listenTo(wpbc.broadcast,"uploader:startUpload",this.uploaderStartUpload),this.listenTo(wpbc.broadcast,"uploader:clear",this.resetUploads)},render:function(e){this.$el.html(this.template(e)),_.defer(_.bind(this.afterRender,this))},resetUploads:function(){this.uploader&&this.uploader.files&&(this.uploader.files=[])},afterRender:function(){this.uploader=new plupload.Uploader(_.defaults(this.options,wpbc.preload.plupload)),this.uploader.added=this.uploaderFilesAdded,this.uploader.progress=this.uploaderUploadProgress,this.uploader.bind("FilesAdded",this.uploaderFilesAdded),this.uploader.bind("UploadProgress",this.uploaderUploadProgress),this.uploader.bind("BeforeUpload",this.uploaderBeforeUpload),this.uploader.bind("FileUploaded",this.uploaderFileUploaded),this.uploader.bind("init",this.uploaderAfterInit),this.uploader.init(),$("html").on("dragenter",_.bind(this.show,this));var e=wpbc.preload.plupload.drop_element.replace(/[^a-zA-Z0-9-]+/g,"");$("#"+e).on("dropzone:leave",_.bind(this.hide,this))},uploaderAfterInit:function(e){var t,i,a,s=wpbc.preload.plupload.drop_element.replace(/[^a-zA-Z0-9-]+/g,""),o=$("#"+s);if(a=e.features.dragdrop,o){if(o.toggleClass("supports-drag-drop",!!a),!a)return o.unbind(".wp-uploader");o.bind("dragover.wp-uploader",function(){t&&clearTimeout(t),i||(o.trigger("dropzone:enter").addClass("drag-over"),i=!0)}),o.bind("dragleave.wp-uploader, drop.wp-uploader",function(){t=setTimeout(function(){i=!1,o.trigger("dropzone:leave").removeClass("drag-over")},0)})}},show:function(){var e=this.$el.show();_.defer(function(){e.css({opacity:1})})},hide:function(){var e=this.$el.css({opacity:0});wp.media.transition(e).done(function(){"0"===e.css("opacity")&&e.hide()}),_.delay(function(){"0"===e.css("opacity")&&e.is(":visible")&&e.hide()},500)},uploaderFilesAdded:function(e,t){wpbc.broadcast.trigger("uploader:queuedFilesAdded",t)},uploaderStartUpload:function(){this.uploader.start()},uploaderUploadProgress:function(e,t){wpbc.broadcast.trigger("uploader:uploadProgress",t)},uploaderBeforeUpload:function(e,t){e.settings.multipart_params=_.defaults(wpbc.uploads[t.id],wpbc.preload.plupload.multipart_params,{nonce:wpbc.preload.nonce})},uploaderFileUploaded:function(e,t,i){var a=JSON.parse(i.response);wpbc.broadcast.trigger("uploader:fileUploaded",t),"success"===a.data.upload&&"success"===a.data.ingest?(a.data.videoDetails&&wpbc.broadcast.trigger("uploader:uploadedFileDetails",a.data.videoDetails),wpbc.broadcast.trigger("uploader:successfulUploadIngest",t)):(t.percent=0,t.status=plupload.UPLOADING,e.state=plupload.STARTED,e.trigger("StateChanged"),wpbc.broadcast.trigger("uploader:failedUploadIngest",t))}});var UploadView=BrightcoveView.extend({className:"brightcove-pending-upload",tagName:"tr",template:wp.template("brightcove-pending-upload"),events:{click:"toggleRow"},initialize:function(){this.listenTo(wpbc.broadcast,"pendingUpload:selectedRow",this.otherToggledRow),this.listenTo(wpbc.broadcast,"uploader:uploadProgress",this.uploadProgress),this.listenTo(wpbc.broadcast,"uploader:getParams",this.getParams),this.listenTo(wpbc.broadcast,"uploader:successfulUploadIngest",this.successfulUploadIngest),this.listenTo(wpbc.broadcast,"uploader:failedUploadIngest",this.failedUploadIngest);var e={fileName:this.model.get("name"),tags:"",accounts:wpbc.preload.accounts,account:wpbc.preload.defaultAccount,ingestSuccess:!1,uploadSuccess:!1,uploaded:!1};this.model.set(e),this.listenTo(this.model,"change:fileName",this.render),this.listenTo(this.model,"change:account",this.render)},render:function(e){(e=e||{}).fileName=this.model.get("fileName"),e.size=this.model.humanReadableSize();var t=this.model.get("account");e.accountName=wpbc.preload.accounts[t].account_name,e.percent=this.model.get("percent"),e.activeUpload=this.model.get("activeUpload"),e.ingestSuccess=this.model.get("ingestSuccess"),e.uploadSuccess=this.model.get("uploadSuccess"),this.$el.html(this.template(e)),this.model.get("selected")&&this.$el.addClass("selected"),this.model.get("ingestSuccess")&&this.$el.addClass("ingest-success"),this.model.get("uploadSuccess")&&this.$el.addClass("upload-success")},getParams:function(e){wpbc.broadcast.trigger("uploader:params","abcde")},failedUploadIngest:function(e){e.id===this.model.get("id")&&(wpbc.broadcast.trigger("uploader:errorMessage",wpbc.preload.messages.unableToUpload.replace("%%s%%",this.model.get("fileName"))),this.render())},successfulUploadIngest:function(e){e.id===this.model.get("id")&&(wpbc.broadcast.trigger("uploader:successMessage",wpbc.preload.messages.successUpload.replace("%%s%%",this.model.get("fileName"))),this.render())},uploadProgress:function(e){e.id===this.model.get("id")?(this.model.set("activeUpload",!0),this.model.set("percent",e.percent),this.render()):this.model.get("activeUpload")&&(this.model.unset("activeUpload"),this.render())},toggleRow:function(e){this.$el.toggleClass("selected"),this.$el.hasClass("selected")?(this.model.set("selected",!0),wpbc.broadcast.trigger("pendingUpload:selectedRow",this.cid)):wpbc.broadcast.trigger("pendingUpload:hideDetails",this.cid)},otherToggledRow:function(e){e!==this.cid?(this.$el.removeClass("selected"),this.model.unset("selected")):wpbc.broadcast.trigger("pendingUpload:selectedItem",this.model)}}),VideoEditView=BrightcoveView.extend({tagName:"div",className:"video-edit brightcove attachment-details",template:wp.template("brightcove-video-edit"),events:{"click .brightcove.button.save-sync":"saveSync","click .brightcove.delete":"deleteVideo","click .brightcove.button.back":"back","click .setting .button":"openMediaManager","click .attachment .check":"removeAttachment","click .caption-secondary-fields .delete":"removeCaptionRow","click .add-remote-caption":"addCaptionRow"},back:function(e){e.preventDefault(),$(e.currentTarget).hasClass("disabled")||wpbc.broadcast.trigger("start:gridview")},deleteVideo:function(){confirm(wpbc.preload.messages.confirmDelete)&&(wpbc.broadcast.trigger("spinner:on"),this.model.set("mediaType","videos"),this.model.destroy())},openMediaManager:function(i){i.preventDefault();var e=$(i.currentTarget).parents(".setting").data("editor"),a=wp.media.frames.brightcove=wp.media(),s=this,t={state:"insert",title:wp.media.view.l10n.addMedia,multiple:!1};a.open(e,t),a.on("select",function(){var e=a.state().get("selection").first().toJSON(),t=$(i).parents(".setting");s.setAttachment(e,t),wpbc.broadcast.trigger("media:selected")})},setAttachment:function(e,t){t=t.prevObject[0].currentTarget;var i=(t=$(t).prev("input")).parents(".attachment"),a=i.find(".-image");if(-1<i.context.className.indexOf("captions"))if("vtt"===e.subtype)this.addCaptionRow(!1,e);else{var s=wp.template("brightcove-badformat-notice");$(".brightcove-media-videos").prepend(s),$(".badformat.notice-dismiss").on("click",function(){$(".notice.badformat").first().fadeOut(500,function(){$(this).remove()})})}else{var o={url:e.sizes.full.url,width:e.sizes.full.width,height:e.sizes.full.height},d=document.createElement("img");d.src=e.sizes.full.url,d.className="thumbnail",i.addClass("active"),a.html(d)}t.val(JSON.stringify(o))},removeAttachment:function(e){var t=$(e.currentTarget).parents(".attachment"),i=t.find(".-image");t.next("input").val(""),t.removeClass("active"),i.empty()},addCaptionRow:function(e,t){e&&e.preventDefault();var i=void 0;t&&(i=t.url),this.addCaption(i)},addCaption:function(e,t,i){var a=$(document.getElementById("js-caption-empty-row")).clone(),s=document.getElementById("js-captions");document.getElementById("js-caption-url");a.find("input").prop("disabled",!1),a.removeAttr("id"),a.removeClass("empty-row"),e&&a.find(".brightcove-captions").val(e),t&&a.find(".brightcove-captions-language").val(t),i&&a.find(".brightcove-captions-label").val(i),$(s).append(a),this.updateCaptionText()},removeCaptionRow:function(e){e.preventDefault();var t=e.currentTarget,i=$(t).parents(".caption-repeater"),a=i.find(".brightcove-captions"),s=i.find(".brightcove-captions-launguage"),o=i.find(".brightcove-captions-label");$(a).val(""),$(s).val(""),$(o).val(""),i.remove(),this.updateCaptionText()},updateCaptionText:function(){var e=$(".captions .button-secondary"),t=$(".add-remote-caption");1<document.getElementsByClassName("caption-repeater").length?(e.text(wpbc.str_addcaption),t.text(wpbc.str_addremote)):(e.text(wpbc.str_selectfile),t.text(wpbc.str_useremote))},saveSync:function(e){e.preventDefault();var a=$(e.currentTarget).parents(".media-modal"),t=a.find(".button, .button-link");if(!t.hasClass("disabled")){t.addClass("disabled"),a.find(".delete-action").hide(),wpbc.broadcast.trigger("spinner:on"),this.model.set("name",this.$el.find(".brightcove-name").val()),this.model.set("description",this.$el.find(".brightcove-description").val()),this.model.set("long_description",this.$el.find(".brightcove-long-description").val()),this.model.set("tags",this.$el.find(".brightcove-tags").val().trim().replace(/(^,)|(,$)/g,"")),this.model.set("height",this.$el.find(".brightcove-height").val()),this.model.set("width",this.$el.find(".brightcove-width").val()),this.model.set("mediaType","videos"),this.model.set("poster",this.$el.find(".brightcove-poster").val()),this.model.set("thumbnail",this.$el.find(".brightcove-thumbnail").val()),this.model.set("folderId",this.$el.find(".brightcove-folder").val());var s=[];this.$el.find(".caption-repeater.repeater-row").not(".empty-row").each(function(){var e=$(this),t=e.find(".brightcove-captions").val();if("vtt"!==t.split("?")[0].split(".").pop()){var i=wp.template("brightcove-badformat-notice");return $(".brightcove-media-videos").prepend(i),void $(".badformat.notice-dismiss").on("click",function(){$(".notice.badformat").first().fadeOut(500,function(){$(this).remove()})})}s.push({source:t,language:e.find(".brightcove-captions-language").val(),label:e.find(".brightcove-captions-label").val()})}),this.model.set("captions",s);var o={},d=this.model.get("custom");_.each(this.$el.find(".brightcove-custom-string, .brightcove-custom-enum"),function(e){var t=e.getAttribute("data-id"),i=e.value.trim();""!==i&&(o[t]=i,_.find(d,function(e){return e.id==t}).value=i)}),this.model.set("custom_fields",o),this.model.set("custom",d),this.model.save().done(function(){if(0<a.length){var e,t,i=a.find(".brightcove-tags").val();i&&(e=i.split(","),t=_.difference(e,wpbc.preload.tags)),_.each(t,function(e){""!==(e=e.trim())&&wpbc.preload.tags.push(e)}),wpbc.preload.tags.sort()}}).always(function(){t.removeClass("disabled"),a.find(".delete-action").show()}),wpbc.broadcast.trigger("start:gridview")}},render:function(e){this.listenTo(wpbc.broadcast,"save:media",this.saveSync),this.listenTo(wpbc.broadcast,"back:editvideo",this.back),this.listenTo(wpbc.broadcast,"insert:shortcode",this.insertShortcode),(e=this.model.toJSON()).folders=wpbc.preload.folders,this.model.set("oldFolderId",e.folder_id),this.$el.html(this.template(e));var t=this.$el.find("#brightcove-custom-fields"),i=wp.template("brightcove-video-edit-custom-string"),a=wp.template("brightcove-video-edit-custom-enum");_.each(this.model.get("custom"),function(e){if("_change_history"!==e.id)switch(e.type){case"string":t.append(i(e));break;case"enum":t.append(a(e))}});var s=this.model.get("history");if(void 0!==s){var o="";s=JSON.parse(s),_.each(s,function(e){o+=e.user+" - "+e.time+"\n"}),""!==o&&this.$el.find("textarea.brightcove-change-history").val(o)}var d=this.$el.find(".spinner");if(this.listenTo(wpbc.broadcast,"spinner:on",function(){d.addClass("is-active").removeClass("hidden")}),this.listenTo(wpbc.broadcast,"spinner:off",function(){d.removeClass("is-active").addClass("hidden")}),this.model.get("poster")&&this.displayAttachment("poster"),this.model.get("thumbnail")&&this.displayAttachment("thumbnail"),this.model.get("captions"))for(var l=this.model.get("captions"),n=0,r=l.length;n<r;n++){var c=l[n];this.addCaption(c.source,c.language,c.label)}}}),VideoPreviewView=BrightcoveView.extend({tagName:"div",className:"video-preview brightcove",template:wp.template("brightcove-video-preview"),shortcode:"",initialize:function(e){this.shortcode=e.shortcode},render:function(e){var t=this;(e=e||{}).id=this.model.get("id"),e.account_id=this.model.get("account_id"),$.ajax({url:ajaxurl,dataType:"json",method:"POST",data:{action:"bc_resolve_shortcode",shortcode:this.shortcode,video_id:e.id,account_id:e.account_id},success:function(e){t.$el.html(e.data)}}),this.listenTo(wpbc.broadcast,"insert:shortcode",this.insertShortcode)}}),MediaCollectionView=BrightcoveView.extend({tagName:"ul",className:"brightcove-media attachments",attributes:{tabIndex:-1},events:{scroll:"scrollHandler"},loadMoreMediaItems:function(){this.fetchingResults=!0,this.collection.fetch()},scrollHandler:function(){if("existingPlaylists"!==this.collection.mediaCollectionViewType){!this.fetchingResults&&this.el.scrollTop+this.el.clientHeight+200>this.el.scrollHeight&&(this.collection.pageNumber+=1,this.loadMoreMediaItems())}},initialize:function(e){this.fetchingResults=!1,this.listenTo(wpbc.broadcast,"fetch:finished",function(){this.fetchingResults=!1}),this.listenTo(wpbc.broadcast,"fetch:apiError",this.handleAPIError);var t=wp.media.isTouchDevice?300:200;this.scrollHandler=_.chain(this.scrollHandler).bind(this).throttle(t).value(),this.listenTo(wpbc.broadcast,"scroll:mediaGrid",this.scrollHandler),e=e||{},this.el.id=_.uniqueId("__attachments-view-"),!this.collection&&e.videoIds?(this.collection=new MediaCollection(null,{videoIds:e.videoIds,activeAccount:e.activeAccount,mediaCollectionViewType:e.mediaCollectionViewType}),this.listenTo(wpbc.broadcast,"playlist:moveUp",this.videoMoveUp),this.listenTo(wpbc.broadcast,"playlist:moveDown",this.videoMoveDown),this.listenTo(wpbc.broadcast,"playlist:remove",this.videoRemove),this.listenTo(wpbc.broadcast,"playlist:add",this.videoAdd)):this.collection||"libraryPlaylists"!==e.mediaCollectionViewType||(this.collection=new MediaCollection(null,{excludeVideoIds:e.excludeVideoIds,activeAccount:e.activeAccount,mediaCollectionViewType:e.mediaCollectionViewType}),this.listenTo(wpbc.broadcast,"playlist:remove",this.videoRemove),this.listenTo(wpbc.broadcast,"playlist:add",this.videoAdd)),_.defaults(this.options,{refreshSensitivity:wp.media.isTouchDevice?300:200,refreshThreshold:3,VideoView:wp.media.view.Video,sortable:!1,resize:!0,idealColumnWidth:202}),this._viewsByCid={},this.resizeEvent="resize.media-modal-columns",this.listenTo(this.collection,"add",function(e){this.views.add(this.createMediaView(e),{at:this.collection.indexOf(e)})},this),this.listenTo(this.collection,"remove",function(e){e&&(e.view?e.view.remove():e.cid&&this._viewsByCid[e.cid]&&this._viewsByCid[e.cid].remove())},this),this.listenTo(this.collection,"reset",this.render),this.scroll=_.chain(this.scroll).bind(this).throttle(this.options.refreshSensitivity).value(),this.options.scrollElement=this.options.scrollElement||this.el,$(this.options.scrollElement).on("scroll",this.scroll),_.bindAll(this,"setColumns"),this.options.resize&&(this.on("ready",this.bindEvents),_.defer(this.setColumns,this))},handleAPIError:function(){this.el.innerText=wpbc.str_apifailure},render:function(){this.listenTo(wpbc.broadcast,"spinner:off",function(){$("#js-media-loading").css("display","none")}),this.$el.empty(),this.collection.each(function(e){e.view=new MediaView({model:e}),this.registerSubview(e.view),e.view.render(),e.view.delegateEvents(),e.view.$el.appendTo(this.$el),wpbc.broadcast.trigger("spinner:off")},this)},setViewType:function(t){this.collection.each(function(e){e.set("view",t)},this)},bindEvents:function(){this.$window.off(this.resizeEvent).on(this.resizeEvent,_.debounce(this.setColumns,50))},setColumns:function(){var e=this.columns,t=this.$el.width();t&&(this.columns=Math.min(Math.round(t/this.options.idealColumnWidth),12)||1,e&&e===this.columns||this.$el.closest(".media-frame-content").attr("data-columns",this.columns))},createMediaView:function(e){e.set("viewType",this.collection.mediaCollectionViewType);var t=new MediaView({controller:this.controller,model:e,collection:this.collection,selection:this.options.selection});return this.registerSubview(t),this._viewsByCid[e.cid]=t},prepare:function(){this.collection.length?this.views.set(this.collection.map(this.createMediaView,this)):(this.views.unset(),this.collection.more().done(this.scroll))},ready:function(){this.scroll()},scroll:function(){var e,t=this,i=this.options.scrollElement,a=i.scrollTop;i===document&&(i=document.body,a=$(document).scrollTop()),"function"===this.collection.hasMore&&$(i).is(":visible")&&this.collection.hasMore()&&(e=this.views.parent.toolbar,i.scrollHeight-(a+i.clientHeight)<i.clientHeight/3&&e.get("spinner").show(),i.scrollHeight<a+i.clientHeight*this.options.refreshThreshold&&this.collection.more().done(function(){t.scroll(),e.get("spinner").hide()}))},videoMoveUp:function(e){var t=e.model,i=this.collection.indexOf(t);0<i&&(this.collection.remove(t,{silent:!0}),this.collection.add(t,{at:i-1})),this.render(),this.playlistChanged()},videoMoveDown:function(e){var t=e.model,i=this.collection.indexOf(t);i<this.collection.models.length&&(this.collection.remove(t,{silent:!0}),this.collection.add(t,{at:i+1})),this.render(),this.playlistChanged()},videoRemove:function(e){var t=e.model;-1===this.collection.indexOf(t)?this.collection.add(t):(this.collection.remove(t,{silent:!0}),this.playlistChanged()),this.render()},videoAdd:function(e){var t=e.model;-1===this.collection.indexOf(t)?(this.collection.add(t),this.playlistChanged()):(this.collection.remove(t,{silent:!0}),this.render())},playlistChanged:function(){var t=[];this.collection.each(function(e){t.push(e.id)}),this.videoIds=t,this.syncPlaylist()},syncPlaylist:function(){wpbc.broadcast.trigger("playlist:changed",this.videoIds)}}),App={renderMediaManager:function(e){var t=$(".brightcove-media-"+e);document.getElementById("content_ifr");t.length&&new BrightcoveMediaManagerView({el:t,date:"all",embedType:"page",preload:!0,mode:"manager",search:"",accounts:"all",tags:"all",mediaType:e,viewType:"grid"}).render()},load:function(){wpbc.requests=[],wpbc.responses={},wpbc.broadcast=_.extend({},Backbone.Events),this.loaded()},loaded:function(){var e=$(".brightcove-modal"),t=new BrightcoveRouter;wpbc.triggerModal=function(){wpbc.modal?wpbc.modal.$el.show():(wpbc.modal=new BrightcoveModalView({el:e,tab:"videos"}),wpbc.modal.render(),wpbc.modal.$el.find(".spinner").addClass("is-active")),$("body").addClass("modal-open")};_.each(["videos","playlists"],function(e){App.renderMediaManager(e)}),$(".account-toggle-button").on("click",function(e){e.preventDefault(),$(this).hide(),$(".brightcove-account-row.hidden").show()}),$(".brightcove-add-new-video").on("click",function(e){e.preventDefault(),t.navigate("add-new-brightcove-video",{trigger:!0})}),$(document).on("click",".brightcove-add-media",function(e){e.preventDefault(),wpbc.triggerModal(),wpbc.modal.target=e.currentTarget.dataset.target}),$(document).keyup(function(e){27===e.keyCode&&wpbc.broadcast.trigger("close:modal")}),$("a.brightcove-action-delete-source").on("click",function(e){var t=$(this).data("alert-message");if(!confirm(t))return!1})}};jQuery(document).ready(function(){App.load();new BrightcoveRouter;Backbone.History.started||Backbone.history.start()});
    44} )( jQuery );
  • brightcove-video-connect/trunk/assets/js/src/models/media-collection.js

    r1510166 r2057701  
    4848            this.dates         = options.dates || 'all';
    4949            this.tag           = options.tag || '';
     50            this.folderId      = options.folderId || '';
     51            this.oldFolderId   = options.oldFolderId || '';
    5052
    5153            this.listenTo( wpbc.broadcast, 'change:activeAccount', function ( accountId ) {
     
    7577                this.fetch();
    7678
     79            } );
     80
     81            this.listenTo( wpbc.broadcast, 'change:folder', function ( folderId ) {
     82
     83                this.oldFolderId = this.folderId;
     84
     85                if ( 'all' === folderId ) {
     86                    folderId = '';
     87                }
     88
     89                this.folderId = folderId;
     90                this.fetch();
    7791            } );
    7892
     
    151165                    search :         this.searchTerm,
    152166                    tags :           this.tag,
     167                    oldFolderId:     this.oldFolderId,
     168                    folderId:            this.folderId,
    153169                    tagName :        wpbc.preload.tags[this.tag],
    154170                    type : this.mediaType || 'videos'
    155171                } );
    156172
    157                 var previousRequest = _.pick( options.data, 'account', 'dates', 'posts_per_page', 'search', 'tags', 'type' );
     173                var previousRequest = _.pick( options.data, 'account', 'dates', 'posts_per_page', 'search', 'tags', 'type', 'folderId', 'tagName' );
    158174
    159175                // Determine if we're infinite scrolling or not.
     
    170186                    options.data.videoIds = this.videoIds.length ? this.videoIds : 'none';
    171187                }
     188
    172189
    173190                options.data.query = args;
     
    227244         * @param {Object|Array} resp The raw response Object/Array.
    228245         * @param {Object} xhr
    229          * @returns {Array} The array of model attributes to be added to the collection
     246         * @returns {Array} The array of model attributes to be added to the
     247         *   collection
    230248         */
    231249        parse : function ( response, status, request, checksum ) {
     
    252270
    253271            /**
    254              * In playlist video search, we remove the videos that already exist in the playlist.
     272             * In playlist video search, we remove the videos that already exist in
     273             * the playlist.
    255274             */
    256275            if ( _.isArray( this.excludeVideoIds ) ) {
     
    260279            }
    261280
     281            if (data.length === 0) {
     282                wpbc.broadcast.trigger('videoEdit:message', 'No videos found.', 'error',
     283                    true)
     284            }
     285
    262286            var allMedia = _.map( data, function ( attrs ) {
    263287                var id, media, newAttributes;
     
    285309            }, this );
    286310
     311
    287312            if ( this.additionalRequest ) {
    288313                this.add( allMedia );
  • brightcove-video-connect/trunk/assets/js/src/models/media.js

    r1920547 r2057701  
    6060                    nonce :            wpbc.preload.nonce,
    6161                    tags :             this.get( 'tags' ),
     62                    oldFolderId:             this.get( 'oldFolderId' ),
     63                    folderId :         this.get( 'folderId' ),
    6264                    type :             this.get( 'mediaType' ),
    6365                    custom_fields:     this.get( 'custom_fields' ),
  • brightcove-video-connect/trunk/assets/js/src/views/brightcove-media-manager.js

    r1920547 r2057701  
    129129            } );
    130130
     131            this.listenTo(wpbc.broadcast, 'change:folder', function (folder) {
     132                this.clearPreview();
     133                this.model.set('oldFolderId', this.model.get('folderId'));
     134                this.model.set('folderId', folder);
     135
     136            })
     137
    131138            this.listenTo( wpbc.broadcast, 'change:date', function ( date ) {
    132139
     
    313320
    314321        /**
    315          * Clear the preview view and remove highlighted class from previous selected video.
     322         * Clear the preview view and remove highlighted class from previous
     323         * selected video.
    316324         */
    317325        clearPreview : function () {
     326
     327            var messages = $('.brightcove-message');
     328            messages.addClass('hidden');
    318329
    319330            if ( this.detailsView instanceof MediaDetailsView ) {
     
    351362            newMessage.text( message );
    352363
    353             messages.append( newMessage );
     364            messages.html( newMessage );
    354365            messages.removeClass( 'hidden' );
    355366
     
    367378                this.makeNoticesDismissible();
    368379            }
     380            $('html, body').animate({scrollTop: 0}, 'fast')
     381
    369382        },
    370383
  • brightcove-video-connect/trunk/assets/js/src/views/toolbar.js

    r1920547 r2057701  
    1616      'change .brightcove-media-dates': 'datesChanged',
    1717      'change .brightcove-media-tags': 'tagsChanged',
     18            'change .brightcove-media-folders': 'foldersChanged',
    1819      'change .brightcove-empty-playlists': 'emptyPlaylistsChanged',
    1920      'click #media-search': 'searchHandler',
     
    2829                mediaType : mediaType,
    2930                tags :      wpbc.preload.tags,
     31                folders:    wpbc.preload.folders,
     32                folderId:   this.model.get( 'folderId' ),
    3033                account :   this.model.get( 'account' )
    3134            };
     
    9295        },
    9396
     97    foldersChanged: function (event) {
     98      this.model.set('oldFolderId', this.model.get('folderId'));
     99      this.model.set('folderId', event.target.value);
     100      wpbc.broadcast.trigger('change:folder', event.target.value);
     101    },
     102
    94103        emptyPlaylistsChanged : function ( event ) {
    95104            var emptyPlaylists = $( event.target ).prop( 'checked' );
  • brightcove-video-connect/trunk/assets/js/src/views/video-edit.js

    r1510166 r2057701  
    262262            this.model.set( 'poster', this.$el.find( '.brightcove-poster' ).val() );
    263263            this.model.set( 'thumbnail', this.$el.find( '.brightcove-thumbnail' ).val() );
     264            this.model.set( 'folderId', this.$el.find( '.brightcove-folder' ).val() );
    264265
    265266            // Captions
     
    361362            this.listenTo( wpbc.broadcast, 'insert:shortcode', this.insertShortcode );
    362363            options = this.model.toJSON();
     364            options.folders = wpbc.preload.folders;
     365            this.model.set( 'oldFolderId', options.folder_id);
    363366
    364367            // Render the model into the template
  • brightcove-video-connect/trunk/brightcove-video-connect.php

    r1995128 r2057701  
    44 * Plugin URI: https://wordpress.org/plugins/brightcove-video-connect/
    55 * Description: A Brightcove™ Connector for WordPress that leverages enhanced APIs and Brightcove™ Capabilities
    6  * Version: 1.6.1
     6 * Version: 1.7.0
    77 * Author: 10up
    88 * Author URI: http://10up.com
     
    3030 */
    3131
    32 define( 'BRIGHTCOVE_VERSION', '1.6.1' );
     32define( 'BRIGHTCOVE_VERSION', '1.7.0' );
    3333define( 'BRIGHTCOVE_URL', plugin_dir_url( __FILE__ ) );
    3434define( 'BRIGHTCOVE_PATH', dirname( __FILE__ ) . '/' );
  • brightcove-video-connect/trunk/includes/admin/api/class-bc-admin-media-api.php

    r1951003 r2057701  
    117117
    118118        foreach ( $fields as $field ) {
    119             $updated_data[ $field ] = isset( $_POST[ $field ] ) ? sanitize_text_field( $_POST[ $field ] ) : '';
     119            $updated_data[ $field ] = isset( $_POST[ $field ] ) ? sanitize_text_field( wp_unslash($_POST[ $field ]) ) : '';
    120120        }
    121121
     
    210210            $type_msg = 'video';
    211211
     212            if ( isset( $_POST['folderId'] ) && isset( $_POST['oldFolderId'] ) ) {
     213                $folderId    = sanitize_text_field( $_POST['folderId'] );
     214                $oldFolderId = sanitize_text_field( $_POST['oldFolderId'] );
     215
     216                $this->cms_api->add_folder_to_video( $oldFolderId, $folderId, $updated_data['video_id'] );
     217            }
     218
    212219            // Maybe update poster
    213220            if ( isset( $_POST['poster'] ) ) {
     
    527534
    528535
    529         $query    = ( isset( $_POST['search'] ) && '' !== $_POST['search'] ) ? sanitize_text_field( $_POST['search'] ) : false;
    530         $tag_name = ( isset( $_POST['tagName'] ) && '' !== $_POST['tagName'] ) ? sanitize_text_field( $_POST['tagName'] ) : false;
    531         $dates    = ( isset( $_POST['dates'] ) && 'all' !== $_POST['dates'] ) ? BC_Utility::sanitize_date( $_POST['dates'] ) : false;
     536        $query     = ( isset( $_POST['search'] ) && '' !== $_POST['search'] ) ? sanitize_text_field( $_POST['search'] ) : false;
     537        $tag_name  = ( isset( $_POST['tagName'] ) && '' !== $_POST['tagName'] ) ? sanitize_text_field( $_POST['tagName'] ) : false;
     538        $dates     = ( isset( $_POST['dates'] ) && 'all' !== $_POST['dates'] ) ? BC_Utility::sanitize_date( $_POST['dates'] ) : false;
     539        $folder_id = ( isset( $_POST['folderId'] ) && '' !== $_POST['folderId'] ) ? sanitize_text_field( $_POST['folderId'] ) : false;
    532540
    533541        /**
     
    610618
    611619            for ( $i = 0; $i < $tries; $i ++ ) {
    612                 $results = $this->cms_api->video_list( $posts_per_page, $posts_per_page * ( $page - 1 ), $query_string, $bc_video_sort_field );
     620                $results = $this->cms_api->video_list( $posts_per_page, $posts_per_page * ( $page - 1 ), $query_string, $bc_video_sort_field, true, $folder_id );
    613621
    614622                if ( ! is_wp_error( $results ) ) {
  • brightcove-video-connect/trunk/includes/admin/class-bc-templates.php

    r1920547 r2057701  
    117117                    <textarea class="brightcove-long-description" maxlength="5000">{{data.long_description}}</textarea>
    118118                    <p class="description"><?php esc_html_e( 'The long description is limited to 5,000 characters.', 'brightcove' )?></p>
     119                </label>
     120                <label class="setting folder">
     121                    <span class="name"><?php esc_html_e( 'Folder', 'brightcove' )?></span>
     122                    <select class="brightcove-folder">
     123                        <option value="">None</option>
     124                        <# _.each(data.folders, function (folderName, folderId) { #>
     125                        <option value="{{ folderId }}" <# if ( data.folder_id === folderId ) { #>selected<# } #>>
     126                            {{ folderName }}
     127                        </option>
     128                        <# }); #>
     129                    </select>
    119130                </label>
    120131                <label class="setting tags">
     
    981992                            <# }); #>
    982993                        </select>
     994
     995                    <label for="media-attachment-folders-filters" class="screen-reader-text"><?php esc_html_e( 'Filter by folder', 'brightcove' );?></label>
     996                    <select id="media-attachment-folders-filters" class="brightcove-media-folders attachment-filters">
     997                        <option value="all"><?php esc_html_e( 'All folders', 'brightcove' ); ?></option>
     998                        <# _.each(data.folders, function (folderName, folderId) { #>
     999                        <option value="{{ folderId }}" <# if ( data.folderId === folderId ) { #>selected<# } #>>
     1000                            {{ folderName }}
     1001                        </option>
     1002                        <# }); #>
     1003                    </select>
    9831004                    <# }#>
    9841005
  • brightcove-video-connect/trunk/includes/api/class-bc-cms-api.php

    r1951003 r2057701  
    382382     * @param string $sort A string that specifies the field to sort by. Start with - to sort descending.
    383383     * @param bool $playable Available at the /videos endpoint.
     384     * @param bool|string $folder_id The folder_id if specified.
    384385     *
    385386     * @return array|bool array of available videos retrieved or false if error
    386387     */
    387     public function video_list( $limit = 20, $offset = 0, $query = '', $sort = '-created_at', $playable = true ) {
     388    public function video_list(
     389        $limit = 20,
     390        $offset = 0,
     391        $query = '',
     392        $sort = '-created_at',
     393        $playable = true,
     394        $folder_id = false
     395    ) {
    388396
    389397        /*
     
    443451        }
    444452
    445         if ( false === strpos( $args['q'], 'id:' ) ) {
     453        if ( isset( $args['q'] ) && false === strpos( $args['q'], 'id:' ) ) {
    446454            $args = array_map( 'urlencode', $args );
    447455        }
    448456
     457        $api_url = self::CMS_BASE_URL . $this->get_account_id() . '/videos';
     458
     459        if ( $folder_id ) {
     460            $api_url = self::CMS_BASE_URL . $this->get_account_id() . '/folders/' . $folder_id . '/videos';
     461        }
    449462
    450463        $url  = add_query_arg(
    451464            $args,
    452             self::CMS_BASE_URL . $this->get_account_id() . '/videos'
     465            $api_url
    453466        );
    454467
     
    690703        $this->send_request( esc_url_raw( self::DI_BASE_URL . $this->get_account_id() . '/subscriptions/' . $subscription_id ), 'DELETE' );
    691704    }
     705
     706    /**
     707     * Fetch the user's folders from the Folders API endpoint.
     708     *
     709     * @return array
     710     */
     711    public function fetch_folders() {
     712        $cache_key = 'BCFolders_' . $this->get_account_id();
     713        $folders   = get_transient( $cache_key );
     714        $folders = false;
     715        if ( false === $folders ) {
     716            $request = $this->send_request( esc_url_raw( self::CMS_BASE_URL . $this->get_account_id() . '/folders' ) );
     717            $folders = array();
     718
     719            foreach ( $request as $folder ) {
     720                $folders[ $folder['id'] ] = $folder['name'];
     721            }
     722
     723            set_transient( $cache_key, $folders, 600 );
     724        }
     725
     726        return $folders;
     727    }
     728
     729    /**
     730     * Add/Remove a video from a folder.
     731     *
     732     * @param string $oldFolderId The previous folder ID assigned to video.
     733     * @param string $folderId The folder ID that the video should be in.
     734     * @param int    $videoId The video ID.
     735     */
     736    public function add_folder_to_video( $oldFolderId, $folderId, $videoId ) {
     737        if ( '' === $folderId && '' !== $oldFolderId ) {
     738            $this->remove_folder_from_video( $oldFolderId, $videoId );
     739
     740            return;
     741        }
     742        $api_url = self::CMS_BASE_URL . $this->get_account_id() . '/folders/' . $folderId . '/videos/' . $videoId;
     743        $this->send_request( esc_url_raw( $api_url ), 'PUT' );
     744    }
     745
     746    /**
     747     * Remove a video from a folder.
     748     *
     749     * @param string $folderId The folder that contains the video.
     750     * @param int    $videoId The video ID.
     751     */
     752    protected function remove_folder_from_video( $folderId, $videoId ) {
     753        $api_url = self::CMS_BASE_URL . $this->get_account_id() . '/folders/' . $folderId . '/videos/' . $videoId;
     754        $this->send_request( esc_url_raw( $api_url ), 'DELETE' );
     755    }
    692756}
  • brightcove-video-connect/trunk/includes/class-bc-setup.php

    r1995128 r2057701  
    234234        $params['nonce'] = wp_create_nonce( '_bc_ajax_search_nonce' );
    235235        $params['tags']  = $tags->get_tags();
     236        $params['folders'] = array();
     237        if ( BC_Utility::current_user_can_brightcove() ) {
     238            $params['folders'] = $cms_api->fetch_folders();
     239        }
    236240
    237241        $params['plupload'] = array(
  • brightcove-video-connect/trunk/languages/brightcove.pot

    r1995128 r2057701  
    1 # Copyright (C) 2018 10up
     1# Copyright (C) 2019 10up
    22# This file is distributed under the GPLv2+.
    33msgid ""
    44msgstr ""
    5 "Project-Id-Version: Brightcove Video Connect 1.6.0\n"
     5"Project-Id-Version: Brightcove Video Connect 1.6.1\n"
    66"Report-Msgid-Bugs-To: "
    77"https://wordpress.org/support/plugin/brightcove-video-connect\n"
    8 "POT-Creation-Date: 2018-12-14 20:12:02+00:00\n"
     8"POT-Creation-Date: 2019-03-21 17:22:58+00:00\n"
    99"MIME-Version: 1.0\n"
    1010"Content-Type: text/plain; charset=utf-8\n"
    1111"Content-Transfer-Encoding: 8bit\n"
    12 "PO-Revision-Date: 2018-MO-DA HO:MI+ZONE\n"
     12"PO-Revision-Date: 2019-MO-DA HO:MI+ZONE\n"
    1313"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
    1414"Language-Team: LANGUAGE <LL@li.org>\n"
     
    2929
    3030#: includes/admin/api/class-bc-admin-media-api.php:196
     31#: includes/admin/api/class-bc-admin-media-api.php:310
     32msgid "No such account exists"
     33msgstr ""
     34
     35#: includes/admin/api/class-bc-admin-media-api.php:252
     36msgid "Successfully updated "
     37msgstr ""
     38
     39#: includes/admin/api/class-bc-admin-media-api.php:256
     40msgid "Failed to sync with WordPress!"
     41msgstr ""
     42
     43#: includes/admin/api/class-bc-admin-media-api.php:260
     44msgid "Failed to update "
     45msgstr ""
     46
     47#: includes/admin/api/class-bc-admin-media-api.php:287
     48msgid "Type is not specified!"
     49msgstr ""
     50
    3151#: includes/admin/api/class-bc-admin-media-api.php:303
    32 msgid "No such account exists"
    33 msgstr ""
    34 
    35 #: includes/admin/api/class-bc-admin-media-api.php:245
    36 msgid "Successfully updated "
    37 msgstr ""
    38 
    39 #: includes/admin/api/class-bc-admin-media-api.php:249
    40 msgid "Failed to sync with WordPress!"
    41 msgstr ""
    42 
    43 #: includes/admin/api/class-bc-admin-media-api.php:253
    44 msgid "Failed to update "
    45 msgstr ""
    46 
    47 #: includes/admin/api/class-bc-admin-media-api.php:280
    48 msgid "Type is not specified!"
    49 msgstr ""
    50 
    51 #: includes/admin/api/class-bc-admin-media-api.php:296
    5252msgid "Wrong type is specified!"
    5353msgstr ""
    5454
    55 #: includes/admin/api/class-bc-admin-media-api.php:319
     55#: includes/admin/api/class-bc-admin-media-api.php:326
    5656msgid "Unable to remove video from Brightcove!"
    5757msgstr ""
    5858
    59 #: includes/admin/api/class-bc-admin-media-api.php:323
     59#: includes/admin/api/class-bc-admin-media-api.php:330
    6060msgid "Successfully deleted your video."
    6161msgstr ""
    6262
    63 #: includes/admin/api/class-bc-admin-media-api.php:333
     63#: includes/admin/api/class-bc-admin-media-api.php:340
    6464msgid "Unable to remove playlist from Brightcove!"
    6565msgstr ""
    6666
    67 #: includes/admin/api/class-bc-admin-media-api.php:337
     67#: includes/admin/api/class-bc-admin-media-api.php:344
    6868msgid "Successfully deleted your playlist."
    6969msgstr ""
    7070
    71 #: includes/admin/api/class-bc-admin-media-api.php:548
     71#: includes/admin/api/class-bc-admin-media-api.php:556
    7272msgid "Invalid Search Type"
    7373msgstr ""
    7474
    7575#: includes/admin/class-bc-admin-menu.php:18
    76 #: includes/admin/class-bc-templates.php:310
     76#: includes/admin/class-bc-templates.php:321
    7777msgid "Brightcove"
    7878msgstr ""
     
    8484
    8585#: includes/admin/class-bc-admin-menu.php:19
    86 #: includes/admin/class-bc-templates.php:316
    87 #: includes/admin/class-bc-templates.php:502
    88 #: includes/admin/class-bc-templates.php:833
     86#: includes/admin/class-bc-templates.php:327
     87#: includes/admin/class-bc-templates.php:513
     88#: includes/admin/class-bc-templates.php:844
    8989msgid "Videos"
    9090msgstr ""
     
    9696
    9797#: includes/admin/class-bc-admin-menu.php:20
    98 #: includes/admin/class-bc-templates.php:317
     98#: includes/admin/class-bc-templates.php:328
    9999msgid "Playlists"
    100100msgstr ""
     
    288288#: includes/admin/class-bc-templates.php:37
    289289#: includes/admin/class-bc-templates.php:65
    290 #: includes/admin/class-bc-templates.php:545
     290#: includes/admin/class-bc-templates.php:556
    291291msgid "Processing..."
    292292msgstr ""
     
    301301
    302302#: includes/admin/class-bc-templates.php:49
    303 #: includes/admin/class-bc-templates.php:136
    304 #: includes/admin/class-bc-templates.php:159
     303#: includes/admin/class-bc-templates.php:147
     304#: includes/admin/class-bc-templates.php:170
    305305msgid "Remove"
    306306msgstr ""
     
    315315
    316316#: includes/admin/class-bc-templates.php:86
    317 #: includes/admin/class-bc-templates.php:268
    318 #: includes/admin/class-bc-templates.php:327
    319 #: includes/admin/class-bc-templates.php:556
     317#: includes/admin/class-bc-templates.php:279
     318#: includes/admin/class-bc-templates.php:338
     319#: includes/admin/class-bc-templates.php:567
    320320msgid "Back"
    321321msgstr ""
     
    330330
    331331#: includes/admin/class-bc-templates.php:106
    332 #: includes/admin/class-bc-templates.php:412
     332#: includes/admin/class-bc-templates.php:423
    333333msgid "Name"
    334334msgstr ""
     
    355355
    356356#: includes/admin/class-bc-templates.php:121
    357 #: includes/admin/class-bc-templates.php:416
     357msgid "Folder"
     358msgstr ""
     359
     360#: includes/admin/class-bc-templates.php:132
     361#: includes/admin/class-bc-templates.php:427
    358362msgid "Tags"
    359363msgstr ""
    360364
    361 #: includes/admin/class-bc-templates.php:125
     365#: includes/admin/class-bc-templates.php:136
    362366msgid "Poster (Sugg. 480x360px)"
    363367msgstr ""
    364368
    365 #: includes/admin/class-bc-templates.php:142
    366 #: includes/admin/class-bc-templates.php:165
    367 #: includes/admin/class-bc-templates.php:180 includes/class-bc-setup.php:299
     369#: includes/admin/class-bc-templates.php:153
     370#: includes/admin/class-bc-templates.php:176
     371#: includes/admin/class-bc-templates.php:191 includes/class-bc-setup.php:303
    368372msgid "Select File"
    369373msgstr ""
    370374
    371 #: includes/admin/class-bc-templates.php:148
     375#: includes/admin/class-bc-templates.php:159
    372376msgid "Thumbnail (Sugg. 120x90px)"
    373377msgstr ""
    374378
    375 #: includes/admin/class-bc-templates.php:174
     379#: includes/admin/class-bc-templates.php:185
    376380msgid "Closed Captions"
    377381msgstr ""
    378382
    379 #: includes/admin/class-bc-templates.php:178 includes/class-bc-setup.php:297
     383#: includes/admin/class-bc-templates.php:189 includes/class-bc-setup.php:301
    380384msgid "Add Another Caption"
    381385msgstr ""
    382386
    383 #: includes/admin/class-bc-templates.php:185
     387#: includes/admin/class-bc-templates.php:196
    384388msgid "Add another remote caption file"
    385389msgstr ""
    386390
    387 #: includes/admin/class-bc-templates.php:187
     391#: includes/admin/class-bc-templates.php:198
    388392msgid "Use a remote caption file instead"
    389393msgstr ""
    390394
    391 #: includes/admin/class-bc-templates.php:198
    392 #: includes/admin/class-bc-templates.php:227
     395#: includes/admin/class-bc-templates.php:209
     396#: includes/admin/class-bc-templates.php:238
    393397msgid "Language"
    394398msgstr ""
    395399
    396 #: includes/admin/class-bc-templates.php:209
    397 #: includes/admin/class-bc-templates.php:236
     400#: includes/admin/class-bc-templates.php:220
     401#: includes/admin/class-bc-templates.php:247
    398402msgid "Label"
    399403msgstr ""
    400404
    401 #: includes/admin/class-bc-templates.php:214
     405#: includes/admin/class-bc-templates.php:225
    402406msgid "Remove Caption"
    403407msgstr ""
    404408
    405 #: includes/admin/class-bc-templates.php:221
     409#: includes/admin/class-bc-templates.php:232
    406410msgid "File Source"
    407411msgstr ""
    408412
    409 #: includes/admin/class-bc-templates.php:241
     413#: includes/admin/class-bc-templates.php:252
    410414msgid "Delete Caption"
    411415msgstr ""
    412416
    413 #: includes/admin/class-bc-templates.php:251
     417#: includes/admin/class-bc-templates.php:262
    414418msgid "Change History"
    415419msgstr ""
    416420
    417 #: includes/admin/class-bc-templates.php:252
     421#: includes/admin/class-bc-templates.php:263
    418422msgid "Nothing yet ..."
    419423msgstr ""
    420424
    421 #: includes/admin/class-bc-templates.php:258
     425#: includes/admin/class-bc-templates.php:269
    422426msgid "Delete"
    423427msgstr ""
    424428
    425 #: includes/admin/class-bc-templates.php:269
    426 #: includes/admin/class-bc-templates.php:338
     429#: includes/admin/class-bc-templates.php:280
     430#: includes/admin/class-bc-templates.php:349
    427431msgid "Save and Sync Changes"
    428432msgstr ""
    429433
    430 #: includes/admin/class-bc-templates.php:305
     434#: includes/admin/class-bc-templates.php:316
    431435msgid "Close media panel"
    432436msgstr ""
    433437
    434 #: includes/admin/class-bc-templates.php:315
     438#: includes/admin/class-bc-templates.php:326
    435439msgid "Upload Files"
    436440msgstr ""
    437441
    438 #: includes/admin/class-bc-templates.php:318
     442#: includes/admin/class-bc-templates.php:329
    439443msgid "Video Experience"
    440444msgstr ""
    441445
    442 #: includes/admin/class-bc-templates.php:319
     446#: includes/admin/class-bc-templates.php:330
    443447msgid "Playlist Experience"
    444448msgstr ""
    445449
    446 #: includes/admin/class-bc-templates.php:330
     450#: includes/admin/class-bc-templates.php:341
    447451msgid "selected"
    448452msgstr ""
    449453
    450 #: includes/admin/class-bc-templates.php:330
     454#: includes/admin/class-bc-templates.php:341
    451455msgid "Edit Selection"
    452456msgstr ""
    453457
    454 #: includes/admin/class-bc-templates.php:330
     458#: includes/admin/class-bc-templates.php:341
    455459msgid "Clear"
    456460msgstr ""
    457461
    458 #: includes/admin/class-bc-templates.php:339
     462#: includes/admin/class-bc-templates.php:350
    459463msgid "Insert Into Post"
    460464msgstr ""
    461465
    462 #: includes/admin/class-bc-templates.php:347
    463 #: includes/admin/class-bc-templates.php:437
     466#: includes/admin/class-bc-templates.php:358
     467#: includes/admin/class-bc-templates.php:448
    464468msgid "Drop files to upload"
    465469msgstr ""
    466470
    467 #: includes/admin/class-bc-templates.php:374
    468 #: includes/admin/class-bc-templates.php:408
     471#: includes/admin/class-bc-templates.php:385
     472#: includes/admin/class-bc-templates.php:419
    469473msgid "File Name"
    470474msgstr ""
    471475
    472 #: includes/admin/class-bc-templates.php:375
     476#: includes/admin/class-bc-templates.php:386
    473477msgid "Size"
    474478msgstr ""
    475479
    476 #: includes/admin/class-bc-templates.php:376
    477 #: includes/admin/class-bc-templates.php:420
     480#: includes/admin/class-bc-templates.php:387
     481#: includes/admin/class-bc-templates.php:431
    478482msgid "Source"
    479483msgstr ""
    480484
    481 #: includes/admin/class-bc-templates.php:377
     485#: includes/admin/class-bc-templates.php:388
    482486msgid "Progress"
    483487msgstr ""
    484488
    485 #: includes/admin/class-bc-templates.php:384
     489#: includes/admin/class-bc-templates.php:395
    486490msgid "Start Upload"
    487491msgstr ""
    488492
    489 #: includes/admin/class-bc-templates.php:446
     493#: includes/admin/class-bc-templates.php:457
    490494msgid "Upload Limit Exceeded"
    491495msgstr ""
    492496
    493 #: includes/admin/class-bc-templates.php:449
     497#: includes/admin/class-bc-templates.php:460
    494498msgid "Drop files anywhere to upload"
    495499msgstr ""
    496500
    497 #: includes/admin/class-bc-templates.php:451
     501#: includes/admin/class-bc-templates.php:462
    498502msgid "Select Files"
    499503msgstr ""
    500504
    501 #: includes/admin/class-bc-templates.php:466
     505#: includes/admin/class-bc-templates.php:477
    502506msgid "Maximum upload file size: "
    503507msgstr ""
    504508
    505 #: includes/admin/class-bc-templates.php:468
     509#: includes/admin/class-bc-templates.php:479
    506510msgid ""
    507511"Please reference the readme.txt file of this plugin for further information "
     
    509513msgstr ""
    510514
    511 #: includes/admin/class-bc-templates.php:500
    512 #: includes/admin/class-bc-templates.php:831
     515#: includes/admin/class-bc-templates.php:511
     516#: includes/admin/class-bc-templates.php:842
    513517msgid "Video"
    514518msgstr ""
    515519
    516 #: includes/admin/class-bc-templates.php:505
    517 #: includes/admin/class-bc-templates.php:836
     520#: includes/admin/class-bc-templates.php:516
     521#: includes/admin/class-bc-templates.php:847
    518522msgid "Smart"
    519523msgstr ""
    520524
    521 #: includes/admin/class-bc-templates.php:517
    522 #: includes/admin/class-bc-templates.php:559
    523 #: includes/admin/class-bc-templates.php:562
    524 #: includes/admin/class-bc-templates.php:844
     525#: includes/admin/class-bc-templates.php:528
     526#: includes/admin/class-bc-templates.php:570
     527#: includes/admin/class-bc-templates.php:573
     528#: includes/admin/class-bc-templates.php:855
    525529msgid "Edit"
    526530msgstr ""
    527531
    528 #: includes/admin/class-bc-templates.php:518
    529 #: includes/admin/class-bc-templates.php:560
    530 #: includes/admin/class-bc-templates.php:563
     532#: includes/admin/class-bc-templates.php:529
     533#: includes/admin/class-bc-templates.php:571
     534#: includes/admin/class-bc-templates.php:574
    531535msgid "Preview"
    532536msgstr ""
    533537
    534 #: includes/admin/class-bc-templates.php:574
    535 #: includes/admin/class-bc-templates.php:672
    536 #: includes/admin/class-bc-templates.php:749
     538#: includes/admin/class-bc-templates.php:585
     539#: includes/admin/class-bc-templates.php:683
     540#: includes/admin/class-bc-templates.php:760
    537541msgid "Source: "
    538542msgstr ""
    539543
    540 #: includes/admin/class-bc-templates.php:579
     544#: includes/admin/class-bc-templates.php:590
    541545msgid "Video ID: "
    542 msgstr ""
    543 
    544 #: includes/admin/class-bc-templates.php:590
    545 #: includes/admin/class-bc-templates.php:870
    546 msgid "Video Player: "
    547546msgstr ""
    548547
    549548#: includes/admin/class-bc-templates.php:601
    550549#: includes/admin/class-bc-templates.php:881
     550msgid "Video Player: "
     551msgstr ""
     552
     553#: includes/admin/class-bc-templates.php:612
     554#: includes/admin/class-bc-templates.php:892
    551555msgid "Autoplay: "
    552556msgstr ""
    553557
    554 #: includes/admin/class-bc-templates.php:608
    555 #: includes/admin/class-bc-templates.php:888
     558#: includes/admin/class-bc-templates.php:619
     559#: includes/admin/class-bc-templates.php:899
    556560msgid "Mute: "
    557 msgstr ""
    558 
    559 #: includes/admin/class-bc-templates.php:615
    560 #: includes/admin/class-bc-templates.php:701
    561 #: includes/admin/class-bc-templates.php:778
    562 #: includes/admin/class-bc-templates.php:895
    563 msgid "Embed Style: "
    564 msgstr ""
    565 
    566 #: includes/admin/class-bc-templates.php:618
    567 #: includes/admin/class-bc-templates.php:704
    568 #: includes/admin/class-bc-templates.php:781
    569 msgid "JavaScript"
    570 msgstr ""
    571 
    572 #: includes/admin/class-bc-templates.php:619
    573 #: includes/admin/class-bc-templates.php:705
    574 #: includes/admin/class-bc-templates.php:782
    575 #: includes/admin/class-bc-templates.php:898
    576 msgid "iFrame"
    577 msgstr ""
    578 
    579 #: includes/admin/class-bc-templates.php:623
    580 #: includes/admin/class-bc-templates.php:709
    581 #: includes/admin/class-bc-templates.php:786
    582 #: includes/admin/class-bc-templates.php:916
    583 msgid "Sizing: "
    584561msgstr ""
    585562
     
    587564#: includes/admin/class-bc-templates.php:712
    588565#: includes/admin/class-bc-templates.php:789
    589 #: includes/admin/class-bc-templates.php:919
     566#: includes/admin/class-bc-templates.php:906
     567msgid "Embed Style: "
     568msgstr ""
     569
     570#: includes/admin/class-bc-templates.php:629
     571#: includes/admin/class-bc-templates.php:715
     572#: includes/admin/class-bc-templates.php:792
     573msgid "JavaScript"
     574msgstr ""
     575
     576#: includes/admin/class-bc-templates.php:630
     577#: includes/admin/class-bc-templates.php:716
     578#: includes/admin/class-bc-templates.php:793
     579#: includes/admin/class-bc-templates.php:909
     580msgid "iFrame"
     581msgstr ""
     582
     583#: includes/admin/class-bc-templates.php:634
     584#: includes/admin/class-bc-templates.php:720
     585#: includes/admin/class-bc-templates.php:797
     586#: includes/admin/class-bc-templates.php:927
     587msgid "Sizing: "
     588msgstr ""
     589
     590#: includes/admin/class-bc-templates.php:637
     591#: includes/admin/class-bc-templates.php:723
     592#: includes/admin/class-bc-templates.php:800
     593#: includes/admin/class-bc-templates.php:930
    590594msgid "Responsive"
    591595msgstr ""
    592596
    593 #: includes/admin/class-bc-templates.php:627
    594 #: includes/admin/class-bc-templates.php:713
    595 #: includes/admin/class-bc-templates.php:790
    596 #: includes/admin/class-bc-templates.php:920
     597#: includes/admin/class-bc-templates.php:638
     598#: includes/admin/class-bc-templates.php:724
     599#: includes/admin/class-bc-templates.php:801
     600#: includes/admin/class-bc-templates.php:931
    597601msgid "Fixed"
    598602msgstr ""
    599603
    600 #: includes/admin/class-bc-templates.php:631
    601 #: includes/admin/class-bc-templates.php:924
     604#: includes/admin/class-bc-templates.php:642
     605#: includes/admin/class-bc-templates.php:935
    602606msgid "Aspect Ratio: "
    603607msgstr ""
    604608
    605 #: includes/admin/class-bc-templates.php:636
    606 #: includes/admin/class-bc-templates.php:929
     609#: includes/admin/class-bc-templates.php:647
     610#: includes/admin/class-bc-templates.php:940
    607611msgid "Custom"
    608612msgstr ""
    609613
    610 #: includes/admin/class-bc-templates.php:640
    611 #: includes/admin/class-bc-templates.php:717
    612 #: includes/admin/class-bc-templates.php:794
    613 #: includes/admin/class-bc-templates.php:933
     614#: includes/admin/class-bc-templates.php:651
     615#: includes/admin/class-bc-templates.php:728
     616#: includes/admin/class-bc-templates.php:805
     617#: includes/admin/class-bc-templates.php:944
    614618msgid "Width: "
    615619msgstr ""
    616620
    617 #: includes/admin/class-bc-templates.php:645
    618 #: includes/admin/class-bc-templates.php:722
    619 #: includes/admin/class-bc-templates.php:799
    620 #: includes/admin/class-bc-templates.php:938
     621#: includes/admin/class-bc-templates.php:656
     622#: includes/admin/class-bc-templates.php:733
     623#: includes/admin/class-bc-templates.php:810
     624#: includes/admin/class-bc-templates.php:949
    621625msgid "Height: "
    622626msgstr ""
    623627
    624 #: includes/admin/class-bc-templates.php:650
    625 #: includes/admin/class-bc-templates.php:727
    626 #: includes/admin/class-bc-templates.php:804
    627 #: includes/admin/class-bc-templates.php:943
     628#: includes/admin/class-bc-templates.php:661
     629#: includes/admin/class-bc-templates.php:738
     630#: includes/admin/class-bc-templates.php:815
     631#: includes/admin/class-bc-templates.php:954
    628632msgid "Shortcode"
    629633msgstr ""
    630634
    631 #: includes/admin/class-bc-templates.php:653
    632 #: includes/admin/class-bc-templates.php:730
    633 #: includes/admin/class-bc-templates.php:807
    634 #: includes/admin/class-bc-templates.php:946
     635#: includes/admin/class-bc-templates.php:664
     636#: includes/admin/class-bc-templates.php:741
     637#: includes/admin/class-bc-templates.php:818
     638#: includes/admin/class-bc-templates.php:957
    635639msgid "Auto generate"
    636640msgstr ""
    637641
    638 #: includes/admin/class-bc-templates.php:654
    639 #: includes/admin/class-bc-templates.php:731
    640 #: includes/admin/class-bc-templates.php:808
    641 #: includes/admin/class-bc-templates.php:947
     642#: includes/admin/class-bc-templates.php:665
     643#: includes/admin/class-bc-templates.php:742
     644#: includes/admin/class-bc-templates.php:819
     645#: includes/admin/class-bc-templates.php:958
    642646msgid "Manual"
    643647msgstr ""
    644648
    645 #: includes/admin/class-bc-templates.php:677
     649#: includes/admin/class-bc-templates.php:688
    646650msgid "Video IDs: "
    647651msgstr ""
    648652
    649 #: includes/admin/class-bc-templates.php:688
     653#: includes/admin/class-bc-templates.php:699
     654#: includes/admin/class-bc-templates.php:776
     655msgid "Experience Player: "
     656msgstr ""
     657
    650658#: includes/admin/class-bc-templates.php:765
    651 msgid "Experience Player: "
    652 msgstr ""
    653 
    654 #: includes/admin/class-bc-templates.php:754
    655 #: includes/admin/class-bc-templates.php:854
     659#: includes/admin/class-bc-templates.php:865
    656660msgid "Playlist ID: "
    657661msgstr ""
    658662
    659 #: includes/admin/class-bc-templates.php:858
     663#: includes/admin/class-bc-templates.php:869
    660664msgid "Account Name: "
    661665msgstr ""
    662666
    663 #: includes/admin/class-bc-templates.php:859
     667#: includes/admin/class-bc-templates.php:870
    664668msgid "Created At: "
    665669msgstr ""
    666670
    667 #: includes/admin/class-bc-templates.php:860
     671#: includes/admin/class-bc-templates.php:871
    668672msgid "Updated At: "
    669673msgstr ""
    670674
    671 #: includes/admin/class-bc-templates.php:861
     675#: includes/admin/class-bc-templates.php:872
    672676msgid "Playlist Type: "
    673677msgstr ""
    674678
    675 #: includes/admin/class-bc-templates.php:905
     679#: includes/admin/class-bc-templates.php:916
    676680msgid "JavaScript Horizontal"
    677681msgstr ""
    678682
    679 #: includes/admin/class-bc-templates.php:912
     683#: includes/admin/class-bc-templates.php:923
    680684msgid "JavaScript Vertical"
    681685msgstr ""
    682686
    683 #: includes/admin/class-bc-templates.php:960
     687#: includes/admin/class-bc-templates.php:971
    684688msgid "Filter by source"
    685689msgstr ""
    686690
    687 #: includes/admin/class-bc-templates.php:976
     691#: includes/admin/class-bc-templates.php:987
    688692msgid "Filter by tag"
    689693msgstr ""
    690694
    691 #: includes/admin/class-bc-templates.php:978
     695#: includes/admin/class-bc-templates.php:989
    692696msgid "All tags"
    693697msgstr ""
    694698
    695 #: includes/admin/class-bc-templates.php:988
    696 #: includes/admin/class-bc-templates.php:1001
     699#: includes/admin/class-bc-templates.php:995
     700msgid "Filter by folder"
     701msgstr ""
     702
     703#: includes/admin/class-bc-templates.php:997
     704msgid "All folders"
     705msgstr ""
     706
     707#: includes/admin/class-bc-templates.php:1009
     708#: includes/admin/class-bc-templates.php:1022
    697709msgid "Please note that you can create new Experiences only from Brightcove."
    698710msgstr ""
    699711
    700 #: includes/admin/class-bc-templates.php:993
     712#: includes/admin/class-bc-templates.php:1014
    701713msgid "Leave videos unselected for default Experience behavior."
    702714msgstr ""
    703715
    704 #: includes/admin/class-bc-templates.php:1009
     716#: includes/admin/class-bc-templates.php:1030
    705717msgid "Please note that you can create new playlists only from Brightcove."
    706718msgstr ""
    707719
    708 #: includes/admin/class-bc-templates.php:1014
     720#: includes/admin/class-bc-templates.php:1035
    709721msgid "Hide Empty Playlists"
    710722msgstr ""
    711723
    712 #: includes/admin/class-bc-templates.php:1017
     724#: includes/admin/class-bc-templates.php:1038
    713725msgid "Delete Selected"
    714726msgstr ""
    715727
    716 #: includes/admin/class-bc-templates.php:1022
     728#: includes/admin/class-bc-templates.php:1043
    717729msgid "Search Media"
    718730msgstr ""
    719731
    720 #: includes/admin/class-bc-templates.php:1023
    721 #: includes/admin/class-bc-templates.php:1024
     732#: includes/admin/class-bc-templates.php:1044
     733#: includes/admin/class-bc-templates.php:1045
    722734msgid "Search"
    723735msgstr ""
    724736
    725 #: includes/admin/class-bc-templates.php:1025
     737#: includes/admin/class-bc-templates.php:1046
    726738msgid "help"
    727739msgstr ""
    728740
    729 #: includes/admin/class-bc-templates.php:1033
     741#: includes/admin/class-bc-templates.php:1054
    730742msgid "the Brightcove Documentation page."
    731743msgstr ""
    732744
    733 #: includes/admin/class-bc-templates.php:1034
    734 #: includes/admin/class-bc-templates.php:1042
    735 #: includes/admin/class-bc-templates.php:1050
     745#: includes/admin/class-bc-templates.php:1055
     746#: includes/admin/class-bc-templates.php:1063
     747#: includes/admin/class-bc-templates.php:1071
    736748msgid "Dismiss this notice."
    737749msgstr ""
    738750
    739 #: includes/admin/class-bc-templates.php:1041
     751#: includes/admin/class-bc-templates.php:1062
    740752msgid ""
    741753"This video was not able to be inserted into the page. Please try again "
     
    744756msgstr ""
    745757
    746 #: includes/admin/class-bc-templates.php:1041
     758#: includes/admin/class-bc-templates.php:1062
    747759msgid "the Brightcove Status page."
    748760msgstr ""
    749761
    750 #: includes/admin/class-bc-templates.php:1049
     762#: includes/admin/class-bc-templates.php:1070
    751763msgid "Search exact word or phrases by wrapping search in quotes."
    752764msgstr ""
    753765
    754 #: includes/admin/class-bc-templates.php:1049
     766#: includes/admin/class-bc-templates.php:1070
    755767msgid "Example:\"My Favorite Video\""
    756768msgstr ""
     
    868880msgstr ""
    869881
    870 #: includes/class-bc-setup.php:244
     882#: includes/class-bc-setup.php:248
    871883msgid "Allowed Files"
    872884msgstr ""
    873885
    874 #: includes/class-bc-setup.php:254
     886#: includes/class-bc-setup.php:258
    875887msgid ""
    876888"Deleting this video will prevent it from showing in any existing posts. Are "
     
    878890msgstr ""
    879891
    880 #: includes/class-bc-setup.php:255
     892#: includes/class-bc-setup.php:259
    881893msgid ""
    882894"We are currently performing a sync of your new Brightcove source, you may "
     
    884896msgstr ""
    885897
    886 #: includes/class-bc-setup.php:256
     898#: includes/class-bc-setup.php:260
    887899msgid "Successfully uploaded file with name %%s%%."
    888900msgstr ""
    889901
    890 #: includes/class-bc-setup.php:257
     902#: includes/class-bc-setup.php:261
    891903msgid ""
    892904"We were unable to upload the file with name %%s%%. Please try reuploading "
     
    894906msgstr ""
    895907
    896 #: includes/class-bc-setup.php:295
     908#: includes/class-bc-setup.php:299
    897909msgid ""
    898910"This file is not the proper format. Please use .vtt files, for more "
     
    900912msgstr ""
    901913
    902 #: includes/class-bc-setup.php:298
     914#: includes/class-bc-setup.php:302
    903915msgid "Add another remote file"
    904916msgstr ""
    905917
    906 #: includes/class-bc-setup.php:300
     918#: includes/class-bc-setup.php:304
    907919msgid "Use a remote file instead"
    908920msgstr ""
    909921
    910 #: includes/class-bc-setup.php:301
     922#: includes/class-bc-setup.php:305
    911923msgid ""
    912924"Sorry! We weren't able to reach the Brightcove API even after trying a few "
     
    914926msgstr ""
    915927
    916 #: includes/class-bc-setup.php:407
     928#: includes/class-bc-setup.php:411
    917929msgid "Please configure Brightcove settings from"
    918930msgstr ""
    919931
    920 #: includes/class-bc-setup.php:409
     932#: includes/class-bc-setup.php:413
    921933msgid "here"
    922934msgstr ""
    923935
    924 #: includes/class-bc-setup.php:424
     936#: includes/class-bc-setup.php:428
    925937msgid "BC In Process Videos"
    926938msgstr ""
    927939
    928 #: includes/class-bc-setup.php:452
     940#: includes/class-bc-setup.php:456
    929941msgid ""
    930942"<div class=\"error\"><p><strong>Brightcove Video Cloud Enhanced</strong> "
     
    16961708msgstr ""
    16971709
    1698 #: includes/admin/class-bc-templates.php:450
     1710#: includes/admin/class-bc-templates.php:461
    16991711msgctxt "Uploader: Drop files here - or - Select Files"
    17001712msgid "or"
  • brightcove-video-connect/trunk/readme.txt

    r1995128 r2057701  
    11=== Brightcove Video Connect ===
    22
    3 Contributors: 10up, ivankk, technosailor, ChrisWiegman, tott, eduardmaghakyan, mattonomics, phoenixfireball, karinedo, foobuilder, helen, tlovett1, jonathantneal, brightcove, adamsilverstein, jonbellah, sudar, bctbaldwin, collinsinternet
     3Contributors: 10up, collinsinternet, ivankk, technosailor, ChrisWiegman, tott, eduardmaghakyan, mattonomics, phoenixfireball, karinedo, foobuilder, helen, tlovett1, jonathantneal, brightcove, adamsilverstein, jonbellah, sudar, bctbaldwin
    44Donate link: https://supporters.eff.org/donate
    55Tags: brightcove, 10up, videos, video
    66Requires at least: 4.2
    7 Tested up to: 5.0
    8 Stable tag: 1.6.1
     7Tested up to: 5.1
     8Stable tag: 1.7.0
    99License: GPLv2 or later
    1010License URI: http://www.gnu.org/licenses/gpl-2.0.html
     
    2222
    2323== Changelog ==
     24
     25= 1.7.0 =
     26
     27* Enhancement: Folder API support.
     28* Fix: Removed extra slashes that appeared on titles and descriptions.
     29* Fix: Behavior of status update messages.
    2430
    2531= 1.6.1 =
Note: See TracChangeset for help on using the changeset viewer.