<!DOCTYPE HTML>
<html>
    <head>
        <title> W3C DOM Level 3 Event: blur </title>
        <script type="text/javascript">
            var PassTest = function()
            {
                document.getElementById("testresult").firstChild.data = "PASS";
            }

            var FailTest = function()
            {
                document.getElementById("testresult").firstChild.data = "FAIL";
            }

            var EVENT = "blur";
            var TARGET;

            window.onload = function()
            {
                try
                {
                    TARGET = document.getElementById("target");
                    TARGET.addEventListener(EVENT, TestCapture, true);
                }
                catch(ex)
                {
                    FailTest();
                }
            }

            function TestCapture(evt)
            {
                if ((evt.type == EVENT) && (evt.currentTarget == TARGET))
                {
                    PassTest();
                }
                else
                {
                    FailTest();
                }
            }
        </script>
    </head>
    <body>
        <h4>Test Description: blur event fires when an event target loses focus.</h4>

        <div id="parent">
            Click the textbox and then the button: <br />
            <input id="target" /> <button id="helper">Button</button>
        </div>

        <p>Test passes if the word "PASS" appears below after clicking the above textbox and then the button.</p>
           <div>Test result: </div>
        <div id='testresult'>FAIL</div>
    </body>
</html>