/**
     * Print rows/columns controls
     * 
     * @param SiteComponent $siteComponent
     * @return void
     * @access public
     * @since 4/17/06
     */
    function printRowsColumns($siteComponent)
    {
        $minCells = $siteComponent->getMinNumCells();
        // rows
        print "\n\t\t\t\t<tr><td class='ui2_settingborder'>";
        print "\n\t\t\t\t<span class='ui2_settingtitle'>";
        print "\n\t\t\t\t\t" . _('Rows: ') . "\n\t\t\t\t</span>";
        print "\n\t\t\t\t</td><td class='ui2_settingborder'>";
        print "\n\t\t\t\t\t<select class='ui2_field' name='" . RequestContext::name('rows') . "'";
        $authZ = Services::getService("AuthZ");
        $idManager = Services::getService("Id");
        if (!$authZ->isUserAuthorized($idManager->getId("edu.middlebury.authorization.modify"), $siteComponent->getQualifierId())) {
            print " readonly='readonly'";
        }
        print " onchange='updateMinCells(this, this.nextSibling.nextSibling.nextSibling.nextSibling, {$minCells});'>";
        for ($i = 1; $i <= 10; $i++) {
            print "\n\t\t\t\t\t\t<option value='" . $i . "'";
            print $i == $siteComponent->getNumRows() ? " selected='selected'" : "";
            print $i * $siteComponent->getNumColumns() < $minCells ? " disabled='disabled'" : "";
            print ">";
            print $i;
            print "</option>";
        }
        print "\n\t\t\t\t\t</select>";
        // columns
        print "\n\t\t\t\t<span class='ui2_settingtitle'>";
        print "\n\t\t\t\t\t" . _('Columns: ') . "\n\t\t\t\t</span>";
        print "\n\t\t\t\t\t<select class='ui2_field' name='" . RequestContext::name('columns') . "'";
        print " onchange='updateMinCells(this.previousSibling.previousSibling.previousSibling.previousSibling, this, {$minCells});'>";
        for ($i = 1; $i <= 10; $i++) {
            print "\n\t\t\t\t\t\t<option value='" . $i . "'";
            print $i == $siteComponent->getNumColumns() ? " selected='selected'" : "";
            print $i * $siteComponent->getNumRows() < $minCells ? " disabled='disabled'" : "";
            print ">";
            print $i;
            print "</option>";
        }
        print "\n\t\t\t\t\t</select>";
        //print "\n\t\t\t\t</div>";
        print <<<END
\t\t\t\t<script type='text/javascript'>
\t\t\t\t/* <![CDATA[ */
\t\t\t\t
\t\t\t\t\tfunction updateMinCells(rowsElement, colsElement, minCells) {\t\t\t\t\t\t
\t\t\t\t\t\t// update the disabled status of row options
\t\t\t\t\t\tfor (var i = 0; i < rowsElement.childNodes.length; i++) {
\t\t\t\t\t\t\tif (rowsElement.childNodes[i].value * colsElement.value < minCells)
\t\t\t\t\t\t\t\trowsElement.childNodes[i].disabled = true;
\t\t\t\t\t\t\telse
\t\t\t\t\t\t\t\trowsElement.childNodes[i].disabled = false;
\t\t\t\t\t\t}
\t\t\t\t\t\t
\t\t\t\t\t\t// update the disabled status of column options
\t\t\t\t\t\tfor (var i = 0; i < colsElement.childNodes.length; i++) {
\t\t\t\t\t\t\tif (colsElement.childNodes[i].value * rowsElement.value < minCells)
\t\t\t\t\t\t\t\tcolsElement.childNodes[i].disabled = true;
\t\t\t\t\t\t\telse
\t\t\t\t\t\t\t\tcolsElement.childNodes[i].disabled = false;
\t\t\t\t\t\t}
\t\t\t\t\t}
\t\t\t\t
\t\t\t\t/* ]]> */
\t\t\t\t</script>
END;
        print "\n\t\t\t\t</td></tr>";
    }