Comparar commits

...

82 Commits

Autor SHA1 Mensagem Data
Steve Heffernan c0518a1ff0 Release 4.8.5 2014-09-25 14:15:59 -07:00
Steve Heffernan bb52851aa4 Updated to the latest version of the swf to fix HLS playback. closes #1538 2014-09-25 14:09:25 -07:00
Steve Heffernan 2b57ada7df Release 4.8.4 2014-09-23 16:21:59 -07:00
Gary Katsevman d43831d6d0 @gkatsev fixed isFullscreen reporting on iOS devices. closes #1511
Squashed commit of the following:

commit 02fe7a40d0958e2ed84a6a0cf2be43bec259c72c
Author: Gary Katsevman <git@gkatsev.com>
Date:   Tue Sep 23 14:15:08 2014 -0400

    Feature detect old fullscreen instead of UA switch

commit f3eccbbe678c163021d790c69c3ab365e0a1fe1a
Author: Gary Katsevman <git@gkatsev.com>
Date:   Mon Sep 22 21:31:34 2014 -0400

    No need for if since assume we're in fs

commit 0498b100843e0aa858b166d02a467e4471c126ab
Author: Gary Katsevman <git@gkatsev.com>
Date:   Mon Sep 22 21:28:10 2014 -0400

    Revert "Don't trigget vjs's fullscreenchange event"

    This reverts commit cc45177ee5fa950e665e066d170b137aaeb6e398.

    Conflicts:
    	src/js/media/html5.js

commit 1ed30853efb2ea043da4f18b4fdf75da15f55e88
Author: Gary Katsevman <git@gkatsev.com>
Date:   Wed Sep 17 12:00:29 2014 -0400

    Listen via 'this.one'.
    Don't bother checking whether the video element is fullscreen but just
    assume we are fullscreen.

commit 27e27075083d2ad408b5d47055881b2554f59154
Author: Gary Katsevman <git@gkatsev.com>
Date:   Tue Sep 16 18:12:36 2014 -0400

    Use one for event binding.

commit cc45177ee5fa950e665e066d170b137aaeb6e398
Author: Gary Katsevman <git@gkatsev.com>
Date:   Mon Sep 15 17:28:46 2014 -0400

    Don't trigget vjs's fullscreenchange event
    This event isn't really being used for this usecase right now, so, no
    need to trigger it.

commit ad505a680785d638289657aec4edad60879e945a
Author: Gary Katsevman <git@gkatsev.com>
Date:   Mon Sep 15 16:45:48 2014 -0400

    Update exports for request & cancel fullscreen

commit e423635b6c8ad58a1ba04e1534a51c075e08b73a
Author: Gary Katsevman <git@gkatsev.com>
Date:   Mon Sep 15 16:15:10 2014 -0400

    On iOS, use ios specific enterFullscreen methods.

commit fe4a8fbf6ad73b6bc8f57d16c44f0ca4d3bf9450
Author: Gary Katsevman <git@gkatsev.com>
Date:   Mon Sep 15 14:53:20 2014 -0400

    Export isFullScreen correctly. Export isFullscreen as well.
2014-09-23 15:17:01 -07:00
Steve Heffernan 72cb71c3a5 Updated contrib.json to match new prompt formatting 2014-09-23 13:28:45 -07:00
Steve Heffernan ded72386ca Updated contrib.json to comply with new contrib formatting 2014-09-23 13:28:36 -07:00
Steve Heffernan ae04900c54 Release 4.8.3 2014-09-22 16:13:03 -07:00
Steve Heffernan 518614ca57 Added line to the changelog for #1526 2014-09-22 16:10:18 -07:00
Steve Heffernan 0ef6b4af73 Updated to version 4.4.4 of the swf 2014-09-22 16:04:02 -07:00
Steve Heffernan ee7c962494 Release 4.8.2 2014-09-16 16:38:42 -07:00
Steve Heffernan 05c18b7049 Added line to the changelog for #1512 2014-09-16 14:56:16 -07:00
Gary Katsevman 53ea60cd06 fixes #1512, fixes #1507
On ended, pause player if not paused or looping
IE11 (and maybe other browsers as well) only fire 'ended' event when the
video ends and doesn't fire pause. This makes IE11 not reset it's state
into a paused state that allows a user to replay immediately. However, a
two clicks on the play/pause button will allow you to replay.
In Chrome, we get first a pause event and then an ended event. When
'loop' is set, neither the last pause nor ended fire.
In the flash tech, the pause and ended events fire like in chrome in all
browsers.

Add tests for onEnded change

Appease jshint.
2014-09-16 14:53:46 -07:00
Steve Heffernan 18965bb8d7 Release 4.8.1 2014-09-05 14:58:12 -07:00
Steve Heffernan 3a1239df1e Added a line to the changelog for #1488 2014-09-05 14:53:40 -07:00
Steve Heffernan 49197e4f0e Merge branch 'hotfix/fullscreen-deprecations' into stable 2014-09-05 14:52:15 -07:00
Steve Heffernan 08da4c889f Added a line to the changelog for #1467 2014-09-05 14:50:00 -07:00
Steve Heffernan 1ff1d76a8c Merge commit 'a582c833e34c227ff29b707bad9cd4857f32c877' of github.com:MrVaykadji/video.js into french 2014-09-05 14:48:05 -07:00
Steve Heffernan 5abff360cc Added back missing deprecated fullscreen functions, and fixed a warning from using a deprecated method internally.
fixes #1451
2014-09-05 14:33:27 -07:00
Steve Heffernan 18be3ef9ac Added a line to the changelog for #1487 2014-09-05 14:31:20 -07:00
Matthew McClure 864432d7d3 updated styles for error messages and made poster absolutely positioned by default 2014-09-05 13:59:27 -07:00
Steve Heffernan 6c2efbf999 Added a line to the changelog for #1483 2014-09-05 13:53:11 -07:00
David LaPalomento eec1fc13fe Move language methods into externs
Trying to create a player-like subclass of component requires overriding languages() but that method was being minified. Add it to externs so that it can be overridden after minification. Fixes #1420.
2014-09-05 13:50:13 -07:00
Steve Heffernan 54b175d988 Added line to the changelog for #1482 2014-09-05 13:42:06 -07:00
David LaPalomento b9181ee55b Make sure the error property is set before proxying through the tech.
Some error events don't cause the error property on the video element to be set. In that case, handle the event like any other. Fixes #1465.
2014-09-05 13:36:50 -07:00
David LaPalomento d385f8257f Fixes #1481
Clear out pending errors on player disposal.
Source selection errors are dispatched asynchronously so that there is an opportunity to override the error message. If the player is disposed during that period, the error timeout wasn't being cleared properly. Fix for #1480.

Fix whitespace
When defining variables inline with declarations, stick to one variable per line.
2014-09-05 13:32:15 -07:00
Steve Heffernan 88f59d7ad6 Release 4.8.0 2014-09-03 08:43:58 -07:00
Steve Heffernan 1c84f37fa0 Updated contrib.json for contrib prompt changes 2014-09-03 08:36:46 -07:00
Steve Heffernan 7d4b26625f Fixed a broken playbackRate test on Android 2.3 2014-09-02 17:38:11 -07:00
Steve Heffernan 7ead5f708f Added a line to the changelog for #1473 2014-09-02 16:47:47 -07:00
Steve Heffernan 16640274d7 Merge branch 'hotfix/error-timeout-squashed' of github.com:mmcc/video.js into mmcc-hotfix/error-timeout-squashed 2014-09-02 16:43:01 -07:00
Steve Heffernan 5f7ae5a7ba Added a line to the changelog for #1470 2014-09-02 16:29:15 -07:00
Steve Heffernan f3925c7364 Changed to feature prefix over suffix to make it read more as a boolean 2014-09-02 16:22:43 -07:00
Steve Heffernan c90d7d36f6 Merge branch 'media-tech-features2' of github.com:gkatsev/video.js into gkatsev-media-tech-features2 2014-09-02 16:11:26 -07:00
Steve Heffernan 6f069b765c Added line to changelog for #1449 2014-09-02 15:22:17 -07:00
Steve Heffernan a6fa0dcc80 Merge branch 'the-N-Zone' of github.com:gkatsev/video.js into gkatsev-the-N-Zone 2014-09-02 12:50:10 -07:00
Matthew McClure e72d682028 added timeout fix and tests. 2014-09-02 12:39:08 -07:00
Gary Katsevman 599217f158 Update tests to grab/restore progressEventsFeature 2014-09-02 14:57:29 -04:00
Gary Katsevman e60f2eef5c Update media.js and html5.js feature access.
Due to #1415, various usage of features moved around. This makes sure
that features are now called directly on the tech everywhere.
2014-09-02 14:51:13 -04:00
Gary Katsevman 7caa2fc1a7 Append Feature to 'features'. Update tests. 2014-09-02 14:46:19 -04:00
Gary Katsevman c0f91674e4 Promote 'features' to the prototype 2014-09-02 14:44:58 -04:00
Gary Katsevman e6897b6219 Inherit tech 'features' from 'MediaTechController'
Use vjs.obj.create to inherit 'features' from
'MediaTechController.prototype.features'. Because we are inheriting, if
the defaults change (prototype.features), we can receive these updates
in our tech if we had not changed properties of features manually.
2014-09-02 14:41:27 -04:00
Steve Heffernan 65e4b9f167 Added line to the changelog for #1453
Moved grunt languages configuration to lower in the gruntfile.
2014-09-02 11:40:18 -07:00
Tom Johnson 011861bbdb add support for videojs-grunt-languages
updates to change build/lang to build/files/lang

update grunt languages references and version

remove build/lang reference

update languages plugin reference for array support
2014-09-02 11:40:06 -07:00
Gary Katsevman df1944e9ff NaN & null should be treated as 0 in dimension()
When dimension() receives a NaN or null value for the number, it will
treat it as zero.
Updated tests to reflect that as well.
2014-09-02 14:37:42 -04:00
Steve Heffernan 1aabc440b6 Merge branch 'master' of https://github.com/videojs/video.js 2014-09-02 11:07:37 -07:00
Steve Heffernan c5bd01160a Added line to the changelog for #1409 2014-09-02 11:06:30 -07:00
Steve Heffernan 82aa55795e Removed html5Mock var declarations and fixed whitespace 2014-09-02 11:04:30 -07:00
Steve Heffernan 7c27add29d Merge branch 'issue-1408' of github.com:glencoesoftware/video.js into glencoesoftware-issue-1408 2014-09-02 11:00:36 -07:00
Matthew McClure 11b592ae01 Update CONTRIBUTING.md
Getting rid of some out of date info about Karma configuration.
2014-09-02 10:39:33 -07:00
MrVaykadji a582c833e3 French translation 2014-08-31 21:56:27 +02:00
Andreas Knab c4b4ebea4a Remove unneeded html5Mock 2014-08-28 12:28:07 +02:00
Steve Heffernan 1f33546f90 Added a line to the change log for #1455 2014-08-27 15:33:48 -07:00
Steve Heffernan 521f0eb941 Merge branch 'songpete-patch-1' 2014-08-27 15:31:15 -07:00
Steve Heffernan 22aa758067 Merge branch 'patch-1' of github.com:songpete/video.js into songpete-patch-1 2014-08-27 15:15:32 -07:00
Steve Heffernan 537ae2b805 Merge pull request #1435 from dmlap/test-manual-tracking
Add test for manual time tracking and dispose
2014-08-27 13:26:48 -07:00
Steve Heffernan fc0d37daec Merge branch 'guardian-html5-src-fix' 2014-08-27 13:12:46 -07:00
Steve Heffernan 2a9f1cdaac Added a line to the changelog for #1430 2014-08-27 13:11:55 -07:00
Steve Heffernan 87e25dd38e Merge branch 'html5-src-fix' of github.com:guardian/video.js into guardian-html5-src-fix 2014-08-27 13:08:02 -07:00
Steve Heffernan 16321d6208 Added line to the changelog for #1426 2014-08-27 13:05:33 -07:00
Steve Heffernan 34a8d64c04 Merge pull request #1426 from andekande/germantranslation
german Translation based on es.json
2014-08-27 12:59:50 -07:00
Pete Song 58c081f154 Bind 'onKeyPress' during keydown instead of keyup.
Binding during keydown will be more effective at preventing certain default behavior like moving the page down as these events may happen prior to keyup. Addresses #1452
2014-08-26 20:45:39 -04:00
Gary Katsevman 68ad48d8e8 Ignore null, undefined, and NaN is dimension()
Add vjs.isNaN to have a better cross browser isNaN checker.
Previously, only undefined was ignored, so, it tried setting the
dimension using null and NaN as values. In most browsers this isn't a
problem, but in particular on IE8, things break.
With this PR, all three of those values will be ignored.
2014-08-25 18:41:33 -04:00
Andreas Knab 49f58e0bbd Switch to sinon fake timers 2014-08-25 16:42:58 +02:00
Andreas Knab f716807852 Add test cases for default and disabled timeout 2014-08-25 11:35:06 +02:00
Andreas Knab 6d65871cb0 Add simple inactivityTimeout test 2014-08-25 11:28:52 +02:00
Steve Heffernan 055d81dc3a Merge branch 'stable'
Conflicts:
	dist/video-js/video-js.css
	dist/video-js/video-js.min.css
	dist/video-js/video.dev.js
	dist/video-js/video.js
2014-08-20 15:17:08 -07:00
Steve Heffernan 760eb308db Release 4.7.3 2014-08-20 15:16:22 -07:00
Steve Heffernan 03059c17d8 Added line to the changelog for #1424 2014-08-20 15:12:12 -07:00
Eric Berdahl 5ee97ea9a1 Publish (i.e. prevent closure compiler from obfuscating name of) videojs.Player.prototype.selectSource function. This allows developers to provide their own algorithms for selecting which source a Player should use. 2014-08-20 15:11:58 -07:00
Steve Heffernan 5761ab33bd Added line to the changelog for #1427 2014-08-20 15:07:52 -07:00
Tom Johnson c19a3f3f48 add fix for localization of not supported message
add base documentation for language support

typo fix

added utility function for adding languages per conversation with @heff. Includes test.

move addLanguage to core. update both core and util tests. added export property

added language sandbox for demo

fix comment

doc udpate

remove build instructions

add addLanguage API to doc

fix deep merge in test

test update

update local reference to string for compiled tests
2014-08-20 15:04:30 -07:00
Steve Heffernan a888108e2c Merge pull request #1422 from SunnyLi/patch-1
Fix typo in video tracks documentation
2014-08-20 13:00:32 -07:00
David LaPalomento a1eb8dd975 Add test for manual time tracking and dispose
Make sure time and progress event synthesis is turned off after the tech is disposed.For #1431.
2014-08-20 14:39:02 -04:00
Matt Osborn 21f2d3c150 fixing techGet for HTML5 src method 2014-08-19 17:04:31 +01:00
Jan Hesse dd0c7efa60 german Translation based on es.json 2014-08-18 13:11:05 +02:00
Sunny Li ec61386f47 Fix typo in video tracks documentation
small typo
2014-08-16 12:45:31 -04:00
Andreas Knab 98edeccb3f Allow disabling of inactivity timeout 2014-08-15 14:39:49 +02:00
Steve Heffernan 342bdce748 Merge branch 'stable'
Conflicts:
	dist/video-js/video-js.css
	dist/video-js/video-js.min.css
	dist/video-js/video-js.swf
	dist/video-js/video.dev.js
	dist/video-js/video.js
2014-08-14 16:32:26 -07:00
Andreas Knab 0b4737d209 Allow per-player setting of inactivityTimeout 2014-08-12 13:20:48 +02:00
Andreas Knab 3cfbf94245 Fix issue with minified version 2014-08-12 13:20:35 +02:00
Andreas Knab e4a0d264d6 Make inactivity timeout configurable 2014-08-11 11:01:15 +02:00
Steve Heffernan 7f4e6eb432 Removed dist files 2014-08-06 11:27:17 -07:00
96 arquivos alterados com 1475 adições e 531 exclusões
+34
Ver Arquivo
@@ -6,6 +6,40 @@ _(none)_
--------------------
## 4.8.5 (2014-09-25)
* Updated to the latest version of the swf to fix HLS playback ([view](https://github.com/videojs/video.js/pull/1538))
## 4.8.4 (2014-09-23)
* @gkatsev fixed isFullscreen reporting on iOS devices ([view](https://github.com/videojs/video.js/pull/1511))
## 4.8.3 (2014-09-22)
* @heff updated to the latest version of the SWF to 4.4.4 ([view](https://github.com/videojs/video.js/pull/1526))
## 4.8.2 (2014-09-16)
* @gkatsev fixed an IE11 bug where pause was not fired when the video ends ([view](https://github.com/videojs/video.js/pull/1512))
## 4.8.1 (2014-09-05)
* @dmlap fixed an issue where an error could be fired after player disposal ([view](https://github.com/videojs/video.js/pull/1481))
* @dmlap fixed poster error handling ([view](https://github.com/videojs/video.js/pull/1482))
* @dmlap fixed an issue with languages and subclassing the player ([view](https://github.com/videojs/video.js/pull/1483))
* @mmcc fixed a few CSS issues with the poster and the error 'X' ([view](https://github.com/videojs/video.js/pull/1487))
* @MrVaykadji and @Calinou added a french translation ([view](https://github.com/videojs/video.js/pull/1467))
* @heff fixed an internal deprecation warning and missing deprecated functions ([view](https://github.com/videojs/video.js/pull/1488))
## 4.8.0 (2014-09-03)
* @andekande added a German translation ([view](https://github.com/videojs/video.js/pull/1426))
* @mattosborn fixed a bug where getting the video element src would overwrite it ([view](https://github.com/videojs/video.js/pull/1430))
* @songpete fixed a bug where keyboard events were bubbling and causing additional actions ([view](https://github.com/videojs/video.js/pull/1455))
* @knabar made the inactivity timeout configurable ([view](https://github.com/videojs/video.js/pull/1409))
* @seniorflexdeveloper added language files to the distribution for including specific languages ([view](https://github.com/videojs/video.js/pull/1453))
* @gkatsev improved handling of null and NaN dimension values ([view](https://github.com/videojs/video.js/pull/1449))
* @gkatsev fixed an issue where the controls would break if Flash was initialized too quickly ([view](https://github.com/videojs/video.js/pull/1470))
* @mmcc fixed an issue where if no playback tech was supported the error could not be caught ([view](https://github.com/videojs/video.js/pull/1473))
## 4.7.3 (2014-08-20)
* Added function for adding new language translations, updated docs, and fixed the notSupportedMessage translation ([view](https://github.com/videojs/video.js/pull/1427))
* Exposed the player.selectSource method to allow overriding the source selection order ([view](https://github.com/videojs/video.js/pull/1424))
## 4.7.2 (2014-08-14)
* Fixed a case where timeupdate events were not firing, and fixed and issue with the Flash player version ([view](https://github.com/videojs/video.js/pull/1417))
+1 -5
Ver Arquivo
@@ -148,12 +148,8 @@ grunt
grunt test
```
Video.js is also configured to run tests with Karma. Karma is installed as a grunt plugin to run QUnit tests in real browsers, as opposed to simply running the tests in phantomjs, a headless browser.
Video.js is also configured to run tests with Karma. Karma is installed as a grunt plugin to run QUnit tests in real browsers, as opposed to simply running the tests in phantomjs, a headless browser. To run the tests with Karma:
To run the QUnit test suite in Karma, do the following:
1. Copy test/karma.conf.js.example and rename the copy test/karma.conf.js. Please note that if you decide to name the file something other than karma.conf.js, or if you decide to change the location of your conf.js file from the test/ folder, you will need to change references to karma.conf.js in Gruntfile and .gitignore to your new file name and location, so that you don't inadvertently add your conf.js file to any of your video.js pull requests.
2. Open test/karma.conf.js in an editor, and configure the properties in it as desired. At a minimum, you'll want to add the browsers that you want to run your tests in. The karma.conf.js.example file has detailed information on usage in the file itself.
After you've configured the desired properties in your karma.conf.js, run:
```bash
grunt karma:dev
```
+20 -26
Ver Arquivo
@@ -31,9 +31,6 @@ module.exports = function(grunt) {
// Project configuration.
grunt.initConfig({
pkg: pkg,
lang: {
src: 'lang/*.json'
},
build: {
src: 'src/js/dependencies.js',
options: {
@@ -258,6 +255,13 @@ module.exports = function(grunt) {
}
}
},
vjslanguages: {
defaults: {
files: {
'build/files/lang': ['lang/*.json']
}
}
},
zip: {
dist: {
router: function (filepath) {
@@ -312,6 +316,7 @@ module.exports = function(grunt) {
}
});
grunt.loadNpmTasks('grunt-videojs-languages');
grunt.loadNpmTasks('grunt-contrib-connect');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-qunit');
@@ -333,11 +338,11 @@ module.exports = function(grunt) {
// grunt.loadTasks('./docs/tasks/');
// grunt.loadTasks('../videojs-doc-generator/tasks/');
grunt.registerTask('pretask', ['jshint', 'less', 'lang', 'build', 'minify', 'usebanner']);
grunt.registerTask('pretask', ['jshint', 'less', 'vjslanguages', 'build', 'minify', 'usebanner']);
// Default task.
grunt.registerTask('default', ['pretask', 'dist']);
// Development watch task
grunt.registerTask('dev', ['jshint', 'less', 'lang', 'build', 'qunit:source']);
grunt.registerTask('dev', ['jshint', 'less', 'vjslanguages', 'build', 'qunit:source']);
grunt.registerTask('test-qunit', ['pretask', 'qunit']);
// The test task will run `karma:saucelabs` when running in travis,
@@ -424,24 +429,7 @@ module.exports = function(grunt) {
}
});
var fs = require('fs'),
gzip = require('zlib').gzip;
grunt.registerMultiTask('lang', 'Building Language Support', function() {
var combined = '';
grunt.log.writeln('Building Language Support');
// Create a combined languages file
this.files.forEach(function(file) {
file.src.forEach(function(src){
var code = src.replace('lang/', '').replace('.json', '');
combined += 'videojs.options[\'languages\'][\''+code+'\'] = '+ grunt.file.read(src).trim() + ';\n';
});
});
grunt.file.write('build/files/combined.languages.js', combined);
});
var fs = require('fs');
grunt.registerMultiTask('build', 'Building Source', function(){
@@ -459,9 +447,6 @@ module.exports = function(grunt) {
// Replace CDN version ref in js. Use major/minor version.
combined = combined.replace(/GENERATED_CDN_VSN/g, version.majorMinor);
// Add Combined Langauges
// combined += grunt.file.read('build/files/combined.languages.js');
grunt.file.write('build/files/combined.video.js', combined);
// Copy over other files
@@ -561,6 +546,15 @@ module.exports = function(grunt) {
}
});
// Copy over language files
grunt.file.recurse('build/files/lang', function(absdir, rootdir, subdir, filename) {
// Block .DS_Store files
if ('filename'.substring(0,1) !== '.') {
grunt.file.copy(absdir, 'dist/cdn/lang/' + filename);
grunt.file.copy(absdir, 'dist/video-js/lang/' + filename);
}
});
// ds_store files sometime find their way in
if (grunt.file.exists('dist/video-js/.DS_Store')) {
grunt.file['delete']('dist/video-js/.DS_Store');
+1 -1
Ver Arquivo
@@ -1,7 +1,7 @@
{
"name": "video.js",
"description": "An HTML5 and Flash video player with a common API and skin for both.",
"version": "4.7.2",
"version": "4.8.5",
"main": [
"dist/video-js/video.js",
"dist/video-js/video-js.css"
+1 -1
Ver Arquivo
@@ -1,7 +1,7 @@
{
"name": "video.js",
"description": "An HTML5 and Flash video player with a common API and skin for both.",
"version": "4.7.2",
"version": "4.8.5",
"keywords": [
"videojs",
"html5",
+57 -57
Ver Arquivo
@@ -32,27 +32,33 @@
],
"update": {
"all": [
{ "include": "update stable" },
{ "include": "update master" },
[ "npm install", "Download dependencies"],
[ "grunt", "Build the library" ]
],
"master": [
[ "git checkout master", "Switch to the development branch" ],
[ "git pull upstream master", "Get any changes to master in the main project" ],
[ "git push origin master", "Push any changes to your copy of the main project" ]
],
"stable": [
[ "git checkout stable", "Switch to the release branch" ],
[ "git pull upstream stable", "Get any changes to stable in the main project" ],
[ "git push origin stable", "Push any changes to your copy of the main project" ]
]
"all": {
"steps": [
{ "include": "update stable" },
{ "include": "update master" },
[ "npm install", "Download dependencies"],
[ "grunt", "Build the library" ]
]
},
"master": {
"steps": [
[ "git checkout master", "Switch to the development branch" ],
[ "git pull upstream master", "Get any changes to master in the main project" ],
[ "git push origin master", "Push any changes to your copy of the main project" ]
]
},
"stable": {
"steps": [
[ "git checkout stable", "Switch to the release branch" ],
[ "git pull upstream stable", "Get any changes to stable in the main project" ],
[ "git push origin stable", "Push any changes to your copy of the main project" ]
]
}
},
"test": [ "grunt test" ],
"watch": [ "grunt watch" ],
"server": [ "grunt connect" ],
"test": "grunt test" ,
"watch": "grunt watch",
"server": "grunt connect",
"feature": {
"desc": "Create a new feature or general enhancement",
@@ -140,7 +146,7 @@
{ "prompt": "text", "desc": "Describe the feature/enhancement (be as detailed as possible so it's clear who, why, and how it would be used)", "id": "describe" },
{ "prompt": "text", "desc": "Is there any existing documentation or related specifications?", "id": "docs" },
{ "prompt": "text", "desc": "Are there any existing examples?", "id": "examples" },
{ "confirm": "You will be redirected to Github where you can submit this issue, OK?" },
{ "prompt": "confirm", "desc": "You will be redirected to Github where you can submit this issue, OK?" },
{ "open": "{{project.urls.repo_ui}}/issues/new?title={{ title }}&body=**Describe the feature/enhancement:**\n> {{ describe }}\n\n**Existing docs/specs:**\n> {{ docs }}\n\n**Existing examples:**\n> {{ examples }}" }
],
"finished": "Thanks for submitting a feature request! One of our contributors will address it as soon as possible."
@@ -151,16 +157,8 @@
"steps": [
[ "git diff --exit-code", "Ensure there's no unadded changes" ],
[ "git diff --cached --exit-code", "Ensure there's no added changes" ],
{ "confirm": "Have the changes been merged into the release branch (stable)?" },
{
"id": "type",
"desc": "Provide the release type",
"prompt": {
"message": "release type",
"default": "patch",
"type": "text"
}
},
{ "prompt": "confirm", "desc": "Have the changes been merged into the release branch (stable)?" },
{ "prompt": "text", "desc": "Provide the release type (major, minor, patch)", "id": "type" },
[ "git checkout stable", "Checkout the release branch" ],
[ "git pull upstream stable", "Update the release branch" ],
[ "grunt test", "Run tests" ],
@@ -188,7 +186,7 @@
"private": true,
"start": {
"steps": [
{ "prompt": "Name the branch", "id": "name" },
{ "prompt": "text", "desc": "Name the branch", "id": "name" },
[ "git checkout -b {{name}} {{baseBranch}}", "Create the branch" ],
[ "git push -u origin {{name}}", "Push the branch to your remote copy of the project" ]
]
@@ -200,8 +198,8 @@
{ "exec": "git diff --cached --exit-code", "desc": "Test for uncommitted changes", "fail": "Make sure all changes have been added and committed, or stashed, before switching branches" },
{ "include": "test" },
{ "exec": "git rev-parse --abbrev-ref HEAD", "desc": "Get the current branch", "id": "branch" },
{ "confirm": "Are you sure {{branch}} is the branch you want to submit?" },
{ "prompt": "Which github user or org are you submitting from?", "id": "user" },
{ "prompt": "confirm", "desc": "Are you sure {{branch}} is the branch you want to submit?" },
{ "prompt": "text", "desc": "Which github user or org are you submitting from?", "id": "user" },
{ "open": "{{project.urls.repo_ui}}/compare/videojs:{{baseBranch}}...{{user}}:{{branch}}", "desc": "Open the github pull request page" }
]
},
@@ -209,7 +207,7 @@
"desc": "Delete the current branch",
"steps": [
{ "exec": "git rev-parse --abbrev-ref HEAD", "desc": "Get the current branch name", "id": "name" },
{ "confirm": "Are you sure '{{name}}' is the branch you want to delete?" },
{ "prompt": "confirm", "desc": "Are you sure '{{name}}' is the branch you want to delete?" },
{ "exec": "git branch -D {{name}}", "desc": "Delete the local copy of the branch" },
{ "exec": "git push origin :{{name}}", "desc": "Delete the remote copy of the branch" }
]
@@ -221,7 +219,7 @@
"review": {
"steps": [
{ "prompt": "What is the the pull request number?", "id": "prNum" },
{ "prompt": "text", "desc": "What is the the pull request number?", "id": "prNum" },
{ "get": "{{project.urls.repo_api}}/pulls/{{prNum}}", "desc": "Get the PR information", "id": "pr" },
[ "git fetch {{pr.head.repo.ssh_url}} {{pr.head.ref}}", "Get the pull request changes but don't merge them" ],
[ "git merge-base master FETCH_HEAD", "Get the common ancestor commit", "base" ],
@@ -238,33 +236,35 @@
{ "exec": "git diff --cached --exit-code", "desc": "Test for uncommitted changes", "fail": "Make sure all changes have been committed before submitting changes" },
{ "include": "test" },
{ "exec": "git rev-parse --abbrev-ref HEAD", "desc": "Get the current branch", "id": "branch" },
{ "confirm": "Are you sure {{branch}} is the branch you want to submit?" },
{ "prompt": "Which github user or org are you submitting from?", "id": "user" },
{ "prompt": "What is the the pull request number?", "id": "prNum" },
{ "prompt": "confirm", "desc": "Are you sure {{branch}} is the branch you want to submit?" },
{ "prompt": "text", "desc": "Which github user or org are you submitting from?", "id": "user" },
{ "prompt": "text", "desc": "What is the the pull request number?", "id": "prNum" },
{ "get": "{{project.urls.repo_api}}/pulls/{{prNum}}", "desc": "Get the PR information", "id": "pr" },
{ "exec": "git push -u origin {{branch}}", "desc": "Push the changes to the remote repo" },
{ "open": "https://github.com/{{user}}/video.js/compare/{{pr.head.label}}...{{user}}:{{branch}}", "desc": "Open the github pull request page" }
]
},
"accept": [
{ "prompt": "What is the the pull request number?", "id": "prNum" },
{ "get": "{{project.urls.repo_api}}/pulls/{{prNum}}", "desc": "Get the PR information", "id": "pr" },
{ "get": "{{project.urls.repo_api}}/pulls/{{prNum}}/commits", "desc": "Get the PR commits to access author info", "id": "prCommits" },
[ "git checkout -b {{pr.user.login}}-{{pr.head.ref}} {{pr.base.ref}}", "Create a new branch for merging the changes" ],
[ "git fetch {{pr.head.repo.ssh_url}} {{pr.head.ref}}", "Fetch the changes" ],
[ "git merge --no-commit --squash FETCH_HEAD", "Merge the changes in without committing so they can be squashed" ],
[ "grunt test", "Run tests to make sure they still pass" ],
{ "prompt": "Describe this change in one line", "id": "line" },
[ "grunt chg-add:'{{line}} ([view](https\\://github.com/videojs/video.js/pull/{{prNum}}))'", "Add a line to the changelog" ],
[ "git add CHANGELOG.md", "Add the changlelog change to be committed" ],
[ "git commit -a --author='{{prCommits.[0].commit.author.name}} <{{prCommits.[0].commit.author.email}}>' -m '{{line}}. closes #{{prNum}}'", "Commit the changes" ],
{ "confirm": "Does everything look ok?" },
[ "git checkout {{pr.base.ref}}", "Check out the base branch" ],
[ "git merge {{pr.user.login}}-{{pr.head.ref}}", "Merge the changes" ],
[ "git push origin {{pr.base.ref}}", "Push the changes to your remote copy of the project" ],
[ "git push upstream {{pr.base.ref}}", "Push the changes to the main project" ],
[ "git branch -D {{pr.user.login}}-{{pr.head.ref}}", "Delete the local branch used for merging" ]
]
"accept": {
"steps": [
{ "prompt": "text", "desc": "What is the the pull request number?", "id": "prNum" },
{ "get": "{{project.urls.repo_api}}/pulls/{{prNum}}", "desc": "Get the PR information", "id": "pr" },
{ "get": "{{project.urls.repo_api}}/pulls/{{prNum}}/commits", "desc": "Get the PR commits to access author info", "id": "prCommits" },
[ "git checkout -b {{pr.user.login}}-{{pr.head.ref}} {{pr.base.ref}}", "Create a new branch for merging the changes" ],
[ "git fetch {{pr.head.repo.ssh_url}} {{pr.head.ref}}", "Fetch the changes" ],
[ "git merge --no-commit --squash FETCH_HEAD", "Merge the changes in without committing so they can be squashed" ],
[ "grunt test", "Run tests to make sure they still pass" ],
{ "prompt": "text", "desc": "Describe this change in one line", "id": "line" },
[ "grunt chg-add:'{{line}} ([view](https\\://github.com/videojs/video.js/pull/{{prNum}}))'", "Add a line to the changelog" ],
[ "git add CHANGELOG.md", "Add the changlelog change to be committed" ],
[ "git commit -a --author='{{prCommits.[0].commit.author.name}} <{{prCommits.[0].commit.author.email}}>' -m '{{line}}. closes #{{prNum}}'", "Commit the changes" ],
{ "prompt": "confirm", "desc": "Does everything look ok?" },
[ "git checkout {{pr.base.ref}}", "Check out the base branch" ],
[ "git merge {{pr.user.login}}-{{pr.head.ref}}", "Merge the changes" ],
[ "git push origin {{pr.base.ref}}", "Push the changes to your remote copy of the project" ],
[ "git push upstream {{pr.base.ref}}", "Push the changes to the main project" ],
[ "git branch -D {{pr.user.login}}-{{pr.head.ref}}", "Delete the local branch used for merging" ]
]
}
}
}
+26
Ver Arquivo
@@ -0,0 +1,26 @@
videojs.addLanguage("de",{
"Play": "abspielen",
"Pause": "pausieren",
"Current Time": "aktueller Zeitpunkt",
"Duration Time": "gesamte Laufzeit",
"Remaining Time": "verbleibende Laufzeit",
"Stream Type": "Übertragungstyp",
"LIVE": "LIVE",
"Loaded": "geladen",
"Progress": "Fortschritt",
"Fullscreen": "Vollbildschirm AN",
"Non-Fullscreen": "Vollbildschirm AUS",
"Mute": "Ton AUS",
"Unmuted": "Ton AN",
"Playback Rate": "Wiedergabegeschwindigkeit",
"Subtitles": "Untertitel AN",
"subtitles off": "Untertitel AUS",
"Captions": "Titel AN",
"captions off": "Titel AUS",
"Chapters": "Kapitel",
"You aborted the video playback": "Sie haben die Video-Wiedergabe abgebrochen.",
"A network error caused the video download to fail part-way.": "Ein Fehler bei der Verbindung verursachte eine Unterbrechung mitten im Download.",
"The video could not be loaded, either because the server or network failed or because the format is not supported.": "Das Video konnte nicht geladen werden, entweder weil der Server bzw. die Verbindung gestört ist, oder weil das Format nicht kompatibel ist.",
"The video playback was aborted due to a corruption problem or because the video used features your browser did not support.": "Die Wiedergabe des Videos wurde unterbrochen. Entweder ist das Video beschädigt oder es benutzt ein Feature welches von diesem Browser nicht unterstützt wird.",
"No compatible source was found for this video.": "Für dieses Video wurde keine kompatible Quelle gefunden."
});
+26
Ver Arquivo
@@ -0,0 +1,26 @@
videojs.addLanguage("es",{
"Play": "Juego",
"Pause": "Pausa",
"Current Time": "Tiempo Actual",
"Duration Time": "Tiempo de Duracion",
"Remaining Time": "Tiempo Restante",
"Stream Type": "Tipo de Transmision",
"LIVE": "En Vivo",
"Loaded": "Cargado",
"Progress": "Progreso",
"Fullscreen": "Pantalla Completa",
"Non-Fullscreen": "No Pantalla Completa",
"Mute": "Mudo",
"Unmuted": "Activar sonido",
"Playback Rate": "Reproduccion Cambio",
"Subtitles": "Subtitulos",
"subtitles off": "subtitulos fuera",
"Captions": "Subtitulos",
"captions off": "subtitulos fuera",
"Chapters": "Capitulos",
"You aborted the video playback": "Ha anulado la reproduccion de video",
"A network error caused the video download to fail part-way.": "Un error en la red hizo que la descarga de video falle parte del camino.",
"The video could not be loaded, either because the server or network failed or because the format is not supported.": "El video no se puede cargar, ya sea porque el servidor o la red fracasaron o porque el formato no es compatible.",
"The video playback was aborted due to a corruption problem or because the video used features your browser did not support.": "La reproduccion de video se ha cancelado debido a un problema de corrupcion o porque el video utilizado cuenta con su navegador no soporta.",
"No compatible source was found for this video.": "Ninguna fuente compatible se encontro para este video."
});
+26
Ver Arquivo
@@ -0,0 +1,26 @@
videojs.addLanguage("fr",{
"Play": "Jouer",
"Pause": "Pause",
"Current Time": "Actuel",
"Duration Time": "Durée",
"Remaining Time": "Restant",
"Stream Type": "Type de flux",
"LIVE": "LIVE",
"Loaded": "Chargé",
"Progress": "Progression",
"Fullscreen": "Plein écran",
"Non-Fullscreen": "Fenêtré",
"Mute": "Couper le son",
"Unmuted": "Rétablir le son",
"Playback Rate": "Vitesse de lecture",
"Subtitles": "Sous-titres",
"subtitles off": "Désactiver",
"Captions": "Annotations",
"captions off": "Désactiver",
"Chapters": "Chapitres",
"You aborted the video playback": "Vous avez interrompu la lecture de la vidéo.",
"A network error caused the video download to fail part-way.": "Une erreur réseau a fait échouer le téléchargement.",
"The video could not be loaded, either because the server or network failed or because the format is not supported.": "La vidéo n'a pas pu être chargée, soit parce que le serveur ou le réseau ont rencontré une erreur, soit parce que le format n'est pas supporté.",
"The video playback was aborted due to a corruption problem or because the video used features your browser did not support.": "La lecture a été interrompue à cause d'un problème de corruption ou parce que la vidéo requiert une fonctionnalité non supportée par votre navigateur.",
"No compatible source was found for this video.": "Aucune source compatible n'a pu être trouvée pour cette vidéo."
});
+26
Ver Arquivo
@@ -0,0 +1,26 @@
videojs.addLanguage("pt-BR",{
"Play": "Tocar",
"Pause": "Pause",
"Current Time": "Tempo",
"Duration Time": "Duração",
"Remaining Time": "Tempo Restante",
"Stream Type": "Tipo de Stream",
"LIVE": "AO VIVO",
"Loaded": "Carregado",
"Progress": "Progressão",
"Fullscreen": "Tela Cheia",
"Non-Fullscreen": "Tela Normal",
"Mute": "Mudo",
"Unmuted": "Habilitar Som",
"Playback Rate": "Velocidade",
"Subtitles": "Legendas",
"subtitles off": "Sem Legendas",
"Captions": "Anotações",
"captions off": "Sem Anotações",
"Chapters": "Capítulos",
"You aborted the video playback": "Você parou a execução de vídeo.",
"A network error caused the video download to fail part-way.": "Um erro na rede fez o vídeo parar parcialmente.",
"The video could not be loaded, either because the server or network failed or because the format is not supported.": "O vídeo não pode ser carregado, ou porque houve um problema com sua rede ou pelo formato do vídeo não ser suportado.",
"The video playback was aborted due to a corruption problem or because the video used features your browser did not support.": "A Execução foi interrompida por um problema com o vídeo ou por seu navegador não dar suporte ao seu formato.",
"No compatible source was found for this video.": "Não foi encontrada fonte de vídeo compatível."
});
+13 -7
Ver Arquivo
@@ -1,6 +1,6 @@
/*!
Video.js Default Styles (http://videojs.com)
Version 4.7.2
Version 4.8.5
Create your own skin at http://designer.videojs.com
*/
/* SKIN
@@ -536,17 +536,21 @@ easily in the skin designer. http://designer.videojs.com/
text-align: center /* Needed for IE8 */;
vertical-align: middle;
position: absolute;
left: 0;
top: 50%;
margin-top: -0.5em;
width: 100%;
}
.vjs-error-display div {
position: absolute;
bottom: 1em;
right: 0;
left: 0;
font-size: 1.4em;
text-align: center;
bottom: 1em;
right: 1em;
left: 1em;
padding: 3px;
background: #000000;
background: rgba(0, 0, 0, 0.5);
}
.vjs-error-display a,
.vjs-error-display a:visited {
@@ -836,11 +840,13 @@ body.vjs-full-window {
background-position: 50% 50%;
background-size: contain;
cursor: pointer;
height: 100%;
margin: 0;
padding: 0;
position: relative;
width: 100%;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
.vjs-poster img {
display: block;
+12 -6
Ver Arquivo
@@ -614,6 +614,7 @@ easily in the skin designer. http://designer.videojs.com/
vertical-align: middle;
position: absolute;
left: 0;
top: 50%;
margin-top: -0.5em;
width: 100%;
@@ -621,12 +622,15 @@ easily in the skin designer. http://designer.videojs.com/
.vjs-error-display div {
position: absolute;
bottom: 1em;
right: 0;
left: 0;
font-size: 1.4em;
text-align: center;
bottom: 1em;
right: 1em;
left: 1em;
padding: 3px;
background: rgb(0, 0, 0); // fallback to just black
background: rgba(0,0,0,0.5); // Normally show black at 50% opacity
}
.vjs-error-display a, .vjs-error-display a:visited {
@@ -890,11 +894,13 @@ body.vjs-full-window {
background-position: 50% 50%;
background-size: contain;
cursor: pointer;
height: 100%;
margin: 0;
padding: 0;
position: relative;
width: 100%;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
.vjs-poster img {
display: block;
+2 -2
Ver Arquivo
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
BIN
Ver Arquivo
Arquivo binário não exibido.
+120 -54
Ver Arquivo
@@ -63,7 +63,7 @@ var vjs = function(id, options, ready){
var videojs = window['videojs'] = vjs;
// CDN Version. Used to target right flash swf.
vjs.CDN_VERSION = '4.7';
vjs.CDN_VERSION = '4.8';
vjs.ACCESS_PROTOCOL = ('https:' == document.location.protocol ? 'https://' : 'http://');
/**
@@ -92,6 +92,9 @@ vjs.options = {
// Add playback rate selection by adding rates
// 'playbackRates': [0.5, 1, 1.5, 2],
// default inactivity timeout
'inactivityTimeout': 2000,
// Included control sets
'children': {
'mediaLoader': {},
@@ -113,11 +116,30 @@ vjs.options = {
};
// Set CDN Version of swf
// The added (+) blocks the replace from changing this 4.7 string
// The added (+) blocks the replace from changing this 4.8 string
if (vjs.CDN_VERSION !== 'GENERATED'+'_CDN_VSN') {
videojs.options['flash']['swf'] = vjs.ACCESS_PROTOCOL + 'vjs.zencdn.net/'+vjs.CDN_VERSION+'/video-js.swf';
}
/**
* Utility function for adding languages to the default options. Useful for
* amending multiple language support at runtime.
*
* Example: vjs.addLanguage('es', {'Hello':'Hola'});
*
* @param {String} code The language code or dictionary property
* @param {Object} data The data values to be translated
* @return {Object} The resulting global languages dictionary object
*/
vjs.addLanguage = function(code, data){
if(vjs.options['languages'][code] !== undefined) {
vjs.options['languages'][code] = vjs.util.mergeOptions(vjs.options['languages'][code], data);
} else {
vjs.options['languages'][code] = data;
}
return vjs.options['languages'];
};
/**
* Global player list
* @type {Object}
@@ -817,6 +839,17 @@ vjs.obj.isArray = Array.isArray || function(arr) {
return Object.prototype.toString.call(arr) === '[object Array]';
};
/**
* Check to see whether the input is NaN or not.
* NaN is the only JavaScript construct that isn't equal to itself
* @param {Number} num Number to check
* @return {Boolean} True if NaN, false otherwise
* @private
*/
vjs.isNaN = function(num) {
return num !== num;
};
/**
* Bind (a.k.a proxy or Context). A simple method for changing the context of a function
It also stores a unique id on the function so it can be easily removed from events
@@ -1551,7 +1584,7 @@ vjs.util = {};
vjs.util.mergeOptions = function(obj1, obj2){
var key, val1, val2;
// make a copy of obj1 so we're not ovewriting original values.
// make a copy of obj1 so we're not overwriting original values.
// like prototype.options_ and all sub options objects
obj1 = vjs.obj.copy(obj1);
@@ -1569,10 +1602,7 @@ vjs.util.mergeOptions = function(obj1, obj2){
}
}
return obj1;
};
/**
};/**
* @fileoverview Player Component - Base class for all UI objects
*
*/
@@ -2380,6 +2410,9 @@ vjs.Component.prototype.dimensions = function(width, height){
*/
vjs.Component.prototype.dimension = function(widthOrHeight, num, skipListeners){
if (num !== undefined) {
if (num === null || vjs.isNaN(num)) {
num = 0;
}
// Check if using css width/height (% or px) and adjust
if ((''+num).indexOf('%') !== -1 || (''+num).indexOf('px') !== -1) {
@@ -2628,7 +2661,7 @@ vjs.Button.prototype.onClick = function(){};
// Focus - Add keyboard functionality to element
vjs.Button.prototype.onFocus = function(){
vjs.on(document, 'keyup', vjs.bind(this, this.onKeyPress));
vjs.on(document, 'keydown', vjs.bind(this, this.onKeyPress));
};
// KeyPress (document level) - Trigger click when keys are pressed
@@ -2642,7 +2675,7 @@ vjs.Button.prototype.onKeyPress = function(event){
// Blur - Remove keyboard triggers
vjs.Button.prototype.onBlur = function(){
vjs.off(document, 'keyup', vjs.bind(this, this.onKeyPress));
vjs.off(document, 'keydown', vjs.bind(this, this.onKeyPress));
};
/* Slider
================================================================================ */
@@ -3598,7 +3631,6 @@ vjs.Player.prototype.unloadTech = function(){
// vjs.log('loadedTech')
// },
// /* Player event handlers (how the player reacts to certain events)
// ================================================================================ */
@@ -3761,6 +3793,8 @@ vjs.Player.prototype.onEnded = function(){
if (this.options_['loop']) {
this.currentTime(0);
this.play();
} else if (!this.paused()) {
this.pause();
}
};
@@ -4405,7 +4439,8 @@ vjs.Player.prototype.src = function(source){
* @private
*/
vjs.Player.prototype.sourceList_ = function(sources){
var sourceTech = this.selectSource(sources);
var sourceTech = this.selectSource(sources),
errorTimeout;
if (sourceTech) {
if (sourceTech.tech === this.techName) {
@@ -4416,10 +4451,18 @@ vjs.Player.prototype.sourceList_ = function(sources){
this.loadTech(sourceTech.tech, sourceTech.source);
}
} else {
this.error({ code: 4, message: this.options()['notSupportedMessage'] });
// We need to wrap this in a timeout to give folks a chance to add error event handlers
errorTimeout = setTimeout(vjs.bind(this, function() {
this.error({ code: 4, message: this.localize(this.options()['notSupportedMessage']) });
}), 0);
// we could not find an appropriate tech, but let's still notify the delegate that this is it
// this needs a better comment about why this is needed
this.triggerReady();
this.on('dispose', function() {
clearTimeout(errorTimeout);
});
}
};
@@ -4751,16 +4794,19 @@ vjs.Player.prototype.listenForUserActivity = function(){
// Clear any existing inactivity timeout to start the timer over
clearTimeout(inactivityTimeout);
// In X seconds, if no more activity has occurred the user will be
// considered inactive
inactivityTimeout = setTimeout(vjs.bind(this, function() {
// Protect against the case where the inactivityTimeout can trigger just
// before the next user activity is picked up by the activityCheck loop
// causing a flicker
if (!this.userActivity_) {
this.userActive(false);
}
}), 2000);
var timeout = this.options()['inactivityTimeout'];
if (timeout > 0) {
// In <timeout> milliseconds, if no more activity has occurred the
// user will be considered inactive
inactivityTimeout = setTimeout(vjs.bind(this, function () {
// Protect against the case where the inactivityTimeout can trigger just
// before the next user activity is picked up by the activityCheck loop
// causing a flicker
if (!this.userActivity_) {
this.userActive(false);
}
}), timeout);
}
}
}), 250);
@@ -4777,7 +4823,7 @@ vjs.Player.prototype.playbackRate = function(rate) {
return this;
}
if (this.tech && this.tech.features && this.tech.features['playbackRate']) {
if (this.tech && this.tech['featuresPlaybackRate']) {
return this.techGet('playbackRate');
} else {
return 1.0;
@@ -5319,11 +5365,11 @@ vjs.VolumeControl = vjs.Component.extend({
vjs.Component.call(this, player, options);
// hide volume controls when they're not supported by the current tech
if (player.tech && player.tech.features && player.tech.features['volumeControl'] === false) {
if (player.tech && player.tech['featuresVolumeControl'] === false) {
this.addClass('vjs-hidden');
}
player.on('loadstart', vjs.bind(this, function(){
if (player.tech.features && player.tech.features['volumeControl'] === false) {
if (player.tech['featuresVolumeControl'] === false) {
this.addClass('vjs-hidden');
} else {
this.removeClass('vjs-hidden');
@@ -5461,11 +5507,11 @@ vjs.MuteToggle = vjs.Button.extend({
player.on('volumechange', vjs.bind(this, this.update));
// hide mute toggle if the current tech doesn't support volume control
if (player.tech && player.tech.features && player.tech.features['volumeControl'] === false) {
if (player.tech && player.tech['featuresVolumeControl'] === false) {
this.addClass('vjs-hidden');
}
player.on('loadstart', vjs.bind(this, function(){
if (player.tech.features && player.tech.features['volumeControl'] === false) {
if (player.tech['featuresVolumeControl'] === false) {
this.addClass('vjs-hidden');
} else {
this.removeClass('vjs-hidden');
@@ -5529,11 +5575,11 @@ vjs.VolumeMenuButton = vjs.MenuButton.extend({
player.on('volumechange', vjs.bind(this, this.update));
// hide mute toggle if the current tech doesn't support volume control
if (player.tech && player.tech.features && player.tech.features.volumeControl === false) {
if (player.tech && player.tech['featuresVolumeControl'] === false) {
this.addClass('vjs-hidden');
}
player.on('loadstart', vjs.bind(this, function(){
if (player.tech.features && player.tech.features.volumeControl === false) {
if (player.tech['featuresVolumeControl'] === false) {
this.addClass('vjs-hidden');
} else {
this.removeClass('vjs-hidden');
@@ -5638,7 +5684,7 @@ vjs.PlaybackRateMenuButton.prototype.onClick = function(){
vjs.PlaybackRateMenuButton.prototype.playbackRateSupported = function(){
return this.player().tech
&& this.player().tech.features['playbackRate']
&& this.player().tech['featuresPlaybackRate']
&& this.player().options()['playbackRates']
&& this.player().options()['playbackRates'].length > 0
;
@@ -5887,12 +5933,12 @@ vjs.MediaTechController = vjs.Component.extend({
vjs.Component.call(this, player, options, ready);
// Manually track progress in cases where the browser/flash player doesn't report it.
if (!this.features['progressEvents']) {
if (!this['featuresProgressEvents']) {
this.manualProgressOn();
}
// Manually track timeudpates in cases where the browser/flash player doesn't report it.
if (!this.features['timeupdateEvents']) {
if (!this['featuresTimeupdateEvents']) {
this.manualTimeUpdatesOn();
}
@@ -6078,7 +6124,7 @@ vjs.MediaTechController.prototype.manualTimeUpdatesOn = function(){
// Watch for native timeupdate event
this.one('timeupdate', function(){
// Update known progress support for this playback technology
this.features['timeupdateEvents'] = true;
this['featuresTimeupdateEvents'] = true;
// Turn off manual progress tracking
this.manualTimeUpdatesOff();
});
@@ -6129,18 +6175,16 @@ vjs.MediaTechController.prototype.setCurrentTime = function() {
*/
vjs.MediaTechController.prototype.setPoster = function(){};
vjs.MediaTechController.prototype.features = {
'volumeControl': true,
vjs.MediaTechController.prototype['featuresVolumeControl'] = true;
// Resizing plugins using request fullscreen reloads the plugin
'fullscreenResize': false,
'playbackRate': false,
// Resizing plugins using request fullscreen reloads the plugin
vjs.MediaTechController.prototype['featuresFullscreenResize'] = false;
vjs.MediaTechController.prototype['featuresPlaybackRate'] = false;
// Optional events that we can manually mimic with timers
// currently not triggered by video-js-swf
'progressEvents': false,
'timeupdateEvents': false
};
// Optional events that we can manually mimic with timers
// currently not triggered by video-js-swf
vjs.MediaTechController.prototype['featuresProgressEvents'] = false;
vjs.MediaTechController.prototype['featuresTimeupdateEvents'] = false;
vjs.media = {};
/**
@@ -6158,19 +6202,19 @@ vjs.Html5 = vjs.MediaTechController.extend({
/** @constructor */
init: function(player, options, ready){
// volume cannot be changed from 1 on iOS
this.features['volumeControl'] = vjs.Html5.canControlVolume();
this['featuresVolumeControl'] = vjs.Html5.canControlVolume();
// just in case; or is it excessively...
this.features['playbackRate'] = vjs.Html5.canControlPlaybackRate();
this['featuresPlaybackRate'] = vjs.Html5.canControlPlaybackRate();
// In iOS, if you move a video element in the DOM, it breaks video playback.
this.features['movingMediaElementInDOM'] = !vjs.IS_IOS;
this['movingMediaElementInDOM'] = !vjs.IS_IOS;
// HTML video is able to automatically resize when going to fullscreen
this.features['fullscreenResize'] = true;
this['featuresFullscreenResize'] = true;
// HTML video supports progress events
this.features['progressEvents'] = true;
this['featuresProgressEvents'] = true;
vjs.MediaTechController.call(this, player, options, ready);
this.setupTriggers();
@@ -6220,7 +6264,7 @@ vjs.Html5.prototype.createEl = function(){
// Check if this browser supports moving the element into the box.
// On the iPhone video will break if you move the element,
// So we have to create a brand new element.
if (!el || this.features['movingMediaElementInDOM'] === false) {
if (!el || this['movingMediaElementInDOM'] === false) {
// If the original tag is still there, clone and remove it.
if (el) {
@@ -6268,9 +6312,11 @@ vjs.Html5.prototype.setupTriggers = function(){
};
vjs.Html5.prototype.eventHandler = function(evt){
// In the case of an error, set the error prop on the player
// and let the player handle triggering the event.
if (evt.type == 'error') {
// In the case of an error on the video element, set the error prop
// on the player and let the player handle triggering the event. On
// some platforms, error events fire that do not cause the error
// property on the video element to be set. See #1465 for an example.
if (evt.type == 'error' && this.error()) {
this.player().error(this.error().code);
// in some cases we pass the event directly to the player
@@ -6352,6 +6398,20 @@ vjs.Html5.prototype.supportsFullScreen = function(){
vjs.Html5.prototype.enterFullScreen = function(){
var video = this.el_;
if ('webkitDisplayingFullscreen' in video) {
this.one('webkitbeginfullscreen', vjs.bind(this, function(e) {
this.player_.isFullscreen(true);
this.one('webkitendfullscreen', vjs.bind(this, function(e) {
this.player_.isFullscreen(false);
this.player_.trigger('fullscreenchange');
}));
this.player_.trigger('fullscreenchange');
}));
}
if (video.paused && video.networkState <= video.HAVE_METADATA) {
// attempt to prime the video element for programmatic access
// this isn't necessary on the desktop but shouldn't hurt
@@ -6370,7 +6430,13 @@ vjs.Html5.prototype.enterFullScreen = function(){
vjs.Html5.prototype.exitFullScreen = function(){
this.el_.webkitExitFullScreen();
};
vjs.Html5.prototype.src = function(src){ this.el_.src = src; };
vjs.Html5.prototype.src = function(src) {
if (src === undefined) {
return this.el_.src;
} else {
this.el_.src = src;
}
};
vjs.Html5.prototype.load = function(){ this.el_.load(); };
vjs.Html5.prototype.currentSrc = function(){ return this.el_.currentSrc; };
@@ -7314,7 +7380,7 @@ vjs.TextTrack.prototype.mode = function(){
* and restore it to its normal size when not in fullscreen mode.
*/
vjs.TextTrack.prototype.adjustFontSize = function(){
if (this.player_.isFullScreen()) {
if (this.player_.isFullscreen()) {
// Scale the font by the same factor as increasing the video width to the full screen window width.
// Additionally, multiply that factor by 1.4, which is the default font size for
// the caption track (from the CSS)
+152 -147
Ver Arquivo
@@ -1,155 +1,160 @@
/*! Video.js v4.7.2 Copyright 2014 Brightcove, Inc. https://github.com/videojs/video.js/blob/master/LICENSE */
(function() {var b=void 0,f=!0,k=null,l=!1;function m(){return function(){}}function p(a){return function(){return this[a]}}function r(a){return function(){return a}}var s;document.createElement("video");document.createElement("audio");document.createElement("track");function t(a,c,d){if("string"===typeof a){0===a.indexOf("#")&&(a=a.slice(1));if(t.Ca[a])return t.Ca[a];a=t.w(a)}if(!a||!a.nodeName)throw new TypeError("The element or ID supplied is not valid. (videojs)");return a.player||new t.Player(a,c,d)}
var videojs=window.videojs=t;t.Vb="4.7";t.Uc="https:"==document.location.protocol?"https://":"http://";t.options={techOrder:["html5","flash"],html5:{},flash:{},width:300,height:150,defaultVolume:0,playbackRates:[],children:{mediaLoader:{},posterImage:{},textTrackDisplay:{},loadingSpinner:{},bigPlayButton:{},controlBar:{},errorDisplay:{}},language:document.getElementsByTagName("html")[0].getAttribute("lang")||navigator.Va&&navigator.Va[0]||navigator.ue||navigator.language||"en",languages:{},notSupportedMessage:"No compatible source was found for this video."};
"GENERATED_CDN_VSN"!==t.Vb&&(videojs.options.flash.swf=t.Uc+"vjs.zencdn.net/"+t.Vb+"/video-js.swf");t.Ca={};"function"===typeof define&&define.amd?define([],function(){return videojs}):"object"===typeof exports&&"object"===typeof module&&(module.exports=videojs);t.ra=t.CoreObject=m();
t.ra.extend=function(a){var c,d;a=a||{};c=a.init||a.i||this.prototype.init||this.prototype.i||m();d=function(){c.apply(this,arguments)};d.prototype=t.h.create(this.prototype);d.prototype.constructor=d;d.extend=t.ra.extend;d.create=t.ra.create;for(var e in a)a.hasOwnProperty(e)&&(d.prototype[e]=a[e]);return d};t.ra.create=function(){var a=t.h.create(this.prototype);this.apply(a,arguments);return a};
t.d=function(a,c,d){if(t.h.isArray(c))return u(t.d,a,c,d);var e=t.getData(a);e.D||(e.D={});e.D[c]||(e.D[c]=[]);d.z||(d.z=t.z++);e.D[c].push(d);e.Y||(e.disabled=l,e.Y=function(c){if(!e.disabled){c=t.qc(c);var d=e.D[c.type];if(d)for(var d=d.slice(0),j=0,n=d.length;j<n&&!c.xc();j++)d[j].call(a,c)}});1==e.D[c].length&&(a.addEventListener?a.addEventListener(c,e.Y,l):a.attachEvent&&a.attachEvent("on"+c,e.Y))};
t.p=function(a,c,d){if(t.tc(a)){var e=t.getData(a);if(e.D){if(t.h.isArray(c))return u(t.p,a,c,d);if(c){var g=e.D[c];if(g){if(d){if(d.z)for(e=0;e<g.length;e++)g[e].z===d.z&&g.splice(e--,1)}else e.D[c]=[];t.kc(a,c)}}else for(g in e.D)c=g,e.D[c]=[],t.kc(a,c)}}};t.kc=function(a,c){var d=t.getData(a);0===d.D[c].length&&(delete d.D[c],a.removeEventListener?a.removeEventListener(c,d.Y,l):a.detachEvent&&a.detachEvent("on"+c,d.Y));t.Hb(d.D)&&(delete d.D,delete d.Y,delete d.disabled);t.Hb(d)&&t.Gc(a)};
t.qc=function(a){function c(){return f}function d(){return l}if(!a||!a.Ib){var e=a||window.event;a={};for(var g in e)"layerX"!==g&&("layerY"!==g&&"keyboardEvent.keyLocation"!==g)&&("returnValue"==g&&e.preventDefault||(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.Ad=c;a.defaultPrevented=f};a.Ad=d;a.defaultPrevented=l;a.stopPropagation=function(){e.stopPropagation&&
e.stopPropagation();a.cancelBubble=f;a.Ib=c};a.Ib=d;a.stopImmediatePropagation=function(){e.stopImmediatePropagation&&e.stopImmediatePropagation();a.xc=c;a.stopPropagation()};a.xc=d;if(a.clientX!=k){g=document.documentElement;var h=document.body;a.pageX=a.clientX+(g&&g.scrollLeft||h&&h.scrollLeft||0)-(g&&g.clientLeft||h&&h.clientLeft||0);a.pageY=a.clientY+(g&&g.scrollTop||h&&h.scrollTop||0)-(g&&g.clientTop||h&&h.clientTop||0)}a.which=a.charCode||a.keyCode;a.button!=k&&(a.button=a.button&1?0:a.button&
4?1:a.button&2?2:0)}return a};t.m=function(a,c){var d=t.tc(a)?t.getData(a):{},e=a.parentNode||a.ownerDocument;"string"===typeof c&&(c={type:c,target:a});c=t.qc(c);d.Y&&d.Y.call(a,c);if(e&&!c.Ib()&&c.bubbles!==l)t.m(e,c);else if(!e&&!c.defaultPrevented&&(d=t.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.defaultPrevented};
t.X=function(a,c,d){function e(){t.p(a,c,e);d.apply(this,arguments)}if(t.h.isArray(c))return u(t.X,a,c,d);e.z=d.z=d.z||t.z++;t.d(a,c,e)};function u(a,c,d,e){t.ic.forEach(d,function(d){a(c,d,e)})}var v=Object.prototype.hasOwnProperty;t.e=function(a,c){var d;c=c||{};d=document.createElement(a||"div");t.h.Z(c,function(a,c){-1!==a.indexOf("aria-")||"role"==a?d.setAttribute(a,c):d[a]=c});return d};t.ba=function(a){return a.charAt(0).toUpperCase()+a.slice(1)};t.h={};
t.h.create=Object.create||function(a){function c(){}c.prototype=a;return new c};t.h.Z=function(a,c,d){for(var e in a)v.call(a,e)&&c.call(d||this,e,a[e])};t.h.A=function(a,c){if(!c)return a;for(var d in c)v.call(c,d)&&(a[d]=c[d]);return a};t.h.od=function(a,c){var d,e,g;a=t.h.copy(a);for(d in c)v.call(c,d)&&(e=a[d],g=c[d],a[d]=t.h.Ta(e)&&t.h.Ta(g)?t.h.od(e,g):c[d]);return a};t.h.copy=function(a){return t.h.A({},a)};
t.h.Ta=function(a){return!!a&&"object"===typeof a&&"[object Object]"===a.toString()&&a.constructor===Object};t.h.isArray=Array.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)};t.bind=function(a,c,d){function e(){return c.apply(a,arguments)}c.z||(c.z=t.z++);e.z=d?d+"_"+c.z:c.z;return e};t.va={};t.z=1;t.expando="vdata"+(new Date).getTime();t.getData=function(a){var c=a[t.expando];c||(c=a[t.expando]=t.z++,t.va[c]={});return t.va[c]};
t.tc=function(a){a=a[t.expando];return!(!a||t.Hb(t.va[a]))};t.Gc=function(a){var c=a[t.expando];if(c){delete t.va[c];try{delete a[t.expando]}catch(d){a.removeAttribute?a.removeAttribute(t.expando):a[t.expando]=k}}};t.Hb=function(a){for(var c in a)if(a[c]!==k)return l;return f};t.n=function(a,c){-1==(" "+a.className+" ").indexOf(" "+c+" ")&&(a.className=""===a.className?c:a.className+" "+c)};
t.q=function(a,c){var d,e;if(-1!=a.className.indexOf(c)){d=a.className.split(" ");for(e=d.length-1;0<=e;e--)d[e]===c&&d.splice(e,1);a.className=d.join(" ")}};t.B=t.e("video");t.M=navigator.userAgent;t.$c=/iPhone/i.test(t.M);t.Zc=/iPad/i.test(t.M);t.ad=/iPod/i.test(t.M);t.Yc=t.$c||t.Zc||t.ad;var aa=t,x;var y=t.M.match(/OS (\d+)_/i);x=y&&y[1]?y[1]:b;aa.le=x;t.Wc=/Android/i.test(t.M);var ba=t,z;var A=t.M.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i),B,C;
A?(B=A[1]&&parseFloat(A[1]),C=A[2]&&parseFloat(A[2]),z=B&&C?parseFloat(A[1]+"."+A[2]):B?B:k):z=k;ba.Ub=z;t.bd=t.Wc&&/webkit/i.test(t.M)&&2.3>t.Ub;t.Xc=/Firefox/i.test(t.M);t.me=/Chrome/i.test(t.M);t.ec=!!("ontouchstart"in window||window.Vc&&document instanceof window.Vc);t.Ic=function(a,c){t.h.Z(c,function(c,e){e===k||"undefined"===typeof e||e===l?a.removeAttribute(c):a.setAttribute(c,e===f?"":e)})};
t.Aa=function(a){var c,d,e,g;c={};if(a&&a.attributes&&0<a.attributes.length){d=a.attributes;for(var h=d.length-1;0<=h;h--){e=d[h].name;g=d[h].value;if("boolean"===typeof a[e]||-1!==",autoplay,controls,loop,muted,default,".indexOf(","+e+","))g=g!==k?f:l;c[e]=g}}return c};
t.oe=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};t.Gb=function(a,c){c.firstChild?c.insertBefore(a,c.firstChild):c.appendChild(a)};t.Pa={};t.w=function(a){0===a.indexOf("#")&&(a=a.slice(1));return document.getElementById(a)};
t.za=function(a,c){c=c||a;var d=Math.floor(a%60),e=Math.floor(a/60%60),g=Math.floor(a/3600),h=Math.floor(c/60%60),j=Math.floor(c/3600);if(isNaN(a)||Infinity===a)g=e=d="-";g=0<g||0<j?g+":":"";return g+(((g||10<=h)&&10>e?"0"+e:e)+":")+(10>d?"0"+d:d)};t.hd=function(){document.body.focus();document.onselectstart=r(l)};t.he=function(){document.onselectstart=r(f)};t.trim=function(a){return(a+"").replace(/^\s+|\s+$/g,"")};t.round=function(a,c){c||(c=0);return Math.round(a*Math.pow(10,c))/Math.pow(10,c)};
t.zb=function(a,c){return{length:1,start:function(){return a},end:function(){return c}}};
t.get=function(a,c,d,e){var g,h,j,n;d=d||m();"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.");});h=new XMLHttpRequest;j=t.Ud(a);n=window.location;j.protocol+j.host!==n.protocol+n.host&&window.XDomainRequest&&!("withCredentials"in
/*! Video.js v4.8.5 Copyright 2014 Brightcove, Inc. https://github.com/videojs/video.js/blob/master/LICENSE */
(function() {var b=void 0,f=!0,k=null,l=!1;function m(){return function(){}}function p(a){return function(){return this[a]}}function r(a){return function(){return a}}var s;document.createElement("video");document.createElement("audio");document.createElement("track");function t(a,c,d){if("string"===typeof a){0===a.indexOf("#")&&(a=a.slice(1));if(t.Ba[a])return t.Ba[a];a=t.v(a)}if(!a||!a.nodeName)throw new TypeError("The element or ID supplied is not valid. (videojs)");return a.player||new t.Player(a,c,d)}
var videojs=window.videojs=t;t.Tb="4.8";t.Rc="https:"==document.location.protocol?"https://":"http://";
t.options={techOrder:["html5","flash"],html5:{},flash:{},width:300,height:150,defaultVolume:0,playbackRates:[],inactivityTimeout:2E3,children:{mediaLoader:{},posterImage:{},textTrackDisplay:{},loadingSpinner:{},bigPlayButton:{},controlBar:{},errorDisplay:{}},language:document.getElementsByTagName("html")[0].getAttribute("lang")||navigator.languages&&navigator.languages[0]||navigator.ve||navigator.language||"en",languages:{},notSupportedMessage:"No compatible source was found for this video."};
"GENERATED_CDN_VSN"!==t.Tb&&(videojs.options.flash.swf=t.Rc+"vjs.zencdn.net/"+t.Tb+"/video-js.swf");t.cd=function(a,c){t.options.languages[a]=t.options.languages[a]!==b?t.ga.Ua(t.options.languages[a],c):c;return t.options.languages};t.Ba={};"function"===typeof define&&define.amd?define([],function(){return videojs}):"object"===typeof exports&&"object"===typeof module&&(module.exports=videojs);t.qa=t.CoreObject=m();
t.qa.extend=function(a){var c,d;a=a||{};c=a.init||a.i||this.prototype.init||this.prototype.i||m();d=function(){c.apply(this,arguments)};d.prototype=t.h.create(this.prototype);d.prototype.constructor=d;d.extend=t.qa.extend;d.create=t.qa.create;for(var e in a)a.hasOwnProperty(e)&&(d.prototype[e]=a[e]);return d};t.qa.create=function(){var a=t.h.create(this.prototype);this.apply(a,arguments);return a};
t.d=function(a,c,d){if(t.h.isArray(c))return u(t.d,a,c,d);var e=t.getData(a);e.C||(e.C={});e.C[c]||(e.C[c]=[]);d.w||(d.w=t.w++);e.C[c].push(d);e.X||(e.disabled=l,e.X=function(c){if(!e.disabled){c=t.oc(c);var d=e.C[c.type];if(d)for(var d=d.slice(0),j=0,n=d.length;j<n&&!c.vc();j++)d[j].call(a,c)}});1==e.C[c].length&&(a.addEventListener?a.addEventListener(c,e.X,l):a.attachEvent&&a.attachEvent("on"+c,e.X))};
t.o=function(a,c,d){if(t.rc(a)){var e=t.getData(a);if(e.C){if(t.h.isArray(c))return u(t.o,a,c,d);if(c){var g=e.C[c];if(g){if(d){if(d.w)for(e=0;e<g.length;e++)g[e].w===d.w&&g.splice(e--,1)}else e.C[c]=[];t.ic(a,c)}}else for(g in e.C)c=g,e.C[c]=[],t.ic(a,c)}}};t.ic=function(a,c){var d=t.getData(a);0===d.C[c].length&&(delete d.C[c],a.removeEventListener?a.removeEventListener(c,d.X,l):a.detachEvent&&a.detachEvent("on"+c,d.X));t.Gb(d.C)&&(delete d.C,delete d.X,delete d.disabled);t.Gb(d)&&t.Ec(a)};
t.oc=function(a){function c(){return f}function d(){return l}if(!a||!a.Hb){var e=a||window.event;a={};for(var g in e)"layerX"!==g&&("layerY"!==g&&"keyboardEvent.keyLocation"!==g)&&("returnValue"==g&&e.preventDefault||(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.yd=c;a.defaultPrevented=f};a.yd=d;a.defaultPrevented=l;a.stopPropagation=function(){e.stopPropagation&&
e.stopPropagation();a.cancelBubble=f;a.Hb=c};a.Hb=d;a.stopImmediatePropagation=function(){e.stopImmediatePropagation&&e.stopImmediatePropagation();a.vc=c;a.stopPropagation()};a.vc=d;if(a.clientX!=k){g=document.documentElement;var h=document.body;a.pageX=a.clientX+(g&&g.scrollLeft||h&&h.scrollLeft||0)-(g&&g.clientLeft||h&&h.clientLeft||0);a.pageY=a.clientY+(g&&g.scrollTop||h&&h.scrollTop||0)-(g&&g.clientTop||h&&h.clientTop||0)}a.which=a.charCode||a.keyCode;a.button!=k&&(a.button=a.button&1?0:a.button&
4?1:a.button&2?2:0)}return a};t.k=function(a,c){var d=t.rc(a)?t.getData(a):{},e=a.parentNode||a.ownerDocument;"string"===typeof c&&(c={type:c,target:a});c=t.oc(c);d.X&&d.X.call(a,c);if(e&&!c.Hb()&&c.bubbles!==l)t.k(e,c);else if(!e&&!c.defaultPrevented&&(d=t.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.defaultPrevented};
t.O=function(a,c,d){function e(){t.o(a,c,e);d.apply(this,arguments)}if(t.h.isArray(c))return u(t.O,a,c,d);e.w=d.w=d.w||t.w++;t.d(a,c,e)};function u(a,c,d,e){t.gc.forEach(d,function(d){a(c,d,e)})}var v=Object.prototype.hasOwnProperty;t.e=function(a,c){var d;c=c||{};d=document.createElement(a||"div");t.h.Y(c,function(a,c){-1!==a.indexOf("aria-")||"role"==a?d.setAttribute(a,c):d[a]=c});return d};t.aa=function(a){return a.charAt(0).toUpperCase()+a.slice(1)};t.h={};
t.h.create=Object.create||function(a){function c(){}c.prototype=a;return new c};t.h.Y=function(a,c,d){for(var e in a)v.call(a,e)&&c.call(d||this,e,a[e])};t.h.z=function(a,c){if(!c)return a;for(var d in c)v.call(c,d)&&(a[d]=c[d]);return a};t.h.md=function(a,c){var d,e,g;a=t.h.copy(a);for(d in c)v.call(c,d)&&(e=a[d],g=c[d],a[d]=t.h.Sa(e)&&t.h.Sa(g)?t.h.md(e,g):c[d]);return a};t.h.copy=function(a){return t.h.z({},a)};
t.h.Sa=function(a){return!!a&&"object"===typeof a&&"[object Object]"===a.toString()&&a.constructor===Object};t.h.isArray=Array.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)};t.Ad=function(a){return a!==a};t.bind=function(a,c,d){function e(){return c.apply(a,arguments)}c.w||(c.w=t.w++);e.w=d?d+"_"+c.w:c.w;return e};t.ua={};t.w=1;t.expando="vdata"+(new Date).getTime();t.getData=function(a){var c=a[t.expando];c||(c=a[t.expando]=t.w++,t.ua[c]={});return t.ua[c]};
t.rc=function(a){a=a[t.expando];return!(!a||t.Gb(t.ua[a]))};t.Ec=function(a){var c=a[t.expando];if(c){delete t.ua[c];try{delete a[t.expando]}catch(d){a.removeAttribute?a.removeAttribute(t.expando):a[t.expando]=k}}};t.Gb=function(a){for(var c in a)if(a[c]!==k)return l;return f};t.n=function(a,c){-1==(" "+a.className+" ").indexOf(" "+c+" ")&&(a.className=""===a.className?c:a.className+" "+c)};
t.p=function(a,c){var d,e;if(-1!=a.className.indexOf(c)){d=a.className.split(" ");for(e=d.length-1;0<=e;e--)d[e]===c&&d.splice(e,1);a.className=d.join(" ")}};t.A=t.e("video");t.L=navigator.userAgent;t.Xc=/iPhone/i.test(t.L);t.Wc=/iPad/i.test(t.L);t.Yc=/iPod/i.test(t.L);t.Vc=t.Xc||t.Wc||t.Yc;var aa=t,x;var y=t.L.match(/OS (\d+)_/i);x=y&&y[1]?y[1]:b;aa.ke=x;t.Tc=/Android/i.test(t.L);var ba=t,z;var A=t.L.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i),B,C;
A?(B=A[1]&&parseFloat(A[1]),C=A[2]&&parseFloat(A[2]),z=B&&C?parseFloat(A[1]+"."+A[2]):B?B:k):z=k;ba.Sb=z;t.Zc=t.Tc&&/webkit/i.test(t.L)&&2.3>t.Sb;t.Uc=/Firefox/i.test(t.L);t.le=/Chrome/i.test(t.L);t.cc=!!("ontouchstart"in window||window.Sc&&document instanceof window.Sc);t.Gc=function(a,c){t.h.Y(c,function(c,e){e===k||"undefined"===typeof e||e===l?a.removeAttribute(c):a.setAttribute(c,e===f?"":e)})};
t.za=function(a){var c,d,e,g;c={};if(a&&a.attributes&&0<a.attributes.length){d=a.attributes;for(var h=d.length-1;0<=h;h--){e=d[h].name;g=d[h].value;if("boolean"===typeof a[e]||-1!==",autoplay,controls,loop,muted,default,".indexOf(","+e+","))g=g!==k?f:l;c[e]=g}}return c};
t.re=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};t.Fb=function(a,c){c.firstChild?c.insertBefore(a,c.firstChild):c.appendChild(a)};t.Oa={};t.v=function(a){0===a.indexOf("#")&&(a=a.slice(1));return document.getElementById(a)};
t.ya=function(a,c){c=c||a;var d=Math.floor(a%60),e=Math.floor(a/60%60),g=Math.floor(a/3600),h=Math.floor(c/60%60),j=Math.floor(c/3600);if(isNaN(a)||Infinity===a)g=e=d="-";g=0<g||0<j?g+":":"";return g+(((g||10<=h)&&10>e?"0"+e:e)+":")+(10>d?"0"+d:d)};t.fd=function(){document.body.focus();document.onselectstart=r(l)};t.ge=function(){document.onselectstart=r(f)};t.trim=function(a){return(a+"").replace(/^\s+|\s+$/g,"")};t.round=function(a,c){c||(c=0);return Math.round(a*Math.pow(10,c))/Math.pow(10,c)};
t.yb=function(a,c){return{length:1,start:function(){return a},end:function(){return c}}};
t.get=function(a,c,d,e){var g,h,j,n;d=d||m();"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.");});h=new XMLHttpRequest;j=t.Td(a);n=window.location;j.protocol+j.host!==n.protocol+n.host&&window.XDomainRequest&&!("withCredentials"in
h)?(h=new window.XDomainRequest,h.onload=function(){c(h.responseText)},h.onerror=d,h.onprogress=m(),h.ontimeout=d):(g="file:"==j.protocol||"file:"==n.protocol,h.onreadystatechange=function(){4===h.readyState&&(200===h.status||g&&0===h.status?c(h.responseText):d(h.responseText))});try{h.open("GET",a,f),e&&(h.withCredentials=f)}catch(q){d(q);return}try{h.send()}catch(w){d(w)}};
t.Yd=function(a){try{var c=window.localStorage||l;c&&(c.volume=a)}catch(d){22==d.code||1014==d.code?t.log("LocalStorage Full (VideoJS)",d):18==d.code?t.log("LocalStorage not allowed (VideoJS)",d):t.log("LocalStorage Error (VideoJS)",d)}};t.sc=function(a){a.match(/^https?:\/\//)||(a=t.e("div",{innerHTML:'<a href="'+a+'">x</a>'}).firstChild.href);return a};
t.Ud=function(a){var c,d,e,g;g="protocol hostname port pathname search hash host".split(" ");d=t.e("a",{href:a});if(e=""===d.host&&"file:"!==d.protocol)c=t.e("div"),c.innerHTML='<a href="'+a+'"></a>',d=c.firstChild,c.setAttribute("style","display:none; position:absolute;"),document.body.appendChild(c);a={};for(var h=0;h<g.length;h++)a[g[h]]=d[g[h]];e&&document.body.removeChild(c);return a};
t.Xd=function(a){try{var c=window.localStorage||l;c&&(c.volume=a)}catch(d){22==d.code||1014==d.code?t.log("LocalStorage Full (VideoJS)",d):18==d.code?t.log("LocalStorage not allowed (VideoJS)",d):t.log("LocalStorage Error (VideoJS)",d)}};t.qc=function(a){a.match(/^https?:\/\//)||(a=t.e("div",{innerHTML:'<a href="'+a+'">x</a>'}).firstChild.href);return a};
t.Td=function(a){var c,d,e,g;g="protocol hostname port pathname search hash host".split(" ");d=t.e("a",{href:a});if(e=""===d.host&&"file:"!==d.protocol)c=t.e("div"),c.innerHTML='<a href="'+a+'"></a>',d=c.firstChild,c.setAttribute("style","display:none; position:absolute;"),document.body.appendChild(c);a={};for(var h=0;h<g.length;h++)a[g[h]]=d[g[h]];e&&document.body.removeChild(c);return a};
function D(a,c){var d,e;d=Array.prototype.slice.call(c);e=m();e=window.console||{log:e,warn:e,error:e};a?d.unshift(a.toUpperCase()+":"):a="log";t.log.history.push(d);d.unshift("VIDEOJS:");if(e[a].apply)e[a].apply(e,d);else e[a](d.join(" "))}t.log=function(){D(k,arguments)};t.log.history=[];t.log.error=function(){D("error",arguments)};t.log.warn=function(){D("warn",arguments)};
t.wd=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:t.round(c.left+(window.pageXOffset||d.scrollLeft)-(a.clientLeft||d.clientLeft||0)),top:t.round(c.top+(window.pageYOffset||d.scrollTop)-(a.clientTop||d.clientTop||0))}};t.ic={};t.ic.forEach=function(a,c,d){if(t.h.isArray(a)&&c instanceof Function)for(var e=0,g=a.length;e<g;++e)c.call(d||t,a[e],e,a);return a};t.qa={};
t.qa.Lb=function(a,c){var d,e,g;a=t.h.copy(a);for(d in c)c.hasOwnProperty(d)&&(e=a[d],g=c[d],a[d]=t.h.Ta(e)&&t.h.Ta(g)?t.qa.Lb(e,g):c[d]);return a};
t.a=t.ra.extend({i:function(a,c,d){this.c=a;this.l=t.h.copy(this.l);c=this.options(c);this.U=c.id||(c.el&&c.el.id?c.el.id:a.id()+"_component_"+t.z++);this.Hd=c.name||k;this.b=c.el||this.e();this.N=[];this.Qa={};this.Ra={};this.vc();this.J(d);if(c.Hc!==l){var e,g;e=t.bind(this.j(),this.j().reportUserActivity);this.d("touchstart",function(){e();clearInterval(g);g=setInterval(e,250)});a=function(){e();clearInterval(g)};this.d("touchmove",e);this.d("touchend",a);this.d("touchcancel",a)}}});s=t.a.prototype;
s.dispose=function(){this.m({type:"dispose",bubbles:l});if(this.N)for(var a=this.N.length-1;0<=a;a--)this.N[a].dispose&&this.N[a].dispose();this.Ra=this.Qa=this.N=k;this.p();this.b.parentNode&&this.b.parentNode.removeChild(this.b);t.Gc(this.b);this.b=k};s.c=f;s.j=p("c");s.options=function(a){return a===b?this.l:this.l=t.qa.Lb(this.l,a)};s.e=function(a,c){return t.e(a,c)};s.s=function(a){var c=this.c.language(),d=this.c.Va();return d&&d[c]&&d[c][a]?d[c][a]:a};s.w=p("b");
s.ja=function(){return this.v||this.b};s.id=p("U");s.name=p("Hd");s.children=p("N");s.yd=function(a){return this.Qa[a]};s.ka=function(a){return this.Ra[a]};s.R=function(a,c){var d,e;"string"===typeof a?(e=a,c=c||{},d=c.componentClass||t.ba(e),c.name=e,d=new window.videojs[d](this.c||this,c)):d=a;this.N.push(d);"function"===typeof d.id&&(this.Qa[d.id()]=d);(e=e||d.name&&d.name())&&(this.Ra[e]=d);"function"===typeof d.el&&d.el()&&this.ja().appendChild(d.el());return d};
s.removeChild=function(a){"string"===typeof a&&(a=this.ka(a));if(a&&this.N){for(var c=l,d=this.N.length-1;0<=d;d--)if(this.N[d]===a){c=f;this.N.splice(d,1);break}c&&(this.Qa[a.id]=k,this.Ra[a.name]=k,(c=a.w())&&c.parentNode===this.ja()&&this.ja().removeChild(a.w()))}};s.vc=function(){var a,c,d,e;a=this;if(c=this.options().children)if(t.h.isArray(c))for(var g=0;g<c.length;g++)d=c[g],"string"==typeof d?(e=d,d={}):e=d.name,a[e]=a.R(e,d);else t.h.Z(c,function(c,d){d!==l&&(a[c]=a.R(c,d))})};s.T=r("");
s.d=function(a,c){t.d(this.b,a,t.bind(this,c));return this};s.p=function(a,c){t.p(this.b,a,c);return this};s.X=function(a,c){t.X(this.b,a,t.bind(this,c));return this};s.m=function(a){t.m(this.b,a);return this};s.J=function(a){a&&(this.la?a.call(this):(this.ab===b&&(this.ab=[]),this.ab.push(a)));return this};s.Ga=function(){this.la=f;var a=this.ab;if(a&&0<a.length){for(var c=0,d=a.length;c<d;c++)a[c].call(this);this.ab=[];this.m("ready")}};s.n=function(a){t.n(this.b,a);return this};
s.q=function(a){t.q(this.b,a);return this};s.show=function(){this.b.style.display="block";return this};s.W=function(){this.b.style.display="none";return this};function E(a){a.q("vjs-lock-showing")}s.disable=function(){this.W();this.show=m()};s.width=function(a,c){return F(this,"width",a,c)};s.height=function(a,c){return F(this,"height",a,c)};s.rd=function(a,c){return this.width(a,f).height(c)};
function F(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.m("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"+t.ba(c)],10)}
function G(a){var c,d,e,g,h,j,n,q;c=0;d=k;a.d("touchstart",function(a){1===a.touches.length&&(d=a.touches[0],c=(new Date).getTime(),g=f)});a.d("touchmove",function(a){1<a.touches.length?g=l:d&&(j=a.touches[0].pageX-d.pageX,n=a.touches[0].pageY-d.pageY,q=Math.sqrt(j*j+n*n),22<q&&(g=l))});h=function(){g=l};a.d("touchleave",h);a.d("touchcancel",h);a.d("touchend",function(a){d=k;g===f&&(e=(new Date).getTime()-c,250>e&&(a.preventDefault(),this.m("tap")))})}
t.t=t.a.extend({i:function(a,c){t.a.call(this,a,c);G(this);this.d("tap",this.r);this.d("click",this.r);this.d("focus",this.Ya);this.d("blur",this.Xa)}});s=t.t.prototype;
s.e=function(a,c){var d;c=t.h.A({className:this.T(),role:"button","aria-live":"polite",tabIndex:0},c);d=t.a.prototype.e.call(this,a,c);c.innerHTML||(this.v=t.e("div",{className:"vjs-control-content"}),this.xb=t.e("span",{className:"vjs-control-text",innerHTML:this.s(this.ua)||"Need Text"}),this.v.appendChild(this.xb),d.appendChild(this.v));return d};s.T=function(){return"vjs-control "+t.a.prototype.T.call(this)};s.r=m();s.Ya=function(){t.d(document,"keyup",t.bind(this,this.ea))};
s.ea=function(a){if(32==a.which||13==a.which)a.preventDefault(),this.r()};s.Xa=function(){t.p(document,"keyup",t.bind(this,this.ea))};
t.Q=t.a.extend({i:function(a,c){t.a.call(this,a,c);this.gd=this.ka(this.l.barName);this.handle=this.ka(this.l.handleName);this.d("mousedown",this.Za);this.d("touchstart",this.Za);this.d("focus",this.Ya);this.d("blur",this.Xa);this.d("click",this.r);this.c.d("controlsvisible",t.bind(this,this.update));a.d(this.Cc,t.bind(this,this.update));this.S={};this.S.move=t.bind(this,this.$a);this.S.end=t.bind(this,this.Mb)}});s=t.Q.prototype;
s.e=function(a,c){c=c||{};c.className+=" vjs-slider";c=t.h.A({role:"slider","aria-valuenow":0,"aria-valuemin":0,"aria-valuemax":100,tabIndex:0},c);return t.a.prototype.e.call(this,a,c)};s.Za=function(a){a.preventDefault();t.hd();this.n("vjs-sliding");t.d(document,"mousemove",this.S.move);t.d(document,"mouseup",this.S.end);t.d(document,"touchmove",this.S.move);t.d(document,"touchend",this.S.end);this.$a(a)};s.$a=m();
s.Mb=function(){t.he();this.q("vjs-sliding");t.p(document,"mousemove",this.S.move,l);t.p(document,"mouseup",this.S.end,l);t.p(document,"touchmove",this.S.move,l);t.p(document,"touchend",this.S.end,l);this.update()};s.update=function(){if(this.b){var a,c=this.Fb(),d=this.handle,e=this.gd;isNaN(c)&&(c=0);a=c;if(d){a=this.b.offsetWidth;var g=d.w().offsetWidth;a=g?g/a:0;c*=1-a;a=c+a/2;d.w().style.left=t.round(100*c,2)+"%"}e&&(e.w().style.width=t.round(100*a,2)+"%")}};
function H(a,c){var d,e,g,h;d=a.b;e=t.wd(d);h=g=d.offsetWidth;d=a.handle;if(a.options().vertical)return h=e.top,e=c.changedTouches?c.changedTouches[0].pageY:c.pageY,d&&(d=d.w().offsetHeight,h+=d/2,g-=d),Math.max(0,Math.min(1,(h-e+g)/g));g=e.left;e=c.changedTouches?c.changedTouches[0].pageX:c.pageX;d&&(d=d.w().offsetWidth,g+=d/2,h-=d);return Math.max(0,Math.min(1,(e-g)/h))}s.Ya=function(){t.d(document,"keyup",t.bind(this,this.ea))};
s.ea=function(a){if(37==a.which||40==a.which)a.preventDefault(),this.Lc();else if(38==a.which||39==a.which)a.preventDefault(),this.Mc()};s.Xa=function(){t.p(document,"keyup",t.bind(this,this.ea))};s.r=function(a){a.stopImmediatePropagation();a.preventDefault()};t.$=t.a.extend();t.$.prototype.defaultValue=0;
t.$.prototype.e=function(a,c){c=c||{};c.className+=" vjs-slider-handle";c=t.h.A({innerHTML:'<span class="vjs-control-text">'+this.defaultValue+"</span>"},c);return t.a.prototype.e.call(this,"div",c)};t.ha=t.a.extend();function ca(a,c){a.R(c);c.d("click",t.bind(a,function(){E(this)}))}
t.ha.prototype.e=function(){var a=this.options().lc||"ul";this.v=t.e(a,{className:"vjs-menu-content"});a=t.a.prototype.e.call(this,"div",{append:this.v,className:"vjs-menu"});a.appendChild(this.v);t.d(a,"click",function(a){a.preventDefault();a.stopImmediatePropagation()});return a};t.I=t.t.extend({i:function(a,c){t.t.call(this,a,c);this.selected(c.selected)}});t.I.prototype.e=function(a,c){return t.t.prototype.e.call(this,"li",t.h.A({className:"vjs-menu-item",innerHTML:this.l.label},c))};
t.I.prototype.r=function(){this.selected(f)};t.I.prototype.selected=function(a){a?(this.n("vjs-selected"),this.b.setAttribute("aria-selected",f)):(this.q("vjs-selected"),this.b.setAttribute("aria-selected",l))};t.L=t.t.extend({i:function(a,c){t.t.call(this,a,c);this.Ba=this.xa();this.R(this.Ba);this.O&&0===this.O.length&&this.W();this.d("keyup",this.ea);this.b.setAttribute("aria-haspopup",f);this.b.setAttribute("role","button")}});s=t.L.prototype;s.ta=l;
s.xa=function(){var a=new t.ha(this.c);this.options().title&&a.ja().appendChild(t.e("li",{className:"vjs-menu-title",innerHTML:t.ba(this.options().title),ee:-1}));if(this.O=this.createItems())for(var c=0;c<this.O.length;c++)ca(a,this.O[c]);return a};s.wa=m();s.T=function(){return this.className+" vjs-menu-button "+t.t.prototype.T.call(this)};s.Ya=m();s.Xa=m();s.r=function(){this.X("mouseout",t.bind(this,function(){E(this.Ba);this.b.blur()}));this.ta?I(this):J(this)};
s.ea=function(a){a.preventDefault();32==a.which||13==a.which?this.ta?I(this):J(this):27==a.which&&this.ta&&I(this)};function J(a){a.ta=f;a.Ba.n("vjs-lock-showing");a.b.setAttribute("aria-pressed",f);a.O&&0<a.O.length&&a.O[0].w().focus()}function I(a){a.ta=l;E(a.Ba);a.b.setAttribute("aria-pressed",l)}t.F=function(a){"number"===typeof a?this.code=a:"string"===typeof a?this.message=a:"object"===typeof a&&t.h.A(this,a);this.message||(this.message=t.F.pd[this.code]||"")};t.F.prototype.code=0;
t.F.prototype.message="";t.F.prototype.status=k;t.F.Sa="MEDIA_ERR_CUSTOM MEDIA_ERR_ABORTED MEDIA_ERR_NETWORK MEDIA_ERR_DECODE MEDIA_ERR_SRC_NOT_SUPPORTED MEDIA_ERR_ENCRYPTED".split(" ");
t.F.pd={1:"You aborted the video playback",2:"A network error caused the video download to fail part-way.",3:"The video playback was aborted due to a corruption problem or because the video used features your browser did not support.",4:"The video could not be loaded, either because the server or network failed or because the format is not supported.",5:"The video is encrypted and we do not have the keys to decrypt it."};for(var K=0;K<t.F.Sa.length;K++)t.F[t.F.Sa[K]]=K,t.F.prototype[t.F.Sa[K]]=K;
t.ud=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:t.round(c.left+(window.pageXOffset||d.scrollLeft)-(a.clientLeft||d.clientLeft||0)),top:t.round(c.top+(window.pageYOffset||d.scrollTop)-(a.clientTop||d.clientTop||0))}};t.gc={};t.gc.forEach=function(a,c,d){if(t.h.isArray(a)&&c instanceof Function)for(var e=0,g=a.length;e<g;++e)c.call(d||t,a[e],e,a);return a};t.ga={};
t.ga.Ua=function(a,c){var d,e,g;a=t.h.copy(a);for(d in c)c.hasOwnProperty(d)&&(e=a[d],g=c[d],a[d]=t.h.Sa(e)&&t.h.Sa(g)?t.ga.Ua(e,g):c[d]);return a};
t.a=t.qa.extend({i:function(a,c,d){this.c=a;this.l=t.h.copy(this.l);c=this.options(c);this.U=c.id||(c.el&&c.el.id?c.el.id:a.id()+"_component_"+t.w++);this.Gd=c.name||k;this.b=c.el||this.e();this.M=[];this.Pa={};this.Qa={};this.tc();this.I(d);if(c.Fc!==l){var e,g;e=t.bind(this.j(),this.j().reportUserActivity);this.d("touchstart",function(){e();clearInterval(g);g=setInterval(e,250)});a=function(){e();clearInterval(g)};this.d("touchmove",e);this.d("touchend",a);this.d("touchcancel",a)}}});s=t.a.prototype;
s.dispose=function(){this.k({type:"dispose",bubbles:l});if(this.M)for(var a=this.M.length-1;0<=a;a--)this.M[a].dispose&&this.M[a].dispose();this.Qa=this.Pa=this.M=k;this.o();this.b.parentNode&&this.b.parentNode.removeChild(this.b);t.Ec(this.b);this.b=k};s.c=f;s.j=p("c");s.options=function(a){return a===b?this.l:this.l=t.ga.Ua(this.l,a)};s.e=function(a,c){return t.e(a,c)};s.s=function(a){var c=this.c.language(),d=this.c.languages();return d&&d[c]&&d[c][a]?d[c][a]:a};s.v=p("b");
s.ja=function(){return this.u||this.b};s.id=p("U");s.name=p("Gd");s.children=p("M");s.wd=function(a){return this.Pa[a]};s.ka=function(a){return this.Qa[a]};s.R=function(a,c){var d,e;"string"===typeof a?(e=a,c=c||{},d=c.componentClass||t.aa(e),c.name=e,d=new window.videojs[d](this.c||this,c)):d=a;this.M.push(d);"function"===typeof d.id&&(this.Pa[d.id()]=d);(e=e||d.name&&d.name())&&(this.Qa[e]=d);"function"===typeof d.el&&d.el()&&this.ja().appendChild(d.el());return d};
s.removeChild=function(a){"string"===typeof a&&(a=this.ka(a));if(a&&this.M){for(var c=l,d=this.M.length-1;0<=d;d--)if(this.M[d]===a){c=f;this.M.splice(d,1);break}c&&(this.Pa[a.id]=k,this.Qa[a.name]=k,(c=a.v())&&c.parentNode===this.ja()&&this.ja().removeChild(a.v()))}};s.tc=function(){var a,c,d,e;a=this;if(c=this.options().children)if(t.h.isArray(c))for(var g=0;g<c.length;g++)d=c[g],"string"==typeof d?(e=d,d={}):e=d.name,a[e]=a.R(e,d);else t.h.Y(c,function(c,d){d!==l&&(a[c]=a.R(c,d))})};s.T=r("");
s.d=function(a,c){t.d(this.b,a,t.bind(this,c));return this};s.o=function(a,c){t.o(this.b,a,c);return this};s.O=function(a,c){t.O(this.b,a,t.bind(this,c));return this};s.k=function(a){t.k(this.b,a);return this};s.I=function(a){a&&(this.la?a.call(this):(this.$a===b&&(this.$a=[]),this.$a.push(a)));return this};s.Fa=function(){this.la=f;var a=this.$a;if(a&&0<a.length){for(var c=0,d=a.length;c<d;c++)a[c].call(this);this.$a=[];this.k("ready")}};s.n=function(a){t.n(this.b,a);return this};
s.p=function(a){t.p(this.b,a);return this};s.show=function(){this.b.style.display="block";return this};s.W=function(){this.b.style.display="none";return this};function E(a){a.p("vjs-lock-showing")}s.disable=function(){this.W();this.show=m()};s.width=function(a,c){return F(this,"width",a,c)};s.height=function(a,c){return F(this,"height",a,c)};s.pd=function(a,c){return this.width(a,f).height(c)};
function F(a,c,d,e){if(d!==b){if(d===k||t.Ad(d))d=0;a.b.style[c]=-1!==(""+d).indexOf("%")||-1!==(""+d).indexOf("px")?d:"auto"===d?"":d+"px";e||a.k("resize");return 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"+t.aa(c)],10)}
function G(a){var c,d,e,g,h,j,n,q;c=0;d=k;a.d("touchstart",function(a){1===a.touches.length&&(d=a.touches[0],c=(new Date).getTime(),g=f)});a.d("touchmove",function(a){1<a.touches.length?g=l:d&&(j=a.touches[0].pageX-d.pageX,n=a.touches[0].pageY-d.pageY,q=Math.sqrt(j*j+n*n),22<q&&(g=l))});h=function(){g=l};a.d("touchleave",h);a.d("touchcancel",h);a.d("touchend",function(a){d=k;g===f&&(e=(new Date).getTime()-c,250>e&&(a.preventDefault(),this.k("tap")))})}
t.t=t.a.extend({i:function(a,c){t.a.call(this,a,c);G(this);this.d("tap",this.r);this.d("click",this.r);this.d("focus",this.Xa);this.d("blur",this.Wa)}});s=t.t.prototype;
s.e=function(a,c){var d;c=t.h.z({className:this.T(),role:"button","aria-live":"polite",tabIndex:0},c);d=t.a.prototype.e.call(this,a,c);c.innerHTML||(this.u=t.e("div",{className:"vjs-control-content"}),this.wb=t.e("span",{className:"vjs-control-text",innerHTML:this.s(this.ta)||"Need Text"}),this.u.appendChild(this.wb),d.appendChild(this.u));return d};s.T=function(){return"vjs-control "+t.a.prototype.T.call(this)};s.r=m();s.Xa=function(){t.d(document,"keydown",t.bind(this,this.da))};
s.da=function(a){if(32==a.which||13==a.which)a.preventDefault(),this.r()};s.Wa=function(){t.o(document,"keydown",t.bind(this,this.da))};
t.Q=t.a.extend({i:function(a,c){t.a.call(this,a,c);this.ed=this.ka(this.l.barName);this.handle=this.ka(this.l.handleName);this.d("mousedown",this.Ya);this.d("touchstart",this.Ya);this.d("focus",this.Xa);this.d("blur",this.Wa);this.d("click",this.r);this.c.d("controlsvisible",t.bind(this,this.update));a.d(this.Ac,t.bind(this,this.update));this.S={};this.S.move=t.bind(this,this.Za);this.S.end=t.bind(this,this.Kb)}});s=t.Q.prototype;
s.e=function(a,c){c=c||{};c.className+=" vjs-slider";c=t.h.z({role:"slider","aria-valuenow":0,"aria-valuemin":0,"aria-valuemax":100,tabIndex:0},c);return t.a.prototype.e.call(this,a,c)};s.Ya=function(a){a.preventDefault();t.fd();this.n("vjs-sliding");t.d(document,"mousemove",this.S.move);t.d(document,"mouseup",this.S.end);t.d(document,"touchmove",this.S.move);t.d(document,"touchend",this.S.end);this.Za(a)};s.Za=m();
s.Kb=function(){t.ge();this.p("vjs-sliding");t.o(document,"mousemove",this.S.move,l);t.o(document,"mouseup",this.S.end,l);t.o(document,"touchmove",this.S.move,l);t.o(document,"touchend",this.S.end,l);this.update()};s.update=function(){if(this.b){var a,c=this.Eb(),d=this.handle,e=this.ed;isNaN(c)&&(c=0);a=c;if(d){a=this.b.offsetWidth;var g=d.v().offsetWidth;a=g?g/a:0;c*=1-a;a=c+a/2;d.v().style.left=t.round(100*c,2)+"%"}e&&(e.v().style.width=t.round(100*a,2)+"%")}};
function H(a,c){var d,e,g,h;d=a.b;e=t.ud(d);h=g=d.offsetWidth;d=a.handle;if(a.options().vertical)return h=e.top,e=c.changedTouches?c.changedTouches[0].pageY:c.pageY,d&&(d=d.v().offsetHeight,h+=d/2,g-=d),Math.max(0,Math.min(1,(h-e+g)/g));g=e.left;e=c.changedTouches?c.changedTouches[0].pageX:c.pageX;d&&(d=d.v().offsetWidth,g+=d/2,h-=d);return Math.max(0,Math.min(1,(e-g)/h))}s.Xa=function(){t.d(document,"keyup",t.bind(this,this.da))};
s.da=function(a){if(37==a.which||40==a.which)a.preventDefault(),this.Jc();else if(38==a.which||39==a.which)a.preventDefault(),this.Kc()};s.Wa=function(){t.o(document,"keyup",t.bind(this,this.da))};s.r=function(a){a.stopImmediatePropagation();a.preventDefault()};t.Z=t.a.extend();t.Z.prototype.defaultValue=0;
t.Z.prototype.e=function(a,c){c=c||{};c.className+=" vjs-slider-handle";c=t.h.z({innerHTML:'<span class="vjs-control-text">'+this.defaultValue+"</span>"},c);return t.a.prototype.e.call(this,"div",c)};t.ha=t.a.extend();function ca(a,c){a.R(c);c.d("click",t.bind(a,function(){E(this)}))}
t.ha.prototype.e=function(){var a=this.options().jc||"ul";this.u=t.e(a,{className:"vjs-menu-content"});a=t.a.prototype.e.call(this,"div",{append:this.u,className:"vjs-menu"});a.appendChild(this.u);t.d(a,"click",function(a){a.preventDefault();a.stopImmediatePropagation()});return a};t.H=t.t.extend({i:function(a,c){t.t.call(this,a,c);this.selected(c.selected)}});t.H.prototype.e=function(a,c){return t.t.prototype.e.call(this,"li",t.h.z({className:"vjs-menu-item",innerHTML:this.l.label},c))};
t.H.prototype.r=function(){this.selected(f)};t.H.prototype.selected=function(a){a?(this.n("vjs-selected"),this.b.setAttribute("aria-selected",f)):(this.p("vjs-selected"),this.b.setAttribute("aria-selected",l))};t.K=t.t.extend({i:function(a,c){t.t.call(this,a,c);this.Aa=this.wa();this.R(this.Aa);this.N&&0===this.N.length&&this.W();this.d("keyup",this.da);this.b.setAttribute("aria-haspopup",f);this.b.setAttribute("role","button")}});s=t.K.prototype;s.sa=l;
s.wa=function(){var a=new t.ha(this.c);this.options().title&&a.ja().appendChild(t.e("li",{className:"vjs-menu-title",innerHTML:t.aa(this.options().title),de:-1}));if(this.N=this.createItems())for(var c=0;c<this.N.length;c++)ca(a,this.N[c]);return a};s.va=m();s.T=function(){return this.className+" vjs-menu-button "+t.t.prototype.T.call(this)};s.Xa=m();s.Wa=m();s.r=function(){this.O("mouseout",t.bind(this,function(){E(this.Aa);this.b.blur()}));this.sa?I(this):J(this)};
s.da=function(a){a.preventDefault();32==a.which||13==a.which?this.sa?I(this):J(this):27==a.which&&this.sa&&I(this)};function J(a){a.sa=f;a.Aa.n("vjs-lock-showing");a.b.setAttribute("aria-pressed",f);a.N&&0<a.N.length&&a.N[0].v().focus()}function I(a){a.sa=l;E(a.Aa);a.b.setAttribute("aria-pressed",l)}t.D=function(a){"number"===typeof a?this.code=a:"string"===typeof a?this.message=a:"object"===typeof a&&t.h.z(this,a);this.message||(this.message=t.D.nd[this.code]||"")};t.D.prototype.code=0;
t.D.prototype.message="";t.D.prototype.status=k;t.D.Ra="MEDIA_ERR_CUSTOM MEDIA_ERR_ABORTED MEDIA_ERR_NETWORK MEDIA_ERR_DECODE MEDIA_ERR_SRC_NOT_SUPPORTED MEDIA_ERR_ENCRYPTED".split(" ");
t.D.nd={1:"You aborted the video playback",2:"A network error caused the video download to fail part-way.",3:"The video playback was aborted due to a corruption problem or because the video used features your browser did not support.",4:"The video could not be loaded, either because the server or network failed or because the format is not supported.",5:"The video is encrypted and we do not have the keys to decrypt it."};for(var K=0;K<t.D.Ra.length;K++)t.D[t.D.Ra[K]]=K,t.D.prototype[t.D.Ra[K]]=K;
var L,M,N,O;
L=["requestFullscreen exitFullscreen fullscreenElement fullscreenEnabled fullscreenchange fullscreenerror".split(" "),"webkitRequestFullscreen webkitExitFullscreen webkitFullscreenElement webkitFullscreenEnabled webkitfullscreenchange webkitfullscreenerror".split(" "),"webkitRequestFullScreen webkitCancelFullScreen webkitCurrentFullScreenElement webkitCancelFullScreen webkitfullscreenchange webkitfullscreenerror".split(" "),"mozRequestFullScreen mozCancelFullScreen mozFullScreenElement mozFullScreenEnabled mozfullscreenchange mozfullscreenerror".split(" "),"msRequestFullscreen msExitFullscreen msFullscreenElement msFullscreenEnabled MSFullscreenChange MSFullscreenError".split(" ")];
M=L[0];for(O=0;O<L.length;O++)if(L[O][1]in document){N=L[O];break}if(N){t.Pa.Eb={};for(O=0;O<N.length;O++)t.Pa.Eb[M[O]]=N[O]}
t.Player=t.a.extend({i:function(a,c,d){this.P=a;a.id=a.id||"vjs_video_"+t.z++;this.fe=a&&t.Aa(a);c=t.h.A(da(a),c);this.Ua=c.language||t.options.language;this.Fd=c.languages||t.options.languages;this.G={};this.Dc=c.poster;this.yb=c.controls;a.controls=l;c.Hc=l;t.a.call(this,this,c,d);this.controls()?this.n("vjs-controls-enabled"):this.n("vjs-controls-disabled");t.Ca[this.U]=this;c.plugins&&t.h.Z(c.plugins,function(a,c){this[a](c)},this);var e,g,h,j,n,q;e=t.bind(this,this.reportUserActivity);this.d("mousedown",
function(){e();clearInterval(g);g=setInterval(e,250)});this.d("mousemove",function(a){if(a.screenX!=n||a.screenY!=q)n=a.screenX,q=a.screenY,e()});this.d("mouseup",function(){e();clearInterval(g)});this.d("keydown",e);this.d("keyup",e);h=setInterval(t.bind(this,function(){this.pa&&(this.pa=l,this.userActive(f),clearTimeout(j),j=setTimeout(t.bind(this,function(){this.pa||this.userActive(l)}),2E3))}),250);this.d("dispose",function(){clearInterval(h);clearTimeout(j)})}});s=t.Player.prototype;
s.language=function(a){if(a===b)return this.Ua;this.Ua=a;return this};s.Va=p("Fd");s.l=t.options;s.dispose=function(){this.m("dispose");this.p("dispose");t.Ca[this.U]=k;this.P&&this.P.player&&(this.P.player=k);this.b&&this.b.player&&(this.b.player=k);this.k&&this.k.dispose();t.a.prototype.dispose.call(this)};
function da(a){var c={sources:[],tracks:[]};t.h.A(c,t.Aa(a));if(a.hasChildNodes()){var d,e,g,h;a=a.childNodes;g=0;for(h=a.length;g<h;g++)d=a[g],e=d.nodeName.toLowerCase(),"source"===e?c.sources.push(t.Aa(d)):"track"===e&&c.tracks.push(t.Aa(d))}return c}
s.e=function(){var a=this.b=t.a.prototype.e.call(this,"div"),c=this.P,d;c.removeAttribute("width");c.removeAttribute("height");if(c.hasChildNodes()){var e,g,h,j,n;e=c.childNodes;g=e.length;for(n=[];g--;)h=e[g],j=h.nodeName.toLowerCase(),"track"===j&&n.push(h);for(e=0;e<n.length;e++)c.removeChild(n[e])}d=t.Aa(c);t.h.Z(d,function(c){a.setAttribute(c,d[c])});c.id+="_html5_api";c.className="vjs-tech";c.player=a.player=this;this.n("vjs-paused");this.width(this.l.width,f);this.height(this.l.height,f);c.parentNode&&
c.parentNode.insertBefore(a,c);t.Gb(c,a);this.b=a;this.d("loadstart",this.Md);this.d("waiting",this.Sd);this.d(["canplay","canplaythrough","playing","ended"],this.Rd);this.d("seeking",this.Pd);this.d("seeked",this.Od);this.d("ended",this.Id);this.d("play",this.Ob);this.d("firstplay",this.Kd);this.d("pause",this.Nb);this.d("progress",this.Nd);this.d("durationchange",this.Ac);this.d("fullscreenchange",this.Ld);return a};
function P(a,c,d){a.k&&(a.la=l,a.k.dispose(),a.k=l);"Html5"!==c&&a.P&&(t.g.Bb(a.P),a.P=k);a.eb=c;a.la=l;var e=t.h.A({source:d,parentEl:a.b},a.l[c.toLowerCase()]);d&&(a.nc=d.type,d.src==a.G.src&&0<a.G.currentTime&&(e.startTime=a.G.currentTime),a.G.src=d.src);a.k=new window.videojs[c](a,e);a.k.J(function(){this.c.Ga()})}s.Md=function(){this.error(k);this.paused()?(Q(this,l),this.X("play",function(){Q(this,f)})):this.m("firstplay")};s.uc=l;
function Q(a,c){c!==b&&a.uc!==c&&((a.uc=c)?(a.n("vjs-has-started"),a.m("firstplay")):a.q("vjs-has-started"))}s.Ob=function(){this.q("vjs-paused");this.n("vjs-playing")};s.Sd=function(){this.n("vjs-waiting")};s.Rd=function(){this.q("vjs-waiting")};s.Pd=function(){this.n("vjs-seeking")};s.Od=function(){this.q("vjs-seeking")};s.Kd=function(){this.l.starttime&&this.currentTime(this.l.starttime);this.n("vjs-has-started")};s.Nb=function(){this.q("vjs-playing");this.n("vjs-paused")};
s.Nd=function(){1==this.bufferedPercent()&&this.m("loadedalldata")};s.Id=function(){this.l.loop&&(this.currentTime(0),this.play())};s.Ac=function(){var a=R(this,"duration");a&&(0>a&&(a=Infinity),this.duration(a),Infinity===a?this.n("vjs-live"):this.q("vjs-live"))};s.Ld=function(){this.isFullscreen()?this.n("vjs-fullscreen"):this.q("vjs-fullscreen")};function S(a,c,d){if(a.k&&!a.k.la)a.k.J(function(){this[c](d)});else try{a.k[c](d)}catch(e){throw t.log(e),e;}}
function R(a,c){if(a.k&&a.k.la)try{return a.k[c]()}catch(d){throw a.k[c]===b?t.log("Video.js: "+c+" method not defined for "+a.eb+" playback technology.",d):"TypeError"==d.name?(t.log("Video.js: "+c+" unavailable on "+a.eb+" playback technology element.",d),a.k.la=l):t.log(d),d;}}s.play=function(){S(this,"play");return this};s.pause=function(){S(this,"pause");return this};s.paused=function(){return R(this,"paused")===l?l:f};
s.currentTime=function(a){return a!==b?(S(this,"setCurrentTime",a),this):this.G.currentTime=R(this,"currentTime")||0};s.duration=function(a){if(a!==b)return this.G.duration=parseFloat(a),this;this.G.duration===b&&this.Ac();return this.G.duration||0};s.remainingTime=function(){return this.duration()-this.currentTime()};s.buffered=function(){var a=R(this,"buffered");if(!a||!a.length)a=t.zb(0,0);return a};
s.bufferedPercent=function(){var a=this.duration(),c=this.buffered(),d=0,e,g;if(!a)return 0;for(var h=0;h<c.length;h++)e=c.start(h),g=c.end(h),g>a&&(g=a),d+=g-e;return d/a};s.volume=function(a){if(a!==b)return a=Math.max(0,Math.min(1,parseFloat(a))),this.G.volume=a,S(this,"setVolume",a),t.Yd(a),this;a=parseFloat(R(this,"volume"));return isNaN(a)?1:a};s.muted=function(a){return a!==b?(S(this,"setMuted",a),this):R(this,"muted")||l};s.Ea=function(){return R(this,"supportsFullScreen")||l};s.wc=l;
s.isFullscreen=function(a){return a!==b?(this.wc=!!a,this):this.wc};s.isFullScreen=function(a){t.log.warn('player.isFullScreen() has been deprecated, use player.isFullscreen() with a lowercase "s")');return this.isFullscreen(a)};
s.requestFullscreen=function(){var a=t.Pa.Eb;this.isFullscreen(f);a?(t.d(document,a.fullscreenchange,t.bind(this,function(c){this.isFullscreen(document[a.fullscreenElement]);this.isFullscreen()===l&&t.p(document,a.fullscreenchange,arguments.callee);this.m("fullscreenchange")})),this.b[a.requestFullscreen]()):this.k.Ea()?S(this,"enterFullScreen"):(this.pc(),this.m("fullscreenchange"));return this};
s.exitFullscreen=function(){var a=t.Pa.Eb;this.isFullscreen(l);if(a)document[a.exitFullscreen]();else this.k.Ea()?S(this,"exitFullScreen"):(this.Cb(),this.m("fullscreenchange"));return this};s.pc=function(){this.Bd=f;this.sd=document.documentElement.style.overflow;t.d(document,"keydown",t.bind(this,this.rc));document.documentElement.style.overflow="hidden";t.n(document.body,"vjs-full-window");this.m("enterFullWindow")};
s.rc=function(a){27===a.keyCode&&(this.isFullscreen()===f?this.exitFullscreen():this.Cb())};s.Cb=function(){this.Bd=l;t.p(document,"keydown",this.rc);document.documentElement.style.overflow=this.sd;t.q(document.body,"vjs-full-window");this.m("exitFullWindow")};
s.src=function(a){if(a===b)return R(this,"src");t.h.isArray(a)?T(this,a):"string"===typeof a?this.src({src:a}):a instanceof Object&&(a.type&&!window.videojs[this.eb].canPlaySource(a)?T(this,[a]):(this.G.src=a.src,this.nc=a.type||"",this.J(function(){S(this,"src",a.src);"auto"==this.l.preload&&this.load();this.l.autoplay&&this.play()})));return this};
function T(a,c){var d;a:{d=0;for(var e=a.l.techOrder;d<e.length;d++){var g=t.ba(e[d]),h=window.videojs[g];if(h){if(h.isSupported())for(var j=0,n=c;j<n.length;j++){var q=n[j];if(h.canPlaySource(q)){d={source:q,k:g};break a}}}else t.log.error('The "'+g+'" tech is undefined. Skipped browser support check for that tech.')}d=l}d?d.k===a.eb?a.src(d.source):P(a,d.k,d.source):(a.error({code:4,message:a.options().notSupportedMessage}),a.Ga())}s.load=function(){S(this,"load");return this};
s.currentSrc=function(){return R(this,"currentSrc")||this.G.src||""};s.nd=function(){return this.nc||""};s.Da=function(a){return a!==b?(S(this,"setPreload",a),this.l.preload=a,this):R(this,"preload")};s.autoplay=function(a){return a!==b?(S(this,"setAutoplay",a),this.l.autoplay=a,this):R(this,"autoplay")};s.loop=function(a){return a!==b?(S(this,"setLoop",a),this.l.loop=a,this):R(this,"loop")};s.poster=function(a){if(a===b)return this.Dc;this.Dc=a;S(this,"setPoster",a);this.m("posterchange")};
s.controls=function(a){return a!==b?(a=!!a,this.yb!==a&&((this.yb=a)?(this.q("vjs-controls-disabled"),this.n("vjs-controls-enabled"),this.m("controlsenabled")):(this.q("vjs-controls-enabled"),this.n("vjs-controls-disabled"),this.m("controlsdisabled"))),this):this.yb};t.Player.prototype.Tb;s=t.Player.prototype;
s.usingNativeControls=function(a){return a!==b?(a=!!a,this.Tb!==a&&((this.Tb=a)?(this.n("vjs-using-native-controls"),this.m("usingnativecontrols")):(this.q("vjs-using-native-controls"),this.m("usingcustomcontrols"))),this):this.Tb};s.da=k;s.error=function(a){if(a===b)return this.da;if(a===k)return this.da=a,this.q("vjs-error"),this;this.da=a instanceof t.F?a:new t.F(a);this.m("error");this.n("vjs-error");t.log.error("(CODE:"+this.da.code+" "+t.F.Sa[this.da.code]+")",this.da.message,this.da);return this};
s.ended=function(){return R(this,"ended")};s.seeking=function(){return R(this,"seeking")};s.pa=f;s.reportUserActivity=function(){this.pa=f};s.Sb=f;s.userActive=function(a){return a!==b?(a=!!a,a!==this.Sb&&((this.Sb=a)?(this.pa=f,this.q("vjs-user-inactive"),this.n("vjs-user-active"),this.m("useractive")):(this.pa=l,this.k&&this.k.X("mousemove",function(a){a.stopPropagation();a.preventDefault()}),this.q("vjs-user-active"),this.n("vjs-user-inactive"),this.m("userinactive"))),this):this.Sb};
s.playbackRate=function(a){return a!==b?(S(this,"setPlaybackRate",a),this):this.k&&this.k.o&&this.k.o.playbackRate?R(this,"playbackRate"):1};t.Ja=t.a.extend();t.Ja.prototype.l={pe:"play",children:{playToggle:{},currentTimeDisplay:{},timeDivider:{},durationDisplay:{},remainingTimeDisplay:{},liveDisplay:{},progressControl:{},fullscreenToggle:{},volumeControl:{},muteToggle:{},playbackRateMenuButton:{}}};t.Ja.prototype.e=function(){return t.e("div",{className:"vjs-control-bar"})};
t.Yb=t.a.extend({i:function(a,c){t.a.call(this,a,c)}});t.Yb.prototype.e=function(){var a=t.a.prototype.e.call(this,"div",{className:"vjs-live-controls vjs-control"});this.v=t.e("div",{className:"vjs-live-display",innerHTML:'<span class="vjs-control-text">'+this.s("Stream Type")+"</span>"+this.s("LIVE"),"aria-live":"off"});a.appendChild(this.v);return a};t.ac=t.t.extend({i:function(a,c){t.t.call(this,a,c);a.d("play",t.bind(this,this.Ob));a.d("pause",t.bind(this,this.Nb))}});s=t.ac.prototype;s.ua="Play";
s.T=function(){return"vjs-play-control "+t.t.prototype.T.call(this)};s.r=function(){this.c.paused()?this.c.play():this.c.pause()};s.Ob=function(){t.q(this.b,"vjs-paused");t.n(this.b,"vjs-playing");this.b.children[0].children[0].innerHTML=this.s("Pause")};s.Nb=function(){t.q(this.b,"vjs-playing");t.n(this.b,"vjs-paused");this.b.children[0].children[0].innerHTML=this.s("Play")};t.hb=t.a.extend({i:function(a,c){t.a.call(this,a,c);a.d("timeupdate",t.bind(this,this.ga))}});
t.hb.prototype.e=function(){var a=t.a.prototype.e.call(this,"div",{className:"vjs-current-time vjs-time-controls vjs-control"});this.v=t.e("div",{className:"vjs-current-time-display",innerHTML:'<span class="vjs-control-text">Current Time </span>0:00',"aria-live":"off"});a.appendChild(this.v);return a};t.hb.prototype.ga=function(){var a=this.c.bb?this.c.G.currentTime:this.c.currentTime();this.v.innerHTML='<span class="vjs-control-text">'+this.s("Current Time")+"</span> "+t.za(a,this.c.duration())};
t.ib=t.a.extend({i:function(a,c){t.a.call(this,a,c);a.d("timeupdate",t.bind(this,this.ga))}});t.ib.prototype.e=function(){var a=t.a.prototype.e.call(this,"div",{className:"vjs-duration vjs-time-controls vjs-control"});this.v=t.e("div",{className:"vjs-duration-display",innerHTML:'<span class="vjs-control-text">'+this.s("Duration Time")+"</span> 0:00","aria-live":"off"});a.appendChild(this.v);return a};
t.ib.prototype.ga=function(){var a=this.c.duration();a&&(this.v.innerHTML='<span class="vjs-control-text">'+this.s("Duration Time")+"</span> "+t.za(a))};t.gc=t.a.extend({i:function(a,c){t.a.call(this,a,c)}});t.gc.prototype.e=function(){return t.a.prototype.e.call(this,"div",{className:"vjs-time-divider",innerHTML:"<div><span>/</span></div>"})};t.pb=t.a.extend({i:function(a,c){t.a.call(this,a,c);a.d("timeupdate",t.bind(this,this.ga))}});
t.pb.prototype.e=function(){var a=t.a.prototype.e.call(this,"div",{className:"vjs-remaining-time vjs-time-controls vjs-control"});this.v=t.e("div",{className:"vjs-remaining-time-display",innerHTML:'<span class="vjs-control-text">'+this.s("Remaining Time")+"</span> -0:00","aria-live":"off"});a.appendChild(this.v);return a};t.pb.prototype.ga=function(){this.c.duration()&&(this.v.innerHTML='<span class="vjs-control-text">'+this.s("Remaining Time")+"</span> -"+t.za(this.c.remainingTime()))};
t.Ka=t.t.extend({i:function(a,c){t.t.call(this,a,c)}});t.Ka.prototype.ua="Fullscreen";t.Ka.prototype.T=function(){return"vjs-fullscreen-control "+t.t.prototype.T.call(this)};t.Ka.prototype.r=function(){this.c.isFullscreen()?(this.c.exitFullscreen(),this.xb.innerHTML=this.s("Fullscreen")):(this.c.requestFullscreen(),this.xb.innerHTML=this.s("Non-Fullscreen"))};t.ob=t.a.extend({i:function(a,c){t.a.call(this,a,c)}});t.ob.prototype.l={children:{seekBar:{}}};
t.ob.prototype.e=function(){return t.a.prototype.e.call(this,"div",{className:"vjs-progress-control vjs-control"})};t.cc=t.Q.extend({i:function(a,c){t.Q.call(this,a,c);a.d("timeupdate",t.bind(this,this.oa));a.J(t.bind(this,this.oa))}});s=t.cc.prototype;s.l={children:{loadProgressBar:{},playProgressBar:{},seekHandle:{}},barName:"playProgressBar",handleName:"seekHandle"};s.Cc="timeupdate";s.e=function(){return t.Q.prototype.e.call(this,"div",{className:"vjs-progress-holder","aria-label":"video progress bar"})};
s.oa=function(){var a=this.c.bb?this.c.G.currentTime:this.c.currentTime();this.b.setAttribute("aria-valuenow",t.round(100*this.Fb(),2));this.b.setAttribute("aria-valuetext",t.za(a,this.c.duration()))};s.Fb=function(){return this.c.currentTime()/this.c.duration()};s.Za=function(a){t.Q.prototype.Za.call(this,a);this.c.bb=f;this.je=!this.c.paused();this.c.pause()};s.$a=function(a){a=H(this,a)*this.c.duration();a==this.c.duration()&&(a-=0.1);this.c.currentTime(a)};
s.Mb=function(a){t.Q.prototype.Mb.call(this,a);this.c.bb=l;this.je&&this.c.play()};s.Mc=function(){this.c.currentTime(this.c.currentTime()+5)};s.Lc=function(){this.c.currentTime(this.c.currentTime()-5)};t.lb=t.a.extend({i:function(a,c){t.a.call(this,a,c);a.d("progress",t.bind(this,this.update))}});t.lb.prototype.e=function(){return t.a.prototype.e.call(this,"div",{className:"vjs-load-progress",innerHTML:'<span class="vjs-control-text"><span>'+this.s("Loaded")+"</span>: 0%</span>"})};
t.lb.prototype.update=function(){var a,c,d,e,g=this.c.buffered();a=this.c.duration();var h,j=this.c;h=j.buffered();j=j.duration();h=h.end(h.length-1);h>j&&(h=j);j=this.b.children;this.b.style.width=100*(h/a||0)+"%";for(a=0;a<g.length;a++)c=g.start(a),d=g.end(a),(e=j[a])||(e=this.b.appendChild(t.e())),e.style.left=100*(c/h||0)+"%",e.style.width=100*((d-c)/h||0)+"%";for(a=j.length;a>g.length;a--)this.b.removeChild(j[a-1])};t.$b=t.a.extend({i:function(a,c){t.a.call(this,a,c)}});
t.$b.prototype.e=function(){return t.a.prototype.e.call(this,"div",{className:"vjs-play-progress",innerHTML:'<span class="vjs-control-text"><span>'+this.s("Progress")+"</span>: 0%</span>"})};t.Ma=t.$.extend({i:function(a,c){t.$.call(this,a,c);a.d("timeupdate",t.bind(this,this.ga))}});t.Ma.prototype.defaultValue="00:00";t.Ma.prototype.e=function(){return t.$.prototype.e.call(this,"div",{className:"vjs-seek-handle","aria-live":"off"})};
t.Ma.prototype.ga=function(){var a=this.c.bb?this.c.G.currentTime:this.c.currentTime();this.b.innerHTML='<span class="vjs-control-text">'+t.za(a,this.c.duration())+"</span>"};t.rb=t.a.extend({i:function(a,c){t.a.call(this,a,c);a.k&&(a.k.o&&a.k.o.volumeControl===l)&&this.n("vjs-hidden");a.d("loadstart",t.bind(this,function(){a.k.o&&a.k.o.volumeControl===l?this.n("vjs-hidden"):this.q("vjs-hidden")}))}});t.rb.prototype.l={children:{volumeBar:{}}};
t.rb.prototype.e=function(){return t.a.prototype.e.call(this,"div",{className:"vjs-volume-control vjs-control"})};t.qb=t.Q.extend({i:function(a,c){t.Q.call(this,a,c);a.d("volumechange",t.bind(this,this.oa));a.J(t.bind(this,this.oa))}});s=t.qb.prototype;s.oa=function(){this.b.setAttribute("aria-valuenow",t.round(100*this.c.volume(),2));this.b.setAttribute("aria-valuetext",t.round(100*this.c.volume(),2)+"%")};s.l={children:{volumeLevel:{},volumeHandle:{}},barName:"volumeLevel",handleName:"volumeHandle"};
s.Cc="volumechange";s.e=function(){return t.Q.prototype.e.call(this,"div",{className:"vjs-volume-bar","aria-label":"volume level"})};s.$a=function(a){this.c.muted()&&this.c.muted(l);this.c.volume(H(this,a))};s.Fb=function(){return this.c.muted()?0:this.c.volume()};s.Mc=function(){this.c.volume(this.c.volume()+0.1)};s.Lc=function(){this.c.volume(this.c.volume()-0.1)};t.hc=t.a.extend({i:function(a,c){t.a.call(this,a,c)}});
t.hc.prototype.e=function(){return t.a.prototype.e.call(this,"div",{className:"vjs-volume-level",innerHTML:'<span class="vjs-control-text"></span>'})};t.sb=t.$.extend();t.sb.prototype.defaultValue="00:00";t.sb.prototype.e=function(){return t.$.prototype.e.call(this,"div",{className:"vjs-volume-handle"})};
t.ia=t.t.extend({i:function(a,c){t.t.call(this,a,c);a.d("volumechange",t.bind(this,this.update));a.k&&(a.k.o&&a.k.o.volumeControl===l)&&this.n("vjs-hidden");a.d("loadstart",t.bind(this,function(){a.k.o&&a.k.o.volumeControl===l?this.n("vjs-hidden"):this.q("vjs-hidden")}))}});t.ia.prototype.e=function(){return t.t.prototype.e.call(this,"div",{className:"vjs-mute-control vjs-control",innerHTML:'<div><span class="vjs-control-text">'+this.s("Mute")+"</span></div>"})};
t.ia.prototype.r=function(){this.c.muted(this.c.muted()?l:f)};t.ia.prototype.update=function(){var a=this.c.volume(),c=3;0===a||this.c.muted()?c=0:0.33>a?c=1:0.67>a&&(c=2);this.c.muted()?this.b.children[0].children[0].innerHTML!=this.s("Unmute")&&(this.b.children[0].children[0].innerHTML=this.s("Unmute")):this.b.children[0].children[0].innerHTML!=this.s("Mute")&&(this.b.children[0].children[0].innerHTML=this.s("Mute"));for(a=0;4>a;a++)t.q(this.b,"vjs-vol-"+a);t.n(this.b,"vjs-vol-"+c)};
t.sa=t.L.extend({i:function(a,c){t.L.call(this,a,c);a.d("volumechange",t.bind(this,this.update));a.k&&(a.k.o&&a.k.o.Sc===l)&&this.n("vjs-hidden");a.d("loadstart",t.bind(this,function(){a.k.o&&a.k.o.Sc===l?this.n("vjs-hidden"):this.q("vjs-hidden")}));this.n("vjs-menu-button")}});t.sa.prototype.xa=function(){var a=new t.ha(this.c,{lc:"div"}),c=new t.qb(this.c,t.h.A({vertical:f},this.l.ve));a.R(c);return a};t.sa.prototype.r=function(){t.ia.prototype.r.call(this);t.L.prototype.r.call(this)};
t.sa.prototype.e=function(){return t.t.prototype.e.call(this,"div",{className:"vjs-volume-menu-button vjs-menu-button vjs-control",innerHTML:'<div><span class="vjs-control-text">'+this.s("Mute")+"</span></div>"})};t.sa.prototype.update=t.ia.prototype.update;t.bc=t.L.extend({i:function(a,c){t.L.call(this,a,c);this.Rc();this.Qc();a.d("loadstart",t.bind(this,this.Rc));a.d("ratechange",t.bind(this,this.Qc))}});s=t.bc.prototype;
s.e=function(){var a=t.a.prototype.e.call(this,"div",{className:"vjs-playback-rate vjs-menu-button vjs-control",innerHTML:'<div class="vjs-control-content"><span class="vjs-control-text">'+this.s("Playback Rate")+"</span></div>"});this.yc=t.e("div",{className:"vjs-playback-rate-value",innerHTML:1});a.appendChild(this.yc);return a};s.xa=function(){var a=new t.ha(this.j()),c=this.j().options().playbackRates;if(c)for(var d=c.length-1;0<=d;d--)a.R(new t.nb(this.j(),{rate:c[d]+"x"}));return a};
s.oa=function(){this.w().setAttribute("aria-valuenow",this.j().playbackRate())};s.r=function(){for(var a=this.j().playbackRate(),c=this.j().options().playbackRates,d=c[0],e=0;e<c.length;e++)if(c[e]>a){d=c[e];break}this.j().playbackRate(d)};function U(a){return a.j().k&&a.j().k.o.playbackRate&&a.j().options().playbackRates&&0<a.j().options().playbackRates.length}s.Rc=function(){U(this)?this.q("vjs-hidden"):this.n("vjs-hidden")};s.Qc=function(){U(this)&&(this.yc.innerHTML=this.j().playbackRate()+"x")};
t.nb=t.I.extend({lc:"button",i:function(a,c){var d=this.label=c.rate,e=this.Fc=parseFloat(d,10);c.label=d;c.selected=1===e;t.I.call(this,a,c);this.j().d("ratechange",t.bind(this,this.update))}});t.nb.prototype.r=function(){t.I.prototype.r.call(this);this.j().playbackRate(this.Fc)};t.nb.prototype.update=function(){this.selected(this.j().playbackRate()==this.Fc)};
t.La=t.t.extend({i:function(a,c){t.t.call(this,a,c);a.poster()&&this.src(a.poster());(!a.poster()||!a.controls())&&this.W();a.d("posterchange",t.bind(this,function(){this.src(a.poster())}));a.d("play",t.bind(this,this.W))}});var ea="backgroundSize"in t.B.style;t.La.prototype.e=function(){var a=t.e("div",{className:"vjs-poster",tabIndex:-1});ea||a.appendChild(t.e("img"));return a};t.La.prototype.src=function(a){var c=this.w();a!==b&&(ea?c.style.backgroundImage='url("'+a+'")':c.firstChild.src=a)};
t.La.prototype.r=function(){this.j().controls()&&this.c.play()};t.Zb=t.a.extend({i:function(a,c){t.a.call(this,a,c)}});t.Zb.prototype.e=function(){return t.a.prototype.e.call(this,"div",{className:"vjs-loading-spinner"})};t.fb=t.t.extend();t.fb.prototype.e=function(){return t.t.prototype.e.call(this,"div",{className:"vjs-big-play-button",innerHTML:'<span aria-hidden="true"></span>',"aria-label":"play video"})};t.fb.prototype.r=function(){this.c.play()};
t.jb=t.a.extend({i:function(a,c){t.a.call(this,a,c);this.update();a.d("error",t.bind(this,this.update))}});t.jb.prototype.e=function(){var a=t.a.prototype.e.call(this,"div",{className:"vjs-error-display"});this.v=t.e("div");a.appendChild(this.v);return a};t.jb.prototype.update=function(){this.j().error()&&(this.v.innerHTML=this.s(this.j().error().message))};
t.u=t.a.extend({i:function(a,c,d){c=c||{};c.Hc=l;t.a.call(this,a,c,d);this.o.progressEvents||(this.zc=f,this.Ec=setInterval(t.bind(this,function(){var a=this.j().bufferedPercent();this.jd!=a&&this.j().m("progress");this.jd=a;1===a&&clearInterval(this.Ec)}),500));this.o.timeupdateEvents||(this.Kb=f,this.j().d("play",t.bind(this,this.Pc)),this.j().d("pause",t.bind(this,this.cb)),this.X("timeupdate",function(){this.o.timeupdateEvents=f;fa(this)}));var e,g;g=this;e=this.j();a=function(){if(e.controls()&&
!e.usingNativeControls()){var a;g.d("mousedown",g.r);g.d("touchstart",function(){a=this.c.userActive()});g.d("touchmove",function(){a&&this.j().reportUserActivity()});g.d("touchend",function(a){a.preventDefault()});G(g);g.d("tap",g.Qd)}};c=t.bind(g,g.Wd);this.J(a);e.d("controlsenabled",a);e.d("controlsdisabled",c);this.J(function(){this.networkState&&0<this.networkState()&&this.j().m("loadstart")})}});s=t.u.prototype;
s.Wd=function(){this.p("tap");this.p("touchstart");this.p("touchmove");this.p("touchleave");this.p("touchcancel");this.p("touchend");this.p("click");this.p("mousedown")};s.r=function(a){0===a.button&&this.j().controls()&&(this.j().paused()?this.j().play():this.j().pause())};s.Qd=function(){this.j().userActive(!this.j().userActive())};function fa(a){a.Kb=l;a.cb();a.p("play",a.Pc);a.p("pause",a.cb)}
s.Pc=function(){this.mc&&this.cb();this.mc=setInterval(t.bind(this,function(){this.j().m("timeupdate")}),250)};s.cb=function(){clearInterval(this.mc);this.j().m("timeupdate")};s.dispose=function(){this.zc&&(this.zc=l,clearInterval(this.Ec));this.Kb&&fa(this);t.a.prototype.dispose.call(this)};s.Qb=function(){this.Kb&&this.j().m("timeupdate")};s.Jc=m();s.o={volumeControl:f,fullscreenResize:l,playbackRate:l,progressEvents:l,timeupdateEvents:l};t.media={};
t.g=t.u.extend({i:function(a,c,d){this.o.volumeControl=t.g.ld();this.o.playbackRate=t.g.kd();this.o.movingMediaElementInDOM=!t.Yc;this.o.fullscreenResize=f;this.o.progressEvents=f;t.u.call(this,a,c,d);for(d=t.g.kb.length-1;0<=d;d--)t.d(this.b,t.g.kb[d],t.bind(this,this.ud));if((c=c.source)&&this.b.currentSrc!==c.src)this.b.src=c.src;if(t.ec&&a.options().nativeControlsForTouch!==l){var e,g,h,j;e=this;g=this.j();c=g.controls();e.b.controls=!!c;h=function(){e.b.controls=f};j=function(){e.b.controls=
l};g.d("controlsenabled",h);g.d("controlsdisabled",j);c=function(){g.p("controlsenabled",h);g.p("controlsdisabled",j)};e.d("dispose",c);g.d("usingcustomcontrols",c);g.usingNativeControls(f)}a.J(function(){this.P&&(this.l.autoplay&&this.paused())&&(delete this.P.poster,this.play())});this.Ga()}});s=t.g.prototype;s.dispose=function(){t.g.Bb(this.b);t.u.prototype.dispose.call(this)};
s.e=function(){var a=this.c,c=a.P,d;if(!c||this.o.movingMediaElementInDOM===l)c?(d=c.cloneNode(l),t.g.Bb(c),c=d,a.P=k):(c=t.e("video"),t.Ic(c,t.h.A(a.fe||{},{id:a.id()+"_html5_api","class":"vjs-tech"}))),c.player=a,t.Gb(c,a.w());d=["autoplay","preload","loop","muted"];for(var e=d.length-1;0<=e;e--){var g=d[e],h={};"undefined"!==typeof a.l[g]&&(h[g]=a.l[g]);t.Ic(c,h)}return c};s.ud=function(a){"error"==a.type?this.j().error(this.error().code):(a.bubbles=l,this.j().m(a))};s.play=function(){this.b.play()};
s.pause=function(){this.b.pause()};s.paused=function(){return this.b.paused};s.currentTime=function(){return this.b.currentTime};s.Qb=function(a){try{this.b.currentTime=a}catch(c){t.log(c,"Video is not ready. (Video.js)")}};s.duration=function(){return this.b.duration||0};s.buffered=function(){return this.b.buffered};s.volume=function(){return this.b.volume};s.ce=function(a){this.b.volume=a};s.muted=function(){return this.b.muted};s.$d=function(a){this.b.muted=a};s.width=function(){return this.b.offsetWidth};
s.height=function(){return this.b.offsetHeight};s.Ea=function(){return"function"==typeof this.b.webkitEnterFullScreen&&(/Android/.test(t.M)||!/Chrome|Mac OS X 10.5/.test(t.M))?f:l};s.oc=function(){var a=this.b;a.paused&&a.networkState<=a.ke?(this.b.play(),setTimeout(function(){a.pause();a.webkitEnterFullScreen()},0)):a.webkitEnterFullScreen()};s.vd=function(){this.b.webkitExitFullScreen()};s.src=function(a){this.b.src=a};s.load=function(){this.b.load()};s.currentSrc=function(){return this.b.currentSrc};
s.poster=function(){return this.b.poster};s.Jc=function(a){this.b.poster=a};s.Da=function(){return this.b.Da};s.be=function(a){this.b.Da=a};s.autoplay=function(){return this.b.autoplay};s.Xd=function(a){this.b.autoplay=a};s.controls=function(){return this.b.controls};s.loop=function(){return this.b.loop};s.Zd=function(a){this.b.loop=a};s.error=function(){return this.b.error};s.seeking=function(){return this.b.seeking};s.ended=function(){return this.b.ended};s.playbackRate=function(){return this.b.playbackRate};
s.ae=function(a){this.b.playbackRate=a};s.networkState=function(){return this.b.networkState};t.g.isSupported=function(){try{t.B.volume=0.5}catch(a){return l}return!!t.B.canPlayType};t.g.vb=function(a){try{return!!t.B.canPlayType(a.type)}catch(c){return""}};t.g.ld=function(){var a=t.B.volume;t.B.volume=a/2+0.1;return a!==t.B.volume};t.g.kd=function(){var a=t.B.playbackRate;t.B.playbackRate=a/2+0.1;return a!==t.B.playbackRate};var V,ga=/^application\/(?:x-|vnd\.apple\.)mpegurl/i,ha=/^video\/mp4/i;
t.g.Bc=function(){4<=t.Ub&&(V||(V=t.B.constructor.prototype.canPlayType),t.B.constructor.prototype.canPlayType=function(a){return a&&ga.test(a)?"maybe":V.call(this,a)});t.bd&&(V||(V=t.B.constructor.prototype.canPlayType),t.B.constructor.prototype.canPlayType=function(a){return a&&ha.test(a)?"maybe":V.call(this,a)})};t.g.ie=function(){var a=t.B.constructor.prototype.canPlayType;t.B.constructor.prototype.canPlayType=V;V=k;return a};t.g.Bc();t.g.kb="loadstart suspend abort error emptied stalled loadedmetadata loadeddata canplay canplaythrough playing waiting seeking seeked ended durationchange timeupdate progress play pause ratechange volumechange".split(" ");
t.g.Bb=function(a){if(a){a.player=k;for(a.parentNode&&a.parentNode.removeChild(a);a.hasChildNodes();)a.removeChild(a.firstChild);a.removeAttribute("src");if("function"===typeof a.load)try{a.load()}catch(c){}}};
t.f=t.u.extend({i:function(a,c,d){t.u.call(this,a,c,d);var e=c.source;d=c.parentEl;var g=this.b=t.e("div",{id:a.id()+"_temp_flash"}),h=a.id()+"_flash_api",j=a.l,j=t.h.A({readyFunction:"videojs.Flash.onReady",eventProxyFunction:"videojs.Flash.onEvent",errorEventProxyFunction:"videojs.Flash.onError",autoplay:j.autoplay,preload:j.Da,loop:j.loop,muted:j.muted},c.flashVars),n=t.h.A({wmode:"opaque",bgcolor:"#000000"},c.params),h=t.h.A({id:h,name:h,"class":"vjs-tech"},c.attributes);e&&(e.type&&t.f.Dd(e.type)?
(e=t.f.Nc(e.src),j.rtmpConnection=encodeURIComponent(e.wb),j.rtmpStream=encodeURIComponent(e.Rb)):j.src=encodeURIComponent(t.sc(e.src)));t.Gb(g,d);c.startTime&&this.J(function(){this.load();this.play();this.currentTime(c.startTime)});t.Xc&&this.J(function(){t.d(this.w(),"mousemove",t.bind(this,function(){this.j().m({type:"mousemove",bubbles:l})}))});a.d("stageclick",a.reportUserActivity);this.b=t.f.td(c.swf,g,j,n,h)}});t.f.prototype.dispose=function(){t.u.prototype.dispose.call(this)};
t.f.prototype.play=function(){this.b.vjs_play()};t.f.prototype.pause=function(){this.b.vjs_pause()};t.f.prototype.src=function(a){if(a===b)return this.currentSrc();t.f.Cd(a)?(a=t.f.Nc(a),this.re(a.wb),this.se(a.Rb)):(a=t.sc(a),this.b.vjs_src(a));if(this.c.autoplay()){var c=this;setTimeout(function(){c.play()},0)}};t.f.prototype.setCurrentTime=function(a){this.Gd=a;this.b.vjs_setProperty("currentTime",a);t.u.prototype.Qb.call(this)};
t.f.prototype.currentTime=function(){return this.seeking()?this.Gd||0:this.b.vjs_getProperty("currentTime")};t.f.prototype.currentSrc=function(){var a=this.b.vjs_getProperty("currentSrc");if(a==k){var c=this.rtmpConnection(),d=this.rtmpStream();c&&d&&(a=t.f.de(c,d))}return a};t.f.prototype.load=function(){this.b.vjs_load()};t.f.prototype.poster=function(){this.b.vjs_getProperty("poster")};t.f.prototype.setPoster=m();t.f.prototype.buffered=function(){return t.zb(0,this.b.vjs_getProperty("buffered"))};
t.f.prototype.Ea=r(l);t.f.prototype.oc=r(l);function ia(){var a=W[X],c=a.charAt(0).toUpperCase()+a.slice(1);ja["set"+c]=function(c){return this.b.vjs_setProperty(a,c)}}function ka(a){ja[a]=function(){return this.b.vjs_getProperty(a)}}
M=L[0];for(O=0;O<L.length;O++)if(L[O][1]in document){N=L[O];break}if(N){t.Oa.Db={};for(O=0;O<N.length;O++)t.Oa.Db[M[O]]=N[O]}
t.Player=t.a.extend({i:function(a,c,d){this.P=a;a.id=a.id||"vjs_video_"+t.w++;this.ee=a&&t.za(a);c=t.h.z(da(a),c);this.Ta=c.language||t.options.language;this.Ed=c.languages||t.options.languages;this.F={};this.Bc=c.poster;this.xb=c.controls;a.controls=l;c.Fc=l;t.a.call(this,this,c,d);this.controls()?this.n("vjs-controls-enabled"):this.n("vjs-controls-disabled");t.Ba[this.U]=this;c.plugins&&t.h.Y(c.plugins,function(a,c){this[a](c)},this);var e,g,h,j,n,q;e=t.bind(this,this.reportUserActivity);this.d("mousedown",
function(){e();clearInterval(g);g=setInterval(e,250)});this.d("mousemove",function(a){if(a.screenX!=n||a.screenY!=q)n=a.screenX,q=a.screenY,e()});this.d("mouseup",function(){e();clearInterval(g)});this.d("keydown",e);this.d("keyup",e);h=setInterval(t.bind(this,function(){if(this.pa){this.pa=l;this.userActive(f);clearTimeout(j);var a=this.options().inactivityTimeout;0<a&&(j=setTimeout(t.bind(this,function(){this.pa||this.userActive(l)}),a))}}),250);this.d("dispose",function(){clearInterval(h);clearTimeout(j)})}});
s=t.Player.prototype;s.language=function(a){if(a===b)return this.Ta;this.Ta=a;return this};s.languages=p("Ed");s.l=t.options;s.dispose=function(){this.k("dispose");this.o("dispose");t.Ba[this.U]=k;this.P&&this.P.player&&(this.P.player=k);this.b&&this.b.player&&(this.b.player=k);this.m&&this.m.dispose();t.a.prototype.dispose.call(this)};
function da(a){var c={sources:[],tracks:[]};t.h.z(c,t.za(a));if(a.hasChildNodes()){var d,e,g,h;a=a.childNodes;g=0;for(h=a.length;g<h;g++)d=a[g],e=d.nodeName.toLowerCase(),"source"===e?c.sources.push(t.za(d)):"track"===e&&c.tracks.push(t.za(d))}return c}
s.e=function(){var a=this.b=t.a.prototype.e.call(this,"div"),c=this.P,d;c.removeAttribute("width");c.removeAttribute("height");if(c.hasChildNodes()){var e,g,h,j,n;e=c.childNodes;g=e.length;for(n=[];g--;)h=e[g],j=h.nodeName.toLowerCase(),"track"===j&&n.push(h);for(e=0;e<n.length;e++)c.removeChild(n[e])}d=t.za(c);t.h.Y(d,function(c){a.setAttribute(c,d[c])});c.id+="_html5_api";c.className="vjs-tech";c.player=a.player=this;this.n("vjs-paused");this.width(this.l.width,f);this.height(this.l.height,f);c.parentNode&&
c.parentNode.insertBefore(a,c);t.Fb(c,a);this.b=a;this.d("loadstart",this.Ld);this.d("waiting",this.Rd);this.d(["canplay","canplaythrough","playing","ended"],this.Qd);this.d("seeking",this.Od);this.d("seeked",this.Nd);this.d("ended",this.Hd);this.d("play",this.Mb);this.d("firstplay",this.Jd);this.d("pause",this.Lb);this.d("progress",this.Md);this.d("durationchange",this.yc);this.d("fullscreenchange",this.Kd);return a};
function P(a,c,d){a.m&&(a.la=l,a.m.dispose(),a.m=l);"Html5"!==c&&a.P&&(t.g.Ab(a.P),a.P=k);a.cb=c;a.la=l;var e=t.h.z({source:d,parentEl:a.b},a.l[c.toLowerCase()]);d&&(a.lc=d.type,d.src==a.F.src&&0<a.F.currentTime&&(e.startTime=a.F.currentTime),a.F.src=d.src);a.m=new window.videojs[c](a,e);a.m.I(function(){this.c.Fa()})}s.Ld=function(){this.error(k);this.paused()?(Q(this,l),this.O("play",function(){Q(this,f)})):this.k("firstplay")};s.sc=l;
function Q(a,c){c!==b&&a.sc!==c&&((a.sc=c)?(a.n("vjs-has-started"),a.k("firstplay")):a.p("vjs-has-started"))}s.Mb=function(){this.p("vjs-paused");this.n("vjs-playing")};s.Rd=function(){this.n("vjs-waiting")};s.Qd=function(){this.p("vjs-waiting")};s.Od=function(){this.n("vjs-seeking")};s.Nd=function(){this.p("vjs-seeking")};s.Jd=function(){this.l.starttime&&this.currentTime(this.l.starttime);this.n("vjs-has-started")};s.Lb=function(){this.p("vjs-playing");this.n("vjs-paused")};
s.Md=function(){1==this.bufferedPercent()&&this.k("loadedalldata")};s.Hd=function(){this.l.loop?(this.currentTime(0),this.play()):this.paused()||this.pause()};s.yc=function(){var a=R(this,"duration");a&&(0>a&&(a=Infinity),this.duration(a),Infinity===a?this.n("vjs-live"):this.p("vjs-live"))};s.Kd=function(){this.isFullscreen()?this.n("vjs-fullscreen"):this.p("vjs-fullscreen")};function S(a,c,d){if(a.m&&!a.m.la)a.m.I(function(){this[c](d)});else try{a.m[c](d)}catch(e){throw t.log(e),e;}}
function R(a,c){if(a.m&&a.m.la)try{return a.m[c]()}catch(d){throw a.m[c]===b?t.log("Video.js: "+c+" method not defined for "+a.cb+" playback technology.",d):"TypeError"==d.name?(t.log("Video.js: "+c+" unavailable on "+a.cb+" playback technology element.",d),a.m.la=l):t.log(d),d;}}s.play=function(){S(this,"play");return this};s.pause=function(){S(this,"pause");return this};s.paused=function(){return R(this,"paused")===l?l:f};
s.currentTime=function(a){return a!==b?(S(this,"setCurrentTime",a),this):this.F.currentTime=R(this,"currentTime")||0};s.duration=function(a){if(a!==b)return this.F.duration=parseFloat(a),this;this.F.duration===b&&this.yc();return this.F.duration||0};s.remainingTime=function(){return this.duration()-this.currentTime()};s.buffered=function(){var a=R(this,"buffered");if(!a||!a.length)a=t.yb(0,0);return a};
s.bufferedPercent=function(){var a=this.duration(),c=this.buffered(),d=0,e,g;if(!a)return 0;for(var h=0;h<c.length;h++)e=c.start(h),g=c.end(h),g>a&&(g=a),d+=g-e;return d/a};s.volume=function(a){if(a!==b)return a=Math.max(0,Math.min(1,parseFloat(a))),this.F.volume=a,S(this,"setVolume",a),t.Xd(a),this;a=parseFloat(R(this,"volume"));return isNaN(a)?1:a};s.muted=function(a){return a!==b?(S(this,"setMuted",a),this):R(this,"muted")||l};s.Da=function(){return R(this,"supportsFullScreen")||l};s.uc=l;
s.isFullscreen=function(a){return a!==b?(this.uc=!!a,this):this.uc};s.isFullScreen=function(a){t.log.warn('player.isFullScreen() has been deprecated, use player.isFullscreen() with a lowercase "s")');return this.isFullscreen(a)};
s.requestFullscreen=function(){var a=t.Oa.Db;this.isFullscreen(f);a?(t.d(document,a.fullscreenchange,t.bind(this,function(c){this.isFullscreen(document[a.fullscreenElement]);this.isFullscreen()===l&&t.o(document,a.fullscreenchange,arguments.callee);this.k("fullscreenchange")})),this.b[a.requestFullscreen]()):this.m.Da()?S(this,"enterFullScreen"):(this.nc(),this.k("fullscreenchange"));return this};
s.requestFullScreen=function(){t.log.warn('player.requestFullScreen() has been deprecated, use player.requestFullscreen() with a lowercase "s")');return this.requestFullscreen()};s.exitFullscreen=function(){var a=t.Oa.Db;this.isFullscreen(l);if(a)document[a.exitFullscreen]();else this.m.Da()?S(this,"exitFullScreen"):(this.Bb(),this.k("fullscreenchange"));return this};s.cancelFullScreen=function(){t.log.warn("player.cancelFullScreen() has been deprecated, use player.exitFullscreen()");return this.exitFullscreen()};
s.nc=function(){this.zd=f;this.qd=document.documentElement.style.overflow;t.d(document,"keydown",t.bind(this,this.pc));document.documentElement.style.overflow="hidden";t.n(document.body,"vjs-full-window");this.k("enterFullWindow")};s.pc=function(a){27===a.keyCode&&(this.isFullscreen()===f?this.exitFullscreen():this.Bb())};s.Bb=function(){this.zd=l;t.o(document,"keydown",this.pc);document.documentElement.style.overflow=this.qd;t.p(document.body,"vjs-full-window");this.k("exitFullWindow")};
s.selectSource=function(a){for(var c=0,d=this.l.techOrder;c<d.length;c++){var e=t.aa(d[c]),g=window.videojs[e];if(g){if(g.isSupported())for(var h=0,j=a;h<j.length;h++){var n=j[h];if(g.canPlaySource(n))return{source:n,m:e}}}else t.log.error('The "'+e+'" tech is undefined. Skipped browser support check for that tech.')}return l};
s.src=function(a){if(a===b)return R(this,"src");t.h.isArray(a)?T(this,a):"string"===typeof a?this.src({src:a}):a instanceof Object&&(a.type&&!window.videojs[this.cb].canPlaySource(a)?T(this,[a]):(this.F.src=a.src,this.lc=a.type||"",this.I(function(){S(this,"src",a.src);"auto"==this.l.preload&&this.load();this.l.autoplay&&this.play()})));return this};
function T(a,c){var d=a.selectSource(c),e;d?d.m===a.cb?a.src(d.source):P(a,d.m,d.source):(e=setTimeout(t.bind(a,function(){this.error({code:4,message:this.s(this.options().notSupportedMessage)})}),0),a.Fa(),a.d("dispose",function(){clearTimeout(e)}))}s.load=function(){S(this,"load");return this};s.currentSrc=function(){return R(this,"currentSrc")||this.F.src||""};s.ld=function(){return this.lc||""};s.Ca=function(a){return a!==b?(S(this,"setPreload",a),this.l.preload=a,this):R(this,"preload")};
s.autoplay=function(a){return a!==b?(S(this,"setAutoplay",a),this.l.autoplay=a,this):R(this,"autoplay")};s.loop=function(a){return a!==b?(S(this,"setLoop",a),this.l.loop=a,this):R(this,"loop")};s.poster=function(a){if(a===b)return this.Bc;this.Bc=a;S(this,"setPoster",a);this.k("posterchange")};
s.controls=function(a){return a!==b?(a=!!a,this.xb!==a&&((this.xb=a)?(this.p("vjs-controls-disabled"),this.n("vjs-controls-enabled"),this.k("controlsenabled")):(this.p("vjs-controls-enabled"),this.n("vjs-controls-disabled"),this.k("controlsdisabled"))),this):this.xb};t.Player.prototype.Rb;s=t.Player.prototype;
s.usingNativeControls=function(a){return a!==b?(a=!!a,this.Rb!==a&&((this.Rb=a)?(this.n("vjs-using-native-controls"),this.k("usingnativecontrols")):(this.p("vjs-using-native-controls"),this.k("usingcustomcontrols"))),this):this.Rb};s.ca=k;s.error=function(a){if(a===b)return this.ca;if(a===k)return this.ca=a,this.p("vjs-error"),this;this.ca=a instanceof t.D?a:new t.D(a);this.k("error");this.n("vjs-error");t.log.error("(CODE:"+this.ca.code+" "+t.D.Ra[this.ca.code]+")",this.ca.message,this.ca);return this};
s.ended=function(){return R(this,"ended")};s.seeking=function(){return R(this,"seeking")};s.pa=f;s.reportUserActivity=function(){this.pa=f};s.Qb=f;s.userActive=function(a){return a!==b?(a=!!a,a!==this.Qb&&((this.Qb=a)?(this.pa=f,this.p("vjs-user-inactive"),this.n("vjs-user-active"),this.k("useractive")):(this.pa=l,this.m&&this.m.O("mousemove",function(a){a.stopPropagation();a.preventDefault()}),this.p("vjs-user-active"),this.n("vjs-user-inactive"),this.k("userinactive"))),this):this.Qb};
s.playbackRate=function(a){return a!==b?(S(this,"setPlaybackRate",a),this):this.m&&this.m.featuresPlaybackRate?R(this,"playbackRate"):1};t.Ia=t.a.extend();t.Ia.prototype.l={se:"play",children:{playToggle:{},currentTimeDisplay:{},timeDivider:{},durationDisplay:{},remainingTimeDisplay:{},liveDisplay:{},progressControl:{},fullscreenToggle:{},volumeControl:{},muteToggle:{},playbackRateMenuButton:{}}};t.Ia.prototype.e=function(){return t.e("div",{className:"vjs-control-bar"})};
t.Wb=t.a.extend({i:function(a,c){t.a.call(this,a,c)}});t.Wb.prototype.e=function(){var a=t.a.prototype.e.call(this,"div",{className:"vjs-live-controls vjs-control"});this.u=t.e("div",{className:"vjs-live-display",innerHTML:'<span class="vjs-control-text">'+this.s("Stream Type")+"</span>"+this.s("LIVE"),"aria-live":"off"});a.appendChild(this.u);return a};t.Zb=t.t.extend({i:function(a,c){t.t.call(this,a,c);a.d("play",t.bind(this,this.Mb));a.d("pause",t.bind(this,this.Lb))}});s=t.Zb.prototype;s.ta="Play";
s.T=function(){return"vjs-play-control "+t.t.prototype.T.call(this)};s.r=function(){this.c.paused()?this.c.play():this.c.pause()};s.Mb=function(){t.p(this.b,"vjs-paused");t.n(this.b,"vjs-playing");this.b.children[0].children[0].innerHTML=this.s("Pause")};s.Lb=function(){t.p(this.b,"vjs-playing");t.n(this.b,"vjs-paused");this.b.children[0].children[0].innerHTML=this.s("Play")};t.gb=t.a.extend({i:function(a,c){t.a.call(this,a,c);a.d("timeupdate",t.bind(this,this.fa))}});
t.gb.prototype.e=function(){var a=t.a.prototype.e.call(this,"div",{className:"vjs-current-time vjs-time-controls vjs-control"});this.u=t.e("div",{className:"vjs-current-time-display",innerHTML:'<span class="vjs-control-text">Current Time </span>0:00',"aria-live":"off"});a.appendChild(this.u);return a};t.gb.prototype.fa=function(){var a=this.c.ab?this.c.F.currentTime:this.c.currentTime();this.u.innerHTML='<span class="vjs-control-text">'+this.s("Current Time")+"</span> "+t.ya(a,this.c.duration())};
t.hb=t.a.extend({i:function(a,c){t.a.call(this,a,c);a.d("timeupdate",t.bind(this,this.fa))}});t.hb.prototype.e=function(){var a=t.a.prototype.e.call(this,"div",{className:"vjs-duration vjs-time-controls vjs-control"});this.u=t.e("div",{className:"vjs-duration-display",innerHTML:'<span class="vjs-control-text">'+this.s("Duration Time")+"</span> 0:00","aria-live":"off"});a.appendChild(this.u);return a};
t.hb.prototype.fa=function(){var a=this.c.duration();a&&(this.u.innerHTML='<span class="vjs-control-text">'+this.s("Duration Time")+"</span> "+t.ya(a))};t.ec=t.a.extend({i:function(a,c){t.a.call(this,a,c)}});t.ec.prototype.e=function(){return t.a.prototype.e.call(this,"div",{className:"vjs-time-divider",innerHTML:"<div><span>/</span></div>"})};t.ob=t.a.extend({i:function(a,c){t.a.call(this,a,c);a.d("timeupdate",t.bind(this,this.fa))}});
t.ob.prototype.e=function(){var a=t.a.prototype.e.call(this,"div",{className:"vjs-remaining-time vjs-time-controls vjs-control"});this.u=t.e("div",{className:"vjs-remaining-time-display",innerHTML:'<span class="vjs-control-text">'+this.s("Remaining Time")+"</span> -0:00","aria-live":"off"});a.appendChild(this.u);return a};t.ob.prototype.fa=function(){this.c.duration()&&(this.u.innerHTML='<span class="vjs-control-text">'+this.s("Remaining Time")+"</span> -"+t.ya(this.c.remainingTime()))};
t.Ja=t.t.extend({i:function(a,c){t.t.call(this,a,c)}});t.Ja.prototype.ta="Fullscreen";t.Ja.prototype.T=function(){return"vjs-fullscreen-control "+t.t.prototype.T.call(this)};t.Ja.prototype.r=function(){this.c.isFullscreen()?(this.c.exitFullscreen(),this.wb.innerHTML=this.s("Fullscreen")):(this.c.requestFullscreen(),this.wb.innerHTML=this.s("Non-Fullscreen"))};t.nb=t.a.extend({i:function(a,c){t.a.call(this,a,c)}});t.nb.prototype.l={children:{seekBar:{}}};
t.nb.prototype.e=function(){return t.a.prototype.e.call(this,"div",{className:"vjs-progress-control vjs-control"})};t.ac=t.Q.extend({i:function(a,c){t.Q.call(this,a,c);a.d("timeupdate",t.bind(this,this.oa));a.I(t.bind(this,this.oa))}});s=t.ac.prototype;s.l={children:{loadProgressBar:{},playProgressBar:{},seekHandle:{}},barName:"playProgressBar",handleName:"seekHandle"};s.Ac="timeupdate";s.e=function(){return t.Q.prototype.e.call(this,"div",{className:"vjs-progress-holder","aria-label":"video progress bar"})};
s.oa=function(){var a=this.c.ab?this.c.F.currentTime:this.c.currentTime();this.b.setAttribute("aria-valuenow",t.round(100*this.Eb(),2));this.b.setAttribute("aria-valuetext",t.ya(a,this.c.duration()))};s.Eb=function(){return this.c.currentTime()/this.c.duration()};s.Ya=function(a){t.Q.prototype.Ya.call(this,a);this.c.ab=f;this.ie=!this.c.paused();this.c.pause()};s.Za=function(a){a=H(this,a)*this.c.duration();a==this.c.duration()&&(a-=0.1);this.c.currentTime(a)};
s.Kb=function(a){t.Q.prototype.Kb.call(this,a);this.c.ab=l;this.ie&&this.c.play()};s.Kc=function(){this.c.currentTime(this.c.currentTime()+5)};s.Jc=function(){this.c.currentTime(this.c.currentTime()-5)};t.kb=t.a.extend({i:function(a,c){t.a.call(this,a,c);a.d("progress",t.bind(this,this.update))}});t.kb.prototype.e=function(){return t.a.prototype.e.call(this,"div",{className:"vjs-load-progress",innerHTML:'<span class="vjs-control-text"><span>'+this.s("Loaded")+"</span>: 0%</span>"})};
t.kb.prototype.update=function(){var a,c,d,e,g=this.c.buffered();a=this.c.duration();var h,j=this.c;h=j.buffered();j=j.duration();h=h.end(h.length-1);h>j&&(h=j);j=this.b.children;this.b.style.width=100*(h/a||0)+"%";for(a=0;a<g.length;a++)c=g.start(a),d=g.end(a),(e=j[a])||(e=this.b.appendChild(t.e())),e.style.left=100*(c/h||0)+"%",e.style.width=100*((d-c)/h||0)+"%";for(a=j.length;a>g.length;a--)this.b.removeChild(j[a-1])};t.Yb=t.a.extend({i:function(a,c){t.a.call(this,a,c)}});
t.Yb.prototype.e=function(){return t.a.prototype.e.call(this,"div",{className:"vjs-play-progress",innerHTML:'<span class="vjs-control-text"><span>'+this.s("Progress")+"</span>: 0%</span>"})};t.La=t.Z.extend({i:function(a,c){t.Z.call(this,a,c);a.d("timeupdate",t.bind(this,this.fa))}});t.La.prototype.defaultValue="00:00";t.La.prototype.e=function(){return t.Z.prototype.e.call(this,"div",{className:"vjs-seek-handle","aria-live":"off"})};
t.La.prototype.fa=function(){var a=this.c.ab?this.c.F.currentTime:this.c.currentTime();this.b.innerHTML='<span class="vjs-control-text">'+t.ya(a,this.c.duration())+"</span>"};t.qb=t.a.extend({i:function(a,c){t.a.call(this,a,c);a.m&&a.m.featuresVolumeControl===l&&this.n("vjs-hidden");a.d("loadstart",t.bind(this,function(){a.m.featuresVolumeControl===l?this.n("vjs-hidden"):this.p("vjs-hidden")}))}});t.qb.prototype.l={children:{volumeBar:{}}};
t.qb.prototype.e=function(){return t.a.prototype.e.call(this,"div",{className:"vjs-volume-control vjs-control"})};t.pb=t.Q.extend({i:function(a,c){t.Q.call(this,a,c);a.d("volumechange",t.bind(this,this.oa));a.I(t.bind(this,this.oa))}});s=t.pb.prototype;s.oa=function(){this.b.setAttribute("aria-valuenow",t.round(100*this.c.volume(),2));this.b.setAttribute("aria-valuetext",t.round(100*this.c.volume(),2)+"%")};s.l={children:{volumeLevel:{},volumeHandle:{}},barName:"volumeLevel",handleName:"volumeHandle"};
s.Ac="volumechange";s.e=function(){return t.Q.prototype.e.call(this,"div",{className:"vjs-volume-bar","aria-label":"volume level"})};s.Za=function(a){this.c.muted()&&this.c.muted(l);this.c.volume(H(this,a))};s.Eb=function(){return this.c.muted()?0:this.c.volume()};s.Kc=function(){this.c.volume(this.c.volume()+0.1)};s.Jc=function(){this.c.volume(this.c.volume()-0.1)};t.fc=t.a.extend({i:function(a,c){t.a.call(this,a,c)}});
t.fc.prototype.e=function(){return t.a.prototype.e.call(this,"div",{className:"vjs-volume-level",innerHTML:'<span class="vjs-control-text"></span>'})};t.rb=t.Z.extend();t.rb.prototype.defaultValue="00:00";t.rb.prototype.e=function(){return t.Z.prototype.e.call(this,"div",{className:"vjs-volume-handle"})};
t.ia=t.t.extend({i:function(a,c){t.t.call(this,a,c);a.d("volumechange",t.bind(this,this.update));a.m&&a.m.featuresVolumeControl===l&&this.n("vjs-hidden");a.d("loadstart",t.bind(this,function(){a.m.featuresVolumeControl===l?this.n("vjs-hidden"):this.p("vjs-hidden")}))}});t.ia.prototype.e=function(){return t.t.prototype.e.call(this,"div",{className:"vjs-mute-control vjs-control",innerHTML:'<div><span class="vjs-control-text">'+this.s("Mute")+"</span></div>"})};
t.ia.prototype.r=function(){this.c.muted(this.c.muted()?l:f)};t.ia.prototype.update=function(){var a=this.c.volume(),c=3;0===a||this.c.muted()?c=0:0.33>a?c=1:0.67>a&&(c=2);this.c.muted()?this.b.children[0].children[0].innerHTML!=this.s("Unmute")&&(this.b.children[0].children[0].innerHTML=this.s("Unmute")):this.b.children[0].children[0].innerHTML!=this.s("Mute")&&(this.b.children[0].children[0].innerHTML=this.s("Mute"));for(a=0;4>a;a++)t.p(this.b,"vjs-vol-"+a);t.n(this.b,"vjs-vol-"+c)};
t.ra=t.K.extend({i:function(a,c){t.K.call(this,a,c);a.d("volumechange",t.bind(this,this.update));a.m&&a.m.featuresVolumeControl===l&&this.n("vjs-hidden");a.d("loadstart",t.bind(this,function(){a.m.featuresVolumeControl===l?this.n("vjs-hidden"):this.p("vjs-hidden")}));this.n("vjs-menu-button")}});t.ra.prototype.wa=function(){var a=new t.ha(this.c,{jc:"div"}),c=new t.pb(this.c,t.h.z({vertical:f},this.l.we));a.R(c);return a};t.ra.prototype.r=function(){t.ia.prototype.r.call(this);t.K.prototype.r.call(this)};
t.ra.prototype.e=function(){return t.t.prototype.e.call(this,"div",{className:"vjs-volume-menu-button vjs-menu-button vjs-control",innerHTML:'<div><span class="vjs-control-text">'+this.s("Mute")+"</span></div>"})};t.ra.prototype.update=t.ia.prototype.update;t.$b=t.K.extend({i:function(a,c){t.K.call(this,a,c);this.Pc();this.Oc();a.d("loadstart",t.bind(this,this.Pc));a.d("ratechange",t.bind(this,this.Oc))}});s=t.$b.prototype;
s.e=function(){var a=t.a.prototype.e.call(this,"div",{className:"vjs-playback-rate vjs-menu-button vjs-control",innerHTML:'<div class="vjs-control-content"><span class="vjs-control-text">'+this.s("Playback Rate")+"</span></div>"});this.wc=t.e("div",{className:"vjs-playback-rate-value",innerHTML:1});a.appendChild(this.wc);return a};s.wa=function(){var a=new t.ha(this.j()),c=this.j().options().playbackRates;if(c)for(var d=c.length-1;0<=d;d--)a.R(new t.mb(this.j(),{rate:c[d]+"x"}));return a};
s.oa=function(){this.v().setAttribute("aria-valuenow",this.j().playbackRate())};s.r=function(){for(var a=this.j().playbackRate(),c=this.j().options().playbackRates,d=c[0],e=0;e<c.length;e++)if(c[e]>a){d=c[e];break}this.j().playbackRate(d)};function U(a){return a.j().m&&a.j().m.featuresPlaybackRate&&a.j().options().playbackRates&&0<a.j().options().playbackRates.length}s.Pc=function(){U(this)?this.p("vjs-hidden"):this.n("vjs-hidden")};
s.Oc=function(){U(this)&&(this.wc.innerHTML=this.j().playbackRate()+"x")};t.mb=t.H.extend({jc:"button",i:function(a,c){var d=this.label=c.rate,e=this.Dc=parseFloat(d,10);c.label=d;c.selected=1===e;t.H.call(this,a,c);this.j().d("ratechange",t.bind(this,this.update))}});t.mb.prototype.r=function(){t.H.prototype.r.call(this);this.j().playbackRate(this.Dc)};t.mb.prototype.update=function(){this.selected(this.j().playbackRate()==this.Dc)};
t.Ka=t.t.extend({i:function(a,c){t.t.call(this,a,c);a.poster()&&this.src(a.poster());(!a.poster()||!a.controls())&&this.W();a.d("posterchange",t.bind(this,function(){this.src(a.poster())}));a.d("play",t.bind(this,this.W))}});var ea="backgroundSize"in t.A.style;t.Ka.prototype.e=function(){var a=t.e("div",{className:"vjs-poster",tabIndex:-1});ea||a.appendChild(t.e("img"));return a};t.Ka.prototype.src=function(a){var c=this.v();a!==b&&(ea?c.style.backgroundImage='url("'+a+'")':c.firstChild.src=a)};
t.Ka.prototype.r=function(){this.j().controls()&&this.c.play()};t.Xb=t.a.extend({i:function(a,c){t.a.call(this,a,c)}});t.Xb.prototype.e=function(){return t.a.prototype.e.call(this,"div",{className:"vjs-loading-spinner"})};t.eb=t.t.extend();t.eb.prototype.e=function(){return t.t.prototype.e.call(this,"div",{className:"vjs-big-play-button",innerHTML:'<span aria-hidden="true"></span>',"aria-label":"play video"})};t.eb.prototype.r=function(){this.c.play()};
t.ib=t.a.extend({i:function(a,c){t.a.call(this,a,c);this.update();a.d("error",t.bind(this,this.update))}});t.ib.prototype.e=function(){var a=t.a.prototype.e.call(this,"div",{className:"vjs-error-display"});this.u=t.e("div");a.appendChild(this.u);return a};t.ib.prototype.update=function(){this.j().error()&&(this.u.innerHTML=this.s(this.j().error().message))};
t.q=t.a.extend({i:function(a,c,d){c=c||{};c.Fc=l;t.a.call(this,a,c,d);this.featuresProgressEvents||(this.xc=f,this.Cc=setInterval(t.bind(this,function(){var a=this.j().bufferedPercent();this.gd!=a&&this.j().k("progress");this.gd=a;1===a&&clearInterval(this.Cc)}),500));this.featuresTimeupdateEvents||(this.Jb=f,this.j().d("play",t.bind(this,this.Nc)),this.j().d("pause",t.bind(this,this.bb)),this.O("timeupdate",function(){this.featuresTimeupdateEvents=f;fa(this)}));var e,g;g=this;e=this.j();a=function(){if(e.controls()&&
!e.usingNativeControls()){var a;g.d("mousedown",g.r);g.d("touchstart",function(){a=this.c.userActive()});g.d("touchmove",function(){a&&this.j().reportUserActivity()});g.d("touchend",function(a){a.preventDefault()});G(g);g.d("tap",g.Pd)}};c=t.bind(g,g.Vd);this.I(a);e.d("controlsenabled",a);e.d("controlsdisabled",c);this.I(function(){this.networkState&&0<this.networkState()&&this.j().k("loadstart")})}});s=t.q.prototype;
s.Vd=function(){this.o("tap");this.o("touchstart");this.o("touchmove");this.o("touchleave");this.o("touchcancel");this.o("touchend");this.o("click");this.o("mousedown")};s.r=function(a){0===a.button&&this.j().controls()&&(this.j().paused()?this.j().play():this.j().pause())};s.Pd=function(){this.j().userActive(!this.j().userActive())};function fa(a){a.Jb=l;a.bb();a.o("play",a.Nc);a.o("pause",a.bb)}
s.Nc=function(){this.kc&&this.bb();this.kc=setInterval(t.bind(this,function(){this.j().k("timeupdate")}),250)};s.bb=function(){clearInterval(this.kc);this.j().k("timeupdate")};s.dispose=function(){this.xc&&(this.xc=l,clearInterval(this.Cc));this.Jb&&fa(this);t.a.prototype.dispose.call(this)};s.Ob=function(){this.Jb&&this.j().k("timeupdate")};s.Hc=m();t.q.prototype.featuresVolumeControl=f;t.q.prototype.featuresFullscreenResize=l;t.q.prototype.featuresPlaybackRate=l;
t.q.prototype.featuresProgressEvents=l;t.q.prototype.featuresTimeupdateEvents=l;t.media={};
t.g=t.q.extend({i:function(a,c,d){this.featuresVolumeControl=t.g.jd();this.featuresPlaybackRate=t.g.hd();this.movingMediaElementInDOM=!t.Vc;this.featuresProgressEvents=this.featuresFullscreenResize=f;t.q.call(this,a,c,d);for(d=t.g.jb.length-1;0<=d;d--)t.d(this.b,t.g.jb[d],t.bind(this,this.sd));if((c=c.source)&&this.b.currentSrc!==c.src)this.b.src=c.src;if(t.cc&&a.options().nativeControlsForTouch!==l){var e,g,h,j;e=this;g=this.j();c=g.controls();e.b.controls=!!c;h=function(){e.b.controls=f};j=function(){e.b.controls=
l};g.d("controlsenabled",h);g.d("controlsdisabled",j);c=function(){g.o("controlsenabled",h);g.o("controlsdisabled",j)};e.d("dispose",c);g.d("usingcustomcontrols",c);g.usingNativeControls(f)}a.I(function(){this.P&&(this.l.autoplay&&this.paused())&&(delete this.P.poster,this.play())});this.Fa()}});s=t.g.prototype;s.dispose=function(){t.g.Ab(this.b);t.q.prototype.dispose.call(this)};
s.e=function(){var a=this.c,c=a.P,d;if(!c||this.movingMediaElementInDOM===l)c?(d=c.cloneNode(l),t.g.Ab(c),c=d,a.P=k):(c=t.e("video"),t.Gc(c,t.h.z(a.ee||{},{id:a.id()+"_html5_api","class":"vjs-tech"}))),c.player=a,t.Fb(c,a.v());d=["autoplay","preload","loop","muted"];for(var e=d.length-1;0<=e;e--){var g=d[e],h={};"undefined"!==typeof a.l[g]&&(h[g]=a.l[g]);t.Gc(c,h)}return c};s.sd=function(a){"error"==a.type&&this.error()?this.j().error(this.error().code):(a.bubbles=l,this.j().k(a))};s.play=function(){this.b.play()};
s.pause=function(){this.b.pause()};s.paused=function(){return this.b.paused};s.currentTime=function(){return this.b.currentTime};s.Ob=function(a){try{this.b.currentTime=a}catch(c){t.log(c,"Video is not ready. (Video.js)")}};s.duration=function(){return this.b.duration||0};s.buffered=function(){return this.b.buffered};s.volume=function(){return this.b.volume};s.be=function(a){this.b.volume=a};s.muted=function(){return this.b.muted};s.Zd=function(a){this.b.muted=a};s.width=function(){return this.b.offsetWidth};
s.height=function(){return this.b.offsetHeight};s.Da=function(){return"function"==typeof this.b.webkitEnterFullScreen&&(/Android/.test(t.L)||!/Chrome|Mac OS X 10.5/.test(t.L))?f:l};
s.mc=function(){var a=this.b;"webkitDisplayingFullscreen"in a&&this.O("webkitbeginfullscreen",t.bind(this,function(){this.c.isFullscreen(f);this.O("webkitendfullscreen",t.bind(this,function(){this.c.isFullscreen(l);this.c.k("fullscreenchange")}));this.c.k("fullscreenchange")}));a.paused&&a.networkState<=a.je?(this.b.play(),setTimeout(function(){a.pause();a.webkitEnterFullScreen()},0)):a.webkitEnterFullScreen()};s.td=function(){this.b.webkitExitFullScreen()};
s.src=function(a){if(a===b)return this.b.src;this.b.src=a};s.load=function(){this.b.load()};s.currentSrc=function(){return this.b.currentSrc};s.poster=function(){return this.b.poster};s.Hc=function(a){this.b.poster=a};s.Ca=function(){return this.b.Ca};s.ae=function(a){this.b.Ca=a};s.autoplay=function(){return this.b.autoplay};s.Wd=function(a){this.b.autoplay=a};s.controls=function(){return this.b.controls};s.loop=function(){return this.b.loop};s.Yd=function(a){this.b.loop=a};s.error=function(){return this.b.error};
s.seeking=function(){return this.b.seeking};s.ended=function(){return this.b.ended};s.playbackRate=function(){return this.b.playbackRate};s.$d=function(a){this.b.playbackRate=a};s.networkState=function(){return this.b.networkState};t.g.isSupported=function(){try{t.A.volume=0.5}catch(a){return l}return!!t.A.canPlayType};t.g.ub=function(a){try{return!!t.A.canPlayType(a.type)}catch(c){return""}};t.g.jd=function(){var a=t.A.volume;t.A.volume=a/2+0.1;return a!==t.A.volume};
t.g.hd=function(){var a=t.A.playbackRate;t.A.playbackRate=a/2+0.1;return a!==t.A.playbackRate};var V,ga=/^application\/(?:x-|vnd\.apple\.)mpegurl/i,ha=/^video\/mp4/i;t.g.zc=function(){4<=t.Sb&&(V||(V=t.A.constructor.prototype.canPlayType),t.A.constructor.prototype.canPlayType=function(a){return a&&ga.test(a)?"maybe":V.call(this,a)});t.Zc&&(V||(V=t.A.constructor.prototype.canPlayType),t.A.constructor.prototype.canPlayType=function(a){return a&&ha.test(a)?"maybe":V.call(this,a)})};
t.g.he=function(){var a=t.A.constructor.prototype.canPlayType;t.A.constructor.prototype.canPlayType=V;V=k;return a};t.g.zc();t.g.jb="loadstart suspend abort error emptied stalled loadedmetadata loadeddata canplay canplaythrough playing waiting seeking seeked ended durationchange timeupdate progress play pause ratechange volumechange".split(" ");
t.g.Ab=function(a){if(a){a.player=k;for(a.parentNode&&a.parentNode.removeChild(a);a.hasChildNodes();)a.removeChild(a.firstChild);a.removeAttribute("src");if("function"===typeof a.load)try{a.load()}catch(c){}}};
t.f=t.q.extend({i:function(a,c,d){t.q.call(this,a,c,d);var e=c.source;d=c.parentEl;var g=this.b=t.e("div",{id:a.id()+"_temp_flash"}),h=a.id()+"_flash_api",j=a.l,j=t.h.z({readyFunction:"videojs.Flash.onReady",eventProxyFunction:"videojs.Flash.onEvent",errorEventProxyFunction:"videojs.Flash.onError",autoplay:j.autoplay,preload:j.Ca,loop:j.loop,muted:j.muted},c.flashVars),n=t.h.z({wmode:"opaque",bgcolor:"#000000"},c.params),h=t.h.z({id:h,name:h,"class":"vjs-tech"},c.attributes);e&&(e.type&&t.f.Cd(e.type)?
(e=t.f.Lc(e.src),j.rtmpConnection=encodeURIComponent(e.vb),j.rtmpStream=encodeURIComponent(e.Pb)):j.src=encodeURIComponent(t.qc(e.src)));t.Fb(g,d);c.startTime&&this.I(function(){this.load();this.play();this.currentTime(c.startTime)});t.Uc&&this.I(function(){t.d(this.v(),"mousemove",t.bind(this,function(){this.j().k({type:"mousemove",bubbles:l})}))});a.d("stageclick",a.reportUserActivity);this.b=t.f.rd(c.swf,g,j,n,h)}});t.f.prototype.dispose=function(){t.q.prototype.dispose.call(this)};
t.f.prototype.play=function(){this.b.vjs_play()};t.f.prototype.pause=function(){this.b.vjs_pause()};t.f.prototype.src=function(a){if(a===b)return this.currentSrc();t.f.Bd(a)?(a=t.f.Lc(a),this.te(a.vb),this.ue(a.Pb)):(a=t.qc(a),this.b.vjs_src(a));if(this.c.autoplay()){var c=this;setTimeout(function(){c.play()},0)}};t.f.prototype.setCurrentTime=function(a){this.Fd=a;this.b.vjs_setProperty("currentTime",a);t.q.prototype.Ob.call(this)};
t.f.prototype.currentTime=function(){return this.seeking()?this.Fd||0:this.b.vjs_getProperty("currentTime")};t.f.prototype.currentSrc=function(){var a=this.b.vjs_getProperty("currentSrc");if(a==k){var c=this.rtmpConnection(),d=this.rtmpStream();c&&d&&(a=t.f.ce(c,d))}return a};t.f.prototype.load=function(){this.b.vjs_load()};t.f.prototype.poster=function(){this.b.vjs_getProperty("poster")};t.f.prototype.setPoster=m();t.f.prototype.buffered=function(){return t.yb(0,this.b.vjs_getProperty("buffered"))};
t.f.prototype.Da=r(l);t.f.prototype.mc=r(l);function ia(){var a=W[X],c=a.charAt(0).toUpperCase()+a.slice(1);ja["set"+c]=function(c){return this.b.vjs_setProperty(a,c)}}function ka(a){ja[a]=function(){return this.b.vjs_getProperty(a)}}
var ja=t.f.prototype,W="rtmpConnection rtmpStream preload defaultPlaybackRate playbackRate autoplay loop mediaGroup controller controls volume muted defaultMuted".split(" "),la="error networkState readyState seeking initialTime duration startOffsetTime paused played seekable ended videoTracks audioTracks videoWidth videoHeight textTracks".split(" "),X;for(X=0;X<W.length;X++)ka(W[X]),ia();for(X=0;X<la.length;X++)ka(la[X]);t.f.isSupported=function(){return 10<=t.f.version()[0]};
t.f.vb=function(a){if(!a.type)return"";a=a.type.replace(/;.*/,"").toLowerCase();if(a in t.f.xd||a in t.f.Oc)return"maybe"};t.f.xd={"video/flv":"FLV","video/x-flv":"FLV","video/mp4":"MP4","video/m4v":"MP4"};t.f.Oc={"rtmp/mp4":"MP4","rtmp/flv":"FLV"};t.f.onReady=function(a){var c;if(c=(a=t.w(a))&&a.parentNode&&a.parentNode.player)a.player=c,t.f.checkReady(c.k)};t.f.checkReady=function(a){a.w()&&(a.w().vjs_getProperty?a.Ga():setTimeout(function(){t.f.checkReady(a)},50))};t.f.onEvent=function(a,c){t.w(a).player.m(c)};
t.f.onError=function(a,c){var d=t.w(a).player,e="FLASH: "+c;"srcnotfound"==c?d.error({code:4,message:e}):d.error(e)};t.f.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(",")};
t.f.td=function(a,c,d,e,g){a=t.f.zd(a,d,e,g);a=t.e("div",{innerHTML:a}).childNodes[0];d=c.parentNode;c.parentNode.replaceChild(a,c);var h=d.childNodes[0];setTimeout(function(){h.style.display="block"},1E3);return a};
t.f.zd=function(a,c,d,e){var g="",h="",j="";c&&t.h.Z(c,function(a,c){g+=a+"="+c+"&amp;"});d=t.h.A({movie:a,flashvars:g,allowScriptAccess:"always",allowNetworking:"all"},d);t.h.Z(d,function(a,c){h+='<param name="'+a+'" value="'+c+'" />'});e=t.h.A({data:a,width:"100%",height:"100%"},e);t.h.Z(e,function(a,c){j+=a+'="'+c+'" '});return'<object type="application/x-shockwave-flash"'+j+">"+h+"</object>"};t.f.de=function(a,c){return a+"&"+c};
t.f.Nc=function(a){var c={wb:"",Rb:""};if(!a)return c;var d=a.indexOf("&"),e;-1!==d?e=d+1:(d=e=a.lastIndexOf("/")+1,0===d&&(d=e=a.length));c.wb=a.substring(0,d);c.Rb=a.substring(e,a.length);return c};t.f.Dd=function(a){return a in t.f.Oc};t.f.dd=/^rtmp[set]?:\/\//i;t.f.Cd=function(a){return t.f.dd.test(a)};
t.cd=t.a.extend({i:function(a,c,d){t.a.call(this,a,c,d);if(!a.l.sources||0===a.l.sources.length){c=0;for(d=a.l.techOrder;c<d.length;c++){var e=t.ba(d[c]),g=window.videojs[e];if(g&&g.isSupported()){P(a,e);break}}}else a.src(a.l.sources)}});t.Player.prototype.textTracks=function(){return this.Fa=this.Fa||[]};
function ma(a,c,d,e,g){var h=a.Fa=a.Fa||[];g=g||{};g.kind=c;g.label=d;g.language=e;c=t.ba(c||"subtitles");var j=new window.videojs[c+"Track"](a,g);h.push(j);j.Ab()&&a.J(function(){setTimeout(function(){Y(j.j(),j.id())},0)})}function Y(a,c,d){for(var e=a.Fa,g=0,h=e.length,j,n;g<h;g++)j=e[g],j.id()===c?(j.show(),n=j):d&&(j.K()==d&&0<j.mode())&&j.disable();(c=n?n.K():d?d:l)&&a.m(c+"trackchange")}
t.C=t.a.extend({i:function(a,c){t.a.call(this,a,c);this.U=c.id||"vjs_"+c.kind+"_"+c.language+"_"+t.z++;this.Kc=c.src;this.qd=c["default"]||c.dflt;this.ge=c.title;this.Ua=c.srclang;this.Ed=c.label;this.ca=[];this.tb=[];this.ma=this.na=0;this.c.d("fullscreenchange",t.bind(this,this.fd))}});s=t.C.prototype;s.K=p("H");s.src=p("Kc");s.Ab=p("qd");s.title=p("ge");s.language=p("Ua");s.label=p("Ed");s.md=p("ca");s.ed=p("tb");s.readyState=p("na");s.mode=p("ma");
s.fd=function(){this.b.style.fontSize=this.c.isFullScreen()?140*(screen.width/this.c.width())+"%":""};s.e=function(){return t.a.prototype.e.call(this,"div",{className:"vjs-"+this.H+" vjs-text-track"})};s.show=function(){na(this);this.ma=2;t.a.prototype.show.call(this)};s.W=function(){na(this);this.ma=1;t.a.prototype.W.call(this)};
s.disable=function(){2==this.ma&&this.W();this.c.p("timeupdate",t.bind(this,this.update,this.U));this.c.p("ended",t.bind(this,this.reset,this.U));this.reset();this.c.ka("textTrackDisplay").removeChild(this);this.ma=0};function na(a){0===a.na&&a.load();0===a.ma&&(a.c.d("timeupdate",t.bind(a,a.update,a.U)),a.c.d("ended",t.bind(a,a.reset,a.U)),("captions"===a.H||"subtitles"===a.H)&&a.c.ka("textTrackDisplay").R(a))}
s.load=function(){0===this.na&&(this.na=1,t.get(this.Kc,t.bind(this,this.Td),t.bind(this,this.Jd)))};s.Jd=function(a){this.error=a;this.na=3;this.m("error")};s.Td=function(a){var c,d;a=a.split("\n");for(var e="",g=1,h=a.length;g<h;g++)if(e=t.trim(a[g])){-1==e.indexOf("--\x3e")?(c=e,e=t.trim(a[++g])):c=this.ca.length;c={id:c,index:this.ca.length};d=e.split(/[\t ]+/);c.startTime=oa(d[0]);c.ya=oa(d[2]);for(d=[];a[++g]&&(e=t.trim(a[g]));)d.push(e);c.text=d.join("<br/>");this.ca.push(c)}this.na=2;this.m("loaded")};
t.f.ub=function(a){if(!a.type)return"";a=a.type.replace(/;.*/,"").toLowerCase();if(a in t.f.vd||a in t.f.Mc)return"maybe"};t.f.vd={"video/flv":"FLV","video/x-flv":"FLV","video/mp4":"MP4","video/m4v":"MP4"};t.f.Mc={"rtmp/mp4":"MP4","rtmp/flv":"FLV"};t.f.onReady=function(a){var c;if(c=(a=t.v(a))&&a.parentNode&&a.parentNode.player)a.player=c,t.f.checkReady(c.m)};t.f.checkReady=function(a){a.v()&&(a.v().vjs_getProperty?a.Fa():setTimeout(function(){t.f.checkReady(a)},50))};t.f.onEvent=function(a,c){t.v(a).player.k(c)};
t.f.onError=function(a,c){var d=t.v(a).player,e="FLASH: "+c;"srcnotfound"==c?d.error({code:4,message:e}):d.error(e)};t.f.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(",")};
t.f.rd=function(a,c,d,e,g){a=t.f.xd(a,d,e,g);a=t.e("div",{innerHTML:a}).childNodes[0];d=c.parentNode;c.parentNode.replaceChild(a,c);var h=d.childNodes[0];setTimeout(function(){h.style.display="block"},1E3);return a};
t.f.xd=function(a,c,d,e){var g="",h="",j="";c&&t.h.Y(c,function(a,c){g+=a+"="+c+"&amp;"});d=t.h.z({movie:a,flashvars:g,allowScriptAccess:"always",allowNetworking:"all"},d);t.h.Y(d,function(a,c){h+='<param name="'+a+'" value="'+c+'" />'});e=t.h.z({data:a,width:"100%",height:"100%"},e);t.h.Y(e,function(a,c){j+=a+'="'+c+'" '});return'<object type="application/x-shockwave-flash"'+j+">"+h+"</object>"};t.f.ce=function(a,c){return a+"&"+c};
t.f.Lc=function(a){var c={vb:"",Pb:""};if(!a)return c;var d=a.indexOf("&"),e;-1!==d?e=d+1:(d=e=a.lastIndexOf("/")+1,0===d&&(d=e=a.length));c.vb=a.substring(0,d);c.Pb=a.substring(e,a.length);return c};t.f.Cd=function(a){return a in t.f.Mc};t.f.ad=/^rtmp[set]?:\/\//i;t.f.Bd=function(a){return t.f.ad.test(a)};
t.$c=t.a.extend({i:function(a,c,d){t.a.call(this,a,c,d);if(!a.l.sources||0===a.l.sources.length){c=0;for(d=a.l.techOrder;c<d.length;c++){var e=t.aa(d[c]),g=window.videojs[e];if(g&&g.isSupported()){P(a,e);break}}}else a.src(a.l.sources)}});t.Player.prototype.textTracks=function(){return this.Ea=this.Ea||[]};
function ma(a,c,d,e,g){var h=a.Ea=a.Ea||[];g=g||{};g.kind=c;g.label=d;g.language=e;c=t.aa(c||"subtitles");var j=new window.videojs[c+"Track"](a,g);h.push(j);j.zb()&&a.I(function(){setTimeout(function(){Y(j.j(),j.id())},0)})}function Y(a,c,d){for(var e=a.Ea,g=0,h=e.length,j,n;g<h;g++)j=e[g],j.id()===c?(j.show(),n=j):d&&(j.J()==d&&0<j.mode())&&j.disable();(c=n?n.J():d?d:l)&&a.k(c+"trackchange")}
t.B=t.a.extend({i:function(a,c){t.a.call(this,a,c);this.U=c.id||"vjs_"+c.kind+"_"+c.language+"_"+t.w++;this.Ic=c.src;this.od=c["default"]||c.dflt;this.fe=c.title;this.Ta=c.srclang;this.Dd=c.label;this.ba=[];this.sb=[];this.ma=this.na=0;this.c.d("fullscreenchange",t.bind(this,this.dd))}});s=t.B.prototype;s.J=p("G");s.src=p("Ic");s.zb=p("od");s.title=p("fe");s.language=p("Ta");s.label=p("Dd");s.kd=p("ba");s.bd=p("sb");s.readyState=p("na");s.mode=p("ma");
s.dd=function(){this.b.style.fontSize=this.c.isFullscreen()?140*(screen.width/this.c.width())+"%":""};s.e=function(){return t.a.prototype.e.call(this,"div",{className:"vjs-"+this.G+" vjs-text-track"})};s.show=function(){na(this);this.ma=2;t.a.prototype.show.call(this)};s.W=function(){na(this);this.ma=1;t.a.prototype.W.call(this)};
s.disable=function(){2==this.ma&&this.W();this.c.o("timeupdate",t.bind(this,this.update,this.U));this.c.o("ended",t.bind(this,this.reset,this.U));this.reset();this.c.ka("textTrackDisplay").removeChild(this);this.ma=0};function na(a){0===a.na&&a.load();0===a.ma&&(a.c.d("timeupdate",t.bind(a,a.update,a.U)),a.c.d("ended",t.bind(a,a.reset,a.U)),("captions"===a.G||"subtitles"===a.G)&&a.c.ka("textTrackDisplay").R(a))}
s.load=function(){0===this.na&&(this.na=1,t.get(this.Ic,t.bind(this,this.Sd),t.bind(this,this.Id)))};s.Id=function(a){this.error=a;this.na=3;this.k("error")};s.Sd=function(a){var c,d;a=a.split("\n");for(var e="",g=1,h=a.length;g<h;g++)if(e=t.trim(a[g])){-1==e.indexOf("--\x3e")?(c=e,e=t.trim(a[++g])):c=this.ba.length;c={id:c,index:this.ba.length};d=e.split(/[\t ]+/);c.startTime=oa(d[0]);c.xa=oa(d[2]);for(d=[];a[++g]&&(e=t.trim(a[g]));)d.push(e);c.text=d.join("<br/>");this.ba.push(c)}this.na=2;this.k("loaded")};
function oa(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}
s.update=function(){if(0<this.ca.length){var a=this.c.options().trackTimeOffset||0,a=this.c.currentTime()+a;if(this.Pb===b||a<this.Pb||this.Wa<=a){var c=this.ca,d=this.c.duration(),e=0,g=l,h=[],j,n,q,w;a>=this.Wa||this.Wa===b?w=this.Db!==b?this.Db:0:(g=f,w=this.Jb!==b?this.Jb:c.length-1);for(;;){q=c[w];if(q.ya<=a)e=Math.max(e,q.ya),q.Oa&&(q.Oa=l);else if(a<q.startTime){if(d=Math.min(d,q.startTime),q.Oa&&(q.Oa=l),!g)break}else g?(h.splice(0,0,q),n===b&&(n=w),j=w):(h.push(q),j===b&&(j=w),n=w),d=Math.min(d,
q.ya),e=Math.max(e,q.startTime),q.Oa=f;if(g)if(0===w)break;else w--;else if(w===c.length-1)break;else w++}this.tb=h;this.Wa=d;this.Pb=e;this.Db=j;this.Jb=n;j=this.tb;n="";a=0;for(c=j.length;a<c;a++)n+='<span class="vjs-tt-cue">'+j[a].text+"</span>";this.b.innerHTML=n;this.m("cuechange")}}};s.reset=function(){this.Wa=0;this.Pb=this.c.duration();this.Jb=this.Db=0};t.Wb=t.C.extend();t.Wb.prototype.H="captions";t.dc=t.C.extend();t.dc.prototype.H="subtitles";t.Xb=t.C.extend();t.Xb.prototype.H="chapters";
t.fc=t.a.extend({i:function(a,c,d){t.a.call(this,a,c,d);if(a.l.tracks&&0<a.l.tracks.length){c=this.c;a=a.l.tracks;for(var e=0;e<a.length;e++)d=a[e],ma(c,d.kind,d.label,d.language,d)}}});t.fc.prototype.e=function(){return t.a.prototype.e.call(this,"div",{className:"vjs-text-track-display"})};t.aa=t.I.extend({i:function(a,c){var d=this.fa=c.track;c.label=d.label();c.selected=d.Ab();t.I.call(this,a,c);this.c.d(d.K()+"trackchange",t.bind(this,this.update))}});
t.aa.prototype.r=function(){t.I.prototype.r.call(this);Y(this.c,this.fa.U,this.fa.K())};t.aa.prototype.update=function(){this.selected(2==this.fa.mode())};t.mb=t.aa.extend({i:function(a,c){c.track={K:function(){return c.kind},j:a,label:function(){return c.kind+" off"},Ab:r(l),mode:r(l)};t.aa.call(this,a,c);this.selected(f)}});t.mb.prototype.r=function(){t.aa.prototype.r.call(this);Y(this.c,this.fa.U,this.fa.K())};
t.mb.prototype.update=function(){for(var a=this.c.textTracks(),c=0,d=a.length,e,g=f;c<d;c++)e=a[c],e.K()==this.fa.K()&&2==e.mode()&&(g=l);this.selected(g)};t.V=t.L.extend({i:function(a,c){t.L.call(this,a,c);1>=this.O.length&&this.W()}});t.V.prototype.wa=function(){var a=[],c;a.push(new t.mb(this.c,{kind:this.H}));for(var d=0;d<this.c.textTracks().length;d++)c=this.c.textTracks()[d],c.K()===this.H&&a.push(new t.aa(this.c,{track:c}));return a};
t.Ha=t.V.extend({i:function(a,c,d){t.V.call(this,a,c,d);this.b.setAttribute("aria-label","Captions Menu")}});t.Ha.prototype.H="captions";t.Ha.prototype.ua="Captions";t.Ha.prototype.className="vjs-captions-button";t.Na=t.V.extend({i:function(a,c,d){t.V.call(this,a,c,d);this.b.setAttribute("aria-label","Subtitles Menu")}});t.Na.prototype.H="subtitles";t.Na.prototype.ua="Subtitles";t.Na.prototype.className="vjs-subtitles-button";
t.Ia=t.V.extend({i:function(a,c,d){t.V.call(this,a,c,d);this.b.setAttribute("aria-label","Chapters Menu")}});s=t.Ia.prototype;s.H="chapters";s.ua="Chapters";s.className="vjs-chapters-button";s.wa=function(){for(var a=[],c,d=0;d<this.c.textTracks().length;d++)c=this.c.textTracks()[d],c.K()===this.H&&a.push(new t.aa(this.c,{track:c}));return a};
s.xa=function(){for(var a=this.c.textTracks(),c=0,d=a.length,e,g,h=this.O=[];c<d;c++)if(e=a[c],e.K()==this.H)if(0===e.readyState())e.load(),e.d("loaded",t.bind(this,this.xa));else{g=e;break}a=this.Ba;a===b&&(a=new t.ha(this.c),a.ja().appendChild(t.e("li",{className:"vjs-menu-title",innerHTML:t.ba(this.H),ee:-1})));if(g){e=g.ca;for(var j,c=0,d=e.length;c<d;c++)j=e[c],j=new t.gb(this.c,{track:g,cue:j}),h.push(j),a.R(j);this.R(a)}0<this.O.length&&this.show();return a};
t.gb=t.I.extend({i:function(a,c){var d=this.fa=c.track,e=this.cue=c.cue,g=a.currentTime();c.label=e.text;c.selected=e.startTime<=g&&g<e.ya;t.I.call(this,a,c);d.d("cuechange",t.bind(this,this.update))}});t.gb.prototype.r=function(){t.I.prototype.r.call(this);this.c.currentTime(this.cue.startTime);this.update(this.cue.startTime)};t.gb.prototype.update=function(){var a=this.cue,c=this.c.currentTime();this.selected(a.startTime<=c&&c<a.ya)};
t.h.A(t.Ja.prototype.l.children,{subtitlesButton:{},captionsButton:{},chaptersButton:{}});
s.update=function(){if(0<this.ba.length){var a=this.c.options().trackTimeOffset||0,a=this.c.currentTime()+a;if(this.Nb===b||a<this.Nb||this.Va<=a){var c=this.ba,d=this.c.duration(),e=0,g=l,h=[],j,n,q,w;a>=this.Va||this.Va===b?w=this.Cb!==b?this.Cb:0:(g=f,w=this.Ib!==b?this.Ib:c.length-1);for(;;){q=c[w];if(q.xa<=a)e=Math.max(e,q.xa),q.Na&&(q.Na=l);else if(a<q.startTime){if(d=Math.min(d,q.startTime),q.Na&&(q.Na=l),!g)break}else g?(h.splice(0,0,q),n===b&&(n=w),j=w):(h.push(q),j===b&&(j=w),n=w),d=Math.min(d,
q.xa),e=Math.max(e,q.startTime),q.Na=f;if(g)if(0===w)break;else w--;else if(w===c.length-1)break;else w++}this.sb=h;this.Va=d;this.Nb=e;this.Cb=j;this.Ib=n;j=this.sb;n="";a=0;for(c=j.length;a<c;a++)n+='<span class="vjs-tt-cue">'+j[a].text+"</span>";this.b.innerHTML=n;this.k("cuechange")}}};s.reset=function(){this.Va=0;this.Nb=this.c.duration();this.Ib=this.Cb=0};t.Ub=t.B.extend();t.Ub.prototype.G="captions";t.bc=t.B.extend();t.bc.prototype.G="subtitles";t.Vb=t.B.extend();t.Vb.prototype.G="chapters";
t.dc=t.a.extend({i:function(a,c,d){t.a.call(this,a,c,d);if(a.l.tracks&&0<a.l.tracks.length){c=this.c;a=a.l.tracks;for(var e=0;e<a.length;e++)d=a[e],ma(c,d.kind,d.label,d.language,d)}}});t.dc.prototype.e=function(){return t.a.prototype.e.call(this,"div",{className:"vjs-text-track-display"})};t.$=t.H.extend({i:function(a,c){var d=this.ea=c.track;c.label=d.label();c.selected=d.zb();t.H.call(this,a,c);this.c.d(d.J()+"trackchange",t.bind(this,this.update))}});
t.$.prototype.r=function(){t.H.prototype.r.call(this);Y(this.c,this.ea.U,this.ea.J())};t.$.prototype.update=function(){this.selected(2==this.ea.mode())};t.lb=t.$.extend({i:function(a,c){c.track={J:function(){return c.kind},j:a,label:function(){return c.kind+" off"},zb:r(l),mode:r(l)};t.$.call(this,a,c);this.selected(f)}});t.lb.prototype.r=function(){t.$.prototype.r.call(this);Y(this.c,this.ea.U,this.ea.J())};
t.lb.prototype.update=function(){for(var a=this.c.textTracks(),c=0,d=a.length,e,g=f;c<d;c++)e=a[c],e.J()==this.ea.J()&&2==e.mode()&&(g=l);this.selected(g)};t.V=t.K.extend({i:function(a,c){t.K.call(this,a,c);1>=this.N.length&&this.W()}});t.V.prototype.va=function(){var a=[],c;a.push(new t.lb(this.c,{kind:this.G}));for(var d=0;d<this.c.textTracks().length;d++)c=this.c.textTracks()[d],c.J()===this.G&&a.push(new t.$(this.c,{track:c}));return a};
t.Ga=t.V.extend({i:function(a,c,d){t.V.call(this,a,c,d);this.b.setAttribute("aria-label","Captions Menu")}});t.Ga.prototype.G="captions";t.Ga.prototype.ta="Captions";t.Ga.prototype.className="vjs-captions-button";t.Ma=t.V.extend({i:function(a,c,d){t.V.call(this,a,c,d);this.b.setAttribute("aria-label","Subtitles Menu")}});t.Ma.prototype.G="subtitles";t.Ma.prototype.ta="Subtitles";t.Ma.prototype.className="vjs-subtitles-button";
t.Ha=t.V.extend({i:function(a,c,d){t.V.call(this,a,c,d);this.b.setAttribute("aria-label","Chapters Menu")}});s=t.Ha.prototype;s.G="chapters";s.ta="Chapters";s.className="vjs-chapters-button";s.va=function(){for(var a=[],c,d=0;d<this.c.textTracks().length;d++)c=this.c.textTracks()[d],c.J()===this.G&&a.push(new t.$(this.c,{track:c}));return a};
s.wa=function(){for(var a=this.c.textTracks(),c=0,d=a.length,e,g,h=this.N=[];c<d;c++)if(e=a[c],e.J()==this.G)if(0===e.readyState())e.load(),e.d("loaded",t.bind(this,this.wa));else{g=e;break}a=this.Aa;a===b&&(a=new t.ha(this.c),a.ja().appendChild(t.e("li",{className:"vjs-menu-title",innerHTML:t.aa(this.G),de:-1})));if(g){e=g.ba;for(var j,c=0,d=e.length;c<d;c++)j=e[c],j=new t.fb(this.c,{track:g,cue:j}),h.push(j),a.R(j);this.R(a)}0<this.N.length&&this.show();return a};
t.fb=t.H.extend({i:function(a,c){var d=this.ea=c.track,e=this.cue=c.cue,g=a.currentTime();c.label=e.text;c.selected=e.startTime<=g&&g<e.xa;t.H.call(this,a,c);d.d("cuechange",t.bind(this,this.update))}});t.fb.prototype.r=function(){t.H.prototype.r.call(this);this.c.currentTime(this.cue.startTime);this.update(this.cue.startTime)};t.fb.prototype.update=function(){var a=this.cue,c=this.c.currentTime();this.selected(a.startTime<=c&&c<a.xa)};
t.h.z(t.Ia.prototype.l.children,{subtitlesButton:{},captionsButton:{},chaptersButton:{}});
if("undefined"!==typeof window.JSON&&"function"===window.JSON.parse)t.JSON=window.JSON;else{t.JSON={};var Z=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;t.JSON.parse=function(a,c){function d(a,e){var j,n,q=a[e];if(q&&"object"===typeof q)for(j in q)Object.prototype.hasOwnProperty.call(q,j)&&(n=d(q,j),n!==b?q[j]=n:delete q[j]);return c.call(a,e,q)}var e;a=String(a);Z.lastIndex=0;Z.test(a)&&(a=a.replace(Z,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)}));
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");}}
t.jc=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!==k&&(a=t.JSON.parse(a||"{}"),videojs(c,a)));else{t.ub();break}else t.Tc||t.ub()};t.ub=function(){setTimeout(t.jc,1)};"complete"===document.readyState?t.Tc=f:t.X(window,"load",function(){t.Tc=f});t.ub();t.Vd=function(a,c){t.Player.prototype[a]=c};var pa=this;function $(a,c){var d=a.split("."),e=pa;!(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",t);$("_V_",t);$("videojs.options",t.options);$("videojs.players",t.Ca);$("videojs.TOUCH_ENABLED",t.ec);$("videojs.cache",t.va);$("videojs.Component",t.a);t.a.prototype.player=t.a.prototype.j;t.a.prototype.options=t.a.prototype.options;t.a.prototype.init=t.a.prototype.i;t.a.prototype.dispose=t.a.prototype.dispose;t.a.prototype.createEl=t.a.prototype.e;t.a.prototype.contentEl=t.a.prototype.ja;t.a.prototype.el=t.a.prototype.w;t.a.prototype.addChild=t.a.prototype.R;
t.a.prototype.getChild=t.a.prototype.ka;t.a.prototype.getChildById=t.a.prototype.yd;t.a.prototype.children=t.a.prototype.children;t.a.prototype.initChildren=t.a.prototype.vc;t.a.prototype.removeChild=t.a.prototype.removeChild;t.a.prototype.on=t.a.prototype.d;t.a.prototype.off=t.a.prototype.p;t.a.prototype.one=t.a.prototype.X;t.a.prototype.trigger=t.a.prototype.m;t.a.prototype.triggerReady=t.a.prototype.Ga;t.a.prototype.show=t.a.prototype.show;t.a.prototype.hide=t.a.prototype.W;
t.a.prototype.width=t.a.prototype.width;t.a.prototype.height=t.a.prototype.height;t.a.prototype.dimensions=t.a.prototype.rd;t.a.prototype.ready=t.a.prototype.J;t.a.prototype.addClass=t.a.prototype.n;t.a.prototype.removeClass=t.a.prototype.q;t.a.prototype.buildCSSClass=t.a.prototype.T;t.a.prototype.localize=t.a.prototype.s;t.Player.prototype.ended=t.Player.prototype.ended;t.Player.prototype.enterFullWindow=t.Player.prototype.pc;t.Player.prototype.exitFullWindow=t.Player.prototype.Cb;
t.Player.prototype.preload=t.Player.prototype.Da;t.Player.prototype.remainingTime=t.Player.prototype.remainingTime;t.Player.prototype.supportsFullScreen=t.Player.prototype.Ea;t.Player.prototype.currentType=t.Player.prototype.nd;t.Player.prototype.language=t.Player.prototype.language;t.Player.prototype.languages=t.Player.prototype.Va;$("videojs.MediaLoader",t.cd);$("videojs.TextTrackDisplay",t.fc);$("videojs.ControlBar",t.Ja);$("videojs.Button",t.t);$("videojs.PlayToggle",t.ac);
$("videojs.FullscreenToggle",t.Ka);$("videojs.BigPlayButton",t.fb);$("videojs.LoadingSpinner",t.Zb);$("videojs.CurrentTimeDisplay",t.hb);$("videojs.DurationDisplay",t.ib);$("videojs.TimeDivider",t.gc);$("videojs.RemainingTimeDisplay",t.pb);$("videojs.LiveDisplay",t.Yb);$("videojs.ErrorDisplay",t.jb);$("videojs.Slider",t.Q);$("videojs.ProgressControl",t.ob);$("videojs.SeekBar",t.cc);$("videojs.LoadProgressBar",t.lb);$("videojs.PlayProgressBar",t.$b);$("videojs.SeekHandle",t.Ma);
$("videojs.VolumeControl",t.rb);$("videojs.VolumeBar",t.qb);$("videojs.VolumeLevel",t.hc);$("videojs.VolumeMenuButton",t.sa);$("videojs.VolumeHandle",t.sb);$("videojs.MuteToggle",t.ia);$("videojs.PosterImage",t.La);$("videojs.Menu",t.ha);$("videojs.MenuItem",t.I);$("videojs.MenuButton",t.L);$("videojs.PlaybackRateMenuButton",t.bc);t.L.prototype.createItems=t.L.prototype.wa;t.V.prototype.createItems=t.V.prototype.wa;t.Ia.prototype.createItems=t.Ia.prototype.wa;$("videojs.SubtitlesButton",t.Na);
$("videojs.CaptionsButton",t.Ha);$("videojs.ChaptersButton",t.Ia);$("videojs.MediaTechController",t.u);t.u.prototype.features=t.u.prototype.o;t.u.prototype.o.volumeControl=t.u.prototype.o.Sc;t.u.prototype.o.fullscreenResize=t.u.prototype.o.ne;t.u.prototype.o.progressEvents=t.u.prototype.o.qe;t.u.prototype.o.timeupdateEvents=t.u.prototype.o.te;t.u.prototype.setPoster=t.u.prototype.Jc;$("videojs.Html5",t.g);t.g.Events=t.g.kb;t.g.isSupported=t.g.isSupported;t.g.canPlaySource=t.g.vb;
t.g.patchCanPlayType=t.g.Bc;t.g.unpatchCanPlayType=t.g.ie;t.g.prototype.setCurrentTime=t.g.prototype.Qb;t.g.prototype.setVolume=t.g.prototype.ce;t.g.prototype.setMuted=t.g.prototype.$d;t.g.prototype.setPreload=t.g.prototype.be;t.g.prototype.setAutoplay=t.g.prototype.Xd;t.g.prototype.setLoop=t.g.prototype.Zd;t.g.prototype.enterFullScreen=t.g.prototype.oc;t.g.prototype.exitFullScreen=t.g.prototype.vd;t.g.prototype.playbackRate=t.g.prototype.playbackRate;t.g.prototype.setPlaybackRate=t.g.prototype.ae;
$("videojs.Flash",t.f);t.f.isSupported=t.f.isSupported;t.f.canPlaySource=t.f.vb;t.f.onReady=t.f.onReady;$("videojs.TextTrack",t.C);t.C.prototype.label=t.C.prototype.label;t.C.prototype.kind=t.C.prototype.K;t.C.prototype.mode=t.C.prototype.mode;t.C.prototype.cues=t.C.prototype.md;t.C.prototype.activeCues=t.C.prototype.ed;$("videojs.CaptionsTrack",t.Wb);$("videojs.SubtitlesTrack",t.dc);$("videojs.ChaptersTrack",t.Xb);$("videojs.autoSetup",t.jc);$("videojs.plugin",t.Vd);$("videojs.createTimeRange",t.zb);
$("videojs.util",t.qa);t.qa.mergeOptions=t.qa.Lb;})();
t.hc=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!==k&&(a=t.JSON.parse(a||"{}"),videojs(c,a)));else{t.tb();break}else t.Qc||t.tb()};t.tb=function(){setTimeout(t.hc,1)};"complete"===document.readyState?t.Qc=f:t.O(window,"load",function(){t.Qc=f});t.tb();t.Ud=function(a,c){t.Player.prototype[a]=c};var pa=this;function $(a,c){var d=a.split("."),e=pa;!(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",t);$("_V_",t);$("videojs.options",t.options);$("videojs.players",t.Ba);$("videojs.TOUCH_ENABLED",t.cc);$("videojs.cache",t.ua);$("videojs.Component",t.a);t.a.prototype.player=t.a.prototype.j;t.a.prototype.options=t.a.prototype.options;t.a.prototype.init=t.a.prototype.i;t.a.prototype.dispose=t.a.prototype.dispose;t.a.prototype.createEl=t.a.prototype.e;t.a.prototype.contentEl=t.a.prototype.ja;t.a.prototype.el=t.a.prototype.v;t.a.prototype.addChild=t.a.prototype.R;
t.a.prototype.getChild=t.a.prototype.ka;t.a.prototype.getChildById=t.a.prototype.wd;t.a.prototype.children=t.a.prototype.children;t.a.prototype.initChildren=t.a.prototype.tc;t.a.prototype.removeChild=t.a.prototype.removeChild;t.a.prototype.on=t.a.prototype.d;t.a.prototype.off=t.a.prototype.o;t.a.prototype.one=t.a.prototype.O;t.a.prototype.trigger=t.a.prototype.k;t.a.prototype.triggerReady=t.a.prototype.Fa;t.a.prototype.show=t.a.prototype.show;t.a.prototype.hide=t.a.prototype.W;
t.a.prototype.width=t.a.prototype.width;t.a.prototype.height=t.a.prototype.height;t.a.prototype.dimensions=t.a.prototype.pd;t.a.prototype.ready=t.a.prototype.I;t.a.prototype.addClass=t.a.prototype.n;t.a.prototype.removeClass=t.a.prototype.p;t.a.prototype.buildCSSClass=t.a.prototype.T;t.a.prototype.localize=t.a.prototype.s;t.Player.prototype.ended=t.Player.prototype.ended;t.Player.prototype.enterFullWindow=t.Player.prototype.nc;t.Player.prototype.exitFullWindow=t.Player.prototype.Bb;
t.Player.prototype.preload=t.Player.prototype.Ca;t.Player.prototype.remainingTime=t.Player.prototype.remainingTime;t.Player.prototype.supportsFullScreen=t.Player.prototype.Da;t.Player.prototype.currentType=t.Player.prototype.ld;t.Player.prototype.requestFullScreen=t.Player.prototype.requestFullScreen;t.Player.prototype.requestFullscreen=t.Player.prototype.requestFullscreen;t.Player.prototype.cancelFullScreen=t.Player.prototype.cancelFullScreen;t.Player.prototype.exitFullscreen=t.Player.prototype.exitFullscreen;
t.Player.prototype.isFullScreen=t.Player.prototype.isFullScreen;t.Player.prototype.isFullscreen=t.Player.prototype.isFullscreen;$("videojs.MediaLoader",t.$c);$("videojs.TextTrackDisplay",t.dc);$("videojs.ControlBar",t.Ia);$("videojs.Button",t.t);$("videojs.PlayToggle",t.Zb);$("videojs.FullscreenToggle",t.Ja);$("videojs.BigPlayButton",t.eb);$("videojs.LoadingSpinner",t.Xb);$("videojs.CurrentTimeDisplay",t.gb);$("videojs.DurationDisplay",t.hb);$("videojs.TimeDivider",t.ec);
$("videojs.RemainingTimeDisplay",t.ob);$("videojs.LiveDisplay",t.Wb);$("videojs.ErrorDisplay",t.ib);$("videojs.Slider",t.Q);$("videojs.ProgressControl",t.nb);$("videojs.SeekBar",t.ac);$("videojs.LoadProgressBar",t.kb);$("videojs.PlayProgressBar",t.Yb);$("videojs.SeekHandle",t.La);$("videojs.VolumeControl",t.qb);$("videojs.VolumeBar",t.pb);$("videojs.VolumeLevel",t.fc);$("videojs.VolumeMenuButton",t.ra);$("videojs.VolumeHandle",t.rb);$("videojs.MuteToggle",t.ia);$("videojs.PosterImage",t.Ka);
$("videojs.Menu",t.ha);$("videojs.MenuItem",t.H);$("videojs.MenuButton",t.K);$("videojs.PlaybackRateMenuButton",t.$b);t.K.prototype.createItems=t.K.prototype.va;t.V.prototype.createItems=t.V.prototype.va;t.Ha.prototype.createItems=t.Ha.prototype.va;$("videojs.SubtitlesButton",t.Ma);$("videojs.CaptionsButton",t.Ga);$("videojs.ChaptersButton",t.Ha);$("videojs.MediaTechController",t.q);t.q.prototype.featuresVolumeControl=t.q.prototype.qe;t.q.prototype.featuresFullscreenResize=t.q.prototype.me;
t.q.prototype.featuresPlaybackRate=t.q.prototype.ne;t.q.prototype.featuresProgressEvents=t.q.prototype.oe;t.q.prototype.featuresTimeupdateEvents=t.q.prototype.pe;t.q.prototype.setPoster=t.q.prototype.Hc;$("videojs.Html5",t.g);t.g.Events=t.g.jb;t.g.isSupported=t.g.isSupported;t.g.canPlaySource=t.g.ub;t.g.patchCanPlayType=t.g.zc;t.g.unpatchCanPlayType=t.g.he;t.g.prototype.setCurrentTime=t.g.prototype.Ob;t.g.prototype.setVolume=t.g.prototype.be;t.g.prototype.setMuted=t.g.prototype.Zd;
t.g.prototype.setPreload=t.g.prototype.ae;t.g.prototype.setAutoplay=t.g.prototype.Wd;t.g.prototype.setLoop=t.g.prototype.Yd;t.g.prototype.enterFullScreen=t.g.prototype.mc;t.g.prototype.exitFullScreen=t.g.prototype.td;t.g.prototype.playbackRate=t.g.prototype.playbackRate;t.g.prototype.setPlaybackRate=t.g.prototype.$d;$("videojs.Flash",t.f);t.f.isSupported=t.f.isSupported;t.f.canPlaySource=t.f.ub;t.f.onReady=t.f.onReady;$("videojs.TextTrack",t.B);t.B.prototype.label=t.B.prototype.label;
t.B.prototype.kind=t.B.prototype.J;t.B.prototype.mode=t.B.prototype.mode;t.B.prototype.cues=t.B.prototype.kd;t.B.prototype.activeCues=t.B.prototype.bd;$("videojs.CaptionsTrack",t.Ub);$("videojs.SubtitlesTrack",t.bc);$("videojs.ChaptersTrack",t.Vb);$("videojs.autoSetup",t.hc);$("videojs.plugin",t.Ud);$("videojs.createTimeRange",t.yb);$("videojs.util",t.ga);t.ga.mergeOptions=t.ga.Ua;t.addLanguage=t.cd;})();
+2 -2
Ver Arquivo
@@ -201,7 +201,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -546,7 +546,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -200,7 +200,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -545,7 +545,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -205,7 +205,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -549,7 +549,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -271,7 +271,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -688,7 +688,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -205,7 +205,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -549,7 +549,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -271,7 +271,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -688,7 +688,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -197,7 +197,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -557,7 +557,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -220,7 +220,7 @@ _defined in_: [src/js/component.js#L214](https://github.com/videojs/video.js/blo
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_defined in_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_defined in_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -565,7 +565,7 @@ _defined in_: [src/js/component.js#L756](https://github.com/videojs/video.js/blo
### resize `EVENT`
> Fired when the width and/or height of the component changes
_defined in_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_defined in_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -200,7 +200,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -545,7 +545,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -200,7 +200,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -543,7 +543,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -200,7 +200,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -543,7 +543,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -205,7 +205,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -609,7 +609,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -200,7 +200,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -543,7 +543,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -205,7 +205,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -609,7 +609,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -200,7 +200,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -543,7 +543,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -200,7 +200,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -543,7 +543,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -201,7 +201,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -545,7 +545,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -205,7 +205,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -609,7 +609,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -209,7 +209,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -554,7 +554,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -205,7 +205,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -548,7 +548,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -199,7 +199,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -559,7 +559,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -200,7 +200,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -543,7 +543,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -199,7 +199,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -559,7 +559,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -200,7 +200,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -543,7 +543,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -200,7 +200,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -543,7 +543,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+40 -40
Ver Arquivo
@@ -171,7 +171,7 @@ _inherited from_: [src/js/component.js#L672](https://github.com/videojs/video.js
##### RETURNS:
* `Object` A mock TimeRange object (following HTML spec)
_defined in_: [src/js/player.js#L743](https://github.com/videojs/video.js/blob/master/src/js/player.js#L743)
_defined in_: [src/js/player.js#L744](https://github.com/videojs/video.js/blob/master/src/js/player.js#L744)
---
@@ -183,7 +183,7 @@ _defined in_: [src/js/player.js#L743](https://github.com/videojs/video.js/blob/m
##### RETURNS:
* `Number` The end of the last buffered time range
_defined in_: [src/js/player.js#L794](https://github.com/videojs/video.js/blob/master/src/js/player.js#L794)
_defined in_: [src/js/player.js#L795](https://github.com/videojs/video.js/blob/master/src/js/player.js#L795)
---
@@ -198,7 +198,7 @@ _defined in_: [src/js/player.js#L794](https://github.com/videojs/video.js/blob/m
##### RETURNS:
* `Number` A decimal between 0 and 1 representing the percent
_defined in_: [src/js/player.js#L763](https://github.com/videojs/video.js/blob/master/src/js/player.js#L763)
_defined in_: [src/js/player.js#L764](https://github.com/videojs/video.js/blob/master/src/js/player.js#L764)
---
@@ -216,7 +216,7 @@ _inherited from_: [src/js/component.js#L515](https://github.com/videojs/video.js
> Old naming for exitFullscreen
**Deprecated** true
_defined in_: [src/js/player.js#L999](https://github.com/videojs/video.js/blob/master/src/js/player.js#L999)
_defined in_: [src/js/player.js#L1000](https://github.com/videojs/video.js/blob/master/src/js/player.js#L1000)
---
@@ -252,7 +252,7 @@ _inherited from_: [src/js/component.js#L233](https://github.com/videojs/video.js
##### RETURNS:
* `Boolean` Controls are showing
_defined in_: [src/js/player.js#L1274](https://github.com/videojs/video.js/blob/master/src/js/player.js#L1274)
_defined in_: [src/js/player.js#L1284](https://github.com/videojs/video.js/blob/master/src/js/player.js#L1284)
---
@@ -286,7 +286,7 @@ _inherited from_: [src/js/component.js#L194](https://github.com/videojs/video.js
* `Number` The time in seconds, when not setting
* `vjs.Player` self, when the current time is set
_defined in_: [src/js/player.js#L670](https://github.com/videojs/video.js/blob/master/src/js/player.js#L670)
_defined in_: [src/js/player.js#L671](https://github.com/videojs/video.js/blob/master/src/js/player.js#L671)
---
@@ -298,7 +298,7 @@ _defined in_: [src/js/player.js#L670](https://github.com/videojs/video.js/blob/m
##### RETURNS:
* `String` The source MIME type
_defined in_: [src/js/player.js#L1195](https://github.com/videojs/video.js/blob/master/src/js/player.js#L1195)
_defined in_: [src/js/player.js#L1205](https://github.com/videojs/video.js/blob/master/src/js/player.js#L1205)
---
@@ -343,7 +343,7 @@ _defined in_: [src/js/player.js#L156](https://github.com/videojs/video.js/blob/m
##### RETURNS:
* `Number` The duration of the video in seconds
_defined in_: [src/js/player.js#L698](https://github.com/videojs/video.js/blob/master/src/js/player.js#L698)
_defined in_: [src/js/player.js#L699](https://github.com/videojs/video.js/blob/master/src/js/player.js#L699)
---
@@ -382,7 +382,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -396,7 +396,7 @@ _inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js
* `vjs.MediaError|null` when getting
* `vjs.Player` when setting
_defined in_: [src/js/player.js#L1359](https://github.com/videojs/video.js/blob/master/src/js/player.js#L1359)
_defined in_: [src/js/player.js#L1369](https://github.com/videojs/video.js/blob/master/src/js/player.js#L1369)
---
@@ -408,7 +408,7 @@ _defined in_: [src/js/player.js#L1359](https://github.com/videojs/video.js/blob/
##### RETURNS:
* `vjs.Player` self
_defined in_: [src/js/player.js#L978](https://github.com/videojs/video.js/blob/master/src/js/player.js#L978)
_defined in_: [src/js/player.js#L979](https://github.com/videojs/video.js/blob/master/src/js/player.js#L979)
---
@@ -536,7 +536,7 @@ _inherited from_: [src/js/component.js#L475](https://github.com/videojs/video.js
##### PARAMETERS:
* __isFS__
_defined in_: [src/js/player.js#L901](https://github.com/videojs/video.js/blob/master/src/js/player.js#L901)
_defined in_: [src/js/player.js#L902](https://github.com/videojs/video.js/blob/master/src/js/player.js#L902)
---
@@ -560,7 +560,7 @@ _defined in_: [src/js/player.js#L901](https://github.com/videojs/video.js/blob/m
* `Boolean` true if fullscreen, false if not
* `vjs.Player` self, when setting
_defined in_: [src/js/player.js#L889](https://github.com/videojs/video.js/blob/master/src/js/player.js#L889)
_defined in_: [src/js/player.js#L890](https://github.com/videojs/video.js/blob/master/src/js/player.js#L890)
---
@@ -594,7 +594,7 @@ _defined in_: [src/js/player.js#L116](https://github.com/videojs/video.js/blob/m
* `Boolean` True if mute is on, false if not, when getting
* `vjs.Player` self, when setting mute
_defined in_: [src/js/player.js#L851](https://github.com/videojs/video.js/blob/master/src/js/player.js#L851)
_defined in_: [src/js/player.js#L852](https://github.com/videojs/video.js/blob/master/src/js/player.js#L852)
---
@@ -653,7 +653,7 @@ _inherited from_: [src/js/component.js#L540](https://github.com/videojs/video.js
> A handler for events that signal that waiting has eneded
> which is not consistent between browsers. See #1351
_defined in_: [src/js/player.js#L439](https://github.com/videojs/video.js/blob/master/src/js/player.js#L439)
_defined in_: [src/js/player.js#L438](https://github.com/videojs/video.js/blob/master/src/js/player.js#L438)
---
@@ -727,7 +727,7 @@ _inherited from_: [src/js/component.js#L173](https://github.com/videojs/video.js
##### RETURNS:
* `vjs.Player` self
_defined in_: [src/js/player.js#L639](https://github.com/videojs/video.js/blob/master/src/js/player.js#L639)
_defined in_: [src/js/player.js#L640](https://github.com/videojs/video.js/blob/master/src/js/player.js#L640)
---
@@ -740,7 +740,7 @@ _defined in_: [src/js/player.js#L639](https://github.com/videojs/video.js/blob/m
##### RETURNS:
* `Boolean` false if the media is currently playing, or true otherwise
_defined in_: [src/js/player.js#L652](https://github.com/videojs/video.js/blob/master/src/js/player.js#L652)
_defined in_: [src/js/player.js#L653](https://github.com/videojs/video.js/blob/master/src/js/player.js#L653)
---
@@ -752,7 +752,7 @@ _defined in_: [src/js/player.js#L652](https://github.com/videojs/video.js/blob/m
##### RETURNS:
* `vjs.Player` self
_defined in_: [src/js/player.js#L627](https://github.com/videojs/video.js/blob/master/src/js/player.js#L627)
_defined in_: [src/js/player.js#L628](https://github.com/videojs/video.js/blob/master/src/js/player.js#L628)
---
@@ -784,7 +784,7 @@ _inherited from_: [src/js/component.js#L120](https://github.com/videojs/video.js
* `String` poster URL when getting
* `vjs.Player` self when setting
_defined in_: [src/js/player.js#L1247](https://github.com/videojs/video.js/blob/master/src/js/player.js#L1247)
_defined in_: [src/js/player.js#L1257](https://github.com/videojs/video.js/blob/master/src/js/player.js#L1257)
---
@@ -832,7 +832,7 @@ _inherited from_: [src/js/component.js#L683](https://github.com/videojs/video.js
> Old naming for requestFullscreen
**Deprecated** true
_defined in_: [src/js/player.js#L965](https://github.com/videojs/video.js/blob/master/src/js/player.js#L965)
_defined in_: [src/js/player.js#L966](https://github.com/videojs/video.js/blob/master/src/js/player.js#L966)
---
@@ -851,7 +851,7 @@ _defined in_: [src/js/player.js#L965](https://github.com/videojs/video.js/blob/m
##### RETURNS:
* `vjs.Player` self
_defined in_: [src/js/player.js#L920](https://github.com/videojs/video.js/blob/master/src/js/player.js#L920)
_defined in_: [src/js/player.js#L921](https://github.com/videojs/video.js/blob/master/src/js/player.js#L921)
---
@@ -900,7 +900,7 @@ _inherited from_: [src/js/component.js#L693](https://github.com/videojs/video.js
* `String` The current video source when getting
* `String` The player when setting
_defined in_: [src/js/player.js#L1109](https://github.com/videojs/video.js/blob/master/src/js/player.js#L1109)
_defined in_: [src/js/player.js#L1110](https://github.com/videojs/video.js/blob/master/src/js/player.js#L1110)
---
@@ -948,7 +948,7 @@ _inherited from_: [src/js/component.js#L644](https://github.com/videojs/video.js
* `Number` The current volume, when getting
* `vjs.Player` self, when setting
_defined in_: [src/js/player.js#L821](https://github.com/videojs/video.js/blob/master/src/js/player.js#L821)
_defined in_: [src/js/player.js#L822](https://github.com/videojs/video.js/blob/master/src/js/player.js#L822)
---
@@ -977,14 +977,14 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### durationchange `EVENT`
> Fired when the duration of the media resource is first known or changed
_defined in_: [src/js/player.js#L522](https://github.com/videojs/video.js/blob/master/src/js/player.js#L522)
_defined in_: [src/js/player.js#L523](https://github.com/videojs/video.js/blob/master/src/js/player.js#L523)
---
### ended `EVENT`
> Fired when the end of the media resource is reached (currentTime == duration)
_defined in_: [src/js/player.js#L511](https://github.com/videojs/video.js/blob/master/src/js/player.js#L511)
_defined in_: [src/js/player.js#L510](https://github.com/videojs/video.js/blob/master/src/js/player.js#L510)
---
@@ -995,84 +995,84 @@ _defined in_: [src/js/player.js#L511](https://github.com/videojs/video.js/blob/m
> implementation yet, so use sparingly. If you don't have a reason to
> prevent playback, use `myPlayer.one('play');` instead.
_defined in_: [src/js/player.js#L468](https://github.com/videojs/video.js/blob/master/src/js/player.js#L468)
_defined in_: [src/js/player.js#L467](https://github.com/videojs/video.js/blob/master/src/js/player.js#L467)
---
### fullscreenchange `EVENT`
> Fired when the player switches in or out of fullscreen mode
_defined in_: [src/js/player.js#L551](https://github.com/videojs/video.js/blob/master/src/js/player.js#L551)
_defined in_: [src/js/player.js#L552](https://github.com/videojs/video.js/blob/master/src/js/player.js#L552)
---
### loadedalldata `EVENT`
> Fired when the player has finished downloading the source data
_defined in_: [src/js/player.js#L416](https://github.com/videojs/video.js/blob/master/src/js/player.js#L416)
_defined in_: [src/js/player.js#L415](https://github.com/videojs/video.js/blob/master/src/js/player.js#L415)
---
### loadeddata `EVENT`
> Fired when the player has downloaded data at the current playback position
_defined in_: [src/js/player.js#L410](https://github.com/videojs/video.js/blob/master/src/js/player.js#L410)
_defined in_: [src/js/player.js#L409](https://github.com/videojs/video.js/blob/master/src/js/player.js#L409)
---
### loadedmetadata `EVENT`
> Fired when the player has initial duration and dimension information
_defined in_: [src/js/player.js#L404](https://github.com/videojs/video.js/blob/master/src/js/player.js#L404)
_defined in_: [src/js/player.js#L403](https://github.com/videojs/video.js/blob/master/src/js/player.js#L403)
---
### loadstart `EVENT`
> Fired when the user agent begins looking for media data
_defined in_: [src/js/player.js#L360](https://github.com/videojs/video.js/blob/master/src/js/player.js#L360)
_defined in_: [src/js/player.js#L359](https://github.com/videojs/video.js/blob/master/src/js/player.js#L359)
---
### pause `EVENT`
> Fired whenever the media has been paused
_defined in_: [src/js/player.js#L482](https://github.com/videojs/video.js/blob/master/src/js/player.js#L482)
_defined in_: [src/js/player.js#L481](https://github.com/videojs/video.js/blob/master/src/js/player.js#L481)
---
### play `EVENT`
> Fired whenever the media begins or resumes playback
_defined in_: [src/js/player.js#L422](https://github.com/videojs/video.js/blob/master/src/js/player.js#L422)
_defined in_: [src/js/player.js#L421](https://github.com/videojs/video.js/blob/master/src/js/player.js#L421)
---
### progress `EVENT`
> Fired while the user agent is downloading media data
_defined in_: [src/js/player.js#L500](https://github.com/videojs/video.js/blob/master/src/js/player.js#L500)
_defined in_: [src/js/player.js#L499](https://github.com/videojs/video.js/blob/master/src/js/player.js#L499)
---
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
### seeked `EVENT`
> Fired when the player has finished jumping to a new time
_defined in_: [src/js/player.js#L455](https://github.com/videojs/video.js/blob/master/src/js/player.js#L455)
_defined in_: [src/js/player.js#L454](https://github.com/videojs/video.js/blob/master/src/js/player.js#L454)
---
### seeking `EVENT`
> Fired whenever the player is jumping to a new time
_defined in_: [src/js/player.js#L447](https://github.com/videojs/video.js/blob/master/src/js/player.js#L447)
_defined in_: [src/js/player.js#L446](https://github.com/videojs/video.js/blob/master/src/js/player.js#L446)
---
@@ -1082,21 +1082,21 @@ _defined in_: [src/js/player.js#L447](https://github.com/videojs/video.js/blob/m
> During playback this is fired every 15-250 milliseconds, depnding on the
> playback technology in use.
_defined in_: [src/js/player.js#L494](https://github.com/videojs/video.js/blob/master/src/js/player.js#L494)
_defined in_: [src/js/player.js#L493](https://github.com/videojs/video.js/blob/master/src/js/player.js#L493)
---
### volumechange `EVENT`
> Fired when the volume changes
_defined in_: [src/js/player.js#L545](https://github.com/videojs/video.js/blob/master/src/js/player.js#L545)
_defined in_: [src/js/player.js#L546](https://github.com/videojs/video.js/blob/master/src/js/player.js#L546)
---
### waiting `EVENT`
> Fired whenever the media begins wating
_defined in_: [src/js/player.js#L431](https://github.com/videojs/video.js/blob/master/src/js/player.js#L431)
_defined in_: [src/js/player.js#L430](https://github.com/videojs/video.js/blob/master/src/js/player.js#L430)
---
+2 -2
Ver Arquivo
@@ -200,7 +200,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -543,7 +543,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -201,7 +201,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -544,7 +544,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -200,7 +200,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -543,7 +543,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -201,7 +201,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -555,7 +555,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -198,7 +198,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -543,7 +543,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -201,7 +201,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -555,7 +555,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -198,7 +198,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -543,7 +543,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -205,7 +205,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -549,7 +549,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -271,7 +271,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -688,7 +688,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -273,7 +273,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -690,7 +690,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -205,7 +205,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -548,7 +548,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -200,7 +200,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -544,7 +544,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -199,7 +199,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -559,7 +559,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -202,7 +202,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -545,7 +545,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -201,7 +201,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -555,7 +555,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -200,7 +200,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -543,7 +543,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -197,7 +197,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -542,7 +542,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -200,7 +200,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -543,7 +543,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+2 -2
Ver Arquivo
@@ -205,7 +205,7 @@ _inherited from_: [src/js/component.js#L214](https://github.com/videojs/video.js
> whenever touch events happen, and this can be turned off by components that
> want touch events to act differently.
_inherited from_: [src/js/component.js#L963](https://github.com/videojs/video.js/blob/master/src/js/component.js#L963)
_inherited from_: [src/js/component.js#L966](https://github.com/videojs/video.js/blob/master/src/js/component.js#L966)
---
@@ -548,7 +548,7 @@ _inherited from_: [src/js/component.js#L756](https://github.com/videojs/video.js
### resize `EVENT`
> Fired when the width and/or height of the component changes
_inherited from_: [src/js/component.js#L863](https://github.com/videojs/video.js/blob/master/src/js/component.js#L863)
_inherited from_: [src/js/component.js#L866](https://github.com/videojs/video.js/blob/master/src/js/component.js#L866)
---
+24 -6
Ver Arquivo
@@ -21,6 +21,11 @@ The `vjs` function can be used to initialize or retrieve a player.
- [options](#options)
- [players](#players)
- [METHODS](#methods)
- [addLanguage](#addlanguage-code-data-)
- [parseUrl](#parseurl-url-)
- [plugin](#plugin-name-init-)
- CLASSES
- [BigPlayButton](vjs.BigPlayButton.md)
- [Button](vjs.Button.md)
@@ -74,10 +79,6 @@ The `vjs` function can be used to initialize or retrieve a player.
- [VolumeLevel](vjs.VolumeLevel.md)
- [VolumeMenuButton](vjs.VolumeMenuButton.md)
- [METHODS](#methods)
- [parseUrl](#parseurl-url-)
- [plugin](#plugin-name-init-)
- NAMESPACES
- [log](vjs.log.md)
- [util](vjs.util.md)
@@ -99,12 +100,29 @@ _defined in_: [src/js/core.js#L76](https://github.com/videojs/video.js/blob/mast
### players
> Global player list
_defined in_: [src/js/core.js#L125](https://github.com/videojs/video.js/blob/master/src/js/core.js#L125)
_defined in_: [src/js/core.js#L147](https://github.com/videojs/video.js/blob/master/src/js/core.js#L147)
---
## METHODS
### addLanguage( code, data )
> Utility function for adding languages to the default options. Useful for
> amending multiple language support at runtime.
>
> Example: vjs.addLanguage('es', {'Hello':'Hola'});
##### PARAMETERS:
* __code__ `String` The language code or dictionary property
* __data__ `Object` The data values to be translated
##### RETURNS:
* `Object` The resulting global languages dictionary object
_defined in_: [src/js/core.js#L134](https://github.com/videojs/video.js/blob/master/src/js/core.js#L134)
---
### parseUrl( url )
> Resolve and parse the elements of a URL
@@ -114,7 +132,7 @@ _defined in_: [src/js/core.js#L125](https://github.com/videojs/video.js/blob/mas
##### RETURNS:
* `Object` An object of url details
_defined in_: [src/js/lib.js#L723](https://github.com/videojs/video.js/blob/master/src/js/lib.js#L723)
_defined in_: [src/js/lib.js#L734](https://github.com/videojs/video.js/blob/master/src/js/lib.js#L734)
---
+299
Ver Arquivo
@@ -0,0 +1,299 @@
Languages
=========
Multiple language support allows for users of non-English locales to natively interact with the displayed player. Video.js will compile multiple langauge files (see below) and instantiate with a global dictionary of language key/value support. Video.js player instances can be created with per-player language support that amends/overrides this default values. Player instances can also hard-set default languges to values other than English as of version 4.7.
Creating the Language File
--------------------------
Video.js uses key/value object dictionaries in JSON form. A sample dictionary for Spanish ['es'] would look as follows;
```JSON
{
"Play": "Juego",
"Pause": "Pausa",
"Current Time": "Tiempo Actual",
"Duration Time": "Tiempo de Duracion",
"Remaining Time": "Tiempo Restante",
"Stream Type": "Tipo de Transmision",
"LIVE": "En Vivo",
"Loaded": "Cargado",
"Progress": "Progreso",
"Fullscreen": "Pantalla Completa",
"Non-Fullscreen": "No Pantalla Completa",
"Mute": "Mudo",
"Unmuted": "Activar sonido",
"Playback Rate": "Reproduccion Cambio",
"Subtitles": "Subtitulos",
"subtitles off": "subtitulos fuera",
"Captions": "Subtitulos",
"captions off": "subtitulos fuera",
"Chapters": "Capitulos",
"You aborted the video playback": "Ha anulado la reproduccion de video",
"A network error caused the video download to fail part-way.": "Un error en la red hizo que la descarga de video falle parte del camino.",
"The video could not be loaded, either because the server or network failed or because the format is not supported.": "El video no se puede cargar, ya sea porque el servidor o la red fracasaron o porque el formato no es compatible.",
"The video playback was aborted due to a corruption problem or because the video used features your browser did not support.": "La reproduccion de video se ha cancelado debido a un problema de corrupcion o porque el video utilizado cuenta con su navegador no soporta.",
"No compatible source was found for this video.": "Ninguna fuente compatible se encontro para este video."
}
```
Notes:
- The file name should always be in the format XX.json, where XX is the two letter value of the language reported to the browser (for options see the bottom of this document).
- For automatic inclusion at build time, add your language file to the /lang directory (see 'Adding Languages to Video.js below').
Adding Languages to Video.js
----------------------------
Additional language support can be added to Video.js in multiple ways.
1. Add your JSON objects via the videojs.addLanguage API. Preferably in the HEAD element of your DOM or otherwise prior to player instantiation.
```html
<head>
<script>
videojs.options.flash.swf = '../node_modules/videojs-swf/dist/video-js.swf';
videojs.addLanguage('es', {
"Play": "Juego",
"Pause": "Pausa",
"Current Time": "Tiempo Actual",
"Duration Time": "Tiempo de Duracion",
"Remaining Time": "Tiempo Restante",
"Stream Type": "Tipo de Transmision",
"LIVE": "En Vivo",
"Loaded": "Cargado",
"Progress": "Progreso",
"Fullscreen": "Pantalla Completa",
"Non-Fullscreen": "No Pantalla Completa",
"Mute": "Mudo",
"Unmuted": "Activar sonido",
"Playback Rate": "Reproduccion Cambio",
"Subtitles": "Subtitulos",
"subtitles off": "subtitulos fuera",
"Captions": "Subtitulos",
"captions off": "subtitulos fuera",
"Chapters": "Capitulos",
"You aborted the video playback": "Ha anulado la reproduccion de video",
"A network error caused the video download to fail part-way.": "Un error en la red hizo que la descarga de video falle parte del camino.",
"The video could not be loaded, either because the server or network failed or because the format is not supported.": "El video no se puede cargar, ya sea porque el servidor o la red fracasaron o porque el formato no es compatible.",
"The video playback was aborted due to a corruption problem or because the video used features your browser did not support.": "La reproduccion de video se ha cancelado debido a un problema de corrupcion o porque el video utilizado cuenta con su navegador no soporta.",
"No compatible source was found for this video.": "Ninguna fuente compatible se encontro para este video."
});
</script>
</head>
```
2. During a Video.js player instantiation. Adding the languages to the configuration object provided in the data-setup attribute.
```html
<video id="example_video_1" class="video-js vjs-default-skin"
controls preload="auto" width="640" height="264"
data-setup='{"languages":{"es":{"Play":"Juego"}}}'>
<source src="http://video-js.zencoder.com/oceans-clip.mp4" type='video/mp4' />
<source src="http://video-js.zencoder.com/oceans-clip.webm" type='video/webm' />
<source src="http://video-js.zencoder.com/oceans-clip.ogv" type='video/ogg' />
<track kind="captions" src="http://example.com/path/to/captions.vtt" srclang="en" label="English" default>
</video>
```
Notes:
- This will add your language key/values to the videojs player instances individually. If these values already exist in the global dictionary via the process above, those will be overridden for the player instance in question.
Setting Default Language in a Video.js Player
---------------------------------------------
During a Video.js player instantiation you can force it to localize to a specific language by including the locale value into the configuration object via the data-setup attribute. Valid options listed at the bottom of the page for reference.
```html
<video id="example_video_1" class="video-js vjs-default-skin"
controls preload="auto" width="640" height="264"
data-setup='{"language":"es"}'>
<source src="http://video-js.zencoder.com/oceans-clip.mp4" type='video/mp4' />
<source src="http://video-js.zencoder.com/oceans-clip.webm" type='video/webm' />
<source src="http://video-js.zencoder.com/oceans-clip.ogv" type='video/ogg' />
<track kind="captions" src="http://example.com/path/to/captions.vtt" srclang="en" label="English" default>
</video>
```
Language Codes
--------------
The following is a list of official language codes.
**NOTE:** For supported language translations, please see the [Languages Folder (/lang)](../../lang) folder located in the project root.
<table border="0" cellspacing="5" cellpadding="5">
<tr>
<td>
<table>
<tr><th>ab<th><td>Abkhazian</td></tr>
<tr><th>aa<th><td>Afar</td></tr>
<tr><th>af<th><td>Afrikaans</td></tr>
<tr><th>sq<th><td>Albanian</td></tr>
<tr><th>am<th><td>Amharic</td></tr>
<tr><th>ar<th><td>Arabic</td></tr>
<tr><th>an<th><td>Aragonese</td></tr>
<tr><th>hy<th><td>Armenian</td></tr>
<tr><th>as<th><td>Assamese</td></tr>
<tr><th>ay<th><td>Aymara</td></tr>
<tr><th>az<th><td>Azerbaijani</td></tr>
<tr><th>ba<th><td>Bashkir</td></tr>
<tr><th>eu<th><td>Basque</td></tr>
<tr><th>bn<th><td>Bengali (Bangla)</td></tr>
<tr><th>dz<th><td>Bhutani</td></tr>
<tr><th>bh<th><td>Bihari</td></tr>
<tr><th>bi<th><td>Bislama</td></tr>
<tr><th>br<th><td>Breton</td></tr>
<tr><th>bg<th><td>Bulgarian</td></tr>
<tr><th>my<th><td>Burmese</td></tr>
<tr><th>be<th><td>Byelorussian (Belarusian)</td></tr>
<tr><th>km<th><td>Cambodian</td></tr>
<tr><th>ca<th><td>Catalan</td></tr>
<tr><th>zh<th><td>Chinese (Simplified)</td></tr>
<tr><th>zh<th><td>Chinese (Traditional)</td></tr>
<tr><th>co<th><td>Corsican</td></tr>
<tr><th>hr<th><td>Croatian</td></tr>
<tr><th>cs<th><td>Czech</td></tr>
<tr><th>da<th><td>Danish</td></tr>
<tr><th>nl<th><td>Dutch</td></tr>
<tr><th>en<th><td>English</td></tr>
<tr><th>eo<th><td>Esperanto</td></tr>
<tr><th>et<th><td>Estonian</td></tr>
<tr><th>fo<th><td>Faeroese</td></tr>
<tr><th>fa<th><td>Farsi</td></tr>
<tr><th>fj<th><td>Fiji</td></tr>
<tr><th>fi<th><td>Finnish</td></tr>
</table>
</td>
<td>
<table>
<tr><th>fr<th><td>French</td></tr>
<tr><th>fy<th><td>Frisian</td></tr>
<tr><th>gl<th><td>Galician</td></tr>
<tr><th>gd<th><td>Gaelic (Scottish)</td></tr>
<tr><th>gv<th><td>Gaelic (Manx)</td></tr>
<tr><th>ka<th><td>Georgian</td></tr>
<tr><th>de<th><td>German</td></tr>
<tr><th>el<th><td>Greek</td></tr>
<tr><th>kl<th><td>Greenlandic</td></tr>
<tr><th>gn<th><td>Guarani</td></tr>
<tr><th>gu<th><td>Gujarati</td></tr>
<tr><th>ht<th><td>Haitian Creole</td></tr>
<tr><th>ha<th><td>Hausa</td></tr>
<tr><th>he<th><td>Hebrew</td></tr>
<tr><th>hi<th><td>Hindi</td></tr>
<tr><th>hu<th><td>Hungarian</td></tr>
<tr><th>is<th><td>Icelandic</td></tr>
<tr><th>io<th><td>Ido</td></tr>
<tr><th>id<th><td>Indonesian</td></tr>
<tr><th>ia<th><td>Interlingua</td></tr>
<tr><th>ie<th><td>Interlingue</td></tr>
<tr><th>iu<th><td>Inuktitut</td></tr>
<tr><th>ik<th><td>Inupiak</td></tr>
<tr><th>ga<th><td>Irish</td></tr>
<tr><th>it<th><td>Italian</td></tr>
<tr><th>ja<th><td>Japanese</td></tr>
<tr><th>jv<th><td>Javanese</td></tr>
<tr><th>kn<th><td>Kannada</td></tr>
<tr><th>ks<th><td>Kashmiri</td></tr>
<tr><th>kk<th><td>Kazakh</td></tr>
<tr><th>rw<th><td>Kinyarwanda (Ruanda)</td></tr>
<tr><th>ky<th><td>Kirghiz</td></tr>
<tr><th>rn<th><td>Kirundi (Rundi)</td></tr>
<tr><th>ko<th><td>Korean</td></tr>
<tr><th>ku<th><td>Kurdish</td></tr>
<tr><th>lo<th><td>Laothian</td></tr>
<tr><th>la<th><td>Latin</td></tr>
</table>
</td>
<td>
<table>
<tr><th>lv<th><td>Latvian (Lettish)</td></tr>
<tr><th>li<th><td>Limburgish ( Limburger)</td></tr>
<tr><th>ln<th><td>Lingala</td></tr>
<tr><th>lt<th><td>Lithuanian</td></tr>
<tr><th>mk<th><td>Macedonian</td></tr>
<tr><th>mg<th><td>Malagasy</td></tr>
<tr><th>ms<th><td>Malay</td></tr>
<tr><th>ml<th><td>Malayalam</td></tr>
<tr><th>mt<th><td>Maltese</td></tr>
<tr><th>mi<th><td>Maori</td></tr>
<tr><th>mr<th><td>Marathi</td></tr>
<tr><th>mo<th><td>Moldavian</td></tr>
<tr><th>mn<th><td>Mongolian</td></tr>
<tr><th>na<th><td>Nauru</td></tr>
<tr><th>ne<th><td>Nepali</td></tr>
<tr><th>no<th><td>Norwegian</td></tr>
<tr><th>oc<th><td>Occitan</td></tr>
<tr><th>or<th><td>Oriya</td></tr>
<tr><th>om<th><td>Oromo (Afan, Galla)</td></tr>
<tr><th>ps<th><td>Pashto (Pushto)</td></tr>
<tr><th>pl<th><td>Polish</td></tr>
<tr><th>pt<th><td>Portuguese</td></tr>
<tr><th>pa<th><td>Punjabi</td></tr>
<tr><th>qu<th><td>Quechua</td></tr>
<tr><th>rm<th><td>Rhaeto-Romance</td></tr>
<tr><th>ro<th><td>Romanian</td></tr>
<tr><th>ru<th><td>Russian</td></tr>
<tr><th>sm<th><td>Samoan</td></tr>
<tr><th>sg<th><td>Sangro</td></tr>
<tr><th>sa<th><td>Sanskrit</td></tr>
<tr><th>sr<th><td>Serbian</td></tr>
<tr><th>sh<th><td>Serbo-Croatian</td></tr>
<tr><th>st<th><td>Sesotho</td></tr>
<tr><th>tn<th><td>Setswana</td></tr>
<tr><th>sn<th><td>Shona</td></tr>
<tr><th>ii<th><td>Sichuan Yi</td></tr>
<tr><th>sd<th><td>Sindhi</td></tr>
</table>
</td>
<td>
<table>
<tr><th>si<th><td>Sinhalese</td></tr>
<tr><th>ss<th><td>Siswati</td></tr>
<tr><th>sk<th><td>Slovak</td></tr>
<tr><th>sl<th><td>Slovenian</td></tr>
<tr><th>so<th><td>Somali</td></tr>
<tr><th>es<th><td>Spanish</td></tr>
<tr><th>su<th><td>Sundanese</td></tr>
<tr><th>sw<th><td>Swahili (Kiswahili)</td></tr>
<tr><th>sv<th><td>Swedish</td></tr>
<tr><th>tl<th><td>Tagalog</td></tr>
<tr><th>tg<th><td>Tajik</td></tr>
<tr><th>ta<th><td>Tamil</td></tr>
<tr><th>tt<th><td>Tatar</td></tr>
<tr><th>te<th><td>Telugu</td></tr>
<tr><th>th<th><td>Thai</td></tr>
<tr><th>bo<th><td>Tibetan</td></tr>
<tr><th>ti<th><td>Tigrinya</td></tr>
<tr><th>to<th><td>Tonga</td></tr>
<tr><th>ts<th><td>Tsonga</td></tr>
<tr><th>tr<th><td>Turkish</td></tr>
<tr><th>tk<th><td>Turkmen</td></tr>
<tr><th>tw<th><td>Twi</td></tr>
<tr><th>ug<th><td>Uighur</td></tr>
<tr><th>uk<th><td>Ukrainian</td></tr>
<tr><th>ur<th><td>Urdu</td></tr>
<tr><th>uz<th><td>Uzbek</td></tr>
<tr><th>vi<th><td>Vietnamese</td></tr>
<tr><th>vo<th><td>Volapük</td></tr>
<tr><th>wa<th><td>Wallon</td></tr>
<tr><th>cy<th><td>Welsh</td></tr>
<tr><th>wo<th><td>Wolof</td></tr>
<tr><th>xh<th><td>Xhosa</td></tr>
<tr><th>yi<th><td>Yiddish</td></tr>
<tr><th>yo<th><td>Yoruba</td></tr>
<tr><th>zu<th><td>Zulu</td></tr>
</table>
</td>
</tr>
</table>
+2 -2
Ver Arquivo
@@ -20,8 +20,8 @@ You can download the Video.js source and host it on your own servers, or use the
### CDN Version ###
```html
<link href="//vjs.zencdn.net/4.7/video-js.css" rel="stylesheet">
<script src="//vjs.zencdn.net/4.7/video.js"></script>
<link href="//vjs.zencdn.net/4.8/video-js.css" rel="stylesheet">
<script src="//vjs.zencdn.net/4.8/video.js"></script>
```
### Self Hosted. ###
+1 -1
Ver Arquivo
@@ -17,7 +17,7 @@ When creating captions, there's also additional [caption formatting techniques]
Adding to Video.js
------------------
Once you have your WebVTT file created, you can add it to Video.js using the track trag. Put your track track tag after all the source elements, and before any fallback content.
Once you have your WebVTT file created, you can add it to Video.js using the track tag. Put your track tag after all the source elements, and before any fallback content.
```html
<video id="example_video_1" class="video-js vjs-default-skin"
+26
Ver Arquivo
@@ -0,0 +1,26 @@
{
"Play": "abspielen",
"Pause": "pausieren",
"Current Time": "aktueller Zeitpunkt",
"Duration Time": "gesamte Laufzeit",
"Remaining Time": "verbleibende Laufzeit",
"Stream Type": "Übertragungstyp",
"LIVE": "LIVE",
"Loaded": "geladen",
"Progress": "Fortschritt",
"Fullscreen": "Vollbildschirm AN",
"Non-Fullscreen": "Vollbildschirm AUS",
"Mute": "Ton AUS",
"Unmuted": "Ton AN",
"Playback Rate": "Wiedergabegeschwindigkeit",
"Subtitles": "Untertitel AN",
"subtitles off": "Untertitel AUS",
"Captions": "Titel AN",
"captions off": "Titel AUS",
"Chapters": "Kapitel",
"You aborted the video playback": "Sie haben die Video-Wiedergabe abgebrochen.",
"A network error caused the video download to fail part-way.": "Ein Fehler bei der Verbindung verursachte eine Unterbrechung mitten im Download.",
"The video could not be loaded, either because the server or network failed or because the format is not supported.": "Das Video konnte nicht geladen werden, entweder weil der Server bzw. die Verbindung gestört ist, oder weil das Format nicht kompatibel ist.",
"The video playback was aborted due to a corruption problem or because the video used features your browser did not support.": "Die Wiedergabe des Videos wurde unterbrochen. Entweder ist das Video beschädigt oder es benutzt ein Feature welches von diesem Browser nicht unterstützt wird.",
"No compatible source was found for this video.": "Für dieses Video wurde keine kompatible Quelle gefunden."
}
+26
Ver Arquivo
@@ -0,0 +1,26 @@
{
"Play": "Jouer",
"Pause": "Pause",
"Current Time": "Actuel",
"Duration Time": "Durée",
"Remaining Time": "Restant",
"Stream Type": "Type de flux",
"LIVE": "LIVE",
"Loaded": "Chargé",
"Progress": "Progression",
"Fullscreen": "Plein écran",
"Non-Fullscreen": "Fenêtré",
"Mute": "Couper le son",
"Unmuted": "Rétablir le son",
"Playback Rate": "Vitesse de lecture",
"Subtitles": "Sous-titres",
"subtitles off": "Désactiver",
"Captions": "Annotations",
"captions off": "Désactiver",
"Chapters": "Chapitres",
"You aborted the video playback": "Vous avez interrompu la lecture de la vidéo.",
"A network error caused the video download to fail part-way.": "Une erreur réseau a fait échouer le téléchargement.",
"The video could not be loaded, either because the server or network failed or because the format is not supported.": "La vidéo n'a pas pu être chargée, soit parce que le serveur ou le réseau ont rencontré une erreur, soit parce que le format n'est pas supporté.",
"The video playback was aborted due to a corruption problem or because the video used features your browser did not support.": "La lecture a été interrompue à cause d'un problème de corruption ou parce que la vidéo requiert une fonctionnalité non supportée par votre navigateur.",
"No compatible source was found for this video.": "Aucune source compatible n'a pu être trouvée pour cette vidéo."
}
+4 -3
Ver Arquivo
@@ -1,7 +1,7 @@
{
"name": "video.js",
"description": "An HTML5 and Flash video player with a common API and skin for both.",
"version": "4.7.2",
"version": "4.8.5",
"copyright": "Copyright 2014 Brightcove, Inc. https://github.com/videojs/video.js/blob/master/LICENSE",
"keywords": [
"videojs",
@@ -21,7 +21,7 @@
},
"main": "./dist/video-js/video.js",
"dependencies": {
"videojs-swf": "4.4.3"
"videojs-swf": "4.4.5"
},
"devDependencies": {
"calcdeps": "~0.1.7",
@@ -60,6 +60,7 @@
"semver": "~1.1.4",
"sinon": "~1.9.1",
"uglify-js": "~2.3.6",
"videojs-doc-generator": "0.0.1"
"videojs-doc-generator": "0.0.1",
"grunt-videojs-languages": "0.0.4"
}
}
+63
Ver Arquivo
@@ -0,0 +1,63 @@
<!DOCTYPE html>
<!-- Set Page Language Here -->
<html lang="es">
<head>
<meta charset="utf-8" />
<title>VideoJS Languages Demo</title>
<link href="../build/files/video-js.css" rel="stylesheet" type="text/css">
<!-- LOAD VIDEO.JS SOURCE FILES IN ORDER -->
<script src="../build/source-loader.js"></script>
<!-- Set the location of the flash SWF -->
<!-- Add support for Spanish 'es' -->
<script>
videojs.options.flash.swf = '../node_modules/videojs-swf/dist/video-js.swf';
videojs.addLanguage('es', {
"Play": "Juego",
"Pause": "Pausa",
"Current Time": "Tiempo Actual",
"Duration Time": "Tiempo de Duracion",
"Remaining Time": "Tiempo Restante",
"Stream Type": "Tipo de Transmision",
"LIVE": "En Vivo",
"Loaded": "Cargado",
"Progress": "Progreso",
"Fullscreen": "Pantalla Completa",
"Non-Fullscreen": "No Pantalla Completa",
"Mute": "Mudo",
"Unmuted": "Activar sonido",
"Playback Rate": "Reproduccion Cambio",
"Subtitles": "Subtitulos",
"subtitles off": "subtitulos fuera",
"Captions": "Subtitulos",
"captions off": "subtitulos fuera",
"Chapters": "Capitulos",
"You aborted the video playback": "Ha anulado la reproduccion de video",
"A network error caused the video download to fail part-way.": "Un error en la red hizo que la descarga de video falle parte del camino.",
"The video could not be loaded, either because the server or network failed or because the format is not supported.": "El video no se puede cargar, ya sea porque el servidor o la red fracasaron o porque el formato no es compatible.",
"The video playback was aborted due to a corruption problem or because the video used features your browser did not support.": "La reproduccion de video se ha cancelado debido a un problema de corrupcion o porque el video utilizado cuenta con su navegador no soporta.",
"No compatible source was found for this video.": "Ninguna fuente compatible se encontro para este video."
});
</script>
</head>
<body>
<video id="vid1" class="video-js vjs-default-skin" controls preload="auto" width="640" height="264" data-setup=''>
<!--
<source src="http://video-js.zencoder.com/oceans-clip.mp4" type='video/mp4'>
<source src="http://video-js.zencoder.com/oceans-clip.webm" type='video/webm'>
<source src="http://video-js.zencoder.com/oceans-clip.ogv" type='video/ogg'>
-->
</video>
<script>
var player = videojs("vid1");
player.controlBar.show();
player.error(1);
</script>
</body>
</html>
+12 -6
Ver Arquivo
@@ -614,6 +614,7 @@ easily in the skin designer. http://designer.videojs.com/
vertical-align: middle;
position: absolute;
left: 0;
top: 50%;
margin-top: -0.5em;
width: 100%;
@@ -621,12 +622,15 @@ easily in the skin designer. http://designer.videojs.com/
.vjs-error-display div {
position: absolute;
bottom: 1em;
right: 0;
left: 0;
font-size: 1.4em;
text-align: center;
bottom: 1em;
right: 1em;
left: 1em;
padding: 3px;
background: rgb(0, 0, 0); // fallback to just black
background: rgba(0,0,0,0.5); // Normally show black at 50% opacity
}
.vjs-error-display a, .vjs-error-display a:visited {
@@ -890,11 +894,13 @@ body.vjs-full-window {
background-position: 50% 50%;
background-size: contain;
cursor: pointer;
height: 100%;
margin: 0;
padding: 0;
position: relative;
width: 100%;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
.vjs-poster img {
display: block;
+2 -2
Ver Arquivo
@@ -65,7 +65,7 @@ vjs.Button.prototype.onClick = function(){};
// Focus - Add keyboard functionality to element
vjs.Button.prototype.onFocus = function(){
vjs.on(document, 'keyup', vjs.bind(this, this.onKeyPress));
vjs.on(document, 'keydown', vjs.bind(this, this.onKeyPress));
};
// KeyPress (document level) - Trigger click when keys are pressed
@@ -79,5 +79,5 @@ vjs.Button.prototype.onKeyPress = function(event){
// Blur - Remove keyboard triggers
vjs.Button.prototype.onBlur = function(){
vjs.off(document, 'keyup', vjs.bind(this, this.onKeyPress));
vjs.off(document, 'keydown', vjs.bind(this, this.onKeyPress));
};
+3
Ver Arquivo
@@ -806,6 +806,9 @@ vjs.Component.prototype.dimensions = function(width, height){
*/
vjs.Component.prototype.dimension = function(widthOrHeight, num, skipListeners){
if (num !== undefined) {
if (num === null || vjs.isNaN(num)) {
num = 0;
}
// Check if using css width/height (% or px) and adjust
if ((''+num).indexOf('%') !== -1 || (''+num).indexOf('px') !== -1) {
+2 -2
Ver Arquivo
@@ -13,11 +13,11 @@ vjs.MuteToggle = vjs.Button.extend({
player.on('volumechange', vjs.bind(this, this.update));
// hide mute toggle if the current tech doesn't support volume control
if (player.tech && player.tech.features && player.tech.features['volumeControl'] === false) {
if (player.tech && player.tech['featuresVolumeControl'] === false) {
this.addClass('vjs-hidden');
}
player.on('loadstart', vjs.bind(this, function(){
if (player.tech.features && player.tech.features['volumeControl'] === false) {
if (player.tech['featuresVolumeControl'] === false) {
this.addClass('vjs-hidden');
} else {
this.removeClass('vjs-hidden');
+1 -1
Ver Arquivo
@@ -72,7 +72,7 @@ vjs.PlaybackRateMenuButton.prototype.onClick = function(){
vjs.PlaybackRateMenuButton.prototype.playbackRateSupported = function(){
return this.player().tech
&& this.player().tech.features['playbackRate']
&& this.player().tech['featuresPlaybackRate']
&& this.player().options()['playbackRates']
&& this.player().options()['playbackRates'].length > 0
;
+2 -2
Ver Arquivo
@@ -11,11 +11,11 @@ vjs.VolumeControl = vjs.Component.extend({
vjs.Component.call(this, player, options);
// hide volume controls when they're not supported by the current tech
if (player.tech && player.tech.features && player.tech.features['volumeControl'] === false) {
if (player.tech && player.tech['featuresVolumeControl'] === false) {
this.addClass('vjs-hidden');
}
player.on('loadstart', vjs.bind(this, function(){
if (player.tech.features && player.tech.features['volumeControl'] === false) {
if (player.tech['featuresVolumeControl'] === false) {
this.addClass('vjs-hidden');
} else {
this.removeClass('vjs-hidden');
+2 -2
Ver Arquivo
@@ -11,11 +11,11 @@ vjs.VolumeMenuButton = vjs.MenuButton.extend({
player.on('volumechange', vjs.bind(this, this.update));
// hide mute toggle if the current tech doesn't support volume control
if (player.tech && player.tech.features && player.tech.features.volumeControl === false) {
if (player.tech && player.tech['featuresVolumeControl'] === false) {
this.addClass('vjs-hidden');
}
player.on('loadstart', vjs.bind(this, function(){
if (player.tech.features && player.tech.features.volumeControl === false) {
if (player.tech['featuresVolumeControl'] === false) {
this.addClass('vjs-hidden');
} else {
this.removeClass('vjs-hidden');
+22
Ver Arquivo
@@ -92,6 +92,9 @@ vjs.options = {
// Add playback rate selection by adding rates
// 'playbackRates': [0.5, 1, 1.5, 2],
// default inactivity timeout
'inactivityTimeout': 2000,
// Included control sets
'children': {
'mediaLoader': {},
@@ -118,6 +121,25 @@ if (vjs.CDN_VERSION !== 'GENERATED'+'_CDN_VSN') {
videojs.options['flash']['swf'] = vjs.ACCESS_PROTOCOL + 'vjs.zencdn.net/'+vjs.CDN_VERSION+'/video-js.swf';
}
/**
* Utility function for adding languages to the default options. Useful for
* amending multiple language support at runtime.
*
* Example: vjs.addLanguage('es', {'Hello':'Hola'});
*
* @param {String} code The language code or dictionary property
* @param {Object} data The data values to be translated
* @return {Object} The resulting global languages dictionary object
*/
vjs.addLanguage = function(code, data){
if(vjs.options['languages'][code] !== undefined) {
vjs.options['languages'][code] = vjs.util.mergeOptions(vjs.options['languages'][code], data);
} else {
vjs.options['languages'][code] = data;
}
return vjs.options['languages'];
};
/**
* Global player list
* @type {Object}
+12 -7
Ver Arquivo
@@ -77,8 +77,12 @@ goog.exportProperty(vjs.Player.prototype, 'preload', vjs.Player.prototype.preloa
goog.exportProperty(vjs.Player.prototype, 'remainingTime', vjs.Player.prototype.remainingTime);
goog.exportProperty(vjs.Player.prototype, 'supportsFullScreen', vjs.Player.prototype.supportsFullScreen);
goog.exportProperty(vjs.Player.prototype, 'currentType', vjs.Player.prototype.currentType);
goog.exportProperty(vjs.Player.prototype, 'language', vjs.Player.prototype.language);
goog.exportProperty(vjs.Player.prototype, 'languages', vjs.Player.prototype.languages);
goog.exportProperty(vjs.Player.prototype, 'requestFullScreen', vjs.Player.prototype.requestFullScreen);
goog.exportProperty(vjs.Player.prototype, 'requestFullscreen', vjs.Player.prototype.requestFullscreen);
goog.exportProperty(vjs.Player.prototype, 'cancelFullScreen', vjs.Player.prototype.cancelFullScreen);
goog.exportProperty(vjs.Player.prototype, 'exitFullscreen', vjs.Player.prototype.exitFullscreen);
goog.exportProperty(vjs.Player.prototype, 'isFullScreen', vjs.Player.prototype.isFullScreen);
goog.exportProperty(vjs.Player.prototype, 'isFullscreen', vjs.Player.prototype.isFullscreen);
goog.exportSymbol('videojs.MediaLoader', vjs.MediaLoader);
goog.exportSymbol('videojs.TextTrackDisplay', vjs.TextTrackDisplay);
@@ -121,11 +125,11 @@ goog.exportSymbol('videojs.CaptionsButton', vjs.CaptionsButton);
goog.exportSymbol('videojs.ChaptersButton', vjs.ChaptersButton);
goog.exportSymbol('videojs.MediaTechController', vjs.MediaTechController);
goog.exportProperty(vjs.MediaTechController.prototype, 'features', vjs.MediaTechController.prototype.features);
goog.exportProperty(vjs.MediaTechController.prototype.features, 'volumeControl', vjs.MediaTechController.prototype.features.volumeControl);
goog.exportProperty(vjs.MediaTechController.prototype.features, 'fullscreenResize', vjs.MediaTechController.prototype.features.fullscreenResize);
goog.exportProperty(vjs.MediaTechController.prototype.features, 'progressEvents', vjs.MediaTechController.prototype.features.progressEvents);
goog.exportProperty(vjs.MediaTechController.prototype.features, 'timeupdateEvents', vjs.MediaTechController.prototype.features.timeupdateEvents);
goog.exportProperty(vjs.MediaTechController.prototype, 'featuresVolumeControl', vjs.MediaTechController.prototype.featuresVolumeControl);
goog.exportProperty(vjs.MediaTechController.prototype, 'featuresFullscreenResize', vjs.MediaTechController.prototype.featuresFullscreenResize);
goog.exportProperty(vjs.MediaTechController.prototype, 'featuresPlaybackRate', vjs.MediaTechController.prototype.featuresPlaybackRate);
goog.exportProperty(vjs.MediaTechController.prototype, 'featuresProgressEvents', vjs.MediaTechController.prototype.featuresProgressEvents);
goog.exportProperty(vjs.MediaTechController.prototype, 'featuresTimeupdateEvents', vjs.MediaTechController.prototype.featuresTimeupdateEvents);
goog.exportProperty(vjs.MediaTechController.prototype, 'setPoster', vjs.MediaTechController.prototype.setPoster);
@@ -173,3 +177,4 @@ goog.exportSymbol('videojs.createTimeRange', vjs.createTimeRange);
goog.exportSymbol('videojs.util', vjs.util);
goog.exportProperty(vjs.util, 'mergeOptions', vjs.util.mergeOptions);
goog.exportProperty(vjs, 'addLanguage', vjs.addLanguage);
+11
Ver Arquivo
@@ -171,6 +171,17 @@ vjs.obj.isArray = Array.isArray || function(arr) {
return Object.prototype.toString.call(arr) === '[object Array]';
};
/**
* Check to see whether the input is NaN or not.
* NaN is the only JavaScript construct that isn't equal to itself
* @param {Number} num Number to check
* @return {Boolean} True if NaN, false otherwise
* @private
*/
vjs.isNaN = function(num) {
return num !== num;
};
/**
* Bind (a.k.a proxy or Context). A simple method for changing the context of a function
It also stores a unique id on the function so it can be easily removed from events
+32 -10
Ver Arquivo
@@ -13,19 +13,19 @@ vjs.Html5 = vjs.MediaTechController.extend({
/** @constructor */
init: function(player, options, ready){
// volume cannot be changed from 1 on iOS
this.features['volumeControl'] = vjs.Html5.canControlVolume();
this['featuresVolumeControl'] = vjs.Html5.canControlVolume();
// just in case; or is it excessively...
this.features['playbackRate'] = vjs.Html5.canControlPlaybackRate();
this['featuresPlaybackRate'] = vjs.Html5.canControlPlaybackRate();
// In iOS, if you move a video element in the DOM, it breaks video playback.
this.features['movingMediaElementInDOM'] = !vjs.IS_IOS;
this['movingMediaElementInDOM'] = !vjs.IS_IOS;
// HTML video is able to automatically resize when going to fullscreen
this.features['fullscreenResize'] = true;
this['featuresFullscreenResize'] = true;
// HTML video supports progress events
this.features['progressEvents'] = true;
this['featuresProgressEvents'] = true;
vjs.MediaTechController.call(this, player, options, ready);
this.setupTriggers();
@@ -75,7 +75,7 @@ vjs.Html5.prototype.createEl = function(){
// Check if this browser supports moving the element into the box.
// On the iPhone video will break if you move the element,
// So we have to create a brand new element.
if (!el || this.features['movingMediaElementInDOM'] === false) {
if (!el || this['movingMediaElementInDOM'] === false) {
// If the original tag is still there, clone and remove it.
if (el) {
@@ -123,9 +123,11 @@ vjs.Html5.prototype.setupTriggers = function(){
};
vjs.Html5.prototype.eventHandler = function(evt){
// In the case of an error, set the error prop on the player
// and let the player handle triggering the event.
if (evt.type == 'error') {
// In the case of an error on the video element, set the error prop
// on the player and let the player handle triggering the event. On
// some platforms, error events fire that do not cause the error
// property on the video element to be set. See #1465 for an example.
if (evt.type == 'error' && this.error()) {
this.player().error(this.error().code);
// in some cases we pass the event directly to the player
@@ -207,6 +209,20 @@ vjs.Html5.prototype.supportsFullScreen = function(){
vjs.Html5.prototype.enterFullScreen = function(){
var video = this.el_;
if ('webkitDisplayingFullscreen' in video) {
this.one('webkitbeginfullscreen', vjs.bind(this, function(e) {
this.player_.isFullscreen(true);
this.one('webkitendfullscreen', vjs.bind(this, function(e) {
this.player_.isFullscreen(false);
this.player_.trigger('fullscreenchange');
}));
this.player_.trigger('fullscreenchange');
}));
}
if (video.paused && video.networkState <= video.HAVE_METADATA) {
// attempt to prime the video element for programmatic access
// this isn't necessary on the desktop but shouldn't hurt
@@ -225,7 +241,13 @@ vjs.Html5.prototype.enterFullScreen = function(){
vjs.Html5.prototype.exitFullScreen = function(){
this.el_.webkitExitFullScreen();
};
vjs.Html5.prototype.src = function(src){ this.el_.src = src; };
vjs.Html5.prototype.src = function(src) {
if (src === undefined) {
return this.el_.src;
} else {
this.el_.src = src;
}
};
vjs.Html5.prototype.load = function(){ this.el_.load(); };
vjs.Html5.prototype.currentSrc = function(){ return this.el_.currentSrc; };
+11 -13
Ver Arquivo
@@ -19,12 +19,12 @@ vjs.MediaTechController = vjs.Component.extend({
vjs.Component.call(this, player, options, ready);
// Manually track progress in cases where the browser/flash player doesn't report it.
if (!this.features['progressEvents']) {
if (!this['featuresProgressEvents']) {
this.manualProgressOn();
}
// Manually track timeudpates in cases where the browser/flash player doesn't report it.
if (!this.features['timeupdateEvents']) {
if (!this['featuresTimeupdateEvents']) {
this.manualTimeUpdatesOn();
}
@@ -210,7 +210,7 @@ vjs.MediaTechController.prototype.manualTimeUpdatesOn = function(){
// Watch for native timeupdate event
this.one('timeupdate', function(){
// Update known progress support for this playback technology
this.features['timeupdateEvents'] = true;
this['featuresTimeupdateEvents'] = true;
// Turn off manual progress tracking
this.manualTimeUpdatesOff();
});
@@ -261,17 +261,15 @@ vjs.MediaTechController.prototype.setCurrentTime = function() {
*/
vjs.MediaTechController.prototype.setPoster = function(){};
vjs.MediaTechController.prototype.features = {
'volumeControl': true,
vjs.MediaTechController.prototype['featuresVolumeControl'] = true;
// Resizing plugins using request fullscreen reloads the plugin
'fullscreenResize': false,
'playbackRate': false,
// Resizing plugins using request fullscreen reloads the plugin
vjs.MediaTechController.prototype['featuresFullscreenResize'] = false;
vjs.MediaTechController.prototype['featuresPlaybackRate'] = false;
// Optional events that we can manually mimic with timers
// currently not triggered by video-js-swf
'progressEvents': false,
'timeupdateEvents': false
};
// Optional events that we can manually mimic with timers
// currently not triggered by video-js-swf
vjs.MediaTechController.prototype['featuresProgressEvents'] = false;
vjs.MediaTechController.prototype['featuresTimeupdateEvents'] = false;
vjs.media = {};
+11
Ver Arquivo
@@ -62,6 +62,12 @@ videojs.Player.prototype.cancelFullScreen = function(){}; /* deprecated */
*/
videojs.Player.prototype.textTracks = function(){};
/**
* Language support
*/
videojs.Player.prototype.language = function(){};
videojs.Player.prototype.languages = function(){};
/**
* Component functions
*/
@@ -82,3 +88,8 @@ videojs.Player.prototype.userActive = function(){};
* Native controls
*/
videojs.Player.prototype.usingNativeControls = function(){};
/**
* Source selection
*/
videojs.Player.prototype.selectSource = function(){};
+27 -14
Ver Arquivo
@@ -349,7 +349,6 @@ vjs.Player.prototype.unloadTech = function(){
// vjs.log('loadedTech')
// },
// /* Player event handlers (how the player reacts to certain events)
// ================================================================================ */
@@ -512,6 +511,8 @@ vjs.Player.prototype.onEnded = function(){
if (this.options_['loop']) {
this.currentTime(0);
this.play();
} else if (!this.paused()) {
this.pause();
}
};
@@ -1156,7 +1157,8 @@ vjs.Player.prototype.src = function(source){
* @private
*/
vjs.Player.prototype.sourceList_ = function(sources){
var sourceTech = this.selectSource(sources);
var sourceTech = this.selectSource(sources),
errorTimeout;
if (sourceTech) {
if (sourceTech.tech === this.techName) {
@@ -1167,10 +1169,18 @@ vjs.Player.prototype.sourceList_ = function(sources){
this.loadTech(sourceTech.tech, sourceTech.source);
}
} else {
this.error({ code: 4, message: this.options()['notSupportedMessage'] });
// We need to wrap this in a timeout to give folks a chance to add error event handlers
errorTimeout = setTimeout(vjs.bind(this, function() {
this.error({ code: 4, message: this.localize(this.options()['notSupportedMessage']) });
}), 0);
// we could not find an appropriate tech, but let's still notify the delegate that this is it
// this needs a better comment about why this is needed
this.triggerReady();
this.on('dispose', function() {
clearTimeout(errorTimeout);
});
}
};
@@ -1502,16 +1512,19 @@ vjs.Player.prototype.listenForUserActivity = function(){
// Clear any existing inactivity timeout to start the timer over
clearTimeout(inactivityTimeout);
// In X seconds, if no more activity has occurred the user will be
// considered inactive
inactivityTimeout = setTimeout(vjs.bind(this, function() {
// Protect against the case where the inactivityTimeout can trigger just
// before the next user activity is picked up by the activityCheck loop
// causing a flicker
if (!this.userActivity_) {
this.userActive(false);
}
}), 2000);
var timeout = this.options()['inactivityTimeout'];
if (timeout > 0) {
// In <timeout> milliseconds, if no more activity has occurred the
// user will be considered inactive
inactivityTimeout = setTimeout(vjs.bind(this, function () {
// Protect against the case where the inactivityTimeout can trigger just
// before the next user activity is picked up by the activityCheck loop
// causing a flicker
if (!this.userActivity_) {
this.userActive(false);
}
}), timeout);
}
}
}), 250);
@@ -1528,7 +1541,7 @@ vjs.Player.prototype.playbackRate = function(rate) {
return this;
}
if (this.tech && this.tech.features && this.tech.features['playbackRate']) {
if (this.tech && this.tech['featuresPlaybackRate']) {
return this.techGet('playbackRate');
} else {
return 1.0;
+1 -1
Ver Arquivo
@@ -313,7 +313,7 @@ vjs.TextTrack.prototype.mode = function(){
* and restore it to its normal size when not in fullscreen mode.
*/
vjs.TextTrack.prototype.adjustFontSize = function(){
if (this.player_.isFullScreen()) {
if (this.player_.isFullscreen()) {
// Scale the font by the same factor as increasing the video width to the full screen window width.
// Additionally, multiply that factor by 1.4, which is the default font size for
// the caption track (from the CSS)
+2 -4
Ver Arquivo
@@ -16,7 +16,7 @@ vjs.util = {};
vjs.util.mergeOptions = function(obj1, obj2){
var key, val1, val2;
// make a copy of obj1 so we're not ovewriting original values.
// make a copy of obj1 so we're not overwriting original values.
// like prototype.options_ and all sub options objects
obj1 = vjs.obj.copy(obj1);
@@ -34,6 +34,4 @@ vjs.util.mergeOptions = function(obj1, obj2){
}
}
return obj1;
};
};
+18
Ver Arquivo
@@ -48,6 +48,11 @@ test('should be able to access expected player API methods', function() {
ok(player.usingNativeControls, 'usingNativeControls exists');
ok(player.isFullscreen, 'isFullscreen exists');
// Deprecated methods that should still exist
ok(player.requestFullScreen, 'requestFullScreen exists');
ok(player.isFullScreen, 'isFullScreen exists');
ok(player.cancelFullScreen, 'cancelFullScreen exists');
player.dispose();
});
@@ -208,3 +213,16 @@ test('fullscreenToggle does not depend on minified player methods', function(){
ok(exitFullscreen, 'exitFullscreen called');
});
test('component can be subclassed externally', function(){
var player = new (videojs.Component.extend({
languages: function(){},
reportUserActivity: function(){},
language: function(){},
textTracks: function(){ return []; }
}))({
id: function(){},
reportUserActivity: function(){}
});
ok(new videojs.ControlBar(player), 'created a control bar without throwing');
});
+28
Ver Arquivo
@@ -199,6 +199,34 @@ test('should show and hide an element', function(){
ok(comp.el().style.display === 'block');
});
test('dimension() should treat NaN and null as zero', function() {
var comp, width, height, newWidth, newHeight;
width = 300;
height = 150;
comp = new vjs.Component(getFakePlayer(), {}),
// set component dimension
comp.dimensions(width, height);
newWidth = comp.dimension('width', null);
notEqual(newWidth, width, 'new width and old width are not the same');
equal(newWidth, comp, 'we set a value, so, return value is component');
equal(comp.width(), 0, 'the new width is zero');
newHeight = comp.dimension('height', NaN);
notEqual(newHeight, height, 'new height and old height are not the same');
equal(newHeight, comp, 'we set a value, so, return value is component');
equal(comp.height(), 0, 'the new height is zero');
comp.width(width);
newWidth = comp.dimension('width', undefined);
equal(newWidth, width, 'we did not set the width with undefined');
});
test('should change the width and height of a component', function(){
var container = document.createElement('div');
var comp = new vjs.Component(getFakePlayer(), {});
+4 -8
Ver Arquivo
@@ -12,9 +12,7 @@ test('should hide volume control if it\'s not supported', function(){
language: noop,
languages: noop,
tech: {
features: {
'volumeControl': false
}
'featuresVolumeControl': false
},
volume: function(){},
muted: function(){},
@@ -47,9 +45,7 @@ test('should test and toggle volume control on `loadstart`', function(){
return false;
},
tech: {
features: {
'volumeControl': true
}
'featuresVolumeControl': true
},
reportUserActivity: function(){}
};
@@ -62,7 +58,7 @@ test('should test and toggle volume control on `loadstart`', function(){
ok(muteToggle.el().className.indexOf('vjs-hidden') < 0,
'muteToggle is hidden initially');
player.tech.features['volumeControl'] = false;
player.tech['featuresVolumeControl'] = false;
for (i = 0; i < listeners.length; i++) {
listeners[i]();
}
@@ -72,7 +68,7 @@ test('should test and toggle volume control on `loadstart`', function(){
ok(muteToggle.el().className.indexOf('vjs-hidden') >= 0,
'muteToggle does not hide itself');
player.tech.features['volumeControl'] = true;
player.tech['featuresVolumeControl'] = true;
for (i = 0; i < listeners.length; i++) {
listeners[i]();
}
+12
Ver Arquivo
@@ -27,3 +27,15 @@ test('should return a video player instance', function(){
var player2 = videojs(tag2);
ok(player2.id() === 'test_vid_id2', 'created player from element');
});
test('should add the value to the languages object', function() {
var code, data, result;
code = 'es';
data = {'Hello': 'Hola'};
result = vjs.addLanguage(code, data);
ok(vjs.options['languages'][code], 'should exist');
equal(vjs.options['languages'][code], data, 'should match');
deepEqual(result[code], vjs.options['languages'][code], 'should also match');
});
+1 -1
Ver Arquivo
@@ -136,7 +136,7 @@ test( 'should listen only once in multiple events from a single call', function(
vjs.trigger(el, 'click'); // No click should happen.
vjs.trigger(el, 'event1'); // event1 must be handled.
vjs.trigger(el, 'event1'); // No event1 should be handled.
vjs.trigger(el, 'event2'); // event2 must be handled.
vjs.trigger(el, 'event2'); // event2 must be handled.
vjs.trigger(el, 'event2'); // No event2 should be handled.
});
+12
Ver Arquivo
@@ -56,6 +56,12 @@ test('should re-link the player if the tech is moved', function(){
test('test playbackRate', function() {
var playbackRate;
// Android 2.3 always returns 0 for playback rate
if (!vjs.Html5.canControlPlaybackRate()) {
ok('Playback rate is not supported');
return;
}
tech.createEl();
tech.el().playbackRate = 1.25;
@@ -118,3 +124,9 @@ test('should return a maybe for mp4 on OLD ANDROID', function() {
vjs.IS_OLD_ANDROID = isOldAndroid;
vjs.Html5.unpatchCanPlayType();
});
test('error events may not set the errors property', function() {
equal(tech.error(), undefined, 'no tech-level error');
tech.trigger('error');
ok(true, 'no error was thrown');
});
+22 -4
Ver Arquivo
@@ -1,14 +1,14 @@
var noop = function() {}, clock, features;
var noop = function() {}, clock, featuresProgessEvents;
module('Media Tech', {
'setup': function() {
clock = sinon.useFakeTimers();
features = videojs.util.mergeOptions({}, videojs.MediaTechController.prototype.features);
videojs.MediaTechController.prototype.features['progressEvents'] = false;
featuresProgessEvents = videojs.MediaTechController.prototype['featuresProgessEvents'];
videojs.MediaTechController.prototype['featuresProgressEvents'] = false;
},
'teardown': function() {
clock.restore();
videojs.MediaTechController.prototype.features = features;
videojs.MediaTechController.prototype['featuresProgessEvents'] = featuresProgessEvents;
}
});
@@ -115,3 +115,21 @@ test('should synthesize progress events by default', function() {
clock.tick(500);
equal(progresses, 1, 'triggered one event');
});
test('dispose() should stop time tracking', function() {
var tech = new videojs.MediaTechController({
id: noop,
on: noop,
trigger: noop
});
tech.dispose();
// progress and timeupdate events will throw exceptions after the
// tech is disposed
try {
clock.tick(10 * 1000);
} catch (e) {
return equal(e, undefined, 'threw an exception');
}
ok(true, 'no exception was thrown');
});
+2 -3
Ver Arquivo
@@ -12,9 +12,9 @@ vjs.MediaFaker = vjs.MediaTechController.extend({
}
});
// Support everything
// Support everything except for "video/unsupported-format"
vjs.MediaFaker.isSupported = function(){ return true; };
vjs.MediaFaker.canPlaySource = function(srcObj){ return true; };
vjs.MediaFaker.canPlaySource = function(srcObj){ return srcObj.type !== 'video/unsupported-format'; };
vjs.MediaFaker.prototype.createEl = function(){
var el = vjs.MediaTechController.prototype.createEl.call(this, 'div', {
@@ -42,7 +42,6 @@ vjs.MediaFaker.prototype.muted = function(){ return false; };
vjs.MediaFaker.prototype.pause = function(){ return false; };
vjs.MediaFaker.prototype.paused = function(){ return true; };
vjs.MediaFaker.prototype.supportsFullScreen = function(){ return false; };
vjs.MediaFaker.prototype.features = {};
vjs.MediaFaker.prototype.buffered = function(){ return {}; };
vjs.MediaFaker.prototype.duration = function(){ return {}; };
+131 -3
Ver Arquivo
@@ -1,4 +1,13 @@
module('Player');
var playerClock;
module('Player', {
'setup': function() {
playerClock = sinon.useFakeTimers();
},
'teardown': function() {
playerClock.restore();
}
});
// Compiler doesn't like using 'this' in setup/teardown.
// module("Player", {
@@ -113,6 +122,29 @@ test('should get tag, source, and track settings', function(){
ok(player.el() === null, 'player el killed');
});
test('should asynchronously fire error events during source selection', function() {
expect(2);
sinon.stub(vjs.log, 'error');
var player = PlayerTest.makePlayer({
'techOrder': ['foo'],
'sources': [
{ 'src': 'http://vjs.zencdn.net/v/oceans.mp4', 'type': 'video/mp4' }
]
});
ok(player.options_['techOrder'][0] === 'foo', 'Foo listed as the only tech');
player.on('error', function(e) {
ok(player.error().code === 4, 'Source could not be played error thrown');
});
playerClock.tick(1);
player.dispose();
vjs.log.error.restore();
});
test('should set the width and height of the player', function(){
var player = PlayerTest.makePlayer({ width: 123, height: '100%' });
@@ -252,14 +284,14 @@ test('should set controls and trigger events', function() {
// var player = PlayerTest.makePlayer();
// player.on('fullscreenchange', function(){
// ok(true, 'fullscreenchange event fired');
// ok(this.isFullScreen() === true, 'isFullScreen is true');
// ok(this.isFullscreen() === true, 'isFullscreen is true');
// ok(this.el().className.indexOf('vjs-fullscreen') !== -1, 'vjs-fullscreen class added');
// player.dispose();
// start();
// });
// player.requestFullScreen();
// player.requestFullscreen();
// });
test('should toggle user the user state between active and inactive', function(){
@@ -518,3 +550,99 @@ test('should restore attributes from the original video tag when creating a new
equal(el.getAttribute('controls'), '', 'controls attribute was set properly');
equal(el.getAttribute('webkit-playsinline'), '', 'webkit-playsinline attribute was set properly');
});
test('should honor default inactivity timeout', function() {
var player;
var clock = sinon.useFakeTimers();
// default timeout is 2000ms
player = PlayerTest.makePlayer({});
equal(player.userActive(), true, 'User is active on creation');
clock.tick(1800);
equal(player.userActive(), true, 'User is still active');
clock.tick(500);
equal(player.userActive(), false, 'User is inactive after timeout expired');
clock.restore();
});
test('should honor configured inactivity timeout', function() {
var player;
var clock = sinon.useFakeTimers();
// default timeout is 2000ms, set to shorter 200ms
player = PlayerTest.makePlayer({
'inactivityTimeout': 200
});
equal(player.userActive(), true, 'User is active on creation');
clock.tick(150);
equal(player.userActive(), true, 'User is still active');
clock.tick(350);
// make sure user is now inactive after 500ms
equal(player.userActive(), false, 'User is inactive after timeout expired');
clock.restore();
});
test('should honor disabled inactivity timeout', function() {
var player;
var clock = sinon.useFakeTimers();
// default timeout is 2000ms, disable by setting to zero
player = PlayerTest.makePlayer({
'inactivityTimeout': 0
});
equal(player.userActive(), true, 'User is active on creation');
clock.tick(5000);
equal(player.userActive(), true, 'User is still active');
clock.restore();
});
test('should clear pending errors on disposal', function() {
var clock = sinon.useFakeTimers(), player;
player = PlayerTest.makePlayer();
player.src({
src: 'http://example.com/movie.unsupported-format',
type: 'video/unsupported-format'
});
player.dispose();
try {
clock.tick(5000);
} catch (e) {
return ok(!e, 'threw an error: ' + e.message);
}
ok(true, 'did not throw an error after disposal');
});
test('pause is called when player ended event is fired and player is not paused', function() {
var video = document.createElement('video'),
player = PlayerTest.makePlayer({}, video),
pauses = 0;
player.paused = function() {
return false;
};
player.pause = function() {
pauses++;
};
player.trigger('ended');
equal(pauses, 1, 'pause was called');
});
test('pause is not called if the player is paused and ended is fired', function() {
var video = document.createElement('video'),
player = PlayerTest.makePlayer({}, video),
pauses = 0;
player.paused = function() {
return true;
};
player.pause = function() {
pauses++;
};
player.trigger('ended');
equal(pauses, 0, 'pause was not called when ended fired');
});
+1 -1
Ver Arquivo
@@ -14,7 +14,7 @@ var PlayerTest = {
fixture.appendChild(videoTag);
playerOptions = playerOptions || {};
playerOptions['techOrder'] = ['mediaFaker'];
playerOptions['techOrder'] = playerOptions['techOrder'] || ['mediaFaker'];
return player = new videojs.Player(videoTag, playerOptions);
}
+1 -1
Ver Arquivo
@@ -26,4 +26,4 @@ test('should merge options objects', function(){
c: true,
d: true
}, 'options objects merged correctly');
});
});