<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html id="html" xmlns="http://www.w3.org/1999/xhtml" xmlns:foo="http://www.w3.org/1999/xhtml">
<head>
    <script>
        var console;
        function debug(message)
        {
            console.appendChild(document.createTextNode(message));
            console.appendChild(document.createElement("br"));
        }

        function testPrefix()
        {
            console = document.getElementById("console");
            if (window.testRunner)
                testRunner.dumpAsText();

            if (document.getElementById('image').prefix == "foo")
                debug("PASSED: prefix was kept");
            else
                debug("FAILED: prefix was not kept");

            if (document.getElementById('image').localName == "image")
                debug("PASSED: localName matches &lt;image&gt;");
            else
                debug("FAILED: localName does not match &lt;image&gt;");
        }
    </script>
</head>
<body onload="testPrefix()">
    <foo:image id="image" style="display: none;" />
    <p> This test makes sure that a prefixed image keeps its prefix and that the localName matches img </p>
    <div id="console" />
</body>
</html>
