<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <!--This tests that the positioning of a block that has a relatively positioned parent and grandparent remains relative when
        the positioning of the parent is toggled to static. -->
    <head>
        <title>CSS Test: Block boxes within inline boxes are affected by positioning</title>
        <style type="text/css">
            #span1
            {
                background: yellow;
                height: 2in;
                display: inline;
                position: relative;
                width: 2in;
                left: 2in;
                top: 2in;
            }
            #span2
            {
                background: blue;
                display: inline;
                position: relative;
                top: 2in;
            }
            #div3
            {
                background: orange;
                width: 2in;
            }
        </style>
        <script type="text/javascript">
            if (window.testRunner) {
                testRunner.waitUntilDone();
            }

            function run() {
                document.getElementById("span2").style.position = "static";
                document.body.offsetTop;
                if (window.testRunner)
                    testRunner.notifyDone();
           }
        </script>
    </head>
    <body onload="setTimeout('run()', 10);">
        <p>Test passes if the orange box sits atop the blue box and both are in the center of the view.</p>
        <span id="span1">
            <span id="span2">
                <i>
                <div id="div3">Filler Text</div>
                Filler Text
                </i>
            </span>
        </span>
    </body>
</html>