<!DOCTYPE html> 
<html>
  <head>
    <title>ARIA 1.0 Test Case 694</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    <h1>ARIA 1.0 Test Case 694</h1>
    
    <div id="TEST_ID_1">
    </div>
    
    <h2>Description</h2>
    <p>The aria-live attribute is added to an element in the document by a script after 
      the onload event completes 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 aria-live attribute is added, the 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.setAttribute('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,500);
      }

      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,500);
      }

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