(function() {
    function showOptionsList(_input) {
        let ol = $(_input).next('.data-option-list');
        if(ol.length && !ol.is(':visible')) {
            ol.show();
        }
    }
    function hideOptionsList(_input) {
        let ol = $(_input).next('.data-option-list');
        if(ol.length && ol.is(':visible')) {
            ol.hide();
        }
    }
    function init() {
        $(document)
            .off('mousedown.option-list', '.data-option-list>div')
            .on('mousedown.option-list', '.data-option-list>div', function() {
                $(this).parent().prev('input[data-option-list]').val('').focus();
                document.execCommand('insertText', false, $(this).text());
                $(this).closest('.data-option-list').hide();
                return false;
            });
        $(document)
            .off('click.trigger-option-list', 'input[data-option-list]')
            .on('click.trigger-option-list', 'input[data-option-list]', function() {
                showOptionsList(this);
            })
            .off('focus.trigger-option-list', 'input[data-option-list]')
            .on('focus.trigger-option-list', 'input[data-option-list]', function() {
                showOptionsList(this);
            })
            .off('blur.trigger-option-list', 'input[data-option-list]')
            .on('blur.trigger-option-list', 'input[data-option-list]', function() {
                hideOptionsList(this);
            });
    }
    addMCInitializer('option-list', init);
})();
