<html>
<script>
    if (window.layoutTestController)
        layoutTestController.dumpAsText();
</script>
<body id="body">
    
    <table id="testTable" align="center" border="1" cellpadding="5" cellspacing="0" 
        summary="This is the summary text that should appear as a description">
        <caption> Example #1: Nested Stubs </caption>
    <thead><tr><th>1</th><th>a</th><td>b</td></tr></thead>
    <tfoot><tr><td>1</td><td>e</td><td>f</td></tr></tfoot>
    <tr><th>1</th><td>c</td><td>d</td></tr>
    <tr><th>1</th><td>c1</td><td>d1</td></tr>
    </table>
    <br><br>

    <table id="testTable2" align="center" border="1" cellpadding="5" cellspacing="0">
    <thead><tr><th>1</th><th>a</th><td>b</td></tr></thead>
    <tbody>
    <tr><th>1</th><td>c</td><td>d</td></tr>
    <tr><th>1</th><td>c1</td><td>d1</td></tr>
    </tbody>
    <tbody>
    <tr><th>1</th><td>c</td><td>d</td></tr>
    <tr><th>1</th><td>c1</td><td>d1</td></tr>
    </tbody>
    <tbody>
    <tr><th>1</th><td>c</td><td>d</td></tr>
    <tr><th>1</th><td>c1</td><td>d1</td></tr>
    </tbody>
    <tfoot><tr><td>1</td><td>e</td><td>f</td></tr></tfoot>
    </table>
    
    <div id="result"></div>
    
    <script>
        if (window.accessibilityController) {
            var body = document.getElementById("body");
            body.focus();
            var table = accessibilityController.focusedElement.childAtIndex(0);
            
            result.innerText += "--------------------------\n"; 
            result.innerText += "THEAD, TFOOT table\n"; 
            result.innerText += "--------------------------\n\n"; 
            result.innerText += table.attributesOfColumnHeaders() + "\n\n"; 
            result.innerText += "--------------------------\n\n"; 
            result.innerText += table.attributesOfRowHeaders() + "\n\n"; 
            result.innerText += "--------------------------\n\n"; 
            result.innerText += table.attributesOfColumns() + "\n\n"; 
            result.innerText += "--------------------------\n\n"; 
            result.innerText += table.attributesOfRows() + "\n\n"; 
            result.innerText += "--------------------------\n\n"; 
            result.innerText += table.attributesOfVisibleCells() + "\n\n"; 
            result.innerText += "--------------------------\n\n"; 
            result.innerText += table.attributesOfHeader() + "\n\n"; 
            result.innerText += "--------------------------\n\n"; 

            // second table
            table1 = accessibilityController.focusedElement.childAtIndex(2);
            
            result.innerText += "--------------------------\n"; 
            result.innerText += "Multi-TBODY table\n"; 
            result.innerText += "--------------------------\n\n"; 
            result.innerText += table.attributesOfColumnHeaders() + "\n\n"; 
            result.innerText += "--------------------------\n\n"; 
            result.innerText += table.attributesOfRowHeaders() + "\n\n"; 
            result.innerText += "--------------------------\n\n"; 
            result.innerText += table.attributesOfColumns() + "\n\n"; 
            result.innerText += "--------------------------\n\n"; 
            result.innerText += table.attributesOfRows() + "\n\n"; 
            result.innerText += "--------------------------\n\n"; 
            result.innerText += table.attributesOfVisibleCells() + "\n\n"; 
            result.innerText += "--------------------------\n\n"; 
            result.innerText += table.attributesOfHeader() + "\n\n"; 
            result.innerText += "--------------------------\n\n"; 


        }
    </script>
</body>
</html>
