{"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);"]}