<html>
    <head>
        <script type="text/javascript">
            var submittedFiles = 0;
            
            function log(message)
            {
                document.getElementById('console').appendChild(document.createTextNode(message + "\n"));
            }
            
            function verifyResults()
            {
                if (submittedFiles == 3) {
                    var frame = document.getElementById('fr');
                    frame.parentNode.removeChild(frame);
                    log("Test Passed");
                } else
                    log("Test Failed");
            }
        </script>
    </head>
    <body onload="test()">
        <p>
        This tests that the multi-file upload control works correctly.  This test and the resources/multiFileResources must be placed on a web server so the test can be run manually.<br>
        Choose "testFile1.html" "testFile2.html" and "testFile3.html" and submit the form. <br>
        You should see a "Test Passed" or a "Test Failed" message after submitting the form.<br>
        </p>
        <form method="post" enctype="multipart/form-data" action="resources/multiFileResources/post-echo-and-notify-done.cgi" id="myForm" target="targetFrame">
            <input type="file" id="target" multiple name="multiFileInput"></input>
            <input type="submit" value="Submit">
        </form>
        <iframe name="targetFrame" id="fr"></iframe>
        <pre id='console'></pre>
    </body>
</html>
