<!DOCTYPE html> 
<html>
  <head>
    <title>ARIA 1.0 Test Case 718</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    <h1>ARIA 1.0 Test Case 718</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 that contains text content. After the aria-live 
      attribute is added, the CSS 'display' property of the child DOM element 
      node is changed to display="none".</p>
    
    <script type="text/javascript">  

      function hideElement() {
        var node  = document.getElementById('TEST_ID_2');  
        node.style.display = "none";
      }

      function addLiveRegion() {
        var node = document.getElementById('TEST_ID_1');  
        
        var live_node = document.createElement('div');
        live_node.setAttribute('aria-live', 'assertive');
 
        var element_node = document.createElement('div');
        element_node.setAttribute('id', 'TEST_ID_2');
       
        var text_node = document.createTextNode('TEST TEXT');
        
        element_node.appendChild(text_node);
        live_node.appendChild(element_node);
        node.appendChild(live_node);
        
        setTimeout(hideElement,500);
      }

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