PageSourceSearch

https://www.gemos.ru/local/templates/furniture_dark-blue/js/jquery.glide.js

js gemos.ru collected 2026-10-04 22:36:50 UTC 27,506 bytes, 837 lines download raw bytes

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.