{"version":3,"file":"framework-2.0.37.min.js","sources":["cogs/js/framework-2.0.37.min.js"],"sourcesContent":["/* Custom script for DisneyHolidays.xx framework v2.0.0 */\n/* Includes all brands (WDW/DLP/DCL) and all devices (mobile/desktop) */\n/* Author: Tom Nelson/Lindsay Prahalad, October 2015 */\n\n// -------------------------------------------------------------------------------------------------------------------\n\n// Global variables\n\n// Setup billboard on portfolio/brand homepages or content pages that use this e.g. WDW Ticket Store\nvar billboard;\nvar ytPlayers = [];\n\nvar constants = {\n get date() {\n return moment().format('MMMM Do YYYY, h:mm:ss a')\n },\n phone: typeof phone !== 'undefined' ? phone : '',\n}\n\nvar literal = function (str, values) {\n var allVariables = _.assignInWith(constants, values)\n return _.template(_.get(literalStrings,str))(allVariables);\n}\n\nvar getJsPath = function() {\n return '/cogs/js/';\n}\n\n// -------------------------------------------------------------------------------------------------------------------\n\n// Global functions\n\n// jQuery plugin to check if tag has attribute\n// Important! Call with jQuery(this).hasAttr not $(this).hasAttr to avoid clash with Adobe Analytics\n$.fn.hasAttr = function (name) { return this.attr(name) !== undefined; };\n\n// Fix body to prevent scrolling (off canvas, modal, etc)\nfunction fixBody(state) { // Pass true/false\n if (state) { $('body').addClass('no-scroll'); }\n else { $('body').removeClass('no-scroll'); }\n}\n\n// Log device orientation in GA; include in shared framework to run on tablets which are served the 'desktop' framework\nfunction logOrientation() {\n // Determine device orientation\n var deviceOrientation = ($(window).width() > $(window).height()) ? 'Landscape' : 'Portrait';\n GA.sendEvent( 'Device', 'Orientation', deviceOrientation);\n}\n\n// Select Extras\nif ($('#extras').length) {\n // Track Booker opt-in or opt-out in Google Analytics\n $('#earm').change(function () {\n var gaValue;\n if ($(this).prop('checked') == true) { gaValue = 'Opt-In'; }\n else { gaValue = 'Opt-Out'; }\n GA.sendEvent( 'Marketing', 'MyMagic+', gaValue);\n });\n\n if (typeof flightAPI !== 'undefined' && flightAPI !== 'EasyJet') {\n $('#page input[type=\"submit\"]').click(function (event) {\n event.preventDefault();\n intermission();\n form = $('#form');\n delay = 500;\n submitForm();\n });\n }\n}\n\n// -------------------------------------------------------------------------------------------------------------------\n// -------------------------------------------------------------------------------------------------------------------\n\n// Homepage Billboard\n\n// Run billboard with device-specific parameters\nvar startBillboard = function () {\n // Get slick library\n fetchSlick(function () {\n // Set parameters\n var billboardSettings = {\n autoplay: true,\n autoplaySpeed: 7000\n };\n\n // Add extra properties for desktop\n if (desktop) {\n billboardSettings.pauseOnHover = false;\n billboardSettings.fade = true;\n // billboardSettings.dots = true; // Disable dots until launch\n }\n // Initialise slick\n // TODO: catch when this is not a function?\n billboard.slick(billboardSettings);\n });\n};\n\n$('.billboard-show-info-trigger').click(function (e) {\n e.preventDefault();\n e.stopPropagation();\n if ($(this).attr('data-warning')) {\n var message = $(this).attr('data-warning').split('~');\n if (message[1] == undefined) {\n message[1] = message[0];\n message[0] = \"Terms Apply\";\n } \n warning(message[0], message[1]);\n }\n})\n\n// -------------------------------------------------------------------------------------------------------------------\n\n// Billboard on content pages e.g. WDW Ticket Store\n\n// Run billboard with device-specific parameters\nvar startBillboardOnContentPage = function() {\n // Get slick library\n $.getScript(getJsPath() + \"libs/slick-1.6.0.min.js\", function() {\n // Set parameters\n var billboardSettings = {\n autoplay: true,\n autoplaySpeed: 5000,\n fade: true\n };\n\n // Add extra properties for desktop\n if(desktop) {\n billboardSettings.pauseOnHover = false;\n }\n\n var prevSpeed;\n var prevPaused;\n var setCustomValues = function(event, slick, currentSlide) {\n\n var customSpeed = slick.$slides[currentSlide || 0].getAttribute('custom-speed');\n var customPause = slick.$slides[currentSlide || 0].getAttribute('custom-pause');\n if (slick.options.autoplaySpeed !== customSpeed) {\n if (customSpeed) {\n prevSpeed = slick.options.autoplaySpeed;\n slick.setOption('autoplaySpeed', customSpeed);\n } else {\n slick.setOption('autoplaySpeed', prevSpeed);\n }\n }\n if (customPause) {\n setTimeout( () => slick.slickPause(), 20)\n prevPaused = true;\n } else {\n prevPaused = false;\n setTimeout( () => slick.slickPlay(), 20)\n }\n }\n billboard.on('afterChange', setCustomValues);\n billboard.on('init', setCustomValues);\n billboard.slick(billboardSettings);\n });\n};\n\n// -------------------------------------------------------------------------------------------------------------------\n// -------------------------------------------------------------------------------------------------------------------\n\n// Analytics (Google Analytics and Adobe Analytics, e.g. Omniture SiteCatalyst)\n\n// Manage and track outbound clicks if points to external domain\nfunction outboundClick(clicked, blank) {\n // Popup links (e.g. social buttons) automatically launch a pop up window, so suppress function; clicks are tracked via _trackSocial\n if (clicked.hasClass('popup')) { return; }\n // Get destination URL\n var url = clicked.attr('href');\n // Track clicks to external domains in GA\n externalDomain(url);\n // Delay by 0.25 seconds to allow GAQ to fire if same window\n if (!blank) { setTimeout(function () { window.open(url, '_parent'); }, 250); };\n};\n\n// -------------------------------------------\n\n// Log clicks to external domains in Google Analytics\nfunction externalDomain(domain) {\n // Setup outbound domain\n var outbound\n // Check destination domain and override value for GA, if necessary (e.g. DCL affiliate links)\n if (domain.match('disneyworld.disney.go.com|disneybeachresorts.com')) { outbound = 'disneyworld.co.uk' }\n if (domain.match('disneycruise.disney.go.com')) { outbound = 'disneycruise.co.uk' }\n if (domain.match('holidayextras.co.uk')) { outbound = 'holidayextras.co.uk' }\n if (domain.match('thetrainline.com')) { outbound = 'thetrainline.com' }\n if (domain.match('nationalexpress.com')) { outbound = 'nationalexpress.com' }\n // If domain is not matched then use regex to get base URL\n if (!outbound) { if (domain.indexOf(\"://\") > -1) { outbound = domain.split('/')[2]; } }\n // Google Analytics: track outbound clicks\n if (outbound) { GA.sendEvent( 'Outbound Link', outbound, domain); }\n}\n\n// -------------------------------------------\n\n// Google Analytics: events for errors\nfunction logErrors() {\n if ($('.event-expired').length) { GA.sendEvent( 'Book', 'Error', 'Timeout'); }; // Timeout\n if ($('.event-hotel').length) { GA.sendEvent( 'Book', 'Error', 'Hotel Unavailable'); }; // No hotel availability\n if ($('.event-eurostar').length) { GA.sendEvent( 'Book', 'Error', 'Eurostar Unavailable'); }; // No Eurostar availability\n if ($('.event-flights').length) { GA.sendEvent( 'Book', 'Error', 'Flights Unavailable'); }; // No flight availability\n if ($('.event-selfdrive').length) { GA.sendEvent( 'Book', 'Error', 'Self Drive Unavailable'); }; // No self drive availability\n if ($('.event-seats').length) { GA.sendEvent( 'Book', 'Error', 'Seats Unavailable'); }; // No seat availability (Gold Medal second call)\n if ($('.event-outofrange').length) { GA.sendEvent( 'Book', 'Error', 'Flights Out of Range'); }; // Flights are out of range (11 months+)\n if ($('.event-noallocations').length) { GA.sendEvent('Book', 'Error', 'No Allocation Flights'); }; // Allocations unavailable (11 months+)\n if ($('.event-noflights').length) { GA.sendEvent('Book', 'Error', 'No Flights (11+ Months)'); }; // Flights are out of range (11 months+)\n if ($('.event-booking').length) { GA.sendEvent( 'Book', 'Error', 'Booking Failure'); }; // Booking fails (payment or transport availabilty)\n if ($('.event-ticketavailability').length) { GA.sendEvent('Book', 'Error', 'No ticket availability'); }; //No ticket availability\n if ($('.event-parkcapacity').length) { GA.sendEvent('Book', 'Error', 'No park capacity'); }; //No park capacity\n if ($('.event-onlysevendayticketavailable').length) { GA.sendEvent('Book', 'Error', 'Only seven-day tickets available'); }; //Only seven-day tickets are available\n\n\n if ($('.exception').length) { GA.sendEvent('Book', 'Error', 'Exception'); }; // Search fails (exception)\n}\n\n// -------------------------------------------\n\n// Google Analytics: track clicks on launch panel button\n$('.launch a.url').click(function (event) {\n // Prevent default to track click in GA\n event.preventDefault();\n // Get data\n var href = $(this).attr('href');\n var action = $(this).attr('data-action');\n // Determine if parent is section or aside\n var parent; if ($(this).parents('section').length) { parent = 'Body' } else { parent = 'Sidebar' };\n // Track in GA\n GA.sendEvent( 'Book', 'Click (' + parent + ')', action);\n // Redirect to Target URL after .25 second delay\n setTimeout(function () { window.location = href; }, 250);\n});\n\n// -------------------------------------------\n\n// Google Analytics: lookup brands by url or short code (e.g. wdw)\nfunction lookupBrand(data, output) { // data = URL or code, output = url/code/name\n // Use fall-through for multiple matches\n switch (data) {\n // ------------------\n // Disneyland Paris\n case 'dlp':\n case '/disneyland-paris/':\n // Return output\n if (output == 'url') { return '/disneyland-paris/' }\n if (output == 'code') { return 'dlp' }\n if (output == 'name') { return 'Disneyland Paris' }\n // ------------------\n // Walt Disney World\n case 'wdw':\n case '/walt-disney-world/':\n // Return output\n if (output == 'url') { return '/walt-disney-world/' }\n if (output == 'code') { return 'wdw' }\n if (output == 'name') { return 'Walt Disney World' }\n // ------------------\n // Disney Cruise Line\n case 'dcl':\n case '/disney-cruise-line/':\n // Return output\n if (output == 'url') { return '/disney-cruise-line/' }\n if (output == 'code') { return 'dcl' }\n if (output == 'name') { return 'Disney Cruise Line' }\n // ------------------\n // Walt Disney Travel Company\n default:\n // Return output\n if (output == 'url') { return '/' }\n if (output == 'code') { return 'wdtc' }\n if (output == 'name') { return 'Walt Disney Travel Company' }\n }\n}\n\n// -------------------------------------------\n\n// Google Analytics: track activity in the chrome/offcanvas when switching between brands\n$('#chrome dfn a, nav li.sublink.brand a').click(function (event) {\n // Pause\n event.preventDefault();\n // Check current brand\n var currentbrand = $('body').attr('data-brand');\n // Get clicked destination URL\n var targeturl = $(this).attr('href');\n // Determine target brand\n var targetbrand = lookupBrand(targeturl, 'code');\n // No action from portfolio homepage, or if switching from/to the same brand\n if ((currentbrand == 'wdtc') || (currentbrand == targetbrand)) {\n window.location = targeturl;\n } else {\n // Otherwise build trackEvent data\n var portfolio = lookupBrand(currentbrand, 'name') + ' to ' + lookupBrand(targetbrand, 'name');\n // Track in GA\n GA.sendEvent( 'Chrome', 'Portfolio', portfolio);\n // Redirect to target URL after .25 second delay\n setTimeout(function () { window.location = targeturl; }, 250);\n };\n});\n\n// -------------------------------------------------------------------------------------------------------------------\n// -------------------------------------------------------------------------------------------------------------------\n\n// Manage modal dialog (generic)\n\n// User dismissable dialog; false by default\nvar dismissable = false;\n\n// Show bouncing arrow for scrollable content\nfunction bounce() {\n $('#dialog p.arrow').show().delay(4000).fadeOut();\n}\n\n// Check if content height exceeds viewable container height (mobile only)\nfunction addScroll(dialog) {\n // Mobile only\n if (mobile || $(dialog).hasClass('wide')) {\n // Get heights of container/content\n var container = $('#dialog').height(); // Viewable height of #dialog\n var content = $(dialog + ' > div').height(); // Total height of content\n // If content exceeds container then make scrollable\n if (content > container) {\n $('#dialog').addClass('scrollable');\n bounce();\n fixBody(true);\n }\n }\n}\n// Set info modal onclick event\n$(\"a[id$='info-modal-trigger']\").each(function (i, el) {\n $(el).click(function () {\n infoModal(el);\n })\n})\n//Show info modals\nfunction infoModal(modalLink) {\n var gaEvent = $(modalLink).attr('data-ga-event').split(\"|\");\n dismissable = true;\n $('#dialog').addClass('dismissable information');\n GA.sendEvent( gaEvent[0], gaEvent[1], gaEvent[2]);\n modal($(modalLink).attr('data-modal-id'), true);\n}\n// Show modal with delay to allow for fixBody() to complete\nfunction modal(dialog, scrollable) {\n // Show overlay\n $(dialog).removeClass('hide').siblings('.modal').addClass('hide');\n $('#overlay').show();\n // Show modal\n $('#interstitial').show();\n // If content may be scrollable, check relative heights\n if (scrollable) { addScroll(dialog); }\n}\n\n// Collapse modal dialog and remove class\nfunction collapse() {\n $('#overlay').hide();\n $('#interstitial').hide();\n $('#dialog').removeClass();\n $('.modal').addClass('hide');\n fixBody(false);\n}\n\n// Dismiss dialog\nfunction dismiss() {\n if (dismissable) {\n collapse();\n dismissable = false;\n };\n}\n\n// Listen for esc press, or users click on overlay outside of modal dialog\n$(function () {\n $('#modal').click(function (event) { event.stopPropagation(); });\n $('#interstitial, .cancel, .close, .close:before').click(dismiss);\n $(document).keyup(function (event) { if (event.keyCode == 27) { dismiss(); } });\n});\n\n// -------------------------------------------\n\n// Manage modal dialog (specific)\n\n// Setup variables to be populated by brand level functions\nvar character;\nvar nickname;\nvar fact;\n\n// -------------------------------------------\n\n// Delay submission by default to allow image to load\nvar submit = false;\n\n// Setup variables for form submission\nvar form;\nvar delay;\n\n// Wait for image to load before submitting form\nfunction submitForm() {\n // Re-check if we can submit form every 0.5 seconds\n if (submit == false) { setTimeout(function () { submitForm() }, 500); }\n // Submit form when flag equals true (e.g. image is loaded or 3 seconds has elapsed)\n else { setTimeout(function () { form.submit(); }, delay); }\n}\n\n// -------------------------------------------\n\n// Display intermission message; user cannot dismiss\nfunction intermission(type) { // Optional 'type' parameter for booking message\n // Set body to posiiton:fixed to force toolbars\n fixBody(true);\n // Set character/nickname/fact\n intermissionData();\n // Set brand\n var brandname\n switch (brand) {\n case 'dlp': brandname = 'Disneyland® Paris'; break;\n case 'wdw': brandname = 'Walt Disney World®'; break;\n case 'dcl': brandname = 'Disney Cruise Line®'; break;\n }\n // Setup messages\n $('#intermission h2').html(literal('intermission.title', { nickname: nickname }));\n $('#intermission h3').html(literal('intermission.message', { brandname: brandname }));\n $('#intermission p:first').html(literal('intermission.did-you-know') + fact);\n // Load image\n $('#intermission .image').addClass(character);\n $('#intermission .image img').attr('src', '/images/modal/' + character + '.png');\n // Listen for callback or give up after 3 seconds\n $('#intermission .image img').load(function () { submit = true; });\n setTimeout(function () { submit = true; }, 3000); // Fallback\n // Alternative message for payment/booking\n if (type == 'booking') { $('#intermission h3').html(literal('intermission.payment')); }\n // Add intermission class to dialog\n $('#dialog').addClass('intermission has-image');\n // Show dialog\n modal('#intermission', false);\n // Dialog is not dismissable\n dismissable = false;\n}\n\n// -------------------------------------------\n\n// Display warning message; user can dismiss\nfunction warning(message, advisory) {\n // Dialog is dismissable\n dismissable = true;\n $('#dialog').addClass('dismissable');\n // Set class and content\n $('#dialog').addClass('warning');\n $('#warning h3').html(message); $('#warning p:first').html(advisory);\n // Show dialog\n modal('#warning', true);\n}\n\n// -------------------------------------------------------------------------------------------------------------------\n// -------------------------------------------------------------------------------------------------------------------\n\n// Generic\n\n// Sliding panel for Disney deal terms, etc.\nif ($('#terms').length) { $('.footer a').click(function () { $('#terms').slideDown(); }); };\n\n// Clicking wrapper also clicks button; stopPropagation on input to prevent loop\n$('span.button,span.cancel,span.disabled').click(function () { $(this).find(\"input\").click(); }); $('span > input').click(function (event) { event.stopPropagation(); });\n\n// Scroll to corresponding anchor on page; applies to any with 'anchor' attribute\n$('a[anchor]').click(function () { jQuery.scrollTo($(this).attr('anchor'), 400, { offset: -10, axis: 'y' }); });\n\n// Scroll to terms in footer from sample itinerary package\n$('.synopsis small a').click(function () { jQuery.scrollTo('.footer', 400, { offset: -10, axis: 'y' }); });\n\n//Read more/less t&c's button\n$(\"a.show-hide\").click(function () {\n var txt = $(\"#terms\").is(':visible') ? literal('more') : literal('less');\n $(\".show-hide\").text(txt);\n $('#terms').slideToggle(200);\n});\n\n$(\"a.show-hide-generic\").click(function () {\n // get panel to show and hide\n var pnlId = $(this).attr(\"data-panel\");\n var flagUseMoreLess = $(this).attr(\"data-panelusemoreless\");\n\n if (flagUseMoreLess == \"1\" || flagUseMoreLess == \"true\") {\n var txt = $(\"#\" + pnlId).is(':visible') ? literal('more') : literal('less');\n $(this).text(txt);\n }\n\n $(\"#\" + pnlId).slideToggle(200);\n});\n\n// -------------------------------------------------------------------------------------------------------------------\n// -------------------------------------------------------------------------------------------------------------------\n\n// Bookflow\n\n// -------------------------------------------\n\n/* Popups */\n\n// Manage popup for luggage\nfunction luggage() {\n GA.sendEvent( 'Book', 'Enquiry', 'Hold Luggage');\n warning(literal('hold-luggage-title'), literal('hold-luggage-message') );\n};\n\n// -------------------------------------------\n\n// Select hotel\n$('.accommodation .images img').click(function () { $(this).closest('.accommodation').find('input').click(); });\n\n// Select room\n$('.errata .expand a').click(function (event) { event.preventDefault(); $('.errata .expand').hide(); $('.errata .details').show(); GA.sendEvent( 'Book', 'Enquiry', 'Errata'); });\n\n// Itinerary\n$('.itinerary .luggage a').click(function (event) { event.preventDefault(); luggage(); });\n\n// Passenger details: check input on DoB field on click, then clear and remove 'grey' class if value is DD/MM/YYYY\n$('#passengers .details input[name*=\"dob\"]').focus(function () { if ($(this).val() == 'DD/MM/YYYY') { $(this).val(''); }; $(this).removeClass('grey'); });\n\n// -------------------------------------------\n\n//Suppressed as part of DEV-1137 GDPR: First Layer Fair Privacy Notice\n\n// Toggle the T&C checkboxes on country in contact details forms\n//function toggleCountrySpecificContent(country, locationChanged) {\n// if (locationChanged) { $(\"label[for='group']\").removeClass('error'); };\n// var selectedCountry = country.toLowerCase();\n// var elements = $(\"[data-location~='\" + selectedCountry + \"']\");\n// if (elements.length > 0)\n// {\n// $(\"[data-location!='\" + selectedCountry + \"'][data-location]\").css('display', 'none');\n// $(\"[data-location~='\" + selectedCountry + \"']\").show();\n// } else {\n// $(\"[data-location='']\").show();\n// $(\"[data-location][data-location!='']\").css('display', 'none');\n// }\n//}\n\n// Check retained selected country value on page refresh to ensure country-specific content remains visible/hidden\n//if ($(\"#country\").length) {\n//toggleCountrySpecificContent($('#country').find(':selected').text(), false);\n//};\n\n// Check country and advise that payment is in local currency\n$('.contact #country').change(function () {\n var locale = $('#country').attr('data-locale');\n var country = $('#country').val();\n// toggleCountrySpecificContent(country, true);\n if (locale == \"gbr\" && country != 'United Kingdom') { warning(literal('payment-pounds-title'),literal('payment-pounds-message') ); GA.sendEvent( 'Alert', 'Checkout', 'GBP Payment'); }\n else if ((locale == \"irl\" || locale == \"eur\" || locale == \"deu\" || locale == \"esp\") && (country == 'Bulgaria' || country == 'Croatia' || country == 'Czech Republic' || country == 'Denmark' || country == 'Hungary' || country == 'Poland' || country == 'Romania' || country == 'Sweden' || country == 'United Kingdom')) {\n warning(literal('payment-euros-title'), literal('payment-euros-message')); GA.sendEvent( 'Alert', 'Checkout', 'EUR Payment');\n }\n});\n// -------------------------------------------\n\n// Non-EU\n$('.billing a').click(function () { warning(literal('non-eu-title'), literal('non-eu-message')); GA.sendEvent( 'Book', 'Enquiry', 'European Union Only'); });\n\n// Track marcomms opt-in/outs in Google Analytics\n$('#contact .updates input').change(function () {\n // Opt-in/out\n if ($('input:checked').val() == 'Y') { GA.sendEvent( 'Marketing', 'Booking', 'Opt-In'); }\n if ($('input:checked').val() == 'N') { GA.sendEvent( 'Marketing', 'Booking', 'Opt-Out'); }\n});\n\n// -------------------------------------------\n\n// Hotels\n\n// Clicking anywhere on a hotel clicks through to details, not just the link\n$('.resort img').click(function () { window.location = $(this).parent().find('a').attr('href'); })\n\n// Track outbound clicks on TripAdvisor links\n$('.resort p.reviews').click(function (event) {\n // Prevent event from bubbling up the DOM tree\n event.preventDefault();\n event.stopImmediatePropagation();\n // Get TripAdvisor link\n var link = $(this).attr('data-review');\n // Track in GA\n GA.sendEvent( 'Outbound Link', 'TripAdvisor', link );\n // Redirect to Target URL after .25 second delay\n setTimeout(function () { window.open(link, '_blank') }, 250);\n});\n\n// -------------------------------------------\n\n// Deals\n$('.offer img').click(function () { window.location = $(this).parent().find('a').attr('href'); })\n\n// -------------------------------------------------------------------------------------------------------------------\n// -------------------------------------------------------------------------------------------------------------------\n\n// Ensure interstitial and overlay are hidden on unload in case user goes 'Back' in browser; bind 'pagehide' for iOS\n$(window).unload(function () { collapse(); });\n$(window).bind('pagehide', function () { collapse(); });\n\n// -------------------------------------------------------------------------------------------------------------------\n// -------------------------------------------------------------------------------------------------------------------\n\n// On ready\n$(document).ready(function () {\n\n // -------------------------------------------------------------------------------------------------------------------\n\n // Generic\n\n // Track outbound click in current window (target=_self)\n $('a[href^=\"http\"][target!=\"_blank\"]').click(function (event) {\n // Pause click\n event.preventDefault();\n // Track outbound click\n outboundClick($(this), false);\n });\n\n // Track outbound click in new window (target=_blank)\n $('a[href^=\"http\"][target=\"_blank\"]').click(function (event) {\n // Track outbound click\n outboundClick($(this), true);\n });\n\n // -------------------------------------------------------------------------------------------------------------------\n\n // On load\n\n // Ensure interstitial and overlay are hidden on load; bind 'pageshow' for iOS; exclude interstitial\n if (!$('body').hasClass('interstitial')) { collapse(); $(window).bind('pageshow', function () { collapse(); }); }\n\n // Log errors in Google Analytics\n logErrors();\n\n // -------------------------------------------------------------------------------------------------------------------\n\n // Homepage and WDW Ticket Store\n\n // Setup billboard carousel on portfolio/brand homepages\n if($('body').hasClass('homepage')) {\n // Setup\n billboard = $('.billboard');\n initialiseBillboard();\n }\n\n // Setup billboard carousel on content pages e.g. WDW Ticket Store\n if($('#body').hasClass('carousel')) {\n // Setup\n billboard = $('.billboard');\n initialiseBillboard('contentPage');\n }\n\n if($('#body.carousel #banner-message').length != 0) {\n $('.billboard').addClass('top-border-radius');\n }\n\n // -------------------------------------------\n\n // Submit form on FAQs drop menu selection\n $('.faq #category').change(function () { $('#form').submit(); });\n\n if($('.reopening-hotels-list').length) {\n $('.reopening-hotels-list').accordion({heightStyle: \"content\", active: false, collapsible: true})\n }\n \n if ($('.ytplayer, #ytplayer').length ) {\n var tag = document.createElement('script');\n tag.src = \"https://www.youtube.com/iframe_api\";\n var firstScriptTag = document.getElementsByTagName('script')[0];\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n\n var player;\n }\n addVariantToDataLayer(typeof tmsPageVariant !== 'undefined' ? tmsPageVariant : null);\n\n $('.average-price').click( showAveragePriceModal )\n\n // -------------------------------------------\n\n});\n\nfunction onYouTubeIframeAPIReady() {\n $('.ytplayer, #ytplayer').each(function(index, videoContainer){\n ytPlayers[index] = new YT.Player(videoContainer.id, {\n events: {\n 'onReady': function(event) { return onPlayerReady(event, videoContainer, index) }\n }\n });\n })\n}\n\nfunction onPlayerReady(event, videoContainer, index) {\n var keyFrame = $(videoContainer).parent().siblings('.keyframe'); \n $('#play', keyFrame).click(function () {\n GA.sendEvent('Marketing', 'Click', 'Play Video');\n $(keyFrame).hide();\n ytPlayers[index].playVideo();\n });\n}\n\n// -------------------------------------------\n//planning\n// Check date of birth\nvar validDoB = function (day, month, year, ageError) {\n // Get now\n var now = moment();\n // Build DoB\n day = parseInt($(day).val());\n month = parseInt($(month).val());\n year = parseInt($(year).val());\n // Do we have three valid date values?\n if (!isNaN(day) && !isNaN(month) && !isNaN(year)) {\n // Convert to moment\n var dob = moment([year, month - 1, day]);\n // Is this a valid date of birth?\n if (dob.isValid()) {\n // Does this DoB make the guest less than 18 years old?\n if (dob.isAfter(now.subtract(18, 'y'))) { warning(ageError[0], ageError[1]); }\n }\n }\n};\n\n//Signup validation\nif ($(\"#body.signup\").length) {\n //initialization\n var ageError = [literal('over-18-title'), literal('over-18-message')];\n var day = '#body.signup #day', month = '#body.signup #month', year = '#body.signup #year';\n\n // Check valid DoB\n $(day + \", \" + month + \", \" + year).change(function () {\n validDoB(day, month, year, ageError);\n });\n\n // Check if this is the confirmation screen and fire GA event\n if ($(\"#body.signup\").attr('data-step') == 'confirmation') { GA.sendEvent( 'Marketing', 'Signup', 'Opt-In'); }\n};\n\n\n// -------------------------------------------\n\n//onetrust\n\n$('#onetrust-pc-btn-handler').click(function () {\n window.Optanon.ToggleInfoDisplay();\n});\n\nif ($('.carousel-cards').length) {\n fetchSlick(function(){\n $('.carousel-cards').each( function(index, scrollableContainer) {\n var numberOfSlides = $(this).closest('.carousel-narrow').length ? 2 : 3;\n if (numberOfSlides === 2) {\n $(scrollableContainer).on('init', function () {\n var fixActiveCard = $('.carousel-card.slick-active').eq(2)\n fixActiveCard.css('transition', 'none').removeClass('slick-active')\n setTimeout(function () {\n fixActiveCard.css('transition', '1s opacity')\n }, 1)\n })\n $(scrollableContainer).on('beforeChange', function () {\n setTimeout(function () {\n $('.carousel-card.slick-active').eq(2).removeClass('slick-active')\n }, 1)\n })\n }\n $(scrollableContainer).slick({\n dots: true,\n speed: 500,\n centerMode: $(scrollableContainer).find('.carousel-card').length > 3,\n centerPadding: '50px',\n swipe: true,\n slidesToShow: numberOfSlides,\n slidesToScroll: 1,\n appendArrows: $('.slider-nav', $(this.parentElement)),\n appendDots: $('.slider-nav', $(this.parentElement)),\n responsive: [{\n breakpoint: 1024,\n settings: {\n swipe: false,\n \n }\n }, {\n breakpoint: 600,\n settings: {\n slidesToShow: 1,\n slidesToScroll: 1,\n centerMode: true,\n centerPadding: '30px',\n }\n }]\n });\n }) \n })\n}\n\n\nfunction fetchSlick(callback) {\n if (!$().slick) {\n $.getScript(getJsPath() + \"libs/slick-1.6.0.min.js\", callback);\n } else {\n callback();\n }\n}\n\n\n//--------------------------------------------\n//disney plus\n\nif ($('#terms').length) { $('#disneyplus').click(function () { $('#terms').slideDown(); jQuery.scrollTo($('#terms'), 400, { offset: -10, axis: 'y' });}); };\n\n\n$('#agents #new-password').keyup(function(){\n validateAgentPassword(this.value)\n});\n\n$('#agents #new-password').blur(function(){\n validateAgentPassword(this.value, true)\n});\n\n$('#agents span.button input[value=\"Update Password\"]').attr('disabled', true).parent().toggleClass('disabled',true);\n\n$('#instalments-show-info-trigger').click( function() {\n if ($(this).attr('data-warning')) {\n var message = $(this).attr('data-warning').split('|');\n warning(message[0], message[1]);\n }\n})\n \n$('#instalment-input-amount').focus(function(){\n $('#instalment-own-amount').prop('checked',true);\n $(this).removeClass('error');\n\n});\n\n$('#instalments-make-payment').click(function(){\n var isAmountValid = true;\n \n if ($('#instalment-own-amount').prop('checked')) {\n var amountValue = $('#instalment-input-amount').val();\n if (!amountValue || (amountValue < 10 && paymentBalance >= 10) || isNaN(amountValue)) {\n warning(literal('instalment-validation-minimum-title', {currencySymbol}), literal('instalment-validation-minimum-message', {currencySymbol}));\n isAmountValid = false;\n } else if (amountValue > paymentBalance) {\n warning(literal('instalment-validation-maximum-title'), literal('instalment-validation-maximum-message'));\n isAmountValid = false;\n }\n }\n \n if (isAmountValid) {\n SetInstalmentPaymentAnalytics();\n $('form').submit();\n } else {\n $('#instalment-input-amount').addClass('error');\n }\n \n})\n\nfunction SetInstalmentPaymentAnalytics() {\n var instalmentPaymentTypeAndAmount = $('input[name=instalment-option]:checked', '#form').val();\n var paymentType = instalmentPaymentTypeAndAmount.split(\"~\")[0];\n\n var amount = instalmentPaymentTypeAndAmount.split(\"~\")[1];\n\n if (paymentType == 'Custom') {\n amount = $('#instalment-input-amount').val();\n }\n\n var details = paymentType.concat(\"|\", leadTimeDays, \"|\", amount, \"|\", paymentBalance, \"|\", bookingReference);\n\n GA.sendEvent( 'InstalmentPayment', 'Type', paymentType);\n GA.sendEvent( 'InstalmentPayment', paymentType, 'Amount', amount);\n GA.sendEvent( 'InstalmentPayment', 'Detail', details);\n}\n\nfunction addVariantToDataLayer(variant){\n var formatVariant = {\n \"Expired\" :'Timeout',\n \"NoAllocations\" :'No Allocation Flights',\n \"OutOfRange\" :'Flights Out of Range',\n \"NoFlights\" :'No Flights (11+ Months)',\n \"Hotel\" :'Hotel Unavailable',\n \"Eurostar\" :'Eurostar Unavailable',\n \"Flights\" :'Flights Unavailable',\n \"SelfDrive\" :'Self Drive Unavailable',\n \"Seats\" :'Seats Unavailable',\n \"Payment\" :'Payment Failure',\n \"Booking\" :'Booking Failure',\n }\n window.dataLayer.page.variant = formatVariant[variant] || variant; \n}\n\nfunction showAveragePriceModal() {\n warning(literal('modals.averagePrice.title'), literal('modals.averagePrice.message'))\n}\n"],"names":["billboard","ytPlayers","constants","date","moment","format","phone","literal","str","values","allVariables","_","assignInWith","template","get","literalStrings","getJsPath","fixBody","state","$","addClass","removeClass","logOrientation","deviceOrientation","window","width","height","GA","sendEvent","fn","hasAttr","name","undefined","this","attr","length","change","gaValue","prop","flightAPI","click","event","preventDefault","intermission","form","delay","submitForm","startBillboard","fetchSlick","billboardSettings","autoplay","autoplaySpeed","desktop","pauseOnHover","fade","slick","startBillboardOnContentPage","e","stopPropagation","message","split","warning","getScript","setCustomValues","currentSlide","customSpeed","$slides","getAttribute","customPause","options","prevSpeed","setOption","setTimeout","slickPause","slickPlay","on","outboundClick","clicked","blank","url","hasClass","externalDomain","open","domain","outbound","match","indexOf","logErrors","lookupBrand","data","output","href","action","parent","parents","location","currentbrand","targeturl","targetbrand","portfolio","character","nickname","fact","dismissable","bounce","show","fadeOut","addScroll","dialog","mobile","infoModal","modalLink","gaEvent","modal","scrollable","siblings","collapse","hide","dismiss","each","i","el","document","keyup","keyCode","submit","type","brandname","intermissionData","brand","html","load","advisory","luggage","onYouTubeIframeAPIReady","index","videoContainer","YT","Player","id","events","onReady","onPlayerReady","keyFrame","playVideo","slideDown","find","jQuery","scrollTo","offset","axis","txt","is","text","slideToggle","pnlId","flagUseMoreLess","closest","focus","val","locale","country","stopImmediatePropagation","link","unload","bind","ready","tag","firstScriptTag","initialiseBillboard","accordion","heightStyle","active","collapsible","createElement","src","getElementsByTagName","parentNode","insertBefore","addVariantToDataLayer","tmsPageVariant","showAveragePriceModal","ageError","day","month","year","validDoB","now","parseInt","isNaN","dob","isValid","isAfter","subtract","callback","SetInstalmentPaymentAnalytics","instalmentPaymentTypeAndAmount","paymentType","amount","details","concat","leadTimeDays","paymentBalance","bookingReference","variant","dataLayer","page","Expired","NoAllocations","OutOfRange","NoFlights","Hotel","Eurostar","Flights","SelfDrive","Seats","Payment","Booking","Optanon","ToggleInfoDisplay","scrollableContainer","numberOfSlides","fixActiveCard","eq","css","dots","speed","centerMode","centerPadding","swipe","slidesToShow","slidesToScroll","appendArrows","parentElement","appendDots","responsive","breakpoint","settings","validateAgentPassword","value","blur","toggleClass","amountValue","isAmountValid","currencySymbol"],"mappings":"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"}