PageSourceSearch

https://www.sportaberdeen.co.uk/wp-content/plugins/mage-eventpress…/filter_pagination.js?ver=1790252083

js sportaberdeen.co.uk collected 2026-09-24 12:15:32 UTC 15,276 bytes, 340 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 load_pagination_initial_item() {
194        $('.list_with_filter_section').each(function () {
195            mpwem_loader_spin($(this));
196            $(this).find('[data-bg-image]').each(function () {
197                mpwem_loader_spin($(this));
198            });
199            load_pagination($(this), 0);
200        }).promise().done(function () {
201            $('.list_with_filter_section').each(function () {
202                mpwem_loader_spin_remove($(this));
203                $(this).find('.all_filter_item').css({'height': 'auto', 'overflow': 'inherit'}).slideDown('slow');
204            });
205        });
206    }
207    function load_pagination(parent, pagination_page) {
208        let style = parent.find('.mep_event_list_sec').data('pagination-style');
209        if (style === 'ajax') {
210            return; // handled by ajax_load_event_list
211        }
212        let all_item = parent.find('.all_filter_item');
213        let per_page_item = parseInt(parent.find('input[name="pagination_per_page"]').val());
214        let pagination_type = parent.find('input[name="pagination_style"]').val();
215        let start_item = pagination_page > 0 ? pagination_page * per_page_item : 0;
216        let end_item = pagination_page > 0 ? start_item + per_page_item : per_page_item;
217        let item = 0;
218        let items_class = get_item_class(parent);
219        if (pagination_type === 'load_more') {
220            start_item = 0;
221        } else {
222            let all_item_height = all_item.outerHeight();
223            //all_item.css({"height": all_item_height, "overflow": "hidden"});
224            mpwem_loader_spin(all_item);
225        }
226        parent.find(items_class).each(function () {
227            if (item >= start_item && item < end_item) {
228                if ($(this).is(':hidden')) {
229                    $(this).slideDown(200);
230                }
231            } else {
232                $(this).slideUp('fast');
233            }
234            item++;
235        }).promise().done(function () {
236            all_item.css({'height': 'auto', 'overflow': 'inherit'}).promise().done(function () {
237                filter_qty_palace(parent, items_class);
238                pagination_management(parent, pagination_page);
239                mpwem_loader_spin_remove(all_item);
240            });
241        });
242    }
243    function ajax_load_event_list(parent, page) {
244        let holder = parent.find('.mep_event_list_sec');
245        let args = {
246            action: 'mpwem_load_event_list_page',
247            page: page,
248            cat: holder.data('cat'),
249            org: holder.data('org'),
250            style: holder.data('style'),
251            column: holder.data('column'),
252            city: holder.data('city'),
253            country: holder.data('country'),
254            status: holder.data('status'),
255            year: holder.data('year'),
256            sort: holder.data('sort'),
257            show: holder.data('show')
258        };
259        let inner = holder.find('.mage_grid_box');
260        if (inner.length === 0) {
261            inner = holder;
262        }
263        mpwem_loader_spin(inner);
264        jQuery.ajax({
265            type: 'POST',
266            url: typeof mpwem_ajax_url !== 'undefined' ? mpwem_ajax_url : (typeof mep_ajax !== 'undefined' ? mep_ajax.url : ''),
267            data: args,
268            success: function (html) {
269                inner.html(html);
270                mpwem_loader_spin_remove(inner);
271                load_bg_img();
272            }
273        });
274    }
275    function pagination_management(parent, pagination_page) {
276        let pagination_type = parent.find('input[name="pagination_style"]').val();
277        let per_page_item = parseInt(parent.find('input[name="pagination_per_page"]').val());
278        let total_item = parent.find(get_item_class(parent)).length;
279        if (total_item <= per_page_item) {
280            parent.find('.pagination_area').slideUp(200);
281        } else {
282            parent.find('.pagination_area').slideDown(200);
283            if (pagination_type === 'load_more') {
284                parent.find('[data-load-more]').attr('data-load-more', pagination_page)
285            } else {
286                pagination_page_management(parent, pagination_page);
287            }
288        }
289    }
290    function pagination_page_management(parent, pagination_page) {
291        let per_page_item = parseInt(parent.find('input[name="pagination_per_page"]').val());
292        let total_item = parent.find(get_item_class(parent)).length;
293        let total_active_page = (total_item / per_page_item) + ((total_item % per_page_item) > 0 ? 1 : 0);
294        let page_limit_start = (pagination_page > 2) ? (pagination_page - 2) : 0;
295        let page_limit_end = (pagination_page > 2) ? (pagination_page + 2) : 4;
296        let limit_dif = total_active_page - pagination_page;
297        if (total_active_page > 5 && limit_dif < 3) {
298            page_limit_start = page_limit_start - ((limit_dif > 1) ? 1 : 2);
299        }
300        let total_page = parent.find('[data-pagination]').length;
301        for (let i = 0; i < total_page; i++) {
302            if (i < total_active_page && i >= page_limit_start && i <= page_limit_end) {
303                parent.find('[data-pagination="' + i + '"]').slideDown(200);
304            } else {
305                parent.find('[data-pagination="' + i + '"]').slide
305Up(200);
306            }
307        }
308        if (pagination_page > 0) {
309            parent.find('.page_prev').removeAttr('disabled');
310        } else {
311            parent.find('.page_prev').prop('disabled', true);
312        }
313        if (pagination_page > 2 && total_active_page > 5) {
314            parent.find('.ellipse_left').slideDown(200);
315        } else {
316            parent.find('.ellipse_left').slideUp(200);
317        }
318        if (pagination_page < total_active_page - 3 && total_active_page > 5) {
319            parent.find('.ellipse_right').slideDown(200);
320        } else {
321            parent.find('.ellipse_right').slideUp(200);
322        }
323        if (pagination_page < total_active_page - 1) {
324            parent.find('.page_next').removeAttr('disabled');
325        } else {
326            parent.find('.page_next').prop('disabled', true);
327        }
328    }
329    function get_item_class(parent, items = '.filter_item') {
330        if (parent.find('.filter_item.search_on').length > 0 || parent.find('.filter_item.search_of').length > 0) {
331            items = '.filter_item.search_on';
332            parent.find('.filter_item.search_of').slideUp('fast');
333        }
334        return items;
335    }
336    function filter_qty_palace(parent, item_class) {
337        parent.find('.qty_count').html($(parent).find(item_class + ':visible').length);
338        parent.find('.total_filter_qty').html($(parent).find(item_class).length);
339    }
340}(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.