<!DOCTYPE HTML>
<html>
    <head>
        <title id='desc'> Mutation Event Type: DOMAttrModified </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 = ["foo", "bar", null];
            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(TARGET.getAttribute(ATTR));
                }

                if (ExpectResult.toString() == ActualResult.toString())
                {
                    PassTest();
                }
            }
        </script>
    </head>
    <body>
        <h3>DOM Events</h3>
        <h4>
            Test Description: DOMAttrModified event fires after an Attr.value has been
            modified and after an Attr node has been added to or removed from an Element.
        </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>