<!doctype html>
<html>
    <head>
        <title>HTML5 Drag and Drop: Fire dragover event during the drag and drop processing</title>
        <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
        <link rel="author" title="Microsoft" href="http://www.microsoft.com/"/>
        <link rel="help" href="http://dev.w3.org/html5/spec/dnd.html#drag-and-drop-processing-model"/>
        <meta name="assert" content="Fire dragover event during the drag and drop processing"/>
        <script src="../resources/dragdrop_support.js" type="text/javascript"></script>
        <script type="text/javascript">
            var EVENT, TARGET;

            function DragoverEvent(evt)
            {
                if ((TARGET == evt.target) && (EVENT == evt.type))
                {
                    LogTestResult("PASS");
                }
                else
                {
                    LogTestResult("FAIL");
                }
            }

            EVENT = "dragover";

            window.onload = function()
            {
                TARGET = document.getElementById("target");
                AddEventListenersForElement(EVENT, DragoverEvent, false, TARGET);
            }
        </script>
    </head>
    <body>
        <pre>Description: Fire dragover event during the drag and drop processing</pre>
        <table id='testtable' border='1'>
            <tr>
                <td>Test Result</td>
                <td>Test Assertion</td>
            </tr>
            <tr>
                <td id='test_result'>Manual</td>
                <td id='test_assertion'>Test passes if if the word "PASS" appears to the left after following the steps below.
                <div id="manualsteps">
                    Steps:
                    <ol>
                        <li> Select the text inside the red box.
                        <li> Drag it, hover over the green box and then release the mouse
                    </ol>
                </div>
            </td>
            </tr>
        </table>
        <p>
        http://dev.w3.org/html5/spec/dnd.html#drag-and-drop-processing-model
        </p>
        <p>
        If the current target element is a DOM element, then fire a DND event named dragover at this current target element
        </p>
        <div style="border:2px red solid; width:100px">SampleText</div>
        <br /><br />
        <div id="target" style="border:2px green solid; width:200px; height:100px"></div>
    </body>
</html>
