'Render the Lx-dropdowns
@param fieldname: the fieldname (to construct the HTML IDs)
@param levels: tuple of levels in order, like ("L0", "L1", ...)
@param labels: the labels for the hierarchy levels as dict {level:label}
@param required: whether selection is required,
@param multiselect: Use multiselect-dropdowns (specify "search" to
make the dropdowns searchable)
@return: a dict of components
{name: (label, widget, id, hidden)}'

def _lx_selectors(self, fieldname, levels, labels, required=False, multiselect=False):

    if (multiselect == 'search'):
        _class = 'lx-select    multiselect    search'
    elif multiselect:
        _class = 'lx-select    multiselect'
    else:
        _class = None
    selectors = {}
    hidden = True
    required_levels = self.required_levels
    for level in levels:
        _id = ('%s_%s' % (fieldname, level))
        label = labels.get(level, level)
        placeholder = ''
        widget = SELECT(OPTION(placeholder, _value=''), _id=_id, _class=_class)
        if (required or (level in required_levels)):
            widget.add_class('required')
            label = s3_required_label(label)
            if (required and (('L%s' % (int(level[1:]) - 1)) not in levels)):
                required = False
        throbber = DIV(_id=('%s__throbber' % _id), _class='throbber    hide')
        if self.labels:
            label = LABEL(label, _for=_id)
        else:
            label = ''
        selectors[level] = (label, TAG[''](widget, throbber), _id, hidden)
        hidden = self.hide_lx
    return selectors
