<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script>
function test()
{
    if (window.testRunner) {
        testRunner.dumpAsText();
        testRunner.waitUntilDone();
    }
    window.location='#anchor';
    setTimeout("finishTest()", 0);
}
function finishTest()
{
    if (window.location.toString().indexOf("#") == -1) {
        setTimeout("finishTest()", 0);
        return;
    }
    var message = "Scroll position is " + (window.scrollX == 0 ? "" : "not ") + "at left and "
        + (window.scrollY == 0 ? "" : "not ") + "at top.";
    document.getElementById("console").appendChild(document.createTextNode(message));
    if (window.testRunner)
        testRunner.notifyDone();
}
</script>
</head>
<body onload="test()">

<div style="padding-left: 100px;">
<p>Thisisareallywidelinethatshereatthestartsowehaveahorizontalscrollbar.Thisisareallywidelinethatshereatthestartsowehaveahorizontalscrollbar.Thisisareallywidelinethatshereatthestartsowehaveahorizontalscrollbar.</p>
<p><a name="anchor"></a>Anchor is here, and should cause a vertical scroll only, not a horizontal scroll.</p>
<p>So, if the test succeeds, the text below should say that we're at the left but not at the top.</p>
<p id="console"></p>
<p style="height: 1000px">This is very tall line that's here at the end so we have a vertical scroll bar.</p>
</div>

</body></html>
