<!DOCTYPE html> 
<html>
  <head>
    <title>ARIA 1.0 Test Case 695</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    <h1>ARIA 1.0 Test Case 695</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="polite" and the element has 
      a child DOM element node with text content that is hidden using CSS 
      visibility="hidden". After the aria-live attribute is added, the 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,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>
