<html>
<head>
    <title>Input (type="image") Align</title>
</head>
<body>
    <p>The following 4 images should be all be rendered exactly the same, aligned to the right side.</p>
    <input type='image' align='right' src='resources/apple.gif' />
    <br><br>
    <input align='right' src='resources/apple.gif' type='image' />
    <br><br>
    <input type='image' id='test1' src='resources/apple.gif' />
    <br><br>

    <script>
    <!--
        // This script tries to set the align attribute on an input of type text.
        // Nothing should happen...
        var obj1 = document.getElementById('test1');
        obj1.setAttribute('align', 'right');
    -->
    </script>

    <div id='insertionpoint'></div>
    <script>
    <!--
        var ins = document.getElementById('insertionpoint');
        var obj2 = document.createElement('INPUT');
        obj2.setAttribute('align', 'right');
        obj2.setAttribute('src', 'resources/apple.gif');
        obj2.setAttribute('type', 'image'); 
        ins.appendChild(obj2);
    //-->
    </script>
</body>
</html>
