{"version":3,"sources":["fentanyl.js"],"names":["jQuery","$","resizetime","controller","$window","window","windowWidth","ogWindowWidth","fullscreen","originalNumbers","init","width","setupValues","resize","clearTimeout","setTimeout","resetPage","animatePage","scrollToLinks","videoLightbox","$bmore","$boston","$providence","ScrollMagic","Controller","introParallax","TimelineMax","add","TweenMax","fromTo","y","spoonParallax","investigatorSlide","x","opacity","userSlide","partnerSlide","movingHand","stateTeaserFade","set","to","baltimoreImageFade","bostonImageFade","providenceImageFade","howParallax","Scene","triggerElement","duration","offset","setTween","addTo","on","event","$i","each","this","text","loopThroughNumbers","setClassToggle","val","keyVal","num","parseInt","i","newNum","randomNumber","delay","queue","n","html","destroy","removeAttr","Math","floor","random","not","click","target","location","pathname","replace","hostname","hash","length","slice","preventDefault","animate","scrollTop","top","$target","focus","is","attr","thisVideo","addClass","pauseAllVideos","removeClass","document","e","src","call"],"mappings":"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","file":"fentanyl.min.js","sourcesContent":["/* requries:\njquery-3.2.1.min.js\n*/\n\n\n\n(function() {\n jQuery(function($) {\n\n /* Globals\n -------------------------------------------------- */\n var $window = $(window),\n $body = $('body'),\n windowWidth = 0,\n ogWindowWidth = 0,\n fullscreen = false\n \n var resizetime;\n var controller;\n var originalNumbers = [];\n\n /* Construction\n -------------------------------------------------- */\n init = function() {\n windowWidth = $window.width();\n setupValues();\n\n $window.resize(function(){\n if (!fullscreen) {\n // Check width has actually changed (not just iOS triggering resize event on scroll)\n if ($(window).width() != ogWindowWidth) {\n windowWidth = $(window).width(); // Update the window width for next time\n clearTimeout(resizetime);\n resizetime = setTimeout(resetPage, 500);\n }\n }\n });\n\n\n }\n\n setupValues = function() {\n windowWidth = $window.width();\n ogWindowWidth = $window.width();\n if (windowWidth >= 900) {\n animatePage();\n }\n scrollToLinks();\n videoLightbox();\n }\n\n\n /* Animation/Scrolling\n -------------------------------------------------- */\n\n animatePage = function(){\n var $bmore = $('#baltimore');\n var $boston = $('#boston');\n var $providence = $('#providence');\n\n controller = new ScrollMagic.Controller();\n\n var introParallax = new TimelineMax ()\n .add([\n TweenMax.fromTo(\".img1\", 1, {y:0}, {y:-300}),\n TweenMax.fromTo(\".img2\", 1, {y:0}, {y:-250}),\n TweenMax.fromTo(\".img3\", 1, {y:0}, {y:-200}),\n TweenMax.fromTo(\".what--header\", 1, {y:0}, {y:-100})\n ]);\n\n var spoonParallax = new TimelineMax ()\n .add([\n TweenMax.fromTo(\"#fact-spoon\", 1, {y:0}, {y:-120}),\n TweenMax.fromTo(\".who--header\", 1, {y:0}, {y:-80})\n ]);\n\n var investigatorSlide = new TimelineMax ()\n .add([\n TweenMax.fromTo(\"#investigators .who--image\", 1, {x:30, opacity: 0}, {x:-50, opacity:1})\n ]);\n\n var userSlide = new TimelineMax ()\n .add([\n TweenMax.fromTo(\"#user .who--image\", 1, {x:-30, opacity: 0}, {x:-5, opacity:1})\n ]);\n\n var partnerSlide = new TimelineMax ()\n .add([\n TweenMax.fromTo(\"#partner .who--image\", 1, {x:30, opacity: 0}, {x:-50, opacity:1})\n ]);\n\n var movingHand = new TimelineMax ()\n .add([\n TweenMax.fromTo(\"#fact-needle\", 1, {x:0}, {x:-70})\n ]);\n\n var stateTeaserFade = new TimelineMax ()\n .add([\n TweenMax.set(\".locations--teaser\",{opacity:0}),\n TweenMax.to(\"#baltimore-teaser\",2, {opacity:1}),\n TweenMax.to(\"#boston-teaser\",2, {opacity:1}, \"-=1\"),\n TweenMax.to(\"#providence-teaser\",2, {opacity:1})\n ]);\n\n var baltimoreImageFade = new TimelineMax ()\n .add([\n TweenMax.set($bmore,{opacity:0}),\n TweenMax.to($bmore,3, {opacity:1})\n ]);\n\n var bostonImageFade = new TimelineMax ()\n .add([\n TweenMax.set($boston,{opacity:0}),\n TweenMax.to($boston,3, {opacity:1})\n ]);\n\n var providenceImageFade = new TimelineMax ()\n .add([\n TweenMax.set($providence,{opacity:0}),\n TweenMax.to($providence,3, {opacity:1})\n ]);\n\n var howParallax = new TimelineMax ()\n .add([\n TweenMax.fromTo(\".how-img1\", 1, {y:0}, {y:-200}),\n TweenMax.fromTo(\".how-img2\", 1, {y:0}, {y:-150}),\n TweenMax.fromTo(\"#how-strips\", 1, {y:0}, {y:-200}),\n TweenMax.fromTo(\".how--header\", 1, {y:0}, {y:-100})\n ]);\n\n\n\n\n var whatParallax = new ScrollMagic.Scene({triggerElement: \"#intro\", duration: 2100, offset: 400})\n .setTween(introParallax)\n .addTo(controller);\n\n var fact1Parallax = new ScrollMagic.Scene({triggerElement: \"#fact-1\", duration: 1700, offset: -150})\n .setTween(spoonParallax)\n .addTo(controller);\n\n\n var slideInInvestigator = new ScrollMagic.Scene({triggerElement: \"#investigators\", duration: 350, offset: -200})\n .setTween(investigatorSlide) \n .addTo(controller);\n\n var slideInUser = new ScrollMagic.Scene({triggerElement: \"#user\", duration: 300, offset: -200})\n .setTween(userSlide) \n .addTo(controller);\n\n var slideInPartner = new ScrollMagic.Scene({triggerElement: \"#partner\", duration: 300, offset: -200})\n .setTween(partnerSlide) \n .addTo(controller);\n\n var fact1Parallax = new ScrollMagic.Scene({triggerElement: \"#fact-2\", duration: 1700, offset: -150})\n .setTween(movingHand)\n .addTo(controller);\n\n var stateTeaser = new ScrollMagic.Scene({triggerElement: \"#teasers\", duration: 500, offset: -300})\n .setTween(stateTeaserFade)\n /*.setClassToggle(\"#teasers .locations--teaser\", \"fade-in\")*/\n .addTo(controller);\n\n var baltimore = new ScrollMagic.Scene({triggerElement: \"#baltimore\", duration: 600, offset: -100})\n .setTween(baltimoreImageFade)\n .on(\"enter\", function(event) {\n $i = 0;\n $(\"#baltimore .number\").each(function() {\n if ( ! ('bo'+$i in originalNumbers)){\n originalNumbers['bo'+$i] = $( this ).text();\n }\n loopThroughNumbers($( this ), 'bo'+$i);\n $i++;\n });\n })\n .setClassToggle(\"#baltimore .number\", \"fact-feature\")\n .addTo(controller);\n\n var boston = new ScrollMagic.Scene({triggerElement: \"#boston\", duration: 600, offset: -100})\n .setTween(bostonImageFade)\n .on(\"enter\", function(event) {\n $i = 0;\n $(\"#boston .number\").each(function() {\n if ( !('ba'+$i in originalNumbers)) {\n originalNumbers['ba'+$i] = $( this ).text();\n }\n loopThroughNumbers($( this ), 'ba'+$i);\n $i++;\n });\n })\n .addTo(controller);\n\n var providence = new ScrollMagic.Scene({triggerElement: \"#providence\", duration: 600, offset: -100})\n .setTween(providenceImageFade)\n .on(\"enter\", function(event) {\n $i = 0;\n $(\"#providence .number\").each(function() {\n if ( !('p'+$i in originalNumbers)) {\n originalNumbers['p'+$i] = $( this ).text();\n }\n loopThroughNumbers($( this ), 'p'+$i);\n $i++;\n });\n })\n .addTo(controller);\n\n var howSection = new ScrollMagic.Scene({triggerElement: \"#how\", duration: 3000, offset: -600})\n .setTween(howParallax)\n .addTo(controller);\n\n var howFacts = new ScrollMagic.Scene({triggerElement: \".survey\", duration: 600, offset: -350})\n .on(\"enter\", function(event) {\n $i = 0;\n $(\"#how-facts .number\").each(function() {\n if ( !('m'+$i in originalNumbers)) {\n originalNumbers['m'+$i] = $( this ).text();\n }\n loopThroughNumbers($( this ), 'm'+$i);\n $i++;\n });\n })\n .addTo(controller);\n }\n\n\n\n loopThroughNumbers = function(val, keyVal){\n var time = 8;\n\n var num = parseInt(originalNumbers[keyVal], 10);\n \n setTimeout(function() {\n\n // if this is a number\n if ( typeof num === 'number' ) {\n\n for (var i = 1; i < 70; ++i) {\n \n (function(n) {\n var newNum;\n if ( n === 69 ) {\n newNum = num;\n }\n else {\n newNum = randomNumber();\n }\n val.delay(1).queue(function(n) {\n val.html( newNum );\n n();\n });\n }(i));\n }\n\n }\n\n }, time)\n\n time += 100;\n\n }\n\n /* Helpers\n -------------------------------------------------- */\n\n resetPage = function(){\n if( windowWidth < 900 ) {\n if( controller !== null && controller !== undefined ) {\n // completely destroy the controller\n controller = controller.destroy( true );\n $('#content *').removeAttr('style');\n }\n } else if( windowWidth >= 900 ) {\n if( controller === null || controller === undefined ) {\n animatePage();\n }\n }\n }\n\n randomNumber = function(){\n return Math.floor( Math.random() * 9 );\n }\n\n /* Actions\n -------------------------------------------------- */\n\n scrollToLinks = function() {\n\n $('a[href*=\"#\"]')\n // Ignore links that don't actually link to anything\n .not('[href=\"#\"]')\n .not('[href=\"#0\"]')\n .click(function(event) {\n if (\n location.pathname.replace(/^\\//, '') == this.pathname.replace(/^\\//, '') \n && \n location.hostname == this.hostname\n ) {\n var target = $(this.hash);\n target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');\n // Does a scroll target exist?\n if (target.length) {\n // Only prevent default if animation is actually gonna happen\n event.preventDefault();\n $('html, body').animate({\n scrollTop: target.offset().top\n }, 1000, function() {\n var $target = $(target);\n $target.focus();\n if ($target.is(\":focus\")) { // Checking if the target was focused\n return false;\n } else {\n $target.attr('tabindex','-1');\n $target.focus();\n };\n });\n }\n }\n });\n }\n\n videoLightbox = function() {\n var thisVideo;\n\n //launch lightbox when play button clicked\n $('.js-play-button')\n .click(function(event) {\n event.preventDefault();\n thisVideo = $( this ).attr( \"data\" )\n $('#'+thisVideo).addClass('is-open');\n fullscreen = true;\n \n });\n\n //close lightbox when close button clicked\n $('.js-close-button')\n .click(function(event) {\n event.preventDefault();\n pauseAllVideos();\n //track whether a user launched the full screen video - IE11 hack\n fullscreen = false;\n $('.js-lightbox').removeClass('is-open');\n });\n\n //track whether a user launched the full screen video view to prevent the window resize functionality\n $(document).on('webkitfullscreenchange mozfullscreenchange msfullscreenchange onmsfullscreenchange fullscreenchange', \n function(e) {\n fullscreen = true;\n }); \n }\n\n pauseAllVideos = function(){\n //stop videos by replacing the source\n $('iframe.video').each(function () \n {\n var src= $(this).attr('src');\n $(this).attr('src',src); \n });\n }\n\n init();\n\n })\n}).call(this);"]}