<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body>
<p id="description"></p>
<div id="console"></div>
<form method="get" action="?">
    <input type="hidden" name="hidden" value="I am hidden" />
    <input id="button" formmethod="post" type="submit" name="button" />
</form>
<script>
description("Test for the formmethod attribute in input tags.");
if (window.testRunner) {
    testRunner.waitUntilDone();
}

var button = document.getElementById('button');

if (document.URL.substring(0, 4) == "file") {
    if (document.URL.indexOf('?') == -1) {
        button.click();
    } else {
        if (document.URL.substring(document.URL.indexOf('?') + 1, document.URL.length) == "")
            testPassed('The formmethod attribute was successfully used');
        else
            testFailed('The formmethod attribute was not used');

        if (window.testRunner)
            testRunner.notifyDone();
    }
}
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>
