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.