// source --> https://www.ipko.com/wp-content/themes/ipko/assets/js/main.js 
/* document ready */
(function ($) {
  $(document).ready(function () {
    /* back to top functionality removed for now (only here) */
    // backToTop();

    /* sticky header */
    headerSticky();

    /* na kontakto */
    $(document).on("click", ".home-contact-trigger", function (e) {
      e.preventDefault();

      $(this).closest("#home_contact").toggleClass("show");
    });

    /* pikat e shitjes filters */
    $(document).on("click", ".sunday-locations", function () {
      var headerHeight = $(".custom-header").outerHeight();
      var selected = $(".shops-result ul li[data-sunday='false']");
      var map_section = $(".map-content");
      var map_sectionTopValue = map_section.offset().top;

      if ($(this).hasClass("checked")) {
        selected.removeClass("sundayHide");
      } else {
        selected.addClass("sundayHide");
      }
      $(this).toggleClass("checked");

      /* trigger change event to catch the class changes on backend */
      $(this).trigger("change");

      // setTimeout(() => {
      //   $("html, body").animate(
      //     {
      //       scrollTop: map_sectionTopValue - headerHeight - 100,
      //     },
      //     1000
      //   );
      // }, 1300);
    });

    $(document).on("change", ".location-holder .chosen-s", function () {
      var headerHeight = $(".custom-header").outerHeight();
      var map_section = $(".map-content");
      var map_sectionTopValue = map_section.offset().top;

      cityElement = $(".location-holder .chosen-s.city");
      typeElement = $(".location-holder .chosen-s.type");

      var city = null;
      var type = null;

      if ($(this).hasClass("city")) {
        /* city change */
        city = $(this).val();
        type = typeElement.val();

        pikat_e_shitjes_filter(city, type);
      } else {
        /* type change */
        type = $(this).val();
        city = cityElement.val();
        pikat_e_shitjes_filter(city, type);
      }

      // setTimeout(() => {
      //   $("html, body").animate(
      //     {
      //       scrollTop: map_sectionTopValue - headerHeight - 100,
      //     },
      //     1000
      //   );
      // }, 1300);
    });

    /* remove not necessary forminator row */
    var captchaElement = $(".remove-captcha");
    if (captchaElement.length) {
      captchaElement.closest(".forminator-row").css({
        display: "none",
      });
    }
    /* zoom in-out functionality */
    initialZoom();

    $(document).on("click", "#zoomBtns ul li:first-child", function () {
      updateZoomLevel(true);
    });

    $(document).on("click", "#zoomBtns ul li:last-child", function () {
      updateZoomLevel(false);
    });

    /* chosen */
    var selectNoResults = $(".country-filters .select-holder").data(
      "noresults"
    );
    $(".chosen-s").chosen({
      no_results_text: selectNoResults,
    });

    // Add an event listener for the 'change' event
    $(".chosen-s").on("change", function () {
      // Remove focus after selecting an option
      setTimeout(function () {
        $(".chosen-search-input").blur();
      }, 10);
    });

    var elementsWithTransition = $(".custom-translate-rrota");
    var screenWidth = $(window).outerWidth();

    // Check if there are elements with the class and the screen width is greater than 1024
    if (elementsWithTransition.length && screenWidth > 1024) {
      elementsWithTransition.each(function () {
        // Cache the jQuery object for better performance
        var self = $(this);
        var title = self.find(".custom-title-rrota");
        var moreGap = self.hasClass("with-more-gap") ? 40 : 0; // Use ternary operator to set moreGap

        // Make the custom description invisible
        self.find(".custom-description").css({
          opacity: "0",
        });

        // Calculate element heights and amount to translate
        var height = self.outerHeight();
        var titleHeight = title.outerHeight();
        var amountToTranslate = height - titleHeight - 55 - moreGap;

        if (titleHeight == 0) {
          // Apply the translateY transformation
          self.css({
            transform: "translateY(100%)",
          });
        } else {
          // Apply the translateY transformation
          self.css({
            transform: "translateY(" + amountToTranslate + "px)",
          });
        }

      });
    }

    /* clicking show more on package cards (mobile) */
    $(document).on("click", ".pako-show-more", function () {
      /* remove custom open from all trigger buttons except this one */
      $(".pako-show-more").not($(this)).removeClass("custom-open");

      /* add custom open class to clicked element so we rotate it */
      $(this).toggleClass("custom-open");

      /* find parent to easily find hidden element afterwards */
      var parent = $(this).closest(".pako-card-wrapper");
      var hiddenElement = parent.find(".custom-hidden-content");

      /* close all hidden elements except this one that you click */

      $(".custom-hidden-content").not(hiddenElement).removeClass("custom-open");

      /* toggle class custom-open to hidden element so it shows on click (mobile only) */
      hiddenElement.toggleClass("custom-open");

      /* scrolltop to that element */

      $("html, body").scrollTop(parent.offset().top - 145);
    });

    /* clicking show more on zig zag sport sections */
    $(document).on("click", "#show_more_text", function (e) {
      e.preventDefault();
      $(this).toggleClass("open");
      var parent = $(this).closest(".elementor-element");
      var sibling = parent.siblings(".text-to-show-more");

      sibling.toggleClass("show");
    });

    /* clicking product variations changes product price */
    $(document).on(
      "click",
      ".custom-product-variations-list .custom-variations ",
      function () {
        var self = $(this);
        var price = $(this).attr("data-price");
        var price_placeholder = $(".custom-product-price").find("bdi");

        /* this is used to pass to calculate total product price function */
        var elementOnPackages = $(".package-wrapper .package-name");

        self.siblings(".custom-variations").not(self).removeClass("active");
        self.addClass("active");

        price_placeholder.html(price + " €");

        /* calculate total product price*/
        calculateTotalPriceOfProduct(elementOnPackages);
      }
    );

    /* on click of package inside open product functionality 12 or 24 month */
    $(document).on("click", ".month-year-btns .custom-btn", function () {
      var self = $(this);

      var isActivePackage = self.closest(".package-wrapper").hasClass("active");

      /* find matching element to show price */
      var selfID = self.attr("id");
      var matchingElement = self
        .closest(".package-wrapper")
        .find('.package-price[data-match-id="' + selfID + '"]');

      var previousState = self.hasClass("active");

      /* remove/add active classes */
      self.siblings().removeClass("active");
      self.toggleClass("active");

      matchingElement.siblings().removeClass("active");
      matchingElement.toggleClass("active");

      // Check if there was a state change
      var stateChanged = previousState !== self.hasClass("active");

      // Log the result
      if (stateChanged) {
        if (self.hasClass("active")) {
          // console.log("Switched to button with ID:", selfID);
          /* add class active */
          self
            .closest(".package-wrapper")
            .find(".select-btn-holder")
            .addClass("active");
          calculateTotalPriceOfProduct(self);
        } else {
          // console.log("Toggled off button with ID:", selfID);
          if (isActivePackage) {
            $(".result").removeClass("active");
            self
              .closest(".package-wrapper")
              .find(".select-btn-holder .custom-btn")
              .removeClass("active");
          }
        }
      } else {
        // console.log("Button with ID:", selfID, "remains selected.");
      }
    });

    function calculateTotalPriceOfProduct(self) {
      /* get active monthly price */

      var isActivePackage = self.closest(".package-wrapper").hasClass("active");

      if (isActivePackage) {
        var monthlyPrice = self
          .closest(".package-wrapper")
          .find(".package-price.active")
          .attr("data-price");

        /* check for how many months */
        var months = self
          .closest(".package-wrapper")
          .find(".package-price.active")
          .attr("data-match-id");

        var monthsNumber = 1;
        var price = 0;

        if (months === "months_12") {
          monthsNumber = 12;
        } else if (months === "months_24") {
          monthsNumber = 24;
        }

        /* if there is sale, get its price, otherwise regular price */
        if ($(".custom-product-price").length) {
          var hasSale = $(".custom-product-price").find(".price ins");

          if (hasSale.length) {
            price = parseFloat(hasSale.text().replace("€", "").replace(",", "."));
          } else {
            price = parseFloat(
              $(".custom-product-price .price bdi").text().replace("€", "").replace(",", ".")
            );
          }
        }

        /* calculate total price and store result */
        var yearlyPrice = monthlyPrice * monthsNumber;

        var totalPrice = parseFloat(price) + parseFloat(yearlyPrice);

        var totalResultHolder = $(".result .total-result");

        var monthlyResultHolder = $(".result .total-result-monthly");

        monthlyResultHolder.html((totalPrice / monthsNumber).toFixed(2) + "€");

        totalResultHolder.html(totalPrice + "€");
      }
    }

    function updateZoomLevel(increase) {
      // Get the current zoom level from local storage
      let currentZoom = parseFloat(localStorage.getItem("zoomlvl"));

      // Update the zoom level based on the 'increase' parameter
      if (increase) {
        currentZoom += 0.02;
      } else {
        currentZoom -= 0.02;
      }

      // Ensure the zoom level is within the specified bounds
      currentZoom = Math.min(Math.max(currentZoom, 0.96), 1.04);

      // Update local storage and display
      localStorage.setItem("zoomlvl", currentZoom.toFixed(2));

      $("body").css({
        zoom: currentZoom,
      });
    }

    function initialZoom() {
      // Check if zoomlvl exists in local storage
      if (localStorage.getItem("zoomlvl") === null) {
        // If not, set initial value and return
        localStorage.setItem("zoomlvl", "1.00");
      }

      $("body").css({
        zoom: 1,
      });
    }

    /* on click of choose package inside product */
    $(document).on(
      "click",
      ".package-wrapper .select-btn-holder .custom-btn",
      function () {
        var self = $(this);

        // Check if the clicked button is already active
        var isActive = self.hasClass("active");

        /* handle active classes of selected package */
        var siblingElement = self
          .closest(".package-wrapper")
          .siblings(".package-wrapper");

        siblingElement.removeClass("active");
        siblingElement
          .find(".select-btn-holder .custom-btn")
          .removeClass("active");

        self.closest(".package-wrapper").addClass("active");
        self.addClass("active");

        calculateTotalPriceOfProduct(self);

        $(".result").addClass("active");
      }
    );

    /* clicking product variation colors */
    $(document).on(
      "click",
      ".custom-product-color-list .color-item",
      function () {
        var self = $(this);

        self.siblings(".color-item").not(self).removeClass("active");
        self.addClass("active");
      }
    );

    mapStickyFunction();

    /* on scroll event */
    function mapStickyFunction() {
      // Check if the screen width is more than 1024 pixels
      var mapContent = $(".map-content");
      if ($(window).width() > 1024 && mapContent.length) {
        var mapContentWidth = mapContent.outerWidth();
        var mapContentTop = mapContent.offset().top;
        var shopsResult = $(".shops-result");
        var windowHeight = $(window).outerHeight();

        document.documentElement.style.setProperty(
          "--map-content-width",
          mapContentWidth + "px"
        );

        $(window).scroll(function () {
          var scrollTop = $(window).scrollTop();
          var shopsResultBottom =
            shopsResult.offset().top + shopsResult.outerHeight();

          /* if mapcontent touches top */
          if (
            scrollTop >= mapContentTop &&
            scrollTop <= shopsResultBottom - windowHeight
          ) {
            // Make map-content sticky
            mapContent.removeClass("bottom").addClass("sticky");
          } else if (scrollTop > shopsResultBottom - windowHeight) {
            /* if shopersult bottom is visible */
            // Make map-content stick to the bottom
            mapContent.removeClass("sticky").addClass("bottom");
          } else {
            // Remove sticky and bottom classes
            mapContent.removeClass("sticky bottom");
          }
        });
      }
    }

    /* filter of pikat e shitjes */
    function pikat_e_shitjes_filter(city, type) {
      var results = $(".shops-result");
      var resultsTopValue = results.offset().top;

      var selectedItem = $(".shops-result ul li[data-city='" + city + "']");
      var hiddenMessage = $(".hidden-message");

      if (type != "all") {
        /* remove class visible from all except those with type class ex: shop/distributor */
        $(".shops-result ul li").removeClass("visible");
        $(".shops-result ul li." + type).addClass("visible");
      } else if (type == "all") {
        /* if all make everything with data city matching, visible */
        $(".shops-result ul li.distributor[data-city='" + city + "']").addClass(
          "selectedCity visible"
        );
        $(".shops-result ul li.shop[data-city='" + city + "']").addClass(
          "selectedCity visible"
        );
      }

      if (city != null) {
        /* add class selected city all the items with data attribute matching city */
        $(".shops-result ul li").not(selectedItem).removeClass("selectedCity");
        selectedItem.addClass("selectedCity");
      }

      // Check if there are no results and log a message to the console
      if ($(".shops-result ul li.visible.selectedCity").length === 0) {
        hiddenMessage.show();
      } else {
        hiddenMessage.hide();

        // setTimeout(() => {
        //   $("html, body").animate(
        //     {
        //       scrollTop: resultsTopValue - 15,
        //     },
        //     1000
        //   );
        // }, 1000);
      }
    }

    /* back to top */
    function backToTop() {
      /* back to top functionality, element on footer */
      var mywindow = $(window);
      var mypos = mywindow.scrollTop();
      var up = false;
      var newscroll;
      mywindow.scroll(function () {
        var scrollPosition = $(window).scrollTop();

        if (scrollPosition > 750) {
          newscroll = mywindow.scrollTop();
          /* check if u scroll up */

          if (newscroll < mypos && !up) {
            $("#back_to_top").stop().addClass("show");
            up = !up;
          } else if (newscroll > mypos && up) {
            $("#back_to_top").stop().removeClass("show");
            up = !up;
          }
          mypos = newscroll;
        } else {
          $("#back_to_top").removeClass("show");
        }
      });

      $("#back_to_top").on("click", function () {
        $("html, body").animate(
          {
            scrollTop: 0,
          },
          500
        );

        $("#back_to_top").removeClass("show");
      });
    }

    /* header sticky details */
    function headerSticky() {
      let prevScrollPos = $(window).scrollTop();
      let upperHeader = $(".upper-header");
      let customHeader = $(".custom-header");

      let upperHeaderHeight = upperHeader.outerHeight();

      $(window).scroll(function () {
        const currentScrollPos = $(window).scrollTop();

        // If scrolling down, reveal the header
        if (prevScrollPos < currentScrollPos) {
          customHeader.css({
            transform: `translateY(-${upperHeaderHeight}px)`,
          });
        } else {
          // If scrolling up or at the top of the page, hide the header
          customHeader.css({
            transform: "translateY(0)",
          });
        }

        prevScrollPos = currentScrollPos;
      });
    }

    /* get vod categories */
    get_vod_categories();

    // Search VODs by name
    $("#custom_vod_search").on("click", function () {
      var categoryName = $("#custom_vod_category").val();
      var searchName = $("#vod_search_input").val();

      call_vod_ajax(categoryName, searchName);
    });

    /* on dropdown change of vod categories */
    $(document).on("change", "#custom_vod_category", function () {
      var categoryName = $("#custom_vod_category").val();
      var searchName = $("#vod_search_input").val();

      call_vod_ajax(categoryName, searchName);
    });

    /* press load more vods */
    var count = 0;
    $(".load-more-vod").on("click", function () {
      count++;

      /* handle per page and offset, and turn from load true */
      var perPage = parseInt($(this).data("per-page")); // 8
      var offset = count * perPage;
      var categoryName = $("#custom_vod_category").val();
      var searchName = $("#vod_search_input").val();

      var fromLoad = true;

      call_vod_ajax(categoryName, searchName, perPage, offset, fromLoad);
    });

    /* function to get vod categories */
    function get_vod_categories() {
      var preSelectedCategory = $(".custom-vod-filters").data("vodcategory");

      // console.log('vodCAT: ', preSelectedCategory);
      // Populate VOD Categories dropdown
      $.ajax({
        url: myAjax.ajaxurl,
        type: "POST",
        data: {
          action: "get_vod_categories", // AJAX action to retrieve categories
          nonce: myAjax.nonce, // for security (cross site prevention)
        },
        success: function (response) {
          $("#custom_vod_category").html(response);
          $("#custom_vod_category").val(preSelectedCategory);

          $("#custom_vod_category").chosen();

          /* call vod items -- first time here coz of pre selected category*/
          call_vod_ajax(preSelectedCategory, "");
        },
        error: function (error) {
          console.error(error);
        },
      });
    }

    // Function to make AJAX call for fetching VOD data
    function call_vod_ajax(
      categoryName,
      searchName,
      perPage = 8,
      offset = 0,
      fromLoad = false
    ) {
      // console.log("catName: ", categoryName);

      // Configuration for AJAX request
      const ajaxConfig = {
        url: myAjax.ajaxurl,
        type: "POST",
        data: {
          action: "search_vod",
          category: categoryName,
          search: searchName,
          perPage,
          offset,
          nonce: myAjax.nonce, // for security (cross site prevention)
        },
        beforeSend: function () {
          // Before sending the request, clear results and show loading indicators
          clearResultsAndShowLoader(fromLoad);
        },
        success: function (response) {
          // Handle successful response
          handleSuccess(response, fromLoad);
        },
        error: function (error) {
          // Handle AJAX error
          handleError(error);
        },
      };

      // Perform the AJAX request
      $.ajax(ajaxConfig);
    }

    // Function to clear results and show loading indicators
    function clearResultsAndShowLoader(fromLoad) {
      // Hide load more and no result indicators
      $(".load-more-vod").addClass("hidden");
      $(".vod-no-result").addClass("hidden");

      // Clear results if not appending from load
      if (!fromLoad) {
        $("#custom_vod_results").html("");
      }

      // Show loading indicator
      $(".vod-loading").removeClass("hidden");
    }

    // Function to handle successful AJAX response
    function handleSuccess(response, fromLoad) {
      // Show/hide load more based on response length
      if (response.length === 0) {
        $(".load-more-vod").addClass("hidden");
      } else {
        $(".load-more-vod").removeClass("hidden");
      }

      // Append or replace results based on fromLoad
      if (fromLoad) {
        $("#custom_vod_results").append(response);
      } else {
        $("#custom_vod_results").html(response);
      }

      // Show no result if not appending from load and response is empty
      if (!fromLoad && response.length === 0) {
        $(".vod-no-result").removeClass("hidden");
      }

      // Hide loading indicator
      $(".vod-loading").addClass("hidden");
    }

    // Function to handle AJAX errors
    function handleError(error) {
      console.error(error);
    }
    // END OF: Function to make AJAX call for fetching VOD data

    /* on open vod popup */
    $(document).on("click", ".vod-item", function () {
      var title = $(this).find(".vod-title").html();
      var director = $(this).data("director");
      var cast = $(this).data("cast");
      var country = $(this).data("country");

      var titleTochange = $(".vod-popup-holder .popup-title");
      var directorTochange = $(".vod-extra-info .director");
      var castTochange = $(".vod-extra-info .cast");
      var countryTochange = $(".vod-extra-info .place");

      titleTochange.html(title);
      directorTochange.html(director);
      castTochange.html(cast);
      countryTochange.html(country);

      /* now open popup */
      $(".vod-popup").removeClass("hidden");
    });

    /* on vod popup close */
    $(document).on("click", ".close-vod-popup", function () {
      $(".popup-title").html("");
      $(".vod-extra-info .director").html("");
      $(".vod-extra-info .cast").html("");
      $(".vod-extra-info .place").html("");

      $(this).closest(".vod-popup").addClass("hidden");
    });
  });

  /* window on load */
  $(window).on("load", function () {});

  /* window on resize */
  $(window).on("resize", function () {});
})(jQuery);
// source --> https://www.ipko.com/wp-content/themes/ipko/assets/js/vendor/chosen.jquery.min.js 
/* Chosen v1.8.7 | (c) 2011-2018 by Harvest | MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md */

(function(){var t,e,s,i,n=function(t,e){return function(){return t.apply(e,arguments)}},r=function(t,e){function s(){this.constructor=t}for(var i in e)o.call(e,i)&&(t[i]=e[i]);return s.prototype=e.prototype,t.prototype=new s,t.__super__=e.prototype,t},o={}.hasOwnProperty;(i=function(){function t(){this.options_index=0,this.parsed=[]}return t.prototype.add_node=function(t){return"OPTGROUP"===t.nodeName.toUpperCase()?this.add_group(t):this.add_option(t)},t.prototype.add_group=function(t){var e,s,i,n,r,o;for(e=this.parsed.length,this.parsed.push({array_index:e,group:!0,label:t.label,title:t.title?t.title:void 0,children:0,disabled:t.disabled,classes:t.className}),o=[],s=0,i=(r=t.childNodes).length;s<i;s++)n=r[s],o.push(this.add_option(n,e,t.disabled));return o},t.prototype.add_option=function(t,e,s){if("OPTION"===t.nodeName.toUpperCase())return""!==t.text?(null!=e&&(this.parsed[e].children+=1),this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,value:t.value,text:t.text,html:t.innerHTML,title:t.title?t.title:void 0,selected:t.selected,disabled:!0===s?s:t.disabled,group_array_index:e,group_label:null!=e?this.parsed[e].label:null,classes:t.className,style:t.style.cssText})):this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,empty:!0}),this.options_index+=1},t}()).select_to_array=function(t){var e,s,n,r,o;for(r=new i,s=0,n=(o=t.childNodes).length;s<n;s++)e=o[s],r.add_node(e);return r.parsed},e=function(){function t(e,s){this.form_field=e,this.options=null!=s?s:{},this.label_click_handler=n(this.label_click_handler,this),t.browser_is_supported()&&(this.is_multiple=this.form_field.multiple,this.set_default_text(),this.set_default_values(),this.setup(),this.set_up_html(),this.register_observers(),this.on_ready())}return t.prototype.set_default_values=function(){return this.click_test_action=function(t){return function(e){return t.test_active_click(e)}}(this),this.activate_action=function(t){return function(e){return t.activate_field(e)}}(this),this.active_field=!1,this.mouse_on_container=!1,this.results_showing=!1,this.result_highlighted=null,this.is_rtl=this.options.rtl||/\bchosen-rtl\b/.test(this.form_field.className),this.allow_single_deselect=null!=this.options.allow_single_deselect&&null!=this.form_field.options[0]&&""===this.form_field.options[0].text&&this.options.allow_single_deselect,this.disable_search_threshold=this.options.disable_search_threshold||0,this.disable_search=this.options.disable_search||!1,this.enable_split_word_search=null==this.options.enable_split_word_search||this.options.enable_split_word_search,this.group_search=null==this.options.group_search||this.options.group_search,this.search_contains=this.options.search_contains||!1,this.single_backstroke_delete=null==this.options.single_backstroke_delete||this.options.single_backstroke_delete,this.max_selected_options=this.options.max_selected_options||Infinity,this.inherit_select_classes=this.options.inherit_select_classes||!1,this.display_selected_options=null==this.options.display_selected_options||this.options.display_selected_options,this.display_disabled_options=null==this.options.display_disabled_options||this.options.display_disabled_options,this.include_group_label_in_selected=this.options.include_group_label_in_selected||!1,this.max_shown_results=this.options.max_shown_results||Number.POSITIVE_INFINITY,this.case_sensitive_search=this.options.case_sensitive_search||!1,this.hide_results_on_select=null==this.options.hide_results_on_select||this.options.hide_results_on_select},t.prototype.set_default_text=function(){return this.form_field.getAttribute("data-placeholder")?this.default_text=this.form_field.getAttribute("data-placeholder"):this.is_multiple?this.default_text=this.options.placeholder_text_multiple||this.options.placeholder_text||t.default_multiple_text:this.default_text=this.options.placeholder_text_single||this.options.placeholder_text||t.default_single_text,this.default_text=this.escape_html(this.default_text),this.results_none_found=this.form_field.getAttribute("data-no_results_text")||this.options.no_results_text||t.default_no_result_text},t.prototype.choice_label=function(t){return this.include_group_label_in_selected&&null!=t.group_label?"<b class='group-name'>"+this.escape_html(t.group_label)+"</b>"+t.html:t.html},t.prototype.mouse_enter=function(){return this.mouse_on_container=!0},t.prototype.mouse_leave=function(){return this.mouse_on_container=!1},t.prototype.input_focus=function(t){if(this.is_multiple){if(!this.active_field)return setTimeout(function(t){return function(){return t.container_mousedown()}}(this),50)}else if(!this.active_field)return this.activate_field()},t.prototype.input_blur=function(t){if(!this.mouse_on_container)return this.active_field=!1,setTimeout(function(t){return function(){return t.blur_test()}}(this),100)},t.prototype.label_click_handler=function(t){return this.is_multiple?this.container_mousedown(t):this.activate_field()},t.prototype.results_option_build=function(t){var e,s,i,n,r,o,h;for(e="",h=0,n=0,r=(o=this.results_data).length;n<r&&(s=o[n],i="",""!==(i=s.group?this.result_add_group(s):this.result_add_option(s))&&(h++,e+=i),(null!=t?t.first:void 0)&&(s.selected&&this.is_multiple?this.choice_build(s):s.selected&&!this.is_multiple&&this.single_set_selected_text(this.choice_label(s))),!(h>=this.max_shown_results));n++);return e},t.prototype.result_add_option=function(t){var e,s;return t.search_match&&this.include_option_in_results(t)?(e=[],t.disabled||t.selected&&this.is_multiple||e.push("active-result"),!t.disabled||t.selected&&this.is_multiple||e.push("disabled-result"),t.selected&&e.push("result-selected"),null!=t.group_array_index&&e.push("group-option"),""!==t.classes&&e.push(t.classes),s=document.createElement("li"),s.className=e.join(" "),t.style&&(s.style.cssText=t.style),s.setAttribute("data-option-array-index",t.array_index),s.innerHTML=t.highlighted_html||t.html,t.title&&(s.title=t.title),this.outerHTML(s)):""},t.prototype.result_add_group=function(t){var e,s;return(t.search_match||t.group_match)&&t.active_options>0?((e=[]).push("group-result"),t.classes&&e.push(t.classes),s=document.createElement("li"),s.className=e.join(" "),s.innerHTML=t.highlighted_html||this.escape_html(t.label),t.title&&(s.title=t.title),this.outerHTML(s)):""},t.prototype.results_update_field=function(){if(this.set_default_text(),this.is_multiple||this.results_reset_cleanup(),this.result_clear_highlight(),this.results_build(),this.results_showing)return this.winnow_results()},t.prototype.reset_single_select_options=function(){var t,e,s,i,n;for(n=[],t=0,e=(s=this.results_data).length;t<e;t++)(i=s[t]).selected?n.push(i.selected=!1):n.push(void 0);return n},t.prototype.results_toggle=function(){return this.results_showing?this.results_hide():this.results_show()},t.prototype.results_search=function(t){return this.results_showing?this.winnow_results():this.results_show()},t.prototype.winnow_results=function(t){var e,s,i,n,r,o,h,l,c,_,a,u,d,p,f;for(this.no_results_clear(),_=0,e=(h=this.get_search_text()).replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),c=this.get_search_regex(e),i=0,n=(l=this.results_data).length;i<n;i++)(r=l[i]).search_match=!1,a=null,u=null,r.highlighted_html="",this.include_option_in_results(r)&&(r.group&&(r.group_match=!1,r.active_options=0),null!=r.group_array_index&&this.results_data[r.group_array_index]&&(0===(a=this.results_data[r.group_array_index]).active_options&&a.search_match&&(_+=1),a.active_options+=1),f=r.group?r.label:r.text,r.group&&!this.group_search||(u=this.search_string_match(f,c),r.search_match=null!=u,r.search_match&&!r.group&&(_+=1),r.search_match?(h.length&&(d=u.index,o=f.slice(0,d),s=f.slice(d,d+h.length),p=f.slice(d+h.length),r.highlighted_html=this.escape_html(o)+"<em>"+this.escape_html(s)+"</em>"+this.escape_html(p)),null!=a&&(a.group_match=!0)):null!=r.group_array_index&&this.results_data[r.group_array_index].search_match&&(r.search_match=!0)));return this.result_clear_highlight(),_<1&&h.length?(this.update_results_content(""),this.no_results(h)):(this.update_results_content(this.results_option_build()),(null!=t?t.skip_highlight:void 0)?void 0:this.winnow_results_set_highlight())},t.prototype.get_search_regex=function(t){var e,s;return s=this.search_contains?t:"(^|\\s|\\b)"+t+"[^\\s]*",this.enable_split_word_search||this.search_contains||(s="^"+s),e=this.case_sensitive_search?"":"i",new RegExp(s,e)},t.prototype.search_string_match=function(t,e){var s;return s=e.exec(t),!this.search_contains&&(null!=s?s[1]:void 0)&&(s.index+=1),s},t.prototype.choices_count=function(){var t,e,s;if(null!=this.selected_option_count)return this.selected_option_count;for(this.selected_option_count=0,t=0,e=(s=this.form_field.options).length;t<e;t++)s[t].selected&&(this.selected_option_count+=1);return this.selected_option_count},t.prototype.choices_click=function(t){if(t.preventDefault(),this.activate_field(),!this.results_showing&&!this.is_disabled)return this.results_show()},t.prototype.keydown_checker=function(t){var e,s;switch(s=null!=(e=t.which)?e:t.keyCode,this.search_field_scale(),8!==s&&this.pending_backstroke&&this.clear_backstroke(),s){case 8:this.backstroke_length=this.get_search_field_value().length;break;case 9:this.results_showing&&!this.is_multiple&&this.result_select(t),this.mouse_on_container=!1;break;case 13:case 27:this.results_showing&&t.preventDefault();break;case 32:this.disable_search&&t.preventDefault();break;case 38:t.preventDefault(),this.keyup_arrow();break;case 40:t.preventDefault(),this.keydown_arrow()}},t.prototype.keyup_checker=function(t){var e,s;switch(s=null!=(e=t.which)?e:t.keyCode,this.search_field_scale(),s){case 8:this.is_multiple&&this.backstroke_length<1&&this.choices_count()>0?this.keydown_backstroke():this.pending_backstroke||(this.result_clear_highlight(),this.results_search());break;case 13:t.preventDefault(),this.results_showing&&this.result_select(t);break;case 27:this.results_showing&&this.results_hide();break;case 9:case 16:case 17:case 18:case 38:case 40:case 91:break;default:this.results_search()}},t.prototype.clipboard_event_checker=function(t){if(!this.is_disabled)return setTimeout(function(t){return function(){return t.results_search()}}(this),50)},t.prototype.container_width=function(){return null!=this.options.width?this.options.width:this.form_field.offsetWidth+"px"},t.prototype.include_option_in_results=function(t){return!(this.is_multiple&&!this.display_selected_options&&t.selected)&&(!(!this.display_disabled_options&&t.disabled)&&!t.empty)},t.prototype.search_results_touchstart=function(t){return this.touch_started=!0,this.search_results_mouseover(t)},t.prototype.search_results_touchmove=function(t){return this.touch_started=!1,this.search_results_mouseout(t)},t.prototype.search_results_touchend=function(t){if(this.touch_started)return this.search_results_mouseup(t)},t.prototype.outerHTML=function(t){var e;return t.outerHTML?t.outerHTML:((e=document.createElement("div")).appendChild(t),e.innerHTML)},t.prototype.get_single_html=function(){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>'},t.prototype.get_multi_html=function(){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>'},t.prototype.get_no_results_html=function(t){return'<li class="no-results">\n  '+this.results_none_found+" <span>"+this.escape_html(t)+"</span>\n</li>"},t.browser_is_supported=function(){return"Microsoft Internet Explorer"===window.navigator.appName?document.documentMode>=8:!(/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))},t.default_multiple_text="Select Some Options",t.default_single_text="Select an Option",t.default_no_result_text="No results match",t}(),(t=jQuery).fn.extend({chosen:function(i){return e.browser_is_supported()?this.each(function(e){var n,r;r=(n=t(this)).data("chosen"),"destroy"!==i?r instanceof s||n.data("chosen",new s(this,i)):r instanceof s&&r.destroy()}):this}}),s=function(s){function n(){return n.__super__.constructor.apply(this,arguments)}return r(n,e),n.prototype.setup=function(){return this.form_field_jq=t(this.form_field),this.current_selectedIndex=this.form_field.selectedIndex},n.prototype.set_up_html=function(){var e,s;return(e=["chosen-container"]).push("chosen-container-"+(this.is_multiple?"multi":"single")),this.inherit_select_classes&&this.form_field.className&&e.push(this.form_field.className),this.is_rtl&&e.push("chosen-rtl"),s={"class":e.join(" "),title:this.form_field.title},this.form_field.id.length&&(s.id=this.form_field.id.replace(/[^\w]/g,"_")+"_chosen"),this.container=t("<div />",s),this.container.width(this.container_width()),this.is_multiple?this.container.html(this.get_multi_html()):this.container.html(this.get_single_html()),this.form_field_jq.hide().after(this.container),this.dropdown=this.container.find("div.chosen-drop").first(),this.search_field=this.container.find("input").first(),this.search_results=this.container.find("ul.chosen-results").first(),this.search_field_scale(),this.search_no_results=this.container.find("li.no-results").first(),this.is_multiple?(this.search_choices=this.container.find("ul.chosen-choices").first(),this.search_container=this.container.find("li.search-field").first()):(this.search_container=this.container.find("div.chosen-search").first(),this.selected_item=this.container.find(".chosen-single").first()),this.results_build(),this.set_tab_index(),this.set_label_behavior()},n.prototype.on_ready=function(){return this.form_field_jq.trigger("chosen:ready",{chosen:this})},n.prototype.register_observers=function(){return this.container.on("touchstart.chosen",function(t){return function(e){t.container_mousedown(e)}}(this)),this.container.on("touchend.chosen",function(t){return function(e){t.container_mouseup(e)}}(this)),this.container.on("mousedown.chosen",function(t){return function(e){t.container_mousedown(e)}}(this)),this.container.on("mouseup.chosen",function(t){return function(e){t.container_mouseup(e)}}(this)),this.container.on("mouseenter.chosen",function(t){return function(e){t.mouse_enter(e)}}(this)),this.container.on("mouseleave.chosen",function(t){return function(e){t.mouse_leave(e)}}(this)),this.search_results.on("mouseup.chosen",function(t){return function(e){t.search_results_mouseup(e)}}(this)),this.search_results.on("mouseover.chosen",function(t){return function(e){t.search_results_mouseover(e)}}(this)),this.search_results.on("mouseout.chosen",function(t){return function(e){t.search_results_mouseout(e)}}(this)),this.search_results.on("mousewheel.chosen DOMMouseScroll.chosen",function(t){return function(e){t.search_results_mousewheel(e)}}(this)),this.search_results.on("touchstart.chosen",function(t){return function(e){t.search_results_touchstart(e)}}(this)),this.search_results.on("touchmove.chosen",function(t){return function(e){t.search_results_touchmove(e)}}(this)),this.search_results.on("touchend.chosen",function(t){return function(e){t.search_results_touchend(e)}}(this)),this.form_field_jq.on("chosen:updated.chosen",function(t){return function(e){t.results_update_field(e)}}(this)),this.form_field_jq.on("chosen:activate.chosen",function(t){return function(e){t.activate_field(e)}}(this)),this.form_field_jq.on("chosen:open.chosen",function(t){return function(e){t.container_mousedown(e)}}(this)),this.form_field_jq.on("chosen:close.chosen",function(t){return function(e){t.close_field(e)}}(this)),this.search_field.on("blur.chosen",function(t){return function(e){t.input_blur(e)}}(this)),this.search_field.on("keyup.chosen",function(t){return function(e){t.keyup_checker(e)}}(this)),this.search_field.on("keydown.chosen",function(t){return function(e){t.keydown_checker(e)}}(this)),this.search_field.on("focus.chosen",function(t){return function(e){t.input_focus(e)}}(this)),this.search_field.on("cut.chosen",function(t){return function(e){t.clipboard_event_checker(e)}}(this)),this.search_field.on("paste.chosen",function(t){return function(e){t.clipboard_event_checker(e)}}(this)),this.is_multiple?this.search_choices.on("click.chosen",function(t){return function(e){t.choices_click(e)}}(this)):this.container.on("click.chosen",function(t){t.preventDefault()})},n.prototype.destroy=function(){return t(this.container[0].ownerDocument).off("click.chosen",this.click_test_action),this.form_field_label.length>0&&this.form_field_label.off("click.chosen"),this.search_field[0].tabIndex&&(this.form_field_jq[0].tabIndex=this.search_field[0].tabIndex),this.container.remove(),this.form_field_jq.removeData("chosen"),this.form_field_jq.show()},n.prototype.search_field_disabled=function(){return this.is_disabled=this.form_field.disabled||this.form_field_jq.parents("fieldset").is(":disabled"),this.container.toggleClass("chosen-disabled",this.is_disabled),this.search_field[0].disabled=this.is_disabled,this.is_multiple||this.selected_item.off("focus.chosen",this.activate_field),this.is_disabled?this.close_field():this.is_multiple?void 0:this.selected_item.on("focus.chosen",this.activate_field)},n.prototype.container_mousedown=function(e){var s;if(!this.is_disabled)return!e||"mousedown"!==(s=e.type)&&"touchstart"!==s||this.results_showing||e.preventDefault(),null!=e&&t(e.target).hasClass("search-choice-close")?void 0:(this.active_field?this.is_multiple||!e||t(e.target)[0]!==this.selected_item[0]&&!t(e.target).parents("a.chosen-single").length||(e.preventDefault(),this.results_toggle()):(this.is_multiple&&this.search_field.val(""),t(this.container[0].ownerDocument).on("click.chosen",this.click_test_action),this.results_show()),this.activate_field())},n.prototype.container_mouseup=function(t){if("ABBR"===t.target.nodeName&&!this.is_disabled)return this.results_reset(t)},n.prototype.search_results_mousewheel=function(t){var e;if(t.originalEvent&&(e=t.originalEvent.deltaY||-t.originalEvent.wheelDelta||t.originalEvent.detail),null!=e)return t.preventDefault(),"DOMMouseScroll"===t.type&&(e*=40),this.search_results.scrollTop(e+this.search_results.scrollTop())},n.prototype.blur_test=function(t){if(!this.active_field&&this.container.hasClass("chosen-container-active"))return this.close_field()},n.prototype.close_field=function(){return t(this.container[0].ownerDocument).off("click.chosen",this.click_test_action),this.active_field=!1,this.results_hide(),this.container.removeClass("chosen-container-active"),this.clear_backstroke(),this.show_search_field_default(),this.search_field_scale(),this.search_field.blur()},n.prototype.activate_field=function(){if(!this.is_disabled)return this.container.addClass("chosen-container-active"),this.active_field=!0,this.search_field.val(this.search_field.val()),this.search_field.focus()},n.prototype.test_active_click=function(e){var s;return(s=t(e.target).closest(".chosen-container")).length&&this.container[0]===s[0]?this.active_field=!0:this.close_field()},n.prototype.results_build=function(){return this.parsing=!0,this.selected_option_count=null,this.results_data=i.select_to_array(this.form_field),this.is_multiple?this.search_choices.find("li.search-choice").remove():(this.single_set_selected_text(),this.disable_search||this.form_field.options.length<=this.disable_search_threshold?(this.search_field[0].readOnly=!0,this.container.addClass("chosen-container-single-nosearch")):(this.search_field[0].readOnly=!1,this.container.removeClass("chosen-container-single-nosearch"))),this.update_results_content(this.results_option_build({first:!0})),this.search_field_disabled(),this.show_search_field_default(),this.search_field_scale(),this.parsing=!1},n.prototype.result_do_highlight=function(t){var e,s,i,n,r;if(t.length){if(this.result_clear_highlight(),this.result_highlight=t,this.result_highlight.addClass("highlighted"),i=parseInt(this.search_results.css("maxHeight"),10),r=this.search_results.scrollTop(),n=i+r,s=this.result_highlight.position().top+this.search_results.scrollTop(),(e=s+this.result_highlight.outerHeight())>=n)return this.search_results.scrollTop(e-i>0?e-i:0);if(s<r)return this.search_results.scrollTop(s)}},n.prototype.result_clear_highlight=function(){return this.result_highlight&&this.result_highlight.removeClass("highlighted"),this.result_highlight=null},n.prototype.results_show=function(){return this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.container.addClass("chosen-with-drop"),this.results_showing=!0,this.search_field.focus(),this.search_field.val(this.get_search_field_value()),this.winnow_results(),this.form_field_jq.trigger("chosen:showing_dropdown",{chosen:this}))},n.prototype.update_results_content=function(t){return this.search_results.html(t)},n.prototype.results_hide=function(){return this.results_showing&&(this.result_clear_highlight(),this.container.removeClass("chosen-with-drop"),this.form_field_jq.trigger("chosen:hiding_dropdown",{chosen:this})),this.results_showing=!1},n.prototype.set_tab_index=function(t){var e;if(this.form_field.tabIndex)return e=this.form_field.tabIndex,this.form_field.tabIndex=-1,this.search_field[0].tabIndex=e},n.prototype.set_label_behavior=function(){if(this.form_field_label=this.form_field_jq.parents("label"),!this.form_field_label.length&&this.form_field.id.length&&(this.form_field_label=t("label[for='"+this.form_field.id+"']")),this.form_field_label.length>0)return this.form_field_label.on("click.chosen",this.label_click_handler)},n.prototype.show_search_field_default=function(){return this.is_multiple&&this.choices_count()<1&&!this.active_field?(this.search_field.val(this.default_text),this.search_field.addClass("default")):(this.search_field.val(""),this.search_field.removeClass("default"))},n.prototype.search_results_mouseup=function(e){var s;if((s=t(e.target).hasClass("active-result")?t(e.target):t(e.target).parents(".active-result").first()).length)return this.result_highlight=s,this.result_select(e),this.search_field.focus()},n.prototype.search_results_mouseover=function(e){var s;if(s=t(e.target).hasClass("active-result")?t(e.target):t(e.target).parents(".active-result").first())return this.result_do_highlight(s)},n.prototype.search_results_mouseout=function(e){if(t(e.target).hasClass("active-result")||t(e.target).parents(".active-result").first())return this.result_clear_highlight()},n.prototype.choice_build=function(e){var s,i;return s=t("<li />",{"class":"search-choice"}).html("<span>"+this.choice_label(e)+"</span>"),e.disabled?s.addClass("search-choice-disabled"):((i=t("<a />",{"class":"search-choice-close","data-option-array-index":e.array_index})).on("click.chosen",function(t){return function(e){return t.choice_destroy_link_click(e)}}(this)),s.append(i)),this.search_container.before(s)},n.prototype.choice_destroy_link_click=function(e){if(e.preventDefault(),e.stopPropagation(),!this.is_disabled)return this.choice_destroy(t(e.target))},n.prototype.choice_destroy=function(t){if(this.result_deselect(t[0].getAttribute("data-option-array-index")))return this.active_field?this.search_field.focus():this.show_search_field_default(),this.is_multiple&&this.choices_count()>0&&this.get_search_field_value().length<1&&this.results_hide(),t.parents("li").first().remove(),this.search_field_scale()},n.prototype.results_reset=function(){if(this.reset_single_select_options(),this.form_field.options[0].selected=!0,this.single_set_selected_text(),this.show_search_field_default(),this.results_reset_cleanup(),this.trigger_form_field_change(),this.active_field)return this.results_hide()},n.prototype.results_reset_cleanup=function(){return this.current_selectedIndex=this.form_field.selectedIndex,this.selected_item.find("abbr").remove()},n.prototype.result_select=function(t){var e,s;if(this.result_highlight)return e=this.result_highlight,this.result_clear_highlight(),this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.is_multiple?e.removeClass("active-result"):this.reset_single_select_options(),e.addClass("result-selected"),s=this.results_data[e[0].getAttribute("data-option-array-index")],s.selected=!0,this.form_field.options[s.options_index].selected=!0,this.selected_option_count=null,this.is_multiple?this.choice_build(s):this.single_set_selected_text(this.choice_label(s)),this.is_multiple&&(!this.hide_results_on_select||t.metaKey||t.ctrlKey)?t.metaKey||t.ctrlKey?this.winnow_results({skip_highlight:!0}):(this.search_field.val(""),this.winnow_results()):(this.results_hide(),this.show_search_field_default()),(this.is_multiple||this.form_field.selectedIndex!==this.current_selectedIndex)&&this.trigger_form_field_change({selected:this.form_field.options[s.options_index].value}),this.current_selectedIndex=this.form_field.selectedIndex,t.preventDefault(),this.search_field_scale())},n.prototype.single_set_selected_text=function(t){return null==t&&(t=this.default_text),t===this.default_text?this.selected_item.addClass("chosen-default"):(this.single_deselect_control_build(),this.selected_item.removeClass("chosen-default")),this.selected_item.find("span").html(t)},n.prototype.result_deselect=function(t){var e;return e=this.results_data[t],!this.form_field.options[e.options_index].disabled&&(e.selected=!1,this.form_field.options[e.options_index].selected=!1,this.selected_option_count=null,this.result_clear_highlight(),this.results_showing&&this.winnow_results(),this.trigger_form_field_change({deselected:this.form_field.options[e.options_index].value}),this.search_field_scale(),!0)},n.prototype.single_deselect_control_build=function(){if(this.allow_single_deselect)return this.selected_item.find("abbr").length||this.selected_item.find("span").first().after('<abbr class="search-choice-close"></abbr>'),this.selected_item.addClass("chosen-single-with-deselect")},n.prototype.get_search_field_value=function(){return this.search_field.val()},n.prototype.get_search_text=function(){return t.trim(this.get_search_field_value())},n.prototype.escape_html=function(e){return t("<div/>").text(e).html()},n.prototype.winnow_results_set_highlight=function(){var t,e;if(e=this.is_multiple?[]:this.search_results.find(".result-selected.active-result"),null!=(t=e.length?e.first():this.search_results.find(".active-result").first()))return this.result_do_highlight(t)},n.prototype.no_results=function(t){var e;return e=this.get_no_results_html(t),this.search_results.append(e),this.form_field_jq.trigger("chosen:no_results",{chosen:this})},n.prototype.no_results_clear=function(){return this.search_results.find(".no-results").remove()},n.prototype.keydown_arrow=function(){var t;return this.results_showing&&this.result_highlight?(t=this.result_highlight.nextAll("li.active-result").first())?this.result_do_highlight(t):void 0:this.results_show()},n.prototype.keyup_arrow=function(){var t;return this.results_showing||this.is_multiple?this.result_highlight?(t=this.result_highlight.prevAll("li.active-result")).length?this.result_do_highlight(t.first()):(this.choices_count()>0&&this.results_hide(),this.result_clear_highlight()):void 0:this.results_show()},n.prototype.keydown_backstroke=function(){var t;return this.pending_backstroke?(this.choice_destroy(this.pending_backstroke.find("a").first()),this.clear_backstroke()):(t=this.search_container.siblings("li.search-choice").last()).length&&!t.hasClass("search-choice-disabled")?(this.pending_backstroke=t,this.single_backstroke_delete?this.keydown_backstroke():this.pending_backstroke.addClass("search-choice-focus")):void 0},n.prototype.clear_backstroke=function(){return this.pending_backstroke&&this.pending_backstroke.removeClass("search-choice-focus"),this.pending_backstroke=null},n.prototype.search_field_scale=function(){var e,s,i,n,r,o,h;if(this.is_multiple){for(r={position:"absolute",left:"-1000px",top:"-1000px",display:"none",whiteSpace:"pre"},s=0,i=(o=["fontSize","fontStyle","fontWeight","fontFamily","lineHeight","textTransform","letterSpacing"]).length;s<i;s++)r[n=o[s]]=this.search_field.css(n);return(e=t("<div />").css(r)).text(this.get_search_field_value()),t("body").append(e),h=e.width()+25,e.remove(),this.container.is(":visible")&&(h=Math.min(this.container.outerWidth()-10,h)),this.search_field.width(h)}},n.prototype.trigger_form_field_change=function(t){return this.form_field_jq.trigger("input",t),this.form_field_jq.trigger("change",t)},n}()}).call(this);