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.