<script>
    function toggleDisplay(element, button)
    {
        if (element.style.display == "none")
            element.style.display = "";
        else
            element.style.display = "none";
    }

    function toggleVisibility(element, button)
    {
        if (element.style.visibility == "hidden")
            element.style.visibility = "";
        else
            element.style.visibility = "hidden";
    }

</script>
<p>
    Play with the display and visibility toggles. Make sure that turning an inner element visible does not show it if it has a hidden or
       non-displaying ancestor, and that making an ancestor visible and displaying shows only its descendants the are visible and displaying.
</p>
<table>
    <tr>
        <td>
            <input type="checkbox" checked="true" onclick="toggleDisplay(document.getElementById('middle'))"> Outer frame display
        </td>
        <td>
            <input type="checkbox" checked="true" onclick="toggleDisplay(document.getElementById('middle').contentDocument.getElementById('inner'))"> Inner frame display
        </td>
    </tr>
    <tr>
        <td>
            <input type="checkbox" checked="true" onclick="toggleVisibility(document.getElementById('middle'))"> Outer frame visibility
            </td>
        <td>
            <input type="checkbox" checked="true" onclick="toggleVisibility(document.getElementById('middle').contentDocument.getElementById('inner'))"> Inner frame visibility
        </td>
        <td>
            <input type="checkbox" checked="true" onclick="toggleVisibility(document.getElementById('middle').contentDocument.getElementById('inner').contentDocument.getElementById('plugin'))"> Inner plugin visibility
        </td>
    </tr>
</table>

<iframe id="middle" style="height: 400px; width: 400px;" src="resources/nested-plugins-outer-frame.html"></iframe>
