PageSourceSearch

https://bikotels.com/wp-content/plugins/category-ajax-filter-pro/assets/js/script.js?ver=10.4

js bikotels.com collected 2026-10-04 13:28:55 UTC 41,207 bytes, 1,194 lines download raw bytes

1jQuery(function ($) {
2  /**
3   * Refresh frontend AJAX nonce via uncached admin-ajax.
4   * Fixes stale localized nonces in full-page caches (same pattern as Free classic).
5   */
6  function cafRefreshNonce() {
7    if (typeof tc_caf_ajax === "undefined" || !tc_caf_ajax.ajax_url) {
8      return $.Deferred().reject().promise();
9    }
10    return $.ajax({
11      url: tc_caf_ajax.ajax_url,
12      type: "POST",
13      dataType: "json",
14      cache: false,
15      data: { action: "tc_caf_refresh_nonce" },
16    }).done(function (res) {
17      if (res && res.success && res.data && res.data.nonce) {
18        tc_caf_ajax.nonce = res.data.nonce;
19      }
20    });
21  }
22
23  function cafIsAnalyticsNonceFailure(xhr) {
24    if (!xhr) {
25      return false;
26    }
27    if (Number(xhr.status) === 403) {
28      return true;
29    }
30    var body = (xhr.responseText || "").toString().trim();
31    return body === "-1" || body === "0";
32  }
33
34  function parseLegacyTermTokens($container) {
35    var raw = String($container.attr("data-terms") || "");
36    if (!raw) return [];
37    return raw
38      .split(",")
39      .map(function (v) {
40        return String(v || "").trim();
41      })
42      .filter(function (v) {
43        return v !== "" && v !== "0" && v.toLowerCase() !== "all";
44      });
45  }
46
47  function deriveLegacyTaxFromToken(token, fallbackTax) {
48    if (token.indexOf("___") > -1) {
49      return token.split("___")[0] || "";
50    }
51    return String(fallbackTax || "");
52  }
53
54  function deriveLegacyTermIdFromToken(token) {
55    if (token.indexOf("___") > -1) {
56      return parseInt(token.split("___")[1] || "0", 10) || 0;
57    }
58    return parseInt(token || "0", 10) || 0;
59  }
60
61  function setLegacyInteraction($container, interaction) {
62    if ($container && $container.length) {
63      $container.data("cafLegacyInteraction", interaction || null);
64    }
65  }
66
67  function getLegacyInteraction($container) {
68    if (!$container || !$container.length) return null;
69    return $container.data("cafLegacyInteraction") || null;
70  }
71
72  function clearLegacyInteraction($container) {
73    if ($container && $container.length) {
74      $container.removeData("cafLegacyInteraction");
75    }
76  }
77
78  // Expose helpers for legacy global functions (e.g. get_posts) outside this closure.
79  window.CAFLegacyAnalytics = window.CAFLegacyAnalytics || {};
80  window.CAFLegacyAnalytics.setInteraction = setLegacyInteraction;
81  window.CAFLegacyAnalytics.getInteraction = getLegacyInteraction;
82  window.CAFLegacyAnalytics.clearInteraction = clearLegacyInteraction;
83  window.CAFLegacyAnalytics.trackEvent = trackLegacyAnalyticsEvent;
84
85  window.CAFLegacyFilterAjax = window.CAFLegacyFilterAjax || (function () {
86    var xhrs = Object.create(null);
87    return {
88      abortPending: function (key) {
89        if (!key || !xhrs[key]) {
90          return;
91        }
92        try {
93          xhrs[key].abort();
94        } catch (e) {
95          /* noop */
96        }
97        delete xhrs[key];
98      },
99      setPending: function (key, jqXHR) {
100        xhrs[key] = jqXHR;
101      },
102      clearIfCurrent: function (key, jqXHR) {
103        if (xhrs[key] === jqXHR) {
104          delete xhrs[key];
105        }
106      }
107    };
108  })();
109
110  function trackLegacyAnalyticsEvent($container, eventType, interaction, options) {
111    if (typeof tc_caf_ajax === "undefined" || !$container || !$container.length) {
112      return;
113    }
114    var analyticsEnabled = String($container.attr("data-caf-analytics-enabled") || "0").trim();
115    if (analyticsEnabled !== "1") {
116      return;
117    }
118    var filterId = String($container.attr("data-filter-id") || "").trim();
119    if (!/^\d+$/.test(filterId)) {
120      return;
121    }
122
123    var retried = !!(options && options._nonceRetried);
124    var payload = {
125      action: "tc_caf_track_analytics_event",
126      nonce: tc_caf_ajax.nonce,
127      filter_id: filterId,
128      event_type: eventType
129    };
130
131    if (interaction && interaction.taxonomy && interaction.term_id) {
132      payload.taxonomy = interaction.taxonomy;
133      payload.term_id = interaction.term_id;
134    }
135    if (interaction && interaction.meta && typeof interaction.meta === "object") {
136      payload.meta = interaction.meta;
137    }
138
139    // Beacon cannot retry; rely on proactive cafRefreshNonce() at boot.
140    if (options && options.useBeacon === true && typeof navigator !== "undefined" && typeof navigator.sendBeacon === "function") {
141      var formData = new FormData();
142      Object.keys(payload).forEach(function (key) {
143        var value = payload[key];
144        if (value && typeof value === "object") {
145          Object.keys(value).forEach(function (metaKey) {
146            formData.append("meta[" + metaKey + "]", value[metaKey]);
147          });
148        } else {
149          formData.append(key, value);
150        }
151      });
152      navigator.sendBeacon(tc_caf_ajax.ajax_url, formData);
153      return;
154    }
155
156    $.ajax({
157      url: tc_caf_ajax.ajax_url,
158      type: "POST",
159      data: payload,
160      error: function (xhr) {
161        if (!retried && cafIsAnalyticsNonceFailure(xhr)) {
162          cafRefreshNonce().done(function () {
163            trackLegacyAnalyticsEvent($container, eventType, interaction, Object.assign({}, options || {}, {
164              _nonceRetried: true,
165              useBeacon: false
166            }));
167          });
168        }
169      }
170    });
171  }
172
173  function buildLegacyInteraction($container, eventType, explicitToken) {
174    var tokens = parseLegacyTermTokens($container);
175    var fallbackTax = String($container.attr("data-tax") || "");
176    var primaryToken = explicitToken || (tokens.length ? tokens[0] : "");
177    var taxonomy = deriveLegacyTaxFromToken(primaryToken, fallbackTax);
178    var termId = deriveLegacyTermIdFromToken(primaryToken);
179    var searchKeyword = $.trim($container.find("#caf-search-input").val() || "");
180
181    var interaction = {
182      event_type: eventType,
183      meta: {
184        source: "legacy_shortcode",
185        interaction_type: eventType,
186        term: tokens.join(","),
187        term_token: primaryToken || "",
188        tax: tokens.map(function (t) {
189          return deriveLegacyTaxFromToken(t, fallbackTax);
190        }).filter(Boolean).join(","),
191        selected_terms_count: tokens.length,
192        has_search_query: searchKeyword ? "yes" : "no",
193        search_keyword: searchKeyword || ""
194      }
195    };
196
197    if (taxonomy && termId > 0) {
198      interaction.taxonomy = taxonomy;
199      interaction.term_id = termId;
200    }
201
202    return interaction;
203  }
204
205  /* SEARCH BAR FUNCTIONS */
206  $(document).on("keypress", function (e) {
207    if (e.which == 13) {
208      search_submit(e.target);
209    }
210  });
211  $("#caf-search-sub").click(function () {
212    search_submit($(this));
213  });
214  $(".manage-caf-search-icon i").click(function () {
215    if ($(this).hasClass("fa-search")) {
216      var cont = $(this).closest("#caf-post-layout-container");
217      $(cont)
218        .find(
219          ".caf-filter-layout.srch-on.search-layout2 .caf-manage-search-bar"
220        )
221        .addClass("active");
222      $(this).removeClass("fa-search").addClass("fa-times");
223    } else {
224      var cont = $(this).closest("#caf-post-layout-container");
225      $(cont)
226        .find(
227          ".caf-filter-layout.srch-on.search-layout2 .caf-manage-search-bar"
228        )
229        .removeClass("active");
230      $(this).removeClass("fa-times").addClass("fa-search");
231    }
232  });
233
234  /* TABS SCROLLER FUNCTIONS */
235  $(".caf-scroll-right i").click(function () {
236    var total = parseInt($(this).attr("data-count")) + 1;
237    var post_per_page = "5";
238    var len = $(".caf-tab-layout ul li.caf-tab-hide").length;
239    var current_page = parseInt(len / 5);
240    var next_page = current_page + 1;
241    var show = next_page * post_per_page;
242    var ext = total - len;
243    if (len < total && ext >= post_per_page) {
244      $(".caf-tab-layout ul").each(function (i) {
245        var div = $(this).find("li:not('.caf-tab-hide'):lt(5)");
246        $(div).addClass("caf-tab-hide");
247      });
248    }
249  });
250
251  $(".caf-scroll-left i").click(function () {
252    $(".caf-tab-layout ul").each(function (i) {
253      var div = $(this).find("li.caf-tab-hide:gt(-5)");
254      $(div).removeClass("caf-tab-hide");
255    });
256  });
257
258  /* POPUP FUNCTIONS */
259
260  function search_submit(div) {
261    var cl_pagination = $(div).attr("class");
262    if (cl_pagination == "prev-next-input") {
263      pagination_submit(div);
264      return false;
265    }
266    var cont = $(div).closest("#caf-post-layout-container");
267    var sr_val = $(cont).find("#caf-search-input").val();
268    if (sr_val != "") {
269      var divc = $(cont).attr("data-target-div");
270      var params = get_params(1, divc);
271      params.search_string = sr_val;
272      setLegacyInteraction($(cont), buildLegacyInteraction($(cont), "search"));
273      get_posts(params);
274    }
275  }
276
277  function get_params($page, div) {
278    var div = "." + div;
279
280    var params = {
281      page: $page,
282      tax: $(div).attr("data-tax"),
283      "post-type": $(div).attr("data-post-type"),
284      term: $(div).attr("data-terms"),
285      "per-page": $(div).attr("data-per-page"),
286      "filter-id": $(div).attr("data-filter-id"),
287      "caf-post-layout": $(div).attr("data-post-layout"),
288      "data-target-div": div,
289      "data-filter-layout": $(div).attr("data-filter-layout"),
290      "data-relation": $(div).attr("data-relation"),
291      "data-default-term": $(div).attr("data-default-term"),
292      "current-post-id": $(div).attr("current-post-id"),
293      "data-order-by":$(div).attr('data-order-by'),
294      "data-order-type":$(div).attr('data-order-type')
295    };
296    if ($("#caf-search-input").val() != "") {
297      params.search_string = $("#caf-search-input").val();
298    }
299    // if(params['data-default-term']!='all') {
300    //   params['term']=params['data-default-term'];
301
302    // }
303    return params;
304  }
305
306  // Always get a fresh nonce first (fixes stale nonce in cached HTML).
307  cafRefreshNonce().always(function () {
308    $(".caf-post-layout-container").each(function (i) {
309      var div = $(this).attr("data-target-div");
310      var params = get_params(1, div);
311      params["first"] = "first";
312      get_posts(params);
313    });
314  });
315
316  $("ul.dropdown li a").click(function () {
317    var cat = $(this).text();
318    $(this).closest("ul.dropdown").find("span.result").html(cat);
319    //$("ul.dropdown span.result").html(cat);
320  });
321
322  function pagination_submit(e) {
323    var page = parseInt(e.value);
324    var div = $(e)
325      .closest(".caf-post-layout-container")
326      .attr("data-target-div");
327    var perform = "pagination";
328    /* SCROLLING FUNCTION START */
329    cafScrollToDiv(div);
330    /** SCROLLING END **/
331    var params = get_params(page, div);
332
333    if (params["data-filter-layout"] != "alphabetical-layout") {
334      params["caf-perform"] = perform;
335    }
336
337    var div_new = "#caf-post-layout-container." + div;
338
339    if ($(div_new).attr("data-filter-layout") == "multiple-taxonomy-filter2") {
340      params["data-filter-layout"] = "multiple-taxonomy-filter2";
341    }
342
343    if (params["data-filter-layout"] == "multiple-checkbox") {
344      if ($("#caf-multiple-check-filter li .check_box:checked").length > 0) {
345        params["data-filter-layout"] = "multiple-checkbox2";
346      } else {
347        params["data-filter-layout"] = "multiple-checkbox";
348      }
349    }
350    get_posts(params);
351    //}
352  }
353
354  $(".caf-post-layout-container").on(
355    "click",
356    ".caf-pagi-btn,.caf-filter-container li a,.caf-pagination a,.caf-alpha-layout li",
357    function clickaction(e) {
358      var div = e.currentTarget.getAttribute("data-target-div");
359      var current_id = e.currentTarget.getAttribute("data-main-id");
360
361      if (current_id == "flt") {
362        $("." + div + " .caf-filter-layout ul li a").each(function () {
363          $(this).removeClass("active");
364        });
365        if ($("." + div).attr("data-filter-layout") == "alphabetical-layout") {
366          $("." + div + " .caf-filter-layout ul li").each(function () {
367            $(this).removeClass("active");
368          });
369        }
370        var id = $(this).attr("data-id");
371        $(this).addClass("active");
372        $("." + div).attr("data-terms", id);
373        $page = "1";
374        if (id.indexOf(",") > -1) {
375          var perform = "filter-all";
376        } else {
377          var perform = "filter";
378        }
379        setLegacyInteraction($("." + div), buildLegacyInteraction($("." + div), "click", id));
380      } else {
381        var div = e.delegateTarget.getAttribute("data-target-div");
382        $page = parseInt($(this).attr("href").replace(/\D/g, ""));
383        //caf_performance("pagination");
384        //params["data-filter-layout"]="multiple-taxonomy-filter2";
385        var perform = "pagination";
386      }
387      /* SCROLLING FUNCTION START */
388      cafScrollToDiv(div);
389      /** SCROLLING END **/
390      var params = get_params($page, div);
391      if (params["data-filter-layout"] != "alphabetical-layout") {
392        params["caf-perform"] = perform;
393      }
394      var div_new = "#caf-post-layout-container." + div;
395      if (
396        $(div_new).attr("data-filter-layout") == "multiple-taxonomy-filter2"
397      ) {
398        params["data-filter-layout"] = "multiple-taxonomy-filter2";
399      }
400      if (params["data-filter-layout"] == "multiple-checkbox") {
401        if ($("#caf-multiple-check-filter li .check_box:checked").length > 0) {
402          params["data-filter-layout"] = "multiple-checkbox2";
403        } else {
404          params["data-filter-layout"] = "multiple-checkbox";
405        }
406      }
407      get_posts(params);
408      e.preventDefault();
409    }
410  );
411
412  /* START FUNCTION FOR MULTIPLE CHECKBOX FILTER */
413  $(".caf-post-layout-container").on(
414    "click",
415    "#caf-multiple-check-filter li .check_box",
416    function (e) {
417      var div = e.currentTarget.getAttribute("data-target-div");
418      var div_new = "#caf-post-layout-container." + div;
419      var current_id = e.currentTarget.id;
420      var cr_tr = $("#" + current_id).val();
421      var v = [];
422      i = 0;
423
424      $("#caf-multiple-check-filter li .check_box:checked").each(function () {
425        v[i++] = $(this).val();
426      });
427
428      var t = v.toString();
429      if (t == "") {
430        var sel_terms = $("." + div).attr("data-selected-terms");
431        $("." + div).attr("data-terms", sel_terms);
432      } else {
433        $("." + div).attr("data-terms", t);
434      }
435
436      $page = "1";
437      var params = get_params($page, div);
438      params["caf-perform"] = "filter";
439      params["caf-perform-term"] = cr_tr;
440      setLegacyInteraction($("." + div), buildLegacyInteraction($("." + div), "click", cr_tr));
441      //params["caf-perform"]='filter';
442      jQuery(div_new).attr("data-filter-layout", "");
443      if ($("#caf-multiple-check-filter li .check_box:checked").length > 0) {
444        params["data-filter-layout"] = "multiple-checkbox2";
445      } else {
446        params["data-filter-layout"] = "multiple-checkbox";
447      }
448      cafScrollToDiv(div);
449      get_posts(params);
450      //e.preventDefault();
451    }
452  );
453  /* END FUNCTION FOR MULTIPLE CHECKBOX FILTER */
454
455  /* START FUNCTION FOR MULTIPLE TAXONOMY FILTER */
456  $(".caf-post-layout-container").on(
457    "click",
458    "#caf-multiple-taxonomy-filter li .check_box",
459    function (e) {
460
461      if (!$(this).closest("li").hasClass("act")) {
462        $(this).closest("li").addClass("act");
463      } else {
464        $(this).closest("li").removeClass("act");
465      }
466      var div = e.currentTarget.getAttribute("data-target-div");
467      var div_new = "#caf-post-layout-container." + div;
468
469      var current_id = e.currentTarget.id;
470      var cr_tr = $("#" + current_id).val();
471      var v = [];
472      i = 0;
473      if($(this).closest('.caf-post-layout-container').find(".caf-active-filters").length>0) {
474      set_active_filters($(this).closest('.caf-post-layout-container'));
475      }
476      $("#caf-multiple-taxonomy-filter li .check_box:checked").each(
477        function () {
478          v[i++] = $(this).val();
479        }
480      );
481
482      var t = v.toString();
483      if (t == "") {
484        var sel_terms = $("." + div).attr("data-selected-terms");
485        $("." + div).attr("data-terms", sel_terms);
486      } else {
487        $("." + div).attr("data-terms", t);
488      }
489
490      $page = "1";
491      var params = get_params($page, div);
492      params["caf-perform"] = "filter";
493      params["caf-perform-term"] = cr_tr;
494      setLegacyInteraction($("." + div), buildLegacyInteraction($("." + div), "click", cr_tr));
495
496      if (
497        v.filter(function (e) {
498          return e !== "0";
499        }).length == 1
500      ) {
501        params["data-filter-layout"] = "multiple-taxonomy-filter";
502        jQuery(div_new).attr("data-filter-layout", "multiple-taxonomy-filter");
503      }
504
505      if ($("#caf-multiple-taxonomy-filter li .check_box:checked").length > 1) {
506        params["data-filter-layout"] = "multiple-taxonomy-filter2";
507        jQuery(div_new).attr("data-filter-layout", "multiple-taxonomy-filter2");
508      } else {
509        params["data-filter-layout"] = "multiple-taxonomy-filter";
510        jQuery(div_new).attr("data-filter-layout", "multiple-taxonomy-filter");
511      }
512      cafScrollToDiv(div);
513      get_posts(params);
514      //e.preventDefault();
515    }
516  );
517  /* END FUNCTION FOR MULTIPLE TAXONOMY FILTER */
518
519  /* START FUNCTION FOR MULTIPLE TAXONOMY HORIZONTAL FILTER */
520  $(".caf-post-layout-container").on(
521    "click",
522    ".caf_select_multi_btn",
523    function (e) {
524      var div = e.currentTarget.getAttribute("data-target-div");
525      var div_new = "#caf-post-layout-container." + div;
526      var current_id = e.currentTarget.id;
527      var v = [];
528      i = 0;
529      $(".caf_select_multi").each(function () {
530        v[i++] = $(this).val();
531      });
532      const allEqual = (v) => v.every((val) => val === v[0]);
533      var t = v.toString();
534      if (t == "" || allEqual(v)) {
535        var sel_terms = $("." + div).attr("data-selected-terms");
536        $("." + div).attr("data-terms", sel_terms);
537      } else {
538        $("." + div).attr("data-terms", t);
539      }
540
541      $page = "1";
542      var params = get_params($page, div);
543      //params["caf-perform"]='filter';
544      if (
545        v.filter(function (e) {
546          return e !== "0";
547        }).length == 1
548      ) {
549        params["data-filter-layout"] = "multiple-taxonomy-filter";
550        jQuery(div_new).attr("data-filter-layout", "multiple-taxonomy-filter");
551      }
552
553      if ($(".caf_select_multi").length > 1 && allEqual(v) == false) {
554        params["data-filter-layout"] = "multiple-taxonomy-filter2";
555        jQuery(div_new).attr("data-filter-layout", "multiple-taxonomy-filter2");
556      } else {
557        params["data-filter-layout"] = "multiple-taxonomy-filter";
558        jQuery(div_new).attr("data-filter-layout", "multiple-taxonomy-filter");
559      }
560
561      /* SCROLLING FUNCTION START */
562      cafScrollToDiv(div);
563      /** SCROLLING END **/
564      get_posts(params);
565      //e.preventDefault();
566    }
567  );
568  /* END FUNCTION FOR MULTIPLE TAXONOMY HORIZONTAL FILTER */
569
570  /* START FUNCTION FOR MULTIPLE TAXONOMY HORIZONTAL MODERN FILTER */
571  $("ul.caf-multi-drop-sub li").click(function () {
572    var data_name = $(this).attr("data-name");
573    var data_value = $(this).attr("data-value");
574
575    var div = $(this)
576      .closest(".caf-post-layout-container")
577      .attr("data-target-div");
578    var div_new = "#caf-post-layout-container." + div;
579    $(this)
580      .closest("ul.caf-multi-drop-sub")
581      .find("li")
582      .each(function () {
583        $(this).removeClass("active");
584      });
585    $(this).addClass("active");
586    $(this).closest("ul.caf-multi-drop-sub").removeClass("active");
587    $(this)
588      .closest("ul.caf_select_multi")
589      .find("li.caf_select_multi_default span")
590      .text(data_name);
591    $(this)
592      .closest("ul.caf_select_multi")
593      .find("li.caf_select_multi_default")
594      .attr("data-value", data_value);
595    var v = [];
596    i = 0;
597    $("li.caf_select_multi_default").each(function () {
598      v[i++] = $(this).attr("data-value");
599    });
600    const allEqual = (v) => v.every((val) => val === v[0]);
601    var t = v.toString();
602    if (t == "" || allEqual(v)) {
603      var sel_terms = $("." + div).attr("data-selected-terms");
604      $("." + div).attr("data-terms", sel_terms);
605    } else {
606      $("." + div).attr("data-terms", t);
607    }
608
609    $page = "1";
610    var params = get_params($page, div);
611    params["caf-perform"] = "filter";
612    params["caf-perform-term"] = data_value;
613    setLegacyInteraction($("." + div), buildLegacyInteraction($("." + div), "click", data_value));
614
615    if (
616      v.filter(function (e) {
617        return e !== "0";
618      }).length == 1
619    ) {
620      params["data-filter-layout"] = "multiple-taxonomy-filter";
621      jQuery(div_new).attr("data-filter-layout", "multiple-taxonomy-filter");
622    } else if ($(".caf_select_multi").length > 1 && allEqual(v) == false) {
623      params["data-filter-layout"] = "multiple-taxonomy-filter2";
624      jQuery(div_new).attr("data-filter-layout", "multiple-taxonomy-filter2");
625    } else {
626      params["data-filter-layout"] = "multiple-taxonomy-filter";
627      jQuery(div_new).attr("data-filter-layout", "multiple-taxonomy-filter");
628    }
629
630    cafScrollToDiv(div);
631    get_posts(params);
632  });
633  /* END FUNCTION FOR MULTIPLE TAXONOMY HORIZONTAL MODERN FILTER */
634
635  /* START FUNCTION FOR PARENT CHILD CATEGORY FILTER  */
636  $(".caf-post-layout-container").on(
637    "click",
638    ".caf-pcf-layout li .check_box",
639    function (e) {
640      if (!$(this).closest("li").hasClass("act")) {
641        $(this).closest("li").addClass("act");
642      } else {
643        $(this).closest("li").removeClass("act");
644      }
645      var div = e.currentTarget.getAttribute("data-target-div");
646      var div_new = "#caf-post-layout-container." + div;
647      var current_id = e.currentTarget.id;
648      var cr_tr = $("#" + current_id).val();
649      var v = [];
650      i = 0;
651      $(".caf-pcf-layout li .check_box:checked").each(function () {
652        v[i++] = $(this).val();
653      });
654
655      var t = v.toString();
656      if (t == "") {
657        var sel_terms = $("." + div).attr("data-selected-terms");
658        $("." + div).attr("data-terms", sel_terms);
659      } else {
660        $("." + div).attr("data-terms", t);
661      }
662
663      $page = "1";
664      var params = get_params($page, div);
665      params["caf-perform"] = "filter";
666      params["caf-perform-term"] = cr_tr;
667      setLegacyInteraction($("." + div), buildLegacyInteraction($("." + div), "click", cr_tr));
668      jQuery(div_new).attr("data-filter-layout", "multiple-taxonomy-filter2");
669      if ($(".caf-pcf-layout li .check_box:checked").length > 1) {
670        params["data-filter-layout"] = "multiple-taxonomy-filter2";
671      } else {
672        params["data-filter-layout"] = "multiple-taxonomy-filter";
673      }
674      cafScrollToDiv(div);
675      get_posts(params);
676      //e.preventDefault();
677    }
678  );
679  /* END FUNCTION FOR PARENT CHILD CATEGORY FILTER*/
680
681  $(".caf-post-layout-container").on("click", ".tp_load_more", function (e) {
682    var $current = $(this).attr("data-current");
683    var $next = $(this).attr("data-next");
684    var $total = $(this).attr("data-total");
685    var div = e.delegateTarget.getAttribute("data-target-div");
686    $page = parseInt($next);
687    var params = get_params($page, div);
688    if (params["data-filter-layout"] == "multiple-checkbox") {
689      if ($("#caf-multiple-check-filter li .check_box:checked").length > 0) {
690        params["data-filter-layout"] = "multiple-checkbox2";
691      } else {
692        params["data-filter-layout"] = "multiple-checkbox";
693      }
694    }
695    if ($page <= $total) {
696      get_posts_load(params);
697    } else {
698      $(this).fadeOut();
699    }
700    e.preventDefault();
701  });
702  $(".caf-post-layout-container").on("change", ".caf-sort-front", function (e) {
703      var div=$(this).closest(".caf-post-layout-container").attr("data-target-div");
704      var params =get_params(1,div);
705      $(this).closest(".caf-post-layout-container").attr("data-order-by",$(".caf-sort-order-by").val());
706      $(this).closest(".caf-post-layout-container").attr("data-order-type",$(".caf-sort-order-type").val());
707      params["data-order-by"]=$(".caf-sort-order-by").val();
708      params["data-order-type"]=$(".caf-sort-order-type").val();
709      get_posts(params);
710    });
711  $(".caf-post-layout-container").on("click", "#manage-ajax-response a[href]", function () {
712    var $link = $(this);
713    if (
714      $link.hasClass("caf-pagi-btn") ||
715      $link.closest(".caf-pagination").length ||
716      $link.closest("#caf-layout-pagination").length
717    ) {
718      return;
719    }
720    var $container = $link.closest(".caf-post-layout-container");
721    if (!$container.length) return;
722    var interaction = buildLegacyInteraction($container, "post_click");
723    interaction.meta.clicked_url = String($link.attr("href") || "");
724    interaction.meta.clicked_text = $.trim($link.text() || "");
725    trackLegacyAnalyticsEvent($container, "post_click", interaction, { useBeacon: true });
726  });
727    $(document).on('click', '.clear-all-btn', function() {
728      // Clear the active_filters array
729      active_filters = [];
730      // Uncheck all checkboxes
731      $("#caf-multiple-taxonomy-filter li .check_box").prop('checked', false);
732      // Remove all filter items and "Clear All" button from the UI
733      $(".caf-active-filters ul").find('li').fadeOut(function() {
734        $(this).remove();
735      });
736      var div = $(this).closest(".caf-post-layout-container").attr("data-target-div");
737          $page = "1";
738          var params = get_params($page, div);
739          params['term']=$(this).closest(".caf-post-layout-container").attr("data-selected-terms");
740          setTimeout(function(){
741            cafScrollToDiv(div);
742            get_posts(params);
743          },200)
744          
745    });
746    $(document).on('click', '.caf-active-filters li', function() {
747      var data_id = $(this).attr("data-id");
748      var div1=$(this).closest(".caf-post-layout-container");
749      var div = $(this).closest(".caf-post-layout-container").attr("data-target-div");
750      var terms = $(this).closest(".caf-post-layout-container").attr("data-terms");
751    
752      // Convert the comma-separated string into an array
753      var termsArray = terms.split(',');
754    
755      // Remove the data_id from the array
756      termsArray = termsArray.filter(function(term) {
757        return term !== data_id;
758      });
759    
760      // Convert the array back into a string
761      var updatedTerms = termsArray.join(',');
762    
763      // Update the data-terms attribute with the new value
764      $(this).closest(".caf-post-layout-container").attr("data-terms", updatedTerms);
765      $("#caf-multiple-taxonomy-filter li .check_box[data-id='"+data_id+"']").prop('checked', false);
766      $(this).fadeOut(function() {
767        $(this).remove();
768      });
769      $page = "1";
770          var params = get_params($page, div);
771          set_active_filters(div1);
772        if(termsArray.length==0) {
773          params['term']=$(this).closest(".caf-post-layout-container").attr("data-selected-terms");
774          $("li.caf-clear-all").fadeOut(function() {
775            $(this).remove();
776          });
777        }
778          cafScrollToDiv(div);
779          get_posts(params);
780    });
781});
782
783
784function cafScrollToDiv(div) {
785  var scroll_to_div = jQuery("#caf-post-layout-container." + div).attr(
786    "data-scroll"
787  );
788  if (scroll_to_div != "disabled") {
789    var scroll_desktop = parseInt(
790      jQuery("#caf-post-layout-container." + div).attr("data-scroll-desk")
791    );
792    var scroll_mobile = parseInt(
793      jQuery("#caf-post-layout-container." + div).attr("data-scroll-mob")
794    );
795    var width = jQuery(document).width();
796    var position = 0;
797    if (scroll_to_div == "desktop" && width > 600) {
798      var position = scroll_desktop;
799      scroll_animate(position, div);
800    } else if (scroll_to_div == "desktop&mobile" && width > 600) {
801      var position = scroll_desktop;
802      scroll_animate(position, div);
803    } else if (scroll_to_div == "mobile" && width < 600) {
804      var position = scroll_mobile;
805      scroll_animate(position, div);
806    } else if (scroll_to_div == "desktop&mobile" && width < 600) {
807      var position = scroll_mobile;
808      scroll_animate(position, div);
809    }
810  }
811}
812
813
814
815function get_posts(params) {
816  var $ = jQuery.noConflict();
817  var container = params["data-target-div"];
818  var legacyKey = String(container || "");
819  var $root = $(container);
820  var content = $root.find("#manage-ajax-response");
821  var status = $root.find(".status");
822
823  if (window.CAFLegacyFilterAjax) {
824    window.CAFLegacyFilterAjax.abortPending(legacyKey);
825  }
826
827  var prevRid = $root.data("cafLegacyReqId") || 0;
828  var requestId = prevRid + 1;
829  $root.data("cafLegacyReqId", requestId);
830
831  $root.addClass("fetching");
832  $(status).html('<i class="fa fa-spinner fa-spin"></i>').addClass("active");
833  $(content).addClass("loading");
834
835  var jqXHR = $.ajax({
836    url: tc_caf_ajax.ajax_url,
837    data: {
838      action: "get_filter_posts",
839      nonce: tc_caf_ajax.nonce,
840      params: params,
841    },
842    type: "post",
843    dataType: "json",
844    success: function (data, textStatus, XMLHttpRequest) {
845      if ($root.data("cafLegacyReqId") !== requestId) {
846        return;
847      }
848      if (typeof cafTotalResults !== "undefined") {
849        $(cafTotalResults).html(data.found);
850      }
851      if (typeof cafAjaxSuccess !== "undefined") {
852        data["params"] = params;
853        cafAjaxSuccess(data);
854      }
855      var $container = $root;
856      var interaction = window.CAFLegacyAnalytics && window.CAFLegacyAnalytics.getInteraction
857        ? window.CAFLegacyAnalytics.getInteraction($container)
858        : null;
859      if (interaction) {
860        interaction.meta = interaction.meta || {};
861        interaction.meta.results_total = parseInt(data.found || 0, 10) || 0;
862        interaction.meta.zero_results = (interaction.meta.results_total <= 0) ? "yes" : "no";
863        if (interaction.event_type === "search") {
864          interaction.meta.search_results_total = interaction.meta.results_total;
865          interaction.meta.search_zero_results = interaction.meta.zero_results;
866        }
867        if (window.CAFLegacyAnalytics && window.CAFLegacyAnalytics.trackEvent) {
868          window.CAFLegacyAnalytics.trackEvent($container, interaction.event_type || "click", interaction);
869        }
870      }
871      if (window.CAFLegacyAnalytics && window.CAFLegacyAnalytics.clearInteraction) {
872        window.CAFLegacyAnalytics.clearInteraction($container);
873      }
874      $root.removeClass("fetching");
875      $(content).removeClass("loading");
876
877      if (data.status === 200) {
878        $(content).removeClass("caf-empty-error");
879        $(content).html(data.content);
880      } else if (data.status === 201) {
881        if (data.message == "Empty Results") {
882          $(content).addClass("caf-empty-error");
883          $(content).html(data.content);
884        } else {
885          $(content).html(data.content);
886        }
887      } else if (data.status === 404) {
888        $(content).html(data.content);
889      } else {
890        $(status).html(data.message);
891      }
892    },
893    error: function (MLHttpRequest, textStatus, errorThrown) {
894      if (textStatus === "abort") {
895        return;
896      }
897      if ($root.data("cafLegacyReqId") !== requestId) {
898        return;
899      }
900      $(status).html(textStatus);
901    },
902    complete: function (xhr, textStatus) {
903      if (window.CAFLegacyFilterAjax) {
904        window.CAFLegacyFilterAjax.clearIfCurrent(legacyKey, jqXHR);
905      }
906      if ($root.data("cafLegacyReqId") !== requestId) {
907        return;
908      }
909      var msg = textStatus;
910      if (textStatus === "success" && xhr.responseJSON) {
911        msg = xhr.responseJSON.found;
912      }
913      $(status).text("Posts found: " + msg);
914    },
915  });
916
917  if (window.CAFLegacyFilterAjax) {
918    window.CAFLegacyFilterAjax.setPending(legacyKey, jqXHR);
919  }
920}
921
922function get_posts_load(params) {
923  params.load_more = "load_more";
924  var $ = jQuery.noConflict();
925  var container = params["data-target-div"];
926  var legacyKey = String(container || "");
927  var $root = $(container);
928  var content = $root.find("#manage-ajax-response");
929  var content2 = $root.find(
930    "#manage-ajax-response .load-more-container"
931  );
932  var status = $root.find(".status");
933
934  if (window.CAFLegacyFilterAjax) {
935    window.CAFLegacyFilterAjax.abortPending(legacyKey);
936  }
937
938  var prevRid = $root.data("cafLegacyReqId") || 0;
939  var requestId = prevRid + 1;
940  $root.data("cafLegacyReqId", requestId);
941
942  $root.addClass("fetching");
943  $(status).html('<i class="fa fa-spinner fa-spin"></i>').addClass("active");
944  $(content).addClass("loading");
945  $root.find("#tp-load-more .fa-spinner").remove();
946  $root
947    .find("#tp-load-more")
948    .append('&nbsp;<i class="fa fa-spinner fa-spin"></i>')
949    .addClass("tp-loading");
950
951  var jqXHR = $.ajax({
952    url: tc_caf_ajax.ajax_url,
953    data: {
954      action: "get_filter_posts",
955      nonce: tc_caf_ajax.nonce,
956      params: params,
957    },
958    type: "post",
959    dataType: "json",
960    success: function (data, textStatus, XMLHttpRequest) {
961      if ($root.data("cafLegacyReqId") !== requestId) {
962        return;
963      }
964      if (typeof cafTotalResults !== "undefined") {
965        $(cafTotalResults).html(data.found);
966      }
967      if (typeof cafAjaxSuccess !== "undefined") {
968        data["params"] = params;
969        cafAjaxSuccess(data);
970      }
971      $root.removeClass("fetching");
972      $(content).removeClass("loading");
973      $root.find("#tp-load-more").removeClass("tp-loading");
974      if (data.status === 200) {
975        var crpg = parseInt(
976          $(content2).find("#tp-load-more").attr("data-current")
977        );
978        var nxpg = parseInt(
979          $(content2).find("#tp-load-more").attr("data-next")
980        );
981        var ttlpg = parseInt(
982          $(content2).find("#tp-load-more").attr("data-total")
983        );
984        crpg = crpg + 1;
985        nxpg = nxpg + 1;
986        if (ttlpg == crpg) {
987          $(content2).find("#tp-load-more").addClass("caf-disabled-end-btn");
988        }
989        parseInt($(content2).find("#tp-load-more").attr("data-current", crpg));
990        parseInt($(content2).find("#tp-load-more").attr("data-next", nxpg));
991        $(data.content).insertBefore(content2);
992      } else if (data.status === 201) {
993        $(content).html(data.content);
994      } else if (data.status === 404) {
995        $(content).html(data.content);
996      } else {
997        $(status).html(data.message);
998      }
999    },
1000    error: function (MLHttpRequest, textStatus, errorThrown) {
1001      if (textStatus === "abort") {
1002        return;
1003      }
1004      if ($root.data("cafLegacyReqId") !== requestId) {
1005        return;
1006      }
1007      $(status).html(textStatus);
1008    },
1009    complete: function (xhr, textStatus) {
1010      if (window.CAFLegacyFilterAjax) {
1011        window.CAFLegacyFilterAjax.clearIfCurrent(legacyKey, jqXHR);
1012      }
1013      if ($root.data("cafLegacyReqId") !== requestId) {
1014        return;
1015      }
1016      $(status).html("").removeClass("active");
1017    },
1018  });
1019
1020  if (window.CAFLegacyFilterAjax) {
1021    window.CAFLegacyFilterAjax.setPending(legacyKey, jqXHR);
1022  }
1023}
1024
1025/* filter 2 dropdown code */
1026jQuery(document).ready(function ($) {
1027  $("ul.dropdown").click(function () {
1028    $(this).find("li ul").toggle();
1029    $(this).find("li").toggleClass("activss");
1030  });
1031
1032  $(".caf-post-layout-container").each(function () {
1033    if ($(this).attr("data-filter-layout") == "filter-layout2") {
1034      var d_term = $(this).attr("data-default-term");
1035      $(this).find("ul.dropdown li ul li a.dfl").removeClass("active");
1036      var div1 = $(this)
1037        .find("ul.dropdown li ul li a[data-id='" + d_term + "']")
1038        .not(".dfl");
1039      if (div1.length == 0) {
1040        $("ul.dropdown ul li:first-child a").addClass("active");
1041      } else {
1042        $(div1).addClass("active");
1043        var text = $(div1).text();
1044        $(this).find(".dropdown .result").html(text);
1045      }
1046    }
1047  });
1048
1049  /* FUNCTION FOR MULTIPLE TAXONOMY FILTER TOGGLE */
1050  $(".caf-mtf-layout h3.tax-heading").click(function () {
1051    if ($(this).find("i").hasClass("fa-chevron-up")) {
1052      $(this)
1053        .find("i")
1054        .removeClass("fa-chevron-up")
1055        .addClass("fa-chevron-down");
1056    } else {
1057      $(this)
1058        .find("i")
1059        .removeClass("fa-chevron-down")
1060        .addClass("fa-chevron-up");
1061    }
1062    $(this)
1063      .closest("ul")
1064      .find("li")
1065      .each(function () {
1066        $(this).slideToggle();
1067      });
1068  });
1069});
1070
1071/* SCROLL ANIMATE FUNCTION */
1072function scroll_animate(pos, div) {
1073  if (jQuery("#caf-post-layout-container ." + div).offset()) {
1074    jQuery("html, body").animate(
1075      {
1076        scrollTop:
1077          jQuery("#caf-post-layout-container ." + div).offset().top - pos,
1078      },
1079      2000
1080    );
1081  } else {
1082    jQuery("html, body").animate(
1083      {
1084        scrollTop:
1085          jQuery("#caf-post-layout-container." + div).offset().top - pos,
1086      },
1087      2000
1088    );
1089  }
1090}
1091
1092jQuery(function ($) {
1093  $("ul.caf_select_multi li.caf_select_multi_default").click(function () {
1094    var th = $(this).find("ul.caf-multi-drop-sub");
1095    $("ul.caf_select_multi li.caf_select_multi_default")
1096      .not(this)
1097      .each(function () {
1098        $(this)
1099          .closest("ul")
1100          .find("ul.caf-multi-drop-sub")
1101          .removeClass("active");
1102        $(this).find("i.caf-multi-mod-right").removeClass("fa-chevron-up");
1103      });
1104    var data_value = $(this).attr("data-value");
1105    $(this).find("i.caf-multi-mod-right").toggleClass("fa-chevron-up");
1106    $(this).closest("ul").find("ul.caf-multi-drop-sub").toggleClass("active");
1107  });
1108  $(document).on('click', function(event) {
1109    if (!$(event.target).closest('.caf_select_multi').length && !$(event.target).closest('.caf_select_multi').length) {
1110      if($('ul.caf-multi-drop-sub').length) {
1111        $('ul.caf-multi-drop-sub').removeClass("active");
1112      }
1113    }
1114});
1115});
1116var active_filters = [];
1117function set_active_filters(div) {
1118  // Iterate over all checkboxes
1119 
1120  jQuery(div).find("#caf-multiple-taxonomy-filter li .check_box").each(function () {
1121    var filter_label = jQuery(this).closest("li").find('label').text();
1122    var data_name = jQuery(this).closest("ul").find('h3').attr('data-name');
1123    var data_id = jQuery(this).attr('data-id');
1124    // Create the object for this checkbox
1125    var filter_obj = {
1126      label: filter_label,
1127      dataName: data_name
1128    };
1129    // If checked, add to active_filters if not already present
1130    if (jQuery(this).is(":checked")) {
1131
1132      if (!active_filters.some(item => item.label === filter_label && item.dataName === data_name)) {
1133        active_filters.push(filter_obj); // Add in order of checking
1134
1135        var htm = '<li class="filter-item" data-id="'+data_id+'" data-label="' + filter_label + '" data-name="' + data_name + '" style="display:none;">';
1136        if(jQuery(div).attr("active-filters-style")=='with_tax') {
1137        htm += "<span class='caf-active-filter-label'>" + data_name + " : </span>";
1138        }
1139        htm += "<span class='caf-active-filter-tag'>" + filter_label + "</span>";
1140        htm += "<span class='caf-active-filter-close'> X</span>";
1141        htm += '</li>';
1142        // Append to the .caf-active-filters ul
1143        jQuery(div).find(".caf-active-filters ul").append(htm).find('li:last').fadeIn(); // Smooth addition with fadeIn
1144      }
1145    } else {
1146      // If unchecked, remove from active_filters
1147      active_filters = active_filters.filter(item => !(item.label === filter_label && item.dataName === data_name));
1148
1149      // Smooth removal of the corresponding <li>
1150      jQuery(div).find('.caf-active-filters ul li[data-label="'+filter_label+'"][data-name="'+data_name+'"]').fadeOut(function() {
1151        jQuery(this).remove(); // Remove the element after fadeOut completes
1152      });
1153    }
1154  });
1155  // Handle "Clear All" button logic in real-time after any checkbox change
1156  if (active_filters.length > 0) {
1157    // Append "Clear All" button if it doesn't exist
1158    jQuery(div).find(".caf-active-filters ul li.caf-clear-all").remove();
1159    if (jQuery(div).find(".caf-clear-all").length === 0) {
1160      jQuery(div).find(".caf-active-filters ul").append('<li class="caf-clear-all" style="display:none;"><button class="clear-all-btn">Clear All</button></li>').find('li:last').fadeIn(); // Smooth addition with fadeIn
1161    }
1162  } else {
1163    // Remove the "Clear All" button if no active filters
1164    jQuery(div).find(".caf-clear-all").fadeOut(function() {
1165      jQuery(this).remove();
1166    });
1167  }
1168}
1169
1170// Script start to speech recognition...
1171document.addEventListener("DOMContentLoaded", function () {
1172  let voiceSearchButton = document.getElementById("caf-voice-search");
1173
1174  if (voiceSearchButton) { // Check if the element exists
1175      voiceSearchButton.addEventListener("click", function () {
1176          const searchInput = document.getElementById("caf-search-input");
1177          if (searchInput) {
1178              searchInput.value = "";
1179          }
1180          let recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition)();
1181          recognition.lang = "en-US";
1182          recognition.start();
1183
1184          recognition.onresult = function (event) {
1185              let transcript = event.results[0][0].transcript;
1186              document.getElementById("caf-search-input").value = transcript;
1187              // Send the text to the WordPress search function
1188              jQuery("#caf-search-sub").trigger("click");
1189          };
1190      });
1191  } else {
1192     // console.error("Error: #caf-voice-search button not found!");
1193  }
1194});

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.