PageSourceSearch

https://thesentenceworks.co.uk/wp-content/plugins/trx_utils/shortcodes/theme.shortcodes.js

js thesentenceworks.co.uk collected 2026-10-07 02:13:15 UTC 45,275 bytes, 1,311 lines download raw bytes

1// Init actions
2function lifecoach_sc_init_actions() {
3	"use strict";
4	setTimeout(function() {
5		lifecoach_sc_animation();
6	}, 600);
7	
8	// MenuItems - init once
9	jQuery('body')
10		.on('click', '.show_popup_menuitem', function(e) {
11			"use strict";
12			lifecoach_menuitems_show_popup(jQuery(this));
13			e.preventDefault();
14			return false;
15		})
16		.on('click', '.close_menuitem, .popup_menuitem', function(e) {
17			"use strict";
18			var target = jQuery(e.target);
19			if (target.hasClass('popup_menuitem') || target.hasClass('close_menuitem') || target.parent().hasClass('close_menuitem')) {
20				lifecoach_menuitems_hide_popup();
21				e.preventDefault();
22				return false;
23			}
24		});
25
26	// Init sc in container
27	lifecoach_sc_init(jQuery('body').eq(0));
28}
29
30
31// Resize actions
32function lifecoach_sc_resize_actions() {
33	"use strict";
34	lifecoach_sc_sliders_resize();
35	lifecoach_sc_equal_height();
36}
37
38
39// Scroll actions
40function lifecoach_sc_scroll_actions() {
41	"use strict";
42	lifecoach_sc_animation();
43}
44
45
46// Animation
47function lifecoach_sc_animation() {
48	jQuery('[data-animation^="animated"]:not(.animated)').each(function() {
49		"use strict";
50		if (jQuery(this).offset().top < jQuery(window).scrollTop() + jQuery(window).height())
51			jQuery(this).addClass(jQuery(this).data('animation'));
52	});
53}
54
55
56// Shortcodes init
57function lifecoach_sc_init(container) {
58
59	// Accordion
60	if (container.find('.sc_accordion:not(.inited)').length > 0) {
61		container.find(".sc_accordion:not(.inited)").each(function () {
62			"use strict";
63			var init = jQuery(this).data('active');
64			if (isNaN(init)) init = 0;
65			else init = Math.max(0, init);
66			jQuery(this)
67				.addClass('inited')
68				.accordion({
69					active: init,
70					heightStyle: "content",
71					header: "> .sc_accordion_item > .sc_accordion_title",
72					create: function (event, ui) {
73						"use strict";
74						lifecoach_sc_init(ui.panel);
75						if (window.lifecoach_init_hidden_elements) lifecoach_init_hidden_elements(ui.panel);
76						ui.header.each(function () {
77							"use strict";
78							jQuery(this).parent().addClass('sc_active');
79						});
80					},
81					activate: function (event, ui) {
82						"use strict";
83						lifecoach_sc_init(ui.newPanel);
84						if (window.lifecoach_init_hidden_elements) lifecoach_init_hidden_elements(ui.newPanel);
85						ui.newHeader.each(function () {
86							"use strict";
87							jQuery(this).parent().addClass('sc_active');
88						});
89						ui.oldHeader.each(function () {
90							"use strict";
91							jQuery(this).parent().removeClass('sc_active');
92						});
93					}
94				});
95		});
96	}
97
98	// Blogger: style Polaroid
99	if (container.find('.sc_blogger.layout_polaroid .photostack:not(.inited)').length > 0) {
100		container.find(".sc_blogger.layout_polaroid .photostack:not(.inited)").each(function () {
101			"use strict";
102			var obj = jQuery(this);
103			var id = obj.attr('id');
104			if (id == undefined) {
105				id = 'photostack_'+Math.random();
106				id = id.replace('.', '');
107				obj.attr('id', id);
108			}
109			setTimeout(function() {
110				"use strict";
111				obj.addClass('inited').parent().height("auto");
112				new Photostack( obj.get(0), {
113					callback: function( item ) {
114					}
115				} );
116			}, 10);
117		});
118	}
119
120	// Blogger: Scroll horizontal
121	if (container.find('.sc_blogger .sc_scroll_horizontal .sc_scroll_wrapper:not(.inited)').length > 0) {
122		container.find(".sc_blogger .sc_scroll_horizontal .sc_scroll_wrapper:not(.inited)").each(function () {
123			"use strict";
124			var obj = jQuery(this);
125			var width = 0;
126			obj.find('.isotope_item').each(function(){
127				"use strict";
128				width += jQuery(this).outerWidth();
129			});
130			obj.addClass('inited').width(width);
131		});
132	}
133
134	// Form
135	if (container.find('.sc_form form:not(.inited)').length > 0) {
136		container.find(".sc_form form:not(.inited)").each(function() {
137			"use strict";
138			jQuery(this).addClass('inited');
139			jQuery(this).submit(function(e) {
140				"use strict";
141				lifecoach_sc_form_validate(jQuery(this));
142				e.preventDefault();
143				return false;
144			});
145			if (jQuery(this).find('.js__datepicker').length > 0) {
146				jQuery(this).find('.js__datepicker').pickadate({
147					// Work-around for some mobile browsers clipping off the picker.
148					onOpen: function() {
149						"use strict";
150						jQuery('pre').css('overflow', 'hidden');
151						},
152					onClose: function() {
153						"use strict";
154						jQuery('pre').css('overflow', '');
155					},
156					monthsShort: [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec' ],
157					showMonthsShort: true,
158					format: 'dd.mm.yyyy',
159					formatSubmit: 'yyyy-mm-dd',
160					min: true
161				});
162			}
163			if (jQuery(this).find('.js__timepicker').length > 0) {
164				jQuery(this).find('.js__timepicker').pickatime();
165			}
166		});
167	}
168
169	//Countdown
170	if (container.find('.sc_countdown:not(.inited)').length > 0) {
171		container.find('.sc_countdown:not(.inited)')
172			.each(function () {
173				"use strict";
174				jQuery(this).addClass('inited');
175				var id = jQuery(this).attr('id');
176				var curDate = new Date(); 
177				var curDateTimeStr = curDate.getFullYear()+'-'+(curDate.getMonth()<9 ? '0' : '')+(curDate.getMonth()+1)+'-'+(curDate.getDate()<10 ? '0' : '')+curDate.getDate()
178					+' '+(curDate.getHours()<10 ? '0' : '')+curDate.getHours()+':'+(curDate.getMinutes()<10 ? '0' : '')+curDate.getMinutes()+':'+(curDate.getSeconds()<10 ? '0' : '')+curDate.getSeconds(); 
179				var interval = 1;	//jQuery(this).data('interval');
180				var endDateStr = jQuery(this).data('date');
181				var endDateParts = endDateStr.split('-');
182				var endTimeStr = jQuery(this).data('time');
183				var endTimeParts = endTimeStr.split(':');
184				if (endTimeParts.length < 3) endTimeParts[2] = '00';
185				var endDateTimeStr = endDateStr+' '+endTimeStr;
186				if (curDateTimeStr < endDateTimeStr) {
187					jQuery(this).find('.sc_countdown_placeholder').countdown({
188						until: new Date(endDateParts[0], endDateParts[1]-1, endDateParts[2], endTimeParts[0], endTimeParts[1], endTimeParts[2]), 
189						tickInterval: interval,
190						onTick: lifecoach_countdown
191					}); 
192				} else {
193					jQuery(this).find('.sc_countdown_placeholder').countdown({
194						since: new Date(endDateParts[0], endDateParts[1]-1, endDateParts[2], endTimeParts[0], endTimeParts[1], endTimeParts[2]), 
195						tickInterval: interval,
196						onTick: lifecoach_countdown
197					}); 
198				}
199			});
200	}
201
202	// Googlemap init
203	if (container.find('.sc_googlemap:not(.inited)').length > 0) {
204		container.find('.sc_googlemap:not(.inited)')
205			.each(function () {
206				"use strict";
207				if (jQuery(this).parents('div:hidden,article:hidden').length > 0) return;
208				var map = jQuery(this).addClass('inited');
209				var map_id		= map.attr('id');
210				var map_zoom	= map.data('zoom');
211				var map_style	= map.data('style');
212				var map_markers = [];
213				map.find('.sc_googlemap_marker').each(function() {
214					"use strict";
215					var marker = jQuery(this);
216					map_markers.push({
217						point:			marker.data('point'),
218						address:		marker.data('address'),
219						latlng:			marker.data('latlng'),
220						description:	marker.data('description'),
221						title:			marker.data('title')
222					});
223				});
224				lifecoach_googlemap_init( jQuery('#'+map_id).get(0), {style: map_style, zoom: map_zoom, markers: map_markers});
225			});
226	}
227
228	// Infoboxes
229	if (container.find('.sc_infobox.sc_infobox_closeable:not(.inited)').length > 0) {
230		container.find('.sc_infobox.sc_infobox_closeable:not(.inited)')
231			.addClass('inited')
232			.on('click', function (e) {
233				"use strict";
234				jQuery(this).slideUp();
235				e.preventDefault();
236				return false;
237			});
238	}
239
240	// Intro
241	if (container.find('.sc_intro[data-href]:not(.inited)').length > 0) {
242		container.find('.sc_intro[data-href]:not(.inited)')
243			.addClass('inited')
244			.on('click', function (e) {
245				"use strict";
246				var link = jQuery(this).data('href');
247				window.location.href = link;
248				e.preventDefault();
249				return false;
250			});
251	}
252
253	// Matches
254	if (container.find('.sc_matches:not(.inited)').length > 0) {
255		container.find('.sc_matches:not(.inited)')
256			.each(function () {
257				"use strict";
258				jQuery(this).find('.sc_matches_next .sc_matches_list .sc_match').on('click', function () {
259					"use strict";
260					jQuery(this).parents('.sc_matches').find('.sc_matches_current .sc_match').hide();
261					var item = jQuery(this).data('item');
262					jQuery(item).fadeIn();
263				});
264			});
265	}
266
267	// Matches & Players: Sort players by points
268	if (container.find('.sc_players_table:not(.inited)').length > 0) {
269		container.find('.sc_players_table:not(.inited)')
270			.addClass('inited')
271			.on('click', '.sort', function (e) {
272				"use strict";
273				var table = jQuery(this).parents('.sc_players_table');
274				var id = jQuery(table).attr('id')
275				var sort = jQuery(table).data('sort') == 'asc' ? 'desc' : 'asc';
276				jQuery.post(LIFECOACH_STORAGE['ajax_url'], {
277					action: 'sort_by_points',
278					nonce: LIFECOACH_STORAGE['ajax_nonce'],
279					sort: sort,
280					table: LIFECOACH_STORAGE['ajax_' + id]
281				}).done(function(response) {
282					var rez = {};
283					try {
284						rez = JSON.parse(response);
285					} catch (e) {
286						rez = { error: LIFECOACH_STORAGE['ajax_error'] };
287						console.log(response);
288					}
289					if (rez.error === '') { 
290						table
291							.data('sort', sort)
292							.find('.sc_table')
293								.after(rez.data)
294								.remove();
295						lifecoach_select_players_category(jQuery(table).find('.sc_players_table_category select'));		
296					}
297				});
298				e.preventDefault();
299				return false;
300			});
301	}
302	
303	// Matches & Players: Select category in the points table
304	if (container.find('.sc_players_table_category:not(.inited)').length > 0) {
305		container.find('.sc_players_table_category:not(.inited)')
306			.addClass('inited')
307			.on('change', function () {
308				"use strict";
309				lifecoach_select_players_category(jQuery(this));		
310			});
311	}
312
313	// Popup links
314	if (container.find('.sc_popup_link:not(.inited)').length > 0) {
315		container.find('.sc_popup_link:not(.inited)').each(function() {
316			var popup_id = jQuery(this).attr('href');
317			jQuery(this)
318				.addClass('inited')
319				.magnificPopup({
320					type: 'inline',
321					removalDelay: 500,
322					midClick: true,
323					callbacks: {
324						beforeOpen: function () {
325							this.st.mainClass = 'mfp-zoom-in';
326						},
327						open: function() {
328							"use strict";
329							lifecoach_sc_init(jQuery(popup_id));
330							lifecoach_resize_actions();
331							if (window.lifecoach_init_hidden_elements) lifecoach_init_hidden_elements(jQuery(popup_id));
332						},
333						close: function() {}
334					}
335				});
336		});
337	}
338
339	// Recent news widget and sc
340	if (container.find('.sc_recent_news_header_category_item_more:not(.inited)').length > 0) {
341		container.find('.sc_recent_news_header_category_item_more:not(.inited)').each(function() {
342			"use strict";
343			jQuery(this)
344				.addClass('inited')
345				.on('click', function(e) {
346					"use strict";
347					jQuery(this).toggleClass('opened').find('.sc_recent_news_header_more_categories').slideToggle();
348					e.preventDefault();
349					return false;
350				});
351		});
352	}
353
354	// Search form
355	if (container.find('.search_wrap:not(.inited)').length > 0) {
356		container.find('.search_wrap:not(.inited)').each(function() {
357			"use strict";
358			jQuery(this)
359				.addClass('inited')
360				.on('click', '.search_submit', function(e) {
361					"use strict";
362					var search_wrap = jQuery(this).parents('.search_wrap');
363					if (!search_wrap.hasClass('search_state_fixed')) {
364						if (search_wrap.hasClass('search_state_opened')) {
365							if (search_wrap.find('.search_field').val() != '')
366								search_wrap.find('form').get(0).submit();
367							else
368								search_wrap.removeClass('search_state_opened').addClass('search_state_closed').find('.search_results').fadeOut();
369						} else
370							search_wrap.removeClass('search_state_closed').addClass('search_state_opened').find('.search_field').get(0).focus();
371					} else {
372						if (search_wrap.find('.search_field').val() != '')
373							search_wrap.find('form').get(0).submit();
374						else {
375							search_wrap.find('.search_field').val('');
376							search_wrap.find('.search_results').fadeOut();
377						}
378					}
379					e.preventDefault();
380					return false;
381				})
382				.on('click', '.search_close', function(e) {
383					"use strict";
384					jQuery(this).parents('.search_wrap').removeClass('search_state_opened').addClass('search_state_closed').find('.search_results').fadeOut();
385					e.preventDefault();
386					return false;
387				})
388				.on('click', '.search_results_close', function(e) {
389					"use strict";
390					jQuery(this).parent().fadeOut();
391					e.preventDefault();
392					return false;
393				})
394				.on('click', '.search_more', function(e) {
395					"use strict";
396					if (jQuery(this).parents('.search_wrap').find('.search_field').val() != '')
397						jQuery(this).parents('.search_wrap').find('form').get(0).submit();
398					e.preventDefault();
399					return false;
400				})
401				.on('blur', '.search_field', function(e) {
402					if (jQuery(this).val() == '' && !jQuery(this).parents('.search_wrap').hasClass('search_state_fixed'))
403						jQuery(this).parents('.search_wrap').removeClass('search_state_opened').addClass('search_state_closed').find('.search_results').fadeOut();
404				});
405
406			if (jQuery(this).hasClass('search_ajax')) {
407				var ajax_timer = null;
408				jQuery(this).find('.search_field').keyup(function(e) {
409					"use strict";
410					var search_field = jQuery(this);
411					var s = search_field.val();
412					if (ajax_timer) {
413						clearTimeout(ajax_timer);
414						ajax_timer = null;
415					}
416					if (s.length >= LIFECOACH_STORAGE['ajax_search_min_length']) {
417						ajax_timer = setTimeout(function() {
418							"use strict";
419							jQuery.post(LIFECOACH_STORAGE['ajax_url'], {
420								action: 'ajax_search',
421								nonce: LIFECOACH_STORAGE['ajax_nonce'],
422								text: s
423							}).done(function(response) {
424								"use strict";
425								clearTimeout(ajax_timer);
426								ajax_timer = null;
427								var rez = {};
428								try {
429									rez = JSON.parse(response);
430								} catch (e) {
431									rez = { error: LIFECOACH_STORAGE['ajax_error'] };
432									console.log(response);
433								}
434								if (rez.error === '') {
435									search_field.parents('.search_ajax').find('.search_results_content').empty().append(rez.data);
436									search_field.parents('.search_ajax').find('.search_results').fadeIn();
437								} else {
438									lifecoach_message_warning(LIFECOACH_STORAGE['strings']['search_error']);
439								}
440							});
441						}, LIFECOACH_STORAGE['ajax_search_delay']);
442					}
443				});
444			}
445		});
446	}
447
448	
449	// Section Pan init
450	if (container.find('.sc_pan:not(.inited_pan)').length > 0) {
451		container.find('.sc_pan:not(.inited_pan)')
452			.each(function () {
453				"use strict";
454				if (jQuery(this).parents('div:hidden,article:hidden').length > 0) return;
455				var pan = jQuery(this).addClass('inited_pan');
456				var cont = pan.parent();
457				cont.mousemove(function(e) {
458					"use strict";
459					var anim = {};
460					var tm = 0;
461					var pw = pan.width(), ph = pan.height();
462					var cw = cont.width(), ch = cont.height();
463					var coff = cont.offset();
464					if (pan.hasClass('sc_pan_vertical'))
465						pan.css('top', -Math.floor((e.pageY - coff.top) / ch * (ph-ch)));
466					if (pan.hasClass('sc_pan_horizontal'))
467						pan.css('left', -Math.floor((e.pageX - coff.left) / cw * (pw-cw)));
468				});
469				cont.mouseout(function(e) {
470					"use strict";
471					pan.css({'left': 0, 'top': 0});
472				});
473			});
474	}
475
476	// Scroll
477	if (container.find('.sc_scroll:not(.inited)').length > 0) {
478		container.find('.sc_scroll:not(.inited)')
479			.each(function () {
480				"use strict";
481				if (jQuery(this).parents('div:hidden,article:hidden').length > 0) return;
482				LIFECOACH_STORAGE['scroll_init_counter'] = 0;
483				lifecoach_sc_init_scroll_area(jQuery(this));
484			});
485	}
486
487
488	// Swiper Slider
489	if (container.find('.sc_slider_swiper:not(.inited)').length > 0) {
490		container.find('.sc_slider_swiper:not(.inited)')
491			.each(function () {
492				"use strict";
493				if (jQuery(this).parents('div:hidden,article:hidden').length > 0) return;
494				//if (jQuery(this).parents('.isotope_wrap:not(.inited)').length > 0) return;
495				jQuery(this).addClass('inited');
496				lifecoach_sc_slider_autoheight(jQuery(this));
497				if (jQuery(this).parents('.sc_slider_pagination_area').length > 0) {
498					jQuery(this).parents('.sc_slider_pagination_area').find('.sc_slider_pagination .post_item').eq(0).addClass('active');
499				}
500				var id = jQuery(this).attr('id');
501				if (id == undefined) {
502					id = 'swiper_'+Math.random();
503					id = id.replace('.', '');
504					jQuery(this).attr('id', id);
505				}
506				jQuery(this).addClass(id);
507				jQuery(this).find('.slides .swiper-slide').css('position', 'relative');
508				var width = jQuery(this).width();
509				if (width == 0) width = jQuery(this).parent().width();
510				var spv = jQuery(this).data('slides-per-view');
511				if (spv == undefined) spv = 1;
512				var min_width = jQuery(this).data('slides-min-width');
513				if (min_width == undefined) min_width = 50;
514				if (width / spv < min_width) spv = Math.max(1, Math.floor(width / min_width));
515				var space = jQuery(this).data('slides-space');
516				if (space == undefined) space = 0;
517				if (LIFECOACH_STORAGE['swipers'] === undefined) LIFECOACH_STORAGE['swipers'] = {};
518				LIFECOACH_STORAGE['swipers'][id] = new Swiper('.'+id, {
519					calculateHeight: !jQuery(this).hasClass('sc_slider_height_fixed'),
520					resizeReInit: true,
521					autoResize: true,
522					loop: true,
523					grabCursor: true,
524			        nextButton: jQuery(this).hasClass('sc_slider_controls') ? '#'+id+' .sc_slider_next' : false,
525			        prevButton: jQuery(this).hasClass('sc_slider_controls') ? '#'+id+' .sc_slider_prev' : false,
526					pagination: jQuery(this).hasClass('sc_slider_pagination') ? '#'+id+' .sc_slider_pagination_wrap' : false,
527				    paginationClickable: true,
528					autoplay: jQuery(this).hasClass('sc_slider_noautoplay') ? false : (isNaN(jQuery(this).data('interval')) ? 7000 : jQuery(this).data('interval')),
529					autoplayDisableOnInteraction: false,
530					initialSlide: 0,
531					slidesPerView: spv,
532					loopedSlides: spv,
533					spaceBetween: space,
534					speed: 600,
535					// Autoheight on start
536					onFirstInit: function (slider){
537						"use strict";
538						var cont = jQuery(slider.container);
539						if (!cont.hasClass('sc_slider_height_auto')) return;
540						var li = cont.find('.swiper-slide').eq(1);
541						var h = li.data('height_auto');
542						if (h > 0) {
543							var pt = parseInt(li.css('paddingTop')), pb = parseInt(li.css('paddingBottom'));
544							li.height(h);
545							cont.height(h + (isNaN(pt) ? 0 : pt) + (isNaN(pb) ? 0 : pb));
546							cont.find('.swiper-wrapper').height(h + (isNaN(pt) ? 0 : pt) + (isNaN(pb) ? 0 : pb));
547						}
548					},
549					// Autoheight on slide change
550					onSlideChangeStart: function (slider){
551						"use strict";
552						var cont = jQuery(slider.container);
553						if (!cont.hasClass('sc_slider_height_auto')) return;
554						var idx = slider.activeIndex;
555						var li = cont.find('.swiper-slide').eq(idx);
556						var h = li.data('height_auto');
557						if (h > 0) {
558							var pt = parseInt(li.css('paddingTop')), pb = parseInt(li.css('paddingBottom'));
559							li.height(h);
560							cont.height(h + (isNaN(pt) ? 0 : pt) + (isNaN(pb) ? 0 : pb));
561							cont.find('.swiper-wrapper').height(h + (isNaN(pt) ? 0 : pt) + (isNaN(pb) ? 0 : pb));
562						}
563					},
564					// Change current item in 'full' or 'over' pagination wrap
565					onSlideChangeEnd: function (slider, dir) {
566						"use strict";
567						var cont = jQuery(slider.container);
568						if (cont.parents('.sc_slider_pagination_area').length > 0) {
569							var li = cont.parents('.sc_slider_pagination_area').find('.sc_slider_pagination .post_item');
570							var idx = slider.activeIndex > li.length ? 0 : slider.activeIndex-1;
571							lifecoach_sc_change_active_pagination_in_slider(cont, idx);
572						}
573					}
574				});
575				
576				jQuery(this).data('settings', {mode: 'horizontal'});		// VC hook
577				
578				var curSlide = jQuery(this).find('.slides').data('current-slide');
579				if (curSlide > 0)
580					LIFECOACH_STORAGE['swipers'][id].slideTo(curSlide-1);
581
582				lifecoach_sc_prepare_slider_navi(jQuery(this));
583
584			});
585			
586		// Check slides per view
587		lifecoach_sc_sliders_resize();
588	}
589
590	//Skills init
591	if (container.find('.sc_skills_item:not(.inited)').length > 0) {
592		lifecoach_sc_init_skills(container);
593		jQuery(window).scroll(function () { lifecoach_sc_init_skills(container); });
594	}
595	//Skills type='arc' init
596	if (container.find('.sc_skills_arc:not(.inited)').length > 0) {
597		lifecoach_sc_init_skills_arc(container);
598		jQuery(window).scroll(function () { lifecoach_sc_init_skills_arc(container); });
599	}
600
601	// Tabs
602	if (container.find('.sc_tabs:not(.inited):not(.no_jquery_ui),.tabs_area:not(.inited)').length > 0) {
603		container.find('.sc_tabs:not(.inited):not(.no_jquery_ui),.tabs_area:not(.inited)').each(function () {
604			"use strict";
605			var init = jQuery(this).data('active');
606			if (isNaN(init)) init = 0;
607			else init = Math.max(0, init);
608			jQuery(this)
609				.addClass('inited')
610				.tabs({
611					active: init,
612					show: {
613						effect: 'fadeIn',
614						duration: 300
615					},
616					hide: {
617						effect: 'fadeOut',
618						duration: 300
619					},
620					create: function (event, ui) {
621						"use strict";
622						lifecoach_sc_init(ui.panel);
623						if (window.lifecoach_init_hidden_elements) lifecoach_init_hidden_elements(ui.panel);
624						lifecoach_init_isotope();
625					},
626					activate: function (event, ui) {
627						"use strict";
628						lifecoach_sc_init(ui.newPanel);
629						if (window.lifecoach_init_hidden_elements) lifecoach_init_hidden_elements(ui.newPanel);
630						lifecoach_init_isotope();
631					}
632				});
633		});
634	}
635	if (container.find('.sc_tabs.no_jquery_ui:not(.inited)').length > 0) {
636		container.find('.sc_tabs.no_jquery_ui:not(.inited)').each(function () {
637			"use strict";
638			jQuery(this)
639				.addClass('inited')
640				.on('click', '.sc_tabs_titles li a', function(e) {
641					"use strict";
642					if (!jQuery(this).parent().hasClass('sc_tabs_active')) {
643						var id_act = jQuery(this).parent().siblings('.sc_tabs_active').find('a').attr('href');
644						var id = jQuery(this).attr('href');
645						jQuery(this).parent().addClass('sc_tabs_active').siblings().removeClass('sc_tabs_active');
646						jQuery(id_act).fadeOut(function() {
647							"use strict";
648							jQuery(id).fadeIn(function() {
649								"use strict";
650								lifecoach_sc_init(jQuery(this));
651								if (window.lifecoach_init_hidden_elements) lifecoach_init_hidden_elements(jQuery(this));
652							});
653						});
654					}
655					e.preventDefault();
656					return false;
657				});
658			jQuery(this).find('.sc_tabs_titles li').eq(0).addClass('sc_tabs_active');
659			jQuery(this).find('.sc_tabs_content').eq(0).fadeIn(function() {
660				"use strict";
661				lifecoach_sc_init(jQuery(this));
662				if (window.lifecoach_init_hidden_elements) lifecoach_init_hidden_elements(jQuery(this));
663			});
664		});
665	}
666
667	// Toggles
668	if (container.find('.sc_toggles .sc_toggles_title:not(.inited)').length > 0) {
669		container.find('.sc_toggles .sc_toggles_title:not(.inited)')
670			.addClass('inited')
671			.on('click', function () {
672				"use strict";
673				jQuery(this).toggleClass('ui-state-active').parent().toggleClass('sc_active');
674				jQuery(this).parent().find('.sc_toggles_content').slideToggle(300, function () { 
675					"use strict";
676					lifecoach_sc_init(jQuery(this).parent().find('.sc_toggles_content')); 
677					if (window.lifecoach_init_hidden_elements) lifecoach_init_hidden_elements(jQuery(this).parent().find('.sc_toggles_content'));
678				});
679			});
680	}
681
682	//Zoom
683	if (container.find('.sc_zoom:not(.inited)').length > 0) {
684		container.find('.sc_zoom:not(.inited)')
685			.each(function () {
686				"use strict";
687				if (jQuery(this).parents('div:hidden,article:hidden').length > 0) return;
688				jQuery(this).addClass('inited');
689				jQuery(this).find('img').elevateZoom({
690					zoomType: "lens",
691					lensShape: "round",
692					lensSize: 200,
693					lensBorderSize: 4,
694					lensBorderColour: '#ccc'
695				});
696			});
697	}
698
699}
700
701
702
703// Scrolled areas
704function lifecoach_sc_init_scroll_area(obj) {
705	"use strict";
706
707	// Wait for images loading
708	if (!lifecoach_check_images_complete(obj) && LIFECOACH_STORAGE['scroll_init_counter']++ < 30) {
709		setTimeout(function() { lifecoach_sc_init_scroll_area(obj); }, 200);
710		return;
711	}
712
713	// Start init scroll area
714	obj.addClass('inited');
715
716	var id = obj.attr('id');
717	if (id == undefined) {
718		id = 'scroll_'+Math.random();
719		id = id.replace('.', '');
720		obj.attr('id', id);
721	}
722	obj.addClass(id);
723
724	var parent_obj = obj.parent();
725	var parent_id  = parent_obj.attr('id');
726	if (parent_id == undefined) {
727		parent_id = 'scroll_wrap_'+Math.random();
728		parent_id = parent_id.replace('.', '');
729		parent_obj.attr('id', parent_id);
730	}
731	parent_obj.addClass(parent_id);
732
733	var bar = obj.find('#'+id+'_bar');
734	if (bar.length > 0 && !bar.hasClass(id+'_bar')) {
735		bar.addClass(id+'_bar');
736	}
737	
738	// Correct wrapper width (if scroll dir = horizontal)
739	if (obj.hasClass('sc_scroll_horizontal')) {
740		obj.find('.sc_scroll_wrapper > .sc_scroll_slide').css('width', 'auto');
741		obj.find('.sc_scroll_wrapper').css('width', obj.find('.sc_scroll_wrapper > .sc_scroll_slide').width()+10);
742		obj.find('.sc_scroll_wrapper > .sc_scroll_slide').css('width', '100%')
743	}
744
745	// Init Swiper with scroll plugin
746	if (LIFECOACH_STORAGE['swipers'] === undefined) LIFECOACH_STORAGE['swipers'] = {};
747	LIFECOACH_STORAGE['swipers'][id] = new Swiper('.'+id, {
748		calculateHeight: false,
749		resizeReInit: true,
750		autoResize: true,
751		freeMode: true,
752		freeModeFluid: true,
753		grabCursor: true,
754		mode: obj.hasClass('sc_scroll_vertical') ? 'vertical' : 'horizontal',
755		direction: obj.hasClass('sc_scroll_vertical') ? 'vertical' : 'horizontal',
756		slidesPerView: obj.hasClass('sc_scroll') ? 'auto' : 1,
757        nextButton: parent_obj.hasClass('sc_scroll_controls') ? '#'+parent_id+' .sc_scroll_next' : false,
758        prevButton: parent_obj.hasClass('sc_scroll_controls') ? '#'+parent_id+' .sc_scroll_prev' : false,
759        scrollbar: '.'+id+'_bar',
760        scrollbarHide: true,
761	})
762	
763	// VC hook
764	obj.data('settings', {mode: 'horizontal'});
765}
766
767
768// Slider navigation
769function lifecoach_sc_prepare_slider_navi(slider) {
770	"use strict";
771	var navi = null;
772
773	// Prev / Next
774	// Remove condition in the line below if you need add click handler to next/prev buttons
775	if (false) {
776		navi = slider.find('> .sc_slider_controls_wrap, > .sc_scroll_controls_wrap');
777		if (navi.length == 0) navi = slider.siblings('.sc_slider_controls_wrap,.sc_scroll_controls_wrap');
778		if (navi.length > 0) {
779			navi.on('click', '.sc_slider_prev,.sc_scroll_prev', function(e) {
780				var swiper = jQuery(this).parents('.swiper-slider-container');
781				if (swiper.length == 0) swiper = jQuery(this).parents('.sc_slider_controls_wrap,.sc_scroll_controls_wrap').siblings('.swiper-slider-container');
782				var id = swiper.attr('id');
783				LIFECOACH_STORAGE['swipers'][id].slidePrev();
784				e.preventDefault();
785				return false;
786			})
787			.on('click', '.sc_slider_next,.sc_scroll_next', function(e){
788				var swiper = jQuery(this).parents('.swiper-slider-container');
789				if (swiper.length == 0) swiper = jQuery(this).parents('.sc_slider_controls_wrap,.sc_scroll_controls_wrap').siblings('.swiper-slider-container');
790				var id = swiper.attr('id');
791				LIFECOACH_STORAGE['swipers'][id].slideNext();
792				e.preventDefault();
793				return false;
794			});
795		}
796	}
797
798	// Pagination with slide's title
799	navi = slider.siblings('.sc_slider_pagination');
800	if (navi.length > 0) {
801		navi.on('click', '.post_item', function(e){
802			var swiper = jQuery(this).parents('.sc_slider_pagination_area').find('.swiper-slider-container');
803			var id = swiper.attr('id');
804			LIFECOACH_STORAGE['swipers'][id].slideTo(jQuery(this).index()+1);
805			e.preventDefault();
806			return false;
807		});
808	}
809}
810
811// Sliders: Pagination
812function lifecoach_sc_change_active_pagination_in_slider(slider, idx) {
813	"use strict";
814	var pg = slider.parents('.sc_slider_pagination_area').find('.sc_slider_pagination');
815	if (pg.length==0) return;
816	pg.find('.post_item').removeClass('active').eq(idx).addClass('active');
817	var h = pg.height();
818	var off = pg.find('.active').offset().top - pg.offset().top;
819	var off2 = pg.find('.sc_scroll_wrapper').offset().top - pg.offset().top;
820	var h2  = pg.find('.active').height();
821	if (off < 0) {
822		pg.find('.sc_scroll_wrapper').css({'transform': 'translate3d(0px, 0px, 0px)', 'transition-duration': '0.3s'});
823	} else if (h <= off+h2) {
824		pg.find('.sc_scroll_wrapper').css({'transform': 'translate3d(0px, -'+(Math.abs(off2)+off-h/4)+'px, 0px)', 'transition-duration': '0.3s'});
825	}
826}
827
828// Sliders: Autoheight
829function lifecoach_sc_slider_autoheight(slider) {
830	"use strict";
831	if (slider.hasClass('.sc_slider_height_auto')) {
832		slider.find('.swiper-slide').each(function() {
833			"use strict";
834			if (jQuery(this).data('height_auto') == undefined) {
835				jQuery(this).attr('data-height_auto', jQuery(this).height());
836			}
837		});
838	}
839}
840
841// Sliders: Resize
842function lifecoach_sc_sliders_resize() {
843	"use strict";
844	var slider = arguments[0]!==undefined ? arguments[0] : '.sc_slider_swiper.inited';
845	var resize = arguments[1]!==undefined ? arguments[1] : true;
846
847	jQuery(slider).each(function() {
848		"use strict";
849		var id = jQuery(this).attr('id');
850		var width = jQuery(this).width();
851		var last_width = jQuery(this).data('last-width');
852		if (isNaN(last_width)) last_width = 0;
853		
854		// Change slides_per_view
855		if (last_width==0 || last_width!=width) {
856			var spv = jQuery(this).data('slides-per-view');
857			if (spv == undefined) spv = 1;
858			var min_width = jQuery(this).data('slides-min-width');
859			if (min_width == undefined) min_width = 50;
860			if (width / spv < min_width) spv = Math.max(1, Math.floor(width / min_width));
861			jQuery(this).data('last-width', width);
862			if (LIFECOACH_STORAGE['swipers'][id].params.slidesPerView != spv) {
863				LIFECOACH_STORAGE['swipers'][id].params.slidesPerView = spv;
864				LIFECOACH_STORAGE['swipers'][id].params.loopedSlides = spv;
865				//LIFECOACH_STORAGE['swipers'][id].reInit();
866			}
867			LIFECOACH_STORAGE['swipers'][id].onResize();
868		}
869		
870		// Resize slider
871		if ( resize && !jQuery(this).hasClass('sc_slider_height_fixed') ) {
872			var h = 0;
873			if ( jQuery(this).find('.swiper-slide > img').length > 0 ) {
874				jQuery(this).find('.swiper-slide > img').each(function() {
875					"use strict";
876					if (jQuery(this).height() > h) h = jQuery(this).height();
877				});
878				jQuery(this).height(h);
879			} else if ( jQuery(this).find('.swiper-slide').css('backgroundImage')!='none' ) {
880				h = Math.floor(width/16*9);
881				jQuery(this).height(h).find('.swiper-slide').height(h);
882			}
883		}
884	});
885	
886	// Resize slider pagination area
887	jQuery('.sc_slider_pagination_area').each(function() {
888		"use strict";
889		var h = jQuery(this).find('.sc_slider').height();
890		if (h) {
891			jQuery(this).height(h);
892			jQuery(this).find('.sc_slider_pagination').height(h);
893			jQuery(this).find('.sc_slider_pagination .sc_scroll_vertical').height(h);
894		}
895	});
896}
897
898// Equal height for items in the row
899function lifecoach_sc_equal_height() {
900	"use strict";
901	jQuery('[data-equal-height]').each(function() {
902		"use strict";
903		var eh_wrap = jQuery(this);
904		var eh_items_selector = eh_wrap.data('equal-height');
905		if (eh_items_selector) {
906			var max_h = 0;
907			var items = [];
908			var row_y = 0;
909			var i=0;
910			eh_wrap.find(eh_items_selector).each(function() {
911				"use strict";
912				var el = jQuery(this);
913				el.height('auto');
914				var el_height = el.height();
915				var el_offset = el.offset().top;
916				if (row_y == 0) row_y = el_offset;
917				if (row_y < el_offset) {
918					if (items.length > 0) {
919						if (max_h > 0) {
920							for (i=0; i<items.length; i++)
921								items[i].height(max_h);
922						}
923						items = [];
924						max_h = 0;
925					}
926					row_y = el_offset;
927				}
928				if (el_height > max_h) max_h = el_height;
929				items.push(el);
930			});
931			if (items.length > 0 && max_h > 0) {
932				for (i=0; i<items.length; i++)
933					items[i].height(max_h);
934			}
935		}
936	});
937}
938
939
940// Skills init
941function lifecoach_sc_init_skills(container) {
942	"use strict";
943	if (arguments.length==0) var container = jQuery('body');
944	var scrollPosition = jQuery(window).scrollTop() + jQuery(window).height();
945
946	container.find('.sc_skills_item:not(.inited)').each(function () {
947		"use strict";
948		var skillsItem = jQuery(this);
949		var scrollSkills = skillsItem.offset().top;
950		if (scrollPosition > scrollSkills) {
951			skillsItem.addClass('inited');
952			var skills = skillsItem.parents('.sc_skills').eq(0);
953			var type = skills.data('type');
954			var total = (type=='pie' && skills.hasClass('sc_skills_compact_on')) ? skillsItem.find('.sc_skills_data .pie') : skillsItem.find('.sc_skills_total').eq(0);
955			var start = parseInt(total.data('start'));
956			var stop = parseInt(total.data('stop'));
957			var maximum = parseInt(total.data('max'));
958			var startPercent = Math.round(start/maximum*100);
959			var stopPercent = Math.round(stop/maximum*100);
960			var ed = total.data('ed');
961			var duration = parseInt(total.data('duration'));
962			var speed = parseInt(total.data('speed'));
963			var step = parseInt(total.data('step'));
964			if (type == 'bar') {
965				var dir = skills.data('dir');
966				var count = skillsItem.find('.sc_skills_count').eq(0);
967				if (dir=='horizontal')
968					count.css('width', startPercent + '%').animate({ width: stopPercent + '%' }, duration);
969				else if (dir=='vertical')
970					count.css('height', startPercent + '%').animate({ height: stopPercent + '%' }, duration);
971				lifecoach_sc_animate_skills_counter(start, stop, speed-(dir!='unknown' ? 5 : 0), step, ed, total);
972			} else if (type == 'counter') {
973				lifecoach_sc_animate_skills_counter(start, stop, speed - 5, step, ed, total);
974			} else if (type == 'pie') {
975				var steps = parseInt(total.data('steps'));
976				var bg_color = total.data('bg_color');
977				var border_color = total.data('border_color');
978				var cutout = parseInt(total.data('cutout'));
979				var easing = total.data('easing');
980				var options = {
981					segmentShowStroke: false,
982					segmentStrokeColor: border_color,
983					segmentStrokeWidth: 1,
984					percentageInnerCutout : cutout,
985					animationSteps: steps,
986					animationEasing: easing,
987					animateRotate: true,
988					animateScale: false,
989				};
990				var pieData = [];
991				total.each(function() {
992					"use strict";
993					var color = jQuery(this).data('color');
994					var stop = parseInt(jQuery(this).data('stop'));
995					var stopPercent = Math.round(stop/maximum*100);
996					pieData.push({
997						value: stopPercent,
998						color: color
999					});
1000				});
1001				if (total.length == 1) {
1002					lifecoach_sc_animate_skills_counter(start, stop, Math.round(1500/steps), step, ed, total);
1003					pieData.push({
1004						value: 100-stopPercent,
1005						color: bg_color
1006					});
1007				}
1008				var canvas = skillsItem.find('canvas');
1009				canvas.attr({width: skillsItem.width(), height: skillsItem.width()}).css({width: skillsItem.width(), height: skillsItem.height()});
1010				new Chart(canvas.get(0).getContext("2d")).Doughnut(pieData, options);
1011			}
1012		}
1013	});
1014}
1015
1016// Skills counter animation
1017function lifecoach_sc_animate_skills_counter(start, stop, speed, step, ed, total) {
1018	"use strict";
1019	start = Math.min(stop, start + step);
1020	total.text(start+ed);
1021	if (start < stop) {
1022		setTimeout(function () {
1023			lifecoach_sc_animate_skills_counter(start, stop, speed, step, ed, total);
1024		}, speed);
1025	}
1026}
1027
1028// Skills arc init
1029function lifecoach_sc_init_skills_arc(container) {
1030	"use strict";
1031	if (arguments.length==0) var container = jQuery('body');
1032	container.find('.sc_skills_arc:not(.inited)').each(function () {
1033		var arc = jQuery(this);
1034		arc.addClass('inited');
1035		var items = arc.find('.sc_skills_data .arc');
1036		var canvas = arc.find('.sc_skills_arc_canvas').eq(0);
1037		var legend = arc.find('.sc_skills_legend').eq(0);
1038		var w = Math.round(arc.width() - legend.width());
1039		var c = Math.floor(w/2);
1040		var o = {
1041			random: function(l, u){
1042				"use strict";
1043				return Math.floor((Math.random()*(u-l+1))+l);
1044			},
1045			diagram: function(){
1046				"use strict";
1047				var r = Raphael(canvas.attr('id'), w, w),
1048					hover = Math.round(w/2/items.length),
1049					rad = hover,
1050					step = Math.round(((w-20)/2-rad)/items.length),
1051					stroke = Math.round(w/9/items.length),
1052					speed = 400;
1053				
1054				
1055				r.circle(c, c, Math.round(w/2)).attr({ stroke: 'none', fill: LIFECOACH_STORAGE['theme_bg_color'] ? LIFECOACH_STORAGE['theme_bg_color'] : '#ffffff' });
1056				
1057				var title = r.text(c, c, arc.data('caption')).attr({
1058					font: Math.round(rad*0.75)+'px "'+LIFECOACH_STORAGE['theme_font']+'"',
1059					fill: LIFECOACH_STORAGE['theme_color'] ? LIFECOACH_STORAGE['theme_color'] : '#909090'
1060				}).toFront();
1061				
1062				rad -= Math.round(step/2);
1063
1064				r.customAttributes.arc = function(value, color, rad){
1065					"use strict";
1066					var v = 3.6 * value,
1067						alpha = v == 360 ? 359.99 : v,
1068						rand = o.random(91, 240),
1069						a = (rand-alpha) * Math.PI/180,
1070						b = rand * Math.PI/180,
1071						sx = c + rad * Math.cos(b),
1072						sy = c - rad * Math.sin(b),
1073						x = c + rad * Math.cos(a),
1074						y = c - rad * Math.sin(a),
1075						path = [['M', sx, sy], ['A', rad, rad, 0, +(alpha > 180), 1, x, y]];
1076					return { path: path, stroke: color }
1077				}
1078				
1079				items.each(function(i){
1080					"use strict";
1081					var t = jQuery(this), 
1082						color = t.find('.color').val(),
1083						value = t.find('.percent').val(),
1084						text = t.find('.text').text();
1085					
1086					rad += step;
1087					var z = r.path().attr({ arc: [value, color, rad], 'stroke-width': stroke });
1088					
1089					z.mouseover(function(){
1090						"use strict";
1091						this.animate({ 'stroke-width': hover, opacity: .75 }, 1000, 'elastic');
1092						if (Raphael.type != 'VML') //solves IE problem
1093							this.toFront();
1094						title.stop().animate({ opacity: 0 }, speed, '>', function(){
1095							this.attr({ text: (text ? text + '\n' : '') + value + '%' }).animate({ opacity: 1 }, speed, '<');
1096						});
1097					}).mouseout(function(){
1098						"use strict";
1099						this.stop().animate({ 'stroke-width': stroke, opacity: 1 }, speed*4, 'elastic');
1100						title.stop().animate({ opacity: 0 }, speed, '>', function(){
1101							title.attr({ text: arc.data('caption') }).animate({ opacity: 1 }, speed, '<');
1102						});	
1103					});
1104					
1105				});
1106				
1107			}
1108		}
1109		o.diagram();
1110	});
1111}
1112
1113
1114// Countdown update
1115function lifecoach_countdown(dt) {
1116	"use strict";
1117	var counter = jQuery(this).parent();
1118	for (var i=3; i<dt.length; i++) {
1119		var v = (dt[i]<10 ? '0' : '') + dt[i];
1120		counter.find('.sc_countdown_item').eq(i-3).find('.sc_countdown_digits span').addClass('hide');
1121		for (var ch=v.length-1; ch>=0; ch--) {
1122			counter.find('.sc_countdown_item').eq(i-3).find('.sc_countdown_digits span').eq(ch+(i==3 && v.length<3 ? 1 : 0)).removeClass('hide').text(v.substr(ch, 1));
1123		}
1124	}
1125}
1126
1127
1128// Contact form handlers
1129function lifecoach_sc_form_validate(form){
1130	"use strict";
1131	var url = form.attr('action');
1132	if (url == '') return false;
1133	form.find('input').removeClass('error_fields_class');
1134	var error = false;
1135	var form_custom = form.data('formtype')=='form_custom';
1136	if (!form_custom) {
1137        error = lifecoach_form_validate(form, {
1138            error_message_show: true,
1139            error_message_time: 4000,
1140            error_message_class: "sc_infobox sc_infobox_style_error",
1141            error_fields_class: "error_fields_class",
1142            exit_after_first_error: false,
1143            rules: [
1144                {
1145                    field: "username",
1146                    min_length: { value: 1,	 message: LIFECOACH_STORAGE['strings']['name_empty'] },
1147                    max_length: { value: 60, message: LIFECOACH_STORAGE['strings']['name_long'] }
1148                },
1149                {
1150                    field: "email",
1151                    min_length: { value: 7,	 message: LIFECOACH_STORAGE['strings']['email_empty'] },
1152                    max_length: { value: 60, message: LIFECOACH_STORAGE['strings']['email_long'] },
1153                    mask: { value: LIFECOACH_STORAGE['email_mask'], message: LIFECOACH_STORAGE['strings']['email_not_val
1153id'] }
1154                },
1155                {
1156                    field: "subject",
1157                    min_length: { value: 1,	 message: LIFECOACH_STORAGE['strings']['subject_empty'] },
1158                    max_length: { value: 100, message: LIFECOACH_STORAGE['strings']['subject_long'] }
1159                },
1160                {
1161                    field: "message",
1162                    min_length: { value: 1,  message: LIFECOACH_STORAGE['strings']['text_empty'] },
1163                    max_length: { value: LIFECOACH_STORAGE['contacts_maxlength'], message: LIFECOACH_STORAGE['strings']['text_long'] }
1164                }
1165            ]
1166        });
1167    }
1168	if (!error && url!='#') {
1169		jQuery.post(url, {
1170			action: "send_form",
1171			nonce: LIFECOACH_STORAGE['ajax_nonce'],
1172			type: form.data('formtype'),
1173			data: form.serialize()
1174		}).done(function(response) {
1175			"use strict";
1176			var rez = {};
1177			try {
1178				rez = JSON.parse(response);
1179			} catch (e) {
1180				rez = { error: LIFECOACH_STORAGE['ajax_error'] };
1181				console.log(response);
1182			}
1183			var result = form.find(".result").toggleClass("sc_infobox_style_error", false).toggleClass("sc_infobox_style_success", false);
1184			if (rez.error === '') {
1185				form.get(0).reset();
1186				result.addClass("sc_infobox_style_success").html(LIFECOACH_STORAGE['strings']['send_complete']);
1187				var return_url = form.find('input[name="return_url"]');
1188				if (return_url.length > 0 && return_url.val()!='') {
1189					setTimeout(function() {
1190						"use strict";
1191						window.location.href = return_url.val();
1192					}, 3300);
1193				}
1194			} else {
1195				result.addClass("sc_infobox_style_error").html(LIFECOACH_STORAGE['strings']['send_error'] + ' ' + rez.error);
1196			}
1197			result.fadeIn().delay(3000).fadeOut();
1198		});
1199	}
1200	return !error;
1201}
1202
1203
1204
1205// Get players by category
1206function lifecoach_select_players_category(sel) {
1207	var value = sel.find(':selected').data('cat');
1208	var table = sel.parents('.sc_players_table');
1209	if (value == 'all') 
1210		jQuery(table).find('.sc_table tr:nth-child(n+2)').show();
1211	else {
1212		jQuery(table).find('.sc_table tr:nth-child(n+2)').hide();
1213		jQuery(table).find('.sc_table tr').each(function() { 
1214			var cat = jQuery(this).data('cat'); 
1215			if (cat != null && cat.indexOf(value)!=-1)
1216			   jQuery(this).show();
1217		});
1218	}
1219}
1220
1221
1222
1223// Display menuitem in the popup
1224function lifecoach_menuitems_show_popup(obj) {
1225	"use strict";
1226	
1227	// First init vars
1228	if (typeof LIFECOACH_STORAGE['menuitem_load'] == 'undefined') {
1229		LIFECOACH_STORAGE['menuitem_load'] = false;
1230		LIFECOACH_STORAGE['menuitems_list'] = [];
1231
1232	// If busy - return
1233	} else if ( LIFECOACH_STORAGE['menuitem_load'] ) {
1234		return;
1235	}
1236	
1237	// Show preloader
1238	jQuery('#page_preloader').data('bg-color', jQuery('#page_preloader').css('background-color')).css({display: 'block', opacity: 0, backgroundColor: 'transparent'}).animate({opacity:0.8}, 300);
1239
1240	// Get items list on first click
1241	if (LIFECOACH_STORAGE['menuitems_list'].length == 0) {
1242		var menuitems_list_id = obj.parents('.sc_menuitems').attr("id");
1243		LIFECOACH_STORAGE['menuitems_list'] = LIFECOACH_STORAGE['menuitems'][menuitems_list_id].split(",");
1244	}
1245	
1246	var menuitem_id = obj.attr('rel');
1247	
1248	LIFECOACH_STORAGE['menuitem_load'] = true;
1249	
1250	jQuery.post(LIFECOACH_STORAGE['ajax_url'], {
1251		action: 'ajax_menuitem',
1252		nonce: LIFECOACH_STORAGE['ajax_nonce'],
1253		text: menuitem_id
1254	}).done(function(response) {
1255		"use strict";
1256		LIFECOACH_STORAGE['menuitem_load'] = false;
1257		var rez = {};
1258		try {
1259			rez = JSON.parse(response);
1260		} catch (e) {
1261			rez = { error: LIFECOACH_STORAGE['ajax_error'] + '<br>' + response };
1262		}
1263		jQuery('#page_preloader').animate({opacity:0}
1263, 500, function() { jQuery(this).css({display: 'none', backgroundColor: jQuery(this).data('bg-color')}); });
1264		if (rez.error === '') {
1265			var delay = 0;
1266			// Create popup
1267			if (jQuery('.popup_menuitem').length == 0) {
1268				jQuery('body').append('<div id="overlay"></div><div class="popup_menuitem"></div>');
1269				jQuery('#overlay').fadeIn(500);
1270			} else {
1271				delay = 500;
1272				jQuery('.popup_menuitem').fadeOut(delay);
1273			}
1274			// Add new content in the popup
1275			setTimeout(function() {
1276				jQuery('.popup_menuitem').html(rez.data);
1277				jQuery('.popup_menuitem .sc_menuitems_wrap').append("<a class='close_menuitem' href='#'><span class='icon-cancel'></span></a>");
1278				if ( LIFECOACH_STORAGE['menuitems_list'].length > 1 ) {
1279					var idx = 0;
1280					for (var i=0; i<LIFECOACH_STORAGE['menuitems_list'].length; i++ ) {
1281						if ( LIFECOACH_STORAGE['menuitems_list'][i] === menuitem_id ) {
1282							idx = i;
1283							break;
1284						}
1285					}
1286					var prev = (idx - 1 + LIFECOACH_STORAGE['menuitems_list'].length) % LIFECOACH_STORAGE['menuitems_list'].length;
1287					var next = (idx + 1) % LIFECOACH_STORAGE['menuitems_list'].length;
1288					jQuery('.popup_menuitem .sc_menuitems_wrap .sc_menuitem_content').append(
1289						  "<a class='prev_menuitem prevnext_menuitem show_popup_menuitem' rel='"+LIFECOACH_STORAGE['menuitems_list'][prev]+"'  href='#'><span class='icon-left'></span></a>"
1290						+ "<a class='next_menuitem prevnext_menuitem show_popup_menuitem' rel='"+LIFECOACH_STORAGE['menuitems_list'][next]+"'  href='#'><span class='icon-right'></span></a>"
1291					);
1292				}
1293				jQuery('.popup_menuitem').fadeIn(500);
1294			}, delay);
1295		} else {
1296			lifecoach_message_warning(LIFECOACH_STORAGE['strings']['search_error']);
1297		}
1298	});	
1299}
1300
1301// Hide popup with menuitem
1302function lifecoach_menuitems_hide_popup() {
1303	"use strict";
1304	jQuery('#overlay').fadeOut();
1305	jQuery('.popup_menuitem').fadeOut(function() {
1306		LIFECOACH_STORAGE['menuitem_load'] = false;
1307		LIFECOACH_STORAGE['menuitems_list'] = [];
1308		jQuery('#overlay').remove();
1309		jQuery(this).remove();
1310	});
1311}

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.