PageSourceSearch

https://www.senseandbody.ch/wp-content/themes/nutritia/js/main.js?ver=1.0.1

js senseandbody.ch collected 2026-10-09 23:25:02 UTC 35,770 bytes, 1,050 lines download raw bytes

1"use strict";
2
3//hidding menu elements that do not fit in menu width
4//processing center logo
5function menuHideExtraElements() {
6
7	return;
8
9	//cleaneng changed elements
10	jQuery('.sf-more-li, .sf-logo-li').remove();
11	var windowWidth = jQuery('body').innerWidth();
12
13	jQuery('.sf-menu').each(function(){
14		var $thisMenu = jQuery(this);
15		var $menuWraper = $thisMenu.closest('.mainmenu_wrapper');
16		$menuWraper.attr('style', '');
17		if (windowWidth > 991) {
18			//grab all main menu first level items
19			var $menuLis = $menuWraper.find('.sf-menu > li');
20			$menuLis.removeClass('sf-md-hidden');
21
22			var $headerLogoCenter = $thisMenu.closest('.header_logo_center');
23			var logoWidth = 0;
24			var summaryLiWidth = 0;
25
26			if ( $headerLogoCenter.length ) {
27				var $logo = $headerLogoCenter.find('.logo');
28				// 30/2 - left and right margins
29				logoWidth = $logo.outerWidth(true) + 70;
30			}
31
32			// var wrapperWidth = jQuery('.sf-menu').width();
33			var wrapperWidth = $menuWraper.outerWidth(true);
34			$menuLis.each(function(index) {
35				var elementWidth = jQuery(this).outerWidth();
36				summaryLiWidth += elementWidth;
37				if(summaryLiWidth >= (wrapperWidth-logoWidth)) {
38					var $newLi = jQuery('<li class="sf-more-li"><a>...</a><ul class="sub-menu"></ul></li>');
39					jQuery('ul.children').addClass('sub-menu');
40					jQuery($menuLis[index - 1 ]).before($newLi);
41					var newLiWidth = jQuery($newLi).outerWidth(true);
42					var $extraLiElements = $menuLis.filter(':gt('+ ( index - 2 ) +')');
43					$extraLiElements.clone().appendTo($newLi.find('ul'));
44					$extraLiElements.addClass('sf-md-hidden');
45					return false;
46				}
47			});
48
49			//processing center logo
50			if ( $headerLogoCenter.length ) {
51				var $menuLisVisible = $headerLogoCenter.find('.sf-menu > li:not(.sf-md-hidden)');
52				var menuLength = $menuLisVisible.length;
53				var summaryLiVisibleWidth = 0;
54				$menuLisVisible.each(function(){
55					summaryLiVisibleWidth += jQuery(this).outerWidth();
56				});
57
58				var centerLi = Math.floor( menuLength / 2 );
59				if ( (menuLength % 2 === 0) ) {
60					centerLi--;
61				}
62				var $liLeftFromLogo = $menuLisVisible.eq(centerLi);
63				$liLeftFromLogo.after('<li class="sf-logo-li"></li>');
64				$headerLogoCenter.find('.sf-logo-li').width(logoWidth);
65				var liLeftRightDotX = $liLeftFromLogo.offset().left + $liLeftFromLogo.outerWidth();
66				var logoLeftDotX = windowWidth/2 - logoWidth/2;
67				var menuLeftOffset = liLeftRightDotX - logoLeftDotX;
68				$menuWraper.css({'left': -menuLeftOffset})
69			}
70
71		}// > 991
72	}); //sf-menu each
73} //menuHideExtraElements
74
75function initMegaMenu() {
76	var $megaMenu = jQuery('.mainmenu_wrapper .mega-menu');
77	if($megaMenu.length) {
78		var windowWidth = jQuery('body').innerWidth();
79		if (windowWidth > 991) {
80			$megaMenu.each(function(){
81				var $thisMegaMenu = jQuery(this);
82				//temporary showing mega menu to propper size calc
83				$thisMegaMenu.css({'display': 'block', 'left': 'auto'});
84				var thisWidth = $thisMegaMenu.outerWidth();
85				var thisOffset = $thisMegaMenu.offset().left;
86				var thisLeft = (thisOffset + (thisWidth/2)) - windowWidth/2;
87				$thisMegaMenu.css({'left' : -thisLeft, 'display': 'none'});
88				if(!$thisMegaMenu.closest('ul').hasClass('nav')) {
89					$thisMegaMenu.css('left', '');
90				}
91			});
92		}
93	}
94}
95
96function pieChart() {
97	//circle progress bar
98	if (jQuery().easyPieChart) {
99
100		jQuery('.chart').each(function(){
101
102			var $currentChart = jQuery(this);
103			var imagePos = $currentChart.offset().top;
104			var topOfWindow = jQuery(window).scrollTop();
105			if (imagePos < topOfWindow+900) {
106
107				var size = $currentChart.data('size') ? $currentChart.data('size') : 270;
108				var line = $currentChart.data('line') ? $currentChart.data('line') : 20;
109				var bgcolor = $currentChart.data('bgcolor') ? $currentChart.data('bgcolor') : '#ffffff';
110				var trackcolor = $currentChart.data('trackcolor') ? $currentChart.data('trackcolor') : '#c14240';
111				var speed = $currentChart.data('speed') ? $currentChart.data('speed') : 3000;
112
113				$currentChart.easyPieChart({
114					barColor: trackcolor,
115					trackColor: bgcolor,
116					scaleColor: false,
117					scaleLength: false,
118					lineCap: 'butt',
119					lineWidth: line,
120					size: size,
121					rotate: 0,
122					animate: speed,
123					onStep: function(from, to, percent) {
124						jQuery(this.el).find('.percent').text(Math.round(percent));
125					}
126				});
127			}
128		});
129	}
130}
131
132function affixSidebarInit() {
133	var $affixAside = jQuery('.affix-aside');
134	if ($affixAside.length) {
135
136			//on stick and unstick event
137			$affixAside.on('affix.bs.affix', function(e) {
138				var affixWidth = $affixAside.width() - 1;
139				var affixLeft = $affixAside.offset().left;
140				$affixAside
141					.width(affixWidth)
142					.css("left", affixLeft);
143			}).on('affix-top.bs.affix affix-bottom.bs.affix', function(e) {
144				$affixAside.css({"width": "", "left": ""});
145			});
146
147			//counting offset
148			var offsetTop = $affixAside.offset().top - jQuery('.page_header').height();
149			var offsetBottom = jQuery('.page_footer').outerHeight(true) + jQuery('.page_copyright').outerHeight(true);
150
151			$affixAside.affix({
152				offset: {
153					top: offsetTop,
154					bottom: offsetBottom
155				},
156			});
157
158			jQuery(window).on('resize', function() {
159				$affixAside.css({"width": "", "left": ""});
160
161				if( $affixAside.hasClass('affix')) {
162					//returning sidebar in top position if it is sticked because of unexpacted behavior
163					$affixAside.removeClass("affix").css("left", "").addClass("affix-top");
164				}
165
166				var offsetTop = jQuery('.page_topline').outerHeight(true)
167								+ jQuery('.page_toplogo').outerHeight(true)
168								+ jQuery('.page_breadcrumbs').outerHeight(true)
169								+ jQuery('.page_header').outerHeight(true);
170				var offsetBottom = jQuery('.page_footer').outerHeight(true) + jQuery('.page_copyright').outerHeight(true);
171
172				$affixAside.data('bs.affix').options.offset.top = offsetTop;
173				$affixAside.data('bs.affix').options.offset.bottom = offsetBottom;
174
175				$affixAside.affix('checkPosition');
176
177			});
178
179	}//eof checking of affix sidebar existing
180}
181
182//function that initiating template plugins on document.ready event
183function documentReadyInit() {
184	////////////
185	//mainmenu//
186	////////////
187	if (jQuery().scrollbar) {
188		jQuery('[class*="scrollbar-"]').scrollbar();
189	}
190	if (jQuery().superfish) {
191		jQuery('ul.sf-menu').superfish({
192			popUpSelector: 'ul:not(.mega-menu ul), .mega-menu ',
193			delay:       700,
194			animation:   {opacity:'show', marginTop: -1},
195			animationOut: {opacity: 'hide',  marginTop: -15},
196			speed:       200,
197			speedOut:    200,
198			disableHI:   false,
199			cssArrows:   true,
200			autoArrows:  true,
201			onInit: function () {
202				var $thisMenu = jQuery(this);
203				$thisMenu.find('.sf-with-ul').after('<span class="sf-menu-item-mobile-toggler"/>');
204				$thisMenu.find('.sf-menu-item-mobile-toggler').on('click', function (e) {
205					var $parentLi = jQuery(this).parent();
206					if($parentLi.hasClass('sfHover')) {
207						$parentLi.superfish('hide');
208					}
209				});
210			}
211		});
212		jQuery('ul.sf-menu-side').superfish({
213			popUpSelector: 'ul:not(.mega-menu ul), .mega-menu ',
214			delay:       500,
215			animation:   {opacity:'show', height: 100 +'%'},
216			animationOut: {opacity: 'hide',  height: 0},
217			speed:       400,
218			speedOut:    300,
219			disableHI:   false,
220			cssArrows:   true,
221			autoArrows:  true
222		});
223	}
224
225	//toggle mobile menu
226	jQuery('.toggle_menu').on('click', function(){
227		jQuery('.toggle_menu').toggleClass('mobile-active');
228		jQuery('.page_header').toggleClass('mobile-active');
229	});
230
231	jQuery('.mainmenu a').on('click', function(){
232		if (!jQuery(this).hasClass('sf-with-ul')) {
233			jQuery('.toggle_menu').toggleClass('mobile-active');
234			jQuery('.page_header').toggleClass('mobile-active');
235		}
236	});
237
238	//side header processing
239	var $sideHeader = jQuery('.page_header_side');
240	if ($sideHeader.length) {
241		var $body = jQuery('body');
242		jQuery('.toggle_menu_side').on('click', function(){
243			if (jQuery(this).hasClass('header-slide')) {
244				$sideHeader.toggleClass('active-slide-side-header');
245			} else {
246				if(jQuery(this).parent().hasClass('header_side_right')) {
247					$body.toggleClass('active-side-header slide-right');
248				} else {
249					$body.toggleClass('active-side-header');
250				}
251			}
252		});
253		// toggle sub-menus visibility on menu-side-click
254		jQuery('ul.menu-side-click').find('li').each(function(){
255			var $thisLi = jQuery(this);
256			//toggle submenu only for menu items with submenu
257			if ($thisLi.find('ul').length)  {
258				$thisLi
259					.append('<span class="activate_submenu"></span>')
260					.find('.activate_submenu')
261					.on('click', function() {
262						var $thisSpan = jQuery(this);
263						if ($thisSpan.parent().hasClass('active-submenu')) {
264							$thisSpan.parent().removeClass('active-submenu');
265							return;
266						}
267						$thisLi.addClass('active-submenu').siblings().removeClass('active-submenu');
268					});
269			} //eof sumbenu check
270		});
271		//hidding side header on click outside header
272		jQuery('body').on('click', function( e ) {
273			if ( !jQuery(e.target).closest('.page_header_side').length ) {
274				$sideHeader.removeClass('active-slide-side-header');
275				$body.removeClass('active-side-header slide-right');
276			}
277		});
278	} //sideHeader check
279
280	//1 and 2/3/4th level mainmenu offscreen fix
281	var MainWindowWidth = jQuery(window).width();
282	jQuery(window).on('resize', function(){
283		MainWindowWidth = jQuery(window).width();
284	});
285	//2/3/4 levels
286	jQuery('.mainmenu_wrapper .sf-menu').on('mouseover', 'ul li', function(){
287	// jQuery('.mainmenu').on('mouseover', 'ul li', function(){
288		if(MainWindowWidth > 991) {
289			var $this = jQuery(this);
290			// checks if third level menu exist
291			var subMenuExist = $this.find('ul').length;
292			if( subMenuExist > 0){
293				var subMenuWidth = $this.find('ul, div').first().width();
294				var subMenuOffset = $this.find('ul, div').first().parent().offset().left + subMenuWidth;
295				// if sub menu is off screen, give new position
296				if((subMenuOffset + subMenuWidth) > MainWindowWidth){
297					var newSubMenuPosition = subMenuWidth + 0;
298					$this.find('ul, div').first().css({
299						left: -newSubMenuPosition,
300					});
301				} else {
302					$this.find('ul, div').first().css({
303						left: '100%',
304					});
305				}
306			}
307		}
308	//1st level
309	}).on('mouseover', '> li', function(){
310		if(MainWindowWidth > 991) {
311			var $this = jQuery(this);
312			var subMenuExist = $this.find('ul').length;
313			if( subMenuExist > 0){
314				var subMenuWidth = $this.find('ul').width();
315				var subMenuOffset = $this.find('ul').parent().offset().left;
316				// if sub menu is off screen, give new position
317				if((subMenuOffset + subMenuWidth) > MainWindowWidth){
318					var newSubMenuPosition = MainWindowWidth - (subMenuOffset + subMenuWidth);
319					$this.find('ul').first().css({
320						left: newSubMenuPosition,
321					});
322				}
323			}
324		}
325	});
326
327	/////////////////////////////////////////
328	//single page localscroll and scrollspy//
329	/////////////////////////////////////////
330	var navHeight = jQuery('.page_header').outerHeight(true);
331	if (jQuery('.mainmenu_wrapper').length) {
332		jQuery('body').scrollspy({
333			target: '.mainmenu_wrapper',
334			offset: navHeight
335		})
336	}
337	if (jQuery('.mainmenu_side_wrapper').length) {
338		jQuery('body').scrollspy({
339			target: '.mainmenu_side_wrapper',
340			offset: navHeight
341		});
342	}
343	if (jQuery().localScroll) {
344		jQuery('.mainmenu_wrapper > ul, .mainmenu_side_wrapper > ul, #land').localScroll({
345			duration:900,
346			easing:'easeInOutQuart',
347			offset: -navHeight+10
348		});
349	}
350
351	//toTop
352	if (jQuery().UItoTop) {
353		jQuery().UItoTop({ easingType: 'easeOutQuart' });
354	}
355
356	//parallax
357	if (jQuery().parallax) {
358		jQuery('.parallax').parallax("50%", 0.01);
359	}
360
361	// Date Time Picker
362	jQuery('[id ^= id-date]').each(function(){
363		var datePicker = jQuery(this);
364		datePicker.datetimepicker({
365			pickDate: datePicker.data('pick-date'),
366			pickTime: datePicker.data('pick-time'),
367			useSeconds: false,
368			language: datePicker.data('language'),
369			debug: false,
370		});
371	});
372
373	// Smooth scrolling for slider button
374	if (jQuery().localScroll) {
375		jQuery('.mainmenu_wrapper > ul, .mainmenu_side_wrapper > ul, #land, .scroll_button_wrap').localScroll({
376			duration:900,
377			easing:'easeInOutQuart',
378			offset: -navHeight+10
379		});
380	}
381
382	if (jQuery().localScroll) {
383		jQuery('.divided-content').localScroll({
384			duration:900,
385			easing:'easeInOutQuart',
386			offset: -navHeight+10
387		});
388	}
389
390	//prettyPhoto
391	if (jQuery().prettyPhoto) {
392		jQuery("a[data-gal^='prettyPhoto']").prettyPhoto({
393			hook: 'data-gal',
394			theme: 'facebook' /* light_rounded / dark_rounded / light_square / dark_square / facebook / pp_default*/
395		});
396		//for woocommerce products gallery
397		jQuery(" a[data-rel^='prettyPhoto']").prettyPhoto({
398			hook: 'data-rel',
399			theme: 'facebook' /* light_rounded / dark_rounded / light_square / dark_square / facebook / pp_default*/
400		});
401	}
402
403	////////////////////////////////////////
404	//init Twitter Bootstrap JS components//
405	////////////////////////////////////////
406	//bootstrap carousel
407	if (jQuery().carousel) {
408		jQuery('.carousel').carousel();
409	}
410	//bootstrap tab - show first tab
411	jQuery('.nav-tabs').each(function() {
412		jQuery(this).find('a').first().tab('show');
413	});
414	jQuery('.tab-content').each(function() {
415		jQuery(this).find('.tab-pane').first().addClass('fade in');
416	});
417	//bootstrap collapse - show first tab
418	jQuery('.panel-group').each(function() {
419		jQuery(this).find('a').first().filter('.collapsed').trigger('click');
420	});
421	//tooltip
422	if (jQuery().tooltip) {
423		jQuery('[data-toggle="tooltip"]').tooltip();
424	}
425
426	////////////////
427	//owl carousel//
428	////////////////
429	if (jQuery().owlCarousel) {
430		jQuery('.owl-carousel').each(function() {
431			var $carousel = jQuery(this);
432			var loop = $carousel.data('loop') ? $carousel.data('loop') : false;
433			var margin = ($carousel.data('margin') || $carousel.data('margin') == 0) ? $carousel.data('margin') : 30;
434			var nav = $carousel.data('nav') ? $carousel.data('nav') : false;
435			var dots = $carousel.data('dots') ? $carousel.data('dots') : false;
436			var themeClass = $carousel.data('themeclass') ? $carousel.data('themeclass') : 'owl-theme';
437			var center = $carousel.data('center') ? $carousel.data('center') : false;
438			var items = $carousel.data('items') ? $carousel.data('items') : 4;
439			var autoplay = $carousel.data('autoplay') ? $carousel.data('autoplay') : true;
440			var speed = $carousel.data('speed') ? $carousel.data('speed') : 5000;
441			var responsiveXs = $carousel.data('responsive-xs') ? $carousel.data('responsive-xs') : 1;
442			var responsiveSm = $carousel.data('responsive-sm') ? $carousel.data('responsive-sm') : 2;
443			var responsiveMd = $carousel.data('responsive-md') ? $carousel.data('responsive-md') : 3;
444			var responsiveLg = $carousel.data('responsive-lg') ? $carousel.data('responsive-lg') : 4;
445			var filters = $carousel.data('filters') ? $carousel.data('filters') : false;
446			var navContainer = $carousel.data('nav-container') ? $carousel.data('nav-container') : false;
447
448			if (filters) {
449				$carousel.after($carousel.clone().addClass('owl-carousel-filter-cloned'));
450				jQuery(filters).on('click', 'a', function( e ) {
451					//processing filter link
452					e.preventDefault();
453					if (jQuery(this).hasClass('selected')) {
454						return;
455					}
456					var filterValue = jQuery( this ).attr('data-filter');
457					jQuery(this).siblings().removeClass('selected active');
458					jQuery(this).addClass('selected active');
459
460					//removing old items
461					$carousel.find('.owl-item').length;
462					for (var i = $carousel.find('.owl-item').length - 1; i >= 0; i--) {
463						$carousel.trigger('remove.owl.carousel', [1]);
464					};
465
466					//adding new items
467					var $filteredItems = jQuery($carousel.next().find(' > ' +filterValue).clone());
468					$filteredItems.each(function() {
469						$carousel.trigger('add.owl.carousel', jQuery(this));
470						jQuery(this).addClass('scaleAppear');
471					});
472
473					$carousel.trigger('refresh.owl.carousel');
474
475					//reinit prettyPhoto in filtered OWL carousel
476					if (jQuery().prettyPhoto) {
477						$carousel.find("a[data-gal^='prettyPhoto']").prettyPhoto({
478							hook: 'data-gal',
479							theme: 'facebook' /* light_rounded / dark_rounded / light_square / dark_square / facebook / pp_default*/
480						});
481					}
482				});
483
484			} //filters
485
486			$carousel.owlCarousel({
487				loop: loop,
488				margin: margin,
489				nav: nav,
490				autoplay: autoplay,
491				autoplayTimeout: speed,
492				dots: dots,
493				themeClass: themeClass,
494				center: center,
495				items: items,
496				navContainer: navContainer,
497				responsive: {
498					0:{
499						items: responsiveXs
500					},
501					767:{
502						items: responsiveSm
503					},
504					992:{
505						items: responsiveMd
506					},
507					1200:{
508						items: responsiveLg
509					}
510				},
511			})
512			.addClass(themeClass);
513			if(center) {
514				$carousel.addClass('owl-center');
515			}
516		});
517
518	} //eof owl-carousel
519
520	//comingsoon counter
521	if (jQuery().countdown) {
522		//today date plus month for demo purpose
523		var demoDate = new Date();
524		demoDate.setMonth(demoDate.getMonth()+1);
525		jQuery('#comingsoon-countdown').countdown({until: demoDate});
526	}
527
528	/////////////////////////////////////////////////
529	//PHP widgets - contact form, search, MailChimp//
530	/////////////////////////////////////////////////
531
532	//contact form processing
533	jQuery('form.contact-form').on('submit', function( e ){
534		e.preventDefault();
535		var $form = jQuery(this);
536		jQuery($form).find('span.contact-form-respond').remove();
537
538		//checking on empty values
539		jQuery($form).find('[aria-required="true"], [required]').each(function(index) {
540			if (!jQuery(this).val().length) {
541				jQuery(this).addClass('invalid').on('focus', function(){jQuery(this).removeClass('invalid')});
542			}
543		});
544		//if one of form fields is empty - exit
545		if ($form.find('[aria-required="true"], [required]').hasClass('invalid')) {
546			return;
547		}
548
549		//sending form data to PHP server if fields are not empty
550		var request = $form.serialize();
551		var ajax = jQuery.post( "contact-form.php", request )
552		.done(function( data ) {
553			jQuery($form).find('[type="submit"]').attr('disabled', false).parent().append('<span class="contact-form-respond highlight">'+data+'</span>');
554			//cleaning form
555			var $formErrors = $form.find('.form-errors');
556			if ( !$formErrors.length ) {
557				$form[0].reset();
558			}
559		})
560		.fail(function( data ) {
561			jQuery($form).find('[type="submit"]').attr('disabled', false).parent().append('<span class="contact-form-respond highlight">Mail cannot be sent. You need PHP server to send mail.</span>');
562		})
563	});
564
565	//search modal
566	jQuery("#search").on('click', function(e){
567		e.preventDefault();
568		var $parentNode = jQuery(this).parent();
569		$parentNode.find('.screen-reader-text').removeClass('screen-reader-text');
570		$parentNode.find('.theme_button').addClass('color1');
571	});
572	//search form processing
573	jQuery('form.searchform, .search-form').on('submit', function( e ){
574
575
576		var $form = jQuery(this);
577		var $searchModal = jQuery('#search_modal');
578		$searchModal.find('div.searchform-respond').remove();
579
580		//checking on empty values
581		jQuery($form).find('[type="text"], [type="search"]').each(function(index) {
582			if (!(jQuery(this).val().trim()).length) {
583				jQuery(this).addClass('invalid').on('focus', function(){jQuery(this).removeClass('invalid')});
584			}
585		});
586		//if one of form fields is empty - exit
587		if ($form.find('[type="text"], [type="search"]').hasClass('invalid')) {
588			e.preventDefault();
589		}
590
591	});
592
593	//MailChimp subscribe form processing
594	jQuery('.signup').on('submit', function( e ) {
595		e.preventDefault();
596		var $form = jQuery(this);
597		// update user interface
598		$form.find('.response').html('Adding email address...');
599		// Prepare query string and send AJAX request
600		jQuery.ajax({
601			url: 'mailchimp/store-address.php',
602			data: 'ajax=true&email=' + escape($form.find('.mailchimp_email').val()),
603			success: function(msg) {
604				$form.find('.response').html(msg);
605			}
606		});
607	});
608
609	//twitter
610	if (jQuery().tweet) {
611		jQuery('.twitter').tweet({
612			modpath: "./twitter/",
613			count: 2,
614			avatar_size: 48,
615			loading_text: 'loading twitter feed...',
616			join_text: 'auto',
617			username: 'WordPress',
618			template: "{avatar}<div class=\"tweet_right\">{time}{join}<span class=\"tweet_text\">{tweet_text}</span></div>"
619		});
620	}
621
622
623	//adding CSS classes for elements that needs different styles depending on they widht width
624	//see 'plugins.js' file
625	jQuery('#mainteasers .col-lg-4').addWidthClass({
626		breakpoints: [500, 600]
627	});
628
629
630	//background image teaser
631	jQuery(".bg_teaser").each(function(){
632		var $teaser = jQuery(this);
633		var imagePath = $teaser.find("img").first().attr("src");
634		if ( imagePath ) {
635			$teaser.css("background-image", "url(" + imagePath + ")");
636		}
637		if (!$teaser.find('.bg_overlay').length) {
638			$teaser.prepend('<div class="bg_overlay"/>');
639		}
640	});
641
642	// init timetable
643	var $timetable = jQuery('#timetable');
644	if ($timetable.length) {
645		// bind filter click
646		jQuery('#timetable_filter').on( 'click', 'a', function( e ) {
647			e.preventDefault();
648			e.stopPropagation();
649			if ( jQuery(this).hasClass('selected') ) {
650			  // return false;
651			  return;
652		  }
653		  var selector = jQuery(this).attr('data-filter');
654		  $timetable.find('tbody td').removeClass('current').end().find(selector).closest('td').addClass('current');
655		  jQuery( this ).closest('ul').find('a').removeClass('selected');
656		  jQuery( this ).addClass('selected');
657	  });
658	}
659
660    //wp-postrating plugin
661    if (typeof(rate_post_success) === 'function') {
662        jQuery('.post-ratings').find('img').after('<span/>');
663        //override default function - to add span on success rating set
664        window.rate_post_success = function (data) {
665            jQuery('#post-ratings-' + post_id).html(data);
666            if(ratingsL10n.show_loading) {
667                jQuery('#post-ratings-' + post_id + '-loading').hide();
668            }
669            if(ratingsL10n.show_fading) {
670                jQuery('#post-ratings-' + post_id).fadeTo('def', 1, function () {
671                    set_is_being_rated(false);
672                });
673            } else {
674                set_is_being_rated(false);
675            }
676            jQuery('.post-ratings').find('img').after('<span/>');
677        }
678    }
679}//eof documentReadyInit
680
681//function that initiating template plugins on window.load event
682function windowLoadInit() {
683	//chart
684	pieChart();
685
686	//flexslider
687	if (jQuery().flexslider) {
688		var $introSlider = jQuery(".intro_section .flexslider");
689		$introSlider.each(function(index){
690			var $currentSlider = jQuery(this);
691			$currentSlider.flexslider({
692				animation: "fade",
693				pauseOnHover: true,
694				useCSS: true,
695				controlNav: true,
696				directionNav: true,
697				prevText: ">",
698				nextText: "<",
699				smoothHeight: false,
700				slideshowSpeed: $currentSlider.data('slideshowspeed') ? $currentSlider.data('slideshowspeed') : 5000,
701				animationSpeed: 600,
702				start: function( slider ) {
703					if (window.screen.width > 992) {
704						slider.find('.slide_description').children().css({'visibility': 'hidden'});
705						slider.find('.flex-active-slide .slide_description').children().each(function(index){
706							var self = jQuery(this);
707							var animationClass = !self.data('animation') ? 'fadeInRight' : self.data('animation');
708							setTimeout(function(){
709								self.addClass("animated "+animationClass);
710							}, index*200);
711						});
712						slider.find('.flex-control-nav').find('a').each(function() {
713							jQuery( this ).html('0' + jQuery( this ).html());
714						});
715					} else {
716						for (let index = 0; index < slider.slides.length; index++) {
717							jQuery(slider.slides[index]).find('img').css('display', 'none');
718							jQuery(slider.slides[index]).css({
719								'background-image': 'url("' + jQuery(slider.slides[index]).find('img').attr('src') + '"',
720								'background-size': 'cover'
721							});
722						}
723					}
724				},
725				after :function( slider ){
726					slider.find('.flex-active-slide .slide_description').children().each(function(index){
727						var self = jQuery(this);
728						var animationClass = !self.data('animation') ? 'fadeInRight' : self.data('animation');
729						setTimeout(function(){
730							self.addClass("animated "+animationClass);
731						}, index*200);
732					});
733				},
734				end :function( slider ){
735					slider.find('.slide_description').children().each(function() {
736						var self = jQuery(this);
737						var animationClass = !self.data('animation') ? 'fadeInRight' : self.data('animation');
738						self.removeClass('animated ' + animationClass).css({'visibility': 'hidden'});
739							// jQuery(this).attr('class', '');
740						});
741				},
742
743			})
744			//wrapping nav with container
745			.find('.flex-control-nav')
746			.wrap('<div class="container nav-container"/>')
747		}); //intro_section flex slider
748
749		jQuery(".flexslider").each(function(index){
750			var $currentSlider = jQuery(this);
751			//exit if intro slider already activated
752			if ($currentSlider.find('.flex-active-slide').length) {
753				return;
754			}
755			$currentSlider.flexslider({
756				animation: "fade",
757				useCSS: true,
758				controlNav: true,
759				directionNav: false,
760				prevText: ">",
761				nextText: "<",
762				smoothHeight: false,
763				slideshowSpeed:5000,
764				animationSpeed:800,
765			})
766		});
767	}
768
769	////////////////////
770	//header processing/
771	////////////////////
772	//stick header to top
773	//wrap header with div for smooth sticking
774	var $header = jQuery('.page_header').first();
775	if ($header.length) {
776		//hiding main menu 1st levele elements that do not fit width
777		menuHideExtraElements();
778		//mega menu
779		initMegaMenu();
780		var headerHeight = $header.outerHeight();
781		$header.wrap('<div class="page_header_wrapper"></div>').parent().css({height: headerHeight}); //wrap header for smooth stick and unstick
782		var $headerWrapper = $header.parent();
783
784		//get offset
785		var headerOffset = 0;
786		//check for sticked template headers
787		headerOffset = $header.offset().top;
788
789		//for boxed layout - show or hide main menu elements if width has been changed on affix
790		jQuery($header).on('affixed-top.bs.affix affixed.bs.affix affixed-bottom.bs.affix', function ( e ) {
791			if( $header.hasClass('affix-top') ) {
792				$header.parent().removeClass('affix-wrapper affix-bottom-wrapper').addClass('affix-top-wrapper');
793			} else if ( $header.hasClass('affix') ) {
794				$header.parent().removeClass('affix-top-wrapper affix-bottom-wrapper').addClass('affix-wrapper');
795			} else if ( $header.hasClass('affix-bottom') ) {
796				$header.parent().removeClass('affix-wrapper affix-top-wrapper').addClass('affix-bottom-wrapper');
797			} else {
798				$header.parent().removeClass('affix-wrapper affix-top-wrapper affix-bottom-wrapper');
799			}
800			menuHideExtraElements();
801			initMegaMenu();
802		});
803
804		//if header has different height on afixed and affixed-top positions - correcting wrapper height
805		jQuery($header).on('affixed-top.bs.affix', function () {
806			$header.parent().css({height: headerHeight});
807		});
808
809		jQuery($header).affix({
810			offset: {
811				top: headerOffset,
812				bottom: 0
813			}
814		});
815	}
816
817	//aside affix
818	affixSidebarInit();
819
820	jQuery('body').scrollspy('refresh');
821
822	//animation to elements on scroll
823	if (jQuery().appear) {
824		jQuery('.to_animate').appear();
825		jQuery('.to_animate').filter(':appeared').each(function(index){
826			var self = jQuery(this);
827			var animationClass = !self.data('animation') ? 'fadeInUp' : self.data('animation');
828			var animationDelay = !self.data('delay') ? 210 : self.data('delay');
829			setTimeout(function(){
830				self.addClass("animated " + animationClass);
831			}, index * animationDelay);
832		});
833
834		jQuery('body').on('appear', '.to_animate', function(e, $affected ) {
835			jQuery($affected).each(function(index){
836				var self = jQuery(this);
837				var animationClass = !self.data('animation') ? 'fadeInUp' : self.data('animation');
838				var animationDelay = !self.data('delay') ? 210 : self.data('delay');
839				setTimeout(function(){
840					self.addClass("animated " + animationClass);
841				}, index * animationDelay);
842			});
843		});
844
845		//counters init on scroll
846		jQuery('.counter').appear();
847		jQuery('.counter').filter(':appeared').each(function(index){
848			if (jQuery(this).hasClass('counted')) {
849				return;
850			} else {
851				jQuery(this).countTo().addClass('counted');
852			}
853		});
854		jQuery('body').on('appear', '.counter', function(e, $affected ) {
855			jQuery($affected).each(function(index){
856				if (jQuery(this).hasClass('counted')) {
857					return;
858				} else {
859					jQuery(this).countTo().addClass('counted');
860				}
861
862			});
863		});
864
865	//bootstrap animated progressbar
866		if (jQuery().progressbar) {
867			jQuery('.progress .progress-bar').appear();
868			jQuery('.progress .progress-bar').filter(':appeared').each(function(index){
869				jQuery(this).progressbar({
870					transition_delay: 300
871				});
872			});
873			jQuery('body').on('appear', '.progress .progress-bar', function(e, $affected ) {
874				jQuery($affected).each(function(index){
875					jQuery(this).progressbar({
876						transition_delay: 300
877					});
878				});
879			});
880			//animate progress bar inside bootstrap tab
881			jQuery('a[data-toggle="tab"]').on('shown.bs.tab', function(e) {
882				jQuery(jQuery(e.target).attr('href')).find('.progress .progress-bar').progressbar({
883					transition_delay: 300
884				});
885			});
886		}
887	} //appear check
888
889	//flickr
890	// use http://idgettr.com/ to find your ID
891	if (jQuery().jflickrfeed) {
892		var $flickr = jQuery("#flickr, .flickr_ul");
893		if ( $flickr.length ) {
894			$flickr.each(function () {
895				var $thisFlickrUl = jQuery(this);
896				if ( ! ( jQuery(this).hasClass('flickr_loaded') ) ) {
897					var id = $thisFlickrUl.data('flickr-id') ? $thisFlickrUl.data('flickr-id') : 8;
898					var limit = $thisFlickrUl.data('flickr-number') ? $thisFlickrUl.data('flickr-number') : '131791558@N04';
899					$thisFlickrUl.jflickrfeed({
900						flickrbase: "http://api.flickr.com/services/feeds/",
901						limit: limit,
902						qstrings: {
903							id: id
904						},
905						itemTemplate: '<a href="{{image_b}}" data-gal="prettyPhoto[pp_gal]"><li><img alt="{{title}}" src="{{image_s}}" /></li></a>'
906					}, function(data) {
907						$thisFlickrUl.find('a').prettyPhoto({
908							hook: 'data-gal',
909							theme: 'facebook'
910						});
911					}).addClass('flickr_loaded');
912				}
913
914			})
915
916		}
917	}
918
919	//video images preview
920	jQuery('.embed-placeholder').each(function(){
921		jQuery(this).on('click', function(e) {
922			e.preventDefault();
923			var $thisLink = jQuery(this);
924			if ($thisLink.attr('href') == '' || $thisLink.attr('href') == '#') {
925				$thisLink.replaceWith($thisLink.data('iframe').replace(/&amp/g, '&').replace(/$lt;/g, '<').replace(/&gt;/g, '>').replace(/$quot;/g, '"')).trigger('click');
926			} else {
927				$thisLink.replaceWith('<iframe class="embed-responsive-item" src="'+ $thisLink.attr('href') + '?rel=0&autoplay=1'+ '"></iframe>');
928			}
929		});
930	});
931
932	// init Isotope
933	jQuery('.isotope_container').each(function(index) {
934		var $container = jQuery(this);
935		var layoutMode = ($container.hasClass('masonry-layout')) ? 'masonry' : 'fitRows';
936		$container.isotope({
937			percentPosition: true,
938			layoutMode: layoutMode,
939			masonry: {}
940		});
941
942		var $filters = jQuery(this).attr('data-filters') ? jQuery(jQuery(this).attr('data-filters')) : $container.prev().find('.filters');
943		// bind filter click
944		if ($filters.length) {
945			$filters.on( 'click', 'a', function( e ) {
946			e.preventDefault();
947			var filterValue = jQuery( this ).attr('data-filter');
948			$container.isotope({ filter: filterValue });
949			jQuery(this).siblings().removeClass('selected active');
950			jQuery(this).addClass('selected active');
951		});
952		}
953	});
954
955	//Unyson or other messages modal
956	var $messagesModal = jQuery('#messages_modal');
957	if ($messagesModal.find('ul').length) {
958		$messagesModal.modal('show');
959	}
960
961	//page preloader
962	jQuery(".preloaderimg").fadeOut();
963	jQuery(".preloader").delay(200).fadeOut("slow").delay(200, function(){
964		jQuery(this).remove();
965	});
966}//eof windowLoadInit
967
968jQuery(document).ready( function() {
969	documentReadyInit();
970}); //end of "document ready" event
971
972
973jQuery(window).on('load', function(){
974	windowLoadInit();
975}); //end of "window load" event
976
977jQuery(window).on('resize', function(){
978
979	jQuery('body').scrollspy('refresh');
980
981	//header processing
982	menuHideExtraElements();
983	initMegaMenu();
984	var $header = jQuery('.page_header').first();
985		//checking document scrolling position
986		if ($header.length && !jQuery(document).scrollTop() && $header.first().data('bs.affix')) {
987			$header.first().data('bs.affix').options.offset.top = $header.offset().top;
988		}
989	jQuery(".page_header_wrapper").css({height: $header.first().outerHeight()}); //editing header wrapper height for smooth stick and unstick
990
991});
992
993//wrap forms select field corretcion (disable first choise)
994jQuery('.wrap-forms').find('select option:first-of-type').attr("disabled", "disabled").addClass('default-selected');
995
996jQuery(window).scroll(function() {
997	//circle progress bar
998	pieChart();
999});
1000
1001//Replace search widget placeholder
1002jQuery('.search-form').find('.search-field').attr("placeholder", "Search Keyword");
1003jQuery('.page_topline').find('.search-field').attr("placeholder", "Search...");
1004
1005//Breadcrumbs title (wrap last word in span)
1006jQuery('.breadcrumbs-title').html(function() {
1007    // separate the text by spaces
1008    var text= jQuery(this).text().split(' ');
1009    // drop the last word and store it in a variable
1010    var last = text.pop();
1011    // join the text back and if it has more than 1 word add the span tag
1012    // to the last word
1013    return text.join(" ") + (text.length > 1 ? ' <span class="last-word">'+last+'</span>' : last);
1014});
1015
1016//Appointment monthname (wrap last word in span)
1017jQuery('.monthName').html(function() {
1018    // separate the text by spaces
1019    var text= jQuery(this).text().split(' ');
1020    // drop the last word and store it in a variable
1021    var last = text.pop();
1022    // join the text back and if it has more than 1 word add the span tag
1023    // to the last word
1024    return text.join(" ") + (text.length > 0 ? ' <span class="last-word">'+last+'</span>' : last);
1025});
1026
1027//Author meta name(wrap last word in span)
1028jQuery('.author-meta .author-name').html(function() {
1029    // separate the text by spaces
1030    var text= jQuery(this).text().split(' ');
1031    // drop the last word and store it in a variable
1032    var last = text.pop();
1033    // join the text back and if it has more than 1 word add the span tag
1034    // to the last word
1035    return text.join(" ") + (text.length > 0 ? ' <span class="last-word">'+last+'</span>' : last);
1036});
1037
1038//Comment author name(wrap last word in span)
1039jQuery('.author_url .fn').html(function() {
1040    // separate the text by spaces
1041    var text= jQuery(this).text().split(' ');
1042    // drop the last word and store it in a variable
1043    var last = text.pop();
1044    // join the text back and if it has more than 1 word add the span tag
1045    // to the last word
1046    return text.join(" ") + (text.length > 0 ? ' <span class="last-word">'+last+'</span>' : last);
1047});
1048
1049//add child element to footer widget title
1050jQuery('body').find('.widget-title').append( '<span class="after_title"></span>' );

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.