<!DOCTYPE html>
<html>
    <head>
        <script>
            var runPixelTests = true;
            
            function init() {
                // Bail out early if the full screen API is not enabled or is missing:
                if (Element.prototype.webkitRequestFullScreen == undefined) {
                    logResult(false, "Element.prototype.webkitRequestFullScreen == undefined");
                    endTest();
                } else {
                    waitForEvent(document, 'webkitfullscreenchange', function() {
                        if (document.webkitIsFullScreen)
                            runWithKeyDown(function() { document.webkitCancelFullScreen(); });
                        else {
                            endTest();
                        }
                    });
                    runWithKeyDown(goFullScreen);
                }
            }
            
            function goFullScreen() {
                document.getElementById('block1').webkitRequestFullScreen();
            }
        </script>
        <script src="full-screen-test.js"></script>
        <style>
            #block1 {
                width: 200px;
                height: 100px;
                border: 4px solid darkgreen;
                background-color: green;
            }
            #block2 {
                width: 100px;
                height: 50px;
                border: 4px solid darkred;
                background-color: red;
                z-index: 200;
                position: relative;
                left: 50px;
                top: 25px;
            }
            #block3 {
                z-index: 500;
                position: relative;
            }
        </style>
    </head>
    <body onload="init()">
        <div>This tests that an element with a positive z-index appears behind the full screen element.  
             After entering full screen mode, the green box should not be obscured by the red box.
             Click <button onclick="goFullScreen()">go full screen</button> to run the test.</div>
        <div id="block2"></div>
        <div id="block3">
            <div id="block1"></div>
        </div>
    </body>
