Coursera EXT - Native Chrome FullScreen

Coursera Extension -- Use native chromeless fullscreen in chrome

// ==UserScript==
// @name            Coursera EXT - Native Chrome FullScreen
// @description     Coursera Extension -- Use native chromeless fullscreen in chrome
// @namespace       http://sepczuk.com/
// @version         0.11
// @include         https://*.coursera.org/*/lecture/*
// @match           https://*.coursera.org/*/lecture/*
// @copyright       2012, Damian Sepczuk
// ==/UserScript==

function mainWrapper(){
    function main(){
        if (window.QL_player === undefined) {
            setTimeout(main, 300);
            return;
        }

        var appendCallback = function(original, toAppend){ // from coursera src
            return function(){
                var that = this;
                var returnVal = original.call(that, arguments);
                toAppend.call(that, arguments);
                return returnVal;
            }
        }
            
        var prependCallback = function(original, toPrepend){
            return function(){
                var that = this;
                toPrepend.apply(that, arguments);
                return original.apply(that, arguments);
            };
        };

                    
        QL_player.mediaelement_handle.enterFullScreen = prependCallback(QL_player.mediaelement_handle.enterFullScreen, function(){
            console.log("Trying to go chromeless fullscreen...");
            window.top.document.documentElement.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);
            $(window).resize();
        });

        QL_player.mediaelement_handle.exitFullScreen = appendCallback(QL_player.mediaelement_handle.exitFullScreen, function(){
            console.log("Trying to exit chromeless fullscreen...");
            window.top.document.webkitCancelFullScreen();
            $(window).resize();
        });

    };

    main();
};


if (!document.xmlVersion) {
    var script = document.createElement('script');
    script.appendChild(document.createTextNode('('+ mainWrapper +')();'));
    document.documentElement.appendChild(script);
}