PageSourceSearch

https://canudos.ba.gov.br/wp-content/plugins/wp-colorbox/jquery.colorbox.js?ver=1.1.0

js canudos.ba.gov.br collected 2026-09-25 08:59:52 UTC 28,390 bytes, 1,084 lines download raw bytes

1/*!
2	Colorbox v1.4.33 - 2013-10-31
3	jQuery lightbox and modal window plugin
4	(c) 2013 Jack Moore - http://www.jacklmoore.com/colorbox
5	license: http://www.opensource.org/licenses/mit-license.php
6*/
7(function ($, document, window) {
8	var
9	// Default settings object.
10	// See http://jacklmoore.com/colorbox for details.
11	defaults = {
12		// data sources
13		html: false,
14		photo: false,
15		iframe: false,
16		inline: false,
17
18		// behavior and appearance
19		transition: "elastic",
20		speed: 300,
21		fadeOut: 300,
22		width: false,
23		initialWidth: "600",
24		innerWidth: false,
25		maxWidth: false,
26		height: false,
27		initialHeight: "450",
28		innerHeight: false,
29		maxHeight: false,
30		scalePhotos: true,
31		scrolling: true,
32		href: false,
33		title: false,
34		rel: false,
35		opacity: 0.9,
36		preloading: true,
37		className: false,
38		overlayClose: true,
39		escKey: true,
40		arrowKey: true,
41		top: false,
42		bottom: false,
43		left: false,
44		right: false,
45		fixed: false,
46		data: undefined,
47		closeButton: true,
48		fastIframe: true,
49		open: false,
50		reposition: true,
51		loop: true,
52		slideshow: false,
53		slideshowAuto: true,
54		slideshowSpeed: 2500,
55		slideshowStart: "start slideshow",
56		slideshowStop: "stop slideshow",
57		photoRegex: /\.(gif|png|jp(e|g|eg)|bmp|ico|webp)((#|\?).*)?$/i,
58
59		// alternate image paths for high-res displays
60		retinaImage: false,
61		retinaUrl: false,
62		retinaSuffix: '@2x.$1',
63
64		// internationalization
65		current: "image {current} of {total}",
66		previous: "voltar",
67		next: "avançar",
68		close: "fechar",
69		xhrError: "Esse conteúdo falhou.",
70		imgError: "Esse conteúdo falhou.",
71
72		// accessbility
73		returnFocus: true,
74		trapFocus: true,
75
76		// callbacks
77		onOpen: false,
78		onLoad: false,
79		onComplete: false,
80		onCleanup: false,
81		onClosed: false
82	},
83	
84	// Abstracting the HTML and event identifiers for easy rebranding
85	colorbox = 'colorbox',
86	prefix = 'cbox',
87	boxElement = prefix + 'Element',
88	
89	// Events
90	event_open = prefix + '_open',
91	event_load = prefix + '_load',
92	event_complete = prefix + '_complete',
93	event_cleanup = prefix + '_cleanup',
94	event_closed = prefix + '_closed',
95	event_purge = prefix + '_purge',
96
97	// Cached jQuery Object Variables
98	$overlay,
99	$box,
100	$wrap,
101	$content,
102	$topBorder,
103	$leftBorder,
104	$rightBorder,
105	$bottomBorder,
106	$related,
107	$window,
108	$loaded,
109	$loadingBay,
110	$loadingOverlay,
111	$title,
112	$current,
113	$slideshow,
114	$next,
115	$prev,
116	$close,
117	$groupControls,
118	$events = $('<a/>'), // $([]) would be prefered, but there is an issue with jQuery 1.4.2
119	
120	// Variables for cached values or use across multiple functions
121	settings,
122	interfaceHeight,
123	interfaceWidth,
124	loadedHeight,
125	loadedWidth,
126	element,
127	index,
128	photo,
129	open,
130	active,
131	closing,
132	loadingTimer,
133	publicMethod,
134	div = "div",
135	className,
136	requests = 0,
137	previousCSS = {},
138	init;
139
140	// ****************
141	// HELPER FUNCTIONS
142	// ****************
143	
144	// Convenience function for creating new jQuery objects
145	function $tag(tag, id, css) {
146		var element = document.createElement(tag);
147
148		if (id) {
149			element.id = prefix + id;
150		}
151
152		if (css) {
153			element.style.cssText = css;
154		}
155
156		return $(element);
157	}
158	
159	// Get the window height using innerHeight when available to avoid an issue with iOS
160	// http://bugs.jquery.com/ticket/6724
161	function winheight() {
162		return window.innerHeight ? window.innerHeight : $(window).height();
163	}
164
165	// Determine the next and previous members in a group.
166	function getIndex(increment) {
167		var
168		max = $related.length,
169		newIndex = (index + increment) % max;
170		
171		return (newIndex < 0) ? max + newIndex : newIndex;
172	}
173
174	// Convert '%' and 'px' values to integers
175	function setSize(size, dimension) {
176		return Math.round((/%/.test(size) ? ((dimension === 'x' ? $window.width() : winheight()) / 100) : 1) * parseInt(size, 10));
177	}
178	
179	// Checks an href to see if it is a photo.
180	// There is a force photo option (photo: true) for hrefs that cannot be matched by the regex.
181	function isImage(settings, url) {
182		return settings.photo || settings.photoRegex.test(url);
183	}
184
185	function retinaUrl(settings, url) {
186		return settings.retinaUrl && window.devicePixelRatio > 1 ? url.replace(settings.photoRegex, settings.retinaSuffix) : url;
187	}
188
189	function trapFocus(e) {
190		if ('contains' in $box[0] && !$box[0].contains(e.target)) {
191			e.stopPropagation();
192			$box.focus();
193		}
194	}
195
196	// Assigns function results to their respective properties
197	function makeSettings() {
198		var i,
199			data = $.data(element, colorbox);
200		
201		if (data == null) {
202			settings = $.extend({}, defaults);
203			if (console && console.log) {
204				console.log('Error: cboxElement missing settings object');
205			}
206		} else {
207			settings = $.extend({}, data);
208		}
209		
210		for (i in settings) {
211			if ($.isFunction(settings[i]) && i.slice(0, 2) !== 'on') { // checks to make sure the function isn't one of the callbacks, they will be handled at the appropriate time.
212				settings[i] = settings[i].call(element);
213			}
214		}
215		
216		settings.rel = settings.rel || element.rel || $(element).data('rel') || 'nofollow';
217		settings.href = settings.href || $(element).attr('href');
218		settings.title = settings.title || element.title;
219		
220		if (typeof settings.href === "string") {
221			settings.href = $.trim(settings.href);
222		}
223	}
224
225	function trigger(event, callback) {
226		// for external use
227		$(document).trigger(event);
228
229		// for internal use
230		$events.triggerHandler(event);
231
232		if ($.isFunction(callback)) {
233			callback.call(element);
234		}
235	}
236
237
238	var slideshow = (function(){
239		var active,
240			className = prefix + "Slideshow_",
241			click = "click." + prefix,
242			timeOut;
243
244		function clear () {
245			clearTimeout(timeOut);
246		}
247
248		function set() {
249			if (settings.loop || $related[index + 1]) {
250				clear();
251				timeOut = setTimeout(publicMethod.next, settings.slideshowSpeed);
252			}
253		}
254
255		function start() {
256			$slideshow
257				.html(settings.slideshowStop)
258				.unbind(click)
259				.one(click, stop);
260
261			$events
262				.bind(event_complete, set)
263				.bind(event_load, clear);
264
265			$box.removeClass(className + "off").addClass(className + "on");
266		}
267
268		function stop() {
269			clear();
270			
271			$events
272				.unbind(event_complete, set)
273				.unbind(event_load, clear);
274
275			$slideshow
276				.html(settings.slideshowStart)
277				.unbind(click)
278				.one(click, function () {
279					publicMethod.next();
280					start();
281				});
282
283			$box.removeClass(className + "on").addClass(className + "off");
284		}
285
286		function reset() {
287			active = false;
288			$slideshow.hide();
289			clear();
290			$events
291				.unbind(event_complete, set)
292				.unbind(event_load, clear);
293			$box.removeClass(className + "off " + className + "on");
294		}
295
296		return function(){
297			if (active) {
298				if (!settings.slideshow) {
299					$events.unbind(event_cleanup, reset);
300					reset();
301				}
302			} else {
303				if (settings.slideshow && $related[1]) {
304					active = true;
305					$events.one(event_cleanup, reset);
306					if (settings.slideshowAuto) {
307						start();
308					} else {
309						stop();
310					}
311					$slideshow.show();
312				}
313			}
314		};
315
316	}());
317
318
319	function launch(target) {
320		if (!closing) {
321			
322			element = target;
323			
324			makeSettings();
325			
326			$related = $(element);
327			
328			index = 0;
329			
330			if (settings.rel !== 'nofollow') {
331				$related = $('.' + boxElement).filter(function () {
332					var data = $.data(this, colorbox),
333						relRelated;
334
335					if (data) {
336						relRelated =  $(this).data('rel') || data.rel || this.rel;
337					}
338					
339					return (relRelated === settings.rel);
340				});
341				index = $related.index(element);
342				
343				// Check direct calls to Colorbox.
344				if (index === -1) {
345					$related = $related.add(element);
346					index = $related.length - 1;
347				}
348			}
349			
350			$overlay.css({
351				opacity: parseFloat(settings.opacity),
352				cursor: settings.overlayClose ? "pointer" : "auto",
353				visibility: 'visible'
354			}).show();
355			
356
357			if (className) {
358				$box.add($overlay).removeClass(className);
359			}
360			if (settings.className) {
361				$box.add($overlay).addClass(settings.className);
362			}
363			className = settings.className;
364
365			if (settings.closeButton) {
366				$close.html(settings.close).appendTo($content);
367			} else {
368				$close.appendTo('<div/>');
369			}
370
371			if (!open) {
372				open = active = true; // Prevents the page-change action from queuing up if the visitor holds down the left or right keys.
373				
374				// Show colorbox so the sizes can be calculated in older versions of jQuery
375				$box.css({visibility:'hidden', display:'block'});
376				
377				$loaded = $tag(div, 'LoadedContent', 'width:0; height:0; overflow:hidden');
378				$content.css({width:'', height:''}).append($loaded);
379
380				// Cache values needed for size calculations
381				interfaceHeight = $topBorder.height() + $bottomBorder.height() + $content.outerHeight(true) - $content.height();
382				interfaceWidth = $leftBorder.width() + $rightBorder.width() + $content.outerWidth(true) - $content.width();
383				loadedHeight = $loaded.outerHeight(true);
384				loadedWidth = $loaded.outerWidth(true);
385
386				// Opens inital empty Colorbox prior to content being loaded.
387				settings.w = setSize(settings.initialWidth, 'x');
388				settings.h = setSize(settings.initialHeight, 'y');
389				$loaded.css({width:'', height:settings.h});
390				publicMethod.position();
391
392				trigger(event_open, settings.onOpen);
393				
394				$groupControls.add($title).hide();
395
396				$box.focus();
397				
398				if (settings.trapFocus) {
399					// Confine focus to the modal
400					// Uses event capturing that is not supported in IE8-
401					if (document.addEventListener) {
402
403						document.addEventListener('focus', trapFocus, true);
404						
405						$events.one(event_closed, function () {
406							document.removeEventListener('focus', trapFocus, true);
407						});
408					}
409				}
410
411				// Return focus on closing
412				if (settings.returnFocus) {
413					$events.one(event_closed, function () {
414						$(element).focus();
415					});
416				}
417			}
418			load();
419		}
420	}
421
422	// Colorbox's markup needs to be added to the DOM prior to being called
423	// so that the browser will go ahead and load the CSS background images.
424	function appendHTML() {
425		if (!$box && document.body) {
426			init = false;
vendor: 9,507 bytes, lines 427-750
427			$window = $(window);
428			$box = $tag(div).attr({
429				id: colorbox,
430				'class': $.support.opacity === false ? prefix + 'IE' : '', // class for optional IE8 & lower targeted CSS.
431				role: 'dialog',
432				tabindex: '-1'
433			}).hide();
434			$overlay = $tag(div, "Overlay").hide();
435			$loadingOverlay = $([$tag(div, "LoadingOverlay")[0],$tag(div, "LoadingGraphic")[0]]);
436			$wrap = $tag(div, "Wrapper");
437			$content = $tag(div, "Content").append(
438				$title = $tag(div, "Title"),
439				$current = $tag(div, "Current"),
440				$prev = $('<button type="button"/>').attr({id:prefix+'Previous'}),
441				$next = $('<button type="button"/>').attr({id:prefix+'Next'}),
442				$slideshow = $tag('button', "Slideshow"),
443				$loadingOverlay
444			);
445
446			$close = $('<button type="button"/>').attr({id:prefix+'Close'});
447			
448			$wrap.append( // The 3x3 Grid that makes up Colorbox
449				$tag(div).append(
450					$tag(div, "TopLeft"),
451					$topBorder = $tag(div, "TopCenter"),
452					$tag(div, "TopRight")
453				),
454				$tag(div, false, 'clear:left').append(
455					$leftBorder = $tag(div, "MiddleLeft"),
456					$content,
457					$rightBorder = $tag(div, "MiddleRight")
458				),
459				$tag(div, false, 'clear:left').append(
460					$tag(div, "BottomLeft"),
461					$bottomBorder = $tag(div, "BottomCenter"),
462					$tag(div, "BottomRight")
463				)
464			).find('div div').css({'float': 'left'});
465			
466			$loadingBay = $tag(div, false, 'position:absolute; width:9999px; visibility:hidden; display:none; max-width:none;');
467			
468			$groupControls = $next.add($prev).add($current).add($slideshow);
469
470			$(document.body).append($overlay, $box.append($wrap, $loadingBay));
471		}
472	}
473
474	// Add Colorbox's event bindings
475	function addBindings() {
476		function clickHandler(e) {
477			// ignore non-left-mouse-clicks and clicks modified with ctrl / command, shift, or alt.
478			// See: http://jacklmoore.com/notes/click-events/
479			if (!(e.which > 1 || e.shiftKey || e.altKey || e.metaKey || e.ctrlKey)) {
480				e.preventDefault();
481				launch(this);
482			}
483		}
484
485		if ($box) {
486			if (!init) {
487				init = true;
488
489				// Anonymous functions here keep the public method from being cached, thereby allowing them to be redefined on the fly.
490				$next.click(function () {
491					publicMethod.next();
492				});
493				$prev.click(function () {
494					publicMethod.prev();
495				});
496				$close.click(function () {
497					publicMethod.close();
498				});
499				$overlay.click(function () {
500					if (settings.overlayClose) {
501						publicMethod.close();
502					}
503				});
504				
505				// Key Bindings
506				$(document).bind('keydown.' + prefix, function (e) {
507					var key = e.keyCode;
508					if (open && settings.escKey && key === 27) {
509						e.preventDefault();
510						publicMethod.close();
511					}
512					if (open && settings.arrowKey && $related[1] && !e.altKey) {
513						if (key === 37) {
514							e.preventDefault();
515							$prev.click();
516						} else if (key === 39) {
517							e.preventDefault();
518							$next.click();
519						}
520					}
521				});
522
523				if ($.isFunction($.fn.on)) {
524					// For jQuery 1.7+
525					$(document).on('click.'+prefix, '.'+boxElement, clickHandler);
526				} else {
527					// For jQuery 1.3.x -> 1.6.x
528					// This code is never reached in jQuery 1.9, so do not contact me about 'live' being removed.
529					// This is not here for jQuery 1.9, it's here for legacy users.
530					$('.'+boxElement).live('click.'+prefix, clickHandler);
531				}
532			}
533			return true;
534		}
535		return false;
536	}
537
538	// Don't do anything if Colorbox already exists.
539	if ($.colorbox) {
540		return;
541	}
542
543	// Append the HTML when the DOM loads
544	$(appendHTML);
545
546
547	// ****************
548	// PUBLIC FUNCTIONS
549	// Usage format: $.colorbox.close();
550	// Usage from within an iframe: parent.jQuery.colorbox.close();
551	// ****************
552	
553	publicMethod = $.fn[colorbox] = $[colorbox] = function (options, callback) {
554		var $this = this;
555		
556		options = options || {};
557		
558		appendHTML();
559
560		if (addBindings()) {
561			if ($.isFunction($this)) { // assume a call to $.colorbox
562				$this = $('<a/>');
563				options.open = true;
564			} else if (!$this[0]) { // colorbox being applied to empty collection
565				return $this;
566			}
567			
568			if (callback) {
569				options.onComplete = callback;
570			}
571			
572			$this.each(function () {
573				$.data(this, colorbox, $.extend({}, $.data(this, colorbox) || defaults, options));
574			}).addClass(boxElement);
575			
576			if (($.isFunction(options.open) && options.open.call($this)) || options.open) {
577				launch($this[0]);
578			}
579		}
580		
581		return $this;
582	};
583
584	publicMethod.position = function (speed, loadedCallback) {
585		var
586		css,
587		top = 0,
588		left = 0,
589		offset = $box.offset(),
590		scrollTop,
591		scrollLeft;
592		
593		$window.unbind('resize.' + prefix);
594
595		// remove the modal so that it doesn't influence the document width/height
596		$box.css({top: -9e4, left: -9e4});
597
598		scrollTop = $window.scrollTop();
599		scrollLeft = $window.scrollLeft();
600
601		if (settings.fixed) {
602			offset.top -= scrollTop;
603			offset.left -= scrollLeft;
604			$box.css({position: 'fixed'});
605		} else {
606			top = scrollTop;
607			left = scrollLeft;
608			$box.css({position: 'absolute'});
609		}
610
611		// keeps the top and left positions within the browser's viewport.
612		if (settings.right !== false) {
613			left += Math.max($window.width() - settings.w - loadedWidth - interfaceWidth - setSize(settings.right, 'x'), 0);
614		} else if (settings.left !== false) {
615			left += setSize(settings.left, 'x');
616		} else {
617			left += Math.round(Math.max($window.width() - settings.w - loadedWidth - interfaceWidth, 0) / 2);
618		}
619		
620		if (settings.bottom !== false) {
621			top += Math.max(winheight() - settings.h - loadedHeight - interfaceHeight - setSize(settings.bottom, 'y'), 0);
622		} else if (settings.top !== false) {
623			top += setSize(settings.top, 'y');
624		} else {
625			top += Math.round(Math.max(winheight() - settings.h - loadedHeight - interfaceHeight, 0) / 2);
626		}
627
628		$box.css({top: offset.top, left: offset.left, visibility:'visible'});
629		
630		// this gives the wrapper plenty of breathing room so it's floated contents can move around smoothly,
631		// but it has to be shrank down around the size of div#colorbox when it's done.  If not,
632		// it can invoke an obscure IE bug when using iframes.
633		$wrap[0].style.width = $wrap[0].style.height = "9999px";
634		
635		function modalDimensions() {
636			$topBorder[0].style.width = $bottomBorder[0].style.width = $content[0].style.width = (parseInt($box[0].style.width,10) - interfaceWidth)+'px';
637			$content[0].style.height = $leftBorder[0].style.height = $rightBorder[0].style.height = (parseInt($box[0].style.height,10) - interfaceHeight)+'px';
638		}
639
640		css = {width: settings.w + loadedWidth + interfaceWidth, height: settings.h + loadedHeight + interfaceHeight, top: top, left: left};
641
642		// setting the speed to 0 if the content hasn't changed size or position
643		if (speed) {
644			var tempSpeed = 0;
645			$.each(css, function(i){
646				if (css[i] !== previousCSS[i]) {
647					tempSpeed = speed;
648					return;
649				}
650			});
651			speed = tempSpeed;
652		}
653
654		previousCSS = css;
655
656		if (!speed) {
657			$box.css(css);
658		}
659
660		$box.dequeue().animate(css, {
661			duration: speed || 0,
662			complete: function () {
663				modalDimensions();
664				
665				active = false;
666				
667				// shrink the wrapper down to exactly the size of colorbox to avoid a bug in IE's iframe implementation.
668				$wrap[0].style.width = (settings.w + loadedWidth + interfaceWidth) + "px";
669				$wrap[0].style.height = (settings.h + loadedHeight + interfaceHeight) + "px";
670				
671				if (settings.reposition) {
672					setTimeout(function () {  // small delay before binding onresize due to an IE8 bug.
673						$window.bind('resize.' + prefix, publicMethod.position);
674					}, 1);
675				}
676
677				if (loadedCallback) {
678					loadedCallback();
679				}
680			},
681			step: modalDimensions
682		});
683	};
684
685	publicMethod.resize = function (options) {
686		var scrolltop;
687		
688		if (open) {
689			options = options || {};
690			
691			if (options.width) {
692				settings.w = setSize(options.width, 'x') - loadedWidth - interfaceWidth;
693			}
694
695			if (options.innerWidth) {
696				settings.w = setSize(options.innerWidth, 'x');
697			}
698
699			$loaded.css({width: settings.w});
700			
701			if (options.height) {
702				settings.h = setSize(options.height, 'y') - loadedHeight - interfaceHeight;
703			}
704
705			if (options.innerHeight) {
706				settings.h = setSize(options.innerHeight, 'y');
707			}
708
709			if (!options.innerHeight && !options.height) {
710				scrolltop = $loaded.scrollTop();
711				$loaded.css({height: "auto"});
712				settings.h = $loaded.height();
713			}
714
715			$loaded.css({height: settings.h});
716
717			if(scrolltop) {
718				$loaded.scrollTop(scrolltop);
719			}
720			
721			publicMethod.position(settings.transition === "none" ? 0 : settings.speed);
722		}
723	};
724
725	publicMethod.prep = function (object) {
726		if (!open) {
727			return;
728		}
729		
730		var callback, speed = settings.transition === "none" ? 0 : settings.speed;
731
732		$loaded.empty().remove(); // Using empty first may prevent some IE7 issues.
733
734		$loaded = $tag(div, 'LoadedContent').append(object);
735		
736		function getWidth() {
737			settings.w = settings.w || $loaded.width();
738			settings.w = settings.mw && settings.mw < settings.w ? settings.mw : settings.w;
739			return settings.w;
740		}
741		function getHeight() {
742			settings.h = settings.h || $loaded.height();
743			settings.h = settings.mh && settings.mh < settings.h ? settings.mh : settings.h;
744			return settings.h;
745		}
746		
747		$loaded.hide()
748		.appendTo($loadingBay.show())// content has to be appended to the DOM for accurate size calculations.
749		.css({width: getWidth(), overflow: settings.scrolling ? 'auto' : 'hidden'})
750		.css({height: getHeight()})// sets the height independently from the width in case the new width influences the value of height.
751		.prependTo($content);
752		
753		$loadingBay.hide();
754		
755		// floating the IMG removes the bottom line-height and fixed a problem where IE miscalculates the width of the parent element as 100% of the document width.
756		
757		$(photo).css({'float': 'none'});
758
759		callback = function () {
760			var total = $related.length,
761				iframe,
762				frameBorder = 'frameBorder',
763				allowTransparency = 'allowTransparency',
764				complete;
765			
766			if (!open) {
767				return;
768			}
769			
770			function removeFilter() { // Needed for IE7 & IE8 in versions of jQuery prior to 1.7.2
771				if ($.support.opacity === false) {
772					$box[0].style.removeAttribute('filter');
773				}
774			}
775			
776			complete = function () {
777				clearTimeout(loadingTimer);
778				$loadingOverlay.hide();
779				trigger(event_complete, settings.onComplete);
780			};
781
782			
783			$title.html(settings.title).add($loaded).show();
784			
785			if (total > 1) { // handle grouping
786				if (typeof settings.current === "string") {
787					$current.html(settings.current.replace('{current}', index + 1).replace('{total}', total)).show();
788				}
789				
790				$next[(settings.loop || index < total - 1) ? "show" : "hide"]().html(sett
790ings.next);
791				$prev[(settings.loop || index) ? "show" : "hide"]().html(settings.previous);
792				
793				slideshow();
794				
795				// Preloads images within a rel group
796				if (settings.preloading) {
797					$.each([getIndex(-1), getIndex(1)], function(){
798						var src,
799							img,
800							i = $related[this],
801							data = $.data(i, colorbox);
802
803						if (data && data.href) {
804							src = data.href;
805							if ($.isFunction(src)) {
806								src = src.call(i);
807							}
808						} else {
809							src = $(i).attr('href');
810						}
811
812						if (src && isImage(data, src)) {
813							src = retinaUrl(data, src);
814							img = document.createElement('img');
815							img.src = src;
816						}
817					});
818				}
819			} else {
820				$groupControls.hide();
821			}
822			
823			if (settings.iframe) {
824				iframe = $tag('iframe')[0];
825				
826				if (frameBorder in iframe) {
827					iframe[frameBorder] = 0;
828				}
829				
830				if (allowTransparency in iframe) {
831					iframe[allowTransparency] = "true";
832				}
833
834				if (!settings.scrolling) {
835					iframe.scrolling = "no";
836				}
837				
838				$(iframe)
839					.attr({
840						src: settings.href,
841						name: (new Date()).getTime(), // give the iframe a unique name to prevent caching
842						'class': prefix + 'Iframe',
843						allowFullScreen : true, // allow HTML5 video to go fullscreen
844						webkitAllowFullScreen : true,
845						mozallowfullscreen : true
846					})
847					.one('load', complete)
848					.appendTo($loaded);
849				
850				$events.one(event_purge, function () {
851					iframe.src = "//about:blank";
852				});
853
854				if (settings.fastIframe) {
855					$(iframe).trigger('load');
856				}
857			} else {
858				complete();
859			}
860			
861			if (settings.transition === 'fade') {
862				$box.fadeTo(speed, 1, removeFilter);
863			} else {
864				removeFilter();
865			}
866		};
867		
868		if (settings.transition === 'fade') {
869			$box.fadeTo(speed, 0, function () {
870				publicMethod.position(0, callback);
871			});
872		} else {
873			publicMethod.position(speed, callback);
874		}
875	};
876
877	function load () {
878		var href, setResize, prep = publicMethod.prep, $inline, request = ++requests;
879		
880		active = true;
881		
882		photo = false;
883		
884		element = $related[index];
885		
886		makeSettings();
887		
888		trigger(event_purge);
889		
890		trigger(event_load, settings.onLoad);
891		
892		settings.h = settings.height ?
893				setSize(settings.height, 'y') - loadedHeight - interfaceHeight :
894				settings.innerHeight && setSize(settings.innerHeight, 'y');
895		
896		settings.w = settings.width ?
897				setSize(settings.width, 'x') - loadedWidth - interfaceWidth :
898				settings.innerWidth && setSize(settings.innerWidth, 'x');
899		
900		// Sets the minimum dimensions for use in image scaling
901		settings.mw = settings.w;
902		settings.mh = settings.h;
903		
904		// Re-evaluate the minimum width and height based on maxWidth and maxHeight values.
905		// If the width or height exceed the maxWidth or maxHeight, use the maximum values instead.
906		if (settings.maxWidth) {
907			settings.mw = setSize(settings.maxWidth, 'x') - loadedWidth - interfaceWidth;
908			settings.mw = settings.w && settings.w < settings.mw ? settings.w : settings.mw;
909		}
910		if (settings.maxHeight) {
911			settings.mh = setSize(settings.maxHeight, 'y') - loadedHeight - interfaceHeight;
912			settings.mh = settings.h && settings.h < settings.mh ? settings.h : settings.mh;
913		}
914		
915		href = settings.href;
916		
917		loadingTimer = setTimeout(function () {
918			$loadingOverlay.show();
919		}, 100);
920		
921		if (settings.inline) {
922			// Inserts an empty placeholder where inline content is being pulled from.
923			// An event is bound to put inline content back when Colorbox closes or loads new content.
924			$inline = $tag(div).hide().insertBefore($(href)[0]);
925
926			$events.one(event_purge, function () {
927				$inline.replaceWith($loaded.children());
928			});
929
930			prep($(href));
931		} else if (settings.iframe) {
932			// IFrame element won't be added to the DOM until it is ready to be displayed,
933			// to avoid problems with DOM-ready JS that might be trying to run in that iframe.
934			prep(" ");
935		} else if (settings.html) {
936			prep(settings.html);
937		} else if (isImage(settings, href)) {
938
939			href = retinaUrl(settings, href);
940
941			photo = document.createElement('img');
942
943			$(photo)
944			.addClass(prefix + 'Photo')
945			.bind('error',function () {
946				settings.title = false;
947				prep($tag(div, 'Error').html(settings.imgError));
948			})
949			.one('load', function () {
950				var percent;
951
952				if (request !== requests) {
953					return;
954				}
955
956				$.each(['alt', 'longdesc', 'aria-describedby'], function(i,val){
957					var attr = $(element).attr(val) || $(element).attr('data-'+val);
958					if (attr) {
959						photo.setAttribute(val, attr);
960					}
961				});
962
963				if (settings.retinaImage && window.devicePixelRatio > 1) {
964					photo.height = photo.height / window.devicePixelRatio;
965					photo.width = photo.width / window.devicePixelRatio;
966				}
967
968				if (settings.scalePhotos) {
969					setResize = function () {
970						photo.height -= photo.height * percent;
971						photo.width -= photo.width * percent;
972					};
973					if (settings.mw && photo.width > settings.mw) {
974						percent = (photo.width - settings.mw) / photo.width;
975						setResize();
976					}
977					if (settings.mh && photo.height > settings.mh) {
978						percent = (photo.height - settings.mh) / photo.height;
979						setResize();
980					}
981				}
982				
983				if (settings.h) {
984					photo.style.marginTop = Math.max(settings.mh - photo.height, 0) / 2 + 'px';
985				}
986				
987				if ($related[1] && (settings.loop || $related[index + 1])) {
988					photo.style.cursor = 'pointer';
989					photo.onclick = function () {
990						publicMethod.next();
991					};
992				}
993
994				photo.style.width = photo.width + 'px';
995				photo.style.height = photo.height + 'px';
996
997				setTimeout(function () { // A pause because Chrome will sometimes report a 0 by 0 size otherwise.
998					prep(photo);
999				}, 1);
1000			});
1001			
1002			setTimeout(function () { // A pause because Opera 10.6+ will sometimes not run the onload function otherwise.
1003				photo.src = href;
1004			}, 1);
1005		} else if (href) {
1006			$loadingBay.load(href, settings.data, function (data, status) {
1007				if (request === requests) {
1008					prep(status === 'error' ? $tag(div, 'Error').html(settings.xhrError) : $(this).contents());
1009				}
1010			});
1011		}
1012	}
1013		
1014	// Navigates to the next page/image in a set.
1015	publicMethod.next = function () {
1016		if (!active && $related[1] && (settings.loop || $related[index + 1])) {
1017			index = getIndex(1);
1018			launch($related[index]);
1019		}
1020	};
1021	
1022	publicMethod.prev = function () {
1023		if (!active && $related[1] && (settings.loop || index)) {
1024			index = getIndex(-1);
1025			launch($related[index]);
1026		}
1027	};
1028
1029	// Note: to use this within an iframe use the following format: parent.jQuery.colorbox.close();
1030	publicMethod.close = function () {
1031		if (open && !closing) {
1032			
1033			closing = true;
1034			
1035			open = false;
1036			
1037			trigger(event_cleanup, settings.onCleanup);
1038			
1039			$window.unbind('.' + prefix);
1040			
1041			$overlay.fadeTo(settings.fadeOut || 0, 0);
1042			
1043			$box.stop().fadeTo(settings.fadeOut || 0, 0, function () {
1044			
1045				$box.add($overlay).css({'opacity': 1, cursor: 'auto'}).hide();
1046				
1047				trigger(event_purge);
1048				
1049				$loaded.empty().remove(); // Using empty first may prevent some IE7 issues.
1050				
1051				setTimeout(function () {
1052					closing = false;
1053					trigger(event_closed, settings.onClosed);
1054				}, 1);
1055			});
1056		}
1057	};
1058
1059	// Removes changes Colorbox made to the document, but does not remove the plugin.
1060	publicMethod.remove = function () {
1061		if (!$box) { return; }
1062
1063		$box.stop();
1064		$.colorbox.close();
1065		$box.stop().remove();
1066		$overlay.remove();
1067		closing = false;
1068		$box = null;
1069		$('.' + boxElement)
1070			.removeData(colorbox)
1071			.removeClass(boxElement);
1072
1073		$(document).unbind('click.'+prefix);
1074	};
1075
1076	// A method for fetching the current element Colorbox is referencing.
1077	// returns a jQuery object.
1078	publicMethod.element = function () {
1079		return $(element);
1080	};
1081
1082	publicMethod.settings = defaults;
1083
1084}(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.