<!DOCTYPE HTML>
<html>
    <head>
        <title id='desc'> FocusEvent.relatedTarget for focusin Event </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 = "focusin";
            var TARGET, HELPER;

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

            function TestEvent(evt)
            {
                if ((evt.target == TARGET) && (evt.relatedTarget == HELPER))
                {
                    PassTest();
                }
                else
                {
                    FailTest();
                }
            }
        </script>
    </head>
    <body>
        <h3>DOM Events</h3>
        <h4>
            Test Description: FocusEvent.relatedTarget for focusin event is the event target losing focus.
        </h4>

        <pre>
            <input id="helper" value="" /> <button id="target">BUTTON</button>

            Steps:
            1) Click in the above textbox using mouse
            2) Then click the above button using mouse
        </pre>

        <p>Test passes if the word "PASS" appears below after following the above steps.</p>
        <div>Test result: </div>
        <div id='testresult'>FAIL</div>
    </body>
</html>