<script>

function extractValues()
{
    var rows = document.getElementById("table").rows;
    for (var i = 0; i< rows.length; i++) {
        var row = rows[i];
        var element = row.childNodes[1].firstChild;
        try {
            if (element.value) {
                row.childNodes[2].innerHTML = element.value;
            }
            if (element.getAttribute("value")) {
                row.childNodes[3].innerHTML = element.getAttribute("value");
            }
        } catch (exception) { }
    }
}

function test()
{
    var e;

    document.getElementById("1").value = "after";
    document.getElementById("9").value = "after";
    document.getElementById("2").value = "after";
    document.getElementById("5").value = "after";
    document.getElementById("6").value = "after";
    document.getElementById("7").value = "after";
    document.getElementById("8").value = "after";

    document.getElementById("3").setAttribute("value", "after");
    document.getElementById("4").setAttribute("value", "after");

    try {
        e = document.getElementById("12");
        e.value = "after";
        e.type = "checkbox";
    } catch (exception) { }

    try {
        e = document.getElementById("13");
        e.value = "after";
        e.type = "text";
    } catch (exception) { }

    try {
        e = document.getElementById("14");
        e.setAttribute("value", "after");
        e.type = "checkbox";
    } catch (exception) { }

    try {
        e = document.getElementById("15");
        e.setAttribute("value", "after");
        e.type = "text";
    } catch (exception) { }

    try {
        document.getElementById("10").value = "after";
    } catch (exception) { }

    extractValues();
    
    document.getElementById("form").reset();
}

</script>

<body onload="test()">

<p>Results that match WinIE are two columns on the right that say "after" every time, except for the last row which should have nothing in either column.</p>
<p>Results that match Gecko are like WinIE, but with "before" for the attribute in the first two rows and the last row.</p>

<hr>

<form id="form">

<table id="table">

<thead><th align="left">test case</th><th align="left">form element</th><th>property</th><th>attribute</th></thead>

<tr><td>text with value property changed</td><td><input id="1" value="before"></td><td ></td><td></td></tr>
<tr><td>password with value property changed</td><td><input id="9" type="password" value="before"></td><td></td><td></td></tr>
<tr><td>check box with value property changed</td><td><input id="2" type="checkbox" value="before"></td><td></td><td></td></tr>
<tr><td>hidden with value property changed</td><td><input id="5" type="hidden" value="before"></td><td></td><td></td></tr>
<tr><td>button with value property changed</td><td><input id="6" type="button" value="before"></td><td></td><td></td></tr>
<tr><td>image with value property changed</td><td><input id="7" type="image" value="before"></td><td></td><td></td></tr>
<tr><td>radio with value property changed</td><td><input id="8" type="radio" value="before"></td><td></td><td></td></tr>

<tr><td>text with value attribute changed</td><td><input id="3" value="before"></td><td ></td><td></td></tr>
<tr><td>check box with value attribute changed</td><td><input id="4" type="checkbox" value="before"></td><td></td><td></td></tr>

<tr><td>text with value property changed, then turned into check box</td><td><input id="12" value="before"></td><td ></td><td></td></tr>
<tr><td>check box with value property changed, then turned into text</td><td><input id="13" type="checkbox" value="before"></td><td></td><td></td></tr>

<tr><td>text with value attribute changed, then turned into check box</td><td><input id="14" value="before"></td><td ></td><td></td></tr>
<tr><td>check box with value attribute changed, then turned into text</td><td><input id="15" type="checkbox" value="before"></td><td></td><td></td></tr>

<tr><td>file with value property changed</td><td><input id="10" type="file" value="before"></td><td></td><td></td></tr>

</table>

</form>

</body>
