create(input_id, hidden_input_id, ajax_url, data_handler = JSON.parse, options = {}) {

        for(var i in this._options) {
            if (options[i] === undefined) {
                options[i] = this._options[i];
            }
        }

        if (ajax_url.indexOf('{search}') === -1) {
            console.error('BunnyJS Autocomplete.create() error: ajax_url must contain a {search}');
            return false;
        }

        var container_id = input_id + '_autocomplete';

        var container = document.getElementById(container_id);

        if (container === null) {
            console.error('BunnyJS Autocomplete.create() error: container for input with ID "' + input_id + '_autocomplete" not found.' +
                'Input must be inside a container.');
            return false;
        }

        var input = document.getElementById(input_id);

        var default_value = input.getAttribute('value');
        if (default_value === null) {
            default_value = '';
        }

        var hidden_input = document.getElementById(hidden_input_id);

        var default_hidden_value = null;
        if (hidden_input !== null) {
            default_hidden_value = hidden_input.value;
        }

        /*var dropdown = AutocompleteMarkup.createEmptyDropdown();
        AutocompleteDecorator.decorateDropdown(dropdown, options.theme);*/

        var dropdown = null;

        this._autocompleteContainers[container_id] = {
            ajaxUrl: ajax_url,
            container: container,
            input: input,
            hiddenInput: hidden_input,
            dropdown: dropdown,
            dropdownItems: [],
            itemSelectHandlers: [],
            itemSelectHandlersCustom: [],
            defaultValue: default_value,
            defaultHiddenValue: default_hidden_value,
            dataHandler: data_handler,
            _picked: false, // is picked from list, used in blur (focus out) event
            _onFocusValue: default_value, // value on focus
            _isOpened: false,
            _currentItemIndex: null, // currently active dropdown item index of dropdownItems when navigating with up/down keys
            options: options
        };

        //container.appendChild(dropdown);

        AutocompleteController.attachInputTypeEvent(container_id, data_handler, options.ajaxHeaders);
        AutocompleteController.attachInputFocusEvent(container_id);
        AutocompleteController.attachInputOutEvent(container_id);
        AutocompleteController.attachInputKeydownEvent(container_id);

    }
@param {string} input_id
@param {string} hidden_input_id
@param {string} ajax_url
@param {object} options