2011-01-31 06:50:33 +01:00
/ *
* jPlayer Plugin for jQuery JavaScript Library
2011-09-27 19:31:02 +02:00
* http : //www.jplayer.org
2011-01-31 06:50:33 +01:00
*
2014-10-21 22:15:05 +02:00
* Copyright ( c ) 2009 - 2014 Happyworm Ltd
2013-08-09 19:04:33 +02:00
* Licensed under the MIT license .
* http : //opensource.org/licenses/MIT
2011-01-31 06:50:33 +01:00
*
* Author : Mark J Panaghiston
2014-10-21 22:15:05 +02:00
* Version : 2.7 . 0
* Date : 1 st September 2014
2011-01-31 06:50:33 +01:00
* /
2013-12-16 23:14:00 +01:00
2013-08-09 19:04:33 +02:00
( function ( b , f ) { "function" === typeof define && define . amd ? define ( [ "jquery" ] , f ) : b . jQuery ? f ( b . jQuery ) : f ( b . Zepto ) } ) ( this , function ( b , f ) { b . fn . jPlayer = function ( a ) { var c = "string" === typeof a , d = Array . prototype . slice . call ( arguments , 1 ) , e = this ; a = ! c && d . length ? b . extend . apply ( null , [ ! 0 , a ] . concat ( d ) ) : a ; if ( c && "_" === a . charAt ( 0 ) ) return e ; c ? this . each ( function ( ) { var c = b ( this ) . data ( "jPlayer" ) , h = c && b . isFunction ( c [ a ] ) ? c [ a ] . apply ( c , d ) : c ; if ( h !== c && h !== f ) return e = h , ! 1 } ) : this . each ( function ( ) { var c = b ( this ) . data ( "jPlayer" ) ; c ? c . option ( a ||
{ } ) : b ( this ) . data ( "jPlayer" , new b . jPlayer ( a , this ) ) } ) ; return e } ; b . jPlayer = function ( a , c ) { if ( arguments . length ) { this . element = b ( c ) ; this . options = b . extend ( ! 0 , { } , this . options , a ) ; var d = this ; this . element . bind ( "remove.jPlayer" , function ( ) { d . destroy ( ) } ) ; this . _init ( ) } } ; "function" !== typeof b . fn . stop && ( b . fn . stop = function ( ) { } ) ; b . jPlayer . emulateMethods = "load play pause" ; b . jPlayer . emulateStatus = "src readyState networkState currentTime duration paused ended playbackRate" ; b . jPlayer . emulateOptions = "muted volume" ; b . jPlayer . reservedEvent =
2014-10-21 22:15:05 +02:00
"ready flashreset resize repeat error warning" ; b . jPlayer . event = { } ; b . each ( "ready setmedia flashreset resize repeat click error warning loadstart progress suspend abort emptied stalled play pause loadedmetadata loadeddata waiting playing canplay canplaythrough seeking seeked timeupdate ended ratechange durationchange volumechange" . split ( " " ) , function ( ) { b . jPlayer . event [ this ] = "jPlayer_" + this } ) ; b . jPlayer . htmlEvent = "loadstart abort emptied stalled loadedmetadata loadeddata canplay canplaythrough" . split ( " " ) ;
b . jPlayer . pause = function ( ) { b . each ( b . jPlayer . prototype . instances , function ( a , c ) { c . data ( "jPlayer" ) . status . srcSet && c . jPlayer ( "pause" ) } ) } ; b . jPlayer . timeFormat = { showHour : ! 1 , showMin : ! 0 , showSec : ! 0 , padHour : ! 1 , padMin : ! 0 , padSec : ! 0 , sepHour : ":" , sepMin : ":" , sepSec : "" } ; var l = function ( ) { this . init ( ) } ; l . prototype = { init : function ( ) { this . options = { timeFormat : b . jPlayer . timeFormat } } , time : function ( a ) { var c = new Date ( 1E3 * ( a && "number" === typeof a ? a : 0 ) ) , b = c . getUTCHours ( ) ; a = this . options . timeFormat . showHour ? c . getUTCMinutes ( ) : c . getUTCMinutes ( ) +
60 * b ; c = this . options . timeFormat . showMin ? c . getUTCSeconds ( ) : c . getUTCSeconds ( ) + 60 * a ; b = this . options . timeFormat . padHour && 10 > b ? "0" + b : b ; a = this . options . timeFormat . padMin && 10 > a ? "0" + a : a ; c = this . options . timeFormat . padSec && 10 > c ? "0" + c : c ; b = "" + ( this . options . timeFormat . showHour ? b + this . options . timeFormat . sepHour : "" ) ; b += this . options . timeFormat . showMin ? a + this . options . timeFormat . sepMin : "" ; return b += this . options . timeFormat . showSec ? c + this . options . timeFormat . sepSec : "" } } ; var n = new l ; b . jPlayer . convertTime = function ( a ) { return n . time ( a ) } ;
2013-12-16 23:14:00 +01:00
b . jPlayer . uaBrowser = function ( a ) { a = a . toLowerCase ( ) ; var c = /(opera)(?:.*version)?[ \/]([\w.]+)/ , b = /(msie) ([\w.]+)/ , e = /(mozilla)(?:.*? rv:([\w.]+))?/ ; a = /(webkit)[ \/]([\w.]+)/ . exec ( a ) || c . exec ( a ) || b . exec ( a ) || 0 > a . indexOf ( "compatible" ) && e . exec ( a ) || [ ] ; return { browser : a [ 1 ] || "" , version : a [ 2 ] || "0" } } ; b . jPlayer . uaPlatform = function ( a ) { var c = a . toLowerCase ( ) , b = /(android)/ , e = /(mobile)/ ; a = /(ipad|iphone|ipod|android|blackberry|playbook|windows ce|webos)/ . exec ( c ) || [ ] ; c = /(ipad|playbook)/ . exec ( c ) || ! e . exec ( c ) && b . exec ( c ) ||
[ ] ; a [ 1 ] && ( a [ 1 ] = a [ 1 ] . replace ( /\s/g , "_" ) ) ; return { platform : a [ 1 ] || "" , tablet : c [ 1 ] || "" } } ; b . jPlayer . browser = { } ; b . jPlayer . platform = { } ; var k = b . jPlayer . uaBrowser ( navigator . userAgent ) ; k . browser && ( b . jPlayer . browser [ k . browser ] = ! 0 , b . jPlayer . browser . version = k . version ) ; k = b . jPlayer . uaPlatform ( navigator . userAgent ) ; k . platform && ( b . jPlayer . platform [ k . platform ] = ! 0 , b . jPlayer . platform . mobile = ! k . tablet , b . jPlayer . platform . tablet = ! ! k . tablet ) ; b . jPlayer . getDocMode = function ( ) { var a ; b . jPlayer . browser . msie && ( document . documentMode ?
a = document . documentMode : ( a = 5 , document . compatMode && "CSS1Compat" === document . compatMode && ( a = 7 ) ) ) ; return a } ; b . jPlayer . browser . documentMode = b . jPlayer . getDocMode ( ) ; b . jPlayer . nativeFeatures = { init : function ( ) { var a = document , c = a . createElement ( "video" ) , b = { w3c : "fullscreenEnabled fullscreenElement requestFullscreen exitFullscreen fullscreenchange fullscreenerror" . split ( " " ) , moz : "mozFullScreenEnabled mozFullScreenElement mozRequestFullScreen mozCancelFullScreen mozfullscreenchange mozfullscreenerror" . split ( " " ) ,
webkit : " webkitCurrentFullScreenElement webkitRequestFullScreen webkitCancelFullScreen webkitfullscreenchange " . split ( " " ) , webkitVideo : "webkitSupportsFullscreen webkitDisplayingFullscreen webkitEnterFullscreen webkitExitFullscreen " . split ( " " ) } , e = [ "w3c" , "moz" , "webkit" , "webkitVideo" ] , g , h ; this . fullscreen = c = { support : { w3c : ! ! a [ b . w3c [ 0 ] ] , moz : ! ! a [ b . moz [ 0 ] ] , webkit : "function" === typeof a [ b . webkit [ 3 ] ] , webkitVideo : "function" === typeof c [ b . webkitVideo [ 2 ] ] } , used : { } } ; g = 0 ; for ( h = e . length ; g < h ; g ++ ) { var f = e [ g ] ; if ( c . support [ f ] ) { c . spec =
2014-10-21 22:15:05 +02:00
f ; c . used [ f ] = ! 0 ; break } } if ( c . spec ) { var m = b [ c . spec ] ; c . api = { fullscreenEnabled : ! 0 , fullscreenElement : function ( c ) { c = c ? c : a ; return c [ m [ 1 ] ] } , requestFullscreen : function ( a ) { return a [ m [ 2 ] ] ( ) } , exitFullscreen : function ( c ) { c = c ? c : a ; return c [ m [ 3 ] ] ( ) } } ; c . event = { fullscreenchange : m [ 4 ] , fullscreenerror : m [ 5 ] } } else c . api = { fullscreenEnabled : ! 1 , fullscreenElement : function ( ) { return null } , requestFullscreen : function ( ) { } , exitFullscreen : function ( ) { } } , c . event = { } } } ; b . jPlayer . nativeFeatures . init ( ) ; b . jPlayer . focus = null ; b . jPlayer . keyIgnoreElementNames =
"A INPUT TEXTAREA SELECT BUTTON" ; var p = function ( a ) { var c = b . jPlayer . focus , d = document . activeElement , e ; c && ( "undefined" !== typeof d ? null !== d && "BODY" !== d . nodeName . toUpperCase ( ) && ( e = ! 0 ) : b . each ( b . jPlayer . keyIgnoreElementNames . split ( /\s+/g ) , function ( c , b ) { if ( a . target . nodeName . toUpperCase ( ) === b . toUpperCase ( ) ) return e = ! 0 , ! 1 } ) , e || b . each ( c . options . keyBindings , function ( d , e ) { if ( e && a . which === e . key && b . isFunction ( e . fn ) ) return a . preventDefault ( ) , e . fn ( c ) , ! 1 } ) ) } ; b . jPlayer . keys = function ( a ) { b ( document . documentElement ) . unbind ( "keydown.jPlayer" ) ;
a && b ( document . documentElement ) . bind ( "keydown.jPlayer" , p ) } ; b . jPlayer . keys ( ! 0 ) ; b . jPlayer . prototype = { count : 0 , version : { script : "2.7.0" , needFlash : "2.7.0" , flash : "unknown" } , options : { swfPath : "js" , solution : "html, flash" , supplied : "mp3" , preload : "metadata" , volume : . 8 , muted : ! 1 , remainingDuration : ! 1 , toggleDuration : ! 1 , captureDuration : ! 0 , playbackRate : 1 , defaultPlaybackRate : 1 , minPlaybackRate : . 5 , maxPlaybackRate : 4 , wmode : "opaque" , backgroundColor : "#000000" , cssSelectorAncestor : "#jp_container_1" , cssSelector : { videoPlay : ".jp-video-play" ,
play : ".jp-play" , pause : ".jp-pause" , stop : ".jp-stop" , seekBar : ".jp-seek-bar" , playBar : ".jp-play-bar" , mute : ".jp-mute" , unmute : ".jp-unmute" , volumeBar : ".jp-volume-bar" , volumeBarValue : ".jp-volume-bar-value" , volumeMax : ".jp-volume-max" , playbackRateBar : ".jp-playback-rate-bar" , playbackRateBarValue : ".jp-playback-rate-bar-value" , currentTime : ".jp-current-time" , duration : ".jp-duration" , title : ".jp-title" , fullScreen : ".jp-full-screen" , restoreScreen : ".jp-restore-screen" , repeat : ".jp-repeat" , repeatOff : ".jp-repeat-off" , gui : ".jp-gui" ,
noSolution : ".jp-no-solution" } , stateClass : { playing : "jp-state-playing" , seeking : "jp-state-seeking" , muted : "jp-state-muted" , looped : "jp-state-looped" , fullScreen : "jp-state-full-screen" } , useStateClassSkin : ! 1 , autoBlur : ! 0 , smoothPlayBar : ! 1 , fullScreen : ! 1 , fullWindow : ! 1 , autohide : { restored : ! 1 , full : ! 0 , fadeIn : 200 , fadeOut : 600 , hold : 1E3 } , loop : ! 1 , repeat : function ( a ) { a . jPlayer . options . loop ? b ( this ) . unbind ( ".jPlayerRepeat" ) . bind ( b . jPlayer . event . ended + ".jPlayer.jPlayerRepeat" , function ( ) { b ( this ) . jPlayer ( "play" ) } ) : b ( this ) . unbind ( ".jPlayerRepeat" ) } ,
nativeVideoControls : { } , noFullWindow : { msie : /msie [0-6]\./ , ipad : /ipad.*?os [0-4]\./ , iphone : /iphone/ , ipod : /ipod/ , android _pad : /android [0-3]\.(?!.*?mobile)/ , android _phone : /android.*?mobile/ , blackberry : /blackberry/ , windows _ce : /windows ce/ , iemobile : /iemobile/ , webos : /webos/ } , noVolume : { ipad : /ipad/ , iphone : /iphone/ , ipod : /ipod/ , android _pad : /android(?!.*?mobile)/ , android _phone : /android.*?mobile/ , blackberry : /blackberry/ , windows _ce : /windows ce/ , iemobile : /iemobile/ , webos : /webos/ , playbook : /playbook/ } , timeFormat : { } ,
keyEnabled : ! 1 , audioFullScreen : ! 1 , keyBindings : { play : { key : 32 , fn : function ( a ) { a . status . paused ? a . play ( ) : a . pause ( ) } } , fullScreen : { key : 13 , fn : function ( a ) { ( a . status . video || a . options . audioFullScreen ) && a . _setOption ( "fullScreen" , ! a . options . fullScreen ) } } , muted : { key : 8 , fn : function ( a ) { a . _muted ( ! a . options . muted ) } } , volumeUp : { key : 38 , fn : function ( a ) { a . volume ( a . options . volume + . 1 ) } } , volumeDown : { key : 40 , fn : function ( a ) { a . volume ( a . options . volume - . 1 ) } } } , verticalVolume : ! 1 , verticalPlaybackRate : ! 1 , globalVolume : ! 1 , idPrefix : "jp" ,
noConflict : "jQuery" , emulateHtml : ! 1 , consoleAlerts : ! 0 , errorAlerts : ! 1 , warningAlerts : ! 1 } , optionsAudio : { size : { width : "0px" , height : "0px" , cssClass : "" } , sizeFull : { width : "0px" , height : "0px" , cssClass : "" } } , optionsVideo : { size : { width : "480px" , height : "270px" , cssClass : "jp-video-270p" } , sizeFull : { width : "100%" , height : "100%" , cssClass : "jp-video-full" } } , instances : { } , status : { src : "" , media : { } , paused : ! 0 , format : { } , formatType : "" , waitForPlay : ! 0 , waitForLoad : ! 0 , srcSet : ! 1 , video : ! 1 , seekPercent : 0 , currentPercentRelative : 0 , currentPercentAbsolute : 0 ,
currentTime : 0 , duration : 0 , remaining : 0 , videoWidth : 0 , videoHeight : 0 , readyState : 0 , networkState : 0 , playbackRate : 1 , ended : 0 } , internal : { ready : ! 1 } , solution : { html : ! 0 , flash : ! 0 } , format : { mp3 : { codec : "audio/mpeg" , flashCanPlay : ! 0 , media : "audio" } , m4a : { codec : 'audio/mp4; codecs="mp4a.40.2"' , flashCanPlay : ! 0 , media : "audio" } , m3u8a : { codec : 'application/vnd.apple.mpegurl; codecs="mp4a.40.2"' , flashCanPlay : ! 1 , media : "audio" } , m3ua : { codec : "audio/mpegurl" , flashCanPlay : ! 1 , media : "audio" } , oga : { codec : 'audio/ogg; codecs="vorbis, opus"' ,
flashCanPlay : ! 1 , media : "audio" } , flac : { codec : "audio/x-flac" , flashCanPlay : ! 1 , media : "audio" } , wav : { codec : 'audio/wav; codecs="1"' , flashCanPlay : ! 1 , media : "audio" } , webma : { codec : 'audio/webm; codecs="vorbis"' , flashCanPlay : ! 1 , media : "audio" } , fla : { codec : "audio/x-flv" , flashCanPlay : ! 0 , media : "audio" } , rtmpa : { codec : 'audio/rtmp; codecs="rtmp"' , flashCanPlay : ! 0 , media : "audio" } , m4v : { codec : 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"' , flashCanPlay : ! 0 , media : "video" } , m3u8v : { codec : 'application/vnd.apple.mpegurl; codecs="avc1.42E01E, mp4a.40.2"' ,
flashCanPlay : ! 1 , media : "video" } , m3uv : { codec : "audio/mpegurl" , flashCanPlay : ! 1 , media : "video" } , ogv : { codec : 'video/ogg; codecs="theora, vorbis"' , flashCanPlay : ! 1 , media : "video" } , webmv : { codec : 'video/webm; codecs="vorbis, vp8"' , flashCanPlay : ! 1 , media : "video" } , flv : { codec : "video/x-flv" , flashCanPlay : ! 0 , media : "video" } , rtmpv : { codec : 'video/rtmp; codecs="rtmp"' , flashCanPlay : ! 0 , media : "video" } } , _init : function ( ) { var a = this ; this . element . empty ( ) ; this . status = b . extend ( { } , this . status ) ; this . internal = b . extend ( { } , this . internal ) ;
this . options . timeFormat = b . extend ( { } , b . jPlayer . timeFormat , this . options . timeFormat ) ; this . internal . cmdsIgnored = b . jPlayer . platform . ipad || b . jPlayer . platform . iphone || b . jPlayer . platform . ipod ; this . internal . domNode = this . element . get ( 0 ) ; this . options . keyEnabled && ! b . jPlayer . focus && ( b . jPlayer . focus = this ) ; this . androidFix = { setMedia : ! 1 , play : ! 1 , pause : ! 1 , time : NaN } ; b . jPlayer . platform . android && ( this . options . preload = "auto" !== this . options . preload ? "metadata" : "auto" ) ; this . formats = [ ] ; this . solutions = [ ] ; this . require = { } ; this . htmlElement =
{ } ; this . html = { } ; this . html . audio = { } ; this . html . video = { } ; this . flash = { } ; this . css = { } ; this . css . cs = { } ; this . css . jq = { } ; this . ancestorJq = [ ] ; this . options . volume = this . _limitValue ( this . options . volume , 0 , 1 ) ; b . each ( this . options . supplied . toLowerCase ( ) . split ( "," ) , function ( c , d ) { var e = d . replace ( /^\s+|\s+$/g , "" ) ; if ( a . format [ e ] ) { var f = ! 1 ; b . each ( a . formats , function ( a , c ) { if ( e === c ) return f = ! 0 , ! 1 } ) ; f || a . formats . push ( e ) } } ) ; b . each ( this . options . solution . toLowerCase ( ) . split ( "," ) , function ( c , d ) { var e = d . replace ( /^\s+|\s+$/g , "" ) ; if ( a . solution [ e ] ) { var f =
! 1 ; b . each ( a . solutions , function ( a , c ) { if ( e === c ) return f = ! 0 , ! 1 } ) ; f || a . solutions . push ( e ) } } ) ; this . internal . instance = "jp_" + this . count ; this . instances [ this . internal . instance ] = this . element ; this . element . attr ( "id" ) || this . element . attr ( "id" , this . options . idPrefix + "_jplayer_" + this . count ) ; this . internal . self = b . extend ( { } , { id : this . element . attr ( "id" ) , jq : this . element } ) ; this . internal . audio = b . extend ( { } , { id : this . options . idPrefix + "_audio_" + this . count , jq : f } ) ; this . internal . video = b . extend ( { } , { id : this . options . idPrefix + "_video_" +
this . count , jq : f } ) ; this . internal . flash = b . extend ( { } , { id : this . options . idPrefix + "_flash_" + this . count , jq : f , swf : this . options . swfPath + ( ".swf" !== this . options . swfPath . toLowerCase ( ) . slice ( - 4 ) ? ( this . options . swfPath && "/" !== this . options . swfPath . slice ( - 1 ) ? "/" : "" ) + "Jplayer.swf" : "" ) } ) ; this . internal . poster = b . extend ( { } , { id : this . options . idPrefix + "_poster_" + this . count , jq : f } ) ; b . each ( b . jPlayer . event , function ( c , b ) { a . options [ c ] !== f && ( a . element . bind ( b + ".jPlayer" , a . options [ c ] ) , a . options [ c ] = f ) } ) ; this . require . audio = ! 1 ; this . require . video =
! 1 ; b . each ( this . formats , function ( c , b ) { a . require [ a . format [ b ] . media ] = ! 0 } ) ; this . options = this . require . video ? b . extend ( ! 0 , { } , this . optionsVideo , this . options ) : b . extend ( ! 0 , { } , this . optionsAudio , this . options ) ; this . _setSize ( ) ; this . status . nativeVideoControls = this . _uaBlocklist ( this . options . nativeVideoControls ) ; this . status . noFullWindow = this . _uaBlocklist ( this . options . noFullWindow ) ; this . status . noVolume = this . _uaBlocklist ( this . options . noVolume ) ; b . jPlayer . nativeFeatures . fullscreen . api . fullscreenEnabled && this . _fullscreenAddEventListeners ( ) ;
this . _restrictNativeVideoControls ( ) ; this . htmlElement . poster = document . createElement ( "img" ) ; this . htmlElement . poster . id = this . internal . poster . id ; this . htmlElement . poster . onload = function ( ) { a . status . video && ! a . status . waitForPlay || a . internal . poster . jq . show ( ) } ; this . element . append ( this . htmlElement . poster ) ; this . internal . poster . jq = b ( "#" + this . internal . poster . id ) ; this . internal . poster . jq . css ( { width : this . status . width , height : this . status . height } ) ; this . internal . poster . jq . hide ( ) ; this . internal . poster . jq . bind ( "click.jPlayer" ,
function ( ) { a . _trigger ( b . jPlayer . event . click ) } ) ; this . html . audio . available = ! 1 ; this . require . audio && ( this . htmlElement . audio = document . createElement ( "audio" ) , this . htmlElement . audio . id = this . internal . audio . id , this . html . audio . available = ! ! this . htmlElement . audio . canPlayType && this . _testCanPlayType ( this . htmlElement . audio ) ) ; this . html . video . available = ! 1 ; this . require . video && ( this . htmlElement . video = document . createElement ( "video" ) , this . htmlElement . video . id = this . internal . video . id , this . html . video . available = ! ! this . htmlElement . video . canPlayType &&
this . _testCanPlayType ( this . htmlElement . video ) ) ; this . flash . available = this . _checkForFlash ( 10.1 ) ; this . html . canPlay = { } ; this . flash . canPlay = { } ; b . each ( this . formats , function ( c , b ) { a . html . canPlay [ b ] = a . html [ a . format [ b ] . media ] . available && "" !== a . htmlElement [ a . format [ b ] . media ] . canPlayType ( a . format [ b ] . codec ) ; a . flash . canPlay [ b ] = a . format [ b ] . flashCanPlay && a . flash . available } ) ; this . html . desired = ! 1 ; this . flash . desired = ! 1 ; b . each ( this . solutions , function ( c , d ) { if ( 0 === c ) a [ d ] . desired = ! 0 ; else { var e = ! 1 , f = ! 1 ; b . each ( a . formats , function ( c ,
b ) { a [ a . solutions [ 0 ] ] . canPlay [ b ] && ( "video" === a . format [ b ] . media ? f = ! 0 : e = ! 0 ) } ) ; a [ d ] . desired = a . require . audio && ! e || a . require . video && ! f } } ) ; this . html . support = { } ; this . flash . support = { } ; b . each ( this . formats , function ( c , b ) { a . html . support [ b ] = a . html . canPlay [ b ] && a . html . desired ; a . flash . support [ b ] = a . flash . canPlay [ b ] && a . flash . desired } ) ; this . html . used = ! 1 ; this . flash . used = ! 1 ; b . each ( this . solutions , function ( c , d ) { b . each ( a . formats , function ( c , b ) { if ( a [ d ] . support [ b ] ) return a [ d ] . used = ! 0 , ! 1 } ) } ) ; this . _resetActive ( ) ; this . _resetGate ( ) ;
this . _cssSelectorAncestor ( this . options . cssSelectorAncestor ) ; this . html . used || this . flash . used ? this . css . jq . noSolution . length && this . css . jq . noSolution . hide ( ) : ( this . _error ( { type : b . jPlayer . error . NO _SOLUTION , context : "{solution:'" + this . options . solution + "', supplied:'" + this . options . supplied + "'}" , message : b . jPlayer . errorMsg . NO _SOLUTION , hint : b . jPlayer . errorHint . NO _SOLUTION } ) , this . css . jq . noSolution . length && this . css . jq . noSolution . show ( ) ) ; if ( this . flash . used ) { var c , d = "jQuery=" + encodeURI ( this . options . noConflict ) + "&id=" +
encodeURI ( this . internal . self . id ) + "&vol=" + this . options . volume + "&muted=" + this . options . muted ; if ( b . jPlayer . browser . msie && ( 9 > Number ( b . jPlayer . browser . version ) || 9 > b . jPlayer . browser . documentMode ) ) { d = [ '<param name="movie" value="' + this . internal . flash . swf + '" />' , '<param name="FlashVars" value="' + d + '" />' , '<param name="allowScriptAccess" value="always" />' , '<param name="bgcolor" value="' + this . options . backgroundColor + '" />' , '<param name="wmode" value="' + this . options . wmode + '" />' ] ; c = document . createElement ( '<object id="' +
this . internal . flash . id + '" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="0" height="0" tabindex="-1"></object>' ) ; for ( var e = 0 ; e < d . length ; e ++ ) c . appendChild ( document . createElement ( d [ e ] ) ) } else e = function ( a , c , b ) { var d = document . createElement ( "param" ) ; d . setAttribute ( "name" , c ) ; d . setAttribute ( "value" , b ) ; a . appendChild ( d ) } , c = document . createElement ( "object" ) , c . setAttribute ( "id" , this . internal . flash . id ) , c . setAttribute ( "name" , this . internal . flash . id ) , c . setAttribute ( "data" , this . internal . flash . swf ) , c . setAttribute ( "type" ,
"application/x-shockwave-flash" ) , c . setAttribute ( "width" , "1" ) , c . setAttribute ( "height" , "1" ) , c . setAttribute ( "tabindex" , "-1" ) , e ( c , "flashvars" , d ) , e ( c , "allowscriptaccess" , "always" ) , e ( c , "bgcolor" , this . options . backgroundColor ) , e ( c , "wmode" , this . options . wmode ) ; this . element . append ( c ) ; this . internal . flash . jq = b ( c ) } this . status . playbackRateEnabled = this . html . used && ! this . flash . used ? this . _testPlaybackRate ( "audio" ) : ! 1 ; this . _updatePlaybackRate ( ) ; this . html . used && ( this . html . audio . available && ( this . _addHtmlEventListeners ( this . htmlElement . audio ,
this . html . audio ) , this . element . append ( this . htmlElement . audio ) , this . internal . audio . jq = b ( "#" + this . internal . audio . id ) ) , this . html . video . available && ( this . _addHtmlEventListeners ( this . htmlElement . video , this . html . video ) , this . element . append ( this . htmlElement . video ) , this . internal . video . jq = b ( "#" + this . internal . video . id ) , this . status . nativeVideoControls ? this . internal . video . jq . css ( { width : this . status . width , height : this . status . height } ) : this . internal . video . jq . css ( { width : "0px" , height : "0px" } ) , this . internal . video . jq . bind ( "click.jPlayer" ,
function ( ) { a . _trigger ( b . jPlayer . event . click ) } ) ) ) ; this . options . emulateHtml && this . _emulateHtmlBridge ( ) ; this . html . used && ! this . flash . used && setTimeout ( function ( ) { a . internal . ready = ! 0 ; a . version . flash = "n/a" ; a . _trigger ( b . jPlayer . event . repeat ) ; a . _trigger ( b . jPlayer . event . ready ) } , 100 ) ; this . _updateNativeVideoControls ( ) ; this . css . jq . videoPlay . length && this . css . jq . videoPlay . hide ( ) ; b . jPlayer . prototype . count ++ } , destroy : function ( ) { this . clearMedia ( ) ; this . _removeUiClass ( ) ; this . css . jq . currentTime . length && this . css . jq . currentTime . text ( "" ) ;
this . css . jq . duration . length && this . css . jq . duration . text ( "" ) ; b . each ( this . css . jq , function ( a , c ) { c . length && c . unbind ( ".jPlayer" ) } ) ; this . internal . poster . jq . unbind ( ".jPlayer" ) ; this . internal . video . jq && this . internal . video . jq . unbind ( ".jPlayer" ) ; this . _fullscreenRemoveEventListeners ( ) ; this === b . jPlayer . focus && ( b . jPlayer . focus = null ) ; this . options . emulateHtml && this . _destroyHtmlBridge ( ) ; this . element . removeData ( "jPlayer" ) ; this . element . unbind ( ".jPlayer" ) ; this . element . empty ( ) ; delete this . instances [ this . internal . instance ] } ,
enable : function ( ) { } , disable : function ( ) { } , _testCanPlayType : function ( a ) { try { return a . canPlayType ( this . format . mp3 . codec ) , ! 0 } catch ( c ) { return ! 1 } } , _testPlaybackRate : function ( a ) { a = document . createElement ( "string" === typeof a ? a : "audio" ) ; try { return "playbackRate" in a ? ( a . playbackRate = . 5 , . 5 === a . playbackRate ) : ! 1 } catch ( c ) { return ! 1 } } , _uaBlocklist : function ( a ) { var c = navigator . userAgent . toLowerCase ( ) , d = ! 1 ; b . each ( a , function ( a , b ) { if ( b && b . test ( c ) ) return d = ! 0 , ! 1 } ) ; return d } , _restrictNativeVideoControls : function ( ) { this . require . audio &&
this . status . nativeVideoControls && ( this . status . nativeVideoControls = ! 1 , this . status . noFullWindow = ! 0 ) } , _updateNativeVideoControls : function ( ) { this . html . video . available && this . html . used && ( this . htmlElement . video . controls = this . status . nativeVideoControls , this . _updateAutohide ( ) , this . status . nativeVideoControls && this . require . video ? ( this . internal . poster . jq . hide ( ) , this . internal . video . jq . css ( { width : this . status . width , height : this . status . height } ) ) : this . status . waitForPlay && this . status . video && ( this . internal . poster . jq . show ( ) ,
this . internal . video . jq . css ( { width : "0px" , height : "0px" } ) ) ) } , _addHtmlEventListeners : function ( a , c ) { var d = this ; a . preload = this . options . preload ; a . muted = this . options . muted ; a . volume = this . options . volume ; this . status . playbackRateEnabled && ( a . defaultPlaybackRate = this . options . defaultPlaybackRate , a . playbackRate = this . options . playbackRate ) ; a . addEventListener ( "progress" , function ( ) { c . gate && ( d . internal . cmdsIgnored && 0 < this . readyState && ( d . internal . cmdsIgnored = ! 1 ) , d . androidFix . setMedia = ! 1 , d . androidFix . play && ( d . androidFix . play =
! 1 , d . play ( d . androidFix . time ) ) , d . androidFix . pause && ( d . androidFix . pause = ! 1 , d . pause ( d . androidFix . time ) ) , d . _getHtmlStatus ( a ) , d . _updateInterface ( ) , d . _trigger ( b . jPlayer . event . progress ) ) } , ! 1 ) ; a . addEventListener ( "timeupdate" , function ( ) { c . gate && ( d . _getHtmlStatus ( a ) , d . _updateInterface ( ) , d . _trigger ( b . jPlayer . event . timeupdate ) ) } , ! 1 ) ; a . addEventListener ( "durationchange" , function ( ) { c . gate && ( d . _getHtmlStatus ( a ) , d . _updateInterface ( ) , d . _trigger ( b . jPlayer . event . durationchange ) ) } , ! 1 ) ; a . addEventListener ( "play" , function ( ) { c . gate &&
( d . _updateButtons ( ! 0 ) , d . _html _checkWaitForPlay ( ) , d . _trigger ( b . jPlayer . event . play ) ) } , ! 1 ) ; a . addEventListener ( "playing" , function ( ) { c . gate && ( d . _updateButtons ( ! 0 ) , d . _seeked ( ) , d . _trigger ( b . jPlayer . event . playing ) ) } , ! 1 ) ; a . addEventListener ( "pause" , function ( ) { c . gate && ( d . _updateButtons ( ! 1 ) , d . _trigger ( b . jPlayer . event . pause ) ) } , ! 1 ) ; a . addEventListener ( "waiting" , function ( ) { c . gate && ( d . _seeking ( ) , d . _trigger ( b . jPlayer . event . waiting ) ) } , ! 1 ) ; a . addEventListener ( "seeking" , function ( ) { c . gate && ( d . _seeking ( ) , d . _trigger ( b . jPlayer . event . seeking ) ) } ,
! 1 ) ; a . addEventListener ( "seeked" , function ( ) { c . gate && ( d . _seeked ( ) , d . _trigger ( b . jPlayer . event . seeked ) ) } , ! 1 ) ; a . addEventListener ( "volumechange" , function ( ) { c . gate && ( d . options . volume = a . volume , d . options . muted = a . muted , d . _updateMute ( ) , d . _updateVolume ( ) , d . _trigger ( b . jPlayer . event . volumechange ) ) } , ! 1 ) ; a . addEventListener ( "ratechange" , function ( ) { c . gate && ( d . options . defaultPlaybackRate = a . defaultPlaybackRate , d . options . playbackRate = a . playbackRate , d . _updatePlaybackRate ( ) , d . _trigger ( b . jPlayer . event . ratechange ) ) } , ! 1 ) ;
a . addEventListener ( "suspend" , function ( ) { c . gate && ( d . _seeked ( ) , d . _trigger ( b . jPlayer . event . suspend ) ) } , ! 1 ) ; a . addEventListener ( "ended" , function ( ) { c . gate && ( b . jPlayer . browser . webkit || ( d . htmlElement . media . currentTime = 0 ) , d . htmlElement . media . pause ( ) , d . _updateButtons ( ! 1 ) , d . _getHtmlStatus ( a , ! 0 ) , d . _updateInterface ( ) , d . _trigger ( b . jPlayer . event . ended ) ) } , ! 1 ) ; a . addEventListener ( "error" , function ( ) { c . gate && ( d . _updateButtons ( ! 1 ) , d . _seeked ( ) , d . status . srcSet && ( clearTimeout ( d . internal . htmlDlyCmdId ) , d . status . waitForLoad =
! 0 , d . status . waitForPlay = ! 0 , d . status . video && ! d . status . nativeVideoControls && d . internal . video . jq . css ( { width : "0px" , height : "0px" } ) , d . _validString ( d . status . media . poster ) && ! d . status . nativeVideoControls && d . internal . poster . jq . show ( ) , d . css . jq . videoPlay . length && d . css . jq . videoPlay . show ( ) , d . _error ( { type : b . jPlayer . error . URL , context : d . status . src , message : b . jPlayer . errorMsg . URL , hint : b . jPlayer . errorHint . URL } ) ) ) } , ! 1 ) ; b . each ( b . jPlayer . htmlEvent , function ( e , g ) { a . addEventListener ( this , function ( ) { c . gate && d . _trigger ( b . jPlayer . event [ g ] ) } ,
! 1 ) } ) } , _getHtmlStatus : function ( a , c ) { var b = 0 , e = 0 , g = 0 , f = 0 ; isFinite ( a . duration ) && ( this . status . duration = a . duration ) ; b = a . currentTime ; e = 0 < this . status . duration ? 100 * b / this . status . duration : 0 ; "object" === typeof a . seekable && 0 < a . seekable . length ? ( g = 0 < this . status . duration ? 100 * a . seekable . end ( a . seekable . length - 1 ) / this . status . duration : 100 , f = 0 < this . status . duration ? 100 * a . currentTime / a . seekable . end ( a . seekable . length - 1 ) : 0 ) : ( g = 100 , f = e ) ; c && ( e = f = b = 0 ) ; this . status . seekPercent = g ; this . status . currentPercentRelative = f ; this . status . currentPercentAbsolute =
e ; this . status . currentTime = b ; this . status . remaining = this . status . duration - this . status . currentTime ; this . status . videoWidth = a . videoWidth ; this . status . videoHeight = a . videoHeight ; this . status . readyState = a . readyState ; this . status . networkState = a . networkState ; this . status . playbackRate = a . playbackRate ; this . status . ended = a . ended } , _resetStatus : function ( ) { this . status = b . extend ( { } , this . status , b . jPlayer . prototype . status ) } , _trigger : function ( a , c , d ) { a = b . Event ( a ) ; a . jPlayer = { } ; a . jPlayer . version = b . extend ( { } , this . version ) ; a . jPlayer . options =
b . extend ( ! 0 , { } , this . options ) ; a . jPlayer . status = b . extend ( ! 0 , { } , this . status ) ; a . jPlayer . html = b . extend ( ! 0 , { } , this . html ) ; a . jPlayer . flash = b . extend ( ! 0 , { } , this . flash ) ; c && ( a . jPlayer . error = b . extend ( { } , c ) ) ; d && ( a . jPlayer . warning = b . extend ( { } , d ) ) ; this . element . trigger ( a ) } , jPlayerFlashEvent : function ( a , c ) { if ( a === b . jPlayer . event . ready ) if ( ! this . internal . ready ) this . internal . ready = ! 0 , this . internal . flash . jq . css ( { width : "0px" , height : "0px" } ) , this . version . flash = c . version , this . version . needFlash !== this . version . flash && this . _error ( { type : b . jPlayer . error . VERSION ,
context : this . version . flash , message : b . jPlayer . errorMsg . VERSION + this . version . flash , hint : b . jPlayer . errorHint . VERSION } ) , this . _trigger ( b . jPlayer . event . repeat ) , this . _trigger ( a ) ; else if ( this . flash . gate ) { if ( this . status . srcSet ) { var d = this . status . currentTime , e = this . status . paused ; this . setMedia ( this . status . media ) ; this . volumeWorker ( this . options . volume ) ; 0 < d && ( e ? this . pause ( d ) : this . play ( d ) ) } this . _trigger ( b . jPlayer . event . flashreset ) } if ( this . flash . gate ) switch ( a ) { case b . jPlayer . event . progress : this . _getFlashStatus ( c ) ;
2013-08-09 19:04:33 +02:00
this . _updateInterface ( ) ; this . _trigger ( a ) ; break ; case b . jPlayer . event . timeupdate : this . _getFlashStatus ( c ) ; this . _updateInterface ( ) ; this . _trigger ( a ) ; break ; case b . jPlayer . event . play : this . _seeked ( ) ; this . _updateButtons ( ! 0 ) ; this . _trigger ( a ) ; break ; case b . jPlayer . event . pause : this . _updateButtons ( ! 1 ) ; this . _trigger ( a ) ; break ; case b . jPlayer . event . ended : this . _updateButtons ( ! 1 ) ; this . _trigger ( a ) ; break ; case b . jPlayer . event . click : this . _trigger ( a ) ; break ; case b . jPlayer . event . error : this . status . waitForLoad = ! 0 ; this . status . waitForPlay =
! 0 ; this . status . video && this . internal . flash . jq . css ( { width : "0px" , height : "0px" } ) ; this . _validString ( this . status . media . poster ) && this . internal . poster . jq . show ( ) ; this . css . jq . videoPlay . length && this . status . video && this . css . jq . videoPlay . show ( ) ; this . status . video ? this . _flash _setVideo ( this . status . media ) : this . _flash _setAudio ( this . status . media ) ; this . _updateButtons ( ! 1 ) ; this . _error ( { type : b . jPlayer . error . URL , context : c . src , message : b . jPlayer . errorMsg . URL , hint : b . jPlayer . errorHint . URL } ) ; break ; case b . jPlayer . event . seeking : this . _seeking ( ) ;
2014-10-21 22:15:05 +02:00
this . _trigger ( a ) ; break ; case b . jPlayer . event . seeked : this . _seeked ( ) ; this . _trigger ( a ) ; break ; case b . jPlayer . event . ready : break ; default : this . _trigger ( a ) } return ! 1 } , _getFlashStatus : function ( a ) { this . status . seekPercent = a . seekPercent ; this . status . currentPercentRelative = a . currentPercentRelative ; this . status . currentPercentAbsolute = a . currentPercentAbsolute ; this . status . currentTime = a . currentTime ; this . status . duration = a . duration ; this . status . remaining = a . duration - a . currentTime ; this . status . videoWidth = a . videoWidth ; this . status . videoHeight =
a . videoHeight ; this . status . readyState = 4 ; this . status . networkState = 0 ; this . status . playbackRate = 1 ; this . status . ended = ! 1 } , _updateButtons : function ( a ) { a === f ? a = ! this . status . paused : this . status . paused = ! a ; a ? this . addStateClass ( "playing" ) : this . removeStateClass ( "playing" ) ; ! this . status . noFullWindow && this . options . fullWindow ? this . addStateClass ( "fullScreen" ) : this . removeStateClass ( "fullScreen" ) ; this . options . loop ? this . addStateClass ( "looped" ) : this . removeStateClass ( "looped" ) ; this . css . jq . play . length && this . css . jq . pause . length &&
( a ? ( this . css . jq . play . hide ( ) , this . css . jq . pause . show ( ) ) : ( this . css . jq . play . show ( ) , this . css . jq . pause . hide ( ) ) ) ; this . css . jq . restoreScreen . length && this . css . jq . fullScreen . length && ( this . status . noFullWindow ? ( this . css . jq . fullScreen . hide ( ) , this . css . jq . restoreScreen . hide ( ) ) : this . options . fullWindow ? ( this . css . jq . fullScreen . hide ( ) , this . css . jq . restoreScreen . show ( ) ) : ( this . css . jq . fullScreen . show ( ) , this . css . jq . restoreScreen . hide ( ) ) ) ; this . css . jq . repeat . length && this . css . jq . repeatOff . length && ( this . options . loop ? ( this . css . jq . repeat . hide ( ) ,
this . css . jq . repeatOff . show ( ) ) : ( this . css . jq . repeat . show ( ) , this . css . jq . repeatOff . hide ( ) ) ) } , _updateInterface : function ( ) { this . css . jq . seekBar . length && this . css . jq . seekBar . width ( this . status . seekPercent + "%" ) ; this . css . jq . playBar . length && ( this . options . smoothPlayBar ? this . css . jq . playBar . stop ( ) . animate ( { width : this . status . currentPercentAbsolute + "%" } , 250 , "linear" ) : this . css . jq . playBar . width ( this . status . currentPercentRelative + "%" ) ) ; var a = "" ; this . css . jq . currentTime . length && ( a = this . _convertTime ( this . status . currentTime ) ,
a !== this . css . jq . currentTime . text ( ) && this . css . jq . currentTime . text ( this . _convertTime ( this . status . currentTime ) ) ) ; var a = "" , a = this . status . duration , c = this . status . remaining ; this . css . jq . duration . length && ( "string" === typeof this . status . media . duration ? a = this . status . media . duration : ( "number" === typeof this . status . media . duration && ( a = this . status . media . duration , c = a - this . status . currentTime ) , a = this . options . remainingDuration ? ( 0 < c ? "-" : "" ) + this . _convertTime ( c ) : this . _convertTime ( a ) ) , a !== this . css . jq . duration . text ( ) && this . css . jq . duration . text ( a ) ) } ,
_convertTime : l . prototype . time , _seeking : function ( ) { this . css . jq . seekBar . length && this . css . jq . seekBar . addClass ( "jp-seeking-bg" ) ; this . addStateClass ( "seeking" ) } , _seeked : function ( ) { this . css . jq . seekBar . length && this . css . jq . seekBar . removeClass ( "jp-seeking-bg" ) ; this . removeStateClass ( "seeking" ) } , _resetGate : function ( ) { this . html . audio . gate = ! 1 ; this . html . video . gate = ! 1 ; this . flash . gate = ! 1 } , _resetActive : function ( ) { this . html . active = ! 1 ; this . flash . active = ! 1 } , _escapeHtml : function ( a ) { return a . split ( "&" ) . join ( "&" ) . split ( "<" ) . join ( "<" ) . split ( ">" ) . join ( ">" ) . split ( '"' ) . join ( """ ) } ,
_qualifyURL : function ( a ) { var c = document . createElement ( "div" ) ; c . innerHTML = '<a href="' + this . _escapeHtml ( a ) + '">x</a>' ; return c . firstChild . href } , _absoluteMediaUrls : function ( a ) { var c = this ; b . each ( a , function ( b , e ) { e && c . format [ b ] && ( a [ b ] = c . _qualifyURL ( e ) ) } ) ; return a } , addStateClass : function ( a ) { this . ancestorJq . length && this . ancestorJq . addClass ( this . options . stateClass [ a ] ) } , removeStateClass : function ( a ) { this . ancestorJq . length && this . ancestorJq . removeClass ( this . options . stateClass [ a ] ) } , setMedia : function ( a ) { var c = this ,
d = ! 1 , e = this . status . media . poster !== a . poster ; this . _resetMedia ( ) ; this . _resetGate ( ) ; this . _resetActive ( ) ; this . androidFix . setMedia = ! 1 ; this . androidFix . play = ! 1 ; this . androidFix . pause = ! 1 ; a = this . _absoluteMediaUrls ( a ) ; b . each ( this . formats , function ( e , f ) { var k = "video" === c . format [ f ] . media ; b . each ( c . solutions , function ( e , g ) { if ( c [ g ] . support [ f ] && c . _validString ( a [ f ] ) ) { var l = "html" === g ; k ? ( l ? ( c . html . video . gate = ! 0 , c . _html _setVideo ( a ) , c . html . active = ! 0 ) : ( c . flash . gate = ! 0 , c . _flash _setVideo ( a ) , c . flash . active = ! 0 ) , c . css . jq . videoPlay . length &&
c . css . jq . videoPlay . show ( ) , c . status . video = ! 0 ) : ( l ? ( c . html . audio . gate = ! 0 , c . _html _setAudio ( a ) , c . html . active = ! 0 , b . jPlayer . platform . android && ( c . androidFix . setMedia = ! 0 ) ) : ( c . flash . gate = ! 0 , c . _flash _setAudio ( a ) , c . flash . active = ! 0 ) , c . css . jq . videoPlay . length && c . css . jq . videoPlay . hide ( ) , c . status . video = ! 1 ) ; d = ! 0 ; return ! 1 } } ) ; if ( d ) return ! 1 } ) ; d ? ( this . status . nativeVideoControls && this . html . video . gate || ! this . _validString ( a . poster ) || ( e ? this . htmlElement . poster . src = a . poster : this . internal . poster . jq . show ( ) ) , this . css . jq . title . length &&
"string" === typeof a . title && ( this . css . jq . title . html ( a . title ) , this . htmlElement . audio && this . htmlElement . audio . setAttribute ( "title" , a . title ) , this . htmlElement . video && this . htmlElement . video . setAttribute ( "title" , a . title ) ) , this . status . srcSet = ! 0 , this . status . media = b . extend ( { } , a ) , this . _updateButtons ( ! 1 ) , this . _updateInterface ( ) , this . _trigger ( b . jPlayer . event . setmedia ) ) : this . _error ( { type : b . jPlayer . error . NO _SUPPORT , context : "{supplied:'" + this . options . supplied + "'}" , message : b . jPlayer . errorMsg . NO _SUPPORT , hint : b . jPlayer . errorHint . NO _SUPPORT } ) } ,
_resetMedia : function ( ) { this . _resetStatus ( ) ; this . _updateButtons ( ! 1 ) ; this . _updateInterface ( ) ; this . _seeked ( ) ; this . internal . poster . jq . hide ( ) ; clearTimeout ( this . internal . htmlDlyCmdId ) ; this . html . active ? this . _html _resetMedia ( ) : this . flash . active && this . _flash _resetMedia ( ) } , clearMedia : function ( ) { this . _resetMedia ( ) ; this . html . active ? this . _html _clearMedia ( ) : this . flash . active && this . _flash _clearMedia ( ) ; this . _resetGate ( ) ; this . _resetActive ( ) } , load : function ( ) { this . status . srcSet ? this . html . active ? this . _html _load ( ) : this . flash . active &&
this . _flash _load ( ) : this . _urlNotSetError ( "load" ) } , focus : function ( ) { this . options . keyEnabled && ( b . jPlayer . focus = this ) } , play : function ( a ) { "object" === typeof a && this . options . useStateClassSkin && ! this . status . paused ? this . pause ( a ) : ( a = "number" === typeof a ? a : NaN , this . status . srcSet ? ( this . focus ( ) , this . html . active ? this . _html _play ( a ) : this . flash . active && this . _flash _play ( a ) ) : this . _urlNotSetError ( "play" ) ) } , videoPlay : function ( ) { this . play ( ) } , pause : function ( a ) { a = "number" === typeof a ? a : NaN ; this . status . srcSet ? this . html . active ?
this . _html _pause ( a ) : this . flash . active && this . _flash _pause ( a ) : this . _urlNotSetError ( "pause" ) } , tellOthers : function ( a , c ) { var d = this , e = "function" === typeof c , g = Array . prototype . slice . call ( arguments ) ; "string" === typeof a && ( e && g . splice ( 1 , 1 ) , b . each ( this . instances , function ( ) { d . element !== this && ( e && ! c . call ( this . data ( "jPlayer" ) , d ) || this . jPlayer . apply ( this , g ) ) } ) ) } , pauseOthers : function ( a ) { this . tellOthers ( "pause" , function ( ) { return this . status . srcSet } , a ) } , stop : function ( ) { this . status . srcSet ? this . html . active ? this . _html _pause ( 0 ) :
this . flash . active && this . _flash _pause ( 0 ) : this . _urlNotSetError ( "stop" ) } , playHead : function ( a ) { a = this . _limitValue ( a , 0 , 100 ) ; this . status . srcSet ? this . html . active ? this . _html _playHead ( a ) : this . flash . active && this . _flash _playHead ( a ) : this . _urlNotSetError ( "playHead" ) } , _muted : function ( a ) { this . mutedWorker ( a ) ; this . options . globalVolume && this . tellOthers ( "mutedWorker" , function ( ) { return this . options . globalVolume } , a ) } , mutedWorker : function ( a ) { this . options . muted = a ; this . html . used && this . _html _setProperty ( "muted" , a ) ; this . flash . used &&
this . _flash _mute ( a ) ; this . html . video . gate || this . html . audio . gate || ( this . _updateMute ( a ) , this . _updateVolume ( this . options . volume ) , this . _trigger ( b . jPlayer . event . volumechange ) ) } , mute : function ( a ) { "object" === typeof a && this . options . useStateClassSkin && this . options . muted ? this . _muted ( ! 1 ) : ( a = a === f ? ! 0 : ! ! a , this . _muted ( a ) ) } , unmute : function ( a ) { a = a === f ? ! 0 : ! ! a ; this . _muted ( ! a ) } , _updateMute : function ( a ) { a === f && ( a = this . options . muted ) ; a ? this . addStateClass ( "muted" ) : this . removeStateClass ( "muted" ) ; this . css . jq . mute . length && this . css . jq . unmute . length &&
( this . status . noVolume ? ( this . css . jq . mute . hide ( ) , this . css . jq . unmute . hide ( ) ) : a ? ( this . css . jq . mute . hide ( ) , this . css . jq . unmute . show ( ) ) : ( this . css . jq . mute . show ( ) , this . css . jq . unmute . hide ( ) ) ) } , volume : function ( a ) { this . volumeWorker ( a ) ; this . options . globalVolume && this . tellOthers ( "volumeWorker" , function ( ) { return this . options . globalVolume } , a ) } , volumeWorker : function ( a ) { a = this . _limitValue ( a , 0 , 1 ) ; this . options . volume = a ; this . html . used && this . _html _setProperty ( "volume" , a ) ; this . flash . used && this . _flash _volume ( a ) ; this . html . video . gate ||
this . html . audio . gate || ( this . _updateVolume ( a ) , this . _trigger ( b . jPlayer . event . volumechange ) ) } , volumeBar : function ( a ) { if ( this . css . jq . volumeBar . length ) { var c = b ( a . currentTarget ) , d = c . offset ( ) , e = a . pageX - d . left , g = c . width ( ) ; a = c . height ( ) - a . pageY + d . top ; c = c . height ( ) ; this . options . verticalVolume ? this . volume ( a / c ) : this . volume ( e / g ) } this . options . muted && this . _muted ( ! 1 ) } , _updateVolume : function ( a ) { a === f && ( a = this . options . volume ) ; a = this . options . muted ? 0 : a ; this . status . noVolume ? ( this . css . jq . volumeBar . length && this . css . jq . volumeBar . hide ( ) ,
2013-12-16 23:14:00 +01:00
this . css . jq . volumeBarValue . length && this . css . jq . volumeBarValue . hide ( ) , this . css . jq . volumeMax . length && this . css . jq . volumeMax . hide ( ) ) : ( this . css . jq . volumeBar . length && this . css . jq . volumeBar . show ( ) , this . css . jq . volumeBarValue . length && ( this . css . jq . volumeBarValue . show ( ) , this . css . jq . volumeBarValue [ this . options . verticalVolume ? "height" : "width" ] ( 100 * a + "%" ) ) , this . css . jq . volumeMax . length && this . css . jq . volumeMax . show ( ) ) } , volumeMax : function ( ) { this . volume ( 1 ) ; this . options . muted && this . _muted ( ! 1 ) } , _cssSelectorAncestor : function ( a ) { var c =
this ; this . options . cssSelectorAncestor = a ; this . _removeUiClass ( ) ; this . ancestorJq = a ? b ( a ) : [ ] ; a && 1 !== this . ancestorJq . length && this . _warning ( { type : b . jPlayer . warning . CSS _SELECTOR _COUNT , context : a , message : b . jPlayer . warningMsg . CSS _SELECTOR _COUNT + this . ancestorJq . length + " found for cssSelectorAncestor." , hint : b . jPlayer . warningHint . CSS _SELECTOR _COUNT } ) ; this . _addUiClass ( ) ; b . each ( this . options . cssSelector , function ( a , b ) { c . _cssSelector ( a , b ) } ) ; this . _updateInterface ( ) ; this . _updateButtons ( ) ; this . _updateAutohide ( ) ; this . _updateVolume ( ) ;
2014-10-21 22:15:05 +02:00
this . _updateMute ( ) } , _cssSelector : function ( a , c ) { var d = this ; "string" === typeof c ? b . jPlayer . prototype . options . cssSelector [ a ] ? ( this . css . jq [ a ] && this . css . jq [ a ] . length && this . css . jq [ a ] . unbind ( ".jPlayer" ) , this . options . cssSelector [ a ] = c , this . css . cs [ a ] = this . options . cssSelectorAncestor + " " + c , this . css . jq [ a ] = c ? b ( this . css . cs [ a ] ) : [ ] , this . css . jq [ a ] . length && this [ a ] && this . css . jq [ a ] . bind ( "click.jPlayer" , function ( c ) { c . preventDefault ( ) ; d [ a ] ( c ) ; d . options . autoBlur && b ( this ) . blur ( ) } ) , c && 1 !== this . css . jq [ a ] . length && this . _warning ( { type : b . jPlayer . warning . CSS _SELECTOR _COUNT ,
2013-12-16 23:14:00 +01:00
context : this . css . cs [ a ] , message : b . jPlayer . warningMsg . CSS _SELECTOR _COUNT + this . css . jq [ a ] . length + " found for " + a + " method." , hint : b . jPlayer . warningHint . CSS _SELECTOR _COUNT } ) ) : this . _warning ( { type : b . jPlayer . warning . CSS _SELECTOR _METHOD , context : a , message : b . jPlayer . warningMsg . CSS _SELECTOR _METHOD , hint : b . jPlayer . warningHint . CSS _SELECTOR _METHOD } ) : this . _warning ( { type : b . jPlayer . warning . CSS _SELECTOR _STRING , context : c , message : b . jPlayer . warningMsg . CSS _SELECTOR _STRING , hint : b . jPlayer . warningHint . CSS _SELECTOR _STRING } ) } ,
2014-10-21 22:15:05 +02:00
duration : function ( a ) { this . options . toggleDuration && ( this . options . captureDuration && a . stopPropagation ( ) , this . _setOption ( "remainingDuration" , ! this . options . remainingDuration ) ) } , seekBar : function ( a ) { if ( this . css . jq . seekBar . length ) { var c = b ( a . currentTarget ) , d = c . offset ( ) ; a = a . pageX - d . left ; c = c . width ( ) ; this . playHead ( 100 * a / c ) } } , playbackRate : function ( a ) { this . _setOption ( "playbackRate" , a ) } , playbackRateBar : function ( a ) { if ( this . css . jq . playbackRateBar . length ) { var c = b ( a . currentTarget ) , d = c . offset ( ) , e = a . pageX - d . left , g = c . width ( ) ;
a = c . height ( ) - a . pageY + d . top ; c = c . height ( ) ; this . playbackRate ( ( this . options . verticalPlaybackRate ? a / c : e / g ) * ( this . options . maxPlaybackRate - this . options . minPlaybackRate ) + this . options . minPlaybackRate ) } } , _updatePlaybackRate : function ( ) { var a = ( this . options . playbackRate - this . options . minPlaybackRate ) / ( this . options . maxPlaybackRate - this . options . minPlaybackRate ) ; this . status . playbackRateEnabled ? ( this . css . jq . playbackRateBar . length && this . css . jq . playbackRateBar . show ( ) , this . css . jq . playbackRateBarValue . length && ( this . css . jq . playbackRateBarValue . show ( ) ,
this . css . jq . playbackRateBarValue [ this . options . verticalPlaybackRate ? "height" : "width" ] ( 100 * a + "%" ) ) ) : ( this . css . jq . playbackRateBar . length && this . css . jq . playbackRateBar . hide ( ) , this . css . jq . playbackRateBarValue . length && this . css . jq . playbackRateBarValue . hide ( ) ) } , repeat : function ( a ) { "object" === typeof a && this . options . useStateClassSkin && this . options . loop ? this . _loop ( ! 1 ) : this . _loop ( ! 0 ) } , repeatOff : function ( ) { this . _loop ( ! 1 ) } , _loop : function ( a ) { this . options . loop !== a && ( this . options . loop = a , this . _updateButtons ( ) , this . _trigger ( b . jPlayer . event . repeat ) ) } ,
option : function ( a , c ) { var d = a ; if ( 0 === arguments . length ) return b . extend ( ! 0 , { } , this . options ) ; if ( "string" === typeof a ) { var e = a . split ( "." ) ; if ( c === f ) { for ( var d = b . extend ( ! 0 , { } , this . options ) , g = 0 ; g < e . length ; g ++ ) if ( d [ e [ g ] ] !== f ) d = d [ e [ g ] ] ; else return this . _warning ( { type : b . jPlayer . warning . OPTION _KEY , context : a , message : b . jPlayer . warningMsg . OPTION _KEY , hint : b . jPlayer . warningHint . OPTION _KEY } ) , f ; return d } for ( var g = d = { } , h = 0 ; h < e . length ; h ++ ) h < e . length - 1 ? ( g [ e [ h ] ] = { } , g = g [ e [ h ] ] ) : g [ e [ h ] ] = c } this . _setOptions ( d ) ; return this } , _setOptions : function ( a ) { var c =
this ; b . each ( a , function ( a , b ) { c . _setOption ( a , b ) } ) ; return this } , _setOption : function ( a , c ) { var d = this ; switch ( a ) { case "volume" : this . volume ( c ) ; break ; case "muted" : this . _muted ( c ) ; break ; case "globalVolume" : this . options [ a ] = c ; break ; case "cssSelectorAncestor" : this . _cssSelectorAncestor ( c ) ; break ; case "cssSelector" : b . each ( c , function ( a , c ) { d . _cssSelector ( a , c ) } ) ; break ; case "playbackRate" : this . options [ a ] = c = this . _limitValue ( c , this . options . minPlaybackRate , this . options . maxPlaybackRate ) ; this . html . used && this . _html _setProperty ( "playbackRate" ,
c ) ; this . _updatePlaybackRate ( ) ; break ; case "defaultPlaybackRate" : this . options [ a ] = c = this . _limitValue ( c , this . options . minPlaybackRate , this . options . maxPlaybackRate ) ; this . html . used && this . _html _setProperty ( "defaultPlaybackRate" , c ) ; this . _updatePlaybackRate ( ) ; break ; case "minPlaybackRate" : this . options [ a ] = c = this . _limitValue ( c , . 1 , this . options . maxPlaybackRate - . 1 ) ; this . _updatePlaybackRate ( ) ; break ; case "maxPlaybackRate" : this . options [ a ] = c = this . _limitValue ( c , this . options . minPlaybackRate + . 1 , 16 ) ; this . _updatePlaybackRate ( ) ;
break ; case "fullScreen" : if ( this . options [ a ] !== c ) { var e = b . jPlayer . nativeFeatures . fullscreen . used . webkitVideo ; if ( ! e || e && ! this . status . waitForPlay ) e || ( this . options [ a ] = c ) , c ? this . _requestFullscreen ( ) : this . _exitFullscreen ( ) , e || this . _setOption ( "fullWindow" , c ) } break ; case "fullWindow" : this . options [ a ] !== c && ( this . _removeUiClass ( ) , this . options [ a ] = c , this . _refreshSize ( ) ) ; break ; case "size" : this . options . fullWindow || this . options [ a ] . cssClass === c . cssClass || this . _removeUiClass ( ) ; this . options [ a ] = b . extend ( { } , this . options [ a ] ,
c ) ; this . _refreshSize ( ) ; break ; case "sizeFull" : this . options . fullWindow && this . options [ a ] . cssClass !== c . cssClass && this . _removeUiClass ( ) ; this . options [ a ] = b . extend ( { } , this . options [ a ] , c ) ; this . _refreshSize ( ) ; break ; case "autohide" : this . options [ a ] = b . extend ( { } , this . options [ a ] , c ) ; this . _updateAutohide ( ) ; break ; case "loop" : this . _loop ( c ) ; break ; case "remainingDuration" : this . options [ a ] = c ; this . _updateInterface ( ) ; break ; case "toggleDuration" : this . options [ a ] = c ; break ; case "nativeVideoControls" : this . options [ a ] = b . extend ( { } ,
this . options [ a ] , c ) ; this . status . nativeVideoControls = this . _uaBlocklist ( this . options . nativeVideoControls ) ; this . _restrictNativeVideoControls ( ) ; this . _updateNativeVideoControls ( ) ; break ; case "noFullWindow" : this . options [ a ] = b . extend ( { } , this . options [ a ] , c ) ; this . status . nativeVideoControls = this . _uaBlocklist ( this . options . nativeVideoControls ) ; this . status . noFullWindow = this . _uaBlocklist ( this . options . noFullWindow ) ; this . _restrictNativeVideoControls ( ) ; this . _updateButtons ( ) ; break ; case "noVolume" : this . options [ a ] = b . extend ( { } ,
this . options [ a ] , c ) ; this . status . noVolume = this . _uaBlocklist ( this . options . noVolume ) ; this . _updateVolume ( ) ; this . _updateMute ( ) ; break ; case "emulateHtml" : this . options [ a ] !== c && ( ( this . options [ a ] = c ) ? this . _emulateHtmlBridge ( ) : this . _destroyHtmlBridge ( ) ) ; break ; case "timeFormat" : this . options [ a ] = b . extend ( { } , this . options [ a ] , c ) ; break ; case "keyEnabled" : this . options [ a ] = c ; c || this !== b . jPlayer . focus || ( b . jPlayer . focus = null ) ; break ; case "keyBindings" : this . options [ a ] = b . extend ( ! 0 , { } , this . options [ a ] , c ) ; break ; case "audioFullScreen" : this . options [ a ] =
c ; break ; case "autoBlur" : this . options [ a ] = c } return this } , _refreshSize : function ( ) { this . _setSize ( ) ; this . _addUiClass ( ) ; this . _updateSize ( ) ; this . _updateButtons ( ) ; this . _updateAutohide ( ) ; this . _trigger ( b . jPlayer . event . resize ) } , _setSize : function ( ) { this . options . fullWindow ? ( this . status . width = this . options . sizeFull . width , this . status . height = this . options . sizeFull . height , this . status . cssClass = this . options . sizeFull . cssClass ) : ( this . status . width = this . options . size . width , this . status . height = this . options . size . height , this . status . cssClass =
this . options . size . cssClass ) ; this . element . css ( { width : this . status . width , height : this . status . height } ) } , _addUiClass : function ( ) { this . ancestorJq . length && this . ancestorJq . addClass ( this . status . cssClass ) } , _removeUiClass : function ( ) { this . ancestorJq . length && this . ancestorJq . removeClass ( this . status . cssClass ) } , _updateSize : function ( ) { this . internal . poster . jq . css ( { width : this . status . width , height : this . status . height } ) ; ! this . status . waitForPlay && this . html . active && this . status . video || this . html . video . available && this . html . used &&
this . status . nativeVideoControls ? this . internal . video . jq . css ( { width : this . status . width , height : this . status . height } ) : ! this . status . waitForPlay && this . flash . active && this . status . video && this . internal . flash . jq . css ( { width : this . status . width , height : this . status . height } ) } , _updateAutohide : function ( ) { var a = this , c = function ( ) { a . css . jq . gui . fadeIn ( a . options . autohide . fadeIn , function ( ) { clearTimeout ( a . internal . autohideId ) ; a . internal . autohideId = setTimeout ( function ( ) { a . css . jq . gui . fadeOut ( a . options . autohide . fadeOut ) } , a . options . autohide . hold ) } ) } ;
this . css . jq . gui . length && ( this . css . jq . gui . stop ( ! 0 , ! 0 ) , clearTimeout ( this . internal . autohideId ) , this . element . unbind ( ".jPlayerAutohide" ) , this . css . jq . gui . unbind ( ".jPlayerAutohide" ) , this . status . nativeVideoControls ? this . css . jq . gui . hide ( ) : this . options . fullWindow && this . options . autohide . full || ! this . options . fullWindow && this . options . autohide . restored ? ( this . element . bind ( "mousemove.jPlayer.jPlayerAutohide" , c ) , this . css . jq . gui . bind ( "mousemove.jPlayer.jPlayerAutohide" , c ) , this . css . jq . gui . hide ( ) ) : this . css . jq . gui . show ( ) ) } ,
fullScreen : function ( a ) { "object" === typeof a && this . options . useStateClassSkin && this . options . fullScreen ? this . _setOption ( "fullScreen" , ! 1 ) : this . _setOption ( "fullScreen" , ! 0 ) } , restoreScreen : function ( ) { this . _setOption ( "fullScreen" , ! 1 ) } , _fullscreenAddEventListeners : function ( ) { var a = this , c = b . jPlayer . nativeFeatures . fullscreen ; c . api . fullscreenEnabled && c . event . fullscreenchange && ( "function" !== typeof this . internal . fullscreenchangeHandler && ( this . internal . fullscreenchangeHandler = function ( ) { a . _fullscreenchange ( ) } ) , document . addEventListener ( c . event . fullscreenchange ,
this . internal . fullscreenchangeHandler , ! 1 ) ) } , _fullscreenRemoveEventListeners : function ( ) { var a = b . jPlayer . nativeFeatures . fullscreen ; this . internal . fullscreenchangeHandler && document . removeEventListener ( a . event . fullscreenchange , this . internal . fullscreenchangeHandler , ! 1 ) } , _fullscreenchange : function ( ) { this . options . fullScreen && ! b . jPlayer . nativeFeatures . fullscreen . api . fullscreenElement ( ) && this . _setOption ( "fullScreen" , ! 1 ) } , _requestFullscreen : function ( ) { var a = this . ancestorJq . length ? this . ancestorJq [ 0 ] : this . element [ 0 ] ,
c = b . jPlayer . nativeFeatures . fullscreen ; c . used . webkitVideo && ( a = this . htmlElement . video ) ; c . api . fullscreenEnabled && c . api . requestFullscreen ( a ) } , _exitFullscreen : function ( ) { var a = b . jPlayer . nativeFeatures . fullscreen , c ; a . used . webkitVideo && ( c = this . htmlElement . video ) ; a . api . fullscreenEnabled && a . api . exitFullscreen ( c ) } , _html _initMedia : function ( a ) { var c = b ( this . htmlElement . media ) . empty ( ) ; b . each ( a . track || [ ] , function ( a , b ) { var g = document . createElement ( "track" ) ; g . setAttribute ( "kind" , b . kind ? b . kind : "" ) ; g . setAttribute ( "src" ,
b . src ? b . src : "" ) ; g . setAttribute ( "srclang" , b . srclang ? b . srclang : "" ) ; g . setAttribute ( "label" , b . label ? b . label : "" ) ; b . def && g . setAttribute ( "default" , b . def ) ; c . append ( g ) } ) ; this . htmlElement . media . src = this . status . src ; "none" !== this . options . preload && this . _html _load ( ) ; this . _trigger ( b . jPlayer . event . timeupdate ) } , _html _setFormat : function ( a ) { var c = this ; b . each ( this . formats , function ( b , e ) { if ( c . html . support [ e ] && a [ e ] ) return c . status . src = a [ e ] , c . status . format [ e ] = ! 0 , c . status . formatType = e , ! 1 } ) } , _html _setAudio : function ( a ) { this . _html _setFormat ( a ) ;
this . htmlElement . media = this . htmlElement . audio ; this . _html _initMedia ( a ) } , _html _setVideo : function ( a ) { this . _html _setFormat ( a ) ; this . status . nativeVideoControls && ( this . htmlElement . video . poster = this . _validString ( a . poster ) ? a . poster : "" ) ; this . htmlElement . media = this . htmlElement . video ; this . _html _initMedia ( a ) } , _html _resetMedia : function ( ) { this . htmlElement . media && ( this . htmlElement . media . id !== this . internal . video . id || this . status . nativeVideoControls || this . internal . video . jq . css ( { width : "0px" , height : "0px" } ) , this . htmlElement . media . pause ( ) ) } ,
_html _clearMedia : function ( ) { this . htmlElement . media && ( this . htmlElement . media . src = "about:blank" , this . htmlElement . media . load ( ) ) } , _html _load : function ( ) { this . status . waitForLoad && ( this . status . waitForLoad = ! 1 , this . htmlElement . media . load ( ) ) ; clearTimeout ( this . internal . htmlDlyCmdId ) } , _html _play : function ( a ) { var b = this , d = this . htmlElement . media ; this . androidFix . pause = ! 1 ; this . _html _load ( ) ; if ( this . androidFix . setMedia ) this . androidFix . play = ! 0 , this . androidFix . time = a ; else if ( isNaN ( a ) ) d . play ( ) ; else { this . internal . cmdsIgnored &&
d . play ( ) ; try { if ( ! d . seekable || "object" === typeof d . seekable && 0 < d . seekable . length ) d . currentTime = a , d . play ( ) ; else throw 1 ; } catch ( e ) { this . internal . htmlDlyCmdId = setTimeout ( function ( ) { b . play ( a ) } , 250 ) ; return } } this . _html _checkWaitForPlay ( ) } , _html _pause : function ( a ) { var b = this , d = this . htmlElement . media ; this . androidFix . play = ! 1 ; 0 < a ? this . _html _load ( ) : clearTimeout ( this . internal . htmlDlyCmdId ) ; d . pause ( ) ; if ( this . androidFix . setMedia ) this . androidFix . pause = ! 0 , this . androidFix . time = a ; else if ( ! isNaN ( a ) ) try { if ( ! d . seekable ||
"object" === typeof d . seekable && 0 < d . seekable . length ) d . currentTime = a ; else throw 1 ; } catch ( e ) { this . internal . htmlDlyCmdId = setTimeout ( function ( ) { b . pause ( a ) } , 250 ) ; return } 0 < a && this . _html _checkWaitForPlay ( ) } , _html _playHead : function ( a ) { var b = this , d = this . htmlElement . media ; this . _html _load ( ) ; try { if ( "object" === typeof d . seekable && 0 < d . seekable . length ) d . currentTime = a * d . seekable . end ( d . seekable . length - 1 ) / 100 ; else if ( 0 < d . duration && ! isNaN ( d . duration ) ) d . currentTime = a * d . duration / 100 ; else throw "e" ; } catch ( e ) { this . internal . htmlDlyCmdId =
setTimeout ( function ( ) { b . playHead ( a ) } , 250 ) ; return } this . status . waitForLoad || this . _html _checkWaitForPlay ( ) } , _html _checkWaitForPlay : function ( ) { this . status . waitForPlay && ( this . status . waitForPlay = ! 1 , this . css . jq . videoPlay . length && this . css . jq . videoPlay . hide ( ) , this . status . video && ( this . internal . poster . jq . hide ( ) , this . internal . video . jq . css ( { width : this . status . width , height : this . status . height } ) ) ) } , _html _setProperty : function ( a , b ) { this . html . audio . available && ( this . htmlElement . audio [ a ] = b ) ; this . html . video . available &&
( this . htmlElement . video [ a ] = b ) } , _flash _setAudio : function ( a ) { var c = this ; try { b . each ( this . formats , function ( b , d ) { if ( c . flash . support [ d ] && a [ d ] ) { switch ( d ) { case "m4a" : case "fla" : c . _getMovie ( ) . fl _setAudio _m4a ( a [ d ] ) ; break ; case "mp3" : c . _getMovie ( ) . fl _setAudio _mp3 ( a [ d ] ) ; break ; case "rtmpa" : c . _getMovie ( ) . fl _setAudio _rtmp ( a [ d ] ) } c . status . src = a [ d ] ; c . status . format [ d ] = ! 0 ; c . status . formatType = d ; return ! 1 } } ) , "auto" === this . options . preload && ( this . _flash _load ( ) , this . status . waitForLoad = ! 1 ) } catch ( d ) { this . _flashError ( d ) } } , _flash _setVideo : function ( a ) { var c =
this ; try { b . each ( this . formats , function ( b , d ) { if ( c . flash . support [ d ] && a [ d ] ) { switch ( d ) { case "m4v" : case "flv" : c . _getMovie ( ) . fl _setVideo _m4v ( a [ d ] ) ; break ; case "rtmpv" : c . _getMovie ( ) . fl _setVideo _rtmp ( a [ d ] ) } c . status . src = a [ d ] ; c . status . format [ d ] = ! 0 ; c . status . formatType = d ; return ! 1 } } ) , "auto" === this . options . preload && ( this . _flash _load ( ) , this . status . waitForLoad = ! 1 ) } catch ( d ) { this . _flashError ( d ) } } , _flash _resetMedia : function ( ) { this . internal . flash . jq . css ( { width : "0px" , height : "0px" } ) ; this . _flash _pause ( NaN ) } , _flash _clearMedia : function ( ) { try { this . _getMovie ( ) . fl _clearMedia ( ) } catch ( a ) { this . _flashError ( a ) } } ,
2013-12-16 23:14:00 +01:00
_flash _load : function ( ) { try { this . _getMovie ( ) . fl _load ( ) } catch ( a ) { this . _flashError ( a ) } this . status . waitForLoad = ! 1 } , _flash _play : function ( a ) { try { this . _getMovie ( ) . fl _play ( a ) } catch ( b ) { this . _flashError ( b ) } this . status . waitForLoad = ! 1 ; this . _flash _checkWaitForPlay ( ) } , _flash _pause : function ( a ) { try { this . _getMovie ( ) . fl _pause ( a ) } catch ( b ) { this . _flashError ( b ) } 0 < a && ( this . status . waitForLoad = ! 1 , this . _flash _checkWaitForPlay ( ) ) } , _flash _playHead : function ( a ) { try { this . _getMovie ( ) . fl _play _head ( a ) } catch ( b ) { this . _flashError ( b ) } this . status . waitForLoad ||
this . _flash _checkWaitForPlay ( ) } , _flash _checkWaitForPlay : function ( ) { this . status . waitForPlay && ( this . status . waitForPlay = ! 1 , this . css . jq . videoPlay . length && this . css . jq . videoPlay . hide ( ) , this . status . video && ( this . internal . poster . jq . hide ( ) , this . internal . flash . jq . css ( { width : this . status . width , height : this . status . height } ) ) ) } , _flash _volume : function ( a ) { try { this . _getMovie ( ) . fl _volume ( a ) } catch ( b ) { this . _flashError ( b ) } } , _flash _mute : function ( a ) { try { this . _getMovie ( ) . fl _mute ( a ) } catch ( b ) { this . _flashError ( b ) } } , _getMovie : function ( ) { return document [ this . internal . flash . id ] } ,
_getFlashPluginVersion : function ( ) { var a = 0 , b ; if ( window . ActiveXObject ) try { if ( b = new ActiveXObject ( "ShockwaveFlash.ShockwaveFlash" ) ) { var d = b . GetVariable ( "$version" ) ; d && ( d = d . split ( " " ) [ 1 ] . split ( "," ) , a = parseInt ( d [ 0 ] , 10 ) + "." + parseInt ( d [ 1 ] , 10 ) ) } } catch ( e ) { } else navigator . plugins && 0 < navigator . mimeTypes . length && ( b = navigator . plugins [ "Shockwave Flash" ] ) && ( a = navigator . plugins [ "Shockwave Flash" ] . description . replace ( /.*\s(\d+\.\d+).*/ , "$1" ) ) ; return 1 * a } , _checkForFlash : function ( a ) { var b = ! 1 ; this . _getFlashPluginVersion ( ) >=
a && ( b = ! 0 ) ; return b } , _validString : function ( a ) { return a && "string" === typeof a } , _limitValue : function ( a , b , d ) { return a < b ? b : a > d ? d : a } , _urlNotSetError : function ( a ) { this . _error ( { type : b . jPlayer . error . URL _NOT _SET , context : a , message : b . jPlayer . errorMsg . URL _NOT _SET , hint : b . jPlayer . errorHint . URL _NOT _SET } ) } , _flashError : function ( a ) { var c ; c = this . internal . ready ? "FLASH_DISABLED" : "FLASH" ; this . _error ( { type : b . jPlayer . error [ c ] , context : this . internal . flash . swf , message : b . jPlayer . errorMsg [ c ] + a . message , hint : b . jPlayer . errorHint [ c ] } ) ;
this . internal . flash . jq . css ( { width : "1px" , height : "1px" } ) } , _error : function ( a ) { this . _trigger ( b . jPlayer . event . error , a ) ; this . options . errorAlerts && this . _alert ( "Error!" + ( a . message ? "\n" + a . message : "" ) + ( a . hint ? "\n" + a . hint : "" ) + "\nContext: " + a . context ) } , _warning : function ( a ) { this . _trigger ( b . jPlayer . event . warning , f , a ) ; this . options . warningAlerts && this . _alert ( "Warning!" + ( a . message ? "\n" + a . message : "" ) + ( a . hint ? "\n" + a . hint : "" ) + "\nContext: " + a . context ) } , _alert : function ( a ) { a = "jPlayer " + this . version . script + " : id='" + this . internal . self . id +
2014-10-21 22:15:05 +02:00
"' : " + a ; this . options . consoleAlerts ? window . console && window . console . log && window . console . log ( a ) : alert ( a ) } , _emulateHtmlBridge : function ( ) { var a = this ; b . each ( b . jPlayer . emulateMethods . split ( /\s+/g ) , function ( b , d ) { a . internal . domNode [ d ] = function ( b ) { a [ d ] ( b ) } } ) ; b . each ( b . jPlayer . event , function ( c , d ) { var e = ! 0 ; b . each ( b . jPlayer . reservedEvent . split ( /\s+/g ) , function ( a , b ) { if ( b === c ) return e = ! 1 } ) ; e && a . element . bind ( d + ".jPlayer.jPlayerHtml" , function ( ) { a . _emulateHtmlUpdate ( ) ; var b = document . createEvent ( "Event" ) ; b . initEvent ( c ,
! 1 , ! 0 ) ; a . internal . domNode . dispatchEvent ( b ) } ) } ) } , _emulateHtmlUpdate : function ( ) { var a = this ; b . each ( b . jPlayer . emulateStatus . split ( /\s+/g ) , function ( b , d ) { a . internal . domNode [ d ] = a . status [ d ] } ) ; b . each ( b . jPlayer . emulateOptions . split ( /\s+/g ) , function ( b , d ) { a . internal . domNode [ d ] = a . options [ d ] } ) } , _destroyHtmlBridge : function ( ) { var a = this ; this . element . unbind ( ".jPlayerHtml" ) ; b . each ( ( b . jPlayer . emulateMethods + " " + b . jPlayer . emulateStatus + " " + b . jPlayer . emulateOptions ) . split ( /\s+/g ) , function ( b , d ) { delete a . internal . domNode [ d ] } ) } } ;
b . jPlayer . error = { FLASH : "e_flash" , FLASH _DISABLED : "e_flash_disabled" , NO _SOLUTION : "e_no_solution" , NO _SUPPORT : "e_no_support" , URL : "e_url" , URL _NOT _SET : "e_url_not_set" , VERSION : "e_version" } ; b . jPlayer . errorMsg = { FLASH : "jPlayer's Flash fallback is not configured correctly, or a command was issued before the jPlayer Ready event. Details: " , FLASH _DISABLED : "jPlayer's Flash fallback has been disabled by the browser due to the CSS rules you have used. Details: " , NO _SOLUTION : "No solution can be found by jPlayer in this browser. Neither HTML nor Flash can be used." ,
NO _SUPPORT : "It is not possible to play any media format provided in setMedia() on this browser using your current options." , URL : "Media URL could not be loaded." , URL _NOT _SET : "Attempt to issue media playback commands, while no media url is set." , VERSION : "jPlayer " + b . jPlayer . prototype . version . script + " needs Jplayer.swf version " + b . jPlayer . prototype . version . needFlash + " but found " } ; b . jPlayer . errorHint = { FLASH : "Check your swfPath option and that Jplayer.swf is there." , FLASH _DISABLED : "Check that you have not display:none; the jPlayer entity or any ancestor." ,
NO _SOLUTION : "Review the jPlayer options: support and supplied." , NO _SUPPORT : "Video or audio formats defined in the supplied option are missing." , URL : "Check media URL is valid." , URL _NOT _SET : "Use setMedia() to set the media URL." , VERSION : "Update jPlayer files." } ; b . jPlayer . warning = { CSS _SELECTOR _COUNT : "e_css_selector_count" , CSS _SELECTOR _METHOD : "e_css_selector_method" , CSS _SELECTOR _STRING : "e_css_selector_string" , OPTION _KEY : "e_option_key" } ; b . jPlayer . warningMsg = { CSS _SELECTOR _COUNT : "The number of css selectors found did not equal one: " ,
2021-10-12 11:17:57 +02:00
CSS _SELECTOR _METHOD : "The methodName given in jPlayer('cssSelector') is not a valid jPlayer method." , CSS _SELECTOR _STRING : "The methodCssSelector given in jPlayer('cssSelector') is not a String or is empty." , OPTION _KEY : "The option requested in jPlayer('option') is undefined." } ; b . jPlayer . warningHint = { CSS _SELECTOR _COUNT : "Check your css selector and the ancestor." , CSS _SELECTOR _METHOD : "Check your method name." , CSS _SELECTOR _STRING : "Check your css selector is a string." , OPTION _KEY : "Check your option name." } } ) ;