PageSourceSearch

https://www.anticacortepallavicinarelais.com/wp-content/themes/fdr…/shortcodes/theme.shortcodes.js?x95725

js anticacortepallavicinarelais.com collected 2026-10-07 17:06:03 UTC 31,613 bytes, 893 lines download raw bytes

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

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.