Drop-down menu-style navigation view.

    For each primary navigation element available, a copy of the I{tab}
    pattern will be loaded from the tag.  It will have its I{href} slot
    filled with the URL for that navigation item.  It will have its I{name}
    slot filled with the user-visible name of the navigation element.  It
    will have its I{kids} slot filled with a list of secondary navigation
    for that element.

    For each secondary navigation element available beneath each primary
    navigation element, a copy of the I{subtabs} pattern will be loaded
    from the tag.  It will have its I{kids} slot filled with a self-similar
    structure.

    @type translator: L{IWebTranslator} provider
    @type navigation: L{list} of L{Tab}

    @rtype: {nevow.stan.Tag}

def startMenu(translator, navigation, tag):
    """
    Drop-down menu-style navigation view.

    For each primary navigation element available, a copy of the I{tab}
    pattern will be loaded from the tag.  It will have its I{href} slot
    filled with the URL for that navigation item.  It will have its I{name}
    slot filled with the user-visible name of the navigation element.  It
    will have its I{kids} slot filled with a list of secondary navigation
    for that element.

    For each secondary navigation element available beneath each primary
    navigation element, a copy of the I{subtabs} pattern will be loaded
    from the tag.  It will have its I{kids} slot filled with a self-similar
    structure.

    @type translator: L{IWebTranslator} provider
    @type navigation: L{list} of L{Tab}

    @rtype: {nevow.stan.Tag}
    """
    setTabURLs(navigation, translator)
    getp = IQ(tag).onePattern

    def fillSlots(tabs):
        for tab in tabs:
            if tab.children:
                kids = getp('subtabs').fillSlots('kids', fillSlots(tab.children))
            else:
                kids = ''

            yield dictFillSlots(getp('tab'), dict(href=tab.linkURL,
                                                  name=tab.name,
                                                  kids=kids))
    return tag.fillSlots('tabs', fillSlots(navigation))