<!DOCTYPE HTML>
<html>
    <head>
        <title id='desc'> MutationEvent.attrChange for DOMAttrModified 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 = "DOMAttrModified";
            var ATTR = "name";
            var TARGET;
            var ExpectResult = [2, 1, 3];
            var ActualResult = [];

            window.onload = function(e)
            {
                try
                {
                    TARGET = document.getElementById("target");
                    TARGET.addEventListener(EVENT, TestEvent, true);

                    TARGET.setAttribute(ATTR, "foo");
                    TARGET.setAttribute(ATTR, "bar");
                    TARGET.removeAttribute(ATTR);
                }
                catch(ex)
                {
                    FailTest();
                }
            }

            function TestEvent(evt)
            {
                if (evt.type == EVENT)
                {
                    ActualResult.push(evt.attrChange);
                }

                if (ExpectResult.toString() == ActualResult.toString())
                {
                    PassTest();
                }
            }
        </script>
    </head>
    <body>
        <h3>DOM Events</h3>
        <h4>
            Test Description: MutationEvent.attrChange indicates the type of change which triggered the DOMAttrModified event.
        </h4>

        <div id="target"></div>

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