'Render a text input (e.g. address or postcode field)
@param fieldname: the field name (for ID construction)
@param name: the name for the input field
@param value: the initial value for the input
@param label: the label for the input
@param hidden: render hidden
@return: a tuple (label, widget, id, hidden)'

def _input(self, fieldname, name, value, label, hidden=False, _class='string'):

    input_id = ('%s_%s' % (fieldname, name))
    if self.labels:
        _label = LABEL(('%s:' % label), _for=input_id)
    else:
        _label = ''
    if self.placeholders:
        _placeholder = label
    else:
        _placeholder = None
    if isinstance(value, unicode):
        value = value.encode('utf-8')
    widget = INPUT(_name=name, _id=input_id, _class=_class, _placeholder=_placeholder, value=value)
    return (_label, widget, input_id, hidden)
