1/*! 2 jQuery Accordion Carousel Blue Slider v1.0.0 3 Licensed under the MIT license. 4*/ 5(function($) { 6 $.fn.blue_slider = function(options) { 7 var settings = $.extend( 8 { 9 slide_template: '1fr 10fr (2,1fr) .5fr', 10 slide_gap: 5, 11 current_fr_index: 2, 12 current_fr_index_flow: false, 13 slide_step: 1, 14 current_fr_class: 'my-fr-current', 15 active_fr_class: 'my-fr-active', 16 custom_fr_class: '', 17 left_padding: 0, 18 right_padding: 0, 19 speed: 2500, 20 ease_function: 'ease-out', 21 sencitive_drag: 100, 22 loop: true, 23 auto_play: false, 24 auto_play_period: 3500, 25 start_slide_index: 0, 26 arrows: true, 27 prev_arrow: '', 28 next_arrow: '', 29 }, 30 options 31 ); 32 var sliderParent = this; 33 var sliderParentWidth = parseInt( sliderParent.css( 'width' ) ) - (settings.right_padding + settings.left_padding); 34 var prev_slide_arrow = ''; 35 var next_slide_arrow = ''; 36 var sencitive_drag = settings.sencitive_drag; 37 var wholeItemsCount = sliderParent.children().length; 38 var current_fr_class = settings.current_fr_class; 39 var active_fr_class = settings.active_fr_class; 40 var customFrClass; 41 if (settings.custom_fr_class !== '') { 42 customFrClass = settings.custom_fr_class.split( ' ' ); 43 for (var i = 0; i < customFrClass.length; i++) { 44 if (customFrClass[i] === '') { 45 customFrClass.splice( i--, 1 ); 46 } 47 } 48 } 49 var slide_gap = parseInt( settings.slide_gap ); 50 var current_fr_index = parseInt( settings.current_fr_index ); 51 var slide_template = settings.slide_template.trim(); 52 for (var s = 0; s < slide_template.length; s++) { 53 var indexBegin = slide_template.indexOf( '(', s ); 54 if (indexBegin > -1) { 55 var indexComma = slide_template.indexOf( ',', ++indexBegin ); 56 var indexEnd = slide_template.indexOf( ')', ++indexComma ); 57 var repeatCount = parseInt( slide_template.substring( indexBegin, indexComma ) ); 58 var repeatValue = ' ' + slide_template.substring( indexComma, indexEnd ).trim() + ' '; 59 var tempSlide_template = slide_template.substring( 0, indexBegin - 1 ); 60 for (var r = 0; r < repeatCount; r++) { 61 tempSlide_template += repeatValue; 62 } 63 slide_template = tempSlide_template + slide_template.substring( indexEnd + 1 ); 64 s = indexBegin; 65 } 66 } 67 var activeItemsArray = slide_template.split( ' ' ); 68 for (var i = 0; i < activeItemsArray.length; i++) { 69 if (activeItemsArray[i] === '') { 70 activeItemsArray.splice( i--, 1 ); 71 } 72 } 73 var activeItemsCount = activeItemsArray.length; 74 var frItemsCount = 0; 75 var frItemsWidth = 0; 76 var pxItemsCount = 0; 77 var pxItemsWidth = 0; 78 var pxMinItemWidth = sliderParentWidth; 79 var frWidth = 0; 80 for (var i = 0; i < activeItemsCount; i++) { 81 if (activeItemsArray[i].indexOf( 'fr' ) > -1) { 82 frItemsCount++; 83 frItemsWidth += parseFloat( activeItemsArray[i] ); 84 } else { 85 pxItemsCount++; 86 pxItemsWidth += parseFloat( activeItemsArray[i] ); 87 if (pxMinItemWidth > parseFloat( activeItemsArray[i] )) { 88 pxMinItemWidth = parseFloat( activeItemsArray[i] ); 89 } 90 } 91 } 92 if ((sliderParentWidth - pxItemsWidth - (slide_gap * pxItemsCount)) > 0) { 93 if (frItemsCount == 0) { 94 activeItemsArray.push( '1fr' ); 95 activeItemsCount = activeItemsArray.length; 96 frItemsCount++; 97 frItemsWidth = 1; 98 } 99 frWidth = (sliderParentWidth - pxItemsWidth - (slide_gap * (activeItemsCount - 1))) / frItemsWidth; 100 } else { 101 if (frItemsCount == 0) { 102 activeItemsArray.push( '1fr' ); 103 activeItemsCount = activeItemsArray.length; 104 frItemsCount++; 105 frItemsWidth = 1; 106 } 107 frWidth = pxMinItemWidth; 108 } 109 if (current_fr_index > activeItemsCount || current_fr_index < 1) { 110 console.error( "Blue-Slider Error: The input of 'current_fr_index' must be bigger than zero and less than or equal to the number of slides to be shown!" ); 111 return false; 112 } 113 var slideWrapperContainer = document.createElement( 'div' ); 114 slideWrapperContainer.className = 'slide-wrapper'; 115 slideWrapperContainer.style.position = 'relative'; 116 slideWrapperContainer.style.width = '100%'; 117 slideWrapperContainer.style.height = '100%'; 118 var slideTrackContainer = document.createElement( 'div' ); 119 slideTrackContainer.className = 'slide-tracker'; 120 slideTrackContainer.style.position = 'absolute'; 121 slideTrackContainer.style.height = '100%'; 122 slideTrackContainer.style.width = ((frWidth * frItemsWidth) + pxItemsWidth + (frWidth * (wholeItemsCount - frItemsCount - pxItemsCount)) + (slide_gap * wholeItemsCount)) + 'px'; 123 slideTrackContainer.style.transition = 'transform ' + settings.speed + 'ms ' + settings.ease_function; 124 sliderParent.children().each( 125 function() { 126 var slideItemContainer = document.createElement( 'div' ); 127 slideItemContainer.className = 'slide-item'; 128 slideItemContainer.style.position = 'absolute'; 129 slideItemContainer.style.height = '100%'; 130 slideItemContainer.style.width = '0'; 131 slideItemContainer.style.top = 0; 132 slideItemContainer.style.left = 0; 133 slideItemContainer.style.transition = 'all ' + settings.speed + 'ms ' + settings.ease_function; 134 slideItemContainer.appendChild( this ); 135 slideTrackContainer.appendChild( slideItemContainer ); 136 } 137 ); 138 slideWrapperContainer.append( slideTrackContainer ); 139 sliderParent.append( slideWrapperContainer ); 140 var slideWrapper = sliderParent.children( '.slide-wrapper' ); 141 var slideTracker = slideWrapper.children( '.slide-tracker' ); 142 var slideItems = slideTracker.children( '.slide-item' ); 143 if ((2 - settings.start_slide_index) > current_fr_index || ( ! settings.current_fr_index_flow ? (settings.start_slide_index > wholeItemsCount - current_fr_index + 1) : (settings.start_slide_index > wholeItemsCount))) { 144 console.error( "Blue-Slider Error: The input of 'start_slide_index' is not in correct range!" ); 145 return false;
146 } 147 var start_slide_index = settings.start_slide_index - 1; 148 if (settings.current_fr_index_flow && start_slide_index < 0) { 149 start_slide_index = 0; 150 } 151 var currentTransX = settings.left_padding; 152 if (start_slide_index >= 0) { 153 currentTransX = (-(frWidth + slide_gap) * start_slide_index) + settings.left_padding; 154 } else { 155 for (var i = 0; i < -start_slide_index; i++) { 156 if (activeItemsArray[i].indexOf( 'fr' ) > -1) { 157 currentTransX += (frWidth * parseFloat( activeItemsArray[i] )) + slide_gap + settings.left_padding; 158 } else { 159 currentTransX += parseFloat( activeItemsArray[i] ) + slide_gap + settings.left_padding; 160 } 161 } 162 } 163 var current_fr_index_temp = 1; 164 slideTracker.css( 165 { 166 'transform': 'translate3d(' + currentTransX + 'px, 0, 0)' 167 } 168 ); 169 var setWidthItems = function() { 170 var totalItemsWidth = 0; 171 slideItems.each( 172 function(index) { 173 var newIndex = index - start_slide_index; 174 var itemWidth = frWidth; 175 if (newIndex >= 0 && newIndex < activeItemsCount) { 176 if (activeItemsArray[newIndex].indexOf( 'fr' ) > -1) { 177 itemWidth = (frWidth * parseFloat( activeItemsArray[newIndex] )); 178 } else { 179 itemWidth = parseFloat( activeItemsArray[newIndex] ); 180 } 181 } 182 $( this ).css( 183 { 184 'width': itemWidth, 185 'transform': 'translate3d(' + totalItemsWidth + 'px, 0, 0)', 186 } 187 ); 188 189 if (settings.current_fr_index_flow) { 190 if ((newIndex + 1) == current_fr_index_temp) { 191 $( this ).addClass( current_fr_class ); 192 } else { 193 $( this ).removeClass( current_fr_class ); 194 } 195 } else { 196 if ((newIndex + 1) == current_fr_index) { 197 $( this ).addClass( current_fr_class ); 198 } else { 199 $( this ).removeClass( current_fr_class ); 200 } 201 } 202 203 if ((newIndex + 1) > 0 && (newIndex + 1) <= activeItemsCount) { 204 $( this ).addClass( active_fr_class ); 205 } else { 206 $( this ).removeClass( active_fr_class ); 207 } 208 209 if (customFrClass) { 210 for (var c = 0; c < customFrClass.length; c++) { 211 $( this ).removeClass( customFrClass[c] ); 212 } 213 if (customFrClass[newIndex]) { 214 $( this ).addClass( customFrClass[newIndex] ); 215 } 216 } 217 218 totalItemsWidth += (itemWidth + slide_gap); 219 } 220 ); 221 } 222 setWidthItems(); 223 var arrowClickEnable = true; 224 var slideAutoPlay; 225 if (settings.arrows) { 226 if (settings.prev_arrow !== '') { 227 prev_slide_arrow = $( settings.prev_arrow ); 228 } 229 if (settings.next_arrow !== '') { 230 next_slide_arrow = $( settings.next_arrow ); 231 } 232 } 233 prev_slide_arrow.on( 234 'click', 235 function() { 236 if ( ! arrowClickEnable) { 237 return false; 238 } 239 if (settings.auto_play) { 240 clearInterval( slideAutoPlay ); 241 } 242 for (var i = 0; i < settings.slide_step; i++) { 243 slideBackward(); 244 } 245 if (settings.auto_play) { 246 slideAutoPlay = setInterval( autoPlayRun, settings.auto_play_period ); 247 } 248 } 249 ); 250 next_slide_arrow.on( 251 'click', 252 function() { 253 if ( ! arrowClickEnable) { 254 return false; 255 } 256 if (settings.auto_play) { 257 clearInterval( slideAutoPlay ); 258 } 259 for (var i = 0; i < settings.slide_step; i++) { 260 slideForward(); 261 } 262 if (settings.auto_play) { 263 slideAutoPlay = setInterval( autoPlayRun, settings.auto_play_period ); 264 } 265 } 266 ); 267 268 var xClick; 269 slideTracker.on( 270 'mousedown', 271 '.slide-item', 272 function(e) { 273 xClick = e.pageX; 274 } 275 ); 276 slideTracker.on( 277 'mouseup', 278 '.slide-item', 279 function(e) { 280 if (xClick == e.pageX) { 281 slideTracker.css( 'transition', 'transform ' + settings.speed + 'ms ' + settings.ease_function ); 282 var moveSteps = $( this ).index() - slideTracker.children( '.' + current_fr_class ).index(); 283 if (moveSteps > 0) { 284 for (var i = 0; i < moveSteps; i++) { 285 slideForward(); 286 } 287 } else if (moveSteps < 0) { 288 for (var i = 0; i < Math.abs( moveSteps ); i++) { 289 slideBackward(); 290 } 291 } 292 } 293 } 294 ); 295 296 var dragEnable = false; 297 var posX = 0; 298 var distanceMove = 0; 299 var velocity = 1; 300 sliderParent.mousedown( 301 function(e) { 302 dragEnable = true; 303 velocity = 1; 304 posX = e.pageX - $( this ).offset().left; 305 var slideTrackerStyles = slideTracker.attr( 'style' ); 306 var newStyles = slideTrackerStyles.substring( 0, slideTrackerStyles.indexOf( 'transition' ) - 1 ) + 307 slideTrackerStyles.substring( slideTrackerStyles.indexOf( ';', slideTrackerStyles.indexOf( 'transition' ) ) + 1 ); 308 slideTracker.attr( 'style', newStyles ); 309 if (settings.auto_play) { 310 clearInterval( slideAutoPlay ); 311 } 312 } 313 ); 314 sliderParent.on( 315 'dragstart', 316 function() { 317 return false;
318 } 319 ); 320 $( window ).on( 321 'mouseup drop', 322 function(e) { 323 if ( ! dragEnable) { 324 return false; 325 } 326 dragEnable = false; 327 slideTracker.css( 'transition', 'transform ' + settings.speed + 'ms ' + settings.ease_function ); 328 if (Math.abs( distanceMove ) > sencitive_drag) { 329 if (distanceMove > 0) { 330 for (var i = 0; i < settings.slide_step; i++) { 331 slideBackward(); 332 } 333 } else { 334 for (var i = 0; i < settings.slide_step; i++) { 335 slideForward(); 336 } 337 } 338 } else { 339 slideTracker.css( 340 { 341 'transform': 'translate3d(' + currentTransX + 'px, 0, 0)' 342 } 343 ); 344 } 345 distanceMove = 0; 346 if (settings.auto_play) { 347 slideAutoPlay = setInterval( autoPlayRun, settings.auto_play_period ); 348 } 349 } 350 ); 351 sliderParent.mousemove( 352 function(e) { 353 if (dragEnable) { 354 var newPosX = (e.pageX - $( this ).offset().left); 355 distanceMove = newPosX - posX; 356 if ((slideTracker.children( '.' + current_fr_class ).index() == 0 && distanceMove > 0) || 357 (slideTracker.children( '.' + current_fr_class ).index() == wholeItemsCount - 1 && distanceMove < 0)) { 358 var distanceTemp = Math.abs( distanceMove ); 359 velocity = 1 - (distanceTemp / sliderParentWidth); 360 } 361 distanceMove *= velocity; 362 slideTracker.css( 363 { 364 'transform': 'translate3d(' + (distanceMove + currentTransX) + 'px, 0, 0)' 365 } 366 ); 367 } 368 } 369 ); 370 371 function slideBackward() { 372 if (settings.current_fr_index_flow && 373 (current_fr_index_temp > current_fr_index || 374 (current_fr_index_temp > slideTracker.children( '.' + current_fr_class ).index())) && 375 (current_fr_index_temp > 1)) { 376 current_fr_index_temp--; 377 } else { 378 arrowClickEnable = false; 379 if (slideTracker.children( '.' + current_fr_class ).index() != 0) { 380 start_slide_index--; 381 if ((currentTransX + (frWidth + slide_gap)) > settings.left_padding && (currentTransX + (frWidth + slide_gap)) <= (sliderParentWidth - settings.right_padding)) { 382 var itemWidth = frWidth; 383 if (activeItemsArray[Math.abs( start_slide_index ) - 1].indexOf( 'fr' ) > -1) { 384 itemWidth = (frWidth * parseFloat( activeItemsArray[Math.abs( start_slide_index ) - 1] )); 385 } else { 386 itemWidth = parseFloat( activeItemsArray[Math.abs( start_slide_index ) - 1] ); 387 } 388 currentTransX += (itemWidth + slide_gap); 389 } else { 390 currentTransX += (frWidth + slide_gap); 391 } 392 } 393 setTimeout( function() { arrowClickEnable = true; }, settings.speed ); 394 } 395 slideTracker.css( 396 { 397 'transform': 'translate3d(' + currentTransX + 'px, 0, 0)' 398 } 399 ); 400 setWidthItems(); 401 } 402 403 function slideForward() { 404 if (settings.current_fr_index_flow && 405 (current_fr_index_temp < current_fr_index || 406 (wholeItemsCount - slideTracker.children( '.' + current_fr_class ).index() - 1 <= activeItemsCount - current_fr_index)) && 407 (current_fr_index_temp < activeItemsCount)) { 408 current_fr_index_temp++; 409 } else { 410 arrowClickEnable = false; 411 if (slideTracker.children( '.' + current_fr_class ).index() != wholeItemsCount - 1) { 412 start_slide_index++; 413 if ((currentTransX - (frWidth + slide_gap)) >= 0 && (currentTransX - (frWidth + slide_gap)) <= sliderParentWidth) { 414 var itemWidth = frWidth; 415 if (activeItemsArray[Math.abs( start_slide_index )].indexOf( 'fr' ) > -1) { 416 itemWidth = (frWidth * parseFloat( activeItemsArray[Math.abs( start_slide_index )] )); 417 } else { 418 itemWidth = parseFloat( activeItemsArray[Math.abs( start_slide_index )] ); 419 } 420 currentTransX -= (itemWidth + slide_gap); 421 } else { 422 currentTransX -= (frWidth + slide_gap); 423 } 424 } 425 setTimeout( function() { arrowClickEnable = true; }, settings.speed ); 426 } 427 slideTracker.css( 428 { 429 'transform': 'translate3d(' + currentTransX + 'px, 0, 0)' 430 } 431 ); 432 setWidthItems(); 433 } 434 var slideDirection = 1; 435 if (settings.auto_play) { 436 slideAutoPlay = setInterval( autoPlayRun, settings.auto_play_period ); 437 } 438 function autoPlayRun() { 439 if (slideTracker.children( '.' + current_fr_class ).index() == 0) { 440 slideDirection = 1; 441 } else if (slideTracker.children( '.' + current_fr_class ).index() == wholeItemsCount - 1) { 442 slideDirection = 0; 443 } 444 if (slideDirection) { 445 slideForward(); 446 } else { 447 slideBackward(); 448 } 449 } 450 } 451})( jQuery );
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.