PageSourceSearch

https://afghansupportnetwork.org/wp-content/plugins/mage-eventpres…/filter_pagination.js?ver=1791503292

js afghansupportnetwork.org collected 2026-10-08 23:50:00 UTC 12,468 bytes, 323 lines download raw bytes

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