PageSourceSearch

https://www.marcobaliani.it/wp-content/themes/jarvis-child/shortcodes/theme.shortcodes.js

js marcobaliani.it collected 2026-10-02 11:46:56 UTC 37,072 bytes, 1,043 lines download raw bytes

1// Document ready actions for shortcodes
2jQuery(document).ready(function(){
3	"use strict";
4	setTimeout(function() {
5		jarvis_sc_animation();
6	}, 600);
7});
8
9
10// Resize actions
11jQuery(window).resize(function(){
12	"use strict";
13	jarvis_sc_sliders_resize();
14});
15
16
17// Animation
18function jarvis_sc_animation() {
19	jQuery('[data-animation^="animated"]:not(.animated)').each(function() {
20		"use strict";
21		if (jQuery(this).offset().top < jQuery(window).scrollTop() + jQuery(window).height())
22			jQuery(this).addClass(jQuery(this).data('animation'));
23	});
24}
25
26
27// Shortcodes init
28function jarvis_sc_init(container) {
29
30	// Accordion
31	if (container.find('.sc_accordion:not(.inited)').length > 0) {
32		container.find(".sc_accordion:not(.inited)").each(function () {
33			"use strict";
34			var init = jQuery(this).data('active');
35			if (isNaN(init)) init = 0;
36			else init = Math.max(0, init);
37			jQuery(this)
38				.addClass('inited')
39				.accordion({
40					active: init,
41					heightStyle: "content",
42					header: "> .sc_accordion_item > .sc_accordion_title",
43					create: function (event, ui) {
44						"use strict";
45						jarvis_init_shortcodes(ui.panel);
46						if (window.jarvis_init_hidden_elements) jarvis_init_hidden_elements(ui.panel);
47						ui.header.each(function () {
48							"use strict";
49							jQuery(this).parent().addClass('sc_active');
50						});
51					},
52					activate: function (event, ui) {
53						"use strict";
54						jarvis_init_shortcodes(ui.newPanel);
55						if (window.jarvis_init_hidden_elements) jarvis_init_hidden_elements(ui.newPanel);
56						ui.newHeader.each(function () {
57							"use strict";
58							jQuery(this).parent().addClass('sc_active');
59						});
60						ui.oldHeader.each(function () {
61							"use strict";
62							jQuery(this).parent().removeClass('sc_active');
63						});
64					}
65				});
66		});
67	}
68
69	// Blogger: style Polaroid
70	if (container.find('.sc_blogger.layout_polaroid .photostack:not(.inited)').length > 0) {
71		container.find(".sc_blogger.layout_polaroid .photostack:not(.inited)").each(function () {
72			"use strict";
73			var obj = jQuery(this);
74			var id = obj.attr('id');
75			if (id == undefined) {
76				id = 'photostack_'+Math.random();
77				id = id.replace('.', '');
78				obj.attr('id', id);
79			}
80			setTimeout(function() {
81				"use strict";
82				obj.addClass('inited').parent().height("auto");
83				new Photostack( obj.get(0), {
84					callback: function( item ) {
85					}
86				} );
87			}, 10);
88		});
89	}
90
91	// Blogger: Scroll horizontal
92	if (container.find('.sc_blogger .sc_scroll_horizontal .sc_scroll_wrapper:not(.inited)').length > 0) {
93		container.find(".sc_blogger .sc_scroll_horizontal .sc_scroll_wrapper:not(.inited)").each(function () {
94			"use strict";
95			var obj = jQuery(this);
96			var width = 0;
97			obj.find('.isotope_item').each(function(){
98				"use strict";
99				width += jQuery(this).outerWidth();
100			});
101			obj.addClass('inited').width(width);
102		});
103	}
104
105
106    // Form
107	if (container.find('.sc_form:not(.inited) form').length > 0) {
108		container.find(".sc_form:not(.inited) form").each(function() {
109            // Fixes for contact form in the popup
110            if( jQuery(this).parent().parent().parent().hasClass("sc_popup") ) {
111                "use strict";
112                jQuery(this).removeClass('inited');
113                jQuery(this).submit(function () {
114                    return false;
115                });
116                if( jQuery(this).parent().parent().parent().parent().hasClass("mfp-content") ) {
117                    "use strict";
118                    jQuery(this).addClass('inited');
119                    jQuery(this).submit(function (e) {
120                        "use strict";
121                        jarvis_sc_form_validate(jQuery(this));
122                        e.preventDefault();
123                        return false;
124                    });
125                    if (jQuery(this).find('.js__datepicker').length > 0) {
126                        jQuery(this).find('.js__datepicker').pickadate({
127                            // Work-around for some mobile browsers clipping off the picker.
128                            onOpen: function () {
129                                "use strict";
130                                jQuery('pre').css('overflow', 'hidden');
131                            },
132                            onClose: function () {
133                                "use strict";
134                                jQuery('pre').css('overflow', '');
135                            },
136                            monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'],
137                            showMonthsShort: true,
138                            format: 'dd.mm.yyyy',
139                            formatSubmit: 'yyyy-mm-dd',
140                            min: true
141                        });
142                    }
143                    if (jQuery(this).find('.js__timepicker').length > 0) {
144                        jQuery(this).find('.js__timepicker').pickatime();
145                    }
146                }
147            } else {
148                "use strict";
149                jQuery(this).addClass('inited');
150                jQuery(this).submit(function (e) {
151                    "use strict";
152                    jarvis_sc_form_validate(jQuery(this));
153                    e.preventDefault();
154                    return false;
155                });
156                if (jQuery(this).find('.js__datepicker').length > 0) {
157                    jQuery(this).find('.js__datepicker').pickadate({
158                        // Work-around for some mobile browsers clipping off the picker.
159                        onOpen: function () {
160                            "use strict";
161                            jQuery('pre').css('overflow', 'hidden');
162                        },
163                        onClose: function () {
164                            "use strict";
165                            jQuery('pre').css('overflow', '');
166                        },
167                        monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'],
168                        showMonthsShort: true,
169                        format: 'dd.mm.yyyy',
170                        formatSubmit: 'yyyy-mm-dd',
171                        min: true
172                    });
173                }
174                if (jQuery(this).find('.js__timepicker').length > 0) {
175                    jQuery(this).find('.js__timepicker').pickatime();
176                }
177            }
178		});
179	}
180
181	//Countdown
182	if (container.find('.sc_countdown:not(.inited)').length > 0) {
183		container.find('.sc_countdown:not(.inited)')
184			.each(function () {
185				"use strict";
186				jQuery(this).addClass('inited');
187				var id = jQuery(this).attr('id');
188				var curDate = new Date(); 
189				var curDateTimeStr = curDate.getFullYear()+'-'+(curDate.getMonth()<9 ? '0' : '')+(curDate.getMonth()+1)+'-'+(curDate.getDate()<10 ? '0' : '')+curDate.getDate()
190					+' '+(curDate.getHours()<10 ? '0' : '')+curDate.getHours()+':'+(curDate.getMinutes()<10 ? '0' : '')+curDate.getMinutes()+':'+(curDate.getSeconds()<10 ? '0' : '')+curDate.getSeconds(); 
191				var interval = 1;	//jQuery(this).data('interval');
192				var endDateStr = jQuery(this).data('date');
193				var endDateParts = endDateStr.split('-');
194				var endTimeStr = jQuery(this).data('time');
195				var endTimeParts = endTimeStr.split(':');
196				if (endTimeParts.length < 3) endTimeParts[2] = '00';
197				var endDateTimeStr = endDateStr+' '+endTimeStr;
198				if (curDateTimeStr < endDateTimeStr) {
199					jQuery(this).find('.sc_countdown_placeholder').countdown({
200						until: new Date(endDateParts[0], endDateParts[1]-1, endDateParts[2], endTimeParts[0], endTimeParts[1], endTimeParts[2]), 
201						tickInterval: interval,
202						onTick: jarvis_countdown
203					}); 
204				} else {
205					jQuery(this).find('.sc_countdown_placeholder').countdown({
206						since: new Date(endDateParts[0], endDateParts[1]-1, endDateParts[2], endTimeParts[0], endTimeParts[1], endTimeParts[2]), 
207						tickInterval: interval,
208						onTick: jarvis_countdown
209					}); 
210				}
211			});
212	}
213
214	// Emailer form
215	if (container.find('.sc_emailer:not(.inited)').length > 0) {
216		container.find(".sc_emailer:not(.inited)")
217			.addClass('inited')
218			.on('click', '.sc_emailer_button', function(e) {
219				"use strict";
220				var form = jQuery(this).parents('form');
221				var parent = jQuery(this).parents('.sc_emailer');
222				if (parent.hasClass('sc_emailer_opened')) {
223					if (form.length>0 && form.find('input').val()!='') {
224						var group = jQuery(this).data('group');
225						var email = form.find('input').val();
226						var regexp = new RegExp(JARVIS_STORAGE['email_mask']);
227						if (!regexp.test(email)) {
228							form.find('input').get(0).focus();
229							jarvis_message_warning(JARVIS_STORAGE['strings']['email_not_valid']);
230						} else {
231							jQuery.post(JARVIS_STORAGE['ajax_url'], {
232								action: 'emailer_submit',
233								nonce: JARVIS_STORAGE['ajax_nonce'],
234								group: group,
235								email: email
236							}).done(function(response) {
237								"use strict";
238								var rez = {};
239								try {
240									rez = JSON.parse(response);
241								} catch (e) {
242									rez = { error: JARVIS_STORAGE['ajax_error'] };
243									console.log(response);
244								}
245								if (rez.error === '') {
246									jarvis_message_info(JARVIS_STORAGE['strings']['email_confirm'].replace('%s', email));
247									form.find('input').val('');
248								} else {
249									jarvis_message_warning(rez.error);
250								}
251							});
252						}
253					} else
254						form.get(0).submit();
255				} else {
256					parent.addClass('sc_emailer_opened');
257				}
258				e.preventDefault();
259				return false;
260			});
261	}
262	
263	// Googlemap init
264	if (container.find('.sc_googlemap:not(.inited)').length > 0) {
265		container.find('.sc_googlemap:not(.inited)')
266			.each(function () {
267				"use strict";
268				if (jQuery(this).parents('div:hidden,article:hidden').length > 0) return;
269				var map = jQuery(this).addClass('inited');
270				var map_id		= map.attr('id');
271				var map_zoom	= map.data('zoom');
272				var map_style	= map.data('style');
273				var map_markers = [];
274				map.find('.sc_googlemap_marker').each(function() {
275					"use strict";
276					var marker = jQuery(this);
277					map_markers.push({
278						point:			marker.data('point'),
279						address:		marker.data('address'),
280						latlng:			marker.data('latlng'),
281						description:	marker.data('description'),
282						title:			marker.data('title')
283					});
284				});
285				jarvis_googlemap_init( jQuery('#'+map_id).get(0), {style: map_style, zoom: map_zoom, markers: map_markers});
286			});
287	}
288
289	// Infoboxes
290	if (container.find('.sc_infobox.sc_infobox_closeable:not(.inited)').length > 0) {
291		container.find('.sc_infobox.sc_infobox_closeable:not(.inited)')
292			.addClass('inited')
293			.on('click', function () {
294				"use strict";
295				jQuery(this).slideUp();
296			});
297	}
298
299	// Popup links
300	if (container.find('.sc_popup_link:not(.inited)').length > 0) {
301		container.find('.sc_popup_link:not(.inited)').each(function() {
302			var popup_id = jQuery(this).attr('href');
303			jQuery(this)
304				.addClass('inited')
305				.magnificPopup({
306					type: 'inline',
307					removalDelay: 500,
308					midClick: true,
309					callbacks: {
310						beforeOpen: function () {
311							this.st.mainClass = 'mfp-zoom-in';
312						},
313						open: function() {
314							"use strict";
315							jarvis_init_shortcodes(jQuery(popup_id));
316							if (window.jarvis_init_hidden_elements) jarvis_init_hidden_elements(jQuery(popup_id));
317						},
318						close: function() {}
319					}
320				});
321		});
322	}
323
324	// Recent news widget and sc
325	if (container.find('.sc_recent_news_header_category_item_more:not(.inited)').length > 0) {
326		container.find('.sc_recent_news_header_category_item_more:not(.inited)').each(function() {
327			"use strict";
328			jQuery(this)
329				.addClass('inited')
330				.on('click', function(e) {
331					"use strict";
332					jQuery(this).toggleClass('opened').find('.sc_recent_news_header_more_categories').slideToggle();
333					e.preventDefault();
334					return false;
335				});
336		});
337	}
338
339	// Search form
340	if (container.find('.search_wrap:not(.inited)').length > 0) {
341		container.find('.search_wrap:not(.inited)').each(function() {
342			"use strict";
343			jQuery(this)
344				.addClass('inited')
345				.on('click', '.search_submit', function(e) {
346					"use strict";
347					var search_wrap = jQuery(this).parents('.search_wrap');
348					if (!search_wrap.hasClass('search_state_fixed')) {
349						if (search_wrap.hasClass('search_state_opened')) {
350							if (search_wrap.find('.search_field').val() != '')
351								search_wrap.find('form').get(0).submit();
352							else
353								search_wrap.removeClass('search_state_opened').addClass('search_state_closed').find('.search_results').fadeOut();
354						} else
355							search_wrap.removeClass('search_state_closed').addClass('search_state_opened').find('.search_field').get(0).focus();
356					} else {
357						if (search_wrap.find('.search_field').val() != '')
358							search_wrap.find('form').get(0).submit();
359						else {
360							search_wrap.find('.search_field').val('');
361							search_wrap.find('.search_results').fadeOut();
362						}
363					}
364					e.preventDefault();
365					return false;
366				})
367				.on('click', '.search_results_close', function(e) {
368					"use strict";
369					jQuery(this).parent().fadeOut();
370					e.preventDefault();
371					return false;
372				})
373				.on('click', '.search_more', function(e) {
374					"use strict";
375					if (jQuery(this).parents('.search_wrap').find('.search_field').val() != '')
376						jQuery(this).parents('.search_wrap').find('form').get(0).submit();
377					e.preventDefault();
378					return false;
379				});
380			if (jQuery(this).hasClass('search_ajax')) {
381				var ajax_timer = null;
382				jQuery(this).find('.search_field').keyup(function(e) {
383					"use strict";
384					var search_field = jQuery(this);
385					var s = search_field.val();
386					if (ajax_timer) {
387						clearTimeout(ajax_timer);
388						ajax_timer = null;
389					}
390					if (s.length >= JARVIS_STORAGE['ajax_search_min_length']) {
391						ajax_timer = setTimeout(function() {
392							"use strict";
393							jQuery.post(JARVIS_STORAGE['ajax_url'], {
394								action: 'ajax_search',
395								nonce: JARVIS_STORAGE['ajax_nonce'],
396								text: s
397							}).done(function(response) {
398								"use strict";
399								clearTimeout(ajax_timer);
400								ajax_timer = null;
401								var rez = {};
402								try {
403									rez = JSON.parse(response);
404								} catch (e) {
405									rez = { error: JARVIS_STORAGE['ajax_error'] };
406									console.log(response);
407								}
408								if (rez.error === '') {
409									search_field.parents('.search_ajax').find('.search_results_content').empty().append(rez.data);
410									search_field.parents('.search_ajax').find('.search_results').fadeIn();
411								} else {
412									jarvis_message_warning(JARVIS_STORAGE['strings']['search_error']);
413								}
414							});
415						}, JARVIS_STORAGE['ajax_search_delay']);
416					}
417				});
418			}
419		});
420	}
421
422	
423	// Section Pan init
424	if (container.find('.sc_pan:not(.inited_pan)').length > 0) {
425		container.find('.sc_pan:not(.inited_pan)')
426			.each(function () {
427				"use strict";
428				if (jQuery(this).parents('div:hidden,article:hidden').length > 0) return;
429				var pan = jQuery(this).addClass('inited_pan');
430				var cont = pan.parent();
431				cont.mousemove(function(e) {
432					"use strict";
433					var anim = {};
434					var tm = 0;
435					var pw = pan.width(), ph = pan.height();
436					var cw = cont.width(), ch = cont.height();
437					var coff = cont.offset();
438					if (pan.hasClass('sc_pan_vertical'))
439						pan.css('top', -Math.floor((e.pageY - coff.top) / ch * (ph-ch)));
440					if (pan.hasClass('sc_pan_horizontal'))
441						pan.css('left', -Math.floor((e.pageX - coff.left) / cw * (pw-cw)));
442				});
443				cont.mouseout(function(e) {
444					"use strict";
445					pan.css({'left': 0, 'top': 0});
446				});
447			});
448	}
449
450	//Scroll
451	if (container.find('.sc_scroll:not(.inited)').length > 0) {
452		container.find('.sc_scroll:not(.inited)')
453			.each(function () {
454				"use strict";
455				if (jQuery(this).parents('div:hidden,article:hidden').length > 0) return;
456				JARVIS_STORAGE['scroll_init_counter'] = 0;
457				jarvis_sc_init_scroll_area(jQuery(this));
458			});
459	}
460
461
462	// Swiper Slider
463	if (container.find('.sc_slider_swiper:not(.inited)').length > 0) {
464		JARVIS_STORAGE['swipers_min_width'] = 235;
465		container.find('.sc_slider_swiper:not(.inited)')
466			.each(function () {
467				"use strict";
468				if (jQuery(this).parents('div:hidden,article:hidden').length > 0) return;
469				//if (jQuery(this).parents('.isotope_wrap:not(.inited)').length > 0) return;
470				jQuery(this).addClass('inited');
471				jarvis_sc_slider_autoheight(jQuery(this));
472				if (jQuery(this).parents('.sc_slider_pagination_area').length > 0) {
473					jQuery(this).parents('.sc_slider_pagination_area').find('.sc_slider_pagination .post_item').eq(0).addClass('active');
474				}
475				var id = jQuery(this).attr('id');
476				if (id == undefined) {
477					id = 'swiper_'+Math.random();
478					id = id.replace('.', '');
479					jQuery(this).attr('id', id);
480				}
481				jQuery(this).addClass(id);
482				jQuery(this).find('.slides .swiper-slide').css('position', 'relative');
483				var width = jQuery(this).width();
484				if (width == 0) width = jQuery(this).parent().width();
485				var spv = jQuery(this).data('slides-per-view');
486				var loop = true;
487				if (spv == undefined) {spv = 1; loop = false; };
488				if (width / spv < JARVIS_STORAGE['swipers_min_width']) spv = Math.max(1, Math.floor(width / JARVIS_STORAGE['swipers_min_width']));
489				var space = jQuery(this).data('slides-space');
490				if (space == undefined) space = 0;
491				if (JARVIS_STORAGE['swipers'] === undefined) JARVIS_STORAGE['swipers'] = {};
492				JARVIS_STORAGE['swipers'][id] = new Swiper('.'+id, {
493					calculateHeight: !jQuery(this).hasClass('sc_slider_height_fixed'),
494					resizeReInit: true,
495					autoResize: true,
496					loop: loop,
497					grabCursor: true,
498			        nextButton: jQuery(this).hasClass('sc_slider_controls') ? '#'+id+' .sc_slider_next' : false,
499			        prevButton: jQuery(this).hasClass('sc_slider_controls') ? '#'+id+' .sc_slider_prev' : false,
500					pagination: jQuery(this).hasClass('sc_slider_pagination') ? '#'+id+' .sc_slider_pagination_wrap' : false,
501				    paginationClickable: true,
502					autoplay: jQuery(this).hasClass('sc_slider_noautoplay') ? false : (isNaN(jQuery(this).data('interval')) ? 7000 : jQuery(this).data('interval')),
503					autoplayDisableOnInteraction: false,
504					initialSlide: 0,
505					slidesPerView: spv,
506					loopedSlides: spv,
507					spaceBetween: space,
508					speed: 600,
509					// Autoheight on start
510					onFirstInit: function (slider){
511						"use strict";
512						var cont = jQuery(slider.container);
513						if (!cont.hasClass('sc_slider_height_auto')) return;
514						var li = cont.find('.swiper-slide').eq(1);
515						var h = li.data('height_auto');
516						if (h > 0) {
517							var pt = parseInt(li.css('paddingTop')), pb = parseInt(li.css('paddingBottom'));
518							li.height(h);
519							cont.height(h + (isNaN(pt) ? 0 : pt) + (isNaN(pb) ? 0 : pb));
520							cont.find('.swiper-wrapper').height(h + (isNaN(pt) ? 0 : pt) + (isNaN(pb) ? 0 : pb));
521						}
522					},
523					// Autoheight on slide change
524					onSlideChangeStart: function (slider){
525						"use strict";
526						var cont = jQuery(slider.container);
527						if (!cont.hasClass('sc_slider_height_auto')) return;
528						var idx = slider.activeIndex;
529						var li = cont.find('.swiper-slide').eq(idx);
530						var h = li.data('height_auto');
531						if (h > 0) {
532							var pt = parseInt(li.css('paddingTop')), pb = parseInt(li.css('paddingBottom'));
533							li.height(h);
534							cont.height(h + (isNaN(pt) ? 0 : pt) + (isNaN(pb) ? 0 : pb));
535							cont.find('.swiper-wrapper').height(h + (isNaN(pt) ? 0 : pt) + (isNaN(pb) ? 0 : pb));
536						}
537					},
538					// Change current item in 'full' or 'over' pagination wrap
539					onSlideChangeEnd: function (slider, dir) {
540						"use strict";
541						var cont = jQuery(slider.container);
542						if (cont.parents('.sc_slider_pagination_area').length > 0) {
543							var li = cont.parents('.sc_slider_pagination_area').find('.sc_slider_pagination .post_item');
544							var idx = slider.activeIndex > li.length ? 0 : slider.activeIndex-1;
545							jarvis_sc_change_active_pagination_in_slider(cont, idx);
546						}
547					}
548				});
549				
550				jQuery(this).data('settings', {mode: 'horizontal'});		// VC hook
551				
552				var curSlide = jQuery(this).find('.slides').data('current-slide');
553				if (curSlide > 0)
554					JARVIS_STORAGE['swipers'][id].slideTo(curSlide-1);
555
556				jarvis_sc_prepare_slider_navi(jQuery(this));
557
558			});
559			
560		// Check slides per view
561		jarvis_sc_sliders_resize();
562	}
563
564	//Skills init
565	if (container.find('.sc_skills_item:not(.inited)').length > 0) {
566		jarvis_sc_init_skills(container);
567		jQuery(window).scroll(function () { jarvis_sc_init_skills(container); });
568	}
569	//Skills type='arc' init
570	if (container.find('.sc_skills_arc:not(.inited)').length > 0) {
571		jarvis_sc_init_skills_arc(container);
572		jQuery(window).scroll(function () { jarvis_sc_init_skills_arc(container); });
573	}
574
575	// Tabs
576	if (container.find('.sc_tabs:not(.inited):not(.no_jquery_ui),.tabs_area:not(.inited)').length > 0) {
577		container.find('.sc_tabs:not(.inited):not(.no_jquery_ui),.tabs_area:not(.inited)').each(function () {
578			"use strict";
579			var init = jQuery(this).data('active');
580			if (isNaN(init)) init = 0;
581			else init = Math.max(0, init);
582			jQuery(this)
583				.addClass('inited')
584				.tabs({
585					active: init,
586					show: {
587						effect: 'fadeIn',
588						duration: 300
589					},
590					hide: {
591						effect: 'fadeOut',
592						duration: 300
593					},
594					create: function (event, ui) {
595						"use strict";
596						jarvis_init_shortcodes(ui.panel);
597						if (window.jarvis_init_hidden_elements) jarvis_init_hidden_elements(ui.panel);
598					},
599					activate: function (event, ui) {
600						"use strict";
601						jarvis_init_shortcodes(ui.newPanel);
602						if (window.jarvis_init_hidden_elements) jarvis_init_hidden_elements(ui.newPanel);
603					}
604				});
605		});
606	}
607	if (container.find('.sc_tabs.no_jquery_ui:not(.inited)').length > 0) {
608		container.find('.sc_tabs.no_jquery_ui:not(.inited)').each(function () {
609			"use strict";
610			jQuery(this)
611				.addClass('inited')
612				.on('click', '.sc_tabs_titles li a', function(e) {
613					"use strict";
614					if (!jQuery(this).parent().hasClass('sc_tabs_active')) {
615						var id_act = jQuery(this).parent().siblings('.sc_tabs_active').find('a').attr('href');
616						var id = jQuery(this).attr('href');
617						jQuery(this).parent().addClass('sc_tabs_active').siblings().removeClass('sc_tabs_active');
618						jQuery(id_act).fadeOut(function() {
619							"use strict";
620							jQuery(id).fadeIn(function() {
621								"use strict";
622								jarvis_init_shortcodes(jQuery(this));
623								if (window.jarvis_init_hidden_elements) jarvis_init_hidden_elements(jQuery(this));
624							});
625						});
626					}
627					e.preventDefault();
628					return false;
629				});
630			jQuery(this).find('.sc_tabs_titles li').eq(0).addClass('sc_tabs_active');
631			jQuery(this).find('.sc_tabs_content').eq(0).fadeIn(function() {
632				"use strict";
633				jarvis_init_shortcodes(jQuery(this));
634				if (window.jarvis_init_hidden_elements) jarvis_init_hidden_elements(jQuery(this));
635			});
636		});
637	}
638
639	// Toggles
640	if (container.find('.sc_toggles .sc_toggles_title:not(.inited)').length > 0) {
641		container.find('.sc_toggles .sc_toggles_title:not(.inited)')
642			.addClass('inited')
643			.on('click', function () {
644				"use strict";
645				jQuery(this).toggleClass('ui-state-active').parent().toggleClass('sc_active');
646				jQuery(this).parent().find('.sc_toggles_content').slideToggle(300, function () { 
647					"use strict";
648					jarvis_init_shortcodes(jQuery(this).parent().find('.sc_toggles_content')); 
649					if (window.jarvis_init_hidden_elements) jarvis_init_hidden_elements(jQuery(this).parent().find('.sc_toggles_content'));
650				});
651			});
652	}
653
654	//Zoom
655	if (container.find('.sc_zoom:not(.inited)').length > 0) {
656		container.find('.sc_zoom:not(.inited)')
657			.each(function () {
658				"use strict";
659				if (jQuery(this).parents('div:hidden,article:hidden').length > 0) return;
660				jQuery(this).addClass('inited');
661				jQuery(this).find('img').elevateZoom({
662					zoomType: "lens",
663					lensShape: "round",
664					lensSize: 200,
665					lensBorderSize: 4,
666					lensBorderColour: '#ccc'
667				});
668			});
669	}
670
671}
672
673
674
675// Scrolled areas
676function jarvis_sc_init_scroll_area(obj) {
677	"use strict";
678
679	// Wait for images loading
680	if (!jarvis_check_images_complete(obj) && JARVIS_STORAGE['scroll_init_counter']++ < 30) {
681		setTimeout(function() { jarvis_sc_init_scroll_area(obj); }, 200);
682		return;
683	}
684
685	// Start init scroll area
686	obj.addClass('inited');
687
688	var id = obj.attr('id');
689	if (id == undefined) {
690		id = 'scroll_'+Math.random();
691		id = id.replace('.', '');
692		obj.attr('id', id);
693	}
694	obj.addClass(id);
695
696	var parent_obj = obj.parent();
697	var parent_id  = parent_obj.attr('id');
698	if (parent_id == undefined) {
699		parent_id = 'scroll_wrap_'+Math.random();
700		parent_id = parent_id.replace('.', '');
701		parent_obj.attr('id', parent_id);
702	}
703	parent_obj.addClass(parent_id);
704
705	var bar = obj.find('#'+id+'_bar');
706	if (bar.length > 0 && !bar.hasClass(id+'_bar')) {
707		bar.addClass(id+'_bar');
708	}
709
710	// Init Swiper with scroll plugin
711	if (JARVIS_STORAGE['swipers'] === undefined) JARVIS_STORAGE['swipers'] = {};
712	JARVIS_STORAGE['swipers'][id] = new Swiper('.'+id, {
713		calculateHeight: false,
714		resizeReInit: true,
715		autoResize: true,
716		freeMode: true,
717		freeModeFluid: true,
718		grabCursor: true,
719		mode: obj.hasClass('sc_scroll_vertical') ? 'vertical' : 'horizontal',
720		direction: obj.hasClass('sc_scroll_vertical') ? 'vertical' : 'horizontal',
721		slidesPerView: obj.hasClass('sc_scroll') ? 'auto' : 1,
722        nextButton: parent_obj.hasClass('sc_scroll_controls') ? '#'+parent_id+' .sc_scroll_next' : false,
723        prevButton: parent_obj.hasClass('sc_scroll_controls') ? '#'+parent_id+' .sc_scroll_prev' : false,
724        scrollbar: '.'+id+'_bar',
725        scrollbarHide: true,
726	})
727	
728	obj.data('settings', {mode: 'horizontal'});		// VC hook
729}
730
731
732// Slider navigation
733function jarvis_sc_prepare_slider_navi(slider) {
734	"use strict";
735	var navi = null;
736	
737/*
738	// Prev / Next
739	navi = slider.find('> .sc_slider_controls_wrap, > .sc_scroll_controls_wrap');
740	if (navi.length == 0) navi = slider.siblings('.sc_slider_controls_wrap,.sc_scroll_controls_wrap');
741	if (navi.length > 0) {
742		navi.on('click', '.sc_slider_prev,.sc_scroll_prev', function(e) {
743			var swiper = jQuery(this).parents('.swiper-slider-container');
744			if (swiper.length == 0) swiper = jQuery(this).parents('.sc_slider_controls_wrap,.sc_scroll_controls_wrap').siblings('.swiper-slider-container');
745			var id = swiper.attr('id');
746			JARVIS_STORAGE['swipers'][id].slidePrev();
747			e.preventDefault();
748			return false;
749		})
750        .on('click', '.sc_slider_next,.sc_scroll_next', function(e){
751			var swiper = jQuery(this).parents('.swiper-slider-container');
752			if (swiper.length == 0) swiper = jQuery(this).parents('.sc_slider_controls_wrap,.sc_scroll_controls_wrap').siblings('.swiper-slider-container');
753			var id = swiper.attr('id');
754			JARVIS_STORAGE['swipers'][id].slideNext();
755			e.preventDefault();
756			return false;
757		});
758	}
759*/
760	// Pagination with slide's title
761	navi = slider.siblings('.sc_slider_pagination');
762	if (navi.length > 0) {
763		navi.on('click', '.post_item', function(e){
764			var swiper = jQuery(this).parents('.sc_slider_pagination_area').find('.swiper-slider-container');
765			var id = swiper.attr('id');
766			JARVIS_STORAGE['swipers'][id].slideTo(jQuery(this).index()+1);
767			e.preventDefault();
768			return false;
769		});
770	}
771}
772
773// Sliders: Pagination
774function jarvis_sc_change_active_pagination_in_slider(slider, idx) {
775	"use strict";
776	var pg = slider.parents('.sc_slider_pagination_area').find('.sc_slider_pagination');
777	if (pg.length==0) return;
778	pg.find('.post_item').removeClass('active').eq(idx).addClass('active');
779	var h = pg.height();
780	var off = pg.find('.active').offset().top - pg.offset().top;
781	var off2 = pg.find('.sc_scroll_wrapper').offset().top - pg.offset().top;
782	var h2  = pg.find('.active').height();
783	if (off < 0) {
784		pg.find('.sc_scroll_wrapper').css({'transform': 'translate3d(0px, 0px, 0px)', 'transition-duration': '0.3s'});
785	} else if (h <= off+h2) {
786		pg.find('.sc_scroll_wrapper').css({'transform': 'translate3d(0px, -'+(Math.abs(off2)+off-h/4)+'px, 0px)', 'transition-duration': '0.3s'});
787	}
788}
789
790// Sliders: Autoheight
791function jarvis_sc_slider_autoheight(slider) {
792	"use strict";
793	if (slider.hasClass('.sc_slider_height_auto')) {
794		slider.find('.swiper-slide').each(function() {
795			"use strict";
796			if (jQuery(this).data('height_auto') == undefined) {
797				jQuery(this).attr('data-height_auto', jQuery(this).height());
798			}
799		});
800	}
801}
802
803// Sliders: Resize
804function jarvis_sc_sliders_resize() {
805	"use strict";
806	var slider = arguments[0]!==undefined ? arguments[0] : '.sc_slider_swiper.inited';
807	var resize = arguments[1]!==undefined ? arguments[1] : true;
808
809	jQuery(slider).each(function() {
810		"use strict";
811		var id = jQuery(this).attr('id');
812		var width = jQuery(this).width();
813		var last_width = jQuery(this).data('last-width');
814		if (isNaN(last_width)) last_width = 0;
815		
816		// Change slides_per_view
817		if (last_width==0 || last_width!=width) {
818			var spv = jQuery(this).data('slides-per-view');
819			if (spv == undefined) spv = 1;
820			if (width / spv < JARVIS_STORAGE['swipers_min_width']) spv = Math.max(1, Math.floor(width / JARVIS_STORAGE['swipers_min_width']));
821			jQuery(this).data('last-width', width);
822			if (JARVIS_STORAGE['swipers'][id].params.slidesPerView != spv) {
823				JARVIS_STORAGE['swipers'][id].params.slidesPerView = spv;
824				JARVIS_STORAGE['swipers'][id].params.loopedSlides = spv;
825				//JARVIS_STORAGE['swipers'][id].reInit();
826			}
827		}
828		
829		// Resize slider
830		if ( resize && !jQuery(this).hasClass('sc_slider_height_fixed') ) {
831			var h = 0;
832			if ( jQuery(this).find('.swiper-slide > img').length > 0 ) {
833				jQuery(this).find('.swiper-slide > img').each(function() {
834					"use strict";
835					if (jQuery(this).height() > h) h = jQuery(this).height();
836				});
837				jQuery(this).height(h);
838			} else if ( jQuery(this).find('.swiper-slide').css('backgroundImage')!='none' ) {
839				h = Math.floor(width/16*9);
840				jQuery(this).height(h).find('.swiper-slide').height(h);
841			}
842		}
843	});
844	
845	// Resize slider pagination area
846	jQuery('.sc_slider_pagination_area').each(function() {
847		"use strict";
848		var h = jQuery(this).find('.sc_slider').height();
849		if (h) {
850			jQuery(this).height(h);
851			jQuery(this).find('.sc_slider_pagination').height(h);
852			jQuery(this).find('.sc_slider_pagination .sc_scroll_vertical').height(h);
853		}
854	});
855}
856
857
858// Skills init
859function jarvis_sc_init_skills(container) {
860	"use strict";
861	if (arguments.length==0) var container = jQuery('body');
862	var scrollPosition = jQuery(window).scrollTop() + jQuery(window).height();
863
864	container.find('.sc_skills_item:not(.inited)').each(function () {
865		"use strict";
866		var skillsItem = jQuery(this);
867		var scrollSkills = skillsItem.offset().top;
868		if (scrollPosition > scrollSkills) {
869			skillsItem.addClass('inited');
870			var skills = skillsItem.parents('.sc_skills').eq(0);
871			var type = skills.data('type');
872			var total = (type=='pie' && skills.hasClass('sc_skills_compact_on')) ? skillsItem.find('.sc_skills_data .pie') : skillsItem.find('.sc_skills_total').eq(0);
873			var start = parseInt(total.data('start'));
874			var stop = parseInt(total.data('stop'));
875			var maximum = parseInt(total.data('max'));
876			var startPercent = Math.round(start/maximum*100);
877			var stopPercent = Math.round(stop/maximum*100);
878			var ed = total.data('ed');
879			var duration = parseInt(total.data('duration'));
880			var speed = parseInt(total.data('speed'));
881			var step = parseInt(total.data('step'));
882			if (type == 'bar') {
883				var dir = skills.data('dir');
884				var count = skillsItem.find('.sc_skills_count').eq(0);
885				if (dir=='horizontal')
886					count.css('width', startPercent + '%').animate({ width: stopPercent + '%' }, duration);
887				else if (dir=='vertical')
888					count.css('height', startPercent + '%').animate({ height: stopPercent + '%' }, duration);
889				jarvis_sc_animate_skills_counter(start, stop, speed-(dir!='unknown' ? 5 : 0), step, ed, total);
890			} else if (type == 'counter') {
891				jarvis_sc_animate_skills_counter(start, stop, speed - 5, step, ed, total);
892			} else if (type == 'pie') {
893				var steps = parseInt(total.data('steps'));
894				var bg_color = total.data('bg_color');
895				var border_color = total.data('border_color');
896				var cutout = parseInt(total.data('cutout'));
897				var easing = total.data('easing');
898				var options = {
899					segmentShowStroke: false,
900					segmentStrokeColor: border_color,
901					segmentStrokeWidth: 1,
902					percentageInnerCutout : cutout,
903					animationSteps: steps,
904					animationEasing: easing,
905					animateRotate: true,
906					animateScale: false,
907				};
908				var pieData = [];
909				total.each(function() {
910					"use strict";
911					var color = jQuery(this).data('color');
912					var stop = parseInt(jQuery(this).data('stop'));
913					var stopPercent = Math.round(stop/maximum*100);
914					pieData.push({
915						value: stopPercent,
916						color: color
917					});
918				});
919				if (total.length == 1) {
920					jarvis_sc_animate_skills_counter(start, stop, Math.round(1500/steps), step, ed, total);
921					pieData.push({
922						value: 100-stopPercent,
923						color: bg_color
924					});
925				}
926				var canvas = skillsItem.find('canvas');
927				canvas.attr({width: skillsItem.width(), height: skillsItem.width()}).css({width: skillsItem.width(), height: skillsItem.height()});
928				new Chart(canvas.get(0).getContext("2d")).Doughnut(pieData, options);
929			}
930		}
931	});
932}
933
934// Skills counter animation
935function jarvis_sc_animate_skills_counter(start, stop, speed, step, ed, total) {
936	"use strict";
937	start = Math.min(stop, start + step);
938	total.text(start+ed);
939	if (start < stop) {
940		setTimeout(function () {
941			jarvis_sc_animate_skills_counter(start, stop, speed, step, ed, total);
942		}, speed);
943	}
944}
945
946// Skills arc init
947function jarvis_sc_init_skills_arc(container) {
948	"use strict";
949	if (arguments.length==0) var container = jQuery('body');
950	container.find('.sc_skills_arc:not(.inited)').each(function () {
951		var arc = jQuery(this);
952		arc.addClass('inited');
953		var items = arc.find('.sc_skills_data .arc');
954		var canvas = arc.find('.sc_skills_arc_canvas').eq(0);
955		var legend = arc.find('.sc_skills_legend').eq(0);
956		var w = Math.round(arc.width() - legend.width());
957		var c = Math.floor(w/2);
958		var o = {
959			random: function(l, u){
960				"use strict";
961				return Math.floor((Math.random()*(u-l+1))+l);
962			},
963			diagram: function(){
964				"use strict";
965				var r = Raphael(canvas.attr('id'), w, w),
966					hover = Math.round(w/2/items.length),
967					rad = hover,
968					step = Math.round(((w-20)/2-rad)/items.length),
969					stroke = Math.round(w/9/items.length),
970					speed = 400;
971				
972				
973				r.circle(c, c, Math.round(w/2)).attr({ stroke: 'none', fill: JARVIS_STORAGE['theme_skin_bg_color'] ? JARVIS_STORAGE['theme_skin_bg_color'] : '#ffffff' });
974				
975				var title = r.text(c, c, arc.data('caption')).attr({
976					font: Math.round(rad*0.75)+'px "'+JARVIS_STORAGE['theme_font']+'"',
977					fill: JARVIS_STORAGE['theme_skin_color'] ? JARVIS_STORAGE['theme_skin_color'] : '#909090'
978				}).toFront();
979				
980				rad -= Math.round(step/2);
981
982				r.customAttributes.arc = function(value, color, rad){
983					"use strict";
984					var v = 3.6 * value,
985						alpha = v == 360 ? 359.99 : v,
986						rand = o.random(91, 240),
987						a = (rand-alpha) * Math.PI/180,
988						b = rand * Math.PI/180,
989						sx = c + rad * Math.cos(b),
990						sy = c - rad * Math.sin(b),
991						x = c + rad * Math.cos(a),
992						y = c - rad * Math.sin(a),
993						path = [['M', sx, sy], ['A', rad, rad, 0, +(alpha > 180), 1, x, y]];
994					return { path: path, stroke: color }
995				}
996				
997				items.each(function(i){
998					"use strict";
999					var t = jQuery(this), 
1000						color = t.find('.color').val(),
1001						value = t.find('.percent').val(),
1002						text = t.find('.text').text();
1003					
1004					rad += step;
1005					var z = r.path().attr({ arc: [value, color, rad], 'stroke-width': stroke });
1006					
1007					z.mouseover(function(){
1008						"use strict";
1009						this.animate({ 'stroke-width': hover, opacity: .75 }, 1000, 'elastic');
1010						if (Raphael.type != 'VML') //solves IE problem
1011							this.toFront();
1012						title.stop().animate({ opacity: 0 }, speed, '>', function(){
1013							this.attr({ text: (text ? text + '\n' : '') + value + '%' }).animate({ opacity: 1 }, speed, '<');
1014						});
1015					}).mouseout(function(){
1016						"use strict";
1017						this.stop().animate({ 'stroke-width': stroke, opacity: 1 }, speed*4, 'elastic');
1018						title.stop().animate({ opacity: 0 }, speed, '>', function(){
1019							title.attr({ text: arc.data('caption') }).animate({ opacity: 1 }, speed, '<');
1020						});	
1021					});
1022					
1023				});
1024				
1025			}
1026		}
1027		o.diagram();
1028	});
1029}
1030
1031
1032// Countdown update
1033function jarvis_countdown(dt) {
1034	"use strict";
1035	var counter = jQuery(this).parent();
1036	for (var i=3; i<dt.length; i++) {
1037		var v = (dt[i]<10 ? '0' : '') + dt[i];
1038		counter.find('.sc_countdown_item').eq(i-3).find('.sc_countdown_digits span').addClass('hide');
1039		for (var ch=v.length-1; ch>=0; ch--) {
1040			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));
1041		}
1042	}
1043}

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.