vendor: 24,864 bytes, lines 1-1058
1/*! 2 Colorbox 1.6.4 3 license: MIT 4 http://www.jacklmoore.com/colorbox 5*/ 6(function ($, document, window) { 7 var 8 defaults = { 9 html: false, 10 photo: false, 11 iframe: false, 12 inline: false, 13 14 transition: "elastic", 15 speed: 300, 16 fadeOut: 300, 17 width: false, 18 initialWidth: "600", 19 innerWidth: false, 20 maxWidth: false, 21 height: false, 22 initialHeight: "450", 23 innerHeight: false, 24 maxHeight: false, 25 scalePhotos: true, 26 scrolling: true, 27 opacity: 0.9, 28 preloading: true, 29 className: false, 30 overlayClose: true, 31 escKey: true, 32 arrowKey: true, 33 top: false, 34 bottom: false, 35 left: false, 36 right: false, 37 fixed: false, 38 data: undefined, 39 closeButton: true, 40 fastIframe: true, 41 open: false, 42 reposition: true, 43 loop: true, 44 slideshow: false, 45 slideshowAuto: true, 46 slideshowSpeed: 2500, 47 slideshowStart: "start slideshow", 48 slideshowStop: "stop slideshow", 49 photoRegex: /\.(gif|png|jp(e|g|eg)|bmp|ico|webp|jxr|svg)((#|\?).*)?$/i, 50 51 retinaImage: false, 52 retinaUrl: false, 53 retinaSuffix: '@2x.$1', 54 55 current: "image {current} of {total}", 56 previous: "previous", 57 next: "next", 58 close: "close", 59 xhrError: "This content failed to load.", 60 imgError: "This image failed to load.", 61 62 returnFocus: true, 63 trapFocus: true, 64 65 onOpen: false, 66 onLoad: false, 67 onComplete: false, 68 onCleanup: false, 69 onClosing: false, 70 onClosed: false, 71 72 rel: function() { 73 return this.rel; 74 }, 75 href: function() { 76 return $(this).attr('href'); 77 }, 78 title: function() { 79 return this.title; 80 }, 81 createImg: function() { 82 var img = new Image(); 83 var attrs = $(this).data('cbox-img-attrs'); 84 85 if (typeof attrs === 'object') { 86 $.each(attrs, function(key, val){ 87 img[key] = val; 88 }); 89 } 90 91 return img; 92 }, 93 createIframe: function() { 94 var iframe = document.createElement('iframe'); 95 var attrs = $(this).data('cbox-iframe-attrs'); 96 97 if (typeof attrs === 'object') { 98 $.each(attrs, function(key, val){ 99 iframe[key] = val; 100 }); 101 } 102 103 if ('frameBorder' in iframe) { 104 iframe.frameBorder = 0; 105 } 106 if ('allowTransparency' in iframe) { 107 iframe.allowTransparency = "true"; 108 } 109 iframe.name = (new Date()).getTime(); 110 iframe.allowFullscreen = true; 111 112 return iframe; 113 } 114 }, 115 116 colorbox = 'ypmcolorbox', 117 prefix = 'ypmcbox', 118 boxElement = prefix + 'Element', 119 120 event_open = prefix + '_open', 121 event_load = prefix + '_load', 122 event_complete = prefix + '_complete', 123 event_cleanup = prefix + '_cleanup', 124 event_closing = prefix + '_closing', 125 event_closed = prefix + '_closed', 126 event_purge = prefix + '_purge', 127 128 $overlay, 129 $box, 130 $wrap, 131 $content, 132 $topBorder, 133 $leftBorder, 134 $rightBorder, 135 $bottomBorder, 136 $related, 137 $window, 138 $loaded, 139 $loadingBay, 140 $loadingOverlay, 141 $title, 142 $current, 143 $slideshow, 144 $next, 145 $prev, 146 $close, 147 $groupControls, 148 $events = $('<a/>'), 149 150 settings, 151 interfaceHeight, 152 interfaceWidth, 153 loadedHeight, 154 loadedWidth, 155 index, 156 photo, 157 open, 158 active, 159 closing, 160 loadingTimer, 161 publicMethod, 162 div = "div", 163 requests = 0, 164 previousCSS = {}, 165 init; 166 167 function $tag(tag, id, css) { 168 var element = document.createElement(tag); 169 170 if (id) { 171 element.id = prefix + id; 172 } 173 174 if (css) { 175 element.style.cssText = css; 176 } 177 178 return $(element); 179 } 180 181 function winheight() { 182 return window.innerHeight ? window.innerHeight : $(window).height(); 183 } 184 185 function Settings(element, options) { 186 if (options !== Object(options)) { 187 options = {}; 188 } 189 190 this.cache = {}; 191 this.el = element; 192 193 this.value = function(key) { 194 var dataAttr; 195 196 if (this.cache[key] === undefined) { 197 dataAttr = $(this.el).attr('data-cbox-'+key); 198 199 if (dataAttr !== undefined) { 200 this.cache[key] = dataAttr; 201 } else if (options[key] !== undefined) { 202 this.cache[key] = options[key]; 203 } else if (defaults[key] !== undefined) { 204 this.cache[key] = defaults[key]; 205 } 206 } 207 208 return this.cache[key]; 209 }; 210 211 this.get = function(key) { 212 var value = this.value(key); 213 return $.isFunction(value) ? value.call(this.el, this) : value; 214 }; 215 } 216 217 function getIndex(increment) { 218 var 219 max = $related.length, 220 newIndex = (index + increment) % max; 221 222 return (newIndex < 0) ? max + newIndex : newIndex; 223 } 224 225 function setSize(size, dimension) { 226 return Math.round((/%/.test(size) ? ((dimension === 'x' ? $window.width() : winheight()) / 100) : 1) * parseInt(size, 10)); 227 } 228 229 function isImage(settings, url) { 230 return settings.get('photo') || settings.get('photoRegex').test(url); 231 } 232 233 function retinaUrl(settings, url) { 234 return settings.get('retinaUrl') && window.devicePixelRatio > 1 ? url.replace(settings.get('photoRegex'), settings.get('retinaSuffix')) : url; 235 } 236 237 function trapFocus(e) { 238 if ('contains' in $box[0] && !$box[0].contains(e.target) && e.target !== $overlay[0]) { 239 e.stopPropagation(); 240 } 241 } 242 243 function setClass(str) { 244 if (setClass.str !== str) { 245 $box.add($overlay).removeClass(setClass.str).addClass(str); 246 setClass.str = str; 247 } 248 } 249 250 function getRelated(rel) { 251 index = 0; 252 253 if (rel && rel !== false && rel !== 'nofollow') { 254 $related = $('.' + boxElement).filter(function () { 255 var options = $.data(this, colorbox); 256 var settings = new Settings(this, options); 257 return (settings.get('rel') === rel); 258 }); 259 index = $related.index(settings.el); 260 261 if (index === -1) { 262 $related = $related.add(settings.el); 263 index = $related.length - 1; 264 } 265 } else { 266 $related = $(settings.el); 267 } 268 } 269 270 function trigger(event) { 271 272 $(document).trigger(event); 273 274 $events.triggerHandler(event); 275 } 276 277 var slideshow = (function(){ 278 var active, 279 className = prefix + "Slideshow_", 280 click = "click." + prefix, 281 timeOut; 282 283 function clear () { 284 clearTimeout(timeOut); 285 } 286 287 function set() { 288 if (settings.get('loop') || $related[index + 1]) { 289 clear(); 290 timeOut = setTimeout(publicMethod.next, settings.get('slideshowSpeed')); 291 } 292 } 293 294 function start() { 295 $slideshow 296 .html(settings.get('slideshowStop')) 297 .unbind(click) 298 .one(click, stop); 299 300 $events 301 .bind(event_complete, set) 302 .bind(event_load, clear); 303 304 $box.removeClass(className + "off").addClass(className + "on"); 305 } 306 307 function stop() { 308 clear(); 309 310 $events 311 .unbind(event_complete, set) 312 .unbind(event_load, clear); 313 314 $slideshow 315 .html(settings.get('slideshowStart')) 316 .unbind(click) 317 .one(click, function () { 318 publicMethod.next(); 319 start(); 320 }); 321 322 $box.removeClass(className + "on").addClass(className + "off"); 323 } 324 325 function reset() { 326 active = false; 327 $slideshow.hide(); 328 clear(); 329 $events 330 .unbind(event_complete, set) 331 .unbind(event_load, clear); 332 $box.removeClass(className + "off " + className + "on"); 333 } 334 335 return function(){ 336 if (active) { 337 if (!settings.get('slideshow')) { 338 $events.unbind(event_cleanup, reset); 339 reset(); 340 } 341 } else { 342 if (settings.get('slideshow') && $related[1]) { 343 active = true; 344 $events.one(event_cleanup, reset); 345 if (settings.get('slideshowAuto')) { 346 start(); 347 } else { 348 stop(); 349 } 350 $slideshow.show(); 351 } 352 } 353 }; 354 355 }()); 356 357 358 function launch(element) { 359 var options; 360 361 if (!closing) { 362 363 options = $(element).data(colorbox); 364 365 settings = new Settings(element, options); 366 367 getRelated(settings.get('rel')); 368 369 if (!open) { 370 open = active = true; 371 372 setClass(settings.get('className')); 373 374 375 $box.css({visibility:'hidden', display:'block', opacity:''}); 376 377 $loaded = $tag(div, 'LoadedContent', 'width:0; height:0; overflow:hidden; visibility:hidden'); 378 $content.css({width:'', height:''}).append($loaded); 379 380 interfaceHeight = $topBorder.height() + $bottomBorder.height() + $content.outerHeight(true) - $content.height(); 381 interfaceWidth = $leftBorder.width() + $rightBorder.width() + $content.outerWidth(true) - $content.width(); 382 loadedHeight = $loaded.outerHeight(true); 383 loadedWidth = $loaded.outerWidth(true); 384 385 var initialWidth = setSize(settings.get('initialWidth'), 'x'); 386 var initialHeight = setSize(settings.get('initialHeight'), 'y'); 387 var maxWidth = settings.get('maxWidth'); 388 var maxHeight = settings.get('maxHeight'); 389 390 settings.w = Math.max((maxWidth !== false ? Math.min(initialWidth, setSize(maxWidth, 'x')) : initialWidth) - loadedWidth - interfaceWidth, 0); 391 settings.h = Math.max((maxHeight !== false ? Math.min(initialHeight, setSize(maxHeight, 'y')) : initialHeight) - loadedHeight - interfaceHeight, 0); 392 393 $loaded.css({width:'', height:settings.h}); 394 publicMethod.position(); 395 396 trigger(event_open); 397 settings.get('onOpen'); 398 399 $groupControls.add($title).hide(); 400 401 $box.focus(); 402 403 if (settings.get('trapFocus')) { 404 if (document.addEventListener) { 405 406 document.addEventListener('focus', trapFocus, true); 407 408 $events.one(event_closed, function () { 409 document.removeEventListener('focus', trapFocus, true); 410 }); 411 } 412 } 413 414 if (settings.get('returnFocus')) { 415 $events.one(event_closed, function () { 416 $(settings.el).focus(); 417 }); 418 } 419 } 420 421 var opacity = parseFloat(settings.get('opacity')); 422 $overlay.css({ 423 opacity: opacity === opacity ? opacity : '', 424 cursor: settings.get('overlayClose') ? 'pointer' : '', 425 visibility: 'visible' 426 }).show(); 427 428 if (settings.get('closeButton')) { 429 var popupOptions = settings.get('popupOptions'); 430 if (popupOptions && popupOptions['ypm-enable-close-delay']) { 431 $close.attr({class: 'ypm-hide'}); 432 } 433 434 $close.html(settings.get('close')).appendTo($content); 435 } else { 436 $close.appendTo('<div/>'); 437 } 438 439 load(); 440 } 441 } 442 443 function appendHTML(options) { 444 if (!$box) { 445 init = false; 446 $window = $(window); 447 $box = $tag(div).attr({ 448 id: colorbox, 449 'class': $.support.opacity === false ? prefix + 'IE' : '', 450 role: 'dialog', 451 tabindex: '-1' 452 }).hide(); 453 $overlay = $tag(div, "Overlay").hide(); 454 $loadingOverlay = $([$tag(div, "LoadingOverlay")[0],$tag(div, "LoadingGraphic")[0]]); 455 $wrap = $tag(div, "Wrapper"); 456 $content = $tag(div, "Content").append( 457 $title = $tag(div, "Title"), 458 $current = $tag(div, "Current"), 459 $prev = $('<button type="button"/>').attr({id:prefix+'Previous'}), 460 $next = $('<button type="button"/>').attr({id:prefix+'Next'}), 461 $slideshow = $('<button type="button"/>').attr({id:prefix+'Slideshow'}), 462 $loadingOverlay 463 ); 464 $close = $('<button type="button"/>').attr({id:prefix+'Close'}); 465 466 $wrap.append( 467 $tag(div).append( 468 $tag(div, "TopLeft"), 469 $topBorder = $tag(div, "TopCenter"), 470 $tag(div, "TopRight") 471 ), 472 $tag(div, false, 'clear:left').append( 473 $leftBorder = $tag(div, "MiddleLeft"), 474 $content, 475 $rightBorder = $tag(div, "MiddleRight") 476 ), 477 $tag(div, false, 'clear:left').append( 478 $tag(div, "BottomLeft"), 479 $bottomBorder = $tag(div, "BottomCenter"), 480 $tag(div, "BottomRight") 481 ) 482 ).find('div div').css({'float': 'left'}); 483 484 $loadingBay = $tag(div, false, 'position:absolute; width:9999px; visibility:hidden; display:none; max-width:none;'); 485 486 $groupControls = $next.add($prev).add($current).add($slideshow); 487 } 488 if (document.body && !$box.parent().length) { 489 $(document.body).append($overlay, $box.append($wrap, $loadingBay)); 490 } 491 if (typeof options === 'object') { 492 var popupId = options['popupId']; 493 if (typeof popupId == 'undefined') { 494 popupId = 0; 495 } 496 497 $box.addClass('ypm-popup-content-'+popupId); 498 $overlay.addClass('ypm-popup-overlay-'+popupId); 499 if (options['disableOverlay']) { 500 $overlay.remove(); 501 } 502 } 503 } 504 505 function addBindings() { 506 function clickHandler(e) { 507 if (!(e.which > 1 || e.shiftKey || e.altKey || e.metaKey || e.ctrlKey)) { 508 e.preventDefault(); 509 launch(this); 510 } 511 } 512 513 if ($box) { 514 if (!init) { 515 init = true; 516 517 $next.click(function () { 518 publicMethod.next(); 519 }); 520 $prev.click(function () { 521 publicMethod.prev(); 522 }); 523 $close.click(function () { 524 publicMethod.close(); 525 }); 526 $overlay.click(function () { 527 if (settings.get('overlayClose')) { 528 publicMethod.close(); 529 } 530 }); 531 532 $(document).bind('keydown.' + prefix, function (e) { 533 var key = e.keyCode; 534 if (open && settings.get('escKey') && key === 27) { 535 e.preventDefault(); 536 publicMethod.close(); 537 } 538 if (open && settings.get('arrowKey') && $related[1] && !e.altKey) { 539 if (key === 37) { 540 e.preventDefault(); 541 $prev.click(); 542 } else if (key === 39) { 543 e.preventDefault(); 544 $next.click(); 545 } 546 } 547 }); 548 549 if ($.isFunction($.fn.on)) { 550 $(document).on('click.'+prefix, '.'+boxElement, clickHandler); 551 } else { 552 $('.'+boxElement).live('click.'+prefix, clickHandler); 553 } 554 } 555 return true; 556 } 557 return false; 558 } 559 560 if ($[colorbox]) { 561 return; 562 } 563 564 $(appendHTML); 565 566 567 568 publicMethod = $.fn[colorbox] = $[colorbox] = function (options, callback) { 569 var settings; 570 var $obj = this; 571 572 options = options || {}; 573 574 if ($.isFunction($obj)) { 575 $obj = $('<a/>'); 576 options.open = true; 577 } 578 579 if (!$obj[0]) { 580 return $obj; 581 } 582 583 appendHTML(options); 584 585 if (addBindings()) { 586 587 if (callback) { 588 options.onComplete = callback; 589 } 590 591 $obj.each(function () { 592 var old = $.data(this, colorbox) || {}; 593 $.data(this, colorbox, $.extend(old, options)); 594 }).addClass(boxElement); 595 596 settings = new Settings($obj[0], options); 597 598 if (settings.get('open')) { 599 launch($obj[0]); 600 } 601 } 602 603 return $obj; 604 }; 605 606 publicMethod.position = function (speed, loadedCallback) { 607 var 608 css, 609 top = 0, 610 left = 0, 611 offset = $box.offset(), 612 scrollTop, 613 scrollLeft; 614 615 $window.unbind('resize.' + prefix); 616 617 $box.css({top: -9e4, left: -9e4}); 618 619 scrollTop = $window.scrollTop(); 620 scrollLeft = $window.scrollLeft(); 621 622 if (settings.get('fixed')) { 623 offset.top -= scrollTop; 624 offset.left -= scrollLeft; 625 $box.css({position: 'fixed'}); 626 } else { 627 top = scrollTop; 628 left = scrollLeft; 629 $box.css({position: 'absolute'}); 630 } 631 632 if (settings.get('right') !== false) { 633 left += Math.max($window.width() - settings.w - loadedWidth - interfaceWidth - setSize(settings.get('right'), 'x'), 0); 634 } else if (settings.get('left') !== false) { 635 left += setSize(settings.get('left'), 'x'); 636 } else { 637 left += Math.round(Math.max($window.width() - settings.w - loadedWidth - interfaceWidth, 0) / 2); 638 } 639 640 if (settings.get('bottom') !== false) { 641 top += Math.max(winheight() - settings.h - loadedHeight - interfaceHeight - setSize(settings.get('bottom'), 'y'), 0); 642 } else if (settings.get('top') !== false) { 643 top += setSize(settings.get('top'), 'y'); 644 } else { 645 top += Math.round(Math.max(winheight() - settings.h - loadedHeight - interfaceHeight, 0) / 2); 646 } 647 648 $box.css({top: offset.top, left: offset.left, visibility:'visible'}); 649 650 $wrap[0].style.width = $wrap[0].style.height = "9999px"; 651 652 function modalDimensions() { 653 $topBorder[0].style.width = $bottomBorder[0].style.width = $content[0].style.width = (parseInt($box[0].style.width,10) - interfaceWidth)+'px'; 654 $content[0].style.height = $leftBorder[0].style.height = $rightBorder[0].style.height = (parseInt($box[0].style.height,10) - interfaceHeight)+'px'; 655 } 656 657 css = {width: settings.w + loadedWidth + interfaceWidth, height: settings.h + loadedHeight + interfaceHeight, top: top, left: left}; 658 659 if (speed) { 660 var tempSpeed = 0; 661 $.each(css, function(i){ 662 if (css[i] !== previousCSS[i]) { 663 tempSpeed = speed; 664 return; 665 } 666 }); 667 speed = tempSpeed; 668 } 669 670 previousCSS = css; 671 672 if (!speed) { 673 $box.css(css); 674 } 675 676 $box.dequeue().animate(css, { 677 duration: speed || 0, 678 complete: function () { 679 modalDimensions(); 680 681 active = false; 682 683 $wrap[0].style.width = (settings.w + loadedWidth + interfaceWidth) + "px"; 684 $wrap[0].style.height = (settings.h + loadedHeight + interfaceHeight) + "px"; 685 686 if (settings.get('reposition')) { 687 setTimeout(function () { 688 $window.bind('resize.' + prefix, publicMethod.position); 689 }, 1); 690 } 691 692 if ($.isFunction(loadedCallback)) { 693 loadedCallback(); 694 } 695 }, 696 step: modalDimensions 697 }); 698 }; 699 700 publicMethod.resize = function (options) { 701 var scrolltop; 702 703 if (open) { 704 options = options || {}; 705 706 if (options.width) { 707 settings.w = setSize(options.width, 'x') - loadedWidth - interfaceWidth; 708 } 709 710 if (options.innerWidth) { 711 settings.w = setSize(options.innerWidth, 'x'); 712 } 713 714 $loaded.css({width: settings.w}); 715 716 if (options.height) { 717 settings.h = setSize(options.height, 'y') - loadedHeight - interfaceHeight; 718 } 719 720 if (options.innerHeight) { 721 settings.h = setSize(options.innerHeight, 'y'); 722 } 723 724 if (!options.innerHeight && !options.height) { 725 scrolltop = $loaded.scrollTop(); 726 $loaded.css({height: "auto"}); 727 settings.h = $loaded.height(); 728 } 729 730 $loaded.css({height: settings.h}); 731 732 if(scrolltop) { 733 $loaded.scrollTop(scrolltop); 734 } 735 736 publicMethod.position(settings.get('transition') === "none" ? 0 : settings.get('speed')); 737 } 738 }; 739 740 publicMethod.prep = function (object) { 741 if (!open) { 742 return; 743 } 744 745 var callback, speed = settings.get('transition') === "none" ? 0 : settings.get('speed'); 746 747 $loaded.remove(); 748 749 $loaded = $tag(div, 'LoadedContent').append(object); 750 751 function getWidth() { 752 settings.w = settings.w || $loaded.width(); 753 settings.w = settings.mw && settings.mw < settings.w ? settings.mw : settings.w; 754 return settings.w; 755 } 756 function getHeight() { 757 settings.h = settings.h || $loaded.height(); 758 settings.h = settings.mh && settings.mh < settings.h ? settings.mh : settings.h; 759 return settings.h; 760 } 761 762 $loaded.hide() 763 .appendTo($loadingBay.show()) 764 .css({width: getWidth(), overflow: settings.get('scrolling') ? 'auto' : 'hidden'}) 765 .css({height: getHeight()}) 766 .prependTo($content); 767 768 $loadingBay.hide(); 769 770 $(photo).css({'float': 'none'}); 771 772 setClass(settings.get('className')); 773 774 callback = function () { 775 var total = $related.length, 776 iframe, 777 complete; 778 779 if (!open) { 780 return; 781 } 782 783 function removeFilter() { 784 if ($.support.opacity === false) { 785 $box[0].style.removeAttribute('filter'); 786 } 787 } 788 789 complete = function () { 790 clearTimeout(loadingTimer); 791 $loadingOverlay.hide(); 792 trigger(event_complete); 793 settings.get('onComplete'); 794 }; 795 796 797 $title.html(settings.get('title')).show(); 798 $loaded.show(); 799 800 if (total > 1) { 801 if (typeof settings.get('current') === "string") { 802 $current.html(settings.get('current').replace('{current}', index + 1).replace('{total}', total)).show(); 803 } 804 805 $next[(settings.get('loop') || index < total - 1) ? "show" : "hide"]().html(settings.get('next')); 806 $prev[(settings.get('loop') || index) ? "show" : "hide"]().html(settings.get('previous')); 807 808 slideshow(); 809 810 if (settings.get('preloading')) { 811 $.each([getIndex(-1), getIndex(1)], function(){ 812 var img, 813 i = $related[this], 814 settings = new Settings(i, $.data(i, colorbox)), 815 src = settings.get('href'); 816 817 if (src && isImage(settings, src)) { 818 src = retinaUrl(settings, src); 819 img = document.createElement('img'); 820 img.src = src; 821 } 822 }); 823 } 824 } else { 825 $groupControls.hide(); 826 } 827 828 if (settings.get('iframe')) { 829 830 iframe = settings.get('createIframe'); 831 832 if (!settings.get('scrolling')) { 833 iframe.scrolling = "no"; 834 } 835 836 $(iframe) 837 .attr({ 838 src: settings.get('href'), 839 'class': prefix + 'Iframe' 840 }) 841 .one('load', complete) 842 .appendTo($loaded); 843 844 $events.one(event_purge, function () { 845 iframe.src = "//about:blank"; 846 }); 847 848 if (settings.get('fastIframe')) { 849 $(iframe).trigger('load'); 850 } 851 } else { 852 complete(); 853 } 854 855 if (settings.get('transition') === 'fade') { 856 $box.fadeTo(speed, 1, removeFilter); 857 } else { 858 removeFilter(); 859 } 860 }; 861 862 if (settings.get('transition') === 'fade') { 863 $box.fadeTo(speed, 0, function () { 864 publicMethod.position(0, callback); 865 }); 866 } else { 867 publicMethod.position(speed, callback); 868 } 869 }; 870 871 function load () { 872 var href, setResize, prep = publicMethod.prep, $inline, request = ++requests; 873 874 active = true; 875 876 photo = false; 877 878 trigger(event_purge); 879 trigger(event_load); 880 settings.get('onLoad'); 881 882 settings.h = settings.get('height') ? 883 setSize(settings.get('height'), 'y') - loadedHeight - interfaceHeight : 884 settings.get('innerHeight') && setSize(settings.get('innerHeight'), 'y'); 885 886 settings.w = settings.get('width') ? 887 setSize(settings.get('width'), 'x') - loadedWidth - interfaceWidth : 888 settings.get('innerWidth') && setSize(settings.get('innerWidth'), 'x'); 889 890 settings.mw = settings.w; 891 settings.mh = settings.h; 892 893 if (settings.get('maxWidth')) { 894 settings.mw = setSize(settings.get('maxWidth'), 'x') - loadedWidth - interfaceWidth; 895 settings.mw = settings.w && settings.w < settings.mw ? settings.w : settings.mw; 896 } 897 if (settings.get('maxHeight')) { 898 settings.mh = setSize(settings.get('maxHeight'), 'y') - loadedHeight - interfaceHeight; 899 settings.mh = settings.h && settings.h < settings.mh ? settings.h : settings.mh; 900 } 901 902 href = settings.get('href'); 903 904 loadingTimer = setTimeout(function () { 905 $loadingOverlay.show(); 906 }, 100); 907 908 if (settings.get('inline')) { 909 var $target = $(href).eq(0); 910 911 $inline = $('<div>').hide().insertBefore($target); 912 913 $events.one(event_purge, function () { 914 $inline.replaceWith($target); 915 }); 916 917 prep($target); 918 } else if (settings.get('iframe')) { 919 prep(" "); 920 } else if (settings.get('html')) { 921 prep(settings.get('html')); 922 } else if (isImage(settings, href)) { 923 924 href = retinaUrl(settings, href); 925 926 photo = settings.get('createImg'); 927 928 $(photo) 929 .addClass(prefix + 'Photo') 930 .bind('error.'+prefix,function () { 931 prep($tag(div, 'Error').html(settings.get('imgError'))); 932 }) 933 .one('load', function () { 934 if (request !== requests) { 935 return; 936 } 937 938 setTimeout(function(){ 939 var percent; 940 941 if (settings.get('retinaImage') && window.devicePixelRatio > 1) { 942 photo.height = photo.height / window.devicePixelRatio; 943 photo.width = photo.width / window.devicePixelRatio; 944 } 945 946 if (settings.get('scalePhotos')) { 947 setResize = function () { 948 photo.height -= photo.height * percent; 949 photo.width -= photo.width * percent; 950 }; 951 if (settings.mw && photo.width > settings.mw) { 952 percent = (photo.width - settings.mw) / photo.width; 953 setResize(); 954 } 955 if (settings.mh && photo.height > settings.mh) { 956 percent = (photo.height - settings.mh) / photo.height; 957 setResize(); 958 } 959 } 960 961 if (settings.h) { 962 photo.style.marginTop = Math.max(settings.mh - photo.height, 0) / 2 + 'px'; 963 } 964 965 if ($related[1] && (settings.get('loop') || $related[index + 1])) { 966 photo.style.cursor = 'pointer'; 967 968 $(photo).bind('click.'+prefix, function () { 969 publicMethod.next(); 970 }); 971 } 972 973 photo.style.width = photo.width + 'px'; 974 photo.style.height = photo.height + 'px'; 975 prep(photo); 976 }, 1); 977 }); 978 979 photo.src = href; 980 981 } else if (href) { 982 $loadingBay.load(href, settings.get('data'), function (data, status) { 983 if (request === requests) { 984 prep(status === 'error' ? $tag(div, 'Error').html(settings.get('xhrError')) : $(this).contents()); 985 } 986 }); 987 } 988 } 989 990 publicMethod.next = function () { 991 if (!active && $related[1] && (settings.get('loop') || $related[index + 1])) { 992 index = getIndex(1); 993 launch($related[index]); 994 } 995 }; 996 997 publicMethod.prev = function () { 998 if (!active && $related[1] && (settings.get('loop') || index)) { 999 index = getIndex(-1); 1000 launch($related[index]); 1001 } 1002 }; 1003 1004 publicMethod.close = function () { 1005 if (open && !closing) { 1006 1007 1008 1009 trigger(event_closing); 1010 settings.get('onClosing'); 1011 1012 setTimeout(function () { 1013 closing = true; 1014 open = false; 1015 trigger(event_cleanup); 1016 settings.get('onCleanup'); 1017 $window.unbind('.' + prefix); 1018 $overlay.fadeOut('slow'); 1019 1020 $box.stop().fadeOut('slow', function () { 1021 $box.hide(); 1022 $overlay.hide(); 1023 trigger(event_purge); 1024 $loaded.remove(); 1025 1026 setTimeout(function () { 1027 closing = false; 1028 trigger(event_closed); 1029 settings.get('onClosed'); 1030 }, 1); 1031 }); 1032 }, parseInt(settings.get('closeDelay'))*1000) 1033 } 1034 }; 1035 1036 publicMethod.remove = function () { 1037 if (!$box) { return; } 1038 1039 $box.stop(); 1040 $[colorbox].close(); 1041 $box.stop(false, true).remove(); 1042 $overlay.remove(); 1043 closing = false; 1044 $box = null; 1045 $('.' + boxElement) 1046 .removeData(colorbox) 1047 .removeClass(boxElement); 1048 1049 $(document).unbind('click.'+prefix).unbind('keydown.'+prefix); 1050 }; 1051 1052 publicMethod.element = function () { 1053 return $(settings.el); 1054 }; 1055 1056 publicMethod.settings = defaults; 1057 1058}(jQuery, document, window));
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.