/**
 Typeahead.js input, based on [Twitter Typeahead](http://twitter.github.io/typeahead.js).
 It is mainly replacement of typeahead in Bootstrap 3.


 @class typeaheadjs
 @extends text
 @since 1.5.0
 @final
 @example
 <a href="#" id="country" data-type="typeaheadjs" data-pk="1" data-url="/post" data-title="Input country"></a>
 <script>
 $(function(){
    $('#country').editable({
        value: 'ru',
        typeahead: {
            name: 'country',
            local: [
                {value: 'ru', tokens: ['Russia']}, 
                {value: 'gb', tokens: ['Great Britain']}, 
                {value: 'us', tokens: ['United States']}
            ],
            template: function(item) {
                return item.tokens[0] + ' (' + item.value + ')'; 
            } 
        }
    });
});
 </script>
 **/
(function ($) {
    "use strict";

    var Constructor = function (options) {
        this.init('typeaheadjs', options, Constructor.defaults);
    };

    $.fn.editableutils.inherit(Constructor, $.fn.editabletypes.text);

    $.extend(Constructor.prototype, {
        render: function() {
            this.renderClear();
            this.setClass();
            this.setAttr('placeholder');
            this.$input.typeahead(this.options.typeahead);

            // copy `input-sm | input-lg` classes to placeholder input
            if($.fn.editableform.engine === 'bs3') {
                if(this.$input.hasClass('input-sm')) {
                    this.$input.siblings('input.tt-hint').addClass('input-sm');
                }
                if(this.$input.hasClass('input-lg')) {
                    this.$input.siblings('input.tt-hint').addClass('input-lg');
                }
            }
        }
    });

    Constructor.defaults = $.extend({}, $.fn.editabletypes.list.defaults, {
        /**
         @property tpl
         @default <input type="text">
         **/
        tpl:'<input type="text">',
        /**
         Configuration of typeahead itself.
         [Full list of options](https://github.com/twitter/typeahead.js#dataset).

         @property typeahead
         @type object
         @default null
         **/
        typeahead: null,
        /**
         Whether to show `clear` button

         @property clear
         @type boolean
         @default true
         **/
        clear: true
    });

    $.fn.editabletypes.typeaheadjs = Constructor;

}(window.jQuery));