PageSourceSearch

https://www.odettelunettes.com/js/pp-slider.js

js odettelunettes.com collected 2026-10-05 06:15:18 UTC 5,134 bytes, 207 lines download raw bytes

1// Few simple functions to slide a slider
2function moveSlide(type, element, slide, callback) {
3	
4	if (type == 'next') {
5		
6		slide = getNextSlide(element);
7	}
8	else if (type == 'previous') {
9		
10		slide = getPreviousSlide(element);
11	}
12	
13	currentSlide = element.find('[data-slide-controller].active').data('slide');
14	
15	// Check if slide even exists
16	if (element.find('[data-slide="' + slide + '"]').length > 0 && slide != currentSlide) {
17		
18		// Handle the sliding
19		element.find('[data-slide-controller]').removeClass('active animated fadeIn');
20		element.find('[data-slide]').hide();
21		
22		element.find('[data-slide-controller][data-slide="' + slide + '"]').addClass('active animated fadeIn');
23		element.find('[data-slide="' + slide + '"]').show();
24
25		// Handle any connected elements
26		if (element.find('[data-slide-parent]').length > 0) {
27
28			element.find('[data-slide-parent]').removeClass('active animated fadeIn');
29			element.find('[data-slide-parent]').hide();
30
31			if (element.find('[data-slide-parent="' + slide + '"]')) {
32
33				element.find('[data-slide-parent="' + slide + '"]').addClass('active animated fadeIn');
34				element.find('[data-slide-parent="' + slide + '"]').show();
35			}
36		}
37		
38		// Handle the paging (if available)
39		if (element.find('.paging-list').length > 0) {
40			
41			element.find('.paging-list li').removeClass('active');
42			element.find('.paging-list li[data-slide-scroller="' + slide + '"]').addClass('active');
43		}
44	}
45
46	// If a slider was auto animating; reset it
47	if (sliders[element.attr('id')] !== undefined) {
48
49		resetSlider(element.attr('id'), element.data('slider-delay'));
50	}
51
52	// Check if the slider contains a counter
53	if (element.data('has-counters') !== undefined) {
54
55		slideCounter(element.find('[data-slide=' + slide + '] .counter'), element.attr('id'));
56	}
57
58	$(".slider-paging[data-element='" + element.attr('id') + "'] .paging-dot").removeClass("active");
59	$(".slider-paging[data-element='" + element.attr('id') + "'] .paging-dot[data-slide=" + slide + "]").addClass("active");
60	
61	if (typeof callback === "function") {
62
63		callback();
64	}
65}
66
67function getNextSlide(element) {
68	
69	currentSlide = element.find('[data-slide-controller].active').data('slide');
70	nextSlide = parseInt(currentSlide) + 1;
71	
72	if (element.find('[data-slide="' + nextSlide + '"]').length == 0) {
73		
74		nextSlide = 0;
75	}
76	
77	return nextSlide;
78}
79
80function getPreviousSlide(element) {
81	
82	currentSlide = element.find('[data-slide-controller].active').data('slide');
83	previousSlide = parseInt(currentSlide) - 1;
84	
85	if (previousSlide < 0) {
86		
87		previousSlide = element.find('[data-slide-controller]:last').data('slide');
88	}
89	
90	return previousSlide;
91}
92
93var sliders = [];
94
95function startSlider(element, delay) {
96
97	sliders[element] = setInterval(function() {
98
99		moveSlide('next', $('#' + element), 0);
100	}, delay);
101}
102
103function stopSlider(element) {
104
105	clearInterval(sliders[element]);
106}
107
108function resetSlider(element, delay) {
109
110	stopSlider(element);
111	startSlider(element, delay);
112}
113
114// Few triggers for slider
115$(document).ready(function() {
116	
117	$('.slider-arrow').click(function() {
118		
119		type = ($(this).hasClass('previous')) ? 'previous' : 'next';
120		element = $(this).data('element');
121			
122		if (element == 'faq-slider') {
123
124			moveSlide(type, $('#' + element), 0, function() { setTimeout(function() { startTypewriter($('#faq-slider').find('[data-slide-controller].active.typewrite')); }, 100); });
125		}
126		else {
127
128			moveSlide(type, $('#' + element), 0);
129		}
130	});
131	
132	$('.paging-list li a').click(function() {
133		
134		liElement = $(this).parent();
135		ulElement = liElement.parent();
136		
137		if (!liElement.hasClass('active')) {
138			
139			slide = liElement.data('slide-scroller');
140			element = liElement.parent().data('element');
141
142			moveSlide('move', $('#' + element), slide);
143		}
144	});
145
146	// Scan for any [data-slider-delay] elements to start a slider
147	if ($('[data-slider-delay]').length > 0) {
148
149		$('[data-slider-delay]').each(function() {
150
151			delay = $(this).data('slider-delay');
152			element = $(this).attr('id');
153
154			startSlider(element, delay);
155
156			// Hide arrows and such if only one slide
157			if ($(this).find('[data-slide-controller]').length == 1) {
158
159				$(`.arrow.next[data-element="${element}"]`).hide();
160				$(`.arrow.previous[data-element="${element}"]`).hide();
161				$(`.paging-wrapper[data-element="${element}"]`).hide();
162			}
163		});
164	}
165
166	$('.paging-dot').click(function() {
167		
168		var slide = $(this).data('slide');
169		var element = $(this).parent().parent().data('element');
170		
171		moveSlide('move', $('#' + element), slide);
172	});
173});
174
175// Function to reset/start counters of slider
176// $('#statistics-slider .counter:first')
177function slideCounter(element, slideId) {
178
179	// Set all counters to 0
180	$('#' + slideId + ' .counter').each(function() {
181
182		$(this).text('0');
183	});
184
185	countTo = element.attr('data-count');
186	duration = element.closest('#' + slideId).data('slider-delay');
187		
188	$({ countNum: element.text()}).animate(
189		{
190
191			countNum: countTo
192		},
193		{
194
195			duration: 4000,
196			easing:'swing',
197			step: function() {
198
199				element.text(Math.floor(this.countNum));
200			},
201			complete: function() {
202
203				element.text(this.countNum);
204			}
205		}
206	);
207}

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.