PageSourceSearch

https://www.manchestertheatres.com/assets/js/filter.js?v=146

js manchestertheatres.com collected 2026-10-02 05:37:48 UTC 21,545 bytes, 690 lines download raw bytes

1
2$(document).ready(function () {
3  $(window).bind("scroll", function () {
4    var navHeight = $(".vanue-banner").height();
5    if ($(window).scrollTop() > navHeight) {
6      $(".main-nav").addClass("fixed-header");
7    } else {
8      $(".main-nav").removeClass("fixed");
9    }
10  });
11});
12
13$(document).on("scroll", function () {
14  var hT = $("#theTarget").offset().top,
15    hH = $("#theTarget").outerHeight(),
16    wH = $(window).height(),
17    wS = $(this).scrollTop();
18  if (wS > hT + hH - wH) {
19    if (scrollEvent == 1) {
20      if (moreEvent == 1) {
21        getApiData();
22      }
23    }
24    scrollEvent = 0;
25  }
26});
27$(function () {
28  $("#dtRangePicker1").daterangepicker({
29    showDropdowns: true,
30    autoUpdateInput: false,
31    autoApply: true,
32    minDate: moment().format('DD/MM/YYYY'),
33    parentEl: "#datePickerContainer1",
34    locale: {
35      format: "DD/MM/YYYY",
36      cancelLabel: "Clear",
37      firstDay: 1,
38    },
39  });
40
41  $("#dtRangePicker1").on("cancel.daterangepicker", function (ev, picker) {
42    $("#dtRangePicker1").data("daterangepicker").show();
43    $(this).val("");
44  });
45  $("#dtRangePicker1").on("apply.daterangepicker", function (ev, picker) {
46    $(this).val(
47      picker.startDate.format("DD/MM/YYYY") +
48      " - " +
49      picker.endDate.format("DD/MM/YYYY")
50    );
51  });
52
53  $("#dtRangePicker1").on("click", function () {
54    $("#dtRangePicker1").data("daterangepicker").show();
55  });
56});
57$(function () {
58  $('input[name="daterange"]').daterangepicker({
59    showDropdowns: true,
60    beforeShow: function (input) {
61      console.log("a");
62    },
63    locale: {
64      format: "DD/MM/YYYY",
65      cancelLabel: "Clear",
66    },
67  });
68  $('input[name="daterange"]').on(
69    "cancel.daterangepicker",
70    function (ev, picker) {
71      $(this).val("All Dates");
72    }
73  );
74});
75
76setTimeout(function () {
77  $('input[name="daterange"]').val("All Dates");
78  $('input[name="daterange"]').attr("placeholder", "All Dates");
79}, 100);
80
81$("body").on("click", ".dropdown-menu", function (e) {
82  $(this).parent().is(".open") && e.stopPropagation();
83});
84
85$(".selectall").click(function () {
86  var $filter = $(this).parents(".filter-dropdown");
87  if ($(this).is(":checked")) {
88    $filter.find(".custom-check").prop("checked", true);
89    var total = $filter.find("input.custom-check:checked").length;
90    if (total == 1) {
91      var txt = $filter
92        .find('input[type="checkbox"]:checked')
93        .parents("li")
94        .find("label.head")
95        .text();
96      $filter.find(".dropdown-text").html(txt);
97    } else
98      $filter
99        .find(".dropdown-text")
100        .html(
101          $filter.find(".dropdown-text").attr("data-attr") +
102          " (" +
103          total +
104          ")"
105        );
106    $filter.find(".select-text").html(" Deselect");
107  } else {
108    $filter.find(".custom-check").prop("checked", false);
109    $filter.find(".select-text").html(" All");
110    $filter
111      .find(".dropdown-text")
112      .html("All " + $filter.find(".dropdown-text").attr("data-attr"));
113  }
114});
115$(".apply-btn.clear").click(function () {
116  var $filter = $(this).parents(".filter-dropdown");
117  $filter.find(".custom-check").prop("checked", false);
118  $filter.find(".selectall").prop("checked", false);
119  $filter
120    .find(".dropdown-text")
121    .html($filter.find(".dropdown-text").attr("data-attr"));
122});
123$("input[type='checkbox'].custom-check").change(function () {
124  var $filter = $(this).parents(".filter-dropdown");
125  var a = $filter.find("input[type='checkbox'].custom-check");
126  if (a.length == a.filter(":checked").length) {
127    $filter.find(".selectall").prop("checked", true);
128    $filter.find(".select-text").html(" Deselect");
129  } else {
130    $filter.find(".selectall").prop("checked", false);
131    $filter.find(".select-text").html(" All");
132  }
133  var total = $filter.find(
134    'input[type="checkbox"].custom-check:checked'
135  ).length;
136  if (total > 0) {
137    if (total == 1) {
138      var txt = $filter
139        .find('input[type="checkbox"].custom-check:checked')
140        .parents("li")
141        .find("label.head")
142        .text();
143      $filter.find(".dropdown-text").html(txt);
144    } else
145      $filter
146        .find(".dropdown-text")
147        .html(
148          $filter.find(".dropdown-text").attr("data-attr") +
149          " (" +
150          total +
151          ")"
152        );
153  } else $filter.find(".dropdown-text").html("All " + $filter.find(".dropdown-text").attr("data-attr"));
154});
155$(".filter-dropdown .dropdown").on("click", function (e) {
156  e.stopPropagation();
157  $(this).find("ul.dropdown-menu").show();
158  $("#filter-search").addClass("filters-open");
159});
160
161$(".btn-apply").on("click", function (e) {
162  e.preventDefault();
163  var parentId = $(this).attr("data-refer");
164  setTimeout(function () {
165    $("#" + parentId).css({
166      display: "none",
167    });
168  }, 200);
169});
170
171var promise;
172var eventCount = 0;
173var eventData = [];
174var mainLoop = 1;
175
176var seletedPageCity = "";
177if (type == "city") {
178  seletedPageCity = queryValue;
179}
180
181var selectedPageGenre = "";
182if (type == "genre") {
183  selectedPageGenre = queryValue;
184}
185$("#filter-form").submit(function (e) {
186  e.preventDefault();
187  $(window).scrollTop(0);
188  if($("#ads-box").length){
189    $('html, body').animate({
190        scrollTop: $("#ads-box").offset().top + 100
191    }, 2000);
192  } else {
193    $('html, body').animate({
194        scrollTop: 0
195    }, 2000);
196  }
197  $("body").addClass("loading");
198
199  $("#show-events").html(
200    `<div class="container">
201                                      <div class="` +
202    rowClass +
203    `" id="event-list">
204                                      </div>
205                                  </div>`
206  );
207  //$("#load-more-div").html('<div class="col-md-12 mt-4" id="theTarget1"></div>');
208
209  var genreLoop = 0;
210  var genre = "";
211  $("input:checkbox[name='genre']:checked").each(function () {
212    genreLoop++;
213    genre = $(this).val();
214  });
215
216  var extraGenreLoop = 0;
217  var extra_genre = "";
218  var arr = new Array();
219  $("input:checkbox[name='extra_genre']:checked").each(function () {
220    arr[extraGenreLoop] = $(this).val();
221    extraGenreLoop++;
222  });
223  extra_genre = arr.length ? arr.toString() : '';
224  var timeLoop = 0;
225  var show_time = "";
226  var arr = new Array();
227  $("input:checkbox[name='times']:checked").each(function () {
228    arr[timeLoop] = $(this).val();
229    timeLoop++;
230  });
231  show_time = arr.toString();
232  var selectedCity = {};
233  var cityLoop = 0;
234  $("input:checkbox[name='city_id']:checked").each(function () {
235    cityLoop++;
236    selectedCity[$(this).attr("data-name")] = $(this).val();
237  });
238  if(type != 'calendar')
239      var dateRangeValue = $("#dtRangePicker1").val();
240  else {
241    const queryUrl = new URL(window.location.href);
242    const searchParams = queryUrl.searchParams;
243    if(searchParams.get('from_date') && searchParams.get('to_date')){
244        toDateSelected = searchParams.get('to_date');
245        fromDateSelected = searchParams.get('from_date');
246    }
247  }
248  var dateRange = {};
249  if (
250    dateRangeValue !== "All Dates" &&
251    dateRangeValue !== "" &&
252    typeof dateRangeValue != "undefined"
253  ) {
254    dateRange["type"] = "range";
255    var dateArray = dateRangeValue.split(" - ");
256    dateRange["from_date"] = formatDate(dateArray[0]);
257    dateRange["to_date"] = formatDate(dateArray[1]);
258  } else if (typeof requestHeader1.calendar != "undefined") {
259    dateRange = JSON.parse(requestHeader1.calendar);
260    // dateRange["type"] = "range";
261    // dateRange["to_date"] = toDateSelected;
262    // dateRange["from_date"] = fromDateSelected;
263  }
264
265  requestHeader["date_range"] = dateRange;
266
267  if (cityLoop > 0) {
268    delete requestHeader["regional_cities"];
269    if (cityLoop > 1) {
270      requestHeader["regional_cities"] = selectedCity;
271      delete requestHeader["city"];
272    } else {
273      $("input:checkbox[name='city_id']:checked").each(function () {
274        requestHeader["city"] = $(this).val();
275      });
276    }
277  } else {
278    if (seletedPageCity != "") {
279      requestHeader["city"] = seletedPageCity;
280    } else {
281      delete requestHeader["city"];
282    }
283  }
284
285  if (genreLoop > 0) {
286    requestHeader["genre"] = genre;
287  } else {
288    if (selectedPageGenre != "") {
289      requestHeader["genre"] = selectedPageGenre;
290    } else {
291      delete requestHeader["genre"];
292    }
293  }
294  if (extraGenreLoop > 0) {
295    requestHeader["extra_genre"] = extra_genre;
296  }
297
298  if (timeLoop > 0) {
299    requestHeader["show_time"] = show_time;
300  } else {
301    delete requestHeader["show_time"];
302  }
303
304  if(requestHeader1.calendar){
305    requestHeader["calendar"] = requestHeader1.calendar;
306  }
307
308  requestHeader["page"] = 1;
309  requestHeader["type"] = type;
310
311  requestHeader1 = null;
312
313  requestHeader1 = requestHeader;
314  var settings = {
315    url: "https://www.comparetheticketprice.com/api/v1/events",
316    method: "GET",
317    timeout: 0,
318    headers: {
319      "data-x-request": JSON.stringify(requestHeader),
320      Authorization: requestToken,
321      "Content-Type": "application/json",
322    },
323  };
324
325  promise = $.ajax(settings).done(function (response) {
326    $("#event-data").html();
327    $("body").removeClass("loading");
328    scrollEvent = 1;
329    var response = JSON.parse(response);
330    if (typeof response.section_banners !== "undefined")
331        bannerData = response.section_banners
332    else
333        bannerData = [];
334    if (typeof response.by_events["events"] !== "undefined") {
335      if (response.more_flag == true) {
336        moreEvent = 1;
337      } else {
338        moreEvent = 0;
339      }
340      events = response.by_events["events"];
341      eventCount = events.length;
342      for (var i = 0; i < events.length; i++) {
343        var data = [];
344
345        //events[i].description = events[i].description.replace('"',"'");
346        data["title"] = events[i].title;
347        data["slug"] = events[i].slug;
348        data["is_free"] = events[i].is_free;
349        data["is_comp"] = events[i].is_comp;
350        data["is_offer"] = events[i].is_offer;
351        data["event_slug"] = events[i].event_slug;
352        data["resource_id"] = events[i].resource_id;
353        data["description"] = events[i].description;
354        data["our_desc"] = events[i].our_desc;
355        data["venue"] = events[i].venue;
356        data["venue_slug"] = events[i].venue_slug;
357        data["date"] = events[i].date;
358        data["video"] = events[i].video;
359        data["media"] = events[i].media;
360        data["event"] = events[i];
361        setDataToView(data, eventCount);
362        if (i % 15 == 0 && bannerData.length) {
363          loadBannerView(bannerData, BannerOffset);
364        }
365      }
366    } else {
367      events = response.events;
368
369      if (events.length > 0) {
370        for (var i = 0; i < events.length; i++) {
371          if (events[i].performance.length > 0) {
372            $("#event-list").append(
373              `<h2>` + formatDateNew(events[i].date) + `</h2>`
374            );
375            $("#event-list").append(
376              `<div class="row" id="date-row` + mainLoop + `">`
377            );
378            eventCount = events[i].performance.length;
379            var divId = "#date-row" + mainLoop;
380            for (var j = 0; j < events[i].performance.length; j++) {
381              var data = [];
382              //events[i].performance[j].description = events[i].performance[j].description.replace('"',"'");
383              data["title"] = events[i].performance[j].title;
384              data["description"] = events[i].performance[j].our_desc + "" +
385                events[i].performance[j].description;
386              data["is_free"] = events[i].performance[j].is_free;
387              data["resource_id"] = events[i].performance[j].resource_id;
388              data["is_comp"] = events[i].performance[j].is_comp;
389              data["is_offer"] = events[i].performance[j].is_offer;
390              data["event_slug"] = events[i].performance[j].slug;
391              data["venue"] = events[i].performance[j].venue_name;
392              data["venue_slug"] =
393                events[i].performance[j].venue_slug;
394              data["date"] = formatDateNew(
395                events[i].performance[j].performance_date
396              );
397              data["media"] = events[i].performance[j].media;
398              data["video"] = events[i].performance[j].video || '';
399              data["event"] = events[i].performance[j];
400              setDataToView(data, eventCount, divId);
401            }
402            mainLoop++;
403            $("#event-list").append("</div>");
404          }
405          if (i % 3 == 0 && bannerData.length) {
406            loadBannerView(bannerData, BannerOffset);
407          }
408        }
409      }
410    }
411  });
412});
413
414function setDataToView(data, eventCount, divId = "#event-list") {
415  this["eventData" + eventCount] = JSON.stringify(data["event"]);
416
417  var img =
418    typeof data["media"] !== "undefined" && data["media"].length > 0 ?
419      data["media"][0]["path"] :
420      defaultImg;
421
422  var dateToDisplay = "<h6>" + data["date"] + "</h6>";
423  var video =
424    typeof data["video"] !== "undefined" && data["video"]["image_path"] ?
425      data["video"]["image_path"] :
426      '';
427  var stripClass = data['is_free'] ? 'free-strip' : (data['is_comp'] ? 'comp-strip' : (data['is_offer'] ? 'offer-strip' : ''));
428  var videoAnchor = "";
429  if (video)
430    videoAnchor = `<a href="#" class="more-info" data-toggle="modal" data-json = '` +
431      JSON.stringify(data["event"])
432        .replace(/\//g, "\\/")
433        .replace(/'/g, "&apos;") +
434      `' data-target="#largeModal2" data-load="video"> Play Video </a>`;
435
436
437  if (divId != "#event-list") {
438    dateToDisplay = "";
439    $(divId).append(
440      `<div class="` +
441      columns +
442      `"> <div class="show-events">
443                  <a href="/event/` +
444      data["event_slug"] +
445      `" class="show-mobile mobile-title">
446                      <h4>` +
447      data["title"] +
448      `</h4>
449                  </a>
450                      <a href="/event/` +
451      data["event_slug"] +
452      `" class="`+stripClass+`"><img
453                                              src="` +
454      img +
455      `" alt="` +
456      data["title"] +
457      `"></a>
458                   <div class="show-detail">
459                   <a href="/event/` +
460      data["event_slug"] +
461      `" class="show-desktop desktop-title">
462                                              <h4>` +
463      data["title"] +
464      `</h4></a>
465                                              <h6 class="venue">
466                                                  <a href="/whats-on/` +
467      data["venue_slug"] +
468      `">` +
469      data["venue"] +
470      `</a>
471                                              </h6>
472                                              ` +
473      dateToDisplay +
474      `
475                  <span class="show-mobile list-description">
476                  ` +
477      htmlToPlainText(
478        data["description"]
479      ).substring(0, 240) +
480      `
481                  </span>
482        <ul class="event-btns">
483            <li class="info"> <a href="#" class="more-info" data-toggle="modal" data-json = '` +
484      JSON.stringify(data["event"])
485        .replace(/\//g, "\\/")
486        .replace(/'/g, "&apos;") +
487      `' data-target="#largeModal2"> More Info </a>
488            </li>
489            <li class="buy-btn"> <a href="` +
490      data["event_link"] +
491      `" target="_blank" onClick="trackLink(`+data["resource_id"]+`,'`+data["event_link"]+`')">  ` + (data['is_free'] ? 'Book' : 'Buy') + `
492              Tickets </a></li>
493                  </ul>
494              </div>
495          </div>
496      </div>`
497    );
498  } else {
499    $(divId).append(
500      `<div class="` +
501      columns +
502      `">
503                  <a href="/event/` +
504      data["event_slug"] +
505      `"><h4>` +
506      data["title"] +
507      `</h4></a>
508                      <div class="show-events `+stripClass+`">
509                          <a href="/event/` +
510      data["event_slug"] +
511      `"><img
512                                          src="` +
513      img +
514      `" alt="` +
515      data["title"] +
516      `"></a>
517                  <div class="show-detail">
518                      <h6 class="venue">
519                          <a href="/whats-on/` +
520      data["venue_slug"] +
521      `">` +
522      data["venue"] +
523      `</a>
524                                          </h6>
525                                          ` +
526      dateToDisplay +
527      `<span class="list-description">
528                  ` +
529      htmlToPlainText(
530        data["description"]
531      ).substring(0, 240) +
532      `
533                  </span>
534                      <ul class="event-btns">
535                          <li class="info"> <a href="/event/` +
536      data["event_slug"] +
537      `" class="more-info" data-toggle="modal" data-json = '` +
538      JSON.stringify(data["event"])
539        .replace(/\//g, "\\/")
540        .replace(/'/g, "&quot;") +
541      `' data-target="#largeModal2"> More Info </a>
542                      </li>
543                      <li class="video">
544                      ` + videoAnchor + `
545                      </li>
546                      <li class="buy-btn"> <a href="` +
547      data["event_link"] +
548      `" target="_blank" onClick="trackLink(`+data["resource_id"]+`,'`+data["event_link"]+`')"> ` + (data['is_free'] ? 'Book' : 'Buy') + `
549                  Tickets </a></li>
550                                          </ul>
551                                      </div>
552                                  </div>
553                              </div>`
554    );
555  }
556  //console.log(JSON.parse(this["eventData"+eventCount]));
557  $("#show-events a.more-info").bind("click", function () {
558    popup = $("#largeModal2");
559    var dataJson = $(this).attr("data-json");
560    //dataJson = JSON.stringify(dataJson);
561    dataJson = JSON.parse(dataJson);
562    //var dataJson = JSON.parse(this["eventData"+eventCount]);
563    //console.log(dataJson.media);
564
565    //alert(dataJson);
566    if (typeof dataJson.media !== "undefined" && dataJson.media[0].path)
567      popup
568        .find("img.event_popup_img")
569        .attr("src", dataJson.media[0].path);
570    else popup.find("img.event_popup_img").attr("src", defaultImg);
571    if (dataJson.video && dataJson.video.image_path) {
572      popup
573        .find("iframe.inner-video")
574        .attr("src", dataJson.video.image_path);
575      popup.find(".event_popup_videolink").show();
576    } else {
577        popup.find("img.event_popup_img").show();
578        popup.find("iframe.inner-video").hide();
579        popup.find(".event_popup_videolink").hide();
580    }
581    popup.find(".event_popup_title").html(dataJson.title);
582    popup.find(".event_popup_venue").html(dataJson.venue_name);
583    popup
584      .find(".event_popup_venue")
585      .attr("href", "/whats-on/" + dataJson.venue_slug);
586    popup.find(".event_popup_date").html(dataJson.date);
587    popup.find(".event_popup_desc").html(dataJson.our_desc + " " + dataJson.description);
588    popup.find(".event_popup_link").each(function () {
589      $(this).attr("href", "/event/" + dataJson.event_slug);
590    });
591    var buylink = dataJson.event_link ?
592      dataJson.event_link :
593      "/event/" + dataJson.event_slug;
594    var target = dataJson.event_link ? "_blank" : "_self";
595    popup.find(".event_popup_buylink").attr("href", buylink);
596    popup.find(".event_popup_buylink").attr("target", target);
597    if(dataJson.event_link){
598        popup
599        .find(".event_popup_buylink")[0]
600        .bind("click", trackLink(dataJson.resource_id, dataJson.event_link));
601    }
602    popup.find("iframe.inner-video").hide();
603    popup.find("img.event_popup_img").show();
604  });
605
606//   $("#largeModal2 a.event_popup_videolink").bind("click", function () {
607//     var $this = $(this);
608//     var $item = $this.parents("#largeModal2");
609//     var $iframe = $item.find("iframe.inner-video");
610//     if ($iframe) {
611//       $item.find("img.event_popup_img").toggle();
612//       $iframe.toggle();
613//       $iframe[0].contentWindow.postMessage(
614//         '{"event":"command","func":"' + "pauseVideo" + '","args":""}',
615//         "*"
616//       );
617//     }
618//   });
619}
620
621function formatDate(date) {
622  var dateArr = date.split("/");
623  var day = dateArr[0];
624  var month = dateArr[1];
625  var year = dateArr[2];
626  return day + "-" + month + "-" + year;
627}
628
629function formatDateNew(date) {
630  var dateArr = date.split("-");
631  var day = dateArr[2];
632  var month = dateArr[1];
633  var year = dateArr[0];
634  var months = [
635    "January",
636    "February",
637    "March",
638    "April",
639    "May",
640    "June",
641    "July",
642    "August",
643    "September",
644    "October",
645    "November",
646    "December",
647  ];
648  var days = [
649    "Sunday",
650    "Monday",
651    "Tuesday",
652    "Wednesday",
653    "Thursday",
654    "Friday",
655    "Saturday",
656  ];
657  var d = new Date(date);
658  var dayName = days[d.getDay()];
659  var monthName = months[d.getMonth()];
660  return dayName + " " + day.replace(/^0+/, '') + " " + monthName + " " + year;
661}
662
663function loadBannerView(bannerData, BannerOffset, divId = "#event-list") {
664  if (typeof BannerOffset !== "undefined") {
665    if (
666      bannerData != null &&
667      bannerData[BannerOffset] != "" &&
668      bannerData[BannerOffset] != null &&
669      typeof bannerData[BannerOffset] !== "undefined"
670    ) {
671      var bannerDataLoop = bannerData[BannerOffset];
672      $(divId).append(
673        `<!--Ads sec--><section id="ads-box" class="ads-box"><div class="container-fluid"><a href="` +
674        bannerDataLoop["link"] +
675        `" target="` +
676        bannerDataLoop["target"] +
677        `"><img src="` +
678        bannerDataLoop["image"] +
679        `" alt="` +
680        bannerDataLoop["banner_name"] +
681        `" class="show-desktop"><img src="` +
682        bannerDataLoop["image_mob"] +
683        `" alt="` +
684        bannerDataLoop["banner_name"] +
685        `" class="show-mobile"></a></div></section><!--Ads sec ends-->`
686      );
687      BannerOffset++;
688    }
689  }
690}

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.