<html>
<body onload="runTest();">
<span style="display: run-in" id="runIn">
</span>
<span style="display: list-item" id="listItem">
</span>
<div id="result"></div>
<script>
if (window.testRunner)
{
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}

function runTest()
{
    document.body.offsetTop;
    var runIn = document.getElementById('runIn');
    var listItem = document.getElementById('listItem');

    var layerChild = document.createElement('layer');
    var noteChild = document.createElement('note');
    var blockquoteChild = document.createElement('blockquote');
    
    runIn.appendChild(layerChild);
    layerChild.appendChild(noteChild);
    noteChild.appendChild(blockquoteChild);
    
    document.body.offsetTop;
    
    document.body.removeChild(listItem);

    document.getElementById('result').innerHTML = "PASS";
    if (window.testRunner)
        testRunner.notifyDone();
}
</script>
</body>
</html>
