PageSourceSearch

https://carlessune.com/wp-content/themes/foundry/style/js/scripts.js?ver=1.0.0

js carlessune.com collected 2026-10-05 20:00:30 UTC 34,221 bytes, 1,008 lines download raw bytes

1/*-----------------------------------------------------------------------------------*/
2/*  WordPress
3/*-----------------------------------------------------------------------------------*/
4jQuery(document).ready(function() { 
5	
6	/**
7	 * Mega Menu Stuff
8	 */
9	jQuery('nav .wpb_column').unwrap().parent().removeClass('subnav').addClass('mega-menu');
10	jQuery('.mega-menu h4').each(function(){
11		var $text = jQuery(this).text();
12		jQuery(this).next().find('ul').prepend('<li><span class="title">'+ $text +'</span></li>')
13		jQuery(this).remove();
14	});
15	jQuery('.mega-menu ul').removeClass('menu').unwrap().unwrap().unwrap().wrap('<li />');
16	jQuery('.mega-menu > div > li').unwrap();
17	
18	/**
19	 * Forms
20	 */
21	jQuery('.custom-forms .wpcf7-checkbox .wpcf7-list-item, .custom-forms .gfield_checkbox > li').addClass('checkbox-option').prepend('<div class="inner" />');
22	jQuery('.custom-forms .wpcf7-radio .wpcf7-list-item, .custom-forms .gfield_radio > li').addClass('radio-option').prepend('<div class="inner" />');
23	
24	/**
25	 * Single post stuff
26	 */
27	jQuery('.feed-item .more-link').parent('p').remove();
28	
29	/**
30	 * Select items
31	 */
32	jQuery('select:not(.checkout select)').wrap('<div class="select-option" />').parent().prepend('<i class="ti-angle-down"></i>');
33	
34	jQuery('.blog-carousel').owlCarousel({
35		nav: false,
36		dots: false,
37		loop: true,
38		responsive:{
39	        0:{
40	            items:1
41	        },
42	        700:{
43	            items:2
44	        },
45	        1100:{
46	            items:3
47	        },
48	        1600:{
49	            items:4
50	        }
51	    }
52	});
53	
54	jQuery('a[rel*="attachment"]').attr('data-lightbox', 'true');
55	
56});
57/*-----------------------------------------------------------------------------------*/
58/*	Document Ready Stuff
59/*-----------------------------------------------------------------------------------*/
60var mr_firstSectionHeight,
61    mr_nav,
62    mr_fixedAt,
63    mr_navOuterHeight,
64    mr_navScrolled = false,
65    mr_navFixed = false,
66    mr_outOfSight = false,
67    mr_floatingProjectSections,
68    mr_scrollTop = 0;
69
70jQuery(document).ready(function() { 
71    "use strict";
72    
73    //Cache Selectors
74    var $window = jQuery(window);
75    var mobileNavHeight = jQuery('nav.fixed').outerHeight();
76
77    // Smooth scroll to inner links
78    if (jQuery(window).width() > 991) {
79	    jQuery('nav a[href^="#"]:not(a[href="#"]), .back-to-top, a.btn[href^="#"], .hero-header a[href^="#"]').smoothScroll({
80	        offset: -55,
81	        speed: 800
82	    });
83	} else {
84		jQuery('nav a[href^="#"]:not(a[href="#"]), .back-to-top, a.btn[href^="#"], .hero-header a[href^="#"]').smoothScroll({
85	        offset: -mobileNavHeight,
86	        speed: 800
87	    });
88	}
89    
90    //WooCommerce VC Element Fixes
91    jQuery('.woocommerce.columns-2 .col-sm-4').addClass('col-sm-6').removeClass('col-sm-4');
92    jQuery('.woocommerce.columns-2 .col-md-4').addClass('col-md-6').removeClass('col-md-4');
93    jQuery('.woocommerce.columns-4 .col-sm-4').addClass('col-sm-3').removeClass('col-sm-4');
94    jQuery('.woocommerce.columns-4 .col-md-4').addClass('col-md-3').removeClass('col-md-4');
95
96    // Update scroll variable for scrolling functions
97    addEventListener('scroll', function() {
98        mr_scrollTop = window.pageYOffset;
99    }, false);
100
101    // Append .background-image-holder <img>'s as CSS backgrounds
102    jQuery('.background-image-holder').each(function() {
103        var imgSrc = jQuery(this).children('img').attr('src');
104        jQuery(this).css('background-image', 'url("' + imgSrc + '")');
105        jQuery(this).children('img').hide();
106        jQuery(this).css('background-position', 'initial');
107    });
108
109    // Fade in background images
110    setTimeout(function() {
111        jQuery('.background-image-holder').each(function() {
112            jQuery(this).addClass('fadeIn');
113        });
114    }, 200);
115
116    // Initialize Tooltips
117    jQuery('[data-toggle="tooltip"]').tooltip();
118    
119    // Icon bulleted lists
120	jQuery('ul[data-bullet]').each(function(){
121	   var bullet = jQuery(this).attr('data-bullet');
122	   jQuery(this).find('li').prepend('<i class="'+bullet+'"></i>');
123	});
124
125    // Checkboxes
126    jQuery('body').on('click', '.checkbox-option', function(){
127        jQuery(this).toggleClass('checked');
128		var checkbox = jQuery(this).find('input');
129		if (checkbox.prop('checked') === false) {
130		    checkbox.prop('checked', true);
131		} else {
132		    checkbox.prop('checked', false);
133		}
134    });
135
136    // Radio Buttons
137    jQuery('body').on('click', '.radio-option', function(){
138		var checked = jQuery(this).hasClass('checked'); // Get the current status of the radio
139		
140		var name = jQuery(this).find('input').attr('name'); // Get the name of the input clicked
141		
142		if (!checked) {
143		
144		    jQuery('input[name="' + name + '"]').parent().removeClass('checked');
145		
146		    jQuery(this).addClass('checked');
147		
148		    jQuery(this).find('input').prop('checked', true);
149		
150		}
151    });
152
153    // Accordions
154    jQuery('.accordion').not('.team-member .accordion').each(function(){
155    	jQuery('li', this).eq(0).addClass('active');
156    });
157    
158    jQuery('.accordion li').click(function() {
159        if (jQuery(this).closest('.accordion').hasClass('one-open')) {
160            jQuery(this).closest('.accordion').find('li').removeClass('active');
161            jQuery(this).addClass('active');
162        } else {
163            jQuery(this).toggleClass('active');
164        }
165		if(typeof window.mr_parallax !== "undefined"){
166		    setTimeout(mr_parallax.windowLoad, 500);
167		}
168    });
169
170    // Tabbed Content
171    jQuery('.tabbed-content').each(function() {
172    	jQuery('li', this).eq(0).addClass('active');
173        jQuery(this).append('<ul class="content"></ul>');
174    });
175
176    jQuery('.tabs li').each(function() {
177        var originalTab = jQuery(this),
178            activeClass = "";
179        if (originalTab.is('.tabs > li:first-child')) {
180            activeClass = ' class="active"';
181        }
182        var tabContent = originalTab.find('.tab-content').detach().wrap('<li' + activeClass + '></li>').parent();
183        originalTab.closest('.tabbed-content').find('.content').append(tabContent);
184    });
185
186    jQuery('.tabs li').click(function() {
187        jQuery(this).closest('.tabs').find('li').removeClass('active');
188        jQuery(this).addClass('active');
189        var liIndex = jQuery(this).index() + 1;
190        jQuery(this).closest('.tabbed-content').find('.content>li').removeClass('active');
191        jQuery(this).closest('.tabbed-content').find('.content>li:nth-of-type(' + liIndex + ')').addClass('active');
192    });
193
194    // Progress Bars
195    jQuery('.progress-bar').each(function() {
196        jQuery(this).css('width', jQuery(this).attr('data-progress') + '%');
197    });
198    
199    if( jQuery('body').hasClass('perm-fixed-nav') ){
200    	jQuery('nav').addClass('absolute');
201    }
202
203    // Navigation
204    if (!jQuery('nav').hasClass('fixed') && !jQuery('nav').hasClass('absolute')) {
205
206        // Make nav container height of nav
207        jQuery('.nav-container').css('min-height', jQuery('nav').outerHeight(true));
208
209        jQuery(window).resize(function() {
210            jQuery('.nav-container').css('min-height', jQuery('nav').outerHeight(true));
211        });
212
213        // Compensate the height of parallax element for inline nav
214        if (jQuery(window).width() > 768) {
215            jQuery('.parallax:nth-of-type(1) .background-image-holder').css('top', -(jQuery('nav').outerHeight(true)));
216        }
217
218        // Adjust fullscreen elements
219        if (jQuery(window).width() > 768) {
220            jQuery('section.fullscreen:nth-of-type(1)').css('height', (jQuery(window).height() - jQuery('nav').outerHeight(true)));
221        }
222
223    } else {
224        jQuery('body').addClass('nav-is-overlay');
225        
226        // Compensate the height of parallax element for inline nav
227        if (jQuery(window).width() > 768) {
228        	if(jQuery('body').hasClass('admin-bar')){
229            	jQuery('.parallax:nth-of-type(1) .background-image-holder').css('top', -32);
230        	} else {
231        		jQuery('.parallax:nth-of-type(1) .background-image-holder').css('top', 0);	
232        	}
233        }
234    }
235
236    if (jQuery('nav').hasClass('bg-dark')) {
237        jQuery('.nav-container').addClass('bg-dark');
238    }
239	
240	jQuery('.perm-fixed-nav').css('padding-top', jQuery('.nav-container nav').outerHeight());
241
242    // Fix nav to top while scrolling
243    mr_nav = jQuery('body .nav-container nav:first');
244    mr_navOuterHeight = jQuery('body .nav-container nav:first').outerHeight();
245    mr_fixedAt = typeof mr_nav.attr('data-fixed-at') !== typeof undefined ? parseInt(mr_nav.attr('data-fixed-at').replace('px', '')) : parseInt(j
245Query('section:nth-of-type(1)').outerHeight());
246    window.addEventListener("scroll", updateNav, false);
247
248    // Menu dropdown positioning
249    jQuery('.menu > li > ul').each(function() {
250        var menu = jQuery(this).offset();
251        var farRight = menu.left + jQuery(this).outerWidth(true);
252        if (farRight > jQuery(window).width() && !jQuery(this).hasClass('mega-menu')) {
253            jQuery(this).addClass('make-right');
254        } else if (farRight > jQuery(window).width() && jQuery(this).hasClass('mega-menu')) {
255            var isOnScreen = jQuery(window).width() - menu.left;
256            var difference = jQuery(this).outerWidth(true) - isOnScreen;
257            jQuery(this).css('margin-left', -(difference));
258        }
259    });
260
261    // Mobile Menu
262    jQuery('.mobile-toggle').click(function() {
263        jQuery('.nav-bar').toggleClass('nav-open');
264        jQuery(this).toggleClass('active');
265    });
266
267    jQuery('.menu li').click(function(e) {
268        if (!e) e = window.event;
269        e.stopPropagation();
270        if (jQuery(this).find('ul').length) {
271            jQuery(this).toggleClass('toggle-sub');
272        } else {
273            jQuery(this).parents('.toggle-sub').removeClass('toggle-sub');
274        }
275    });
276	
277	jQuery('.menu li a[href^="#"]:not(a[href="#"])').click(function() {
278		jQuery(this).closest('.nav-bar').removeClass('nav-open');
279	});
280	
281    jQuery('.module.widget-handle').click(function() {
282        jQuery(this).toggleClass('toggle-widget-handle');
283    });
284    
285    jQuery('.search-widget-handle .search-form input').click(function(e){
286        if (!e) e = window.event;
287        e.stopPropagation();
288    });
289    
290    // Offscreen Nav
291	if(jQuery('.offscreen-toggle').length){
292		jQuery('body').addClass('has-offscreen-nav');
293	} else{
294        jQuery('body').removeClass('has-offscreen-nav');
295    }
296	
297	jQuery('.offscreen-toggle').click(function(){
298		jQuery('.main-container').toggleClass('reveal-nav');
299		jQuery('nav').toggleClass('reveal-nav');
300		jQuery('.offscreen-container').toggleClass('reveal-nav');
301	});
302	
303	jQuery('.main-container').click(function(){
304		if(jQuery(this).hasClass('reveal-nav')){
305			jQuery(this).removeClass('reveal-nav');
306			jQuery('.offscreen-container').removeClass('reveal-nav');
307			jQuery('nav').removeClass('reveal-nav');
308		}
309	});
310	
311	jQuery('.offscreen-container a').click(function(){
312		jQuery('.offscreen-container').removeClass('reveal-nav');
313		jQuery('.main-container').removeClass('reveal-nav');
314		jQuery('nav').removeClass('reveal-nav');
315	});
316	
317	if( false == wp_data.all_title || 'undefined' == wp_data.all_title || '' == wp_data.all_title ){
318		wp_data.all_title = 'All';	
319	}
320
321    // Populate filters
322    jQuery('.projects').each(function() {
323
324        var filters = "";
325
326        jQuery(this).find('.project').each(function() {
327
328            var filterTags = jQuery(this).attr('data-filter').split(',');
329
330            filterTags.forEach(function(tagName) {
331                if (filters.indexOf(tagName) == -1) {
332                    filters += '<li data-filter="' + tagName + '">' + capitaliseFirstLetter(tagName) + '</li>';
333                }
334            });
335            
336            jQuery(this).closest('.projects').find('ul.filters').empty().append('<li data-filter="all" class="active">' + wp_data.all_title + '</li>').append(filters);
337            
338        });
339        
340    });
341
342    jQuery('.filters li').click(function() {
343        var filter = jQuery(this).attr('data-filter');
344        jQuery(this).closest('.filters').find('li').removeClass('active');
345        jQuery(this).addClass('active');
346
347        jQuery(this).closest('.projects').find('.project').each(function() {
348            var filters = jQuery(this).data('filter');
349
350            if (filters.indexOf(filter) == -1) {
351                jQuery(this).addClass('inactive');
352            } else {
353                jQuery(this).removeClass('inactive');
354            }
355        });
356
357        if (filter == 'all') {
358            jQuery(this).closest('.projects').find('.project').removeClass('inactive');
359        }
360    });
361
362    // Twitter Feed
363    jQuery('.tweets-feed').each(function(index) {
364        jQuery(this).attr('id', 'tweets-' + index);
365    }).each(function(index) {
366    	
367    	if(!( '' == jQuery('#tweets-' + index).attr('data-user-name') || undefined == jQuery('#tweets-' + index).attr('data-user-name') )){
368    		
369    		var TweetConfig = {
370    			"profile": {"screenName": jQuery('#tweets-' + index).attr('data-user-name')},
371    			"domId": '',
372    			"maxTweets": jQuery('#tweets-' + index).attr('data-amount'),
373    			"enableLinks": true,
374    			"showUser": true,
375    			"showTime": true,
376    			"dateFunction": '',
377    			"showRetweet": false,
378    			"customCallback": handleTweets
379    		};
380    		
381    	} else {
382    	
383	    	var TweetConfig = {
384	    		"id": jQuery('#tweets-' + index).attr('data-widget-id'),
385	    		"domId": '',
386	    		"maxTweets": jQuery('#tweets-' + index).attr('data-amount'),
387	    		"enableLinks": true,
388	    		"showUser": true,
389	    		"showTime": true,
390	    		"dateFunction": '',
391	    		"showRetweet": false,
392	    		"customCallback": handleTweets
393	    	};
394    	
395    	}
396
397        function handleTweets(tweets) {
398            var x = tweets.length;
399            var n = 0;
400            var element = document.getElementById('tweets-' + index);
401            var html = '<ul class="slides">';
402            while (n < x) {
403                html += '<li>' + tweets[n] + '</li>';
404                n++;
405            }
406            html += '</ul>';
407            element.innerHTML = html;
408            return html;
409        }
410
411        twitterFetcher.fetch(TweetConfig);
412
413    });
414
415    // Instagram Feed
416    if( jQuery('.instafeed').length && wp_data.access_token && wp_data.client_id ){
417    	jQuery.fn.spectragram.accessData = {
418			accessToken: wp_data.access_token,
419			clientID: wp_data.client_id
420		};	
421		
422		jQuery('.instafeed').each(function() {
423			var method = ( jQuery(this).attr('data-method') ) ? jQuery(this).attr('data-method') : 'getUserFeed';
424		    jQuery(this).children('ul').spectragram( method, {
425		        query: jQuery(this).attr('data-user-name'),
426		        max: jQuery(this).attr('data-max')
427		    });
428		});
429    }   
430    
431    // Flickr Feeds
432	if(jQuery('.flickr-feed').length){
433	   jQuery('.flickr-feed').each(function(){
434	   	
435	   		var flickrThis = jQuery(this),
436	   			userID = flickrThis.attr('data-user-id'),
437	   			albumID = flickrThis.attr('data-album-id');
438	   			
439	       flickrThis.flickrPhotoStream({ id: userID, setId: albumID, container: '<li class="masonry-item" />' }).done(function(){
440	       		jQuery(window).load(function(){
441	       			flickrThis.masonry();
442	       		});
443	       });  
444	         
445	   });
446	}
447	
448	var foundryAutoplay = ( wp_data.hero_autoplay == 'false' ) ? false : true;
449
450    // Image Sliders
451	jQuery('.slider-all-controls').flexslider({
452	    start: function(slider){
453	        if(slider.find('.slides li:first-child').find('.fs-vid-background video').length){
454	          slider.find('.slides li:first-child').find('.fs-vid-background video').get(0).play(); 
455	        }
456	    },
457	    after: function(slider){
458	        if(slider.find('.fs-vid-background video').length){
459	           if(slider.find('li:not(.flex-active-slide)').find('.fs-vid-background video').length){
460	                slider.find('li:not(.flex-active-slide)').find('.fs-vid-background video').get(0).pause();
461	            }
462	            if(slider.find('.flex-active-slide').find('.fs-vid-background video').length){
463	                slider.find('.flex-active-slide').find('.fs-vid-background video').get(0).play();
464	            }
465	        }
466	    },
467	    animation: wp_data.hero_animation,
468	    slideshow: foundryAutoplay,
469	    slideshowSpeed: wp_data.hero_timer
470	});
471    jQuery('.slider-paging-controls').flexslider({
472        animation: "slide",
473        directionNav: false
474    });
475    jQuery('.slider-arrow-controls').flexslider({
476        controlNav: false
477    });
478    jQuery('.slider-thumb-controls .slides li').each(function() {
479        var imgSrc = jQuery(this).find('img').attr('src');
480        jQuery(this).attr('data-thumb', imgSrc);
481    });
482    jQuery('.slider-thumb-controls').flexslider({
483        animation: "slide",
484        controlNav: "thumbnails",
485        directionNav: true
486    });
487    
488    if( jQuery(window).width() < 491 ){
489    	jQuery('.logo-carousel').flexslider({
490    	    minItems: 1,
491    	    maxItems: 1,
492    	    move: 1,
493    	    itemWidth: 200,
494    	    itemMargin: 0,
495    	    animation: "slide",
496    	    slideshow: true,
497    	    slideshowSpeed: 3000,
498    	    directionNav: false,
499    	    controlNav: false
500    	});
501    } else {
502	    jQuery('.logo-carousel').flexslider({
503	        minItems: 1,
504	        maxItems: 4,
505	        move: 1,
506	        itemWidth: 200,
507	        itemMargin: 0,
508	        animation: "slide",
509	        slideshow: true,
510	        slideshowSpeed: 3000,
511	        directionNav: false,
512	        controlNav: false
513	    });
514    }
515    
516    // Lightbox gallery titles
517    jQuery('.lightbox-grid li a').each(function(){
518    	var galleryTitle = jQuery(this).closest('.lightbox-grid').attr('data-gallery-title');
519    	jQuery(this).attr('data-lightbox', galleryTitle);
520    });
521    
522	// Multipurpose Modals
523	if(jQuery('.foundry_modal').length){
524		var modalScreen = jQuery('<div class="modal-screen">').appendTo('body');
525	}
526	
527	jQuery(document).on('wheel mousewheel scroll', '.foundry_modal, .modal-screen', function(evt){
528		jQuery(this).get(0).scrollTop += (evt.originalEvent.deltaY); 
529		return false;
530	});
531	
532	jQuery('.modal-container').each(function(index) {
533	  if(jQuery(this).find('iframe[src]').length){
534	  	jQuery(this).find('.foundry_modal').addClass('iframe-modal');
535	  	jQuery('iframe', this).appendTo('.iframe-modal');
536	  	jQuery('.iframe-modal > div', this).remove();
537	  	jQuery(this).find('.foundry_modal').clone().appendTo('body');
538	  }
539	});
540	
541	jQuery('.btn-modal').click(function(){
542		var linkedModal = jQuery('section').closest('body').find('.foundry_modal[modal-link="' + jQuery(this).attr('modal-link') + '"]');
543	  jQuery('.modal-screen').toggleClass('reveal-modal');
544	  if(linkedModal.find('iframe').length){
545      	linkedModal.find('iframe').attr('src', linkedModal.find('iframe').attr('data-src'));
546      }
547	  linkedModal.toggleClass('reveal-modal');
548	  return false;
549	});
550	
551	// Autoshow modals
552	jQuery('.foundry_modal[modal-link][data-time-delay]').each(function(){
553		var modal = jQuery(this);
554		var delay = modal.attr('data-time-delay');
555		modal.prepend(jQuery('<i class="ti-close close-modal">'));
556		if(typeof modal.attr('data-cookie') != "undefined"){
557	  	if(!mr_cookies.hasItem(modal.attr('data-cookie'))){
558	          setTimeout(function(){
559	  			modal.addClass('reveal-modal');
560	  			jQuery('.modal-screen').addClass('reveal-modal');
561	  		},delay);
562	      }
563	  }else{
564	      setTimeout(function(){
565	      	  jQuery('.foundry_modal').removeClass('reveal-modal');
566	      	  jQuery('.modal-screen').removeClass('reveal-modal');
567	          modal.addClass('reveal-modal');
568	          jQuery('.modal-screen').addClass('reveal-modal');
569	      }, delay);
570	  }
571	});
572	
573	jQuery('.close-modal:not(.modal-strip .close-modal)').click(function(){
574		var modal = jQuery(this).closest('.foundry_modal');
575		modal.toggleClass('reveal-modal');
576		if(typeof modal.attr('data-cookie') != "undefined"){
577			mr_cookies.setItem(modal.attr('data-cookie'), "true", Infinity);
578		}
579		jQuery('.modal-screen').toggleClass('reveal-modal');
580		modal.find('iframe').attr('data-src', modal.find('iframe').attr('src'));
581		modal.find('iframe').attr('src', '');
582	});
583	
584	jQuery('.modal-screen').click(function(){
585		jQuery('.foundry_modal.reveal-modal').toggleClass('reveal-modal');
586		jQuery(this).toggleClass('reveal-modal');
587	});
588	
589	jQuery(document).keyup(function(e) {
590		 if (e.keyCode == 27) { // escape key maps to keycode `27`
591			jQuery('.foundry_modal').removeClass('reveal-modal');
592			jQuery('.modal-screen').removeClass('reveal-modal');
593		}
594	});
595	
596	// Modal Strips
597	jQuery('.modal-strip').each(function(){
598		if(!jQuery(this).find('.close-modal').length){
599			jQuery(this).append(jQuery('<i class="ti-close close-modal">'));
600		}
601		var modal = jQuery(this);
602	
603	  if(typeof modal.attr('data-cookie') != "undefined"){
604	     
605	      if(!mr_cookies.hasItem(modal.attr('data-cookie'))){
606	      	setTimeout(function(){
607	      		modal.addClass('reveal-modal');
608	      	},1000);
609	      }
610	  }else{
611	      setTimeout(function(){
612	              modal.addClass('reveal-modal');
613	      },1000);
614	  }
615	});
616	
617	jQuery('.modal-strip .close-modal').click(function(){
618	  var modal = jQuery(this).closest('.modal-strip');
619	  if(typeof modal.attr('data-cookie') != "undefined"){
620	      mr_cookies.setItem(modal.attr('data-cookie'), "true", Infinity);
621	  }
622		jQuery(this).closest('.modal-strip').removeClass('reveal-modal');
623		return false;
624	});
625
626
627    // Video Modals
628    jQuery('section').closest('body').find('.modal-video[video-link]').remove();
629
630    jQuery('.modal-video-container').each(function(index) {
631        jQuery(this).find('.play-button').attr('video-link', index);
632        jQuery(this).find('.modal-video').clone().appendTo('body').attr('video-link', index);
633    });
634
635    jQuery('.modal-video-container .play-button').click(function() {
636        var linkedVideo = jQuery('section').closest('body').find('.modal-video[video-link="' + jQuery(this).attr('video-link') + '"]'),
637        	iFrame = linkedVideo.find('iframe');
638        	
639        iFrame.attr('src', iFrame.prev('.src-holder').attr('data-src'));
640        	
641        linkedVideo.toggleClass('reveal-modal');
642
643        if (linkedVideo.find('video').length) {
644            linkedVideo.find('video').get(0).play();
645        }
646    });
647
648    jQuery('section').closest('body').find('.modal-video').click(function() {
649        jQuery(this).closest('.modal-video').toggleClass('reveal-modal');
650        
651        var $iframe = jQuery('iframe', this),
652        	$src = $iframe.attr('src');
653        	
654        $iframe.before('<div class="src-holder" data-src="'+ $src +'" />');
655        $iframe.attr('src','');
656        
657        if(jQuery(this).siblings('video').length){
658        	jQuery(this).siblings('video').get(0).pause();
659        }
660    });
661
662    // Local Videos
663    jQuery('section').closest('body').find('.local-video-container .play-button').click(function() {
664        jQuery(this).siblings('.background-image-holder').removeClass('fadeIn');
665        jQuery(this).siblings('.background-image-holder').css('z-index', -1);
666        jQuery(this).css('opacity', 0);
667        jQuery(this).siblings('video').get(0).play();
668    });
669
670    // Youtube Videos
671	jQuery('section').closest('body').find('.player').each(function() {
672	    var section = jQuery(this).closest('section');
673	    section.find('.container').addClass('fadeOut');
674	    var src = jQuery(this).attr('data-video-id');
675	    var startat = jQuery(this).attr('data-start-at');
676	    jQuery(this).attr('data-property', "{videoURL:'http://youtu.be/" + src + "',containment:'self',autoPlay:true, mute:true, startAt:" + startat + ", opacity:1, showControls:false}");
677	});
678	
679	if(jQuery('.player').length){
680	    jQuery('.player').each(function(){
681	
682	        var section = jQuery(this).closest('section');
683	        var player = section.find('.player');
684	        player.YTPlayer();
685	        player.on("YTPStart",function(e){
686	            section.find('.container').removeClass('fadeOut');
687	            section.find('.masonry-loader').addClass('fadeOut');
688	        });
689	
690	    });
691	}
692
693    // Interact with Map once the user has clicked (to prevent scrolling the page = zooming the map
694    jQuery('.map-holder').click(function() {
695        jQuery(this).addClass('interact');
696    });
697	
698	if(jQuery('.map-holder').length){
699	    $window.scroll(function() {
700	        if (jQuery('.map-holder.interact').length) {
701	            jQuery('.map-holder.interact').removeClass('interact');
702	        }
703	    });
704	}
705
706    // Countdown Timers
707    if (jQuery('.countdown').length) {
708        jQuery('.countdown').each(function() {
709            var date = jQuery(this).attr('data-date');
710            jQuery(this).countdown(date, function(event) {
711                jQuery(this).text(
712                    event.strftime('%D days %H:%M:%S')
713                );
714            });
715        });
716    }
717
718    // Disable parallax on mobile
719    if ((/Android|iPhone|iPad|iPod|BlackBerry|Windows Phone/i).test(navigator.userAgent || navigator.vendor || window.opera)) {
720        jQuery('section').removeClass('parallax');
721        jQuery('.vid-bg .player, .vid-bg .masonry-loader').css('display', 'none');
722        jQuery('.vid-bg .background-image-holder').css('display', 'block');
723    }
724    
725    if(jQuery('.counter').length){
726    	jQuery('.counter').counterUp();
727    }
728    
729    $window.trigger('resize');
730
731    // BACK TO TOP
732    jQuery("a[href='#top']").click(function(e) {
733        e.preventDefault();
734        jQuery("html, body").animate({ scrollTop: 0 }, "slow");
735        return false;
736    });
737
738}); 
739/*-----------------------------------------------------------------------------------*/
740/*	Window Load Stuff
741/*-----------------------------------------------------------------------------------*/
742jQuery(window).load(function() { 
743    "use strict";
744    
745    var $window = jQuery(window);
746
747    // Initialize Masonry
748    if (jQuery('.masonry').length) {
749        var container = document.querySelector('.masonry');
750        var msnry = new Masonry(container, {
751            itemSelector: '.masonry-item'
752        });
753
754        msnry.on('layoutComplete', function() {
755
756            mr_firstSectionHeight = jQuery('.main-container section:nth-of-type(1)').outerHeight(true);
757            if( 0 == jQuery('section').length || 1 == jQuery('section').length ){
758            	mr_firstSectionHeight = 300;	
759            }
760
761            // Fix floating project filters to bottom of projects container
762            if (jQuery('.filters.floating').length) {
763                setupFloatingProjectFilters();
764                updateFloatingFilters();
765                window.addEventListener("scroll", updateFloatingFilters, false);
766            }
767
768            jQuery('.masonry').addClass('fadeIn');
769            jQuery('.masonry-loader').addClass('fadeOut');
770            if (jQuery('.masonryFlyIn').length) {
771                masonryFlyIn();
772            }
773        });
774
775        msnry.layout();
776    }
777    
778    if (jQuery('.wp-gallery-masonry').length) {
779        jQuery('.wp-gallery-masonry').each(function(){
780        	
781	        var $this = jQuery(this),
782	        	msnry = new Masonry($this[0], {
783	            itemSelector: '.masonry-item'
784	        });
785	
786	        msnry.on('layoutComplete', function() {
787	
788	            $this.addClass('fadeIn');
789	            jQuery('.masonry-loader', $this).addClass('fadeOut');
790	            if (jQuery('.masonryFlyIn').length) {
791	                masonryFlyIn();
792	            }
793	        });
794	
795	        msnry.layout();
796	        
797        });
798    }
799
800    // Initialize twitter feed
801    var setUpTweets = setInterval(function() {
802        if (jQuery('.tweets-slider').find('li.flex-active-slide').length) {
803            clearInterval(setUpTweets);
804            return;
805        } else {
806            if (jQuery('.tweets-slider').length) {
807                jQuery('.tweets-slider').flexslider({
808                    directionNav: false,
809                    controlNav: false
810                });
811            }
812        }
813    }, 500);
814
815    mr_firstSectionHeight = jQuery('.main-container section:nth-of-type(1)').outerHeight(true);
816    if( 0 == jQuery('section').length || 1 == jQuery('section').length ){
817    	mr_firstSectionHeight = 300;	
818    }
819	
820	$window.trigger('resize');
821	
822	setTimeout(function(){
823		$window.trigger('resize');
824	}, 2500);
825	
826	jQuery('.perm-fixed-nav').css('padding-top', jQuery('.nav-container nav').outerHeight());
827	
828    if(typeof window.mr_parallax !== "undefined"){
829        setTimeout(mr_parallax.windowLoad, 500);
830    }
831
832    jQuery('.clone a').attr('data-lightbox', 'false');
833
834}); 
835/*-----------------------------------------------------------------------------------*/
836/*	Custom Functions
837/*-----------------------------------------------------------------------------------*/
838function updateNav() {
839
840    var scrollY = mr_scrollTop;
841
842    if (scrollY <= 0) {
843        if (mr_navFixed) {
844            mr_navFixed = false;
845            mr_nav.removeClass('fixed');
846        }
847        if (mr_outOfSight) {
848            mr_outOfSight = false;
849            mr_nav.removeClass('outOfSight');
850        }
851        if (mr_navScrolled) {
852            mr_navScrolled = false;
853            mr_nav.removeClass('scrolled');
854        }
855        return;
856    }
857
858    if (scrollY > mr_navOuterHeight + mr_fixedAt) {
859        if (!mr_navScrolled) {
860            mr_nav.addClass('scrolled');
861            mr_navScrolled = true;
862            return;
863        }
864    } else {
865        if (scrollY > mr_navOuterHeight) {
866           if (!mr_navFixed) {
867                mr_nav.addClass('fixed');
868                mr_navFixed = true;
869            }
870
871            if (scrollY > mr_navOuterHeight +10) {
872                if (!mr_outOfSight) {
873                    mr_nav.addClass('outOfSight');
874                    mr_outOfSight = true;
875                }
876            } else {
877                if (mr_outOfSight) {
878                    mr_outOfSight = false;
879                    mr_nav.removeClass('outOfSight');
880                }
881            }
882        } else {
883            if (mr_navFixed) {
884                mr_navFixed = false;
885                mr_nav.removeClass('fixed');
886            }
887            if (mr_outOfSight) {
888                mr_outOfSight = false;
889                mr_nav.removeClass('outOfSight');
890            }
891        }
892
893        if (mr_navScrolled) {
894            mr_navScrolled = false;
895            mr_nav.removeClass('scrolled');
896        }
897
898    }
899}
900function capitaliseFirstLetter(string) {
901    return string.charAt(0).toUpperCase() + string.slice(1);
902}
903function masonryFlyIn() {
904    var $items = jQuery('.masonryFlyIn .masonry-item');
905    var time = 0;
906
907    $items.each(function() {
908        var item = jQuery(this);
909        setTimeout(function() {
910            item.addClass('fadeIn');
911        }, time);
912        time += 170;
913    });
914}
915function setupFloatingProjectFilters() {
916    mr_floatingProjectSections = [];
917    jQuery('.filters.floating').closest('section').each(function() {
918        var section = jQuery(this);
919
920        mr_floatingProjectSections.push({
921            section: section.get(0),
922            outerHeight: section.outerHeight(),
923            elemTop: section.offset().top,
924            elemBottom: section.offset().top + section.outerHeight(),
925            filters: section.find('.filters.floating'),
926            filersHeight: section.find('.filters.floating').outerHeight(true)
927        });
928    });
929}
930function updateFloatingFilters() {
931    var l = mr_floatingProjectSections.length,
932    navHeight = wp_data.nav_height - 7;
933    
934    if( jQuery('body').hasClass('admin-bar') ){
935    	navHeight = navHeight + 32;	
936    }
937    
938    while (l--) {
939        var section = mr_floatingProjectSections[l];
940
941        if ((section.elemTop < mr_scrollTop) && typeof window.mr_variant == "undefined" ) {
942            section.filters.css({
943                position: 'fixed',
944                top: '16px',
945                bottom: 'auto'
946            });
947            if (mr_navScrolled) {
948                section.filters.css({
949                    transform: 'translate3d(0,'+ navHeight +'px,0)'
950                });
951            }
952            if (mr_scrollTop > (section.elemBottom - 70)) {
953                section.filters.css({
954                    position: 'absolute',
955                    bottom: '16px',
956                    top: 'auto'
957                });
958                section.filters.css({
vendor: 2,025 bytes, lines 959-1008
959                    transform: 'translate3d(0,0,0)'
960                });
961            }
962        } else {
963            section.filters.css({
964                position: 'absolute',
965                transform: 'translate3d(0,0,0)'
966            });
967        }
968    }
969}
970var mr_cookies = {
971getItem: function (sKey) {
972  if (!sKey) { return null; }
973  return decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=\\s*([^;]*).*$)|^.*$"), "$1")) || null;
974},
975setItem: function (sKey, sValue, vEnd, sPath, sDomain, bSecure) {
976  if (!sKey || /^(?:expires|max\-age|path|domain|secure)$/i.test(sKey)) { return false; }
977  var sExpires = "";
978  if (vEnd) {
979    switch (vEnd.constructor) {
980      case Number:
981        sExpires = vEnd === Infinity ? "; expires=Fri, 31 Dec 9999 23:59:59 GMT" : "; max-age=" + vEnd;
982        break;
983      case String:
984        sExpires = "; expires=" + vEnd;
985        break;
986      case Date:
987        sExpires = "; expires=" + vEnd.toUTCString();
988        break;
989    }
990  }
991  document.cookie = encodeURIComponent(sKey) + "=" + encodeURIComponent(sValue) + sExpires + (sDomain ? "; domain=" + sDomain : "") + (sPath ? "; path=" + sPath : "") + (bSecure ? "; secure" : "");
992  return true;
993},
994removeItem: function (sKey, sPath, sDomain) {
995  if (!this.hasItem(sKey)) { return false; }
996  document.cookie = encodeURIComponent(sKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT" + (sDomain ? "; domain=" + sDomain : "") + (sPath ? "; path=" + sPath : "");
997  return true;
998},
999hasItem: function (sKey) {
1000  if (!sKey) { return false; }
1001  return (new RegExp("(?:^|;\\s*)" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=")).test(document.cookie);
1002},
1003keys: function () {
1004  var aKeys = document.cookie.replace(/((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g, "").split(/\s*(?:\=[^;]*)?;\s*/);
1005  for (var nLen = aKeys.length, nIdx = 0; nIdx < nLen; nIdx++) { aKeys[nIdx] = decodeURIComponent(aKeys[nIdx]); }
1006  return aKeys;
1007}
1008};

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.