var ComponentsTypeahead = function () {



    var handleTwitterTypeahead = function() {



        // Example #1

        // instantiate the bloodhound suggestion engine

        var numbers = new Bloodhound({

          datumTokenizer: function(d) { return Bloodhound.tokenizers.whitespace(d.num); },

          queryTokenizer: Bloodhound.tokenizers.whitespace,

          local: [

            { num: 'metronic' },

            { num: 'keenthemes' },

            { num: 'metronic theme' },

            { num: 'metronic template' },

            { num: 'keenthemes team' }

          ]

        });

         

        // initialize the bloodhound suggestion engine

        numbers.initialize();

         

        // instantiate the typeahead UI

        if (App.isRTL()) {

          $('#typeahead_example_1').attr("dir", "rtl");  

        }

        $('#typeahead_example_1').typeahead(null, {

          displayKey: 'num',

          hint: (App.isRTL() ? false : true),

          source: numbers.ttAdapter()

        });



        // Example #2

        var countries = new Bloodhound({

          datumTokenizer: function(d) { return Bloodhound.tokenizers.whitespace(d.name); },

          queryTokenizer: Bloodhound.tokenizers.whitespace,

          limit: 10,

          prefetch: {

            url: '../demo/typeahead_countries.json',

            filter: function(list) {

              return $.map(list, function(country) { return { name: country }; });

            }

          }

        });

 

        countries.initialize();

         

        if (App.isRTL()) {

          $('#typeahead_example_2').attr("dir", "rtl");  

        } 

        $('#typeahead_example_2').typeahead(null, {

          name: 'typeahead_example_2',

          displayKey: 'name',

          hint: (App.isRTL() ? false : true),

          source: countries.ttAdapter()

        });



        // Example #3

        var custom = new Bloodhound({

          datumTokenizer: function(d) { return d.tokens; },

          queryTokenizer: Bloodhound.tokenizers.whitespace,

          remote: '../demo/typeahead_custom.php?query=%QUERY'

        });

         

        custom.initialize();

         

        if (App.isRTL()) {

          $('#typeahead_example_3').attr("dir", "rtl");  

        }  

        $('#typeahead_example_3').typeahead(null, {

          name: 'datypeahead_example_3',

          displayKey: 'value',

          source: custom.ttAdapter(),

          hint: (App.isRTL() ? false : true),

          templates: {

            suggestion: Handlebars.compile([

              '<div class="media">',

                    '<div class="pull-left">',

                        '<div class="media-object">',

                            '<img src="{{img}}" width="50" height="50"/>',

                        '</div>',

                    '</div>',

                    '<div class="media-body">',

                        '<h4 class="media-heading">{{value}}</h4>',

                        '<p>{{desc}}</p>',

                    '</div>',

              '</div>',

            ].join(''))

          }

        });



        // Example #4



        var nba = new Bloodhound({

          datumTokenizer: function(d) { return Bloodhound.tokenizers.whitespace(d.team); },

          queryTokenizer: Bloodhound.tokenizers.whitespace,

          prefetch: '../demo/typeahead_nba.json'

        });

         

        var nhl = new Bloodhound({

          datumTokenizer: function(d) { return Bloodhound.tokenizers.whitespace(d.team); },

          queryTokenizer: Bloodhound.tokenizers.whitespace,

          prefetch: '../demo/typeahead_nhl.json'

        });

         

        nba.initialize();

        nhl.initialize();

         

        if (App.isRTL()) {

          $('#typeahead_example_4').attr("dir", "rtl");  

        }

        $('#typeahead_example_4').typeahead({

          hint: (App.isRTL() ? false : true),

          highlight: true

        },

        {

          name: 'nba',

          displayKey: 'team',

          source: nba.ttAdapter(),

          templates: {

                header: '<h3>NBA Teams</h3>'

          }

        },

        {

          name: 'nhl',

          displayKey: 'team',

          source: nhl.ttAdapter(),

          templates: {

                header: '<h3>NHL Teams</h3>'

          }

        });



    }



    var handleTwitterTypeaheadModal = function() {



        // Example #1

        // instantiate the bloodhound suggestion engine

        var numbers = new Bloodhound({

          datumTokenizer: function(d) { return Bloodhound.tokenizers.whitespace(d.num); },

          queryTokenizer: Bloodhound.tokenizers.whitespace,

          local: [

            { num: 'metronic' },

            { num: 'keenthemes' },

            { num: 'metronic theme' },

            { num: 'metronic template' },

            { num: 'keenthemes team' }

          ]

        });

         

        // initialize the bloodhound suggestion engine

        numbers.initialize();

         

        // instantiate the typeahead UI

        if (App.isRTL()) {

          $('#typeahead_example_modal_1').attr("dir", "rtl");  

        }

        $('#typeahead_example_modal_1').typeahead(null, {

          displayKey: 'num',

          hint: (App.isRTL() ? false : true),

          source: numbers.ttAdapter()

        });



        // Example #2

        var countries = new Bloodhound({

          datumTokenizer: function(d) { return Bloodhound.tokenizers.whitespace(d.name); },

          queryTokenizer: Bloodhound.tokenizers.whitespace,

          limit: 10,

          prefetch: {

            url: '../demo/typeahead_countries.json',

            filter: function(list) {

              return $.map(list, function(country) { return { name: country }; });

            }

          }

        });

 

        countries.initialize();

         

        if (App.isRTL()) {

          $('#typeahead_example_modal_2').attr("dir", "rtl");  

        }

        $('#typeahead_example_modal_2').typeahead(null, {

          name: 'typeahead_example_modal_2',

          displayKey: 'name',

          hint: (App.isRTL() ? false : true),

          source: countries.ttAdapter()

        });



        // Example #3

        var custom = new Bloodhound({

          datumTokenizer: function(d) { return d.tokens; },

          queryTokenizer: Bloodhound.tokenizers.whitespace,

          remote: '../demo/typeahead_custom.php?query=%QUERY'

        });

         

        custom.initialize();

         

        if (App.isRTL()) {

          $('#typeahead_example_modal_3').attr("dir", "rtl");  

        }

        $('#typeahead_example_modal_3').typeahead(null, {

          name: 'datypeahead_example_modal_3',

          displayKey: 'value',

          hint: (App.isRTL() ? false : true),

          source: custom.ttAdapter(),

          templates: {

            suggestion: Handlebars.compile([

              '<div class="media">',

                    '<div class="pull-left">',

                        '<div class="media-object">',

                            '<img src="{{img}}" width="50" height="50"/>',

                        '</div>',

                    '</div>',

                    '<div class="media-body">',

                        '<h4 class="media-heading">{{value}}</h4>',

                        '<p>{{desc}}</p>',

                    '</div>',

              '</div>',

            ].join(''))

          }

        });



        // Example #4



        var nba = new Bloodhound({

          datumTokenizer: function(d) { return Bloodhound.tokenizers.whitespace(d.team); },

          queryTokenizer: Bloodhound.tokenizers.whitespace,

          limit: 3,

          prefetch: '../demo/typeahead_nba.json'

        });

         

        var nhl = new Bloodhound({

          datumTokenizer: function(d) { return Bloodhound.tokenizers.whitespace(d.team); },

          queryTokenizer: Bloodhound.tokenizers.whitespace,

          limit: 3,

          prefetch: '../demo/typeahead_nhl.json'

        });

         

        nba.initialize();

        nhl.initialize();

         

        $('#typeahead_example_modal_4').typeahead({

            hint: (App.isRTL() ? false : true),

            highlight: true

        },

        {

          name: 'nba',

          displayKey: 'team',

          source: nba.ttAdapter(),

          templates: {

                header: '<h3>NBA Teams</h3>'

          }

        },

        {

          name: 'nhl',

          displayKey: 'team',

          source: nhl.ttAdapter(),

          templates: {

                header: '<h3>NHL Teams</h3>'

          }

        });



    }



    return {

        //main function to initiate the module

        init: function () {

            handleTwitterTypeahead();

            handleTwitterTypeaheadModal();

        }

    };



}();



jQuery(document).ready(function() {    

   ComponentsTypeahead.init(); 

});