PageSourceSearch

https://danielandrescorreaposadacirujano.com/wp-content/plugins/do…/codestar/assets/js/plugins.js?ver=13:53

js danielandrescorreaposadacirujano.com collected 2026-09-24 13:30:51 UTC 66,638 bytes, 2,092 lines download raw bytes

1/**
2*
3* jQuery Chosen AJAX Autocomplete Library
4*
5* https://github.com/meltingice/ajax-chosen
6* https://github.com/michaelperrin/ajax-chosen
7*
8* MIT License
9*
10* Customized by Codestar
11*
12*/
13(function($) {
14
15  function CSFAjaxChosen(element, options) {
16    this.element = $(element);
17    this.options = options;
18    this.init();
19  };
20
21  CSFAjaxChosen.prototype.init = function() {
22    this.element.chosen(this.options);
23    this.container    = this.element.next('.chosen-container');
24    this.search_field = this.container.find('.chosen-search-input');
25    this.is_multiple  = this.container.hasClass('chosen-container-multi');
26    this.is_typing    = false;
27    this.chosenXhr    = null;
28    this.events();
29  };
30
31  CSFAjaxChosen.prototype.events = function() {
32
33    var _this = this;
34
35    this.search_field.on('compositionstart', function() {
36      _this.is_typing = true;
37    });
38
39    this.search_field.on('compositionend', function() {
40      _this.is_typing = false;
41      _this.update_list();
42    });
43
44    this.search_field.on('keyup', function() {
45      _this.update_list();
46    });
47
48    this.search_field.on('focus', function() {
49      _this.search_field_focused();
50    });
51
52  };
53
54  CSFAjaxChosen.prototype.search_field_focused = function() {
55    this.search_welcome_message();
56    if ( this.options.min_length === 0 && this.search_field.val().length === 0 ) {
57      this.update_list();
58    }
59  };
60
61  CSFAjaxChosen.prototype.search_welcome_message = function() {
62
63    var value   = $.trim(this.search_field.val());
64    var results = this.container.find('.chosen-results');
65
66    if ( results.children().length === 0 && value.length === 0 ) {
67      results.html('<li class="no-results">' + this.options.typing_text.replace('%s', this.options.min_length - value.length) + '</li>');
68    }
69
70  };
71
72  CSFAjaxChosen.prototype.update_list = function() {
73
74    var _this = this;
75
76    this.search_welcome_message();
77
78    if ( this.is_typing ) { return; }
79
80    var value   = $.trim(this.search_field.val());
81    var message = ( value.length < this.options.min_length ) ? this.options.typing_text.replace('%s', this.options.min_length - value.length) : this.options.searching_text;
82
83    this.container.find('.no-results').text(message);
84
85    if ( value === this.search_field.data('prevVal') ) { return; }
86
87    this.search_field.data('prevVal', value);
88
89    if (this.timer) {
90      clearTimeout(this.timer);
91    }
92
93    if ( value.length < this.options.min_length ) { return; }
94
95    this.timer = setTimeout( function() {
96
97      if ( _this.chosenXhr ) {
98        _this.chosenXhr.abort();
99      }
100
101      _this.options.data['term'] = value;
102
103      _this.chosenXhr = window.wp.ajax.post('csf-chosen', _this.options.data).done( function( response ) {
104        _this.show_results( response );
105      }).fail( function( response ) {
106        _this.container.find('.no-results').text(response.error);
107      });
108
109    }, this.options.type_delay );
110
111  };
112
113  CSFAjaxChosen.prototype.show_results = function( items ) {
114
115    var _this = this;
116
117    if ( this.is_typing || items === null ) { return; }
118
119    if ( items.length === 0 ) {
120      this.element.data().chosen.no_results_clear();
121      this.element.data().chosen.no_results(this.search_field.val());
122      return;
123    }
124
125    var selected_values = [];
126
127    this.element.find('option').each(function() {
128      if ( $(this).is(':selected') ) {
129        selected_values.push( $(this).val() + "-" + $(this).text() );
130      } else {
131        if( $(this).attr('value').length ) {
132          $(this).remove();
133        }
134      }
135    });
136
137    $.each(items, function(i, item) {
138      if ( $.inArray( item.value + "-" + item.text, selected_values ) === -1 ) {
139        $('<option />').attr('value', item.value).html(item.text).appendTo(_this.element);
140      }
141    });
142
143    var value_before_trigger = this.search_field.val();
144    var width_before_trigger = this.search_field.innerWidth();
145
146    this.element.trigger('chosen:updated');
147
148    if( this.is_multiple ) {
149
150      var $hidden_select = this.element.parent().find('.csf-hide-select');
151      var $hidden_value  = $hidden_select.val() || [];
152
153      this.element.CSFChosenOrder($hidden_value, true);
154      this.search_field.css('width', width_before_trigger);
155
156    }
157
158    this.search_field.val(value_before_trigger);
159
160    if ( this.chosenXhr.done !== null ) {
161      this.chosenXhr.done(items);
162    }
163
164  };
165
166  $.fn.CSFAjaxChosen = function(chosenOptions) {
167    return this.each(function() {
168      new CSFAjaxChosen(this, chosenOptions);
169    });
170  };
171
172})(jQuery);
173;// Chosen Order v1.2.1
174// This plugin allows you to handle the order of the selection for Chosen multiple <select> dropdowns
175// Full source at https://github.com/tristanjahier/chosen-order
176// Copyright (c) 2013 - Tristan Jahier, http://tristan-jahier.fr
177(function() {
178  var $, CSFAbstractChosenOrder, _ref,
179    __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },
180    __hasProp = {}.hasOwnProperty,
181    __extends = 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; };
182
183  CSFAbstractChosenOrder = (function() {
184
185    function CSFAbstractChosenOrder() {}
186
187    CSFAbstractChosenOrder.insertAt = function(node, index, parentNode) {
188      return parentNode.insertBefore(node, parentNode.children[index].nextSibling);
189    };
190
191    CSFAbstractChosenOrder.getFlattenedOptionsAndGroups = function(select) {
192      var flattened_options, opt, options, sub_opt, sub_options, _i, _j, _len, _len1;
193      options = Array.prototype.filter.call(select.childNodes, function(o) {
194        var _ref;
195        return (_ref = o.nodeName.toUpperCase()) === 'OPTION' || _ref === 'OPTGROUP';
196      });
197      flattened_options = [];
198      for (_i = 0, _len = options.length; _i < _len; _i++) {
199        opt = options[_i];
200        flattened_options.push(opt);
201        if (opt.nodeName.toUpperCase() === 'OPTGROUP') {
202          sub_options = Array.prototype.filter.call(opt.childNodes, function(o) {
203            return o.nodeName.toUpperCase() === 'OPTION';
204          });
205          for (_j = 0, _len1 = sub_options.length; _j < _len1; _j++) {
206            sub_opt = sub_options[_j];
207            flattened_options.push(sub_opt);
208          }
209        }
210      }
211      return flattened_options;
212    };
213
214    CSFAbstractChosenOrder.isValidMultipleSelectElement = function(element) {
215      return element !== null && typeof element !== "undefined" && element.nodeName === "SELECT" && element.multiple;
216    };
217
218    CSFAbstractChosenOrder.getChosenUIContainer = function(select) {
219      if (select.id !== "") {
220        return document.getElementById(select.id.replace(/-/g, "_") + "_chosen");
221      } else {
222        return this.searchChosenUIContainer(select);
223      }
224    };
225
226    CSFAbstractChosenOrder.isChosenified = function(select) {
227      return this.getChosenUIContainer(select) != null;
228    };
229
230    CSFAbstractChosenOrder.forceSelection = function(select, selection) {
231      var i, opt, options, _ref;
232      options = this.getFlattenedOptionsAndGroups(select);
233      i = 0;
234      while (i < options.length) {
235        opt = options[i];
236        if (_ref = opt.getAttribute("value"), __indexOf.call(selection, _ref) >= 0) {
237          opt.selected = true;
238          opt.setAttribute("selected", "");
239        } else {
240          opt.selected = false;
241          opt.removeAttribute("selected");
242        }
243        i++;
244      }
245      return this.triggerEvent(select, "chosen:updated");
246    };
247
248    CSFAbstractChosenOrder.CSFChosenOrder = function(select, order, force) {
249      var chosen_choices, chosen_options, chosen_ui, i, j, opt, opt_val, option, options, rel, relAttributeName, _i, _j, _len, _len1, _results;
250      if (this.getDOMElement != null) {
251        select = this.getDOMElement(select);
252      }
253      if (!this.isValidMultipleSelectElement(select)) {
254        return;
255      }
256      chosen_ui = this.getChosenUIContainer(select);
257      if (chosen_ui == null) {
258        return;
259      }
260      if (order instanceof Array) {
261        order = order.map(Function.prototype.call, String.prototype.trim);
262        options = this.getFlattenedOptionsAndGroups(select);
263        if ((force != null) && force === true) {
264          this.forceSelection(select, order);
265        }
266        _results = [];
267        for (i = _i = 0, _len = order.length; _i < _len; i = ++_i) {
268          opt_val = order[i];
269          rel = null;
270          for (j = _j = 0, _len1 = options.length; _j < _len1; j = ++_j) {
271            opt = options[j];
272            if (opt.value === opt_val) {
273              rel = j;
274            }
275          }
276          chosen_options = chosen_ui.querySelectorAll('.search-choice');
277          relAttributeName = this.relAttributeName;
278          option = Array.prototype.filter.call(chosen_options, function(o) {
279            return o.querySelector("a.search-choice-close[" + relAttributeName + "=\"" + rel + "\"]") != null;
280          })[0];
281          if (option == null) {
282            continue;
283          }
284          chosen_choices = chosen_ui.querySelector("ul.chosen-choices");
285          _results.push(this.insertAt(option, i, chosen_ui.querySelector('ul.chosen-choices')));
286        }
287        return _results;
288      } else {
289        return;
290      }
291    };
292
293    return CSFAbstractChosenOrder;
294
295  })();
296
297  $ = jQuery;
298
299  $.fn.extend({
300    CSFChosenOrder: function(order, force) {
301      return _CSFChosenOrder.CSFChosenOrder(this, order, force);
302    }
303  });
304
305  this._CSFChosenOrder = (function(_super) {
306    __extends(_CSFChosenOrder, _super);
307
308    function _CSFChosenOrder() {
309      _ref = _CSFChosenOrder.__super__.constructor.apply(this, arguments);
310      return _ref;
311    }
312
313    _CSFChosenOrder.relAttributeName = 'data-option-array-index';
314
315    _CSFChosenOrder.isjQueryObject = function(obj) {
316      return (typeof jQuery !== "undefined" && jQuery !== null) && obj instanceof jQuery;
317    };
318
319    _CSFChosenOrder.getDOMElement = function(element) {
320      if (this.isjQueryObject(element)) {
321        return element.get(0);
322      } else {
323        return element;
324      }
325    };
326
327    _CSFChosenOrder.searchChosenUIContainer = function(element) {
328      if ($(element).data("chosen") != null) {
329        return $(element).data("chosen").container[0];
330      } else {
331        return $(element).next(".chosen-container.chosen-container-multi").get(0);
332      }
333    };
334
335    _CSFChosenOrder.triggerEvent = function(target, event_name) {
336      return $(target).trigger(event_name);
337    };
338
339    return _CSFChosenOrder;
340
341  })(CSFAbstractChosenOrder);
342
343}).call(this);
344;
vendor: 47,117 bytes, lines 344-1690
344(function() {
345  var $, AbstractChosen, Chosen, SelectParser,
346    bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
347    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; },
348    hasProp = {}.hasOwnProperty;
349
350  SelectParser = (function() {
351    function SelectParser() {
352      this.options_index = 0;
353      this.parsed = [];
354    }
355
356    SelectParser.prototype.add_node = function(child) {
357      if (child.nodeName.toUpperCase() === "OPTGROUP") {
358        return this.add_group(child);
359      } else {
360        return this.add_option(child);
361      }
362    };
363
364    SelectParser.prototype.add_group = function(group) {
365      var group_position, i, len, option, ref, results1;
366      group_position = this.parsed.length;
367      this.parsed.push({
368        array_index: group_position,
369        group: true,
370        label: group.label,
371        title: group.title ? group.title : void 0,
372        children: 0,
373        disabled: group.disabled,
374        classes: group.className
375      });
376      ref = group.childNodes;
377      results1 = [];
378      for (i = 0, len = ref.length; i < len; i++) {
379        option = ref[i];
380        results1.push(this.add_option(option, group_position, group.disabled));
381      }
382      return results1;
383    };
384
385    SelectParser.prototype.add_option = function(option, group_position, group_disabled) {
386      if (option.nodeName.toUpperCase() === "OPTION") {
387        if (option.text !== "") {
388          if (group_position != null) {
389            this.parsed[group_position].children += 1;
390          }
391          this.parsed.push({
392            array_index: this.parsed.length,
393            options_index: this.options_index,
394            value: option.value,
395            text: option.text,
396            html: option.innerHTML,
397            title: option.title ? option.title : void 0,
398            selected: option.selected,
399            disabled: group_disabled === true ? group_disabled : option.disabled,
400            group_array_index: group_position,
401            group_label: group_position != null ? this.parsed[group_position].label : null,
402            classes: option.className,
403            style: option.style.cssText
404          });
405        } else {
406          this.parsed.push({
407            array_index: this.parsed.length,
408            options_index: this.options_index,
409            empty: true
410          });
411        }
412        return this.options_index += 1;
413      }
414    };
415
416    return SelectParser;
417
418  })();
419
420  SelectParser.select_to_array = function(select) {
421    var child, i, len, parser, ref;
422    parser = new SelectParser();
423    ref = select.childNodes;
424    for (i = 0, len = ref.length; i < len; i++) {
425      child = ref[i];
426      parser.add_node(child);
427    }
428    return parser.parsed;
429  };
430
431  AbstractChosen = (function() {
432    function AbstractChosen(form_field, options1) {
433      this.form_field = form_field;
434      this.options = options1 != null ? options1 : {};
435      this.label_click_handler = bind(this.label_click_handler, this);
436      if (!AbstractChosen.browser_is_supported()) {
437        return;
438      }
439      this.is_multiple = this.form_field.multiple;
440      this.set_default_text();
441      this.set_default_values();
442      this.setup();
443      this.set_up_html();
444      this.register_observers();
445      this.on_ready();
446    }
447
448    AbstractChosen.prototype.set_default_values = function() {
449      this.click_test_action = (function(_this) {
450        return function(evt) {
451          return _this.test_active_click(evt);
452        };
453      })(this);
454      this.activate_action = (function(_this) {
455        return function(evt) {
456          return _this.activate_field(evt);
457        };
458      })(this);
459      this.active_field = false;
460      this.mouse_on_container = false;
461      this.results_showing = false;
462      this.result_highlighted = null;
463      this.is_rtl = this.options.rtl || /\bchosen-rtl\b/.test(this.form_field.className);
464      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;
465      this.disable_search_threshold = this.options.disable_search_threshold || 0;
466      this.disable_search = this.options.disable_search || false;
467      this.enable_split_word_search = this.options.enable_split_word_search != null ? this.options.enable_split_word_search : true;
468      this.group_search = this.options.group_search != null ? this.options.group_search : true;
469      this.search_contains = this.options.search_contains || false;
470      this.single_backstroke_delete = this.options.single_backstroke_delete != null ? this.options.single_backstroke_delete : true;
471      this.max_selected_options = this.options.max_selected_options || Infinity;
472      this.inherit_select_classes = this.options.inherit_select_classes || false;
473      this.display_selected_options = this.options.display_selected_options != null ? this.options.display_selected_options : true;
474      this.display_disabled_options = this.options.display_disabled_options != null ? this.options.display_disabled_options : true;
475      this.include_group_label_in_selected = this.options.include_group_label_in_selected || false;
476      this.max_shown_results = this.options.max_shown_results || Number.POSITIVE_INFINITY;
477      this.case_sensitive_search = this.options.case_sensitive_search || false;
478      return this.hide_results_on_select = this.options.hide_results_on_select != null ? this.options.hide_results_on_select : true;
479    };
480
481    AbstractChosen.prototype.set_default_text = function() {
482      if (this.form_field.getAttribute("data-placeholder")) {
483        this.default_text = this.form_field.getAttribute("data-placeholder");
484      } else if (this.is_multiple) {
485        this.default_text = this.options.placeholder_text_multiple || this.options.placeholder_text || AbstractChosen.default_multiple_text;
486      } else {
487        this.default_text = this.options.placeholder_text_single || this.options.placeholder_text || AbstractChosen.default_single_text;
488      }
489      this.default_text = this.escape_html(this.default_text);
490      return this.results_none_found = this.form_field.getAttribute("data-no_results_text") || this.options.no_results_text || AbstractChosen.default_no_result_text;
491    };
492
493    AbstractChosen.prototype.choice_label = function(item) {
494      if (this.include_group_label_in_selected && (item.group_label != null)) {
495        return "<b class='group-name'>" + (this.escape_html(item.group_label)) + "</b>" + item.html;
496      } else {
497        return item.html;
498      }
499    };
500
501    AbstractChosen.prototype.mouse_enter = function() {
502      return this.mouse_on_container = true;
503    };
504
505    AbstractChosen.prototype.mouse_leave = function() {
506      return this.mouse_on_container = false;
507    };
508
509    AbstractChosen.prototype.input_focus = function(evt) {
510      if (this.is_multiple) {
511        if (!this.active_field) {
512          return setTimeout(((function(_this) {
513            return function() {
514              return _this.container_mousedown();
515            };
516          })(this)), 50);
517        }
518      } else {
519        if (!this.active_field) {
520          return this.activate_field();
521        }
522      }
523    };
524
525    AbstractChosen.prototype.input_blur = function(evt) {
526      if (!this.mouse_on_container) {
527        this.active_field = false;
528        return setTimeout(((function(_this) {
529          return function() {
530            return _this.blur_test();
531          };
532        })(this)), 100);
533      }
534    };
535
536    AbstractChosen.prototype.label_click_handler = function(evt) {
537      if (this.is_multiple) {
538        return this.container_mousedown(evt);
539      } else {
540        return this.activate_field();
541      }
542    };
543
544    AbstractChosen.prototype.results_option_build = function(options) {
545      var content, data, data_content, i, len, ref, shown_results;
546      content = '';
547      shown_results = 0;
548      ref = this.results_data;
549      for (i = 0, len = ref.length; i < len; i++) {
550        data = ref[i];
551        data_content = '';
552        if (data.group) {
553          data_content = this.result_add_group(data);
554        } else {
555          data_content = this.result_add_option(data);
556        }
557        if (data_content !== '') {
558          shown_results++;
559          content += data_content;
560        }
561        if (options != null ? options.first : void 0) {
562          if (data.selected && this.is_multiple) {
563            this.choice_build(data);
564          } else if (data.selected && !this.is_multiple) {
565            this.single_set_selected_text(this.choice_label(data));
566          }
567        }
568        if (shown_results >= this.max_shown_results) {
569          break;
570        }
571      }
572      return content;
573    };
574
575    AbstractChosen.prototype.result_add_option = function(option) {
576      var classes, option_el;
577      if (!option.search_match) {
578        return '';
579      }
580      if (!this.include_option_in_results(option)) {
581        return '';
582      }
583      classes = [];
584      if (!option.disabled && !(option.selected && this.is_multiple)) {
585        classes.push("active-result");
586      }
587      if (option.disabled && !(option.selected && this.is_multiple)) {
588        classes.push("disabled-result");
589      }
590      if (option.selected) {
591        classes.push("result-selected");
592      }
593      if (option.group_array_index != null) {
594        classes.push("group-option");
595      }
596      if (option.classes !== "") {
597        classes.push(option.classes);
598      }
599      option_el = document.createElement("li");
600      option_el.className = classes.join(" ");
601      if (option.style) {
602        option_el.style.cssText = option.style;
603      }
604      option_el.setAttribute("data-option-array-index", option.array_index);
605      option_el.innerHTML = option.highlighted_html || option.html;
606      if (option.title) {
607        option_el.title = option.title;
608      }
609      return this.outerHTML(option_el);
610    };
611
612    AbstractChosen.prototype.result_add_group = function(group) {
613      var classes, group_el;
614      if (!(group.search_match || group.group_match)) {
615        return '';
616      }
617      if (!(group.active_options > 0)) {
618        return '';
619      }
620      classes = [];
621      classes.push("group-result");
622      if (group.classes) {
623        classes.push(group.classes);
624      }
625      group_el = document.createElement("li");
626      group_el.className = classes.join(" ");
627      group_el.innerHTML = group.highlighted_html || this.escape_html(group.label);
628      if (group.title) {
629        group_el.title = group.title;
630      }
631      return this.outerHTML(group_el);
632    };
633
634    AbstractChosen.prototype.results_update_field = function() {
635      this.set_default_text();
636      if (!this.is_multiple) {
637        this.results_reset_cleanup();
638      }
639      this.result_clear_highlight();
640      this.results_build();
641      if (this.results_showing) {
642        return this.winnow_results();
643      }
644    };
645
646    AbstractChosen.prototype.reset_single_select_options = function() {
647      var i, len, ref, result, results1;
648      ref = this.results_data;
649      results1 = [];
650      for (i = 0, len = ref.length; i < len; i++) {
651        result = ref[i];
652        if (result.selected) {
653          results1.push(result.selected = false);
654        } else {
655          results1.push(void 0);
656        }
657      }
658      return results1;
659    };
660
661    AbstractChosen.prototype.results_toggle = function() {
662      if (this.results_showing) {
663        return this.results_hide();
664      } else {
665        return this.results_show();
666      }
667    };
668
669    AbstractChosen.prototype.results_search = function(evt) {
670      if (this.results_showing) {
671        return this.winnow_results();
672      } else {
673        return this.results_show();
674      }
675    };
676
677    AbstractChosen.prototype.winnow_results = function(options) {
678      var escapedQuery, fix, i, len, option, prefix, query, ref, regex, results, results_group, search_match, startpos, suffix, text;
679      this.no_results_clear();
680      results = 0;
681      query = this.get_search_text();
682      escapedQuery = query.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
683      regex = this.get_search_regex(escapedQuery);
684      ref = this.results_data;
685      for (i = 0, len = ref.length; i < len; i++) {
686        option = ref[i];
687        option.search_match = false;
688        results_group = null;
689        search_match = null;
690        option.highlighted_html = '';
691        if (this.include_option_in_results(option)) {
692          if (option.group) {
693            option.group_match = false;
694            option.active_options = 0;
695          }
696          if ((option.group_array_index != null) && this.results_data[option.group_array_index]) {
697            results_group = this.results_data[option.group_array_index];
698            if (results_group.active_options === 0 && results_group.search_match) {
699              results += 1;
700            }
701            results_group.active_options += 1;
702          }
703          text = option.group ? option.label : option.text;
704          if (!(option.group && !this.group_search)) {
705            search_match = this.search_string_match(text, regex);
706            option.search_match = search_match != null;
707            if (option.search_match && !option.group) {
708              results += 1;
709            }
710            if (option.search_match) {
711              if (query.length) {
712                startpos = search_match.index;
713                prefix = text.slice(0, startpos);
714                fix = text.slice(startpos, startpos + query.length);
715                suffix = text.slice(startpos + query.length);
716                option.highlighted_html = (this.escape_html(prefix)) + "<em>" + (this.escape_html(fix)) + "</em>" + (this.escape_html(suffix));
717              }
718              if (results_group != null) {
719                results_group.group_match = true;
720              }
721            } else if ((option.group_array_index != null) && this.results_data[option.group_array_index].search_match) {
722              option.search_match = true;
723            }
724          }
725        }
726      }
727      this.result_clear_highlight();
728      if (results < 1 && query.length) {
729        this.update_results_content("");
730        return this.no_results(query);
731      } else {
732        this.update_results_content(this.results_option_build());
733        if (!(options != null ? options.skip_highlight : void 0)) {
734          return this.winnow_results_set_highlight();
735        }
736      }
737    };
738
739    AbstractChosen.prototype.get_search_regex = function(escaped_search_string) {
740      var regex_flag, regex_string;
741      regex_string = this.search_contains ? escaped_search_string : "(^|\\s|\\b)" + escaped_search_string + "[^\\s]*";
742      if (!(this.enable_split_word_search || this.search_contains)) {
743        regex_string = "^" + regex_string;
744      }
745      regex_flag = this.case_sensitive_search ? "" : "i";
746      return new RegExp(regex_string, regex_flag);
747    };
748
749    AbstractChosen.prototype.search_string_match = function(search_string, regex) {
750      var match;
751      match = regex.exec(search_string);
752      if (!this.search_contains && (match != null ? match[1] : void 0)) {
753        match.index += 1;
754      }
755      return match;
756    };
757
758    AbstractChosen.prototype.choices_count = function() {
759      var i, len, option, ref;
760      if (this.selected_option_count != null) {
761        return this.selected_option_count;
762      }
763      this.selected_option_count = 0;
764      ref = this.form_field.options;
765      for (i = 0, len = ref.length; i < len; i++) {
766        option = ref[i];
767        if (option.selected) {
768          this.selected_option_count += 1;
769        }
770      }
771      return this.selected_option_count;
772    };
773
774    AbstractChosen.prototype.choices_click = function(evt) {
775      evt.preventDefault();
776      this.activate_field();
777      if (!(this.results_showing || this.is_disabled)) {
778        return this.results_show();
779      }
780    };
781
782    AbstractChosen.prototype.keydown_checker = function(evt) {
783      var ref, stroke;
784      stroke = (ref = evt.which) != null ? ref : evt.keyCode;
785      this.search_field_scale();
786      if (stroke !== 8 && this.pending_backstroke) {
787        this.clear_backstroke();
788      }
789      switch (stroke) {
790        case 8:
791          this.backstroke_length = this.get_search_field_value().length;
792          break;
793        case 9:
794          if (this.results_showing && !this.is_multiple) {
795            this.result_select(evt);
796          }
797          this.mouse_on_container = false;
798          break;
799        case 13:
800          if (this.results_showing) {
801            evt.preventDefault();
802          }
803          break;
804        case 27:
805          if (this.results_showing) {
806            evt.preventDefault();
807          }
808          break;
809        case 32:
810          if (this.disable_search) {
811            evt.preventDefault();
812          }
813          break;
814        case 38:
815          evt.preventDefault();
816          this.keyup_arrow();
817          break;
818        case 40:
819          evt.preventDefault();
820          this.keydown_arrow();
821          break;
822      }
823    };
824
825    AbstractChosen.prototype.keyup_checker = function(evt) {
826      var ref, stroke;
827      stroke = (ref = evt.which) != null ? ref : evt.keyCode;
828      this.search_field_scale();
829      switch (stroke) {
830        case 8:
831          if (this.is_multiple && this.backstroke_length < 1 && this.choices_count() > 0) {
832            this.keydown_backstroke();
833          } else if (!this.pending_backstroke) {
834            this.result_clear_highlight();
835            this.results_search();
836          }
837          break;
838        case 13:
839          evt.preventDefault();
840          if (this.results_showing) {
841            this.result_select(evt);
842          }
843          break;
844        case 27:
845          if (this.results_showing) {
846            this.results_hide();
847          }
848          break;
849        case 9:
850        case 16:
851        case 17:
852        case 18:
853        case 38:
854        case 40:
855        case 91:
856          break;
857        default:
858          this.results_search();
859          break;
860      }
861    };
862
863    AbstractChosen.prototype.clipboard_event_checker = function(evt) {
864      if (this.is_disabled) {
865        return;
866      }
867      return setTimeout(((function(_this) {
868        return function() {
869          return _this.results_search();
870        };
871      })(this)), 50);
872    };
873
874    AbstractChosen.prototype.container_width = function() {
875      if (this.options.width != null) {
876        return this.options.width;
877      } else {
878        return this.form_field.offsetWidth + "px";
879      }
880    };
881
882    AbstractChosen.prototype.include_option_in_results = function(option) {
883      if (this.is_multiple && (!this.display_selected_options && option.selected)) {
884        return false;
885      }
886      if (!this.display_disabled_options && option.disabled) {
887        return false;
888      }
889      if (option.empty) {
890        return false;
891      }
892      return true;
893    };
894
895    AbstractChosen.prototype.search_results_touchstart = function(evt) {
896      this.touch_started = true;
897      return this.search_results_mouseover(evt);
898    };
899
900    AbstractChosen.prototype.search_results_touchmove = function(evt) {
901      this.touch_started = false;
902      return this.search_results_mouseout(evt);
903    };
904
905    AbstractChosen.prototype.search_results_touchend = function(evt) {
906      if (this.touch_started) {
907        return this.search_results_mouseup(evt);
908      }
909    };
910
911    AbstractChosen.prototype.outerHTML = function(element) {
912      var tmp;
913      if (element.outerHTML) {
914        return element.outerHTML;
915      }
916      tmp = document.createElement("div");
917      tmp.appendChild(element);
918      return tmp.innerHTML;
919    };
920
921    AbstractChosen.prototype.get_single_html = function() {
922      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>";
923    };
924
925    AbstractChosen.prototype.get_multi_html = function() {
926      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>";
927    };
928
929    AbstractChosen.prototype.get_no_results_html = function(terms) {
930      return "<li class=\"no-results\">\n  " + this.results_none_found + " <span>" + (this.escape_html(terms)) + "</span>\n</li>";
931    };
932
933    AbstractChosen.browser_is_supported = function() {
934      if ("Microsoft Internet Explorer" === window.navigator.appName) {
935        return document.documentMode >= 8;
936      }
937      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)) {
938        return false;
939      }
940      return true;
941    };
942
943    AbstractChosen.default_multiple_text = "Select Some Options";
944
945    AbstractChosen.default_single_text = "Select an Option";
946
947    AbstractChosen.default_no_result_text = "No results match";
948
949    return AbstractChosen;
950
951  })();
952
953  $ = jQuery;
954
955  $.fn.extend({
956    chosen: function(options) {
957      if (!AbstractChosen.browser_is_supported()) {
958        return this;
959      }
960      return this.each(function(input_field) {
961        var $this, chosen;
962        $this = $(this);
963        chosen = $this.data('chosen');
964        if (options === 'destroy') {
965          if (chosen instanceof Chosen) {
966            chosen.destroy();
967          }
968          return;
969        }
970        if (!(chosen instanceof Chosen)) {
971          $this.data('chosen', new Chosen(this, options));
972        }
973      });
974    }
975  });
976
977  Chosen = (function(superClass) {
978    extend(Chosen, superClass);
979
980    function Chosen() {
981      return Chosen.__super__.constructor.apply(this, arguments);
982    }
983
984    Chosen.prototype.setup = function() {
985      this.form_field_jq = $(this.form_field);
986      return this.current_selectedIndex = this.form_field.selectedIndex;
987    };
988
989    Chosen.prototype.set_up_html = function() {
990      var container_classes, container_props;
991      container_classes = ["chosen-container"];
992      container_classes.push("chosen-container-" + (this.is_multiple ? "multi" : "single"));
993      if (this.inherit_select_classes && this.form_field.className) {
994        container_classes.push(this.form_field.className);
995      }
996      if (this.is_rtl) {
997        container_classes.push("chosen-rtl");
998      }
999      container_props = {
1000        'class': container_classes.join(' '),
1001        'title': this.form_field.title
1002      };
1003      if (this.form_field.id.length) {
1004        container_props.id = this.form_field.id.replace(/[^\w]/g, '_') + "_chosen";
1005      }
1006      this.container = $("<div />", container_props);
1007      this.container.width(this.container_width());
1008      if (this.is_multiple) {
1009        this.container.html(this.get_multi_html());
1010      } else {
1011        this.container.html(this.get_single_html());
1012      }
1013      this.form_field_jq.hide().after(this.container);
1014      this.dropdown = this.container.find('div.chosen-drop').first();
1015      this.search_field = this.container.find('input').first();
1016      this.search_results = this.container.find('ul.chosen-results').first();
1017      this.search_field_scale();
1018      this.search_no_results = this.container.find('li.no-results').first();
1019      if (this.is_multiple) {
1020        this.search_choices = this.container.find('ul.chosen-choices').first();
1021        this.search_container = this.container.find('li.search-field').first();
1022      } else {
1023        this.search_container = this.container.find('div.chosen-search').first();
1024        this.selected_item = this.container.find('.chosen-single').first();
1025      }
1026      this.results_build();
1027      this.set_tab_index();
1028      return this.set_label_behavior();
1029    };
1030
1031    Chosen.prototype.on_ready = function() {
1032      return this.form_field_jq.trigger("chosen:ready", {
1033        chosen: this
1034      });
1035    };
1036
1037    Chosen.prototype.register_observers = function() {
1038      this.container.on('touchstart.chosen', (function(_this) {
1039        return function(evt) {
1040          _this.container_mousedown(evt);
1041        };
1042      })(this));
1043      this.container.on('touchend.chosen', (function(_this) {
1044        return function(evt) {
1045          _this.container_mouseup(evt);
1046        };
1047      })(this));
1048      this.container.on('mousedown.chosen', (function(_this) {
1049        return function(evt) {
1050          _this.container_mousedown(evt);
1051        };
1052      })(this));
1053      this.container.on('mouseup.chosen', (function(_this) {
1054        return function(evt) {
1055          _this.container_mouseup(evt);
1056        };
1057      })(this));
1058      this.container.on('mouseenter.chosen', (function(_this) {
1059        return function(evt) {
1060          _this.mouse_enter(evt);
1061        };
1062      })(this));
1063      this.container.on('mouseleave.chosen', (function(_this) {
1064        return function(evt) {
1065          _this.mouse_leave(evt);
1066        };
1067      })(this));
1068      this.search_results.on('mouseup.chosen', (function(_this) {
1069        return function(evt) {
1070          _this.search_results_mouseup(evt);
1071        };
1072      })(this));
1073      this.search_results.on('mouseover.chosen', (function(_this) {
1074        return function(evt) {
1075          _this.search_results_mouseover(evt);
1076        };
1077      })(this));
1078      this.search_results.on('mouseout.chosen', (function(_this) {
1079        return function(evt) {
1080          _this.search_results_mouseout(evt);
1081        };
1082      })(this));
1083      this.search_results.on('mousewheel.chosen DOMMouseScroll.chosen', (function(_this) {
1084        return function(evt) {
1085          _this.search_results_mousewheel(evt);
1086        };
1087      })(this));
1088      this.search_results.on('touchstart.chosen', (function(_this) {
1089        return function(evt) {
1090          _this.search_results_touchstart(evt);
1091        };
1092      })(this));
1093      this.search_results.on('touchmove.chosen', (function(_this) {
1094        return function(evt) {
1095          _this.search_results_touchmove(evt);
1096        };
1097      })(this));
1098      this.search_results.on('touchend.chosen', (function(_this) {
1099        return function(evt) {
1100          _this.search_results_touchend(evt);
1101        };
1102      })(this));
1103      this.form_field_jq.on("chosen:updated.chosen", (function(_this) {
1104        return function(evt) {
1105          _this.results_update_field(evt);
1106        };
1107      })(this));
1108      this.form_field_jq.on("chosen:activate.chosen", (function(_this) {
1109        return function(evt) {
1110          _this.activate_field(evt);
1111        };
1112      })(this));
1113      this.form_field_jq.on("chosen:open.chosen", (function(_this) {
1114        return function(evt) {
1115          _this.container_mousedown(evt);
1116        };
1117      })(this));
1118      this.form_field_jq.on("chosen:close.chosen", (function(_this) {
1119        return function(evt) {
1120          _this.close_field(evt);
1121        };
1122      })(this));
1123      this.search_field.on('blur.chosen', (function(_this) {
1124        return function(evt) {
1125          _this.input_blur(evt);
1126        };
1127      })(this));
1128      this.search_field.on('keyup.chosen', (function(_this) {
1129        return function(evt) {
1130          _this.keyup_checker(evt);
1131        };
1132      })(this));
1133      this.search_field.on('keydown.chosen', (function(_this) {
1134        return function(evt) {
1135          _this.keydown_checker(evt);
1136        };
1137      })(this));
1138      this.search_field.on('focus.chosen', (function(_this) {
1139        return function(evt) {
1140          _this.input_focus(evt);
1141        };
1142      })(this));
1143      this.search_field.on('cut.chosen', (function(_this) {
1144        return function(evt) {
1145          _this.clipboard_event_checker(evt);
1146        };
1147      })(this));
1148      this.search_field.on('paste.chosen', (function(_this) {
1149        return function(evt) {
1150          _this.clipboard_event_checker(evt);
1151        };
1152      })(this));
1153      if (this.is_multiple) {
1154        return this.search_choices.on('click.chosen', (function(_this) {
1155          return function(evt) {
1156            _this.choices_click(evt);
1157          };
1158        })(this));
1159      } else {
1160        return this.container.on('click.chosen', function(evt) {
1161          evt.preventDefault();
1162        });
1163      }
1164    };
1165
1166    Chosen.prototype.destroy = function() {
1167      $(this.container[0].ownerDocument).off('click.chosen', this.click_test_action);
1168      if (this.form_field_label.length > 0) {
1169        this.form_field_label.off('click.chosen');
1170      }
1171      if (this.search_field[0].tabIndex) {
1172        this.form_field_jq[0].tabIndex = this.search_field[0].tabIndex;
1173      }
1174      this.container.remove();
1175      this.form_field_jq.removeData('chosen');
1176      return this.form_field_jq.show();
1177    };
1178
1179    Chosen.prototype.search_field_disabled = function() {
1180      this.is_disabled = this.form_field.disabled || this.form_field_jq.parents('fieldset').is(':disabled');
1181      this.container.toggleClass('chosen-disabled', this.is_disabled);
1182      this.search_field[0].disabled = this.is_disabled;
1183      if (!this.is_multiple) {
1184        this.selected_item.off('focus.chosen', this.activate_field);
1185      }
1186      if (this.is_disabled) {
1187        return this.close_field();
1188      } else if (!this.is_multiple) {
1189        return this.selected_item.on('focus.chosen', this.activate_field);
1190      }
1191    };
1192
1193    Chosen.prototype.container_mousedown = function(evt) {
1194      var ref;
1195      if (this.is_disabled) {
1196        return;
1197      }
1198      if (evt && ((ref = evt.type) === 'mousedown' || ref === 'touchstart') && !this.results_showing) {
1199        evt.preventDefault();
1200      }
1201      if (!((evt != null) && ($(evt.target)).hasClass("search-choice-close"))) {
1202        if (!this.active_field) {
1203          if (this.is_multiple) {
1204            this.search_field.val("");
1205          }
1206          $(this.container[0].ownerDocument).on('click.chosen', this.click_test_action);
1207          this.results_show();
1208        } else if (!this.is_multiple && evt && (($(evt.target)[0] === this.selected_item[0]) || $(evt.target).parents("a.chosen-single").length)) {
1209          evt.preventDefault();
1210          this.results_toggle();
1211        }
1212        return this.activate_field();
1213      }
1214    };
1215
1216    Chosen.prototype.container_mouseup = function(evt) {
1217      if (evt.target.nodeName === "ABBR" && !this.is_disabled) {
1218        return this.results_reset(evt);
1219      }
1220    };
1221
1222    Chosen.prototype.search_results_mousewheel = function(evt) {
1223      var delta;
1224      if (evt.originalEvent) {
1225        delta = evt.originalEvent.deltaY || -evt.originalEvent.wheelDelta || evt.originalEvent.detail;
1226      }
1227      if (delta != null) {
1228        evt.preventDefault();
1229        if (evt.type === 'DOMMouseScroll') {
1230          delta = delta * 40;
1231        }
1232        return this.search_results.scrollTop(delta + this.search_results.scrollTop());
1233      }
1234    };
1235
1236    Chosen.prototype.blur_test = function(evt) {
1237      if (!this.active_field && this.container.hasClass("chosen-container-active")) {
1238        return this.close_field();
1239      }
1240    };
1241
1242    Chosen.prototype.close_field = function() {
1243      $(this.container[0].ownerDocument).off("click.chosen", this.click_test_action);
1244      this.active_field = false;
1245      this.results_hide();
1246      this.container.removeClass("chosen-container-active");
1247      this.clear_backstroke();
1248      this.show_search_field_default();
1249      this.search_field_scale();
1250      return this.search_field.blur();
1251    };
1252
1253    Chosen.prototype.activate_field = function() {
1254      if (this.is_disabled) {
1255        return;
1256      }
1257      this.container.addClass("chosen-container-active");
1258      this.active_field = true;
1259      this.search_field.val(this.search_field.val());
1260      return this.search_field.focus();
1261    };
1262
1263    Chosen.prototype.test_active_click = function(evt) {
1264      var active_container;
1265      active_container = $(evt.target).closest('.chosen-container');
1266      if (active_container.length && this.container[0] === active_container[0]) {
1267        return this.active_field = true;
1268      } else {
1269        return this.close_field();
1270      }
1271    };
1272
1273    Chosen.prototype.results_build = function() {
1274      this.parsing = true;
1275      this.selected_option_count = null;
1276      this.results_data = SelectParser.select_to_array(this.form_field);
1277      if (this.is_multiple) {
1278        this.search_choices.find("li.search-choice").remove();
1279      } else {
1280        this.single_set_selected_text();
1281        if (this.disable_search || this.form_field.options.length <= this.disable_search_threshold) {
1282          this.search_field[0].readOnly = true;
1283          this.container.addClass("chosen-container-single-nosearch");
1284        } else {
1285          this.search_field[0].readOnly = false;
1286          this.container.removeClass("chosen-container-single-nosearch");
1287        }
1288      }
1289      this.update_results_content(this.results_option_build({
1290        first: true
1291      }));
1292      this.search_field_disabled();
1293      this.show_search_field_default();
1294      this.search_field_scale();
1295      return this.parsing = false;
1296    };
1297
1298    Chosen.prototype.result_do_highlight = function(el) {
1299      var high_bottom, high_top, maxHeight, visible_bottom, visible_top;
1300      if (el.length) {
1301        this.result_clear_highlight();
1302        this.result_highlight = el;
1303        this.result_highlight.addClass("highlighted");
1304        maxHeight = parseInt(this.search_results.css("maxHeight"), 10);
1305        visible_top = this.search_results.scrollTop();
1306        visible_bottom = maxHeight + visible_top;
1307        high_top = this.result_highlight.position().top + this.search_results.scrollTop();
1308        high_bottom = high_top + this.result_highlight.outerHeight();
1309        if (high_bottom >= visible_bottom) {
1310          return this.search_results.scrollTop((high_bottom - maxHeight) > 0 ? high_bottom - maxHeight : 0);
1311        } else if (high_top < visible_top) {
1312          return this.search_results.scrollTop(high_top);
1313        }
1314      }
1315    };
1316
1317    Chosen.prototype.result_clear_highlight = function() {
1318      if (this.result_highlight) {
1319        this.result_highlight.removeClass("highlighted");
1320      }
1321      return this.result_highlight = null;
1322    };
1323
1324    Chosen.prototype.results_show = function() {
1325      if (this.is_multiple && this.max_selected_options <= this.choices_count()) {
1326        this.form_field_jq.trigger("chosen:maxselected", {
1327          chosen: this
1328        });
1329        return false;
1330      }
1331      this.container.addClass("chosen-with-drop");
1332      this.results_showing = true;
1333      this.search_field.focus();
1334      this.search_field.val(this.get_search_field_value());
1335      this.winnow_results();
1336      return this.form_field_jq.trigger("chosen:showing_dropdown", {
1337        chosen: this
1338      });
1339    };
1340
1341    Chosen.prototype.update_results_content = function(content) {
1342      return this.search_results.html(content);
1343    };
1344
1345    Chosen.prototype.results_hide = function() {
1346      if (this.results_showing) {
1347        this.result_clear_highlight();
1348        this.container.removeClass("chosen-with-drop");
1349        this.form_field_jq.trigger("chosen:hiding_dropdown", {
1350          chosen: this
1351        });
1352      }
1353      return this.results_showing = false;
1354    };
1355
1356    Chosen.prototype.set_tab_index = function(el) {
1357      var ti;
1358      if (this.form_field.tabIndex) {
1359        ti = this.form_field.tabIndex;
1360        this.form_field.tabIndex = -1;
1361        return this.search_field[0].tabIndex = ti;
1362      }
1363    };
1364
1365    Chosen.prototype.set_label_behavior = function() {
1366      this.form_field_label = this.form_field_jq.parents("label");
1367      if (!this.form_field_label.length && this.form_field.id.length) {
1368        this.form_field_label = $("label[for='" + this.form_field.id + "']");
1369      }
1370      if (this.form_field_label.length > 0) {
1371        return this.form_field_label.on('click.chosen', this.label_click_handler);
1372      }
1373    };
1374
1375    Chosen.prototype.show_search_field_default = function() {
1376      if (this.is_multiple && this.choices_count() < 1 && !this.active_field) {
1377        this.search_field.val(this.default_text);
1378        return this.search_field.addClass("default");
1379      } else {
1380        this.search_field.val("");
1381        return this.search_field.removeClass("default");
1382      }
1383    };
1384
1385    Chosen.prototype.search_results_mouseup = function(evt) {
1386      var target;
1387      target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first();
1388      if (target.length) {
1389        this.result_highlight = target;
1390        this.result_select(evt);
1391        return this.search_field.focus();
1392      }
1393    };
1394
1395    Chosen.prototype.search_results_mouseover = function(evt) {
1396      var target;
1397      target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first();
1398      if (target) {
1399        return this.result_do_highlight(target);
1400      }
1401    };
1402
1403    Chosen.prototype.search_results_mouseout = function(evt) {
1404      if ($(evt.target).hasClass("active-result") || $(evt.target).parents('.active-result').first()) {
1405        return this.result_clear_highlight();
1406      }
1407    };
1408
1409    Chosen.prototype.choice_build = function(item) {
1410      var choice, close_link;
1411      choice = $('<li />', {
1412        "class": "search-choice"
1413      }).html("<span>" + (this.choice_label(item)) + "</span>");
1414      if (item.disabled) {
1415        choice.addClass('search-choice-disabled');
1416      } else {
1417        close_link = $('<a />', {
1418          "class": 'search-choice-close',
1419          'data-option-array-index': item.array_index
1420        });
1421        close_link.on('click.chosen', (function(_this) {
1422          return function(evt) {
1423            return _this.choice_destroy_link_click(evt);
1424          };
1425        })(this));
1426        choice.append(close_link);
1427      }
1428      return this.search_container.before(choice);
1429    };
1430
1431    Chosen.prototype.choice_destroy_link_click = function(evt) {
1432      evt.preventDefault();
1433      evt.stopPropagation();
1434      if (!this.is_disabled) {
1435        return this.choice_destroy($(evt.target));
1436      }
1437    };
1438
1439    Chosen.prototype.choice_destroy = function(link) {
1440      if (this.result_deselect(link[0].getAttribute("data-option-array-index"))) {
1441        if (this.active_field) {
1442          this.search_field.focus();
1443        } else {
1444          this.show_search_field_default();
1445        }
1446        if (this.is_multiple && this.choices_count() > 0 && this.get_search_field_value().length < 1) {
1447          this.results_hide();
1448        }
1449        link.parents('li').first().remove();
1450        return this.search_field_scale();
1451      }
1452    };
1453
1454    Chosen.prototype.results_reset = function() {
1455      this.reset_single_select_options();
1456      this.form_field.options[0].selected = true;
1457      this.single_set_selected_text();
1458      this.show_search_field_default();
1459      this.results_reset_cleanup();
1460      this.trigger_form_field_change();
1461      if (this.active_field) {
1462        return this.results_hide();
1463      }
1464    };
1465
1466    Chosen.prototype.results_reset_cleanup = function() {
1467      this.current_selectedIndex = this.form_field.selectedIndex;
1468      return this.selected_item.find("abbr").remove();
1469    };
1470
1471    Chosen.prototype.result_select = function(evt) {
1472      var high, item;
1473      if (this.result_highlight) {
1474        high = this.result_highlight;
1475        this.result_clear_highlight();
1476        if (this.is_multiple && this.max_selected_options <= this.choices_count()) {
1477          this.form_field_jq.trigger("chosen:maxselected", {
1478            chosen: this
1479          });
1480          return false;
1481        }
1482        if (this.is_multiple) {
1483          high.removeClass("active-result");
1484        } else {
1485          this.reset_single_select_options();
1486        }
1487        high.addClass("result-selected");
1488        item = this.results_data[high[0].getAttribute("data-option-array-index")];
1489        item.selected = true;
1490        this.form_field.options[item.options_index].selected = true;
1491        this.selected_option_count = null;
1492        if (this.is_multiple) {
1493          this.choice_build(item);
1494        } else {
1495          this.single_set_selected_text(this.choice_label(item));
1496        }
1497        if (this.is_multiple && (!this.hide_results_on_select || (evt.metaKey || evt.ctrlKey))) {
1498          if (evt.metaKey || evt.ctrlKey) {
1499            this.winnow_results({
1500              skip_highlight: true
1501            });
1502          } else {
1503            this.search_field.val("");
1504            this.winnow_results();
1505          }
1506        } else {
1507          this.results_hide();
1508          this.show_search_field_default();
1509        }
1510        if (this.is_multiple || this.form_field.selectedIndex !== this.current_selectedIndex) {
1511          this.trigger_form_field_change({
1512            selected: this.form_field.options[item.options_index].value
1513          });
1514        }
1515        this.current_selectedIndex = this.form_field.selectedIndex;
1516        evt.preventDefault();
1517        return this.search_field_scale();
1518      }
1519    };
1520
1521    Chosen.prototype.single_set_selected_text = function(text) {
1522      if (text == null) {
1523        text = this.default_text;
1524      }
1525      if (text === this.default_text) {
1526        this.selected_item.addClass("chosen-default");
1527      } else {
1528        this.single_deselect_control_build();
1529        this.selected_item.removeClass("chosen-default");
1530      }
1531      return this.selected_item.find("span").html(text);
1532    };
1533
1534    Chosen.prototype.result_deselect = function(pos) {
1535      var result_data;
1536      result_data = this.results_data[pos];
1537      if (!this.form_field.options[result_data.options_index].disabled) {
1538        result_data.selected = false;
1539        this.form_field.options[result_data.options_index].selected = false;
1540        this.selected_option_count = null;
1541        this.result_clear_highlight();
1542        if (this.results_showing) {
1543          this.winnow_results();
1544        }
1545        this.trigger_form_field_change({
1546          deselected: this.form_field.options[result_data.options_index].value
1547        });
1548        this.search_field_scale();
1549        return true;
1550      } else {
1551        return false;
1552      }
1553    };
1554
1555    Chosen.prototype.single_deselect_control_build = function() {
1556      if (!this.allow_single_deselect) {
1557        return;
1558      }
1559      if (!this.selected_item.find("abbr").length) {
1560        this.selected_item.find("span").first().after("<abbr class=\"search-choice-close\"></abbr>");
1561      }
1562      return this.selected_item.addClass("chosen-single-with-deselect");
1563    };
1564
1565    Chosen.prototype.get_search_field_value = function() {
1566      return this.search_field.val();
1567    };
1568
1569    Chosen.prototype.get_search_text = function() {
1570      return $.trim(this.get_search_field_value());
1571    };
1572
1573    Chosen.prototype.escape_html = function(text) {
1574      return $('<div/>').text(text).html();
1575    };
1576
1577    Chosen.prototype.winnow_results_set_highlight = function() {
1578      var do_high, selected_results;
1579      selected_results = !this.is_multiple ? this.search_results.find(".result-selected.active-result") : [];
1580      do_high = selected_results.length ? selected_results.first() : this.search_results.find(".active-result").first();
1581      if (do_high != null) {
1582        return this.result_do_highlight(do_high);
1583      }
1584    };
1585
1586    Chosen.prototype.no_results = function(terms) {
1587      var no_results_html;
1588      no_results_html = this.get_no_results_html(terms);
1589      this.search_results.append(no_results_html);
1590      return this.form_field_jq.trigger("chosen:no_results", {
1591        chosen: this
1592      });
1593    };
1594
1595    Chosen.prototype.no_results_clear = function() {
1596      return this.search_results.find(".no-results").remove();
1597    };
1598
1599    Chosen.prototype.keydown_arrow = function() {
1600      var next_sib;
1601      if (this.results_showing && this.result_highlight) {
1602        next_sib = this.result_highlight.nextAll("li.active-result").first();
1603        if (next_sib) {
1604          return this.result_do_highlight(next_sib);
1605        }
1606      } else {
1607        return this.results_show();
1608      }
1609    };
1610
1611    Chosen.prototype.keyup_arrow = function() {
1612      var prev_sibs;
1613      if (!this.results_showing && !this.is_multiple) {
1614        return this.results_show();
1615      } else if (this.result_highlight) {
1616        prev_sibs = this.result_highlight.prevAll("li.active-result");
1617        if (prev_sibs.length) {
1618          return this.result_do_highlight(prev_sibs.first());
1619        } else {
1620          if (this.choices_count() > 0) {
1621            this.results_hide();
1622          }
1623          return this.result_clear_highlight();
1624        }
1625      }
1626    };
1627
1628    Chosen.prototype.keydown_backstroke = function() {
1629      var next_available_destroy;
1630      if (this.pending_backstroke) {
1631        this.choice_destroy(this.pending_backstroke.find("a").first());
1632        return this.clear_backstroke();
1633      } else {
1634        next_available_destroy = this.search_container.siblings("li.search-choice").last();
1635        if (next_available_destroy.length && !next_available_destroy.hasClass("search-choice-disabled")) {
1636          this.pending_backstroke = next_available_destroy;
1637          if (this.single_backstroke_delete) {
1638            return this.keydown_backstroke();
1639          } else {
1640            return this.pending_backstroke.addClass("search-choice-focus");
1641          }
1642        }
1643      }
1644    };
1645
1646    Chosen.prototype.clear_backstroke = function() {
1647      if (this.pending_backstroke) {
1648        this.pending_backstroke.removeClass("search-choice-focus");
1649      }
1650      return this.pending_backstroke = null;
1651    };
1652
1653    Chosen.prototype.search_field_scale = function() {
1654      var div, i, len, style, style_block, styles, width;
1655      if (!this.is_multiple) {
1656        return;
1657      }
1658      style_block = {
1659        position: 'absolute',
1660        left: '-1000px',
1661        top: '-1000px',
1662        display: 'none',
1663        whiteSpace: 'pre'
1664      };
1665      styles = ['fontSize', 'fontStyle', 'fontWeight', 'fontFamily', 'lineHeight', 'textTransform', 'letterSpacing'];
1666      for (i = 0, len = styles.length; i < len; i++) {
1667        style = styles[i];
1668        style_block[style] = this.search_field.css(style);
1669      }
1670      div = $('<div />').css(style_block);
1671      div.text(this.get_search_field_value());
1672      $('body').append(div);
1673      width = div.width() + 25;
1674      div.remove();
1675      if (this.container.is(':visible')) {
1676        width = Math.min(this.container.outerWidth() - 10, width);
1677      }
1678      return this.search_field.width(width);
1679    };
1680
1681    Chosen.prototype.trigger_form_field_change = function(extra) {
1682      this.form_field_jq.trigger("input", extra);
1683      return this.form_field_jq.trigger("change", extra);
1684    };
1685
1686    return Chosen;
1687
1688  })(AbstractChosen);
1689
1690}).call(this);
1691;/**
1692*
1693* jQuery Interdependencies library
1694* http://miohtama.github.com/jquery-interdependencies/
1695* Copyright 2012-2013 Mikko Ohtamaa, others
1696*
1697* Customized by Codestar
1698*
1699*/
1700(function($) {
1701
1702  'use strict';
1703
1704  function Rule(controller, condition, value) {
1705    this.init(controller, condition, value);
1706  }
1707
1708  $.extend(Rule.prototype, {
1709
1710    init: function(controller, condition, value) {
1711
1712      this.controller = controller;
1713      this.condition  = condition;
1714      this.value      = value;
1715      this.rules      = [];
1716      this.controls   = [];
1717
1718    },
1719
1720    evalCondition: function(context, control, condition, val1, val2) {
1721
1722      if( condition == '==' ) {
1723
1724        return this.checkBoolean(val1) == this.checkBoolean(val2);
1725
1726      } else if( condition == '!=' ) {
1727
1728        return this.checkBoolean(val1) != this.checkBoolean(val2);
1729
1730      } else if( condition == '>=' ) {
1731
1732        return Number(val2) >= Number(val1);
1733
1734      } else if( condition == '<=' ) {
1735
1736        return Number(val2) <= Number(val1);
1737
1738      } else if( condition == '>' ) {
1739
1740        return Number(val2) > Number(val1);
1741
1742      } else if( condition == '<' ) {
1743
1744        return Number(val2) < Number(val1);
1745
1746      } else if( condition == '()' ) {
1747
1748        return window[val1](context, control, val2);
1749
1750      } else if( condition == 'any' ) {
1751
1752        if( $.isArray( val2 ) ) {
1753          for (var i = val2.length - 1; i >= 0; i--) {
1754            if( $.inArray( val2[i], val1.split(',') ) !== -1 ) {
1755              return true;
1756            }
1757          }
1758        } else {
1759          if( $.inArray( val2, val1.split(',') ) !== -1 ) {
1760            return true;
1761          }
1762        }
1763
1764      } else if( condition == 'not-any' ) {
1765
1766        if( $.isArray( val2 ) ) {
1767          for (var i = val2.length - 1; i >= 0; i--) {
1768            if( $.inArray( val2[i], val1.split(',') ) == -1 ) {
1769              return true;
1770            }
1771          }
1772        } else {
1773          if( $.inArray( val2, val1.split(',') ) == -1 ) {
1774            return true;
1775          }
1776        }
1777
1778      }
1779
1780      return false;
1781
1782    },
1783
1784    checkBoolean: function(value) {
1785
1786      switch( value ) {
1787
1788        case true:
1789        case 'true':
1790        case 1:
1791        case '1':
1792          value = true;
1793        break;
1794
1795        case null:
1796        case false:
1797        case 'false':
1798        case 0:
1799        case '0':
1800          value = false;
1801        break;
1802
1803      }
1804
1805      return value;
1806    },
1807
1808    checkCondition: function( context ) {
1809
1810      if( !this.condition ) {
1811        return true;
1812      }
1813
1814      var control = context.find(this.controller);
1815
1816      var control_value = this.getControlValue(context, control);
1817
1818      if( control_value === undefined ) {
1819        return false;
1820      }
1821
1822      control_value = this.normalizeValue(control, this.value, control_value);
1823
1824      return this.evalCondition(context, control, this.condition, this.value, control_value);
1825    },
1826
1827    normalizeValue: function( control, baseValue, control_value ) {
1828
1829      if( typeof baseValue == 'number' ) {
1830        return parseFloat( control_value );
1831      }
1832
1833      return control_value;
1834    },
1835
1836    getControlValue: function(context, control) {
1837
1838      if( control.length > 1 && ( control.attr('type') == 'radio' || control.attr('type') == 'checkbox' ) ) {
1839
1840        return control.filter(':checked').map(function() { return this.value; }).get();
1841
1842      } else if ( control.attr('type') == 'checkbox' || control.attr('type') == 'radio' ) {
1843
1844        return control.is(':checked');
1845
1846      }
1847
1848      return control.val();
1849
1850    },
1851
1852    createRule: function(controller, condition, value) {
1853      var rule = new Rule(controller, condition, value);
1854      this.rules.push(rule);
1855      return rule;
1856    },
1857
1858    include: function(input) {
1859      this.controls.push(input);
1860    },
1861
1862    applyRule: function(context, enforced) {
1863
1864      var result;
1865
1866      if( typeof( enforced ) == 'undefined' ) {
1867        result = this.checkCondition(context);
1868      } else {
1869        result = enforced;
1870      }
1871
1872      var controls = $.map(this.controls, function(elem, idx) {
1873        return context.find(elem);
1874      });
1875
1876      if( result ) {
1877
1878        $(controls).each(function() {
1879          $(this).removeClass('csf-depend-on');
1880        });
1881
1882        $(this.rules).each(function() {
1883          this.applyRule(context);
1884        });
1885
1886      } else {
1887
1888        $(controls).each(function() {
1889          $(this).addClass('csf-depend-on');
1890        });
1891
1892        $(this.rules).each(function() {
1893          this.applyRule(context, false);
1894        });
1895
1896      }
1897    }
1898  });
1899
1900  function Ruleset() {
1901    this.rules = [];
1902  };
1903
1904  $.extend(Ruleset.prototype, {
1905
1906    createRule: function(controller, condition, value) {
1907      var rule = new Rule(controller, condition, value);
1908      this.rules.push(rule);
1909      return rule;
1910    },
1911
1912    applyRules: function(context) {
1913      $(this.rules).each(function() {
1914        this.applyRule(context);
1915      });
1916    }
1917  });
1918
1919  $.csf_deps = {
1920
1921    createRuleset: function() {
1922      return new Ruleset();
1923    },
1924
1925    enable: function(selection, ruleset, depends) {
1926
1927      selection.on('change keyup', function(elem) {
1928
1929        var depend_id = elem.target.getAttribute('data-depend-id') || elem.target.getAttribute('data-sub-depend-id');
1930
1931        if( depends.indexOf( depend_id ) !== -1 ) {
1932          ruleset.applyRules(selection);
1933        }
1934
1935      });
1936
1937      ruleset.applyRules(selection);
1938
1939      return true;
1940    }
1941  };
1942
1943})(jQuery);
1944;/**
1945 *
1946 * jQuery serializeObject
1947 *
1948 * @copyright 2014, macek <[email protected]>
1949 * @link https://github.com/macek/jquery-serialize-object
1950 * @license BSD
1951 * @version 2.5.0
1952 *
1953 * Customized by Codestar
1954 *
1955 */
1956(function(root, factory) {
1957
1958  // AMD
1959  if (typeof define === "function" && define.amd) {
1960    define(["exports", "jquery"], function(exports, $) {
1961      return factory(exports, $);
1962    });
1963  }
1964
1965  // CommonJS
1966  else if (typeof exports !== "undefined") {
1967    var $ = require("jquery");
1968    factory(exports, $);
1969  }
1970
1971  // Browser
1972  else {
1973    factory(root, (root.jQuery || root.Zepto || root.ender || root.$));
1974  }
1975
1976}(this, function(exports, $) {
1977
1978  //
1979  // Codestar: Added custom patterns for spesific validate
1980  //
1981  var patterns = {
1982    validate: /^(?!(_nonce|_pseudo))[a-zA-Z0-9_-]*(?:\[(?:\d*|(?!(_nonce|_pseudo))[a-zA-Z0-9_-]+)\])*$/i,
1983    key: /[a-zA-Z0-9_-]+|(?=\[\])/g,
1984    named: /^[a-zA-Z0-9_-]+$/,
1985    push: /^$/,
1986    fixed: /^\d+$/
1987  };
1988
1989  function FormSerializer(helper, $form) {
1990
1991    // private variables
1992    var data     = {},
1993        pushes   = {};
1994
1995    // private API
1996    function build(base, key, value) {
1997      base[key] = value;
1998      return base;
1999    }
2000
2001    function makeObject(root, value) {
2002
2003      var keys = root.match(patterns.key), k;
2004
2005      // nest, nest, ..., nest
2006      while ((k = keys.pop()) !== undefined) {
2007        // foo[]
2008        if (patterns.push.test(k)) {
2009          var idx = incrementPush(root.replace(/\[\]$/, ''));
2010          value = build([], idx, value);
2011        }
2012
2013        // foo[n]
2014        else if (patterns.fixed.test(k)) {
2015          value = build([], k, value);
2016        }
2017
2018        // foo; foo[bar]
2019        else if (patterns.named.test(k)) {
2020          value = build({}, k, value);
2021        }
2022      }
2023
2024      return value;
2025    }
2026
2027    function incrementPush(key) {
2028      if (pushes[key] === undefined) {
2029        pushes[key] = 0;
2030      }
2031      return pushes[key]++;
2032    }
2033
2034    function addPair(pair) {
2035      if (!patterns.validate.test(pair.name)) return this;
2036      var obj = makeObject(pair.name, pair.value);
2037      data = helper.extend(true, data, obj);
2038      return this;
2039    }
2040
2041    function addPairs(pairs) {
2042      if (!helper.isArray(pairs)) {
2043        throw new Error("formSerializer.addPairs expects an Array");
2044      }
2045      for (var i=0, len=pairs.length; i<len; i++) {
2046        this.addPair(pairs[i]);
2047      }
2048      return this;
2049    }
2050
2051    function serialize() {
2052      return data;
2053    }
2054
2055    function serializeJSON() {
2056      return JSON.stringify(serialize());
2057    }
2058
2059    // public API
2060    this.addPair = addPair;
2061    this.addPairs = addPairs;
2062    this.serialize = serialize;
2063    this.serializeJSON = serializeJSON;
2064  }
2065
2066  FormSerializer.patterns = patterns;
2067
2068  FormSerializer.serializeObject = function serializeObject() {
2069    return new FormSerializer($, this).
2070      addPairs(this.serializeArray()).
2071      serialize();
2072  };
2073
2074  FormSerializer.serializeJSON = function serializeJSON() {
2075    return new FormSerializer($, this).
2076      addPairs(this.serializeArray()).
2077      serializeJSON();
2078  };
2079
2080  //
2081  // Codestar: Renamed function names for avoid conflicts
2082  //
2083
2084  if (typeof $.fn !== "undefined") {
2085    $.fn.serializeObjectCSF = FormSerializer.serializeObject;
2086    $.fn.serializeJSONCSF   = FormSerializer.serializeJSON;
2087  }
2088
2089  exports.FormSerializer = FormSerializer;
2090
2091  return FormSerializer;
2092}));

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.