Video Embed & Thumbnail Generator - Version 4.1

Version Description

May 19, 2013 = * Updated Video.js to version 4.0 and created a new skin that approximates the old one. Older versions of Video.js had some security holes, so this update is highly recommended. * Significantly reduced inline JavaScript generated by the plugin. * Fixed bug that disabled Strobe Media Playback player and caused "TypeError: Error #1034" messages, particularly in Internet Explorer. * Fixed bug that caused view count to be replaced by complete views when the end of the video is reached. * Fixed bug that disabled video encode status monitoring in media modal popup when the same video was already in the post edit window. * Fixed missing "document." in JavaScript when choosing thumbnails which prevented some users from properly selecting and saving generated thumbnails. * Fixed bug that displayed WordPress thumbnail-sized poster image if no poster URL was in shortcode. * Tweaked video resize method to support more kinds of themes. * Added ability to turn off watermark on individual videos by entering watermark="false" in the shortcode. * Added option to disable embedding on other websites. * Added option to allow videos to be placed next to each other on the page. * Added support for AAC library libfdk_aac. * Adjusted embedded video and gallery CSS to account for colored backgrounds. * Renamed "Poster image" plugin setting to "Default thumbnail" * Removed post meta box below post editing window until I can work out a way to generate them without disabling video encode status monitoring in media modal popup when the same video is already in the post edit window. * Replaced deprecated ereg PHP function with preg_match and used a more precise regular expression when determining the height and width of videos.

Download this release

Release Info

Developer kylegilman
Plugin Icon 128x128 Video Embed & Thumbnail Generator
Version 4.1
Comparing to
See all releases

Code changes from version 4.0.3 to 4.1

css/kgvid_styles.css CHANGED
@@ -1,6 +1,5 @@
1
  .kgvid_wrapper {
2
  margin: 1em 0px;
3
- display: inline-block;
4
  position: relative;
5
  }
6
 
@@ -124,6 +123,7 @@ img.kgvid_ios_novideo {
124
 
125
  .kgvid_video_gallery_thumb {
126
  position: relative;
 
127
  display:inline-block;
128
  margin:10px;
129
  cursor: pointer; !important
1
  .kgvid_wrapper {
2
  margin: 1em 0px;
 
3
  position: relative;
4
  }
5
 
123
 
124
  .kgvid_video_gallery_thumb {
125
  position: relative;
126
+ float: left;
127
  display:inline-block;
128
  margin:10px;
129
  cursor: pointer; !important
js/kgvid_video_embed.js CHANGED
@@ -1,4 +1,11 @@
 
 
1
  function kgvid_SetVideo(suffix, site_url, id, width, height) {
 
 
 
 
 
2
  jQuery('#kgvid_GalleryPlayerDiv_'+suffix).html('<iframe id="kgvid_GalleryVideo_'+id+'" src="'+site_url+'?attachment_id='+id+'&kgvid_video_embed[enable]=true&kgvid_video_embed[gallery]=true&kgvid_video_embed[width]='+width+'&kgvid_video_embed[height]='+height+'" scrolling="no" width="'+width+'" height="'+height+'" frameborder="0" webkitallowfullscreen="" allowfullscreen=""></iframe>');
3
  jQuery('#kgvid_GalleryPlayerDiv_'+suffix).dialog("option", "width", parseInt(width)+6);
4
  jQuery('#kgvid_GalleryPlayerDiv_'+suffix).dialog('open');
@@ -6,50 +13,120 @@ function kgvid_SetVideo(suffix, site_url, id, width, height) {
6
  jQuery('.ui-widget-overlay').click(function () { jQuery('#kgvid_GalleryPlayerDiv_'+suffix).dialog('close'); });
7
  }
8
 
9
- function kgvid_setup_video(id, player_type, set_volume) {
10
- var player = _V_('video_'+id);
11
- if ( player_type == "Video.js" ) {
12
- if ( set_volume != "" ) { player.volume(set_volume); }
13
- }
14
- if ( player_type == "Strobe Media Playback" ) {
15
- if ( set_volume != "" ) { document.getElementById('video_'+id+'html5_api').setVolume(set_volume); }
16
- jQuery('#video_'+id+'_div').hover(function(){ jQuery('#video_'+id+'_meta').addClass('kgvid_video_meta_hover'); },function(){ jQuery('#video_'+id+'_meta').removeClass('kgvid_video_meta_hover'); });
17
- }
18
  jQuery('#video_'+id+'_div').prepend(jQuery('#video_'+id+'_watermark'));
19
  jQuery('#video_'+id+'_watermark').attr('style', ''); //shows the hidden watermark div
20
  jQuery('#video_'+id+'_div').prepend(jQuery('#video_'+id+'_meta'));
21
  jQuery('#video_'+id+'_meta').attr('style', ''); //shows the hidden meta div
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  }
23
 
24
- function kgvid_ios_player(id) {
25
- var player = _V_('video_'+id);
26
- var source = document.getElementById('video_'+id+'_html5_api').src
27
- var poster = player.options.poster;
28
- if ( source != "" ) {
29
- player.tag.src = '';
30
- player.tech.removeTriggers();
31
- player.load();
32
- player.destroy();
33
- var ios_video = '<video id="video_'+id+'" controls preload="metadata"';
34
- if ( poster != null ) { ios_video += ' poster="'+poster+'" '; }
35
- ios_video += '\><source src="'+source+'" type="video/mp4" /></video>';
36
- }
37
- else {
38
- var ios_video = '<div id="video_'+id+'" style="background-color:black;"><div class="kgvid_ios_novideo"></div>';
39
- if ( poster != null ) { ios_video += '<img class="kgvid_ios_novideo" src="'+poster+'">'; }
40
- ios_video += '</div>';
41
  }
42
- jQuery(player.el).remove();
43
- console.log(ios_video);
44
- jQuery('#video_'+id+'_div').prepend(ios_video);
45
- if ( source != "" ) { document.getElementById('video_'+id).load(); }
46
  }
47
 
48
- function kgvid_resize_video(id, player_type, set_width, set_height) {
 
 
 
 
49
  var iOS = ( navigator.userAgent.match(/(iPad|iPhone|iPod)/i) ? true : false );
50
- if ( iOS ) { player_type = "iOS"; }
51
  var aspect_ratio = Math.round(set_height/set_width*1000)/1000
52
- var parent_width = jQuery('#kgvid_'+id+'_wrapper').parent().width();
 
 
53
  if ( parent_width < set_width ) { set_width = parent_width; }
54
  set_width = parseInt(set_width);
55
 
@@ -57,18 +134,19 @@ function kgvid_resize_video(id, player_type, set_width, set_height) {
57
 
58
  jQuery('#kgvid_'+id+'_wrapper').width(set_width);
59
  var set_height = Math.round(set_width * aspect_ratio);
60
- if ( player_type == "Video.js" ) {
61
- _V_('video_'+id).width(set_width).height(set_height);
62
  if ( set_width < 500 ) {
63
  var scale = Math.round(100*set_width/500)/100;
64
  jQuery('#kgvid_'+id+'_wrapper .vjs-big-play-button').css('-webkit-transform','scale('+scale+')').css('-o-transform','scale('+scale+')').css('-ms-transform','scale('+scale+')').css('transform','scale('+scale+')');
65
  }
66
  }
67
- if ( player_type == "Strobe Media Playback" ) {
68
  jQuery('#video_'+id+'_div').height(set_height);
 
69
  jQuery('#video_'+id+'_html5_api').attr('width',set_width).attr('height',set_height);
70
  }
71
- if ( player_type == "iOS" ) {
72
  jQuery('#video_'+id).attr('width',set_width).attr('height',set_height);
73
  jQuery('#video_'+id).width(set_width).height(set_height);
74
  }
@@ -82,24 +160,40 @@ function kgvid_resize_video(id, player_type, set_width, set_height) {
82
  width_remove = 0;
83
  if ( jQuery('#video_'+id+'_viewcount').length ) { width_remove = jQuery('#video_'+id+'_viewcount').width()+20; }
84
  jQuery('#video_'+id+'_caption').width(set_width-width_remove); //wraps long captions
 
 
 
 
 
 
 
 
 
 
 
 
 
 
85
  }
86
 
87
- function kgvid_video_counter(id, event, countable, title) {
 
 
88
  var changed = false;
89
 
90
  var played = jQuery('#video_'+id+'_div').data("played") || "not played";
91
  if ( played == "not played" ) {
92
- if (countable) { //video is in the db
93
  changed = true;
94
  jQuery('#video_'+id+'_div').data("played", "played");
95
  }
96
- if (typeof _gaq != "undefined") { _gaq.push(["_trackEvent", "Videos", "Play Start", title]); }
97
  }
98
  if ( event == "end" ) {
99
- if (countable) { //video is in the db
100
  changed = true;
101
  }
102
- if (typeof _gaq != 'undefined') { _gaq.push(['_trackEvent', 'Videos', 'Complete View', title]); }
103
  }
104
  if ( changed == true ) {
105
  jQuery.post(ajax_object.ajaxurl, {
@@ -107,7 +201,7 @@ function kgvid_video_counter(id, event, countable, title) {
107
  post_id: id,
108
  video_event: event
109
  }, function(data) {
110
- jQuery('#video_'+id+'_viewcount').html(data+' views');
111
  });
112
  }
113
  }
1
+ var kgvid_video_vars = {};
2
+
3
  function kgvid_SetVideo(suffix, site_url, id, width, height) {
4
+ var aspect_ratio = Math.round(height/width*1000)/1000
5
+ if ( width > screen.width ) {
6
+ width = screen.width-6;
7
+ height = Math.round(width * aspect_ratio);
8
+ }
9
  jQuery('#kgvid_GalleryPlayerDiv_'+suffix).html('<iframe id="kgvid_GalleryVideo_'+id+'" src="'+site_url+'?attachment_id='+id+'&kgvid_video_embed[enable]=true&kgvid_video_embed[gallery]=true&kgvid_video_embed[width]='+width+'&kgvid_video_embed[height]='+height+'" scrolling="no" width="'+width+'" height="'+height+'" frameborder="0" webkitallowfullscreen="" allowfullscreen=""></iframe>');
10
  jQuery('#kgvid_GalleryPlayerDiv_'+suffix).dialog("option", "width", parseInt(width)+6);
11
  jQuery('#kgvid_GalleryPlayerDiv_'+suffix).dialog('open');
13
  jQuery('.ui-widget-overlay').click(function () { jQuery('#kgvid_GalleryPlayerDiv_'+suffix).dialog('close'); });
14
  }
15
 
16
+ function kgvid_setup_video(id) {
17
+ var video_vars = kgvid_video_vars[id];
18
+ var iOS = ( navigator.userAgent.match(/(iPad|iPhone|iPod)/i) ? true : false );
19
+ if (iOS) { video_vars.player_type = "Video.js"; }
20
+
 
 
 
 
21
  jQuery('#video_'+id+'_div').prepend(jQuery('#video_'+id+'_watermark'));
22
  jQuery('#video_'+id+'_watermark').attr('style', ''); //shows the hidden watermark div
23
  jQuery('#video_'+id+'_div').prepend(jQuery('#video_'+id+'_meta'));
24
  jQuery('#video_'+id+'_meta').attr('style', ''); //shows the hidden meta div
25
+
26
+ if ( video_vars.player_type == "Video.js" ) {
27
+
28
+ var player = videojs('video_'+id);
29
+
30
+ if ( video_vars.set_volume != "" ) { player.volume(video_vars.set_volume); }
31
+
32
+ player.on('play', function(){
33
+ if ( video_vars.meta ) {
34
+ jQuery('#video_'+id+'_div').hover(
35
+ function(){
36
+ jQuery('#video_'+id+'_meta').addClass('kgvid_video_meta_hover');
37
+ },
38
+ function(){
39
+ jQuery('#video_'+id+'_meta').removeClass('kgvid_video_meta_hover');
40
+ }
41
+ );
42
+ jQuery('#video_'+id+'_meta').removeClass('kgvid_video_meta_hover');
43
+ }
44
+ if ( video_vars.autoplay == "true" ) { jQuery('#video_'+id+' > .vjs-control-bar').removeClass('vjs-fade-in'); }
45
+ kgvid_video_counter(id, 'play');
46
+ });
47
+
48
+ player.on('ended', function(){
49
+ kgvid_video_counter(id, 'end');
50
+ setTimeout(function() { jQuery('#video_'+id+' > .vjs-loading-spinner').hide(); }, 250);
51
+ });
52
+
53
+ player.on('fullscreenchange', function(){
54
+
55
+ var
56
+ fullScreenApi = {
57
+ supportsFullScreen: false,
58
+ isFullScreen: function() { return false; },
59
+ requestFullScreen: function() {},
60
+ cancelFullScreen: function() {},
61
+ fullScreenEventName: '',
62
+ prefix: ''
63
+ },
64
+ browserPrefixes = 'webkit moz o ms khtml'.split(' ');
65
+
66
+ // check for native support
67
+ if (typeof document.cancelFullScreen != 'undefined') {
68
+ fullScreenApi.supportsFullScreen = true;
69
+ } else {
70
+ // check for fullscreen support by vendor prefix
71
+ for (var i = 0, il = browserPrefixes.length; i < il; i++ ) {
72
+ fullScreenApi.prefix = browserPrefixes[i];
73
+ if (typeof document[fullScreenApi.prefix + 'CancelFullScreen' ] != 'undefined' ) {
74
+ fullScreenApi.supportsFullScreen = true;
75
+ break;
76
+ }
77
+ }
78
+ }
79
+
80
+ if ( fullScreenApi.supportsFullScreen == true ) { jQuery('#video_'+id).removeClass('vjs-fullscreen'); }
81
+ else if ( jQuery('#video_'+id).hasClass('vjs-fullscreen') ) {
82
+ jQuery('#video_'+id+'_meta').hide();
83
+ jQuery('#video_'+id+'_watermark img').css('position', 'fixed');
84
+ }
85
+ else {
86
+ jQuery('#video_'+id+'_meta').show();
87
+ jQuery('#video_'+id+'_watermark img').css('position', 'absolute');
88
+ }
89
+
90
+ });
91
+
92
+ } //end if Video.js
93
+
94
+ if ( video_vars.player_type == "Strobe Media Playback" ) {
95
+
96
+ if ( video_vars.autoplay == "true" ) { jQuery('#video_'+id+'_meta').removeClass('kgvid_video_meta_hover'); }
97
+ jQuery('#video_'+id+'_div').hover(
98
+ function(){
99
+ jQuery('#video_'+id+'_meta').addClass('kgvid_video_meta_hover');
100
+ jQuery('#video_'+id+'_watermark').fadeOut(100);
101
+ },
102
+ function(){
103
+ jQuery('#video_'+id+'_meta').removeClass('kgvid_video_meta_hover');
104
+ setTimeout(function(){jQuery('#video_'+id+'_watermark').fadeIn('slow');},3000);
105
+ }
106
+ );
107
+ } //end if Strobe Media Playback
108
+
109
+ kgvid_resize_video(id);
110
+ window.addEventListener('resize', kgvid_resize_all_videos, false);
111
  }
112
 
113
+ function kgvid_resize_all_videos() {
114
+ for (var id in kgvid_video_vars) {
115
+ kgvid_resize_video(id);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
116
  }
 
 
 
 
117
  }
118
 
119
+ function kgvid_resize_video(id) {
120
+
121
+ var video_vars = kgvid_video_vars[id];
122
+ var set_width = video_vars.width;
123
+ var set_height = video_vars.height;
124
  var iOS = ( navigator.userAgent.match(/(iPad|iPhone|iPod)/i) ? true : false );
125
+ if ( iOS ) { video_vars.player_type = "iOS"; }
126
  var aspect_ratio = Math.round(set_height/set_width*1000)/1000
127
+ var reference_div = jQuery('#kgvid_'+id+'_wrapper').parent().children().first();
128
+ if ( reference_div.attr('id') == 'kgvid_'+id+'_wrapper' ) { reference_div = jQuery('#kgvid_'+id+'_wrapper').parent(); }
129
+ parent_width = reference_div.width();
130
  if ( parent_width < set_width ) { set_width = parent_width; }
131
  set_width = parseInt(set_width);
132
 
134
 
135
  jQuery('#kgvid_'+id+'_wrapper').width(set_width);
136
  var set_height = Math.round(set_width * aspect_ratio);
137
+ if ( video_vars.player_type == "Video.js" ) {
138
+ videojs('video_'+id).width(set_width).height(set_height);
139
  if ( set_width < 500 ) {
140
  var scale = Math.round(100*set_width/500)/100;
141
  jQuery('#kgvid_'+id+'_wrapper .vjs-big-play-button').css('-webkit-transform','scale('+scale+')').css('-o-transform','scale('+scale+')').css('-ms-transform','scale('+scale+')').css('transform','scale('+scale+')');
142
  }
143
  }
144
+ if ( video_vars.player_type == "Strobe Media Playback" ) {
145
  jQuery('#video_'+id+'_div').height(set_height);
146
+ jQuery('#video_'+id).attr('width',set_width).attr('height',set_height);
147
  jQuery('#video_'+id+'_html5_api').attr('width',set_width).attr('height',set_height);
148
  }
149
+ if ( video_vars.player_type == "iOS" ) {
150
  jQuery('#video_'+id).attr('width',set_width).attr('height',set_height);
151
  jQuery('#video_'+id).width(set_width).height(set_height);
152
  }
160
  width_remove = 0;
161
  if ( jQuery('#video_'+id+'_viewcount').length ) { width_remove = jQuery('#video_'+id+'_viewcount').width()+20; }
162
  jQuery('#video_'+id+'_caption').width(set_width-width_remove); //wraps long captions
163
+
164
+ }
165
+
166
+ function kgvid_strobemedia_callback(id) {
167
+
168
+ var player = document.getElementById('video_'+id);
169
+ var video_vars = kgvid_video_vars[id];
170
+ if ( player.getState() == 'buffering' || player.getState() == 'playing' ) {
171
+ kgvid_video_counter(video_vars.id, 'play');
172
+ }
173
+
174
+ if ( player.getState() == 'uninitialized' && video_vars.set_volume != "" ) {
175
+ player.setVolume(video_vars.set_volume);
176
+ }
177
  }
178
 
179
+ function kgvid_video_counter(id, event) {
180
+
181
+ var video_vars = kgvid_video_vars[id];
182
  var changed = false;
183
 
184
  var played = jQuery('#video_'+id+'_div').data("played") || "not played";
185
  if ( played == "not played" ) {
186
+ if (video_vars.countable) { //video is in the db
187
  changed = true;
188
  jQuery('#video_'+id+'_div').data("played", "played");
189
  }
190
+ if (typeof _gaq != "undefined") { _gaq.push(["_trackEvent", "Videos", "Play Start", video_vars.title]); }
191
  }
192
  if ( event == "end" ) {
193
+ if (video_vars.countable) { //video is in the db
194
  changed = true;
195
  }
196
+ if (typeof _gaq != 'undefined') { _gaq.push(['_trackEvent', 'Videos', 'Complete View', video_vars.title]); }
197
  }
198
  if ( changed == true ) {
199
  jQuery.post(ajax_object.ajaxurl, {
201
  post_id: id,
202
  video_event: event
203
  }, function(data) {
204
+ if ( event == "play" ) { jQuery('#video_'+id+'_viewcount').html(data+' views'); }
205
  });
206
  }
207
  }
js/kgvid_video_plugin_admin.js CHANGED
@@ -124,12 +124,12 @@ function kgvid_enqueue_video_encode(postID) {
124
 
125
  var formats = new Array("rotated", "1080", "720", "mobile", "ogg", "webm");
126
  var kgvid_encode = new Object();
127
- for ( var key in formats ) {
128
- kgvid_encode[formats[key]] = "";
129
- if ( jQuery('#attachments-'+postID+'-kgflashmediaplayer-encode'+formats[key]).length > 0) {
130
- kgvid_encode[formats[key]] = document.getElementById('attachments-'+postID+'-kgflashmediaplayer-encode'+formats[key]).checked;
131
  }
132
- }
133
  JSON.stringify(kgvid_encode);
134
 
135
  jQuery(encodeplaceholderid).empty();
@@ -332,12 +332,12 @@ function kgvid_redraw_encode_checkboxes(movieurl, postID, page) {
332
 
333
  var formats = new Array("rotated", "1080", "720", "mobile", "ogg", "webm");
334
  var kgvid_encode = new Object();
335
- for ( var key in formats ) {
336
- kgvid_encode[formats[key]] = "";
337
- if ( jQuery('#attachments-'+postID+'-kgflashmediaplayer-encode'+formats[key]).length > 0) {
338
- kgvid_encode[formats[key]] = document.getElementById('attachments-'+postID+'-kgflashmediaplayer-encode'+formats[key]).checked;
339
  }
340
- }
341
  JSON.stringify(kgvid_encode);
342
 
343
  jQuery.post(ajaxurl, { action:"kgvid_generate_encode_checkboxes", security: kgflashmediaplayersecurity, movieurl: movieurl, post_id: postID, page: page, encodeformats: kgvid_encode }, function(data) {
124
 
125
  var formats = new Array("rotated", "1080", "720", "mobile", "ogg", "webm");
126
  var kgvid_encode = new Object();
127
+ jQuery.each(formats, function(key,formats) {
128
+ kgvid_encode[formats] = "";
129
+ if ( jQuery('#attachments-'+postID+'-kgflashmediaplayer-encode'+formats).length > 0) {
130
+ kgvid_encode[formats] = document.getElementById('attachments-'+postID+'-kgflashmediaplayer-encode'+formats).checked;
131
  }
132
+ });
133
  JSON.stringify(kgvid_encode);
134
 
135
  jQuery(encodeplaceholderid).empty();
332
 
333
  var formats = new Array("rotated", "1080", "720", "mobile", "ogg", "webm");
334
  var kgvid_encode = new Object();
335
+ jQuery.each(formats, function(key,formats) {
336
+ kgvid_encode[formats] = "";
337
+ if ( jQuery('#attachments-'+postID+'-kgflashmediaplayer-encode'+formats).length > 0) {
338
+ kgvid_encode[formats] = document.getElementById('attachments-'+postID+'-kgflashmediaplayer-encode'+formats).checked;
339
  }
340
+ });
341
  JSON.stringify(kgvid_encode);
342
 
343
  jQuery.post(ajaxurl, { action:"kgvid_generate_encode_checkboxes", security: kgflashmediaplayersecurity, movieurl: movieurl, post_id: postID, page: page, encodeformats: kgvid_encode }, function(data) {
readme.txt CHANGED
@@ -1,10 +1,10 @@
1
  === Video Embed & Thumbnail Generator ===
2
  Contributors: kylegilman
3
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=kylegilman@gmail.com&item_name=Video%20Embed%20And%20Thumbnail%20Generator%20Plugin%20Donation/
4
- Tags: video, video gallery, html5, shortcode, thumbnail, ffmpeg, libav, embed, mobile, webm, ogg, h.264
5
  Requires at least: 3.2
6
  Tested up to: 3.6
7
- Stable tag: 4.0.3
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -14,9 +14,9 @@ Generates thumbnails, HTML5-compliant videos, and embed codes for locally hosted
14
 
15
  = A plugin to make embedding videos, generating thumbnails, and encoding HTML5-compliant files a little bit easier. =
16
 
17
- The plugin adds several fields to any video uploaded to the WordPress Media Library. Just choose a few options and click Insert into Post and you'll get a shortcode in the post editor that will embed a flexible HTML5/Flash video player with a preview image.
18
 
19
- The plugin gives you the option to use either the lightweight, flexible Video.js HTML5 player or Adobe's Strobe Media Playback Flash player. The HTML5 player is styled the same in all browsers and is easily customizable. The Strobe Media Playback option will default to a Flash video player if you're using a Flash-compatible file (flv, f4v, mp4, mov, or m4v). Otherwise it will use the Video.js player as a fallback.
20
 
21
  You can also use the plugin to create a popup video gallery. The shortcode uses options similar to the WordPress image gallery shortcode. In its simplest form use the code `[KGVID gallery="true"][/KGVID]` to create a gallery of all videos attached to the post. Thumbnail size and video popup size can be set on the plugin settings page.
22
 
@@ -57,11 +57,12 @@ width="720" height="404"]http://www.kylegilman.net/wp-content/uploads/2011/10/Re
57
  * `width="xxx"`
58
  * `height="xxx"`
59
  * `align="left/right/center"`
 
60
  * `volume="0.x"` pre-sets the volume for unusually loud videos. Value between 0 and 1.
61
  * `controlbar="docked/floating/none"` sets the controlbar position. Video.js only responds to the "none" option.
62
  * `loop="true/false"`
63
  * `autoplay="true/false"`
64
- * `watermark="http://www.example.com/image.png"`
65
  * `title="Video Title"`
66
  * `embedcode="html code"` changes text displayed in the embed code overlay in order to provide a custom method for embedding a video.
67
  * `view_count="true/false"` turns the view count on or off.
@@ -119,13 +120,17 @@ The Strobe Media Playback Flash player will not play mp4/m4v/mov files that don'
119
 
120
  WordPress already has <a href="http://codex.wordpress.org/Embeds">a built-in system for embedding videos from YouTube, Vimeo, Dailymotion, etc</a>. Just put the URL into your post and WordPress will automatically convert it to an embedded video using oEmbed. You don't need this plugin to do that. If you're trying to generate new thumbnails from YouTube videos, I'm not going to risk Google's wrath by providing that functionality. I'm not even sure I could figure out how to do it anyway.
121
 
122
- = I'm on shared hosting and can't install software. Does this work without FFMPEG? =
123
 
124
- Many of the features of the plugin will work without FFMPEG. You can generate embed shortcodes for your videos on any host because that part of the plugin is JavaScript running in your browser. But without FFMPEG you won't be able to generate thumbnails or encode alternate formats. There is no way around this. A program has to read the video files in order to generate the thumbnails, and FFMPEG is the best one I've found to do that. Dreamhost is one of the few shared hosts I know of that has FFMPEG installed and available for users.
 
 
 
 
125
 
126
  = How can I encode videos in directories protected by .htaccess passwords? =
127
 
128
- Use the "Embed from URL" tab. Use the format http://username:password@yourdomain.com/uploads/2012/01/awesomevid.mp4 in the Video URL field.
129
 
130
  == Screenshots ==
131
 
@@ -136,6 +141,24 @@ Use the "Embed from URL" tab. Use the format http://username:password@yourdomain
136
 
137
  == Changelog ==
138
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
139
  = 4.0.3 - May 01, 2013 =
140
  * Fixed bug that caused video control text to display below videos on iPhones.
141
  * Changed method for saving video plays to the database. Now more secure and accurate.
1
  === Video Embed & Thumbnail Generator ===
2
  Contributors: kylegilman
3
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=kylegilman@gmail.com&item_name=Video%20Embed%20And%20Thumbnail%20Generator%20Plugin%20Donation/
4
+ Tags: video, video player, video gallery, html5, shortcode, thumbnail, poster, ffmpeg, libav, embed, mobile, webm, ogg, h.264, responsive
5
  Requires at least: 3.2
6
  Tested up to: 3.6
7
+ Stable tag: 4.1
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
14
 
15
  = A plugin to make embedding videos, generating thumbnails, and encoding HTML5-compliant files a little bit easier. =
16
 
17
+ The plugin adds several fields to any video uploaded to the WordPress Media Library. Just choose a few options and click Insert into Post and you'll get a shortcode in the post editor that will embed a flexible, responsive HTML5/Flash video player with a preview image.
18
 
19
+ You have the option to use either the lightweight, flexible Video.js HTML5 player or Adobe's Strobe Media Playback Flash player. The HTML5 player is styled the same in all browsers and is easily customizable. The Strobe Media Playback option will default to a Flash video player if you're using a Flash-compatible file (flv, f4v, mp4, mov, or m4v). Otherwise it will use the Video.js player as a fallback. No matter which player you use, the video will resize on the fly to fit the container it's in.
20
 
21
  You can also use the plugin to create a popup video gallery. The shortcode uses options similar to the WordPress image gallery shortcode. In its simplest form use the code `[KGVID gallery="true"][/KGVID]` to create a gallery of all videos attached to the post. Thumbnail size and video popup size can be set on the plugin settings page.
22
 
57
  * `width="xxx"`
58
  * `height="xxx"`
59
  * `align="left/right/center"`
60
+ * `inline="true/false" allow other content on the same line as the video
61
  * `volume="0.x"` pre-sets the volume for unusually loud videos. Value between 0 and 1.
62
  * `controlbar="docked/floating/none"` sets the controlbar position. Video.js only responds to the "none" option.
63
  * `loop="true/false"`
64
  * `autoplay="true/false"`
65
+ * `watermark="http://www.example.com/image.png"` or `"false"` to disable.
66
  * `title="Video Title"`
67
  * `embedcode="html code"` changes text displayed in the embed code overlay in order to provide a custom method for embedding a video.
68
  * `view_count="true/false"` turns the view count on or off.
120
 
121
  WordPress already has <a href="http://codex.wordpress.org/Embeds">a built-in system for embedding videos from YouTube, Vimeo, Dailymotion, etc</a>. Just put the URL into your post and WordPress will automatically convert it to an embedded video using oEmbed. You don't need this plugin to do that. If you're trying to generate new thumbnails from YouTube videos, I'm not going to risk Google's wrath by providing that functionality. I'm not even sure I could figure out how to do it anyway.
122
 
123
+ = I'm getting an error message `FFMPEG not found at /usr/local/bin/. You can embed existing videos, but video thumbnail generation and Mobile/HTML5 video encoding is not possible without FFMPEG.` =
124
 
125
+ First off, don't panic.
126
+
127
+ This plugin can use FFMPEG or LIBAV to make thumbnails and create alternate video formats compatible with HTML5 videos players. Unfortunately most servers don't have FFMPEG installed and most shared hosting plans don't allow you to install FFMPEG because of the system resources it requires. You're getting this error message because you don't have FFMPEG installed in the most common directory. If you know you have FFMPEG installed on your server, you'll need to find the actual path to the program and enter it in the plugin settings field `Path to applications on server`
128
+
129
+ Many of the features of the plugin will work without FFMPEG. You can generate embed shortcodes for your videos on any host because that part of the plugin is JavaScript running in your browser. But without FFMPEG you won't be able to generate thumbnails or encode alternate formats on the server. There is no way around this. A program has to read the video files in order to generate the thumbnails, and FFMPEG is the best one I've found to do that. Dreamhost is one of the few shared hosts I know of that has FFMPEG installed and available for users.
130
 
131
  = How can I encode videos in directories protected by .htaccess passwords? =
132
 
133
+ Use the "Embed from URL" tab and enter the URL in this format http://username:password@yourdomain.com/uploads/2012/01/awesomevid.mp4 in the Video URL field.
134
 
135
  == Screenshots ==
136
 
141
 
142
  == Changelog ==
143
 
144
+ = 4.1 May 19, 2013 =
145
+ * Updated Video.js to version 4.0 and created a new skin that approximates the old one. Older versions of Video.js had some security holes, so this update is highly recommended.
146
+ * Significantly reduced inline JavaScript generated by the plugin.
147
+ * Fixed bug that disabled Strobe Media Playback player and caused "TypeError: Error #1034" messages, particularly in Internet Explorer.
148
+ * Fixed bug that caused view count to be replaced by complete views when the end of the video is reached.
149
+ * Fixed bug that disabled video encode status monitoring in media modal popup when the same video was already in the post edit window.
150
+ * Fixed missing "document." in JavaScript when choosing thumbnails which prevented some users from properly selecting and saving generated thumbnails.
151
+ * Fixed bug that displayed WordPress thumbnail-sized poster image if no poster URL was in shortcode.
152
+ * Tweaked video resize method to support more kinds of themes.
153
+ * Added ability to turn off watermark on individual videos by entering `watermark="false"` in the shortcode.
154
+ * Added option to disable embedding on other websites.
155
+ * Added option to allow videos to be placed next to each other on the page.
156
+ * Added support for AAC library libfdk_aac.
157
+ * Adjusted embedded video and gallery CSS to account for colored backgrounds.
158
+ * Renamed "Poster image" plugin setting to "Default thumbnail"
159
+ * Removed post meta box below post editing window until I can work out a way to generate them without disabling video encode status monitoring in media modal popup when the same video is already in the post edit window.
160
+ * Replaced deprecated ereg PHP function with preg_match and used a more precise regular expression when determining the height and width of videos.
161
+
162
  = 4.0.3 - May 01, 2013 =
163
  * Fixed bug that caused video control text to display below videos on iPhones.
164
  * Changed method for saving video plays to the database. Now more secure and accurate.
video-embed-thumbnail-generator.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Video Embed & Thumbnail Generator
4
  Plugin URI: http://www.kylegilman.net/2011/01/18/video-embed-thumbnail-generator-wordpress-plugin/
5
  Description: Generates thumbnails, HTML5-compliant videos, and embed codes for locally hosted videos. Requires FFMPEG for thumbnails and encodes. <a href="options-general.php?page=video-embed-thumbnail-generator/video-embed-thumbnail-generator.php">Settings</a> | <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=kylegilman@gmail.com&item_name=Video%20Embed%20And%20Thumbnail%20Generator%20Plugin%20Donation/">Donate</a>
6
- Version: 4.0.3
7
  Author: Kyle Gilman
8
  Author URI: http://www.kylegilman.net/
9
 
@@ -14,8 +14,7 @@ any later version.
14
 
15
  This program is distributed in the hope that it will be useful,
16
  but WITHOUT ANY WARRANTY; without even the implied warranty of
17
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
- GNU General Public License for more details.
19
 
20
  You should have received a copy of the GNU General Public License
21
  along with this program; if not, write to the Free Software
@@ -42,7 +41,7 @@ if ( ! defined( 'ABSPATH' ) )
42
 
43
  function kgvid_default_options_fn() {
44
  $options = array(
45
- "version"=>4.03,
46
  "embed_method"=>"Video.js",
47
  "template"=>false,
48
  "template_gentle"=>"on",
@@ -67,6 +66,8 @@ function kgvid_default_options_fn() {
67
  "overlay_title"=>"on",
68
  "overlay_embedcode"=>false,
69
  "view_count"=>false,
 
 
70
  "align"=>"left",
71
  "width"=>"640",
72
  "height"=>"360",
@@ -412,12 +413,13 @@ function kgvid_get_video_dimensions($video = false) {
412
  $lastline = prev($output)."<br />".$lastline;
413
  $output = implode("\n", $output);
414
 
415
- $result = ereg ( '[0-9]?[0-9][0-9][0-9]x[0-9][0-9][0-9][0-9]?', $output, $regs );
 
 
416
 
417
- if (isset ( $regs [0] )) {
418
- $vals = (explode ( 'x', $regs [0] ));
419
- $width = $vals [0] ? $vals [0] : null;
420
- $height = $vals [1] ? $vals [1] : null;
421
  preg_match('/Duration: (.*?),/', $output, $matches);
422
  $duration = $matches[1];
423
  $movie_duration_hours = intval(substr($duration, -11, 2));
@@ -441,7 +443,7 @@ function kgvid_get_video_dimensions($video = false) {
441
  exec ( $command, $output );
442
  $output = implode("\n", $output);
443
  $configuration = array();
444
- $lib_list = array('libfaac', 'libvo_aacenc', 'libtheora', 'libvorbis', 'libvpx', 'libx264');
445
  foreach ($lib_list as $lib) {
446
  if ( strpos($output, $lib) !== false ) { $configuration[$lib] = "true"; }
447
  else { $configuration[$lib] = "false"; }
@@ -518,11 +520,12 @@ function kgvid_video_embed_enqueue_scripts() {
518
  if ( $options['embed_method'] == "Strobe Media Playback" ) {
519
  wp_enqueue_script( 'swfobject' );
520
  }
521
-
522
  //Video.js script and skins
523
- wp_enqueue_script( 'video-js', plugins_url("", __FILE__).'/video-js/video.js', '', '3.2.0' );
524
- wp_enqueue_style( 'video-js-css', plugins_url("", __FILE__).'/video-js/video-js.css', '', '3.2.0' );
525
  wp_enqueue_style( 'video-js-kg-skin', plugins_url("", __FILE__).'/video-js/kg-video-js-skin.css', '', $options['version'] );
 
526
  //plugin-related frontend scripts and styles
527
  wp_enqueue_style( 'kgvid_video_styles', plugins_url("/css/kgvid_styles.css", __FILE__), '', $options['version'] );
528
  wp_enqueue_script( 'jquery-ui-dialog' );
@@ -541,7 +544,7 @@ add_action('admin_enqueue_scripts', 'enqueue_kgvid_script');
541
 
542
  function kgvid_video_embed_print_scripts() {
543
 
544
- echo '<script type="text/javascript">_V_.options.flash.swf = "'.plugins_url("", __FILE__).'/video-js/video-js.swf"</script>'."\n";
545
 
546
  }
547
  add_action('wp_head', 'kgvid_video_embed_print_scripts');
@@ -582,10 +585,11 @@ function KGVID_shortcode($atts, $content = ''){
582
  'embedcode' => $options['overlay_embedcode'],
583
  'view_count' => $options['view_count'],
584
  'caption' => '',
585
- 'description' => ''
 
586
  ), $atts);
587
 
588
- $checkbox_convert = array ( "autohide", "endOfVideoOverlaySame", "playbutton", "loop", "autoplay", "title", "embedcode", "view_count");
589
  foreach ( $checkbox_convert as $query ) {
590
  if ( $query_atts[$query] == "on" ) { $query_atts[$query] = "true"; }
591
  if ( $query_atts[$query] == false ) { $query_atts[$query] = "false"; }
@@ -628,7 +632,7 @@ function KGVID_shortcode($atts, $content = ''){
628
  $poster_id = get_post_meta($id, '_kgflashmediaplayer-poster-id', true);
629
  if ( !empty($poster_id) ) {
630
  //$poster_post = get_post($poster_id);
631
- $poster_image_src = wp_get_attachment_image_src($poster_id);
632
  if ( empty($query_atts['poster']) ) { $query_atts['poster'] = $poster_image_src[0]; } //if there's no poster URL set, use the database to set it automatically
633
  if ( $poster_image_src[0] == $query_atts['poster'] && intval($query_atts['width']) <= get_option('medium_size_h') ) {
634
  $query_atts['poster'] = kgvid_get_attachment_medium_url($poster_id);
@@ -708,9 +712,8 @@ function KGVID_shortcode($atts, $content = ''){
708
  if($query_atts["backgroundcolor"] != '') { $flashvars .= ", backgroundColor:'".$query_atts["backgroundcolor"]."'"; }
709
  if($query_atts["configuration"] != '') { $flashvars .= ", configuration:'".urlencode($query_atts["configuration"])."'"; }
710
  if($query_atts["skin"] != '') { $flashvars .= ", skin:'".urlencode($query_atts["skin"])."'"; }
711
- $flashvars .= ", verbose:'true', javascriptCallbackFunction:'function(id){ var player=document.getElementById(id); if ( player.getState() == \"buffering\" || player.getState() == \"playing\" ) { kgvid_video_counter(\"".$div_suffix."\", '".$countable."', \"play\" '".esc_js($stats_title)."'); } }'"; //apparently this is necessary to turn on the js API
712
  $flashvars .= "}";
713
-
714
  $params = "{wmode:'opaque', allowfullscreen:'true', allowScriptAccess:'always', base:'".plugins_url("", __FILE__)."/flash/'}";
715
  }
716
  } //if Strobe Media Playback
@@ -718,13 +721,15 @@ function KGVID_shortcode($atts, $content = ''){
718
  $sources = array();
719
  foreach ($video_formats as $name => $type) {
720
  if ( $name != "original" && $encodevideo_info[$name."url"] == $content ) { unset($sources['original']); }
721
- if ( $encodevideo_info[$name."_exists"] ) { $sources[$name] = "<source src='".$encodevideo_info[$name."url"]."' type='video/".$type."'>";
722
  }
723
  }
724
 
725
- if ( $query_atts['align'] != "left" ) {
726
- $aligncode = ' style="margin-left:auto; ';
727
- if ( $query_atts['align'] == "center" ) { $aligncode .= 'margin-right:auto;'; }
 
 
728
  $aligncode .= '" ';
729
  }
730
  else { $aligncode = ""; }
@@ -744,14 +749,14 @@ function KGVID_shortcode($atts, $content = ''){
744
  else { $description = ""; }
745
  if ( !empty($description) ) { $code .= '<meta itemprop="description" content="'.esc_attr($description).'" />'; }
746
 
747
- $code .= "<video id=\"video_".$div_suffix."\" ";
748
- if ( $query_atts["loop"] == 'true') { $code .= "loop " ;}
749
- if ( $query_atts["autoplay"] == 'true') { $code .= "autoplay " ;}
750
- if ( $query_atts["controlbar"] != 'none') { $code .= "controls " ;}
751
- $code .= "preload='metadata' ";
752
- if ( $query_atts["poster"] != '' ) { $code .= "poster='".$query_atts["poster"]."' "; }
753
- $code .= "width='".$query_atts["width"]."' height='".$query_atts["height"]."'";
754
- $code .= " class='video-js ".$options['js_skin']."' data-setup='{}'";
755
  $code .= ">\n";
756
 
757
  $code .= implode("\n", $sources); //add the <source> tags created earlier
@@ -787,52 +792,31 @@ function KGVID_shortcode($atts, $content = ''){
787
  $code .= "</div>";
788
  }
789
  else { $kgvid_meta = false; }
790
- if ( !empty($query_atts["watermark"]) ) { $code .= "<div style=\"display:none;\" id='video_".$div_suffix."_watermark' class='kgvid_watermark'><img src='".$query_atts["watermark"]."' alt='watermark'></div>"; } //generate watermark
791
  $code .= "</div>"; //end kgvid_XXXX_wrapper div
792
 
793
- if ( $query_atts['autoplay'] == "true" ) { $timeout = "0"; }
794
- else { $timeout = "500"; }
 
 
 
 
 
 
 
 
 
 
795
 
796
- $code .= "<script type='text/javascript'>";
 
797
  if ( $options['embed_method'] == "Video.js" || ($options['embed_method'] == "Strobe Media Playback" && !$flash_source_found) ) {
798
- $code .= "\n\t\t\t"."_V_('video_".$div_suffix."').ready(function(){
799
- kgvid_setup_video('".$div_suffix."', '".$options['embed_method']."', '".$query_atts["volume"]."');
800
- this.addEvent('play', function(){";
801
- if ( $kgvid_meta ) {
802
- $code .= "\n\t\t\t"."jQuery('#video_".$div_suffix."_div').hover(function(){ jQuery('#video_".$div_suffix."_meta').addClass('kgvid_video_meta_hover'); },function(){ jQuery('#video_".$div_suffix."_meta').removeClass('kgvid_video_meta_hover'); });
803
- jQuery('#video_".$div_suffix."_meta').removeClass('kgvid_video_meta_hover');";
804
- } //end if kgvid_meta
805
- $code .= "\n\t\t\t"."setTimeout(function() { _V_('video_".$div_suffix."').controlBar.fadeOut(); }, ".$timeout.");
806
- kgvid_video_counter('".$div_suffix."', 'play', '".$countable."', '".esc_js($stats_title)."');
807
- });
808
- this.addEvent('ended', function(){
809
- kgvid_video_counter('".$div_suffix."', 'end', '".$countable."', '".esc_js($stats_title)."');
810
- setTimeout(function() { jQuery('#video_".$div_suffix." > .vjs-loading-spinner').hide(); }, 250);
811
- });
812
- });";
813
  }
814
  if ( $options['embed_method'] == "Strobe Media Playback" && $flash_source_found ) {
815
- $code .= "swfobject.embedSWF('".$video_swf."', 'video_".$div_suffix."', '".trim($query_atts['width'])."', '".trim($query_atts['height'])."', '".$minimum_flash."', '".plugins_url("", __FILE__)."/flash/expressInstall.swf', $flashvars, $params, '', function() {
816
- kgvid_setup_video('".$div_suffix."', '".$options['embed_method']."', '".$query_atts["volume"]."');
817
- kgvid_resize_video('".$div_suffix."', '".$options['embed_method']."', '".$query_atts["width"]."', '".$query_atts["height"]."');
818
- });
819
- jQuery('#kgvid_".$div_suffix."_wrapper').hover(
820
- function() { jQuery('#video_".$div_suffix."_watermark').fadeOut(100); },
821
- function() { setTimeout(function(){jQuery('#video_".$div_suffix."_watermark').fadeIn('slow');},3000); }
822
- );";
823
- }
824
- $code .= "\n\t\t\t"."var iOS = ( navigator.userAgent.match(/(iPad|iPhone|iPod)/i) ? true : false );
825
- if (iOS) {
826
- console.log('iOS');
827
- if ( '".$options['embed_method']."' == 'Strobe Media Playback' ) { kgvid_setup_video('".$div_suffix."', 'Video.js', '".$query_atts["volume"]."'); }
828
- kgvid_ios_player('".$div_suffix."');
829
- document.getElementById('video_".$div_suffix."').addEventListener('play',function(){
830
- jQuery('#video_".$div_suffix."_meta').removeClass('kgvid_video_meta_hover');
831
- kgvid_video_counter('".$div_suffix."', 'play', '".$countable."', '".esc_js($stats_title)."');
832
- });
833
- }
834
- kgvid_resize_video('".$div_suffix."', '".$options['embed_method']."', '".$query_atts["width"]."', '".$query_atts["height"]."');
835
- window.addEventListener('resize', resize_".$div_suffix."=function(){ kgvid_resize_video('".$div_suffix."', '".$options['embed_method']."', '".$query_atts["width"]."', '".$query_atts["height"]."'); }, false);";
836
  /* if ( $query_atts["video_security"] == "on" ) { $code .= "\n\t\t\t"."jQuery('#video_".$div_suffix."').bind('contextmenu',function() { return false; });"; } */
837
  $code .= "\n\t\t"."</script>";
838
 
@@ -881,11 +865,9 @@ function KGVID_shortcode($atts, $content = ''){
881
 
882
  if ( !$thumbnail_aspect ) { $thumbnail_aspect = round($video_height/$video_width, 4); } //if the thumbnail's not an attachment, set the aspect ratio to the video's
883
 
884
- $play_offset_left = strval(intval($query_atts["gallery_thumb"])/2-21);
885
- $play_offset_top = strval((intval($query_atts["gallery_thumb"])*$thumbnail_aspect/2)-30);
886
  $play_scale = strval( round(intval($query_atts["gallery_thumb"])/600,2) );
887
 
888
- $code .= '<div onclick="kgvid_SetVideo(\''.$div_suffix.'\', \''.site_url('/').'\', \''.$attachment->ID.'\', \''.$video_width.'\', \''.$video_height.'\');return false;" class="kgvid_video_gallery_thumb" style="width:'.$query_atts["gallery_thumb"].'px"><img src="'.$thumbnail_url.'"><div class="'.$options['js_skin'].'" ><div class="vjs-big-play-button" style="-webkit-transform: scale('.$play_scale.'); -o-transform: scale('.$play_scale.'); -ms-transform: scale('.$play_scale.'); transform: scale('.$play_scale.'); top: '.$play_offset_top.'px; left: '.$play_offset_left.'px;"><span></span></div></div><div class="titlebackground"><div class="videotitle">'.$attachment->post_title.'</div></div></div>'."\n\t\t\t";
889
  }
890
 
891
  $code .= '</div>'; //end wrapper div
@@ -1265,9 +1247,10 @@ function kgvid_video_embed_options_init() {
1265
  add_settings_section('kgvid_video_embed_flash_settings', 'The following options will only affect Flash playback', 'kgvid_plugin_flash_settings_section_callback', __FILE__);
1266
  add_settings_section('kgvid_video_embed_plugin_settings', 'Plugin Settings', 'kgvid_plugin_settings_section_callback', __FILE__);
1267
 
1268
- add_settings_field('poster', 'Poster image:', 'kgvid_poster_callback', __FILE__, 'kgvid_video_embed_playback_settings', array( 'label_for' => 'poster' ) );
1269
  add_settings_field('watermark', 'Watermark image:', 'kgvid_watermark_callback', __FILE__, 'kgvid_video_embed_playback_settings', array( 'label_for' => 'watermark' ) );
1270
  add_settings_field('align', 'Video alignment:', 'kgvid_align_callback', __FILE__, 'kgvid_video_embed_playback_settings', array( 'label_for' => 'align' ) );
 
1271
  add_settings_field('dimensions', 'Max embedded video dimensions:', 'kgvid_dimensions_callback', __FILE__, 'kgvid_video_embed_playback_settings', array( 'label_for' => 'width' ) );
1272
  add_settings_field('gallery_dimensions', 'Max gallery video dimensions:', 'kgvid_gallery_dimensions_callback', __FILE__, 'kgvid_video_embed_playback_settings', array( 'label_for' => 'gallery_width' ) );
1273
  add_settings_field('gallery_thumb', 'Gallery thumbnail width:', 'kgvid_gallery_thumb_callback', __FILE__, 'kgvid_video_embed_playback_settings', array( 'label_for' => 'gallery_thumb' ) );
@@ -1291,6 +1274,7 @@ function kgvid_video_embed_options_init() {
1291
  add_settings_field('ffmpeg_options', 'FFMPEG Options:', 'kgvid_ffmpeg_options_callback', __FILE__, 'kgvid_video_embed_plugin_settings', array( 'label_for' => 'video_bitrate_flag' ) );
1292
  add_settings_field('moov', 'Application to fix encoded H.264 headers for streaming:', 'kgvid_moov_callback', __FILE__, 'kgvid_video_embed_plugin_settings', array( 'label_for' => 'moov' ) );
1293
  add_settings_field('generate_thumbs', 'Default number of thumbnails to generate:', 'kgvid_generate_thumbs_callback', __FILE__, 'kgvid_video_embed_plugin_settings', array( 'label_for' => 'generate_thumbs' ) );
 
1294
  add_settings_field('featured', 'Featured Image:', 'kgvid_featured_callback', __FILE__, 'kgvid_video_embed_plugin_settings', array( 'label_for' => 'featured' ) );
1295
  add_settings_field('thumb_parent', 'Attach thumbnails to:', 'kgvid_thumb_parent_callback', __FILE__, 'kgvid_video_embed_plugin_settings', array( 'label_for' => 'thumb_parent' ) );
1296
  add_settings_field('delete_children', 'Delete associated attachments:', 'kgvid_delete_children_callback', __FILE__, 'kgvid_video_embed_plugin_settings', array( 'label_for' => 'delete_children' ) );
@@ -1304,6 +1288,8 @@ add_action('admin_init', 'kgvid_video_embed_options_init' );
1304
 
1305
  function kgvid_plugin_playback_settings_section_callback() {
1306
  $options = get_option('kgvid_video_embed_options');
 
 
1307
 
1308
  $items = array("Strobe Media Playback", "Video.js");
1309
  echo "<table class='form-table'><tbody><tr valign='middle'><th scope='row'><label for='embed_method'>Video player:</label></th><td><select onchange='kgvid_hide_plugin_settings();' id='embed_method' name='kgvid_video_embed_options[embed_method]'>";
@@ -1316,7 +1302,7 @@ add_action('admin_init', 'kgvid_video_embed_options_init' );
1316
  $sampleheight = intval($options['height']) + 25;
1317
  echo "<div class='kgvid_setting_nearvid' style='width:".$options['width']."px;'>";
1318
  echo "<div style='float:left;'><input ".checked( $options['overlay_title'], "on", false )." id='overlay_title' name='kgvid_video_embed_options[overlay_title]' type='checkbox' /> <label for='overlay_title'>Overlay video title</label></div>";
1319
- echo "<div style='float:right;'><input ".checked( $options['overlay_embedcode'], "on", false )." id='overlay_embedcode' name='kgvid_video_embed_options[overlay_embedcode]' type='checkbox' /> <label for='overlay_embedcode'>Overlay embed code</label></div>";
1320
  $iframeurl = site_url('/')."?kgvid_video_embed[enable]=true&kgvid_video_embed[sample]=true";
1321
  echo "<iframe id='kgvid_samplevideo' style='border:2px;' src='".$iframeurl."' scrolling='no' width='".$options['width']."' height='".$sampleheight."'></iframe>";
1322
  echo "<div style='float:right;'><input ".checked( $options['view_count'], "on", false )." id='view_count' name='kgvid_video_embed_options[view_count]' type='checkbox' /> <label for='view_count'>Show view count</label></div>";
@@ -1345,6 +1331,11 @@ add_action('admin_init', 'kgvid_video_embed_options_init' );
1345
  }
1346
  }
1347
 
 
 
 
 
 
1348
  function kgvid_dimensions_callback() {
1349
  $options = get_option('kgvid_video_embed_options');
1350
  echo "Width: <input class='small-text' id='width' name='kgvid_video_embed_options[width]' type='text' value='".$options['width']."' /> Height: <input class='small-text' id='height' name='kgvid_video_embed_options[height]' type='text' value='".$options['height']."' />";
@@ -1494,6 +1485,11 @@ add_action('admin_init', 'kgvid_video_embed_options_init' );
1494
  echo "</div>";
1495
  }
1496
 
 
 
 
 
 
1497
  function kgvid_featured_callback() {
1498
  $options = get_option('kgvid_video_embed_options');
1499
  echo "<input ".checked( $options['featured'], "on", false )." id='featured' name='kgvid_video_embed_options[featured]' type='checkbox' /> <label for='featured'>Set generated video thumbnails as featured images.</label> <a class='kgvid_tooltip' href='javascript:void(0);'><img src='../wp-includes/images/blank.gif'><span class='kgvid_tooltip_classic'>If your theme uses the featured image meta tag, this will automatically set a video's parent post's featured image to the most recently saved thumbnail image.</span></a><br /> <a class='button-secondary' href='javascript:void(0);' onclick='kgvid_set_all_featured();'>Set all as featured</a> <a class='kgvid_tooltip' href='javascript:void(0);'><img src='../wp-includes/images/blank.gif'><span class='kgvid_tooltip_classic'>If you've generated thumbnails with previous versions of the plugin this will set all existing thumbnails as featured images. Be careful!</span></a>";
@@ -1626,6 +1622,11 @@ function kgvid_update_settings() {
1626
  }
1627
 
1628
  }
 
 
 
 
 
1629
  if ( $options['version'] != $default_options['version'] ) { $options['version'] = $default_options['version']; }
1630
  if ( $options !== $options_old ) { update_option('kgvid_video_embed_options', $options); }
1631
  }
@@ -2126,7 +2127,7 @@ class kgInsertMedia {
2126
  if ($attachment['width'] !="") { $output .= ' width="'.$attachment["width"].'"'; }
2127
  if ($attachment['height'] !="") { $output .= ' height="'.$attachment["height"].'"'; }
2128
  $output .= ']'.$attachment["url"].'[/KGVID]<br />';
2129
- if ($attachment['downloadlink'] == "checked") { $output .= '<a href="'.$attachment["url"].'">Right-click or ctrl-click this link to download.</a><br />'; }
2130
  } //if embed code is enabled
2131
 
2132
  if ($attachment['embed'] == "Video Gallery" ) {
@@ -2317,12 +2318,13 @@ function kgvid_video_attachment_template() {
2317
  global $post;
2318
  global $wp_query;
2319
  $options = get_option('kgvid_video_embed_options');
2320
-
2321
  $kgvid_video_embed = array ( 'enable' => 'false' ); //turned off by default
2322
  if ( isset($wp_query->query_vars['kgvid_video_embed']) ) { $kgvid_video_embed = $wp_query->query_vars['kgvid_video_embed']; }
2323
  if ( $options['template'] == "old" ) { $kgvid_video_embed['enable'] = 'true'; } //regardless of any query settings, if we're using the old method it's turned on
2324
  if ( (!is_array($kgvid_video_embed) && $kgvid_video_embed == "true") ) { $kgvid_video_embed = array ( 'enable' => 'true' ); } //maintain backwards compatibility
2325
 
 
2326
 
2327
  if ( array_key_exists('enable', $kgvid_video_embed) && $kgvid_video_embed['enable'] == 'true' && (strpos($post->post_mime_type,"video") !== false || array_key_exists('sample', $kgvid_video_embed)) ) {
2328
 
@@ -2330,13 +2332,13 @@ function kgvid_video_attachment_template() {
2330
 
2331
  $shortcode = kgvid_generate_attachment_shortcode($kgvid_video_embed);
2332
 
2333
- echo '<html><head>';
2334
  echo (wp_head());
2335
- echo '<style>body { margin:0px; font-family: sans-serif; padding:0px; ';
2336
- if ( array_key_exists('gallery', $kgvid_video_embed) ) { echo 'background:black; '; }
2337
- else { echo 'background:white; '; }
2338
- echo '} .kgvid_wrapper { margin:0; }</style>';
2339
- echo '</head><body class="content">';
2340
  echo (do_shortcode( $shortcode ));
2341
  echo '</body></html>';
2342
  exit;
@@ -2494,7 +2496,7 @@ function kgvid_make_thumbs($postID, $movieurl, $numberofthumbs, $i, $iincreaser,
2494
 
2495
  $field_id = kgvid_backwards_compatible($postID);
2496
 
2497
- $thumbnaildisplaycode = '<div class="kgvid_thumbnail_select" name="attachments['.$postID.'][thumb'.$i.']" id="attachments-'.$postID.'-thumb'.$i.'"><label for="kgflashmedia-'.$postID.'-thumbradio'.$i.'"><img src="'.$thumbnailurl.'?'.rand().'" width="200" height="'.$thumbnailheight.'" class="kgvid_thumbnail"></label><br /><input type="radio" name="attachments['.$postID.'][thumbradio'.$i.']" id="kgflashmedia-'.$postID.'-thumbradio'.$i.'" value="'.str_replace('/thumb_tmp/', '/', $thumbnailurl).'" onchange="getElementById(\''.$field_id['poster'].'\').value = this.value; getElementById(\''.$field_id['thumbtime'].'\').value = \''. $movieoffset_display .'\'; getElementById(\'attachments-'. $postID .'-numberofthumbs\').value =\'1\';"></div>';
2498
 
2499
  $i++;
2500
 
@@ -2737,7 +2739,7 @@ function kgvid_encode_videos() {
2737
  $audio_bitrate_flag = "ab";
2738
  }
2739
 
2740
- if ( ($movie_info['configuration']['libfaac'] == "true" || $movie_info['configuration']['libvo_aacenc'] == "true" ) && $movie_info['configuration']['libx264'] == "true" ) {
2741
  foreach( $video_formats as $format => $format_stats ) {
2742
  if ( $queued_format == $format && $format_stats['type'] == "h264" ) {
2743
  if ( ! $encodevideo_info[$format.'_exists'] || ($encodevideo_info['sameserver'] && filesize($encodevideo_info[$format.'filepath']) < 24576) ) {
@@ -3515,7 +3517,7 @@ function kgvid_singleurl_meta_box($postType) {
3515
  );
3516
  }
3517
  }
3518
- add_action( 'add_meta_boxes', 'kgvid_singleurl_meta_box' );
3519
 
3520
  function kgvid_singleurl_inner_custom_box($post) {
3521
 
3
  Plugin Name: Video Embed & Thumbnail Generator
4
  Plugin URI: http://www.kylegilman.net/2011/01/18/video-embed-thumbnail-generator-wordpress-plugin/
5
  Description: Generates thumbnails, HTML5-compliant videos, and embed codes for locally hosted videos. Requires FFMPEG for thumbnails and encodes. <a href="options-general.php?page=video-embed-thumbnail-generator/video-embed-thumbnail-generator.php">Settings</a> | <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=kylegilman@gmail.com&item_name=Video%20Embed%20And%20Thumbnail%20Generator%20Plugin%20Donation/">Donate</a>
6
+ Version: 4.1
7
  Author: Kyle Gilman
8
  Author URI: http://www.kylegilman.net/
9
 
14
 
15
  This program is distributed in the hope that it will be useful,
16
  but WITHOUT ANY WARRANTY; without even the implied warranty of
17
+ GNU General Public License for more details.
 
18
 
19
  You should have received a copy of the GNU General Public License
20
  along with this program; if not, write to the Free Software
41
 
42
  function kgvid_default_options_fn() {
43
  $options = array(
44
+ "version"=>4.1,
45
  "embed_method"=>"Video.js",
46
  "template"=>false,
47
  "template_gentle"=>"on",
66
  "overlay_title"=>"on",
67
  "overlay_embedcode"=>false,
68
  "view_count"=>false,
69
+ "embeddable"=>"on",
70
+ "inline"=>false,
71
  "align"=>"left",
72
  "width"=>"640",
73
  "height"=>"360",
413
  $lastline = prev($output)."<br />".$lastline;
414
  $output = implode("\n", $output);
415
 
416
+ $regex = "/Video: ([^,]*), ([^,]*), ([0-9]{1,4})x([0-9]{1,4})/";
417
+ if (preg_match($regex, $output, $regs)) { $result = $regs[0]; }
418
+ else { $result = ""; }
419
 
420
+ if ( !empty($result) ) {
421
+ $width = $regs [3] ? $regs [3] : null;
422
+ $height = $regs [4] ? $regs [4] : null;
 
423
  preg_match('/Duration: (.*?),/', $output, $matches);
424
  $duration = $matches[1];
425
  $movie_duration_hours = intval(substr($duration, -11, 2));
443
  exec ( $command, $output );
444
  $output = implode("\n", $output);
445
  $configuration = array();
446
+ $lib_list = array('libfaac', 'libvo_aacenc', 'libfdk_aac', 'libtheora', 'libvorbis', 'libvpx', 'libx264');
447
  foreach ($lib_list as $lib) {
448
  if ( strpos($output, $lib) !== false ) { $configuration[$lib] = "true"; }
449
  else { $configuration[$lib] = "false"; }
520
  if ( $options['embed_method'] == "Strobe Media Playback" ) {
521
  wp_enqueue_script( 'swfobject' );
522
  }
523
+
524
  //Video.js script and skins
525
+ wp_enqueue_script( 'video-js', plugins_url("", __FILE__).'/video-js/video.js', '', '4.0.0' );
526
+ wp_enqueue_style( 'video-js-css', plugins_url("", __FILE__).'/video-js/video-js.css', '', '4.0.0' );
527
  wp_enqueue_style( 'video-js-kg-skin', plugins_url("", __FILE__).'/video-js/kg-video-js-skin.css', '', $options['version'] );
528
+
529
  //plugin-related frontend scripts and styles
530
  wp_enqueue_style( 'kgvid_video_styles', plugins_url("/css/kgvid_styles.css", __FILE__), '', $options['version'] );
531
  wp_enqueue_script( 'jquery-ui-dialog' );
544
 
545
  function kgvid_video_embed_print_scripts() {
546
 
547
+ echo '<script type="text/javascript">videojs.options.flash.swf = "'.plugins_url("", __FILE__).'/video-js/video-js.swf"</script>'."\n";
548
 
549
  }
550
  add_action('wp_head', 'kgvid_video_embed_print_scripts');
585
  'embedcode' => $options['overlay_embedcode'],
586
  'view_count' => $options['view_count'],
587
  'caption' => '',
588
+ 'description' => '',
589
+ 'inline' => $options['inline']
590
  ), $atts);
591
 
592
+ $checkbox_convert = array ( "autohide", "endOfVideoOverlaySame", "playbutton", "loop", "autoplay", "title", "embedcode", "view_count", "inline");
593
  foreach ( $checkbox_convert as $query ) {
594
  if ( $query_atts[$query] == "on" ) { $query_atts[$query] = "true"; }
595
  if ( $query_atts[$query] == false ) { $query_atts[$query] = "false"; }
632
  $poster_id = get_post_meta($id, '_kgflashmediaplayer-poster-id', true);
633
  if ( !empty($poster_id) ) {
634
  //$poster_post = get_post($poster_id);
635
+ $poster_image_src = wp_get_attachment_image_src($poster_id, 'full');
636
  if ( empty($query_atts['poster']) ) { $query_atts['poster'] = $poster_image_src[0]; } //if there's no poster URL set, use the database to set it automatically
637
  if ( $poster_image_src[0] == $query_atts['poster'] && intval($query_atts['width']) <= get_option('medium_size_h') ) {
638
  $query_atts['poster'] = kgvid_get_attachment_medium_url($poster_id);
712
  if($query_atts["backgroundcolor"] != '') { $flashvars .= ", backgroundColor:'".$query_atts["backgroundcolor"]."'"; }
713
  if($query_atts["configuration"] != '') { $flashvars .= ", configuration:'".urlencode($query_atts["configuration"])."'"; }
714
  if($query_atts["skin"] != '') { $flashvars .= ", skin:'".urlencode($query_atts["skin"])."'"; }
715
+ $flashvars .= ", verbose:'true', javascriptCallbackFunction:'function(id){kgvid_strobemedia_callback(".$div_suffix.");}'"; //this is necessary to turn on the js API
716
  $flashvars .= "}";
 
717
  $params = "{wmode:'opaque', allowfullscreen:'true', allowScriptAccess:'always', base:'".plugins_url("", __FILE__)."/flash/'}";
718
  }
719
  } //if Strobe Media Playback
721
  $sources = array();
722
  foreach ($video_formats as $name => $type) {
723
  if ( $name != "original" && $encodevideo_info[$name."url"] == $content ) { unset($sources['original']); }
724
+ if ( $encodevideo_info[$name."_exists"] ) { $sources[$name] = '<source src="'.$encodevideo_info[$name."url"].'" type="video/'.$type.'">';
725
  }
726
  }
727
 
728
+ if ( $query_atts['align'] != "left" || $query_atts['inline'] == "true" ) {
729
+ $aligncode = ' style="';
730
+ if ( $query_atts['align'] != "left" ) { $aligncode .= 'margin-left:auto; '; }
731
+ if ( $query_atts['align'] == "center" ) { $aligncode .= ' margin-right:auto;'; }
732
+ if ( $query_atts['inline'] == "true" ) { $aligncode .= 'display:inline-block;'; }
733
  $aligncode .= '" ';
734
  }
735
  else { $aligncode = ""; }
749
  else { $description = ""; }
750
  if ( !empty($description) ) { $code .= '<meta itemprop="description" content="'.esc_attr($description).'" />'; }
751
 
752
+ $code .= '<video id="video_'.$div_suffix.'" ';
753
+ if ( $query_atts["loop"] == 'true') { $code .= 'loop '; }
754
+ if ( $query_atts["autoplay"] == 'true') { $code .= 'autoplay '; }
755
+ if ( $query_atts["controlbar"] != 'none') { $code .= 'controls '; }
756
+ $code .= 'preload="metadata" ';
757
+ if ( $query_atts["poster"] != '' ) { $code .= 'poster="'.$query_atts["poster"].'" '; }
758
+ $code .= 'width="'.$query_atts["width"].'" height="'.$query_atts["height"].'"';
759
+ $code .= ' class="video-js '.$options['js_skin'].'" data-setup=\'{}\'';
760
  $code .= ">\n";
761
 
762
  $code .= implode("\n", $sources); //add the <source> tags created earlier
792
  $code .= "</div>";
793
  }
794
  else { $kgvid_meta = false; }
795
+ if ( !empty($query_atts["watermark"]) && $query_atts["watermark"] != "false" ) { $code .= "<div style=\"display:none;\" id='video_".$div_suffix."_watermark' class='kgvid_watermark'><img src='".$query_atts["watermark"]."' alt='watermark'></div>"; } //generate watermark
796
  $code .= "</div>"; //end kgvid_XXXX_wrapper div
797
 
798
+ $video_variables = array(
799
+ 'id' => $div_suffix,
800
+ 'player_type' => $options['embed_method'],
801
+ 'width' => $query_atts['width'],
802
+ 'height' => $query_atts['height'],
803
+ 'countable' => $countable,
804
+ 'title' => esc_js($stats_title),
805
+ 'autoplay' => $query_atts['autoplay'],
806
+ 'set_volume' => $query_atts["volume"],
807
+ 'meta' => $kgvid_meta
808
+ );
809
+ $json_video_variables = json_encode( $video_variables, JSON_FORCE_OBJECT );
810
 
811
+ $code .= "\n\t\t"."<script type='text/javascript'>
812
+ kgvid_video_vars['".$div_suffix."'] = jQuery.parseJSON ( '".$json_video_variables."' );";
813
  if ( $options['embed_method'] == "Video.js" || ($options['embed_method'] == "Strobe Media Playback" && !$flash_source_found) ) {
814
+ $code .= "\n\t\t\t"."videojs('video_".$div_suffix."').ready(function(){ kgvid_setup_video('".$div_suffix."'); });";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
815
  }
816
  if ( $options['embed_method'] == "Strobe Media Playback" && $flash_source_found ) {
817
+ $code .= "\n\t\t\t"."swfobject.embedSWF('".$video_swf."', 'video_".$div_suffix."', '".trim($query_atts['width'])."', '".trim($query_atts['height'])."', '".$minimum_flash."', '".plugins_url("", __FILE__)."/flash/expressInstall.swf', $flashvars, $params, '', function(e) { kgvid_setup_video(".$div_suffix."); });";
818
+ } //if Strobe Media
819
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
820
  /* if ( $query_atts["video_security"] == "on" ) { $code .= "\n\t\t\t"."jQuery('#video_".$div_suffix."').bind('contextmenu',function() { return false; });"; } */
821
  $code .= "\n\t\t"."</script>";
822
 
865
 
866
  if ( !$thumbnail_aspect ) { $thumbnail_aspect = round($video_height/$video_width, 4); } //if the thumbnail's not an attachment, set the aspect ratio to the video's
867
 
 
 
868
  $play_scale = strval( round(intval($query_atts["gallery_thumb"])/600,2) );
869
 
870
+ $code .= '<div onclick="kgvid_SetVideo(\''.$div_suffix.'\', \''.site_url('/').'\', \''.$attachment->ID.'\', \''.$video_width.'\', \''.$video_height.'\');return false;" class="kgvid_video_gallery_thumb" style="width:'.$query_atts["gallery_thumb"].'px"><img src="'.$thumbnail_url.'"><div class="'.$options['js_skin'].'" ><div class="vjs-big-play-button" style="-webkit-transform: scale('.$play_scale.') translateY(-15px); -o-transform: scale('.$play_scale.') translateY(-15px); -ms-transform: scale('.$play_scale.') translateY(-15px); transform: scale('.$play_scale.') translateY(-15px);"><span></span></div></div><div class="titlebackground"><div class="videotitle">'.$attachment->post_title.'</div></div></div>'."\n\t\t\t";
871
  }
872
 
873
  $code .= '</div>'; //end wrapper div
1247
  add_settings_section('kgvid_video_embed_flash_settings', 'The following options will only affect Flash playback', 'kgvid_plugin_flash_settings_section_callback', __FILE__);
1248
  add_settings_section('kgvid_video_embed_plugin_settings', 'Plugin Settings', 'kgvid_plugin_settings_section_callback', __FILE__);
1249
 
1250
+ add_settings_field('poster', 'Default thumbnail:', 'kgvid_poster_callback', __FILE__, 'kgvid_video_embed_playback_settings', array( 'label_for' => 'poster' ) );
1251
  add_settings_field('watermark', 'Watermark image:', 'kgvid_watermark_callback', __FILE__, 'kgvid_video_embed_playback_settings', array( 'label_for' => 'watermark' ) );
1252
  add_settings_field('align', 'Video alignment:', 'kgvid_align_callback', __FILE__, 'kgvid_video_embed_playback_settings', array( 'label_for' => 'align' ) );
1253
+ add_settings_field('inline', 'Inline videos:', 'kgvid_inline_callback', __FILE__, 'kgvid_video_embed_playback_settings', array( 'label_for' => 'inline' ) );
1254
  add_settings_field('dimensions', 'Max embedded video dimensions:', 'kgvid_dimensions_callback', __FILE__, 'kgvid_video_embed_playback_settings', array( 'label_for' => 'width' ) );
1255
  add_settings_field('gallery_dimensions', 'Max gallery video dimensions:', 'kgvid_gallery_dimensions_callback', __FILE__, 'kgvid_video_embed_playback_settings', array( 'label_for' => 'gallery_width' ) );
1256
  add_settings_field('gallery_thumb', 'Gallery thumbnail width:', 'kgvid_gallery_thumb_callback', __FILE__, 'kgvid_video_embed_playback_settings', array( 'label_for' => 'gallery_thumb' ) );
1274
  add_settings_field('ffmpeg_options', 'FFMPEG Options:', 'kgvid_ffmpeg_options_callback', __FILE__, 'kgvid_video_embed_plugin_settings', array( 'label_for' => 'video_bitrate_flag' ) );
1275
  add_settings_field('moov', 'Application to fix encoded H.264 headers for streaming:', 'kgvid_moov_callback', __FILE__, 'kgvid_video_embed_plugin_settings', array( 'label_for' => 'moov' ) );
1276
  add_settings_field('generate_thumbs', 'Default number of thumbnails to generate:', 'kgvid_generate_thumbs_callback', __FILE__, 'kgvid_video_embed_plugin_settings', array( 'label_for' => 'generate_thumbs' ) );
1277
+ add_settings_field('embeddable', 'Allow embedding:', 'kgvid_embeddable_callback', __FILE__, 'kgvid_video_embed_plugin_settings', array( 'label_for' => 'embeddable' ) );
1278
  add_settings_field('featured', 'Featured Image:', 'kgvid_featured_callback', __FILE__, 'kgvid_video_embed_plugin_settings', array( 'label_for' => 'featured' ) );
1279
  add_settings_field('thumb_parent', 'Attach thumbnails to:', 'kgvid_thumb_parent_callback', __FILE__, 'kgvid_video_embed_plugin_settings', array( 'label_for' => 'thumb_parent' ) );
1280
  add_settings_field('delete_children', 'Delete associated attachments:', 'kgvid_delete_children_callback', __FILE__, 'kgvid_video_embed_plugin_settings', array( 'label_for' => 'delete_children' ) );
1288
 
1289
  function kgvid_plugin_playback_settings_section_callback() {
1290
  $options = get_option('kgvid_video_embed_options');
1291
+ if ( $options['embeddable'] == "false" ) { $embed_disabled = "disabled"; }
1292
+ else { $embed_disabled = ""; }
1293
 
1294
  $items = array("Strobe Media Playback", "Video.js");
1295
  echo "<table class='form-table'><tbody><tr valign='middle'><th scope='row'><label for='embed_method'>Video player:</label></th><td><select onchange='kgvid_hide_plugin_settings();' id='embed_method' name='kgvid_video_embed_options[embed_method]'>";
1302
  $sampleheight = intval($options['height']) + 25;
1303
  echo "<div class='kgvid_setting_nearvid' style='width:".$options['width']."px;'>";
1304
  echo "<div style='float:left;'><input ".checked( $options['overlay_title'], "on", false )." id='overlay_title' name='kgvid_video_embed_options[overlay_title]' type='checkbox' /> <label for='overlay_title'>Overlay video title</label></div>";
1305
+ echo "<div style='float:right;'><input ".checked( $options['overlay_embedcode'], "on", false )." id='overlay_embedcode' name='kgvid_video_embed_options[overlay_embedcode]' type='checkbox' ".$embed_disabled."/> <label for='overlay_embedcode'>Overlay embed code</label></div>";
1306
  $iframeurl = site_url('/')."?kgvid_video_embed[enable]=true&kgvid_video_embed[sample]=true";
1307
  echo "<iframe id='kgvid_samplevideo' style='border:2px;' src='".$iframeurl."' scrolling='no' width='".$options['width']."' height='".$sampleheight."'></iframe>";
1308
  echo "<div style='float:right;'><input ".checked( $options['view_count'], "on", false )." id='view_count' name='kgvid_video_embed_options[view_count]' type='checkbox' /> <label for='view_count'>Show view count</label></div>";
1331
  }
1332
  }
1333
 
1334
+ function kgvid_inline_callback() {
1335
+ $options = get_option('kgvid_video_embed_options');
1336
+ echo "<input ".checked( $options['inline'], "on", false )." id='inline' name='kgvid_video_embed_options[inline]' type='checkbox' /> <label for='inline'>Allow other content on the same line as the video.</label>";
1337
+ }
1338
+
1339
  function kgvid_dimensions_callback() {
1340
  $options = get_option('kgvid_video_embed_options');
1341
  echo "Width: <input class='small-text' id='width' name='kgvid_video_embed_options[width]' type='text' value='".$options['width']."' /> Height: <input class='small-text' id='height' name='kgvid_video_embed_options[height]' type='text' value='".$options['height']."' />";
1485
  echo "</div>";
1486
  }
1487
 
1488
+ function kgvid_embeddable_callback() {
1489
+ $options = get_option('kgvid_video_embed_options');
1490
+ echo "<input ".checked( $options['embeddable'], "on", false )." id='embeddable' name='kgvid_video_embed_options[embeddable]' type='checkbox' onclick='var kgvid_overlay_embedcode = document.getElementById(\"overlay_embedcode\"); if (this.checked == false) { kgvid_overlay_embedcode.checked=false; kgvid_overlay_embedcode.disabled=true; kgvid_save_plugin_settings(kgvid_overlay_embedcode); } else { kgvid_overlay_embedcode.disabled=false; }' /> <label for='embeddable'>Allow users to embed your videos on other sites.</label>";
1491
+ }
1492
+
1493
  function kgvid_featured_callback() {
1494
  $options = get_option('kgvid_video_embed_options');
1495
  echo "<input ".checked( $options['featured'], "on", false )." id='featured' name='kgvid_video_embed_options[featured]' type='checkbox' /> <label for='featured'>Set generated video thumbnails as featured images.</label> <a class='kgvid_tooltip' href='javascript:void(0);'><img src='../wp-includes/images/blank.gif'><span class='kgvid_tooltip_classic'>If your theme uses the featured image meta tag, this will automatically set a video's parent post's featured image to the most recently saved thumbnail image.</span></a><br /> <a class='button-secondary' href='javascript:void(0);' onclick='kgvid_set_all_featured();'>Set all as featured</a> <a class='kgvid_tooltip' href='javascript:void(0);'><img src='../wp-includes/images/blank.gif'><span class='kgvid_tooltip_classic'>If you've generated thumbnails with previous versions of the plugin this will set all existing thumbnails as featured images. Be careful!</span></a>";
1622
  }
1623
 
1624
  }
1625
+ if ( $options['version'] < 4.1 ) {
1626
+ $options['version'] = 4.1;
1627
+ $options['embeddable'] = "on";
1628
+ $options['inline'] = "on";
1629
+ }
1630
  if ( $options['version'] != $default_options['version'] ) { $options['version'] = $default_options['version']; }
1631
  if ( $options !== $options_old ) { update_option('kgvid_video_embed_options', $options); }
1632
  }
2127
  if ($attachment['width'] !="") { $output .= ' width="'.$attachment["width"].'"'; }
2128
  if ($attachment['height'] !="") { $output .= ' height="'.$attachment["height"].'"'; }
2129
  $output .= ']'.$attachment["url"].'[/KGVID]<br />';
2130
+ if ($attachment['downloadlink'] == "checked") { $output .= '<p><a href="'.$attachment["url"].'">Right-click or ctrl-click this link to download.</a></p>'; }
2131
  } //if embed code is enabled
2132
 
2133
  if ($attachment['embed'] == "Video Gallery" ) {
2318
  global $post;
2319
  global $wp_query;
2320
  $options = get_option('kgvid_video_embed_options');
2321
+
2322
  $kgvid_video_embed = array ( 'enable' => 'false' ); //turned off by default
2323
  if ( isset($wp_query->query_vars['kgvid_video_embed']) ) { $kgvid_video_embed = $wp_query->query_vars['kgvid_video_embed']; }
2324
  if ( $options['template'] == "old" ) { $kgvid_video_embed['enable'] = 'true'; } //regardless of any query settings, if we're using the old method it's turned on
2325
  if ( (!is_array($kgvid_video_embed) && $kgvid_video_embed == "true") ) { $kgvid_video_embed = array ( 'enable' => 'true' ); } //maintain backwards compatibility
2326
 
2327
+ if ( $options['embeddable'] == 'false' && !array_key_exists('sample', $kgvid_video_embed) && !array_key_exists('gallery', $kgvid_video_embed) ) { $kgvid_video_embed['enable'] = 'false'; }
2328
 
2329
  if ( array_key_exists('enable', $kgvid_video_embed) && $kgvid_video_embed['enable'] == 'true' && (strpos($post->post_mime_type,"video") !== false || array_key_exists('sample', $kgvid_video_embed)) ) {
2330
 
2332
 
2333
  $shortcode = kgvid_generate_attachment_shortcode($kgvid_video_embed);
2334
 
2335
+ echo '<html style="background-color:transparent;"><head>';
2336
  echo (wp_head());
2337
+ echo '<style>.kgvid_wrapper { margin:0; }</style>';
2338
+ echo '</head><body class="content" style="margin:0px; font-family: sans-serif; padding:0px; border:none;';
2339
+ if ( array_key_exists('gallery', $kgvid_video_embed) ) { echo 'background-color:black; '; }
2340
+ else { echo 'background-color:transparent; '; }
2341
+ echo '">';
2342
  echo (do_shortcode( $shortcode ));
2343
  echo '</body></html>';
2344
  exit;
2496
 
2497
  $field_id = kgvid_backwards_compatible($postID);
2498
 
2499
+ $thumbnaildisplaycode = '<div class="kgvid_thumbnail_select" name="attachments['.$postID.'][thumb'.$i.']" id="attachments-'.$postID.'-thumb'.$i.'"><label for="kgflashmedia-'.$postID.'-thumbradio'.$i.'"><img src="'.$thumbnailurl.'?'.rand().'" width="200" height="'.$thumbnailheight.'" class="kgvid_thumbnail"></label><br /><input type="radio" name="attachments['.$postID.'][thumbradio'.$i.']" id="kgflashmedia-'.$postID.'-thumbradio'.$i.'" value="'.str_replace('/thumb_tmp/', '/', $thumbnailurl).'" onchange="document.getElementById(\''.$field_id['poster'].'\').value = this.value; document.getElementById(\''.$field_id['thumbtime'].'\').value = \''. $movieoffset_display .'\'; document.getElementById(\'attachments-'. $postID .'-numberofthumbs\').value =\'1\';"></div>';
2500
 
2501
  $i++;
2502
 
2739
  $audio_bitrate_flag = "ab";
2740
  }
2741
 
2742
+ if ( ($movie_info['configuration']['libfaac'] == "true" || $movie_info['configuration']['libvo_aacenc'] == "true" || $movie_info['configuration']['libfdk_aac'] == "true" ) && $movie_info['configuration']['libx264'] == "true" ) {
2743
  foreach( $video_formats as $format => $format_stats ) {
2744
  if ( $queued_format == $format && $format_stats['type'] == "h264" ) {
2745
  if ( ! $encodevideo_info[$format.'_exists'] || ($encodevideo_info['sameserver'] && filesize($encodevideo_info[$format.'filepath']) < 24576) ) {
3517
  );
3518
  }
3519
  }
3520
+ //add_action( 'add_meta_boxes', 'kgvid_singleurl_meta_box' );
3521
 
3522
  function kgvid_singleurl_inner_custom_box($post) {
3523
 
video-js/font/vjs.eot ADDED
Binary file
video-js/font/vjs.svg ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
+ <svg xmlns="http://www.w3.org/2000/svg">
4
+ <metadata>
5
+ This is a custom SVG font generated by IcoMoon.
6
+ <iconset grid="16"></iconset>
7
+ </metadata>
8
+ <defs>
9
+ <font id="VideoJS" horiz-adv-x="512" >
10
+ <font-face units-per-em="512" ascent="480" descent="-32" />
11
+ <missing-glyph horiz-adv-x="512" />
12
+ <glyph unicode="&#xe000;" d="M 512.00,480.00 L 512.00,272.00 L 432.00,352.00 L 336.00,256.00 L 288.00,304.00 L 384.00,400.00 L 304.00,480.00 ZM 224.00,144.00 L 128.00,48.00 L 208.00-32.00 L 0.00-32.00 L 0.00,176.00 L 80.00,96.00 L 176.00,192.00 Z" />
13
+ <glyph unicode="&#xe001;" d="M 96.00,416.00L 416.00,224.00L 96.00,32.00 z" />
14
+ <glyph unicode="&#xe002;" d="M 64.00,416.00L 224.00,416.00L 224.00,32.00L 64.00,32.00zM 288.00,416.00L 448.00,416.00L 448.00,32.00L 288.00,32.00z" />
15
+ <glyph unicode="&#xe003;" d="M 200.666,440.666 C 213.50,453.50 224.00,449.15 224.00,431.00 L 224.00,17.00 C 224.00-1.15 213.50-5.499 200.666,7.335 L 80.00,128.00 L 0.00,128.00 L 0.00,320.00 L 80.00,320.00 L 200.666,440.666 Z" />
16
+ <glyph unicode="&#xe004;" d="M 274.51,109.49c-6.143,0.00-12.284,2.343-16.971,7.029c-9.373,9.373-9.373,24.568,0.00,33.941
17
+ c 40.55,40.55, 40.55,106.529,0.00,147.078c-9.373,9.373-9.373,24.569,0.00,33.941c 9.373,9.372, 24.568,9.372, 33.941,0.00
18
+ c 59.265-59.265, 59.265-155.696,0.00-214.961C 286.794,111.833, 280.652,109.49, 274.51,109.49zM 200.666,440.666 C 213.50,453.50 224.00,449.15 224.00,431.00 L 224.00,17.00 C 224.00-1.15 213.50-5.499 200.666,7.335 L 80.00,128.00 L 0.00,128.00 L 0.00,320.00 L 80.00,320.00 L 200.666,440.666 Z" />
19
+ <glyph unicode="&#xe005;" d="M 359.765,64.235c-6.143,0.00-12.284,2.343-16.971,7.029c-9.372,9.372-9.372,24.568,0.00,33.941
20
+ c 65.503,65.503, 65.503,172.085,0.00,237.588c-9.372,9.373-9.372,24.569,0.00,33.941c 9.372,9.371, 24.569,9.372, 33.941,0.00
21
+ C 417.532,335.938, 440.00,281.696, 440.00,224.00c0.00-57.695-22.468-111.938-63.265-152.735C 372.049,66.578, 365.907,64.235, 359.765,64.235zM 274.51,109.49c-6.143,0.00-12.284,2.343-16.971,7.029c-9.373,9.373-9.373,24.568,0.00,33.941
22
+ c 40.55,40.55, 40.55,106.529,0.00,147.078c-9.373,9.373-9.373,24.569,0.00,33.941c 9.373,9.372, 24.568,9.372, 33.941,0.00
23
+ c 59.265-59.265, 59.265-155.696,0.00-214.961C 286.794,111.833, 280.652,109.49, 274.51,109.49zM 200.666,440.666 C 213.50,453.50 224.00,449.15 224.00,431.00 L 224.00,17.00 C 224.00-1.15 213.50-5.499 200.666,7.335 L 80.00,128.00 L 0.00,128.00 L 0.00,320.00 L 80.00,320.00 L 200.666,440.666 Z" />
24
+ <glyph unicode="&#xe006;" d="M 445.02,18.98c-6.143,0.00-12.284,2.343-16.971,7.029c-9.372,9.373-9.372,24.568,0.00,33.941
25
+ C 471.868,103.771, 496.001,162.03, 496.001,224.00c0.00,61.969-24.133,120.229-67.952,164.049c-9.372,9.373-9.372,24.569,0.00,33.941
26
+ c 9.372,9.372, 24.569,9.372, 33.941,0.00c 52.885-52.886, 82.011-123.20, 82.011-197.99c0.00-74.791-29.126-145.104-82.011-197.99
27
+ C 457.304,21.323, 451.162,18.98, 445.02,18.98zM 359.765,64.235c-6.143,0.00-12.284,2.343-16.971,7.029c-9.372,9.372-9.372,24.568,0.00,33.941
28
+ c 65.503,65.503, 65.503,172.085,0.00,237.588c-9.372,9.373-9.372,24.569,0.00,33.941c 9.372,9.371, 24.569,9.372, 33.941,0.00
29
+ C 417.532,335.938, 440.00,281.696, 440.00,224.00c0.00-57.695-22.468-111.938-63.265-152.735C 372.049,66.578, 365.907,64.235, 359.765,64.235zM 274.51,109.49c-6.143,0.00-12.284,2.343-16.971,7.029c-9.373,9.373-9.373,24.568,0.00,33.941
30
+ c 40.55,40.55, 40.55,106.529,0.00,147.078c-9.373,9.373-9.373,24.569,0.00,33.941c 9.373,9.372, 24.568,9.372, 33.941,0.00
31
+ c 59.265-59.265, 59.265-155.696,0.00-214.961C 286.794,111.833, 280.652,109.49, 274.51,109.49zM 200.666,440.666 C 213.50,453.50 224.00,449.15 224.00,431.00 L 224.00,17.00 C 224.00-1.15 213.50-5.499 200.666,7.335 L 80.00,128.00 L 0.00,128.00 L 0.00,320.00 L 80.00,320.00 L 200.666,440.666 Z" horiz-adv-x="544" />
32
+ <glyph unicode="&#xe007;" d="M 256.00,480.00L 96.00,224.00L 256.00-32.00L 416.00,224.00 z" />
33
+ <glyph unicode="&#xe008;" d="M 0.00,480.00 L 687.158,480.00 L 687.158-35.207 L 0.00-35.207 L 0.00,480.00 z M 622.731,224.638 C 621.878,314.664 618.46,353.922 597.131,381.656 C 593.291,387.629 586.038,391.042 580.065,395.304 C 559.158,410.669 460.593,416.211 346.247,416.211 C 231.896,416.211 128.642,410.669 108.162,395.304 C 101.762,391.042 94.504,387.629 90.242,381.656 C 69.331,353.922 66.349,314.664 65.069,224.638 C 66.349,134.607 69.331,95.353 90.242,67.62 C 94.504,61.22 101.762,58.233 108.162,53.967 C 128.642,38.18 231.896,33.06 346.247,32.207 C 460.593,33.06 559.158,38.18 580.065,53.967 C 586.038,58.233 593.291,61.22 597.131,67.62 C 618.46,95.353 621.878,134.607 622.731,224.638 z M 331.179,247.952 C 325.389,318.401 287.924,359.905 220.901,359.905 C 159.672,359.905 111.54,304.689 111.54,215.965 C 111.54,126.859 155.405,71.267 227.907,71.267 C 285.79,71.267 326.306,113.916 332.701,184.742 L 263.55,184.742 C 260.81,158.468 249.843,138.285 226.69,138.285 C 190.136,138.285 183.435,174.462 183.435,212.92 C 183.435,265.854 198.665,292.886 223.951,292.886 C 246.492,292.886 260.81,276.511 262.939,247.952 L 331.179,247.952 z M 570.013,247.952 C 564.228,318.401 526.758,359.905 459.74,359.905 C 398.507,359.905 350.379,304.689 350.379,215.965 C 350.379,126.859 394.244,71.267 466.746,71.267 C 524.625,71.267 565.14,113.916 571.536,184.742 L 502.384,184.742 C 499.649,158.468 488.682,138.285 465.529,138.285 C 428.971,138.285 422.27,174.462 422.27,212.92 C 422.27,265.854 437.504,292.886 462.785,292.886 C 485.327,292.886 499.649,276.511 501.778,247.952 L 570.013,247.952 z " horiz-adv-x="687.1578947368421" />
34
+ <glyph unicode="&#xe009;" d="M 64.00,416.00L 448.00,416.00L 448.00,32.00L 64.00,32.00z" />
35
+ <glyph unicode="&#xe00a;" d="M 192.00,416.00A64.00,64.00 12780.00 1 1 320.00,416A64.00,64.00 12780.00 1 1 192.00,416zM 327.765,359.765A64.00,64.00 12780.00 1 1 455.765,359.765A64.00,64.00 12780.00 1 1 327.765,359.765zM 416.00,224.00A32.00,32.00 12780.00 1 1 480.00,224A32.00,32.00 12780.00 1 1 416.00,224zM 359.765,88.235A32.00,32.00 12780.00 1 1 423.765,88.23500000000001A32.00,32.00 12780.00 1 1 359.765,88.23500000000001zM 224.001,32.00A32.00,32.00 12780.00 1 1 288.001,32A32.00,32.00 12780.00 1 1 224.001,32zM 88.236,88.235A32.00,32.00 12780.00 1 1 152.236,88.23500000000001A32.00,32.00 12780.00 1 1 88.236,88.23500000000001zM 72.236,359.765A48.00,48.00 12780.00 1 1 168.236,359.765A48.00,48.00 12780.00 1 1 72.236,359.765zM 28.00,224.00A36.00,36.00 12780.00 1 1 100.00,224A36.00,36.00 12780.00 1 1 28.00,224z" />
36
+ <glyph unicode="&#xe00b;" d="M 224.00,192.00 L 224.00-16.00 L 144.00,64.00 L 48.00-32.00 L 0.00,16.00 L 96.00,112.00 L 16.00,192.00 ZM 512.00,432.00 L 416.00,336.00 L 496.00,256.00 L 288.00,256.00 L 288.00,464.00 L 368.00,384.00 L 464.00,480.00 Z" />
37
+ <glyph unicode="&#xe00c;" d="M 256.00,448.00 C 397.385,448.00 512.00,354.875 512.00,240.00 C 512.00,125.124 397.385,32.00 256.00,32.00 C 242.422,32.00 229.095,32.867 216.088,34.522 C 161.099-20.467 95.463-30.328 32.00-31.776 L 32.00-18.318 C 66.268-1.529 96.00,29.052 96.00,64.00 C 96.00,68.877 95.621,73.665 94.918,78.348 C 37.02,116.48 0.00,174.725 0.00,240.00 C 0.00,354.875 114.615,448.00 256.00,448.00 Z" />
38
+ <glyph unicode="&#x20;" horiz-adv-x="256" />
39
+ <glyph class="hidden" unicode="&#xf000;" d="M0,480L 512 -32L0 -32 z" horiz-adv-x="0" />
40
+ </font></defs></svg>
video-js/font/vjs.ttf ADDED
Binary file
video-js/font/vjs.woff ADDED
Binary file
video-js/kg-video-js-skin.css CHANGED
@@ -1,408 +1,580 @@
1
- .vjs-poster {
2
- max-width:none !important; //fixes conflict with some themes
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  }
4
 
5
- /* The default control bar. Created by bar.js */
6
- .kg-video-js-skin .vjs-controls {
 
 
 
7
  position: absolute;
8
- bottom: 0; /* Distance from the bottom of the box/video. Keep 0. Use height to add more bottom margin. */
9
- left: 0; right: 0; /* 100% width of div */
10
- margin: 0; padding: 0; /* Controls are absolutely position, so no padding necessary */
11
- height: 2.6em; /* Including any margin you want above or below control items */
12
- color: #fff; border-top: 1px solid #404040;
13
-
14
- /* CSS Gradient */
15
- /* Can use the Ultimate CSS Gradient Generator: http://www.colorzilla.com/gradient-editor/ */
16
- background: #242424; /* Old browsers */
17
- background: -moz-linear-gradient(top, #242424 50%, #1f1f1f 50%, #171717 100%); /* FF3.6+ */
18
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(50%,#242424), color-stop(50%,#1f1f1f), color-stop(100%,#171717)); /* Chrome,Safari4+ */
19
- background: -webkit-linear-gradient(top, #242424 50%,#1f1f1f 50%,#171717 100%); /* Chrome10+,Safari5.1+ */
20
- background: -o-linear-gradient(top, #242424 50%,#1f1f1f 50%,#171717 100%); /* Opera11.10+ */
21
- background: -ms-linear-gradient(top, #242424 50%,#1f1f1f 50%,#171717 100%); /* IE10+ */
22
- /* Filter was causing a lot of weird issues in IE. Elements would stop showing up, or other styles would break. */
23
- /*filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#242424', endColorstr='#171717',GradientType=0 );*/ /* IE6-9 */
24
- background: linear-gradient(top, #242424 50%,#1f1f1f 50%,#171717 100%); /* W3C */
25
-
26
- /* Start hidden and with 0 opacity. Opacity is used to fade in modern browsers. */
27
- /* Can't use display block to hide initially because widths of slider handles aren't calculated and avaialbe for positioning correctly. */
28
- visibility: hidden;
29
- opacity: 0;
30
  }
31
 
32
  /* General styles for individual controls. */
33
  .kg-video-js-skin .vjs-control {
34
- position: relative; float: left;
35
- text-align: center; margin: 0; padding: 0;
36
- height: 2.6em; width: 2.6em;
 
 
 
 
 
37
  }
38
 
39
- .kg-video-js-skin .vjs-control:focus {
40
- outline: 0;
41
- /* background-color: #555;*/
 
 
 
 
 
 
 
 
 
42
  }
43
 
 
 
 
 
 
 
 
 
44
  /* Hide control text visually, but have it available for screenreaders: h5bp.com/v */
45
  .kg-video-js-skin .vjs-control-text { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }
46
 
47
-
48
  /* Play/Pause
49
  -------------------------------------------------------------------------------- */
50
- .kg-video-js-skin .vjs-play-control { width: 5em; cursor: pointer !important; }
51
- /* Play Icon */
52
- .kg-video-js-skin.vjs-paused .vjs-play-control div { width: 15px; height: 17px; background: url('kg-video-js-skin.png'); margin: 0.5em auto 0; }
53
- .kg-video-js-skin.vjs-playing .vjs-play-control div { width: 15px; height: 17px; background: url('kg-video-js-skin.png') -25px 0; margin: 0.5em auto 0; }
 
 
 
 
 
 
54
 
55
  /* Rewind
56
  -------------------------------------------------------------------------------- */
57
- .kg-video-js-skin .vjs-rewind-control { width: 5em; cursor: pointer !important; }
58
- .kg-video-js-skin .vjs-rewind-control div { width: 19px; height: 16px; background: url('kg-video-js-skin.png'); margin: 0.5em auto 0; }
 
59
 
60
  /* Volume/Mute
61
  -------------------------------------------------------------------------------- */
62
- .kg-video-js-skin .vjs-mute-control { width: 3.8em; cursor: pointer !important; float: right; }
63
- .kg-video-js-skin .vjs-mute-control div { width: 22px; height: 16px; background: url('kg-video-js-skin.png') -75px -25px; margin: 0.5em auto 0; }
64
- .kg-video-js-skin .vjs-mute-control.vjs-vol-0 div { background: url('kg-video-js-skin.png') 0 -25px; }
65
- .kg-video-js-skin .vjs-mute-control.vjs-vol-1 div { background: url('kg-video-js-skin.png') -25px -25px; }
66
- .kg-video-js-skin .vjs-mute-control.vjs-vol-2 div { background: url('kg-video-js-skin.png') -50px -25px; }
67
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
 
69
- .kg-video-js-skin .vjs-volume-control { width: 5em; float: right; }
 
 
 
70
  .kg-video-js-skin .vjs-volume-bar {
71
- position: relative; width: 5em; height: 0.6em; margin: 1em auto 0; cursor: pointer !important;
72
-
73
- -moz-border-radius: 0.3em; -webkit-border-radius: 0.3em; border-radius: 0.3em;
 
74
 
75
- background: #666;
76
- background: -moz-linear-gradient(top, #333, #666);
77
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#333), to(#666));
78
- background: -webkit-linear-gradient(top, #333, #666);
79
- background: -o-linear-gradient(top, #333, #666);
80
- background: -ms-linear-gradient(top, #333, #666);
81
- background: linear-gradient(top, #333, #666);
82
  }
 
83
  .kg-video-js-skin .vjs-volume-level {
84
- position: absolute; top: 0; left: 0; height: 0.6em;
 
 
 
85
 
86
- -moz-border-radius: 0.3em; -webkit-border-radius: 0.3em; border-radius: 0.3em;
 
 
 
 
 
 
 
87
 
88
- background: #fff;
89
- background: -moz-linear-gradient(top, #fff, #ccc);
90
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#fff), to(#ccc));
91
- background: -webkit-linear-gradient(top, #fff, #ccc);
92
- background: -o-linear-gradient(top, #fff, #ccc);
93
- background: -ms-linear-gradient(top, #fff, #ccc);
94
- background: linear-gradient(top, #fff, #ccc);
95
  }
96
- .kg-video-js-skin .vjs-volume-handle {
97
- position: absolute; top: -0.2em; width: 0.8em; height: 0.8em; background: #ccc; left: 0;
98
- border: 1px solid #fff;
99
- -moz-border-radius: 0.6em; -webkit-border-radius: 0.6em; border-radius: 0.6em;
100
  }
101
 
 
 
 
 
102
  /* Progress
103
  -------------------------------------------------------------------------------- */
104
- .kg-video-js-skin div.vjs-progress-control {
105
  position: absolute;
106
- left: 4.8em; right: 4.8em; /* Leave room for time displays. */
107
- height: 1.0em; width: auto;
108
- top: -1.3em; /* Set above the rest of the controls. And leave room for 2px of borders (progress bottom and controls top). */
109
- border-bottom: 1px solid #1F1F1F;
110
- border-top: 1px solid #222;
111
-
112
- /* CSS Gradient */
113
- background: #333;
114
- background: -moz-linear-gradient(top, #222, #333);
115
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#222), to(#333));
116
- background: -webkit-linear-gradient(top, #222, #333);
117
- background: -o-linear-gradient(top, #333, #222);
118
- background: -ms-linear-gradient(top, #333, #222);
119
- background: linear-gradient(top, #333, #222);
120
 
 
121
 
122
- /* 1px top shadow */
123
- /* -webkit-box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.15); -moz-box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.15); box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.15);*/
 
 
 
 
 
 
 
 
 
 
124
  }
125
 
126
  /* Box containing play and load progresses. Also acts as seek scrubber. */
127
  .kg-video-js-skin .vjs-progress-holder {
128
- position: relative; cursor: pointer !important; /*overflow: hidden;*/
129
- padding: 0; margin: 0; /* Placement within the progress control item */
130
- height: 1.0em;
131
- -moz-border-radius: 0.6em; -webkit-border-radius: 0.6em; border-radius: 0.6em;
132
-
133
- /* CSS Gradient */
134
- background: #111;
135
- background: -moz-linear-gradient(top, #111, #262626);
136
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#111), to(#262626));
137
- background: -webkit-linear-gradient(top, #111, #262626);
138
- background: -o-linear-gradient(top, #111, #262626);
139
- background: -ms-linear-gradient(top, #111, #262626);
140
- background: linear-gradient(top, #111, #262626);
141
  }
142
- .kg-video-js-skin .vjs-progress-holder .vjs-play-progress,
143
- .kg-video-js-skin .vjs-progress-holder .vjs-load-progress { /* Progress Bars */
144
- position: absolute; display: block; height: 1.0em; margin: 0; padding: 0;
145
- left: 0; top: 0; /*Needed for IE6*/
146
- -moz-border-radius: 0.6em; -webkit-border-radius: 0.6em; border-radius: 0.6em;
147
 
148
- /*width: 0;*/
 
 
 
 
 
 
 
 
 
 
149
  }
150
 
151
  .kg-video-js-skin .vjs-play-progress {
152
- /* CSS Gradient. */
153
- background: #fff; /* Old browsers */
154
- background: -moz-linear-gradient(top, #fff 0%, #d6d6d6 50%, #fff 100%);
155
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(0%,#fff), color-stop(50%,#d6d6d6), color-stop(100%,#fff));
156
- background: -webkit-linear-gradient(top, #fff 0%,#d6d6d6 50%,#fff 100%);
157
- background: -o-linear-gradient(top, #fff 0%,#d6d6d6 50%,#fff 100%);
158
- background: -ms-linear-gradient(top, #fff 0%,#d6d6d6 50%,#fff 100%);
159
- background: linear-gradient(top, #fff 0%,#d6d6d6 50%,#fff 100%);
160
-
161
- background: #efefef;
162
- background: -moz-linear-gradient(top, #efefef 0%, #f5f5f5 50%, #dbdbdb 50%, #f1f1f1 100%);
163
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(0%,#efefef), color-stop(50%,#f5f5f5), color-stop(50%,#dbdbdb), color-stop(100%,#f1f1f1));
164
- background: -webkit-linear-gradient(top, #efefef 0%,#f5f5f5 50%,#dbdbdb 50%,#f1f1f1 100%);
165
- background: -o-linear-gradient(top, #efefef 0%,#f5f5f5 50%,#dbdbdb 50%,#f1f1f1 100%);
166
- background: -ms-linear-gradient(top, #efefef 0%,#f5f5f5 50%,#dbdbdb 50%,#f1f1f1 100%);
167
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#efefef', endColorstr='#f1f1f1',GradientType=0 );
168
- background: linear-gradient(top, #efefef 0%,#f5f5f5 50%,#dbdbdb 50%,#f1f1f1 100%);
169
  }
170
  .kg-video-js-skin .vjs-load-progress {
171
- opacity: 0.8;
172
-
173
- /* CSS Gradient */
174
- background: #666;
175
- background: -moz-linear-gradient(top, #666, #333);
176
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#666), to(#333));
177
- background: -webkit-linear-gradient(top, #666, #333);
178
- background: -o-linear-gradient(top, #666, #333);
179
- background: -ms-linear-gradient(top, #666, #333);
180
- background: linear-gradient(top, #666, #333);
181
  }
182
 
183
- .kg-video-js-skin div.vjs-seek-handle {
184
- position: absolute;
185
- width: 16px; height: 16px; /* Match img pixles */
186
- margin-top: -0.3em;
187
- left: 0; top: 0; /*Needed for IE6*/
188
 
189
- background: url('kg-video-js-skin.png') 0 -50px;
190
- /* CSS Curved Corners. Needed to make shadows curved. */
191
- -moz-border-radius: 0.8em; -webkit-border-radius: 0.8em; border-radius: 0.8em;
192
- /* CSS Shadows */
193
- -webkit-box-shadow: 0 2px 4px 0 #000; -moz-box-shadow: 0 2px 4px 0 #000; box-shadow: 0 2px 4px 0 #000;
194
  }
 
195
  /* Time Display
196
  -------------------------------------------------------------------------------- */
197
  .kg-video-js-skin .vjs-time-controls {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
198
  position: absolute;
199
- right: 0;
200
- height: 1.0em; width: 4.8em;
201
- top: -1.3em;
202
- border-bottom: 1px solid #1F1F1F;
203
- border-top: 1px solid #222;
204
- background-color: #333;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
205
 
206
- font-size: 1em; line-height: 1.0em; font-weight: normal; font-family: Helvetica, Arial, sans-serif;
 
 
 
 
 
 
 
 
 
 
 
 
 
207
 
208
- background: #333;
209
- background: -moz-linear-gradient(top, #222, #333);
210
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#222), to(#333));
211
- background: -webkit-linear-gradient(top, #222, #333);
212
- background: -o-linear-gradient(top, #333, #222);
213
- background: -ms-linear-gradient(top, #333, #222);
214
- background: linear-gradient(top, #333, #222);
215
 
216
- /* 1px top shadow */
217
- /* -webkit-box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.15); -moz-box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.15); box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.15);*/
 
 
218
  }
219
 
220
- .kg-video-js-skin .vjs-current-time { left: 0; }
 
 
 
 
 
 
221
 
222
- .kg-video-js-skin .vjs-duration { right: 0; display: none; }
223
- .kg-video-js-skin .vjs-remaining-time { right: 0; }
224
 
225
- .vjs-time-divider { display:none; }
 
226
 
227
- .kg-video-js-skin .vjs-time-control { font-size: 1em; line-height: 1; font-weight: normal; font-family: Helvetica, Arial, sans-serif; }
228
- .kg-video-js-skin .vjs-time-control span { line-height: 25px; /* Centering vertically */ }
229
 
230
- /* Fullscreen
231
- -------------------------------------------------------------------------------- */
232
- .vjs-secondary-controls { float: right; }
233
 
234
- .kg-video-js-skin .vjs-fullscreen-control { width: 3.8em; cursor: pointer !important; float: right; }
235
- .kg-video-js-skin .vjs-fullscreen-control div { width: 16px; height: 16px; background: url('kg-video-js-skin.png') -50px 0; margin: 0.5em auto 0; }
 
 
 
236
 
237
- .kg-video-js-skin.vjs-fullscreen .vjs-fullscreen-control div { background: url('kg-video-js-skin.png') -75px 0; }
 
 
238
 
 
 
 
 
 
 
239
 
240
- /* Big Play Button (at start)
241
- ---------------------------------------------------------*/
242
- .kg-video-js-skin .vjs-big-play-button {
243
- display: block; /* Start hidden */ z-index: 2;
244
- position: absolute; top: 49%; left: 49%; width: 8.0em; height: 8.0em; margin: -42px 0 0 -42px; text-align: center; vertical-align: center; cursor: pointer !important;
245
- border: 0.8em solid #fff; opacity: 0.7;
246
- -webkit-border-radius: 100px; -moz-border-radius: 100px; border-radius: 100px;
247
 
248
- background: #454545;
249
- background: -moz-linear-gradient(top, #454545 0%, #232323 50%, #161616 50%, #3f3f3f 100%);
250
- background: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(0%,#454545), color-stop(50%,#232323), color-stop(50%,#161616), color-stop(100%,#3f3f3f));
251
- background: -webkit-linear-gradient(top, #454545 0%,#232323 50%,#161616 50%,#3f3f3f 100%);
252
- background: -o-linear-gradient(top, #454545 0%,#232323 50%,#161616 50%,#3f3f3f 100%);
253
- background: -ms-linear-gradient(top, #454545 0%,#232323 50%,#161616 50%,#3f3f3f 100%);
254
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#454545', endColorstr='#3f3f3f',GradientType=0 );
255
- background: linear-gradient(top, #454545 0%,#232323 50%,#161616 50%,#3f3f3f 100%);
256
 
 
 
257
  }
258
 
259
- .kg-video-js-skin div.vjs-big-play-button:hover {
260
- opacity: 0.95;
 
261
  }
262
-
263
- .kg-video-js-skin div.vjs-big-play-button span {
264
- position: absolute; top: 50%; left: 50%;
265
- display: block; width: 35px; height: 42px;
266
- margin: -20px 0 0 -15px; /* Using negative margin to center image. */
267
- background: url('kg-video-js-skin.png') -100px 0;
 
 
 
 
 
 
 
 
 
268
  }
269
-
270
- /* Loading Spinner
271
- ---------------------------------------------------------*/
272
- /* CSS Spinners by Kilian Valkhof - http://kilianvalkhof.com/2010/css-xhtml/css3-loading-spinners-without-images/ */
273
- .vjs-loading-spinner {
274
- display: none;
275
- position: absolute; top: 50%; left: 50%; width: 55px; height: 55px;
276
- margin: -28px 0 0 -28px;
277
- -webkit-animation-name: rotatethis;
278
- -webkit-animation-duration:1s;
279
- -webkit-animation-iteration-count:infinite;
280
- -webkit-animation-timing-function:linear;
281
- -moz-animation-name: rotatethis;
282
- -moz-animation-duration:1s;
283
- -moz-animation-iteration-count:infinite;
284
- -moz-animation-timing-function:linear;
285
- }
286
-
287
- @-webkit-keyframes rotatethis {
288
- 0% {-webkit-transform:scale(0.6) rotate(0deg); }
289
- 12.5% {-webkit-transform:scale(0.6) rotate(0deg); }
290
- 12.51% {-webkit-transform:scale(0.6) rotate(45deg); }
291
- 25% {-webkit-transform:scale(0.6) rotate(45deg); }
292
- 25.01% {-webkit-transform:scale(0.6) rotate(90deg);}
293
- 37.5% {-webkit-transform:scale(0.6) rotate(90deg);}
294
- 37.51% {-webkit-transform:scale(0.6) rotate(135deg);}
295
- 50% {-webkit-transform:scale(0.6) rotate(135deg);}
296
- 50.01% {-webkit-transform:scale(0.6) rotate(180deg);}
297
- 62.5% {-webkit-transform:scale(0.6) rotate(180deg);}
298
- 62.51% {-webkit-transform:scale(0.6) rotate(225deg);}
299
- 75% {-webkit-transform:scale(0.6) rotate(225deg);}
300
- 75.01% {-webkit-transform:scale(0.6) rotate(270deg);}
301
- 87.5% {-webkit-transform:scale(0.6) rotate(270deg);}
302
- 87.51% {-webkit-transform:scale(0.6) rotate(315deg);}
303
- 100% {-webkit-transform:scale(0.6) rotate(315deg);}
304
- }
305
-
306
- @-moz-keyframes rotatethis {
307
- 0% {-moz-transform:scale(0.6) rotate(0deg);}
308
- 12.5% {-moz-transform:scale(0.6) rotate(0deg);}
309
- 12.51% {-moz-transform:scale(0.6) rotate(45deg);}
310
- 25% {-moz-transform:scale(0.6) rotate(45deg);}
311
- 25.01% {-moz-transform:scale(0.6) rotate(90deg);}
312
- 37.5% {-moz-transform:scale(0.6) rotate(90deg);}
313
- 37.51% {-moz-transform:scale(0.6) rotate(135deg);}
314
- 50% {-moz-transform:scale(0.6) rotate(135deg);}
315
- 50.01% {-moz-transform:scale(0.6) rotate(180deg);}
316
- 62.5% {-moz-transform:scale(0.6) rotate(180deg);}
317
- 62.51% {-moz-transform:scale(0.6) rotate(225deg);}
318
- 75% {-moz-transform:scale(0.6) rotate(225deg);}
319
- 75.01% {-moz-transform:scale(0.6) rotate(270deg);}
320
- 87.5% {-moz-transform:scale(0.6) rotate(270deg);}
321
- 87.51% {-moz-transform:scale(0.6) rotate(315deg);}
322
- 100% {-moz-transform:scale(0.6) rotate(315deg);}
323
- }
324
- /* Each circle */
325
- div.vjs-loading-spinner .ball1 { opacity: 0.12; position:absolute; left: 20px; top: 0px; width: 13px; height: 13px; background: #fff;
326
- border-radius: 13px; -webkit-border-radius: 13px; -moz-border-radius: 13px; border: 1px solid #ccc; }
327
-
328
- div.vjs-loading-spinner .ball2 { opacity: 0.25; position:absolute; left: 34px; top: 6px; width: 13px; height: 13px; background: #fff;
329
- border-radius: 13px; -webkit-border-radius: 13px; -moz-border-radius: 13px; border: 1px solid #ccc; }
330
-
331
- div.vjs-loading-spinner .ball3 { opacity: 0.37; position:absolute; left: 40px; top: 20px; width: 13px; height: 13px; background: #fff;
332
- border-radius: 13px; -webkit-border-radius: 13px; -moz-border-radius: 13px; border: 1px solid #ccc; }
333
-
334
- div.vjs-loading-spinner .ball4 { opacity: 0.50; position:absolute; left: 34px; top: 34px; width: 13px; height: 13px; background: #fff;
335
- border-radius: 10px; -webkit-border-radius: 10px; -moz-border-radius: 15px; border: 1px solid #ccc; }
336
-
337
- div.vjs-loading-spinner .ball5 { opacity: 0.62; position:absolute; left: 20px; top: 40px; width: 13px; height: 13px; background: #fff;
338
- border-radius: 13px; -webkit-border-radius: 13px; -moz-border-radius: 13px; border: 1px solid #ccc; }
339
-
340
- div.vjs-loading-spinner .ball6 { opacity: 0.75; position:absolute; left: 6px; top: 34px; width: 13px; height: 13px; background: #fff;
341
- border-radius: 13px; -webkit-border-radius: 13px; -moz-border-radius: 13px; border: 1px solid #ccc; }
342
-
343
- div.vjs-loading-spinner .ball7 { opacity: 0.87; position:absolute; left: 0px; top: 20px; width: 13px; height: 13px; background: #fff;
344
- border-radius: 13px; -webkit-border-radius: 13px; -moz-border-radius: 13px; border: 1px solid #ccc; }
345
-
346
- div.vjs-loading-spinner .ball8 { opacity: 1.00; position:absolute; left: 6px; top: 6px; width: 13px; height: 13px; background: #fff;
347
- border-radius: 13px; -webkit-border-radius: 13px; -moz-border-radius: 13px; border: 1px solid #ccc; }
348
 
349
  /* Menu Buttons (Captions/Subtitles/etc.)
350
  -------------------------------------------------------------------------------- */
351
  .kg-video-js-skin .vjs-menu-button {
352
- float: right; margin: 0.2em 0.5em 0 0; padding: 0; width: 3em; height: 2em; cursor: pointer !important;
 
 
353
 
354
- border: 1px solid #111; -moz-border-radius: 0.3em; -webkit-border-radius: 0.3em; border-radius: 0.3em;
 
 
 
 
 
 
 
355
 
356
- background: #4d4d4d;
357
- background: -moz-linear-gradient(top, #4d4d4d 0%, #3f3f3f 50%, #333333 50%, #252525 100%);
358
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#4d4d4d), color-stop(50%,#3f3f3f), color-stop(50%,#333333), color-stop(100%,#252525));
359
- background: -webkit-linear-gradient(top, #4d4d4d 0%,#3f3f3f 50%,#333333 50%,#252525 100%);
360
- background: -o-linear-gradient(top, #4d4d4d 0%,#3f3f3f 50%,#333333 50%,#252525 100%);
361
- background: -ms-linear-gradient(top, #4d4d4d 0%,#3f3f3f 50%,#333333 50%,#252525 100%);
362
- background: linear-gradient(top, #4d4d4d 0%,#3f3f3f 50%,#333333 50%,#252525 100%);
363
  }
364
- /* Button Icon */
365
- .kg-video-js-skin .vjs-menu-button div { background: url('kg-video-js-skin.png') 0px -75px no-repeat; width: 16px; height: 16px; margin: 0.2em auto 0; padding: 0; }
366
 
367
  /* Button Pop-up Menu */
368
- .kg-video-js-skin .vjs-menu-button ul {
369
- display: none; /* Start hidden. Hover will show. */
370
- opacity: 0.8;
371
  padding: 0; margin: 0;
372
- position: absolute; width: 10em; bottom: 2em; max-height: 15em;
373
- left: -3.5em; /* Width of menu - width of button / 2 */
374
- background-color: #111;
375
- border: 2px solid #333;
376
- -moz-border-radius: 0.7em; -webkit-border-radius: 1em; border-radius: .5em;
377
- -webkit-box-shadow: 0 2px 4px 0 #000; -moz-box-shadow: 0 2px 4px 0 #000; box-shadow: 0 2px 4px 0 #000;
378
  overflow: auto;
 
 
 
 
 
 
 
 
 
379
  }
380
 
381
- .kg-video-js-skin .vjs-menu-button:focus ul,
382
- .kg-video-js-skin .vjs-menu-button:hover ul { display: block; list-style: none; }
383
- .kg-video-js-skin .vjs-menu-button ul li { list-style: none; margin: 0; padding: 0.3em 0 0.3em 20px; line-height: 1.4em; font-size: 1.2em; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; text-align: left; }
384
- .kg-video-js-skin .vjs-menu-button ul li.vjs-selected { text-decoration: underline; background: url('kg-video-js-skin.png') -125px -50px no-repeat; }
 
 
 
 
 
 
 
 
 
 
 
 
 
385
  .kg-video-js-skin .vjs-menu-button ul li:focus,
386
  .kg-video-js-skin .vjs-menu-button ul li:hover,
387
  .kg-video-js-skin .vjs-menu-button ul li.vjs-selected:focus,
388
- .kg-video-js-skin .vjs-menu-button ul li.vjs-selected:hover { background-color: #ccc; color: #111; outline: 0; }
389
- .kg-video-js-skin .vjs-menu-button ul li.vjs-menu-title {
390
- text-align: center; text-transform: uppercase; font-size: 1em; line-height: 2em; padding: 0; margin: 0 0 0.3em 0;
391
-
392
- color: #fff; font-weight: bold;
393
 
 
 
 
 
 
 
 
 
 
 
 
 
394
  cursor: default;
395
-
396
- background: #4d4d4d;
397
- background: -moz-linear-gradient(top, #4d4d4d 0%, #3f3f3f 50%, #333333 50%, #252525 100%);
398
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#4d4d4d), color-stop(50%,#3f3f3f), color-stop(50%,#333333), color-stop(100%,#252525));
399
- background: -webkit-linear-gradient(top, #4d4d4d 0%,#3f3f3f 50%,#333333 50%,#252525 100%);
400
- background: -o-linear-gradient(top, #4d4d4d 0%,#3f3f3f 50%,#333333 50%,#252525 100%);
401
- background: -ms-linear-gradient(top, #4d4d4d 0%,#3f3f3f 50%,#333333 50%,#252525 100%);
402
- background: linear-gradient(top, #4d4d4d 0%,#3f3f3f 50%,#333333 50%,#252525 100%);
403
  }
404
 
405
  /* Subtitles Button */
406
- .kg-video-js-skin .vjs-captions-button div { background-position: -25px -75px; }
407
- .kg-video-js-skin .vjs-chapters-button div { background-position: -100px -75px; }
408
- .kg-video-js-skin .vjs-chapters-button ul { width: 20em; left: -8.5em; /* Width of menu - width of button / 2 */ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ Custom Video.js skin for Video Embed & Thumbnail Generator
3
+ by Kyle Gilman (http://www.kylegilman.net/)
4
+ */
5
+
6
+
7
+
8
+ /* Base UI Component Classes
9
+ -------------------------------------------------------------------------------- */
10
+ @font-face{
11
+ font-family: 'VideoJS';
12
+ src: url('font/vjs.eot');
13
+ src: url('font/vjs.eot') format('embedded-opentype'),
14
+ url('font/vjs.woff') format('woff'),
15
+ url('font/vjs.ttf') format('truetype');
16
+ font-weight: normal;
17
+ font-style: normal;
18
+ }
19
+
20
+ .kg-video-js-skin {
21
+ color: #ccc;
22
+ }
23
+
24
+ /* Slider - used for Volume bar and Seek bar */
25
+ .kg-video-js-skin .vjs-slider {
26
+ z-index: 1002;
27
+ outline: 0; /* Replace browser focus hightlight with handle highlight */
28
+ position: relative;
29
+ cursor: pointer;
30
+ padding: 0;
31
+ background: rgb(50, 50, 50); /* IE8- Fallback */
32
+ background: rgba(100, 100, 100, 0.5);
33
+ }
34
+
35
+ .kg-video-js-skin .vjs-slider:focus {
36
+ background: rgb(70, 70, 70); /* IE8- Fallback */
37
+ background: rgba(100, 100, 100, 0.70);
38
+
39
+ -webkit-box-shadow: 0 0 2em rgba(255, 255, 255, 1);
40
+ -moz-box-shadow: 0 0 2em rgba(255, 255, 255, 1);
41
+ box-shadow: 0 0 2em rgba(255, 255, 255, 1);
42
+ }
43
+
44
+ .kg-video-js-skin .vjs-slider-handle {
45
+ position: absolute;
46
+ /* Needed for IE6 */
47
+ left: 0;
48
+ top: 0;
49
+ }
50
+
51
+ .kg-video-js-skin .vjs-slider-handle:before {
52
+ /*content: "\f111";*/ /* Circle icon = f111 */
53
+ content: "\e009"; /* Square icon */
54
+ font-family: VideoJS;
55
+ font-size: 1em;
56
+ line-height: 1;
57
+ text-align: center;
58
+ text-shadow: 0em 0em 1em #fff;
59
+
60
+ position: absolute;
61
+ top: 0;
62
+ left: 0;
63
+
64
+ /* Rotate the square icon to make a diamond */
65
+ -webkit-transform: rotate(-45deg);
66
+ -moz-transform: rotate(-45deg);
67
+ -ms-transform: rotate(-45deg);
68
+ -o-transform: rotate(-45deg);
69
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
70
  }
71
 
72
+ /* Control Bar
73
+ -------------------------------------------------------------------------------- */
74
+ /* The default control bar. Created by controls.js */
75
+ .kg-video-js-skin .vjs-control-bar {
76
+ display: none; /* Start hidden */
77
  position: absolute;
78
+ /* Distance from the bottom of the box/video. Keep 0. Use height to add more bottom margin. */
79
+ bottom: 0;
80
+ /* 100% width of player div */
81
+ left: 0;
82
+ right: 0;
83
+ /* Controls are absolutely position, so no padding necessary */
84
+ padding: 0;
85
+ margin: 0;
86
+ /* Height includes any margin you want above or below control items */
87
+ height: 3.0em;
88
+ background-color: rgb(0, 0, 0);
89
+ /* Slight blue so it can be seen more easily on black. */
90
+ background-color: rgba(40, 40, 40, 0.7);
91
+ /* Default font settings */
92
+ font-style: normal;
93
+ font-weight: normal;
94
+ font-family: Arial, sans-serif;
95
+ z-index: 1002;
 
 
 
 
96
  }
97
 
98
  /* General styles for individual controls. */
99
  .kg-video-js-skin .vjs-control {
100
+ outline: none;
101
+ position: relative;
102
+ float: left;
103
+ text-align: center;
104
+ margin: 0;
105
+ padding: 0;
106
+ height: 3.0em;
107
+ width: 4em;
108
  }
109
 
110
+ /* FontAwsome button icons */
111
+ .kg-video-js-skin .vjs-control:before {
112
+ font-family: VideoJS;
113
+ font-size: 1.5em;
114
+ line-height: 2;
115
+ position: absolute;
116
+ top: 0;
117
+ left: 0;
118
+ width: 100%;
119
+ height: 100%;
120
+ text-align: center;
121
+ text-shadow: 1px 1px 1px rgba(0,0,0,0.5);
122
  }
123
 
124
+ /* Replacement for focus outline */
125
+ .kg-video-js-skin .vjs-control:focus:before,
126
+ .kg-video-js-skin .vjs-control:hover:before {
127
+ text-shadow: 0em 0em 1em rgba(255, 255, 255, 1);
128
+ }
129
+
130
+ .kg-video-js-skin .vjs-control:focus { /* outline: 0; */ /* keyboard-only users cannot see the focus on several of the UI elements when this is set to 0 */ }
131
+
132
  /* Hide control text visually, but have it available for screenreaders: h5bp.com/v */
133
  .kg-video-js-skin .vjs-control-text { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }
134
 
 
135
  /* Play/Pause
136
  -------------------------------------------------------------------------------- */
137
+ .kg-video-js-skin .vjs-play-control {
138
+ width: 5em;
139
+ cursor: pointer;
140
+ }
141
+ .kg-video-js-skin .vjs-play-control:before {
142
+ content: "\e001"; /* Play Icon */
143
+ }
144
+ .kg-video-js-skin.vjs-playing .vjs-play-control:before {
145
+ content: "\e002"; /* Pause Icon */
146
+ }
147
 
148
  /* Rewind
149
  -------------------------------------------------------------------------------- */
150
+ /*.kg-video-js-skin .vjs-rewind-control { width: 5em; cursor: pointer !important; }
151
+ .kg-video-js-skin .vjs-rewind-control div { width: 19px; height: 16px; background: url('video-js.png'); margin: 0.5em auto 0; }
152
+ */
153
 
154
  /* Volume/Mute
155
  -------------------------------------------------------------------------------- */
156
+ .kg-video-js-skin .vjs-mute-control,
157
+ .kg-video-js-skin .vjs-volume-menu-button {
158
+ cursor: pointer;
159
+ float: right;
160
+ }
161
+ .kg-video-js-skin .vjs-mute-control:before,
162
+ .kg-video-js-skin .vjs-volume-menu-button:before {
163
+ content: "\e006"; /* Full volume */
164
+ }
165
+ .kg-video-js-skin .vjs-mute-control.vjs-vol-0:before,
166
+ .kg-video-js-skin .vjs-volume-menu-button.vjs-vol-0:before {
167
+ content: "\e003"; /* No volume */
168
+ }
169
+ .kg-video-js-skin .vjs-mute-control.vjs-vol-1:before,
170
+ .kg-video-js-skin .vjs-volume-menu-button.vjs-vol-1:before {
171
+ content: "\e004"; /* Half volume */
172
+ }
173
+ .kg-video-js-skin .vjs-mute-control.vjs-vol-2:before,
174
+ .kg-video-js-skin .vjs-volume-menu-button.vjs-vol-2:before {
175
+ content: "\e005"; /* Full volume */
176
+ }
177
 
178
+ .kg-video-js-skin .vjs-volume-control {
179
+ width: 5em;
180
+ float: right;
181
+ }
182
  .kg-video-js-skin .vjs-volume-bar {
183
+ width: 5em;
184
+ height: 0.6em;
185
+ margin: 1.1em auto 0;
186
+ }
187
 
188
+ .kg-video-js-skin .vjs-volume-menu-button .vjs-menu-content {
189
+ height: 2.9em;
 
 
 
 
 
190
  }
191
+
192
  .kg-video-js-skin .vjs-volume-level {
193
+ position: absolute;
194
+ top: 0;
195
+ left: 0;
196
+ height: 0.5em;
197
 
198
+ background: #66A8CC
199
+ url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAP0lEQVQIHWWMAQoAIAgDR/QJ/Ub//04+w7ZICBwcOg5FZi5iBB82AGzixEglJrd4TVK5XUJpskSTEvpdFzX9AB2pGziSQcvAAAAAAElFTkSuQmCC)
200
+ -50% 0 repeat;
201
+ }
202
+ .kg-video-js-skin .vjs-volume-bar .vjs-volume-handle {
203
+ width: 0.5em;
204
+ height: 0.5em;
205
+ }
206
 
207
+ .kg-video-js-skin .vjs-volume-handle:before {
208
+ font-size: 0.9em;
209
+ top: -0.2em;
210
+ left: -0.2em;
211
+
212
+ width: 1em;
213
+ height: 1em;
214
  }
215
+
216
+ .kg-video-js-skin .vjs-volume-menu-button .vjs-menu .vjs-menu-content {
217
+ width: 6em;
218
+ left: -4em;
219
  }
220
 
221
+ /*.kg-video-js-skin .vjs-menu-button .vjs-volume-control {
222
+ height: 1.5em;
223
+ }*/
224
+
225
  /* Progress
226
  -------------------------------------------------------------------------------- */
227
+ .kg-video-js-skin .vjs-progress-control {
228
  position: absolute;
229
+ left: 0;
230
+ right: 0;
231
+ width: auto;
232
+ font-size: 0.3em;
233
+ height: 1em;
234
+ /* Set above the rest of the controls. */
235
+ top: -1em;
236
+
237
+ /* Shrink the bar slower than it grows. */
238
+ -webkit-transition: top 0.4s, height 0.4s, font-size 0.4s, -webkit-transform 0.4s;
239
+ -moz-transition: top 0.4s, height 0.4s, font-size 0.4s, -moz-transform 0.4s;
240
+ -o-transition: top 0.4s, height 0.4s, font-size 0.4s, -o-transform 0.4s;
241
+ transition: top 0.4s, height 0.4s, font-size 0.4s, transform 0.4s;
 
242
 
243
+ }
244
 
245
+ /* On hover, make the progress bar grow to something that's more clickable.
246
+ This simply changes the overall font for the progress bar, and this
247
+ updates both the em-based widths and heights, as wells as the icon font */
248
+ .kg-video-js-skin:hover .vjs-progress-control {
249
+ font-size: .9em;
250
+
251
+ /* Even though we're not changing the top/height, we need to include them in
252
+ the transition so they're handled correctly. */
253
+ -webkit-transition: top 0.2s, height 0.2s, font-size 0.2s, -webkit-transform 0.2s;
254
+ -moz-transition: top 0.2s, height 0.2s, font-size 0.2s, -moz-transform 0.2s;
255
+ -o-transition: top 0.2s, height 0.2s, font-size 0.2s, -o-transform 0.2s;
256
+ transition: top 0.2s, height 0.2s, font-size 0.2s, transform 0.2s;
257
  }
258
 
259
  /* Box containing play and load progresses. Also acts as seek scrubber. */
260
  .kg-video-js-skin .vjs-progress-holder {
261
+ /* Placement within the progress control item */
262
+ height: 100%;
 
 
 
 
 
 
 
 
 
 
 
263
  }
 
 
 
 
 
264
 
265
+ /* Progress Bars */
266
+ .kg-video-js-skin .vjs-progress-holder .vjs-play-progress,
267
+ .kg-video-js-skin .vjs-progress-holder .vjs-load-progress {
268
+ position: absolute;
269
+ display: block;
270
+ height: 100%;
271
+ margin: 0;
272
+ padding: 0;
273
+ /* Needed for IE6 */
274
+ left: 0;
275
+ top: 0;
276
  }
277
 
278
  .kg-video-js-skin .vjs-play-progress {
279
+ /*
280
+ Using a data URI to create the white diagonal lines with a transparent
281
+ background. Surprising works in IE8.
282
+ Created using http://www.patternify.com
283
+ Changing the first color value will change the bar color.
284
+ Also using a paralax effect to make the lines move backwards.
285
+ The -50% left position makes that happen.
286
+ */
287
+ background: #66A8CC
288
+ url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAP0lEQVQIHWWMAQoAIAgDR/QJ/Ub//04+w7ZICBwcOg5FZi5iBB82AGzixEglJrd4TVK5XUJpskSTEvpdFzX9AB2pGziSQcvAAAAAAElFTkSuQmCC)
289
+ -50% 0 repeat;
 
 
 
 
 
 
290
  }
291
  .kg-video-js-skin .vjs-load-progress {
292
+ background: rgb(100, 100, 100); /* IE8- Fallback */
293
+ background: rgba(255, 255, 255, 0.4);
 
 
 
 
 
 
 
 
294
  }
295
 
296
+ .kg-video-js-skin .vjs-seek-handle {
297
+ width: 1.5em;
298
+ height: 100%;
299
+ }
 
300
 
301
+ .kg-video-js-skin .vjs-seek-handle:before {
302
+ padding-top: 0.1em; /* Minor adjustment */
 
 
 
303
  }
304
+
305
  /* Time Display
306
  -------------------------------------------------------------------------------- */
307
  .kg-video-js-skin .vjs-time-controls {
308
+ font-size: 1em;
309
+ /* Align vertically by making the line height the same as the control bar */
310
+ line-height: 3em;
311
+ }
312
+ .kg-video-js-skin .vjs-current-time { float: left; }
313
+ .kg-video-js-skin .vjs-duration { float: left; }
314
+ /* Remaining time is in the HTML, but not included in default design */
315
+ .kg-video-js-skin .vjs-remaining-time { display: none; float: left; }
316
+ .vjs-time-divider { float: left; line-height: 3em; }
317
+
318
+ /* Fullscreen
319
+ -------------------------------------------------------------------------------- */
320
+ .kg-video-js-skin .vjs-fullscreen-control {
321
+ width: 3.8em;
322
+ cursor: pointer;
323
+ float: right;
324
+ }
325
+ .kg-video-js-skin .vjs-fullscreen-control:before {
326
+ content: "\e000"; /* Enter full screen */
327
+ }
328
+ .kg-video-js-skin.vjs-fullscreen .vjs-fullscreen-control:before {
329
+ content: "\e00b"; /* Exit full screen */
330
+ }
331
+
332
+ /* Big Play Button (at start)
333
+ ---------------------------------------------------------*/
334
+ .kg-video-js-skin .vjs-big-play-button {
335
+ display: block;
336
+ z-index: 2;
337
  position: absolute;
338
+ top: 49%;
339
+ left: 49%;
340
+ width: 8em;
341
+ height: 8em;
342
+ margin: -4em;
343
+ text-align: center;
344
+ vertical-align: middle;
345
+ cursor: pointer;
346
+ opacity: 1;
347
+
348
+ /* Need a slightly gray bg so it can be seen on black backgrounds */
349
+ background-color: rgb(40, 40, 40);
350
+ background-color: rgba(40, 40, 40, 0.7);
351
+
352
+ border: 0.6em solid rgb(255, 255, 255);
353
+ border-color: rgba(255, 255, 255, 0.7);
354
+
355
+ -webkit-border-radius: 100px;
356
+ -moz-border-radius: 100px;
357
+ border-radius: 100px;
358
+
359
+ -webkit-transition: border 0.4s, -webkit-box-shadow 0.4s, -webkit-transform 0.4s;
360
+ -moz-transition: border 0.4s, -moz-box-shadow 0.4s, -moz-transform 0.4s;
361
+ -o-transition: border 0.4s, -o-box-shadow 0.4s, -o-transform 0.4s;
362
+ transition: border 0.4s, box-shadow 0.4s, transform 0.4s;
363
+ }
364
 
365
+ .kg-video-js-skin:hover .vjs-big-play-button,
366
+ .kg-video-js-skin .vjs-big-play-button:focus {
367
+ outline: 0;
368
+ border-color: rgb(255, 255, 255);
369
+ border-color: rgba(255, 255, 255, 1);
370
+ /* IE8 needs a non-glow hover state */
371
+ background-color: rgb(80, 80, 80);
372
+ background-color: rgba(50, 50, 50, 0.75);
373
+
374
+ -webkit-transition: border 0s, -webkit-box-shadow 0s, -webkit-transform 0s;
375
+ -moz-transition: border 0s, -moz-box-shadow 0s, -moz-transform 0s;
376
+ -o-transition: border 0s, -o-box-shadow 0s, -o-transform 0s;
377
+ transition: border 0s, box-shadow 0s, transform 0s;
378
+ }
379
 
380
+ .kg-video-js-skin .vjs-big-play-button:before {
381
+ content: "\e001"; /* Play icon */
382
+ font-family: VideoJS;
383
+ font-size: 4em;
384
+ line-height: 1.8;
385
+ text-align: center; /* Needed for IE8 */
 
386
 
387
+ position: absolute;
388
+ left: 0;
389
+ width: 100%;
390
+ height: 100%;
391
  }
392
 
393
+ /* Loading Spinner
394
+ ---------------------------------------------------------*/
395
+ .vjs-loading-spinner {
396
+ display: none;
397
+ position: absolute;
398
+ top: 50%;
399
+ left: 50%;
400
 
401
+ font-size: 5em;
402
+ line-height: 1;
403
 
404
+ width: 1em;
405
+ height: 1em;
406
 
407
+ margin-left: -0.5em;
408
+ margin-top: -0.5em;
409
 
410
+ opacity: 0.75;
 
 
411
 
412
+ -webkit-animation: spin 1.5s infinite linear;
413
+ -moz-animation: spin 1.5s infinite linear;
414
+ -o-animation: spin 1.5s infinite linear;
415
+ animation: spin 1.5s infinite linear;
416
+ }
417
 
418
+ .kg-video-js-skin .vjs-loading-spinner:before {
419
+ content: "\e00a"; /* Loading spinner icon */
420
+ font-family: VideoJS;
421
 
422
+ position: absolute;
423
+ width: 1em;
424
+ height: 1em;
425
+ text-align: center;
426
+ text-shadow: 0em 0em 0.1em #000;
427
+ }
428
 
429
+ /* Add a gradient to the spinner by overlaying another copy.
430
+ Text gradient plus a text shadow doesn't work
431
+ and `background-clip: text` only works in Webkit. */
432
+ .kg-video-js-skin .vjs-loading-spinner:after {
433
+ content: "\e00a"; /* Loading spinner icon */
434
+ font-family: VideoJS;
 
435
 
436
+ position: absolute;
437
+ width: 1em;
438
+ height: 1em;
439
+ text-align: center;
 
 
 
 
440
 
441
+ -webkit-background-clip: text;
442
+ -webkit-text-fill-color: transparent;
443
  }
444
 
445
+ @-moz-keyframes spin {
446
+ 0% { -moz-transform: rotate(0deg); }
447
+ 100% { -moz-transform: rotate(359deg); }
448
  }
449
+ @-webkit-keyframes spin {
450
+ 0% { -webkit-transform: rotate(0deg); }
451
+ 100% { -webkit-transform: rotate(359deg); }
452
+ }
453
+ @-o-keyframes spin {
454
+ 0% { -o-transform: rotate(0deg); }
455
+ 100% { -o-transform: rotate(359deg); }
456
+ }
457
+ @-ms-keyframes spin {
458
+ 0% { -ms-transform: rotate(0deg); }
459
+ 100% { -ms-transform: rotate(359deg); }
460
+ }
461
+ @keyframes spin {
462
+ 0% { transform: rotate(0deg); }
463
+ 100% { transform: rotate(359deg); }
464
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
465
 
466
  /* Menu Buttons (Captions/Subtitles/etc.)
467
  -------------------------------------------------------------------------------- */
468
  .kg-video-js-skin .vjs-menu-button {
469
+ float: right;
470
+ cursor: pointer;
471
+ }
472
 
473
+ .kg-video-js-skin .vjs-menu {
474
+ display: none;
475
+ position: absolute;
476
+ bottom: 0;
477
+ left: 0em; /* (Width of vjs-menu - width of button) / 2 */
478
+ width: 0em;
479
+ height: 0em;
480
+ margin-bottom: 3em;
481
 
482
+ border-left: 2em solid transparent;
483
+ border-right: 2em solid transparent;
484
+
485
+ border-top: 1.55em solid rgb(0, 0, 0); /* Same top as ul bottom */
486
+ border-top-color: rgba(7, 40, 50, 0.5); /* Same as ul background */
 
 
487
  }
 
 
488
 
489
  /* Button Pop-up Menu */
490
+ .kg-video-js-skin .vjs-menu-button .vjs-menu .vjs-menu-content {
491
+ display: block;
 
492
  padding: 0; margin: 0;
493
+ position: absolute;
494
+ width: 10em;
495
+ bottom: 1.5em; /* Same bottom as vjs-menu border-top */
496
+ max-height: 15em;
 
 
497
  overflow: auto;
498
+
499
+ left: -5em; /* Width of menu - width of button / 2 */
500
+
501
+ background-color: rgb(0, 0, 0);
502
+ background-color: rgba(7, 40, 50, 0.7);
503
+
504
+ -webkit-box-shadow: -20px -20px 0px rgba(255, 255, 255, 0.5);
505
+ -moz-box-shadow: 0 0 1em rgba(255, 255, 255, 0.5);
506
+ box-shadow: -0.2em -0.2em 0.3em rgba(255, 255, 255, 0.2);
507
  }
508
 
509
+ /*.kg-video-js-skin .vjs-menu-button:focus ul,*/ /* This is not needed because keyboard accessibility for the caption button is not handled with the focus any more. */
510
+ .kg-video-js-skin .vjs-menu-button:hover .vjs-menu {
511
+ display: block;
512
+ }
513
+ .kg-video-js-skin .vjs-menu-button ul li {
514
+ list-style: none;
515
+ margin: 0;
516
+ padding: 0.3em 0 0.3em 0;
517
+ line-height: 1.4em;
518
+ font-size: 1.2em;
519
+ font-weight: normal;
520
+ text-align: center;
521
+ text-transform: lowercase;
522
+ }
523
+ .kg-video-js-skin .vjs-menu-button ul li.vjs-selected {
524
+ background-color: #000;
525
+ }
526
  .kg-video-js-skin .vjs-menu-button ul li:focus,
527
  .kg-video-js-skin .vjs-menu-button ul li:hover,
528
  .kg-video-js-skin .vjs-menu-button ul li.vjs-selected:focus,
529
+ .kg-video-js-skin .vjs-menu-button ul li.vjs-selected:hover {
530
+ background-color: rgb(255, 255, 255);
531
+ background-color: rgba(255, 255, 255, 0.75);
532
+ color: #111;
533
+ outline: 0;
534
 
535
+ -webkit-box-shadow: 0 0 1em rgba(255, 255, 255, 1);
536
+ -moz-box-shadow: 0 0 1em rgba(255, 255, 255, 1);
537
+ box-shadow: 0 0 1em rgba(255, 255, 255, 1);
538
+ }
539
+ .kg-video-js-skin .vjs-menu-button ul li.vjs-menu-title {
540
+ text-align: center;
541
+ text-transform: uppercase;
542
+ font-size: 1em;
543
+ line-height: 2em;
544
+ padding: 0;
545
+ margin: 0 0 0.3em 0;
546
+ font-weight: bold;
547
  cursor: default;
 
 
 
 
 
 
 
 
548
  }
549
 
550
  /* Subtitles Button */
551
+ .kg-video-js-skin .vjs-subtitles-button:before { content: "\e00c"; }
552
+
553
+ /* There's unfortunately no CC button in FontAwesome, so we need
554
+ to manually create one. Please +1 the fontawesome request.
555
+ https://github.com/FortAwesome/Font-Awesome/issues/968 */
556
+ .kg-video-js-skin .vjs-captions-button {
557
+ font-size: 1em; /* Font icons are 1.5em */
558
+ }
559
+ .kg-video-js-skin .vjs-captions-button:before {
560
+ content: "\e008";
561
+ font-family: VideoJS;
562
+ font-size: 1.5em;
563
+ line-height: 2;
564
+ position: absolute;
565
+ top: 0;
566
+ left: 0;
567
+ width: 100%;
568
+ height: 100%;
569
+ text-align: center;
570
+ text-shadow: none;
571
+ }
572
+
573
+
574
+ /* Replacement for focus outline */
575
+ .kg-video-js-skin .vjs-captions-button:focus .vjs-control-content:before,
576
+ .kg-video-js-skin .vjs-captions-button:hover .vjs-control-content:before {
577
+ -webkit-box-shadow: 0 0 1em rgba(255, 255, 255, 1);
578
+ -moz-box-shadow: 0 0 1em rgba(255, 255, 255, 1);
579
+ box-shadow: 0 0 1em rgba(255, 255, 255, 1);
580
+ }
video-js/kg-video-js-skin.png DELETED
Binary file
video-js/video-js.css CHANGED
@@ -1 +1,730 @@
1
- .video-js{background-color:#000;position:relative;padding:0;font-size:10px;vertical-align:middle}.video-js .vjs-tech{position:absolute;top:0;left:0;width:100%;height:100%}.video-js:-moz-full-screen{position:absolute}body.vjs-full-window{padding:0;margin:0;height:100%;overflow-y:auto}.video-js.vjs-fullscreen{position:fixed;overflow:hidden;z-index:1000;left:0;top:0;bottom:0;right:0;width:100%!important;height:100%!important;_position:absolute}.video-js:-webkit-full-screen{width:100%!important;height:100%!important}.vjs-poster{margin:0 auto;padding:0;cursor:pointer;position:relative;width:100%;max-height:100%}.video-js .vjs-text-track-display{text-align:center;position:absolute;bottom:4em;left:1em;right:1em;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.video-js .vjs-text-track{display:none;color:#fff;font-size:1.4em;text-align:center;margin-bottom:.1em;background:#000;background:rgba(0,0,0,0.50)}.video-js .vjs-subtitles{color:#fff}.video-js .vjs-captions{color:#fc6}.vjs-tt-cue{display:block}.vjs-fade-in{visibility:visible!important;opacity:1!important;-webkit-transition:visibility 0s linear 0s,opacity .3s linear;-moz-transition:visibility 0s linear 0s,opacity .3s linear;-ms-transition:visibility 0s linear 0s,opacity .3s linear;-o-transition:visibility 0s linear 0s,opacity .3s linear;transition:visibility 0s linear 0s,opacity .3s linear}.vjs-fade-out{visibility:hidden!important;opacity:0!important;-webkit-transition:visibility 0s linear 1.5s,opacity 1.5s linear;-moz-transition:visibility 0s linear 1.5s,opacity 1.5s linear;-ms-transition:visibility 0s linear 1.5s,opacity 1.5s linear;-o-transition:visibility 0s linear 1.5s,opacity 1.5s linear;transition:visibility 0s linear 1.5s,opacity 1.5s linear}.vjs-default-skin .vjs-controls{position:absolute;bottom:0;left:0;right:0;margin:0;padding:0;height:2.6em;color:#fff;border-top:1px solid #404040;background:#242424;background:-moz-linear-gradient(top,#242424 50%,#1f1f1f 50%,#171717 100%);background:-webkit-gradient(linear,0% 0,0% 100%,color-stop(50%,#242424),color-stop(50%,#1f1f1f),color-stop(100%,#171717));background:-webkit-linear-gradient(top,#242424 50%,#1f1f1f 50%,#171717 100%);background:-o-linear-gradient(top,#242424 50%,#1f1f1f 50%,#171717 100%);background:-ms-linear-gradient(top,#242424 50%,#1f1f1f 50%,#171717 100%);background:linear-gradient(top,#242424 50%,#1f1f1f 50%,#171717 100%);visibility:hidden;opacity:0}.vjs-default-skin .vjs-control{position:relative;float:left;text-align:center;margin:0;padding:0;height:2.6em;width:2.6em}.vjs-default-skin .vjs-control:focus{outline:0}.vjs-default-skin .vjs-control-text{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.vjs-default-skin .vjs-play-control{width:5em;cursor:pointer!important}.vjs-default-skin.vjs-paused .vjs-play-control div{width:15px;height:17px;background:url('video-js.png');margin:.5em auto 0}.vjs-default-skin.vjs-playing .vjs-play-control div{width:15px;height:17px;background:url('video-js.png') -25px 0;margin:.5em auto 0}.vjs-default-skin .vjs-rewind-control{width:5em;cursor:pointer!important}.vjs-default-skin .vjs-rewind-control div{width:19px;height:16px;background:url('video-js.png');margin:.5em auto 0}.vjs-default-skin .vjs-mute-control{width:3.8em;cursor:pointer!important;float:right}.vjs-default-skin .vjs-mute-control div{width:22px;height:16px;background:url('video-js.png') -75px -25px;margin:.5em auto 0}.vjs-default-skin .vjs-mute-control.vjs-vol-0 div{background:url('video-js.png') 0 -25px}.vjs-default-skin .vjs-mute-control.vjs-vol-1 div{background:url('video-js.png') -25px -25px}.vjs-default-skin .vjs-mute-control.vjs-vol-2 div{background:url('video-js.png') -50px -25px}.vjs-default-skin .vjs-volume-control{width:5em;float:right}.vjs-default-skin .vjs-volume-bar{position:relative;width:5em;height:.6em;margin:1em auto 0;cursor:pointer!important;-moz-border-radius:.3em;-webkit-border-radius:.3em;border-radius:.3em;background:#666;background:-moz-linear-gradient(top,#333,#666);background:-webkit-gradient(linear,0% 0,0% 100%,from(#333),to(#666));background:-webkit-linear-gradient(top,#333,#666);background:-o-linear-gradient(top,#333,#666);background:-ms-linear-gradient(top,#333,#666);background:linear-gradient(top,#333,#666)}.vjs-default-skin .vjs-volume-level{position:absolute;top:0;left:0;height:.6em;-moz-border-radius:.3em;-webkit-border-radius:.3em;border-radius:.3em;background:#fff;background:-moz-linear-gradient(top,#fff,#ccc);background:-webkit-gradient(linear,0% 0,0% 100%,from(#fff),to(#ccc));background:-webkit-linear-gradient(top,#fff,#ccc);background:-o-linear-gradient(top,#fff,#ccc);background:-ms-linear-gradient(top,#fff,#ccc);background:linear-gradient(top,#fff,#ccc)}.vjs-default-skin .vjs-volume-handle{position:absolute;top:-0.2em;width:.8em;height:.8em;background:#ccc;left:0;border:1px solid #fff;-moz-border-radius:.6em;-webkit-border-radius:.6em;border-radius:.6em}.vjs-default-skin div.vjs-progress-control{position:absolute;left:4.8em;right:4.8em;height:1.0em;width:auto;top:-1.3em;border-bottom:1px solid #1f1f1f;border-top:1px solid #222;background:#333;background:-moz-linear-gradient(top,#222,#333);background:-webkit-gradient(linear,0% 0,0% 100%,from(#222),to(#333));background:-webkit-linear-gradient(top,#222,#333);background:-o-linear-gradient(top,#333,#222);background:-ms-linear-gradient(top,#333,#222);background:linear-gradient(top,#333,#222)}.vjs-default-skin .vjs-progress-holder{position:relative;cursor:pointer!important;padding:0;margin:0;height:1.0em;-moz-border-radius:.6em;-webkit-border-radius:.6em;border-radius:.6em;background:#111;background:-moz-linear-gradient(top,#111,#262626);background:-webkit-gradient(linear,0% 0,0% 100%,from(#111),to(#262626));background:-webkit-linear-gradient(top,#111,#262626);background:-o-linear-gradient(top,#111,#262626);background:-ms-linear-gradient(top,#111,#262626);background:linear-gradient(top,#111,#262626)}.vjs-default-skin .vjs-progress-holder .vjs-play-progress,.vjs-default-skin .vjs-progress-holder .vjs-load-progress{position:absolute;display:block;height:1.0em;margin:0;padding:0;left:0;top:0;-moz-border-radius:.6em;-webkit-border-radius:.6em;border-radius:.6em}.vjs-default-skin .vjs-play-progress{background:#fff;background:-moz-linear-gradient(top,#fff 0,#d6d6d6 50%,#fff 100%);background:-webkit-gradient(linear,0% 0,0% 100%,color-stop(0%,#fff),color-stop(50%,#d6d6d6),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#fff 0,#d6d6d6 50%,#fff 100%);background:-o-linear-gradient(top,#fff 0,#d6d6d6 50%,#fff 100%);background:-ms-linear-gradient(top,#fff 0,#d6d6d6 50%,#fff 100%);background:linear-gradient(top,#fff 0,#d6d6d6 50%,#fff 100%);background:#efefef;background:-moz-linear-gradient(top,#efefef 0,#f5f5f5 50%,#dbdbdb 50%,#f1f1f1 100%);background:-webkit-gradient(linear,0% 0,0% 100%,color-stop(0%,#efefef),color-stop(50%,#f5f5f5),color-stop(50%,#dbdbdb),color-stop(100%,#f1f1f1));background:-webkit-linear-gradient(top,#efefef 0,#f5f5f5 50%,#dbdbdb 50%,#f1f1f1 100%);background:-o-linear-gradient(top,#efefef 0,#f5f5f5 50%,#dbdbdb 50%,#f1f1f1 100%);background:-ms-linear-gradient(top,#efefef 0,#f5f5f5 50%,#dbdbdb 50%,#f1f1f1 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#efefef',endColorstr='#f1f1f1',GradientType=0);background:linear-gradient(top,#efefef 0,#f5f5f5 50%,#dbdbdb 50%,#f1f1f1 100%)}.vjs-default-skin .vjs-load-progress{opacity:.8;background:#666;background:-moz-linear-gradient(top,#666,#333);background:-webkit-gradient(linear,0% 0,0% 100%,from(#666),to(#333));background:-webkit-linear-gradient(top,#666,#333);background:-o-linear-gradient(top,#666,#333);background:-ms-linear-gradient(top,#666,#333);background:linear-gradient(top,#666,#333)}.vjs-default-skin div.vjs-seek-handle{position:absolute;width:16px;height:16px;margin-top:-0.3em;left:0;top:0;background:url('video-js.png') 0 -50px;-moz-border-radius:.8em;-webkit-border-radius:.8em;border-radius:.8em;-webkit-box-shadow:0 2px 4px 0 #000;-moz-box-shadow:0 2px 4px 0 #000;box-shadow:0 2px 4px 0 #000}.vjs-default-skin .vjs-time-controls{position:absolute;right:0;height:1.0em;width:4.8em;top:-1.3em;border-bottom:1px solid #1f1f1f;border-top:1px solid #222;background-color:#333;font-size:1em;line-height:1.0em;font-weight:normal;font-family:Helvetica,Arial,sans-serif;background:#333;background:-moz-linear-gradient(top,#222,#333);background:-webkit-gradient(linear,0% 0,0% 100%,from(#222),to(#333));background:-webkit-linear-gradient(top,#222,#333);background:-o-linear-gradient(top,#333,#222);background:-ms-linear-gradient(top,#333,#222);background:linear-gradient(top,#333,#222)}.vjs-default-skin .vjs-current-time{left:0}.vjs-default-skin .vjs-duration{right:0;display:none}.vjs-default-skin .vjs-remaining-time{right:0}.vjs-time-divider{display:none}.vjs-default-skin .vjs-time-control{font-size:1em;line-height:1;font-weight:normal;font-family:Helvetica,Arial,sans-serif}.vjs-default-skin .vjs-time-control span{line-height:25px}.vjs-secondary-controls{float:right}.vjs-default-skin .vjs-fullscreen-control{width:3.8em;cursor:pointer!important;float:right}.vjs-default-skin .vjs-fullscreen-control div{width:16px;height:16px;background:url('video-js.png') -50px 0;margin:.5em auto 0}.vjs-default-skin.vjs-fullscreen .vjs-fullscreen-control div{background:url('video-js.png') -75px 0}.vjs-default-skin .vjs-big-play-button{display:block;z-index:2;position:absolute;top:50%;left:50%;width:8.0em;height:8.0em;margin:-42px 0 0 -42px;text-align:center;vertical-align:center;cursor:pointer!important;border:.2em solid #fff;opacity:.95;-webkit-border-radius:25px;-moz-border-radius:25px;border-radius:25px;background:#454545;background:-moz-linear-gradient(top,#454545 0,#232323 50%,#161616 50%,#3f3f3f 100%);background:-webkit-gradient(linear,0% 0,0% 100%,color-stop(0%,#454545),color-stop(50%,#232323),color-stop(50%,#161616),color-stop(100%,#3f3f3f));background:-webkit-linear-gradient(top,#454545 0,#232323 50%,#161616 50%,#3f3f3f 100%);background:-o-linear-gradient(top,#454545 0,#232323 50%,#161616 50%,#3f3f3f 100%);background:-ms-linear-gradient(top,#454545 0,#232323 50%,#161616 50%,#3f3f3f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#454545',endColorstr='#3f3f3f',GradientType=0);background:linear-gradient(top,#454545 0,#232323 50%,#161616 50%,#3f3f3f 100%);-webkit-box-shadow:4px 4px 8px #000;-moz-box-shadow:4px 4px 8px #000;box-shadow:4px 4px 8px #000}.vjs-default-skin div.vjs-big-play-button:hover{-webkit-box-shadow:0 0 80px #fff;-moz-box-shadow:0 0 80px #fff;box-shadow:0 0 80px #fff}.vjs-default-skin div.vjs-big-play-button span{position:absolute;top:50%;left:50%;display:block;width:35px;height:42px;margin:-20px 0 0 -15px;background:url('video-js.png') -100px 0}.vjs-loading-spinner{display:none;position:absolute;top:50%;left:50%;width:55px;height:55px;margin:-28px 0 0 -28px;-webkit-animation-name:rotatethis;-webkit-animation-duration:1s;-webkit-animation-iteration-count:infinite;-webkit-animation-timing-function:linear;-moz-animation-name:rotatethis;-moz-animation-duration:1s;-moz-animation-iteration-count:infinite;-moz-animation-timing-function:linear}@-webkit-keyframes rotatethis{0%{-webkit-transform:scale(0.6) rotate(0deg)}12.5%{-webkit-transform:scale(0.6) rotate(0deg)}12.51%{-webkit-transform:scale(0.6) rotate(45deg)}25%{-webkit-transform:scale(0.6) rotate(45deg)}25.01%{-webkit-transform:scale(0.6) rotate(90deg)}37.5%{-webkit-transform:scale(0.6) rotate(90deg)}37.51%{-webkit-transform:scale(0.6) rotate(135deg)}50%{-webkit-transform:scale(0.6) rotate(135deg)}50.01%{-webkit-transform:scale(0.6) rotate(180deg)}62.5%{-webkit-transform:scale(0.6) rotate(180deg)}62.51%{-webkit-transform:scale(0.6) rotate(225deg)}75%{-webkit-transform:scale(0.6) rotate(225deg)}75.01%{-webkit-transform:scale(0.6) rotate(270deg)}87.5%{-webkit-transform:scale(0.6) rotate(270deg)}87.51%{-webkit-transform:scale(0.6) rotate(315deg)}100%{-webkit-transform:scale(0.6) rotate(315deg)}}@-moz-keyframes rotatethis{0%{-moz-transform:scale(0.6) rotate(0deg)}12.5%{-moz-transform:scale(0.6) rotate(0deg)}12.51%{-moz-transform:scale(0.6) rotate(45deg)}25%{-moz-transform:scale(0.6) rotate(45deg)}25.01%{-moz-transform:scale(0.6) rotate(90deg)}37.5%{-moz-transform:scale(0.6) rotate(90deg)}37.51%{-moz-transform:scale(0.6) rotate(135deg)}50%{-moz-transform:scale(0.6) rotate(135deg)}50.01%{-moz-transform:scale(0.6) rotate(180deg)}62.5%{-moz-transform:scale(0.6) rotate(180deg)}62.51%{-moz-transform:scale(0.6) rotate(225deg)}75%{-moz-transform:scale(0.6) rotate(225deg)}75.01%{-moz-transform:scale(0.6) rotate(270deg)}87.5%{-moz-transform:scale(0.6) rotate(270deg)}87.51%{-moz-transform:scale(0.6) rotate(315deg)}100%{-moz-transform:scale(0.6) rotate(315deg)}}div.vjs-loading-spinner .ball1{opacity:.12;position:absolute;left:20px;top:0;width:13px;height:13px;background:#fff;border-radius:13px;-webkit-border-radius:13px;-moz-border-radius:13px;border:1px solid #ccc}div.vjs-loading-spinner .ball2{opacity:.25;position:absolute;left:34px;top:6px;width:13px;height:13px;background:#fff;border-radius:13px;-webkit-border-radius:13px;-moz-border-radius:13px;border:1px solid #ccc}div.vjs-loading-spinner .ball3{opacity:.37;position:absolute;left:40px;top:20px;width:13px;height:13px;background:#fff;border-radius:13px;-webkit-border-radius:13px;-moz-border-radius:13px;border:1px solid #ccc}div.vjs-loading-spinner .ball4{opacity:.50;position:absolute;left:34px;top:34px;width:13px;height:13px;background:#fff;border-radius:10px;-webkit-border-radius:10px;-moz-border-radius:15px;border:1px solid #ccc}div.vjs-loading-spinner .ball5{opacity:.62;position:absolute;left:20px;top:40px;width:13px;height:13px;background:#fff;border-radius:13px;-webkit-border-radius:13px;-moz-border-radius:13px;border:1px solid #ccc}div.vjs-loading-spinner .ball6{opacity:.75;position:absolute;left:6px;top:34px;width:13px;height:13px;background:#fff;border-radius:13px;-webkit-border-radius:13px;-moz-border-radius:13px;border:1px solid #ccc}div.vjs-loading-spinner .ball7{opacity:.87;position:absolute;left:0;top:20px;width:13px;height:13px;background:#fff;border-radius:13px;-webkit-border-radius:13px;-moz-border-radius:13px;border:1px solid #ccc}div.vjs-loading-spinner .ball8{opacity:1.00;position:absolute;left:6px;top:6px;width:13px;height:13px;background:#fff;border-radius:13px;-webkit-border-radius:13px;-moz-border-radius:13px;border:1px solid #ccc}.vjs-default-skin .vjs-menu-button{float:right;margin:.2em .5em 0 0;padding:0;width:3em;height:2em;cursor:pointer!important;border:1px solid #111;-moz-border-radius:.3em;-webkit-border-radius:.3em;border-radius:.3em;background:#4d4d4d;background:-moz-linear-gradient(top,#4d4d4d 0,#3f3f3f 50%,#333 50%,#252525 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#4d4d4d),color-stop(50%,#3f3f3f),color-stop(50%,#333),color-stop(100%,#252525));background:-webkit-linear-gradient(top,#4d4d4d 0,#3f3f3f 50%,#333 50%,#252525 100%);background:-o-linear-gradient(top,#4d4d4d 0,#3f3f3f 50%,#333 50%,#252525 100%);background:-ms-linear-gradient(top,#4d4d4d 0,#3f3f3f 50%,#333 50%,#252525 100%);background:linear-gradient(top,#4d4d4d 0,#3f3f3f 50%,#333 50%,#252525 100%)}.vjs-default-skin .vjs-menu-button div{background:url('video-js.png') 0 -75px no-repeat;width:16px;height:16px;margin:.2em auto 0;padding:0}.vjs-default-skin .vjs-menu-button ul{display:none;opacity:.8;padding:0;margin:0;position:absolute;width:10em;bottom:2em;max-height:15em;left:-3.5em;background-color:#111;border:2px solid #333;-moz-border-radius:.7em;-webkit-border-radius:1em;border-radius:.5em;-webkit-box-shadow:0 2px 4px 0 #000;-moz-box-shadow:0 2px 4px 0 #000;box-shadow:0 2px 4px 0 #000;overflow:auto}.vjs-default-skin .vjs-menu-button:focus ul,.vjs-default-skin .vjs-menu-button:hover ul{display:block;list-style:none}.vjs-default-skin .vjs-menu-button ul li{list-style:none;margin:0;padding:.3em 0 .3em 20px;line-height:1.4em;font-size:1.2em;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;text-align:left}.vjs-default-skin .vjs-menu-button ul li.vjs-selected{text-decoration:underline;background:url('video-js.png') -125px -50px no-repeat}.vjs-default-skin .vjs-menu-button ul li:focus,.vjs-default-skin .vjs-menu-button ul li:hover,.vjs-default-skin .vjs-menu-button ul li.vjs-selected:focus,.vjs-default-skin .vjs-menu-button ul li.vjs-selected:hover{background-color:#ccc;color:#111;outline:0}.vjs-default-skin .vjs-menu-button ul li.vjs-menu-title{text-align:center;text-transform:uppercase;font-size:1em;line-height:2em;padding:0;margin:0 0 .3em 0;color:#fff;font-weight:bold;cursor:default;background:#4d4d4d;background:-moz-linear-gradient(top,#4d4d4d 0,#3f3f3f 50%,#333 50%,#252525 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#4d4d4d),color-stop(50%,#3f3f3f),color-stop(50%,#333),color-stop(100%,#252525));background:-webkit-linear-gradient(top,#4d4d4d 0,#3f3f3f 50%,#333 50%,#252525 100%);background:-o-linear-gradient(top,#4d4d4d 0,#3f3f3f 50%,#333 50%,#252525 100%);background:-ms-linear-gradient(top,#4d4d4d 0,#3f3f3f 50%,#333 50%,#252525 100%);background:linear-gradient(top,#4d4d4d 0,#3f3f3f 50%,#333 50%,#252525 100%)}.vjs-default-skin .vjs-captions-button div{background-position:-25px -75px}.vjs-default-skin .vjs-chapters-button div{background-position:-100px -75px}.vjs-default-skin .vjs-chapters-button ul{width:20em;left:-8.5em}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ VideoJS Default Styles (http://videojs.com)
3
+ Version GENERATED_AT_BUILD
4
+ */
5
+
6
+ /*
7
+ REQUIRED STYLES (be careful overriding)
8
+ ================================================================================ */
9
+ /* When loading the player, the video tag is replaced with a DIV,
10
+ that will hold the video tag or object tag for other playback methods.
11
+ The div contains the video playback element (Flash or HTML5) and controls, and sets the width and height of the video.
12
+
13
+ ** If you want to add some kind of border/padding (e.g. a frame), or special positioning, use another containing element.
14
+ Otherwise you risk messing up control positioning and full window mode. **
15
+ */
16
+ .video-js {
17
+ background-color: #000;
18
+ position: relative;
19
+ padding: 0;
20
+ /* Start with 10px for base font size so other dimensions can be em based and easily calculable. */
21
+ font-size: 10px;
22
+ /* Allow poster to be vertially aligned. */
23
+ vertical-align: middle;
24
+ /* display: table-cell; */ /*This works in Safari but not Firefox.*/
25
+ }
26
+
27
+ /* Playback technology elements expand to the width/height of the containing div.
28
+ <video> or <object> */
29
+ .video-js .vjs-tech {
30
+ position: absolute;
31
+ top: 0;
32
+ left: 0;
33
+ width: 100%;
34
+ height: 100%;
35
+ }
36
+
37
+ /* Fix for Firefox 9 fullscreen (only if it is enabled). Not needed when checking fullScreenEnabled. */
38
+ .video-js:-moz-full-screen { position: absolute; }
39
+
40
+ /* Fullscreen Styles */
41
+ body.vjs-full-window {
42
+ padding: 0;
43
+ margin: 0;
44
+ height: 100%;
45
+ overflow-y: auto; /* Fix for IE6 full-window. http://www.cssplay.co.uk/layouts/fixed.html */
46
+ }
47
+ .video-js.vjs-fullscreen {
48
+ position: fixed;
49
+ overflow: hidden;
50
+ z-index: 1000;
51
+ left: 0;
52
+ top: 0;
53
+ bottom: 0;
54
+ right: 0;
55
+ width: 100% !important;
56
+ height: 100% !important;
57
+ _position: absolute; /* IE6 Full-window (underscore hack) */
58
+ }
59
+ .video-js:-webkit-full-screen {
60
+ width: 100% !important; height: 100% !important;
61
+ }
62
+
63
+ /* Poster Styles */
64
+ .vjs-poster {
65
+ background-repeat: no-repeat;
66
+ background-position: 50% 50%;
67
+ background-size: contain;
68
+ cursor: pointer;
69
+ height: 100%;
70
+ margin: 0;
71
+ padding: 0;
72
+ position: relative;
73
+ width: 100%;
74
+ }
75
+ .vjs-poster img {
76
+ display: block;
77
+ margin: 0 auto;
78
+ max-height: 100%;
79
+ padding: 0;
80
+ width: 100%;
81
+ }
82
+
83
+ /* Text Track Styles */
84
+ /* Overall track holder for both captions and subtitles */
85
+ .video-js .vjs-text-track-display {
86
+ text-align: center;
87
+ position: absolute;
88
+ bottom: 4em;
89
+ left: 1em; /* Leave padding on left and right */
90
+ right: 1em;
91
+ font-family: Arial, sans-serif;
92
+ }
93
+ /* Individual tracks */
94
+ .video-js .vjs-text-track {
95
+ display: none;
96
+ font-size: 1.4em;
97
+ text-align: center;
98
+ margin-bottom: 0.1em;
99
+ /* Transparent black background, or fallback to all black (oldIE) */
100
+ background: rgb(0, 0, 0); background: rgba(0, 0, 0, 0.50);
101
+ }
102
+ .video-js .vjs-subtitles { color: #fff; } /* Subtitles are white */
103
+ .video-js .vjs-captions { color: #fc6; } /* Captions are yellow */
104
+ .vjs-tt-cue { display: block; }
105
+
106
+ /* Fading sytles, used to fade control bar. */
107
+ .vjs-fade-in {
108
+ display: block !important;
109
+ visibility: visible; /* Needed to make sure things hide in older browsers too. */
110
+ opacity: 1;
111
+
112
+ -webkit-transition: visibility 0.1s, opacity 0.1s;
113
+ -moz-transition: visibility 0.1s, opacity 0.1s;
114
+ -ms-transition: visibility 0.1s, opacity 0.1s;
115
+ -o-transition: visibility 0.1s, opacity 0.1s;
116
+ transition: visibility 0.1s, opacity 0.1s;
117
+ }
118
+ .vjs-fade-out {
119
+ display: block !important;
120
+ visibility: hidden;
121
+ opacity: 0;
122
+
123
+ -webkit-transition: visibility 1.5s, opacity 1.5s;
124
+ -moz-transition: visibility 1.5s, opacity 1.5s;
125
+ -ms-transition: visibility 1.5s, opacity 1.5s;
126
+ -o-transition: visibility 1.5s, opacity 1.5s;
127
+ transition: visibility 1.5s, opacity 1.5s;
128
+
129
+ /* Wait a moment before fading out the control bar */
130
+ -webkit-transition-delay: 2s;
131
+ -moz-transition-delay: 2s;
132
+ -ms-transition-delay: 2s;
133
+ -o-transition-delay: 2s;
134
+ transition-delay: 2s;
135
+ }
136
+ /* Hide disabled or unsupported controls */
137
+ .vjs-default-skin .vjs-hidden { display: none; }
138
+
139
+ .vjs-lock-showing {
140
+ display: block !important;
141
+ opacity: 1;
142
+ visibility: visible;
143
+ }
144
+
145
+ /* DEFAULT SKIN (override in another file to create new skins)
146
+ ================================================================================
147
+ Instead of editing this file, I recommend creating your own skin CSS file to be included after this file,
148
+ so you can upgrade to newer versions easier. You can remove all these styles by removing the 'vjs-default-skin' class from the tag. */
149
+
150
+ /* Base UI Component Classes
151
+ -------------------------------------------------------------------------------- */
152
+ @font-face{
153
+ font-family: 'VideoJS';
154
+ src: url('font/vjs.eot');
155
+ src: url('font/vjs.eot') format('embedded-opentype'),
156
+ url('font/vjs.woff') format('woff'),
157
+ url('font/vjs.ttf') format('truetype');
158
+ font-weight: normal;
159
+ font-style: normal;
160
+ }
161
+
162
+ .vjs-default-skin {
163
+ color: #ccc;
164
+ }
165
+
166
+ /* Slider - used for Volume bar and Seek bar */
167
+ .vjs-default-skin .vjs-slider {
168
+ outline: 0; /* Replace browser focus hightlight with handle highlight */
169
+ position: relative;
170
+ cursor: pointer;
171
+ padding: 0;
172
+
173
+ background: rgb(50, 50, 50); /* IE8- Fallback */
174
+ background: rgba(100, 100, 100, 0.5);
175
+ }
176
+
177
+ .vjs-default-skin .vjs-slider:focus {
178
+ background: rgb(70, 70, 70); /* IE8- Fallback */
179
+ background: rgba(100, 100, 100, 0.70);
180
+
181
+ -webkit-box-shadow: 0 0 2em rgba(255, 255, 255, 1);
182
+ -moz-box-shadow: 0 0 2em rgba(255, 255, 255, 1);
183
+ box-shadow: 0 0 2em rgba(255, 255, 255, 1);
184
+ }
185
+
186
+ .vjs-default-skin .vjs-slider-handle {
187
+ position: absolute;
188
+ /* Needed for IE6 */
189
+ left: 0;
190
+ top: 0;
191
+ }
192
+
193
+ .vjs-default-skin .vjs-slider-handle:before {
194
+ /*content: "\f111";*/ /* Circle icon = f111 */
195
+ content: "\e009"; /* Square icon */
196
+ font-family: VideoJS;
197
+ font-size: 1em;
198
+ line-height: 1;
199
+ text-align: center;
200
+ text-shadow: 0em 0em 1em #fff;
201
+
202
+ position: absolute;
203
+ top: 0;
204
+ left: 0;
205
+
206
+ /* Rotate the square icon to make a diamond */
207
+ -webkit-transform: rotate(-45deg);
208
+ -moz-transform: rotate(-45deg);
209
+ -ms-transform: rotate(-45deg);
210
+ -o-transform: rotate(-45deg);
211
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
212
+ }
213
+
214
+ /* Control Bar
215
+ -------------------------------------------------------------------------------- */
216
+ /* The default control bar. Created by controls.js */
217
+ .vjs-default-skin .vjs-control-bar {
218
+ display: none; /* Start hidden */
219
+ position: absolute;
220
+ /* Distance from the bottom of the box/video. Keep 0. Use height to add more bottom margin. */
221
+ bottom: 0;
222
+ /* 100% width of player div */
223
+ left: 0;
224
+ right: 0;
225
+ /* Controls are absolutely position, so no padding necessary */
226
+ padding: 0;
227
+ margin: 0;
228
+ /* Height includes any margin you want above or below control items */
229
+ height: 3.0em;
230
+ background-color: rgb(0, 0, 0);
231
+ /* Slight blue so it can be seen more easily on black. */
232
+ background-color: rgba(7, 40, 50, 0.7);
233
+ /* Default font settings */
234
+ font-style: normal;
235
+ font-weight: normal;
236
+ font-family: Arial, sans-serif;
237
+ }
238
+
239
+ /* General styles for individual controls. */
240
+ .vjs-default-skin .vjs-control {
241
+ outline: none;
242
+ position: relative;
243
+ float: left;
244
+ text-align: center;
245
+ margin: 0;
246
+ padding: 0;
247
+ height: 3.0em;
248
+ width: 4em;
249
+ }
250
+
251
+ /* FontAwsome button icons */
252
+ .vjs-default-skin .vjs-control:before {
253
+ font-family: VideoJS;
254
+ font-size: 1.5em;
255
+ line-height: 2;
256
+ position: absolute;
257
+ top: 0;
258
+ left: 0;
259
+ width: 100%;
260
+ height: 100%;
261
+ text-align: center;
262
+ text-shadow: 1px 1px 1px rgba(0,0,0,0.5);
263
+ }
264
+
265
+ /* Replacement for focus outline */
266
+ .vjs-default-skin .vjs-control:focus:before,
267
+ .vjs-default-skin .vjs-control:hover:before {
268
+ text-shadow: 0em 0em 1em rgba(255, 255, 255, 1);
269
+ }
270
+
271
+ .vjs-default-skin .vjs-control:focus { /* outline: 0; */ /* keyboard-only users cannot see the focus on several of the UI elements when this is set to 0 */ }
272
+
273
+ /* Hide control text visually, but have it available for screenreaders: h5bp.com/v */
274
+ .vjs-default-skin .vjs-control-text { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }
275
+
276
+ /* Play/Pause
277
+ -------------------------------------------------------------------------------- */
278
+ .vjs-default-skin .vjs-play-control {
279
+ width: 5em;
280
+ cursor: pointer;
281
+ }
282
+ .vjs-default-skin .vjs-play-control:before {
283
+ content: "\e001"; /* Play Icon */
284
+ }
285
+ .vjs-default-skin.vjs-playing .vjs-play-control:before {
286
+ content: "\e002"; /* Pause Icon */
287
+ }
288
+
289
+ /* Rewind
290
+ -------------------------------------------------------------------------------- */
291
+ /*.vjs-default-skin .vjs-rewind-control { width: 5em; cursor: pointer !important; }
292
+ .vjs-default-skin .vjs-rewind-control div { width: 19px; height: 16px; background: url('video-js.png'); margin: 0.5em auto 0; }
293
+ */
294
+
295
+ /* Volume/Mute
296
+ -------------------------------------------------------------------------------- */
297
+ .vjs-default-skin .vjs-mute-control,
298
+ .vjs-default-skin .vjs-volume-menu-button {
299
+ cursor: pointer;
300
+ float: right;
301
+ }
302
+ .vjs-default-skin .vjs-mute-control:before,
303
+ .vjs-default-skin .vjs-volume-menu-button:before {
304
+ content: "\e006"; /* Full volume */
305
+ }
306
+ .vjs-default-skin .vjs-mute-control.vjs-vol-0:before,
307
+ .vjs-default-skin .vjs-volume-menu-button.vjs-vol-0:before {
308
+ content: "\e003"; /* No volume */
309
+ }
310
+ .vjs-default-skin .vjs-mute-control.vjs-vol-1:before,
311
+ .vjs-default-skin .vjs-volume-menu-button.vjs-vol-1:before {
312
+ content: "\e004"; /* Half volume */
313
+ }
314
+ .vjs-default-skin .vjs-mute-control.vjs-vol-2:before,
315
+ .vjs-default-skin .vjs-volume-menu-button.vjs-vol-2:before {
316
+ content: "\e005"; /* Full volume */
317
+ }
318
+
319
+ .vjs-default-skin .vjs-volume-control {
320
+ width: 5em;
321
+ float: right;
322
+ }
323
+ .vjs-default-skin .vjs-volume-bar {
324
+ width: 5em;
325
+ height: 0.6em;
326
+ margin: 1.1em auto 0;
327
+ }
328
+
329
+ .vjs-default-skin .vjs-volume-menu-button .vjs-menu-content {
330
+ height: 2.9em;
331
+ }
332
+
333
+ .vjs-default-skin .vjs-volume-level {
334
+ position: absolute;
335
+ top: 0;
336
+ left: 0;
337
+ height: 0.5em;
338
+
339
+ background: #66A8CC
340
+ url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAP0lEQVQIHWWMAQoAIAgDR/QJ/Ub//04+w7ZICBwcOg5FZi5iBB82AGzixEglJrd4TVK5XUJpskSTEvpdFzX9AB2pGziSQcvAAAAAAElFTkSuQmCC)
341
+ -50% 0 repeat;
342
+ }
343
+ .vjs-default-skin .vjs-volume-bar .vjs-volume-handle {
344
+ width: 0.5em;
345
+ height: 0.5em;
346
+ }
347
+
348
+ .vjs-default-skin .vjs-volume-handle:before {
349
+ font-size: 0.9em;
350
+ top: -0.2em;
351
+ left: -0.2em;
352
+
353
+ width: 1em;
354
+ height: 1em;
355
+ }
356
+
357
+ .vjs-default-skin .vjs-volume-menu-button .vjs-menu .vjs-menu-content {
358
+ width: 6em;
359
+ left: -4em;
360
+ }
361
+
362
+ /*.vjs-default-skin .vjs-menu-button .vjs-volume-control {
363
+ height: 1.5em;
364
+ }*/
365
+
366
+ /* Progress
367
+ -------------------------------------------------------------------------------- */
368
+ .vjs-default-skin .vjs-progress-control {
369
+ position: absolute;
370
+ left: 0;
371
+ right: 0;
372
+ width: auto;
373
+ font-size: 0.3em;
374
+ height: 1em;
375
+ /* Set above the rest of the controls. */
376
+ top: -1em;
377
+
378
+ /* Shrink the bar slower than it grows. */
379
+ -webkit-transition: top 0.4s, height 0.4s, font-size 0.4s, -webkit-transform 0.4s;
380
+ -moz-transition: top 0.4s, height 0.4s, font-size 0.4s, -moz-transform 0.4s;
381
+ -o-transition: top 0.4s, height 0.4s, font-size 0.4s, -o-transform 0.4s;
382
+ transition: top 0.4s, height 0.4s, font-size 0.4s, transform 0.4s;
383
+
384
+ }
385
+
386
+ /* On hover, make the progress bar grow to something that's more clickable.
387
+ This simply changes the overall font for the progress bar, and this
388
+ updates both the em-based widths and heights, as wells as the icon font */
389
+ .vjs-default-skin:hover .vjs-progress-control {
390
+ font-size: .9em;
391
+
392
+ /* Even though we're not changing the top/height, we need to include them in
393
+ the transition so they're handled correctly. */
394
+ -webkit-transition: top 0.2s, height 0.2s, font-size 0.2s, -webkit-transform 0.2s;
395
+ -moz-transition: top 0.2s, height 0.2s, font-size 0.2s, -moz-transform 0.2s;
396
+ -o-transition: top 0.2s, height 0.2s, font-size 0.2s, -o-transform 0.2s;
397
+ transition: top 0.2s, height 0.2s, font-size 0.2s, transform 0.2s;
398
+ }
399
+
400
+ /* Box containing play and load progresses. Also acts as seek scrubber. */
401
+ .vjs-default-skin .vjs-progress-holder {
402
+ /* Placement within the progress control item */
403
+ height: 100%;
404
+ }
405
+
406
+ /* Progress Bars */
407
+ .vjs-default-skin .vjs-progress-holder .vjs-play-progress,
408
+ .vjs-default-skin .vjs-progress-holder .vjs-load-progress {
409
+ position: absolute;
410
+ display: block;
411
+ height: 100%;
412
+ margin: 0;
413
+ padding: 0;
414
+ /* Needed for IE6 */
415
+ left: 0;
416
+ top: 0;
417
+ }
418
+
419
+ .vjs-default-skin .vjs-play-progress {
420
+ /*
421
+ Using a data URI to create the white diagonal lines with a transparent
422
+ background. Surprising works in IE8.
423
+ Created using http://www.patternify.com
424
+ Changing the first color value will change the bar color.
425
+ Also using a paralax effect to make the lines move backwards.
426
+ The -50% left position makes that happen.
427
+ */
428
+ background: #66A8CC
429
+ url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAP0lEQVQIHWWMAQoAIAgDR/QJ/Ub//04+w7ZICBwcOg5FZi5iBB82AGzixEglJrd4TVK5XUJpskSTEvpdFzX9AB2pGziSQcvAAAAAAElFTkSuQmCC)
430
+ -50% 0 repeat;
431
+ }
432
+ .vjs-default-skin .vjs-load-progress {
433
+ background: rgb(100, 100, 100); /* IE8- Fallback */
434
+ background: rgba(255, 255, 255, 0.4);
435
+ }
436
+
437
+ .vjs-default-skin .vjs-seek-handle {
438
+ width: 1.5em;
439
+ height: 100%;
440
+ }
441
+
442
+ .vjs-default-skin .vjs-seek-handle:before {
443
+ padding-top: 0.1em; /* Minor adjustment */
444
+ }
445
+
446
+ /* Time Display
447
+ -------------------------------------------------------------------------------- */
448
+ .vjs-default-skin .vjs-time-controls {
449
+ font-size: 1em;
450
+ /* Align vertically by making the line height the same as the control bar */
451
+ line-height: 3em;
452
+ }
453
+ .vjs-default-skin .vjs-current-time { float: left; }
454
+ .vjs-default-skin .vjs-duration { float: left; }
455
+ /* Remaining time is in the HTML, but not included in default design */
456
+ .vjs-default-skin .vjs-remaining-time { display: none; float: left; }
457
+ .vjs-time-divider { float: left; line-height: 3em; }
458
+
459
+ /* Fullscreen
460
+ -------------------------------------------------------------------------------- */
461
+ .vjs-default-skin .vjs-fullscreen-control {
462
+ width: 3.8em;
463
+ cursor: pointer;
464
+ float: right;
465
+ }
466
+ .vjs-default-skin .vjs-fullscreen-control:before {
467
+ content: "\e000"; /* Enter full screen */
468
+ }
469
+ .vjs-default-skin.vjs-fullscreen .vjs-fullscreen-control:before {
470
+ content: "\e00b"; /* Exit full screen */
471
+ }
472
+
473
+ /* Big Play Button (at start)
474
+ ---------------------------------------------------------*/
475
+ .vjs-default-skin .vjs-big-play-button {
476
+ display: block;
477
+ z-index: 2;
478
+ position: absolute;
479
+ top: 2em;
480
+ left: 2em;
481
+ width: 12.0em;
482
+ height: 8.0em;
483
+ margin: 0;
484
+ text-align: center;
485
+ vertical-align: middle;
486
+ cursor: pointer;
487
+ opacity: 1;
488
+
489
+ /* Need a slightly gray bg so it can be seen on black backgrounds */
490
+ background-color: rgb(40, 40, 40);
491
+ background-color: rgba(7, 40, 50, 0.7);
492
+
493
+ border: 0.3em solid rgb(50, 50, 50);
494
+ border-color: rgba(255, 255, 255, 0.25);
495
+
496
+ -webkit-border-radius: 25px;
497
+ -moz-border-radius: 25px;
498
+ border-radius: 25px;
499
+
500
+ -webkit-box-shadow: 0px 0px 1em rgba(255, 255, 255, 0.25);
501
+ -moz-box-shadow: 0px 0px 1em rgba(255, 255, 255, 0.25);
502
+ box-shadow: 0px 0px 1em rgba(255, 255, 255, 0.25);
503
+
504
+ -webkit-transition: border 0.4s, -webkit-box-shadow 0.4s, -webkit-transform 0.4s;
505
+ -moz-transition: border 0.4s, -moz-box-shadow 0.4s, -moz-transform 0.4s;
506
+ -o-transition: border 0.4s, -o-box-shadow 0.4s, -o-transform 0.4s;
507
+ transition: border 0.4s, box-shadow 0.4s, transform 0.4s;
508
+ }
509
+
510
+ .vjs-default-skin:hover .vjs-big-play-button,
511
+ .vjs-default-skin .vjs-big-play-button:focus {
512
+ outline: 0;
513
+ border-color: rgb(255, 255, 255);
514
+ border-color: rgba(255, 255, 255, 1);
515
+ /* IE8 needs a non-glow hover state */
516
+ background-color: rgb(80, 80, 80);
517
+ background-color: rgba(50, 50, 50, 0.75);
518
+
519
+ -webkit-box-shadow: 0 0 3em #fff;
520
+ -moz-box-shadow: 0 0 3em #fff;
521
+ box-shadow: 0 0 3em #fff;
522
+
523
+ -webkit-transition: border 0s, -webkit-box-shadow 0s, -webkit-transform 0s;
524
+ -moz-transition: border 0s, -moz-box-shadow 0s, -moz-transform 0s;
525
+ -o-transition: border 0s, -o-box-shadow 0s, -o-transform 0s;
526
+ transition: border 0s, box-shadow 0s, transform 0s;
527
+ }
528
+
529
+ .vjs-default-skin .vjs-big-play-button:before {
530
+ content: "\e001"; /* Play icon */
531
+ font-family: VideoJS;
532
+ font-size: 3em;
533
+ line-height: 2.66;
534
+ text-shadow: 0.05em 0.05em 0.1em #000;
535
+ text-align: center; /* Needed for IE8 */
536
+
537
+ position: absolute;
538
+ left: 0;
539
+ width: 100%;
540
+ height: 100%;
541
+ }
542
+
543
+ /* Loading Spinner
544
+ ---------------------------------------------------------*/
545
+ .vjs-loading-spinner {
546
+ display: none;
547
+ position: absolute;
548
+ top: 50%;
549
+ left: 50%;
550
+
551
+ font-size: 5em;
552
+ line-height: 1;
553
+
554
+ width: 1em;
555
+ height: 1em;
556
+
557
+ margin-left: -0.5em;
558
+ margin-top: -0.5em;
559
+
560
+ opacity: 0.75;
561
+
562
+ -webkit-animation: spin 1.5s infinite linear;
563
+ -moz-animation: spin 1.5s infinite linear;
564
+ -o-animation: spin 1.5s infinite linear;
565
+ animation: spin 1.5s infinite linear;
566
+ }
567
+
568
+ .vjs-default-skin .vjs-loading-spinner:before {
569
+ content: "\e00a"; /* Loading spinner icon */
570
+ font-family: VideoJS;
571
+
572
+ position: absolute;
573
+ width: 1em;
574
+ height: 1em;
575
+ text-align: center;
576
+ text-shadow: 0em 0em 0.1em #000;
577
+ }
578
+
579
+ /* Add a gradient to the spinner by overlaying another copy.
580
+ Text gradient plus a text shadow doesn't work
581
+ and `background-clip: text` only works in Webkit. */
582
+ .vjs-default-skin .vjs-loading-spinner:after {
583
+ content: "\e00a"; /* Loading spinner icon */
584
+ font-family: VideoJS;
585
+
586
+ position: absolute;
587
+ width: 1em;
588
+ height: 1em;
589
+ text-align: center;
590
+
591
+ -webkit-background-clip: text;
592
+ -webkit-text-fill-color: transparent;
593
+ }
594
+
595
+ @-moz-keyframes spin {
596
+ 0% { -moz-transform: rotate(0deg); }
597
+ 100% { -moz-transform: rotate(359deg); }
598
+ }
599
+ @-webkit-keyframes spin {
600
+ 0% { -webkit-transform: rotate(0deg); }
601
+ 100% { -webkit-transform: rotate(359deg); }
602
+ }
603
+ @-o-keyframes spin {
604
+ 0% { -o-transform: rotate(0deg); }
605
+ 100% { -o-transform: rotate(359deg); }
606
+ }
607
+ @-ms-keyframes spin {
608
+ 0% { -ms-transform: rotate(0deg); }
609
+ 100% { -ms-transform: rotate(359deg); }
610
+ }
611
+ @keyframes spin {
612
+ 0% { transform: rotate(0deg); }
613
+ 100% { transform: rotate(359deg); }
614
+ }
615
+
616
+ /* Menu Buttons (Captions/Subtitles/etc.)
617
+ -------------------------------------------------------------------------------- */
618
+ .vjs-default-skin .vjs-menu-button {
619
+ float: right;
620
+ cursor: pointer;
621
+ }
622
+
623
+ .vjs-default-skin .vjs-menu {
624
+ display: none;
625
+ position: absolute;
626
+ bottom: 0;
627
+ left: 0em; /* (Width of vjs-menu - width of button) / 2 */
628
+ width: 0em;
629
+ height: 0em;
630
+ margin-bottom: 3em;
631
+
632
+ border-left: 2em solid transparent;
633
+ border-right: 2em solid transparent;
634
+
635
+ border-top: 1.55em solid rgb(0, 0, 0); /* Same top as ul bottom */
636
+ border-top-color: rgba(7, 40, 50, 0.5); /* Same as ul background */
637
+ }
638
+
639
+ /* Button Pop-up Menu */
640
+ .vjs-default-skin .vjs-menu-button .vjs-menu .vjs-menu-content {
641
+ display: block;
642
+ padding: 0; margin: 0;
643
+ position: absolute;
644
+ width: 10em;
645
+ bottom: 1.5em; /* Same bottom as vjs-menu border-top */
646
+ max-height: 15em;
647
+ overflow: auto;
648
+
649
+ left: -5em; /* Width of menu - width of button / 2 */
650
+
651
+ background-color: rgb(0, 0, 0);
652
+ background-color: rgba(7, 40, 50, 0.7);
653
+
654
+ -webkit-box-shadow: -20px -20px 0px rgba(255, 255, 255, 0.5);
655
+ -moz-box-shadow: 0 0 1em rgba(255, 255, 255, 0.5);
656
+ box-shadow: -0.2em -0.2em 0.3em rgba(255, 255, 255, 0.2);
657
+ }
658
+
659
+ /*.vjs-default-skin .vjs-menu-button:focus ul,*/ /* This is not needed because keyboard accessibility for the caption button is not handled with the focus any more. */
660
+ .vjs-default-skin .vjs-menu-button:hover .vjs-menu {
661
+ display: block;
662
+ }
663
+ .vjs-default-skin .vjs-menu-button ul li {
664
+ list-style: none;
665
+ margin: 0;
666
+ padding: 0.3em 0 0.3em 0;
667
+ line-height: 1.4em;
668
+ font-size: 1.2em;
669
+ font-weight: normal;
670
+ text-align: center;
671
+ text-transform: lowercase;
672
+ }
673
+ .vjs-default-skin .vjs-menu-button ul li.vjs-selected {
674
+ background-color: #000;
675
+ }
676
+ .vjs-default-skin .vjs-menu-button ul li:focus,
677
+ .vjs-default-skin .vjs-menu-button ul li:hover,
678
+ .vjs-default-skin .vjs-menu-button ul li.vjs-selected:focus,
679
+ .vjs-default-skin .vjs-menu-button ul li.vjs-selected:hover {
680
+ background-color: rgb(255, 255, 255);
681
+ background-color: rgba(255, 255, 255, 0.75);
682
+ color: #111;
683
+ outline: 0;
684
+
685
+ -webkit-box-shadow: 0 0 1em rgba(255, 255, 255, 1);
686
+ -moz-box-shadow: 0 0 1em rgba(255, 255, 255, 1);
687
+ box-shadow: 0 0 1em rgba(255, 255, 255, 1);
688
+ }
689
+ .vjs-default-skin .vjs-menu-button ul li.vjs-menu-title {
690
+ text-align: center;
691
+ text-transform: uppercase;
692
+ font-size: 1em;
693
+ line-height: 2em;
694
+ padding: 0;
695
+ margin: 0 0 0.3em 0;
696
+ font-weight: bold;
697
+ cursor: default;
698
+ }
699
+
700
+ /* Subtitles Button */
701
+ .vjs-default-skin .vjs-subtitles-button:before { content: "\e00c"; }
702
+
703
+ /* There's unfortunately no CC button in FontAwesome, so we need
704
+ to manually create one. Please +1 the fontawesome request.
705
+ https://github.com/FortAwesome/Font-Awesome/issues/968 */
706
+ .vjs-default-skin .vjs-captions-button {
707
+ font-size: 1em; /* Font icons are 1.5em */
708
+ }
709
+ .vjs-default-skin .vjs-captions-button:before {
710
+ content: "\e008";
711
+ font-family: VideoJS;
712
+ font-size: 1.5em;
713
+ line-height: 2;
714
+ position: absolute;
715
+ top: 0;
716
+ left: 0;
717
+ width: 100%;
718
+ height: 100%;
719
+ text-align: center;
720
+ text-shadow: none;
721
+ }
722
+
723
+
724
+ /* Replacement for focus outline */
725
+ .vjs-default-skin .vjs-captions-button:focus .vjs-control-content:before,
726
+ .vjs-default-skin .vjs-captions-button:hover .vjs-control-content:before {
727
+ -webkit-box-shadow: 0 0 1em rgba(255, 255, 255, 1);
728
+ -moz-box-shadow: 0 0 1em rgba(255, 255, 255, 1);
729
+ box-shadow: 0 0 1em rgba(255, 255, 255, 1);
730
+ }
video-js/video-js.png DELETED
Binary file
video-js/video-js.swf CHANGED
Binary file
video-js/video.js CHANGED
@@ -1,21 +1,121 @@
1
- /*!
2
- Video.js - HTML5 Video Player
3
- Version 3.2.0
4
-
5
- LGPL v3 LICENSE INFO
6
- This file is part of Video.js. Copyright 2011 Zencoder, Inc.
7
-
8
- Video.js is free software: you can redistribute it and/or modify
9
- it under the terms of the GNU Lesser General Public License as published by
10
- the Free Software Foundation, either version 3 of the License, or
11
- (at your option) any later version.
12
-
13
- Video.js is distributed in the hope that it will be useful,
14
- but WITHOUT ANY WARRANTY; without even the implied warranty of
15
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
- GNU Lesser General Public License for more details.
17
-
18
- You should have received a copy of the GNU Lesser General Public License
19
- along with Video.js. If not, see <http://www.gnu.org/licenses/>.
20
- */
21
- (function(window,undefined){var document=window.document;document.createElement("video");document.createElement("audio");var VideoJS=function(id,addOptions,ready){var tag;if(typeof id=="string"){if(id.indexOf("#")===0){id=id.slice(1)}if(_V_.players[id]){return _V_.players[id]}else{tag=_V_.el(id)}}else{tag=id}if(!tag||!tag.nodeName){throw new TypeError("The element or ID supplied is not valid. (VideoJS)")}return tag.player||new _V_.Player(tag,addOptions,ready)},_V_=VideoJS,CDN_VERSION="3.2";VideoJS.players={};VideoJS.options={techOrder:["html5","flash"],html5:{},flash:{swf:"http://vjs.zencdn.net/c/video-js.swf"},width:"auto",height:"auto",defaultVolume:0,components:{posterImage:{},textTrackDisplay:{},loadingSpinner:{},bigPlayButton:{},controlBar:{}}};if(CDN_VERSION!="GENERATED_CDN_VSN"){_V_.options.flash.swf="http://vjs.zencdn.net/"+CDN_VERSION+"/video-js.swf"}_V_.merge=function(obj1,obj2,safe){if(!obj2){obj2={}}for(var attrname in obj2){if(obj2.hasOwnProperty(attrname)&&(!safe||!obj1.hasOwnProperty(attrname))){obj1[attrname]=obj2[attrname]}}return obj1};_V_.extend=function(obj){this.merge(this,obj,true)};_V_.extend({tech:{},controlSets:{},isIE:function(){return !+"\v1"},isFF:function(){return !!_V_.ua.match("Firefox")},isIPad:function(){return navigator.userAgent.match(/iPad/i)!==null},isIPhone:function(){return navigator.userAgent.match(/iPhone/i)!==null},isIOS:function(){return VideoJS.isIPhone()||VideoJS.isIPad()},iOSVersion:function(){var match=navigator.userAgent.match(/OS (\d+)_/i);if(match&&match[1]){return match[1]}},isAndroid:function(){return navigator.userAgent.match(/Android.*AppleWebKit/i)!==null},androidVersion:function(){var match=navigator.userAgent.match(/Android (\d+)\./i);if(match&&match[1]){return match[1]}},testVid:document.createElement("video"),ua:navigator.userAgent,support:{},each:function(arr,fn){if(!arr||arr.length===0){return}for(var i=0,j=arr.length;i<j;i++){fn.call(this,arr[i],i)}},eachProp:function(obj,fn){if(!obj){return}for(var name in obj){if(obj.hasOwnProperty(name)){fn.call(this,name,obj[name])}}},el:function(id){return document.getElementById(id)},createElement:function(tagName,attributes){var el=document.createElement(tagName),attrname;for(attrname in attributes){if(attributes.hasOwnProperty(attrname)){if(attrname.indexOf("-")!==-1){el.setAttribute(attrname,attributes[attrname])}else{el[attrname]=attributes[attrname]}}}return el},insertFirst:function(node,parent){if(parent.firstChild){parent.insertBefore(node,parent.firstChild)}else{parent.appendChild(node)}},addClass:function(element,classToAdd){if((" "+element.className+" ").indexOf(" "+classToAdd+" ")==-1){element.className=element.className===""?classToAdd:element.className+" "+classToAdd}},removeClass:function(element,classToRemove){if(element.className.indexOf(classToRemove)==-1){return}var classNames=element.className.split(" ");classNames.splice(classNames.indexOf(classToRemove),1);element.className=classNames.join(" ")},remove:function(item,array){if(!array){return}var i=array.indexOf(item);if(i!=-1){return array.splice(i,1)}},blockTextSelection:function(){document.body.focus();document.onselectstart=function(){return false}},unblockTextSelection:function(){document.onselectstart=function(){return true}},formatTime:function(seconds,guide){guide=guide||seconds;var s=Math.floor(seconds%60),m=Math.floor(seconds/60%60),h=Math.floor(seconds/3600),gm=Math.floor(guide/60%60),gh=Math.floor(guide/3600);h=(h>0||gh>0)?h+":":"";m=(((h||gm>=10)&&m<10)?"0"+m:m)+":";s=(s<10)?"0"+s:s;return h+m+s},uc:function(string){return string.charAt(0).toUpperCase()+string.slice(1)},getRelativePosition:function(x,relativeElement){return Math.max(0,Math.min(1,(x-_V_.findPosX(relativeElement))/relativeElement.offsetWidth))},getComputedStyleValue:function(element,style){return window.getComputedStyle(element,null).getPropertyValue(style)},trim:function(string){return string.toString().replace(/^\s+/,"").replace(/\s+$/,"")},round:function(num,dec){if(!dec){dec=0}return Math.round(num*Math.pow(10,dec))/Math.pow(10,dec)},isEmpty:function(object){for(var prop in object){return false}return true},createTimeRange:function(start,end){return{length:1,start:function(){return start},end:function(){return end}}},cache:{},guid:1,expando:"vdata"+(new Date).getTime(),getData:function(elem){var id=elem[_V_.expando];if(!id){id=elem[_V_.expando]=_V_.guid++;_V_.cache[id]={}}return _V_.cache[id]},removeData:function(elem){var id=elem[_V_.expando];if(!id){return}delete _V_.cache[id];try{delete elem[_V_.expando]}catch(e){if(elem.removeAttribute){elem.removeAttribute(_V_.expando)}else{elem[_V_.expando]=null}}},proxy:function(context,fn,uid){if(!fn.guid){fn.guid=_V_.guid++}var ret=function(){return fn.apply(context,arguments)};ret.guid=(uid)?uid+"_"+fn.guid:fn.guid;return ret},get:function(url,onSuccess,onError){var local=(url.indexOf("file:")==0||(window.location.href.indexOf("file:")==0&&url.indexOf("http:")==-1));if(typeof XMLHttpRequest=="undefined"){XMLHttpRequest=function(){try{return new ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(f){}try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(g){}throw new Error("This browser does not support XMLHttpRequest.")}}var request=new XMLHttpRequest();try{request.open("GET",url)}catch(e){_V_.log("VideoJS XMLHttpRequest (open)",e);return false}request.onreadystatechange=_V_.proxy(this,function(){if(request.readyState==4){if(request.status==200||local&&request.status==0){onSuccess(request.responseText)}else{if(onError){onError()}}}});try{request.send()}catch(e){_V_.log("VideoJS XMLHttpRequest (send)",e);if(onError){onError(e)}}},setLocalStorage:function(key,value){var localStorage=window.localStorage||false;if(!localStorage){return}try{localStorage[key]=value}catch(e){if(e.code==22||e.code==1014){_V_.log("LocalStorage Full (VideoJS)",e)}else{_V_.log("LocalStorage Error (VideoJS)",e)}}},getAbsoluteURL:function(url){if(!url.match(/^https?:\/\//)){url=_V_.createElement("div",{innerHTML:'<a href="'+url+'">x</a>'}).firstChild.href}return url}});_V_.log=function(){_V_.log.history=_V_.log.history||[];_V_.log.history.push(arguments);if(window.console){arguments.callee=arguments.callee.caller;var newarr=[].slice.call(arguments);(typeof console.log==="object"?_V_.log.apply.call(console.log,console,newarr):console.log.apply(console,newarr))}};(function(b){function c(){}for(var d="assert,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,timeStamp,profile,profileEnd,time,timeEnd,trace,warn".split(","),a;a=d.pop();){b[a]=b[a]||c}})((function(){try{console.log();return window.console}catch(err){return window.console={}}})());if("getBoundingClientRect" in document.documentElement){_V_.findPosX=function(el){var box;try{box=el.getBoundingClientRect()}catch(e){}if(!box){return 0}var docEl=document.documentElement,body=document.body,clientLeft=docEl.clientLeft||body.clientLeft||0,scrollLeft=window.pageXOffset||body.scrollLeft,left=box.left+scrollLeft-clientLeft;return left}}else{_V_.findPosX=function(el){var curleft=el.offsetLeft;while(el=obj.offsetParent){if(el.className.indexOf("video-js")==-1){}else{}curleft+=el.offsetLeft}return curleft}}(function(){var initializing=false,fnTest=/xyz/.test(function(){xyz})?/\b_super\b/:/.*/;_V_.Class=function(){};_V_.Class.extend=function(prop){var _super=this.prototype;initializing=true;var prototype=new this();initializing=false;for(var name in prop){prototype[name]=typeof prop[name]=="function"&&typeof _super[name]=="function"&&fnTest.test(prop[name])?(function(name,fn){return function(){var tmp=this._super;this._super=_super[name];var ret=fn.apply(this,arguments);this._super=tmp;return ret}})(name,prop[name]):prop[name]}function Class(){if(!initializing&&this.init){return this.init.apply(this,arguments)}else{if(!initializing){return arguments.callee.prototype.init()}}}Class.prototype=prototype;Class.constructor=Class;Class.extend=arguments.callee;return Class}})();_V_.Component=_V_.Class.extend({init:function(player,options){this.player=player;options=this.options=_V_.merge(this.options||{},options);if(options.el){this.el=options.el}else{this.el=this.createElement()}this.initComponents()},destroy:function(){},createElement:function(type,attrs){return _V_.createElement(type||"div",attrs)},buildCSSClass:function(){return""},initComponents:function(){var options=this.options;if(options&&options.components){this.eachProp(options.components,function(name,opts){var tempAdd=this.proxy(function(){this[name]=this.addComponent(name,opts)});if(opts.loadEvent){this.one(opts.loadEvent,tempAdd)}else{tempAdd()}})}},addComponent:function(name,options){var component,componentClass;if(typeof name=="string"){options=options||{};componentClass=options.componentClass||_V_.uc(name);component=new _V_[componentClass](this.player||this,options)}else{component=name}this.el.appendChild(component.el);return component},removeComponent:function(component){this.el.removeChild(component.el)},show:function(){this.el.style.display="block"},hide:function(){this.el.style.display="none"},fadeIn:function(){this.removeClass("vjs-fade-out");this.addClass("vjs-fade-in")},fadeOut:function(){this.removeClass("vjs-fade-in");this.addClass("vjs-fade-out")},lockShowing:function(){var style=this.el.style;style.display="block";style.opacity=1;style.visiblity="visible"},unlockShowing:function(){var style=this.el.style;style.display="";style.opacity="";style.visiblity=""},addClass:function(classToAdd){_V_.addClass(this.el,classToAdd)},removeClass:function(classToRemove){_V_.removeClass(this.el,classToRemove)},addEvent:function(type,fn,uid){return _V_.addEvent(this.el,type,_V_.proxy(this,fn))},removeEvent:function(type,fn){return _V_.removeEvent(this.el,type,fn)},triggerEvent:function(type,e){return _V_.triggerEvent(this.el,type,e)},one:function(type,fn){_V_.one(this.el,type,_V_.proxy(this,fn))},ready:function(fn){if(!fn){return this}if(this.isReady){fn.call(this)}else{if(this.readyQueue===undefined){this.readyQueue=[]}this.readyQueue.push(fn)}return this},triggerReady:function(){this.isReady=true;if(this.readyQueue&&this.readyQueue.length>0){this.each(this.readyQueue,function(fn){fn.call(this)});this.readyQueue=[];this.triggerEvent("ready")}},each:function(arr,fn){_V_.each.call(this,arr,fn)},eachProp:function(obj,fn){_V_.eachProp.call(this,obj,fn)},extend:function(obj){_V_.merge(this,obj)},proxy:function(fn,uid){return _V_.proxy(this,fn,uid)}});_V_.Control=_V_.Component.extend({buildCSSClass:function(){return"vjs-control "+this._super()}});_V_.ControlBar=_V_.Component.extend({options:{loadEvent:"play",components:{playToggle:{},fullscreenToggle:{},currentTimeDisplay:{},timeDivider:{},durationDisplay:{},remainingTimeDisplay:{},progressControl:{},volumeControl:{},muteToggle:{}}},init:function(player,options){this._super(player,options);player.addEvent("play",this.proxy(function(){this.fadeIn();this.player.addEvent("mouseover",this.proxy(this.fadeIn));this.player.addEvent("mouseout",this.proxy(this.fadeOut))}))},createElement:function(){return _V_.createElement("div",{className:"vjs-controls"})},fadeIn:function(){this._super();this.player.triggerEvent("controlsvisible")},fadeOut:function(){this._super();this.player.triggerEvent("controlshidden")},lockShowing:function(){this.el.style.opacity="1"}});_V_.Button=_V_.Control.extend({init:function(player,options){this._super(player,options);this.addEvent("click",this.onClick);this.addEvent("focus",this.onFocus);this.addEvent("blur",this.onBlur)},createElement:function(type,attrs){attrs=_V_.merge({className:this.buildCSSClass(),innerHTML:'<div><span class="vjs-control-text">'+(this.buttonText||"Need Text")+"</span></div>",role:"button",tabIndex:0},attrs);return this._super(type,attrs)},onClick:function(){},onFocus:function(){_V_.addEvent(document,"keyup",_V_.proxy(this,this.onKeyPress))},onKeyPress:function(event){if(event.which==32||event.which==13){event.preventDefault();this.onClick()}},onBlur:function(){_V_.removeEvent(document,"keyup",_V_.proxy(this,this.onKeyPress))}});_V_.PlayButton=_V_.Button.extend({buttonText:"Play",buildCSSClass:function(){return"vjs-play-button "+this._super()},onClick:function(){this.player.play()}});_V_.PauseButton=_V_.Button.extend({buttonText:"Pause",buildCSSClass:function(){return"vjs-pause-button "+this._super()},onClick:function(){this.player.pause()}});_V_.PlayToggle=_V_.Button.extend({buttonText:"Play",init:function(player,options){this._super(player,options);player.addEvent("play",_V_.proxy(this,this.onPlay));player.addEvent("pause",_V_.proxy(this,this.onPause))},buildCSSClass:function(){return"vjs-play-control "+this._super()},onClick:function(){if(this.player.paused()){this.player.play()}else{this.player.pause()}},onPlay:function(){_V_.removeClass(this.el,"vjs-paused");_V_.addClass(this.el,"vjs-playing")},onPause:function(){_V_.removeClass(this.el,"vjs-playing");_V_.addClass(this.el,"vjs-paused")}});_V_.FullscreenToggle=_V_.Button.extend({buttonText:"Fullscreen",buildCSSClass:function(){return"vjs-fullscreen-control "+this._super()},onClick:function(){if(!this.player.isFullScreen){this.player.requestFullScreen()}else{this.player.cancelFullScreen()}}});_V_.BigPlayButton=_V_.Button.extend({init:function(player,options){this._super(player,options);player.addEvent("play",_V_.proxy(this,this.hide));player.addEvent("ended",_V_.proxy(this,this.show))},createElement:function(){return this._super("div",{className:"vjs-big-play-button",innerHTML:"<span></span>"})},onClick:function(){if(this.player.currentTime()){this.player.currentTime(0)}this.player.play()}});_V_.LoadingSpinner=_V_.Component.extend({init:function(player,options){this._super(player,options);player.addEvent("canplay",_V_.proxy(this,this.hide));player.addEvent("canplaythrough",_V_.proxy(this,this.hide));player.addEvent("playing",_V_.proxy(this,this.hide));player.addEvent("seeking",_V_.proxy(this,this.show));player.addEvent("error",_V_.proxy(this,this.show));player.addEvent("waiting",_V_.proxy(this,this.show))},createElement:function(){var classNameSpinner,innerHtmlSpinner;if(typeof this.player.el.style.WebkitBorderRadius=="string"||typeof this.player.el.style.MozBorderRadius=="string"||typeof this.player.el.style.KhtmlBorderRadius=="string"||typeof this.player.el.style.borderRadius=="string"){classNameSpinner="vjs-loading-spinner";innerHtmlSpinner="<div class='ball1'></div><div class='ball2'></div><div class='ball3'></div><div class='ball4'></div><div class='ball5'></div><div class='ball6'></div><div class='ball7'></div><div class='ball8'></div>"}else{classNameSpinner="vjs-loading-spinner-fallback";innerHtmlSpinner=""}return this._super("div",{className:classNameSpinner,innerHTML:innerHtmlSpinner})}});_V_.CurrentTimeDisplay=_V_.Component.extend({init:function(player,options){this._super(player,options);player.addEvent("timeupdate",_V_.proxy(this,this.updateContent))},createElement:function(){var el=this._super("div",{className:"vjs-current-time vjs-time-controls vjs-control"});this.content=_V_.createElement("div",{className:"vjs-current-time-display",innerHTML:"0:00"});el.appendChild(_V_.createElement("div").appendChild(this.content));return el},updateContent:function(){var time=(this.player.scrubbing)?this.player.values.currentTime:this.player.currentTime();this.content.innerHTML=_V_.formatTime(time,this.player.duration())}});_V_.DurationDisplay=_V_.Component.extend({init:function(player,options){this._super(player,options);player.addEvent("timeupdate",_V_.proxy(this,this.updateContent))},createElement:function(){var el=this._super("div",{className:"vjs-duration vjs-time-controls vjs-control"});this.content=_V_.createElement("div",{className:"vjs-duration-display",innerHTML:"0:00"});el.appendChild(_V_.createElement("div").appendChild(this.content));return el},updateContent:function(){if(this.player.duration()){this.content.innerHTML=_V_.formatTime(this.player.duration())}}});_V_.TimeDivider=_V_.Component.extend({createElement:function(){return this._super("div",{className:"vjs-time-divider",innerHTML:"<div><span>/</span></div>"})}});_V_.RemainingTimeDisplay=_V_.Component.extend({init:function(player,options){this._super(player,options);player.addEvent("timeupdate",_V_.proxy(this,this.updateContent))},createElement:function(){var el=this._super("div",{className:"vjs-remaining-time vjs-time-controls vjs-control"});this.content=_V_.createElement("div",{className:"vjs-remaining-time-display",innerHTML:"-0:00"});el.appendChild(_V_.createElement("div").appendChild(this.content));return el},updateContent:function(){if(this.player.duration()){this.content.innerHTML="-"+_V_.formatTime(this.player.remainingTime())}}});_V_.Slider=_V_.Component.extend({init:function(player,options){this._super(player,options);player.addEvent(this.playerEvent,_V_.proxy(this,this.update));this.addEvent("mousedown",this.onMouseDown);this.addEvent("focus",this.onFocus);this.addEvent("blur",this.onBlur);this.player.addEvent("controlsvisible",this.proxy(this.update));this.update()},createElement:function(type,attrs){attrs=_V_.merge({role:"slider","aria-valuenow":0,"aria-valuemin":0,"aria-valuemax":100,tabIndex:0},attrs);return this._super(type,attrs)},onMouseDown:function(event){event.preventDefault();_V_.blockTextSelection();_V_.addEvent(document,"mousemove",_V_.proxy(this,this.onMouseMove));_V_.addEvent(document,"mouseup",_V_.proxy(this,this.onMouseUp));this.onMouseMove(event)},onMouseUp:function(event){_V_.unblockTextSelection();_V_.removeEvent(document,"mousemove",this.onMouseMove,false);_V_.removeEvent(document,"mouseup",this.onMouseUp,false);this.update()},update:function(){var barProgress,progress=this.getPercent();handle=this.handle,bar=this.bar;if(isNaN(progress)){progress=0}barProgress=progress;if(handle){var box=this.el,boxWidth=box.offsetWidth,handleWidth=handle.el.offsetWidth,handlePercent=(handleWidth)?handleWidth/boxWidth:0,boxAdjustedPercent=1-handlePercent;adjustedProgress=progress*boxAdjustedPercent,barProgress=adjustedProgress+(handlePercent/2);handle.el.style.left=_V_.round(adjustedProgress*100,2)+"%"}bar.el.style.width=_V_.round(barProgress*100,2)+"%"},calculateDistance:function(event){var box=this.el,boxX=_V_.findPosX(box),boxW=box.offsetWidth,handle=this.handle;if(handle){var handleW=handle.el.offsetWidth;boxX=boxX+(handleW/2);boxW=boxW-handleW}return Math.max(0,Math.min(1,(event.pageX-boxX)/boxW))},onFocus:function(event){_V_.addEvent(document,"keyup",_V_.proxy(this,this.onKeyPress))},onKeyPress:function(event){if(event.which==37){event.preventDefault();this.stepBack()}else{if(event.which==39){event.preventDefault();this.stepForward()}}},onBlur:function(event){_V_.removeEvent(document,"keyup",_V_.proxy(this,this.onKeyPress))}});_V_.ProgressControl=_V_.Component.extend({options:{components:{seekBar:{}}},createElement:function(){return this._super("div",{className:"vjs-progress-control vjs-control"})}});_V_.SeekBar=_V_.Slider.extend({options:{components:{loadProgressBar:{},bar:{componentClass:"PlayProgressBar"},handle:{componentClass:"SeekHandle"}}},playerEvent:"timeupdate",init:function(player,options){this._super(player,options)},createElement:function(){return this._super("div",{className:"vjs-progress-holder"})},getPercent:function(){return this.player.currentTime()/this.player.duration()},onMouseDown:function(event){this._super(event);this.player.scrubbing=true;this.videoWasPlaying=!this.player.paused();this.player.pause()},onMouseMove:function(event){var newTime=this.calculateDistance(event)*this.player.duration();if(newTime==this.player.duration()){newTime=newTime-0.1}this.player.currentTime(newTime)},onMouseUp:function(event){this._super(event);this.player.scrubbing=false;if(this.videoWasPlaying){this.player.play()}},stepForward:function(){this.player.currentTime(this.player.currentTime()+1)},stepBack:function(){this.player.currentTime(this.player.currentTime()-1)}});_V_.LoadProgressBar=_V_.Component.extend({init:function(player,options){this._super(player,options);player.addEvent("progress",_V_.proxy(this,this.update))},createElement:function(){return this._super("div",{className:"vjs-load-progress",innerHTML:'<span class="vjs-control-text">Loaded: 0%</span>'})},update:function(){if(this.el.style){this.el.style.width=_V_.round(this.player.bufferedPercent()*100,2)+"%"}}});_V_.PlayProgressBar=_V_.Component.extend({createElement:function(){return this._super("div",{className:"vjs-play-progress",innerHTML:'<span class="vjs-control-text">Progress: 0%</span>'})}});_V_.SeekHandle=_V_.Component.extend({createElement:function(){return this._super("div",{className:"vjs-seek-handle",innerHTML:'<span class="vjs-control-text">00:00</span>'})}});_V_.VolumeControl=_V_.Component.extend({options:{components:{volumeBar:{}}},createElement:function(){return this._super("div",{className:"vjs-volume-control vjs-control"})}});_V_.VolumeBar=_V_.Slider.extend({options:{components:{bar:{componentClass:"VolumeLevel"},handle:{componentClass:"VolumeHandle"}}},playerEvent:"volumechange",createElement:function(){return this._super("div",{className:"vjs-volume-bar"})},onMouseMove:function(event){this.player.volume(this.calculateDistance(event))},getPercent:function(){return this.player.volume()},stepForward:function(){this.player.volume(this.player.volume()+0.1)},stepBack:function(){this.player.volume(this.player.volume()-0.1)}});_V_.VolumeLevel=_V_.Component.extend({createElement:function(){return this._super("div",{className:"vjs-volume-level",innerHTML:'<span class="vjs-control-text"></span>'})}});_V_.VolumeHandle=_V_.Component.extend({createElement:function(){return this._super("div",{className:"vjs-volume-handle",innerHTML:'<span class="vjs-control-text"></span>'})}});_V_.MuteToggle=_V_.Button.extend({init:function(player,options){this._super(player,options);player.addEvent("volumechange",_V_.proxy(this,this.update))},createElement:function(){return this._super("div",{className:"vjs-mute-control vjs-control",innerHTML:'<div><span class="vjs-control-text">Mute</span></div>'})},onClick:function(event){this.player.muted(this.player.muted()?false:true)},update:function(event){var vol=this.player.volume(),level=3;if(vol==0||this.player.muted()){level=0}else{if(vol<0.33){level=1}else{if(vol<0.67){level=2}}}_V_.each.call(this,[0,1,2,3],function(i){_V_.removeClass(this.el,"vjs-vol-"+i)});_V_.addClass(this.el,"vjs-vol-"+level)}});_V_.PosterImage=_V_.Button.extend({init:function(player,options){this._super(player,options);if(!this.player.options.poster){this.hide()}player.addEvent("play",_V_.proxy(this,this.hide))},createElement:function(){return _V_.createElement("img",{className:"vjs-poster",src:this.player.options.poster,tabIndex:-1})},onClick:function(){this.player.play()}});_V_.Menu=_V_.Component.extend({init:function(player,options){this._super(player,options)},addItem:function(component){this.addComponent(component);component.addEvent("click",this.proxy(function(){this.unlockShowing()}))},createElement:function(){return this._super("ul",{className:"vjs-menu"})}});_V_.MenuItem=_V_.Button.extend({init:function(player,options){this._super(player,options);if(options.selected){this.addClass("vjs-selected")}},createElement:function(type,attrs){return this._super("li",_V_.merge({className:"vjs-menu-item",innerHTML:this.options.label},attrs))},onClick:function(){this.selected(true)},selected:function(selected){if(selected){this.addClass("vjs-selected")}else{this.removeClass("vjs-selected")}}});if(!Array.prototype.indexOf){Array.prototype.indexOf=function(searchElement){if(this===void 0||this===null){throw new TypeError()}var t=Object(this);var len=t.length>>>0;if(len===0){return -1}var n=0;if(arguments.length>0){n=Number(arguments[1]);if(n!==n){n=0}else{if(n!==0&&n!==(1/0)&&n!==-(1/0)){n=(n>0||-1)*Math.floor(Math.abs(n))}}}if(n>=len){return -1}var k=n>=0?n:Math.max(len-Math.abs(n),0);for(;k<len;k++){if(k in t&&t[k]===searchElement){return k}}return -1}}_V_.extend({addEvent:function(elem,type,fn){var data=_V_.getData(elem),handlers;if(data&&!data.handler){data.handler=function(event){event=_V_.fixEvent(event);var handlers=_V_.getData(elem).events[event.type];if(handlers){var handlersCopy=[];_V_.each(handlers,function(handler,i){handlersCopy[i]=handler});for(var i=0,l=handlersCopy.length;i<l;i++){handlersCopy[i].call(elem,event)}}}}if(!data.events){data.events={}}handlers=data.events[type];if(!handlers){handlers=data.events[type]=[];if(document.addEventListener){elem.addEventListener(type,data.handler,false)}else{if(document.attachEvent){elem.attachEvent("on"+type,data.handler)}}}if(!fn.guid){fn.guid=_V_.guid++}handlers.push(fn)},removeEvent:function(elem,type,fn){var data=_V_.getData(elem),handlers;if(!data.events){return}if(!type){for(type in data.events){_V_.cleanUpEvents(elem,type)}return}handlers=data.events[type];if(!handlers){return}if(fn&&fn.guid){for(var i=0;i<handlers.length;i++){if(handlers[i].guid===fn.guid){handlers.splice(i--,1)}}}_V_.cleanUpEvents(elem,type)},cleanUpEvents:function(elem,type){var data=_V_.getData(elem);if(data.events[type].length===0){delete data.events[type];if(document.removeEventListener){elem.removeEventListener(type,data.handler,false)}else{if(document.detachEvent){elem.detachEvent("on"+type,data.handler)}}}if(_V_.isEmpty(data.events)){delete data.events;delete data.handler}if(_V_.isEmpty(data)){_V_.removeData(elem)}},fixEvent:function(event){if(event[_V_.expando]){return event}var originalEvent=event;event=new _V_.Event(originalEvent);for(var i=_V_.Event.props.length,prop;i;){prop=_V_.Event.props[--i];event[prop]=originalEvent[prop]}if(!event.target){event.target=event.srcElement||document}if(event.target.nodeType===3){event.target=event.target.parentNode}if(!event.relatedTarget&&event.fromElement){event.relatedTarget=event.fromElement===event.target?event.toElement:event.fromElement}if(event.pageX==null&&event.clientX!=null){var eventDocument=event.target.ownerDocument||document,doc=eventDocument.documentElement,body=eventDocument.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc&&doc.clientLeft||body&&body.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc&&doc.clientTop||body&&body.clientTop||0)}if(event.which==null&&(event.charCode!=null||event.keyCode!=null)){event.which=event.charCode!=null?event.charCode:event.keyCode}if(!event.metaKey&&event.ctrlKey){event.metaKey=event.ctrlKey}if(!event.which&&event.button!==undefined){event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)))}return event},triggerEvent:function(elem,event){var data=_V_.getData(elem),parent=elem.parentNode||elem.ownerDocument,type=event.type||event,handler;if(data){handler=data.handler}event=typeof event==="object"?event[_V_.expando]?event:new _V_.Event(type,event):new _V_.Event(type);event.type=type;if(handler){handler.call(elem,event)}event.result=undefined;event.target=elem},one:function(elem,type,fn){_V_.addEvent(elem,type,function(){_V_.removeEvent(elem,type,arguments.callee);fn.apply(this,arguments)})}});_V_.Event=function(src,props){if(src&&src.type){this.originalEvent=src;this.type=src.type;this.isDefaultPrevented=(src.defaultPrevented||src.returnValue===false||src.getPreventDefault&&src.getPreventDefault())?returnTrue:returnFalse}else{this.type=src}if(props){_V_.merge(this,props)}this.timeStamp=(new Date).getTime();this[_V_.expando]=true};_V_.Event.prototype={preventDefault:function(){this.isDefaultPrevented=returnTrue;var e=this.originalEvent;if(!e){return}if(e.preventDefault){e.preventDefault()}else{e.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=returnTrue;var e=this.originalEvent;if(!e){return}if(e.stopPropagation){e.stopPropagation()}e.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=returnTrue;this.stopPropagation()},isDefaultPrevented:returnFalse,isPropagationStopped:returnFalse,isImmediatePropagationStopped:returnFalse};_V_.Event.props="altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" ");function returnTrue(){return true}function returnFalse(){return false}var JSON;if(!JSON){JSON={}}(function(){var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;if(typeof JSON.parse!=="function"){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==="object"){for(k in value){if(Object.prototype.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v}else{delete value[k]}}}}return reviver.call(holder,key,value)}text=String(text);cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){j=eval("("+text+")");return typeof reviver==="function"?walk({"":j},""):j}throw new SyntaxError("JSON.parse")}}}());_V_.Player=_V_.Component.extend({init:function(tag,addOptions,ready){this.tag=tag;var el=this.el=_V_.createElement("div"),options=this.options={},width=options.width=tag.getAttribute("width"),height=options.height=tag.getAttribute("height"),initWidth=width||300,initHeight=height||150;tag.player=el.player=this;this.ready(ready);tag.parentNode.insertBefore(el,tag);el.appendChild(tag);el.id=this.id=tag.id;el.className=tag.className;tag.id+="_html5_api";tag.className="vjs-tech";_V_.players[el.id]=this;el.setAttribute("width",initWidth);el.setAttribute("height",initHeight);el.style.width=initWidth+"px";el.style.height=initHeight+"px";tag.removeAttribute("width");tag.removeAttribute("height");_V_.merge(options,_V_.options);_V_.merge(options,this.getVideoTagSettings());_V_.merge(options,addOptions);tag.removeAttribute("controls");tag.removeAttribute("poster");if(tag.hasChildNodes()){for(var i=0,j=tag.childNodes;i<j.length;i++){if(j[i].nodeName=="SOURCE"||j[i].nodeName=="TRACK"){tag.removeChild(j[i])}}}this.values={};this.addClass("vjs-paused");this.addEvent("ended",this.onEnded);this.addEvent("play",this.onPlay);this.addEvent("pause",this.onPause);this.addEvent("progress",this.onProgress);this.addEvent("error",this.onError);if(options.controls){this.ready(function(){this.initComponents()})}this.textTracks=[];if(options.tracks&&options.tracks.length>0){this.addTextTracks(options.tracks)}if(!options.sources||options.sources.length==0){for(var i=0,j=options.techOrder;i<j.length;i++){var techName=j[i],tech=_V_[techName];if(tech.isSupported()){this.loadTech(techName);break}}}else{this.src(options.sources)}},values:{},destroy:function(){this.stopTrackingProgress();this.stopTrackingCurrentTime();_V_.players[this.id]=null;delete _V_.players[this.id];this.tech.destroy();this.el.parentNode.removeChild(this.el)},createElement:function(type,options){},getVideoTagSettings:function(){var options={sources:[],tracks:[]};options.src=this.tag.getAttribute("src");options.controls=this.tag.getAttribute("controls")!==null;options.poster=this.tag.getAttribute("poster");options.preload=this.tag.getAttribute("preload");options.autoplay=this.tag.getAttribute("autoplay")!==null;options.loop=this.tag.getAttribute("loop")!==null;options.muted=this.tag.getAttribute("muted")!==null;if(this.tag.hasChildNodes()){for(var c,i=0,j=this.tag.childNodes;i<j.length;i++){c=j[i];if(c.nodeName=="SOURCE"){options.sources.push({src:c.getAttribute("src"),type:c.getAttribute("type"),media:c.getAttribute("media"),title:c.getAttribute("title")})}if(c.nodeName=="TRACK"){options.tracks.push({src:c.getAttribute("src"),kind:c.getAttribute("kind"),srclang:c.getAttribute("srclang"),label:c.getAttribute("label"),"default":c.getAttribute("default")!==null,title:c.getAttribute("title")})}}}return options},loadTech:function(techName,source){if(this.tech){this.unloadTech()}else{if(techName!="html5"&&this.tag){this.el.removeChild(this.tag);this.tag=false}}this.techName=techName;this.isReady=false;var techReady=function(){this.player.triggerReady();if(!this.support.progressEvent){this.player.manualProgressOn()}if(!this.support.timeupdateEvent){this.player.manualTimeUpdatesOn()}};var techOptions=_V_.merge({source:source,parentEl:this.el},this.options[techName]);if(source){if(source.src==this.values.src&&this.values.currentTime>0){techOptions.startTime=this.values.currentTime}this.values.src=source.src}this.tech=new _V_[techName](this,techOptions);this.tech.ready(techReady)},unloadTech:function(){this.tech.destroy();if(this.manualProgress){this.manualProgressOff()}if(this.manualTimeUpdates){this.manualTimeUpdatesOff()}this.tech=false},manualProgressOn:function(){this.manualProgress=true;this.trackProgress();this.tech.addEvent("progress",function(){this.removeEvent("progress",arguments.callee);this.support.progressEvent=true;this.player.manualProgressOff()})},manualProgressOff:function(){this.manualProgress=false;this.stopTrackingProgress()},trackProgress:function(){this.progressInterval=setInterval(_V_.proxy(this,function(){if(this.values.bufferEnd<this.buffered().end(0)){this.triggerEvent("progress")}else{if(this.bufferedPercent()==1){this.stopTrackingProgress();this.triggerEvent("progress")}}}),500)},stopTrackingProgress:function(){clearInterval(this.progressInterval)},manualTimeUpdatesOn:function(){this.manualTimeUpdates=true;this.addEvent("play",this.trackCurrentTime);this.addEvent("pause",this.stopTrackingCurrentTime);this.tech.addEvent("timeupdate",function(){this.removeEvent("timeupdate",arguments.callee);this.support.timeupdateEvent=true;this.player.manualTimeUpdatesOff()})},manualTimeUpdatesOff:function(){this.manualTimeUpdates=false;this.stopTrackingCurrentTime();this.removeEvent("play",this.trackCurrentTime);this.removeEvent("pause",this.stopTrackingCurrentTime)},trackCurrentTime:function(){if(this.currentTimeInterval){this.stopTrackingCurrentTime()}this.currentTimeInterval=setInterval(_V_.proxy(this,function(){this.triggerEvent("timeupdate")}),250)},stopTrackingCurrentTime:function(){clearInterval(this.currentTimeInterval)},onEnded:function(){if(this.options.loop){this.currentTime(0);this.play()}else{this.pause();this.currentTime(0);this.pause()}},onPlay:function(){_V_.removeClass(this.el,"vjs-paused");_V_.addClass(this.el,"vjs-playing")},onPause:function(){_V_.removeClass(this.el,"vjs-playing");_V_.addClass(this.el,"vjs-paused")},onProgress:function(){if(this.bufferedPercent()==1){this.triggerEvent("loadedalldata")}},onError:function(e){_V_.log("Video Error",e)},techCall:function(method,arg){if(!this.tech.isReady){this.tech.ready(function(){this[method](arg)})}else{try{this.tech[method](arg)}catch(e){_V_.log(e)}}},techGet:function(method){if(this.tech.isReady){try{return this.tech[method]()}catch(e){if(this.tech[method]===undefined){_V_.log("Video.js: "+method+" method not defined for "+this.techName+" playback technology.",e)}else{if(e.name=="TypeError"){_V_.log("Video.js: "+method+" unavailable on "+this.techName+" playback technology element.",e);this.tech.isReady=false}else{_V_.log(e)}}}}return},play:function(){this.techCall("play");return this},pause:function(){this.techCall("pause");return this},paused:function(){return(this.techGet("paused")===false)?false:true},currentTime:function(seconds){if(seconds!==undefined){this.values.lastSetCurrentTime=seconds;this.techCall("setCurrentTime",seconds);if(this.manualTimeUpdates){this.triggerEvent("timeupdate")}return this}return this.values.currentTime=(this.techGet("currentTime")||0)},duration:function(){return parseFloat(this.techGet("duration"))},remainingTime:function(){return this.duration()-this.currentTime()},buffered:function(){var buffered=this.techGet("buffered"),start=0,end=this.values.bufferEnd=this.values.bufferEnd||0,timeRange;if(buffered&&buffered.length>0&&buffered.end(0)!==end){end=buffered.end(0);this.values.bufferEnd=end}return _V_.createTimeRange(start,end)},bufferedPercent:function(){return(this.duration())?this.buffered().end(0)/this.duration():0},volume:function(percentAsDecimal){var vol;if(percentAsDecimal!==undefined){vol=Math.max(0,Math.min(1,parseFloat(percentAsDecimal)));this.values.volume=vol;this.techCall("setVolume",vol);_V_.setLocalStorage("volume",vol);return this}vol=parseFloat(this.techGet("volume"));return(isNaN(vol))?1:vol},muted:function(muted){if(muted!==undefined){this.techCall("setMuted",muted);return this}return this.techGet("muted")||false},width:function(width,skipListeners){if(width!==undefined){this.el.width=width;this.el.style.width=width+"px";if(!skipListeners){this.triggerEvent("resize")}return this}return parseInt(this.el.getAttribute("width"))},height:function(height){if(height!==undefined){this.el.height=height;this.el.style.height=height+"px";this.triggerEvent("resize");return this}return parseInt(this.el.getAttribute("height"))},size:function(width,height){return this.width(width,true).height(height)},supportsFullScreen:function(){return this.techGet("supportsFullScreen")||false},requestFullScreen:function(){var requestFullScreen=_V_.support.requestFullScreen;this.isFullScreen=true;if(requestFullScreen){_V_.addEvent(document,requestFullScreen.eventName,this.proxy(function(){this.isFullScreen=document[requestFullScreen.isFullScreen];if(this.isFullScreen==false){_V_.removeEvent(document,requestFullScreen.eventName,arguments.callee)}this.triggerEvent("fullscreenchange")}));if(this.tech.support.fullscreenResize===false&&this.options.flash.iFrameMode!=true){this.pause();this.unloadTech();_V_.addEvent(document,requestFullScreen.eventName,this.proxy(function(){_V_.removeEvent(document,requestFullScreen.eventName,arguments.callee);this.loadTech(this.techName,{src:this.values.src})}));this.el[requestFullScreen.requestFn]()}else{this.el[requestFullScreen.requestFn]()}}else{if(this.tech.supportsFullScreen()){this.triggerEvent("fullscreenchange");this.techCall("enterFullScreen")}else{this.triggerEvent("fullscreenchange");this.enterFullWindow()}}return this},cancelFullScreen:function(){var requestFullScreen=_V_.support.requestFullScreen;this.isFullScreen=false;if(requestFullScreen){if(this.tech.support.fullscreenResize===false&&this.options.flash.iFrameMode!=true){this.pause();this.unloadTech();_V_.addEvent(document,requestFullScreen.eventName,this.proxy(function(){_V_.removeEvent(document,requestFullScreen.eventName,arguments.callee);this.loadTech(this.techName,{src:this.values.src})}));document[requestFullScreen.cancelFn]()}else{document[requestFullScreen.cancelFn]()}}else{if(this.tech.supportsFullScreen()){this.techCall("exitFullScreen");this.triggerEvent("fullscreenchange")}else{this.exitFullWindow();this.triggerEvent("fullscreenchange")}}return this},enterFullWindow:function(){this.isFullWindow=true;this.docOrigOverflow=document.documentElement.style.overflow;_V_.addEvent(document,"keydown",_V_.proxy(this,this.fullWindowOnEscKey));document.documentElement.style.overflow="hidden";_V_.addClass(document.body,"vjs-full-window");_V_.addClass(this.el,"vjs-fullscreen");this.triggerEvent("enterFullWindow")},fullWindowOnEscKey:function(event){if(event.keyCode==27){if(this.isFullScreen==true){this.cancelFullScreen()}else{this.exitFullWindow()}}},exitFullWindow:function(){this.isFullWindow=false;_V_.removeEvent(document,"keydown",this.fullWindowOnEscKey);document.documentElement.style.overflow=this.docOrigOverflow;_V_.removeClass(document.body,"vjs-full-window");_V_.removeClass(this.el,"vjs-fullscreen");this.triggerEvent("exitFullWindow")},selectSource:function(sources){for(var i=0,j=this.options.techOrder;i<j.length;i++){var techName=j[i],tech=_V_[techName];if(tech.isSupported()){for(var a=0,b=sources;a<b.length;a++){var source=b[a];if(tech.canPlaySource.call(this,source)){return{source:source,tech:techName}}}}}return false},src:function(source){if(source instanceof Array){var sourceTech=this.selectSource(source),source,techName;if(sourceTech){source=sourceTech.source;techName=sourceTech.tech;if(techName==this.techName){this.src(source)}else{this.loadTech(techName,source)}}else{_V_.log("No compatible source and playback technology were found.")}}else{if(source instanceof Object){if(_V_[this.techName].canPlaySource(source)){this.src(source.src)}else{this.src([source])}}else{this.values.src=source;if(!this.isReady){this.ready(function(){this.src(source)})}else{this.techCall("src",source);if(this.options.preload=="auto"){this.load()}if(this.options.autoplay){this.play()}}}}return this},load:function(){this.techCall("load");return this},currentSrc:function(){return this.techGet("currentSrc")||this.values.src||""},preload:function(value){if(value!==undefined){this.techCall("setPreload",value);this.options.preload=value;return this}return this.techGet("preload")},autoplay:function(value){if(value!==undefined){this.techCall("setAutoplay",value);this.options.autoplay=value;return this}return this.techGet("autoplay",value)},loop:function(value){if(value!==undefined){this.techCall("setLoop",value);this.options.loop=value;return this}return this.techGet("loop")},controls:function(){return this.options.controls},poster:function(){return this.techGet("poster")},error:function(){return this.techGet("error")},ended:function(){return this.techGet("ended")}});(function(){var requestFn,cancelFn,eventName,isFullScreen,playerProto=_V_.Player.prototype;if(document.cancelFullscreen!==undefined){requestFn="requestFullscreen";cancelFn="exitFullscreen";eventName="fullscreenchange";isFullScreen="fullScreen"}else{_V_.each(["moz","webkit"],function(prefix){if((prefix!="moz"||document.mozFullScreenEnabled)&&document[prefix+"CancelFullScreen"]!==undefined){requestFn=prefix+"RequestFullScreen";cancelFn=prefix+"CancelFullScreen";eventName=prefix+"fullscreenchange";if(prefix=="webkit"){isFullScreen=prefix+"IsFullScreen"}else{isFullScreen=prefix+"FullScreen"}}})}if(requestFn){_V_.support.requestFullScreen={requestFn:requestFn,cancelFn:cancelFn,eventName:eventName,isFullScreen:isFullScreen}}})();_V_.PlaybackTech=_V_.Component.extend({init:function(player,options){},onClick:function(){if(this.player.options.controls){_V_.PlayToggle.prototype.onClick.call(this)}}});_V_.apiMethods="play,pause,paused,currentTime,setCurrentTime,duration,buffered,volume,setVolume,muted,setMuted,width,height,supportsFullScreen,enterFullScreen,src,load,currentSrc,preload,setPreload,autoplay,setAutoplay,loop,setLoop,error,networkState,readyState,seeking,initialTime,startOffsetTime,played,seekable,ended,videoTracks,audioTracks,videoWidth,videoHeight,textTracks,defaultPlaybackRate,playbackRate,mediaGroup,controller,controls,defaultMuted".split(",");_V_.each(_V_.apiMethods,function(methodName){_V_.PlaybackTech.prototype[methodName]=function(){throw new Error("The '"+methodName+"' method is not available on the playback technology's API")}});_V_.html5=_V_.PlaybackTech.extend({init:function(player,options,ready){this.player=player;this.el=this.createElement();this.ready(ready);this.addEvent("click",this.proxy(this.onClick));var source=options.source;if(source&&this.el.currentSrc==source.src){player.triggerEvent("loadstart")}else{if(source){this.el.src=source.src}}player.ready(function(){if(this.options.autoplay&&this.paused()){this.tag.poster=null;this.play()}});this.setupTriggers();this.triggerReady()},destroy:function(){this.player.tag=false;this.removeTriggers();this.el.parentNode.removeChild(this.el)},createElement:function(){var html5=_V_.html5,player=this.player,el=player.tag,newEl;if(!el||this.support.movingElementInDOM===false){if(el){player.el.removeChild(el)}newEl=_V_.createElement("video",{id:el.id||player.el.id+"_html5_api",className:el.className||"vjs-tech"});el=newEl;_V_.insertFirst(el,player.el)}_V_.each(["autoplay","preload","loop","muted"],function(attr){if(player.options[attr]!==null){el[attr]=player.options[attr]}},this);return el},setupTriggers:function(){_V_.each.call(this,_V_.html5.events,function(type){_V_.addEvent(this.el,type,_V_.proxy(this.player,this.eventHandler))})},removeTriggers:function(){_V_.each.call(this,_V_.html5.events,function(type){_V_.removeEvent(this.el,type,_V_.proxy(this.player,this.eventHandler))})},eventHandler:function(e){e.stopPropagation();this.triggerEvent(e)},play:function(){this.el.play()},pause:function(){this.el.pause()},paused:function(){return this.el.paused},currentTime:function(){return this.el.currentTime},setCurrentTime:function(seconds){try{this.el.currentTime=seconds}catch(e){_V_.log(e,"Video isn't ready. (VideoJS)")}},duration:function(){return this.el.duration||0},buffered:function(){return this.el.buffered},volume:function(){return this.el.volume},setVolume:function(percentAsDecimal){this.el.volume=percentAsDecimal},muted:function(){return this.el.muted},setMuted:function(muted){this.el.muted=muted},width:function(){return this.el.offsetWidth},height:function(){return this.el.offsetHeight},supportsFullScreen:function(){if(typeof this.el.webkitEnterFullScreen=="function"){if(!navigator.userAgent.match("Chrome")&&!navigator.userAgent.match("Mac OS X 10.5")){return true}}return false},enterFullScreen:function(){try{this.el.webkitEnterFullScreen()}catch(e){if(e.code==11){_V_.log("VideoJS: Video not ready.")}}},src:function(src){this.el.src=src},load:function(){this.el.load()},currentSrc:function(){return this.el.currentSrc},preload:function(){return this.el.preload},setPreload:function(val){this.el.preload=val},autoplay:function(){return this.el.autoplay},setAutoplay:function(val){this.el.autoplay=val},loop:function(){return this.el.loop},setLoop:function(val){this.el.loop=val},error:function(){return this.el.error},seeking:function(){return this.el.seeking},ended:function(){return this.el.ended},controls:function(){return this.player.options.controls},defaultMuted:function(){return this.el.defaultMuted}});_V_.html5.isSupported=function(){return !!document.createElement("video").canPlayType};_V_.html5.canPlaySource=function(srcObj){return !!document.createElement("video").canPlayType(srcObj.type)};_V_.html5.events="loadstart,suspend,abort,error,emptied,stalled,loadedmetadata,loadeddata,canplay,canplaythrough,playing,waiting,seeking,seeked,ended,durationchange,timeupdate,progress,play,pause,ratechange,volumechange".split(",");_V_.html5.prototype.support={fullscreen:(typeof _V_.testVid.webkitEnterFullScreen!==undefined)?(!_V_.ua.match("Chrome")&&!_V_.ua.match("Mac OS X 10.5")?true:false):false,movingElementInDOM:!_V_.isIOS()};if(_V_.isAndroid()){if(_V_.androidVersion()<3){document.createElement("video").constructor.prototype.canPlayType=function(type){return(type&&type.toLowerCase().indexOf("video/mp4")!=-1)?"maybe":""}}}_V_.flash=_V_.PlaybackTech.extend({init:function(player,options){this.player=player;var source=options.source,parentEl=options.parentEl,placeHolder=this.el=_V_.createElement("div",{id:parentEl.id+"_temp_flash"}),objId=player.el.id+"_flash_api",playerOptions=player.options,flashVars=_V_.merge({readyFunction:"_V_.flash.onReady",eventProxyFunction:"_V_.flash.onEvent",errorEventProxyFunction:"_V_.flash.onError",autoplay:playerOptions.autoplay,preload:playerOptions.preload,loop:playerOptions.loop,muted:playerOptions.muted},options.flashVars),params=_V_.merge({wmode:"opaque",bgcolor:"#000000"},options.params),attributes=_V_.merge({id:objId,name:objId,"class":"vjs-tech"},options.attributes);if(source){flashVars.src=encodeURIComponent(_V_.getAbsoluteURL(source.src))}_V_.insertFirst(placeHolder,parentEl);if(options.startTime){this.ready(function(){this.load();this.play();this.currentTime(options.startTime)})}if(options.iFrameMode==true&&!_V_.isFF){var iFrm=_V_.createElement("iframe",{id:objId+"_iframe",name:objId+"_iframe",className:"vjs-tech",scrolling:"no",marginWidth:0,marginHeight:0,frameBorder:0});flashVars.readyFunction="ready";flashVars.eventProxyFunction="events";flashVars.errorEventProxyFunction="errors";_V_.addEvent(iFrm,"load",_V_.proxy(this,function(){var iDoc,objTag,swfLoc,iWin=iFrm.contentWindow,varString="";iDoc=iFrm.contentDocument?iFrm.contentDocument:iFrm.contentWindow.document;iDoc.write(_V_.flash.getEmbedCode(options.swf,flashVars,params,attributes));iWin.player=this.player;iWin.ready=_V_.proxy(this.player,function(currSwf){var el=iDoc.getElementById(currSwf),player=this,tech=player.tech;tech.el=el;_V_.addEvent(el,"click",tech.proxy(tech.onClick));_V_.flash.checkReady(tech)});iWin.events=_V_.proxy(this.player,function(swfID,eventName,other){var player=this;if(player&&player.techName=="flash"){player.triggerEvent(eventName)}});iWin.errors=_V_.proxy(this.player,function(swfID,eventName){_V_.log("Flash Error",eventName)})}));placeHolder.parentNode.replaceChild(iFrm,placeHolder)}else{_V_.flash.embed(options.swf,placeHolder,flashVars,params,attributes)}},destroy:function(){this.el.parentNode.removeChild(this.el)},play:function(){this.el.vjs_play()},pause:function(){this.el.vjs_pause()},src:function(src){src=_V_.getAbsoluteURL(src);this.el.vjs_src(src);if(this.player.autoplay()){var tech=this;setTimeout(function(){tech.play()},0)}},load:function(){this.el.vjs_load()},poster:function(){this.el.vjs_getProperty("poster")},buffered:function(){return _V_.createTimeRange(0,this.el.vjs_getProperty("buffered"))},supportsFullScreen:function(){return false},enterFullScreen:function(){return false}});(function(){var api=_V_.flash.prototype,readWrite="preload,currentTime,defaultPlaybackRate,playbackRate,autoplay,loop,mediaGroup,controller,controls,volume,muted,defaultMuted".split(","),readOnly="error,currentSrc,networkState,readyState,seeking,initialTime,duration,startOffsetTime,paused,played,seekable,ended,videoTracks,audioTracks,videoWidth,videoHeight,textTracks".split(","),callOnly="load,play,pause".split(",");createSetter=function(attr){var attrUpper=attr.charAt(0).toUpperCase()+attr.slice(1);api["set"+attrUpper]=function(val){return this.el.vjs_setProperty(attr,val)}},createGetter=function(attr){api[attr]=function(){return this.el.vjs_getProperty(attr)}};_V_.each(readWrite,function(attr){createGetter(attr);createSetter(attr)});_V_.each(readOnly,function(attr){createGetter(attr)})})();_V_.flash.isSupported=function(){return _V_.flash.version()[0]>=10};_V_.flash.canPlaySource=function(srcObj){if(srcObj.type in _V_.flash.prototype.support.formats){return"maybe"}};_V_.flash.prototype.support={formats:{"video/flv":"FLV","video/x-flv":"FLV","video/mp4":"MP4","video/m4v":"MP4"},progressEvent:false,timeupdateEvent:false,fullscreenResize:false,parentResize:!(_V_.ua.match("Firefox"))};_V_.flash.onReady=function(currSwf){var el=_V_.el(currSwf);var player=el.player||el.parentNode.player,tech=player.tech;el.player=player;tech.el=el;tech.addEvent("click",tech.onClick);_V_.flash.checkReady(tech)};_V_.flash.checkReady=function(tech){if(tech.el.vjs_getProperty){tech.triggerReady()}else{setTimeout(function(){_V_.flash.checkReady(tech)},50)}};_V_.flash.onEvent=function(swfID,eventName){var player=_V_.el(swfID).player;player.triggerEvent(eventName)};_V_.flash.onError=function(swfID,err){var player=_V_.el(swfID).player;player.triggerEvent("error");_V_.log("Flash Error",err,swfID)};_V_.flash.version=function(){var version="0,0,0";try{version=new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version").replace(/\D+/g,",").match(/^,?(.+),?$/)[1]}catch(e){try{if(navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin){version=(navigator.plugins["Shockwave Flash 2.0"]||navigator.plugins["Shockwave Flash"]).description.replace(/\D+/g,",").match(/^,?(.+),?$/)[1]}}catch(e){}}return version.split(",")};_V_.flash.embed=function(swf,placeHolder,flashVars,params,attributes){var code=_V_.flash.getEmbedCode(swf,flashVars,params,attributes),obj=_V_.createElement("div",{innerHTML:code}).childNodes[0],par=placeHolder.parentNode;placeHolder.parentNode.replaceChild(obj,placeHolder);if(_V_.isIE()){var newObj=par.childNodes[0];setTimeout(function(){newObj.style.display="block"},1000)}return obj};_V_.flash.getEmbedCode=function(swf,flashVars,params,attributes){var objTag='<object type="application/x-shockwave-flash"',flashVarsString="",paramsString="";attrsString="";if(flashVars){_V_.eachProp(flashVars,function(key,val){flashVarsString+=(key+"="+val+"&amp;")})}params=_V_.merge({movie:swf,flashvars:flashVarsString,allowScriptAccess:"always",allowNetworking:"all"},params);_V_.eachProp(params,function(key,val){paramsString+='<param name="'+key+'" value="'+val+'" />'});attributes=_V_.merge({data:swf,width:"100%",height:"100%"},attributes);_V_.eachProp(attributes,function(key,val){attrsString+=(key+'="'+val+'" ')});return objTag+attrsString+">"+paramsString+"</object>"};_V_.merge(_V_.Player.prototype,{addTextTracks:function(trackObjects){var tracks=this.textTracks=(this.textTracks)?this.textTracks:[],i=0,j=trackObjects.length,track,Kind;for(;i<j;i++){Kind=_V_.uc(trackObjects[i].kind||"subtitles");track=new _V_[Kind+"Track"](this,trackObjects[i]);tracks.push(track);if(track["default"]){this.ready(_V_.proxy(track,track.show))}}return this},showTextTrack:function(id,disableSameKind){var tracks=this.textTracks,i=0,j=tracks.length,track,showTrack,kind;for(;i<j;i++){track=tracks[i];if(track.id===id){track.show();showTrack=track}else{if(disableSameKind&&track.kind==disableSameKind&&track.mode>0){track.disable()}}}kind=(showTrack)?showTrack.kind:((disableSameKind)?disableSameKind:false);if(kind){this.triggerEvent(kind+"trackchange")}return this}});_V_.Track=_V_.Component.extend({init:function(player,options){this._super(player,options);_V_.merge(this,{id:options.id||("vjs_"+options.kind+"_"+options.language+"_"+_V_.guid++),src:options.src,"default":options["default"],title:options.title,language:options.srclang,label:options.label,cues:[],activeCues:[],readyState:0,mode:0})},createElement:function(){return this._super("div",{className:"vjs-"+this.kind+" vjs-text-track"})},show:function(){this.activate();this.mode=2;this._super()},hide:function(){this.activate();this.mode=1;this._super()},disable:function(){if(this.mode==2){this.hide()}this.deactivate();this.mode=0},activate:function(){if(this.readyState==0){this.load()}if(this.mode==0){this.player.addEvent("timeupdate",this.proxy(this.update,this.id));this.player.addEvent("ended",this.proxy(this.reset,this.id));if(this.kind=="captions"||this.kind=="subtitles"){this.player.textTrackDisplay.addComponent(this)}}},deactivate:function(){this.player.removeEvent("timeupdate",this.proxy(this.update,this.id));this.player.removeEvent("ended",this.proxy(this.reset,this.id));this.reset();this.player.textTrackDisplay.removeComponent(this)},load:function(){if(this.readyState==0){this.readyState=1;_V_.get(this.src,this.proxy(this.parseCues),this.proxy(this.onError))}},onError:function(err){this.error=err;this.readyState=3;this.triggerEvent("error")},parseCues:function(srcContent){var cue,time,text,lines=srcContent.split("\n"),line="",id;for(var i=1,j=lines.length;i<j;i++){line=_V_.trim(lines[i]);if(line){if(line.indexOf("-->")==-1){id=line;line=_V_.trim(lines[++i])}else{id=this.cues.length}cue={id:id,index:this.cues.length};time=line.split(" --> ");cue.startTime=this.parseCueTime(time[0]);cue.endTime=this.parseCueTime(time[1]);text=[];while(lines[++i]&&(line=_V_.trim(lines[i]))){text.push(line)}cue.text=text.join("<br/>");this.cues.push(cue)}}this.readyState=2;this.triggerEvent("loaded")},parseCueTime:function(timeText){var parts=timeText.split(":"),time=0,hours,minutes,other,seconds,ms,flags;if(parts.length==3){hours=parts[0];minutes=parts[1];other=parts[2]}else{hours=0;minutes=parts[0];other=parts[1]}other=other.split(/\s+/);seconds=other.splice(0,1)[0];seconds=seconds.split(/\.|,/);ms=parseFloat(seconds[1]);seconds=seconds[0];time+=parseFloat(hours)*3600;time+=parseFloat(minutes)*60;time+=parseFloat(seconds);if(ms){time+=ms/1000}return time},update:function(){if(this.cues.length>0){var time=this.player.currentTime();if(this.prevChange===undefined||time<this.prevChange||this.nextChange<=time){var cues=this.cues,newNextChange=this.player.duration(),newPrevChange=0,reverse=false,newCues=[],firstActiveIndex,lastActiveIndex,html="",cue,i,j;if(time>=this.nextChange||this.nextChange===undefined){i=(this.firstActiveIndex!==undefined)?this.firstActiveIndex:0}else{reverse=true;i=(this.lastActiveIndex!==undefined)?this.lastActiveIndex:cues.length-1}while(true){cue=cues[i];if(cue.endTime<=time){newPrevChange=Math.max(newPrevChange,cue.endTime);if(cue.active){cue.active=false}}else{if(time<cue.startTime){newNextChange=Math.min(newNextChange,cue.startTime);if(cue.active){cue.active=false}if(!reverse){break}}else{if(reverse){newCues.splice(0,0,cue);if(lastActiveIndex===undefined){lastActiveIndex=i}firstActiveIndex=i}else{newCues.push(cue);if(firstActiveIndex===undefined){firstActiveIndex=i}lastActiveIndex=i}newNextChange=Math.min(newNextChange,cue.endTime);newPrevChange=Math.max(newPrevChange,cue.startTime);cue.active=true}}if(reverse){if(i===0){break}else{i--}}else{if(i===cues.length-1){break}else{i++}}}this.activeCues=newCues;this.nextChange=newNextChange;this.prevChange=newPrevChange;this.firstActiveIndex=firstActiveIndex;this.lastActiveIndex=lastActiveIndex;this.updateDisplay();this.triggerEvent("cuechange")}}},updateDisplay:function(){var cues=this.activeCues,html="",i=0,j=cues.length;for(;i<j;i++){html+="<span class='vjs-tt-cue'>"+cues[i].text+"</span>"}this.el.innerHTML=html},reset:function(){this.nextChange=0;this.prevChange=this.player.duration();this.firstActiveIndex=0;this.lastActiveIndex=0}});_V_.CaptionsTrack=_V_.Track.extend({kind:"captions"});_V_.SubtitlesTrack=_V_.Track.extend({kind:"subtitles"});_V_.ChaptersTrack=_V_.Track.extend({kind:"chapters"});_V_.TextTrackDisplay=_V_.Component.extend({createElement:function(){return this._super("div",{className:"vjs-text-track-display"})}});_V_.TextTrackMenuItem=_V_.MenuItem.extend({init:function(player,options){var track=this.track=options.track;options.label=track.label;options.selected=track["default"];this._super(player,options);this.player.addEvent(track.kind+"trackchange",_V_.proxy(this,this.update))},onClick:function(){this._super();this.player.showTextTrack(this.track.id,this.track.kind)},update:function(){if(this.track.mode==2){this.selected(true)}else{this.selected(false)}}});_V_.OffTextTrackMenuItem=_V_.TextTrackMenuItem.extend({init:function(player,options){options.track={kind:options.kind,player:player,label:"Off"};this._super(player,options)},onClick:function(){this._super();this.player.showTextTrack(this.track.id,this.track.kind)},update:function(){var tracks=this.player.textTracks,i=0,j=tracks.length,track,off=true;for(;i<j;i++){track=tracks[i];if(track.kind==this.track.kind&&track.mode==2){off=false}}if(off){this.selected(true)}else{this.selected(false)}}});_V_.TextTrackButton=_V_.Button.extend({init:function(player,options){this._super(player,options);this.menu=this.createMenu();if(this.items.length===0){this.hide()}},createMenu:function(){var menu=new _V_.Menu(this.player);menu.el.appendChild(_V_.createElement("li",{className:"vjs-menu-title",innerHTML:_V_.uc(this.kind)}));menu.addItem(new _V_.OffTextTrackMenuItem(this.player,{kind:this.kind}));this.items=this.createItems();this.each(this.items,function(item){menu.addItem(item)});this.addComponent(menu);return menu},createItems:function(){var items=[];this.each(this.player.textTracks,function(track){if(track.kind===this.kind){items.push(new _V_.TextTrackMenuItem(this.player,{track:track}))}});return items},buildCSSClass:function(){return this.className+" vjs-menu-button "+this._super()},onFocus:function(){this.menu.lockShowing();_V_.one(this.menu.el.childNodes[this.menu.el.childNodes.length-1],"blur",this.proxy(function(){this.menu.unlockShowing()}))},onBlur:function(){},onClick:function(){this.one("mouseout",this.proxy(function(){this.menu.unlockShowing();this.el.blur()}))}});_V_.CaptionsButton=_V_.TextTrackButton.extend({kind:"captions",buttonText:"Captions",className:"vjs-captions-button"});_V_.SubtitlesButton=_V_.TextTrackButton.extend({kind:"subtitles",buttonText:"Subtitles",className:"vjs-subtitles-button"});_V_.ChaptersButton=_V_.TextTrackButton.extend({kind:"chapters",buttonText:"Chapters",className:"vjs-chapters-button",createItems:function(chaptersTrack){var items=[];this.each(this.player.textTracks,function(track){if(track.kind===this.kind){items.push(new _V_.TextTrackMenuItem(this.player,{track:track}))}});return items},createMenu:function(){var tracks=this.player.textTracks,i=0,j=tracks.length,track,chaptersTrack,items=this.items=[];for(;i<j;i++){track=tracks[i];if(track.kind==this.kind&&track["default"]){if(track.readyState<2){this.chaptersTrack=track;track.addEvent("loaded",this.proxy(this.createMenu));return}else{chaptersTrack=track;break}}}var menu=this.menu=new _V_.Menu(this.player);menu.el.appendChild(_V_.createElement("li",{className:"vjs-menu-title",innerHTML:_V_.uc(this.kind)}));if(chaptersTrack){var cues=chaptersTrack.cues,i=0,j=cues.length,cue,mi;for(;i<j;i++){cue=cues[i];mi=new _V_.ChaptersTrackMenuItem(this.player,{track:chaptersTrack,cue:cue});items.push(mi);menu.addComponent(mi)}}this.addComponent(menu);if(this.items.length>0){this.show()}return menu}});_V_.ChaptersTrackMenuItem=_V_.MenuItem.extend({init:function(player,options){var track=this.track=options.track,cue=this.cue=options.cue,currentTime=player.currentTime();options.label=cue.text;options.selected=(cue.startTime<=currentTime&&currentTime<cue.endTime);this._super(player,options);track.addEvent("cuechange",_V_.proxy(this,this.update))},onClick:function(){this._super();this.player.currentTime(this.cue.startTime);this.update(this.cue.startTime)},update:function(time){var cue=this.cue,currentTime=this.player.currentTime();if(cue.startTime<=currentTime&&currentTime<cue.endTime){this.selected(true)}else{this.selected(false)}}});_V_.merge(_V_.ControlBar.prototype.options.components,{subtitlesButton:{},captionsButton:{},chaptersButton:{}});_V_.autoSetup=function(){var options,vid,player,vids=document.getElementsByTagName("video");if(vids&&vids.length>0){for(var i=0,j=vids.length;i<j;i++){vid=vids[i];if(vid&&vid.getAttribute){if(vid.player===undefined){options=vid.getAttribute("data-setup");if(options!==null){options=JSON.parse(options||"{}");player=_V_(vid,options)}}}else{_V_.autoSetupTimeout(1);break}}}else{if(!_V_.windowLoaded){_V_.autoSetupTimeout(1)}}};_V_.autoSetupTimeout=function(wait){setTimeout(_V_.autoSetup,wait)};_V_.addEvent(window,"load",function(){_V_.windowLoaded=true});_V_.autoSetup();window.VideoJS=window._V_=VideoJS})(window);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*! Copyright 2013 Brightcove, Inc. https://github.com/videojs/video.js/blob/master/LICENSE */
2
+ (function() {var b=void 0,f=!0,h=null,l=!1;function m(){return function(){}}function p(a){return function(){return this[a]}}function r(a){return function(){return a}}var t;document.createElement("video");document.createElement("audio");function u(a,c,d){if("string"===typeof a){0===a.indexOf("#")&&(a=a.slice(1));if(u.Na[a])return u.Na[a];a=u.s(a)}if(!a||!a.nodeName)throw new TypeError("The element or ID supplied is not valid. (videojs)");return a.player||new u.ga(a,c,d)}var v=u;window.xd=window.yd=u;u.Qb="GENERATED_CDN_VSN";
3
+ u.Pb="https:"==document.location.protocol?"https://":"http://";u.options={techOrder:["html5","flash"],html5:{},flash:{swf:u.Pb+"vjs.zencdn.net/c/video-js.swf"},width:300,height:150,defaultVolume:0,children:{mediaLoader:{},posterImage:{},textTrackDisplay:{},loadingSpinner:{},bigPlayButton:{},controlBar:{}}};u.Na={};"GENERATED_CDN_VSN"!=u.Qb&&(v.options.flash.swf=u.Pb+"vjs.zencdn.net/"+u.Qb+"/video-js.swf");u.ma=u.CoreObject=m();
4
+ u.ma.extend=function(a){var c,d;a=a||{};c=a.init||a.g||this.prototype.init||this.prototype.g||m();d=function(){c.apply(this,arguments)};d.prototype=u.i.create(this.prototype);d.prototype.constructor=d;d.extend=u.ma.extend;d.create=u.ma.create;for(var e in a)a.hasOwnProperty(e)&&(d.prototype[e]=a[e]);return d};u.ma.create=function(){var a=u.i.create(this.prototype);this.apply(a,arguments);return a};
5
+ u.d=function(a,c,d){var e=u.getData(a);e.z||(e.z={});e.z[c]||(e.z[c]=[]);d.u||(d.u=u.u++);e.z[c].push(d);e.S||(e.disabled=l,e.S=function(c){if(!e.disabled){c=u.hc(c);var d=e.z[c.type];if(d)for(var d=d.slice(0),k=0,q=d.length;k<q&&!c.mc();k++)d[k].call(a,c)}});1==e.z[c].length&&(document.addEventListener?a.addEventListener(c,e.S,l):document.attachEvent&&a.attachEvent("on"+c,e.S))};
6
+ u.t=function(a,c,d){if(u.lc(a)){var e=u.getData(a);if(e.z)if(c){var g=e.z[c];if(g){if(d){if(d.u)for(e=0;e<g.length;e++)g[e].u===d.u&&g.splice(e--,1)}else e.z[c]=[];u.ec(a,c)}}else for(g in e.z)c=g,e.z[c]=[],u.ec(a,c)}};u.ec=function(a,c){var d=u.getData(a);0===d.z[c].length&&(delete d.z[c],document.removeEventListener?a.removeEventListener(c,d.S,l):document.detachEvent&&a.detachEvent("on"+c,d.S));u.Ab(d.z)&&(delete d.z,delete d.S,delete d.disabled);u.Ab(d)&&u.sc(a)};
7
+ u.hc=function(a){function c(){return f}function d(){return l}if(!a||!a.Bb){var e=a||window.event;a={};for(var g in e)a[g]=e[g];a.target||(a.target=a.srcElement||document);a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;a.preventDefault=function(){e.preventDefault&&e.preventDefault();a.returnValue=l;a.zb=c};a.zb=d;a.stopPropagation=function(){e.stopPropagation&&e.stopPropagation();a.cancelBubble=f;a.Bb=c};a.Bb=d;a.stopImmediatePropagation=function(){e.stopImmediatePropagation&&e.stopImmediatePropagation();
8
+ a.mc=c;a.stopPropagation()};a.mc=d;if(a.clientX!=h){g=document.documentElement;var j=document.body;a.pageX=a.clientX+(g&&g.scrollLeft||j&&j.scrollLeft||0)-(g&&g.clientLeft||j&&j.clientLeft||0);a.pageY=a.clientY+(g&&g.scrollTop||j&&j.scrollTop||0)-(g&&g.clientTop||j&&j.clientTop||0)}a.which=a.charCode||a.keyCode;a.button!=h&&(a.button=a.button&1?0:a.button&4?1:a.button&2?2:0)}return a};
9
+ u.k=function(a,c){var d=u.lc(a)?u.getData(a):{},e=a.parentNode||a.ownerDocument;"string"===typeof c&&(c={type:c,target:a});c=u.hc(c);d.S&&d.S.call(a,c);if(e&&!c.Bb())u.k(e,c);else if(!e&&!c.zb()&&(d=u.getData(c.target),c.target[c.type])){d.disabled=f;if("function"===typeof c.target[c.type])c.target[c.type]();d.disabled=l}return!c.zb()};u.Q=function(a,c,d){u.d(a,c,function(){u.t(a,c,arguments.callee);d.apply(this,arguments)})};var w=Object.prototype.hasOwnProperty;
10
+ u.e=function(a,c){var d=document.createElement(a||"div"),e;for(e in c)w.call(c,e)&&(-1!==e.indexOf("aria-")||"role"==e?d.setAttribute(e,c[e]):d[e]=c[e]);return d};u.Y=function(a){return a.charAt(0).toUpperCase()+a.slice(1)};u.i={};u.i.create=Object.create||function(a){function c(){}c.prototype=a;return new c};u.i.sa=function(a,c,d){for(var e in a)w.call(a,e)&&c.call(d||this,e,a[e])};u.i.B=function(a,c){if(!c)return a;for(var d in c)w.call(c,d)&&(a[d]=c[d]);return a};
11
+ u.i.gc=function(a,c){var d,e,g;a=u.i.copy(a);for(d in c)w.call(c,d)&&(e=a[d],g=c[d],a[d]=u.i.nc(e)&&u.i.nc(g)?u.i.gc(e,g):c[d]);return a};u.i.copy=function(a){return u.i.B({},a)};u.i.nc=function(a){return!!a&&"object"===typeof a&&"[object Object]"===a.toString()&&a.constructor===Object};u.bind=function(a,c,d){function e(){return c.apply(a,arguments)}c.u||(c.u=u.u++);e.u=d?d+"_"+c.u:c.u;return e};u.qa={};u.u=1;u.expando="vdata"+(new Date).getTime();
12
+ u.getData=function(a){var c=a[u.expando];c||(c=a[u.expando]=u.u++,u.qa[c]={});return u.qa[c]};u.lc=function(a){a=a[u.expando];return!(!a||u.Ab(u.qa[a]))};u.sc=function(a){var c=a[u.expando];if(c){delete u.qa[c];try{delete a[u.expando]}catch(d){a.removeAttribute?a.removeAttribute(u.expando):a[u.expando]=h}}};u.Ab=function(a){for(var c in a)if(a[c]!==h)return l;return f};u.p=function(a,c){-1==(" "+a.className+" ").indexOf(" "+c+" ")&&(a.className=""===a.className?c:a.className+" "+c)};
13
+ u.w=function(a,c){if(-1!=a.className.indexOf(c)){for(var d=a.className.split(" "),e=d.length-1;0<=e;e--)d[e]===c&&d.splice(e,1);a.className=d.join(" ")}};u.ib=u.e("video");u.O=navigator.userAgent;u.Bc=!!u.O.match(/iPhone/i);u.Ac=!!u.O.match(/iPad/i);u.Cc=!!u.O.match(/iPod/i);u.Ub=u.Bc||u.Ac||u.Cc;var aa=u,x;var y=u.O.match(/OS (\d+)_/i);x=y&&y[1]?y[1]:b;aa.qd=x;u.ab=!!u.O.match(/Android.*AppleWebKit/i);var ba=u,z=u.O.match(/Android (\d+)\./i);ba.yc=z&&z[1]?z[1]:h;u.zc=function(){return!!u.O.match("Firefox")};
14
+ u.wb=function(a){var c={};if(a&&a.attributes&&0<a.attributes.length)for(var d=a.attributes,e,g,j=d.length-1;0<=j;j--){e=d[j].name;g=d[j].value;if("boolean"===typeof a[e]||-1!==",autoplay,controls,loop,muted,default,".indexOf(","+e+","))g=g!==h?f:l;c[e]=g}return c};u.td=function(a,c){var d="";document.defaultView&&document.defaultView.getComputedStyle?d=document.defaultView.getComputedStyle(a,"").getPropertyValue(c):a.currentStyle&&(d=a["client"+c.substr(0,1).toUpperCase()+c.substr(1)]+"px");return d};
15
+ u.yb=function(a,c){c.firstChild?c.insertBefore(a,c.firstChild):c.appendChild(a)};u.Nb={};u.s=function(a){0===a.indexOf("#")&&(a=a.slice(1));return document.getElementById(a)};u.Ha=function(a,c){c=c||a;var d=Math.floor(a%60),e=Math.floor(a/60%60),g=Math.floor(a/3600),j=Math.floor(c/60%60),k=Math.floor(c/3600),g=0<g||0<k?g+":":"";return g+(((g||10<=j)&&10>e?"0"+e:e)+":")+(10>d?"0"+d:d)};u.Gc=function(){document.body.focus();document.onselectstart=r(l)};u.ld=function(){document.onselectstart=r(f)};
16
+ u.trim=function(a){return a.toString().replace(/^\s+/,"").replace(/\s+$/,"")};u.round=function(a,c){c||(c=0);return Math.round(a*Math.pow(10,c))/Math.pow(10,c)};u.tb=function(a,c){return{length:1,start:function(){return a},end:function(){return c}}};
17
+ u.get=function(a,c,d){var e=0===a.indexOf("file:")||0===window.location.href.indexOf("file:")&&-1===a.indexOf("http");"undefined"===typeof XMLHttpRequest&&(window.XMLHttpRequest=function(){try{return new window.ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(a){}try{return new window.ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(c){}try{return new window.ActiveXObject("Msxml2.XMLHTTP")}catch(d){}throw Error("This browser does not support XMLHttpRequest.");});var g=new XMLHttpRequest;try{g.open("GET",a)}catch(j){d(j)}g.onreadystatechange=
18
+ function(){4===g.readyState&&(200===g.status||e&&0===g.status?c(g.responseText):d&&d())};try{g.send()}catch(k){d&&d(k)}};u.dd=function(a){try{var c=window.localStorage||l;c&&(c.volume=a)}catch(d){22==d.code||1014==d.code?u.log("LocalStorage Full (VideoJS)",d):18==d.code?u.log("LocalStorage not allowed (VideoJS)",d):u.log("LocalStorage Error (VideoJS)",d)}};u.jc=function(a){a.match(/^https?:\/\//)||(a=u.e("div",{innerHTML:'<a href="'+a+'">x</a>'}).firstChild.href);return a};
19
+ u.log=function(){u.log.history=u.log.history||[];u.log.history.push(arguments);window.console&&window.console.log(Array.prototype.slice.call(arguments))};u.Oc=function(a){var c,d;a.getBoundingClientRect&&a.parentNode&&(c=a.getBoundingClientRect());if(!c)return{left:0,top:0};a=document.documentElement;d=document.body;return{left:c.left+(window.pageXOffset||d.scrollLeft)-(a.clientLeft||d.clientLeft||0),top:c.top+(window.pageYOffset||d.scrollTop)-(a.clientTop||d.clientTop||0)}};
20
+ u.c=u.ma.extend({g:function(a,c,d){this.a=a;this.f=u.i.copy(this.f);c=this.options(c);this.L=c.id||(c.el&&c.el.id?c.el.id:a.id()+"_component_"+u.u++);this.Tc=c.name||h;this.b=c.el||this.e();this.D=[];this.rb={};this.R={};if((a=this.f)&&a.children){var e=this;u.i.sa(a.children,function(a,c){c!==l&&!c.loadEvent&&(e[a]=e.X(a,c))})}this.M(d)}});t=u.c.prototype;
21
+ t.C=function(){if(this.D)for(var a=this.D.length-1;0<=a;a--)this.D[a].C&&this.D[a].C();this.R=this.rb=this.D=h;this.t();this.b.parentNode&&this.b.parentNode.removeChild(this.b);u.sc(this.b);this.b=h};t.pc=p("a");t.options=function(a){return a===b?this.f:this.f=u.i.gc(this.f,a)};t.e=function(a,c){return u.e(a,c)};t.s=p("b");t.id=p("L");t.name=p("Tc");t.children=p("D");
22
+ t.X=function(a,c){var d,e;"string"===typeof a?(e=a,c=c||{},d=c.componentClass||u.Y(e),c.name=e,d=new window.videojs[d](this.a||this,c)):d=a;this.D.push(d);"function"===typeof d.id&&(this.rb[d.id()]=d);(e=e||d.name&&d.name())&&(this.R[e]=d);"function"===typeof d.el&&d.el()&&(this.ra||this.b).appendChild(d.el());return d};
23
+ t.removeChild=function(a){"string"===typeof a&&(a=this.R[a]);if(a&&this.D){for(var c=l,d=this.D.length-1;0<=d;d--)if(this.D[d]===a){c=f;this.D.splice(d,1);break}c&&(this.rb[a.id]=h,this.R[a.name]=h,(c=a.s())&&c.parentNode===(this.ra||this.b)&&(this.ra||this.b).removeChild(a.s()))}};t.P=r("");t.d=function(a,c){u.d(this.b,a,u.bind(this,c));return this};t.t=function(a,c){u.t(this.b,a,c);return this};t.Q=function(a,c){u.Q(this.b,a,u.bind(this,c));return this};t.k=function(a,c){u.k(this.b,a,c);return this};
24
+ t.M=function(a){a&&(this.$?a.call(this):(this.Qa===b&&(this.Qa=[]),this.Qa.push(a)));return this};t.Ta=function(){this.$=f;var a=this.Qa;if(a&&0<a.length){for(var c=0,d=a.length;c<d;c++)a[c].call(this);this.Qa=[];this.k("ready")}};t.p=function(a){u.p(this.b,a);return this};t.w=function(a){u.w(this.b,a);return this};t.show=function(){this.b.style.display="block";return this};t.v=function(){this.b.style.display="none";return this};t.ja=function(){this.w("vjs-fade-out");this.p("vjs-fade-in");return this};
25
+ t.Ga=function(){this.w("vjs-fade-in");this.p("vjs-fade-out");return this};t.oc=function(){this.p("vjs-lock-showing");return this};t.Ua=function(){this.w("vjs-lock-showing");return this};t.disable=function(){this.v();this.show=m();this.ja=m()};t.width=function(a,c){return A(this,"width",a,c)};t.height=function(a,c){return A(this,"height",a,c)};t.Kc=function(a,c){return this.width(a,f).height(c)};
26
+ function A(a,c,d,e){if(d!==b)return a.b.style[c]=-1!==(""+d).indexOf("%")||-1!==(""+d).indexOf("px")?d:"auto"===d?"":d+"px",e||a.k("resize"),a;if(!a.b)return 0;d=a.b.style[c];e=d.indexOf("px");return-1!==e?parseInt(d.slice(0,e),10):parseInt(a.b["offset"+u.Y(c)],10)}
27
+ u.o=u.c.extend({g:function(a,c){u.c.call(this,a,c);var d=l;this.d("touchstart",function(){d=f});this.d("touchmove",function(){d=l});var e=this;this.d("touchend",function(a){d&&e.n(a);a.preventDefault();a.stopPropagation()});this.d("click",this.n);this.d("focus",this.La);this.d("blur",this.Ka)}});t=u.o.prototype;
28
+ t.e=function(a,c){c=u.i.B({className:this.P(),innerHTML:'<div class="vjs-control-content"><span class="vjs-control-text">'+(this.pa||"Need Text")+"</span></div>",ad:"button","aria-live":"polite",tabIndex:0},c);return u.c.prototype.e.call(this,a,c)};t.P=function(){return"vjs-control "+u.c.prototype.P.call(this)};t.n=m();t.La=function(){u.d(document,"keyup",u.bind(this,this.aa))};t.aa=function(a){if(32==a.which||13==a.which)a.preventDefault(),this.n()};
29
+ t.Ka=function(){u.t(document,"keyup",u.bind(this,this.aa))};u.J=u.c.extend({g:function(a,c){u.c.call(this,a,c);this.Fc=this.R[this.f.barName];this.handle=this.R[this.f.handleName];a.d(this.qc,u.bind(this,this.update));this.d("mousedown",this.Ma);this.d("touchstart",this.Ma);this.d("focus",this.La);this.d("blur",this.Ka);this.d("click",this.n);this.a.d("controlsvisible",u.bind(this,this.update));a.M(u.bind(this,this.update));this.K={}}});t=u.J.prototype;
30
+ t.e=function(a,c){c=c||{};c.className+=" vjs-slider";c=u.i.B({ad:"slider","aria-valuenow":0,"aria-valuemin":0,"aria-valuemax":100,tabIndex:0},c);return u.c.prototype.e.call(this,a,c)};t.Ma=function(a){a.preventDefault();u.Gc();this.K.move=u.bind(this,this.Gb);this.K.end=u.bind(this,this.Hb);u.d(document,"mousemove",this.K.move);u.d(document,"mouseup",this.K.end);u.d(document,"touchmove",this.K.move);u.d(document,"touchend",this.K.end);this.Gb(a)};
31
+ t.Hb=function(){u.ld();u.t(document,"mousemove",this.K.move,l);u.t(document,"mouseup",this.K.end,l);u.t(document,"touchmove",this.K.move,l);u.t(document,"touchend",this.K.end,l);this.update()};t.update=function(){if(this.b){var a,c=this.xb(),d=this.handle,e=this.Fc;isNaN(c)&&(c=0);a=c;if(d){a=this.b.offsetWidth;var g=d.s().offsetWidth;a=g?g/a:0;c*=1-a;a=c+a/2;d.s().style.left=u.round(100*c,2)+"%"}e.s().style.width=u.round(100*a,2)+"%"}};
32
+ function B(a,c){var d,e,g,j;d=a.b;e=u.Oc(d);j=g=d.offsetWidth;d=a.handle;if(a.f.md)return j=e.top,e=c.changedTouches?c.changedTouches[0].pageY:c.pageY,d&&(d=d.s().offsetHeight,j+=d/2,g-=d),Math.max(0,Math.min(1,(j-e+g)/g));g=e.left;e=c.changedTouches?c.changedTouches[0].pageX:c.pageX;d&&(d=d.s().offsetWidth,g+=d/2,j-=d);return Math.max(0,Math.min(1,(e-g)/j))}t.La=function(){u.d(document,"keyup",u.bind(this,this.aa))};
33
+ t.aa=function(a){37==a.which?(a.preventDefault(),this.vc()):39==a.which&&(a.preventDefault(),this.wc())};t.Ka=function(){u.t(document,"keyup",u.bind(this,this.aa))};t.n=function(a){a.stopImmediatePropagation();a.preventDefault()};u.ha=u.c.extend();u.ha.prototype.defaultValue=0;u.ha.prototype.e=function(a,c){c=c||{};c.className+=" vjs-slider-handle";c=u.i.B({innerHTML:'<span class="vjs-control-text">'+this.defaultValue+"</span>"},c);return u.c.prototype.e.call(this,"div",c)};u.na=u.c.extend();
34
+ function ca(a,c){a.X(c);c.d("click",u.bind(a,function(){this.Ua()}))}u.na.prototype.e=function(){var a=this.options().Ic||"ul";this.ra=u.e(a,{className:"vjs-menu-content"});a=u.c.prototype.e.call(this,"div",{append:this.ra,className:"vjs-menu"});a.appendChild(this.ra);u.d(a,"click",function(a){a.preventDefault();a.stopImmediatePropagation()});return a};u.I=u.o.extend({g:function(a,c){u.o.call(this,a,c);this.selected(c.selected)}});
35
+ u.I.prototype.e=function(a,c){return u.o.prototype.e.call(this,"li",u.i.B({className:"vjs-menu-item",innerHTML:this.f.label},c))};u.I.prototype.n=function(){this.selected(f)};u.I.prototype.selected=function(a){a?(this.p("vjs-selected"),this.b.setAttribute("aria-selected",f)):(this.w("vjs-selected"),this.b.setAttribute("aria-selected",l))};
36
+ u.ea=u.o.extend({g:function(a,c){u.o.call(this,a,c);this.ua=this.Fa();this.X(this.ua);this.G&&0===this.G.length&&this.v();this.d("keyup",this.aa);this.b.setAttribute("aria-haspopup",f);this.b.setAttribute("role","button")}});t=u.ea.prototype;t.oa=l;t.Fa=function(){var a=new u.na(this.a);this.options().title&&a.s().appendChild(u.e("li",{className:"vjs-menu-title",innerHTML:u.Y(this.A),jd:-1}));if(this.G=this.sb())for(var c=0;c<this.G.length;c++)ca(a,this.G[c]);return a};t.sb=m();
37
+ t.P=function(){return this.className+" vjs-menu-button "+u.o.prototype.P.call(this)};t.La=m();t.Ka=m();t.n=function(){this.Q("mouseout",u.bind(this,function(){this.ua.Ua();this.b.blur()}));this.oa?C(this):D(this)};t.aa=function(a){a.preventDefault();32==a.which||13==a.which?this.oa?C(this):D(this):27==a.which&&this.oa&&C(this)};function D(a){a.oa=f;a.ua.oc();a.b.setAttribute("aria-pressed",f);a.G&&0<a.G.length&&a.G[0].s().focus()}function C(a){a.oa=l;a.ua.Ua();a.b.setAttribute("aria-pressed",l)}
38
+ u.ga=u.c.extend({g:function(a,c,d){this.N=a;c=u.i.B(da(a),c);this.r={};this.rc=c.poster;this.Ea=c.controls;c.customControlsOnMobile!==f&&(u.Ub||u.ab)?(a.controls=c.controls,this.Ea=l):a.controls=l;u.c.call(this,this,c,d);this.Q("play",function(a){u.k(this.b,{type:"firstplay",target:this.b})||(a.preventDefault(),a.stopPropagation(),a.stopImmediatePropagation())});this.d("ended",this.Vc);this.d("play",this.Jb);this.d("firstplay",this.Wc);this.d("pause",this.Ib);this.d("progress",this.Yc);this.d("durationchange",
39
+ this.Uc);this.d("error",this.Fb);this.d("fullscreenchange",this.Xc);u.Na[this.L]=this;c.plugins&&u.i.sa(c.plugins,function(a,c){this[a](c)},this)}});t=u.ga.prototype;t.f=u.options;t.C=function(){u.Na[this.L]=h;this.N&&this.N.player&&(this.N.player=h);this.b&&this.b.player&&(this.b.player=h);clearInterval(this.Pa);this.va();this.h&&this.h.C();u.c.prototype.C.call(this)};
40
+ function da(a){var c={sources:[],tracks:[]};u.i.B(c,u.wb(a));if(a.hasChildNodes())for(var d,e=a.childNodes,g=0,j=e.length;g<j;g++)a=e[g],d=a.nodeName.toLowerCase(),"source"===d?c.sources.push(u.wb(a)):"track"===d&&c.tracks.push(u.wb(a));return c}
41
+ t.e=function(){var a=this.b=u.c.prototype.e.call(this,"div"),c=this.N;c.removeAttribute("width");c.removeAttribute("height");if(c.hasChildNodes())for(var d=c.childNodes.length,e=0,g=c.childNodes;e<d;e++)("source"==g[0].nodeName.toLowerCase()||"track"==g[0].nodeName.toLowerCase())&&c.removeChild(g[0]);c.id=c.id||"vjs_video_"+u.u++;a.id=c.id;a.className=c.className;c.id+="_html5_api";c.className="vjs-tech";c.player=a.player=this;this.p("vjs-paused");this.width(this.f.width,f);this.height(this.f.height,
42
+ f);c.parentNode&&c.parentNode.insertBefore(a,c);u.yb(c,a);return a};
43
+ function E(a,c,d){a.h?F(a):"Html5"!==c&&a.N&&(a.b.removeChild(a.N),a.N.pc=h,a.N=h);a.ba=c;a.$=l;var e=u.i.B({source:d,parentEl:a.b},a.f[c.toLowerCase()]);d&&(d.src==a.r.src&&0<a.r.currentTime&&(e.startTime=a.r.currentTime),a.r.src=d.src);a.h=new window.videojs[c](a,e);a.h.M(function(){this.a.Ta();if(!this.j.Lb){var a=this.a;a.Db=f;a.Pa=setInterval(u.bind(a,function(){this.r.nb<this.buffered().end(0)?this.k("progress"):1==G(this)&&(clearInterval(this.Pa),this.k("progress"))}),500);a.h.Q("progress",
44
+ function(){this.j.Lb=f;var a=this.a;a.Db=l;clearInterval(a.Pa)})}this.j.Ob||(a=this.a,a.Eb=f,a.d("play",a.xc),a.d("pause",a.va),a.h.Q("timeupdate",function(){this.j.Ob=f;H(this.a)}))})}function F(a){a.$=l;a.h.C();a.Db&&(a.Db=l,clearInterval(a.Pa));a.Eb&&H(a);a.h=l}function H(a){a.Eb=l;a.va();a.t("play",a.xc);a.t("pause",a.va)}t.xc=function(){this.fc&&this.va();this.fc=setInterval(u.bind(this,function(){this.k("timeupdate")}),250)};t.va=function(){clearInterval(this.fc)};
45
+ t.Vc=function(){this.f.loop&&(this.currentTime(0),this.play())};t.Jb=function(){u.w(this.b,"vjs-paused");u.p(this.b,"vjs-playing")};t.Wc=function(){this.f.starttime&&this.currentTime(this.f.starttime)};t.Ib=function(){u.w(this.b,"vjs-playing");u.p(this.b,"vjs-paused")};t.Yc=function(){1==G(this)&&this.k("loadedalldata")};t.Uc=function(){this.duration(I(this,"duration"))};t.Fb=function(a){u.log("Video Error",a)};t.Xc=function(){this.F?this.p("vjs-fullscreen"):this.w("vjs-fullscreen")};
46
+ function J(a,c,d){if(a.h&&a.h.$)a.h.M(function(){this[c](d)});else try{a.h[c](d)}catch(e){throw u.log(e),e;}}function I(a,c){if(a.h.$)try{return a.h[c]()}catch(d){throw a.h[c]===b?u.log("Video.js: "+c+" method not defined for "+a.ba+" playback technology.",d):"TypeError"==d.name?(u.log("Video.js: "+c+" unavailable on "+a.ba+" playback technology element.",d),a.h.$=l):u.log(d),d;}}t.play=function(){J(this,"play");return this};t.pause=function(){J(this,"pause");return this};
47
+ t.paused=function(){return I(this,"paused")===l?l:f};t.currentTime=function(a){return a!==b?(this.r.vd=a,J(this,"setCurrentTime",a),this.Eb&&this.k("timeupdate"),this):this.r.currentTime=I(this,"currentTime")||0};t.duration=function(a){return a!==b?(this.r.duration=parseFloat(a),this):this.r.duration};t.buffered=function(){var a=I(this,"buffered"),c=this.r.nb=this.r.nb||0;a&&(0<a.length&&a.end(0)!==c)&&(c=a.end(0),this.r.nb=c);return u.tb(0,c)};
48
+ function G(a){return a.duration()?a.buffered().end(0)/a.duration():0}t.volume=function(a){if(a!==b)return a=Math.max(0,Math.min(1,parseFloat(a))),this.r.volume=a,J(this,"setVolume",a),u.dd(a),this;a=parseFloat(I(this,"volume"));return isNaN(a)?1:a};t.muted=function(a){return a!==b?(J(this,"setMuted",a),this):I(this,"muted")||l};t.Sa=function(){return I(this,"supportsFullScreen")||l};
49
+ t.Ra=function(){var a=u.Nb.Ra;this.F=f;a?(u.d(document,a.Z,u.bind(this,function(){this.F=document[a.F];this.F===l&&u.t(document,a.Z,arguments.callee)})),this.h.j.Ia===l&&this.f.flash.iFrameMode!==f&&(this.pause(),F(this),u.d(document,a.Z,u.bind(this,function(){u.t(document,a.Z,arguments.callee);E(this,this.ba,{src:this.r.src})}))),this.b[a.tc](),this.k("fullscreenchange")):this.h.Sa()?J(this,"enterFullScreen"):(this.Qc=f,this.Lc=document.documentElement.style.overflow,u.d(document,"keydown",u.bind(this,
50
+ this.ic)),document.documentElement.style.overflow="hidden",u.p(document.body,"vjs-full-window"),this.k("enterFullWindow"),this.k("fullscreenchange"));return this};function K(a){var c=u.Nb.Ra;a.F=l;c?(a.h.j.Ia===l&&a.f.flash.iFrameMode!==f&&(a.pause(),F(a),u.d(document,c.Z,u.bind(a,function(){u.t(document,c.Z,arguments.callee);E(this,this.ba,{src:this.r.src})}))),document[c.pb](),a.k("fullscreenchange")):a.h.Sa()?J(a,"exitFullScreen"):(L(a),a.k("fullscreenchange"))}
51
+ t.ic=function(a){27===a.keyCode&&(this.F===f?K(this):L(this))};function L(a){a.Qc=l;u.t(document,"keydown",a.ic);document.documentElement.style.overflow=a.Lc;u.w(document.body,"vjs-full-window");a.k("exitFullWindow")}
52
+ t.src=function(a){if(a instanceof Array){var c;a:{c=a;for(var d=0,e=this.f.techOrder;d<e.length;d++){var g=u.Y(e[d]),j=window.videojs[g];if(j.isSupported())for(var k=0,q=c;k<q.length;k++){var n=q[k];if(j.canPlaySource(n)){c={source:n,h:g};break a}}}c=l}c?(a=c.source,c=c.h,c==this.ba?this.src(a):E(this,c,a)):this.b.appendChild(u.e("p",{innerHTML:'Sorry, no compatible source and playback technology were found for this video. Try using another browser like <a href="http://bit.ly/ccMUEC">Chrome</a> or download the latest <a href="http://adobe.ly/mwfN1">Adobe Flash Player</a>.'}))}else a instanceof
53
+ Object?window.videojs[this.ba].canPlaySource(a)?this.src(a.src):this.src([a]):(this.r.src=a,this.$?(J(this,"src",a),"auto"==this.f.preload&&this.load(),this.f.autoplay&&this.play()):this.M(function(){this.src(a)}));return this};t.load=function(){J(this,"load");return this};t.currentSrc=function(){return I(this,"currentSrc")||this.r.src||""};t.Oa=function(a){return a!==b?(J(this,"setPreload",a),this.f.preload=a,this):I(this,"preload")};
54
+ t.autoplay=function(a){return a!==b?(J(this,"setAutoplay",a),this.f.autoplay=a,this):I(this,"autoplay")};t.loop=function(a){return a!==b?(J(this,"setLoop",a),this.f.loop=a,this):I(this,"loop")};t.poster=function(a){a!==b&&(this.rc=a);return this.rc};t.controls=function(a){a!==b&&this.Ea!==a&&(this.Ea=!!a,this.k("controlschange"));return this.Ea};t.error=function(){return I(this,"error")};var M,N,O;O=document.createElement("div");N={};
55
+ O.rd!==b?(N.tc="requestFullscreen",N.pb="exitFullscreen",N.Z="fullscreenchange",N.F="fullScreen"):(document.mozCancelFullScreen?(M="moz",N.F=M+"FullScreen"):(M="webkit",N.F=M+"IsFullScreen"),O[M+"RequestFullScreen"]&&(N.tc=M+"RequestFullScreen",N.pb=M+"CancelFullScreen"),N.Z=M+"fullscreenchange");document[N.pb]&&(u.Nb.Ra=N);
56
+ u.da=u.c.extend({g:function(a,c){u.c.call(this,a,c);a.controls()||this.disable();a.Q("play",u.bind(this,function(){var a,c=u.bind(this,this.ja),g=u.bind(this,this.Ga);this.ja();"ontouchstart"in window||(this.a.d("mouseover",c),this.a.d("mouseout",g),this.a.d("pause",u.bind(this,this.oc)),this.a.d("play",u.bind(this,this.Ua)));a=l;this.a.d("touchstart",function(){a=f});this.a.d("touchmove",function(){a=l});this.a.d("touchend",u.bind(this,function(c){var e;a&&(e=this.s().className.search("fade-in"),
57
+ -1!==e?this.Ga():this.ja());a=l;this.a.paused()||c.preventDefault()}))}))}});u.da.prototype.f={wd:"play",children:{playToggle:{},currentTimeDisplay:{},timeDivider:{},durationDisplay:{},remainingTimeDisplay:{},progressControl:{},fullscreenToggle:{},volumeControl:{},muteToggle:{}}};u.da.prototype.e=function(){return u.e("div",{className:"vjs-control-bar"})};u.da.prototype.ja=function(){u.c.prototype.ja.call(this);this.a.k("controlsvisible")};
58
+ u.da.prototype.Ga=function(){u.c.prototype.Ga.call(this);this.a.k("controlshidden")};u.Xb=u.o.extend({g:function(a,c){u.o.call(this,a,c);a.d("play",u.bind(this,this.Jb));a.d("pause",u.bind(this,this.Ib))}});t=u.Xb.prototype;t.pa="Play";t.P=function(){return"vjs-play-control "+u.o.prototype.P.call(this)};t.n=function(){this.a.paused()?this.a.play():this.a.pause()};t.Jb=function(){u.w(this.b,"vjs-paused");u.p(this.b,"vjs-playing");this.b.children[0].children[0].innerHTML="Pause"};
59
+ t.Ib=function(){u.w(this.b,"vjs-playing");u.p(this.b,"vjs-paused");this.b.children[0].children[0].innerHTML="Play"};u.Ya=u.c.extend({g:function(a,c){u.c.call(this,a,c);a.d("timeupdate",u.bind(this,this.ya))}});
60
+ u.Ya.prototype.e=function(){var a=u.c.prototype.e.call(this,"div",{className:"vjs-current-time vjs-time-controls vjs-control"});this.content=u.e("div",{className:"vjs-current-time-display",innerHTML:'<span class="vjs-control-text">Current Time </span>0:00',"aria-live":"off"});a.appendChild(u.e("div").appendChild(this.content));return a};
61
+ u.Ya.prototype.ya=function(){var a=this.a.Mb?this.a.r.currentTime:this.a.currentTime();this.content.innerHTML='<span class="vjs-control-text">Current Time </span>'+u.Ha(a,this.a.duration())};u.Za=u.c.extend({g:function(a,c){u.c.call(this,a,c);a.d("timeupdate",u.bind(this,this.ya))}});
62
+ u.Za.prototype.e=function(){var a=u.c.prototype.e.call(this,"div",{className:"vjs-duration vjs-time-controls vjs-control"});this.content=u.e("div",{className:"vjs-duration-display",innerHTML:'<span class="vjs-control-text">Duration Time </span>0:00',"aria-live":"off"});a.appendChild(u.e("div").appendChild(this.content));return a};u.Za.prototype.ya=function(){this.a.duration()&&(this.content.innerHTML='<span class="vjs-control-text">Duration Time </span>'+u.Ha(this.a.duration()))};
63
+ u.ac=u.c.extend({g:function(a,c){u.c.call(this,a,c)}});u.ac.prototype.e=function(){return u.c.prototype.e.call(this,"div",{className:"vjs-time-divider",innerHTML:"<div><span>/</span></div>"})};u.gb=u.c.extend({g:function(a,c){u.c.call(this,a,c);a.d("timeupdate",u.bind(this,this.ya))}});
64
+ u.gb.prototype.e=function(){var a=u.c.prototype.e.call(this,"div",{className:"vjs-remaining-time vjs-time-controls vjs-control"});this.content=u.e("div",{className:"vjs-remaining-time-display",innerHTML:'<span class="vjs-control-text">Remaining Time </span>-0:00',"aria-live":"off"});a.appendChild(u.e("div").appendChild(this.content));return a};
65
+ u.gb.prototype.ya=function(){this.a.duration()&&this.a.duration()&&(this.content.innerHTML='<span class="vjs-control-text">Remaining Time </span>-'+u.Ha(this.a.duration()-this.a.currentTime()))};u.Aa=u.o.extend({g:function(a,c){u.o.call(this,a,c)}});u.Aa.prototype.pa="Fullscreen";u.Aa.prototype.P=function(){return"vjs-fullscreen-control "+u.o.prototype.P.call(this)};
66
+ u.Aa.prototype.n=function(){this.a.F?(K(this.a),this.b.children[0].children[0].innerHTML="Fullscreen"):(this.a.Ra(),this.b.children[0].children[0].innerHTML="Non-Fullscreen")};u.fb=u.c.extend({g:function(a,c){u.c.call(this,a,c)}});u.fb.prototype.f={children:{seekBar:{}}};u.fb.prototype.e=function(){return u.c.prototype.e.call(this,"div",{className:"vjs-progress-control vjs-control"})};u.Yb=u.J.extend({g:function(a,c){u.J.call(this,a,c);a.d("timeupdate",u.bind(this,this.xa));a.M(u.bind(this,this.xa))}});
67
+ t=u.Yb.prototype;t.f={children:{loadProgressBar:{},playProgressBar:{},seekHandle:{}},barName:"playProgressBar",handleName:"seekHandle"};t.qc="timeupdate";t.e=function(){return u.J.prototype.e.call(this,"div",{className:"vjs-progress-holder","aria-label":"video progress bar"})};t.xa=function(){var a=this.a.Mb?this.a.r.currentTime:this.a.currentTime();this.b.setAttribute("aria-valuenow",u.round(100*this.xb(),2));this.b.setAttribute("aria-valuetext",u.Ha(a,this.a.duration()))};
68
+ t.xb=function(){return this.a.currentTime()/this.a.duration()};t.Ma=function(a){u.J.prototype.Ma.call(this,a);this.a.Mb=f;this.nd=!this.a.paused();this.a.pause()};t.Gb=function(a){a=B(this,a)*this.a.duration();a==this.a.duration()&&(a-=0.1);this.a.currentTime(a)};t.Hb=function(a){u.J.prototype.Hb.call(this,a);this.a.Mb=l;this.nd&&this.a.play()};t.wc=function(){this.a.currentTime(this.a.currentTime()+5)};t.vc=function(){this.a.currentTime(this.a.currentTime()-5)};
69
+ u.bb=u.c.extend({g:function(a,c){u.c.call(this,a,c);a.d("progress",u.bind(this,this.update))}});u.bb.prototype.e=function(){return u.c.prototype.e.call(this,"div",{className:"vjs-load-progress",innerHTML:'<span class="vjs-control-text">Loaded: 0%</span>'})};u.bb.prototype.update=function(){this.b.style&&(this.b.style.width=u.round(100*G(this.a),2)+"%")};u.Wb=u.c.extend({g:function(a,c){u.c.call(this,a,c)}});
70
+ u.Wb.prototype.e=function(){return u.c.prototype.e.call(this,"div",{className:"vjs-play-progress",innerHTML:'<span class="vjs-control-text">Progress: 0%</span>'})};u.hb=u.ha.extend();u.hb.prototype.defaultValue="00:00";u.hb.prototype.e=function(){return u.ha.prototype.e.call(this,"div",{className:"vjs-seek-handle"})};u.kb=u.c.extend({g:function(a,c){u.c.call(this,a,c);a.h&&(a.h.j&&a.h.j.T===l)&&this.p("vjs-hidden");a.d("loadstart",u.bind(this,function(){a.h.j&&a.h.j.T===l?this.p("vjs-hidden"):this.w("vjs-hidden")}))}});
71
+ u.kb.prototype.f={children:{volumeBar:{}}};u.kb.prototype.e=function(){return u.c.prototype.e.call(this,"div",{className:"vjs-volume-control vjs-control"})};u.jb=u.J.extend({g:function(a,c){u.J.call(this,a,c);a.d("volumechange",u.bind(this,this.xa));a.M(u.bind(this,this.xa));setTimeout(u.bind(this,this.update),0)}});t=u.jb.prototype;t.xa=function(){this.b.setAttribute("aria-valuenow",u.round(100*this.a.volume(),2));this.b.setAttribute("aria-valuetext",u.round(100*this.a.volume(),2)+"%")};
72
+ t.f={children:{volumeLevel:{},volumeHandle:{}},barName:"volumeLevel",handleName:"volumeHandle"};t.qc="volumechange";t.e=function(){return u.J.prototype.e.call(this,"div",{className:"vjs-volume-bar","aria-label":"volume level"})};t.Gb=function(a){this.a.volume(B(this,a))};t.xb=function(){return this.a.muted()?0:this.a.volume()};t.wc=function(){this.a.volume(this.a.volume()+0.1)};t.vc=function(){this.a.volume(this.a.volume()-0.1)};u.bc=u.c.extend({g:function(a,c){u.c.call(this,a,c)}});
73
+ u.bc.prototype.e=function(){return u.c.prototype.e.call(this,"div",{className:"vjs-volume-level",innerHTML:'<span class="vjs-control-text"></span>'})};u.lb=u.ha.extend();u.lb.prototype.defaultValue="00:00";u.lb.prototype.e=function(){return u.ha.prototype.e.call(this,"div",{className:"vjs-volume-handle"})};
74
+ u.fa=u.o.extend({g:function(a,c){u.o.call(this,a,c);a.d("volumechange",u.bind(this,this.update));a.h&&(a.h.j&&a.h.j.T===l)&&this.p("vjs-hidden");a.d("loadstart",u.bind(this,function(){a.h.j&&a.h.j.T===l?this.p("vjs-hidden"):this.w("vjs-hidden")}))}});u.fa.prototype.e=function(){return u.o.prototype.e.call(this,"div",{className:"vjs-mute-control vjs-control",innerHTML:'<div><span class="vjs-control-text">Mute</span></div>'})};u.fa.prototype.n=function(){this.a.muted(this.a.muted()?l:f)};
75
+ u.fa.prototype.update=function(){var a=this.a.volume(),c=3;0===a||this.a.muted()?c=0:0.33>a?c=1:0.67>a&&(c=2);this.a.muted()?"Unmute"!=this.b.children[0].children[0].innerHTML&&(this.b.children[0].children[0].innerHTML="Unmute"):"Mute"!=this.b.children[0].children[0].innerHTML&&(this.b.children[0].children[0].innerHTML="Mute");for(a=0;4>a;a++)u.w(this.b,"vjs-vol-"+a);u.p(this.b,"vjs-vol-"+c)};
76
+ u.Ca=u.ea.extend({g:function(a,c){u.ea.call(this,a,c);a.d("volumechange",u.bind(this,this.update));a.h&&(a.h.j&&a.h.j.T===l)&&this.p("vjs-hidden");a.d("loadstart",u.bind(this,function(){a.h.j&&a.h.j.T===l?this.p("vjs-hidden"):this.w("vjs-hidden")}));this.p("vjs-menu-button")}});u.Ca.prototype.Fa=function(){var a=new u.na(this.a,{Ic:"div"}),c=new u.jb(this.a,u.i.B({md:f},this.f.zd));a.X(c);return a};u.Ca.prototype.n=function(){u.fa.prototype.n.call(this);u.ea.prototype.n.call(this)};
77
+ u.Ca.prototype.e=function(){return u.o.prototype.e.call(this,"div",{className:"vjs-volume-menu-button vjs-menu-button vjs-control",innerHTML:'<div><span class="vjs-control-text">Mute</span></div>'})};u.Ca.prototype.update=u.fa.prototype.update;u.eb=u.o.extend({g:function(a,c){u.o.call(this,a,c);(!a.poster()||!a.controls())&&this.v();a.d("play",u.bind(this,this.v))}});
78
+ u.eb.prototype.e=function(){var a=u.e("div",{className:"vjs-poster",tabIndex:-1}),c=this.a.poster();c&&("backgroundSize"in a.style?a.style.backgroundImage='url("'+c+'")':a.appendChild(u.e("img",{src:c})));return a};u.eb.prototype.n=function(){this.a.play()};
79
+ u.Vb=u.c.extend({g:function(a,c){u.c.call(this,a,c);a.d("canplay",u.bind(this,this.v));a.d("canplaythrough",u.bind(this,this.v));a.d("playing",u.bind(this,this.v));a.d("seeked",u.bind(this,this.v));a.d("seeking",u.bind(this,this.show));a.d("seeked",u.bind(this,this.v));a.d("error",u.bind(this,this.show));a.d("waiting",u.bind(this,this.show))}});u.Vb.prototype.e=function(){return u.c.prototype.e.call(this,"div",{className:"vjs-loading-spinner"})};
80
+ u.Wa=u.o.extend({g:function(a,c){u.o.call(this,a,c);a.controls()||this.v();a.d("play",u.bind(this,this.v))}});u.Wa.prototype.e=function(){return u.o.prototype.e.call(this,"div",{className:"vjs-big-play-button",innerHTML:"<span></span>","aria-label":"play video"})};u.Wa.prototype.n=function(){this.a.play()};u.q=u.c.extend({g:function(a,c,d){u.c.call(this,a,c,d)}});u.q.prototype.n=u.ab?m():function(){this.a.controls()&&(this.a.paused()?this.a.play():this.a.pause())};u.q.prototype.j={T:f,Ia:l,Lb:l,Ob:l};
81
+ u.media={};u.media.Va="play pause paused currentTime setCurrentTime duration buffered volume setVolume muted setMuted width height supportsFullScreen enterFullScreen src load currentSrc preload setPreload autoplay setAutoplay loop setLoop error networkState readyState seeking initialTime startOffsetTime played seekable ended videoTracks audioTracks videoWidth videoHeight textTracks defaultPlaybackRate playbackRate mediaGroup controller controls defaultMuted".split(" ");
82
+ function ea(){var a=u.media.Va[i];return function(){throw Error('The "'+a+"\" method is not available on the playback technology's API");}}for(var i=u.media.Va.length-1;0<=i;i--)u.q.prototype[u.media.Va[i]]=ea();
83
+ u.m=u.q.extend({g:function(a,c,d){this.j.T=u.m.Hc();this.j.Sc=!u.Ub;this.j.Ia=f;u.q.call(this,a,c,d);(c=c.source)&&this.b.currentSrc==c.src?a.k("loadstart"):c&&(this.b.src=c.src);a.M(function(){this.f.autoplay&&this.paused()&&(this.N.poster=h,this.play())});this.d("click",this.n);for(a=u.m.$a.length-1;0<=a;a--)u.d(this.b,u.m.$a[a],u.bind(this.a,this.Nc));this.Ta()}});t=u.m.prototype;t.C=function(){u.q.prototype.C.call(this)};
84
+ t.e=function(){var a=this.a,c=a.N;if(!c||this.j.Sc===l)c?(a.s().removeChild(c),c=c.cloneNode(l)):c=u.e("video",{id:a.id()+"_html5_api",className:"vjs-tech"}),c.player=a,u.yb(c,a.s());for(var d=["autoplay","preload","loop","muted"],e=d.length-1;0<=e;e--){var g=d[e];a.f[g]!==h&&(c[g]=a.f[g])}return c};t.Nc=function(a){this.k(a);a.stopPropagation()};t.play=function(){this.b.play()};t.pause=function(){this.b.pause()};t.paused=function(){return this.b.paused};t.currentTime=function(){return this.b.currentTime};
85
+ t.cd=function(a){try{this.b.currentTime=a}catch(c){u.log(c,"Video is not ready. (Video.js)")}};t.duration=function(){return this.b.duration||0};t.buffered=function(){return this.b.buffered};t.volume=function(){return this.b.volume};t.hd=function(a){this.b.volume=a};t.muted=function(){return this.b.muted};t.fd=function(a){this.b.muted=a};t.width=function(){return this.b.offsetWidth};t.height=function(){return this.b.offsetHeight};
86
+ t.Sa=function(){return"function"==typeof this.b.webkitEnterFullScreen&&(/Android/.test(u.O)||!/Chrome|Mac OS X 10.5/.test(u.O))?f:l};t.src=function(a){this.b.src=a};t.load=function(){this.b.load()};t.currentSrc=function(){return this.b.currentSrc};t.Oa=function(){return this.b.Oa};t.gd=function(a){this.b.Oa=a};t.autoplay=function(){return this.b.autoplay};t.bd=function(a){this.b.autoplay=a};t.loop=function(){return this.b.loop};t.ed=function(a){this.b.loop=a};t.error=function(){return this.b.error};
87
+ u.m.isSupported=function(){return!!document.createElement("video").canPlayType};u.m.ob=function(a){return!!document.createElement("video").canPlayType(a.type)};u.m.Hc=function(){var a=u.ib.volume;u.ib.volume=a/2+0.1;return a!==u.ib.volume};u.m.$a="loadstart suspend abort error emptied stalled loadedmetadata loadeddata canplay canplaythrough playing waiting seeking seeked ended durationchange timeupdate progress play pause ratechange volumechange".split(" ");
88
+ u.ab&&3>u.yc&&(document.createElement("video").constructor.prototype.canPlayType=function(a){return a&&-1!=a.toLowerCase().indexOf("video/mp4")?"maybe":""});
89
+ u.l=u.q.extend({g:function(a,c,d){u.q.call(this,a,c,d);d=c.source;var e=c.parentEl,g=this.b=u.e("div",{id:a.id()+"_temp_flash"}),j=a.id()+"_flash_api";a=a.f;var k=u.i.B({readyFunction:"videojs.Flash.onReady",eventProxyFunction:"videojs.Flash.onEvent",errorEventProxyFunction:"videojs.Flash.onError",autoplay:a.autoplay,preload:a.Oa,loop:a.loop,muted:a.muted},c.flashVars),q=u.i.B({wmode:"opaque",bgcolor:"#000000"},c.params),n=u.i.B({id:j,name:j,"class":"vjs-tech"},c.attributes);d&&(k.src=encodeURIComponent(u.jc(d.src)));
90
+ u.yb(g,e);c.startTime&&this.M(function(){this.load();this.play();this.currentTime(c.startTime)});if(c.iFrameMode===f&&!u.zc){var s=u.e("iframe",{id:j+"_iframe",name:j+"_iframe",className:"vjs-tech",scrolling:"no",marginWidth:0,marginHeight:0,frameBorder:0});k.readyFunction="ready";k.eventProxyFunction="events";k.errorEventProxyFunction="errors";u.d(s,"load",u.bind(this,function(){var a,d=s.contentWindow;a=s.contentDocument?s.contentDocument:s.contentWindow.document;a.write(u.l.kc(c.swf,k,q,n));d.player=
91
+ this.a;d.ready=u.bind(this.a,function(c){c=a.getElementById(c);var d=this.h;d.b=c;u.d(c,"click",d.bind(d.n));u.l.qb(d)});d.events=u.bind(this.a,function(a,c){this&&"flash"===this.ba&&this.k(c)});d.errors=u.bind(this.a,function(a,c){u.log("Flash Error",c)})}));g.parentNode.replaceChild(s,g)}else u.l.Mc(c.swf,g,k,q,n)}});t=u.l.prototype;t.C=function(){u.q.prototype.C.call(this)};t.play=function(){this.b.vjs_play()};t.pause=function(){this.b.vjs_pause()};
92
+ t.src=function(a){a=u.jc(a);this.b.vjs_src(a);if(this.a.autoplay()){var c=this;setTimeout(function(){c.play()},0)}};t.load=function(){this.b.vjs_load()};t.poster=function(){this.b.vjs_getProperty("poster")};t.buffered=function(){return u.tb(0,this.b.vjs_getProperty("buffered"))};t.Sa=r(l);var P=u.l.prototype,Q="preload currentTime defaultPlaybackRate playbackRate autoplay loop mediaGroup controller controls volume muted defaultMuted".split(" "),R="error currentSrc networkState readyState seeking initialTime duration startOffsetTime paused played seekable ended videoTracks audioTracks videoWidth videoHeight textTracks".split(" ");
93
+ function fa(){var a=Q[S],c=a.charAt(0).toUpperCase()+a.slice(1);P["set"+c]=function(c){return this.b.vjs_setProperty(a,c)}}function T(a){P[a]=function(){return this.b.vjs_getProperty(a)}}var S;for(S=0;S<Q.length;S++)T(Q[S]),fa();for(S=0;S<R.length;S++)T(R[S]);u.l.isSupported=function(){return 10<=u.l.version()[0]};u.l.ob=function(a){if(a.type in u.l.Pc)return"maybe"};u.l.Pc={"video/flv":"FLV","video/x-flv":"FLV","video/mp4":"MP4","video/m4v":"MP4"};
94
+ u.l.onReady=function(a){a=u.s(a);var c=a.player||a.parentNode.player,d=c.h;a.player=c;d.b=a;d.d("click",d.n);u.l.qb(d)};u.l.qb=function(a){a.s().vjs_getProperty?a.Ta():setTimeout(function(){u.l.qb(a)},50)};u.l.onEvent=function(a,c){u.s(a).player.k(c)};u.l.onError=function(a,c){u.s(a).player.k("error");u.log("Flash Error",c,a)};
95
+ u.l.version=function(){var a="0,0,0";try{a=(new window.ActiveXObject("ShockwaveFlash.ShockwaveFlash")).GetVariable("$version").replace(/\D+/g,",").match(/^,?(.+),?$/)[1]}catch(c){try{navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin&&(a=(navigator.plugins["Shockwave Flash 2.0"]||navigator.plugins["Shockwave Flash"]).description.replace(/\D+/g,",").match(/^,?(.+),?$/)[1])}catch(d){}}return a.split(",")};
96
+ u.l.Mc=function(a,c,d,e,g){a=u.l.kc(a,d,e,g);a=u.e("div",{innerHTML:a}).childNodes[0];d=c.parentNode;c.parentNode.replaceChild(a,c);var j=d.childNodes[0];setTimeout(function(){j.style.display="block"},1E3)};
97
+ u.l.kc=function(a,c,d,e){var g="",j="",k="";c&&u.i.sa(c,function(a,c){g+=a+"="+c+"&amp;"});d=u.i.B({movie:a,flashvars:g,allowScriptAccess:"always",allowNetworking:"all"},d);u.i.sa(d,function(a,c){j+='<param name="'+a+'" value="'+c+'" />'});e=u.i.B({data:a,width:"100%",height:"100%"},e);u.i.sa(e,function(a,c){k+=a+'="'+c+'" '});return'<object type="application/x-shockwave-flash"'+k+">"+j+"</object>"};
98
+ u.Dc=u.c.extend({g:function(a,c,d){u.c.call(this,a,c,d);if(!a.f.sources||0===a.f.sources.length){c=0;for(d=a.f.techOrder;c<d.length;c++){var e=u.Y(d[c]),g=window.videojs[e];if(g&&g.isSupported()){E(a,e);break}}}else a.src(a.f.sources)}});function U(a){a.wa=a.wa||[];return a.wa}function V(a,c,d){for(var e=a.wa,g=0,j=e.length,k,q;g<j;g++)k=e[g],k.id()===c?(k.show(),q=k):d&&(k.H()==d&&0<k.mode())&&k.disable();(c=q?q.H():d?d:l)&&a.k(c+"trackchange")}
99
+ u.U=u.c.extend({g:function(a,c){u.c.call(this,a,c);this.L=c.id||"vjs_"+c.kind+"_"+c.language+"_"+u.u++;this.uc=c.src;this.Jc=c["default"]||c.dflt;this.kd=c.title;this.ud=c.srclang;this.Rc=c.label;this.ia=[];this.cc=[];this.ka=this.la=0;this.a.d("fullscreenchange",u.bind(this,this.Ec))}});t=u.U.prototype;t.H=p("A");t.src=p("uc");t.ub=p("Jc");t.title=p("kd");t.label=p("Rc");t.readyState=p("la");t.mode=p("ka");t.Ec=function(){this.b.style.fontSize=this.a.F?140*(screen.width/this.a.width())+"%":""};
100
+ t.e=function(){return u.c.prototype.e.call(this,"div",{className:"vjs-"+this.A+" vjs-text-track"})};t.show=function(){W(this);this.ka=2;u.c.prototype.show.call(this)};t.v=function(){W(this);this.ka=1;u.c.prototype.v.call(this)};t.disable=function(){2==this.ka&&this.v();this.a.t("timeupdate",u.bind(this,this.update,this.L));this.a.t("ended",u.bind(this,this.reset,this.L));this.reset();this.a.R.textTrackDisplay.removeChild(this);this.ka=0};
101
+ function W(a){0===a.la&&a.load();0===a.ka&&(a.a.d("timeupdate",u.bind(a,a.update,a.L)),a.a.d("ended",u.bind(a,a.reset,a.L)),("captions"===a.A||"subtitles"===a.A)&&a.a.R.textTrackDisplay.X(a))}t.load=function(){0===this.la&&(this.la=1,u.get(this.uc,u.bind(this,this.Zc),u.bind(this,this.Fb)))};t.Fb=function(a){this.error=a;this.la=3;this.k("error")};
102
+ t.Zc=function(a){var c,d;a=a.split("\n");for(var e="",g=1,j=a.length;g<j;g++)if(e=u.trim(a[g])){-1==e.indexOf("--\x3e")?(c=e,e=u.trim(a[++g])):c=this.ia.length;c={id:c,index:this.ia.length};d=e.split(" --\x3e ");c.startTime=X(d[0]);c.ta=X(d[1]);for(d=[];a[++g]&&(e=u.trim(a[g]));)d.push(e);c.text=d.join("<br/>");this.ia.push(c)}this.la=2;this.k("loaded")};
103
+ function X(a){var c=a.split(":");a=0;var d,e,g;3==c.length?(d=c[0],e=c[1],c=c[2]):(d=0,e=c[0],c=c[1]);c=c.split(/\s+/);c=c.splice(0,1)[0];c=c.split(/\.|,/);g=parseFloat(c[1]);c=c[0];a+=3600*parseFloat(d);a+=60*parseFloat(e);a+=parseFloat(c);g&&(a+=g/1E3);return a}
104
+ t.update=function(){if(0<this.ia.length){var a=this.a.currentTime();if(this.Kb===b||a<this.Kb||this.Ja<=a){var c=this.ia,d=this.a.duration(),e=0,g=l,j=[],k,q,n,s;a>=this.Ja||this.Ja===b?s=this.vb!==b?this.vb:0:(g=f,s=this.Cb!==b?this.Cb:c.length-1);for(;;){n=c[s];if(n.ta<=a)e=Math.max(e,n.ta),n.Da&&(n.Da=l);else if(a<n.startTime){if(d=Math.min(d,n.startTime),n.Da&&(n.Da=l),!g)break}else g?(j.splice(0,0,n),q===b&&(q=s),k=s):(j.push(n),k===b&&(k=s),q=s),d=Math.min(d,n.ta),e=Math.max(e,n.startTime),
105
+ n.Da=f;if(g)if(0===s)break;else s--;else if(s===c.length-1)break;else s++}this.cc=j;this.Ja=d;this.Kb=e;this.vb=k;this.Cb=q;a=this.cc;c="";d=0;for(e=a.length;d<e;d++)c+='<span class="vjs-tt-cue">'+a[d].text+"</span>";this.b.innerHTML=c;this.k("cuechange")}}};t.reset=function(){this.Ja=0;this.Kb=this.a.duration();this.Cb=this.vb=0};u.Rb=u.U.extend();u.Rb.prototype.A="captions";u.Zb=u.U.extend();u.Zb.prototype.A="subtitles";u.Tb=u.U.extend();u.Tb.prototype.A="chapters";
106
+ u.$b=u.c.extend({g:function(a,c,d){u.c.call(this,a,c,d);if(a.f.tracks&&0<a.f.tracks.length){c=this.a;a=a.f.tracks;var e;for(d=0;d<a.length;d++){e=a[d];var g=c,j=e.kind,k=e.label,q=e.language,n=e;e=g.wa=g.wa||[];n=n||{};n.kind=j;n.label=k;n.language=q;j=u.Y(j||"subtitles");g=new window.videojs[j+"Track"](g,n);e.push(g)}}}});u.$b.prototype.e=function(){return u.c.prototype.e.call(this,"div",{className:"vjs-text-track-display"})};
107
+ u.W=u.I.extend({g:function(a,c){var d=this.ca=c.track;c.label=d.label();c.selected=d.ub();u.I.call(this,a,c);this.a.d(d.H()+"trackchange",u.bind(this,this.update))}});u.W.prototype.n=function(){u.I.prototype.n.call(this);V(this.a,this.ca.L,this.ca.H())};u.W.prototype.update=function(){2==this.ca.mode()?this.selected(f):this.selected(l)};u.cb=u.W.extend({g:function(a,c){c.track={H:function(){return c.kind},pc:a,label:function(){return c.kind+" off"},ub:r(l),mode:r(l)};u.W.call(this,a,c);this.selected(f)}});
108
+ u.cb.prototype.n=function(){u.W.prototype.n.call(this);V(this.a,this.ca.L,this.ca.H())};u.cb.prototype.update=function(){for(var a=U(this.a),c=0,d=a.length,e,g=f;c<d;c++)e=a[c],e.H()==this.ca.H()&&2==e.mode()&&(g=l);g?this.selected(f):this.selected(l)};u.V=u.ea.extend({g:function(a,c){u.ea.call(this,a,c);1>=this.G.length&&this.v()}});
109
+ u.V.prototype.sb=function(){var a=[],c;a.push(new u.cb(this.a,{kind:this.A}));for(var d=0;d<U(this.a).length;d++)c=U(this.a)[d],c.H()===this.A&&a.push(new u.W(this.a,{track:c}));return a};u.za=u.V.extend({g:function(a,c,d){u.V.call(this,a,c,d);this.b.setAttribute("aria-label","Captions Menu")}});u.za.prototype.A="captions";u.za.prototype.pa="Captions";u.za.prototype.className="vjs-captions-button";u.Ba=u.V.extend({g:function(a,c,d){u.V.call(this,a,c,d);this.b.setAttribute("aria-label","Subtitles Menu")}});
110
+ u.Ba.prototype.A="subtitles";u.Ba.prototype.pa="Subtitles";u.Ba.prototype.className="vjs-subtitles-button";u.Sb=u.V.extend({g:function(a,c,d){u.V.call(this,a,c,d);this.b.setAttribute("aria-label","Chapters Menu")}});t=u.Sb.prototype;t.A="chapters";t.pa="Chapters";t.className="vjs-chapters-button";t.sb=function(){for(var a=[],c,d=0;d<U(this.a).length;d++)c=U(this.a)[d],c.H()===this.A&&a.push(new u.W(this.a,{track:c}));return a};
111
+ t.Fa=function(){for(var a=U(this.a),c=0,d=a.length,e,g,j=this.G=[];c<d;c++)if(e=a[c],e.H()==this.A&&e.ub()){if(2>e.readyState()){this.sd=e;e.d("loaded",u.bind(this,this.Fa));return}g=e;break}a=this.ua=new u.na(this.a);a.b.appendChild(u.e("li",{className:"vjs-menu-title",innerHTML:u.Y(this.A),jd:-1}));if(g){e=g.ia;for(var k,c=0,d=e.length;c<d;c++)k=e[c],k=new u.Xa(this.a,{track:g,cue:k}),j.push(k),a.X(k)}0<this.G.length&&this.show();return a};
112
+ u.Xa=u.I.extend({g:function(a,c){var d=this.ca=c.track,e=this.cue=c.cue,g=a.currentTime();c.label=e.text;c.selected=e.startTime<=g&&g<e.ta;u.I.call(this,a,c);d.d("cuechange",u.bind(this,this.update))}});u.Xa.prototype.n=function(){u.I.prototype.n.call(this);this.a.currentTime(this.cue.startTime);this.update(this.cue.startTime)};u.Xa.prototype.update=function(){var a=this.cue,c=this.a.currentTime();a.startTime<=c&&c<a.ta?this.selected(f):this.selected(l)};
113
+ u.i.B(u.da.prototype.f.children,{subtitlesButton:{},captionsButton:{},chaptersButton:{}});
114
+ if("undefined"!==typeof window.JSON&&"function"===window.JSON.parse)u.JSON=window.JSON;else{u.JSON={};var Y=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;u.JSON.parse=function(a,c){function d(a,e){var k,q,n=a[e];if(n&&"object"===typeof n)for(k in n)Object.prototype.hasOwnProperty.call(n,k)&&(q=d(n,k),q!==b?n[k]=q:delete n[k]);return c.call(a,e,n)}var e;a=String(a);Y.lastIndex=0;Y.test(a)&&(a=a.replace(Y,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)}));
115
+ if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return e=eval("("+a+")"),"function"===typeof c?d({"":e},""):e;throw new SyntaxError("JSON.parse(): invalid or malformed JSON data");}}
116
+ u.dc=function(){var a,c,d=document.getElementsByTagName("video");if(d&&0<d.length)for(var e=0,g=d.length;e<g;e++)if((c=d[e])&&c.getAttribute)c.player===b&&(a=c.getAttribute("data-setup"),a!==h&&(a=u.JSON.parse(a||"{}"),v(c,a)));else{u.mb();break}else u.od||u.mb()};u.mb=function(){setTimeout(u.dc,1)};u.Q(window,"load",function(){u.od=f});u.mb();u.$c=function(a,c){u.ga.prototype[a]=c};var Z=this;Z.pd=f;function $(a,c){var d=a.split("."),e=Z;!(d[0]in e)&&e.execScript&&e.execScript("var "+d[0]);for(var g;d.length&&(g=d.shift());)!d.length&&c!==b?e[g]=c:e=e[g]?e[g]:e[g]={}};$("videojs",u);$("_V_",u);$("videojs.options",u.options);$("videojs.cache",u.qa);$("videojs.Component",u.c);u.c.prototype.dispose=u.c.prototype.C;u.c.prototype.createEl=u.c.prototype.e;u.c.prototype.el=u.c.prototype.s;u.c.prototype.addChild=u.c.prototype.X;u.c.prototype.children=u.c.prototype.children;u.c.prototype.on=u.c.prototype.d;u.c.prototype.off=u.c.prototype.t;u.c.prototype.one=u.c.prototype.Q;u.c.prototype.trigger=u.c.prototype.k;u.c.prototype.triggerReady=u.c.prototype.Ta;
117
+ u.c.prototype.show=u.c.prototype.show;u.c.prototype.hide=u.c.prototype.v;u.c.prototype.width=u.c.prototype.width;u.c.prototype.height=u.c.prototype.height;u.c.prototype.dimensions=u.c.prototype.Kc;u.c.prototype.ready=u.c.prototype.M;$("videojs.Player",u.ga);u.ga.prototype.dispose=u.ga.prototype.C;$("videojs.MediaLoader",u.Dc);$("videojs.TextTrackDisplay",u.$b);$("videojs.ControlBar",u.da);$("videojs.Button",u.o);$("videojs.PlayToggle",u.Xb);$("videojs.FullscreenToggle",u.Aa);
118
+ $("videojs.BigPlayButton",u.Wa);$("videojs.LoadingSpinner",u.Vb);$("videojs.CurrentTimeDisplay",u.Ya);$("videojs.DurationDisplay",u.Za);$("videojs.TimeDivider",u.ac);$("videojs.RemainingTimeDisplay",u.gb);$("videojs.Slider",u.J);$("videojs.ProgressControl",u.fb);$("videojs.SeekBar",u.Yb);$("videojs.LoadProgressBar",u.bb);$("videojs.PlayProgressBar",u.Wb);$("videojs.SeekHandle",u.hb);$("videojs.VolumeControl",u.kb);$("videojs.VolumeBar",u.jb);$("videojs.VolumeLevel",u.bc);
119
+ $("videojs.VolumeHandle",u.lb);$("videojs.MuteToggle",u.fa);$("videojs.PosterImage",u.eb);$("videojs.Menu",u.na);$("videojs.MenuItem",u.I);$("videojs.SubtitlesButton",u.Ba);$("videojs.CaptionsButton",u.za);$("videojs.ChaptersButton",u.Sb);$("videojs.MediaTechController",u.q);u.q.prototype.features=u.q.prototype.j;u.q.prototype.j.volumeControl=u.q.prototype.j.T;u.q.prototype.j.fullscreenResize=u.q.prototype.j.Ia;u.q.prototype.j.progressEvents=u.q.prototype.j.Lb;u.q.prototype.j.timeupdateEvents=u.q.prototype.j.Ob;
120
+ $("videojs.Html5",u.m);u.m.Events=u.m.$a;u.m.isSupported=u.m.isSupported;u.m.canPlaySource=u.m.ob;u.m.prototype.setCurrentTime=u.m.prototype.cd;u.m.prototype.setVolume=u.m.prototype.hd;u.m.prototype.setMuted=u.m.prototype.fd;u.m.prototype.setPreload=u.m.prototype.gd;u.m.prototype.setAutoplay=u.m.prototype.bd;u.m.prototype.setLoop=u.m.prototype.ed;$("videojs.Flash",u.l);u.l.isSupported=u.l.isSupported;u.l.canPlaySource=u.l.ob;u.l.onReady=u.l.onReady;$("videojs.TextTrack",u.U);u.U.prototype.label=u.U.prototype.label;
121
+ $("videojs.CaptionsTrack",u.Rb);$("videojs.SubtitlesTrack",u.Zb);$("videojs.ChaptersTrack",u.Tb);$("videojs.autoSetup",u.dc);$("videojs.plugin",u.$c);$("videojs.createTimeRange",u.tb);})();//@ sourceMappingURL=video.js.map