{"version":3,"file":"eurostar-2.0.3.min.js","sources":["disneyland-paris/cogs/js/eurostar-2.0.3.min.js"],"sourcesContent":["var dayNames = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\n\n// Valid Eurostar search\nfunction eurostar(outbound,inbound) {\n // Is the return journey after the last operational Eurostar date?\n if (inbound.getTime() > eurostardate.getTime()) { warning(literal('search.sorry-max-date', {maxDate: moment(eurostardate).format('Do MMMM YYYY')}),literal('search.no-eurostar')); GA.sendEvent('Alert','Search','Eurostar Out of Range'); return false; }\n // Indirect trains are only bookable within 90 days, or can be manually overriden by SNCF releasing blocks of inventory\n // var ninetydays = addDays(new Date(),90); (Archived)\n var indirect = eurostarindirect;\n // Is the indirect train available on the return date?\n if (inbound.getTime() <= indirect.getTime()) { return true; }\n // Is the indirect train not available on the outbound date, and no direct train is available either?\n if ((outbound.getTime() > indirect.getTime()) && (!direct(outbound))) { directTrain(outbound); return false; }\n // Is the indirect train not available on the return date, and no direct train is available either?\n if ((inbound.getTime() > indirect.getTime()) && (!direct(inbound))) { directTrain(inbound); return false; }\n // Otherwise valid\n return true;\n}\n\n// Determine if a direct train is running\nfunction direct(date) {\n // No direct trains are running between excludeDateFrom - excludeDateTo\n if (isWinterExclusion(date)){ date.isDirectBlockout = true; return false; }\n\n // Otherwise is the date an active exception date (e.g. during school holidays)\n var active = eurostaractive.split(',')\n for (i = 0; i < active.length; i++) { if (date.getTime() == new Date(active[i]).getTime()) { return true; }; }\n // Is this date not a Tuesday, Thursday or Saturday?\n var day = date.getDay() // Sunday == 0\n\n var eurostarAvailability = getEurostarAvailability(date);\n if (eurostarAvailability) {\n return eurostarAvailability.daysAvailable.includes(day);\n }\n if (day!=2 && day!=4 && day!=6) { return true; }\n\n // Otherwise no direct trains\n return false;\n}\n\n// Show warning message regarding direct trains\nfunction directTrain(date) {\n var excludeDateFrom = $('#quick-quote').attr('data-eurostar-direct-start') || (typeof eurostarDirectStart !== \"undefined\" && eurostarDirectStart);\n var excludeDateTo = $('#quick-quote').attr('data-eurostar-direct-end') || (typeof eurostarDirectEnd !== \"undefined\" && eurostarDirectEnd);\n var indirectUpTo;\n // Setup indirect messaging\n if (eurostarindirectrollingperiod) {\n indirectUpTo = literal('search.indirectRollingPeriod', {rollingPeriod: moment.duration(eurostarindirectrollingperiod, 'days').humanize()});\n } else {\n indirectUpTo = literal('search.indirectUpTo', {indirectDate: moment(eurostarindirect).format('Do MMMM YYYY')});\n }\n var indirectMsg = literal('search.indirect', {upToMessage: indirectUpTo });\n // check if this date is a direct trains blockout date\n if (date.isDirectBlockout) {\n var excludeFrom = moment(excludeDateFrom, \"DD/MM/YYYY\").isBefore(new Date()) ? moment(new Date()) : moment(excludeDateFrom, \"DD/MM/YYYY\");\n warning(literal('search.no-direct-train', { excludeFrom: excludeFrom.format('Do MMMM YYYY'), excludeTo: moment(excludeDateTo, \"DD/MM/YYYY\").format('Do MMMM YYYY') }), indirectMsg)\n GA.sendEvent( 'Alert', 'Search', 'No Eurostar Timetable');\n }\n else {\n var eurostarAvailability = getEurostarAvailability(date);\n var indirectMsgBeginning;\n\n if (!eurostarAvailability) {\n indirectMsgBeginning = literal('search.no-train-tuesday-message');\n } else if (eurostarAvailability.daysAvailable.length === 0) {\n var nextAvailableDay = moment(eurostarAvailability.end).add(1,'day').format('dddd Do MMMM YYYY');\n indirectMsgBeginning = literal('search.no-trains-before-date', {nextDate: nextAvailableDay});\n } else {\n indirectMsgBeginning = literal('search.trains-certain-days', {days: daysNumberToNames(eurostarAvailability.daysAvailable)});\n }\n warning(literal('search.no-trains', { noDate: moment(date).format('dddd Do MMMM YYYY') }), indirectMsgBeginning + indirectMsg)\n GA.sendEvent( 'Alert', 'Search', 'Eurostar Unavailable');\n }\n}\n\n// Determine if supplied date falls within winter direct train exclusion dates, added to markup from sever side script via data attributes\nfunction isWinterExclusion(date) {\n var excludeDateFrom = $('#quick-quote').attr('data-eurostar-direct-start') || (typeof eurostarDirectStart !== \"undefined\" && eurostarDirectStart);\n var excludeDateTo = $('#quick-quote').attr('data-eurostar-direct-end') || (typeof eurostarDirectEnd !== \"undefined\" && eurostarDirectEnd);\n if (excludeDateFrom != null && excludeDateTo != null) {\n if (moment(date).isAfter(moment(excludeDateFrom, \"DD/MM/YYYY\")) &&\n moment(date).isSameOrBefore(moment(excludeDateTo, \"DD/MM/YYYY\"))) {\n return true;\n }\n }\n return false;\n}\n\nfunction getEurostarAvailability(date) {\n var eurostarAvailability;\n if (typeof directEurostarAvailability !== 'undefined') {\n directEurostarAvailability.forEach( function(range) {\n if (moment(date).isBetween(range.start, range.end, undefined, '[]') ) {\n eurostarAvailability = range;\n }\n })\n }\n\n return eurostarAvailability;\n}\n\n\nfunction daysNumberToNames(numbers) {\n var names = numbers.map( function(number) {\n return dayNames[number]\n } )\n return names.join(', ').replace(/, ([^,]*)$/, ' and $1');\n}\n"],"names":["dayNames","eurostar","outbound","inbound","indirect","getTime","eurostardate","warning","literal","maxDate","moment","format","GA","sendEvent","eurostarindirect","direct","directTrain","date","isWinterExclusion","isDirectBlockout","active","eurostaractive","split","i","length","Date","day","getDay","eurostarAvailability","getEurostarAvailability","daysAvailable","includes","excludeDateFrom","$","attr","eurostarDirectStart","excludeDateTo","eurostarDirectEnd","indirectUpTo","eurostarindirectrollingperiod","rollingPeriod","duration","humanize","indirectDate","indirectMsg","upToMessage","excludeFrom","isBefore","excludeTo","indirectMsgBeginning","nextAvailableDay","end","add","nextDate","days","daysNumberToNames","noDate","isAfter","isSameOrBefore","directEurostarAvailability","forEach","range","isBetween","start","undefined","numbers","map","number","join","replace"],"mappings":"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"}