PageSourceSearch

https://icrcanada.org/wp-content/themes/booklovers/skins/default/skin.js

js icrcanada.org collected 2026-09-24 19:08:48 UTC 40,575 bytes, 984 lines download raw bytes

1/* global jQuery:false */
2/* global BOOKLOVERS_STORAGE:false */
3
4(function() {
5	"use strict";
6
7	function booklovers_skin_post_header_init() {
8		var header = jQuery('.post_header_wrap_style_style-1.with_featured_image, .post_header_wrap_style_style-2.with_featured_image');
9		header.find('.post_featured').css('min-height', 0);
10
11		if ( jQuery(header).find('.post_featured.with_gallery').length > 0 ) {
12			return;
13		}
14		if ( jQuery(header).find('.post_featured.with_thumb.post_featured_bg.with_video').length > 0 ) {
15			return;
16		}
17
18		header.each(function() {
19			var self = jQuery(this);
20			var image_h = self.find('.post_featured').outerHeight();
21			var info_h = self.find('.post_header').outerHeight();
22			var x = 180;
23			if ( jQuery('body').hasClass('mobile_layout') ) {
24				x = 100;
25			}
26
27			info_h = info_h + x;
28			if ( info_h >= image_h ) {
29				self.find('.post_featured').css('min-height', info_h);
30			}
31		});
32	}
33
34	booklovers_add_filter( 'trx_addons_filter_skills_pie_options', function(opt) {
35		opt.animateScale = false;
36		return opt;
37	} );
38
39	booklovers_add_filter( 'booklovers_filter_select_container_selector', function(selector) {
40		selector = selector + ':not([name*="paid-service"])';
41		return selector;
42	} );
43
44	// 	if ( typeof TRX_ADDONS_STORAGE != 'undefined' && TRX_ADDONS_STORAGE['mouse_helper'] > 0 && TRX_ADDONS_STORAGE['mouse_helper_in_swiper_slider'] > 0 ) {
45	// 	if (jQuery('body').find('.slider_container.slider_swiper:not(.go)').length > 0) {
46	// 		jQuery('body').find('.slider_container.slider_swiper:not(.go)').each(function () {
47	// 			jQuery(this).addClass('go');
48	// 			var check_helper = jQuery(this).closest('.elementor-widget').data('mouse-helper');
49	//			if(!check_helper) {
50	// 				jQuery(this).attr('data-mouse-helper-hide-cursor', '1');
51	// 				jQuery(this).attr('data-mouse-helper', 'hover');
52	// 				jQuery(this).attr('data-mouse-helper-centered', '1');
53	// 				jQuery(this).attr('data-mouse-helper-magnet', '0');
54	// 				jQuery(this).attr('data-mouse-helper-bg-color', 'rgba(0, 0, 0, 1)');
55	// 				jQuery(this).attr('data-mouse-helper-mode', 'normal');
56	// 				jQuery(this).attr('data-mouse-helper-axis', 'xy');
57	// 				jQuery(this).attr('data-mouse-helper-delay', '8');
58	// 				jQuery(this).attr('data-mouse-helper-text-round', '0');
59	// 				jQuery(this).attr('data-mouse-helper-layout', '<div class=custom-helper><span></span></div>');
60	//				if(jQuery(this).hasClass('slider_direction_vertical')) {
61	//					jQuery(this).attr('data-mouse-helper-class', 'direction_vertical');
62	//				}
63	//			}
64	// 		});
65	// 	}
66	// }
67
68	// Create Swiper Controls - Title
69	function skin_blogger_controls_title() {
70		if (jQuery('body').find('.sc_slider_controls:not(.go)').length > 0) {
71			jQuery('body').find('.sc_slider_controls:not(.go)')
72				.each(function () {
73					var controls = jQuery(this).addClass('go'),
74						slider_id = controls.data('slider-id'),
75						pagination_style = controls.data('pagination-style');
76					if (!slider_id) return;
77					slider_id = jQuery('#' + slider_id + ' .slider_swiper').attr('id');
78					if (!slider_id) return;
79
80					// Add pagination
81					var s = typeof TRX_ADDONS_STORAGE['swipers'] != 'undefined' && typeof TRX_ADDONS_STORAGE['swipers'][slider_id] != 'undefined' ? TRX_ADDONS_STORAGE['swipers'][slider_id] : false,
82						slides = jQuery('#' + slider_id + ' .swiper-slide'),
83						spv = s
84							? (s.params.loop
85									? s.loopedSlides
86									: 0
87							)
88							: 0;
89					if (pagination_style == 'title') {
90						var html = '';
91						slides.each(function (idx) {
92							var slide = jQuery(this);
93							if (idx < spv || idx >= slides.length - spv) return;
94							var title = (slide.data('title')
95									? slide.data('title')
96									: slide.find('[class*="_item_title"]').text()
97							);
98							html += '<span class="slider_pagination_bullet swiper-pagination-bullet" data-slide-number="' + (s ? jQuery(this).data('slide-number') : idx) + '">' + title + '</span>';
99						});
100						controls.find('.slider_pagination_wrap').html(html);
101
102						jQuery('#' + slider_id).on('slider_init slide_change_start', function (e) {
103							if (TRX_ADDONS_STORAGE['swipers'][slider_id]) {
104								var s = TRX_ADDONS_STORAGE['swipers'][slider_id];
105								var current = jQuery(s.slides[s.activeIndex]).data('slide-number') + 1,
106									total = s.params.loop ? Math.ceil((s.slides.length - s.loopedSlides * 2) / s.params.slidesPerGroup) : s.snapGrid.length;
107								if (total > 0) {
108									controls.find('.slider_pagination_bullet')
109										.removeClass('slider_pagination_bullet_active swiper-pagination-bullet-active')
110										.eq(current - 1)
111										.addClass('slider_pagination_bullet_active swiper-pagination-bullet-active');
112								}
113							}
114						});
115					}
116				});
117		}
118	}
119
120
121	// Init skin-specific actions on first run
122	// Attention! Don't forget to add the class "inited" and check it to prevent re-initialize the elements
123
124	// Change param "slides per" in exactly sliders
125	booklovers_add_filter( 'trx_addons_filter_slider_init_args', function( $param, $init ) {
126		if( $init.parents('.slider_width_auto').length > 0 && ( $init.parents('.sc_portfolio_extra').length > 0 || $init.parents('.sc_portfolio_default').length > 0 ) ) {
127			$param.slidesPerView = 'auto';
128		}
129		return $param;
130	} );
131
132
133	// Toggle for Filter
134    function skin_blogger_toggle_filter_add_element() {
135        if ( jQuery('.content').find(".sc_style_toggle").length > 0 ) {
136            jQuery(" .sc_style_toggle").each(function() {
137                var toggle_title = BOOKLOVERS_STORAGE['toggle_title'];
138                jQuery(this).find('.sc_item_filters').append('<div class="title_wrap"><span class="toggle_title"></span><span class="active_tab"></span></div>');
139                jQuery(this).find('.sc_item_filters .sc_item_filters_tabs').wrap('<div class="list_wrap"></div>');
140                jQuery(this).find('.sc_item_filters .toggle_title').text(toggle_title);
141
142                jQuery(this).find('span.active_tab')
143                    .mouseenter( function() {
144                            jQuery(this).parents('.sc_item_filters').find('.sc_item_filters_tabs').addClass('active');
145                        }
146                    );
147                jQuery(this).find('.sc_blogger_filters')
148                    .mouseleave( function() {
149                            jQuery(this).find('.sc_item_filters_tabs').removeClass('active');
150                        }
151                    );
152            })
153        }
154    }
155    function skin_blogger_toggle_filter_upd_value() {
156        if ( jQuery('.content').find(".sc_style_toggle").length > 0 ) {
157            jQuery(" .sc_style_toggle").each(function() {
158                var text = jQuery(this).find('.sc_item_filters .sc_item_filters_tabs .sc_item_filters_tabs_active a').text();
159                jQuery(this).find('.sc_item_filters .active_tab').text(text);
160            })
161        }
162    }
163	function skin_add_custom_width_filter_list() {
164		if ( jQuery('.content').find(".sc_style_toggle").length > 0 ) {
165			jQuery('.sc_style_toggle .sc_item_filters_wrap .sc_item_filters').each(function() {
166				var check_element = jQuery(this).find('.list_wrap');
167				var width = jQuery(this).find( '.title_wrap' ).outerWidth();
168				jQuery(check_element).css('width', 'calc(100% - ' + (width + 10) + 'px)');
169			})
170		}
171	}
172	// Move title with cursor
173	function mousemove_for_portfolio_small() {
174		if (jQuery( window ).width() > 1279 ) {
175			if ( jQuery('.content').find(".sc_blogger_lay_portfolio_grid_grid_style_7").length > 0 ) {
176				jQuery(".sc_blogger_lay_portfolio_grid_grid_style_7 .sc_blogger_item").each(function() {
177					let $Target = jQuery(this);
178					let $TargetInner = $Target.find('.post_info_bl');
179					$Target.mousemove(function(event){
180						let y = event.pageY - $Target.offset().top + 20;
181						let x = event.pageX - $Target.offset().left + 20;
182						$TargetInner.css({'top': y,'left': x,'bottom': "auto",'right': "auto",'opacity': 1});
183
184					})
185						.mouseleave(function() {
186							$TargetInner.css({'top': 'auto','left': 30,'bottom': 30,'right': "auto",'opacity': 0});
187						});
188				});
189			}
190		}
191	}
192	// Add wrap in portfolio style
193	function add_portfolio_image_wrap() {
194		if ( jQuery('.content').find(".sc_blogger_lay_portfolio_grid_grid_style_7").length > 0 ) {
195			var $item = jQuery(".sc_blogger_lay_portfolio_grid_grid_style_7 .sc_blogger_item:not(.inited_item)");
196			$item.each(function() {
197				jQuery(this).addClass('inited_item');
198				jQuery(this).find(".bg_in").wrap('<div class="bg_in_wrap"></div>');
199			});
200		}
201
202		if ( jQuery('.content').find(".sc_blogger_lay_portfolio_grid_grid_style_9").length > 0 ) {
203			var $item = jQuery(".sc_blogger_lay_portfolio_grid_grid_style_9 .sc_blogger_item:not(.inited_item)");
204			$item.each(function() {
205				jQuery(this).addClass('inited_item');
206				jQuery(this).find(".bg_in").wrap('<div class="bg_in_wrap"></div>');
207			});
208		}
209	}
210	// Move title with cursor
211	function mousemove_for_portfolio_large() {
212		if (jQuery( window ).width() > 1279 ) {
213			if ( jQuery('.content').find(".sc_blogger_lay_portfolio_grid_grid_style_9").length > 0 ) {
214				jQuery(".sc_blogger_lay_portfolio_grid_grid_style_9 .sc_blogger_item").each(function() {
215					let $Target = jQuery(this);
216					let $TargetInner = $Target.find('.post_info_bl');
217					$Target.mousemove(function(event){
218						let y = event.pageY - $Target.offset().top + 20;
219						let x = event.pageX - $Target.offset().left + 20;
220						$TargetInner.css({'top': y,'left': x,'bottom': "auto",'right': "auto",'opacity': 1 });
221					})
222						.mouseleave(function() {
223							$TargetInner.css({'top': "auto",'left': 30,'bottom': 30,'right': "auto",'opacity': 0 });
224						});
225				});
226			}
227		}
228	}
229	/* Add image background on wrap in portfolio Stretch */
230	function background_image_portfolio_stretch() {
231		if ( jQuery('.content').find(".sc_blogger_portmodern").length > 0 ) {
232
233            jQuery(".sc_blogger_portmodern .sc_blogger_item .sc_blogger_item_title").on( 'mouseover', function() {
234                jQuery(this).addClass('active_item');
235                jQuery(this).parents('.sc_blogger_content').addClass('active_items');
236            }).on( 'mouseleave', function() {
237                jQuery(this).removeClass('active_item');
238		jQuery(this).parents('.sc_blogger_content').removeClass('active_items');
239            });
240			if (jQuery( window ).width() > 1279 ) {
241				jQuery(".sc_blogger_portmodern .sc_blogger_item:not(.inited_item)").each(function() {
242					let $Target = jQuery(this).addClass('inited_item');
243					let $TargetInner = $Target.find('.sc_blogger_item_title');
244					let $TargetInnerId = $TargetInner.data('item-id');
245					let $TargetInnerImg = $TargetInner.data('item-image');
246					if ( $TargetInnerImg ) {
247						var obj = new Image();
248						obj.src = $TargetInnerImg;
249					}
250					let $WrapImage = jQuery( this ).parents(".sc_blogger_portmodern").find(".decor_image_wrap");
251
252					if( jQuery($WrapImage).find('#' + $TargetInnerId ).length <= 0 ) {
253						jQuery($WrapImage).append('<div id="' + $TargetInnerId + '" class="image_item" ></div>');
254						jQuery($TargetInner).on('mouseover', function() {
255							let $NewTarget = jQuery( this ).parents(".sc_blogger_portmodern").find(".decor_image_wrap");
256							jQuery($NewTarget).find('div#' + $TargetInnerId + '').css({'background-image': 'url(' + $TargetInnerImg + ')'});
257						})
258					}
259				});
260			}
261
262			jQuery(".sc_blogger_portmodern .sc_blogger_item").each(function() {
263				let $Target = jQuery(this);
264				let $TargetInner = $Target.find('.sc_blogger_item_title');
265				let $TargetInnerId = $TargetInner.data('item-id');
266				let $WrapImage = jQuery( this ).parents(".sc_blogger_portmodern").find(".decor_image_wrap");
267				jQuery($TargetInner).on('mouseover', function() {
268					jQuery($WrapImage).find('div#' + $TargetInnerId + '').addClass('active_image')
269				}).on( 'mouseleave', function() {
270					let $WrapImage = jQuery( this ).parents(".sc_blogger_portmodern").find(".image_item");
271					jQuery($WrapImage).removeClass('active_image');
272				});
273			});
274
275			jQuery(".sc_blogger_portmodern .sc_blogger_item").each(function() {
276				//jQuery(this).addClass('inited_description');
277				jQuery(this).find(".sc_blogger_item_title").on( 'click', function() {
278					let $eachTitleItem = jQuery( this ).parents(".sc_blogger_portmodern").find(".sc_blogger_item").find(".sc_blogger_item_title");
279					let $WrapPreview = jQuery( this ).parents(".sc_blogger_portmodern").find(".portfolio_preview");
280					let $PreviewDescription = jQuery($WrapPreview).find(".portfolio_description");
281					let $PreviewImage = jQuery($WrapPreview).find(".portfolio_image");
282					let $PreviewClose = jQuery($WrapPreview).find(".close");
283					let $TargetInnerDetails = jQuery( this ).data('details');
284					let $TargetInnerImg = jQuery( this ).data('item-image');
285					$PreviewImage.css({'background-image': 'url(' + $TargetInnerImg + ')'});
286					$PreviewDescription.html($TargetInnerDetails);
287					jQuery($eachTitleItem).addClass('anim_fade');
288					jQuery($WrapPreview).addClass('portfolio_preview_show');
289
290					if( $WrapPreview.hasClass('portfolio_preview_show') ) {
291						jQuery('html').addClass('portfolio_preview_opened');
292						$PreviewClose.on('click', function() {
293							jQuery('html').removeClass('portfolio_preview_opened');
294							jQuery($eachTitleItem).removeClass('anim_fade');
295							jQuery($WrapPreview).removeClass('portfolio_preview_show');
296							jQuery($PreviewDescription).empty();
297						});
298						jQuery( window ).on( 'keyup', function(e) {
299								if (e.keyCode === 27) {
300									jQuery('html').removeClass('portfolio_preview_opened');
301									jQuery($WrapPreview).removeClass('portfolio_preview_show');
302									jQuery($eachTitleItem).removeClass('anim_fade');
303									jQuery($PreviewDescription).empty();
304								}
305						});
306					}
307
308					//jQuery(document).trigger( 'action.init_hidden_elements', [$WrapPreview] );
309
310					// Socials share
311					//----------------------------------------------
312					var $share_items = $PreviewDescription.find('.socials_share .social_items:not(.inited)');
313					if ($share_items.length > 0) {
314						$share_items
315							.addClass('inited')
316							.on('click', '.social_item_popup', function(e) {
317								var url = jQuery(this).data('link');
318								window.open(url, '_blank', 'scrollbars=0, resizable=1, menubar=0, left=100, top=100, width=480, height=400, toolbar=0, status=0');
319								e.preventDefault();
320								return false;
321							})
322							.on('click', '.social_item[data-copy-link-url]', function(e) {
323								var $self = jQuery(this),
324									url = $self.data('copy-link-url');
325								if ( url != '' ) {
326									trx_addons_copy_to_clipboard( url );
327									var msg = $self.data('message') ? $self.data('message') : BOOKLOVERS_STORAGE['msg_copied'];
328									if ( msg ) {
329										$self.attr('data-tooltip-text', msg);
330										setTimeout( function() {
331											$self.removeAttr('data-tooltip-text');
332										}, 3000 );
333									}
334								}
335								e.preventDefault();
336								return false;
337							});
338					}
339				});
340			});
341		}
342	}
343	// Audio
344	function booklovers_skin_audio_init() {
345		jQuery('[class*="single_style_style-"]:not(.single_style_style-1):not(.single_style_style-3) .post_header_wrap_in_header .post_featured.with_audio.with_thumb:not(.audio_inited)').addClass('audio_inited').each(function() {
346			var featured = jQuery(this);
347			var audio_wrap = featured.find('.post_audio');
348			var btn = jQuery('<div class="post_audio_btn"></div>');
349			featured.prepend(btn);
350			btn.on('click', function() {				
351				audio_wrap.toggleClass('show');
352				audio_wrap.find('.mejs-playpause-button').click();			
353			});
354		});
355	}
356
357
358	jQuery( window ).load(function() {
359
360		// Audio
361		booklovers_skin_audio_init();
362
363		// Toggle for Filter
364		skin_add_custom_width_filter_list();
365
366		// Add image background on wrap in portfolio Stretch
367		background_image_portfolio_stretch();
368
369		booklovers_skin_post_header_init();
370
371	});
372
373	jQuery( document ).on(
374		'action.ready_booklovers', function() {
375			extra_margin_top_video_popup_button();
376			// Move title with cursor
377			mousemove_for_portfolio_large();
378			mousemove_for_portfolio_small();
379
380			// Toggle for Filter
381			skin_blogger_toggle_filter_add_element();
382
383			skin_blogger_controls_title();
384
385			// Anim for 404 page
386			if ( typeof window.TweenMax != 'undefined' ) {
387				if (jQuery('.post_item_404').length > 0) {
388					var $layer_1 = jQuery('.post_item_404 .svg-1'),
389						$layer_2 = jQuery('.post_item_404 .svg-2'),
390						$layer_3 = jQuery('.post_item_404 .svg-3'),
391						$layer_4 = jQuery('.post_item_404 .svg-4'),
392						$container = jQuery('.error404 .page_content_wrap'),
393						container_w = $container.width(),
394						container_h = $container.height();
395
396					if ($layer_1.length > 0 || $layer_2.length > 0 || $layer_3.length > 0 || $layer_4.length > 0) {
397						jQuery(window).on('mousemove.parallax', function (event) {
398							var pos_x = event.pageX,
399								pos_y = event.pageY,
400								left = 0,
401								top = 0;
402							left = container_w / 2 - pos_x;
403							top = container_h / 2 - pos_y;
404							if ($layer_1.length > 0) {
405								TweenMax.to(
406									$layer_1,
407									1,
408									{
409										css: {
410											transform: 'translateX(' + left / 25 + 'px) translateY(' + top / 25 + 'px)'
411										},
412										ease: Power2.easeOut,
413										overwrite: 'all' //'none'
414									}
415								);
416							}
417							if ($layer_2.length > 0) {
418								TweenMax.to(
419									$layer_2,
420									1,
421									{
422										css: {
423											transform: 'translateX(' + left / 35 + 'px) translateY(' + top / 35 + 'px)'
424										},
425										ease: Power2.easeOut,
426										overwrite: 'all'
427									}
428								);
429							}
430							if ($layer_3.length > 0) {
431								TweenMax.to(
432									$layer_3,
433									1,
434									{
435										css: {
436											transform: 'translateX(' + left / 55 + 'px) translateY(' + top / 55 + 'px)'
437										},
438										ease: Power2.easeOut,
439										overwrite: 'all' //'none'
440									}
441								);
442							}
443							if ($layer_4.length > 0) {
444								TweenMax.to(
445									$layer_4,
446									1,
447									{
448										css: {
449											transform: 'translateX(' + left / 70 + 'px) translateY(' + top / 70 + 'px)'
450										},
451										ease: Power2.easeOut,
452										overwrite: 'all' //'none'
453									}
454								);
455							}
456						});
457					}
458				}
459			}
460
461			// for woo tinv
462			if(jQuery('.woocommerce-product-gallery__wrapper > .tinv-wraper').length > 0) {
463				var tinv = jQuery('.woocommerce-product-gallery__wrapper > .tinv-wraper');
464				jQuery('.woocommerce-product-gallery__wrapper').after(tinv);
465			}
466
467			//Tilt 3d hover for Class - VanillaTiltHover
468			if (jQuery( '.VanillaTiltHover' ).length > 0) {
469				VanillaTilt.init(document.querySelectorAll('.VanillaTiltHover'), {
470					max: 8,
471					speed: 1000,
472					scale: 1.05,
473					transition: true,
474					easing: 'cubic-bezier(.03,.98,.52,.99)',
475					perspective: 1200,
476				});
477			}
478			//Tilt 3d hover for teams
479			if (jQuery( '.start-inner-3d' ).length > 0) {
480				VanillaTilt.init(document.querySelectorAll('.start-inner-3d'), {
481					max: 5,
482					speed: 1000,
483					scale: 1,
484					transition: true,
485					easing: 'cubic-bezier(.03,.98,.52,.99)',
486					perspective: 1500,
487				});
488			}
489
490            //Tilt 3d hover
491	        if (jQuery( '.tilt_action' ).length > 0) {
492                VanillaTilt.init(document.querySelectorAll('.tilt_action'), {
493                    max: 8,
494                    speed: 1000,
495                    scale: 1.05,
496                    transition: true,
497                    easing: 'cubic-bezier(.03,.98,.52,.99)',
498                    perspective: 1400,
499                });
500            }
501
502			//Tilt 3d hover for cat list
503			if (jQuery( '.tilt_action_cat_list' ).length > 0) {
504				VanillaTilt.init(document.querySelectorAll('.tilt_action_cat_list'), {
505					max: 8,
506					speed: 1500,
507					scale: 1.02,
508					transition: true,
509					easing: 'cubic-bezier(.03,.98,.52,.99)',
510					perspective: 2400,
511				});
512			}
513
514            // Process Tribe Events view after it was reloaded by AJAX
515			jQuery('.tribe-events-view').on( 'beforeAjaxComplete.tribeEvents beforeAjaxSuccess.tribeEvents beforeAjaxError.tribeEvents', booklovers_tribe_events_after_ajax );
516			function booklovers_tribe_events_after_ajax( jqXHR, textStatus ) {
517				setTimeout( function() {
518					// Set up event handler again because .tribe-events-view was recreated after AJAX
519					jQuery('.tribe-events-view').on( 'beforeAjaxComplete.tribeEvents beforeAjaxSuccess.tribeEvents beforeAjaxError.tribeEvents', booklovers_tribe_events_after_ajax );
520					// ToDo: Any actions after the Tribe Events View is reloaded
521
522				}, 10 );
523			}
524
525
526			// style line
527			if (jQuery( 'div.wpcf7 .style-line .wpcf7-form-control-wrap' ).length > 0) {
528				jQuery( 'div.wpcf7 .style-line .wpcf7-form-control-wrap' ).each(
529					function () {
530						jQuery(this).append('<span class="line"></span>');
531					}
532				);
533			}
534
535			function textarea_auto_height(txt) {
536				var hiddenDiv = jQuery(document.createElement('div')),
537					content = null;
538				txt.addClass('noscroll');
539				hiddenDiv.addClass('hiddendiv');
540				txt.after(hiddenDiv);
541				if(txt.val()) {
542					hiddenDiv.html(txt.val());
543					txt.animate({ 'height' : hiddenDiv.outerHeight()
544					},800);
545				}
546				txt.bind('keyup', function() {
547					content = txt.val();
548					content = content.replace(/\n/g, '<br>');
549					hiddenDiv.html(content);
550					txt.animate({ 'height' : hiddenDiv.outerHeight()
551					},50);
552				});
553			}
554
555			if (jQuery( 'div.wpcf7 .form-style-2 textarea' ).length > 0) {
556				jQuery( 'div.wpcf7 .form-style-2 textarea' ).each(
557					function () {
558						textarea_auto_height(jQuery(this));
559					});
560			}
561
562			// mc4wp - id
563			if (jQuery( '.mc4wp-form-fields' ).length > 0) {
564				var count_mc4wp = 1;
565				jQuery( '.mc4wp-form-fields' ).each(
566					function () {
567						jQuery(this).find('input[type="checkbox"]').each(
568							function () {
569								var id = jQuery(this).attr( 'id' );
570								if(id) {}
571								else {
572									id = 'go';
573								}
574								jQuery(this).attr('id', id + count_mc4wp);
575								jQuery(this).next('label').attr('for', id + count_mc4wp);
576								count_mc4wp++;
577							});
578					});
579			}
580
581			function mc4wpGO(form) {
582				jQuery(form).each(function () {
583
584					var form = jQuery(this),
585						btn = form.find('button, input[type="submit"], input[type="button"]');
586					var $i_agree = form.find('input[type="checkbox"][name="i_agree_privacy_policy"]:not(.inited)'
587						+ ',input[type="checkbox"][name="gdpr_terms"]:not(.inited)'
588						+ ',input[type="checkbox"][name="wpgdprc"]:not(.inited)'
589						+ ',input[type="checkbox"][name="AGREE_TO_TERMS"]:not(.inited)'
590					);
591					form.addClass('inited_validation');
592
593					if ( $i_agree.length > 0 ) {
594						$i_agree.addClass( 'inited' );
595					}
596
597					btn.on( 'click', function(e) {
598						form.find('.trx_addons_message_box').remove();
599
600						if ( $i_agree.length > 0 ) {
601							if ( ! $i_agree.get(0).checked ) {
602								form.append( '<div class="trx_addons_message_box trx_addons_message_box_error">' + BOOKLOVERS_STORAGE['msg_i_agree_error'] + '</div>' );
603								var error_msg = form.find('.trx_addons_message_box');
604								error_msg.fadeIn(600);
605								setTimeout( function() {
606									error_msg.fadeOut( 600, function() {error_msg = form.find('.trx_addons_message_box');
607										error_msg.remove();
608									} );
609								}, 3000 );
610
611								e.preventDefault();
612								return false;
613							}
614						}
615
616						var rez = booklovers_form_validate(form, {
617							error_message_show: true,
618							error_message_time: 3000,
619							error_message_class: 'trx_addons_message_box trx_addons_message_box_error',
620							error_message_text: 'Global error text',
621							error_fields_class: 'mc4wp_error_field',
622							exit_after_first_error: true,
623							rules: [
624								{
625									field: 'EMAIL',
626									min_length: {value: 7, message: BOOKLOVERS_STORAGE['mc4wp_msg_email_min']},
627									max_length: {value: 60, message: BOOKLOVERS_STORAGE['mc4wp_msg_email_max']},
628									mask: {
629										value: '^([a-zA-Z0-9_\\-]+\\.)*[a-zA-Z0-9_\\-]+@[a-zA-Z0-9_\\-]+(\\.[a-zA-Z0-9_\\-]+)*\\.[a-zA-Z]{2,6}$',
630										message: 'Invalid email address'
631									}
632								},
633							]
634						});
635
636						if (!rez) {
637							jQuery(form).submit();
638						}
639						else {
640							e.preventDefault();
641							return rez;
642						}
643
644					});
645				});
646			}
647			mc4wpGO(jQuery(".mc4wp-form:not(.inited_validation)"));
648
649			var $document = jQuery(document),
650				body = jQuery('body');
651
652			// Open/Close mobile menu
653			$document.on( 'action.mobile_menu_open', function(e, $menu) {
654				$menu.find( '.menu_mobile_widgets_area a[href*="mailto"]').addClass( 'underline_anim' );
655                setTimeout(
656                    function() {
657                        $menu.find( '.menu_mobile_widgets_area a[href*="mailto"]' ).addClass( 'underline_do_hover' );
658                    }, 600
659                );
660			} );
661			$document.on( 'action.mobile_menu_close', function(e, $menu) {
662				$menu.addClass( 'out_anim' );
663                setTimeout( function () {
664                    $menu.removeClass('out_anim');
665					jQuery('.menu_mobile_widgets_area a[href*="mailto"]').removeClass('underline_do_hover');
666                }, 1000);
667			} );
668			booklovers_add_filter( 'booklovers_filter_mobile_menu_close_timeout', function( timeout, $menu ) {
669				return 1000;
670			} );
671
672            // Open/Close panel menu
673			// Prepare links to panel
674            body.find('.sc_layouts_panel_menu:not(.inited)').each( function() {
675				var self = jQuery(this),
676					id = self.attr('id');
677				if (!id) return;
678				var link = jQuery('a[href="#'+id+'"]');
679				if (link.length === 0) {
680					body.append('<a href="#'+id+'" class="trx_addons_hidden"></a>');
681					link = jQuery('a[href="#'+id+'"]');
682				}
683				link.addClass('trx_addons_panel_menu_link');
684			});
685
686            // Display panel on click on the panel link
687            function booklovers_skin_open_panel( id ) {
688                var $panel = jQuery( '#' + id ).addClass( 'opened' );
689                $panel.prev('.sc_layouts_panel_menu_overlay' ).fadeIn();
690                $panel.find( '[class*="trx_addons_title_with_link"] > a:not(.underline_anim)' ).addClass( 'underline_anim' );
691                setTimeout(
692                    function() {
693                        $panel.find( '[class*="trx_addons_title_with_link"] > a.underline_anim' ).addClass( 'underline_do_hover' );
694                    }, 600
695                );
696                body.addClass( 'sc_layouts_panel_menu_opened' );
697                $document.trigger( 'action.stop_wheel_handlers' );
698            }
699
700            jQuery( '.trx_addons_panel_menu_link:not(.panel_inited)' )
701				.addClass( 'panel_inited' )
702				.on( 'click', function(e) {
703					booklovers_skin_open_panel( jQuery(this).attr('href').substring(1) );
704					e.preventDefault();
705					return false;
706				});
707
708            // Close panel
709            function booklovers_skin_close_panel() {
710
711               var $panel = jQuery( '.sc_layouts_panel_menu.opened' ).addClass( 'out_anim' );
712
713                jQuery( '.sc_layouts_panel_menu_close' ).parents( 'sc_layouts_panel_menu' ).addClass( 'out_anim' );
714
715                setTimeout(function () {
716                    $panel.prev( '.sc_layouts_panel_menu_overlay' ).fadeOut();
717                    $panel.removeClass('out_anim').removeClass('opened');
718                    $panel.find('[class*="trx_addons_title_with_link"] > a.underline_anim').removeClass('underline_do_hover');
719                    body.removeClass( 'sc_layouts_panel_menu_opened' );
720                    $document.trigger( 'action.start_wheel_handlers' );
721                }, 1000);
722            }
723            $document
724                .on( 'keyup', function(e) {
725                	var $panel = jQuery( '.sc_layouts_panel_menu.opened');
726					if (e.keyCode === 27) {
727						if  ($panel.length === 1) {
728							booklovers_skin_close_panel();
729							e.preventDefault();
730							return false;
731						}
732					}
733                }
734            );
735
736            jQuery( '.sc_layouts_panel_menu_close, .sc_layouts_panel_menu_overlay' )
737				.on( 'click', function(e) {
738					booklovers_skin_close_panel();
739					e.preventDefault();
740					return false;
741           		}
742            );
743
744            jQuery( '.sc_layouts_panel_menu_close' )
745                .on( 'keyup', function(e) {
746                    var $panel = jQuery( '.sc_layouts_panel_menu.opened');
747                    if (e.keyCode === 13) {
748                        if ($panel.length === 1) {
749                            booklovers_skin_close_panel();
750                            e.preventDefault();
751                            return false;
752                        }
753                    }
754                } )
755                .on( 'focus', function() {
756                    if ( ! body.hasClass( 'sc_layouts_panel_menu_opened' ) ) {
757                        jQuery( '#content_skip_link_anchor' ).focus();
758                    }
759                } );
760
761        }
762	);
763
764    // Search Modern -----------------
765    //-------------------------------
766	var $search_wrap = jQuery( '.search_modern .search_wrap:not(.inited)' );
767
768    if ( $search_wrap.length > 0 ) {
769        jQuery( $search_wrap.each( function() {
770            var $body =  jQuery('body'),
771				$search_wrap_init = jQuery(this).addClass( 'inited' ),
772                search_field = $search_wrap_init.find( '.search_field' ),
773           	    ajax_timer = null;
774
775            // ESC is pressed
776            search_field.on('keyup', function(e) {
777                if (e.keyCode === 27) {
778                    search_field.val('');
779                    $body.addClass('search_out_anim');
780                    setTimeout(function () {
781                        booklovers_search_close($search_wrap_init);
782                        $body.removeClass('search_open_anim');
783                        $body.removeClass('search_out_anim');
784                        $search_wrap_init.next( '.search_overlay' ).fadeOut();
785
786                        e.preventDefault();
787                        return false;
788                    }, 800);
789
790                    setTimeout(function () {
791                        $search_wrap_init.parent().removeClass('search_active');
792                        $body.removeClass('search_active');
793                    }, 1200);
794                }
795                // AJAX search
796                if ($search_wrap_init.hasClass('search_ajax')) {
797                    var s = search_field.val();
798                    if (ajax_timer) {
799                        clearTimeout(ajax_timer);
800                        ajax_timer = null;
801                    }
802                    if (s.length >= 4) {
803                        ajax_timer = setTimeout(function () {
804                            $search_wrap_init.addClass('search_progress');
805                            jQuery.post(TRX_ADDONS_STORAGE['ajax_url'], {
806                                action: 'ajax_search',
807                                nonce: TRX_ADDONS_STORAGE['ajax_nonce'],
808                                text: s,
809                                post_types: $search_wrap_init.find('input[name="post_types"]').val()
810                            }).done(function (response) {
811                                clearTimeout(ajax_timer);
812                                ajax_timer = null;
813                                var rez = {};
814                                if (response == '' || response == 0) {
815                                    rez = {error: TRX_ADDONS_STORAGE['msg_search_error']};
816                                } else {
817                                    try {
818                                        rez = JSON.parse(response);
819                                    } catch (e) {
820                                        rez = {error: TRX_ADDONS_STORAGE['msg_search_error']};
821                                        console.log(response);
822                                    }
823                                }
824                                var msg = rez.error === '' ? rez.data : rez.error;
825                                $search_wrap_init.removeClass('search_progress');
826                                search_field.parents('.search_ajax').find('.search_results_content').empty().append(msg);
827                                search_field.parents('.search_ajax').find('.search_results').fadeIn();
828                                jQuery(document).trigger('action.got_ajax_response', {
829                                    action: 'ajax_search',
830                                    result: rez
831                                });
832                            });
833                        }, 500);
834                    }
835                }
836
837            });
838
839            //Search Submit
840			var  $search = $search_wrap_init.prev('.search_submit');
841            $search.on('click', function(e) {
842                $search_wrap_init.parent().addClass('search_active');
843                $body.addClass('search_active');
844                if (!$search_wrap_init.hasClass('search_opened')) {
845                    $search_wrap_init.addClass('search_opened');
846                    $body.addClass('search_open_anim');
847                    $search_wrap_init.next( '.search_overlay' ).fadeIn();
848                    setTimeout(function() { search_field.get(0).focus(); }, 500);
849                } else if (search_field.val() === '') {
850                    if ($search_wrap_init.hasClass('search_opened'))
851                            booklovers_search_close($search_wrap_init);
852                    else
853                        search_field.get(0).focus();
854                } else {
855                    $search_wrap_init.addClass('search_progress');
856                    $search_wrap_init.find('form').get(0).submit();
857                }
858                e.preventDefault();
859                return false;
860            });
861
862            // Click "Search close"
863            $search_wrap_init.find('.search_close').add(
864            $search_wrap_init.next('.search_overlay')
865			).on('click', function(e) {
866                $body.addClass('search_out_anim');
867
868                setTimeout(function () {
869                    booklovers_search_close($search_wrap_init);
870                    $body.removeClass('search_open_anim');
871                    $body.removeClass('search_out_anim');
872                    $search_wrap_init.next( '.search_overlay' ).fadeOut();
873
874                    e.preventDefault();
875                    return false;
876                }, 800);
877
878                setTimeout(function () {
879                    $search_wrap_init.parent().removeClass('search_active');
880                    $body.removeClass('search_active');
881                }, 1200);
882
883            });
884
885            // Click "Close search results"
886            $search_wrap_init.find('.search_results_close').on('click', function(e) {
887                jQuery(this).parent().fadeOut();
888                e.preventDefault();
889                return false;
890            });
891            // Click "More results"
892            $search_wrap_init.on('click', '.search_more', function(e) {
893                if (search_field.val() !== '')
894                    $search_wrap_init.find('form').get(0).submit();
895                e.preventDefault();
896                return false;
897            });
898        }));
899    }
900    // Close search field (remove class 'search_opened' and close search results)
901    function booklovers_search_close($search_wrap_init) {
902        $search_wrap_init.removeClass('search_opened');
903        $search_wrap_init.find('.search_results').fadeOut();
904    }
905
906	// Add skin specific styles to the Google map
907	jQuery(document).on('action.add_googlemap_styles', function(e) {
908		if (typeof TRX_ADDONS_STORAGE == 'undefined') return;
909		TRX_ADDONS_STORAGE['googlemap_styles']['extra'] = [{"featureType": "water", "elementType": "geometry", "stylers": [{"color": "#e9e9e9"}, {"lightness": 17}]}, {"featureType": "landscape", "elementType": "geometry", "stylers": [{"color": "#f5f5f5"}, {"lightness": 20}]}, {"featureType": "road.highway", "elementType": "geometry.fill", "stylers": [{"color": "#ffffff"}, {"lightness": 17}]}, {"featureType": "road.highway", "elementType": "geometry.stroke", "stylers": [{"color": "#ffffff"}, {"lightness": 29}, {"weight": 0.2}]}, {"featureType": "road.arterial", "elementType": "geometry", "stylers": [{"color": "#ffffff"}, {"lightness": 18}]}, {"featureType": "road.local", "elementType": "geometry", "stylers": [{"color": "#ffffff"}, {"lightness": 16}]}, {"featureType": "poi", "elementType": "geometry", "stylers": [{"color": "#f5f5f5"}, {"lightness": 21}]}, {"featureType": "poi.park", "elementType": "geometry", "stylers": [{"color": "#dedede"}, {"lightness": 21}]}, {"elementType": "labels.text.stroke", "stylers": [{"visibility": "on"}, {"color": "#ffffff"}, {"lightness": 16}]}, {"elementType": "labels.text.fill", "stylers": [{"saturation": 36}, {"color": "#333333"}, {"lightness": 40}]}, {"elementType": "labels.icon", "stylers": [{"visibility": "off"}]}, {"featureType": "transit", "elementType": "geometry", "stylers": [{"color": "#f2f2f2"}, {"lightness": 19}]}, {"featureType": "administrative", "elementType": "geometry.fill", "stylers": [{"color": "#fefefe"}, {"lightness": 20}]}, {"featureType": "administrative", "elementType": "geometry.stroke", "stylers": [{"color": "#fefefe"}, {"lightness": 17}, {"weight": 1.2}]}];
910	} );
911
912    // Init skin-specific hidden elements when their parent container becomes visible
913	// Attention! Don't forget to add the class "inited" and check it to prevent re-initialize the elements
914	jQuery( document ).on(
915		'action.init_hidden_elements', function() {
916			skin_blogger_toggle_filter_upd_value();
917			skin_add_custom_width_filter_list();
918			// Move title with cursor
919			mousemove_for_portfolio_large();
920			mousemove_for_portfolio_small();
921
922			add_portfolio_image_wrap();
923
924			// Add image background on wrap in portfolio Stretch
925			background_image_portfolio_stretch();
926
927			skin_blogger_controls_title();
928		}
929	);
930
931	// Skin-specific scroll actions
932	jQuery( document ).on(
933		'action.scroll_booklovers', function() {
934
935		}
936	);
937
938	// Skin-specific resize actions
939	jQuery( document ).on(
940		'action.resize_booklovers', function() {
941			extra_margin_top_video_popup_button();
942			booklovers_skin_post_header_init();
943			skin_add_custom_width_filter_list();
944			max_same_height(".max-same-height");
945			jQuery('.timetable-style').each(function () {
946				max_same_height('.timetable-style .elementor-widget-heading');
947			});
948		}
949	);
950
951	function extra_margin_top_video_popup_button() {
952		if (jQuery('.single-format-video .post_header_wrap_style_style-1 .post_featured.with_video.with_thumb.post_featured_bg + .post_header').length > 0) {
953			var alter_height = jQuery('.single-format-video .post_header_wrap_style_style-1 .post_featured.with_video.with_thumb.post_featured_bg + .post_header').height();
954			jQuery('.single-format-video .post_header_wrap_style_style-1 .post_featured.with_video.with_thumb.post_featured_bg .post_video_hover_popup').css({"margin-top": (- alter_height / 2 + 'px'), "opacity":1});
955		}
956	}
957
958	// Maximum Same Height
959	function max_same_height(block) {
960		var mh = 0;
961		if(jQuery(block).length > 0) {
962			jQuery(block).height('auto');
963			jQuery(block).each(function () {
964				var h_block = parseInt(jQuery(this).height());
965				if(h_block > mh) {
966					mh = h_block;
967				};
968			});
969			jQuery(block).height(mh);
970		}
971	}
972
973	// Click woo filter button
974	jQuery( '.booklovers_woocommerce_filters_button,.sidebar > .sidebar_close,.sidebar_overlay' ).on( 'click', function(e) {
975		var sidebar_float = jQuery( '.sidebar.sidebar_float' );
976		sidebar_float.addClass('float_anim');
977		setTimeout(function () {
978			sidebar_float.removeClass('float_anim');
979			e.preventDefault();
980			return false;
981		}, 400);
982	});
983	
984})();

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.