function renderNewSLBItemForm($realm1, $realm2)
{
    /**
     * Returns a list of values, a human readable name and options
     * for the selecttag for a given realm.
     */
    function get_realm_data($realm)
    {
        $name = NULL;
        $list = array();
        $options = array();
        switch ($realm) {
            case 'object':
                $name = 'Load balancer';
                $list = getNarrowObjectList('IPV4LB_LISTSRC');
                $options = array('name' => 'object_id');
                break;
            case 'ipv4vs':
                $name = 'Virtual service';
                $list = formatEntityList(listCells('ipv4vs'));
                $options = array('name' => 'vs_id');
                break;
            case 'ipv4rspool':
                $name = 'RS pool';
                $list = formatEntityList(listCells('ipv4rspool'));
                $options = array('name' => 'pool_id');
                break;
            default:
                throw new InvalidArgException('realm', $realm);
        }
        return array('name' => $name, 'list' => $list, 'options' => $options);
    }
    $realm1_data = get_realm_data($realm1);
    $realm2_data = get_realm_data($realm2);
    startPortlet('Add new');
    echo "<table cellspacing=0 cellpadding=5 align=center>";
    if (count($realm1_data['list']) && count($realm2_data['list'])) {
        printOpFormIntro('addLB');
    }
    echo "<tr valign=top><th class=tdright>{$realm1_data['name']}</th><td class=tdleft>";
    printSelect($realm1_data['list'], $realm1_data['options']);
    echo '</td><td class=tdcenter valign=middle rowspan=2>';
    if (count($realm1_data['list']) && count($realm2_data['list'])) {
        printImageHREF('ADD', 'Configure LB', TRUE);
    } else {
        $names = array();
        if (!count($realm1_data['list'])) {
            $names[] = 'a ' . $realm1_data['name'];
        }
        if (!count($realm2_data['list'])) {
            $names[] = 'a ' . $realm2_data['name'];
        }
        $message = 'Please create ' . implode(' and ', $names) . '.';
        showNotice($message);
        printImageHREF('DENIED', $message, FALSE);
    }
    echo "<tr valign=top><th class=tdright>{$realm2_data['name']}</th><td class=tdleft>";
    printSelect($realm2_data['list'], $realm2_data['options']);
    echo "</td></tr>\n";
    echo "<tr><th class=tdright>VS config</th><td colspan=2><textarea name=vsconfig rows=10 cols=80></textarea></td></tr>";
    echo "<tr><th class=tdright>RS config</th><td colspan=2><textarea name=rsconfig rows=10 cols=80></textarea></td></tr>";
    echo "<tr><th class=tdright>Priority</th><td class=tdleft colspan=2><input name=prio size=10></td></tr>";
    echo "</form></table>\n";
    finishPortlet();
}
function renderNewTripletForm($realm1, $realm2)
{
    function get_realm_data($realm)
    {
        $name = NULL;
        $list = array();
        $options = array();
        switch ($realm) {
            case 'object':
                $name = 'Load balancer';
                $list = getNarrowObjectList('IPV4LB_LISTSRC');
                $options = array('name' => 'object_id');
                break;
            case 'ipvs':
                $name = 'Virtual service';
                $list = formatEntityList(listCells('ipvs'));
                $options = array('name' => 'vs_id');
                break;
            case 'ipv4rspool':
                $name = 'RS pool';
                $list = formatEntityList(listCells('ipv4rspool'));
                $options = array('name' => 'rspool_id');
                break;
            default:
                throw new InvalidArgException('realm', $realm);
        }
        return array('name' => $name, 'list' => $list, 'options' => $options);
    }
    $realm1_data = get_realm_data($realm1);
    $realm2_data = get_realm_data($realm2);
    startPortlet('Add new VS group');
    if (count($realm1_data['list']) && count($realm2_data['list'])) {
        printOpFormIntro('addLink');
    }
    echo "<table cellspacing=0 cellpadding=5 align=center>";
    echo "<tr valign=top><th class=tdright>{$realm1_data['name']}</th><td class=tdleft>";
    printSelect($realm1_data['list'], $realm1_data['options']);
    echo '</td><td class=tdcenter valign=middle rowspan=2>';
    if (count($realm1_data['list']) && count($realm2_data['list'])) {
        printImageHREF('ADD', 'Configure LB', TRUE);
    } else {
        $names = array();
        if (!count($realm1_data['list'])) {
            $names[] = 'a ' . $realm1_data['name'];
        }
        if (!count($realm2_data['list'])) {
            $names[] = 'a ' . $realm2_data['name'];
        }
        $message = 'Please create ' . implode(' and ', $names) . '.';
        showNotice($message);
        printImageHREF('DENIED', $message, FALSE);
    }
    echo "<tr valign=top><th class=tdright>{$realm2_data['name']}</th><td class=tdleft>";
    printSelect($realm2_data['list'], $realm2_data['options']);
    echo "</td></tr>\n";
    echo "</table></form>\n";
    finishPortlet();
}