<!DOCTYPE html> 
<html>
  <head>
    <title>ARIA 1.0 Test Case 686</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    <h1>ARIA 1.0 Test Case 686</h1>
    
    <div id="TEST_ID_1">
    </div>
    
    <h2>Description</h2>
    <p>An element with an aria-live attribute is added to the document by a script during the onload 
      event with the value="assertive" and the element has a child DOM element node with text content 
      that is hidden using CSS display="none". After the onload event completes a child DOM element 
      node with text content has the CSS display property changed to display="block".</p>
    
    <script type="text/javascript">  

      function showElement() {
        var node  = document.getElementById('TEST_ID_3');  
        node.style.display = "block";        
      }

      function addChildElementNode() {
        var node         = document.getElementById('TEST_ID_2');  
        var element_node = document.createElement('div');        
        element_node.setAttribute('id', 'TEST_ID_3');        
        element_node.setAttribute('style', 'display: none');        
        var text_node    = document.createTextNode("TEST TEXT");        
        element_node.appendChild(text_node);
        node.appendChild(element_node);
        setTimeout(showElement,1000);
      }

      function addLiveRegion() {
        var node         = document.getElementById('TEST_ID_1');  
        var element_node = document.createElement('div');        
        element_node.setAttribute('id', 'TEST_ID_2');
        element_node.setAttribute('aria-live', 'assertive');
        node.appendChild(element_node);
        setTimeout(addChildElementNode,1000);
      }

      function onload() {
        addLiveRegion();
      }
     
      window.addEventListener('load', onload);
    </script>
  </body>
  
</html>
