@ -10,22 +10,23 @@
* Copyright 2010 - 2013 , John Dyer ( http : //j.hn)
* Copyright 2010 - 2013 , John Dyer ( http : //j.hn)
* License : MIT
* License : MIT
*
*
* / v a r m e j s = m e j s | | { } ; m e j s . v e r s i o n = " 2 . 1 3 . 0 " ; m e j s . m e I n d e x = 0 ;
* / v a r m e j s = m e j s | | { } ; m e j s . v e r s i o n = " 2 . 1 3 . 2 " ; m e j s . m e I n d e x = 0 ;
mejs . plugins = { silverlight : [ { version : [ 3 , 0 ] , types : [ "video/mp4" , "video/m4v" , "video/mov" , "video/wmv" , "audio/wma" , "audio/m4a" , "audio/mp3" , "audio/wav" , "audio/mpeg" ] } ] , flash : [ { version : [ 9 , 0 , 124 ] , types : [ "video/mp4" , "video/m4v" , "video/mov" , "video/flv" , "video/rtmp" , "video/x-flv" , "audio/flv" , "audio/x-flv" , "audio/mp3" , "audio/m4a" , "audio/mpeg" , "video/youtube" , "video/x-youtube" ] } ] , youtube : [ { version : null , types : [ "video/youtube" , "video/x-youtube" , "audio/youtube" , "audio/x-youtube" ] } ] , vimeo : [ { version : null , types : [ "video/vimeo" ,
mejs . plugins = { silverlight : [ { version : [ 3 , 0 ] , types : [ "video/mp4" , "video/m4v" , "video/mov" , "video/wmv" , "audio/wma" , "audio/m4a" , "audio/mp3" , "audio/wav" , "audio/mpeg" ] } ] , flash : [ { version : [ 9 , 0 , 124 ] , types : [ "video/mp4" , "video/m4v" , "video/mov" , "video/flv" , "video/rtmp" , "video/x-flv" , "audio/flv" , "audio/x-flv" , "audio/mp3" , "audio/m4a" , "audio/mpeg" , "video/youtube" , "video/x-youtube" ] } ] , youtube : [ { version : null , types : [ "video/youtube" , "video/x-youtube" , "audio/youtube" , "audio/x-youtube" ] } ] , vimeo : [ { version : null , types : [ "video/vimeo" ,
"video/x-vimeo" ] } ] } ;
"video/x-vimeo" ] } ] } ;
mejs . Utility = { encodeUrl : function ( a ) { return encodeURIComponent ( a ) } , escapeHTML : function ( a ) { return a . toString ( ) . split ( "&" ) . join ( "&" ) . split ( "<" ) . join ( "<" ) . split ( '"' ) . join ( """ ) } , absolutizeUrl : function ( a ) { var b = document . createElement ( "div" ) ; b . innerHTML = '<a href="' + this . escapeHTML ( a ) + '">x</a>' ; return b . firstChild . href } , getScriptPath : function ( a ) { for ( var b = 0 , c , d = "" , e = "" , f , g , h = document . getElementsByTagName ( "script" ) , l = h . length , j = a . length ; b < l ; b ++ ) { f = h [ b ] . src ; c = f . lastIndexOf ( "/" ) ; if ( c > - 1 ) { g = f . substring ( c +
mejs . Utility = { encodeUrl : function ( a ) { return encodeURIComponent ( a ) } , escapeHTML : function ( a ) { return a . toString ( ) . split ( "&" ) . join ( "&" ) . split ( "<" ) . join ( "<" ) . split ( '"' ) . join ( """ ) } , absolutizeUrl : function ( a ) { var b = document . createElement ( "div" ) ; b . innerHTML = '<a href="' + this . escapeHTML ( a ) + '">x</a>' ; return b . firstChild . href } , getScriptPath : function ( a ) { for ( var b = 0 , c , d = "" , e = "" , g , f , h = document . getElementsByTagName ( "script" ) , l = h . length , j = a . length ; b < l ; b ++ ) { g = h [ b ] . src ; c = g . lastIndexOf ( "/" ) ; if ( c > - 1 ) { f = g . substring ( c +
1 ) ; f = f . substring ( 0 , c + 1 ) } else { g = f ; f = "" } for ( c = 0 ; c < j ; c ++ ) { e = a [ c ] ; e = g . indexOf ( e ) ; if ( e > - 1 ) { d = f ; break } } if ( d !== "" ) break } return d } , secondsToTimeCode : function ( a , b , c , d ) { if ( typeof c == "undefined" ) c = false ; else if ( typeof d == "undefined" ) d = 25 ; var e = Math . floor ( a / 3600 ) % 24 , f = Math . floor ( a / 60 ) % 60 , g = Math . floor ( a % 60 ) ; a = Math . floor ( ( a % 1 * d ) . toFixed ( 3 ) ) ; return ( b || e > 0 ? ( e < 10 ? "0" + e : e ) + ":" : "" ) + ( f < 10 ? "0" + f : f ) + ":" + ( g < 10 ? "0" + g : g ) + ( c ? ":" + ( a < 10 ? "0" + a : a ) : "" ) } , timeCodeToSeconds : function ( a , b , c , d ) { if ( typeof c == "undefined" ) c = false ; else if ( typeof d ==
1 ) ; g = g . substring ( 0 , c + 1 ) } else { f = g ; g = "" } for ( c = 0 ; c < j ; c ++ ) { e = a [ c ] ; e = f . indexOf ( e ) ; if ( e > - 1 ) { d = g ; break } } if ( d !== "" ) break } return d } , secondsToTimeCode : function ( a , b , c , d ) { if ( typeof c == "undefined" ) c = false ; else if ( typeof d == "undefined" ) d = 25 ; var e = Math . floor ( a / 3600 ) % 24 , g = Math . floor ( a / 60 ) % 60 , f = Math . floor ( a % 60 ) ; a = Math . floor ( ( a % 1 * d ) . toFixed ( 3 ) ) ; return ( b || e > 0 ? ( e < 10 ? "0" + e : e ) + ":" : "" ) + ( g < 10 ? "0" + g : g ) + ":" + ( f < 10 ? "0" + f : f ) + ( c ? ":" + ( a < 10 ? "0" + a : a ) : "" ) } , timeCodeToSeconds : function ( a , b , c , d ) { if ( typeof c == "undefined" ) c = false ; else if ( typeof d ==
"undefined" ) d = 25 ; a = a . split ( ":" ) ; b = parseInt ( a [ 0 ] , 10 ) ; var e = parseInt ( a [ 1 ] , 10 ) , f = parseInt ( a [ 2 ] , 10 ) , g = 0 , h = 0 ; if ( c ) g = parseInt ( a [ 3 ] ) / d ; return h = b * 3600 + e * 60 + f + g } , convertSMPTEtoSeconds : function ( a ) { if ( typeof a != "string" ) return false ; a = a . replace ( "," , "." ) ; var b = 0 , c = a . indexOf ( "." ) != - 1 ? a . split ( "." ) [ 1 ] . length : 0 , d = 1 ; a = a . split ( ":" ) . reverse ( ) ; for ( var e = 0 ; e < a . length ; e ++ ) { d = 1 ; if ( e > 0 ) d = Math . pow ( 60 , e ) ; b += Number ( a [ e ] ) * d } return Number ( b . toFixed ( c ) ) } , removeSwf : function ( a ) { var b = document . getElementById ( a ) ; if ( b && /object|embed/i . test ( b . nodeName ) ) if ( mejs . MediaFeatures . isIE ) { b . style . display =
"undefined" ) d = 25 ; a = a . split ( ":" ) ; b = parseInt ( a [ 0 ] , 10 ) ; var e = parseInt ( a [ 1 ] , 10 ) , g = parseInt ( a [ 2 ] , 10 ) , f = 0 , h = 0 ; if ( c ) f = parseInt ( a [ 3 ] ) / d ; return h = b * 3600 + e * 60 + g + f } , convertSMPTEtoSeconds : function ( a ) { if ( typeof a != "string" ) return false ; a = a . replace ( "," , "." ) ; var b = 0 , c = a . indexOf ( "." ) != - 1 ? a . split ( "." ) [ 1 ] . length : 0 , d = 1 ; a = a . split ( ":" ) . reverse ( ) ; for ( var e = 0 ; e < a . length ; e ++ ) { d = 1 ; if ( e > 0 ) d = Math . pow ( 60 , e ) ; b += Number ( a [ e ] ) * d } return Number ( b . toFixed ( c ) ) } , removeSwf : function ( a ) { var b = document . getElementById ( a ) ; if ( b && /object|embed/i . test ( b . nodeName ) ) if ( mejs . MediaFeatures . isIE ) { b . style . display =
"none" ; ( function ( ) { b . readyState == 4 ? mejs . Utility . removeObjectInIE ( a ) : setTimeout ( arguments . callee , 10 ) } ) ( ) } else b . parentNode . removeChild ( b ) } , removeObjectInIE : function ( a ) { if ( a = document . getElementById ( a ) ) { for ( var b in a ) if ( typeof a [ b ] == "function" ) a [ b ] = null ; a . parentNode . removeChild ( a ) } } } ;
"none" ; ( function ( ) { b . readyState == 4 ? mejs . Utility . removeObjectInIE ( a ) : setTimeout ( arguments . callee , 10 ) } ) ( ) } else b . parentNode . removeChild ( b ) } , removeObjectInIE : function ( a ) { if ( a = document . getElementById ( a ) ) { for ( var b in a ) if ( typeof a [ b ] == "function" ) a [ b ] = null ; a . parentNode . removeChild ( a ) } } } ;
mejs . PluginDetector = { hasPluginVersion : function ( a , b ) { var c = this . plugins [ a ] ; b [ 1 ] = b [ 1 ] || 0 ; b [ 2 ] = b [ 2 ] || 0 ; return c [ 0 ] > b [ 0 ] || c [ 0 ] == b [ 0 ] && c [ 1 ] > b [ 1 ] || c [ 0 ] == b [ 0 ] && c [ 1 ] == b [ 1 ] && c [ 2 ] >= b [ 2 ] ? true : false } , nav : window . navigator , ua : window . navigator . userAgent . toLowerCase ( ) , plugins : [ ] , addPlugin : function ( a , b , c , d , e ) { this . plugins [ a ] = this . detectPlugin ( b , c , d , e ) } , detectPlugin : function ( a , b , c , d ) { var e = [ 0 , 0 , 0 ] , f ; if ( typeof this . nav . plugins != "undefined" && typeof this . nav . plugins [ a ] == "object" ) { if ( ( c = this . nav . plugins [ a ] . description ) &&
mejs . PluginDetector = { hasPluginVersion : function ( a , b ) { var c = this . plugins [ a ] ; b [ 1 ] = b [ 1 ] || 0 ; b [ 2 ] = b [ 2 ] || 0 ; return c [ 0 ] > b [ 0 ] || c [ 0 ] == b [ 0 ] && c [ 1 ] > b [ 1 ] || c [ 0 ] == b [ 0 ] && c [ 1 ] == b [ 1 ] && c [ 2 ] >= b [ 2 ] ? true : false } , nav : window . navigator , ua : window . navigator . userAgent . toLowerCase ( ) , plugins : [ ] , addPlugin : function ( a , b , c , d , e ) { this . plugins [ a ] = this . detectPlugin ( b , c , d , e ) } , detectPlugin : function ( a , b , c , d ) { var e = [ 0 , 0 , 0 ] , g ; if ( typeof this . nav . plugins != "undefined" && typeof this . nav . plugins [ a ] == "object" ) { if ( ( c = this . nav . plugins [ a ] . description ) &&
! ( typeof this . nav . mimeTypes != "undefined" && this . nav . mimeTypes [ b ] && ! this . nav . mimeTypes [ b ] . enabledPlugin ) ) { e = c . replace ( a , "" ) . replace ( /^\s+/ , "" ) . replace ( /\sr/gi , "." ) . split ( "." ) ; for ( a = 0 ; a < e . length ; a ++ ) e [ a ] = parseInt ( e [ a ] . match ( /\d+/ ) , 10 ) } } else if ( typeof window . ActiveXObject != "undefined" ) try { if ( f = new ActiveXObject ( c ) ) e = d ( f ) } catch ( g ) { } return e } } ;
! ( typeof this . nav . mimeTypes != "undefined" && this . nav . mimeTypes [ b ] && ! this . nav . mimeTypes [ b ] . enabledPlugin ) ) { e = c . replace ( a , "" ) . replace ( /^\s+/ , "" ) . replace ( /\sr/gi , "." ) . split ( "." ) ; for ( a = 0 ; a < e . length ; a ++ ) e [ a ] = parseInt ( e [ a ] . match ( /\d+/ ) , 10 ) } } else if ( typeof window . ActiveXObject != "undefined" ) try { if ( g = new ActiveXObject ( c ) ) e = d ( g ) } catch ( f ) { } return e } } ;
mejs . PluginDetector . addPlugin ( "flash" , "Shockwave Flash" , "application/x-shockwave-flash" , "ShockwaveFlash.ShockwaveFlash" , function ( a ) { var b = [ ] ; if ( a = a . GetVariable ( "$version" ) ) { a = a . split ( " " ) [ 1 ] . split ( "," ) ; b = [ parseInt ( a [ 0 ] , 10 ) , parseInt ( a [ 1 ] , 10 ) , parseInt ( a [ 2 ] , 10 ) ] } return b } ) ;
mejs . PluginDetector . addPlugin ( "flash" , "Shockwave Flash" , "application/x-shockwave-flash" , "ShockwaveFlash.ShockwaveFlash" , function ( a ) { var b = [ ] ; if ( a = a . GetVariable ( "$version" ) ) { a = a . split ( " " ) [ 1 ] . split ( "," ) ; b = [ parseInt ( a [ 0 ] , 10 ) , parseInt ( a [ 1 ] , 10 ) , parseInt ( a [ 2 ] , 10 ) ] } return b } ) ;
mejs . PluginDetector . addPlugin ( "silverlight" , "Silverlight Plug-In" , "application/x-silverlight-2" , "AgControl.AgControl" , function ( a ) { var b = [ 0 , 0 , 0 , 0 ] , c = function ( d , e , f , g ) { for ( ; d . isVersionSupported ( e [ 0 ] + "." + e [ 1 ] + "." + e [ 2 ] + "." + e [ 3 ] ) ; ) e [ f ] += g ; e [ f ] -= g } ; c ( a , b , 0 , 1 ) ; c ( a , b , 1 , 1 ) ; c ( a , b , 2 , 1E4 ) ; c ( a , b , 2 , 1E3 ) ; c ( a , b , 2 , 100 ) ; c ( a , b , 2 , 10 ) ; c ( a , b , 2 , 1 ) ; c ( a , b , 3 , 1 ) ; return b } ) ;
mejs . PluginDetector . addPlugin ( "silverlight" , "Silverlight Plug-In" , "application/x-silverlight-2" , "AgControl.AgControl" , function ( a ) { var b = [ 0 , 0 , 0 , 0 ] , c = function ( d , e , g , f ) { for ( ; d . isVersionSupported ( e [ 0 ] + "." + e [ 1 ] + "." + e [ 2 ] + "." + e [ 3 ] ) ; ) e [ g ] += f ; e [ g ] -= f } ; c ( a , b , 0 , 1 ) ; c ( a , b , 1 , 1 ) ; c ( a , b , 2 , 1E4 ) ; c ( a , b , 2 , 1E3 ) ; c ( a , b , 2 , 100 ) ; c ( a , b , 2 , 10 ) ; c ( a , b , 2 , 1 ) ; c ( a , b , 3 , 1 ) ; return b } ) ;
mejs . MediaFeatures = { init : function ( ) { var a = this , b = document , c = mejs . PluginDetector . nav , d = mejs . PluginDetector . ua . toLowerCase ( ) , e , f = [ "source" , "track" , "audio" , "video" ] ; a . isiPad = d . match ( /ipad/i ) !== null ; a . isiPhone = d . match ( /iphone/i ) !== null ; a . isiOS = a . isiPhone || a . isiPad ; a . isAndroid = d . match ( /android/i ) !== null ; a . isBustedAndroid = d . match ( /android 2\.[12]/ ) !== null ; a . isBustedNativeHTTPS = location . protocol === "https:" && ( d . match ( /android [12]\./ ) !== null || d . match ( /macintosh.* version.* safari/ ) !== null ) ; a . isIE = c . appName . toLowerCase ( ) . indexOf ( "microsoft" ) !=
mejs . MediaFeatures = { init : function ( ) { var a = this , b = document , c = mejs . PluginDetector . nav , d = mejs . PluginDetector . ua . toLowerCase ( ) , e , g = [ "source" , "track" , "audio" , "video" ] ; a . isiPad = d . match ( /ipad/i ) !== null ; a . isiPhone = d . match ( /iphone/i ) !== null ; a . isiOS = a . isiPhone || a . isiPad ; a . isAndroid = d . match ( /android/i ) !== null ; a . isBustedAndroid = d . match ( /android 2\.[12]/ ) !== null ; a . isBustedNativeHTTPS = location . protocol === "https:" && ( d . match ( /android [12]\./ ) !== null || d . match ( /macintosh.* version.* safari/ ) !== null ) ; a . isIE = c . appName . toLowerCase ( ) . indexOf ( "microsoft" ) !=
- 1 ; a . isChrome = d . match ( /chrome/gi ) !== null ; a . isFirefox = d . match ( /firefox/gi ) !== null ; a . isWebkit = d . match ( /webkit/gi ) !== null ; a . isGecko = d . match ( /gecko/gi ) !== null && ! a . isWebkit ; a . isOpera = d . match ( /opera/gi ) !== null ; a . hasTouch = "ontouchstart" in window && window . ontouchstart != null ; a . svg = ! ! document . createElementNS && ! ! document . createElementNS ( "http://www.w3.org/2000/svg" , "svg" ) . createSVGRect ; for ( c = 0 ; c < f . length ; c ++ ) e = document . createElement ( f [ c ] ) ; a . supportsMediaTag = typeof e . canPlayType !== "undefined" || a . isBustedAndroid ;
- 1 || c . appName . toLowerCase ( ) . match ( /trident/gi ) !== null ; a . isChrome = d . match ( /chrome/gi ) !== null ; a . isFirefox = d . match ( /firefox/gi ) !== null ; a . isWebkit = d . match ( /webkit/gi ) !== null ; a . isGecko = d . match ( /gecko/gi ) !== null && ! a . isWebkit && ! a . isIE ; a . isOpera = d . match ( /opera/gi ) !== null ; a . hasTouch = "ontouchstart" in window ; a . svg = ! ! document . createElementNS && ! ! document . createElementNS ( "http://www.w3.org/2000/svg" , "svg" ) . createSVGRect ; for ( c = 0 ; c < g . length ; c ++ ) e = document . createElement ( g [ c ] ) ; a . supportsMediaTag = typeof e . canPlayType !==
try { e . canPlayType ( "video/mp4" ) } catch ( g ) { a . supportsMediaTag = false } a . hasSemiNativeFullScreen = typeof e . webkitEnterFullscreen !== "undefined" ; a . hasWebkitNativeFullScreen = typeof e . webkitRequestFullScreen !== "undefined" ; a . hasMozNativeFullScreen = typeof e . mozRequestFullScreen !== "undefined" ; a . hasTrueNativeFullScreen = a . hasWebkitNativeFullScreen || a . hasMozNativeFullScreen ; a . nativeFullScreenEnabled = a . hasTrueNativeFullScreen ; if ( a . hasMozNativeFullScreen ) a . nativeFullScreenEnabled = e . mozFullScreenEnabled ; if ( this . isChrome ) a . hasSemiNativeFullScreen =
"undefined" || a . isBustedAndroid ; try { e . canPlayType ( "video/mp4" ) } catch ( f ) { a . supportsMediaTag = false } a . hasSemiNativeFullScreen = typeof e . webkitEnterFullscreen !== "undefined" ; a . hasNativeFullscreen = typeof e . requestFullscreen !== "undefined" ; a . hasWebkitNativeFullScreen = typeof e . webkitRequestFullScreen !== "undefined" ; a . hasMozNativeFullScreen = typeof e . mozRequestFullScreen !== "undefined" ; a . hasMsNativeFullScreen = typeof e . msRequestFullscreen !== "undefined" ; a . hasTrueNativeFullScreen = a . hasWebkitNativeFullScreen || a . hasMozNativeFullScreen ||
false ; if ( a . hasTrueNativeFullScreen ) { a . fullScreenEventName = a . hasWebkitNativeFullScreen ? "webkitfullscreenchange" : "mozfullscreenchange" ; a . isFullScreen = function ( ) { if ( e . mozRequestFullScreen ) return b . mozFullScreen ; else if ( e . webkitRequestFullScreen ) return b . webkitIsFullScreen } ; a . requestFullScreen = function ( h ) { if ( a . hasWebkitNativeFullScreen ) h . webkitRequestFullScreen ( ) ; else a . hasMozNativeFullScreen && h . mozRequestFullScreen ( ) } ; a . cancelFullScreen = function ( ) { if ( a . hasWebkitNativeFullScreen ) document . webkitCancelFullScreen ( ) ;
a . hasMsNativeFullScreen ; a . nativeFullScreenEnabled = a . hasTrueNativeFullScreen ; if ( a . hasMozNativeFullScreen ) a . nativeFullScreenEnabled = document . mozFullScreenEnabled ; else if ( a . hasMsNativeFullScreen ) a . nativeFullScreenEnabled = document . msFullscreenEnabled ; if ( a . isChrome ) a . hasSemiNativeFullScreen = false ; if ( a . hasTrueNativeFullScreen ) { a . fullScreenEventName = "" ; if ( a . hasWebkitNativeFullScreen ) a . fullScreenEventName = "webkitfullscreenchange" ; else if ( a . hasMozNativeFullScreen ) a . fullScreenEventName = "mozfullscreenchange" ;
else a . hasMozNativeFullScreen && document . mozCancelFullScreen ( ) } } if ( a . hasSemiNativeFullScreen && d . match ( /mac os x 10_5/i ) ) { a . hasNativeFullScreen = false ; a . hasSemiNativeFullScreen = false } } } ; mejs . MediaFeatures . init ( ) ;
else if ( a . hasMsNativeFullScreen ) a . fullScreenEventName = "MSFullscreenChange" ; a . isFullScreen = function ( ) { if ( e . mozRequestFullScreen ) return b . mozFullScreen ; else if ( e . webkitRequestFullScreen ) return b . webkitIsFullScreen ; else if ( e . hasMsNativeFullScreen ) return b . msFullscreenElement !== null } ; a . requestFullScreen = function ( h ) { if ( a . hasWebkitNativeFullScreen ) h . webkitRequestFullScreen ( ) ; else if ( a . hasMozNativeFullScreen ) h . mozRequestFullScreen ( ) ; else a . hasMsNativeFullScreen && h . msRequestFullscreen ( ) } ; a . cancelFullScreen =
function ( ) { if ( a . hasWebkitNativeFullScreen ) document . webkitCancelFullScreen ( ) ; else if ( a . hasMozNativeFullScreen ) document . mozCancelFullScreen ( ) ; else a . hasMsNativeFullScreen && document . msExitFullscreen ( ) } } if ( a . hasSemiNativeFullScreen && d . match ( /mac os x 10_5/i ) ) { a . hasNativeFullScreen = false ; a . hasSemiNativeFullScreen = false } } } ; mejs . MediaFeatures . init ( ) ;
mejs . HtmlMediaElement = { pluginType : "native" , isFullScreen : false , setCurrentTime : function ( a ) { this . currentTime = a } , setMuted : function ( a ) { this . muted = a } , setVolume : function ( a ) { this . volume = a } , stop : function ( ) { this . pause ( ) } , setSrc : function ( a ) { for ( var b = this . getElementsByTagName ( "source" ) ; b . length > 0 ; ) this . removeChild ( b [ 0 ] ) ; if ( typeof a == "string" ) this . src = a ; else { var c ; for ( b = 0 ; b < a . length ; b ++ ) { c = a [ b ] ; if ( this . canPlayType ( c . type ) ) { this . src = c . src ; break } } } } , setVideoSize : function ( a , b ) { this . width = a ; this . height = b } } ;
mejs . HtmlMediaElement = { pluginType : "native" , isFullScreen : false , setCurrentTime : function ( a ) { this . currentTime = a } , setMuted : function ( a ) { this . muted = a } , setVolume : function ( a ) { this . volume = a } , stop : function ( ) { this . pause ( ) } , setSrc : function ( a ) { for ( var b = this . getElementsByTagName ( "source" ) ; b . length > 0 ; ) this . removeChild ( b [ 0 ] ) ; if ( typeof a == "string" ) this . src = a ; else { var c ; for ( b = 0 ; b < a . length ; b ++ ) { c = a [ b ] ; if ( this . canPlayType ( c . type ) ) { this . src = c . src ; break } } } } , setVideoSize : function ( a , b ) { this . width = a ; this . height = b } } ;
mejs . PluginMediaElement = function ( a , b , c ) { this . id = a ; this . pluginType = b ; this . src = c ; this . events = { } ; this . attributes = { } } ;
mejs . PluginMediaElement = function ( a , b , c ) { this . id = a ; this . pluginType = b ; this . src = c ; this . events = { } ; this . attributes = { } } ;
mejs . PluginMediaElement . prototype = { pluginElement : null , pluginType : "" , isFullScreen : false , playbackRate : - 1 , defaultPlaybackRate : - 1 , seekable : [ ] , played : [ ] , paused : true , ended : false , seeking : false , duration : 0 , error : null , tagName : "" , muted : false , volume : 1 , currentTime : 0 , play : function ( ) { if ( this . pluginApi != null ) { this . pluginType == "youtube" ? this . pluginApi . playVideo ( ) : this . pluginApi . playMedia ( ) ; this . paused = false } } , load : function ( ) { if ( this . pluginApi != null ) { this . pluginType != "youtube" && this . pluginApi . loadMedia ( ) ; this . paused =
mejs . PluginMediaElement . prototype = { pluginElement : null , pluginType : "" , isFullScreen : false , playbackRate : - 1 , defaultPlaybackRate : - 1 , seekable : [ ] , played : [ ] , paused : true , ended : false , seeking : false , duration : 0 , error : null , tagName : "" , muted : false , volume : 1 , currentTime : 0 , play : function ( ) { if ( this . pluginApi != null ) { this . pluginType == "youtube" ? this . pluginApi . playVideo ( ) : this . pluginApi . playMedia ( ) ; this . paused = false } } , load : function ( ) { if ( this . pluginApi != null ) { this . pluginType != "youtube" && this . pluginApi . loadMedia ( ) ; this . paused =
@ -39,21 +40,21 @@ mejs.MediaPluginBridge={pluginMediaElements:{},htmlMediaElements:{},registerPlug
b . pluginApi = b . pluginElement . Content . MediaElementJS } b . pluginApi != null && b . success && b . success ( b , c ) } } , fireEvent : function ( a , b , c ) { var d , e ; if ( a = this . pluginMediaElements [ a ] ) { b = { type : b , target : a } ; for ( d in c ) { a [ d ] = c [ d ] ; b [ d ] = c [ d ] } e = c . bufferedTime || 0 ; b . target . buffered = b . buffered = { start : function ( ) { return 0 } , end : function ( ) { return e } , length : 1 } ; a . dispatchEvent ( b . type , b ) } } } ;
b . pluginApi = b . pluginElement . Content . MediaElementJS } b . pluginApi != null && b . success && b . success ( b , c ) } } , fireEvent : function ( a , b , c ) { var d , e ; if ( a = this . pluginMediaElements [ a ] ) { b = { type : b , target : a } ; for ( d in c ) { a [ d ] = c [ d ] ; b [ d ] = c [ d ] } e = c . bufferedTime || 0 ; b . target . buffered = b . buffered = { start : function ( ) { return 0 } , end : function ( ) { return e } , length : 1 } ; a . dispatchEvent ( b . type , b ) } } } ;
mejs . MediaElementDefaults = { mode : "auto" , plugins : [ "flash" , "silverlight" , "youtube" , "vimeo" ] , enablePluginDebug : false , httpsBasicAuthSite : false , type : "" , pluginPath : mejs . Utility . getScriptPath ( [ "mediaelement.js" , "mediaelement.min.js" , "mediaelement-and-player.js" , "mediaelement-and-player.min.js" ] ) , flashName : "flashmediaelement.swf" , flashStreamer : "" , enablePluginSmoothing : false , enablePseudoStreaming : false , pseudoStreamingStartQueryParam : "start" , silverlightName : "silverlightmediaelement.xap" , defaultVideoWidth : 480 ,
mejs . MediaElementDefaults = { mode : "auto" , plugins : [ "flash" , "silverlight" , "youtube" , "vimeo" ] , enablePluginDebug : false , httpsBasicAuthSite : false , type : "" , pluginPath : mejs . Utility . getScriptPath ( [ "mediaelement.js" , "mediaelement.min.js" , "mediaelement-and-player.js" , "mediaelement-and-player.min.js" ] ) , flashName : "flashmediaelement.swf" , flashStreamer : "" , enablePluginSmoothing : false , enablePseudoStreaming : false , pseudoStreamingStartQueryParam : "start" , silverlightName : "silverlightmediaelement.xap" , defaultVideoWidth : 480 ,
defaultVideoHeight : 270 , pluginWidth : - 1 , pluginHeight : - 1 , pluginVars : [ ] , timerRate : 250 , startVolume : 0.8 , success : function ( ) { } , error : function ( ) { } } ; mejs . MediaElement = function ( a , b ) { return mejs . HtmlMediaElementShim . create ( a , b ) } ;
defaultVideoHeight : 270 , pluginWidth : - 1 , pluginHeight : - 1 , pluginVars : [ ] , timerRate : 250 , startVolume : 0.8 , success : function ( ) { } , error : function ( ) { } } ; mejs . MediaElement = function ( a , b ) { return mejs . HtmlMediaElementShim . create ( a , b ) } ;
mejs . HtmlMediaElementShim = { create : function ( a , b ) { var c = mejs . MediaElementDefaults , d = typeof a == "string" ? document . getElementById ( a ) : a , e = d . tagName . toLowerCase ( ) , f = e === "audio" || e === "video" , g = f ? d . getAttribute ( "src" ) : d . getAttribute ( "href" ) ; e = d . getAttribute ( "poster" ) ; var h = d . getAttribute ( "autoplay" ) , l = d . getAttribute ( "preload" ) , j = d . getAttribute ( "controls" ) , k ; for ( k in b ) c [ k ] = b [ k ] ; g = typeof g == "undefined" || g === null || g == "" ? null : g ; e = typeof e == "undefined" || e === null ? "" : e ; l = typeof l == "undefined" || l === null || l === "false" ?
mejs . HtmlMediaElementShim = { create : function ( a , b ) { var c = mejs . MediaElementDefaults , d = typeof a == "string" ? document . getElementById ( a ) : a , e = d . tagName . toLowerCase ( ) , g = e === "audio" || e === "video" , f = g ? d . getAttribute ( "src" ) : d . getAttribute ( "href" ) ; e = d . getAttribute ( "poster" ) ; var h = d . getAttribute ( "autoplay" ) , l = d . getAttribute ( "preload" ) , j = d . getAttribute ( "controls" ) , k ; for ( k in b ) c [ k ] = b [ k ] ; f = typeof f == "undefined" || f === null || f == "" ? null : f ; e = typeof e == "undefined" || e === null ? "" : e ; l = typeof l == "undefined" || l === null || l === "false" ?
"none" : l ; h = ! ( typeof h == "undefined" || h === null || h === "false" ) ; j = ! ( typeof j == "undefined" || j === null || j === "false" ) ; k = this . determinePlayback ( d , c , mejs . MediaFeatures . supportsMediaTag , f , g ) ; k . url = k . url !== null ? mejs . Utility . absolutizeUrl ( k . url ) : "" ; if ( k . method == "native" ) { if ( mejs . MediaFeatures . isBustedAndroid ) { d . src = k . url ; d . addEventListener ( "click" , function ( ) { d . play ( ) } , false ) } return this . updateNative ( k , c , h , l ) } else if ( k . method !== "" ) return this . createPlugin ( k , c , e , h , l , j ) ; else { this . createErrorMessage ( k , c , e ) ; return this } } ,
"none" : l ; h = ! ( typeof h == "undefined" || h === null || h === "false" ) ; j = ! ( typeof j == "undefined" || j === null || j === "false" ) ; k = this . determinePlayback ( d , c , mejs . MediaFeatures . supportsMediaTag , g , f ) ; k . url = k . url !== null ? mejs . Utility . absolutizeUrl ( k . url ) : "" ; if ( k . method == "native" ) { if ( mejs . MediaFeatures . isBustedAndroid ) { d . src = k . url ; d . addEventListener ( "click" , function ( ) { d . play ( ) } , false ) } return this . updateNative ( k , c , h , l ) } else if ( k . method !== "" ) return this . createPlugin ( k , c , e , h , l , j ) ; else { this . createErrorMessage ( k , c , e ) ; return this } } ,
determinePlayback : function ( a , b , c , d , e ) { var f = [ ] , g , h , l , j = { method : "" , url : "" , htmlMediaElement : a , isVideo : a . tagName . toLowerCase ( ) != "audio" } , k ; if ( typeof b . type != "undefined" && b . type !== "" ) if ( typeof b . type == "string" ) f . push ( { type : b . type , url : e } ) ; else for ( g = 0 ; g < b . type . length ; g ++ ) f . push ( { type : b . type [ g ] , url : e } ) ; else if ( e !== null ) { l = this . formatType ( e , a . getAttribute ( "type" ) ) ; f . push ( { type : l , url : e } ) } else for ( g = 0 ; g < a . childNodes . length ; g ++ ) { h = a . childNodes [ g ] ; if ( h . nodeType == 1 && h . tagName . toLowerCase ( ) == "source" ) { e = h . getAttribute ( "src" ) ;
determinePlayback : function ( a , b , c , d , e ) { var g = [ ] , f , h , l , j = { method : "" , url : "" , htmlMediaElement : a , isVideo : a . tagName . toLowerCase ( ) != "audio" } , k ; if ( typeof b . type != "undefined" && b . type !== "" ) if ( typeof b . type == "string" ) g . push ( { type : b . type , url : e } ) ; else for ( f = 0 ; f < b . type . length ; f ++ ) g . push ( { type : b . type [ f ] , url : e } ) ; else if ( e !== null ) { l = this . formatType ( e , a . getAttribute ( "type" ) ) ; g . push ( { type : l , url : e } ) } else for ( f = 0 ; f < a . childNodes . length ; f ++ ) { h = a . childNodes [ f ] ; if ( h . nodeType == 1 && h . tagName . toLowerCase ( ) == "source" ) { e = h . getAttribute ( "src" ) ;
l = this . formatType ( e , h . getAttribute ( "type" ) ) ; h = h . getAttribute ( "media" ) ; if ( ! h || ! window . matchMedia || window . matchMedia && window . matchMedia ( h ) . matches ) f . push ( { type : l , url : e } ) } } if ( ! d && f . length > 0 && f [ 0 ] . url !== null && this . getTypeFromFile ( f [ 0 ] . url ) . indexOf ( "audio" ) > - 1 ) j . isVideo = false ; if ( mejs . MediaFeatures . isBustedAndroid ) a . canPlayType = function ( m ) { return m . match ( /video\/(mp4|m4v)/gi ) !== null ? "maybe" : "" } ; if ( c && ( b . mode === "auto" || b . mode === "auto_plugin" || b . mode === "native" ) && ! ( mejs . MediaFeatures . isBustedNativeHTTPS &&
l = this . formatType ( e , h . getAttribute ( "type" ) ) ; h = h . getAttribute ( "media" ) ; if ( ! h || ! window . matchMedia || window . matchMedia && window . matchMedia ( h ) . matches ) g . push ( { type : l , url : e } ) } } if ( ! d && g . length > 0 && g [ 0 ] . url !== null && this . getTypeFromFile ( g [ 0 ] . url ) . indexOf ( "audio" ) > - 1 ) j . isVideo = false ; if ( mejs . MediaFeatures . isBustedAndroid ) a . canPlayType = function ( m ) { return m . match ( /video\/(mp4|m4v)/gi ) !== null ? "maybe" : "" } ; if ( c && ( b . mode === "auto" || b . mode === "auto_plugin" || b . mode === "native" ) && ! ( mejs . MediaFeatures . isBustedNativeHTTPS &&
b . httpsBasicAuthSite === true ) ) { if ( ! d ) { g = document . createElement ( j . isVideo ? "video" : "audio" ) ; a . parentNode . insertBefore ( g , a ) ; a . style . display = "none" ; j . htmlMediaElement = a = g } for ( g = 0 ; g < f . length ; g ++ ) if ( a . canPlayType ( f [ g ] . type ) . replace ( /no/ , "" ) !== "" || a . canPlayType ( f [ g ] . type . replace ( /mp3/ , "mpeg" ) ) . replace ( /no/ , "" ) !== "" ) { j . method = "native" ; j . url = f [ g ] . url ; break } if ( j . method === "native" ) { if ( j . url !== null ) a . src = j . url ; if ( b . mode !== "auto_plugin" ) return j } } if ( b . mode === "auto" || b . mode === "auto_plugin" || b . mode === "shim" ) for ( g =
b . httpsBasicAuthSite === true ) ) { if ( ! d ) { f = document . createElement ( j . isVideo ? "video" : "audio" ) ; a . parentNode . insertBefore ( f , a ) ; a . style . display = "none" ; j . htmlMediaElement = a = f } for ( f = 0 ; f < g . length ; f ++ ) if ( a . canPlayType ( g [ f ] . type ) . replace ( /no/ , "" ) !== "" || a . canPlayType ( g [ f ] . type . replace ( /mp3/ , "mpeg" ) ) . replace ( /no/ , "" ) !== "" ) { j . method = "native" ; j . url = g [ f ] . url ; break } if ( j . method === "native" ) { if ( j . url !== null ) a . src = j . url ; if ( b . mode !== "auto_plugin" ) return j } } if ( b . mode === "auto" || b . mode === "auto_plugin" || b . mode === "shim" ) for ( f =
0 ; g < f . length ; g ++ ) { l = f [ g ] . type ; for ( a = 0 ; a < b . plugins . length ; a ++ ) { e = b . plugins [ a ] ; h = mejs . plugins [ e ] ; for ( c = 0 ; c < h . length ; c ++ ) { k = h [ c ] ; if ( k . version == null || mejs . PluginDetector . hasPluginVersion ( e , k . version ) ) for ( d = 0 ; d < k . types . length ; d ++ ) if ( l == k . types [ d ] ) { j . method = e ; j . url = f [ g ] . url ; return j } } } } if ( b . mode === "auto_plugin" && j . method === "native" ) return j ; if ( j . method === "" && f . length > 0 ) j . url = f [ 0 ] . url ; return j } , formatType : function ( a , b ) { return a && ! b ? this . getTypeFromFile ( a ) : b && ~ b . indexOf ( ";" ) ? b . substr ( 0 , b . indexOf ( ";" ) ) : b } ,
0 ; f < g . length ; f ++ ) { l = g [ f ] . type ; for ( a = 0 ; a < b . plugins . length ; a ++ ) { e = b . plugins [ a ] ; h = mejs . plugins [ e ] ; for ( c = 0 ; c < h . length ; c ++ ) { k = h [ c ] ; if ( k . version == null || mejs . PluginDetector . hasPluginVersion ( e , k . version ) ) for ( d = 0 ; d < k . types . length ; d ++ ) if ( l == k . types [ d ] ) { j . method = e ; j . url = g [ f ] . url ; return j } } } } if ( b . mode === "auto_plugin" && j . method === "native" ) return j ; if ( j . method === "" && g . length > 0 ) j . url = g [ 0 ] . url ; return j } , formatType : function ( a , b ) { return a && ! b ? this . getTypeFromFile ( a ) : b && ~ b . indexOf ( ";" ) ? b . substr ( 0 , b . indexOf ( ";" ) ) : b } ,
getTypeFromFile : function ( a ) { a = a . split ( "?" ) [ 0 ] ; a = a . substring ( a . lastIndexOf ( "." ) + 1 ) . toLowerCase ( ) ; return ( /(mp4|m4v|ogg|ogv|webm|webmv|flv|wmv|mpeg|mov)/gi . test ( a ) ? "video" : "audio" ) + "/" + this . getTypeFromExtension ( a ) } , getTypeFromExtension : function ( a ) { switch ( a ) { case "mp4" : case "m4v" : return "mp4" ; case "webm" : case "webma" : case "webmv" : return "webm" ; case "ogg" : case "oga" : case "ogv" : return "ogg" ; default : return a } } , createErrorMessage : function ( a , b , c ) { var d = a . htmlMediaElement , e = document . createElement ( "div" ) ; e . className =
getTypeFromFile : function ( a ) { a = a . split ( "?" ) [ 0 ] ; a = a . substring ( a . lastIndexOf ( "." ) + 1 ) . toLowerCase ( ) ; return ( /(mp4|m4v|ogg|ogv|webm|webmv|flv|wmv|mpeg|mov)/gi . test ( a ) ? "video" : "audio" ) + "/" + this . getTypeFromExtension ( a ) } , getTypeFromExtension : function ( a ) { switch ( a ) { case "mp4" : case "m4v" : return "mp4" ; case "webm" : case "webma" : case "webmv" : return "webm" ; case "ogg" : case "oga" : case "ogv" : return "ogg" ; default : return a } } , createErrorMessage : function ( a , b , c ) { var d = a . htmlMediaElement , e = document . createElement ( "div" ) ; e . className =
"me-cannotplay" ; try { e . style . width = d . width + "px" ; e . style . height = d . height + "px" } catch ( f ) { } e . innerHTML = b . customError ? b . customError : c !== "" ? '<a href="' + a . url + '"><img src="' + c + '" width="100%" height="100%" /></a>' : '<a href="' + a . url + '"><span>' + mejs . i18n . t ( "Download File" ) + "</span></a>" ; d . parentNode . insertBefore ( e , d ) ; d . style . display = "none" ; b . error ( d ) } , createPlugin : function ( a , b , c , d , e , f ) { c = a . htmlMediaElement ; var g = 1 , h = 1 , l = "me_" + a . method + "_" + mejs . meIndex ++ , j = new mejs . PluginMediaElement ( l , a . method , a . url ) , k = document . createElement ( "div" ) ,
"me-cannotplay" ; try { e . style . width = d . width + "px" ; e . style . height = d . height + "px" } catch ( g ) { } e . innerHTML = b . customError ? b . customError : c !== "" ? '<a href="' + a . url + '"><img src="' + c + '" width="100%" height="100%" /></a>' : '<a href="' + a . url + '"><span>' + mejs . i18n . t ( "Download File" ) + "</span></a>" ; d . parentNode . insertBefore ( e , d ) ; d . style . display = "none" ; b . error ( d ) } , createPlugin : function ( a , b , c , d , e , g ) { c = a . htmlMediaElement ; var f = 1 , h = 1 , l = "me_" + a . method + "_" + mejs . meIndex ++ , j = new mejs . PluginMediaElement ( l , a . method , a . url ) , k = document . createElement ( "div" ) ,
m ; j . tagName = c . tagName ; for ( m = 0 ; m < c . attributes . length ; m ++ ) { var n = c . attributes [ m ] ; n . specified == true && j . setAttribute ( n . name , n . value ) } for ( m = c . parentNode ; m !== null && m . tagName . toLowerCase ( ) != "body" ; ) { if ( m . parentNode . tagName . toLowerCase ( ) == "p" ) { m . parentNode . parentNode . insertBefore ( m , m . parentNode ) ; break } m = m . parentNode } if ( a . isVideo ) { g = b . pluginWidth > 0 ? b . pluginWidth : b . videoWidth > 0 ? b . videoWidth : c . getAttribute ( "width" ) !== null ? c . getAttribute ( "width" ) : b . defaultVideoWidth ; h = b . pluginHeight > 0 ? b . pluginHeight : b . videoHeight >
m ; j . tagName = c . tagName ; for ( m = 0 ; m < c . attributes . length ; m ++ ) { var n = c . attributes [ m ] ; n . specified == true && j . setAttribute ( n . name , n . value ) } for ( m = c . parentNode ; m !== null && m . tagName . toLowerCase ( ) != "body" ; ) { if ( m . parentNode . tagName . toLowerCase ( ) == "p" ) { m . parentNode . parentNode . insertBefore ( m , m . parentNode ) ; break } m = m . parentNode } if ( a . isVideo ) { f = b . pluginWidth > 0 ? b . pluginWidth : b . videoWidth > 0 ? b . videoWidth : c . getAttribute ( "width" ) !== null ? c . getAttribute ( "width" ) : b . defaultVideoWidth ; h = b . pluginHeight > 0 ? b . pluginHeight : b . videoHeight >
0 ? b . videoHeight : c . getAttribute ( "height" ) !== null ? c . getAttribute ( "height" ) : b . defaultVideoHeight ; g = mejs . Utility . encodeUrl ( g ) ; h = mejs . Utility . encodeUrl ( h ) } else if ( b . enablePluginDebug ) { g = 320 ; h = 240 } j . success = b . success ; mejs . MediaPluginBridge . registerPluginElement ( l , j , c ) ; k . className = "me-plugin" ; k . id = l + "_container" ; a . isVideo ? c . parentNode . insertBefore ( k , c ) : document . body . insertBefore ( k , document . body . childNodes [ 0 ] ) ; d = [ "id=" + l , "isvideo=" + ( a . isVideo ? "true" : "false" ) , "autoplay=" + ( d ? "true" : "false" ) , "preload=" + e , "width=" +
0 ? b . videoHeight : c . getAttribute ( "height" ) !== null ? c . getAttribute ( "height" ) : b . defaultVideoHeight ; f = mejs . Utility . encodeUrl ( f ) ; h = mejs . Utility . encodeUrl ( h ) } else if ( b . enablePluginDebug ) { f = 320 ; h = 240 } j . success = b . success ; mejs . MediaPluginBridge . registerPluginElement ( l , j , c ) ; k . className = "me-plugin" ; k . id = l + "_container" ; a . isVideo ? c . parentNode . insertBefore ( k , c ) : document . body . insertBefore ( k , document . body . childNodes [ 0 ] ) ; d = [ "id=" + l , "isvideo=" + ( a . isVideo ? "true" : "false" ) , "autoplay=" + ( d ? "true" : "false" ) , "preload=" + e , "width=" +
g , "startvolume=" + b . startVolume , "timerrate=" + b . timerRate , "flashstreamer=" + b . flashStreamer , "height=" + h , "pseudostreamstart=" + b . pseudoStreamingStartQueryParam ] ; if ( a . url !== null ) a . method == "flash" ? d . push ( "file=" + mejs . Utility . encodeUrl ( a . url ) ) : d . push ( "file=" + a . url ) ; b . enablePluginDebug && d . push ( "debug=true" ) ; b . enablePluginSmoothing && d . push ( "smoothing=true" ) ; b . enablePseudoStreaming && d . push ( "pseudostreaming=true" ) ; f && d . push ( "controls=true" ) ; if ( b . pluginVars ) d = d . concat ( b . pluginVars ) ; switch ( a . method ) { case "silverlight" : k . innerHTML =
f , "startvolume=" + b . startVolume , "timerrate=" + b . timerRate , "flashstreamer=" + b . flashStreamer , "height=" + h , "pseudostreamstart=" + b . pseudoStreamingStartQueryParam ] ; if ( a . url !== null ) a . method == "flash" ? d . push ( "file=" + mejs . Utility . encodeUrl ( a . url ) ) : d . push ( "file=" + a . url ) ; b . enablePluginDebug && d . push ( "debug=true" ) ; b . enablePluginSmoothing && d . push ( "smoothing=true" ) ; b . enablePseudoStreaming && d . push ( "pseudostreaming=true" ) ; g && d . push ( "controls=true" ) ; if ( b . pluginVars ) d = d . concat ( b . pluginVars ) ; switch ( a . method ) { case "silverlight" : k . innerHTML =
'<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" id="' + l + '" name="' + l + '" width="' + g + '" height="' + h + '" class="mejs-shim"><param name="initParams" value="' + d . join ( "," ) + '" /><param name="windowless" value="true" /><param name="background" value="black" /><param name="minRuntimeVersion" value="3.0.0.0" /><param name="autoUpgrade" value="true" /><param name="source" value="' + b . pluginPath + b . silverlightName + '" /></object>' ; break ; case "flash" : if ( mejs . MediaFeatures . isIE ) { a =
'<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" id="' + l + '" name="' + l + '" width="' + f + '" height="' + h + '" class="mejs-shim"><param name="initParams" value="' + d . join ( "," ) + '" /><param name="windowless" value="true" /><param name="background" value="black" /><param name="minRuntimeVersion" value="3.0.0.0" /><param name="autoUpgrade" value="true" /><param name="source" value="' + b . pluginPath + b . silverlightName + '" /></object>' ; break ; case "flash" : if ( mejs . MediaFeatures . isIE ) { a =
document . createElement ( "div" ) ; k . appendChild ( a ) ; a . outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" id="' + l + '" width="' + g + '" height="' + h + '" class="mejs-shim"><param name="movie" value="' + b . pluginPath + b . flashName + "?x=" + new Date + '" /><param name="flashvars" value="' + d . join ( "&" ) + '" /><param name="quality" value="high" /><param name="bgcolor" value="#000000" /><param name="wmode" value="transparent" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /></object>' } else k . innerHTML =
document . createElement ( "div" ) ; k . appendChild ( a ) ; a . outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" id="' + l + '" width="' + f + '" height="' + h + '" class="mejs-shim"><param name="movie" value="' + b . pluginPath + b . flashName + "?x=" + new Date + '" /><param name="flashvars" value="' + d . join ( "&" ) + '" /><param name="quality" value="high" /><param name="bgcolor" value="#000000" /><param name="wmode" value="transparent" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><param name="scale" value="default " /></object>' } else k . innerHTML =
'<embed id="' + l + '" name="' + l + '" play="true" loop="false" quality="high" bgcolor="#000000" wmode="transparent" allowScriptAccess="always" allowFullScreen="true" type="application/x-shockwave-flash" pluginspage="//www.macromedia.com/go/getflashplayer" src="' + b . pluginPath + b . flashName + '" flashvars="' + d . join ( "&" ) + '" width="' + g + '" height="' + h + '" class="mejs-shim"></embed>' ; break ; case "youtube" : b = a . url . substr ( a . url . lastIndexOf ( "=" ) + 1 ) ; youtubeSettings = { container : k , containerId : k . id , pluginMediaElement : j , pluginId : l ,
'<embed id="' + l + '" name="' + l + '" play="true" loop="false" quality="high" bgcolor="#000000" wmode="transparent" allowScriptAccess="always" allowFullScreen="true" type="application/x-shockwave-flash" pluginspage="//www.macromedia.com/go/getflashplayer" src="' + b . pluginPath + b . flashName + '" flashvars="' + d . join ( "&" ) + '" width="' + f + '" height="' + h + '" scale="default" class="mejs-shim"></embed>' ; break ; case "youtube" : b = a . url . substr ( a . url . lastIndexOf ( "=" ) + 1 ) ; youtubeSettings = { container : k , containerId : k . id , pluginMediaElement : j ,
videoId : b , height : h , width : g } ; mejs . PluginDetector . hasPluginVersion ( "flash" , [ 10 , 0 , 0 ] ) ? mejs . YouTubeApi . createFlash ( youtubeSettings ) : mejs . YouTubeApi . enqueueIframe ( youtubeSettings ) ; break ; case "vimeo" : j . vimeoid = a . url . substr ( a . url . lastIndexOf ( "/" ) + 1 ) ; k . innerHTML = '<iframe src="http://player.vimeo.com/video/' + j . vimeoid + '?portrait=0&byline=0&title=0" width="' + g + '" height="' + h + '" frameborder="0" class="mejs-shim"></iframe>' } c . style . display = "none" ; c . removeAttribute ( "autoplay" ) ; return j } , updateNative : function ( a ,
pluginId : l , videoId : b , height : h , width : f } ; mejs . PluginDetector . hasPluginVersion ( "flash" , [ 10 , 0 , 0 ] ) ? mejs . YouTubeApi . createFlash ( youtubeSettings ) : mejs . YouTubeApi . enqueueIframe ( youtubeSettings ) ; break ; case "vimeo" : j . vimeoid = a . url . substr ( a . url . lastIndexOf ( "/" ) + 1 ) ; k . innerHTML = '<iframe src="http://player.vimeo.com/video/' + j . vimeoid + '?portrait=0&byline=0&title=0" width="' + f + '" height="' + h + '" frameborder="0" class="mejs-shim"></iframe>' } c . style . display = "none" ; c . removeAttribute ( "autoplay" ) ; return j } , updateNative : function ( a ,
b ) { var c = a . htmlMediaElement , d ; for ( d in mejs . HtmlMediaElement ) c [ d ] = mejs . HtmlMediaElement [ d ] ; b . success ( c , c ) ; return c } } ;
b ) { var c = a . htmlMediaElement , d ; for ( d in mejs . HtmlMediaElement ) c [ d ] = mejs . HtmlMediaElement [ d ] ; b . success ( c , c ) ; return c } } ;
mejs . YouTubeApi = { isIframeStarted : false , isIframeLoaded : false , loadIframeApi : function ( ) { if ( ! this . isIframeStarted ) { var a = document . createElement ( "script" ) ; a . src = "//www.youtube.com/player_api" ; var b = document . getElementsByTagName ( "script" ) [ 0 ] ; b . parentNode . insertBefore ( a , b ) ; this . isIframeStarted = true } } , iframeQueue : [ ] , enqueueIframe : function ( a ) { if ( this . isLoaded ) this . createIframe ( a ) ; else { this . loadIframeApi ( ) ; this . iframeQueue . push ( a ) } } , createIframe : function ( a ) { var b = a . pluginMediaElement , c = new YT . Player ( a . containerId ,
mejs . YouTubeApi = { isIframeStarted : false , isIframeLoaded : false , loadIframeApi : function ( ) { if ( ! this . isIframeStarted ) { var a = document . createElement ( "script" ) ; a . src = "//www.youtube.com/player_api" ; var b = document . getElementsByTagName ( "script" ) [ 0 ] ; b . parentNode . insertBefore ( a , b ) ; this . isIframeStarted = true } } , iframeQueue : [ ] , enqueueIframe : function ( a ) { if ( this . isLoaded ) this . createIframe ( a ) ; else { this . loadIframeApi ( ) ; this . iframeQueue . push ( a ) } } , createIframe : function ( a ) { var b = a . pluginMediaElement , c = new YT . Player ( a . containerId ,
{ height : a . height , width : a . width , videoId : a . videoId , playerVars : { controls : 0 } , events : { onReady : function ( ) { a . pluginMediaElement . pluginApi = c ; mejs . MediaPluginBridge . initPlugin ( a . pluginId ) ; setInterval ( function ( ) { mejs . YouTubeApi . createEvent ( c , b , "timeupdate" ) } , 250 ) } , onStateChange : function ( d ) { mejs . YouTubeApi . handleStateChange ( d . data , c , b ) } } } ) } , createEvent : function ( a , b , c ) { c = { type : c , target : b } ; if ( a && a . getDuration ) { b . currentTime = c . currentTime = a . getCurrentTime ( ) ; b . duration = c . duration = a . getDuration ( ) ; c . paused = b . paused ;
{ height : a . height , width : a . width , videoId : a . videoId , playerVars : { controls : 0 } , events : { onReady : function ( ) { a . pluginMediaElement . pluginApi = c ; mejs . MediaPluginBridge . initPlugin ( a . pluginId ) ; setInterval ( function ( ) { mejs . YouTubeApi . createEvent ( c , b , "timeupdate" ) } , 250 ) } , onStateChange : function ( d ) { mejs . YouTubeApi . handleStateChange ( d . data , c , b ) } } } ) } , createEvent : function ( a , b , c ) { c = { type : c , target : b } ; if ( a && a . getDuration ) { b . currentTime = c . currentTime = a . getCurrentTime ( ) ; b . duration = c . duration = a . getDuration ( ) ; c . paused = b . paused ;
@ -62,10 +63,9 @@ a;var b,c="//www.youtube.com/apiplayer?enablejsapi=1&playerapiid="+a.pluginI
c + '" /><param name="wmode" value="transparent" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /></object>' } else a . container . innerHTML = '<object type="application/x-shockwave-flash" id="' + a . pluginId + '" data="' + c + '" width="' + a . width + '" height="' + a . height + '" style="visibility: visible; " class="mejs-shim"><param name="allowScriptAccess" value="always"><param name="wmode" value="transparent"></object>' } , flashReady : function ( a ) { var b = this . flashPlayers [ a ] , c =
c + '" /><param name="wmode" value="transparent" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /></object>' } else a . container . innerHTML = '<object type="application/x-shockwave-flash" id="' + a . pluginId + '" data="' + c + '" width="' + a . width + '" height="' + a . height + '" style="visibility: visible; " class="mejs-shim"><param name="allowScriptAccess" value="always"><param name="wmode" value="transparent"></object>' } , flashReady : function ( a ) { var b = this . flashPlayers [ a ] , c =
document . getElementById ( a ) , d = b . pluginMediaElement ; d . pluginApi = d . pluginElement = c ; mejs . MediaPluginBridge . initPlugin ( a ) ; c . cueVideoById ( b . videoId ) ; a = b . containerId + "_callback" ; window [ a ] = function ( e ) { mejs . YouTubeApi . handleStateChange ( e , c , d ) } ; c . addEventListener ( "onStateChange" , a ) ; setInterval ( function ( ) { mejs . YouTubeApi . createEvent ( c , d , "timeupdate" ) } , 250 ) } , handleStateChange : function ( a , b , c ) { switch ( a ) { case - 1 : c . paused = true ; c . ended = true ; mejs . YouTubeApi . createEvent ( b , c , "loadedmetadata" ) ; break ; case 0 : c . paused = false ;
document . getElementById ( a ) , d = b . pluginMediaElement ; d . pluginApi = d . pluginElement = c ; mejs . MediaPluginBridge . initPlugin ( a ) ; c . cueVideoById ( b . videoId ) ; a = b . containerId + "_callback" ; window [ a ] = function ( e ) { mejs . YouTubeApi . handleStateChange ( e , c , d ) } ; c . addEventListener ( "onStateChange" , a ) ; setInterval ( function ( ) { mejs . YouTubeApi . createEvent ( c , d , "timeupdate" ) } , 250 ) } , handleStateChange : function ( a , b , c ) { switch ( a ) { case - 1 : c . paused = true ; c . ended = true ; mejs . YouTubeApi . createEvent ( b , c , "loadedmetadata" ) ; break ; case 0 : c . paused = false ;
c . ended = true ; mejs . YouTubeApi . createEvent ( b , c , "ended" ) ; break ; case 1 : c . paused = false ; c . ended = false ; mejs . YouTubeApi . createEvent ( b , c , "play" ) ; mejs . YouTubeApi . createEvent ( b , c , "playing" ) ; break ; case 2 : c . paused = true ; c . ended = false ; mejs . YouTubeApi . createEvent ( b , c , "pause" ) ; break ; case 3 : mejs . YouTubeApi . createEvent ( b , c , "progress" ) } } } ; function onYouTubePlayerAPIReady ( ) { mejs . YouTubeApi . iFrameReady ( ) } function onYouTubePlayerReady ( a ) { mejs . YouTubeApi . flashReady ( a ) } window . mejs = mejs ; window . MediaElement = mejs . MediaElement ;
c . ended = true ; mejs . YouTubeApi . createEvent ( b , c , "ended" ) ; break ; case 1 : c . paused = false ; c . ended = false ; mejs . YouTubeApi . createEvent ( b , c , "play" ) ; mejs . YouTubeApi . createEvent ( b , c , "playing" ) ; break ; case 2 : c . paused = true ; c . ended = false ; mejs . YouTubeApi . createEvent ( b , c , "pause" ) ; break ; case 3 : mejs . YouTubeApi . createEvent ( b , c , "progress" ) } } } ; function onYouTubePlayerAPIReady ( ) { mejs . YouTubeApi . iFrameReady ( ) } function onYouTubePlayerReady ( a ) { mejs . YouTubeApi . flashReady ( a ) } window . mejs = mejs ; window . MediaElement = mejs . MediaElement ;
( function ( a , b ) { var c = { locale : { language : "" , strings : { } } , methods : { } } ; c . locale . getLanguage = function ( ) { return c . locale . language || navigator . language } ; if ( typeof mejsL10n != "undefined" ) c . locale . language = mejsL10n . language ; c . locale . INIT _LANGUAGE = c . locale . getLanguage ( ) ; c . methods . checkPlain = function ( d ) { var e , f , g = { "&" : "&" , '"' : """ , "<" : "<" , ">" : ">" } ; d = String ( d ) ; for ( e in g ) if ( g . hasOwnProperty ( e ) ) { f = RegExp ( e , "g" ) ; d = d . replace ( f , g [ e ] ) } return d } ; c . methods . formatString = function ( d , e ) { for ( var f in e ) { switch ( f . charAt ( 0 ) ) { case "@" : e [ f ] =
( function ( a , b ) { var c = { locale : { language : "" , strings : { } } , methods : { } } ; c . getLanguage = function ( ) { return ( c . locale . language || window . navigator . userLanguage || window . navigator . language ) . substr ( 0 , 2 ) . toLowerCase ( ) } ; if ( typeof mejsL10n != "undefined" ) c . locale . language = mejsL10n . language ; c . methods . checkPlain = function ( d ) { var e , g , f = { "&" : "&" , '"' : """ , "<" : "<" , ">" : ">" } ; d = String ( d ) ; for ( e in f ) if ( f . hasOwnProperty ( e ) ) { g = RegExp ( e , "g" ) ; d = d . replace ( g , f [ e ] ) } return d } ; c . methods . t = function ( d , e ) { if ( c . locale . strings &&
c . methods . checkPlain ( e [ f ] ) ; break ; case "!" : break ; default : e [ f ] = '<em class="placeholder">' + c . methods . checkPlain ( e [ f ] ) + "</em>" } d = d . replace ( f , e [ f ] ) } return d } ; c . methods . t = function ( d , e , f ) { if ( c . locale . strings && c . locale . strings [ f . context ] && c . locale . strings [ f . context ] [ d ] ) d = c . locale . strings [ f . context ] [ d ] ; if ( e ) d = c . methods . formatString ( d , e ) ; return d } ; c . t = function ( d , e , f ) { if ( typeof d === "string" && d . length > 0 ) { var g = c . locale . getLanguage ( ) ; f = f || { context : g } ; return c . methods . t ( d , e , f ) } else throw { name : "InvalidArgumentException" ,
c . locale . strings [ e . context ] && c . locale . strings [ e . context ] [ d ] ) d = c . locale . strings [ e . context ] [ d ] ; return c . methods . checkPlain ( d ) } ; c . t = function ( d , e ) { if ( typeof d === "string" && d . length > 0 ) { var g = c . getLanguage ( ) ; e = e || { context : g } ; return c . methods . t ( d , e ) } else throw { name : "InvalidArgumentException" , message : "First argument is either not a string or empty." } ; } ; b . i18n = c } ) ( document , mejs ) ; ( function ( a ) { if ( typeof mejsL10n != "undefined" ) a [ mejsL10n . language ] = mejsL10n . strings } ) ( mejs . i18n . locale . strings ) ;
message : "First argument is either not a string or empty." } ; } ; b . i18n = c } ) ( document , mejs ) ; ( function ( a ) { if ( typeof mejsL10n != "undefined" ) a [ mejsL10n . language ] = mejsL10n . strings } ) ( mejs . i18n . locale . strings ) ; ( function ( a ) { a . de = { Fullscreen : "Vollbild" , "Go Fullscreen" : "Vollbild an" , "Turn off Fullscreen" : "Vollbild aus" , Close : "Schlie\u00dfen" } } ) ( mejs . i18n . locale . strings ) ;
( function ( a ) { if ( typeof a . de === "undefined" ) a . de = { Fullscreen : "Vollbild" , "Go Fullscreen" : "Vollbild an" , "Turn off Fullscreen" : "Vollbild aus" , Close : "Schlie\u00dfen" } } ) ( mejs . i18n . locale . strings ) ; ( function ( a ) { if ( typeof a . zh === "undefined" ) a . zh = { Fullscreen : "\u5168\u87a2\u5e55" , "Go Fullscreen" : "\u5168\u5c4f\u6a21\u5f0f" , "Turn off Fullscreen" : "\u9000\u51fa\u5168\u5c4f\u6a21\u5f0f" , Close : "\u95dc\u9589" } } ) ( mejs . i18n . locale . strings ) ;
( function ( a ) { a . zh = { Fullscreen : "\u5168\u87a2\u5e55" , "Go Fullscreen" : "\u5168\u5c4f\u6a21\u5f0f" , "Turn off Fullscreen" : "\u9000\u51fa\u5168\u5c4f\u6a21\u5f0f" , Close : "\u95dc\u9589" } } ) ( mejs . i18n . locale . strings ) ;
/ * !
/ * !
* MediaElementPlayer
* MediaElementPlayer
@ -79,37 +79,37 @@ message:"First argument is either not a string or empty."};};b.i18n=c})(document
*
*
* / i f ( t y p e o f j Q u e r y ! = " u n d e f i n e d " ) m e j s . $ = j Q u e r y ; e l s e i f ( t y p e o f e n d e r ! = " u n d e f i n e d " ) m e j s . $ = e n d e r ;
* / i f ( t y p e o f j Q u e r y ! = " u n d e f i n e d " ) m e j s . $ = j Q u e r y ; e l s e i f ( t y p e o f e n d e r ! = " u n d e f i n e d " ) m e j s . $ = e n d e r ;
( function ( f ) { mejs . MepDefaults = { poster : "" , showPosterWhenEnded : false , defaultVideoWidth : 480 , defaultVideoHeight : 270 , videoWidth : - 1 , videoHeight : - 1 , defaultAudioWidth : 400 , defaultAudioHeight : 30 , defaultSeekBackwardInterval : function ( a ) { return a . duration * 0.05 } , defaultSeekForwardInterval : function ( a ) { return a . duration * 0.05 } , audioWidth : - 1 , audioHeight : - 1 , startVolume : 0.8 , loop : false , autoRewind : true , enableAutosize : true , alwaysShowHours : false , showTimecodeFrameCount : false , framesPerSecond : 25 , autosizeProgress : true , alwaysShowControls : false ,
( function ( f ) { mejs . MepDefaults = { poster : "" , showPosterWhenEnded : false , defaultVideoWidth : 480 , defaultVideoHeight : 270 , videoWidth : - 1 , videoHeight : - 1 , defaultAudioWidth : 400 , defaultAudioHeight : 30 , defaultSeekBackwardInterval : function ( a ) { return a . duration * 0.05 } , defaultSeekForwardInterval : function ( a ) { return a . duration * 0.05 } , audioWidth : - 1 , audioHeight : - 1 , startVolume : 0.8 , loop : false , autoRewind : true , enableAutosize : true , alwaysShowHours : false , showTimecodeFrameCount : false , framesPerSecond : 25 , autosizeProgress : true , alwaysShowControls : false ,
hideVideoControlsOnLoad : false , clickToPlayPause : true , iPadUseNativeControls : false , iPhoneUseNativeControls : false , AndroidUseNativeControls : false , features : [ "playpause" , "current" , "progress" , "duration" , "tracks" , "volume" , "fullscreen" ] , isVideo : true , enableKeyboard : true , pauseOtherPlayers : true , keyActions : [ { keys : [ 32 , 179 ] , action : function ( a , b ) { b . paused || b . ended ? b . play ( ) : b . pause ( ) } } , { keys : [ 38 ] , action : function ( a , b ) { b . setVolume ( Math . min ( b . volume + 0.1 , 1 ) ) } } , { keys : [ 40 ] , action : function ( a , b ) { b . setVolume ( Math . max ( b . volume -
hideVideoControlsOnLoad : false , clickToPlayPause : true , iPadUseNativeControls : false , iPhoneUseNativeControls : false , AndroidUseNativeControls : false , features : [ "playpause" , "current" , "progress" , "duration" , "tracks" , "volume" , "fullscreen" ] , isVideo : true , enableKeyboard : true , pauseOtherPlayers : true , keyActions : [ { keys : [ 32 , 179 ] , action : function ( a , b ) { b . paused || b . ended ? a . play ( ) : a . pause ( ) } } , { keys : [ 38 ] , action : function ( a , b ) { b . setVolume ( Math . min ( b . volume + 0.1 , 1 ) ) } } , { keys : [ 40 ] , action : function ( a , b ) { b . setVolume ( Math . max ( b . volume -
0.1 , 0 ) ) } } , { keys : [ 37 , 227 ] , action : function ( a , b ) { if ( ! isNaN ( b . duration ) && b . duration > 0 ) { if ( a . isVideo ) { a . showControls ( ) ; a . startControlsTimer ( ) } var c = Math . max ( b . currentTime - a . options . defaultSeekBackwardInterval ( b ) , 0 ) ; b . setCurrentTime ( c ) } } } , { keys : [ 39 , 228 ] , action : function ( a , b ) { if ( ! isNaN ( b . duration ) && b . duration > 0 ) { if ( a . isVideo ) { a . showControls ( ) ; a . startControlsTimer ( ) } var c = Math . min ( b . currentTime + a . options . defaultSeekForwardInterval ( b ) , b . duration ) ; b . setCurrentTime ( c ) } } } , { keys : [ 70 ] , action : function ( a ) { if ( typeof a . enterFullScreen !=
0.1 , 0 ) ) } } , { keys : [ 37 , 227 ] , action : function ( a , b ) { if ( ! isNaN ( b . duration ) && b . duration > 0 ) { if ( a . isVideo ) { a . showControls ( ) ; a . startControlsTimer ( ) } var c = Math . max ( b . currentTime - a . options . defaultSeekBackwardInterval ( b ) , 0 ) ; b . setCurrentTime ( c ) } } } , { keys : [ 39 , 228 ] , action : function ( a , b ) { if ( ! isNaN ( b . duration ) && b . duration > 0 ) { if ( a . isVideo ) { a . showControls ( ) ; a . startControlsTimer ( ) } var c = Math . min ( b . currentTime + a . options . defaultSeekForwardInterval ( b ) , b . duration ) ; b . setCurrentTime ( c ) } } } , { keys : [ 70 ] , action : function ( a ) { if ( typeof a . enterFullScreen !=
"undefined" ) a . isFullScreen ? a . exitFullScreen ( ) : a . enterFullScreen ( ) } } ] } ; mejs . mepIndex = 0 ; mejs . players = { } ; mejs . MediaElementPlayer = function ( a , b ) { if ( ! ( this instanceof mejs . MediaElementPlayer ) ) return new mejs . MediaElementPlayer ( a , b ) ; this . $media = this . $node = f ( a ) ; this . node = this . media = this . $media [ 0 ] ; if ( typeof this . node . player != "undefined" ) return this . node . player ; else this . node . player = this ; if ( typeof b == "undefined" ) b = this . $node . data ( "mejsoptions" ) ; this . options = f . extend ( { } , mejs . MepDefaults , b ) ; this . id = "mep_" + mejs . mepIndex ++ ;
"undefined" ) a . isFullScreen ? a . exitFullScreen ( ) : a . enterFullScreen ( ) } } ] } ; mejs . mepIndex = 0 ; mejs . players = { } ; mejs . MediaElementPlayer = function ( a , b ) { if ( ! ( this instanceof mejs . MediaElementPlayer ) ) return new mejs . MediaElementPlayer ( a , b ) ; this . $media = this . $node = f ( a ) ; this . node = this . media = this . $media [ 0 ] ; if ( typeof this . node . player != "undefined" ) return this . node . player ; else this . node . player = this ; if ( typeof b == "undefined" ) b = this . $node . data ( "mejsoptions" ) ; this . options = f . extend ( { } , mejs . MepDefaults , b ) ; this . id = "mep_" + mejs . mepIndex ++ ;
mejs . players [ this . id ] = this ; this . init ( ) ; return this } ; mejs . MediaElementPlayer . prototype = { hasFocus : false , controlsAreVisible : true , init : function ( ) { var a = this , b = mejs . MediaFeatures , c = f . extend ( true , { } , a . options , { success : function ( d , g ) { a . meReady ( d , g ) } , error : function ( d ) { a . handleError ( d ) } } ) , e = a . media . tagName . toLowerCase ( ) ; a . isDynamic = e !== "audio" && e !== "video" ; a . isVideo = a . isDynamic ? a . options . isVideo : e !== "audio" && a . options . isVideo ; if ( b . isiPad && a . options . iPadUseNativeControls || b . isiPhone && a . options . iPhoneUseNativeControls ) { a . $media . attr ( "controls" ,
mejs . players [ this . id ] = this ; this . init ( ) ; return this } ; mejs . MediaElementPlayer . prototype = { hasFocus : false , controlsAreVisible : true , init : function ( ) { var a = this , b = mejs . MediaFeatures , c = f . extend ( true , { } , a . options , { success : function ( d , g ) { a . meReady ( d , g ) } , error : function ( d ) { a . handleError ( d ) } } ) , e = a . media . tagName . toLowerCase ( ) ; a . isDynamic = e !== "audio" && e !== "video" ; a . isVideo = a . isDynamic ? a . options . isVideo : e !== "audio" && a . options . isVideo ; if ( b . isiPad && a . options . iPadUseNativeControls || b . isiPhone && a . options . iPhoneUseNativeControls ) { a . $media . attr ( "controls" ,
"controls" ) ; if ( b . isiPad && a . media . getAttribute ( "autoplay" ) !== null ) { a . media . load ( ) ; a . media . play ( ) } } else if ( ! ( b . isAndroid && a . options . AndroidUseNativeControls ) ) { a . $media . removeAttr ( "controls" ) ; a . container = f ( '<div id="' + a . id + '" class="mejs-container ' + ( mejs . MediaFeatures . svg ? "svg" : "no-svg" ) + '"><div class="mejs-inner"><div class="mejs-mediaelement"></div><div class="mejs-layers"></div><div class="mejs-controls"></div><div class="mejs-clear"></div></div></div>' ) . addClass ( a . $media [ 0 ] . className ) . insertBefore ( a . $media ) ;
"controls" ) ; b . isiPad && a . media . getAttribute ( "autoplay" ) !== null && a . play ( ) } else if ( ! ( b . isAndroid && a . options . AndroidUseNativeControls ) ) { a . $media . removeAttr ( "controls" ) ; a . container = f ( '<div id="' + a . id + '" class="mejs-container ' + ( mejs . MediaFeatures . svg ? "svg" : "no-svg" ) + '"><div class="mejs-inner"><div class="mejs-mediaelement"></div><div class="mejs-layers"></div><div class="mejs-controls"></div><div class="mejs-clear"></div></div></div>' ) . addClass ( a . $media [ 0 ] . className ) . insertBefore ( a . $media ) ; a . container . addClass ( ( b . isAndroid ?
a . container . addClass ( ( b . isAndroid ? "mejs-android ": "" ) + ( b . isiOS ? "mejs-ios " : "" ) + ( b . isiPad ? "mejs-ipad " : "" ) + ( b . isiPhone ? "mejs-iphone " : "" ) + ( a . isVideo ? "mejs-video " : "mejs-audio " ) ) ; if ( b . isiOS ) { b = a . $media . clone ( ) ; a . container . find ( ".mejs-mediaelement" ) . append ( b ) ; a . $media . remove ( ) ; a . $node = a . $media = b ; a . node = a . media = b [ 0 ] } else a . container . find ( ".mejs-mediaelement" ) . append ( a . $media ) ; a . controls = a . container . find ( ".mejs-controls" ) ; a . layers = a . container . find ( ".mejs-layers" ) ; b = a . isVideo ? "video" : "audio" ; e = b . substring ( 0 ,
"mejs-android ": "" ) + ( b . isiOS ? "mejs-ios " : "" ) + ( b . isiPad ? "mejs-ipad " : "" ) + ( b . isiPhone ? "mejs-iphone " : "" ) + ( a . isVideo ? "mejs-video " : "mejs-audio " ) ) ; if ( b . isiOS ) { b = a . $media . clone ( ) ; a . container . find ( ".mejs-mediaelement" ) . append ( b ) ; a . $media . remove ( ) ; a . $node = a . $media = b ; a . node = a . media = b [ 0 ] } else a . container . find ( ".mejs-mediaelement" ) . append ( a . $media ) ; a . controls = a . container . find ( ".mejs-controls" ) ; a . layers = a . container . find ( ".mejs-layers" ) ; b = a . isVideo ? "video" : "audio" ; e = b . substring ( 0 , 1 ) . toUpperCase ( ) + b . substring ( 1 ) ;
1 ) . toUpperCase ( ) + b . substring ( 1 ) ; a . width = a . options [ b + "Width" ] > 0 || a . options [ b + "Width" ] . toString ( ) . indexOf ( "%" ) > - 1 ? a . options [ b + "Width" ] : a . media . style . width !== "" && a . media . style . width !== null ? a . media . style . width : a . media . getAttribute ( "width" ) !== null ? a . $media . attr ( "width" ) : a . options [ "default" + e + "Width" ] ; a . height = a . options [ b + "Height" ] > 0 || a . options [ b + "Height" ] . toString ( ) . indexOf ( "%" ) > - 1 ? a . options [ b + "Height" ] : a . media . style . height !== "" && a . media . style . height !== null ? a . media . style . height : a . $media [ 0 ] . getAttribute ( "height" ) !==
a . width = a . options [ b + "Width" ] > 0 || a . options [ b + "Width" ] . toString ( ) . indexOf ( "%" ) > - 1 ? a . options [ b + "Width" ] : a . media . style . width !== "" && a . media . style . width !== null ? a . media . style . width : a . media . getAttribute ( "width" ) !== null ? a . $media . attr ( "width" ) : a . options [ "default" + e + "Width" ] ; a . height = a . options [ b + "Height" ] > 0 || a . options [ b + "Height" ] . toString ( ) . indexOf ( "%" ) > - 1 ? a . options [ b + "Height" ] : a . media . style . height !== "" && a . media . style . height !== null ? a . media . style . height : a . $media [ 0 ] . getAttribute ( "height" ) !== null ? a . $media . attr ( "height" ) :
null ? a . $media . attr ( "height" ) : a . options [ "default" + e + "Height" ] ; a . setPlayerSize ( a . width , a . height ) ; c . pluginWidth = a . width ; c . pluginHeight = a . height } mejs . MediaElement ( a . $media [ 0 ] , c ) ; typeof a . container != "undefined" && a . controlsAreVisible && a . container . trigger ( "controlsshown" ) } , showControls : function ( a ) { var b = this ; a = typeof a == "undefined" || a ; if ( ! b . controlsAreVisible ) { if ( a ) { b . controls . css ( "visibility" , "visible" ) . stop ( true , true ) . fadeIn ( 200 , function ( ) { b . controlsAreVisible = true ; b . container . trigger ( "controlsshown" ) } ) ;
a . options [ "default" + e + "Height" ] ; a . setPlayerSize ( a . width , a . height ) ; c . pluginWidth = a . width ; c . pluginHeight = a . height } mejs . MediaElement ( a . $media [ 0 ] , c ) ; typeof a . container != "undefined" && a . controlsAreVisible && a . container . trigger ( "controlsshown" ) } , showControls : function ( a ) { var b = this ; a = typeof a == "undefined" || a ; if ( ! b . controlsAreVisible ) { if ( a ) { b . controls . css ( "visibility" , "visible" ) . stop ( true , true ) . fadeIn ( 200 , function ( ) { b . controlsAreVisible = true ; b . container . trigger ( "controlsshown" ) } ) ; b . container . find ( ".mejs-control" ) . css ( "visibility" ,
b . container . find ( ".mejs-control" ) . css ( "visibility" , "visible") . stop ( true , true ) . fadeIn ( 200 , function ( ) { b . controlsAreVisible = true } ) } else { b . controls . css ( "visibility" , "visible" ) . css ( "display" , "block" ) ; b . container . find ( ".mejs-control" ) . css ( "visibility" , "visible" ) . css ( "display" , "block" ) ; b . controlsAreVisible = true ; b . container . trigger ( "controlsshown" ) } b . setControlsSize ( ) } } , hideControls : function ( a ) { var b = this ; a = typeof a == "undefined" || a ; if ( ! ( ! b . controlsAreVisible || b . options . alwaysShowControls ) ) if ( a ) { b . controls . stop ( true ,
"visible") . stop ( true , true ) . fadeIn ( 200 , function ( ) { b . controlsAreVisible = true } ) } else { b . controls . css ( "visibility" , "visible" ) . css ( "display" , "block" ) ; b . container . find ( ".mejs-control" ) . css ( "visibility" , "visible" ) . css ( "display" , "block" ) ; b . controlsAreVisible = true ; b . container . trigger ( "controlsshown" ) } b . setControlsSize ( ) } } , hideControls : function ( a ) { var b = this ; a = typeof a == "undefined" || a ; if ( ! ( ! b . controlsAreVisible || b . options . alwaysShowControls ) ) if ( a ) { b . controls . stop ( true , true ) . fadeOut ( 200 , function ( ) { f ( this ) . css ( "visibility" ,
true ) . fadeOut ( 200 , function ( ) { f ( this ) . css ( "visibility" , "hidden") . css ( "display" , "block" ) ; b . controlsAreVisible = false ; b . container . trigger ( "controlshidden" ) } ) ; b . container . find ( ".mejs-control" ) . stop ( true , true ) . fadeOut ( 200 , function ( ) { f ( this ) . css ( "visibility" , "hidden" ) . css ( "display" , "block" ) } ) } else { b . controls . css ( "visibility" , "hidden" ) . css ( "display" , "block" ) ; b . container . find ( ".mejs-control" ) . css ( "visibility" , "hidden" ) . css ( "display" , "block" ) ; b . controlsAreVisible = false ; b . container . trigger ( "controlshidden" ) } } ,
"hidden") . css ( "display" , "block" ) ; b . controlsAreVisible = false ; b . container . trigger ( "controlshidden" ) } ) ; b . container . find ( ".mejs-control" ) . stop ( true , true ) . fadeOut ( 200 , function ( ) { f ( this ) . css ( "visibility" , "hidden" ) . css ( "display" , "block" ) } ) } else { b . controls . css ( "visibility" , "hidden" ) . css ( "display" , "block" ) ; b . container . find ( ".mejs-control" ) . css ( "visibility" , "hidden" ) . css ( "display" , "block" ) ; b . controlsAreVisible = false ; b . container . trigger ( "controlshidden" ) } } , controlsTimer : null , startControlsTimer : function ( a ) { var b =
controlsTimer : null , startControlsTimer : function ( a ) { var b = this ; a = typeof a != "undefined" ? a : 1500 ; b . killControlsTimer ( "start" ) ; b . controlsTimer = setTimeout ( function ( ) { b . hideControls ( ) ; b . killControlsTimer ( "hide" ) } , a ) } , killControlsTimer : function ( ) { if ( this . controlsTimer !== null ) { clearTimeout ( this . controlsTimer ) ; delete this . controlsTimer ; this . controlsTimer = null } } , controlsEnabled : true , disableControls : function ( ) { this . killControlsTimer ( ) ; this . hideControls ( false ) ; this . controlsEnabled = false } , enableControls : function ( ) { this . showControls ( false ) ;
this ; a = typeof a != "undefined" ? a : 1500 ; b . killControlsTimer ( "start" ) ; b . controlsTimer = setTimeout ( function ( ) { b . hideControls ( ) ; b . killControlsTimer ( "hide" ) } , a ) } , killControlsTimer : function ( ) { if ( this . controlsTimer !== null ) { clearTimeout ( this . controlsTimer ) ; delete this . controlsTimer ; this . controlsTimer = null } } , controlsEnabled : true , disableControls : function ( ) { this . killControlsTimer ( ) ; this . hideControls ( false ) ; this . controlsEnabled = false } , enableControls : function ( ) { this . showControls ( false ) ; this . controlsEnabled = true } ,
this . controlsEnabled = true } , meReady : function ( a , b ) { var c = this , e = mejs . MediaFeatures , d = b . getAttribute ( "autoplay" ) ; d = ! ( typeof d == "undefined" || d === null || d === "false" ) ; var g ; if ( ! c . created ) { c . created = true ; c . media = a ; c . domNode = b ; if ( ! ( e . isAndroid && c . options . AndroidUseNativeControls ) && ! ( e . isiPad && c . options . iPadUseNativeControls ) && ! ( e . isiPhone && c . options . iPhoneUseNativeControls ) ) { c . buildposter ( c , c . controls , c . layers , c . media ) ; c . buildkeyboard ( c , c . controls , c . layers , c . media ) ; c . buildoverlays ( c , c . controls , c . layers , c . media ) ;
meReady : function ( a , b ) { var c = this , e = mejs . MediaFeatures , d = b . getAttribute ( "autoplay" ) ; d = ! ( typeof d == "undefined" || d === null || d === "false" ) ; var g ; if ( ! c . created ) { c . created = true ; c . media = a ; c . domNode = b ; if ( ! ( e . isAndroid && c . options . AndroidUseNativeControls ) && ! ( e . isiPad && c . options . iPadUseNativeControls ) && ! ( e . isiPhone && c . options . iPhoneUseNativeControls ) ) { c . buildposter ( c , c . controls , c . layers , c . media ) ; c . buildkeyboard ( c , c . controls , c . layers , c . media ) ; c . buildoverlays ( c , c . controls , c . layers , c . media ) ; c . findTracks ( ) ; for ( g in c . options . features ) { e =
c . findTracks ( ) ; for ( g in c . options . features ) { e = c . options . features [ g ] ; if ( c [ "build" + e ] ) try { c [ "build" + e ] ( c , c . controls , c . layers , c . media ) } catch ( k ) { } } c . container . trigger ( "controlsready" ) ; c . setPlayerSize ( c . width , c . height ) ; c . setControlsSize ( ) ; if ( c . isVideo ) { if ( mejs . MediaFeatures . hasTouch ) c . $media . bind ( "touchstart" , function ( ) { if ( c . controlsAreVisible ) c . hideControls ( false ) ; else c . controlsEnabled && c . showControls ( false ) } ) ; else { mejs . MediaElementPlayer . prototype . clickToPlayPauseCallback = function ( ) { if ( c . options . clickToPlayPause ) c . media . paused ?
c . options . features [ g ] ; if ( c [ "build" + e ] ) try { c [ "build" + e ] ( c , c . controls , c . layers , c . media ) } catch ( k ) { } } c . container . trigger ( "controlsready" ) ; c . setPlayerSize ( c . width , c . height ) ; c . setControlsSize ( ) ; if ( c . isVideo ) { if ( mejs . MediaFeatures . hasTouch ) c . $media . bind ( "touchstart" , function ( ) { if ( c . controlsAreVisible ) c . hideControls ( false ) ; else c . controlsEnabled && c . showControls ( false ) } ) ; else { mejs . MediaElementPlayer . prototype . clickToPlayPauseCallback = function ( ) { if ( c . options . clickToPlayPause ) c . media . paused ? c . play ( ) : c . pause ( ) } ;
c . media . play ( ) : c . media . pause ( ) } ; c . media . addEventListener ( "click" , c . clickToPlayPauseCallback , false ) ; c . container . bind ( "mouseenter mouseover" , function ( ) { if ( c . controlsEnabled ) if ( ! c . options . alwaysShowControls ) { c . killControlsTimer ( "enter" ) ; c . showControls ( ) ; c . startControlsTimer ( 2500 ) } } ) . bind ( "mousemove" , function ( ) { if ( c . controlsEnabled ) { c . controlsAreVisible || c . showControls ( ) ; c . options . alwaysShowControls || c . startControlsTimer ( 2500 ) } } ) . bind ( "mouseleave" , function ( ) { c . controlsEnabled && ! c . media . paused && ! c . options . alwaysShowControls &&
c . media . addEventListener ( "click" , c . clickToPlayPauseCallback , false ) ; c . container . bind ( "mouseenter mouseover" , function ( ) { if ( c . controlsEnabled ) if ( ! c . options . alwaysShowControls ) { c . killControlsTimer ( "enter" ) ; c . showControls ( ) ; c . startControlsTimer ( 2500 ) } } ) . bind ( "mousemove" , function ( ) { if ( c . controlsEnabled ) { c . controlsAreVisible || c . showControls ( ) ; c . options . alwaysShowControls || c . startControlsTimer ( 2500 ) } } ) . bind ( "mouseleave" , function ( ) { c . controlsEnabled && ! c . media . paused && ! c . options . alwaysShowControls && c . startControlsTimer ( 1E3 ) } ) } c . options . hideVideoControlsOnLoad &&
c . startControlsTimer ( 1E3 ) } ) } c . options . hideVideoControlsOnLoad && c . hideControls ( false ) ; d && ! c . options . alwaysShowControls && c . hideControls ( ) ; c . options . enableAutosize && c . media . addEventListener ( "loadedmetadata" , function ( j ) { if ( c . options . videoHeight <= 0 && c . domNode . getAttribute ( "height" ) === null && ! isNaN ( j . target . videoHeight ) ) { c . setPlayerSize ( j . target . videoWidth , j . target . videoHeight ) ; c . setControlsSize ( ) ; c . media . setVideoSize ( j . target . videoWidth , j . target . videoHeight ) } } , false ) } a . addEventListener ( "play" , function ( ) { for ( var j in mejs . players ) { var m =
c . hideControls ( false ) ; d && ! c . options . alwaysShowControls && c . hideControls ( ) ; c . options . enableAutosize && c . media . addEventListener ( "loadedmetadata" , function ( j ) { if ( c . options . videoHeight <= 0 && c . domNode . getAttribute ( "height" ) === null && ! isNaN ( j . target . videoHeight ) ) { c . setPlayerSize ( j . target . videoWidth , j . target . videoHeight ) ; c . setControlsSize ( ) ; c . media . setVideoSize ( j . target . videoWidth , j . target . videoHeight ) } } , false ) } a . addEventListener ( "play" , function ( ) { for ( var j in mejs . players ) { var m = mejs . players [ j ] ; m . id != c . id &&
mejs . players [ j ] ; m . id != c . id && c . options . pauseOtherPlayers && ! m . paused && ! m . ended && m . pause ( ) ; m . hasFocus = false } c . hasFocus = true } , false ) ; c . media . addEventListener ( "ended" , function ( ) { if ( c . options . autoRewind ) try { c . media . setCurrentTime ( 0 ) } catch ( j ) { } c . media . pause ( ) ; c . setProgressRail && c . setProgressRail ( ) ; c . setCurrentRail && c . setCurrentRail ( ) ; if ( c . options . loop ) c . media . play ( ) ; else ! c . options . alwaysShowControls && c . controlsEnabled && c . showControls ( ) } , false ) ; c . media . addEventListener ( "loadedmetadata" , function ( ) { c . updateDuration &&
c . options . pauseOtherPlayers && ! m . paused && ! m . ended && m . pause ( ) ; m . hasFocus = false } c . hasFocus = true } , false ) ; c . media . addEventListener ( "ended" , function ( ) { if ( c . options . autoRewind ) try { c . media . setCurrentTime ( 0 ) } catch ( j ) { } c . media . pause ( ) ; c . setProgressRail && c . setProgressRail ( ) ; c . setCurrentRail && c . setCurrentRail ( ) ; if ( c . options . loop ) c . play ( ) ; else ! c . options . alwaysShowControls && c . controlsEnabled && c . showControls ( ) } , false ) ; c . media . addEventListener ( "loadedmetadata" , function ( ) { c . updateDuration && c . updateDuration ( ) ; c . updateCurrent &&
c . updateDuration ( ) ; c . updateCurrent && c . update Current ( ) ; if ( ! c . isFullScreen ) { c . setPlayerSize ( c . width , c . height ) ; c . setControlsSize ( ) } } , false ) ; setTimeout ( function ( ) { c . setPlayerSize ( c . width , c . height ) ; c . setControlsSize ( ) } , 50 ) ; c . globalBind ( "resize" , function ( ) { c . isFullScreen || mejs . MediaFeatures . hasTrueNativeFullScreen && document . webkitIsFullScreen || c . setPlayerSize ( c . width , c . height ) ; c . setControlsSize ( ) } ) ; c . media . pluginType == "youtube" && c . container . find ( ".mejs-overlay-play" ) . hide ( ) } if ( d && a . pluginType == "native" ) { a . load ( ) ;
c . updateCurrent ( ) ; if ( ! c . isFullScreen ) { c . setPlayerSize ( c . width , c . height ) ; c . setControlsSize ( ) } } , false ) ; setTimeout ( function ( ) { c . setPlayerSize ( c . width , c . height ) ; c . setControlsSize ( ) } , 50 ) ; c . globalBind ( "resize" , function ( ) { c . isFullScreen || mejs . MediaFeatures . hasTrueNativeFullScreen && document . webkitIsFullScreen || c . setPlayerSize ( c . width , c . height ) ; c . setControlsSize ( ) } ) ; c . media . pluginType == "youtube" && c . container . find ( ".mejs-overlay-play" ) . hide ( ) } d && a . pluginType == "native" && c . play ( ) ; if ( c . options . success ) typeof c . options . success ==
a . play ( ) } if ( c . options . success ) typeof c . options . success == "string"? window [ c . options . success ] ( c . media , c . domNode , c ) : c . options . success ( c . media , c . domNode , c ) } } , handleError : function ( a ) { this . controls . hide ( ) ; this . options . error && this . options . error ( a ) } , setPlayerSize : function ( a , b ) { if ( typeof a != "undefined" ) this . width = a ; if ( typeof b != "undefined" ) this . height = b ; if ( this . height . toString ( ) . indexOf ( "%" ) > 0 || this . $node . css ( "max-width" ) === "100%" || parseInt ( this . $node . css ( "max-width" ) . replace ( /px/ , "" ) , 10 ) / this . $node . offsetParent ( ) . width ( ) ===
"string"? window [ c . options . success ] ( c . media , c . domNode , c ) : c . options . success ( c . media , c . domNode , c ) } } , handleError : function ( a ) { this . controls . hide ( ) ; this . options . error && this . options . error ( a ) } , setPlayerSize : function ( a , b ) { if ( typeof a != "undefined" ) this . width = a ; if ( typeof b != "undefined" ) this . height = b ; if ( this . height . toString ( ) . indexOf ( "%" ) > 0 || this . $node . css ( "max-width" ) === "100%" || parseInt ( this . $node . css ( "max-width" ) . replace ( /px/ , "" ) , 10 ) / this . $node . offsetParent ( ) . width ( ) === 1 || this . $node [ 0 ] . currentStyle && this . $node [ 0 ] . currentStyle . maxWidth ===
1 || this . $node [ 0 ] . currentStyle && this . $node [ 0 ] . currentStyle . maxWidth === "100%") { var c = this . isVideo ? this . media . videoWidth && this . media . videoWidth > 0 ? this . media . videoWidth : this . options . defaultVideoWidth : this . options . defaultAudioWidth , e = this . isVideo ? this . media . videoHeight && this . media . videoHeight > 0 ? this . media . videoHeight : this . options . defaultVideoHeight : this . options . defaultAudioHeight , d = this . container . parent ( ) . closest ( ":visible" ) . width ( ) ; c = this . isVideo || ! this . options . autosizeProgress ? parseInt ( d * e / c , 10 ) : e ; if ( this . container . parent ( ) [ 0 ] . tagName . toLowerCase ( ) ===
"100%") { var c = this . isVideo ? this . media . videoWidth && this . media . videoWidth > 0 ? this . media . videoWidth : this . options . defaultVideoWidth : this . options . defaultAudioWidth , e = this . isVideo ? this . media . videoHeight && this . media . videoHeight > 0 ? this . media . videoHeight : this . options . defaultVideoHeight : this . options . defaultAudioHeight , d = this . container . parent ( ) . closest ( ":visible" ) . width ( ) ; c = this . isVideo || ! this . options . autosizeProgress ? parseInt ( d * e / c , 10 ) : e ; if ( this . container . parent ( ) [ 0 ] . tagName . toLowerCase ( ) === "body" ) { d = f ( window ) . width ( ) ;
"body" ) { d = f ( window ) . width ( ) ; c = f ( window ) . height ( ) } if ( c != 0 && d != 0 ) { this . container . width ( d ) . height ( c ) ; this . $media . add ( this . container . find ( ".mejs-shim" ) ) . width ( "100%" ) . height ( "100%" ) ; this . isVideo && this . media . setVideoSize && this . media . setVideoSize ( d , c ) ; this . layers . children ( ".mejs-layer" ) . width ( "100%" ) . height ( "100%" ) } } else { this . container . width ( this . width ) . height ( this . height ) ; this . layers . children ( ".mejs-layer" ) . width ( this . width ) . height ( this . height ) } d = this . layers . find ( ".mejs-overlay-play" ) ; c = d . find ( ".mejs-overlay-button" ) ;
c = f ( window ) . height ( ) } if ( c != 0 && d != 0 ) { this . container . width ( d ) . height ( c ) ; this . $media . add ( this . container . find ( ".mejs-shim" ) ) . width ( "100%" ) . height ( "100%" ) ; this . isVideo && this . media . setVideoSize && this . media . setVideoSize ( d , c ) ; this . layers . children ( ".mejs-layer" ) . width ( "100%" ) . height ( "100%" ) } } else { this . container . width ( this . width ) . height ( this . height ) ; this . layers . children ( ".mejs-layer" ) . width ( this . width ) . height ( this . height ) } d = this . layers . find ( ".mejs-overlay-play" ) ; c = d . find ( ".mejs-overlay-button" ) ; d . height ( this . container . height ( ) -
d . height ( this . container . height ( ) - this . controls . height ( ) ) ; c . css ( "margin-top" , "-" + ( c . height ( ) / 2 - this . controls . height ( ) / 2 ) . toString ( ) + "px" ) } , setControlsSize : function ( ) { var a = 0 , b = 0 , c = this . controls . find ( ".mejs-time-rail" ) , e = this . controls . find ( ".mejs-time-total" ) ; this . controls . find ( ".mejs-time-current" ) ; this . controls . find ( ".mejs-time-loaded" ) ; var d = c . siblings ( ) ; if ( this . options && ! this . options . autosizeProgress ) b = parseInt ( c . css ( "width" ) ) ; if ( b === 0 || ! b ) { d . each ( function ( ) { var g = f ( this ) ; if ( g . css ( "position" ) !=
this . controls . height ( ) ) ; c . css ( "margin-top" , "-" + ( c . height ( ) / 2 - this . controls . height ( ) / 2 ) . toString ( ) + "px" ) } , setControlsSize : function ( ) { var a = 0 , b = 0 , c = this . controls . find ( ".mejs-time-rail" ) , e = this . controls . find ( ".mejs-time-total" ) ; this . controls . find ( ".mejs-time-current" ) ; this . controls . find ( ".mejs-time-loaded" ) ; var d = c . siblings ( ) ; if ( this . options && ! this . options . autosizeProgress ) b = parseInt ( c . css ( "width" ) ) ; if ( b === 0 || ! b ) { d . each ( function ( ) { var g = f ( this ) ; if ( g . css ( "position" ) != "absolute" && g . is ( ":visible" ) ) a += f ( this ) . outerWidth ( true ) } ) ;
"absolute" && g . is ( ":visible" ) ) a += f ( this ) . outerWidth ( true ) } ) ; b = this . controls . width ( ) - a - ( c . outerWidth ( true ) - c . width ( ) ) } c . width ( b ) ; e . width ( b - ( e . outerWidth ( true ) - e . width ( ) ) ) ; this . setProgressRail && this . setProgressRail ( ) ; this . setCurrentRail && this . setCurrentRail ( ) } , buildposter : function ( a , b , c , e ) { var d = f ( '<div class="mejs-poster mejs-layer"></div>' ) . appendTo ( c ) ; b = a . $media . attr ( "poster" ) ; if ( a . options . poster !== "" ) b = a . options . poster ; b !== "" && b != null ? this . setPoster ( b ) : d . hide ( ) ; e . addEventListener ( "play" , function ( ) { d . hide ( ) } ,
b = this . controls . width ( ) - a - ( c . outerWidth ( true ) - c . width ( ) ) } c . width ( b ) ; e . width ( b - ( e . outerWidth ( true ) - e . width ( ) ) ) ; this . setProgressRail && this . setProgressRail ( ) ; this . setCurrentRail && this . setCurrentRail ( ) } , buildposter : function ( a , b , c , e ) { var d = f ( '<div class="mejs-poster mejs-layer"></div>' ) . appendTo ( c ) ; b = a . $media . attr ( "poster" ) ; if ( a . options . poster !== "" ) b = a . options . poster ; b !== "" && b != null ? this . setPoster ( b ) : d . hide ( ) ; e . addEventListener ( "play" , function ( ) { d . hide ( ) } , false ) ; a . options . showPosterWhenEnded && a . options . autoRewind &&
false ) ; a . options . showPosterWhenEnded && a . options . autoRewind && e . addEventListener ( "ended" , function ( ) { d . show ( ) } , false ) } , setPoster : function ( a ) { var b = this . container . find ( ".mejs-poster" ) , c = b . find ( "img" ) ; if ( c . length == 0 ) c = f ( '<img width="100%" height="100%" />' ) . appendTo ( b ) ; c . attr ( "src" , a ) ; b . css ( { "background-image" : "url(" + a + ")" } ) } , buildoverlays : function ( a , b , c , e ) { var d = this ; if ( a . isVideo ) { var g = f ( '<div class="mejs-overlay mejs-layer"><div class="mejs-overlay-loading"><span></span></div></div>' ) . hide ( ) . appendTo ( c ) ,
e . addEventListener ( "ended" , function ( ) { d . show ( ) } , false ) } , setPoster : function ( a ) { var b = this . container . find ( ".mejs-poster" ) , c = b . find ( "img" ) ; if ( c . length == 0 ) c = f ( '<img width="100%" height="100%" />' ) . appendTo ( b ) ; c . attr ( "src" , a ) ; b . css ( { "background-image" : "url(" + a + ")" } ) } , buildoverlays : function ( a , b , c , e ) { var d = this ; if ( a . isVideo ) { var g = f ( '<div class="mejs-overlay mejs-layer"><div class="mejs-overlay-loading"><span></span></div></div>' ) . hide ( ) . appendTo ( c ) , k = f ( '<div class="mejs-overlay mejs-layer"><div class="mejs-overlay-error" ></div></div>' ) . hide ( ) . appendTo ( c ) ,
k = f ( '<div class="mejs-overlay mejs-layer"><div class="mejs-overlay-error "></div></div>' ) . hide ( ) . appendTo ( c ) , j = f ( '<div class="mejs-overlay mejs-layer mejs-overlay-play"><div class="mejs-overlay-button"></div></div>' ) . appendTo ( c ) . click ( function ( ) { if ( d . options . clickToPlayPause ) e . paused ? e . play ( ) : e . pause ( ) } ) ; e . addEventListener ( "play" , function ( ) { j . hide ( ) ; g . hide ( ) ; b . find ( ".mejs-time-buffering" ) . hide ( ) ; k . hide ( ) } , false ) ; e . addEventListener ( "playing" , function ( ) { j . hide ( ) ; g . hide ( ) ; b . find ( ".mejs-time-buffering" ) . hide ( ) ;
j = f ( '<div class="mejs-overlay mejs-layer mejs-overlay-play"><div class="mejs-overlay-button "></div></div>' ) . appendTo ( c ) . bind ( "click touchstart" , function ( ) { d . options . clickToPlayPause && e . paused && d . play ( ) } ) ; e . addEventListener ( "play" , function ( ) { j . hide ( ) ; g . hide ( ) ; b . find ( ".mejs-time-buffering" ) . hide ( ) ; k . hide ( ) } , false ) ; e . addEventListener ( "playing" , function ( ) { j . hide ( ) ; g . hide ( ) ; b . find ( ".mejs-time-buffering" ) . hide ( ) ; k . hide ( ) } , false ) ; e . addEventListener ( "seeking" , function ( ) { g . show ( ) ; b . find ( ".mejs-time-buffering" ) . show ( ) } ,
k . hide ( ) } , false ) ; e . addEventListener ( "seeking" , function ( ) { g . show ( ) ; b . find ( ".mejs-time-buffering" ) . show ( ) } , false ) ; e . addEventListener ( "seeked" , function ( ) { g . hide ( ) ; b . find ( ".mejs-time-buffering" ) . hide ( ) } , false ) ; e . addEventListener ( "pause" , function ( ) { mejs . MediaFeatures . isiPhone || j . show ( ) } , false ) ; e . addEventListener ( "waiting" , function ( ) { g . show ( ) ; b . find ( ".mejs-time-buffering" ) . show ( ) } , false ) ; e . addEventListener ( "loadeddata" , function ( ) { g . show ( ) ; b . find ( ".mejs-time-buffering" ) . show ( ) } , false ) ; e . addEventListener ( "canplay" ,
false ) ; e . addEventListener ( "seeked" , function ( ) { g . hide ( ) ; b . find ( ".mejs-time-buffering" ) . hide ( ) } , false ) ; e . addEventListener ( "pause" , function ( ) { mejs . MediaFeatures . isiPhone || j . show ( ) } , false ) ; e . addEventListener ( "waiting" , function ( ) { g . show ( ) ; b . find ( ".mejs-time-buffering" ) . show ( ) } , false ) ; e . addEventListener ( "loadeddata" , function ( ) { g . show ( ) ; b . find ( ".mejs-time-buffering" ) . show ( ) } , false ) ; e . addEventListener ( "canplay" , function ( ) { g . hide ( ) ; b . find ( ".mejs-time-buffering" ) . hide ( ) } , false ) ; e . addEventListener ( "error" , function ( ) { g . hide ( ) ;
function ( ) { g . hide ( ) ; b . find ( ".mejs-time-buffering" ) . hide ( ) } , false ) ; e . addEventListener ( "error" , function ( ) { g . hide ( ) ; b . find ( ".mejs-time-buffering" ) . hide ( ) ; k . show ( ) ; k . find ( "mejs-overlay-error" ) . html ( "Error loading this resource" ) } , false ) } } , buildkeyboard : function ( a , b , c , e ) { this . globalBind ( "keydown" , function ( d ) { if ( a . hasFocus && a . options . enableKeyboard ) for ( var g = 0 , k = a . options . keyActions . length ; g < k ; g ++ ) for ( var j = a . options . keyActions [ g ] , m = 0 , q = j . keys . length ; m < q ; m ++ ) if ( d . keyCode == j . keys [ m ] ) { d . preventDefault ( ) ;
b . find ( ".mejs-time-buffering" ) . hide ( ) ; k . show ( ) ; k . find ( "mejs-overlay-error" ) . html ( "Error loading this resource" ) } , false ) } } , buildkeyboard : function ( a , b , c , e ) { this . globalBind ( "keydown" , function ( d ) { if ( a . hasFocus && a . options . enableKeyboard ) for ( var g = 0 , k = a . options . keyActions . length ; g < k ; g ++ ) for ( var j = a . options . keyActions [ g ] , m = 0 , q = j . keys . length ; m < q ; m ++ ) if ( d . keyCode == j . keys [ m ] ) { d . preventDefault ( ) ; j . action ( a , e , d . keyCode ) ; return false } return true } ) ; this . globalBind ( "click" , function ( d ) { if ( f ( d . target ) . closest ( ".mejs-container" ) . length ==
j . action ( a , e , d . keyCode ) ; return false } return true } ) ; this . globalBind ( "click" , function ( d ) { if ( f ( d . target ) . closest ( ".mejs-container" ) . length == 0 ) a . hasFocus = false } ) } , findTracks : function ( ) { var a = this , b = a . $media . find ( "track" ) ; a . tracks = [ ] ; b . each ( function ( c , e ) { e = f ( e ) ; a . tracks . push ( { srclang : e . attr ( "srclang" ) ? e . attr ( "srclang" ) . toLowerCase ( ) : "" , src : e . attr ( "src" ) , kind : e . attr ( "kind" ) , label : e . attr ( "label" ) || "" , entries : [ ] , isLoaded : false } ) } ) } , changeSkin : function ( a ) { this . container [ 0 ] . className = "mejs-container " + a ; this . setPlayerSize ( this . width ,
0 ) a . hasFocus = false } ) } , findTracks : function ( ) { var a = this , b = a . $media . find ( "track" ) ; a . tracks = [ ] ; b . each ( function ( c , e ) { e = f ( e ) ; a . tracks . push ( { srclang : e . attr ( "srclang" ) ? e . attr ( "srclang" ) . toLowerCase ( ) : "" , src : e . attr ( "src" ) , kind : e . attr ( "kind" ) , label : e . attr ( "label" ) || "" , entries : [ ] , isLoaded : false } ) } ) } , changeSkin : function ( a ) { this . container [ 0 ] . className = "mejs-container " + a ; this . setPlayerSize ( this . width , this . height ) ; this . setControlsSize ( ) } , play : function ( ) { this . load ( ) ; this . media . play ( ) } , pause : function ( ) { try { this . media . pause ( ) } catch ( a ) { } } ,
this . height ) ; this . setControlsSize ( ) } , play : function ( ) { this . media . play ( ) } , pause : function ( ) { try { this . media . pause ( ) } catch ( a ) { } } , load : function ( ) { this . media . load ( ) } , setMuted : function ( a ) { this . media . setMuted ( a ) } , setCurrentTime : function ( a ) { this . media . setCurrentTime ( a ) } , getCurrentTime : function ( ) { return this . media . currentTime } , setVolume : function ( a ) { this . media . setVolume ( a ) } , getVolume : function ( ) { return this . media . volume } , setSrc : function ( a ) { this . media . setSrc ( a ) } , remove : function ( ) { var a , b ; for ( a in this . options . features ) { b =
load : function ( ) { this . isLoaded || this . media . load ( ) ; this . isLoaded = true } , setMuted : function ( a ) { this . media . setMuted ( a ) } , setCurrentTime : function ( a ) { this . media . setCurrentTime ( a ) } , getCurrentTime : function ( ) { return this . media . currentTime } , setVolume : function ( a ) { this . media . setVolume ( a ) } , getVolume : function ( ) { return this . media . volume } , setSrc : function ( a ) { this . media . setSrc ( a ) } , remove : function ( ) { var a , b ; for ( a in this . options . features ) { b = this . options . features [ a ] ; if ( this [ "clean" + b ] ) try { this [ "clean" + b ] ( this ) } catch ( c ) { } } if ( this . isDynamic ) this . $node . insertBefore ( this . container ) ;
this . options . features [ a ] ; if ( this [ "clean" + b ] ) try { this [ "clean" + b ] ( this ) } catch ( c ) { } } if ( this . isDynamic ) this . $node . insertBefore ( this . container ) ; else { this . $media . prop ( "controls" , true ) ; this . $node . clone ( ) . show ( ) . insertBefore ( this . container ) ; this . $node . remove ( ) } this . media . pluginType !== "native" && this . media . remove ( ) ; delete mejs . players [ this . id ] ; this . container . remove ( ) ; this . globalUnbind ( ) ; delete this . node . player } } ; ( function ( ) { function a ( c , e ) { var d = { d : [ ] , w : [ ] } ; f . each ( ( c || "" ) . split ( " " ) , function ( g , k ) { var j = k + "." +
else { this . $media . prop ( "controls" , true ) ; this . $node . clone ( ) . show ( ) . insertBefore ( this . container ) ; this . $node . remove ( ) } this . media . pluginType !== "native" && this . media . remove ( ) ; delete mejs . players [ this . id ] ; this . container . remove ( ) ; this . globalUnbind ( ) ; delete this . node . player } } ; ( function ( ) { function a ( c , e ) { var d = { d : [ ] , w : [ ] } ; f . each ( ( c || "" ) . split ( " " ) , function ( g , k ) { var j = k + "." + e ; if ( j . indexOf ( "." ) === 0 ) { d . d . push ( j ) ; d . w . push ( j ) } else d [ b . test ( k ) ? "w" : "d" ] . push ( j ) } ) ; d . d = d . d . join ( " " ) ; d . w = d . w . join ( " " ) ; return d } var b =
e ; if ( j . indexOf ( "." ) === 0 ) { d . d . push ( j ) ; d . w . push ( j ) } else d [ b . test ( k ) ? "w" : "d" ] . push ( j ) } ) ; d . d = d . d . join ( " " ) ; d . w = d . w . join ( " " ) ; return d } var b = /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/ ; mejs . MediaElementPlayer . prototype . globalBind = function ( c , e , d ) { c = a ( c , this . id ) ; c . d && f ( document ) . bind ( c . d , e , d ) ; c . w && f ( window ) . bind ( c . w , e , d ) } ; mejs . MediaElementPlayer . prototype . globalUnbind = function ( c , e ) { c = a ( c , this . id ) ; c . d && f ( document ) . unbind ( c . d , e ) ; c . w && f ( window ) . unbind ( c . w ,
/^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/ ; mejs . MediaElementPlayer . prototype . globalBind = function ( c , e , d ) { c = a ( c , this . id ) ; c . d && f ( document ) . bind ( c . d , e , d ) ; c . w && f ( window ) . bind ( c . w , e , d ) } ; mejs . MediaElementPlayer . prototype . globalUnbind = function ( c , e ) { c = a ( c , this . id ) ; c . d && f ( document ) . unbind ( c . d , e ) ; c . w && f ( window ) . unbind ( c . w , e ) } } ) ( ) ; if ( typeof jQuery != "undefined" ) jQuery . fn . mediaelementplayer = function ( a ) { a === false ? this . each ( function ( ) { var b = jQuery ( this ) . data ( "mediaelementplayer" ) ;
e ) } } ) ( ) ; if ( typeof jQuery != "undefined" ) jQuery . fn . mediaelementplayer = function ( a ) { a === false ? this . each ( function ( ) { var b = jQuery ( this ) . data ( "mediaelementplayer" ) ; b && b . remove ( ) ; jQuery ( this ) . removeData ( "mediaelementplayer" ) } ) : this . each ( function ( ) { jQuery ( this ) . data ( "mediaelementplayer" , new mejs . MediaElementPlayer ( this , a ) ) } ) ; return this } ; f ( document ) . ready ( function ( ) { f ( ".mejs-player" ) . mediaelementplayer ( ) } ) ; window . MediaElementPlayer = mejs . MediaElementPlayer } ) ( mejs . $ ) ;
b && b . remove ( ) ; jQuery ( this ) . removeData ( "mediaelementplayer" ) } ) : this . each ( function ( ) { jQuery ( this ) . data ( "mediaelementplayer" , new mejs . MediaElementPlayer ( this , a ) ) } ) ; return this } ; f ( document ) . ready ( function ( ) { f ( ".mejs-player" ) . mediaelementplayer ( ) } ) ; window . MediaElementPlayer = mejs . MediaElementPlayer } ) ( mejs . $ ) ;
( function ( f ) { f . extend ( mejs . MepDefaults , { playpauseText : mejs . i18n . t ( "Play/Pause" ) } ) ; f . extend ( MediaElementPlayer . prototype , { buildplaypause : function ( a , b , c , e ) { var d = f ( '<div class="mejs-button mejs-playpause-button mejs-play" ><button type="button" aria-controls="' + this . id + '" title="' + this . options . playpauseText + '" aria-label="' + this . options . playpauseText + '"></button></div>' ) . appendTo ( b ) . click ( function ( g ) { g . preventDefault ( ) ; e . paused ? e . play ( ) : e . pause ( ) ; return false } ) ; e . addEventListener ( "play" , function ( ) { d . removeClass ( "mejs-play" ) . addClass ( "mejs-pause" ) } ,
( function ( f ) { f . extend ( mejs . MepDefaults , { playpauseText : mejs . i18n . t ( "Play/Pause" ) } ) ; f . extend ( MediaElementPlayer . prototype , { buildplaypause : function ( a , b , c , e ) { var d = f ( '<div class="mejs-button mejs-playpause-button mejs-play" ><button type="button" aria-controls="' + this . id + '" title="' + this . options . playpauseText + '" aria-label="' + this . options . playpauseText + '"></button></div>' ) . appendTo ( b ) . click ( function ( g ) { g . preventDefault ( ) ; e . paused ? e . play ( ) : e . pause ( ) ; return false } ) ; e . addEventListener ( "play" , function ( ) { d . removeClass ( "mejs-play" ) . addClass ( "mejs-pause" ) } ,
false ) ; e . addEventListener ( "playing" , function ( ) { d . removeClass ( "mejs-play" ) . addClass ( "mejs-pause" ) } , false ) ; e . addEventListener ( "pause" , function ( ) { d . removeClass ( "mejs-pause" ) . addClass ( "mejs-play" ) } , false ) ; e . addEventListener ( "paused" , function ( ) { d . removeClass ( "mejs-pause" ) . addClass ( "mejs-play" ) } , false ) } } ) } ) ( mejs . $ ) ;
false ) ; e . addEventListener ( "playing" , function ( ) { d . removeClass ( "mejs-play" ) . addClass ( "mejs-pause" ) } , false ) ; e . addEventListener ( "pause" , function ( ) { d . removeClass ( "mejs-pause" ) . addClass ( "mejs-play" ) } , false ) ; e . addEventListener ( "paused" , function ( ) { d . removeClass ( "mejs-pause" ) . addClass ( "mejs-play" ) } , false ) } } ) } ) ( mejs . $ ) ;
( function ( f ) { f . extend ( mejs . MepDefaults , { stopText : "Stop" } ) ; f . extend ( MediaElementPlayer . prototype , { buildstop : function ( a , b , c , e ) { f ( '<div class="mejs-button mejs-stop-button mejs-stop"><button type="button" aria-controls="' + this . id + '" title="' + this . options . stopText + '" aria-label="' + this . options . stopText + '"></button></div>' ) . appendTo ( b ) . click ( function ( ) { e . paused || e . pause ( ) ; if ( e . currentTime > 0 ) { e . setCurrentTime ( 0 ) ; e . pause ( ) ; b . find ( ".mejs-time-current" ) . width ( "0px" ) ; b . find ( ".mejs-time-handle" ) . css ( "left" ,
( function ( f ) { f . extend ( mejs . MepDefaults , { stopText : "Stop" } ) ; f . extend ( MediaElementPlayer . prototype , { buildstop : function ( a , b , c , e ) { f ( '<div class="mejs-button mejs-stop-button mejs-stop"><button type="button" aria-controls="' + this . id + '" title="' + this . options . stopText + '" aria-label="' + this . options . stopText + '"></button></div>' ) . appendTo ( b ) . click ( function ( ) { e . paused || e . pause ( ) ; if ( e . currentTime > 0 ) { e . setCurrentTime ( 0 ) ; e . pause ( ) ; b . find ( ".mejs-time-current" ) . width ( "0px" ) ; b . find ( ".mejs-time-handle" ) . css ( "left" ,