{"version":3,"sources":["wwwroot/scripts/libs/jquery.ba-throttle-debounce.js","wwwroot/scripts/components/timeline.js","wwwroot/scripts/libs/jquery.sticky-kit.js","wwwroot/scripts/libs/bootstrap.scrollspy.js","wwwroot/scripts/components/google-map.js","wwwroot/scripts/templates/evo-trip-landing.js"],"names":["window","undefined","jq_throttle","$","jQuery","Cowboy","throttle","delay","no_trailing","callback","debounce_mode","timeout_id","last_exec","wrapper","that","this","elapsed","Date","args","arguments","exec","apply","clear","clearTimeout","setTimeout","guid","debounce","at_begin","each","$container","$arrowNext","find","$arrowPrev","$contentContainer","$contentItems","getContentWidth","outerWidth","length","scrollTo","newScroll","animate","scrollLeft","on","contentWidth","containerWidth","width","currentScroll","Math","min","max","addClass","removeClass","win","fn","stick_in_parent","opts","elm","enable_bottoming","inner_scrolling","manual_spacer","offset_top","parent_selector","recalc_every","sticky_class","_fn","_i","_len","parent","spacer","bottoming","padding_bottom","parent_top","parent_height","top","height","el_float","detached","bottomed","detach","fixed","last_pos","offset","recalc","recalc_and_tick","recalc_counter","tick","data","closest","css","border_top","padding_top","restore","parseInt","insertAfter","position","bottom","outerHeight","display","vertical-align","float","delta","scroll","will_bottom","win_height","scrollTop","trigger","after","append","off","document","body","removeData","remove","call","ScrollSpy","element","options","process","proxy","$body","$scrollElement","is","extend","DEFAULTS","selector","target","offsets","targets","activeTarget","scrollHeight","refresh","Plugin","option","$this","VERSION","prototype","getScrollHeight","documentElement","offsetMethod","offsetBase","isWindow","self","map","$el","href","attr","$href","test","sort","a","b","push","i","maxScroll","activate","active","parents","parentsUntil","old","scrollspy","Constructor","noConflict","$spy","mapsToLoad","scriptLoaded","googleMap","isDraggable","evo","html","hasClass","not","markers","$marker","animation","google","maps","Animation","title","label","lat","parseFloat","lng","get","mapOptions","mapTypeId","MapTypeId","scrollwheel","rotateControl","zoom","draggable","center","LatLng","reduce","t","m","Map","infoWindows","_","marker","Marker","info","InfoWindow","content","addListener","forEach","close","open","event","setCenter","loadScript","done","prevTrip","contentCache","selectors","setContent","tripId","name","children","getHtml","innerHTML","updateContent","location","hash","substr","replace","$source","$test","prevContent","nextContent","hide","fadeIn","slideDown","$tripTile","$tripDate","$tripBuyBox","$tripFinePrint","$tripName","$itineraryAccordionHead","text","isMobile","setUIState","resetHash","$trips","onhashchange","e","preventDefault","resizeTimer","$stickyElement","isSticky","detectSticky","mq","screenSmMin","loadStickyNav","scrollToID"],"mappings":"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","file":"evotrip.min.js","sourcesContent":["/*!\n * jQuery throttle / debounce - v1.1 - 3/7/2010\n * http://benalman.com/projects/jquery-throttle-debounce-plugin/\n *\n * Copyright (c) 2010 \"Cowboy\" Ben Alman\n * Dual licensed under the MIT and GPL licenses.\n * http://benalman.com/about/license/\n */\n\n// Script: jQuery throttle / debounce: Sometimes, less is more!\n//\n// *Version: 1.1, Last updated: 3/7/2010*\n//\n// Project Home - http://benalman.com/projects/jquery-throttle-debounce-plugin/\n// GitHub - http://github.com/cowboy/jquery-throttle-debounce/\n// Source - http://github.com/cowboy/jquery-throttle-debounce/raw/master/jquery.ba-throttle-debounce.js\n// (Minified) - http://github.com/cowboy/jquery-throttle-debounce/raw/master/jquery.ba-throttle-debounce.min.js (0.7kb)\n//\n// About: License\n//\n// Copyright (c) 2010 \"Cowboy\" Ben Alman,\n// Dual licensed under the MIT and GPL licenses.\n// http://benalman.com/about/license/\n//\n// About: Examples\n//\n// These working examples, complete with fully commented code, illustrate a few\n// ways in which this plugin can be used.\n//\n// Throttle - http://benalman.com/code/projects/jquery-throttle-debounce/examples/throttle/\n// Debounce - http://benalman.com/code/projects/jquery-throttle-debounce/examples/debounce/\n//\n// About: Support and Testing\n//\n// Information about what version or versions of jQuery this plugin has been\n// tested with, what browsers it has been tested in, and where the unit tests\n// reside (so you can test it yourself).\n//\n// jQuery Versions - none, 1.3.2, 1.4.2\n// Browsers Tested - Internet Explorer 6-8, Firefox 2-3.6, Safari 3-4, Chrome 4-5, Opera 9.6-10.1.\n// Unit Tests - http://benalman.com/code/projects/jquery-throttle-debounce/unit/\n//\n// About: Release History\n//\n// 1.1 - (3/7/2010) Fixed a bug in where trailing callbacks\n// executed later than they should. Reworked a fair amount of internal\n// logic as well.\n// 1.0 - (3/6/2010) Initial release as a stand-alone project. Migrated over\n// from jquery-misc repo v0.4 to jquery-throttle repo v1.0, added the\n// no_trailing throttle parameter and debounce functionality.\n//\n// Topic: Note for non-jQuery users\n//\n// jQuery isn't actually required for this plugin, because nothing internal\n// uses any jQuery methods or properties. jQuery is just used as a namespace\n// under which these methods can exist.\n//\n// Since jQuery isn't actually required for this plugin, if jQuery doesn't exist\n// when this plugin is loaded, the method described below will be created in\n// the `Cowboy` namespace. Usage will be exactly the same, but instead of\n// $.method() or jQuery.method(), you'll need to use Cowboy.method().\n\n(function (window, undefined) {\n '$:nomunge'; // Used by YUI compressor.\n\n // Since jQuery really isn't required for this plugin, use `jQuery` as the\n // namespace only if it already exists, otherwise use the `Cowboy` namespace,\n // creating it if necessary.\n var $ = window.jQuery || window.Cowboy || (window.Cowboy = {}),\n\n // Internal method reference.\n jq_throttle;\n\n // Method: jQuery.throttle\n //\n // Throttle execution of a function. Especially useful for rate limiting\n // execution of handlers on events like resize and scroll. If you want to\n // rate-limit execution of a function to a single time, see the\n // method.\n //\n // In this visualization, | is a throttled-function call and X is the actual\n // callback execution:\n //\n // > Throttled with `no_trailing` specified as false or unspecified:\n // > ||||||||||||||||||||||||| (pause) |||||||||||||||||||||||||\n // > X X X X X X X X X X X X\n // >\n // > Throttled with `no_trailing` specified as true:\n // > ||||||||||||||||||||||||| (pause) |||||||||||||||||||||||||\n // > X X X X X X X X X X\n //\n // Usage:\n //\n // > var throttled = jQuery.throttle( delay, [ no_trailing, ] callback );\n // >\n // > jQuery('selector').bind( 'someevent', throttled );\n // > jQuery('selector').unbind( 'someevent', throttled );\n //\n // This also works in jQuery 1.4+:\n //\n // > jQuery('selector').bind( 'someevent', jQuery.throttle( delay, [ no_trailing, ] callback ) );\n // > jQuery('selector').unbind( 'someevent', callback );\n //\n // Arguments:\n //\n // delay - (Number) A zero-or-greater delay in milliseconds. For event\n // callbacks, values around 100 or 250 (or even higher) are most useful.\n // no_trailing - (Boolean) Optional, defaults to false. If no_trailing is\n // true, callback will only execute every `delay` milliseconds while the\n // throttled-function is being called. If no_trailing is false or\n // unspecified, callback will be executed one final time after the last\n // throttled-function call. (After the throttled-function has not been\n // called for `delay` milliseconds, the internal counter is reset)\n // callback - (Function) A function to be executed after delay milliseconds.\n // The `this` context and all arguments are passed through, as-is, to\n // `callback` when the throttled-function is executed.\n //\n // Returns:\n //\n // (Function) A new, throttled, function.\n\n $.throttle = jq_throttle = function (delay, no_trailing, callback, debounce_mode) {\n // After wrapper has stopped being called, this timeout ensures that\n // `callback` is executed at the proper times in `throttle` and `end`\n // debounce modes.\n var timeout_id,\n\n // Keep track of the last time `callback` was executed.\n last_exec = 0;\n\n // `no_trailing` defaults to falsy.\n if (typeof no_trailing !== 'boolean') {\n debounce_mode = callback;\n callback = no_trailing;\n no_trailing = undefined;\n }\n\n // The `wrapper` function encapsulates all of the throttling / debouncing\n // functionality and when executed will limit the rate at which `callback`\n // is executed.\n function wrapper() {\n var that = this,\n elapsed = +new Date() - last_exec,\n args = arguments;\n\n // Execute `callback` and update the `last_exec` timestamp.\n function exec() {\n last_exec = +new Date();\n callback.apply(that, args);\n };\n\n // If `debounce_mode` is true (at_begin) this is used to clear the flag\n // to allow future `callback` executions.\n function clear() {\n timeout_id = undefined;\n };\n\n if (debounce_mode && !timeout_id) {\n // Since `wrapper` is being called for the first time and\n // `debounce_mode` is true (at_begin), execute `callback`.\n exec();\n }\n\n // Clear any existing timeout.\n timeout_id && clearTimeout(timeout_id);\n\n if (debounce_mode === undefined && elapsed > delay) {\n // In throttle mode, if `delay` time has been exceeded, execute\n // `callback`.\n exec();\n } else if (no_trailing !== true) {\n // In trailing throttle mode, since `delay` time has not been\n // exceeded, schedule `callback` to execute `delay` ms after most\n // recent execution.\n //\n // If `debounce_mode` is true (at_begin), schedule `clear` to execute\n // after `delay` ms.\n //\n // If `debounce_mode` is false (at end), schedule `callback` to\n // execute after `delay` ms.\n timeout_id = setTimeout(debounce_mode ? clear : exec, debounce_mode === undefined ? delay - elapsed : delay);\n }\n };\n\n // Set the guid of `wrapper` function to the same of original callback, so\n // it can be removed in jQuery 1.4+ .unbind or .die by using the original\n // callback as a reference.\n if ($.guid) {\n wrapper.guid = callback.guid = callback.guid || $.guid++;\n }\n\n // Return the wrapper function.\n return wrapper;\n };\n\n // Method: jQuery.debounce\n //\n // Debounce execution of a function. Debouncing, unlike throttling,\n // guarantees that a function is only executed a single time, either at the\n // very beginning of a series of calls, or at the very end. If you want to\n // simply rate-limit execution of a function, see the \n // method.\n //\n // In this visualization, | is a debounced-function call and X is the actual\n // callback execution:\n //\n // > Debounced with `at_begin` specified as false or unspecified:\n // > ||||||||||||||||||||||||| (pause) |||||||||||||||||||||||||\n // > X X\n // >\n // > Debounced with `at_begin` specified as true:\n // > ||||||||||||||||||||||||| (pause) |||||||||||||||||||||||||\n // > X X\n //\n // Usage:\n //\n // > var debounced = jQuery.debounce( delay, [ at_begin, ] callback );\n // >\n // > jQuery('selector').bind( 'someevent', debounced );\n // > jQuery('selector').unbind( 'someevent', debounced );\n //\n // This also works in jQuery 1.4+:\n //\n // > jQuery('selector').bind( 'someevent', jQuery.debounce( delay, [ at_begin, ] callback ) );\n // > jQuery('selector').unbind( 'someevent', callback );\n //\n // Arguments:\n //\n // delay - (Number) A zero-or-greater delay in milliseconds. For event\n // callbacks, values around 100 or 250 (or even higher) are most useful.\n // at_begin - (Boolean) Optional, defaults to false. If at_begin is false or\n // unspecified, callback will only be executed `delay` milliseconds after\n // the last debounced-function call. If at_begin is true, callback will be\n // executed only at the first debounced-function call. (After the\n // throttled-function has not been called for `delay` milliseconds, the\n // internal counter is reset)\n // callback - (Function) A function to be executed after delay milliseconds.\n // The `this` context and all arguments are passed through, as-is, to\n // `callback` when the debounced-function is executed.\n //\n // Returns:\n //\n // (Function) A new, debounced, function.\n\n $.debounce = function (delay, at_begin, callback) {\n return callback === undefined\n ? jq_throttle(delay, at_begin, false)\n : jq_throttle(delay, callback, at_begin !== false);\n };\n})(this);","(function ($) {\n $(function () {\n // how far the element should scroll when an arrow is clicked\n var SCROLL_PERCENTAGE = 0.7,\n FUDGE_AMOUNT = 80;\n\n $('.timeline-container').each(function () {\n var $container = $(this),\n $arrowNext = $container.find('.next-arrow'),\n $arrowPrev = $container.find('.prev-arrow'),\n $contentContainer = $container.find('.timeline-scroll-container'),\n $contentItems = $contentContainer.find('ul.timeline-list > li');\n\n var getContentWidth = function () {\n return $contentItems.outerWidth(true) * $contentItems.length;\n };\n\n var setArrowState = function (newScroll) {\n var contentWidth = getContentWidth(),\n containerWidth = $container.width();\n\n if (((containerWidth + newScroll + FUDGE_AMOUNT) >= contentWidth) || (contentWidth <= containerWidth)) {\n $arrowNext.addClass('arrow-hide');\n }\n else {\n $arrowNext.removeClass('arrow-hide');\n }\n\n if (newScroll == 0 || contentWidth <= containerWidth) {\n $arrowPrev.addClass('arrow-hide');\n }\n else {\n $arrowPrev.removeClass('arrow-hide');\n }\n };\n\n var scrollTo = function (newScroll) {\n $contentContainer.animate({\n scrollLeft: newScroll\n });\n };\n\n $arrowNext.on('click touchend', function () {\n var contentWidth = getContentWidth(),\n containerWidth = $container.width(),\n currentScroll = $contentContainer.scrollLeft(),\n newScroll = Math.min(currentScroll + (containerWidth * SCROLL_PERCENTAGE), contentWidth - containerWidth);\n\n scrollTo(newScroll);\n });\n\n $arrowPrev.on('click touchend', function () {\n var contentWidth = getContentWidth(),\n containerWidth = $container.width(),\n currentScroll = $contentContainer.scrollLeft(),\n newScroll = Math.max(0, currentScroll - (containerWidth * SCROLL_PERCENTAGE));\n\n scrollTo(newScroll);\n });\n\n $contentContainer.on('scroll', $.debounce(150, function () {\n setArrowState($contentContainer.scrollLeft());\n }));\n });\n });\n})(jQuery);","// Generated by CoffeeScript 1.7.1\n\n/**\n@license Sticky-kit v1.1.1 | WTFPL | Leaf Corcoran 2014 | http://leafo.net\n */\n\n(function () {\n var $, win;\n\n $ = this.jQuery || window.jQuery;\n\n win = $(window);\n\n $.fn.stick_in_parent = function (opts) {\n var elm, enable_bottoming, inner_scrolling, manual_spacer, offset_top, parent_selector, recalc_every, sticky_class, _fn, _i, _len;\n if (opts == null) {\n opts = {};\n }\n sticky_class = opts.sticky_class, inner_scrolling = opts.inner_scrolling, recalc_every = opts.recalc_every, parent_selector = opts.parent, offset_top = opts.offset_top, manual_spacer = opts.spacer, enable_bottoming = opts.bottoming;\n if (offset_top == null) {\n offset_top = 0;\n }\n if (parent_selector == null) {\n parent_selector = void 0;\n }\n if (inner_scrolling == null) {\n inner_scrolling = true;\n }\n if (sticky_class == null) {\n sticky_class = \"is_stuck\";\n }\n if (enable_bottoming == null) {\n enable_bottoming = true;\n }\n _fn = function (elm, padding_bottom, parent_top, parent_height, top, height, el_float, detached) {\n var bottomed, detach, fixed, last_pos, offset, parent, recalc, recalc_and_tick, recalc_counter, spacer, tick;\n if (elm.data(\"sticky_kit\")) {\n return;\n }\n elm.data(\"sticky_kit\", true);\n parent = elm.parent();\n if (parent_selector != null) {\n parent = parent.closest(parent_selector);\n }\n if (!parent.length) {\n throw \"failed to find stick parent\";\n }\n fixed = false;\n bottomed = false;\n spacer = manual_spacer != null ? manual_spacer && elm.closest(manual_spacer) : $(\"
\");\n if (spacer) {\n spacer.css('position', elm.css('position'));\n }\n recalc = function () {\n var border_top, padding_top, restore;\n if (detached) {\n return;\n }\n border_top = parseInt(parent.css(\"border-top-width\"), 10);\n padding_top = parseInt(parent.css(\"padding-top\"), 10);\n padding_bottom = parseInt(parent.css(\"padding-bottom\"), 10);\n parent_top = parent.offset().top + border_top + padding_top;\n parent_height = parent.height();\n if (fixed) {\n fixed = false;\n bottomed = false;\n if (manual_spacer == null) {\n elm.insertAfter(spacer);\n spacer.detach();\n }\n elm.css({\n position: \"\",\n top: \"\",\n width: \"\",\n bottom: \"\"\n }).removeClass(sticky_class);\n restore = true;\n }\n top = elm.offset().top - parseInt(elm.css(\"margin-top\"), 10) - offset_top;\n height = elm.outerHeight(true);\n el_float = elm.css(\"float\");\n if (spacer) {\n spacer.css({\n width: elm.outerWidth(true),\n height: height,\n display: elm.css(\"display\"),\n \"vertical-align\": elm.css(\"vertical-align\"),\n \"float\": el_float\n });\n }\n if (restore) {\n return tick();\n }\n };\n recalc();\n if (height === parent_height) {\n return;\n }\n last_pos = void 0;\n offset = offset_top;\n recalc_counter = recalc_every;\n tick = function () {\n var css, delta, scroll, will_bottom, win_height;\n if (detached) {\n return;\n }\n if (recalc_counter != null) {\n recalc_counter -= 1;\n if (recalc_counter <= 0) {\n recalc_counter = recalc_every;\n recalc();\n }\n }\n scroll = win.scrollTop();\n if (last_pos != null) {\n delta = scroll - last_pos;\n }\n last_pos = scroll;\n if (fixed) {\n if (enable_bottoming) {\n will_bottom = scroll + height + offset > parent_height + parent_top;\n if (bottomed && !will_bottom) {\n bottomed = false;\n elm.css({\n position: \"fixed\",\n bottom: \"\",\n top: offset\n }).trigger(\"sticky_kit:unbottom\");\n }\n }\n if (scroll < top) {\n fixed = false;\n offset = offset_top;\n if (manual_spacer == null) {\n if (el_float === \"left\" || el_float === \"right\") {\n elm.insertAfter(spacer);\n }\n spacer.detach();\n }\n css = {\n position: \"\",\n width: \"\",\n top: \"\"\n };\n elm.css(css).removeClass(sticky_class).trigger(\"sticky_kit:unstick\");\n }\n if (inner_scrolling) {\n win_height = win.height();\n if (height + offset_top > win_height) {\n if (!bottomed) {\n offset -= delta;\n offset = Math.max(win_height - height, offset);\n offset = Math.min(offset_top, offset);\n if (fixed) {\n elm.css({\n top: offset + \"px\"\n });\n }\n }\n }\n }\n } else {\n if (scroll > top) {\n fixed = true;\n css = {\n position: \"fixed\",\n top: offset\n };\n css.width = elm.css(\"box-sizing\") === \"border-box\" ? elm.outerWidth() + \"px\" : elm.width() + \"px\";\n elm.css(css).addClass(sticky_class);\n if (manual_spacer == null) {\n elm.after(spacer);\n if (el_float === \"left\" || el_float === \"right\") {\n spacer.append(elm);\n }\n }\n elm.trigger(\"sticky_kit:stick\");\n }\n }\n if (fixed && enable_bottoming) {\n if (will_bottom == null) {\n will_bottom = scroll + height + offset > parent_height + parent_top;\n }\n if (!bottomed && will_bottom) {\n bottomed = true;\n if (parent.css(\"position\") === \"static\") {\n parent.css({\n position: \"relative\"\n });\n }\n return elm.css({\n position: \"absolute\",\n bottom: padding_bottom,\n top: \"auto\"\n }).trigger(\"sticky_kit:bottom\");\n }\n }\n };\n recalc_and_tick = function () {\n recalc();\n return tick();\n };\n detach = function () {\n detached = true;\n win.off(\"touchmove\", tick);\n win.off(\"scroll\", tick);\n win.off(\"resize\", recalc_and_tick);\n $(document.body).off(\"sticky_kit:recalc\", recalc_and_tick);\n elm.off(\"sticky_kit:detach\", detach);\n elm.removeData(\"sticky_kit\");\n elm.css({\n position: \"\",\n bottom: \"\",\n top: \"\",\n width: \"\"\n });\n parent.position(\"position\", \"\");\n if (fixed) {\n if (manual_spacer == null) {\n if (el_float === \"left\" || el_float === \"right\") {\n elm.insertAfter(spacer);\n }\n spacer.remove();\n }\n return elm.removeClass(sticky_class);\n }\n };\n win.on(\"touchmove\", tick);\n win.on(\"scroll\", tick);\n win.on(\"resize\", recalc_and_tick);\n $(document.body).on(\"sticky_kit:recalc\", recalc_and_tick);\n elm.on(\"sticky_kit:detach\", detach);\n return setTimeout(tick, 0);\n };\n for (_i = 0, _len = this.length; _i < _len; _i++) {\n elm = this[_i];\n _fn($(elm));\n }\n return this;\n };\n}).call(this);","/* ========================================================================\n * Bootstrap: scrollspy.js v3.3.2\n * http://getbootstrap.com/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n+function ($) {\n 'use strict';\n\n // SCROLLSPY CLASS DEFINITION\n // ==========================\n\n function ScrollSpy(element, options) {\n var process = $.proxy(this.process, this)\n\n this.$body = $('body')\n this.$scrollElement = $(element).is('body') ? $(window) : $(element)\n this.options = $.extend({}, ScrollSpy.DEFAULTS, options)\n this.selector = (this.options.target || '') + ' .nav li > a'\n this.offsets = []\n this.targets = []\n this.activeTarget = null\n this.scrollHeight = 0\n\n this.$scrollElement.on('scroll.bs.scrollspy', process)\n this.refresh()\n this.process()\n }\n\n ScrollSpy.VERSION = '3.3.2'\n\n ScrollSpy.DEFAULTS = {\n offset: 10\n }\n\n ScrollSpy.prototype.getScrollHeight = function () {\n return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n }\n\n ScrollSpy.prototype.refresh = function () {\n var offsetMethod = 'offset'\n var offsetBase = 0\n\n if (!$.isWindow(this.$scrollElement[0])) {\n offsetMethod = 'position'\n offsetBase = this.$scrollElement.scrollTop()\n }\n\n this.offsets = []\n this.targets = []\n this.scrollHeight = this.getScrollHeight()\n\n var self = this\n\n this.$body\n .find(this.selector)\n .map(function () {\n var $el = $(this)\n var href = $el.data('target') || $el.attr('href')\n var $href = /^#./.test(href) && $(href)\n\n return ($href\n && $href.length\n && $href.is(':visible')\n && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n })\n .sort(function (a, b) { return a[0] - b[0] })\n .each(function () {\n self.offsets.push(this[0])\n self.targets.push(this[1])\n })\n }\n\n ScrollSpy.prototype.process = function () {\n var scrollTop = this.$scrollElement.scrollTop() + this.options.offset\n var scrollHeight = this.getScrollHeight()\n var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()\n var offsets = this.offsets\n var targets = this.targets\n var activeTarget = this.activeTarget\n var i\n\n if (this.scrollHeight != scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n }\n\n if (activeTarget && scrollTop < offsets[0]) {\n this.activeTarget = null\n return this.clear()\n }\n\n for (i = offsets.length; i--;) {\n activeTarget != targets[i]\n && scrollTop >= offsets[i]\n && (!offsets[i + 1] || scrollTop <= offsets[i + 1])\n && this.activate(targets[i])\n }\n }\n\n ScrollSpy.prototype.activate = function (target) {\n this.activeTarget = target\n\n this.clear()\n\n var selector = this.selector +\n '[data-target=\"' + target + '\"],' +\n this.selector + '[href=\"' + target + '\"]'\n\n var active = $(selector)\n .parents('li')\n .addClass('active')\n\n if (active.parent('.dropdown-menu').length) {\n active = active\n .closest('li.dropdown')\n .addClass('active')\n }\n\n active.trigger('activate.bs.scrollspy')\n }\n\n ScrollSpy.prototype.clear = function () {\n $(this.selector)\n .parentsUntil(this.options.target, '.active')\n .removeClass('active')\n }\n\n // SCROLLSPY PLUGIN DEFINITION\n // ===========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.scrollspy')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.scrollspy\n\n $.fn.scrollspy = Plugin\n $.fn.scrollspy.Constructor = ScrollSpy\n\n // SCROLLSPY NO CONFLICT\n // =====================\n\n $.fn.scrollspy.noConflict = function () {\n $.fn.scrollspy = old\n return this\n }\n\n // SCROLLSPY DATA-API\n // ==================\n\n $(window).on('load.bs.scrollspy.data-api', function () {\n $('[data-spy=\"scroll\"]').each(function () {\n var $spy = $(this)\n Plugin.call($spy, $spy.data())\n })\n })\n}(jQuery);","(function ($) {\n var mapsToLoad = [],\n scriptLoaded = false;\n\n // jQuery plugin to enable google map components\n $.fn.googleMap = function () {\n if (!scriptLoaded) {\n mapsToLoad.push(this);\n return;\n }\n\n var isDraggable = !evo.$.html.hasClass('touch');\n\n return $(this).not('.loaded').addClass('loaded').each(function () {\n var $this = $(this),\n\n markers = $this.find('.js-google-map-marker').map(function () {\n var $marker = $(this);\n\n return {\n animation: google.maps.Animation[$marker.data('animation') || 'DROP'],\n title: $marker.data('title'),\n label: $marker.data('label'),\n position: {\n lat: parseFloat($marker.data('lat') || 0),\n lng: parseFloat($marker.data('lon') || 0)\n }\n };\n }).get();\n\n var mapOptions = {\n mapTypeId: google.maps.MapTypeId[$this.data('google-map') || 'SATELLITE'],\n scrollwheel: false,\n rotateControl: true,\n zoom: $this.data('zoom') || 8,\n draggable: isDraggable,\n center: new google.maps.LatLng({\n lat: markers.reduce(function (t, m) { return t + (m.position.lat / markers.length); }, 0),\n lng: markers.reduce(function (t, m) { return t + (m.position.lng / markers.length); }, 0)\n })\n };\n\n var map = new google.maps.Map($this.get(0), mapOptions),\n infoWindows = [];\n\n _.each(markers, function (m) {\n m.position = new google.maps.LatLng(m.position);\n m.map = map;\n var marker = new google.maps.Marker(m);\n var info = new google.maps.InfoWindow({\n content: m.title\n });\n infoWindows.push(info);\n marker.addListener('click', function () {\n infoWindows.forEach(function (i) { i && i.close(); });\n info.open(map, marker);\n });\n });\n\n $this.removeClass('loading');\n\n // Allow pages to trigger a 're-initialize' of the maps\n $('body').on('reinit.evo.maps', function () {\n google.maps.event.trigger(map, 'resize');\n map.setCenter(mapOptions.center);\n });\n });\n };\n $(function () {\n evo.loadScript('//maps.googleapis.com/maps/api/js?key=AIzaSyCD-pRAl00-R2lN-eX-em4Z59EVsa8ix4o').done(function () {\n scriptLoaded = true;\n $(mapsToLoad).each(function () {\n $(this).googleMap();\n });\n delete mapsToLoad;\n });\n });\n\n $('[data-google-map]').googleMap();\n})(jQuery);","/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n\n(function ($) {\n var prevTrip = 'destination',\n contentCache = {},\n selectors = {\n activeClass: 'active',\n destination: 'destination',\n overrideSelector: 'section.section-override',\n rootSelector: 'section.section-root',\n sectionNameAttribute: 'section-name',\n tripTile: '.js-trip-tile',\n tripDate: '.js-trip-date',\n tripBuyBox: '.js-trip-buy-box',\n tripFinePrint: '.js-trip-fine-print',\n tripName: '.js-trip-name'\n };\n\n function setContent(tripId) {\n if (!contentCache[tripId]) {\n contentCache[tripId] = {};\n $('#' + tripId + ' section[data-' + selectors.sectionNameAttribute + ']').each(function () {\n var $this = $(this),\n name = $this.data(selectors.sectionNameAttribute);\n\n if (name) {\n var html = $this.find('[data-cms-section]').children();\n contentCache[tripId][name] = html.length ? html : '';\n }\n });\n }\n };\n\n function getHtml($el) {\n if (!$el || !$el.length)\n return '';\n var html = '';\n\n $el.each(function () {\n html += this.innerHTML;\n $(this).children().each(function () {\n html += getHtml($(this));\n });\n });\n return html;\n }\n\n function $htmlEquals($source, $test) {\n if (!$source || !$test || !$source.length || !$test.length)\n return $source == $test;\n\n var html1 = getHtml($source),\n html2 = getHtml($test);\n\n return html1 === html2;\n };\n\n function updateContent() {\n var tripId = (window.location.hash && window.location.hash.substr(1)) || selectors.destination;\n\n tripId = tripId.replace(/[^-a-zA-Z0-9]*/g, '');\n\n setContent(tripId);\n $(selectors.rootSelector).each(function () {\n var $this = $(this),\n name = $this.data(selectors.sectionNameAttribute),\n prevContent = (contentCache[prevTrip][name] || contentCache[selectors.destination][name] || $('')),\n nextContent = (contentCache[tripId][name] || contentCache[selectors.destination][name] || $(''));\n\n if (!$htmlEquals(prevContent, nextContent)) {\n $this.hide().children().detach();\n $this.append(nextContent);\n switch ($this.data('animation') || 'fade') {\n case 'fade':\n $this.fadeIn();\n break;\n case 'slide':\n $this.slideDown();\n break;\n default:\n $this.fadeIn();\n }\n }\n });\n\n prevTrip = tripId;\n\n setUIState(tripId);\n };\n\n function setUIState(tripId) {\n var $tripTile = $('[data-trip-id=' + tripId + ']'),\n $tripDestination = $('#destination'),\n $tripDate = $(selectors.tripDate),\n $tripBuyBox = $(selectors.tripBuyBox),\n $tripFinePrint = $(selectors.tripFinePrint),\n $tripName = $(selectors.tripName),\n $itineraryAccordionHead = $('#itinerary-section').find('.accordion-head');\n\n //if there is a selcted one, deselect and add class active, then update values in book it button\n if ($tripTile.length > 0) {\n //update bookit button\n $tripDate.text($tripTile.data('trip-date'));\n $tripFinePrint.text($tripTile.data('message'));\n $tripName.text($tripTile.data('trip-name'));\n $tripBuyBox.addClass(selectors.activeClass);\n $(selectors.tripTile).removeClass(selectors.activeClass);\n $tripTile.addClass(selectors.activeClass);\n\n ////show itinerary section.\n if (!$itineraryAccordionHead.hasClass('expanded') && evo.isMobile) {\n $itineraryAccordionHead.trigger('click');\n }\n }\n else {\n $('[data-trip-id]').removeClass(selectors.activeClass);\n $tripBuyBox.removeClass(selectors.activeClass);\n }\n\n $(window).trigger('resize');\n };\n\n function resetHash() {\n var top = evo.$.body.scrollTop();\n window.location.hash = '';\n evo.$.body.scrollTop(top);\n };\n\n function loadStickyNav() {\n var $stickyElement = $('.js-sticky-nav'),\n isSticky = false;\n //test against the window width and whether or not sticky-kit has been set up.\n function detectSticky() {\n if (evo.$.window.width() >= evo.mq.screenSmMin) {\n if (isSticky === false) {\n $stickyElement.stick_in_parent();\n isSticky = true;\n }\n }\n else {\n //remove it for mobile\n if (isSticky === true) {\n $stickyElement.trigger('sticky_kit:detach');\n isSticky = false;\n }\n }\n };\n\n detectSticky();\n\n //throttle the resize event\n var resizeTimer;\n evo.$.window.on('resize', function (e) {\n clearTimeout(resizeTimer);\n resizeTimer = setTimeout(detectSticky, 250);\n });\n\n evo.$.body.scrollspy({\n target: '.navbar',\n offset: $('.js-sticky-nav').height() + 1\n });\n };\n\n setContent(selectors.destination);\n\n var $trips = $(selectors.tripTile);\n if ($trips.length == 1) {\n $('.js-trip-container').hide();\n location.hash = $trips.data('trip-id') || '';\n }\n else if ($trips.length == 0) {\n $('.trip-selection-header').hide();\n $('hr.js-trip-container').hide();\n }\n\n $(function () {\n updateContent();\n\n if ($trips.length > 1)\n window.onhashchange = updateContent;\n\n $trips.on('click', function (e) {\n var $this = $(this);\n if ($this.hasClass(selectors.activeClass)) {\n e.preventDefault();\n $this.removeClass(selectors.activeClass);\n resetHash();\n }\n });\n\n // prevent scrolling on empty hash\n $('.destination-trip').on('click touchend', 'a[href=#]', function (e) {\n e.preventDefault();\n resetHash();\n });\n\n //prevent default of utility nav links, so as to not interfere with onhashchange event above\n $(\".utility-nav-anchor-links a\").on('click', function (e) {\n e.preventDefault();\n });\n\n loadStickyNav();\n\n //init the sticky nav\n $('.js-scroll-to-id').scrollToID({\n offset: $('.js-sticky-nav').height()\n });\n\n $('.accordion-head').on('click touchend', function () {\n evo.$.body.trigger('reinit.evo.maps');\n });\n });\n})(jQuery);"]}