PageSourceSearch

https://bradfield.ca/wp-content/plugins/mage-eventpress/assets/frontend/filter_pagination.js?ver=5.6.4

js bradfield.ca collected 2026-10-10 00:46:01 UTC 16,261 bytes, 363 lines download raw bytes

1(function ($) {
2    "use strict";
3    let bg_image_load = false;
4    load_pagination_initial_item();
5    $(document).ready(function () {
6        $(window).on('load', function () {
7            load_bg_img();
8            bg_image_load = true;
9        });
10        if (!bg_image_load) {
11            load_bg_img();
12            $(document).scroll(function () {
13                load_bg_img();
14                bg_image_load = true;
15            });
16        }
17    });
18    // Initialize datepicker with error handling for nonWorkingDates
19    try {
20        $(".filter_datepicker").datepicker({
21            dateFormat: "mm/dd/yy",
22            beforeShowDay: function (date) {
23                // Check if nonWorkingDates exists and is valid
24                if (typeof nonWorkingDates !== 'undefined' && Array.isArray(nonWorkingDates)) {
25                    var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
26                    return [nonWorkingDates.indexOf(string) == -1];
27                }
28                return [true];
29            }
30        });
31    } catch (e) {
32        console.error("Datepicker initialization error:", e);
33        // Fallback to simple datepicker without nonWorkingDates
34        $(".filter_datepicker").datepicker({dateFormat: "mm/dd/yy"});
35    }
36    let filter_input_list = {
37        title_filter: 'data-title',
38        filter_with_city: 'data-city-name',
39        filter_with_category: 'data-category',
40        filter_with_organizer: 'data-organizer'
41    };
42    for (let name in filter_input_list) {
43        $(document).on('change keyup', '[name="' + name + '"] ', function (e) {
44            e.preventDefault();
45            load_filter($(this));
46        });
47    }
48    $(document).on('change', '.search_with_start_date , .search_with_end_date', function () {
49        load_filter($(this));
50    });
51    function load_filter(target) {
52        let parent = target.closest('.list_with_filter_section');
53        let result = 0;
54        if (check_search_value_exit(parent)) {
55            let date_check = date_filter_check(parent);
56            parent.find('.all_filter_item .filter_item').each(function () {
57                let active = 1;
58                for (let name in filter_input_list) {
59                    if (single_text_check(parent, name) && active > 0) {
60                        active = single_text_search(parent, $(this), name);
61                    }
62                }
63                if (date_check && active > 0) {
64                    active = date_search(parent, $(this));
65                }
66                if (active > 1) {
67                    result++;
68                    $(this).addClass('search_on').removeClass('search_of');
69                } else {
70                    $(this).addClass('search_of').removeClass('search_on');
71                }
72            }).promise().done(function () {
73                if (result > 0) {
74                    parent.find('.all_filter_item').slideDown('fast');
75                    parent.find('.search_result_empty').slideUp('fast');
76                } else {
77                    parent.find('.all_filter_item').slideUp('fast');
78                    parent.find('.search_result_empty').slideDown('fast');
79                }
80            }).promise().done(function () {
81                load_pagination(parent, 0);
82            });
83        } else {
84            parent.find('.all_filter_item').slideDown('fast');
85            parent.find('.all_filter_item .filter_item').each(function () {
86                $(this).removeClass('search_of').removeClass('search_on');
87            }).promise().done(function () {
88                load_pagination(parent, 0);
89            });
90            parent.find('.search_result_empty').slideUp('fast');
91        }
92    }
93    function date_convert_to_str(date) {
94        date = new Date(date).getTime();
95        if (date && date !== 'NaN') {
96            return date;
97        } else {
98            return 0;
99        }
100    }
101    function single_text_check(parent, inputName) {
102        let inputText = parent.find('[name="' + inputName + '"]').val();
103        return (inputText && inputText.length > 0) ? 1 : false;
104    }
105    function single_text_search(parent, item, inputName) {
106        let target = parent.find('[name="' + inputName + '"]');
107        let inputText = target.val();
108        let currentValue = item.attr(filter_input_list[inputName]);
109        return (currentValue && currentValue.match(new RegExp(inputText, "i"))) ? 2 : 0;
110    }
111    function date_filter_check(parent) {
112        let start_date = date_convert_to_str(parent.find('.search_with_start_date').val());
113        let end_date = date_convert_to_str(parent.find('.search_with_end_date').val());
114        return (start_date > 0 && end_date > 0) ? 1 : false;
115    }
116    function date_search(parent, target) {
117        let start_date = date_convert_to_str(parent.find('.search_with_start_date').val());
118        let end_date = date_convert_to_str(parent.find('.search_with_end_date').val());
119        let date = date_convert_to_str(target.attr('data-date'));
120        return (date >= start_date && end_date >= date) ? 2 : 0;
121    }
122    function check_search_value_exit(parent) {
123        let date_result = date_filter_check(parent);
124        let active = 0;
125        for (let name in filter_input_list) {
126            if (single_text_check(parent, name)) {
127                active = 1;
128            }
129        }
130        return (date_result || active > 0) ? 1 : false;
131    }
132    function load_bg_img() {
133        $('.filter_item:visible').each(function () {
134            let target = $(this);
135            if (target.find('[data-bg-image]').css('background-image') === 'none') {
136                target.find('[data-bg-image]').css('background-image', 'url("' + target.find('[data-bg-image]').data('bg-image') + '")').promise().done(function () {
137                    mpwem_loader_spin_remove(target);
138                });
139            }
140        });
141        return true;
142    }
143    //************Pagination*************//
144    $(document).on('click', '.pagination_area [data-pagination]', function (e) {
145        e.preventDefault();
146        let pagination_page = $(this).data('pagination');
147        let parent = $(this).closest('.list_with_filter_section');
148        let style = parent.find('.mep_event_list_sec').data('pagination-style');
149        parent.find('[data-pagination]').removeClass('active_pagination');
150        $(this).addClass('active_pagination').promise().done(function () {
151            if (style === 'ajax') {
152                ajax_load_event_list(parent, pagination_page + 1);
153            } else {
154                load_pagination(parent, pagination_page);
155            }
156        }).promise().done(function () {
157            alert('yes');
158            mpwem_page_scroll_to(parent);
159            mpwem_load_bg_image();
160        });
161    });
162    $(document).on('click', '.pagination_area .page_prev', function (e) {
163        e.preventDefault();
164        let parent = $(this).closest('.pagination_area');
165        let page_no = parseInt(parent.find('.active_pagination').data('pagination')) - 1;
166        parent.find('[data-pagination="' + page_no + '"]').trigger('click');
167    });
168    $(document).on('click', '.pagination_area .page_next', function (e) {
169        e.preventDefault();
170        let parent = $(this).closest('.pagination_area');
171        let page_no = parseInt(parent.find('.active_pagination').data('pagination')) + 1;
172        parent.find('[data-pagination="' + page_no + '"]').trigger('click');
173    });
174    $(document).on('click', '.pagination_area .pagination_load_more', function () {
175        let pagination_page = parseInt($(this).attr('data-load-more'));
176        let parent = $(this).closest('.list_with_filter_section');
177        let item_class = get_item_class(parent);
178        if (parent.find(item_class + ':hidden').length > 0) {
179            pagination_page = pagination_page + 1;
180        } else {
181            pagination_page = 0;
182        }
183        $(this).attr('data-load-more', pagination_page).promise().done(function () {
184            load_pagination(parent, pagination_page);
185        }).promise().done(function () {
186            if (parent.find(item_class + ':hidden').length === 0) {
187                $(this).attr('disabled', 'disabled');
188            }
189        }).promise().done(function () {
190            load_bg_img();
191        });
192    });
193    function reveal_event_list_section($section) {
194        if (!$section.length || $section.hasClass('mep-list-is-ready')) {
195            return;
196        }
197        mpwem_loader_spin_remove($section);
198        let $items = $section.find('.all_filter_item');
199        $items.css({'height': 'auto', 'overflow': 'inherit', 'display': 'block', 'opacity': 0});
200        $section.find('.mep_event_list_skeleton').fadeOut(180, function () {
201            $(this).remove();
202        });
203        $items.animate({opacity: 1}, 280);
204        $section.removeClass('mep-list-is-loading').addClass('mep-list-is-ready');
205    }
206
207    function load_pagination_initial_item() {
208        $('.list_with_filter_section').each(function () {
209            let $section = $(this);
210            // Prefer the card skeleton over the old full-section spinner.
211            if (!$section.find('.mep_event_list_skeleton').length) {
212                mpwem_loader_spin($section);
213            }
214            $section.find('[data-bg-image]').each(function () {
215                mpwem_loader_spin($(this));
216            });
217            load_pagination($section, 0);
218        }).promise().done(function () {
219            $('.list_with_filter_section').each(function () {
220                reveal_event_list_section($(this));
221            });
222        });
223        // Safety: never leave the skeleton stuck if init is delayed.
224        setTimeout(function () {
225            $('.list_with_filter_section.mep-list-is-loading').each(function () {
226                reveal_event_list_section($(this));
227            });
228        }, 4000);
229    }
230    function load_pagination(parent, pagination_page) {
231        let style = parent.find('.mep_event_list_sec').data('pagination-style');
232        if (style === 'ajax') {
233            return; // handled by ajax_load_event_list
234        }
235        let all_item = parent.find('.all_filter_item');
236        let per_page_item = parseInt(parent.find('input[name="pagination_per_page"]').val());
237        let pagination_type = parent.find('input[name="pagination_style"]').val();
238        let start_item = pagination_page > 0 ? pagination_page * per_page_item : 0;
239        let end_item = pagination_page > 0 ? start_item + per_page_item : per_page_item;
240        let item = 0;
241        let items_class = get_item_class(parent);
242        if (pagination_type === 'load_more') {
243            start_item = 0;
244        } else {
245            let all_item_height = all_item.outerHeight();
246            //all_item.css({"height": all_item_height, "overflow": "hidden"});
247            mpwem_loader_spin(all_item);
248        }
249        parent.find(items_class).each(function () {
250            if (item >= start_item && item < end_item) {
251                if ($(this).is(':hidden')) {
252                    $(this).slideDown(200);
253                }
254            } else {
255                $(this).slideUp('fast');
256            }
257            item++;
258        }).promise().done(function () {
259            all_item.css({'height': 'auto', 'overflow': 'inherit'}).promise().done(function () {
260                filter_qty_palace(parent, items_class);
261                pagination_management(parent, pagination_page);
262                mpwem_loader_spin_remove(all_item);
263            });
264        });
265    }
266    function ajax_load_event_list(parent, page) {
267        let holder = parent.find('.mep_event_list_sec');
268        let args = {
269            action: 'mpwem_load_event_list_page',
270            page: page,
271            cat: holder.data('cat'),
272            org: holder.data('org'),
273            style: holder.data('style'),
274            column: holder.data('column'),
275            city: holder.data('city'),
276            country: holder.data('country'),
277            status: holder.data('status'),
278            year: holder.data('year'),
279            sort: holder.data('sort'),
280            show: holder.data('show')
281        };
282        let inner = holder.find('.mage_grid_box');
283        if (inner.length === 0) {
284            inner = holder;
285        }
286        mpwem_loader_spin(inner);
287        jQuery.ajax({
288            type: 'POST',
289            url: typeof mpwem_ajax_url !== 'undefined' ? mpwem_ajax_url : (typeof mep_ajax !== 'undefined' ? mep_ajax.url : ''),
290            data: args,
291            success: function (html) {
292                inner.html(html);
293                mpwem_loader_spin_remove(inner);
294                load_bg_img();
295            }
296        });
297    }
298    function pagination_management(parent, pagination_page) {
299        let pagination_type = parent.find('input[name="pagination_style"]').val();
300        let per_page_item = parseInt(parent.find('input[name="pagination_per_page"]').val());
301        let total_item = parent.find(get_item_class(parent)).length;
302        if (total_item <= per_page_item) {
303            parent.find('.pagination_area').slideUp(200);
304        } else {
305            parent.find('.pagination_area').slideDown(200);
306            if (pagination_type === 'load_more') {
307                parent.find('[data-load-more]').attr('data-load-more', pagination_page)
308            } else {
309                pagination_page_management(parent, pagination_page);
310            }
311        }
312    }
313    function pagination_page_management(parent, pagination_page) {
314        let per_page_item = parseInt(parent.find('input[name="pagination_per_page"]').val());
315        let total_item = parent.find(get_item_class(parent)).length;
316        let total_active_page = (total_item / per_page_item) + ((total_item % per_page_item) > 0 ? 1 : 0);
317        let page_limit_start = (pagination_page > 2) ? (pagination_page - 2) : 0;
318        let page_limit_end = (pagination_page > 2) ? (pagination_page + 2) : 4;
319        let limit_dif = total_active_page - pagination_page;
320        if (total_active_page > 5 && limit_dif < 3) {
321            page_limit_start = page_limit_start - ((limit_dif > 1) ? 1 : 2);
322        }
323        let total_page = parent.find('[data-pagination]').length;
324        for (let i = 0; i < total_page; i++) {
325            if (i < total_active_page && i >= page_limit_start && i <= page_limit_end) {
326                parent.find('[data-pagination="' + i + '"]').slideDown(200);
327            } else {
328                parent.find('[data-pagination="' + i + '"]').slide
328Up(200);
329            }
330        }
331        if (pagination_page > 0) {
332            parent.find('.page_prev').removeAttr('disabled');
333        } else {
334            parent.find('.page_prev').prop('disabled', true);
335        }
336        if (pagination_page > 2 && total_active_page > 5) {
337            parent.find('.ellipse_left').slideDown(200);
338        } else {
339            parent.find('.ellipse_left').slideUp(200);
340        }
341        if (pagination_page < total_active_page - 3 && total_active_page > 5) {
342            parent.find('.ellipse_right').slideDown(200);
343        } else {
344            parent.find('.ellipse_right').slideUp(200);
345        }
346        if (pagination_page < total_active_page - 1) {
347            parent.find('.page_next').removeAttr('disabled');
348        } else {
349            parent.find('.page_next').prop('disabled', true);
350        }
351    }
352    function get_item_class(parent, items = '.filter_item') {
353        if (parent.find('.filter_item.search_on').length > 0 || parent.find('.filter_item.search_of').length > 0) {
354            items = '.filter_item.search_on';
355            parent.find('.filter_item.search_of').slideUp('fast');
356        }
357        return items;
358    }
359    function filter_qty_palace(parent, item_class) {
360        parent.find('.qty_count').html($(parent).find(item_class + ':visible').length);
361        parent.find('.total_filter_qty').html($(parent).find(item_class).length);
362    }
363}(jQuery));

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.