PageSourceSearch

https://www.mccourtconstruction.com/js/frontend/galleries.js

js mccourtconstruction.com collected 2026-10-02 12:08:52 UTC 13,104 bytes, 321 lines download raw bytes

1/* ----------------------------------------------------------------------------------------------------------------------- */
2/* Embedded Gallery with Thumbs ------------------------------------------------------------------------------------------ */
3/* ----------------------------------------------------------------------------------------------------------------------- */
4if($(".embedded-gallery").length) {
5	$('.embedded-gallery').each(function() {
6		var gallery = $(this);
7
8		$(gallery).wrap('<div class="embedded-gallery-wrap"></div>');
9
10		// ---------------------------------
11		// Gallery, Arrows, and Thumbs Setup
12		// ---------------------------------
13		if($(gallery).find('.slide').length>2) {
14			$(gallery).prepend('<a href="#" class="prev-arrow"><span>Prev</span></a><a href="#" class="next-arrow"><span>Next</span></a>');
15			if($(gallery).attr('data-type') != 'chromeless') {
16				$(gallery).after('<div class="embedded-gallery-nav-wrapper"><ul class="embedded-gallery-nav"></ul></div>');
17				$(gallery).addClass('has-embedded-gallery-nav');
18			}
19		}
20
21		var prev_link = ($(gallery).closest('.embedded-gallery-wrap').find('.prev-arrow').length?$(gallery).closest('.embedded-gallery-wrap').find('.prev-arrow'):false);
22		var next_link = ($(gallery).closest('.embedded-gallery-wrap').find('.next-arrow').length?$(gallery).closest('.embedded-gallery-wrap').find('.next-arrow'):false);
23		var gallery_nav = ($(gallery).closest('.embedded-gallery-wrap').find('.embedded-gallery-nav').length?$(gallery).closest('.embedded-gallery-wrap').find('.embedded-gallery-nav'):false);
24
25		var timeout_speed = parseInt($(gallery).attr("data-timeout"));
26
27		// set first slide to be "current" and "no-slideshow" if not enough slides for slideshow
28		if($(gallery).find(".stage .slide:not(.placeholder)").length == 1) $(gallery).find(".stage .slide:not(.placeholder)").addClass('current').addClass('no-slideshow');
29
30		$(gallery).find(".stage").cycle({
31			fx:     $(gallery).attr("data-fx"),
32			speed:  $(gallery).attr("data-speed"),
33			timeout: timeout_speed,
34			prev:   $(prev_link),
35			next:   $(next_link),
36			slideExpr: ".slide:not(.placeholder)",
37			before: function(currSlideElement, nextSlideElement, options, forwardFlag) {
38				if($(currSlideElement).find('iframe').length) {
39					if($(currSlideElement).find('iframe').attr('src').indexOf('vimeo') >= 0) {
40						if(vimeo_js_loaded) {
41							var pause_iframe = $(currSlideElement).find('iframe')[0];
42							var pause_player = new Vimeo.Player(pause_iframe);
43							if (typeof pause_player.pause == 'function') {
44								pause_player.pause();
45							}
46						}
47					} else {
48						if(youtube_iframe_api_is_ready) {
49							var player_id = $(currSlideElement).find('iframe').closest('.ss-youtube-vimeo-player').attr('data-id');
50							if (typeof yt_players[player_id].pauseVideo == 'function') {
51								yt_players[player_id].pauseVideo();
52							}
53						}
54					}
55				}
56
57				$(gallery).find(".slide.current").removeClass("current");
58				$(nextSlideElement).addClass("current");
59
60				$(window).resize();
61
62			},
63			after: function(currSlideElement, nextSlideElement, options, forwardFlag) {
64				if($(gallery).find('.slide.placeholder').find('.ss-youtube-vimeo-player').length) {
65					var vheight = $(gallery).find('.slide').not('.placeholder').find('.ss-youtube-vimeo-player').first().height();
66					var vwidth = $(gallery).find('.slide').not('.placeholder').find('.ss-youtube-vimeo-player').first().width();
67					var percent = (vheight/vwidth) * 100;
68					$(gallery).find('.slide.placeholder').css({'height':'0','padding-top':percent+'%'}).find('.ss-youtube-vimeo-player').hide();
69				}
70
71				$(window).resize();
72			},
73			pager:  $(gallery_nav),
74			// callback fn that creates a thumbnail to use as pager anchor
75			pagerAnchorBuilder: function(idx, slide) {
76				if($(gallery).attr('data-type') != 'chromeless') {
77					if($(slide).find('.ss-youtube-vimeo-player').length) {
78						var img_src = $(slide).find(".ss-youtube-vimeo-player").css("background-image").slice(4, -1).replace(/"/g, "")
79						console.log(img_src);
80					} else {
81						var img_src = $(slide).find(".image").find("img").attr("src");
82					}
83					return '<li><a href="#"><img src="' + img_src + '" alt="Slide #'+(idx+1)+' Anchor Link" /></a></li>';
84				}
85			},
86			slideResize: false,
87			containerResize: true
88		}).addClass('cycle-loaded');
89
90		var thumb_height = $(gallery).attr('data-thumb-height');
91		if(thumb_height) {
92			$(gallery_nav).find("li a").each(function() {
93				$(this).css({"height":thumb_height+"px"});
94			});
95		}
96
97		// ----------------
98		// Caption Handling
99		// ----------------
100		$(".next-arrow, .prev-arrow").click(function() {
101			$(gallery).find(".slide").not(".current").stop(1,1).find(".caption").slideDown("fsat");
102			$(gallery).find(".slide.current").find(".caption").stop(1,1).slideDown("fast");
103		});
104		$(gallery).find(".slide .caption").hide();
105		$(gallery).hover(
106			function() {
107				$(gallery).find(".slide.current").find(".caption").stop(1,1).slideDown("fast");
108			},
109			function() {
110				$(gallery).find(".slide.current").find(".caption").stop(1,1).slideUp("fast");
111			}
112		);
113
114		// -----------------------
115		// Thumb Wrapper Scrolling
116		// -----------------------
117		var embedded_gallery = $(gallery);
118		var div = $(gallery_nav).closest('.embedded-gallery-nav-wrapper');
119		var ul = $(gallery_nav);
120		var divWidth = div.width();
121		var lastLi = ul.find("li:last-child");
122
123		$(div).css({"overflow":"hidden"});
124
125		var deviceAgent = navigator.userAgent.toLowerCase();
126		var agentID = deviceAgent.match(/(iphone|ipod|ipad)/);
127		if (agentID) {
128			$(div).touchwipe({
129				wipeLeft: function() { div.stop(1,1).animate({scrollLeft: div.scrollLeft()+350}, "slow"); },
130				wipeRight: function() {  div.stop(1,1).animate({scrollLeft: div.scrollLeft()-350}, "slow"); },
131				wipeUp: function() {  },
132				wipeDown: function() {  },
133				min_move_x: 20,
134				min_move_y: 20,
135				preventDefaultEvents: false
136			});
137
138			$(embedded_gallery).touchwipe({
139				wipeLeft: function() { $(embedded_gallery).find(".next-arrow").click(); },
140				wipeRight: function() {  $(embedded_gallery).find(".prev-arrow").click(); },
141				wipeUp: function() {  },
142				wipeDown: function() {  },
143				min_move_x: 20,
144				min_move_y: 20,
145				preventDefaultEvents: false
146			});
147		} else {
148			$(div).mousemove(function(e) {
149				var photoThumbOffset = $(div).offset();
150				var relativeThumbPosition = e.pageX-photoThumbOffset.left;
151
152				var ulWidth = lastLi[0].offsetLeft + lastLi.outerWidth();
153
154				var left = (e.pageX - div.offset().left) * (ulWidth-divWidth) / divWidth;
155				div.scrollLeft(left);
156			});
157		}
158
159		$(gallery_nav).waitForImages(function() {
160			var offset = 0;
161			$(ul).find("li").each(function() {
162				$(this).css({"left":offset+"px"});
163				offset = offset + $(this).width()+parseInt($(this).css("padding-left").replace("px",""))+parseInt($(this).css("padding-right").replace("px",""));
164
165				if($(this).find("img").height() < $(this).find("a").height()) {
166					$(this).find("img").css({
167						"height":"100%",
168						"width":"auto"
169					});
170				}
171			});
172
173			$(ul).fadeIn("slow");
174		});
175
176
177		// Fullscreen mode
178		if(typeof $(gallery).attr('data-has-fullscreen-mode') !== 'undefined' && $(gallery).attr('data-has-fullscreen-mode') == 1) {
179			$(gallery).prepend('<div class="inline-gallery-fullscreen-mode-message">Press <span>Esc</span> to exit full screen</div><a href="#" class="inline-gallery-fullscreen-toggle-link" title="Enter Fullscreen Mode">Fullscreen</a>');
180		}
181	});
182
183	$(document).on('click','.inline-gallery-fullscreen-toggle-link',function() {
184		$(this).c
185		var gallery_wrap = $(this).closest('.embedded-gallery-wrap');
186		
187		if($(gallery_wrap).hasClass('fullscreen-mode')) {
188			$('.inline-gallery-wrap.has-gallery-in-fullscreen-mode').removeClass('has-gallery-in-fullscreen-mode').html('').append($(gallery_wrap));
189			$(this).attr('title','Enter Fullscreen Mode');
190			$('body').removeClass('has-fullscreen-inline-gallery');
191
192		} else {
193			$(gallery_wrap).closest('.inline-gallery-wrap').addClass('has-gallery-in-fullscreen-mode');
194			$('body').prepend($(gallery_wrap)).addClass('has-fullscreen-inline-gallery');
195			$(gallery_wrap).clone().appendTo($('.inline-gallery-wrap.has-gallery-in-fullscreen-mode'));
196			$(this).attr('title','Exit Fullscreen Mode');
197		}
198		if($('.embedded-gallery-wrap.focused').length) $('.embedded-gallery-wrap.focused').removeClass('focused');
199		$(this).closest('.embedded-gallery-wrap').addClass('focused');
200		$(gallery_wrap).toggleClass('fullscreen-mode');
201		return false;
202	});
203
204	if($('.inline-gallery-fullscreen-toggle-link').length) {
205		$.when(
206			add_js(shared_root+'/js/jquery/jquery.tipsy/jquery.tipsy.js',1),
207		).done(function() {
208			if($(window).width() > 1024) {
209				$(".inline-gallery-fullscreen-toggle-link").tipsy({
210					live: true,
211					html: true,
212					gravity: 'e'
213				});
214			}
215		});
216		add_css(shared_root+'/js/jquery/jquery.tipsy/jquery.tipsy.css');		
217	}
218
219	// left/right/escape arrow handling
220	$('.embedded-gallery-wrap .prev-arrow, .embedded-gallery-wrap .next-arrow').click(function(e) {
221		if($('.embedded-gallery-wrap.focused').length) $('.embedded-gallery-wrap.focused').removeClass('focused');
222		$(this).closest('.embedded-gallery-wrap').addClass('focused');
223	});
224
225	$(document).on('click','body',function(e) {
226		if($('.embedded-gallery-wrap.focused').length) $('.embedded-gallery-wrap.focused').removeClass('focused');
227		if($(e.target).closest('.embedded-gallery-wrap').length) {
228			$(e.target).closest('.embedded-gallery-wrap').addClass('focused');
229		}
230	});
231
232	$(document).on('keydown','body',function(e) {
233		// arrow left
234		if(e.keyCode == 37 && $('.embedded-gallery-wrap.focused').length) {
235			$('.embedded-gallery-wrap.focused').find('.stage').cycle('prev');
236		}
237
238		// arrow right
239		if(e.keyCode == 39 && $('.embedded-gallery-wrap.focused').length) {
240			$('.embedded-gallery-wrap.focused').find('.stage').cycle('next');
241		}
242
243		// escape
244		if(e.keyCode == 27 && $('.inline-gallery-wrap.has-gallery-in-fullscreen-mode').length) {
245			$('.embedded-gallery-wrap.fullscreen-mode .inline-gallery-fullscreen-toggle-link').click();
246		}
247	});
248	
249}
250
251
252/* ----------------------------------------------------------------------------------------------------------------------- */
253/* Mosaic / Grid Gallery ------------------------------------------------------------------------------------------------- */
254/* ----------------------------------------------------------------------------------------------------------------------- */
255if($('.embedded-mosaic-gallery').length) {
256	$.when(add_js(shared_root+'/js/jquery/jquery.masonry/masonry.pkgd.min.js')).done(function() {
257		$('body').addClass('mosaic-gallery-page');
258
259		$('.embedded-mosaic-gallery').each(function() {
260			var $container = $(this);
261			$container.before('<p id="no-records" class="dn bmt tac">There are no photos currently added to this gallery.</p>');
262			$container.prepend('<div class="grid-sizer"></div><div class="gutter-sizer"></div>');
263
264			if($(window).width()>600) {
265				$container.find('img').each(function() {
266					var title = '';
267					if($(this).closest('.slide').length && $(this).closest('.slide').find('.caption').length) {
268						var re1 = new RegExp("'", 'g');
269						var re2 = new RegExp('"', 'g');
270						title = $(this).closest('.slide').find('.caption').text().replace(re1,'&#039;').replace(re2,'&quot;');
271					}
272					var url = $(this).attr('src');
273					var has_external_url = false;
274					if($(this).closest('a').length) {
275						url = $(this).closest('a').attr('href');
276						has_external_url = 1;
277					}
278					$(this).wrap('<a href="'+url+'" target="_blank" '+(!has_external_url?'class="fancybox" rel="mosaic-photo-gallery-link"':'')+' title="'+title+'"></a>');
279				});
280			}
281
282			init_masonry();
283
284			$container.waitForImages(function() {
285				init_masonry();
286				setTimeout(function() { $container.addClass('images-loaded'); }, 500);
287
288				if(parseInt($container.find('.slide').first().css('margin-bottom').replace('px','')) > 0) {
289					var masonry_t;
290					$(window).resize(function() {
291						clearTimeout(masonry_t);
292						masonry_t = setTimeout(function() {
293							$('.slide').css({'margin-bottom':$('.gutter-sizer').width()+'px'});
294							$container.masonry('layout');
295						},250);
296					}).resize();
297				}
298			});
299		});
300
301		function init_masonry() {
302			$('.embedded-mosaic-gallery').each(function() {
303				$(this).masonry({
304					"columnWidth"	: ".grid-sizer",
305					"itemSelector"	: ".slide",
306					"gutter" 		: ".gutter-sizer"
307				});
308			});
309		}
310
311		if($(window).width()>600) {
312			add_css(shared_root+'/js/jquery/jquery.fancybox/jquery.fancybox-1.3.4.css');
313			$.when(add_js(shared_root+'/js/jquery/jquery.fancybox/jquery.fancybox-1.3.4.pack.js')).done(function() {
314				$('.fancybox').fancybox({
315					'overlayColor' : '#000',
316					'padding': 0
317				});
318			});
319		}
320	});
321}

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.