<html>

<head>

<script>

function runTest()
{
    if (!window.eventSender)
        return;

    testRunner.dumpAsText();

    eventSender.mouseMoveTo(340, 140);
    eventSender.mouseDown();
    eventSender.mouseUp();
}

function setResult(message)
{
    document.getElementById('result').firstChild.data = message;
}

</script>

</head>

<body onload="runTest()" style="margin:0; zoom: 2" onclick="setResult('FAILURE')">

<map name="navmap">
<area shape=rect coords="30,30,70,70" href onclick="setResult('SUCCESS'); event.stopPropagation(); event.preventDefault();"> 
</map>

<img style="position: relative; left: 100px" border="20" width="100" height="100" usemap="#navmap" ismap>

<hr>

<p>This tests that client side image maps still work when zooming is in effect.</p>

<div id="result">TEST NOT RUN</div>

</body>

</html>
