<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body>
<p id="description"></p>
<input id="input1" type="text"></input>
<input id="input2" type="text"></input>
<input id="input3" type="text"></input>
<script>
jsTestIsAsync = true;

description("Checks that the relatedTarget attribute for FocusEvent objects is being set correctly when focusin/focusout events are dispatched.  <b>Press tab four times</b> to dispatch a focusin and focusout event for each of the inputs below.");

var input1 = document.getElementById('input1');
var input2 = document.getElementById('input2');
var input3 = document.getElementById('input3');

input1.addEventListener("focusin", function(event) { shouldBeNull('event.relatedTarget'); });
input1.addEventListener("focusout", function(event) { shouldBe('event.relatedTarget', 'input2'); });
input1.addEventListener("focus", function(event) { shouldBeNull('event.relatedTarget'); });
input1.addEventListener("blur", function(event) { shouldBe('event.relatedTarget', 'input2'); });
input2.addEventListener("focusin", function(event) { shouldBe('event.relatedTarget', 'input1'); });
input2.addEventListener("focusout", function(event) { shouldBe('event.relatedTarget', 'input3'); });
input2.addEventListener("focus", function(event) { shouldBe('event.relatedTarget', 'input1'); });
input2.addEventListener("blur", function(event) { shouldBe('event.relatedTarget', 'input3'); finishJSTest(); });

input1.focus();
for (var i = 0; i < 2; i++) {
    eventSender.keyDown('\t');
}
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>
