var _ = require('underscore'); var $ = require('jquery'); var vent = require('vent'); var Backbone = require('backbone'); var SeriesCollection = require('../Series/SeriesCollection'); require('typeahead'); vent.on(vent.Hotkeys.NavbarSearch, function() { $('.x-series-search').focus(); }); var substringMatcher = function() { return function findMatches (q, cb) { var matches = _.select(SeriesCollection.toJSON(), function(series) { return series.title.toLowerCase().indexOf(q.toLowerCase()) > -1; }); cb(matches); }; }; $.fn.bindSearch = function() { $(this).typeahead({ hint : true, highlight : true, minLength : 1 }, { name : 'series', displayKey : 'title', source : substringMatcher() }); $(this).on('typeahead:selected typeahead:autocompleted', function(e, series) { this.blur(); $(this).val(''); Backbone.history.navigate('/series/{0}'.format(series.titleSlug), { trigger : true }); }); };