<html>
<head>
<script>
function test() {
    if (window.layoutTestController)
        layoutTestController.dumpAsText();

    var f = window.document.forms[0];

    var e = document.createElement('input');
    e.type = 'text'
    e.name = 'y';
    e.value = 'y';
    f.replaceChild(e, f.y);

    for (var i = 0; i < f.elements.length; i++) {
        var line = document.createElement("div");
        line.appendChild(document.createTextNode(f.elements[i].name));
        document.getElementById("result").appendChild(line);
    }
}
</script>
<body onload="test()">
<p>This test checks that the elements array of a form element returns the elements in document order
rather than order of insertion into the document. Older versions of WebKit returned the elements in
order of insertion.</p>
<p>If the test works properly, the text at the bottom will most likely say "x" then "y" then "z" in that order.
If it fails, it will most likely say "x", then "z", then "y".</p>
<hr>
<p>
<form>
<input type='text' name='x' value='x'>
<input type='text' name='y' value='y'>
<input type='text' name='z' value='z'>
</form>
</p>
<hr>
<p id="result"></p>
</body>
</html>
