<head>
<script>
function test()
{
    if (window.testRunner)
        testRunner.dumpAsText();
    if (window.eventSender) {
        eventSender.mouseMoveTo(20, 70);
        eventSender.mouseDown();
        eventSender.mouseUp();
    }
}

function selectClicked() {
    var message = "Passed";
    var paragraph = document.createElement('p');
    paragraph.appendChild(document.createTextNode(message));
    document.getElementById('console').appendChild(paragraph);
}
</script>
</head>
<body onload="test();">
<p>This tests clicking on an empty select. If successful, the console message says Passed. See bug 11765.
<form>
<select  onclick="selectClicked()" style="width:100px;height:100px;" id="select" size=2>
</select>
</form>
<p id="console"></p>
</body>
