1/* 2* Glide.js 3* Ver: 1.0.5 4* Simple, lightweight and fast jQuery slider 5* url: http://jedrzejchalubek.com/glide 6* Autor: @JedrzejChalubek 7* site: http://jedrzejchalubek.com 8* Licensed under the MIT license 9*/ 10/* 11function resizeSliderFonts(n) 12{ 13var width = $(document).width() - 80; 14var height = 46; 15var font_width = 20; 16var node_value = $("ul.slides li:nth-child("+n+") div h1").html(); 17var text_count = $.trim(node_value.slice(0, node_value.indexOf("<span"))).length+$("ul.slides li:nth-child("+n+") div h1 span").html().length; 18var symbols_width = font_width*text_count; 19var br_exist_index = $.trim(node_value).indexOf("<br>"); 20var new_width; 21if(symbols_width > width * 2) 22{ 23new_width=width * 2/ text_count; 24$("ul.slides li:nth-child("+n+") div h1").css('font-size',(Math.round(new_width*1.7)-2).toString()+'px'); 25} 26else if (symbols_width > width) 27{ 28} 29if(br_exist_index!=-1) 30{ 31if(br_exist_index * 20 >= width) 32{ 33new_width=width/ br_exist_index; 34$("ul.slides li:nth-child("+n+") div h1").css('font-size',(Math.round(new_width*1.7)-2).toString()+'px'); 35 36} 37else if((text_count-br_exist_index-4) * 20 >= width) 38{ 39new_width=width / (text_count-br_exist_index-10); 40$("ul.slides li:nth-child("+n+") div h1").css('font-size',(Math.round(new_width*1.7)-2).toString()+'px'); 41}
42} 43return; 44} 45*/ 46function replaceArrows(n) 47{ 48 var height = $("ul.slides li:nth-child("+n+") div h1").height(); 49 //alert($("ul.slides li:nth-child("+n+") div h1").html()); 50 if(height>46) 51 { 52 //var newHeight= (220+height).toString()+'px'; 53 newHeight='340px'; 54 $(".slider-arrows a").css('top',newHeight) 55 } 56 else 57 { 58 $(".slider-arrows a").css('top','266px') 59 } 60} 61;(function ($, window, document, undefined) { 62 var name = 'glide', 63 defaults = { 64 65 // {Int or Bool} False for turning off autoplay 66 autoplay: 4000, 67 type: 'carousel', 68 // {Bool} Pause autoplay on mouseover slider 69 hoverpause: true, 70 /** 71 * Animation time 72 * !!! IMPORTANT !!! 73 * That option will be use only, when css3 are not suported 74 * If css3 are supported animation time is set in css declaration inside .css file 75 * @type {Int} 76 */ 77 animationTime: 4000, 78 79 /** 80 * {Bool or String} Show/hide/appendTo arrows 81 * True for append arrows to slider wrapper 82 * False for not appending arrows 83 * Id or class name (e.g. '.class-name') for appending to specific HTML markup 84 */ 85 arrows: true, 86 // {String} Arrows wrapper class 87 arrowsWrapperClass: 'slider-arrows', 88 // {String} Main class for both arrows 89 arrowMainClass: 'slider-arrow', 90 // {String} Right arrow 91 arrowRightClass: 'slider-arrow--right', 92 // {String} Right arrow text 93 arrowRightText: 'next', 94 // {String} Left arrow 95 arrowLeftClass: 'slider-arrow--left', 96 // {String} Left arrow text 97 arrowLeftText: 'prev', 98 99 /** 100 * {Bool or String} Show/hide/appendTo bullets navigation 101 * True for append arrows to slider wrapper 102 * False for not appending arrows 103 * Id or class name (e.g. '.class-name') for appending to specific HTML markup 104 */ 105 nav: true, 106 // {Bool} Center bullet navigation 107 navCenter: true, 108 // {String} Navigation class 109 navClass: 'slider-nav', 110 // {String} Navigation item class 111 navItemClass: 'slider-nav__item', 112 // {String} Current navigation item class 113 navCurrentItemClass: 'slider-nav__item--current', 114 115 // {Bool} Slide on left/right keyboard arrows press 116 keyboard: true, 117 118 // {Int or Bool} Touch settings 119 touchDistance: 60, 120 121 // {Function} Callback before plugin init 122 beforeInit: function() {}, 123 // {Function} Callback after plugin init 124 afterInit: function() {}, 125 126 // {Function} Callback before slide change 127 beforeTransition: function() {}, 128 // {Function} Callback after slide change 129 afterTransition: function() {} 130 131 }; 132 133 /** 134 * Slider Constructor 135 * @param {Object} parent 136 * @param {Object} options 137 */ 138 function Glide(parent, options) { 139 140 // Cache this 141 var _ = this; 142 // Extend options 143 _.options = $.extend({}, defaults, options); 144 // Sidebar 145 _.parent = parent; 146 // Slides Wrapper 147 _.wrapper = _.parent.children(); 148 // Slides 149 _.slides = _.wrapper.children(); 150 // Current slide id 151 _.currentSlide = 0; 152 // CSS3 Animation support 153 _.CSS3support = true; 154 155 // Callbacks before plugin init 156 _.options.beforeInit.call(_); 157 158 // Initialize 159 _.init(); 160 // Build DOM 161 _.build(); 162 // Start autoplay 163 _.play(); 164 165 /** 166 * Controller 167 * Touch events 168 */ 169 if (_.options.touchDistance) { 170 // Init swipe 171 _.swipe(); 172 } 173 174 /** 175 * Controller 176 * Keyboard left and right arrow keys 177 */ 178 if (_.options.keyboard) { 179 $(document).on('keyup', function(k) { 180 // Next 181 if (k.keyCode === 39) _.slide(1); 182 // Prev 183 if (k.keyCode === 37) _.slide(-1); 184 }); 185 } 186 187 /** 188 * Controller 189 * Mouse over slider 190 * When mouse is over slider, pause autoplay 191 * On out, start autoplay again 192 */ 193 if (_.options.hoverpause) { 194 _.parent.add(_.arrows).add(_.nav).on('mouseover mouseout', function(e) { 195 // Pasue autoplay 196 _.pause(); 197 // When mouse left slider or touch end, start autoplay anew 198 if (e.type === 'mouseout') _.play(); 199 }); 200 } 201 202 /** 203 * Controller 204 * When resize browser window 205 * Pause autoplay in fear of escalation 206 * Reinit plugin for new slider dimensions 207 * Correct crop to current slide 208 * Start autoplay from beginning 209 */ 210 $(window).on('resize', function() { 211 // Reinit plugin (set new slider dimensions)
212 _.init(); 213 // Crop to current slide 214 _.slide(0); 215 }); 216 217 // Callback after plugin init 218 _.options.afterInit.call(_); 219 220 // Returning API 221 return { 222 223 /** 224 * Get current slide number 225 * @return {Int} 226 */ 227 current: function() { 228 return -(_.currentSlide) + 1; 229 }, 230 231 /** 232 * Start autoplay 233 */ 234 play: function() { 235 _.play(); 236 }, 237 238 /** 239 * Stop autoplay 240 */ 241 pause: function() { 242 _.pause(); 243 }, 244 245 /** 246 * Slide one forward 247 * @param {Function} callback 248 */ 249 next: function(callback) { 250 _.slide(1, false, callback); 251 }, 252 253 /** 254 * Slide one backward 255 * @param {Function} callback 256 */ 257 prev: function(callback) { 258 _.slide(-1, false, callback); 259 }, 260 261 /** 262 * Jump to specifed slide 263 * @param {Int} distance 264 * @param {Function} callback 265 */ 266 jump: function(distance, callback) { 267 _.slide(distance-1, true, callback); 268 }, 269 270 /** 271 * Append navigation to specifet target 272 * @param {Mixed} target 273 */ 274 nav: function(target) { 275 /** 276 * If navigation wrapper already exist 277 * Remove it, protection before doubled navigation 278 */ 279 if (_.navWrapper) { 280 _.navWrapper.remove(); 281 } 282 // While target isn't specifed, use slider wrapper 283 _.options.nav = (target) ? target : _.options.nav; 284 // Build 285 _.navigation(); 286 }, 287 288 /** 289 * Append arrows to specifet target 290 * @param {Mixed} target 291 */ 292 arrows: function(target) { 293 /** 294 * If arrows wrapper already exist 295 * Remove it, protection before doubled arrows 296 */ 297 if (_.arrowsWrapper) { 298 _.arrowsWrapper.remove(); 299 } 300 // While target isn't specifed, use slider wrapper 301 _.options.arrows = (target) ? target : _.options.arrows; 302 // Build 303 _.arrows(); 304 } 305 306 }; 307 308 } 309 310 /** 311 * Building slider DOM 312 */ 313 Glide.prototype.build = function() { 314 315 // Cache this 316 var _ = this; 317 318 /** 319 * Arrows 320 * If option is true and there is more than one slide 321 * Append left and right arrow 322 */ 323 if (_.options.arrows) _.arrows(); 324 325 /** 326 * Navigation 327 * If option is true and there is more than one slide 328 * Append navigation item for each slide 329 */ 330 if (_.options.nav) _.navigation(); 331 332 }; 333 334 /** 335 * Building navigation DOM 336 */ 337 Glide.prototype.navigation = function() { 338 339 // Cache this 340 var _ = this; 341 342 if (_.slides.length > 1) { 343 // Setup variables 344 var o = _.options, 345 /** 346 * Setting append target 347 * If option is true set default target, that is slider wrapper 348 * Else get target set in options 349 * @type {Bool or String} 350 */ 351 target = (_.options.nav === true) ? _.parent : _.options.nav; 352 353 // Navigation wrapper 354 _.navWrapper = $('<div />', { 355 'class': o.navClass 356 }).appendTo(target); 357 358 // Setup variables 359 var nav = _.navWrapper, 360 item; 361 362 // Generate navigation items 363 for (var i = 0; i < _.slides.length; i++) { 364 item = $('<a />', { 365 'href': '#', 366 'class': o.navItemClass, 367 // Direction and distance -> Item index forward 368 'data-distance': i 369 }).appendTo(nav); 370 371 nav[i+1] = item; 372 } 373 374 // Setup variables 375 var navChildren = nav.children();
376 377 // Add navCurrentItemClass to the first navigation item 378 navChildren.eq(0).addClass(o.navCurrentItemClass); 379 380 // If centered option is true 381 if (o.navCenter) { 382 // Center bullet navigation 383 nav.css({ 384 'left': '50%', 385 'width': navChildren.outerWidth(true) * navChildren.length, 386 'margin-left': -nav.outerWidth(true)/2 387 }); 388 } 389 390 /** 391 * Controller 392 * On click in arrows or navigation, get direction and distance 393 * Then slide specified distance 394 */ 395 navChildren.on('click touchstart', function(e) { 396 // prevent normal behaviour 397 e.preventDefault(); 398 // Slide distance specified in data attribute 399 _.slide( $(this).data('distance'), true ); 400 }); 401 } 402 403 }; 404 405 /** 406 * Building arrows DOM 407 */ 408 Glide.prototype.arrows = function() { 409 410 // Cache this 411 var _ = this; 412 413 if (_.slides.length > 1) { 414 // Setup variables 415 var o = _.options, 416 /** 417 * Setting append target 418 * If option is true set default target, that is slider wrapper 419 * Else get target set in options 420 * @type {Bool or String} 421 */ 422 target = (_.options.arrows === true) ? _.parent : _.options.arrows; 423 424 // Arrows wrapper 425 _.arrowsWrapper = $('<div />', { 426 'class': o.arrowsWrapperClass 427 }).appendTo(target); 428 429 // Setup variables 430 var arrows = _.arrowsWrapper; 431 432 // Right arrow 433 arrows.right = $('<a />', { 434 'href': '#', 435 'class': o.arrowMainClass + ' ' + o.arrowRightClass, 436 // Direction and distance -> One forward 437 'data-distance': '1', 438 'html': o.arrowRightText 439 }).appendTo(arrows); 440 441 // Left arrow 442 arrows.left = $('<a />', { 443 'href': '#', 444 'class': o.arrowMainClass + ' ' + o.arrowLeftClass, 445 // Direction and distance -> One backward 446 'data-distance': '-1', 447 'html': o.arrowLeftText 448 }).appendTo(arrows); 449 450 /** 451 * Controller 452 * On click in arrows or navigation, get direction and distance 453 * Then slide specified distance 454 */ 455 arrows.children().on('click touchstart', function(e) { 456 // prevent normal behaviour 457 e.preventDefault(); 458 // Slide distance specified in data attribute 459 _.slide( $(this).data('distance'), false ); 460 }); 461 customize_arrow_class(1, 0); 462 } 463 464 }; 465 466 467 /** 468 * Slides change & animate logic 469 * @param {int} distance 470 * @param {bool} jump 471 * @param {function} callback 472 */ 473 var timerId; 474 Glide.prototype.slide = function(distance, jump, callback) { 475 // Cache this 476 var _ = this; 477 var end=false; 478 /** 479 * Stop autoplay 480 * Clearing timer 481 */ 482 _.pause(); 483 484 // Callbacks before slide change 485 _.options.beforeTransition.call(_); 486 487 // Setup variables 488 var currentSlide = (jump) ? 0 : _.currentSlide, 489 slidesLength = -(_.slides.length-1), 490 navCurrentClass = _.options.navCurrentItemClass, 491 slidesSpread = _.slides.spread; 492 /** 493 * Check if current slide is first and direction is previous, then go to last slide 494 * or current slide is last and direction is next, then go to the first slide 495 * else change current slide normally 496 */ 497 var lastSlide = false; 498 499 if ( currentSlide === 0 && distance === -1 ) { 500 currentSlide = slidesLength; 501 } else if ( currentSlide === slidesLength && distance === 1 ) { 502 currentSlide = 0; 503 } else { 504 currentSlide = currentSlide + (-distance); 505 } 506 customize_arrow_class(currentSlide, distance); 507 /** 508 * Crop to current slide. 509 * Mul slide width by current slide number. 510 */ 511 var translate = slidesSpread * currentSlide + 'px'; 512 // While CSS3 is supported 513 if(currentSlide===0&&distance===-1){ 514 $(".slides-list").removeClass("slides"); 515 _.wrapper.css({
516 '-webkit-transform': 'translate3d(' + (slidesSpread *(slidesLength)).toString() + 'px, 0px, 0px)', 517 '-moz-transform': 'translate3d(' + (slidesSpread *(slidesLength)).toString() + 'px, 0px, 0px)', 518 '-ms-transform': 'translate3d(' + (slidesSpread *(slidesLength)).toString() + 'px, 0px, 0px)', 519 '-o-transform': 'translate3d(' + (slidesSpread *(slidesLength)).toString() + 'px, 0px, 0px)', 520 'transform': 'translate3d(' + (slidesSpread *(slidesLength)).toString() + 'px, 0px, 0px)' 521 }); 522 setTimeout( 523 function() 524 { 525 $(".slides-list").addClass("slides"); 526 _.wrapper.css({ 527 '-webkit-transform': 'translate3d(' + (slidesSpread *(slidesLength+1)).toString() + 'px, 0px, 0px)', 528 '-moz-transform': 'translate3d(' + (slidesSpread *(slidesLength+1)).toString() + 'px, 0px, 0px)', 529 '-ms-transform': 'translate3d(' + (slidesSpread *(slidesLength+1)).toString() + 'px, 0px, 0px)', 530 '-o-transform': 'translate3d(' + (slidesSpread *(slidesLength+1)).toString() + 'px, 0px, 0px)', 531 'transform': 'translate3d(' + (slidesSpread *(slidesLength+1)).toString() + 'px, 0px, 0px)' 532 }); 533 _.currentSlide=slidesLength+1; 534 customize_arrow_class(_.currentSlide, 0); 535 }, 1); 536 } 537 else if(currentSlide===slidesLength&&distance===1){ 538 $(".slides-list").removeClass("slides"); 539 _.wrapper.css({ 540 '-webkit-transform': 'translate3d(0px, 0px, 0px)', 541 '-moz-transform': 'translate3d(0px, 0px, 0px)', 542 '-ms-transform': 'translate3d(0px, 0px, 0px)', 543 '-o-transform': 'translate3d(0px, 0px, 0px)', 544 'transform': 'translate3d(0px, 0px, 0px)' 545 }); 546 setTimeout( 547 function() 548 { 549 $(".slides-list").addClass("slides"); 550 _.wrapper.css({ 551 '-webkit-transform': 'translate3d(' + (-slidesSpread).toString() + 'px, 0px, 0px)', 552 '-moz-transform': 'translate3d(' + (-slidesSpread).toString() + 'px, 0px, 0px)', 553 '-ms-transform': 'translate3d(' + (-slidesSpread).toString() + 'px, 0px, 0px)', 554 '-o-transform': 'translate3d(' + (-slidesSpread).toString() + 'px, 0px, 0px)', 555 'transform': 'translate3d(' + (-slidesSpread).toString() + 'px, 0px, 0px)' 556 }); 557 _.currentSlide=-1; 558 customize_arrow_class(0, 0); 559 }, 100); 560 561 } 562 else 563 { 564 if (_.CSS3support) { 565 // Croping by increasing/decreasing slider wrapper translate 566 _.wrapper.css({ 567 '-webkit-transform': 'translate3d(' + translate + ', 0px, 0px)', 568 '-moz-transform': 'translate3d(' + translate + ', 0px, 0px)', 569 '-ms-transform': 'translate3d(' + translate + ', 0px, 0px)', 570 '-o-transform': 'translate3d(' + translate + ', 0px, 0px)', 571 'transform': 'translate3d(' + translate + ', 0px, 0px)' 572 }); 573 // Else use $.animate() 574 } else { 575 // Croping by increasing/decreasing slider wrapper margin 576 _.wrapper.stop() 577 .animate({ 'margin-left': translate }, _.options.animationTime); 578 } 579 _.currentSlide = currentSlide; 580 } 581 //alert(currentSlide+"|"+distance) 582 583 // Set to navigation item current class 584 if (_.options.nav && _.navWrapper) { 585 _.navWrapper.children() 586 .eq(-currentSlide) 587 .addClass(navCurrentClass) 588 .siblings() 589 .removeClass(navCurrentClass); 590 } 591 592 // Update current slide globaly 593 594 // Callbacks after slide change
595 _.options.afterTransition.call(_); 596 if ( (callback !== 'undefined') && (typeof callback === 'function') ) callback(); 597 /** 598 * Start autoplay 599 * After slide 600 */ 601 _.play(); 602 }; 603 604 /** 605 * Autoplay logic 606 * Setup counting 607 */ 608 Glide.prototype.play = function() { 609 610 // Cache this 611 var _ = this; 612 613 /** 614 * If autoplay turn on 615 * Slide one forward after a set time 616 */ 617 if (_.options.autoplay) { 618 _.auto = setInterval(function() { 619 _.slide(1, false); 620 }, _.options.autoplay); 621 } 622 623 }; 624 625 /** 626 * Autoplay pause 627 * Clear counting 628 */ 629 Glide.prototype.pause = function() { 630 631 // Cache this 632 var _ = this; 633 634 /** 635 * If autoplay turn on 636 * Clear interial 637 */ 638 if (_.options.autoplay) { 639 _.auto = clearInterval(_.auto); 640 } 641 642 }; 643 644 /** 645 * Change sildes on swipe event 646 */ 647 Glide.prototype.swipe = function() { 648 649 // Setup variables 650 var _ = this, 651 touch, 652 touchDistance, 653 touchStartX, 654 touchStartY, 655 touchEndX, 656 touchEndY, 657 touchHypotenuse, 658 touchCathetus, 659 touchSin, 660 MathPI = 180 / Math.PI, 661 subExSx, 662 subEySy, 663 powEX, 664 powEY; 665 666 /** 667 * Touch start 668 * @param {Object} e event 669 */ 670 _.parent.on('touchstart', function(e) { 671 // Cache event 672 touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0]; 673 674 // Get touch start points 675 touchStartX = touch.pageX; 676 touchStartY = touch.pageY; 677 }); 678 679 /** 680 * Touch move 681 * From swipe length segments calculate swipe angle 682 * @param {Obejct} e event 683 */ 684 _.parent.on('touchmove', function(e) { 685 // Cache event 686 touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0]; 687 688 // Get touch end points 689 touchEndX = touch.pageX; 690 touchEndY = touch.pageY; 691 692 // Calculate start, end points 693 subExSx = touchEndX - touchStartX; 694 subEySy = touchEndY - touchStartY; 695 // Bitwise subExSx pow 696 powEX = Math.abs( subExSx << 2 ); 697 // Bitwise subEySy pow 698 powEY = Math.abs( subEySy << 2 ); 699 700 // Calculate the length of the hypotenuse segment 701 touchHypotenuse = Math.sqrt( powEX + powEY ); 702 // Calculate the length of the cathetus segment 703 touchCathetus = Math.sqrt( powEY ); 704 // Calculate the sine of the angle 705 touchSin = Math.asin( touchCathetus/touchHypotenuse ); 706 707 // While touch angle is lower than 32 degrees, block vertical scroll 708 if( (touchSin * MathPI) < 32 ) e.preventDefault(); 709 }); 710 711 /** 712 * Touch end 713 * @param {Object} e event 714 */ 715 _.parent.on('touchend', function(e) { 716 // Cache event 717 touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0]; 718 719 // Calculate touch distance 720 touchDistance = touch.pageX - touchStartX; 721 722 // While touch is positive and greater than distance set in options 723 if ( touchDistance > _.options.touchDistance ) { 724 // Slide one backward 725 _.slide(-1); 726 // While touch is negative and lower than negative distance set in options 727 } else if ( touchDistance < -_.options.touchDistance) { 728 // Slide one forward 729 _.slide(1); 730 } 731 }); 732 733 }; 734 735 /** 736 * Initialize 737 * Get & set dimensions 738 * Set animation type 739 */ 740 Glide.prototype.init = function() { 741 // Cache this 742 var _ = this, 743 // Get sidebar width 744 sliderWidth = _.parent.width(); 745 // Get slide width 746 _.slides.spread = sliderWidth; 747 748 // Set wrapper width 749 _.wrapper.width(sliderWidth * _.slides.length); 750 // Set slide width 751 _.slides.width(_.slides.spread); 752 // If CSS3 Transition isn't supported switch CSS3support variable to false and use $.animate() 753 startAt(_); 754 if ( !isCssSupported("transition") || !isCssSupported("transform") ) _.CSS3support = false; 755 }; 756 function startAt(_) 757 { 758 $(".slides-list").removeClass("slides"); 759 _.wrapper.css({
760 '-webkit-transform': 'translate3d(' + (-_.slides.spread).toString() + 'px, 0px, 0px)', 761 '-moz-transform': 'translate3d(' + (-_.slides.spread).toString() + 'px, 0px, 0px)', 762 '-ms-transform': 'translate3d(' + (-_.slides.spread).toString() + 'px, 0px, 0px)', 763 '-o-transform': 'translate3d(' + (-_.slides.spread).toString() + 'px, 0px, 0px)', 764 'transform': 'translate3d(' + (-_.slides.spread).toString() + 'px, 0px, 0px)' 765 }); 766 setTimeout( 767 function() 768 { 769 $(".slides-list").addClass("slides"); 770 _.currentSlide=-1; 771 customize_arrow_class(0, 0); 772 }, 1); 773 } 774 /** 775 * Function to check css3 support 776 * @param {String} declaration name 777 * @return {Boolean} 778 */ 779 function isCssSupported(declaration) { 780 781 var isSupported = false, 782 prefixes = 'Khtml ms O Moz Webkit'.split(' '), 783 clone = document.createElement('div'), 784 declarationCapital = null; 785 786 declaration = declaration.toLowerCase(); 787 if (clone.style[declaration] !== undefined) isSupported = true; 788 if (isSupported === false) { 789 declarationCapital = declaration.charAt(0).toUpperCase() + declaration.substr(1); 790 for( var i = 0; i < prefixes.length; i++ ) { 791 if( clone.style[prefixes[i] + declarationCapital ] !== undefined ) { 792 isSupported = true; 793 break; 794 } 795 } 796 } 797 798 if (window.opera) { 799 if (window.opera.version() < 13) isSupported = false; 800 } 801 802 803 return isSupported; 804 805 } 806 function customize_arrow_class(currentSlide, distance) 807 { 808 var dist; 809 if(distance<0) dist=Math.abs(currentSlide)-distance; 810 else dist=Math.abs(currentSlide)+distance; 811 if($("ul.slides li:nth-child("+dist+") div").hasClass("light_banner")) 812 { 813 $("a.slider-arrow--right").removeClass("dark_arrow-right").addClass("light_arrow-right"); 814 $("a.slider-arrow--left").removeClass("dark_arrow-left").addClass("light_arrow-left"); 815 } 816 else 817 { 818 $("a.slider-arrow--right").removeClass("light_arrow-right").addClass("dark_arrow-right"); 819 $("a.slider-arrow--left").removeClass("light_arrow-left").addClass("dark_arrow-left"); 820 } 821 replaceArrows(dist); 822 return; 823 } 824 825 $.fn[name] = function(options) { 826 827 return this.each(function () { 828 if ( !$.data(this, 'api_' + name) ) { 829 $.data(this, 'api_' + name, 830 new Glide($(this), options) 831 ); 832 } 833 }); 834 835 }; 836 837})(jQuery, window, document);
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.