{"version":3,"file":"disneyland-paris-2.0.22.min.js","sources":["disneyland-paris/cogs/js/disneyland-paris-2.0.22.min.js"],"sourcesContent":["/* Custom script for Disneyland Paris brand v2.0.0 */\n/* Includes all devices (mobile/desktop) */\n/* Author: Lindsay Prahalad/Tom Nelson, October 2015 */\n\n// -------------------------------------------------------------------------------------------------------------------\n\n// Global variables\n\n// Setup brand variable\nvar brand = 'dlp'\n\n\nvar selectedSlots = {} //contains all user selected slots, with the date and type as object key, like \"2022-07-08~Lunch\"\nvar includedSlots = []; //the extra codes of the slots included as free in the offer\nvar askContinueWithoutIncluded = false;\nvar diningModalAlreadyShown = false;\n// -------------------------------------------------------------------------------------------------------------------\n\n// Modal dialogs\n\n// Intermission\n\n// Set character/nickname/fact\nfunction intermissionData() {\n // Set random character\n var randomise = Math.floor(Math.random() * 7);\n character = [\n 'jiminy-cricket',\n 'cheshire-cat',\n 'daisy-duck',\n 'goofy',\n 'mickey-mouse',\n 'huey-dewey-louie',\n 'minnie-mouse',\n ][randomise];\n\n nickname = literal('dlp.nicknames[' + randomise + ']');\n\n // Set random fact\n var randomise = Math.floor(Math.random() * 10);\n fact = literal('dlp.facts[' + randomise + ']');\n}\n\n// -------------------------------------------\n\n// Display verification overlay for ticket opt-out; user can dismiss\nfunction infants() {\n //$.removeCookie('infants'); // Development only\n // Get form\n var form = $('#form');\n // Bind new listener to 'Continue' button; record action, delay form submission by 0.25 seconds to allow GAQ to fire\n $('#infants .button').bind('click', function () {\n // Track acceptance in GA\n GA.sendEvent( 'Alert', 'Infants on Eurostar', 'Accept');\n // Set cookie to only show once per session after user accepts\n setCookie('infants', 'true', 0)\n // Submit\n setTimeout(function () { form.submit(); }, 250);\n });\n // Have we already show this advisory message?\n if (readCookie('infants') != 'true') {\n // Dialog is dismissable\n dismissable = true;\n $('#dialog').addClass('dismissable');\n // Set class\n $('#dialog').addClass('warning has-buttons');\n // Track view in GA\n GA.sendEvent( 'Alert', 'Infants on Eurostar', 'Advisory');\n // Show dialog\n modal('#infants', false);\n }\n // Otherwise continue form submission\n else { form.submit(); }\n}\n\n// -------------------------------------------------------------------------------------------------------------------\n\n// Display overlay for Villages Nature\nfunction villagesnature() {\n // Dialog is dismissable\n dismissable = true;\n $('#dialog').addClass('dismissable');\n // Track in GA\n GA.sendEvent( 'Book', 'Enquiry', 'Villages Nature');\n // Add class to dialog\n $('#dialog').addClass('villagesnature has-image');\n // Show dialog\n modal('#villagesnature', false);\n}\n\n// -------------------------------------------------------------------------------------------------------------------\n\n// Display overlay for themed offline deals\nfunction offlineDeal() {\n // Dialog is dismissable\n dismissable = true;\n $('#dialog').addClass('dismissable');\n // Track in GA\n GA.sendEvent( 'Book', 'Enquiry', 'Offline Deal');\n // Add class to dialog\n $('#dialog').addClass('offline-cta has-image');\n // Show dialog\n modal('#offline-cta', false);\n}\n\n// -------------------------------------------------------------------------------------------------------------------\n\n// Transport switch\n\n// Display transport options; user can dismiss\nfunction switcher(transport) {\n // Set switch value\n $('#modify #switch').val(transport);\n // If Hotel Only then submit form\n if (transport == 'Hotel') {\n $('#form').submit();\n }\n // Otherwise show transport modal\n else {\n // Dialog is dismissable\n dismissable = true;\n $('#dialog').addClass('dismissable');\n // Set class\n $('#dialog').addClass('warning has-buttons form');\n // Setup transport\n $('#modify .switcher').hide();\n $('#' + transport.toLowerCase()).show();\n // Show dialog\n modal('#modify', false);\n }\n}\n\n// Display overlay for on request rooms that can only be booked via the call centre; user can disimss\nfunction request() {\n // Dialog is dismissable\n dismissable = true;\n $('#dialog').addClass('dismissable');\n // Track in GA\n GA.sendEvent( 'Book', 'Enquiry', 'Request Room');\n // Add request class to dialog\n $('#dialog').addClass('request has-image');\n // Show dialog\n modal('#request', false);\n}\n\n// Submit interstitial after image has loaded\nfunction interstitial() {\n // Dialog is not dismissable\n dismissable = false;\n // Set body to position:fixed to force toolbars\n fixBody(true);\n // Get form action\n var url = $('form').attr('action');\n // set timeout to redirect to target page following image load\n setTimeout(function () { window.location.replace(url); }, 3000);\n\n}\n\n// Compare form parameters with existing search\nfunction compare(type, data) {\n var existing = $('#' + type + '-search').val().toString();\n var parameters = data.split(',');\n var current = ''; for (var i = 0; i < parameters.length; i++) { current += $('#' + type + '-' + parameters[i]).val().toString() + ','; }; current = current.replace(/,+$/, '');\n if (existing != current) { return true; } else { return false; }\n}\n\n// Switching transport options\n$('#form').submit(function (event) {\n\n if (!includedSlots.length && askContinueWithoutIncluded && $('[data-included-extra]').length ) {\n warning(literal('character-dining-no-included-selected-title'), literal('character-dining-no-included-selected-message'));\n return false;\n }\n // Switcher only\n if ($('#modify').length) {\n // Prevent DOM from unloading before we have fired the tracking code\n event.preventDefault();\n // Set this form to be a variable\n form = this;\n // Get transport method\n var type = $('#switch').val().toLowerCase();\n // Track query type via Google Analytics and check if the search fingerprint has changed\n var query;\n var from = 'from-' + $('#current').val();\n var to = 'to-';\n var fingerprint = false;\n switch (type) {\n case 'eurostar': query = 'Eurostar + Hotel'; to += 'eurostar'; fingerprint = compare('eurostar', 'station,departure,return'); break;\n case 'flights': query = 'Flights + Hotel'; to += 'flights'; fingerprint = compare('flights', 'airport'); break;\n case 'selfdrive': query = 'Self Drive + Hotel'; to += 'selfdrive'; fingerprint = compare('selfdrive', 'vehicle,departure,return'); break;\n case 'hotel': query = 'Hotel Only'; to += 'hotel'; break;\n }\n // Add the call to the _gaq queue\n GA.sendEvent( 'Book', 'Switch', query);\n // Add virtual pageview to enable funnel reporting\n _gaq.push(['_trackPageview', '/disneyland-paris/book/switch/' + from + '/' + to + '/']);\n // Artificial 2s delay for existing search, otherwise set delay to 0.5s\n if (fingerprint) { delay = 500 } else { delay = 2000 };\n // Reset modal\n collapse();\n // Show intermission\n intermission();\n // Submit form\n submitForm();\n };\n});\n\n// -------------------------------------------------------------------------------------------------------------------\n\n// Bookflow\n\n// Google Analytics: track new searches with virtual pageview for funnel reporting\n$('#itinerary a, #parameters a').click(function (event) { event.preventDefault(); _gaq.push(['_trackPageview', '/disneyland-paris/book/new-search/']); var href = $(this).attr('href'); setTimeout(function () { window.location = href; }, 250); });\n\n// Select hotel; transport switch\n$('.switch .options a').click(function (event) { event.preventDefault(); $(this).toggleClass('open'); $(this).closest('.switch').find('.transport').slideToggle(); });\n$('.switch .inactive a').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$('.switch .active a').click(function (event) { event.preventDefault(); switcher($(this).attr('data-holiday')); });\n\n// Select Eurostar\n$('#eurostar .eurostar input').change(function () {\n // Change package price\n $('.price .cost span').text($('input:radio:checked').attr('data-price'));\n})\n// Prompt user to acknowledge children under 4 sit on a parent's lap\n$('#eurostar .outbound.infants input').click(function (event) { event.preventDefault(); infants(); })\n// Class\n$('#eurostar .included a').click(function (event) { event.preventDefault(); warning(literal('eurostar-included-title'),literal('eurostar-included-message') ); });\n// Indirect\n$('#eurostar .journey a').click(function (event) { event.preventDefault(); warning(literal('eurostar-indirect-title'),literal('eurostar-indirect-message') ); });\n\n// Select flights\n$('.flight.goldmedal input').click(function (event) {\n event.preventDefault();\n intermission();\n var flight = $('', { type: 'hidden', name: 'flight', value: $(this).attr('name') }); flight.appendTo($(this));\n delay = 500;\n form = $('#form');\n submitForm();\n});\n\n// Luggage\n$('#luggage select[name=\"ebg1\"]').change(function () {\n // Get values\n var bag = parseFloat($('.baggage').attr('data-price'));\n var total = parseInt($(this).val());\n // Get price; force 2 decimal places, in case of XX.00 total\n var price = (bag * total).toFixed(2)\n // Set price (format varies on mobile/desktop)\n if (mobile) {\n $('.price .cost span').text(price);\n } else if (desktop) {\n $('.price .pounds').text(price.split('.')[0]);\n $('.price .pence').text(price.split('.')[1]);\n }\n})\n\n// Select transport\n$('#action.return input').click(function (event) {\n event.preventDefault();\n intermission();\n delay = 500;\n form = $('#form');\n submitForm();\n});\n\n// Select extras\n$('#extras .dates .options a').click(function (event) { event.preventDefault(); $(this).toggleClass('open'); $(this).closest('.dates').find('.sittings').slideToggle(); });\n\n//Ensure one seating per character meal experience, per trip\nfunction disableUncheckedCharacterMeal(element) {\n var checkedValue = $(element).prop('checked');\n var checkId = $(element).prop('id');\n var wrap;\n if (mobile) { wrap = 'div'; } else { wrap = 'table'; }\n // disable checkboxes for the same experience\n $(element).closest(wrap).find('input[data-premium = \"True\"]').each(function () {\n if (checkId != $(this).prop('id')) {\n $(this).prop('disabled', checkedValue)\n }\n });\n}\n\n$('#extras input[data-premium = \"True\"]').change(function (event) {\n disableUncheckedCharacterMeal($(this));\n});\n\nfunction showNoIncludedSelectedModal() {\n dismissable = true;\n $('#dialog').addClass('dismissable');\n $('#dialog').addClass('warning has-buttons');\n modal('#no-included-warning', false);\n}\n\nfunction ensureMealSelectionsPreserved() {\n $('[data-meal-date-and-type] input[type=\"checkbox\"] ').each(function(i, checkbox) {\n if ($(checkbox).attr('checked') === 'checked' ) {\n disableOrEnableSlots($(this).parent());\n if ($(checkbox).parent().attr('data-included-extra')) {\n addOrRemoveFromIncludedList( $(this).parent().prev(), false);\n }\n }\n })\n}\n\nfunction getSelectionDateAttributes(str) {\n var attributes = str.split(\"~\");\n\n return { date: attributes[0], type: attributes[1], restaurant: attributes[2] };\n}\n\nfunction disableOrEnableSlots(clickedSlot) {\n var dayContainer = $(clickedSlot).closest('[data-meal-date-and-type]');\n if (!dayContainer.attr('data-meal-date-and-type')) {\n return false;\n }\n var dataAttributes = getSelectionDateAttributes(dayContainer.attr('data-meal-date-and-type'));\n var dateAndType = dataAttributes.date + \"~\" + dataAttributes.type;\n var checkbox = $('input', $(clickedSlot).parent());\n var slotValue = $(checkbox).val();\n var spanSelector = '[data-meal-date-and-type^= \"'+dateAndType+'\"] > * ';\n var slotForSameDateAndType = selectedSlots[dateAndType];\n\n if (slotForSameDateAndType) { //If there is already a selection for this date and type\n if (slotForSameDateAndType.slot !== slotValue) { //If the clicked one is not the selected one, user not allowed to select more than one so show warning \n warning(literal('character-dining-meal-already-selected-title'), literal('character-dining-meal-already-selected-message', {\n restaurant: slotForSameDateAndType.attributes.restaurant,\n type: slotForSameDateAndType.attributes.type.toLowerCase(),\n previousDate: moment(slotForSameDateAndType.attributes.date).format('dddd Do MMMM'),\n }))\n $(checkbox).attr('checked',false);\n\n } else { //Else, the clicked one is the selected one, so user is deselecting\n $(spanSelector ).each( function(i, slot) {\n $(slot).removeClass('slot-unavailable')\n } )\n selectedSlots[dateAndType] = false;\n }\n } else { // If there isn't a selection for this date and type, select and disable the rest of slots\n $(spanSelector).each( function(i, slot) {\n $(slot).addClass('slot-unavailable')\n } )\n $(clickedSlot).parent().removeClass('slot-unavailable')\n selectedSlots[dateAndType] = {slot: slotValue, attributes: dataAttributes } ;\n }\n}\n\nfunction addOrRemoveFromIncludedList(slot, showWarning) {\n var checkboxes = $('input', $(slot).parent());\n var fullPriceCheckbox = checkboxes[0];\n var includedCheckbox = checkboxes[1];\n const hasIncludedAllowanceLeft = includedAllowance() > includedSlots.length ;\n\n //includedSlots stores the value of the input in the slots currently selected as included in the offer\n if (includedSlots.includes($(fullPriceCheckbox).val())) { //if the clicked checkbox was already included\n includedSlots = includedSlots.filter( slot => slot !== $(fullPriceCheckbox).val() ); //remove it from included list\n } else if (hasIncludedAllowanceLeft && ($(fullPriceCheckbox).attr('checked') || $(includedCheckbox).attr('checked'))) {\n includedSlots.push( $(fullPriceCheckbox).val());\n //if there wasn't a included one already show the message with the great news\n //showWarning will be false when the selections are rendered after the user clicks back, we don't need to show the message then\n if (showWarning && isHalfBoardPremiumPlan && !diningModalAlreadyShown) {\n warning(literal('character-dining-included-title'), literal('character-dining-included-message'));\n diningModalAlreadyShown = true;\n }\n }\n showIncludedOrFullPrice();\n}\n\n$('#extras > * input').change(function (event) {\n var parentSpan = $(this.parentNode);\n disableOrEnableSlots(parentSpan);\n if (parentSpan.attr('data-included-extra') || parentSpan.attr('data-paid-extra') ) {\n addOrRemoveFromIncludedList(parentSpan, true);\n }\n});\n\n//Pop up a message whan trying to book more then one seating per character meal experience, per trip\n$('#extras label').click(function () {\n var labelId = $(this).attr('for');\n //search for premium meal plan disabled extra\n if ($('#extras input[data-premium = \"True\"][id=\"' + labelId + '\"]').prop('disabled')) {\n var overrideMessage = $(this).closest('.extra').attr('data-override-alert-message');\n var overrideMessageHeader = $(this).closest('.extra').attr('data-override-alert-header');\n if (overrideMessage !== undefined || overrideMessageHeader !== undefined) {\n warning($(this).closest('.extra').attr('data-override-alert-header'), overrideMessage);\n } else {\n var diningPhone = $('#extra-container').attr('data-dining-phone');\n warning(literal('meal-prebook-title'), literal('meal-prebook-message', { diningPhone: diningPhone }) );\n }\n }\n});\n\n//Ensure Character Meal Selections Preserved\nfunction ensureCharacterMealSelectionsPreserved() {\n var checkedIds = [];\n if (mobile) { wrap = 'ul'; } else { wrap = 'tr'; }\n //Check if there is checked chararte meal\n $('input[data-premium = \"True\"]').each(function () {\n if ($(this).prop('checked')) {\n disableUncheckedCharacterMeal($('input[id=\"' + $(this).prop('id') + '\"]'));\n }\n });\n}\n\n// Select room\nif ($('.room').length) {\n // Check action on room select\n $('#page input[type=\"submit\"], #page input[type=\"button\"]').click(function (event) {\n // Check if room is 'on request' and prevent form submission\n if (($(this).attr('data-request') == 'true') || ($('input:radio:checked').attr('data-request') == 'true')) { event.preventDefault(); request(); }\n })\n}\n\n$('#extras .extra input[name=\"scp\"], #extras .extra input[name=\"smps\"]').change(function (event) {\n if ($(this).is(\":checked\")) { // disable+hide PhotoPass+\n $(\"#PHPP\").prop(\"checked\", false);\n $(\"#PHPP\").prop(\"disabled\", true);\n $(\"#chkFor_PHPP\").hide();\n $(\"#inclWithSigPackage_PHPP\").show();\n }\n else {\n $(\"#PHPP\").prop(\"checked\", false);\n $(\"#PHPP\").prop(\"disabled\", false);\n $(\"#chkFor_PHPP\").show();\n $(\"#inclWithSigPackage_PHPP\").hide();\n }\n});\n\n// On Extras, for VNP, warn them when they tick PP or CB, that they need to coordinate their character dining with when they use their 2 park tickets\nfunction CharacterDiningInParksNotifier()\n{\n $.each($(\"hgroup[data-chk='true']\"), function (index, value) {\n var title = $(this).attr(\"data-chkTitle\");\n var text = $(this).attr(\"data-chkText\");\n var parentElement = $(this);\n $.each($(this).find(\"input\"), function (ix, val) {\n $(this).change( function() {\n if ($(parentElement).attr(\"data-notified\") !== 'true') {\n warning(title, text);\n $(parentElement).attr(\"data-notified\", \"true\");\n }\n });\n })\n });\n}\n\n// -------------------------------------------------------------------------------------------------------------------\n\n// Static pages (e.g. non-bookflow)\n\n// Planning Tools\n// Track online brochure and PDF views\nif($(\"#body.planning\").length) {\n\n $(\"a.online\").click(function() {\n GA.sendEvent( 'Planning Tools', 'DLP Brochure', 'View Online');\n });\n\n $(\"a.pdf\").click(function() {\n GA.sendEvent( 'Planning Tools', 'Brochure PDF', 'Download');\n });\n}\n\n// Experience Enhancement Updates (mobile only)\n$('#closures-table tr').click(function () { if (mobile) { $(this).toggleClass('show-attractions open'); }; });\n\n// Themed modal\n$('#themed-modal .launch').click(function (event) { event.preventDefault(); offlineDeal(); });\n\n// On ready\n$(document).ready(function () {\n\n // Add popup notification, if needed\n CharacterDiningInParksNotifier();\n\n // Interstitial\n if ($('body').hasClass('interstitial')) { interstitial(); };\n\n //Ensure Character Meal Selections Preserved\n if ($('#extras').length) {\n ensureCharacterMealSelectionsPreserved();\n setTimeout(ensureMealSelectionsPreserved, 1);\n setTimeout(showIncludedOrFullPrice, 1);\n }\n});\n\nfunction showEurostarNotAvailable(outbound, inbound) {\n if (eurostar(moment(outbound, \"DD/MM/YYYY\").toDate(),moment(inbound, \"DD/MM/YYYY\").toDate())) {\n warning(literal('search.no-trains', { noDate: outbound }), literal('search.no-train-generic'))\n }\n}\n\nfunction showIncludedOrFullPrice() {\n const showIncluded = includedAllowance() > includedSlots.length ;\n\n $('[data-meal-date-and-type]').each( (i, sittingContainer) => {\n var sittingAttributes = getSelectionDateAttributes($(sittingContainer).attr('data-meal-date-and-type'));\n var selectedType = selectedSlots[sittingAttributes.date + '~' + sittingAttributes.type];\n var hasAnySlotSelected = selectedType && selectedType.attributes.restaurant === sittingAttributes.restaurant;\n var newValue = !hasAnySlotSelected ? showIncluded : includedSlots.includes(selectedType.slot)\n $('[data-included-price=\"true\"]', sittingContainer).toggle(newValue);\n $('[data-included-price=\"false\"]', sittingContainer).toggle(!newValue);\n $('[data-included-extra=\"false\"]', sittingContainer).toggle(newValue);\n $('[data-paid-extra=\"true\"]', sittingContainer).toggle(!newValue);\n })\n}\n\nfunction includedAllowance() {\n if (typeof isHalfBoardPremiumPlan !== 'undefined' && isHalfBoardPremiumPlan) {\n return duration;\n } else if (typeof isFullBoardPremiumPlan !== 'undefined' && isFullBoardPremiumPlan) {\n return duration * 2;\n } else {\n return 0;\n }\n}"],"names":["brand","selectedSlots","includedSlots","askContinueWithoutIncluded","diningModalAlreadyShown","intermissionData","randomise","Math","floor","random","character","nickname","literal","fact","infants","form","$","bind","GA","sendEvent","setCookie","setTimeout","submit","readCookie","dismissable","addClass","modal","villagesnature","offlineDeal","switcher","transport","val","hide","toLowerCase","show","request","interstitial","fixBody","url","attr","window","location","replace","compare","type","data","existing","toString","parameters","split","current","i","length","disableUncheckedCharacterMeal","element","checkedValue","prop","checkId","wrap","mobile","closest","find","each","this","showNoIncludedSelectedModal","ensureMealSelectionsPreserved","checkbox","disableOrEnableSlots","parent","addOrRemoveFromIncludedList","prev","getSelectionDateAttributes","str","attributes","date","restaurant","clickedSlot","dayContainer","dataAttributes","dateAndType","slotValue","spanSelector","slotForSameDateAndType","slot","warning","previousDate","moment","format","removeClass","showWarning","checkboxes","fullPriceCheckbox","includedCheckbox","hasIncludedAllowanceLeft","includedAllowance","includes","filter","push","isHalfBoardPremiumPlan","showIncludedOrFullPrice","ensureCharacterMealSelectionsPreserved","CharacterDiningInParksNotifier","index","value","title","text","parentElement","ix","change","showEurostarNotAvailable","outbound","inbound","eurostar","toDate","noDate","showIncluded","sittingContainer","sittingAttributes","selectedType","newValue","toggle","duration","isFullBoardPremiumPlan","event","preventDefault","query","from","to","fingerprint","_gaq","delay","collapse","intermission","submitForm","click","href","toggleClass","slideToggle","message","name","appendTo","price","parseFloat","parseInt","toFixed","desktop","parentSpan","parentNode","diningPhone","labelId","overrideMessage","overrideMessageHeader","undefined","is","document","ready","hasClass"],"mappings":"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"}