<!DOCTYPE html> 
<html>
  <head>
    <title>ARIA 1.0 Test Case 706</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    <h1>ARIA 1.0 Test Case 706</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 text node with content. After 
      the onload event completes the child DOM text node is deleted.</p>
    
    <script type="text/javascript">  

      function deleteChildNodes() {
        var node  = document.getElementById('TEST_ID_2');  
        while (node.firstChild) node.removeChild(node.firstChild);
      }

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

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