gyorgy@0: (function($) { gyorgy@0: mejs.MediaElementDefaults.forcePluginFullScreen = false; gyorgy@0: gyorgy@0: MediaElementPlayer.prototype.isFullScreen = false; gyorgy@0: MediaElementPlayer.prototype.buildfullscreen = function(player, controls, layers, media) { gyorgy@0: gyorgy@0: if (!player.isVideo) gyorgy@0: return; gyorgy@0: gyorgy@0: // native events gyorgy@0: if (mejs.MediaFeatures.hasNativeFullScreen) { gyorgy@0: player.container.bind('webkitfullscreenchange', function(e) { gyorgy@0: gyorgy@0: if (document.webkitIsFullScreen) { gyorgy@0: // reset the controls once we are fully in full screen gyorgy@0: player.setControlsSize(); gyorgy@0: } else { gyorgy@0: // when a user presses ESC gyorgy@0: // make sure to put the player back into place gyorgy@0: player.exitFullScreen(); gyorgy@0: } gyorgy@0: }); gyorgy@0: } gyorgy@0: gyorgy@0: var gyorgy@0: normalHeight = 0, gyorgy@0: normalWidth = 0, gyorgy@0: container = player.container, gyorgy@0: docElement = document.documentElement, gyorgy@0: docStyleOverflow, gyorgy@0: parentWindow = window.parent, gyorgy@0: parentiframes, gyorgy@0: iframe, gyorgy@0: fullscreenBtn = gyorgy@0: $('
') gyorgy@0: .appendTo(controls) gyorgy@0: .click(function() { gyorgy@0: var isFullScreen = (mejs.MediaFeatures.hasNativeFullScreen) ? gyorgy@0: document.webkitIsFullScreen : gyorgy@0: player.isFullScreen; gyorgy@0: gyorgy@0: if (isFullScreen) { gyorgy@0: player.exitFullScreen(); gyorgy@0: } else { gyorgy@0: player.enterFullScreen(); gyorgy@0: } gyorgy@0: }); gyorgy@0: gyorgy@0: player.enterFullScreen = function() { gyorgy@0: gyorgy@0: // firefox can't adjust plugin sizes without resetting :( gyorgy@0: if (player.pluginType !== 'native' && (mejs.MediaFeatures.isFirefox || player.options.forcePluginFullScreen)) { gyorgy@0: media.setFullscreen(true); gyorgy@0: //player.isFullScreen = true; gyorgy@0: return; gyorgy@0: } gyorgy@0: gyorgy@0: // attempt to set fullscreen gyorgy@0: if (mejs.MediaFeatures.hasNativeFullScreen) { gyorgy@0: player.container[0].webkitRequestFullScreen(); gyorgy@0: } gyorgy@0: gyorgy@0: // store overflow gyorgy@0: docStyleOverflow = docElement.style.overflow; gyorgy@0: // set it to not show scroll bars so 100% will work gyorgy@0: docElement.style.overflow = 'hidden'; gyorgy@0: gyorgy@0: // store gyorgy@0: normalHeight = player.container.height(); gyorgy@0: normalWidth = player.container.width(); gyorgy@0: gyorgy@0: // make full size gyorgy@0: container gyorgy@0: .addClass('mejs-container-fullscreen') gyorgy@0: .width('100%') gyorgy@0: .height('100%') gyorgy@0: .css('z-index', 1000); gyorgy@0: //.css({position: 'fixed', left: 0, top: 0, right: 0, bottom: 0, overflow: 'hidden', width: '100%', height: '100%', 'z-index': 1000}); gyorgy@0: gyorgy@0: if (player.pluginType === 'native') { gyorgy@0: player.$media gyorgy@0: .width('100%') gyorgy@0: .height('100%'); gyorgy@0: } else { gyorgy@0: container.find('object embed') gyorgy@0: .width('100%') gyorgy@0: .height('100%'); gyorgy@0: player.media.setVideoSize($(window).width(),$(window).height()); gyorgy@0: } gyorgy@0: gyorgy@0: layers.children('div') gyorgy@0: .width('100%') gyorgy@0: .height('100%'); gyorgy@0: gyorgy@0: fullscreenBtn gyorgy@0: .removeClass('mejs-fullscreen') gyorgy@0: .addClass('mejs-unfullscreen'); gyorgy@0: gyorgy@0: player.setControlsSize(); gyorgy@0: player.isFullScreen = true; gyorgy@0: }; gyorgy@0: player.exitFullScreen = function() { gyorgy@0: gyorgy@0: // firefox can't adjust plugins gyorgy@0: if (player.pluginType !== 'native' && mejs.MediaFeatures.isFirefox) { gyorgy@0: media.setFullscreen(false); gyorgy@0: //player.isFullScreen = false; gyorgy@0: return; gyorgy@0: } gyorgy@0: gyorgy@0: // come outo of native fullscreen gyorgy@0: if (mejs.MediaFeatures.hasNativeFullScreen && document.webkitIsFullScreen) { gyorgy@0: document.webkitCancelFullScreen(); gyorgy@0: } gyorgy@0: gyorgy@0: // restore scroll bars to document gyorgy@0: docElement.style.overflow = docStyleOverflow; gyorgy@0: gyorgy@0: container gyorgy@0: .removeClass('mejs-container-fullscreen') gyorgy@0: .width(normalWidth) gyorgy@0: .height(normalHeight) gyorgy@0: .css('z-index', 1); gyorgy@0: //.css({position: '', left: '', top: '', right: '', bottom: '', overflow: 'inherit', width: normalWidth + 'px', height: normalHeight + 'px', 'z-index': 1}); gyorgy@0: gyorgy@0: if (player.pluginType === 'native') { gyorgy@0: player.$media gyorgy@0: .width(normalWidth) gyorgy@0: .height(normalHeight); gyorgy@0: } else { gyorgy@0: container.find('object embed') gyorgy@0: .width(normalWidth) gyorgy@0: .height(normalHeight); gyorgy@0: gyorgy@0: player.media.setVideoSize(normalWidth, normalHeight); gyorgy@0: } gyorgy@0: gyorgy@0: layers.children('div') gyorgy@0: .width(normalWidth) gyorgy@0: .height(normalHeight); gyorgy@0: gyorgy@0: fullscreenBtn gyorgy@0: .removeClass('mejs-unfullscreen') gyorgy@0: .addClass('mejs-fullscreen'); gyorgy@0: gyorgy@0: player.setControlsSize(); gyorgy@0: player.isFullScreen = false; gyorgy@0: }; gyorgy@0: gyorgy@0: $(window).bind('resize',function (e) { gyorgy@0: player.setControlsSize(); gyorgy@0: }); gyorgy@0: gyorgy@0: $(document).bind('keydown',function (e) { gyorgy@0: if (player.isFullScreen && e.keyCode == 27) { gyorgy@0: player.exitFullScreen(); gyorgy@0: } gyorgy@0: }); gyorgy@0: gyorgy@0: } gyorgy@0: gyorgy@0: })(mejs.$);