<!DOCTYPE html> 
<html>
  <head>
    <title>ARIA 1.0 Test Case 714</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    <h1>ARIA 1.0 Test Case 714</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 text node with content. After the 
      aria-live attribute is added, 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 live_node = document.createElement('div');
        live_node.setAttribute('aria-live', 'assertive');
        live_node.setAttribute('id', 'TESTZ');
 
        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(deleteChildNodes,500);
      }

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