text: "use strict";
  
  $(document).ready(function(){
  
  	// Single Search Select
  
      $(".js-example-basic-single").select2();
  
      $(".js-example-disabled-results").select2();
  
      // Multi Select
  
      $(".js-example-basic-multiple").select2();
  
  
  
      // With Placeholder
  
      $(".js-example-placeholder-multiple").select2({
  
          placeholder: "Select Your Name"
  
      });
  
  
  
      //Limited Numbers
  
      $(".js-example-basic-multiple-limit").select2({
  
          maximumSelectionLength: 2
  
      });
  
  
  
      // Tagging Suppoort
  
      $(".js-example-tags").select2({
  
          tags: true
  
      });
  
  
  
      // Automatic tokenization
  
      $(".js-example-tokenizer").select2({
  
          tags: true,
  
          tokenSeparators: [',', ' ']
  
      });
  
  
  
      // Loading Array Data
  
      var data = [{
  
          id: 0,
  
          text: 'enhancement'
  
      }, {
  
          id: 1,
  
          text: 'bug'
  
      }, {
  
          id: 2,
  
          text: 'duplicate'
  
      }, {
  
          id: 3,
  
          text: 'invalid'
  
      }, {
  
          id: 4,
  
          text: 'wontfix'
  
      }];
  
  
  
      $(".js-example-data-array").select2({
  
          data: data
  
      });
  
  
  
      //RTL Suppoort
  
  
  
      $(".js-example-rtl").select2({
  
          dir: "rtl"
  
      });
  
      // Diacritics support
  
      $(".js-example-diacritics").select2();
  
  
  
      // Responsive width Search Select
  
      $(".js-example-responsive").select2();
  
  
  
      $(".js-example-basic-hide-search").select2({
  
          minimumResultsForSearch: Infinity
  
      });
  
  
  
      $(".js-example-disabled").select2({
  
          disabled: true
  
      });
  
      $(".js-programmatic-enable").on("click", function() {
  
          $(".js-example-disabled").prop("disabled", false);
  
      });
  
      $(".js-programmatic-disable").on("click", function() {
  
          $(".js-example-disabled").prop("disabled", true);
  
      });
  
  
  
      $(".js-example-theme-single").select2({
  
          theme: "classic"
  
      });
  
  
  
      function formatRepo(repo) {
  
          if (repo.loading) return repo.text;
  
  
  
          var markup = "<div class='select2-result-repository clearfix'>" +
  
              "<div class='select2-result-repository__avatar'><img src='" + repo.owner.avatar_url + "' /></div>" +
  
              "<div class='select2-result-repository__meta'>" +
  
              "<div class='select2-result-repository__title'>" + repo.full_name + "</div>";
  
  
  
          if (repo.description) {
  
              markup += "<div class='select2-result-repository__description'>" + repo.description + "</div>";
  
          }
  
  
  
          markup += "<div class='select2-result-repository__statistics'>" +
  
              "<div class='select2-result-repository__forks'><i class='icofont icofont-flash'></i> " + repo.forks_count + " Forks</div>" +
  
              "<div class='select2-result-repository__stargazers'><i class='icofont icofont-star'></i> " + repo.stargazers_count + " Stars</div>" +
  
              "<div class='select2-result-repository__watchers'><i class='icofont icofont-eye-alt'></i> " + repo.watchers_count + " Watchers</div>" +
  
              "</div>" +
  
              "</div></div>";
  
  
  
          return markup;
  
      }
  
  
  
      function formatRepoSelection(repo) {
  
          return repo.full_name || repo.text;
  
      }
  
      $(".js-data-example-ajax").select2({
  
          ajax: {
  
              url: "https://api.github.com/search/repositories",
  
              dataType: 'json',
  
              delay: 250,
  
              data: function(params) {
  
                  return {
  
                      q: params.term, // search term
  
                      page: params.page
  
                  };
  
              },
  
              processResults: function(data, params) {
  
                  // parse the results into the format expected by Select2
  
                  // since we are using custom formatting functions we do not need to
  
                  // alter the remote JSON data, except to indicate that infinite
  
                  // scrolling can be used
  
                  params.page = params.page || 1;
  
  
  
                  return {
  
                      results: data.items,
  
                      pagination: {
  
                          more: (params.page * 30) < data.total_count
  
                      }
  
                  };
  
              },
  
              cache: true
  
          },
  
          escapeMarkup: function(markup) {
  
              return markup;
  
          }, // let our custom formatter work
  
          minimumInputLength: 1,
  
          templateResult: formatRepo, // omitted for brevity, see the source of this page
  
          templateSelection: formatRepoSelection // omitted for brevity, see the source of this page
  
      });
  
  
  
  	// Multi-select js start
  
  	$('#my-select').multiSelect();
  
      $('#public-methods').multiSelect();
  
      $('#select-all').on('click',function() {
  
          $('#public-methods').multiSelect('select_all');
  
          return false;
  
      });
  
      $('#deselect-all').on('click',function() {
  
          $('#public-methods').multiSelect('deselect_all');
  
          return false;
  
      });
  
      $('#select-5').on('click',function() {
  
          $('#public-methods').multiSelect('select', ['elem_1', 'elem_3', 'elem_4', 'elem_5']);
  
          return false;
  
      });
  
      $('#deselect-5').on('click',function() {
  
          $('#public-methods').multiSelect('deselect', ['elem_1', 'elem_3', 'elem_4', 'elem_5']);
  
          return false;
  
      });
  
      $('#refresh').on('click', function() {
  
          $('#public-methods').multiSelect('refresh');
  
          return false;
  
      });
  
      $('#add-option').on('click', function() {
  
          $('#public-methods').multiSelect('addOption', {
  
              value: 42,
  
              text: 'test 42',
  
              index: 0
  
          });
  
          return false;
  
      });
  
      $('#optgroup').multiSelect({
  
          selectableOptgroup: true
  
      });
  
      $('#custom-headers1').multiSelect({
  
          selectableHeader: "<div class='custom-header'>Selectable items</div>",
  
          selectionHeader: "<div class='custom-header'>Selection items</div>",
  
          selectableFooter: "<div class='custom-header'>Selectable footer</div>",
  
          selectionFooter: "<div class='custom-header'>Selection footer</div>"
  
      });
  
      // Single Select
  
      // $('#example-single').multiselect();
  
  
  
      // // Multi Select
  
      // $('#example-multiple-selected').multiselect();
  
  
  
      // // Multi Group Select
  
      // $('#example-multiple-optgroups').multiselect();
  
  
  
      // // Select all group select
  
      // $('#example-enableClickableOptGroups').multiselect({
  
      //     enableClickableOptGroups: true
  
      // });
  
  
  
      // // Disable Options Select
  
      // $('#example-enableClickableOptGroups-init').multiselect({
  
      //     enableClickableOptGroups: true
  
      // });
  
  
  
      // // Collapse group select
  
      // $('#example-enableCollapsibleOptGroups').multiselect({
  
      //     enableCollapsibleOptGroups: true
  
      // });
  
      $('.searchable').multiSelect({
  
          selectableHeader: "<input type='text' class='form-control' autocomplete='off' placeholder='try \"12\"'>",
  
          selectionHeader: "<input type='text' class='form-control' autocomplete='off' placeholder='try \"4\"'>",
  
          afterInit: function(ms) {
  
              var that = this,
  
                  $selectableSearch = that.$selectableUl.prev(),
  
                  $selectionSearch = that.$selectionUl.prev(),
  
                  selectableSearchString = '#' + that.$container.attr('id') + ' .ms-elem-selectable:not(.ms-selected)',
  
                  selectionSearchString = '#' + that.$container.attr('id') + ' .ms-elem-selection.ms-selected';
  
  
  
              that.qs1 = $selectableSearch.quicksearch(selectableSearchString)
  
                  .on('keydown', function(e) {
  
                      if (e.which === 40) {
  
                          that.$selectableUl.focus();
  
                          return false;
  
                      }
  
                  });
  
  
  
              that.qs2 = $selectionSearch.quicksearch(selectionSearchString)
  
                  .on('keydown', function(e) {
  
                      if (e.which == 40) {
  
                          that.$selectionUl.focus();
  
                          return false;
  
                      }
  
                  });
  
          },
  
          afterSelect: function() {
  
              this.qs1.cache();
  
              this.qs2.cache();
  
          },
  
          afterDeselect: function() {
  
              this.qs1.cache();
  
              this.qs2.cache();
  
          }
  
      });
  
  // Multi-select js end
  
  
  
  
  
  
  
  });