{"version":3,"file":"search-2.0.16.min.js","sources":["walt-disney-world/cogs/js/search-2.0.16.min.js"],"sourcesContent":["// Functions for Walt Disney World searches; v2.0.0\n// Author: Tom Nelson, December 2015\n\n// -------------------------------------------------------------------------------------------------------------------\n\n// Quick quote panel; homepage only\n\n// Determine if user is a travel agent\nvar agent = ($('body').attr('data-agent') == 'true');\n\n// Valid Walt Disney World hotel search\nfunction hotel(inbound) {\n // Is the return journey after the last operational Walt Disney World hotel date?\n if (inbound.getTime() > maxdate.getTime()) { warning(literal('search.sorry-max-date', { maxDate: moment(maxdate).format('Do MMMM YYYY') }), literal('search.hotel-not-on-sale')); GA.sendEvent('Alert','Search','Hotel Out of Range'); return false; }\n // Otherwise valid\n return true;\n}\n\n// Check duration is valid for holiday type\nfunction duration(type, nights) {\n // Determine minimum duration\n var minduration = 1;\n switch (type) { case 'flights': case 'package': $('#quick-quote').attr('data-locale') == 'EUR' ? minduration = 1 : minduration = 5; }\n // Is duration too short?\n if (nights < minduration) { warning(literal('stay-too-short-title'), literal('stay-too-short-message')); GA.sendEvent( 'Alert', 'Search', 'Below Minimum Stay Duration'); return false; };\n // Otherwise valid\n return true;\n}\n\n// Get dates for validation\nfunction valid(type) {\n // Get outbound and inbound dates and convert to date object\n var monthyear = $('#month').val();\n var year = parseInt(monthyear.split('^')[1]);\n var month = parseInt(monthyear.split('^')[0]) - 1; // Months are zero-indexed in JavaScript\n var day = parseInt($('#day').val());\n var nights = parseInt($('#nights').val())\n var outbound = new Date(year, month, day);\n var inbound = new Date(new Date(+outbound + (nights * 864e5)).toDateString()); // Convert to string to ensure 00:00:00\n var minimum = new Date(+new Date + 6048e5); // Bookings must be a minimum of 7 days (604800000 milliseconds) from today for flights/packages\n var minimumdays = 7;\n // Override miminum for ticket only\n switch (type) {\n case 'tickets': minimum = new Date(+new Date + 2592e5); minimumdays = 3; submit = true; break; // Bookings must be a minimum of 3 days (259200000 milliseconds) from today for ticket only\n };\n // Is the outbound journey before a temporary closure end date?\n var datalocale = $('#quick-quote').attr('data-locale');\n var tempClosure = $('#quick-quote').attr('data-temporary-closure-end');\n if (tempClosure != null) {\n var tempClosureDate = moment(tempClosure, \"DD/MM/YYYY\").toDate();\n if (outbound.getTime() < tempClosureDate.getTime()) {\n if (datalocale == 'EUR') {\n warning(literal('search.sorry-min-package-date'), literal('search.package-min-date'));\n }\n else\n {\n if (type == 'tickets') {\n warning(literal('search.sorry-min-tickets-date'), literal('search.tickets-min-date'));\n }else{\n warning(literal('search.sorry-min-date'), literal('search.hotel-min-date'));\n }\n }\n return false;\n }\n }\n // Override minimum for travel agents\n if (agent) { minimum = new Date(+new Date + 1469e6); minimumdays = 17; } // Bookings must be a minimum of 17 days (1469000000 milliseconds) from today for all product types\n // Check eligible departure\n if (minimum.getTime() > outbound.getTime()) { warning(literal('search.within-x-days', { days: minimumdays }), literal('search.within-x-days-message')); GA.sendEvent('Alert','Search','Departure Within ' + minimumdays + ' Days'); return false; }\n // Validate pararmeters for hotel-inclusive holidays; ticket only searches are excluded from these checks\n if (type != 'tickets') {\n // Maximum of 8 pax online, excluding infants\n var infants = $('.ages select:has(option[value=1]:selected):visible').length;\n var passengers = parseInt($('#adults').val()) + parseInt($('#children').val()) - infants;\n if (passengers > 8) { warning(literal('search.party-more-guests', { nGuests: 'eight' }), literal('search.party-more-x-hotel')); GA.sendEvent('Alert','Search','Occupancy: 9+ Guests'); return false; }\n // Maximum of 1 infant online\n if (infants > 1) { warning(literal('search.party-more-1-infant'), literal('search.party-more-1-infant-message')); GA.sendEvent('Alert','Search','Occupancy: 2+ Infants'); return false; }\n // Check if hotel is available\n journey = hotel(inbound);\n // If hotel is available then check duration requirements for selected option\n if (journey) { journey = duration(type, nights); }\n // Is journey okay?\n if (!journey) { return false; };\n // If valid journey then show intermission\n intermission();\n // Pause carousel\n billboard.slick('slickPause');\n }\n\n if (type == 'tickets') {\n var infants = $('.ages select:has(option[value=1]:selected):visible').length;\n var ageTwo = $('.ages select:has(option[value=2]:selected):visible').length;\n var passengers = parseInt($('#adults').val()) + parseInt($('#children').val()) - ageTwo - infants;\n if (passengers > 10) {\n warning(literal('search.party-more-guests', { nGuests: '10' }), literal('search.party-more-x-ticket'));\n return false;\n }\n }\n // Post form\n return true;\n}\n\n// Set button content\nfunction button(type) {\n var label = literal('search.' + type);\n $('input.button').val(label);\n}\n\n// Return hotel category based on code\nfunction category(code) {\n return literal('labels.hotelCategory.' + code);\n}\n\n// Show/hide accessible rooms checkbox\nfunction accessible(type) {\n // Get checkbox\n var accessible = $('.accessible');\n // Suppress for tickets option\n if (type == 'tickets') { accessible.addClass('hide'); } else { accessible.removeClass('hide'); }\n}\n\n// -------------------------------------------------------------------------------------------------------------------\n\n// On ready\n$(document).ready(function () {\n\n // Catch form post\n $('#form').submit(function (event) {\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 = $('input:radio:checked').val().toLowerCase();\n // Valid dates?\n if (valid(type)) {\n // Track query type via Google Analytics; set delay to force interstitial\n var query;\n var pageview;\n var analytics;\n // Set delay; default equals 2 seconds after image has loaded\n delay = 2000;\n // Submission varies by type\n switch (type) {\n case 'flights': query = 'Flights + Hotel + Ticket'; pageview = 'flights'; delay = 500; break; // Override for flight inclusive\n case 'package': query = 'Hotel + Ticket'; pageview = 'hotel-ticket'; break;\n case 'hotel': query = 'Hotel Only'; pageview = 'hotel'; break;\n case 'tickets': query = 'Ticket Only'; pageview = 'tickets'; delay = 250; break;\n }\n // Capture search data and log in Google Analytics\n searches(type, query, brand, null)\n // Add _trackEvent to the _gaq\n GA.sendEvent('Book','Search (UK)',query);\n // Add virtual pageview to enable funnel reporting\n _gaq.push(['_trackPageview', '/walt-disney-world/book/search/' + pageview + '/']);\n \n // Add the call to the _gaq queue; delay form submission to allow _trackEvent to complete and interstitial to load\n submitForm();\n }\n });\n\n});\n"],"names":["agent","$","attr","hotel","inbound","getTime","maxdate","warning","literal","maxDate","moment","format","GA","sendEvent","duration","type","nights","minduration","valid","monthyear","val","year","parseInt","split","month","day","outbound","Date","toDateString","minimum","minimumdays","datalocale","submit","tempClosure","tempClosureDate","toDate","days","infants","length","nGuests","journey","intermission","billboard","slick","ageTwo","button","label","category","code","accessible","addClass","removeClass","document","ready","event","preventDefault","form","this","query","pageview","toLowerCase","delay","searches","brand","_gaq","push","submitForm"],"mappings":"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"}