<html>
<head>
    <script>
        function log(msg)
        {
            var console = document.getElementById('console');
            console.appendChild(document.createTextNode(msg + "\n"));
        }

        function test()
        {
            if (window.testRunner)
                testRunner.dumpAsText();

            var element = document.getElementById('nonPositionedDiv');
            var compStyle = element.ownerDocument.defaultView.getComputedStyle(element, null);
            log("Non-positioned Div:");
            log("    Computed Style = " + compStyle.zIndex + " (Should be 20)");
            log("    element.style.zIndex = " + element.style.zIndex + " (Should be 20)");
            log("");

            element = document.getElementById('positionedDiv');
            compStyle = element.ownerDocument.defaultView.getComputedStyle(element, null);
            log("Positioned Div:");
            log("    Computed Style = " + compStyle.zIndex + " (Should be 20)");
            log("    element.style.zIndex = " + element.style.zIndex + " (Should be 20)");
        }
    </script>
</head>
<body onload="test();">
    <div style="z-index:20" id='nonPositionedDiv'></div>
    <div style="z-index:20; position: absolute" id='positionedDiv'></div>
    <pre id='console'></pre>
</body>
</html>
