/*! UIkit 2.27.2 | www.getuikit.com | © 2014 YOOtheme | MIT License */ (function(addon) {

var component;

if (window.UIkit) {
    component = addon(UIkit);
}

if (typeof define == 'function' && define.amd) {
    define('uikit-search', ['uikit'], function(){
        return component || addon(UIkit);
    });
}

})(function(UI){

"use strict";

UI.component('search', {
    defaults: {
        msgResultsHeader   : 'Search Results',
        msgMoreResults     : 'More Results',
        msgNoResults       : 'No results found',
        template           : '<ul class="uk-nav uk-nav-search uk-autocomplete-results">\
                                  {{#msgResultsHeader}}<li class="uk-nav-header uk-skip">{{msgResultsHeader}}</li>{{/msgResultsHeader}}\
                                  {{#items && items.length}}\
                                      {{~items}}\
                                      <li data-url="{{!$item.url}}">\
                                          <a href="{{!$item.url}}">\
                                              {{{$item.title}}}\
                                              {{#$item.text}}<div>{{{$item.text}}}</div>{{/$item.text}}\
                                          </a>\
                                      </li>\
                                      {{/items}}\
                                      {{#msgMoreResults}}\
                                          <li class="uk-nav-divider uk-skip"></li>\
                                          <li class="uk-search-moreresults" data-moreresults="true"><a href="#" onclick="jQuery(this).closest(\'form\').submit();">{{msgMoreResults}}</a></li>\
                                      {{/msgMoreResults}}\
                                  {{/end}}\
                                  {{^items.length}}\
                                    {{#msgNoResults}}<li class="uk-skip"><a>{{msgNoResults}}</a></li>{{/msgNoResults}}\
                                  {{/end}}\
                              </ul>',

        renderer: function(data) {

            var opts = this.options;

            this.dropdown.append(this.template({items:data.results || [], msgResultsHeader:opts.msgResultsHeader, msgMoreResults: opts.msgMoreResults, msgNoResults: opts.msgNoResults}));
            this.show();
        }
    },

    boot: function() {

        // init code
        UI.$html.on('focus.search.uikit', '[data-uk-search]', function(e) {
            var ele =UI.$(this);

            if (!ele.data('search')) {
                UI.search(ele, UI.Utils.options(ele.attr('data-uk-search')));
            }
        });
    },

    init: function() {
        var $this = this;

        this.autocomplete = UI.autocomplete(this.element, this.options);

        this.autocomplete.dropdown.addClass('uk-dropdown-search');

        this.autocomplete.input.on("keyup", function(){
            $this.element[$this.autocomplete.input.val() ? 'addClass':'removeClass']('uk-active');
        }).closest("form").on("reset", function(){
            $this.value = '';
            $this.element.removeClass('uk-active');
        });

        this.on('selectitem.uk.autocomplete', function(e, data) {
            if (data.url) {
              location.href = data.url;
            } else if(data.moreresults) {
              $this.autocomplete.input.closest('form').submit();
            }
        });

        this.element.data('search', this);
    }
});

});