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.