PageSourceSearch

https://pbu2020.eu/js/new.js

js pbu2020.eu collected 2026-10-02 03:39:50 UTC 50,185 bytes, 1,360 lines download raw bytes

vendor: 50,185 bytes, lines 1-1360
1/*!
2Chosen, a Select Box Enhancer for jQuery and Prototype
3by Patrick Filler for Harvest, http://getharvest.com
4
5Version 1.8.7
6Full source at https://github.com/harvesthq/chosen
7Copyright (c) 2011-2018 Harvest http://getharvest.com
8
9MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
10This file is generated by `grunt build`, do not edit it by hand.
11*/
12
13(function() {
14    var $, AbstractChosen, Chosen, SelectParser,
15      bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
16      extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
17      hasProp = {}.hasOwnProperty;
18  
19    SelectParser = (function() {
20      function SelectParser() {
21        this.options_index = 0;
22        this.parsed = [];
23      }
24  
25      SelectParser.prototype.add_node = function(child) {
26        if (child.nodeName.toUpperCase() === "OPTGROUP") {
27          return this.add_group(child);
28        } else {
29          return this.add_option(child);
30        }
31      };
32  
33      SelectParser.prototype.add_group = function(group) {
34        var group_position, i, len, option, ref, results1;
35        group_position = this.parsed.length;
36        this.parsed.push({
37          array_index: group_position,
38          group: true,
39          label: group.label,
40          title: group.title ? group.title : void 0,
41          children: 0,
42          disabled: group.disabled,
43          classes: group.className
44        });
45        ref = group.childNodes;
46        results1 = [];
47        for (i = 0, len = ref.length; i < len; i++) {
48          option = ref[i];
49          results1.push(this.add_option(option, group_position, group.disabled));
50        }
51        return results1;
52      };
53  
54      SelectParser.prototype.add_option = function(option, group_position, group_disabled) {
55        if (option.nodeName.toUpperCase() === "OPTION") {
56          if (option.text !== "") {
57            if (group_position != null) {
58              this.parsed[group_position].children += 1;
59            }
60            this.parsed.push({
61              array_index: this.parsed.length,
62              options_index: this.options_index,
63              value: option.value,
64              text: option.text,
65              html: option.innerHTML,
66              title: option.title ? option.title : void 0,
67              selected: option.selected,
68              disabled: group_disabled === true ? group_disabled : option.disabled,
69              group_array_index: group_position,
70              group_label: group_position != null ? this.parsed[group_position].label : null,
71              classes: option.className,
72              style: option.style.cssText
73            });
74          } else {
75            this.parsed.push({
76              array_index: this.parsed.length,
77              options_index: this.options_index,
78              empty: true
79            });
80          }
81          return this.options_index += 1;
82        }
83      };
84  
85      return SelectParser;
86  
87    })();
88  
89    SelectParser.select_to_array = function(select) {
90      var child, i, len, parser, ref;
91      parser = new SelectParser();
92      ref = select.childNodes;
93      for (i = 0, len = ref.length; i < len; i++) {
94        child = ref[i];
95        parser.add_node(child);
96      }
97      return parser.parsed;
98    };
99  
100    AbstractChosen = (function() {
101      function AbstractChosen(form_field, options1) {
102        this.form_field = form_field;
103        this.options = options1 != null ? options1 : {};
104        this.label_click_handler = bind(this.label_click_handler, this);
105        if (!AbstractChosen.browser_is_supported()) {
106          return;
107        }
108        this.is_multiple = this.form_field.multiple;
109        this.set_default_text();
110        this.set_default_values();
111        this.setup();
112        this.set_up_html();
113        this.register_observers();
114        this.on_ready();
115      }
116  
117      AbstractChosen.prototype.set_default_values = function() {
118        this.click_test_action = (function(_this) {
119          return function(evt) {
120            return _this.test_active_click(evt);
121          };
122        })(this);
123        this.activate_action = (function(_this) {
124          return function(evt) {
125            return _this.activate_field(evt);
126          };
127        })(this);
128        this.active_field = false;
129        this.mouse_on_container = false;
130        this.results_showing = false;
131        this.result_highlighted = null;
132        this.is_rtl = this.options.rtl || /\bchosen-rtl\b/.test(this.form_field.className);
133        this.allow_single_deselect = (this.options.allow_single_deselect != null) && (this.form_field.options[0] != null) && this.form_field.options[0].text === "" ? this.options.allow_single_deselect : false;
134        this.disable_search_threshold = this.options.disable_search_threshold || 0;
135        this.disable_search = this.options.disable_search || false;
136        this.enable_split_word_search = this.options.enable_split_word_search != null ? this.options.enable_split_word_search : true;
137        this.group_search = this.options.group_search != null ? this.options.group_search : true;
138        this.search_contains = this.options.search_contains || false;
139        this.single_backstroke_delete = this.options.single_backstroke_delete != null ? this.options.single_backstroke_delete : true;
140        this.max_selected_options = this.options.max_selected_options || Infinity;
141        this.inherit_select_classes = this.options.inherit_select_classes || false;
142        this.display_selected_options = this.options.display_selected_options != null ? this.options.display_selected_options : true;
143        this.display_disabled_options = this.options.display_disabled_options != null ? this.options.display_disabled_options : true;
144        this.include_group_label_in_selected = this.options.include_group_label_in_selected || false;
145        this.max_shown_results = this.options.max_shown_results || Number.POSITIVE_INFINITY;
146        this.case_sensitive_search = this.options.case_sensitive_search || false;
147        return this.hide_results_on_select = this.options.hide_results_on_select != null ? this.options.hide_results_on_select : true;
148      };
149  
150      AbstractChosen.prototype.set_default_text = function() {
151        if (this.form_field.getAttribute("data-placeholder")) {
152          this.default_text = this.form_field.getAttribute("data-placeholder");
153        } else if (this.is_multiple) {
154          this.default_text = this.options.placeholder_text_multiple || this.options.placeholder_text || AbstractChosen.default_multiple_text;
155        } else {
156          this.default_text = this.options.placeholder_text_single || this.options.placeholder_text || AbstractChosen.default_single_text;
157        }
158        this.default_text = this.escape_html(this.default_text);
159        return this.results_none_found = this.form_field.getAttribute("data-no_results_text") || this.options.no_results_text || AbstractChosen.default_no_result_text;
160      };
161  
162      AbstractChosen.prototype.choice_label = function(item) {
163        if (this.include_group_label_in_selected && (item.group_label != null)) {
164          return "<b class='group-name'>" + (this.escape_html(item.group_label)) + "</b>" + item.html;
165        } else {
166          return item.html;
167        }
168      };
169  
170      AbstractChosen.prototype.mouse_enter = function() {
171        return this.mouse_on_container = true;
172      };
173  
174      AbstractChosen.prototype.mouse_leave = function() {
175        return this.mouse_on_container = false;
176      };
177  
178      AbstractChosen.prototype.input_focus = function(evt) {
179        if (this.is_multiple) {
180          if (!this.active_field) {
181            return setTimeout(((function(_this) {
182              return function() {
183                return _this.container_mousedown();
184              };
185            })(this)), 50);
186          }
187        } else {
188          if (!this.active_field) {
189            return this.activate_field();
190          }
191        }
192      };
193  
194      AbstractChosen.prototype.input_blur = function(evt) {
195        if (!this.mouse_on_container) {
196          this.active_field = false;
197          return setTimeout(((function(_this) {
198            return function() {
199              return _this.blur_test();
200            };
201          })(this)), 100);
202        }
203      };
204  
205      AbstractChosen.prototype.label_click_handler = function(evt) {
206        if (this.is_multiple) {
207          return this.container_mousedown(evt);
208        } else {
209          return this.activate_field();
210        }
211      };
212  
213      AbstractChosen.prototype.results_option_build = function(options) {
214        var content, data, data_content, i, len, ref, shown_results;
215        content = '';
216        shown_results = 0;
217        ref = this.results_data;
218        for (i = 0, len = ref.length; i < len; i++) {
219          data = ref[i];
220          data_content = '';
221          if (data.group) {
222            data_content = this.result_add_group(data);
223          } else {
224            data_content = this.result_add_option(data);
225          }
226          if (data_content !== '') {
227            shown_results++;
228            content += data_content;
229          }
230          if (options != null ? options.first : void 0) {
231            if (data.selected && this.is_multiple) {
232              this.choice_build(data);
233            } else if (data.selected && !this.is_multiple) {
234              this.single_set_selected_text(this.choice_label(data));
235            }
236          }
237          if (shown_results >= this.max_shown_results) {
238            break;
239          }
240        }
241        return content;
242      };
243  
244      AbstractChosen.prototype.result_add_option = function(option) {
245        var classes, option_el;
246        if (!option.search_match) {
247          return '';
248        }
249        if (!this.include_option_in_results(option)) {
250          return '';
251        }
252        classes = [];
253        if (!option.disabled && !(option.selected && this.is_multiple)) {
254          classes.push("active-result");
255        }
256        if (option.disabled && !(option.selected && this.is_multiple)) {
257          classes.push("disabled-result");
258        }
259        if (option.selected) {
260          classes.push("result-selected");
261        }
262        if (option.group_array_index != null) {
263          classes.push("group-option");
264        }
265        if (option.classes !== "") {
266          classes.push(option.classes);
267        }
268        option_el = document.createElement("li");
269        option_el.className = classes.join(" ");
270        if (option.style) {
271          option_el.style.cssText = option.style;
272        }
273        option_el.setAttribute("data-option-array-index", option.array_index);
274        option_el.innerHTML = option.highlighted_html || option.html;
275        if (option.title) {
276          option_el.title = option.title;
277        }
278        return this.outerHTML(option_el);
279      };
280  
281      AbstractChosen.prototype.result_add_group = function(group) {
282        var classes, group_el;
283        if (!(group.search_match || group.group_match)) {
284          return '';
285        }
286        if (!(group.active_options > 0)) {
287          return '';
288        }
289        classes = [];
290        classes.push("group-result");
291        if (group.classes) {
292          classes.push(group.classes);
293        }
294        group_el = document.createElement("li");
295        group_el.className = classes.join(" ");
296        group_el.innerHTML = group.highlighted_html || this.escape_html(group.label);
297        if (group.title) {
298          group_el.title = group.title;
299        }
300        return this.outerHTML(group_el);
301      };
302  
303      AbstractChosen.prototype.results_update_field = function() {
304        this.set_default_text();
305        if (!this.is_multiple) {
306          this.results_reset_cleanup();
307        }
308        this.result_clear_highlight();
309        this.results_build();
310        if (this.results_showing) {
311          return this.winnow_results();
312        }
313      };
314  
315      AbstractChosen.prototype.reset_single_select_options = function() {
316        var i, len, ref, result, results1;
317        ref = this.results_data;
318        results1 = [];
319        for (i = 0, len = ref.length; i < len; i++) {
320          result = ref[i];
321          if (result.selected) {
322            results1.push(result.selected = false);
323          } else {
324            results1.push(void 0);
325          }
326        }
327        return results1;
328      };
329  
330      AbstractChosen.prototype.results_toggle = function() {
331        if (this.results_showing) {
332          return this.results_hide();
333        } else {
334          return this.results_show();
335        }
336      };
337  
338      AbstractChosen.prototype.results_search = function(evt) {
339        if (this.results_showing) {
340          return this.winnow_results();
341        } else {
342          return this.results_show();
343        }
344      };
345  
346      AbstractChosen.prototype.winnow_results = function(options) {
347        var escapedQuery, fix, i, len, option, prefix, query, ref, regex, results, results_group, search_match, startpos, suffix, text;
348        this.no_results_clear();
349        results = 0;
350        query = this.get_search_text();
351        escapedQuery = query.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
352        regex = this.get_search_regex(escapedQuery);
353        ref = this.results_data;
354        for (i = 0, len = ref.length; i < len; i++) {
355          option = ref[i];
356          option.search_match = false;
357          results_group = null;
358          search_match = null;
359          option.highlighted_html = '';
360          if (this.include_option_in_results(option)) {
361            if (option.group) {
362              option.group_match = false;
363              option.active_options = 0;
364            }
365            if ((option.group_array_index != null) && this.results_data[option.group_array_index]) {
366              results_group = this.results_data[option.group_array_index];
367              if (results_group.active_options === 0 && results_group.search_match) {
368                results += 1;
369              }
370              results_group.active_options += 1;
371            }
372            text = option.group ? option.label : option.text;
373            if (!(option.group && !this.group_search)) {
374              search_match = this.search_string_match(text, regex);
375              option.search_match = search_match != null;
376              if (option.search_match && !option.group) {
377                results += 1;
378              }
379              if (option.search_match) {
380                if (query.length) {
381                  startpos = search_match.index;
382                  prefix = text.slice(0, startpos);
383                  fix = text.slice(startpos, startpos + query.length);
384                  suffix = text.slice(startpos + query.length);
385                  option.highlighted_html = (this.escape_html(prefix)) + "<em>" + (this.escape_html(fix)) + "</em>" + (this.escape_html(suffix));
386                }
387                if (results_group != null) {
388                  results_group.group_match = true;
389                }
390              } else if ((option.group_array_index != null) && this.results_data[option.group_array_index].search_match) {
391                option.search_match = true;
392              }
393            }
394          }
395        }
396        this.result_clear_highlight();
397        if (results < 1 && query.length) {
398          this.update_results_content("");
399          return this.no_results(query);
400        } else {
401          this.update_results_content(this.results_option_build());
402          if (!(options != null ? options.skip_highlight : void 0)) {
403            return this.winnow_results_set_highlight();
404          }
405        }
406      };
407  
408      AbstractChosen.prototype.get_search_regex = function(escaped_search_string) {
409        var regex_flag, regex_string;
410        regex_string = this.search_contains ? escaped_search_string : "(^|\\s|\\b)" + escaped_search_string + "[^\\s]*";
411        if (!(this.enable_split_word_search || this.search_contains)) {
412          regex_string = "^" + regex_string;
413        }
414        regex_flag = this.case_sensitive_search ? "" : "i";
415        return new RegExp(regex_string, regex_flag);
416      };
417  
418      AbstractChosen.prototype.search_string_match = function(search_string, regex) {
419        var match;
420        match = regex.exec(search_string);
421        if (!this.search_contains && (match != null ? match[1] : void 0)) {
422          match.index += 1;
423        }
424        return match;
425      };
426  
427      AbstractChosen.prototype.choices_count = function() {
428        var i, len, option, ref;
429        if (this.selected_option_count != null) {
430          return this.selected_option_count;
431        }
432        this.selected_option_count = 0;
433        ref = this.form_field.options;
434        for (i = 0, len = ref.length; i < len; i++) {
435          option = ref[i];
436          if (option.selected) {
437            this.selected_option_count += 1;
438          }
439        }
440        return this.selected_option_count;
441      };
442  
443      AbstractChosen.prototype.choices_click = function(evt) {
444        evt.preventDefault();
445        this.activate_field();
446        if (!(this.results_showing || this.is_disabled)) {
447          return this.results_show();
448        }
449      };
450  
451      AbstractChosen.prototype.keydown_checker = function(evt) {
452        var ref, stroke;
453        stroke = (ref = evt.which) != null ? ref : evt.keyCode;
454        this.search_field_scale();
455        if (stroke !== 8 && this.pending_backstroke) {
456          this.clear_backstroke();
457        }
458        switch (stroke) {
459          case 8:
460            this.backstroke_length = this.get_search_field_value().length;
461            break;
462          case 9:
463            if (this.results_showing && !this.is_multiple) {
464              this.result_select(evt);
465            }
466            this.mouse_on_container = false;
467            break;
468          case 13:
469            if (this.results_showing) {
470              evt.preventDefault();
471            }
472            break;
473          case 27:
474            if (this.results_showing) {
475              evt.preventDefault();
476            }
477            break;
478          case 32:
479            if (this.disable_search) {
480              evt.preventDefault();
481            }
482            break;
483          case 38:
484            evt.preventDefault();
485            this.keyup_arrow();
486            break;
487          case 40:
488            evt.preventDefault();
489            this.keydown_arrow();
490            break;
491        }
492      };
493  
494      AbstractChosen.prototype.keyup_checker = function(evt) {
495        var ref, stroke;
496        stroke = (ref = evt.which) != null ? ref : evt.keyCode;
497        this.search_field_scale();
498        switch (stroke) {
499          case 8:
500            if (this.is_multiple && this.backstroke_length < 1 && this.choices_count() > 0) {
501              this.keydown_backstroke();
502            } else if (!this.pending_backstroke) {
503              this.result_clear_highlight();
504              this.results_search();
505            }
506            break;
507          case 13:
508            evt.preventDefault();
509            if (this.results_showing) {
510              this.result_select(evt);
511            }
512            break;
513          case 27:
514            if (this.results_showing) {
515              this.results_hide();
516            }
517            break;
518          case 9:
519          case 16:
520          case 17:
521          case 18:
522          case 38:
523          case 40:
524          case 91:
525            break;
526          default:
527            this.results_search();
528            break;
529        }
530      };
531  
532      AbstractChosen.prototype.clipboard_event_checker = function(evt) {
533        if (this.is_disabled) {
534          return;
535        }
536        return setTimeout(((function(_this) {
537          return function() {
538            return _this.results_search();
539          };
540        })(this)), 50);
541      };
542  
543      AbstractChosen.prototype.container_width = function() {
544        if (this.options.width != null) {
545          return this.options.width;
546        } else {
547          return this.form_field.offsetWidth + "px";
548        }
549      };
550  
551      AbstractChosen.prototype.include_option_in_results = function(option) {
552        if (this.is_multiple && (!this.display_selected_options && option.selected)) {
553          return false;
554        }
555        if (!this.display_disabled_options && option.disabled) {
556          return false;
557        }
558        if (option.empty) {
559          return false;
560        }
561        return true;
562      };
563  
564      AbstractChosen.prototype.search_results_touchstart = function(evt) {
565        this.touch_started = true;
566        return this.search_results_mouseover(evt);
567      };
568  
569      AbstractChosen.prototype.search_results_touchmove = function(evt) {
570        this.touch_started = false;
571        return this.search_results_mouseout(evt);
572      };
573  
574      AbstractChosen.prototype.search_results_touchend = function(evt) {
575        if (this.touch_started) {
576          return this.search_results_mouseup(evt);
577        }
578      };
579  
580      AbstractChosen.prototype.outerHTML = function(element) {
581        var tmp;
582        if (element.outerHTML) {
583          return element.outerHTML;
584        }
585        tmp = document.createElement("div");
586        tmp.appendChild(element);
587        return tmp.innerHTML;
588      };
589  
590      AbstractChosen.prototype.get_single_html = function() {
591        return "<a class=\"chosen-single chosen-default\">\n  <span>" + this.default_text + "</span>\n  <div><b></b></div>\n</a>\n<div class=\"chosen-drop\">\n  <div class=\"chosen-search\">\n    <input class=\"chosen-search-input\" type=\"text\" autocomplete=\"off\" />\n  </div>\n  <ul class=\"chosen-results\"></ul>\n</div>";
592      };
593  
594      AbstractChosen.prototype.get_multi_html = function() {
595        return "<ul class=\"chosen-choices\">\n  <li class=\"search-field\">\n    <input class=\"chosen-search-input\" type=\"text\" autocomplete=\"off\" value=\"" + this.default_text + "\" />\n  </li>\n</ul>\n<div class=\"chosen-drop\">\n  <ul class=\"chosen-results\"></ul>\n</div>";
596      };
597  
598      AbstractChosen.prototype.get_no_results_html = function(terms) {
599        return "<li class=\"no-results\">\n  " + this.results_none_found + " <span>" + (this.escape_html(terms)) + "</span>\n</li>";
600      };
601  
602      AbstractChosen.browser_is_supported = function() {
603        if ("Microsoft Internet Explorer" === window.navigator.appName) {
604          return document.documentMode >= 8;
605        }
606        if (/iP(od|hone)/i.test(window.navigator.userAgent) || /IEMobile/i.test(window.navigator.userAgent) || /Windows Phone/i.test(window.navigator.userAgent) || /BlackBerry/i.test(window.navigator.userAgent) || /BB10/i.test(window.navigator.userAgent) || /Android.*Mobile/i.test(window.navigator.userAgent)) {
607          return false;
608        }
609        return true;
610      };
611  
612      AbstractChosen.default_multiple_text = "Select Some Options";
613  
614      AbstractChosen.default_single_text = "Select an Option";
615  
616      AbstractChosen.default_no_result_text = "No results match";
617  
618      return AbstractChosen;
619  
620    })();
621  
622    $ = jQuery;
623  
624    $.fn.extend({
625      chosen: function(options) {
626        if (!AbstractChosen.browser_is_supported()) {
627          return this;
628        }
629        return this.each(function(input_field) {
630          var $this, chosen;
631          $this = $(this);
632          chosen = $this.data('chosen');
633          if (options === 'destroy') {
634            if (chosen instanceof Chosen) {
635              chosen.destroy();
636            }
637            return;
638          }
639          if (!(chosen instanceof Chosen)) {
640            $this.data('chosen', new Chosen(this, options));
641          }
642        });
643      }
644    });
645  
646    Chosen = (function(superClass) {
647      extend(Chosen, superClass);
648  
649      function Chosen() {
650        return Chosen.__super__.constructor.apply(this, arguments);
651      }
652  
653      Chosen.prototype.setup = function() {
654        this.form_field_jq = $(this.form_field);
655        return this.current_selectedIndex = this.form_field.selectedIndex;
656      };
657  
658      Chosen.prototype.set_up_html = function() {
659        var container_classes, container_props;
660        container_classes = ["chosen-container"];
661        container_classes.push("chosen-container-" + (this.is_multiple ? "multi" : "single"));
662        if (this.inherit_select_classes && this.form_field.className) {
663          container_classes.push(this.form_field.className);
664        }
665        if (this.is_rtl) {
666          container_classes.push("chosen-rtl");
667        }
668        container_props = {
669          'class': container_classes.join(' '),
670          'title': this.form_field.title
671        };
672        if (this.form_field.id.length) {
673          container_props.id = this.form_field.id.replace(/[^\w]/g, '_') + "_chosen";
674        }
675        this.container = $("<div />", container_props);
676        this.container.width(this.container_width());
677        if (this.is_multiple) {
678          this.container.html(this.get_multi_html());
679        } else {
680          this.container.html(this.get_single_html());
681        }
682        this.form_field_jq.hide().after(this.container);
683        this.dropdown = this.container.find('div.chosen-drop').first();
684        this.search_field = this.container.find('input').first();
685        this.search_results = this.container.find('ul.chosen-results').first();
686        this.search_field_scale();
687        this.search_no_results = this.container.find('li.no-results').first();
688        if (this.is_multiple) {
689          this.search_choices = this.container.find('ul.chosen-choices').first();
690          this.search_container = this.container.find('li.search-field').first();
691        } else {
692          this.search_container = this.container.find('div.chosen-search').first();
693          this.selected_item = this.container.find('.chosen-single').first();
694        }
695        this.results_build();
696        this.set_tab_index();
697        return this.set_label_behavior();
698      };
699  
700      Chosen.prototype.on_ready = function() {
701        return this.form_field_jq.trigger("chosen:ready", {
702          chosen: this
703        });
704      };
705  
706      Chosen.prototype.register_observers = function() {
707        this.container.on('touchstart.chosen', (function(_this) {
708          return function(evt) {
709            _this.container_mousedown(evt);
710          };
711        })(this));
712        this.container.on('touchend.chosen', (function(_this) {
713          return function(evt) {
714            _this.container_mouseup(evt);
715          };
716        })(this));
717        this.container.on('mousedown.chosen', (function(_this) {
718          return function(evt) {
719            _this.container_mousedown(evt);
720          };
721        })(this));
722        this.container.on('mouseup.chosen', (function(_this) {
723          return function(evt) {
724            _this.container_mouseup(evt);
725          };
726        })(this));
727        this.container.on('mouseenter.chosen', (function(_this) {
728          return function(evt) {
729            _this.mouse_enter(evt);
730          };
731        })(this));
732        this.container.on('mouseleave.chosen', (function(_this) {
733          return function(evt) {
734            _this.mouse_leave(evt);
735          };
736        })(this));
737        this.search_results.on('mouseup.chosen', (function(_this) {
738          return function(evt) {
739            _this.search_results_mouseup(evt);
740          };
741        })(this));
742        this.search_results.on('mouseover.chosen', (function(_this) {
743          return function(evt) {
744            _this.search_results_mouseover(evt);
745          };
746        })(this));
747        this.search_results.on('mouseout.chosen', (function(_this) {
748          return function(evt) {
749            _this.search_results_mouseout(evt);
750          };
751        })(this));
752        this.search_results.on('mousewheel.chosen DOMMouseScroll.chosen', (function(_this) {
753          return function(evt) {
754            _this.search_results_mousewheel(evt);
755          };
756        })(this));
757        this.search_results.on('touchstart.chosen', (function(_this) {
758          return function(evt) {
759            _this.search_results_touchstart(evt);
760          };
761        })(this));
762        this.search_results.on('touchmove.chosen', (function(_this) {
763          return function(evt) {
764            _this.search_results_touchmove(evt);
765          };
766        })(this));
767        this.search_results.on('touchend.chosen', (function(_this) {
768          return function(evt) {
769            _this.search_results_touchend(evt);
770          };
771        })(this));
772        this.form_field_jq.on("chosen:updated.chosen", (function(_this) {
773          return function(evt) {
774            _this.results_update_field(evt);
775          };
776        })(this));
777        this.form_field_jq.on("chosen:activate.chosen", (function(_this) {
778          return function(evt) {
779            _this.activate_field(evt);
780          };
781        })(this));
782        this.form_field_jq.on("chosen:open.chosen", (function(_this) {
783          return function(evt) {
784            _this.container_mousedown(evt);
785          };
786        })(this));
787        this.form_field_jq.on("chosen:close.chosen", (function(_this) {
788          return function(evt) {
789            _this.close_field(evt);
790          };
791        })(this));
792        this.search_field.on('blur.chosen', (function(_this) {
793          return function(evt) {
794            _this.input_blur(evt);
795          };
796        })(this));
797        this.search_field.on('keyup.chosen', (function(_this) {
798          return function(evt) {
799            _this.keyup_checker(evt);
800          };
801        })(this));
802        this.search_field.on('keydown.chosen', (function(_this) {
803          return function(evt) {
804            _this.keydown_checker(evt);
805          };
806        })(this));
807        this.search_field.on('focus.chosen', (function(_this) {
808          return function(evt) {
809            _this.input_focus(evt);
810          };
811        })(this));
812        this.search_field.on('cut.chosen', (function(_this) {
813          return function(evt) {
814            _this.clipboard_event_checker(evt);
815          };
816        })(this));
817        this.search_field.on('paste.chosen', (function(_this) {
818          return function(evt) {
819            _this.clipboard_event_checker(evt);
820          };
821        })(this));
822        if (this.is_multiple) {
823          return this.search_choices.on('click.chosen', (function(_this) {
824            return function(evt) {
825              _this.choices_click(evt);
826            };
827          })(this));
828        } else {
829          return this.container.on('click.chosen', function(evt) {
830            evt.preventDefault();
831          });
832        }
833      };
834  
835      Chosen.prototype.destroy = function() {
836        $(this.container[0].ownerDocument).off('click.chosen', this.click_test_action);
837        if (this.form_field_label.length > 0) {
838          this.form_field_label.off('click.chosen');
839        }
840        if (this.search_field[0].tabIndex) {
841          this.form_field_jq[0].tabIndex = this.search_field[0].tabIndex;
842        }
843        this.container.remove();
844        this.form_field_jq.removeData('chosen');
845        return this.form_field_jq.show();
846      };
847  
848      Chosen.prototype.search_field_disabled = function() {
849        this.is_disabled = this.form_field.disabled || this.form_field_jq.parents('fieldset').is(':disabled');
850        this.container.toggleClass('chosen-disabled', this.is_disabled);
851        this.search_field[0].disabled = this.is_disabled;
852        if (!this.is_multiple) {
853          this.selected_item.off('focus.chosen', this.activate_field);
854        }
855        if (this.is_disabled) {
856          return this.close_field();
857        } else if (!this.is_multiple) {
858          return this.selected_item.on('focus.chosen', this.activate_field);
859        }
860      };
861  
862      Chosen.prototype.container_mousedown = function(evt) {
863        var ref;
864        if (this.is_disabled) {
865          return;
866        }
867        if (evt && ((ref = evt.type) === 'mousedown' || ref === 'touchstart') && !this.results_showing) {
868          evt.preventDefault();
869        }
870        if (!((evt != null) && ($(evt.target)).hasClass("search-choice-close"))) {
871          if (!this.active_field) {
872            if (this.is_multiple) {
873              this.search_field.val("");
874            }
875            $(this.container[0].ownerDocument).on('click.chosen', this.click_test_action);
876            this.results_show();
877          } else if (!this.is_multiple && evt && (($(evt.target)[0] === this.selected_item[0]) || $(evt.target).parents("a.chosen-single").length)) {
878            evt.preventDefault();
879            this.results_toggle();
880          }
881          return this.activate_field();
882        }
883      };
884  
885      Chosen.prototype.container_mouseup = function(evt) {
886        if (evt.target.nodeName === "ABBR" && !this.is_disabled) {
887          return this.results_reset(evt);
888        }
889      };
890  
891      Chosen.prototype.search_results_mousewheel = function(evt) {
892        var delta;
893        if (evt.originalEvent) {
894          delta = evt.originalEvent.deltaY || -evt.originalEvent.wheelDelta || evt.originalEvent.detail;
895        }
896        if (delta != null) {
897          evt.preventDefault();
898          if (evt.type === 'DOMMouseScroll') {
899            delta = delta * 40;
900          }
901          return this.search_results.scrollTop(delta + this.search_results.scrollTop());
902        }
903      };
904  
905      Chosen.prototype.blur_test = function(evt) {
906        if (!this.active_field && this.container.hasClass("chosen-container-active")) {
907          return this.close_field();
908        }
909      };
910  
911      Chosen.prototype.close_field = function() {
912        $(this.container[0].ownerDocument).off("click.chosen", this.click_test_action);
913        this.active_field = false;
914        this.results_hide();
915        this.container.removeClass("chosen-container-active");
916        this.clear_backstroke();
917        this.show_search_field_default();
918        this.search_field_scale();
919        return this.search_field.blur();
920      };
921  
922      Chosen.prototype.activate_field = function() {
923        if (this.is_disabled) {
924          return;
925        }
926        this.container.addClass("chosen-container-active");
927        this.active_field = true;
928        this.search_field.val(this.search_field.val());
929        return this.search_field.focus();
930      };
931  
932      Chosen.prototype.test_active_click = function(evt) {
933        var active_container;
934        active_container = $(evt.target).closest('.chosen-container');
935        if (active_container.length && this.container[0] === active_container[0]) {
936          return this.active_field = true;
937        } else {
938          return this.close_field();
939        }
940      };
941  
942      Chosen.prototype.results_build = function() {
943        this.parsing = true;
944        this.selected_option_count = null;
945        this.results_data = SelectParser.select_to_array(this.form_field);
946        if (this.is_multiple) {
947          this.search_choices.find("li.search-choice").remove();
948        } else {
949          this.single_set_selected_text();
950          if (this.disable_search || this.form_field.options.length <= this.disable_search_threshold) {
951            this.search_field[0].readOnly = true;
952            this.container.addClass("chosen-container-single-nosearch");
953          } else {
954            this.search_field[0].readOnly = false;
955            this.container.removeClass("chosen-container-single-nosearch");
956          }
957        }
958        this.update_results_content(this.results_option_build({
959          first: true
960        }));
961        this.search_field_disabled();
962        this.show_search_field_default();
963        this.search_field_scale();
964        return this.parsing = false;
965      };
966  
967      Chosen.prototype.result_do_highlight = function(el) {
968        var high_bottom, high_top, maxHeight, visible_bottom, visible_top;
969        if (el.length) {
970          this.result_clear_highlight();
971          this.result_highlight = el;
972          this.result_highlight.addClass("highlighted");
973          maxHeight = parseInt(this.search_results.css("maxHeight"), 10);
974          visible_top = this.search_results.scrollTop();
975          visible_bottom = maxHeight + visible_top;
976          high_top = this.result_highlight.position().top + this.search_results.scrollTop();
977          high_bottom = high_top + this.result_highlight.outerHeight();
978          if (high_bottom >= visible_bottom) {
979            return this.search_results.scrollTop((high_bottom - maxHeight) > 0 ? high_bottom - maxHeight : 0);
980          } else if (high_top < visible_top) {
981            return this.search_results.scrollTop(high_top);
982          }
983        }
984      };
985  
986      Chosen.prototype.result_clear_highlight = function() {
987        if (this.result_highlight) {
988          this.result_highlight.removeClass("highlighted");
989        }
990        return this.result_highlight = null;
991      };
992  
993      Chosen.prototype.results_show = function() {
994        if (this.is_multiple && this.max_selected_options <= this.choices_count()) {
995          this.form_field_jq.trigger("chosen:maxselected", {
996            chosen: this
997          });
998          return false;
999        }
1000        this.container.addClass("chosen-with-drop");
1001        this.results_showing = true;
1002        this.search_field.focus();
1003        this.search_field.val(this.get_search_field_value());
1004        this.winnow_results();
1005        return this.form_field_jq.trigger("chosen:showing_dropdown", {
1006          chosen: this
1007        });
1008      };
1009  
1010      Chosen.prototype.update_results_content = function(content) {
1011        return this.search_results.html(content);
1012      };
1013  
1014      Chosen.prototype.results_hide = function() {
1015        if (this.results_showing) {
1016          this.result_clear_highlight();
1017          this.container.removeClass("chosen-with-drop");
1018          this.form_field_jq.trigger("chosen:hiding_dropdown", {
1019            chosen: this
1020          });
1021        }
1022        return this.results_showing = false;
1023      };
1024  
1025      Chosen.prototype.set_tab_index = function(el) {
1026        var ti;
1027        if (this.form_field.tabIndex) {
1028          ti = this.form_field.tabIndex;
1029          this.form_field.tabIndex = -1;
1030          return this.search_field[0].tabIndex = ti;
1031        }
1032      };
1033  
1034      Chosen.prototype.set_label_behavior = function() {
1035        this.form_field_label = this.form_field_jq.parents("label");
1036        if (!this.form_field_label.length && this.form_field.id.length) {
1037          this.form_field_label = $("label[for='" + this.form_field.id + "']");
1038        }
1039        if (this.form_field_label.length > 0) {
1040          return this.form_field_label.on('click.chosen', this.label_click_handler);
1041        }
1042      };
1043  
1044      Chosen.prototype.show_search_field_default = function() {
1045        if (this.is_multiple && this.choices_count() < 1 && !this.active_field) {
1046          this.search_field.val(this.default_text);
1047          return this.search_field.addClass("default");
1048        } else {
1049          this.search_field.val("");
1050          return this.search_field.removeClass("default");
1051        }
1052      };
1053  
1054      Chosen.prototype.search_results_mouseup = function(evt) {
1055        var target;
1056        target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first();
1057        if (target.length) {
1058          this.result_highlight = target;
1059          this.result_select(evt);
1060          return this.search_field.focus();
1061        }
1062      };
1063  
1064      Chosen.prototype.search_results_mouseover = function(evt) {
1065        var target;
1066        target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first();
1067        if (target) {
1068          return this.result_do_highlight(target);
1069        }
1070      };
1071  
1072      Chosen.prototype.search_results_mouseout = function(evt) {
1073        if ($(evt.target).hasClass("active-result") || $(evt.target).parents('.active-result').first()) {
1074          return this.result_clear_highlight();
1075        }
1076      };
1077  
1078      Chosen.prototype.choice_build = function(item) {
1079        var choice, close_link;
1080        choice = $('<li />', {
1081          "class": "search-choice"
1082        }).html("<span>" + (this.choice_label(item)) + "</span>");
1083        if (item.disabled) {
1084          choice.addClass('search-choice-disabled');
1085        } else {
1086          close_link = $('<a />', {
1087            "class": 'search-choice-close',
1088            'data-option-array-index': item.array_index
1089          });
1090          close_link.on('click.chosen', (function(_this) {
1091            return function(evt) {
1092              return _this.choice_destroy_link_click(evt);
1093            };
1094          })(this));
1095          choice.append(close_link);
1096        }
1097        return this.search_container.before(choice);
1098      };
1099  
1100      Chosen.prototype.choice_destroy_link_click = function(evt) {
1101        evt.preventDefault();
1102        evt.stopPropagation();
1103        if (!this.is_disabled) {
1104          return this.choice_destroy($(evt.target));
1105        }
1106      };
1107  
1108      Chosen.prototype.choice_destroy = function(link) {
1109        if (this.result_deselect(link[0].getAttribute("data-option-array-index"))) {
1110          if (this.active_field) {
1111            this.search_field.focus();
1112          } else {
1113            this.show_search_field_default();
1114          }
1115          if (this.is_multiple && this.choices_count() > 0 && this.get_search_field_value().length < 1) {
1116            this.results_hide();
1117          }
1118          link.parents('li').first().remove();
1119          return this.search_field_scale();
1120        }
1121      };
1122  
1123      Chosen.prototype.results_reset = function() {
1124        this.reset_single_select_options();
1125        this.form_field.options[0].selected = true;
1126        this.single_set_selected_text();
1127        this.show_search_field_default();
1128        this.results_reset_cleanup();
1129        this.trigger_form_field_change();
1130        if (this.active_field) {
1131          return this.results_hide();
1132        }
1133      };
1134  
1135      Chosen.prototype.results_reset_cleanup = function() {
1136        this.current_selectedIndex = this.form_field.selectedIndex;
1137        return this.selected_item.find("abbr").remove();
1138      };
1139  
1140      Chosen.prototype.result_select = function(evt) {
1141        var high, item;
1142        if (this.result_highlight) {
1143          high = this.result_highlight;
1144          this.result_clear_highlight();
1145          if (this.is_multiple && this.max_selected_options <= this.choices_count()) {
1146            this.form_field_jq.trigger("chosen:maxselected", {
1147              chosen: this
1148            });
1149            return false;
1150          }
1151          if (this.is_multiple) {
1152            high.removeClass("active-result");
1153          } else {
1154            this.reset_single_select_options();
1155          }
1156          high.addClass("result-selected");
1157          item = this.results_data[high[0].getAttribute("data-option-array-index")];
1158          item.selected = true;
1159          this.form_field.options[item.options_index].selected = true;
1160          this.selected_option_count = null;
1161          if (this.is_multiple) {
1162            this.choice_build(item);
1163          } else {
1164            this.single_set_selected_text(this.choice_label(item));
1165          }
1166          if (this.is_multiple && (!this.hide_results_on_select || (evt.metaKey || evt.ctrlKey))) {
1167            if (evt.metaKey || evt.ctrlKey) {
1168              this.winnow_results({
1169                skip_highlight: true
1170              });
1171            } else {
1172              this.search_field.val("");
1173              this.winnow_results();
1174            }
1175          } else {
1176            this.results_hide();
1177            this.show_search_field_default();
1178          }
1179          if (this.is_multiple || this.form_field.selectedIndex !== this.current_selectedIndex) {
1180            this.trigger_form_field_change({
1181              selected: this.form_field.options[item.options_index].value
1182            });
1183          }
1184          this.current_selectedIndex = this.form_field.selectedIndex;
1185          evt.preventDefault();
1186          return this.search_field_scale();
1187        }
1188      };
1189  
1190      Chosen.prototype.single_set_selected_text = function(text) {
1191        if (text == null) {
1192          text = this.default_text;
1193        }
1194        if (text === this.default_text) {
1195          this.selected_item.addClass("chosen-default");
1196        } else {
1197          this.single_deselect_control_build();
1198          this.selected_item.removeClass("chosen-default");
1199        }
1200        return this.selected_item.find("span").html(text);
1201      };
1202  
1203      Chosen.prototype.result_deselect = function(pos) {
1204        var result_data;
1205        result_data = this.results_data[pos];
1206        if (!this.form_field.options[result_data.options_index].disabled) {
1207          result_data.selected = false;
1208          this.form_field.options[result_data.options_index].selected = false;
1209          this.selected_option_count = null;
1210          this.result_clear_highlight();
1211          if (this.results_showing) {
1212            this.winnow_results();
1213          }
1214          this.trigger_form_field_change({
1215            deselected: this.form_field.options[result_data.options_index].value
1216          });
1217          this.search_field_scale();
1218          return true;
1219        } else {
1220          return false;
1221        }
1222      };
1223  
1224      Chosen.prototype.single_deselect_control_build = function() {
1225        if (!this.allow_single_deselect) {
1226          return;
1227        }
1228        if (!this.selected_item.find("abbr").length) {
1229          this.selected_item.find("span").first().after("<abbr class=\"search-choice-close\"></abbr>");
1230        }
1231        return this.selected_item.addClass("chosen-single-with-deselect");
1232      };
1233  
1234      Chosen.prototype.get_search_field_value = function() {
1235        return this.search_field.val();
1236      };
1237  
1238      Chosen.prototype.get_search_text = function() {
1239        return $.trim(this.get_search_field_value());
1240      };
1241  
1242      Chosen.prototype.escape_html = function(text) {
1243        return $('<div/>').text(text).html();
1244      };
1245  
1246      Chosen.prototype.winnow_results_set_highlight = function() {
1247        var do_high, selected_results;
1248        selected_results = !this.is_multiple ? this.search_results.find(".result-selected.active-result") : [];
1249        do_high = selected_results.length ? selected_results.first() : this.search_results.find(".active-result").first();
1250        if (do_high != null) {
1251          return this.result_do_highlight(do_high);
1252        }
1253      };
1254  
1255      Chosen.prototype.no_results = function(terms) {
1256        var no_results_html;
1257        no_results_html = this.get_no_results_html(terms);
1258        this.search_results.append(no_results_html);
1259        return this.form_field_jq.trigger("chosen:no_results", {
1260          chosen: this
1261        });
1262      };
1263  
1264      Chosen.prototype.no_results_clear = function() {
1265        return this.search_results.find(".no-results").remove();
1266      };
1267  
1268      Chosen.prototype.keydown_arrow = function() {
1269        var next_sib;
1270        if (this.results_showing && this.result_highlight) {
1271          next_sib = this.result_highlight.nextAll("li.active-result").first();
1272          if (next_sib) {
1273            return this.result_do_highlight(next_sib);
1274          }
1275        } else {
1276          return this.results_show();
1277        }
1278      };
1279  
1280      Chosen.prototype.keyup_arrow = function() {
1281        var prev_sibs;
1282        if (!this.results_showing && !this.is_multiple) {
1283          return this.results_show();
1284        } else if (this.result_highlight) {
1285          prev_sibs = this.result_highlight.prevAll("li.active-result");
1286          if (prev_sibs.length) {
1287            return this.result_do_highlight(prev_sibs.first());
1288          } else {
1289            if (this.choices_count() > 0) {
1290              this.results_hide();
1291            }
1292            return this.result_clear_highlight();
1293          }
1294        }
1295      };
1296  
1297      Chosen.prototype.keydown_backstroke = function() {
1298        var next_available_destroy;
1299        if (this.pending_backstroke) {
1300          this.choice_destroy(this.pending_backstroke.find("a").first());
1301          return this.clear_backstroke();
1302        } else {
1303          next_available_destroy = this.search_container.siblings("li.search-choice").last();
1304          if (next_available_destroy.length && !next_available_destroy.hasClass("search-choice-disabled")) {
1305            this.pending_backstroke = next_available_destroy;
1306            if (this.single_backstroke_delete) {
1307              return this.keydown_backstroke();
1308            } else {
1309              return this.pending_backstroke.addClass("search-choice-focus");
1310            }
1311          }
1312        }
1313      };
1314  
1315      Chosen.prototype.clear_backstroke = function() {
1316        if (this.pending_backstroke) {
1317          this.pending_backstroke.removeClass("search-choice-focus");
1318        }
1319        return this.pending_backstroke = null;
1320      };
1321  
1322      Chosen.prototype.search_field_scale = function() {
1323        var div, i, len, style, style_block, styles, width;
1324        if (!this.is_multiple) {
1325          return;
1326        }
1327        style_block = {
1328          position: 'absolute',
1329          left: '-1000px',
1330          top: '-1000px',
1331          display: 'none',
1332          whiteSpace: 'pre'
1333        };
1334        styles = ['fontSize', 'fontStyle', 'fontWeight', 'fontFamily', 'lineHeight', 'textTransform', 'letterSpacing'];
1335        for (i = 0, len = styles.length; i < len; i++) {
1336          style = styles[i];
1337          style_block[style] = this.search_field.css(style);
1338        }
1339        div = $('<div />').css(style_block);
1340        div.text(this.get_search_field_value());
1341        $('body').append(div);
1342        width = div.width() + 25;
1343        div.remove();
1344        if (this.container.is(':visible')) {
1345          width = Math.min(this.container.outerWidth() - 10, width);
1346        }
1347        return this.search_field.width(width);
1348      };
1349  
1350      Chosen.prototype.trigger_form_field_change = function(extra) {
1351        this.form_field_jq.trigger("input", extra);
1352        return this.form_field_jq.trigger("change", extra);
1353      };
1354  
1355      return Chosen;
1356  
1357    })(AbstractChosen);
1358  
1359  }).call(this);
1360  

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.