// Source Chooser Plugin (function($) { $.extend(mejs.MepDefaults, { sourcechooserText: 'Source Chooser' }); $.extend(MediaElementPlayer.prototype, { buildsourcechooser: function(player, controls, layers, media) { var t = this; player.sourcechooserButton = $('
'+ ''+ '
'+ ''+ '
'+ '
') .appendTo(controls) // hover .hover(function() { $(this).find('.mejs-sourcechooser-selector').css('visibility','visible'); }, function() { $(this).find('.mejs-sourcechooser-selector').css('visibility','hidden'); }) // handle clicks to the language radio buttons .delegate('input[type=radio]', 'click', function() { src = this.value; if (media.currentSrc != src) { currentTime = media.currentTime; paused = media.paused; media.setSrc(src); media.load(); media.addEventListener('loadedmetadata', function(e){ this.currentTime = currentTime; }, true); media.addEventListener('canplay', function(e){ if (!paused) { this.play(); } }, true); } }); // add to list for (i in media.children) { src = media.children[i]; if (src.nodeName === 'SOURCE' && (media.canPlayType(src.type) == 'probably' || media.canPlayType(src.type) == 'maybe')) { player.addSourceButton(src.src, src.title, src.type, media.src == src.src); } } if (this.options.alternateVideoSrc && this.options.alternateVideoSrc != "") { var srcObject = JSON.decode(this.options.alternateVideoSrc); if (typeOf(srcObject) == 'object') { Object.each(srcObject, function(src) { player.addSourceButton(src.src, src.title, src.type, media.src == src.src); }); } } }, addSourceButton: function(src, label, type, isCurrent) { var t = this; if (label === '' || label == undefined) { label = src; } type = type.split('/')[1]; t.sourcechooserButton.find('ul').append( $('
  • '+ ''+ ''+ '
  • ') ); t.adjustSourcechooserBox(); }, adjustSourcechooserBox: function() { var t = this; // adjust the size of the outer box var ulheight = t.sourcechooserButton.find('.mejs-sourcechooser-selector ul').outerHeight(true); if (ulheight == 0) { if (t.sourcechooserButton.find('.mejs-sourcechooser-selector').height) { ulheight = t.sourcechooserButton.find('.mejs-sourcechooser-selector').height + 10 //one line's worth } else { ulheight = 10; } } t.sourcechooserButton.find('.mejs-sourcechooser-selector').height( ulheight ); } }); })(mejs.$);