<!DOCTYPE html> 
<html>
  <head>
    <title>ARIA 1.0 Test Case 688</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    <h1>ARIA 1.0 Test Case 688</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 visibility="hidden". 
      After the onload event completes a child DOM element node with text content 
      has the CSS display property changed to visibility="visible".</p>
    
    <script type="text/javascript">  

      function showElement() {
        var node  = document.getElementById('TEST_ID_3');  
        node.setAttribute('style', 'visibility: visible');        
      }

      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', 'visibility: hidden');        
        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>
