var Wistiamara = { /* Version 3.0, 15 Oct 2013 */ _version: "3.0", _url: null, _style_block: null, _refresh_ms: 20, _default_language: 'en', _players: [], _nomodrewrite: false, _apiversion: 2, NOLANGCODE: '--', VIDEOTYPE: 1, PLAYLISTTYPE: 2, init: function ( serviceURL, options ) { if (! options) { options = {}; }; var o = { nomodrewrite: false, apiversion: 2 }; for( var p in options ) { o[p] = options[p] }; Wistiamara._url = serviceURL; Wistiamara._nomodrewrite = o.nomodrewrite; Wistiamara._apiversion = o.apiversion; if (Wistiamara._url.indexOf('/', Wistiamara._url.length - 1) === -1) { Wistiamara._url = Wistiamara._url + '/'; } }, _trackEvent: function( action, label, value ) { if (ga) { switch(arguments.length) { case 1: ga('send', 'event', 'wistiamara', action ); return; case 2: ga('send', 'event', 'wistiamara', action, label); return; case 3: ga('send', 'event', 'wistiamara', action, label, value); return; default: throw new Error('illegal argument count') } } }, insertPlaylist: function( id, urlprefix, options, email ) { if (! Wistiamara._url ) { throw "Wistiamara must be initialized with the URL of its server side portion."; }; if (! options) { options = {}; }; var o = { volumeControl: true, videoWidth: 640, videoHeight: 360, autoPlay: false, controlsVisibleOnLoad: false }; for( var p in options ) { o[p] = options[p] }; document.write( '
 
' ); var wpl = Wistia.playlist( id, { version: "v1", theme: "tab", videoOptions: { volumeControl: o.volumeControl, autoPlay: o.autoPlay, videoWidth: o.videoWidth, videoHeight: o.videoHeight, trackEmail: email }, media_0_0: { autoPlay: o.autoPlay, controlsVisibleOnLoad: o.controlsVisibleOnLoad } }); Wistiamara.bindPlaylist( wpl, urlprefix ); }, bindPlaylist: function( pl, urlprefix ) { if (! Wistiamara._url ) { throw "Wistiamara must be initialized with the URL of its server side portion."; }; switch (Wistiamara._apiversion) { case 1: if ( urlprefix.indexOf('http://') === 0 ) { urlprefix = urlprefix.substr(7); } else if ( urlprefix.indexOf('https://') === 0 ) { urlprefix = urlprefix.substr(8); } break; case 2: // Use as-is break; default: alert('Unknown Wistiamara API version.'); return null; } if (! pl.wistiamara ) { pl.wistiamara = { 'data':{}, 'urlprefix':urlprefix, 'lang':false, 'interval':false, 'showing':{ 'time':null, 'title':null, 'b':null, 'e':null }, 'type': Wistiamara.PLAYLISTTYPE, }; } Wistiamara._create_elements( pl ); pl.bind( 'beforeembed', function( si, vi ){ Wistiamara._onBeforeEmbed(pl, si, vi); } ); pl.bind( 'afterembed', function( si, vi ){ Wistiamara._onAfterEmbed(pl, si, vi); } ); pl.bind( 'play', function( ){ Wistiamara._onPlay( pl ); } ); pl.bind( 'pause', function( ){ Wistiamara._onPause( pl ); } ); pl.bind( 'end', function( ){ Wistiamara._onEnd( pl ); } ); pl.bind( 'timechange', function( ){ Wistiamara._onTimeChange( pl ); } ); pl.wistiamara.select.onchange = function() { Wistiamara._onLanguageSelectChanged( pl ); }; Wistiamara._players.push( pl ); }, insertVideo: function( id, urlprefix, options, email ) { if (! Wistiamara._url ) { throw "Wistiamara must be initialized with the URL of its server side portion."; }; if (! options) { options = {}; }; var o = { volumeControl: true, videoWidth: 640, videoHeight: 360, autoPlay: false, controlsVisibleOnLoad: false }; for( var p in options ) { o[p] = options[p] }; document.write( '
 
' ); wv = Wistia.embed(id, { version: "v1", videoWidth: o.videoWidth, videoHeight: o.videoHeight, fullscreenButton: false, container: "wistia_" + id, trackEmail: email }); Wistiamara.bindVideo( wv, urlprefix, o ); }, bindVideo: function( vid, urlprefix, options ) { if (! Wistiamara._url ) { throw "Wistiamara must be initialized with the URL of its server side portion."; }; if (! options) { options = {}; }; var o = { videoWidth: 640, videoHeight: 360, }; for( var p in options ) { o[p] = options[p] }; switch (Wistiamara._apiversion) { case 1: if ( urlprefix.indexOf('http://') === 0 ) { urlprefix = urlprefix.substr(7); } else if ( urlprefix.indexOf('https://') === 0 ) { urlprefix = urlprefix.substr(8); } break; case 2: // Use as-is break; default: alert('Unknown Wistiamara API version.'); return null; } if (! vid.wistiamara ) { vid.wistiamara = { 'data':{}, 'urlprefix':urlprefix, 'lang':false, 'interval':false, 'showing':{ 'time':null, 'title':null, 'b':null, 'e':null }, 'type': Wistiamara.VIDEOTYPE, }; } Wistiamara._create_elements( vid ); vid.ready( function() { Wistiamara._onBeforeEmbed(vid, 0, 0); Wistiamara._onAfterEmbed(vid, 0, 0); vid.container.style.height = '' + o.videoHeight + 'px'; vid.container.style.width = '' + o.videoWidth + 'px'; } ); vid.bind( 'play', function( ){ Wistiamara._onPlay( vid ); } ); vid.bind( 'pause', function( ){ Wistiamara._onPause( vid ); } ); vid.bind( 'end', function( ){ Wistiamara._onEnd( vid ); } ); vid.bind( 'timechange', function( ){ Wistiamara._onTimeChange( vid ); } ); vid.wistiamara.select.onchange = function() { Wistiamara._onLanguageSelectChanged( vid ); }; Wistiamara._players.push( vid ); }, _onBeforeEmbed: function( player, si, vi ) { var hid; if (player.wistiamara.type == Wistiamara.PLAYLISTTYPE) { hid = player.data[si].medias[vi].embed_config.media.hashedId; } else if (player.wistiamara.type == Wistiamara.VIDEOTYPE) { hid = player.data.media.hashedId; } player.wistiamara.subtitle_panel.innerHTML = ''; player.wistiamara.showing.time = null; if ( ! player.wistiamara.data[hid] ) { player.wistiamara.subtitle_panel.style.display = "none"; player.wistiamara.loading_panel.style.display = "block"; player.wistiamara.data[hid] = Wistiamara.getAmaraData( player.wistiamara.urlprefix, hid ); } }, _onAfterEmbed: function( player, si, vi ) { var hid; if (player.wistiamara.type == Wistiamara.PLAYLISTTYPE) { hid = player.data[si].medias[vi].embed_config.media.hashedId; } else if (player.wistiamara.type == Wistiamara.VIDEOTYPE) { hid = player.data.media.hashedId; } player.wistiamara.loading_panel.style.display = "none"; player.wistiamara.subtitle_panel.style.display = "none"; // Make sure the current language exists, and is compatible with the new video. if ((! player.wistiamara.lang ) || (! player.wistiamara.data[hid].languages[ player.wistiamara.lang ] )) { player.wistiamara.lang = Wistiamara.NOLANGCODE; } if (player.wistiamara.select.firstChild) { player.wistiamara.select.removeChild(player.wistiamara.select.firstChild); }; player.wistiamara.select.appendChild( player.wistiamara.data[hid].optgroup ); player.wistiamara.select.value = player.wistiamara.lang; }, _onPlay: function( player ) { Wistiamara._playSubs( player ); }, _onPause: function( player ) { Wistiamara._pauseSubs( player ); }, _onEnd: function( player ) { // nothing yet }, _onTimeChange: function( player ) { Wistiamara.showCurrentSubtitle(player); }, _playSubs: function( player ) { if ( player.wistiamara.interval === false ) { // If this is not false, the subs are already playing. player.wistiamara.interval = window.setInterval( function(){ Wistiamara.showCurrentSubtitle(player); }, Wistiamara._refresh_ms ); }; }, _pauseSubs: function( player ) { if ( player.wistiamara.interval !== false ) { window.clearInterval( player.wistiamara.interval ); player.wistiamara.interval = false; } }, _stopSubs: function( player ) { if ( player.wistiamara.interval !== false ) { window.clearInterval( player.wistiamara.interval ); player.wistiamara.interval = false; } player.wistiamara.subtitle_panel.innerHTML = ''; // Difference between 'pause' and 'stop': stop clears the display. player.wistiamara.showing.time = null; // and cache }, _onLanguageSelectChanged: function( player ) { var newlang = player.wistiamara.select.value; if ( newlang === player.wistiamara.lang ) { return; } var resultlang = Wistiamara.trySwitchLanguage( player, newlang ); if ( newlang != resultlang ) { player.wistiamara.select.value = resultlang; }; }, trySwitchLanguage: function( player, code ) { var hid = null; if (player.wistiamara.type == Wistiamara.PLAYLISTTYPE) { hid = player.currentVideo().hashedId(); } else if (player.wistiamara.type == Wistiamara.VIDEOTYPE) { hid = player.data.media.hashedId; } if ( (player.wistiamara.data[hid].languages[code]) || ( code == Wistiamara.NOLANGCODE ) ) { player.wistiamara.lang = code; player.wistiamara.showing.time = null; if ( code == Wistiamara.NOLANGCODE ) { Wistiamara._trackEvent('disable subtitles'); } else { Wistiamara._trackEvent('enable subtitles', code); } Wistiamara.showCurrentSubtitle( player ); return code; } else { return player.wistiamara.lang; } }, getAmaraData: function( prefix, hid ) { var r, url; switch (Wistiamara._apiversion) { case 1: url = Wistiamara._url + (Wistiamara._nomodrewrite ? 'wistiamara.php?PATH_INFO=' : '') + "subtitles/" + prefix + encodeURIComponent( hid ); break; case 2: url = Wistiamara._url + (Wistiamara._nomodrewrite ? 'wistiamara.php?PATH_INFO=' : '') + "subtitles/" + (Wistiamara._nomodrewrite ? '&' : '?') + 'api_version=2&url=' + encodeURIComponent( prefix + hid ); break; default: alert('Unknown Wistiamara API version.'); return null; } Wistiamara.rawAJAX( url, "GET", true, function(xrq) { if (xrq.readyState == 4) { if ( xrq.status == 200 ) { r = xrq.responseText; } else { throw "Could not retrieve subtitles." } } } ); r = JSON.parse(r); if (! r['languages']) { r.languages = [];} r.lookup = {}; r.optgroup = document.createElement('OPTGROUP'); var opt; for( var code in r.languages ){ if (! r.subtitles[code]) { delete r.languages[code]; } } opt = document.createElement('OPTION'); opt.value = Wistiamara.NOLANGCODE; if (r.language_count < 1) { opt.text = "( No Subtitles Available )"; } else { opt.text = "( Subtitles Off )"; } r.optgroup.appendChild(opt); for( var code in r.languages ){ var titles = r.subtitles[code]; var t, bm, em; var currmintitles = []; var currmin = 0; var minutetrees = []; for( var i=0; i= currmin) ) { currmintitles.push(i); } if ( bm > currmin ) { // End of current minute for (var m=currmin; m= player.wistiamara.showing.b ) && ( ms <= player.wistiamara.showing.e )) { return player.wistiamara.showing.title; } } var min = (ms / 60000) << 0; // Left shift 0: fast truncate-to-int var tree = data.lookup[player.wistiamara.lang][min]; if (! tree) { return null; } var i = Wistiamara._seektimetree( tree, ms ); if (i === null) { return null; } var t = data.subtitles[player.wistiamara.lang][i]; player.wistiamara.showing.time = ms; var h = player.wistiamara.showing.title = t.html; player.wistiamara.showing.b = t.begin; player.wistiamara.showing.e = t.end; return h; }, _seektimetree: function( node, ms ) { if (! node) { return null; } if ( ms < node.b ) { return Wistiamara._seektimetree( node.l, ms ); } if ( ms > node.e ) { return Wistiamara._seektimetree( node.r, ms ); } return node.i; }, _maketimetree: function( src, set ) { if (set.length < 1) { return null; } var pivot = set.length >> 1; var lset = (pivot>0) ? set.slice(0, pivot) : []; var rset = (pivot<(set.length-1)) ? set.slice(pivot+1) : []; var i = set[pivot]; var c = 1; var l = Wistiamara._maketimetree(src, lset); var r = Wistiamara._maketimetree(src, rset); if (l) { c+= l.c; } if (r) { c+= r.c; } return { i:i, c:c, b:src[i].begin, e:src[i].end, l:l, r:r }; }, rawAJAX: function (url, method, sync, responseHandler, data, headers) { sync = !!sync; data = data || {}; headers = headers || {}; methods = { 'GET':true, 'POST':true }; method = method || 'GET'; method = method.toUpperCase(); if (! methods[method] ) { method = 'GET'; }; if(! url) { throw "Cannot use an AJAX request without an URL."; } if (data instanceof Object) { var a = []; for(var p in data) { a.push(encodeURIComponent(p) + "=" + encodeURIComponent(data[p])); } data = a.join("&"); } var xrq = false; if (window.XMLHttpRequest) { xrq = new XMLHttpRequest(); } else if (window.ActiveXObject) { xrq = new ActiveXObject("Microsoft.XMLHTTP"); } if (! xrq) { throw "Could not create XMLHttpRequest"; }; if(method == "GET") { if ( data ) { url = url + "?" + data; }; data = null; } xrq.open(method, url, (!sync)); if(method == "POST") { xrq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); } for(var h in headers) { xrq.setRequestHeader(h, headers[h]); } xrq.onreadystatechange = function () { responseHandler(xrq); }; xrq.send(data); }, _create_elements: function( player ) { // Create the blank loading_panel before checking for the style blocks, so we can use it for feature detection. var loading_panel = document.createElement('DIV'); if ( !Wistiamara._style_block ) { Wistiamara._style_block = document.createElement('STYLE'); Wistiamara._style_block.setAttribute( 'type', 'text/css' ); if ( (loading_panel.style.boxShadow !== '') && (loading_panel.style.filter === '') ) { // Older IE: No box-shadow, but has filter Wistiamara._style_block.innerHTML = Wistiamara._css + "\n\n" + Wistiamara._css_old_ie; } else { Wistiamara._style_block.innerHTML = Wistiamara._css; } document.getElementsByTagName('HEAD')[0].appendChild( Wistiamara._style_block ); } loading_panel.className = 'wistiamara_loader'; var img = document.createElement('IMG'); img.setAttribute('src', Wistiamara._loader_image); img.style.display = 'block'; img.style.margin = '15px auto 30px'; loading_panel.appendChild( img ); loading_panel.appendChild( document.createTextNode('LOADING SUBTITLES') ); var subtitle_panel = document.createElement('DIV'); subtitle_panel.className = 'wistiamara_subtitle'; var select = document.createElement('SELECT'); select.className = 'wistiamara_select'; player.container.style.position = 'relative'; player.container.appendChild( loading_panel ); player.container.appendChild( subtitle_panel ); player.container.appendChild( select ); player.wistiamara.loading_panel = loading_panel; player.wistiamara.subtitle_panel = subtitle_panel; player.wistiamara.select = select; player.container.style.height = '' + (player.container.offsetHeight + player.wistiamara.select.offsetHeight + 3) + 'px'; }, _css: ".wistiamara_loader { \n\ width: 30%; \n\ height: 30%; \n\ background: #FFF; \n\ color: #000; \n\ text-align: center; \n\ font-size: 130%; \n\ padding: 5%; \n\ box-shadow: 3px 3px 5px #000; \n\ border-radius: 6px; \n\ z-index: 100000; \n\ display: none; \n\ position: absolute; \n\ left: 25%; \n\ top: 25%; \n\ } \n\ .wistiamara_select { \n\ width: 30%; \n\ min-width:160px; \n\ display:block; \n\ margin: 3px 0 0; \n\ clear: both \n\ } \n\ \n\ .wistiamara_select option { \n\ padding-left: 2px; \n\ } \n\ \n\ .wistiamara_subtitle { \n\ z-index: 9900; \n\ width: 66%; \n\ font: 16px bold Helvetica,Arial,sans-serif; \n\ display: block; \n\ position: absolute; \n\ bottom: 10%; \n\ background: #333; \n\ background: rgba(0,0,0,0.8); \n\ padding: 5px; \n\ border-radius: 0.5em; \n\ left: 17%; \n\ text-align: center; \n\ color: #FFF; \n\ display: none; \n\ } \n\ ", _css_old_ie: ".wistiamara_subtitle { \n\ filter: progid:DXImageTransform.Microsoft.Chroma(color='black') \n\ progid:DXImageTransform.Microsoft.Alpha(opacity=100) \n\ progid:DXImageTransform.Microsoft.dropshadow(color=#000000,offX=1,offY=1) \n\ progid:DXImageTransform.Microsoft.dropshadow(color=#000000,offX=-1,offY=1) \n\ progid:DXImageTransform.Microsoft.dropshadow(color=#000000,offX=1,offY=-1) \n\ progid:DXImageTransform.Microsoft.dropshadow(color=#000000,offX=-1,offY=-1); \n\ } \n\ ", _loader_image: "data:image/gif;base64,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" };