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>•</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.