<html>
<head>
    <title>Align in select test</title>
    <style type="text/css">
        select { width: 300px; }
    </style>
</head>
<body>
    <p>The following select elements should all be rendered on the left, with their text left justified.</p>
    <select align="right"><option>This is should be left justified.</option></select><br>
    <select align="left"><option>This is should be left justified.</select><br>
    <select align="center"><option>This is should be left justified.</option></select><br>
    <select><option>This is should be left justified.</option></select><br>

    <select id="test1"><option>This is should be left justified.</option></select>
    <script>
    <!--
        var obj1 = document.getElementById('test1');
        obj1.setAttribute('align', 'right');
    -->
    </script>

    <div id='insertionpoint'></div>
    <script>
    <!--
        var ins = document.getElementById('insertionpoint');
        var obj2 = document.createElement('SELECT');
        obj2.setAttribute('align', 'right');
        var option = document.createElement('OPTION');
        option.appendChild(document.createTextNode('This is should be left justified.'));
        obj2.appendChild(option);
        ins.appendChild(obj2);
    //-->
    </script>
</body>
</html>
