1/*-----------------------------------------------------------------------------------*/ 2/* CUSTOM FUNCTIONS 3/*-----------------------------------------------------------------------------------*/ 4(function(e){"use strict";e.fn.fitVids=function(t){var n={customSelector:null,ignore:null};if(!document.getElementById("fit-vids-style")){var r=document.head||document.getElementsByTagName("head")[0];var i=".fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}";var s=document.createElement("div");s.innerHTML='<p>x</p><style id="fit-vids-style">'+i+"</style>";r.appendChild(s.childNodes[1])}if(t){e.extend(n,t)}return this.each(function(){var t=["iframe[src*='player.vimeo.com']","iframe[src*='youtube.com']","iframe[src*='youtube-nocookie.com']","iframe[src*='kickstarter.com'][src*='video.html']","object","embed"];if(n.customSelector){t.push(n.customSelector)}var r=".fitvidsignore";if(n.ignore){r=r+", "+n.ignore}var i=e(this).find(t.join(","));i=i.not("object object");i=i.not(r);i.each(function(){var t=e(this);if(t.parents(r).length>0){return}if(this.tagName.toLowerCase()==="embed"&&t.parent("object").length||t.parent(".fluid-width-video-wrapper").length){return}if(!t.css("height")&&!t.css("width")&&(isNaN(t.attr("height"))||isNaN(t.attr("width")))){t.attr("height",9);t.attr("width",16)}var n=this.tagName.toLowerCase()==="object"||t.attr("height")&&!isNaN(parseInt(t.attr("height"),10))?parseInt(t.attr("height"),10):t.height(),i=!isNaN(parseInt(t.attr("width"),10))?parseInt(t.attr("width"),10):t.width(),s=n/i;if(!t.attr("id")){var o="fitvid"+Math.floor(Math.random()*999999);t.attr("id",o)}t.wrap('<div class="fluid-width-video-wrapper"></div>').parent(".fluid-width-video-wrapper").css("padding-top",s*100+"%");t.removeAttr("height").removeAttr("width")})})}})(window.jQuery||window.Zepto); 5function eborAlignVertical(){ 6 jQuery('.ebor-align-vertical').each(function(){ 7 var that = jQuery(this); 8 var height = that.height(); 9 var parentHeight = that.parents('.row').height(); 10 var padAmount = (parentHeight / 2) - (height/2); 11 that.css('padding-top', padAmount); 12 }); 13} 14function alignVertical(){ 15 jQuery('.align-vertical').each(function(){ 16 var that = jQuery(this); 17 var height = that.height(); 18 var parentHeight = that.parent().height(); 19 var padAmount = (parentHeight / 2) - (height/2); 20 that.css('padding-top', padAmount); 21 }); 22} 23function alignBottom(){ 24 jQuery('.align-bottom').each(function(){ 25 var that = jQuery(this); 26 var height = that.height(); 27 var parentHeight = that.parent().height(); 28 var padAmount = (parentHeight) - (height) - 32; 29 that.css('padding-top', padAmount); 30 }); 31}
32// Youtube Background Handling 33function onYouTubeIframeAPIReady(){ 34 jQuery(window).load(function(){ 35 jQuery('.youtube-bg iframe').each(function(index){ 36 jQuery(this).attr('id', 'yt-'+index); 37 var player = new YT.Player(jQuery(this).attr('id'), { 38 playerVars : { 39 'loop' : 1 40 }, 41 events: { 42 'onReady': function(){ 43 player.mute(); 44 player.playVideo(); 45 } 46 } 47 }); 48 }); 49 }); 50}; 51function handleTweets(tweets){ 52 var x = tweets.length, 53 n = 0, 54 element = document.getElementById('tweets'), 55 html = '<ul class="slides">'; 56 57 while(n < x) { 58 html += '<li>' + tweets[n] + '</li>'; 59 n++; 60 } 61 html += '</ul>'; 62 element.innerHTML = html; 63 if(jQuery('#tweets').length){ 64 setTimeout(function(){ 65 jQuery('#tweets').flexslider({ directionNav: false, controlNav: false }); 66 }, 100); 67 } 68} 69jQuery.fn.setAllToMaxHeight = function(){ 70 return this.css({ 'height' : '' }).height( Math.max.apply(this, jQuery.map( this , function(e){ return jQuery(e).height() }) ) ); 71} 72/*-----------------------------------------------------------------------------------*/ 73/* NAV BASE LINK 74/*-----------------------------------------------------------------------------------*/ 75jQuery(document).ready(function($) { 76 77 jQuery('a.js-activated').not('a.js-activated[href^="#"]').click(function(){ 78 var url = $(this).attr('href'); 79 window.location.href = url; 80 return true; 81 }); 82 83}); 84/*-----------------------------------------------------------------------------------*/ 85/* DOCUMENT READY JS 86/*-----------------------------------------------------------------------------------*/ 87jQuery(document).ready(function(){ 88 89 var fixIg = function () { 90 jQuery('iframe[src*="instagram.com"]').responsiveInstagram(); 91 }; 92 jQuery(document).on('ready', function () { 93 fixIg(); 94 }); 95 jQuery(window).on('load resize',function () { 96 fixIg(); 97 }) 98 99 onYouTubeIframeAPIReady(); 100 101 jQuery('.post-password-form').addClass('photo-form-wrapper').find('label:has(input)').each(function(){ 102 var text = jQuery(this).text(), 103 input = jQuery('input', this), 104 parent = jQuery(this).parent(); 105 input.attr('placeholder', text); 106 input.prependTo(parent); 107 jQuery(this).remove(); 108 }); 109 110 /** 111 * Add lightbox to all linked images 112 */ 113 jQuery("a[href$='jpg'], a[href$='jpeg'], a[href$='gif'], a[href$='png']").each(function(){ 114 jQuery(this).addClass('lightbox-link-mrv').attr('data-lightbox', 'true'); 115 }); 116 117 /** 118 * Adjust header type if there isn't a page header set 119 */ 120 if(!( 121 jQuery('.main-container > .row > .aq-block').eq(0).hasClass('aq-block-aq_page_header_block') 122 || jQuery('.main-container > .row > .aq-block').eq(0).hasClass('aq-block-aq_revslider_block') 123 || jQuery('.main-container > .row > .aq-block').eq(0).hasClass('aq-block-aq_masterslider_block') 124 || jQuery('.main-container > section').eq(0).hasClass('fullscreen-element') 125 || jQuery('.main-container > section').eq(0).hasClass('hero-slider') 126 || jQuery('.main-container > header').eq(0).hasClass('title') 127 || jQuery('.main-container > header').eq(0).hasClass('page-header') 128 || jQuery('.main-container > .vc_row > .vc_column_container > .wpb_wrapper > div').eq(0).hasClass('aq-block-aq_page_header_block') 129 || jQuery('.main-container > .vc_row > .vc_column_container > .wpb_wrapper > div').eq(0).hasClass('avt_masterslider_el') 130 || jQuery('.main-container > .vc_row > .vc_column_container > .wpb_wrapper > div').eq(0).hasClass('wpb_revslider_element') 131 || jQuery('.main-container > .vc_row > .vc_column_container > .vc_column-inner > .wpb_wrapper > div').eq(0).hasClass('aq-block-aq_page_header_block') 132 || jQuery('.main-container > .vc_row > .vc_column_container > .vc_column-inner > .wpb_wrapper > div').eq(0).hasClass('avt_masterslider_el') 133 || jQuery('.main-container > .vc_row > .vc_column_container > .vc_column-inner > .wpb_wrapper > div').eq(0).hasClass('wpb_revslider_element') 134 )){ 135 jQuery('nav.top-bar').removeClass('overlay-bar'); 136 } else { 137 if( 138 jQuery('.main-container > .row > .aq-block').eq(0).hasClass('aq-block-aq_revslider_block') 139 || jQuery('.main-container > .row > .aq-block').eq(0).hasClass('aq-block-aq_masterslider_block') 140 ){ 141 //nothing 142 } else {
143 var currentPad = parseInt(jQuery('.ebor-pad-me').eq(0).css('padding-top')); 144 var newPad = currentPad + jQuery('.overlay-bar, .contained-bar').outerHeight() - 48; 145 if(currentPad > 0){ 146 jQuery('.ebor-pad-me').eq(0).css('padding-top', newPad); 147 } else if(jQuery('.ebor-pad-me').eq(0).hasClass('hero-slider')){ 148 var height = parseInt(jQuery('.hero-slider .slides li:first-child').outerHeight()); 149 var newHeight = height + jQuery('.overlay-bar, .contained-bar').outerHeight(); 150 jQuery('.hero-slider .slides li').css('height', newHeight); 151 } 152 } 153 } 154 155 /** 156 * Quick cleanup for mega menus 157 */ 158 jQuery('.subnav-fullwidth').unwrap().unwrap(); 159 160 /** 161 * Add arrows to the sidebar 162 */ 163 jQuery('.sidebar-widget ul li:not(:has(img)) > a').append('<i class="icon arrow_right"></i>'); 164 165 /** 166 * Fitvids 167 * This makes responsive iframes 168 */ 169 jQuery('.article-body iframe').wrap('<div class="fitvids" />'); 170 jQuery(".fitvids").fitVids(); 171 172 /** 173 * WP-Login.php stuff 174 */ 175 if( jQuery('body').hasClass('login') ){ 176 jQuery('#login-css, #buttons-css, link[href*="load-styles.php"]').remove(); 177 jQuery('label:has(input)').not(':has(input[type="checkbox"])').each(function(){ 178 var text = jQuery(this).text(), 179 input = jQuery('input', this), 180 parent = jQuery(this).parent(); 181 input.attr('placeholder', text); 182 input.appendTo(parent); 183 jQuery(this).remove(); 184 }); 185 } 186 187 // Nav Sticky 188 jQuery(window).scroll(function(){ 189 if( jQuery(window).scrollTop() > 500 && !jQuery('.mobile-toggle').is(":visible")){ 190 jQuery('.top-bar').addClass('nav-sticky'); 191 }else{ 192 jQuery('.top-bar').removeClass('nav-sticky'); 193 } 194 }); 195 196 // Offscreen Nav 197 jQuery('.offscreen-toggle').click(function(){ 198 jQuery('.main-container, .footer-container').toggleClass('reveal-nav'); 199 jQuery('.offscreen-container').toggleClass('reveal-nav'); 200 jQuery('.offscreen-menu .container').toggleClass('reveal-nav'); 201 }); 202 203 jQuery('.main-container').click(function(){ 204 if(jQuery(this).hasClass('reveal-nav')){ 205 jQuery('.main-container').toggleClass('reveal-nav'); 206 jQuery('.offscreen-container').toggleClass('reveal-nav'); 207 jQuery('.offscreen-menu .container').toggleClass('reveal-nav'); 208 } 209 }); 210 211 jQuery('.offscreen-container .menu a').click(function(){ 212 jQuery('.offscreen-toggle').trigger('click'); 213 }); 214 215 // Detect logo dimensions and add correct class 216 var logoImage = jQuery('.top-bar .logo:first-of-type'); 217 218 var theImage = new Image(); 219 theImage.src = logoImage.attr("src"); 220 221 var logoWidth = theImage.width; 222 var logoHeight = theImage.height; 223 var logoRatio = logoWidth / logoHeight; 224 225 if(logoRatio > 2.8){ 226 jQuery('.top-bar .logo').addClass('logo-wide'); 227 } 228 229 if(logoRatio < 2){ 230 jQuery('.top-bar .logo').addClass('logo-square'); 231 } 232 233 /** 234 * One page nav scroll 235 */ 236 if(!( jQuery('body').hasClass('login') )){ 237 var headerOffset = parseInt(wp_data.header_offset); 238 if( jQuery('body').hasClass('admin-bar') ) 239 headerOffset = headerOffset + 32; 240 jQuery('.nav-container a[href^="#"], a.btn[href^="#"]').not('.nav-container a[href="#"], a[href="#"], .wpb_accordion a, .wpb_tabs a, .wpb_tour a, .vc_tta a').smoothScroll({ 241 offset: -headerOffset, 242 speed: 801 243 }); 244 } 245 246 // Mobile Toggle 247 jQuery('.mobile-toggle').click(function(){ 248 jQuery('nav').toggleClass('open-nav'); 249 }); 250 251 // Fullscreen nav toggle 252 jQuery('.fullscreen-nav-toggle').click(function(){ 253 if(!jQuery('.fullscreen-nav-container').hasClass('show-fullscreen-nav')){ 254 jQuery('.fullscreen-nav-container').addClass('show-fullscreen-nav'); 255 setTimeout(function(){ 256 jQuery('.fullscreen-nav-container').addClass('fade-fullscreen-nav'); 257 },100); 258 jQuery(this).addClass('toggle-icon'); 259 }else{ 260 jQuery(this).removeClass('toggle-icon'); 261 jQuery('.fullscreen-nav-container').removeClass('fade-fullscreen-nav'); 262 setTimeout(function(){ 263 264 jQuery('.fullscreen-nav-container').removeClass('show-fullscreen-nav'); 265 },500); 266 } 267 }); 268 269 jQuery('.fullscreen-nav-container .menu li a').click(function(){ 270 jQuery('.fullscreen-nav-toggle').removeClass('toggle-icon'); 271 jQuery('.fullscreen-nav-container').removeClass('fade-fullscreen-nav'); 272 setTimeout(function(){ 273 jQuery('.fullscreen-nav-container').removeClass('show-fullscreen-nav'); 274 },500); 275 }); 276 277 /** 278 * Margin first section for top bar 279 */ 280 if(!( jQuery('nav').hasClass('overlay-bar') || jQuery('nav').hasClass('contained-bar') )){ 281 jQuery('.main-container').first().css('margin-top', jQuery('nav').outerHeight()); 282 } 283 jQuery(window).resize(function(){ 284 if(!( jQuery('nav').hasClass('overlay-bar') || jQuery('nav').hasClass('contained-bar') )){ 285 jQuery('.main-container').first().css('margin-top', jQuery('nav').outerHeight()); 286 } 287 }); 288 289 // Fullwidth Subnavs 290 291 // Position Fullwidth Subnavs fullwidth correctly 292 jQuery('.subnav-fullwidth').each(function () { 293 jQuery(this).css('width', jQuery('.container').width()); 294 var offset = jQuery(this).closest('.has-dropdown').offset(); 295 offset = offset.left; 296 var containerOffset = jQuery(window).width() - jQuery('.container').outerWidth(); 297 containerOffset = containerOffset /2; 298 offset = offset - containerOffset - 15; 299 jQuery(this).css('left', -offset); 300 }); 301 302 jQuery(window).resize(function () { 303 jQuery('.subnav-fullwidth').each(function () { 304 jQuery(this).css('width', jQuery('.container').width()); 305 var offset = jQuery(this).closest('.has-dropdown').offset(); 306 offset = offset.left; 307 var containerOffset = jQuery(window).width() - jQuery('.container').outerWidth(); 308 containerOffset = containerOffset /2; 309 offset = offset - containerOffset - 15; 310 jQuery(this).css('left', -offset); 311 }); 312 }); 313 314 // Scroll Reveal
315 if (!(/Android|iPhone|iPad|iPod|BlackBerry|Windows Phone/i).test(navigator.userAgent || navigator.vendor || window.opera)) { 316 window.scrollReveal = new scrollReveal(); 317 }else{ 318 jQuery('body').addClass('pointer'); 319 } 320 321 // Slider Initializations 322 jQuery('.hero-slider').flexslider({}); 323 jQuery('.image-slider').flexslider({ animation: "slide"}); 324 jQuery('.testimonials-slider').flexslider({ directionNav: false }); 325 326 // Slide Sizes 327 jQuery('.slider-fullscreen .slides li').each(function(){ 328 jQuery(this).css('height', jQuery(window).height()); 329 }); 330 331 jQuery('.fullscreen-element').each(function(){ 332 jQuery(this).css('height', jQuery(window).height()); 333 }); 334 335 336 // Feature Selector 337 jQuery('.selector-tabs li').click(function(){ 338 jQuery(this).parent('.selector-tabs').children('li').removeClass('active'); 339 jQuery(this).addClass('active'); 340 341 var activeTab = jQuery(this).index() + 1; 342 343 jQuery(this).closest('.feature-selector').find('.selector-content').children('li').removeClass('active'); 344 jQuery(this).closest('.feature-selector').find('.selector-content').children('li:nth-child('+activeTab+')').addClass('active'); 345 }); 346 347 // Append .background-image-holder <img>'s as CSS backgrounds 348 jQuery('.background-image-holder').each(function(){ 349 var imgSrc= jQuery(this).children('img').attr('src'); 350 jQuery(this).css('background', 'url("' + imgSrc + '")'); 351 jQuery(this).children('img').hide(); 352 jQuery(this).css('background-position', '50% 0%'); 353 }); 354 355 // Accordion 356 jQuery('.accordion li').click(function(){ 357 jQuery(this).parent('.accordion').children('li').removeClass('active'); 358 jQuery(this).addClass('active'); 359 }); 360 361 jQuery('.expanding-ul li').click(function(){ 362 jQuery('.expanding-ul li').removeClass('active'); 363 jQuery(this).addClass('active'); 364 }); 365 366 /************** Parallax Scripts **************/ 367 368 var isFirefox = typeof InstallTrigger !== 'undefined'; 369 var isIE = /*@cc_on!@*/ false || !!document.documentMode; 370 var isChrome = !!window.chrome; 371 var isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0; 372 var prefix; 373 374 if (isFirefox) { 375 prefix = '-moz-'; 376 } else if (isIE) { 377 378 } else if (isChrome || isSafari) { 379 prefix = '-webkit-'; 380 } 381 382 jQuery('.main-container section:first-child').addClass('first-child'); 383 384 jQuery('.parallax-background').each(function () { 385 386 if (jQuery(this).closest('section').hasClass('first-child') && !jQuery(this).closest('section').hasClass('slider-fullscreen')) { 387 jQuery(this).attr('data-top', prefix + 'transform: translate3d(0px,0px, 0px)'); 388 jQuery(this).attr('data-top-bottom', prefix + 'transform: translate3d(0px,200px, 0px)'); 389 390 } else { 391 392 jQuery(this).attr('data-bottom-top', prefix + 'transform: translate3d(0px,-100px, 0px)'); 393 jQuery(this).attr('data-center', prefix + 'transform: translate3d(0px,0px, 0px)'); 394 jQuery(this).attr('data-top-bottom', prefix + 'transform: translate3d(0px,100px, 0px)'); 395 396 } 397 398 }); 399 400 if (!(/Android|iPhone|iPad|iPod|BlackBerry|Windows Phone/i).test(navigator.userAgent || navigator.vendor || window.opera)) { 401 skrollr.init({ 402 forceHeight: false 403 }); 404 } 405 406 // Map Holder Overlay 407 jQuery('.map-holder').click(function(){ 408 jQuery(this).addClass('on'); 409 }); 410 411 jQuery(window).scroll(function(){ 412 if(jQuery('.map-holder').hasClass('on')){ 413 jQuery('.map-holder').removeClass('on'); 414 } 415 }); 416 417 // Map Details Holder 418 jQuery('.details-holder').each(function(){ 419 jQuery(this).css('height', jQuery(this).width()); 420 }); 421 422 jQuery('.details-holder').mouseenter(function(){ 423 jQuery(this).closest('.map-overlay').addClass('fade-overlay'); 424 }).mouseleave(function(){jQuery(this).closest('.map-overlay').removeClass('fade-overlay');});; 425 426 // Countdown 427 jQuery('.countdown').each(function(){ 428 jQuery(this).countdown({until: new Date(jQuery(this).attr('data-date'))}); 429 }); 430 431 // Twitter Feed 432 if(jQuery('#tweets').length){ 433 434 var TweetConfig = { 435 "id": jQuery('#tweets').attr('data-widget-id'), 436 "domId": '', 437 "maxTweets": 5, 438 "enableLinks": true, 439 "showUser": true, 440 "showTime": true, 441 "dateFunction": '', 442 "showRetweet": false, 443 "customCallback": handleTweets 444 }; 445 446 twitterFetcher.fetch(TweetConfig); 447 448 } 449 450 jQuery('.project').on('touchstart', function(){ 451 jQuery(this).trigger('hover'); 452 }); 453 454}); 455/*-----------------------------------------------------------------------------------*/ 456/* WINDOW LOADED JS 457/*-----------------------------------------------------------------------------------*/ 458jQuery(window).load(function(){ 459 460 eborAlignVertical(); 461 462 jQuery(window).resize(function(){ 463 jQuery('.feature-box').setAllToMaxHeight(); 464 eborAlignVertical(); 465 }); 466 467 jQuery('.feature-box').setAllToMaxHeight(); 468 469 // Align Elements Vertically 470 alignVertical(); 471 alignBottom(); 472 473 jQuery(window).resize(function(){ 474 alignVertical(); 475 alignBottom(); 476 }); 477 478 /** 479 * Isotope Blog 480 */ 481 jQuery('.blog-masonry-container').isotope({ 482 itemSelector: '.blog-masonry-item', 483 layoutMode: 'masonry' 484 }); 485 486 // Isotope Projects 487 jQuery('.projects-container').isotope({ 488 itemSelector: '.project', 489 layoutMode: 'fitRows' 490 }); 491 492 jQuery('.filters li').click(function() { 493 var current = jQuery(this); 494 495 current.siblings('li').removeClass('active'); 496 current.addClass('active'); 497 498 var filterValue = current.attr('data-filter'); 499 var container = current.closest('.projects-wrapper').find('.projects-container'); 500 container.isotope({ filter: filterValue }); 501 }); 502 503 // Isotope contained feature boxes 504 jQuery('.contained-features-wrapper').isotope({
505 itemSelector: '.no-pad', 506 layoutMode: 'masonry', 507 masonry: { 508 gutter: 0 509 } 510 }); 511 512 // Instagram Feed 513 if( jQuery('.instafeed').length && wp_data.access_token && wp_data.client_id ){ 514 jQuery.fn.spectragram.accessData = { 515 accessToken: wp_data.access_token, 516 clientID: wp_data.client_id 517 }; 518 jQuery('.instafeed').each(function () { 519 var method = ( jQuery(this).attr('data-method') ) ? jQuery(this).attr('data-method') : 'getUserFeed'; 520 jQuery(this).children('ul').spectragram( method, { 521 query: jQuery(this).attr('data-user-name') 522 }); 523 }); 524 } 525 526 /** 527 * Remove Preloader 528 */ 529 jQuery('.loader').css('opacity', 0); 530 setTimeout(function(){ 531 jQuery('.loader').hide(); 532 /** 533 * Trigger window resize to perfect Isotope 534 */ 535 jQuery('.filters li.active').trigger('click'); 536 jQuery(window).trigger('resize'); 537 }, 600); 538 539 /** 540 * Masterslider stuff 541 */ 542 jQuery('.ebor-parallax-background .ms-slide-bgcont').each(function(){ 543 jQuery(this).css({ 544 'background' : 'url("' + jQuery(this).children('img').attr('src') + '")', 545 'background-position' : '50% 0%', 546 'width' : '110%', 547 'height' : '110%' 548 }).addClass('ebor-background').children('img').hide(); 549 jQuery(this).parents('.ebor-parallax-background').mousemove(function( event ) { 550 jQuery(this).find('.ebor-background').css('transform', 'translate(' + -event.pageX /18 + 'px,' + -event.pageY /18+ 'px)'); 551 }); 552 }); 553 554 jQuery(window).trigger('resize'); 555 556});
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.