PageSourceSearch

http://www.arany-arfolyam.hu/js/kepvalto.js

js arany-arfolyam.hu collected 2026-09-25 07:43:02 UTC 45,204 bytes, 1,478 lines download raw bytes

1;(function($) {
2"use strict";
3
4var version = '2.1.6';
5
6$.fn.cycle = function( options ) {
7   
8    var o;
9    if ( this.length === 0 && !$.isReady ) {
10        o = { s: this.selector, c: this.context };
11        $.fn.cycle.log('requeuing slideshow (dom not ready)');
12        $(function() {
13            $( o.s, o.c ).cycle(options);
14        });
15        return this;
16    }
17
18    return this.each(function() {
19        var data, opts, shortName, val;
20        var container = $(this);
21        var log = $.fn.cycle.log;
22
23        if ( container.data('cycle.opts') )
24            return; 
25
26        if ( container.data('cycle-log') === false || 
27            ( options && options.log === false ) ||
28            ( opts && opts.log === false) ) {
29            log = $.noop;
30        }
31
32        log('--c2 init--');
33        data = container.data();
34        for (var p in data) {            
35            if (data.hasOwnProperty(p) && /^cycle[A-Z]+/.test(p) ) {
36                val = data[p];
37                shortName = p.match(/^cycle(.*)/)[1].replace(/^[A-Z]/, lowerCase);
38                log(shortName+':', val, '('+typeof val +')');
39                data[shortName] = val;
40            }
41        }
42
43        opts = $.extend( {}, $.fn.cycle.defaults, data, options || {});
44
45        opts.timeoutId = 0;
46        opts.paused = opts.paused || false; 
47        opts.container = container;
48        opts._maxZ = opts.maxZ;
49
50        opts.API = $.extend ( { _container: container }, $.fn.cycle.API );
51        opts.API.log = log;
52        opts.API.trigger = function( eventName, args ) {
53            opts.container.trigger( eventName, args );
54            return opts.API;
55        };
56
57        container.data( 'cycle.opts', opts );
58        container.data( 'cycle.API', opts.API );
59      
60        opts.API.trigger('cycle-bootstrap', [ opts, opts.API ]);
61
62        opts.API.addInitialSlides();
63        opts.API.preInitSlideshow();
64
65        if ( opts.slides.length )
66            opts.API.initSlideshow();
67    });
68};
69
70$.fn.cycle.API = {
71    opts: function() {
72        return this._container.data( 'cycle.opts' );
73    },
74    addInitialSlides: function() {
75        var opts = this.opts();
76        var slides = opts.slides;
77        opts.slideCount = 0;
78        opts.slides = $(); 
79        slides = slides.jquery ? slides : opts.container.find( slides );
80
81        if ( opts.random ) {
82            slides.sort(function() {return Math.random() - 0.5;});
83        }
84
85        opts.API.add( slides );
86    },
87
88    preInitSlideshow: function() {
89        var opts = this.opts();
90        opts.API.trigger('cycle-pre-initialize', [ opts ]);
91        var tx = $.fn.cycle.transitions[opts.fx];
92        if (tx && $.isFunction(tx.preInit))
93            tx.preInit( opts );
94        opts._preInitialized = true;
95    },
96
97    postInitSlideshow: function() {
98        var opts = this.opts();
99        opts.API.trigger('cycle-post-initialize', [ opts ]);
100        var tx = $.fn.cycle.transitions[opts.fx];
101        if (tx && $.isFunction(tx.postInit))
102            tx.postInit( opts );
103    },
104
105    initSlideshow: function() {
106        var opts = this.opts();
107        var pauseObj = opts.container;
108        var slideOpts;
109        opts.API.calcFirstSlide();
110
111        if ( opts.container.css('position') == 'static' )
112            opts.container.css('position', 'relative');
113
114        $(opts.slides[opts.currSlide]).css({
115            opacity: 1,
116            display: 'block',
117            visibility: 'visible'
118        });
119        opts.API.stackSlides( opts.slides[opts.currSlide], opts.slides[opts.nextSlide], !opts.reverse );
120
121        if ( opts.pauseOnHover ) {           
122            if ( opts.pauseOnHover !== true )
123                pauseObj = $( opts.pauseOnHover );
124
125            pauseObj.hover(
126                function(){ opts.API.pause( true ); }, 
127                function(){ opts.API.resume( true ); }
128            );
129        }
130
131        if ( opts.timeout ) {
132            slideOpts = opts.API.getSlideOpts( opts.currSlide );
133            opts.API.queueTransition( slideOpts, slideOpts.timeout + opts.delay );
134        }
135
136        opts._initialized = true;
137        opts.API.updateView( true );
138        opts.API.trigger('cycle-initialized', [ opts ]);
139        opts.API.postInitSlideshow();
140    },
141
142    pause: function( hover ) {
143        var opts = this.opts(),
144            slideOpts = opts.API.getSlideOpts(),
145            alreadyPaused = opts.hoverPaused || opts.paused;
146
147        if ( hover )
148            opts.hoverPaused = true; 
149        else
150            opts.paused = true;
151
152        if ( ! alreadyPaused ) {
153            opts.container.addClass('cycle-paused');
154            opts.API.trigger('cycle-paused', [ opts ]).log('cycle-paused');
155
156            if ( slideOpts.timeout ) {
157                clearTimeout( opts.timeoutId );
158                opts.timeoutId = 0;
159                
160                opts._remainingTimeout -= ( $.now() - opts._lastQueue );
161                if ( opts._remainingTimeout < 0 || isNaN(opts._remainingTimeout) )
162                    opts._remainingTimeout = undefined;
163            }
164        }
165    },
166
167    resume: function( hover ) {
168        var opts = this.opts(),
169            alreadyResumed = !opts.hoverPaused && !opts.paused,
170            remaining;
171
172        if ( hover )
173            opts.hoverPaused = false; 
174        else
175            opts.paused = false;
176
177    
178        if ( ! alreadyResumed ) {
179            opts.container.removeClass('cycle-paused');
180            if ( opts.slides.filter(':animated').length === 0 )
181                opts.API.queueTransition( opts.API.getSlideOpts(), opts._remainingTimeout );
182            opts.API.trigger('cycle-resumed', [ opts, opts._remainingTimeout ] ).log('cycle-resumed');
183        }
184    },
185
186    add: function( slides, prepend ) {
187        var opts = this.opts();
188        var oldSlideCount = opts.slideCount;
189        var startSlideshow = false;
190        var len;
191
192        if ( $.type(slides) == 'string')
193            slides = $.trim( slides );
194
195        $( slides ).each(function(i) {
196            var slideOpts;
197            var slide = $(this);
198
199            if ( prepend )
200                opts.container.prepend( slide );
201            else
202                opts.container.append( slide );
203
204            opts.slideCount++;
205            slideOpts = opts.API.buildSlideOpts( slide );
206
207            if ( prepend )
208                opts.slides = $( slide ).add( opts.slides );
209            else
210                opts.slides = opts.slides.add( slide );
211
212            opts.API.initSlide( slideOpts, slide, --opts._maxZ );
213
214            slide.data('cycle.opts', slideOpts);
215            opts.API.trigger('cycle-slide-added', [ opts, slideOpts, slide ]);
216        });
217
218        opts.API.updateView( true );
219
220        startSlideshow = opts._preInitialized && (oldSlideCount < 2 && opts.slideCount >= 1);
221        if ( startSlideshow ) {
222            if ( !opts._initialized )
223                opts.API.initSlideshow();
224            else if ( opts.timeout ) {
225                len = opts.slides.length;
226                opts.nextSlide = opts.reverse ? len - 1 : 1;
227                if ( !opts.timeoutId ) {
228                    opts.API.queueTransition( opts );
229                }
230            }
231        }
232    },
233
234    calcFirstSlide: function() {
235        var opts = this.opts();
236        var firstSlideIndex;
237        firstSlideIndex = parseInt( opts.startingSlide || 0, 10 );
238        if (firstSlideIndex >= opts.slides.length || firstSlideIndex < 0)
239            firstSlideIndex = 0;
240
241        opts.currSlide = firstSlideIndex;
242        if ( opts.reverse ) {
243            opts.nextSlide = firstSlideIndex - 1;
244            if (opts.nextSlide < 0)
245                opts.nextSlide = opts.slides.length - 1;
246        }
247        else {
248            opts.nextSlide = firstSlideIndex + 1;
249            if (opts.nextSlide == opts.slides.length)
250                opts.nextSlide = 0;
251        }
252    },
253
254    calcNextSlide: function() {
255        var opts = this.opts();
256        var roll;
257        if ( opts.reverse ) {
258            roll = (opts.nextSlide - 1) < 0;
259            opts.nextSlide = roll ? opts.slideCount - 1 : opts.nextSlide-1;
260            opts.currSlide = roll ? 0 : opts.nextSlide+1;
261        }
262        else {
263            roll = (opts.nextSlide + 1) == opts.slides.length;
264            opts.nextSlide = roll ? 0 : opts.nextSlide+1;
265            opts.currSlide = roll ? opts.slides.length-1 : opts.nextSlide-1;
266        }
267    },
268
269    calcTx: function( slideOpts, manual ) {
270        var opts = slideOpts;
271        var tx;
272
273        if ( opts._tempFx )
274            tx = $.fn.cycle.transitions[opts._tempFx];
275        else if ( manual && opts.manualFx )
276            tx = $.fn.cycle.transitions[opts.manualFx];
277
278        if ( !tx )
279            tx = $.fn.cycle.transitions[opts.fx];
280
281        opts._tempFx = null;
282        this.opts()._tempFx = null;
283
284        if (!tx) {
285            tx = $.fn.cycle.transitions.fade;
286            opts.API.log('Transition "' + opts.fx + '" not found.  Using fade.');
287        }
288        return tx;
289    },
290
291    prepareTx: function( manual, fwd ) {
292        var opts = this.opts();
293        var after, curr, next, slideOpts, tx;
294
295        if ( opts.slideCount < 2 ) {
296            opts.timeoutId = 0;
297            return;
298        }
299        if ( manual && ( !opts.busy || opts.manualTrump ) ) {
300            opts.API.stopTransition();
301            opts.busy = false;
302            clearTimeout(opts.timeoutId);
303            opts.timeoutId = 0;
304        }
305        if ( opts.busy )
306            return;
307        if ( opts.timeoutId === 0 && !manual )
308            return;
309
310        curr = opts.slides[opts.currSlide];
311        next = opts.slides[opts.nextSlide];
312        slideOpts = opts.API.getSlideOpts( opts.nextSlide );
313        tx = opts.API.calcTx( slideOpts, manual );
314
315        opts._tx = tx;
316
317        if ( manual && slideOpts.manualSpeed !== undefined )
318            slideOpts.speed = slideOpts.manualSpeed;
319
320        if ( opts.nextSlide != opts.currSlide && 
321            (manual || (!opts.paused && !opts.hoverPaused && opts.timeout) )) {
322
323            opts.API.trigger('cycle-before', [ slideOpts, curr, next, fwd ]);
324            if ( tx.before )
325                tx.before( slideOpts, curr, next, fwd );
326
327            after = function() {
328                opts.busy = false;
329                if (! opts.container.data( 'cycle.opts' ) )
330                    return;
331
332                if (tx.after)
333                    tx.after( slideOpts, curr, next, fwd );
334                opts.API.trigger('cycle-after', [ slideOpts, curr, next, fwd ]);
335                opts.API.queueTransition( slideOpts);
336                opts.API.updateView( true );
337            };
338
339            opts.busy = true;
340            if (tx.transition)
341                tx.transition(slideOpts, curr, next, fwd, after);
342            else
343                opts.API.doTransition( slideOpts, curr, next, fwd, after);
344
345            opts.API.calcNextSlide();
346            opts.API.updateView();
347        } else {
348            opts.API.queueTransition( slideOpts );
349        }
350    },
351
352    doTransition: function( slideOpts, currEl, nextEl, fwd, callback) {
353        var opts = slideOpts;
354        var curr = $(currEl), next = $(nextEl);
355        var fn = function() {
356            next.animate(opts.animIn || { opacity: 1}, opts.speed, opts.easeIn || opts.easing, callback);
357        };
358
359        next.css(opts.cssBefore || {});
360        curr.animate(opts.animOut || {}, opts.speed, opts.easeOut || opts.easing, function() {
361            curr.css(opts.cssAfter || {});
362            if (!opts.sync) {
363                fn();
364            }
365        });
366        if (opts.sync) {
367            fn();
368        }
369    },
370
371    queueTransition: function( slideOpts, specificTimeout ) {
372        var opts = this.opts();
373        var timeout = specificTimeout !== undefined ? specificTimeout : slideOpts.timeout;
374        if (opts.nextSlide === 0 && --opts.loop === 0) {
375            opts.API.log('terminating; loop=0');
376            opts.timeout = 0;
377            if ( timeout ) {
378                setTimeout(function() {
379                    opts.API.trigger('cycle-finished', [ opts ]);
380                }, timeout);
381            }
382            else {
383                opts.API.trigger('cycle-finished', [ opts ]);
384            }
385            opts.nextSlide = opts.currSlide;
386            return;
387        }
388        if ( opts.continueAuto !== undefined ) {
389            if ( opts.continueAuto === false || 
390                ($.isFunction(opts.continueAuto) && opts.continueAuto() === false )) {
391                opts.API.log('terminating automatic transitions');
392                opts.timeout = 0;
393                if ( opts.timeoutId )
394                    clearTimeout(opts.timeoutId);
395                return;
396            }
397        }
398        if ( timeout ) {
399            opts._lastQueue = $.now();
400            if ( specificTimeout === undefined )
401                opts._remainingTimeout = slideOpts.timeout;
402
403            if ( !opts.paused && ! opts.hoverPaused ) {
404                opts.timeoutId = setTimeout(function() { 
405                    opts.API.prepareTx( false, !opts.reverse ); 
406                }, timeout );
407            }
408        }
409    },
410
411    stopTransition: function() {
412        var opts = this.opts();
413        if ( opts.slides.filter(':animated').length ) {
414            opts.slides.stop(false, true);
415            opts.API.trigger('cycle-transition-stopped', [ opts ]);
416        }
417
418        if ( opts._tx && opts._tx.stopTransition )
419            opts._tx.stopTransition( opts );
420    },
421
422    advanceSlide: function( val ) {
423        var opts = this.opts();
424        clearTimeout(opts.timeoutId);
425        opts.timeoutId = 0;
426        opts.nextSlide = opts.currSlide + val;
427        
428        if (opts.nextSlide < 0)
429            opts.nextSlide = opts.slides.length - 1;
430        else if (opts.nextSlide >= opts.slides.length)
431            opts.nextSlide = 0;
432
433        opts.API.prepareTx( true,  val >= 0 );
434        return false;
435    },
436
437    buildSlideOpts: function( slide ) {
438        var opts = this.opts();
439        var val, shortName;
440        var slideOpts = slide.data() || {};
441        for (var p in slideOpts) {
442            if (slideOpts.hasOwnProperty(p) && /^cycle[A-Z]+/.test(p) ) {
443                val = slideOpts[p];
444                shortName = p.match(/^cycle(.*)/)[1].replace(/^[A-Z]/, lowerCase);
445                opts.API.log('['+(opts.slideCount-1)+']', shortName+':', val, '('+typeof val +')');
446                slideOpts[shortName] = val;
447            }
448        }
449
450        slideOpts = $.extend( {}, $.fn.cycle.defaults, opts, slideOpts );
451        slideOpts.slideNum = opts.slideCount;
452
453        try {
454            delete slideOpts.API;
455            delete slideOpts.slideCount;
456            delete slideOpts.currSlide;
457            delete slideOpts.nextSlide;
458            delete slideOpts.slides;
459        } catch(e) {
460        }
461        return slideOpts;
462    },
463
464    getSlideOpts: function( index ) {
465        var opts = this.opts();
466        if ( index === undefined )
467            index = opts.currSlide;
468
469        var slide = opts.slides[index];
470        var slideOpts = $(slide).data('cycle.opts');
471        return $.extend( {}, opts, slideOpts );
472    },
473    
474    initSlide: function( slideOpts, slide, suggestedZindex ) {
475        var opts = this.opts();
476        slide.css( slideOpts.slideCss || {} );
477        if ( suggestedZindex > 0 )
478            slide.css( 'zIndex', suggestedZindex );
479        if ( isNaN( slideOpts.speed ) )
480            slideOpts.speed = $.fx.speeds[slideOpts.speed] || $.fx.speeds._default;
481        if ( !slideOpts.sync )
482            slideOpts.speed = slideOpts.speed / 2;
483
484        slide.addClass( opts.slideClass );
485    },
486
487    updateView: function( isAfter, isDuring, forceEvent ) {
488        var opts = this.opts();
489        if ( !opts._initialized )
490            return;
491        var slideOpts = opts.API.getSlideOpts();
492        var currSlide = opts.slides[ opts.currSlide ];
493
494        if ( ! isAfter && isDuring !== true ) {
495            opts.API.trigger('cycle-update-view-before', [ opts, slideOpts, currSlide ]);
496            if ( opts.updateView < 0 )
497                return;
498        }
499
500        if ( opts.slideActiveClass ) {
501            opts.slides.removeClass( opts.slideActiveClass )
502                .eq( opts.currSlide ).addClass( opts.slideActiveClass );
503        }
504
505        if ( isAfter && opts.hideNonActive )
506            opts.slides.filter( ':not(.' + opts.slideActiveClass + ')' ).css('visibility', 'hidden');
507
508        if ( opts.updateView === 0 ) {
509            setTimeout(function() {
510                opts.API.trigger('cycle-update-view', [ opts, slideOpts, currSlide, isAfter ]);
511            }, slideOpts.speed / (opts.sync ? 2 : 1) );
512        }
513
514        if ( opts.updateView !== 0 )
515            opts.API.trigger('cycle-update-view', [ opts, slideOpts, currSlide, isAfter ]);
516        
517        if ( isAfter )
518            opts.API.trigger('cycle-update-view-after', [ opts, slideOpts, currSlide ]);
519    },
520
521    getComponent: function( name ) {
522        var opts = this.opts();
523        var selector = opts[name];
524        if (typeof selector === 'string') {
525            return (/^\s*[\>|\+|~]/).test( selector ) ? opts.container.find( selector ) : $( selector );
526        }
527        if (selector.jquery)
528            return selector;
529        
530        return $(selector);
531    },
532
533    stackSlides: function( curr, next, fwd ) {
534        var opts = this.opts();
535        if ( !curr ) {
536            curr = opts.slides[opts.currSlide];
537            next = opts.slides[opts.nextSlide];
538            fwd = !opts.reverse;
539        }
540
541        $(curr).css('zIndex', opts.maxZ);
542
543        var i;
544        var z = opts.maxZ - 2;
545        var len = opts.slideCount;
546        if (fwd) {
547            for ( i = opts.currSlide + 1; i < len; i++ )
548                $( opts.slides[i] ).css( 'zIndex', z-- );
549            for ( i = 0; i < opts.currSlide; i++ )
550                $( opts.slides[i] ).css( 'zIndex', z-- );
551        }
552        else {
553            for ( i = opts.currSlide - 1; i >= 0; i-- )
554                $( opts.slides[i] ).css( 'zIndex', z-- );
555            for ( i = len - 1; i > opts.currSlide; i-- )
556                $( opts.slides[i] ).css( 'zIndex', z-- );
557        }
558
559        $(next).css('zIndex', opts.maxZ - 1);
560    },
561
562    getSlideIndex: function( el ) {
563        return this.opts().slides.index( el );
564    }
565
566}; 
567$.fn.cycle.log = function log() {
568    if (window.console && console.log)
569        console.log('[cycle2] ' + Array.prototype.join.call(arguments, ' ') );
570};
571
572$.fn.cycle.version = function() { return 'Cycle2: ' + version; };
573
574function lowerCase(s) {
575    return (s || '').toLowerCase();
576}
577
578$.fn.cycle.transitions = {
579    custom: {
580    },
581    none: {
582        before: function( opts, curr, next, fwd ) {
583            opts.API.stackSlides( next, curr, fwd );
584            opts.cssBefore = { opacity: 1, visibility: 'visible', display: 'block' };
585        }
586    },
587    fade: {
588        before: function( opts, curr, next, fwd ) {
589            var css = opts.API.getSlideOpts( opts.nextSlide ).slideCss || {};
590            opts.API.stackSlides( curr, next, fwd );
591            opts.cssBefore = $.extend(css, { opacity: 0, visibility: 'visible', display: 'block' });
592            opts.animIn = { opacity: 1 };
593            opts.animOut = { opacity: 0 };
594        }
595    },
596    fadeout: {
597        before: function( opts , curr, next, fwd ) {
598            var css = opts.API.getSlideOpts( opts.nextSlide ).slideCss || {};
599            opts.API.stackSlides( curr, next, fwd );
600            opts.cssBefore = $.extend(css, { opacity: 1, visibility: 'visible', display: 'block' });
601            opts.animOut = { opacity: 0 };
602        }
603    },
604    scrollHorz: {
605        before: function( opts, curr, next, fwd ) {
606            opts.API.stackSlides( curr, next, fwd );
607            var w = opts.container.css('overflow','hidden').width();
608            opts.cssBefore = { left: fwd ? w : - w, top: 0, opacity: 1, visibility: 'visible', display: 'block' };
609            opts.cssAfter = { zIndex: opts._maxZ - 2, left: 0 };
610            opts.animIn = { left: 0 };
611            opts.animOut = { left: fwd ? -w : w };
612        }
613    }
614};
615
616$.fn.cycle.defaults = {
617    allowWrap:        true,
618    autoSelector:     '.cycle-slideshow[data-cycle-auto-init!=false]',
619    delay:            0,
620    easing:           null,
621    fx:              'fade',
622    hideNonActive:    true,
623    loop:             0,
624    manualFx:         undefined,
625    manualSpeed:      undefined,
626    manualTrump:      true,
627    maxZ:             100,
628    pauseOnHover:     false,
629    reverse:          false,
630    slideActiveClass: 'cycle-slide-active',
631    slideClass:       'cycle-slide',
632    slideCss:         { position: 'absolute', top: 0, left: 0 },
633    slides:          '> img',
634    speed:            500,
635    startingSlide:    0,
636    sync:             true,
637    timeout:          4000,
638    updateView:       0
639};
640
641$(document).ready(function() {
642    $( $.fn.cycle.defaults.autoSelector ).cycle();
643});
644
645})(jQuery);
646
647
648(function($) {
649"use strict";
650
651$.extend($.fn.cycle.defaults, {
652    autoHeight: 0, 
653    autoHeightSpeed: 250,
654    autoHeightEasing: null
655});    
656
657$(document).on( 'cycle-initialized', function( e, opts ) {
658    var autoHeight = opts.autoHeight;
659    var t = $.type( autoHeight );
660    var resizeThrottle = null;
661    var ratio;
662
663    if ( t !== 'string' && t !== 'number' )
664        return;
665
666
667    opts.container.on( 'cycle-slide-added cycle-slide-removed', initAutoHeight );
668    opts.container.on( 'cycle-destroyed', onDestroy );
669
670    if ( autoHeight == 'container' ) {
671        opts.container.on( 'cycle-before', onBefore );
672    }
673    else if ( t === 'string' && /\d+\:\d+/.test( autoHeight ) ) { 
674        ratio = autoHeight.match(/(\d+)\:(\d+)/);
675        ratio = ratio[1] / ratio[2];
676        opts._autoHeightRatio = ratio;
677    }
678
679
680    if ( t !== 'number' ) {
681        opts._autoHeightOnResize = function () {
682            clearTimeout( resizeThrottle );
683            resizeThrottle = setTimeout( onResize, 50 );
684        };
685
686        $(window).on( 'resize orientationchange', opts._autoHeightOnResize );
687    }
688
689    setTimeout( onResize, 30 );
690
691    function onResize() {
692        initAutoHeight( e, opts );
693    }
694});
695
696function initAutoHeight( e, opts ) {
697    var clone, height, sentinelIndex;
698    var autoHeight = opts.autoHeight;
699
700    if ( autoHeight == 'container' ) {
701        height = $( opts.slides[ opts.currSlide ] ).outerHeight();
702        opts.container.height( height );
703    }
704    else if ( opts._autoHeightRatio ) { 
705        opts.container.height( opts.container.width() / opts._autoHeightRatio );
706    }
707    else if ( autoHeight === 'calc' || ( $.type( autoHeight ) == 'number' && autoHeight >= 0 ) ) {
708        if ( autoHeight === 'calc' )
709            sentinelIndex = calcSentinelIndex( e, opts );
710        else if ( autoHeight >= opts.slides.length )
711            sentinelIndex = 0;
712        else 
713            sentinelIndex = autoHeight;
714
715        if ( sentinelIndex == opts._sentinelIndex )
716            return;
717
718        opts._sentinelIndex = sentinelIndex;
719        if ( opts._sentinel )
720            opts._sentinel.remove();
721
722        clone = $( opts.slides[ sentinelIndex ].cloneNode(true) );
723        
724        clone.removeAttr( 'id name rel' ).find( '[id],[name],[rel]' ).removeAttr( 'id name rel' );
725
726        clone.css({
727            position: 'static',
728            visibility: 'hidden',
729            display: 'block'
730        }).prependTo( opts.container ).addClass('cycle-sentinel cycle-slide').removeClass('cycle-slide-active');
731        clone.find( '*' ).css( 'visibility', 'hidden' );
732
733        opts._sentinel = clone;
734    }
735}    
736
737function calcSentinelIndex( e, opts ) {
738    var index = 0, max = -1;
739
740    opts.slides.each(function(i) {
741        var h = $(this).height();
742        if ( h > max ) {
743            max = h;
744            index = i;
745        }
746    });
747    return index;
748}
749
750function onBefore( e, opts, outgoing, incoming, forward ) {
751    var h = $(incoming).outerHeight();
752    opts.container.animate( { height: h }, opts.autoHeightSpeed, opts.autoHeightEasing );
753}
754
755function onDestroy( e, opts ) {
756    if ( opts._autoHeightOnResize ) {
757        $(window).off( 'resize orientationchange', opts._autoHeightOnResize );
758        opts._autoHeightOnResize = null;
759    }
760    opts.container.off( 'cycle-slide-added cycle-slide-removed', initAutoHeight );
761    opts.container.off( 'cycle-destroyed', onDestroy );
762    opts.container.off( 'cycle-before', onBefore );
763
764    if ( opts._sentinel ) {
765        opts._sentinel.remove();
766        opts._sentinel = null;
767    }
768}
769
770})(jQuery);
771
772(function($) {
773"use strict";
774
775$.extend($.fn.cycle.defaults, {
776    caption:          '> .cycle-caption',
777    captionTemplate:  '{{slideNum}} / {{slideCount}}',
778    overlay:          '> .cycle-overlay',
779    overlayTemplate:  '<div>{{title}}</div><div>{{desc}}</div>',
780    captionModule:    'caption'
781});    
782
783$(document).on( 'cycle-update-view', function( e, opts, slideOpts, currSlide ) {
784    if ( opts.captionModule !== 'caption' )
785        return;
786    var el;
787    $.each(['caption','overlay'], function() {
788        var name = this; 
789        var template = slideOpts[name+'Template'];
790        var el = opts.API.getComponent( name );
791        if( el.length && template ) {
792            el.html( opts.API.tmpl( template, slideOpts, opts, currSlide ) );
793            el.show();
794        }
795        else {
796            el.hide();
797        }
798    });
799});
800
801$(document).on( 'cycle-destroyed', function( e, opts ) {
802    var el;
803    $.each(['caption','overlay'], function() {
804        var name = this, template = opts[name+'Template'];
805        if ( opts[name] && template ) {
806            el = opts.API.getComponent( 'caption' );
807            el.empty();
808        }
809    });
810});
811
812})(jQuery);
813
814(function($) {
815"use strict";
816
817var c2 = $.fn.cycle;
818
819$.fn.cycle = function( options ) {
820    var cmd, cmdFn, opts;
821    var args = $.makeArray( arguments );
822
823    if ( $.type( options ) == 'number' ) {
824        return this.cycle( 'goto', options );
825    }
826
827    if ( $.type( options ) == 'string' ) {
828        return this.each(function() {
829            var cmdArgs;
830            cmd = options;
831            opts = $(this).data('cycle.opts');
832
833            if ( opts === undefined ) {
834                c2.log('slideshow must be initialized before sending commands; "' + cmd + '" ignored');
835                return;
836            }
837            else {
838                cmd = cmd == 'goto' ? 'jump' : cmd; 
839                cmdFn = opts.API[ cmd ];
840                if ( $.isFunction( cmdFn )) {
841                    cmdArgs = $.makeArray( args );
842                    cmdArgs.shift();
843                    return cmdFn.apply( opts.API, cmdArgs );
844                }
845                else {
846                    c2.log( 'unknown command: ', cmd );
847                }
848            }
849        });
850    }
851    else {
852        return c2.apply( this, arguments );
853    }
854};
855
856$.extend( $.fn.cycle, c2 );
857
858$.extend( c2.API, {
859    next: function() {
860        var opts = this.opts();
861        if ( opts.busy && ! opts.manualTrump )
862            return;
863
864        var count = opts.reverse ? -1 : 1;
865        if ( opts.allowWrap === false && ( opts.currSlide + count ) >= opts.slideCount )
866            return;
867
868        opts.API.advanceSlide( count );
869        opts.API.trigger('cycle-next', [ opts ]).log('cycle-next');
870    },
871
872    prev: function() {
873        var opts = this.opts();
874        if ( opts.busy && ! opts.manualTrump )
875            return;
876        var count = opts.reverse ? 1 : -1;
877        if ( opts.allowWrap === false && ( opts.currSlide + count ) < 0 )
878            return;
879
880        opts.API.advanceSlide( count );
881        opts.API.trigger('cycle-prev', [ opts ]).log('cycle-prev');
882    },
883
884    destroy: function() {
885        this.stop(); 
886
887        var opts = this.opts();
888        var clean = $.isFunction( $._data ) ? $._data : $.noop; 
889        clearTimeout(opts.timeoutId);
890        opts.timeoutId = 0;
891        opts.API.stop();
892        opts.API.trigger( 'cycle-destroyed', [ opts ] ).log('cycle-destroyed');
893        opts.container.removeData();
894        clean( opts.container[0], 'parsedAttrs', false );
895
896        if ( ! opts.retainStylesOnDestroy ) {
897            opts.container.removeAttr( 'style' );
898            opts.slides.removeAttr( 'style' );
899            opts.slides.removeClass( opts.slideActiveClass );
900        }
901        opts.slides.each(function() {
902            var slide = $(this);
903            slide.removeData();
904            slide.removeClass( opts.slideClass );
905            clean( this, 'parsedAttrs', false );
906        });
907    },
908
909    jump: function( index, fx ) {
910        var fwd;
911        var opts = this.opts();
912        if ( opts.busy && ! opts.manualTrump )
913            return;
914        var num = parseInt( index, 10 );
915        if (isNaN(num) || num < 0 || num >= opts.slides.length) {
916            opts.API.log('goto: invalid slide index: ' + num);
917            return;
918        }
919        if (num == opts.currSlide) {
920            opts.API.log('goto: skipping, already on slide', num);
921            return;
922        }
923        opts.nextSlide = num;
924        clearTimeout(opts.timeoutId);
925        opts.timeoutId = 0;
926        opts.API.log('goto: ', num, ' (zero-index)');
927        fwd = opts.currSlide < opts.nextSlide;
928        opts._tempFx = fx;
929        opts.API.prepareTx( true, fwd );
930    },
931
932    stop: function() {
933        var opts = this.opts();
934        var pauseObj = opts.container;
935        clearTimeout(opts.timeoutId);
936        opts.timeoutId = 0;
937        opts.API.stopTransition();
938        if ( opts.pauseOnHover ) {
939            if ( opts.pauseOnHover !== true )
940                pauseObj = $( opts.pauseOnHover );
941            pauseObj.off('mouseenter mouseleave');
942        }
943        opts.API.trigger('cycle-stopped', [ opts ]).log('cycle-stopped');
944    },
945
946    reinit: function() {
947        var opts = this.opts();
948        opts.API.destroy();
949        opts.container.cycle();
950    },
951
952    remove: function( index ) {
953        var opts = this.opts();
954        var slide, slideToRemove, slides = [], slideNum = 1;
955        for ( var i=0; i < opts.slides.length; i++ ) {
956            slide = opts.slides[i];
957            if ( i == index ) {
958                slideToRemove = slide;
959            }
960            else {
961                slides.push( slide );
962                $( slide ).data('cycle.opts').slideNum = slideNum;
963                slideNum++;
964            }
965        }
966        if ( slideToRemove ) {
967            opts.slides = $( slides );
968            opts.slideCount--;
969            $( slideToRemove ).remove();
970            if (index == opts.currSlide)
971                opts.API.advanceSlide( 1 );
972            else if ( index < opts.currSlide )
973                opts.currSlide--;
974            else
975                opts.currSlide++;
976
977            opts.API.trigger('cycle-slide-removed', [ opts, index, slideToRemove ]).log('cycle-slide-removed');
978            opts.API.updateView();
979        }
980    }
981
982});
983
984$(document).on('click.cycle', '[data-cycle-cmd]', function(e) {
985    e.preventDefault();
986    var el = $(this);
987    var command = el.data('cycle-cmd');
988    var context = el.data('cycle-context') || '.cycle-slideshow';
989    $(context).cycle(command, el.data('cycle-arg'));
990});
991
992
993})(jQuery);
994
995(function($) {
996"use strict";
997
998$(document).on( 'cycle-pre-initialize', function( e, opts ) {
999    onHashChange( opts, true );
1000
1001    opts._onHashChange = function() {
1002        onHashChange( opts, false );
1003    };
1004
1005    $( window ).on( 'hashchange', opts._onHashChange);
1006});
1007
1008$(document).on( 'cycle-update-view', function( e, opts, slideOpts ) {
1009    if ( slideOpts.hash && ( '#' + slideOpts.hash ) != window.location.hash ) {
1010        opts._hashFence = true;
1011        window.location.hash = slideOpts.hash;
1012    }
1013});
1014
1015$(document).on( 'cycle-destroyed', function( e, opts) {
1016    if ( opts._onHashChange ) {
1017        $( window ).off( 'hashchange', opts._onHashChange );
1018    }
1019});
1020
1021function onHashChange( opts, setStartingSlide ) {
1022    var hash;
1023    if ( opts._hashFence ) {
1024        opts._hashFence = false;
1025        return;
1026    }
1027    
1028    hash = window.location.hash.substring(1);
1029
1030    opts.slides.each(function(i) {
1031        if ( $(this).data( 'cycle-hash' ) == hash ) {
1032            if ( setStartingSlide === true ) {
1033                opts.startingSlide = i;
1034            }
1035            else {
1036                var fwd = opts.currSlide < i;
1037                opts.nextSlide = i;
1038                opts.API.prepareTx( true, fwd );
1039            }
1040            return false;
1041        }
1042    });
1043}
1044
1045})(jQuery);
1046
1047(function($) {
1048"use strict";
1049
1050$.extend($.fn.cycle.defaults, {
1051    loader: false
1052});
1053
1054$(document).on( 'cycle-bootstrap', function( e, opts ) {
1055    var addFn;
1056
1057    if ( !opts.loader )
1058        return;
1059
1060    addFn = opts.API.add;
1061    opts.API.add = add;
1062
1063    function add( slides, prepend ) {
1064        var slideArr = [];
1065        if ( $.type( slides ) == 'string' )
1066            slides = $.trim( slides );
1067        else if ( $.type( slides) === 'array' ) {
1068            for (var i=0; i < slides.length; i++ )
1069                slides[i] = $(slides[i])[0];
1070        }
1071
1072        slides = $( slides );
1073        var slideCount = slides.length;
1074
1075        if ( ! slideCount )
1076            return;
1077
1078        slides.css('visibility','hidden').appendTo('body').each(function(i) {
1079            var count = 0;
1080            var slide = $(this);
1081            var images = slide.is('img') ? slide : slide.find('img');
1082            slide.data('index', i);
1083
1084            images = images.filter(':not(.cycle-loader-ignore)').filter(':not([src=""])');
1085            if ( ! images.length ) {
1086                --slideCount;
1087                slideArr.push( slide );
1088                return;
1089            }
1090
1091            count = images.length;
1092            images.each(function() {
1093                if ( this.complete ) {
1094                    imageLoaded();
1095                }
1096                else {
1097                    $(this).load(function() {
1098                        imageLoaded();
1099                    }).on("error", function() {
1100                        if ( --count === 0 ) {
1101                            opts.API.log('slide skipped; img not loaded:', this.src);
1102                            if ( --slideCount === 0 && opts.loader == 'wait') {
1103                                addFn.apply( opts.API, [ slideArr, prepend ] );
1104                            }
1105                        }
1106                    });
1107                }
1108            });
1109
1110            function imageLoaded() {
1111                if ( --count === 0 ) {
1112                    --slideCount;
1113                    addSlide( slide );
1114                }
1115            }
1116        });
1117
1118        if ( slideCount )
1119            opts.container.addClass('cycle-loading');
1120        
1121
1122        function addSlide( slide ) {
1123            var curr;
1124            if ( opts.loader == 'wait' ) {
1125                slideArr.push( slide );
1126                if ( slideCount === 0 ) {
1127                    slideArr.sort( sorter );
1128                    addFn.apply( opts.API, [ slideArr, prepend ] );
1129                    opts.container.removeClass('cycle-loading');
1130                }
1131            }
1132            else {
1133                curr = $(opts.slides[opts.currSlide]);
1134                addFn.apply( opts.API, [ slide, prepend ] );
1135                curr.show();
1136                opts.container.removeClass('cycle-loading');
1137            }
1138        }
1139
1140        function sorter(a, b) {
1141            return a.data('index') - b.data('index');
1142        }
1143    }
1144});
1145
1146})(jQuery);
1147
1148(function($) {
1149"use strict";
1150
1151$.extend($.fn.cycle.defaults, {
1152    pager:            '> .cycle-pager',
1153    pagerActiveClass: 'cycle-pager-active',
1154    pagerEvent:       'click.cycle',
1155    pagerEventBubble: undefined,
1156    pagerTemplate:    '<span>&bull;</span>'
1157});
1158
1159$(document).on( 'cycle-bootstrap', function( e, opts, API ) {
1160    API.buildPagerLink = buildPagerLink;
1161});
1162
1163$(document).on( 'cycle-slide-added', function( e, opts, slideOpts, slideAdded ) {
1164    if ( opts.pager ) {
1165        opts.API.buildPagerLink ( opts, slideOpts, slideAdded );
1166        opts.API.page = page;
1167    }
1168});
1169
1170$(document).on( 'cycle-slide-removed', function( e, opts, index, slideRemoved ) {
1171    if ( opts.pager ) {
1172        var pagers = opts.API.getComponent( 'pager' );
1173        pagers.each(function() {
1174            var pager = $(this);
1175            $( pager.children()[index] ).remove();
1176        });
1177    }
1178});
1179
1180$(document).on( 'cycle-update-view', function( e, opts, slideOpts ) {
1181    var pagers;
1182
1183    if ( opts.pager ) {
1184        pagers = opts.API.getComponent( 'pager' );
1185        pagers.each(function() {
1186           $(this).children().removeClass( opts.pagerActiveClass )
1187            .eq( opts.currSlide ).addClass( opts.pagerActiveClass );
1188        });
1189    }
1190});
1191
1192$(document).on( 'cycle-destroyed', function( e, opts ) {
1193    var pager = opts.API.getComponent( 'pager' );
1194
1195    if ( pager ) {
1196        pager.children().off( opts.pagerEvent ); 
1197        if ( opts.pagerTemplate )
1198            pager.empty();
1199    }
1200});
1201
1202function buildPagerLink( opts, slideOpts, slide ) {
1203    var pagerLink;
1204    var pagers = opts.API.getComponent( 'pager' );
1205    pagers.each(function() {
1206        var pager = $(this);
1207        if ( slideOpts.pagerTemplate ) {
1208            var markup = opts.API.tmpl( slideOpts.pagerTemplate, slideOpts, opts, slide[0] );
1209            pagerLink = $( markup ).appendTo( pager );
1210        }
1211        else {
1212            pagerLink = pager.children().eq( opts.slideCount - 1 );
1213        }
1214        pagerLink.on( opts.pagerEvent, function(e) {
1215            if ( ! opts.pagerEventBubble )
1216                e.preventDefault();
1217            opts.API.page( pager, e.currentTarget);
1218        });
1219    });
1220}
1221
1222function page( pager, target ) {
1223    var opts = this.opts();
1224    if ( opts.busy && ! opts.manualTrump )
1225        return;
1226
1227    var index = pager.children().index( target );
1228    var nextSlide = index;
1229    var fwd = opts.currSlide < nextSlide;
1230    if (opts.currSlide == nextSlide) {
1231        return; 
1232    }
1233    opts.nextSlide = nextSlide;
1234    opts._tempFx = opts.pagerFx;
1235    opts.API.prepareTx( true, fwd );
1236    opts.API.trigger('cycle-pager-activated', [opts, pager, target ]);
1237}
1238
1239})(jQuery);
1240
1241(function($) {
1242"use strict";
1243
1244$.extend($.fn.cycle.defaults, {
1245    next:           '> .cycle-next',
1246    nextEvent:      'click.cycle',
1247    disabledClass:  'disabled',
1248    prev:           '> .cycle-prev',
1249    prevEvent:      'click.cycle',
1250    swipe:          false
1251});
1252
1253$(document).on( 'cycle-initialized', function( e, opts ) {
1254    opts.API.getComponent( 'next' ).on( opts.nextEvent, function(e) {
1255        e.preventDefault();
1256        opts.API.next();
1257    });
1258
1259    opts.API.getComponent( 'prev' ).on( opts.prevEvent, function(e) {
1260        e.preventDefault();
1261        opts.API.prev();
1262    });
1263
1264    if ( opts.swipe ) {
1265        var nextEvent = opts.swipeVert ? 'swipeUp.cycle' : 'swipeLeft.cycle swipeleft.cycle';
1266        var prevEvent = opts.swipeVert ? 'swipeDown.cycle' : 'swipeRight.cycle swiperight.cycle';
1267        opts.container.on( nextEvent, function(e) {
1268            opts._tempFx = opts.swipeFx;
1269            opts.API.next();
1270        });
1271        opts.container.on( prevEvent, function() {
1272            opts._tempFx = opts.swipeFx;
1273            opts.API.prev();
1274        });
1275    }
1276});
1277
1278$(document).on( 'cycle-update-view', function( e, opts, slideOpts, currSlide ) {
1279    if ( opts.allowWrap )
1280        return;
1281
1282    var cls = opts.disabledClass;
1283    var next = opts.API.getComponent( 'next' );
1284    var prev = opts.API.getComponent( 'prev' );
1285    var prevBoundry = opts._prevBoundry || 0;
1286    var nextBoundry = (opts._nextBoundry !== undefined)?opts._nextBoundry:opts.slideCount - 1;
1287
1288    if ( opts.currSlide == nextBoundry )
1289        next.addClass( cls ).prop( 'disabled', true );
1290    else
1291        next.removeClass( cls ).prop( 'disabled', false );
1292
1293    if ( opts.currSlide === prevBoundry )
1294        prev.addClass( cls ).prop( 'disabled', true );
1295    else
1296        prev.removeClass( cls ).prop( 'disabled', false );
1297});
1298
1299
1300$(document).on( 'cycle-destroyed', function( e, opts ) {
1301    opts.API.getComponent( 'prev' ).off( opts.nextEvent );
1302    opts.API.getComponent( 'next' ).off( opts.prevEvent );
1303    opts.container.off( 'swipeleft.cycle swiperight.cycle swipeLeft.cycle swipeRight.cycle swipeUp.cycle swipeDown.cycle' );
1304});
1305
1306})(jQuery);
1307
1308(function($) {
1309"use strict";
1310
1311$.extend($.fn.cycle.defaults, {
1312    progressive: false
1313});
1314
1315$(document).on( 'cycle-pre-initialize', function( e, opts ) {
1316    if ( !opts.progressive )
1317        return;
1318
1319    var API = opts.API;
1320    var nextFn = API.next;
1321    var prevFn = API.prev;
1322    var prepareTxFn = API.prepareTx;
1323    var type = $.type( opts.progressive );
1324    var slides, scriptEl;
1325
1326    if ( type == 'array' ) {
1327        slides = opts.progressive;
1328    }
1329    else if ($.isFunction( opts.progressive ) ) {
1330        slides = opts.progressive( opts );
1331    }
1332    else if ( type == 'string' ) {
1333        scriptEl = $( opts.progressive );
1334        slides = $.trim( scriptEl.html() );
1335        if ( !slides )
1336            return;
1337      
1338        if ( /^(\[)/.test( slides ) ) {
1339            try {
1340                slides = $.parseJSON( slides );
1341            }
1342            catch(err) {
1343                API.log( 'error parsing progressive slides', err );
1344                return;
1345            }
1346        }
1347        else {
1348
1349            slides = slides.split( new RegExp( scriptEl.data('cycle-split') || '\n') );
1350            
1351
1352            if ( ! slides[ slides.length - 1 ] )
1353                slides.pop();
1354        }
1355    }
1356
1357
1358
1359    if ( prepareTxFn ) {
1360        API.prepareTx = function( manual, fwd ) {
1361            var index, slide;
1362
1363            if ( manual || slides.length === 0 ) {
1364                prepareTxFn.apply( opts.API, [ manual, fwd ] );
1365                return;
1366            }
1367
1368            if ( fwd && opts.currSlide == ( opts.slideCount-1) ) {
1369                slide = slides[ 0 ];
1370                slides = slides.slice( 1 );
1371                opts.container.one('cycle-slide-added', function(e, opts ) {
1372                    setTimeout(function() {
1373                        opts.API.advanceSlide( 1 );
1374                    },50);
1375                });
1376                opts.API.add( slide );
1377            }
1378            else if ( !fwd && opts.currSlide === 0 ) {
1379                index = slides.length-1;
1380                slide = slides[ index ];
1381                slides = slides.slice( 0, index );
1382                opts.container.one('cycle-slide-added', function(e, opts ) {
1383                    setTimeout(function() {
1384                        opts.currSlide = 1;
1385                        opts.API.advanceSlide( -1 );
1386                    },50);
1387                });
1388                opts.API.add( slide, true );
1389            }
1390            else {
1391                prepareTxFn.apply( opts.API, [ manual, fwd ] );
1392            }
1393        };
1394    }
1395
1396    if ( nextFn ) {
1397        API.next = function() {
1398            var opts = this.opts();
1399            if ( slides.length && opts.currSlide == ( opts.slideCount - 1 ) ) {
1400                var slide = slides[ 0 ];
1401                slides = slides.slice( 1 );
1402                opts.container.one('cycle-slide-added', function(e, opts ) {
1403                    nextFn.apply( opts.API );
1404                    opts.container.removeClass('cycle-loading');
1405                });
1406                opts.container.addClass('cycle-loading');
1407                opts.API.add( slide );
1408            }
1409            else {
1410                nextFn.apply( opts.API );    
1411            }
1412        };
1413    }
1414    
1415    if ( prevFn ) {
1416        API.prev = function() {
1417            var opts = this.opts();
1418            if ( slides.length && opts.currSlide === 0 ) {
1419                var index = slides.length-1;
1420                var slide = slides[ index ];
1421                slides = slides.slice( 0, index );
1422                opts.container.one('cycle-slide-added', function(e, opts ) {
1423                    opts.currSlide = 1;
1424                    opts.API.advanceSlide( -1 );
1425                    opts.container.removeClass('cycle-loading');
1426                });
1427                opts.container.addClass('cycle-loading');
1428                opts.API.add( slide, true );
1429            }
1430            else {
1431                prevFn.apply( opts.API );
1432            }
1433        };
1434    }
1435});
1436
1437})(jQuery);
1438
1439
1440(function($) {
1441"use strict";
1442
1443$.extend($.fn.cycle.defaults, {
1444    tmplRegex: '{{((.)?.*?)}}'
1445});
1446
1447$.extend($.fn.cycle.API, {
1448    tmpl: function( str, opts ) {
1449        var regex = new RegExp( opts.tmplRegex || $.fn.cycle.defaults.tmplRegex, 'g' );
1450        var args = $.makeArray( arguments );
1451        args.shift();
1452        return str.replace(regex, function(_, str) {
1453            var i, j, obj, prop, names = str.split('.');
1454            for (i=0; i < args.length; i++) {
1455                obj = args[i];
1456                if ( ! obj )
1457                    continue;
1458                if (names.length > 1) {
1459                    prop = obj;
1460                    for (j=0; j < names.length; j++) {
1461                        obj = prop;
1462                        prop = prop[ names[j] ] || str;
1463                    }
1464                } else {
1465                    prop = obj[str];
1466                }
1467
1468                if ($.isFunction(prop))
1469                    return prop.apply(obj, args);
1470                if (prop !== undefined && prop !== null && prop != str)
1471                    return prop;
1472            }
1473            return str;
1474        });
1475    }
1476});    
1477
1478})(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.