ITA Matrix Powertools

Adds new features and builds fare purchase links for ITA Matrix

当前为 2020-02-04 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name ITA Matrix Powertools
  3. // @namespace https://github.com/adamhwang/ita-matrix-powertools
  4. // @description Adds new features and builds fare purchase links for ITA Matrix
  5. // @version 0.43.0
  6. // @icon https://raw.githubusercontent.com/adamhwang/ita-matrix-powertools/master/icons/icon32.png
  7. // @require https://greasemonkey.github.io/gm4-polyfill/gm4-polyfill.js
  8. // @grant GM.getValue
  9. // @grant GM_setValue
  10. // @grant GM.setValue
  11. // @grant GM_setValue
  12. // @include http*://matrix.itasoftware.com/*
  13. // @license GPL-2.0-only
  14. // ==/UserScript==
  15.  
  16. /*
  17. Written by paul21, Steppo & Adam Hwang (IAkH) of FlyerTalk.com
  18. http://www.flyertalk.com/forum/members/paul21.html
  19. Includes contriutions by https://github.com/adamhwang/ita-matrix-powertools/blob/master/AUTHORS
  20. GNU General Public License v2.0
  21. */
  22.  
  23. //------------------------------------------------------------------------------
  24. // <auto-generated>
  25. // This code was generated by a tool:
  26. // `npm run build`
  27. //
  28. // Changes to this file may cause incorrect behavior and will be lost if
  29. // the code is regenerated.
  30. // </auto-generated>
  31. //------------------------------------------------------------------------------
  32.  
  33. /******/ (function(modules) { // webpackBootstrap
  34. /******/ // The module cache
  35. /******/ var installedModules = {};
  36. /******/
  37. /******/ // The require function
  38. /******/ function __webpack_require__(moduleId) {
  39. /******/
  40. /******/ // Check if module is in cache
  41. /******/ if(installedModules[moduleId]) {
  42. /******/ return installedModules[moduleId].exports;
  43. /******/ }
  44. /******/ // Create a new module (and put it into the cache)
  45. /******/ var module = installedModules[moduleId] = {
  46. /******/ i: moduleId,
  47. /******/ l: false,
  48. /******/ exports: {}
  49. /******/ };
  50. /******/
  51. /******/ // Execute the module function
  52. /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
  53. /******/
  54. /******/ // Flag the module as loaded
  55. /******/ module.l = true;
  56. /******/
  57. /******/ // Return the exports of the module
  58. /******/ return module.exports;
  59. /******/ }
  60. /******/
  61. /******/
  62. /******/ // expose the modules object (__webpack_modules__)
  63. /******/ __webpack_require__.m = modules;
  64. /******/
  65. /******/ // expose the module cache
  66. /******/ __webpack_require__.c = installedModules;
  67. /******/
  68. /******/ // define getter function for harmony exports
  69. /******/ __webpack_require__.d = function(exports, name, getter) {
  70. /******/ if(!__webpack_require__.o(exports, name)) {
  71. /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
  72. /******/ }
  73. /******/ };
  74. /******/
  75. /******/ // define __esModule on exports
  76. /******/ __webpack_require__.r = function(exports) {
  77. /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
  78. /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
  79. /******/ }
  80. /******/ Object.defineProperty(exports, '__esModule', { value: true });
  81. /******/ };
  82. /******/
  83. /******/ // create a fake namespace object
  84. /******/ // mode & 1: value is a module id, require it
  85. /******/ // mode & 2: merge all properties of value into the ns
  86. /******/ // mode & 4: return value when already ns object
  87. /******/ // mode & 8|1: behave like require
  88. /******/ __webpack_require__.t = function(value, mode) {
  89. /******/ if(mode & 1) value = __webpack_require__(value);
  90. /******/ if(mode & 8) return value;
  91. /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
  92. /******/ var ns = Object.create(null);
  93. /******/ __webpack_require__.r(ns);
  94. /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
  95. /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
  96. /******/ return ns;
  97. /******/ };
  98. /******/
  99. /******/ // getDefaultExport function for compatibility with non-harmony modules
  100. /******/ __webpack_require__.n = function(module) {
  101. /******/ var getter = module && module.__esModule ?
  102. /******/ function getDefault() { return module['default']; } :
  103. /******/ function getModuleExports() { return module; };
  104. /******/ __webpack_require__.d(getter, 'a', getter);
  105. /******/ return getter;
  106. /******/ };
  107. /******/
  108. /******/ // Object.prototype.hasOwnProperty.call
  109. /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
  110. /******/
  111. /******/ // __webpack_public_path__
  112. /******/ __webpack_require__.p = "";
  113. /******/
  114. /******/
  115. /******/ // Load entry module and return exports
  116. /******/ return __webpack_require__(__webpack_require__.s = 37);
  117. /******/ })
  118. /************************************************************************/
  119. /******/ ([
  120. /* 0 */
  121. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  122.  
  123. "use strict";
  124. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return getCurrentSegs; });
  125. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return currentItin; });
  126. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return readItinerary; });
  127. /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
  128.  
  129.  
  130. // initialize local storage for current itin
  131. /** @type {{ cur?: string; price?: number; basefares?: number; taxes?: number; surcharges?: number; dist?: number; numPax?: number; carriers?: string[]; farebases?: string[]; itin?: { orig: string; dest: string; dist?: number; dep: { day: number; month: number; year: number; time: string; offset?: string; }; arr: { day: number; month: number; year: number; time: string; offset?: string; }; seg?: { carrier: string; orig: string; dest: string; dist?: number; dep: { day: number; month: number; year: number; time: string; time24: string; timeDisplay: string; offset?: string; }; arr: { day: number; month: number; year: number; time: string; time24: string; timeDisplay: string; offset?: string; }; fnr: string; duration: number; aircraft: string; cabin: number; bookingclass: string; codeshare: number; layoverduration: number; airportchange: number; farebase: string; farecarrier: string; }[]}[]}} */
  132. let currentItin = new Object();
  133.  
  134. const matrixCurrencies = [
  135. { p: /US\$/, c: "USD" },
  136. { p: /\€/, c: "EUR" },
  137. { p: /\£/, c: "GBP" },
  138. { p: /CA\$/, c: "CAD" },
  139. { p: /RS\./, c: "INR" }
  140. ];
  141.  
  142. function readItinerary() {
  143. // the magical part! :-)
  144. var itin = new Array(),
  145. carrieruarray = new Array(),
  146. farebases = new Array(),
  147. dirtyFare = new Array();
  148. var itinCur = "";
  149. var html = document.getElementById("contentwrapper").innerHTML;
  150. var re = /colspan\=\"5\"[^\(]+\(([\w]{3})[^\(]+\(([\w]{3})/g;
  151. var legs = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* exRE */ "b"])(html, re);
  152. // Got our outer legs now:
  153. for (i = 0; i < legs.length; i += 2) {
  154. var legobj = {};
  155. // prepare all elements but fill later
  156. legobj.arr = {};
  157. legobj.dep = {};
  158. legobj.orig = legs[i];
  159. legobj.dest = legs[i + 1];
  160. legobj.seg = new Array();
  161. itin.push(legobj);
  162. }
  163. // extract basefares
  164. var re = /Carrier\s([\w]{2})\s([\w]+).*?Covers\s([\w\(\)\s\-,]+)/g;
  165. var bfs = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* exRE */ "b"])(html, re);
  166. var bf = { c: "", f: "", l: new Array() };
  167. for (i = 0; i < bfs.length; i += 3) {
  168. bf.c = bfs[i];
  169. bf.f = bfs[i + 1];
  170. farebases.push(bf.f);
  171. bf.l = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* exRE */ "b"])(bfs[i + 2], /(\w\w\w\-\w\w\w)/g);
  172. for (j = 0; j < bf.l.length; j++) {
  173. dirtyFare.push(bf.l[j] + "-" + bf.f + "-" + bf.c);
  174. }
  175. }
  176. var segs = new Array();
  177. var re = /35px\/(\w{2}).png[^\(]+\(([A-Z]{3})[^\(]+\(([A-Z]{3})[^\,]*\,\s*([a-zA-Z]{3})\s*([0-9]{1,2}).*?gwt-Label.*?([0-9]*)\<.*?Dep:[^0-9]+(.*?)\<.*?Arr:[^0-9]+(.*?)\<.*?([0-9]{1,2})h\s([0-9]{1,2})m.*?gwt-Label.*?\>(.*?)\<.*?gwt-Label\"\>(\w).*?\((\w)\).*?\<.*?tr(.*?)(table|airline_logos)/g;
  178. segs = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* exRE */ "b"])(html, re);
  179. // used massive regex to get all our segment-info in one extraction
  180. var legnr = 0;
  181. var segnr = 0;
  182. for (i = 0; i < segs.length; i += 15) {
  183. const dep12 = return12htime(segs[i + 6]);
  184. const dep24 = (dep12.length == 4 ? "0" : "") + dep12;
  185. const arr12 = return12htime(segs[i + 7]);
  186. const arr24 = (arr12.length == 4 ? "0" : "") + arr12;
  187. const addinformations = parseAddInfo(segs[i + 13]);
  188. const day = parseInt(segs[i + 4]);
  189. const month = monthnameToNumber(segs[i + 3]);
  190. const year = getFlightYear(day, month);
  191. let seg = {
  192. carrier: segs[i],
  193. orig: segs[i + 1],
  194. dest: segs[i + 2],
  195. dep: {
  196. day,
  197. month,
  198. year,
  199. timeDisplay: segs[i + 6],
  200. time: dep12,
  201. time24: dep24
  202. },
  203. arr: {
  204. day: addinformations.arrDate ? addinformations.arrDate.day : day,
  205. month: addinformations.arrDate ? addinformations.arrDate.month : month,
  206. year: addinformations.arrDate ? addinformations.arrDate.year : year,
  207. timeDisplay: segs[i + 7],
  208. time: arr12,
  209. time24: arr24
  210. },
  211. fnr: segs[i + 5],
  212. duration: parseInt(segs[i + 8]) * 60 + parseInt(segs[i + 9]),
  213. aircraft: segs[i + 10],
  214. cabin: getcabincode(segs[i + 11]),
  215. bookingclass: segs[i + 12],
  216. codeshare: addinformations.codeshare,
  217. layoverduration: addinformations.layoverduration,
  218. airportchange: addinformations.airportchange,
  219. farebase: "",
  220. farecarrier: ""
  221. };
  222.  
  223. // find farecode for leg
  224. for (var j = 0; j < dirtyFare.length; j++) {
  225. if (dirtyFare[j].indexOf(seg.orig + "-" + seg.dest + "-") != -1) {
  226. //found farebase of this segment
  227. var tmp = dirtyFare[j].split("-");
  228. seg.farebase = tmp[2];
  229. seg.farecarrier = tmp[3];
  230. dirtyFare[j] = seg.farebase; // avoid reuse
  231. j = dirtyFare.length;
  232. }
  233. }
  234. if (itin[legnr] === undefined) itin[legnr] = new Object();
  235. if (itin[legnr].seg === undefined) itin[legnr].seg = new Array();
  236. itin[legnr].seg.push(seg);
  237. // push carrier
  238. if (!Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* inArray */ "f"])(seg.carrier, carrieruarray)) {
  239. carrieruarray.push(seg.carrier);
  240. }
  241. // push dates and times into leg-array
  242. if (segnr == 0) {
  243. if (itin[legnr].dep === undefined) itin[legnr].dep = new Object();
  244. itin[legnr].dep.day = seg.dep.day;
  245. itin[legnr].dep.month = seg.dep.month;
  246. itin[legnr].dep.year = seg.dep.year;
  247. itin[legnr].dep.time = seg.dep.time;
  248. }
  249. if (itin[legnr].arr === undefined) itin[legnr].arr = new Object();
  250. itin[legnr].arr.day = seg.arr.day;
  251. itin[legnr].arr.month = seg.arr.month;
  252. itin[legnr].arr.year = seg.arr.year;
  253. itin[legnr].arr.time = seg.arr.time;
  254. segnr++;
  255. // check for legchange
  256. if (segs[i + 14] == "table") {
  257. legnr++;
  258. segnr = 0;
  259. }
  260. }
  261. // We need to apply remaining fares (Not nonstop - but direct flights)
  262. for (var i = 0; i < dirtyFare.length; i++) {
  263. var curfare = dirtyFare[i].split("-");
  264. if (curfare.length > 1) {
  265. var l = 0;
  266. //currently unused so walk through itin to find flights
  267. for (var legnr = 0; legnr < itin.length; legnr++) {
  268. for (var segnr = 0; segnr < itin[legnr].seg.length; segnr++) {
  269. if (
  270. itin[legnr].seg[segnr].orig == curfare[0] &&
  271. itin[legnr].seg[segnr].dest == curfare[1] &&
  272. itin[legnr].seg[segnr].farebase == ""
  273. ) {
  274. // found seg for fare
  275. itin[legnr].seg[segnr].farebase = curfare[2];
  276. itin[legnr].seg[segnr].farecarrier = curfare[3];
  277. dirtyFare[i] = curfare[2];
  278. segnr = itin[legnr].seg.length;
  279. l = 1;
  280. } else if (
  281. itin[legnr].seg[segnr].orig == curfare[0] &&
  282. itin[legnr].seg[segnr].dest != curfare[1] &&
  283. itin[legnr].seg[segnr].farebase == ""
  284. ) {
  285. // found start but multiple segs -> find end
  286. for (var j = segnr + 1; j < itin[legnr].seg.length; j++) {
  287. if (
  288. itin[legnr].seg[j].dest == curfare[1] &&
  289. itin[legnr].seg[j].farebase == ""
  290. ) {
  291. //found end attach fares
  292. for (var k = segnr; k <= j; k++) {
  293. itin[legnr].seg[k].farebase = curfare[2];
  294. itin[legnr].seg[k].farecarrier = curfare[3];
  295. dirtyFare[i] = curfare[2];
  296. }
  297. j = itin[legnr].seg.length;
  298. segnr = itin[legnr].seg.length;
  299. l = 1;
  300. } else if (itin[legnr].seg[segnr + j].farebase != "") {
  301. //farebase attached - skip
  302. j = itin[legnr].seg.length;
  303. }
  304. }
  305. }
  306. }
  307. if (l == 1) {
  308. legnr = itin.length;
  309. }
  310. }
  311. if (l == 0) {
  312. Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* printNotification */ "h"])("Unused fare:" + dirtyFare[i]);
  313. }
  314. }
  315. }
  316. // Combine technical stops into a single segment
  317. itin.forEach(itin => {
  318. if (itin.seg) itin.seg = combineTechnicalStops(itin.seg);
  319. });
  320. // extract mileage paxcount and total price
  321. var milepaxprice = new Array();
  322. var re = /Mileage.*?([0-9,]+)\stotal\smiles.*?Total\scost\sfor\s([0-9])\spassenger.*?<div.*?>(.*?([1-9][0-9,.]+)[^\<]*)/g;
  323. milepaxprice = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* exRE */ "b"])(html, re);
  324. // detect currency
  325. for (i = 0; i < matrixCurrencies.length; i++) {
  326. if (matrixCurrencies[i].p.test(milepaxprice[2]) === true) {
  327. itinCur = matrixCurrencies[i].c;
  328. i = matrixCurrencies.length;
  329. }
  330. }
  331. currentItin = {
  332. itin: itin,
  333. price: Number(milepaxprice[3].replace(/\,/, "")),
  334. numPax: Number(milepaxprice[1]),
  335. carriers: carrieruarray,
  336. cur: itinCur,
  337. farebases: farebases,
  338. dist: Number(milepaxprice[0].replace(/\,/, ""))
  339. };
  340. console.log("parsed itinerary: ", currentItin);
  341. }
  342.  
  343. function parseAddInfo(info) {
  344. var ret = {
  345. codeshare: 0,
  346. layoverduration: 0,
  347. airportchange: 0,
  348. arrDate: null
  349. };
  350. var re = /contains\s*airport\s*changes/g;
  351. if (re.test(info) === true) {
  352. ret.airportchange = 1;
  353. }
  354. var re = /OPERATED\s*BY/g;
  355. if (re.test(info) === true) {
  356. ret.codeshare = 1;
  357. }
  358. var temp = new Array();
  359. var re = /\,\s*([a-zA-Z]{3})\s*([0-9]{1,2})/g;
  360. temp = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* exRE */ "b"])(info, re);
  361. if (temp.length == 2) {
  362. // Got datechange
  363. const month = monthnameToNumber(temp[0]);
  364. const day = parseInt(temp[1]);
  365. ret.arrDate = {
  366. month,
  367. day,
  368. year: getFlightYear(day, month)
  369. };
  370. }
  371. var temp = new Array();
  372. var re = /([0-9]{1,2})h\s([0-9]{1,2})m/g;
  373. temp = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* exRE */ "b"])(info, re);
  374. if (temp.length == 2) {
  375. // Got layover
  376. ret.layoverduration = parseInt(temp[0]) * 60 + parseInt(temp[1]);
  377. }
  378. return ret;
  379. }
  380.  
  381. function getCurrentSegs() {
  382. return currentItin.itin
  383. .map(function(p) {
  384. return p.seg;
  385. })
  386. .reduce(function(a, b) {
  387. return a.concat(b);
  388. }, []);
  389. }
  390.  
  391. function combineTechnicalStops(allSegs) {
  392. if (allSegs.length <= 1) return allSegs;
  393.  
  394. const segs = [];
  395.  
  396. for (let i = 0; i < allSegs.length; i++) {
  397. const currSeg = allSegs[i];
  398. const nextSeg = allSegs[i + 1];
  399.  
  400. if (
  401. nextSeg &&
  402. nextSeg.fnr === currSeg.fnr &&
  403. nextSeg.orig === currSeg.dest
  404. ) {
  405. segs.push({
  406. ...currSeg,
  407. dest: nextSeg.dest,
  408. arr: nextSeg.arr
  409. });
  410. i++;
  411. } else {
  412. segs.push(currSeg);
  413. }
  414. }
  415.  
  416. return segs;
  417. }
  418.  
  419. /**************************************** General Functions *****************************************/
  420. function getcabincode(cabin) {
  421. switch (cabin) {
  422. case "E":
  423. cabin = 0;
  424. break;
  425. case "P":
  426. cabin = 1;
  427. break;
  428. case "B":
  429. cabin = 2;
  430. break;
  431. case "F":
  432. cabin = 3;
  433. break;
  434. default:
  435. cabin = 0;
  436. }
  437. return cabin;
  438. }
  439.  
  440. function monthnameToNumber(month) {
  441. var monthnames = [
  442. "JAN",
  443. "FEB",
  444. "MAR",
  445. "APR",
  446. "MAY",
  447. "JUN",
  448. "JUL",
  449. "AUG",
  450. "SEP",
  451. "OCT",
  452. "NOV",
  453. "DEC"
  454. ];
  455. return monthnames.indexOf(month.toUpperCase()) + 1;
  456. }
  457.  
  458. function getFlightYear(day, month) {
  459. //Do date magic
  460. var d = new Date();
  461. var cmonth = d.getMonth();
  462. var cday = d.getDate();
  463. var cyear = d.getFullYear();
  464. // make sure to handle the 0-11 issue of getMonth()
  465. if (cmonth > month - 1 || (cmonth == month - 1 && day < cday)) {
  466. cyear += 1; // The flight is next year
  467. }
  468. return cyear;
  469. }
  470.  
  471. function return12htime(match) {
  472. var regex = /([01]?\d)(:\d{2})(AM|PM|am|pm| AM| PM| am| pm)/g;
  473. match = regex.exec(match);
  474. var offset = 0;
  475. match[3] = trimStr(match[3]);
  476. if ((match[3] == "AM" || match[3] == "am") && match[1] == "12") {
  477. offset = -12;
  478. } else if ((match[3] == "PM" || match[3] == "pm") && match[1] != "12") {
  479. offset = 12;
  480. }
  481. return +match[1] + offset + match[2];
  482. }
  483.  
  484. function trimStr(x) {
  485. return x.replace(/^\s+|\s+$/gm, "");
  486. }
  487.  
  488.  
  489.  
  490.  
  491. /***/ }),
  492. /* 1 */
  493. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  494.  
  495. "use strict";
  496. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return registeredSettings; });
  497. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return registerSetting; });
  498. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return saveUserSettings; });
  499. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return loadUserSettings; });
  500. /* harmony import */ var _appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
  501.  
  502.  
  503. const defaultSettings = {
  504. timeformat: "12h", // replaces times on resultpage - valid: 12h / 24h
  505. language: "en", // replaces several items on resultpage - valid: en / de
  506. linkFontsize: 100, // fontsize of links - valid: 50-200
  507. showAllAirlines: 0, // shows all airline links regardless of search results
  508.  
  509. // booleans to toggle specific settings:
  510. enableDeviders: 1, // Print deviders in links after group (airlines/otas/other stuff) - valid: 0 / 1
  511. enableInlineMode: 0, // enables inline mode - valid: 0 / 1
  512. enableEditormode: 0, // prevents the script from automatically parsing the itinerary - valid: 0 / 1
  513. enableIMGautoload: 0, // enables images to auto load - valid: 0 / 1
  514. enableFarerules: 1, // enables fare rule opening in new window - valid: 0 / 1
  515. enablePricebreakdown: 1, // enables price breakdown - valid: 0 / 1
  516. enablePlanefinder: 1, // enables Planefinder - click on flight numbers to open Planefinder for this flight - valid: 0 / 1
  517. enableSeatguru: 1, // enables Seatguru - click on plane type to open Seatguru for this flight - valid: 0 / 1
  518. enableWheretocredit: 1 // enables Wheretocredit - click on booking class to open wheretocredit for this flight - valid: 0 / 1
  519. };
  520.  
  521. const registeredSettings = {};
  522.  
  523. /**
  524. * Registers a link
  525. * @param {string} name
  526. * @param {string} id
  527. * @param {{ name: string, value: string }[]} values
  528. * @param {string} defaultValue
  529. */
  530. function registerSetting(name, id, values, defaultValue) {
  531. registeredSettings[id] = { name, values };
  532. defaultSettings[id] = defaultValue;
  533. }
  534.  
  535. async function saveUserSettings(settings = defaultSettings) {
  536. switch (_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].scriptEngine) {
  537. case 0:
  538. localStorage.setItem("mptUserSettings", JSON.stringify(settings));
  539. break;
  540. case 1:
  541. await GM.setValue("mptUserSettings", JSON.stringify(settings));
  542. break;
  543. }
  544. }
  545.  
  546. async function loadUserSettings() {
  547. let gmSavedUserSettings;
  548. switch (_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].scriptEngine) {
  549. case 0:
  550. gmSavedUserSettings = localStorage.getItem("mptUserSettings");
  551. break;
  552. case 1:
  553. gmSavedUserSettings = await GM.getValue("mptUserSettings");
  554. break;
  555. }
  556. console.log("mptSavedUserSettings: " + gmSavedUserSettings);
  557. if (!gmSavedUserSettings || typeof gmSavedUserSettings !== "string") return;
  558.  
  559. /** @type typeof defaultSettings */
  560. const savedUserSettings = JSON.parse(gmSavedUserSettings);
  561. if (!savedUserSettings) return;
  562.  
  563. Object.assign(defaultSettings, savedUserSettings);
  564. }
  565.  
  566. /* harmony default export */ __webpack_exports__["a"] = (defaultSettings);
  567.  
  568.  
  569. /***/ }),
  570. /* 2 */
  571. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  572.  
  573. "use strict";
  574. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return findtarget; });
  575. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return findtargets; });
  576. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return hasClass; });
  577. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "l", function() { return toggleVis; });
  578. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return clearNotification; });
  579. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return printNotification; });
  580. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return exRE; });
  581. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return inArray; });
  582. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "i", function() { return to2digits; });
  583. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "k", function() { return to4digits; });
  584. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "j", function() { return to4digitTime; });
  585. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return monthnumberToName; });
  586. function findtarget(tclass, nth) {
  587. var elems = document.getElementsByTagName("*"),
  588. i;
  589. let j = 0;
  590. for (i in elems) {
  591. if ((" " + elems[i].className + " ").indexOf(" " + tclass + " ") > -1) {
  592. j++;
  593. if (j == nth) {
  594. return elems[i];
  595. break;
  596. }
  597. }
  598. }
  599. }
  600.  
  601. function findtargets(tclass) {
  602. var elems = document.getElementsByTagName("*"),
  603. i;
  604. var ret = new Array();
  605. for (i in elems) {
  606. if ((" " + elems[i].className + " ").indexOf(" " + tclass + " ") > -1) {
  607. ret.push(elems[i]);
  608. }
  609. }
  610. return ret;
  611. }
  612.  
  613. function hasClass(element, cls) {
  614. return (" " + element.className + " ").indexOf(" " + cls + " ") > -1;
  615. }
  616.  
  617. function toggleVis(target, blockType = "block") {
  618. if (hasClass(target, "vis")) {
  619. target.setAttribute("class", "invis");
  620. target.style.display = "none";
  621. } else {
  622. target.setAttribute("class", "vis");
  623. target.style.display = blockType;
  624. }
  625. }
  626.  
  627. function clearNotification() {
  628. var target = document.getElementById("mtpNotification");
  629. target.innerHTML = "";
  630. }
  631.  
  632. function printNotification(text) {
  633. // log the text to the browser's developer console:
  634. console.log(text);
  635. // display for user:
  636. var target = document.getElementById("mtpNotification");
  637. if (target === null) {
  638. //alert("mtp Error: Notification container not Found");
  639. console.log("mtp Error: Notification container not Found");
  640. } else {
  641. //possibility to print multiple notifications
  642. var temp = document.createElement("div");
  643. temp.appendChild(document.createTextNode(text));
  644. target.appendChild(temp);
  645. }
  646. }
  647.  
  648. //Parses all of the outputs of regexp matches into an array
  649. function exRE(str, re) {
  650. var ret = new Array();
  651. var m;
  652. var i = 0;
  653. while ((m = re.exec(str)) != null) {
  654. if (m.index === re.lastIndex) {
  655. re.lastIndex++;
  656. }
  657. for (let k = 1; k < m.length; k++) {
  658. ret[i++] = m[k];
  659. }
  660. }
  661. return ret;
  662. }
  663.  
  664. function inArray(needle, haystack) {
  665. var length = haystack.length;
  666. for (var i = 0; i < length; i++) {
  667. if (haystack[i] == needle) return true;
  668. }
  669. return false;
  670. }
  671.  
  672. function to2digits(str) {
  673. return ("00" + str).slice(-2);
  674. }
  675.  
  676. function to4digits(str) {
  677. return ("0000" + str).slice(-4);
  678. }
  679.  
  680. function to4digitTime(time) {
  681. return to4digits(time.replace(":", ""));
  682. }
  683.  
  684. function monthnumberToName(month) {
  685. var monthnames = [
  686. "JAN",
  687. "FEB",
  688. "MAR",
  689. "APR",
  690. "MAY",
  691. "JUN",
  692. "JUL",
  693. "AUG",
  694. "SEP",
  695. "OCT",
  696. "NOV",
  697. "DEC"
  698. ];
  699. return monthnames[month - 1];
  700. }
  701.  
  702.  
  703. /***/ }),
  704. /* 3 */
  705. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  706.  
  707. "use strict";
  708. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return registerLink; });
  709. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return printLinksContainer; });
  710. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return validatePaxcount; });
  711. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return printItemInline; });
  712. /* unused harmony export printImageInline */
  713. /* unused harmony export getSidebarContainer */
  714. /* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
  715. /* harmony import */ var _settings_itaSettings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
  716. /* harmony import */ var _settings_translations__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8);
  717. /* harmony import */ var _settings_paxSettings__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6);
  718. /* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(0);
  719. /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(2);
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728. /** @type {{ [key: string]: ((itin: typeof currentItin) => { url: string, title: string, desc?: string, nth?: number, extra?: string })[]}} */
  729. const links = {
  730. airlines: [],
  731. meta: [],
  732. otas: []
  733. };
  734.  
  735. __webpack_require__(9);
  736.  
  737. /**
  738. * Registers a link
  739. * @param {keyof links} type
  740. * @param {(itin: typeof currentItin) => { url: string, title: string, desc?: string, nth?: number, extra?: string, target?: string }} factory
  741. */
  742. function registerLink(type, factory) {
  743. links[type].push(factory);
  744. }
  745.  
  746. function printLinksContainer() {
  747. // do nothing if editor mode is active
  748. if (Object(_utils__WEBPACK_IMPORTED_MODULE_5__[/* findtargets */ "d"])("editoritem").length > 0) {
  749. return false;
  750. }
  751.  
  752. // empty outputcontainer
  753. if (document.getElementById("powertoolslinkcontainer") != undefined) {
  754. const div = document.getElementById("powertoolslinkcontainer");
  755. div.innerHTML = "";
  756. }
  757.  
  758. // S&D powertool items
  759. const elems = Object(_utils__WEBPACK_IMPORTED_MODULE_5__[/* findtargets */ "d"])("powertoolsitem");
  760. for (let i = elems.length - 1; i >= 1; i--) {
  761. elems[i].parentElement.removeChild(elems[i]);
  762. }
  763.  
  764. for (let group in links) {
  765. const groupLinks = links[group]
  766. .map(link => link(_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"]))
  767. .sort((a, b) => {
  768. return a.title.localeCompare(b.title);
  769. });
  770. groupLinks.forEach(link => {
  771. if (!link) return;
  772.  
  773. if (_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].enableInlineMode == 1) {
  774. printUrlInline(
  775. link.url,
  776. link.title,
  777. link.desc,
  778. link.nth,
  779. link.extra,
  780. link.target
  781. );
  782. } else {
  783. printUrl(link.url, link.title, link.desc, link.extra, link.target);
  784. }
  785. });
  786.  
  787. _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].enableDeviders == 1 &&
  788. links[group].length &&
  789. printSeperator();
  790. }
  791.  
  792. printGCM();
  793. printWheretocredit();
  794. /*** attach JS events after building link container ***/
  795. bindLinkClicks();
  796. }
  797.  
  798. function printGCM() {
  799. var url = "";
  800. // Build multi-city search based on segments
  801. // Keeping continous path as long as possible
  802. for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin.length; i++) {
  803. for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length; j++) {
  804. url += _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].orig + "-";
  805. if (j + 1 < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length) {
  806. if (
  807. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dest != _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j + 1].orig
  808. ) {
  809. url += _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dest + ";";
  810. }
  811. } else {
  812. url += _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dest + ";";
  813. }
  814. }
  815. }
  816. if (_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].enableInlineMode == 1) {
  817. printImageInline(
  818. "http://www.gcmap.com/map?MR=900&MX=182x182&PM=*&P=" + url,
  819. "http://www.gcmap.com/mapui?P=" + url
  820. );
  821. } else {
  822. printUrl("http://www.gcmap.com/mapui?P=" + url, "GCM", "");
  823. }
  824. }
  825.  
  826. function printWheretocredit() {
  827. var extra =
  828. '<span id="wheretocredit-container" style="display: none;">&nbsp;<img src="data:image/gif;base64,R0lGODlhIAAgAMQAAKurq/Hx8f39/e3t7enp6Xh4eOHh4d3d3eXl5dXV1Wtra5GRkYqKitHR0bm5ucnJydnZ2bS0tKGhofb29sHBwZmZmZWVlbGxsb29vcXFxfr6+s3NzZ2dnaampmZmZv///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQECgAAACwAAAAAIAAgAAAF/+AnjiR5ecxQrmwrnp6CuTSpHRRQeDyq1qxJA7Ao7noxhwBIMkSK0CMSRVgCEx1odMpjEDRWV0Ji0RqnCodGM5mEV4aOpVy0RBodpHfdbr9HEw5zcwsXBy88Mh8CfH1uKwkVknMOASMnDAYjjI4TGiUaEZKSF5aXFyucbQGPIwajFRyHTAITAbcBnyMPHKMOTIC4rCQOHL0VCcAiGsKmIgDGxj/AAgED184fEtvGutTX4CQd29vetODXJADkEtNMGgTxBO4Y7BDKHxPy8yR4Hf8Z8A1AQBBBNgT//gHQxGQCAgMGCE6wgaEDgIsUsrWABxFilRIHLop8oBEUgQMHOnaWnJBB5IULDxC0CGAAAsqUH1cQcPDyZQQHDQwEEFBrgIEESCHYNDCxhQGeFyL8dICBAoUMDzY0aIA0gc2SJQxQkOqgbNWrD7JuRXoArM4NZamexaqWK1NlGgw8oGoVbdYNBwaYAwbvQIMHWBtAEPoHn+PHj0MAACH5BAQKAAAALAEAAAAeAB8AAAX/4CeOZGme6CiIw0AYwfBpIp2W2nRQ0SUBnQsmQfgcOpNbLRHhVCyMBSPKqAAiEg9DiXBwFpWFxbIomxkFhccjOwkgF8uzEiZTy+m154IyAJx0YBI/ABUSCwUFeh4FNiQDHXQcch1DMAYDEA55iwcmGIYcThEHbSoRnHodKyICBoMSXw4ErCMTDQyLegVFIhMUsBwASSYBHQqKaXkKDqwEAMGeKBsHDg0ZGBsVDhYQNG8SHR0SzUqtH0lJAisaD+IdAAm15jMfAhoa9xTw8Aj0KhMCBhTwCx6AC6boERQ4gSAFABAjJDS3UOC9DBcyRuj1j2AAiwI2ZMx4YJ6SHAFSrDY00iNChAyOzE1IqZKFA5cRHCAwiUIDzZQ2QuZ04OBBAIoxWgwIUIsA0acbiLnxSUDpAKn2EjjAgIEChgcD8pFYN5OAWRdMSwR4QKFtBgoZDhBQmXIAgrtmq8YcMYAt3AeAEyQ4cMCAgcIG8BLAqpZtBsAbNjQQDIGwYcNXeZLQkADwA8mTE1QufADB1X8EIHRusEHw4MJz1/1DF+DF5btXxc7enCPHCs0jQgAAIfkEBAoAAAAsAQABAB8AHgAABf/gJ47kGBBBMH1C6b4j8UTX1QFOBg1wHySXSkVSsQgXwssm0OrFKACJlMMRCi2WBedyaMIEhoh0TMUWsdmFJKHpGWydjrQoAQA4koVez1h7SQQON3EcHRgHAQMEBAkUeXtaBn8fEw92doYGJS0Tb5AMFwEkAgcRlwAUTF8DDhYMehWHCZwZNReook6UGAwMBb8LBSuBNQARCLoiBBi/Cgoe0A0fEBHVFw9tTgeCDM/P0AUCGhvVEQ6augkM0OzsEuIPDvIOPLqdBe3sGZQZ8xm5ySZI+AaORyUHGHIADJiB4AIR4zBQoIBhYTINBwo8u9CkwUSKyJKNguALwwgDFDKfZKAwSyTENhA21KOU8oFNiz0ETNj5QYMXAQls2jywQpe4nTsF/CHQ4MGGDQ0MTJg0CinSSRMOOG3QIIGBANlKaJiQAqlPFxMScE3A9gCKCRrikk1RVgVVEQEgdE0A4cABAwgIKBI8gK6KsC4EBDjAtu9fA4AJFy571skEBAf6Qo68aIDnwyKVBkCwGXLgznZdjhibqLNnuKoTs1BaOVkIACH5BAQKAAAALAEAAQAfAB4AAAX/4CeOpPBN6BCQbOt+AZJkWOTcD/LuwnRkF4Ck05EYKxVAYrUjETYOgBRALBolHIlD1xQgKJFLkGq9cjgVS+eg2REol/A46IhILBU0siJJuAQDGTdyERsHAyoBBxh3ewsSBi0TCTd1ETkTHyYkBhF7aRFMIwiCGDcbAZstAgEOSBZ4DaoCGxS2DhuZTTARsBYLAKIBtrYYBLsjBhwLzBUQmwYUGRkUssgiGg7MzBkjCQ8P1MfXIgkVzAwXmRrf4A+65ATnzB0rkw8bDwnwTQMmEx0YMOOwgt2GBhv2IRMQ5qCEBRYYdDim4UCDiwp3CQCgoICFAgUYMADQRoCBBglSqQ64BsGDSw8dCyyA0IZAypQIVO3QUOAlTJgVugWAkAAChAOieHTw6bObBgNGDxwg0GbXA6ZAdSmSasDAgKo7AvR8WSBCCQIHuhpAMIDfCAECNEywQDYBWBETEKhFgIBAgAlw4WqQO/gCTAupXORd25cAogB/UUj+QEHguD8TCDR2nAiy5AkaBhxCFpoA586fUcAl12MAZ8iwUQzWSU4u7MgaVpN7EVj3rhAAIfkEBAoAAAAsAQAAAB8AHwAABf/gJ47kKJRoqn7aFwTEEGvaua6BkTwU5VCYB2Qwsd1Mhw0l4rg4ARcAwNEYGG8Bpc/hiESeUkkncpgcCbweBuN9dqSdDgewMacEhM0jkwE6+ns+AGJxYhsqAQ0PixkYFAcIEwEaMgkOABwSmhwHVywHD3o8CRMtJRMDGx2aEhUdASUDDQ0begdHiRWZrQ+mLAazswe+KwIUuhwVAAQjARAJ0AmwRyIBABXYHAkjA8/QBp43D9gVCxQnAggQ6xDT1CIGrdgXsBoIB/gGdu8uHRbYr1jcy0eMmrUFFSxIYJbugIGH+95NALDAwoKFH/A8NBCJn4gBEixYDChgwEMECAK1hCvhLoHFBQsu2JnAEUGMlSMIkIwAE+Y5ERoICBUaEcWFAhQmEHhZEYIJGDEGWFEhoIAHBhQo9gQQMWjUAZPCIfBAlkGBcjATeAogFWyAUgKuXCBLtgCDBQwuFMzI1u1buHE1WCWrQEGBBQAQqNDwovFfuBDoElbAwMANDZJeTNgMt4NkuhYs3xCw+XEpBAUUfPaA9B0NzpsfpLarwMJhBkWLCaBBI0CGA1U4Trjl0YQRdEdCAAAh+QQECgAAACwBAAAAHgAgAAAF/+AnjmRpnmiqrqMQGFDzZE9zEBpLasOxbY8ZZYhxPAw51sSQaDSAQgqm6HBsCKvAIdF8BjPEqiMSoRhSWgi3CwRLq+TLxXE2LQ8QNdcwmAhcBg1jcnIOWCQCBAYHjBAGASgID3IAlRkTJC8GizdJKAEPlaIHLYqbBjgsARSiHRhJEwgImwiYOgYAHbodCCIBsrIDOiMZux0NIgMEywS2wxAS0RIYycypwx8D0hIAyQPfAwLYHxrbHd7g4tgaHBzSvuAB6sMD7e3dHwH6+p46CRUV2jkQMWFfAGc6HAAM+ECEBoN+hh3gsLBCHQEFJ2jUMG+EnEwXKkbwpEGjSY4jDHMw8HBhRAAHFiwsTIDI5EaUGBR4YCniwIUFMWM6QPgB40kNBFbu9HAsgoUFUGN2qFPCqAYNDnQu9VAAqlegEmiiEIBU6VauX6F2EJsikdmtXb9GoLpCQNazcRcAaECUxYC3BQBQONBv3IecO1saRvGXJ4sQACH5BAQKAAAALAEAAQAeAB8AAAX/4CeO5CdoU4qaZesKwjQgyGHYxhC4vBkQt0Ni2GhsGgmDoEeSIQxByDBhfFgbu15s9oRChNTNxpqhUBA9zYBAg7qhQ+ujbFa2BGsCG0HQTVBODxR0GBkELQEDinoDfy0oCRgUGBgODxMkaoprARpMH5GVDg4HSyYTAYk6pkwTDaMOERSYHxqpt56fIgEYEb4OBiK2t7S6Ig2+vg0wqLjGIwgRF9OzMSkprMYBDgAXAA4B1tfZuhMYAOgRA+LYz7sOHejg7BPknwEX8d87Kxr2nwYAdBiIAdMSNDBqKWQiIIMECR0kPFgi4MBDDg8kOsDQAEOuFgMiPgRwYESCAgoKp3hI6UFlh5ItJkSwcDFCFhEMPOjc6YHBrBJ4KFjg8FBCgmwPeK5UAGBApgAGMFSoQLTChWIiJihQWqBDkhxCKEioYGEqhw6HWlTYqSAlAw4LInaAu2Dq1A4QeEBgW2DBAgZ//da1u+DC0R5bCxQALLixBQsMJDhA8G/EBQ8SKklgAFlwhQUSIiQIp8tBgw8BDmxw4A2ArwwGOrmjtSTABAI/DLpj+CwEACH5BAQKAAAALAAAAQAfAB8AAAX/4CeOJKlpgqB9Qum+oxYMNGEPwQrDwjTbBATCQDQgBqidyUcbAIfEA+RgCLR2Kl9gVoMaDlJIAjK4vjTabY1AE4Ih4kZiwPOlt5PUaWYQJxpyViU9E4V4OoMTBn8NGw8HEyVohZRmZwaNjhsIJCmUE0lKHxMHD6YPDWYqo4WWSgGnGRQBI7ANLIiiLBAUGbIHIxQFDKm6JQMYFMrFAhEeCgUJkcYiE8oUGA/TCx7dCg6CxrAOGA4PtAEF3d4WtMYTGQ7yFJEP6/fR06/y8hmRHffuMdigy4CDCBEubEChztszBh0wAFOiYcMFhBESfICwTgG0Ag7o6EKQ8MIFBwhSohRYwKDAMAbgXLkIQAEAgAsA6Img8oDDApYLLhCQKUIATZs2IxywFMABg58/AUCI5MoAhg4dkGobhEAC1J8VHDRAwGYABAcSOGAF0MEBARgHJDz9yqGCTQ4WKkiQgLVDBANYIHT4aaFw3sIcOOxd/JcoCYM+C1eYXCGxYr4U3urqkSBC3QWT80qYHGEqtVoGHmDAidDBBs2nO7GagCO2bVEhAAAh+QQECgAAACwAAAEAHwAeAAAF/+AnjuQonGepruWpTVMgB5PG3p8Lz8HgE4OJAEc6wY4xmW9AAE6InwBk8Dryfk0EQXgbWAqOD9K6JCAQBsRTJQhYFB5AraZBCWKDs2FvWI80CQUegww1QysaeXwHBDYjDoKDHgoERAIDeweaAyIaFXCSgxhQAgSaEBAGNhuhoRyOOBMGqKgBHw8VggqgHgV+N6UJwgmVAgZfBbweDVBREMINqjkXDAwFBRYMCh2wNxMJDeEQNgMdDBYLHOEOF90s3xsNGwk2ExIMCwwSth+cUN8PNjxI8GRChwUIFyBoNmLCg4cDC0bAt8ACM4b9KGR4mODQg4QLIrgDlkBjBgoHRq8cqJCwQspmAyjIlMkvCoCK6C74i7XBwcwNh3IkqGDBQoUKDgYEbRGggQMHGBxkMFBiggOjRytEoKpiAoIHESI8ddDglwgEB7Na4OBgyhIIYC9cEOtT6YoDHbJW4EBUwgUHAC4ACDz3AoWFLIwBMMqBg4THjzt0GCw3wuGlKwhgkOAYsuTJgwE4eEAA87sEF4567iAhcIYDXDB+ILAhqoMIGDIkMFBTNokJQWDkwBECACH5BAQKAAAALAAAAQAfAB4AAAX/4CeOo/BN5yesK+m+4uRAFJVdTpVo2sS3MFegoPAUjB6P4tKbOJ3A4CexSFqTBUPTGQhApSqJoniV+J7c7sQEEyQsxKsnIeD1unhv0MCxMI5WBWsqdRN4A4goLhMXDAsLRGQdLiuGiJdsIw2PC35wSRBtE5cEBAGZEwCOjxEQHQoFGlIBBAOlA7IiBxWcFgYfBgsAYAK2pQSKHw8WnBcmAg8DYB8BCNYGA88OFswWDSO5YBMECAYGBLKM3BYcv9MkGuXmCLIBAJ0WEgTv8AgH5gZQpFpQgR0CfiX8HfiHQkOEChArHEAoQoOBAxD+ydJAISKHDZneBYBAEoKBZ28iuwJI9s5AgpcJ9okgAKACB4gJEAaA+TLAiAkUOHCQUEHfuwkQGihtcCCcAAIShkqwcEGLlAkJHmzYoFSaiwdFJXSQECEmyx4EHlB4wPbBgZAxIkiVIAEABabkECR1YCMD2wQ+YQxwMLaD4Q4XIkSgEAHD4hoZMmzw2oYABbEdAGgGcCGxAwcYMNTYEBhMgAYRMmvurPgz3ww7KCLY4CAx5wgXMDh4EJOiiBUDDijV2iABNpa+K/o4hQKuixAAOw==" style="width: 1em; height: 1em;"></span>';
  829.  
  830. if (_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].enableInlineMode == 1) {
  831. printUrlInline(
  832. "javascript: void(0);",
  833. "wheretocredit.com to calculate miles",
  834. "",
  835. 1,
  836. extra,
  837. "_self"
  838. );
  839. } else {
  840. printUrl(
  841. "javascript: void(0);",
  842. "wheretocredit.com to calculate miles",
  843. "",
  844. extra,
  845. "_self"
  846. );
  847. }
  848. }
  849.  
  850. function bindLinkClicks() {
  851. var container;
  852. var linkid = 0;
  853. if (_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].enableInlineMode == 1) {
  854. container = getSidebarContainer(1);
  855. } else {
  856. container = document.getElementById("powertoolslinkcontainer");
  857. }
  858. var links = container.getElementsByTagName("a");
  859. /*
  860. if (typeof(currentItin.itin[0].dep.offset)==="undefined") {
  861. links[linkid].onclick=function () {
  862. resolveTimezones();
  863. };
  864. linkid++;
  865. }
  866. */
  867. if (_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].enableInlineMode != 1) {
  868. linkid = links.length - 1;
  869. }
  870. links[linkid].onclick = function() {
  871. links[linkid].onclick = null;
  872. openWheretocredit(links[linkid]);
  873. };
  874. }
  875.  
  876. function openWheretocredit(link) {
  877. var container = document.getElementById("wheretocredit-container");
  878. container.style.display = "inline";
  879.  
  880. var itin = {
  881. ticketingCarrier:
  882. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].carriers.length == 1 ? _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].carriers[0] : null,
  883. baseFareUSD: _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].basefares + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].surcharges,
  884. segments: []
  885. };
  886. for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin.length; i++) {
  887. for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length; j++) {
  888. itin.segments.push({
  889. origin: _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].orig,
  890. destination: _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dest,
  891. departure: new Date(
  892. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dep.year,
  893. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dep.month,
  894. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dep.day
  895. ),
  896. carrier: _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].carrier,
  897. bookingClass: _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].bookingclass,
  898. codeshare: _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].codeshare,
  899. flightNumber: _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].fnr
  900. });
  901. }
  902. }
  903.  
  904. var xhr = new XMLHttpRequest();
  905. xhr.open("POST", "https://www.wheretocredit.com/api/beta/calculate");
  906. xhr.setRequestHeader("Accept", "application/json;charset=UTF-8");
  907. xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
  908. xhr.onreadystatechange = function() {
  909. if (xhr.readyState === 4) {
  910. link.href = "https://www.wheretocredit.com";
  911. link.target = "_blank";
  912. link.innerHTML = "Data provided by wheretocredit.com";
  913.  
  914. var data, result, temp;
  915. try {
  916. data = JSON.parse(xhr.responseText);
  917. } catch (e) {
  918. data = xhr.responseText;
  919. }
  920.  
  921. if (
  922. xhr.status === 200 &&
  923. data &&
  924. data.success &&
  925. data.value &&
  926. data.value.length &&
  927. data.value[0].success
  928. ) {
  929. data.value[0].value.totals.sort(function(a, b) {
  930. if (a.value === b.value) {
  931. return +(a.name > b.name) || +(a.name === b.name) - 1;
  932. }
  933. return b.value - a.value; // desc
  934. });
  935.  
  936. result = document.createElement("div");
  937. temp = data.value[0].value.totals.map(function(seg, i) {
  938. return (
  939. parseInt(seg.value)
  940. .toString()
  941. .replace(/\B(?=(\d{3})+(?!\d))/g, ",") +
  942. " " +
  943. seg.name +
  944. " miles"
  945. );
  946. });
  947. for (var i = 0; i < temp.length; i++) {
  948. result.appendChild(document.createTextNode(temp[i]));
  949. result.appendChild(document.createElement("br"));
  950. }
  951. result.removeChild(result.lastChild);
  952. } else {
  953. result = data.errorMessage || data || "API quota exceeded :-/";
  954. result = document.createTextNode(result);
  955. }
  956. container.style.display = "block";
  957. container.innerHTML = "";
  958. container.appendChild(result);
  959. }
  960. };
  961. xhr.send(JSON.stringify([itin]));
  962. }
  963.  
  964. function validatePaxcount(config) {
  965. //{maxPaxcount:7, countInf:false, childAsAdult:12, sepInfSeat:false, childMinAge:2}
  966. var tmpChildren = new Array();
  967. // push cur children
  968. for (var i = 0; i < _settings_paxSettings__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].cAges.length; i++) {
  969. tmpChildren.push(_settings_paxSettings__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].cAges[i]);
  970. }
  971. var ret = {
  972. adults: _settings_paxSettings__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].adults,
  973. children: new Array(),
  974. infLap: _settings_paxSettings__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].infantsLap,
  975. infSeat: 0
  976. };
  977. if (config.sepInfSeat === true) {
  978. ret.infSeat = _settings_paxSettings__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].infantsSeat;
  979. } else {
  980. for (var i = 0; i < _settings_paxSettings__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].infantsSeat; i++) {
  981. tmpChildren.push(config.childMinAge);
  982. }
  983. }
  984. // process children
  985. for (var i = 0; i < tmpChildren.length; i++) {
  986. if (tmpChildren[i] < config.childAsAdult) {
  987. ret.children.push(tmpChildren[i]);
  988. } else {
  989. ret.adults++;
  990. }
  991. }
  992. // check Pax-Count
  993. if (config.countInf === true) {
  994. if (
  995. config.maxPaxcount <
  996. ret.adults + ret.infLap + ret.infSeat + ret.children.length
  997. ) {
  998. console.log("Too many passengers");
  999. return;
  1000. }
  1001. } else {
  1002. if (config.maxPaxcount < ret.adults + ret.infSeat + ret.children.length) {
  1003. console.log("Too many passengers");
  1004. return;
  1005. }
  1006. }
  1007. if (0 === ret.adults + ret.infSeat + ret.children.length) {
  1008. console.log("No passengers");
  1009. return;
  1010. }
  1011. return ret;
  1012. }
  1013.  
  1014. // Inline Stuff
  1015. function printUrlInline(url, text, desc, nth, extra, target) {
  1016. var otext = '<a href="' + url + '" target="' + (target || "_blank") + '">';
  1017. otext +=
  1018. (_settings_translations__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"][_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].language] &&
  1019. _settings_translations__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"][_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].language]["use"]) ||
  1020. "Use ";
  1021. otext += " " + text + "</a>" + (extra || "");
  1022. printItemInline(otext, desc, nth);
  1023. }
  1024.  
  1025. function printItemInline(text, desc, nth) {
  1026. const div = getSidebarContainer(nth);
  1027. div.innerHTML =
  1028. div.innerHTML +
  1029. '<li class="powertoolsitem">' +
  1030. text +
  1031. (desc ? "<br/><small>(" + desc + ")</small>" : "") +
  1032. "</li>";
  1033. }
  1034.  
  1035. function printImageInline(src, url, nth) {
  1036. const div = getSidebarContainer(nth).parentElement;
  1037. if (_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].enableIMGautoload == 1) {
  1038. div.innerHTML =
  1039. div.innerHTML +
  1040. (url
  1041. ? '<a href="' + url + '" target="_blank" class="powertoolsitem">'
  1042. : "") +
  1043. '<img src="' +
  1044. src +
  1045. '" style="margin-top:10px;"' +
  1046. (!url ? ' class="powertoolsitem"' : "") +
  1047. "/>" +
  1048. (url ? "</a>" : "");
  1049. } else {
  1050. var id = Math.random().toString();
  1051. div.innerHTML =
  1052. div.innerHTML +
  1053. '<div id="' +
  1054. id +
  1055. '" class="powertoolsitem" style="width:184px;height:100px;background-color:white;cursor:pointer;text-align:center;margin-top:10px;padding-top:84px;"><span>Click</span></div>';
  1056. document.getElementById(id).onclick = function() {
  1057. var newdiv = document.createElement("div");
  1058. newdiv.setAttribute("class", "powertoolsitem");
  1059. newdiv.innerHTML =
  1060. (url ? '<a href="' + url + '" target="_blank">' : "") +
  1061. '<img src="' +
  1062. src +
  1063. '" style="margin-top:10px;"' +
  1064. (!url ? ' class="powertoolsitem"' : "") +
  1065. "/>" +
  1066. (url ? "</a>" : "");
  1067. document
  1068. .getElementById(id)
  1069. .parentElement.replaceChild(newdiv, document.getElementById(id));
  1070. };
  1071. }
  1072. }
  1073.  
  1074. function getSidebarContainer(nth) {
  1075. var div =
  1076. !nth || nth >= 4
  1077. ? document.getElementById("powertoolslinkinlinecontainer")
  1078. : Object(_utils__WEBPACK_IMPORTED_MODULE_5__[/* findtarget */ "c"])(_settings_itaSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].resultpage.mcHeader, nth).nextElementSibling;
  1079. return div || createUrlContainerInline();
  1080. }
  1081.  
  1082. function createUrlContainerInline() {
  1083. var newdiv = document.createElement("div");
  1084. newdiv.setAttribute("class", _settings_itaSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].resultpage.mcDiv);
  1085. newdiv.innerHTML =
  1086. '<div class="' +
  1087. _settings_itaSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].resultpage.mcHeader +
  1088. '">Powertools</div><ul id="powertoolslinkinlinecontainer" class="' +
  1089. _settings_itaSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].resultpage.mcLinkList +
  1090. '"></ul>';
  1091. Object(_utils__WEBPACK_IMPORTED_MODULE_5__[/* findtarget */ "c"])(_settings_itaSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].resultpage.mcDiv, 1).parentElement.appendChild(
  1092. newdiv
  1093. );
  1094. return document.getElementById("powertoolslinkinlinecontainer");
  1095. }
  1096.  
  1097. // Printing Stuff
  1098. function printUrl(url, name, desc, extra, target) {
  1099. if (document.getElementById("powertoolslinkcontainer") == undefined) {
  1100. createUrlContainer();
  1101. }
  1102. var text =
  1103. '<div style="margin:5px 0px 10px 0px"><label style="font-size:' +
  1104. Number(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].linkFontsize) +
  1105. '%;font-weight:600"><a href="' +
  1106. url +
  1107. '" target=' +
  1108. (target || "_blank") +
  1109. ">";
  1110. text +=
  1111. (_settings_translations__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"][_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].language] &&
  1112. _settings_translations__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"][_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].language]["use"]) ||
  1113. "Use ";
  1114. text +=
  1115. " " +
  1116. name +
  1117. "</a></label>" +
  1118. (extra || "") +
  1119. (desc
  1120. ? '<br><label style="font-size:' +
  1121. (Number(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].linkFontsize) - 15) +
  1122. '%">(' +
  1123. desc +
  1124. ")</label>"
  1125. : "") +
  1126. "</div>";
  1127. var target = document.getElementById("powertoolslinkcontainer");
  1128. target.innerHTML = target.innerHTML + text;
  1129. }
  1130.  
  1131. function createUrlContainer() {
  1132. var newdiv = document.createElement("div");
  1133. newdiv.setAttribute("id", "powertoolslinkcontainer");
  1134. newdiv.setAttribute("style", "margin:15px 0px 0px 10px");
  1135. Object(_utils__WEBPACK_IMPORTED_MODULE_5__[/* findtarget */ "c"])(
  1136. _settings_itaSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].resultpage.htbContainer,
  1137. 1
  1138. ).parentElement.parentElement.parentElement.appendChild(newdiv);
  1139. }
  1140.  
  1141. function printSeperator() {
  1142. var container =
  1143. document.getElementById("powertoolslinkcontainer") || getSidebarContainer();
  1144. if (container) {
  1145. container.innerHTML =
  1146. container.innerHTML +
  1147. (_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].enableInlineMode
  1148. ? '<hr class="powertoolsitem"/>'
  1149. : "<hr/>");
  1150. }
  1151. }
  1152.  
  1153.  
  1154. /***/ }),
  1155. /* 4 */
  1156. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1157.  
  1158. "use strict";
  1159. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return reset; });
  1160. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return getCabin; });
  1161. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return getForcedCabin; });
  1162. /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
  1163.  
  1164.  
  1165. // General settings
  1166. const appSettings = {
  1167. scriptEngine:
  1168. typeof GM === "undefined" || typeof GM.info === "undefined" ? 0 : 1, // 0 - console mode, 1 - tamper or grease mode
  1169. itaLanguage: "en",
  1170. version: "0.43.0",
  1171. retrycount: 1,
  1172. laststatus: "",
  1173. scriptrunning: 1,
  1174. cabin: "Auto"
  1175. };
  1176.  
  1177. function reset() {
  1178. // reset Notification due to pagechange
  1179. Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* clearNotification */ "a"])();
  1180.  
  1181. // reset Editor Mode
  1182. document.getElementById("mptStartparse").setAttribute("class", "invis");
  1183. document.getElementById("mptStartparse").style.display = "none";
  1184. appSettings.itaLanguage = "en";
  1185. appSettings.retrycount = 1;
  1186. }
  1187.  
  1188. function getCabin(autoCabin) {
  1189. return appSettings.cabin === "Auto" ? autoCabin : getForcedCabin();
  1190. }
  1191.  
  1192. function getForcedCabin() {
  1193. switch (appSettings.cabin) {
  1194. case "Y":
  1195. return 0;
  1196. case "Y+":
  1197. return 1;
  1198. case "C":
  1199. return 2;
  1200. case "F":
  1201. return 3;
  1202. default:
  1203. return 0;
  1204. }
  1205. }
  1206.  
  1207. /* harmony default export */ __webpack_exports__["a"] = (appSettings);
  1208.  
  1209.  
  1210. /***/ }),
  1211. /* 5 */
  1212. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1213.  
  1214. "use strict";
  1215. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return findTargetSetVersion; });
  1216. /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
  1217.  
  1218.  
  1219. // ITA Matrix CSS class definitions:
  1220. const itaSettings = [
  1221. {
  1222. startpage: {
  1223. maindiv: "KIR33AB-w-d" //Container of main content. Unfortunately id "contentwrapper" is used twice
  1224. },
  1225. resultpage: {
  1226. itin: "KIR33AB-v-d", //Container with headline: "Itinerary"
  1227. itinRow: "KIR33AB-j-i", // TR in itin with Orig, Dest and date
  1228. milagecontainer: "KIR33AB-v-e", // TD-Container on the right
  1229. rulescontainer: "KIR33AB-k-d", // First container before rulelinks (the one with Fare X:)
  1230. htbContainer: "KIR33AB-k-k", // full "how to buy"-container inner div (td=>div=>div)
  1231. htbLeft: "KIR33AB-k-g", // Left column in the "how to buy"-container
  1232. htbRight: "KIR33AB-k-f", // Class for normal right column
  1233. htbGreyBorder: "KIR33AB-k-l", // Class for right cell with light grey border (used for subtotal of passenger)
  1234. //inline
  1235. mcDiv: "KIR33AB-y-d", // Right menu sections class (3 divs surrounding entire Mileage, Emissions, and Airport Info)
  1236. mcHeader: "KIR33AB-y-b", // Right menu header class ("Mileage", etc.)
  1237. mcLinkList: "KIR33AB-y-c" // Right menu ul list class (immediately following header)
  1238. }
  1239. },
  1240. {
  1241. startpage: {
  1242. maindiv: "IR6M2QD-w-d" //Container of main content. Unfortunately id "contentwrapper" is used twice
  1243. },
  1244. resultpage: {
  1245. itin: "IR6M2QD-v-d", //Container with headline: "Itinerary"
  1246. itinRow: "IR6M2QD-j-i", // TR in itin with Orig, Dest and date
  1247. milagecontainer: "IR6M2QD-v-e", // TD-Container on the right
  1248. rulescontainer: "IR6M2QD-k-d", // First container before rulelinks (the one with Fare X:)
  1249. htbContainer: "IR6M2QD-k-k", // full "how to buy"-container inner div (td=>div=>div)
  1250. htbLeft: "IR6M2QD-k-g", // Left column in the "how to buy"-container
  1251. htbRight: "IR6M2QD-k-f", // Class for normal right column
  1252. htbGreyBorder: "IR6M2QD-k-l", // Class for right cell with light grey border (used for subtotal of passenger)
  1253. //inline
  1254. mcDiv: "IR6M2QD-y-d", // Right menu sections class (3 divs surrounding entire Mileage, Emissions, and Airport Info)
  1255. mcHeader: "IR6M2QD-y-b", // Right menu header class ("Mileage", etc.)
  1256. mcLinkList: "IR6M2QD-y-c" // Right menu ul list class (immediately following header)
  1257. }
  1258. }
  1259. ];
  1260.  
  1261. const classSettings = itaSettings[0];
  1262.  
  1263. function findTargetSetVersion(classSelector, nth) {
  1264. for (let setting of itaSettings) {
  1265. const className = classSelector(setting);
  1266. const target = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* findtarget */ "c"])(className, nth);
  1267. if (target) {
  1268. console.log(`ITA Version detected: ${className}`);
  1269. Object.assign(classSettings, setting);
  1270. return target;
  1271. }
  1272. }
  1273. }
  1274.  
  1275. /* harmony default export */ __webpack_exports__["a"] = (classSettings);
  1276.  
  1277.  
  1278. /***/ }),
  1279. /* 6 */
  1280. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1281.  
  1282. "use strict";
  1283. // initialize local storage for passenger details
  1284. /* harmony default export */ __webpack_exports__["a"] = ({
  1285. adults: 1,
  1286. infantsLap: 0,
  1287. infantsSeat: 0,
  1288. cAges: new Array()
  1289. });
  1290.  
  1291.  
  1292. /***/ }),
  1293. /* 7 */
  1294. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1295.  
  1296. "use strict";
  1297. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return getAmadeusUrl; });
  1298. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return getAmadeusPax; });
  1299. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return getAmadeusTriptype; });
  1300. /* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
  1301. /* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(0);
  1302.  
  1303.  
  1304.  
  1305. // **** START AMADEUS ****
  1306. function getAmadeusUrl(config) {
  1307. config = config || {
  1308. sepcabin: 1,
  1309. detailed: 0,
  1310. inctimes: 1,
  1311. enablesegskip: 1,
  1312. allowpremium: 1
  1313. };
  1314. config.sepcabin = config.sepcabin === undefined ? 1 : config.sepcabin;
  1315. config.detailed = config.detailed === undefined ? 0 : config.detailed;
  1316. config.inctimes = config.inctimes === undefined ? 1 : config.inctimes;
  1317. config.enablesegskip =
  1318. config.enablesegskip === undefined ? 1 : config.enablesegskip;
  1319. config.allowpremium =
  1320. config.allowpremium === undefined ? 1 : config.allowpremium;
  1321. var curleg = 0;
  1322. var lastcabin = 0;
  1323. var curseg = 0;
  1324. var lastdest = "";
  1325. var maxcabin = 0;
  1326. var url = "";
  1327. var lastarrtime = "";
  1328. var cabins = ["E", "N", "B", "F"];
  1329. cabins[1] = config.allowpremium != 1 ? cabins[0] : cabins[1];
  1330. //Build multi-city search based on legs
  1331. for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin.length; i++) {
  1332. curseg = 3; // need to toggle segskip on first leg
  1333. lastcabin = _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[0].cabin;
  1334. // walks each leg
  1335. for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg.length; j++) {
  1336. //walks each segment of leg
  1337. var k = 0;
  1338. // lets have a look if we need to skip segments - Flightnumber has to be the same and it must be just a layover
  1339. while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg.length - 1) {
  1340. if (
  1341. _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !=
  1342. _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
  1343. _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440 ||
  1344. config.enablesegskip == 0
  1345. )
  1346. break;
  1347. k++;
  1348. }
  1349. curseg++;
  1350. if (
  1351. curseg > 3 ||
  1352. (_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].cabin != lastcabin && config.sepcabin == 1)
  1353. ) {
  1354. if (lastdest != "") {
  1355. //close prior flight
  1356. url += "&E_LOCATION_" + curleg + "=" + lastdest;
  1357. url += "&E_DATE_" + curleg + "=" + lastarrtime;
  1358. }
  1359. curseg = 1;
  1360. curleg++;
  1361. url += "&B_LOCATION_" + curleg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].orig;
  1362. url += "&B_ANY_TIME_" + curleg + "=FALSE";
  1363. url +=
  1364. "&B_DATE_" +
  1365. curleg +
  1366. "=" +
  1367. _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].dep.year +
  1368. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
  1369. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2) +
  1370. (config.inctimes == 1
  1371. ? (
  1372. "0" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].dep.time.replace(":", "")
  1373. ).slice(-4)
  1374. : "0000");
  1375. url +=
  1376. "&CABIN_" + curleg + "=" + cabins[_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].cabin];
  1377. url += "&ALLOW_ALTERNATE_AVAILABILITY_" + curleg + "=FALSE";
  1378. url += "&DATE_RANGE_VALUE_" + curleg + "=0";
  1379. }
  1380. lastarrtime =
  1381. _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j + k].arr.year +
  1382. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j + k].arr.month).slice(-2) +
  1383. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j + k].arr.day).slice(-2) +
  1384. (config.inctimes == 1
  1385. ? (
  1386. "0" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j + k].arr.time.replace(":", "")
  1387. ).slice(-4)
  1388. : "0000");
  1389. if (config.detailed === 1) {
  1390. url +=
  1391. "&B_LOCATION_" +
  1392. curleg +
  1393. "_" +
  1394. curseg +
  1395. "=" +
  1396. _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].orig;
  1397. url +=
  1398. "&B_LOCATION_CITY_" +
  1399. curleg +
  1400. "_" +
  1401. curseg +
  1402. "=" +
  1403. _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].orig;
  1404. url +=
  1405. "&B_DATE_" +
  1406. curleg +
  1407. "_" +
  1408. curseg +
  1409. "=" +
  1410. _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].dep.year +
  1411. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
  1412. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2) +
  1413. (config.inctimes == 1
  1414. ? (
  1415. "0" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].dep.time.replace(":", "")
  1416. ).slice(-4)
  1417. : "0000");
  1418. url +=
  1419. "&E_LOCATION_" +
  1420. curleg +
  1421. "_" +
  1422. curseg +
  1423. "=" +
  1424. _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j + k].dest;
  1425. url +=
  1426. "&E_LOCATION_CITY_" +
  1427. curleg +
  1428. "_" +
  1429. curseg +
  1430. "=" +
  1431. _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j + k].dest;
  1432. url += "&E_DATE_" + curleg + "_" + curseg + "=" + lastarrtime;
  1433. }
  1434. url +=
  1435. "&AIRLINE_" +
  1436. curleg +
  1437. "_" +
  1438. curseg +
  1439. "=" +
  1440. _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].carrier;
  1441. url +=
  1442. "&FLIGHT_NUMBER_" +
  1443. curleg +
  1444. "_" +
  1445. curseg +
  1446. "=" +
  1447. _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].fnr;
  1448. url +=
  1449. "&RBD_" +
  1450. curleg +
  1451. "_" +
  1452. curseg +
  1453. "=" +
  1454. _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].bookingclass;
  1455. url +=
  1456. "&FARE_CLASS_" +
  1457. curleg +
  1458. "_" +
  1459. curseg +
  1460. "=" +
  1461. _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].farebase;
  1462. lastdest = _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j + k].dest;
  1463. lastcabin = _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].cabin;
  1464. if (_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].cabin > maxcabin)
  1465. maxcabin = _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].cabin;
  1466. j += k;
  1467. }
  1468. }
  1469. url += "&E_LOCATION_" + curleg + "=" + lastdest; // push final dest
  1470. url += "&E_DATE_" + curleg + "=" + lastarrtime; // push arr time
  1471. url +=
  1472. "&CABIN=" +
  1473. cabins[_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin === "Auto" ? maxcabin : Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getForcedCabin */ "c"])()] +
  1474. ""; // push cabin
  1475. return url;
  1476. }
  1477.  
  1478. function getAmadeusPax(pax, config) {
  1479. config = config || {
  1480. allowinf: 1,
  1481. youthage: 0
  1482. };
  1483. config.allowinf = config.allowinf === undefined ? 1 : config.allowinf;
  1484. config.youthage = config.sepyouth === undefined ? 0 : config.sepyouth;
  1485. var tmpPax = { c: 0, y: 0 };
  1486. var curPax = 1;
  1487. var url = "&IS_PRIMARY_TRAVELLER_1=True";
  1488. for (let i = 0; i < pax.children.length; i++) {
  1489. if (pax.children[i] >= config.youthage && config.youthage > 0) {
  1490. tmpPax.y++;
  1491. } else if (pax.children[i] >= 12) {
  1492. pax.adults++;
  1493. } else {
  1494. tmpPax.c++;
  1495. }
  1496. }
  1497. for (let i = 0; i < pax.adults; i++) {
  1498. url += "&TRAVELLER_TYPE_" + curPax + "=ADT";
  1499. url +=
  1500. "&HAS_INFANT_" +
  1501. curPax +
  1502. "=" +
  1503. (i < pax.infLap && config.allowinf == 1 ? "True" : "False");
  1504. url += "&IS_YOUTH_" + curPax + "=False";
  1505. curPax++;
  1506. }
  1507. for (let i = 0; i < tmpPax.y; i++) {
  1508. url += "&TRAVELLER_TYPE_" + curPax + "=ADT";
  1509. url += "&HAS_INFANT_" + curPax + "=False";
  1510. url += "&IS_YOUTH_" + curPax + "=True";
  1511. curPax++;
  1512. }
  1513. for (let i = 0; i < tmpPax.c; i++) {
  1514. url += "&TRAVELLER_TYPE_" + curPax + "=CHD";
  1515. url += "&HAS_INFANT_" + curPax + "=False";
  1516. url += "&IS_YOUTH_" + curPax + "=False";
  1517. curPax++;
  1518. }
  1519. return {
  1520. url: url,
  1521. adults: pax.adults,
  1522. youth: tmpPax.y,
  1523. children: tmpPax.c,
  1524. infants: pax.infLap
  1525. };
  1526. }
  1527.  
  1528. function getAmadeusTriptype() {
  1529. return _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin.length > 1
  1530. ? _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin.length == 2 &&
  1531. _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[0].orig == _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[1].dest &&
  1532. _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[0].dest == _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[1].orig
  1533. ? "R"
  1534. : "M"
  1535. : "O";
  1536. }
  1537. // **** END AMADEUS ****
  1538.  
  1539.  
  1540. /***/ }),
  1541. /* 8 */
  1542. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1543.  
  1544. "use strict";
  1545. // Supported translations for the PowerTools interface:
  1546. const de = {
  1547. use: "&Ouml;ffne ",
  1548. resultpage: {
  1549. "Dep:": "Abflug:",
  1550. "Arr:": "Ankunft:",
  1551. "Layover in": "Umst. in",
  1552. " to ": " nach ",
  1553. "Mon,": "Mo.,",
  1554. "Tue,": "Di.,",
  1555. "Wed,": "Mi.,",
  1556. "Thu,": "Do.,",
  1557. "Fri,": "Fr.,",
  1558. "Sat,": "Sa.,",
  1559. "Sun,": "So.,",
  1560. " Jan ": " Januar ",
  1561. " Feb ": " Februar ",
  1562. " Mar ": " M&auml,rz ",
  1563. " Apr ": " April ",
  1564. " May ": " Mai ",
  1565. " Jun ": " Juni ",
  1566. " Jul ": " Juli ",
  1567. " Aug ": " August ",
  1568. " Sep ": " September ",
  1569. " Oct ": " Oktober ",
  1570. " Nov ": " November ",
  1571. " Dec ": " Dezember ",
  1572. "OPERATED BY ": "Durchgef&uuml,hrt von "
  1573. }
  1574. };
  1575.  
  1576. /* harmony default export */ __webpack_exports__["a"] = ({
  1577. de
  1578. });
  1579.  
  1580.  
  1581. /***/ }),
  1582. /* 9 */
  1583. /***/ (function(module, exports, __webpack_require__) {
  1584.  
  1585. const req = __webpack_require__(10);
  1586.  
  1587. const modules = req.keys().map(req);
  1588.  
  1589. module.exports = modules;
  1590.  
  1591.  
  1592. /***/ }),
  1593. /* 10 */
  1594. /***/ (function(module, exports, __webpack_require__) {
  1595.  
  1596. var map = {
  1597. "./airlines/aa.js": 11,
  1598. "./airlines/aaC1.js": 12,
  1599. "./airlines/ac.js": 13,
  1600. "./airlines/af.js": 14,
  1601. "./airlines/as.js": 15,
  1602. "./airlines/az.js": 16,
  1603. "./airlines/ba.js": 17,
  1604. "./airlines/cz.js": 18,
  1605. "./airlines/dl.js": 19,
  1606. "./airlines/ib.js": 20,
  1607. "./airlines/kl.js": 21,
  1608. "./airlines/la.js": 22,
  1609. "./airlines/lh.js": 23,
  1610. "./airlines/lx.js": 24,
  1611. "./airlines/oa.js": 25,
  1612. "./airlines/ps.js": 26,
  1613. "./airlines/qf.js": 27,
  1614. "./airlines/tk.js": 28,
  1615. "./index.js": 9,
  1616. "./meta/kayak.js": 29,
  1617. "./meta/momondo.js": 30,
  1618. "./meta/skyscanner.js": 31,
  1619. "./otas/cheapoair.js": 32,
  1620. "./otas/edreams.js": 33,
  1621. "./otas/etraveli.js": 34,
  1622. "./otas/expedia.js": 35,
  1623. "./otas/priceline.js": 36
  1624. };
  1625.  
  1626.  
  1627. function webpackContext(req) {
  1628. var id = webpackContextResolve(req);
  1629. return __webpack_require__(id);
  1630. }
  1631. function webpackContextResolve(req) {
  1632. if(!__webpack_require__.o(map, req)) {
  1633. var e = new Error("Cannot find module '" + req + "'");
  1634. e.code = 'MODULE_NOT_FOUND';
  1635. throw e;
  1636. }
  1637. return map[req];
  1638. }
  1639. webpackContext.keys = function webpackContextKeys() {
  1640. return Object.keys(map);
  1641. };
  1642. webpackContext.resolve = webpackContextResolve;
  1643. module.exports = webpackContext;
  1644. webpackContext.id = 10;
  1645.  
  1646. /***/ }),
  1647. /* 11 */
  1648. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1649.  
  1650. "use strict";
  1651. __webpack_require__.r(__webpack_exports__);
  1652. /* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
  1653. /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
  1654. /* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
  1655. /* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
  1656.  
  1657.  
  1658.  
  1659.  
  1660.  
  1661. const aaEditions = [
  1662. { value: "en_AU", name: "Australia" },
  1663. { value: "en_BE", name: "Belgium" },
  1664. { value: "en_CN", name: "China" },
  1665. { value: "en_DK", name: "Denmark" },
  1666. { value: "en_FI", name: "Finland" },
  1667. { value: "en_FR", name: "France / English" },
  1668. { value: "fr_FR", name: "France / French" },
  1669. { value: "en_DE", name: "Germany / English" },
  1670. { value: "de_DE", name: "Germany / Deutsch" },
  1671. { value: "en_GR", name: "Greece" },
  1672. { value: "en_HK", name: "Hong Kong" },
  1673. { value: "en_IN", name: "India" },
  1674. { value: "en_IE", name: "Ireland" },
  1675. { value: "en_IL", name: "Israel" },
  1676. { value: "en_IT", name: "Italy" },
  1677. { value: "en_JP", name: "Japan" },
  1678. { value: "en_KR", name: "Korea" },
  1679. { value: "en_NL", name: "Netherlands" },
  1680. { value: "en_NZ", name: "New Zealand" },
  1681. { value: "en_NO", name: "Norway" },
  1682. { value: "en_PT", name: "Portugal" },
  1683. { value: "en_RU", name: "Russia" },
  1684. { value: "en_ES", name: "Spain / English" },
  1685. { value: "es_ES", name: "Spain / Spanish" },
  1686. { value: "en_SE", name: "Sweden" },
  1687. { value: "en_CH", name: "Switzerland" }
  1688. ];
  1689.  
  1690. function printAA() {
  1691. var createUrl = function(edition) {
  1692. var url =
  1693. "http://i11l-services.aa.com/xaa/mseGateway/entryPoint.php?PARAM=";
  1694. var search = "1,,USD0.00," + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length + ",";
  1695. var legs = new Array();
  1696. var leg = "";
  1697. var segs = new Array();
  1698. var seg = "";
  1699.  
  1700. //Build multi-city search based on legs
  1701. for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
  1702. // walks each leg
  1703. segs = new Array();
  1704. for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length; j++) {
  1705. //walks each segment of leg
  1706. var k = 0;
  1707. // lets have a look if we need to skip segments - Flightnumber has to be the same and it must be just a layover
  1708. while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length - 1) {
  1709. if (
  1710. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !=
  1711. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
  1712. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440
  1713. )
  1714. break;
  1715. k++;
  1716. }
  1717. seg =
  1718. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].arr.year +
  1719. "-" +
  1720. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].arr.month).slice(-2) +
  1721. "-" +
  1722. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].arr.day).slice(-2) +
  1723. "T" +
  1724. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].arr.time).slice(-5) +
  1725. (typeof _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].arr.offset == "undefined"
  1726. ? "+00:00"
  1727. : _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].arr.offset) +
  1728. ",";
  1729. seg += _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].bookingclass + ",";
  1730. seg +=
  1731. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.year +
  1732. "-" +
  1733. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
  1734. "-" +
  1735. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2) +
  1736. "T" +
  1737. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.time).slice(-5) +
  1738. (typeof _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.offset == "undefined"
  1739. ? "+00:00"
  1740. : _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.offset) +
  1741. ",";
  1742. seg += _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].dest + ",";
  1743. seg +=
  1744. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].carrier +
  1745. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].fnr +
  1746. ",";
  1747. seg += _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].orig; // NO , here!
  1748. segs.push(seg);
  1749. j += k;
  1750. }
  1751. search += segs.length + "," + segs.join() + ",";
  1752. //build leg structure
  1753. leg =
  1754. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].dep.year +
  1755. "-" +
  1756. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].dep.month).slice(-2) +
  1757. "-" +
  1758. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].dep.day).slice(-2) +
  1759. ",";
  1760. leg += _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].dest + ",,";
  1761. leg += _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].orig + ","; // USE , here!
  1762. legs.push(leg);
  1763. }
  1764. search += "DIRECT,";
  1765. search += edition[0].toUpperCase() + ","; // Language
  1766. search += "3,";
  1767. // validate Passengers here: Max Paxcount = 7 (Infs not included) - >11 = Adult - InfSeat = Child
  1768. var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* validatePaxcount */ "d"])({
  1769. maxPaxcount: 7,
  1770. countInf: false,
  1771. childAsAdult: 12,
  1772. sepInfSeat: false,
  1773. childMinAge: 2
  1774. });
  1775. if (!pax) {
  1776. Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printAA");
  1777. return;
  1778. }
  1779. search += pax.adults + ","; // ADT
  1780. search += pax.children.length + ","; // Child
  1781. search += pax.infLap + ","; // Inf
  1782. search += "0,"; // Senior
  1783. search += edition[1].toUpperCase() + ","; // Country
  1784. // push outer search
  1785. search += _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length + "," + legs.join();
  1786. url += encodeURIComponent(search);
  1787. return url;
  1788. };
  1789.  
  1790. // get edition
  1791. var edition = _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].aaEdition.split("_");
  1792. if (edition.length != 2) {
  1793. Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "h"])("Error:Invalid AA-Edition");
  1794. return;
  1795. }
  1796. var url = createUrl(edition);
  1797. if (!url) {
  1798. return;
  1799. }
  1800. var extra =
  1801. ' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
  1802. extra += aaEditions
  1803. .map(function(obj, i) {
  1804. return (
  1805. '<a href="' +
  1806. createUrl(obj.value.split("_")) +
  1807. '" target="_blank">' +
  1808. obj.name +
  1809. "</a>"
  1810. );
  1811. })
  1812. .join("<br/>");
  1813. extra += "</span></span>";
  1814.  
  1815. return {
  1816. url,
  1817. title: "American",
  1818. desc: "Europe/Asia/Pacific",
  1819. extra
  1820. };
  1821. }
  1822.  
  1823. Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* registerLink */ "c"])("airlines", printAA);
  1824. Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* registerSetting */ "c"])(
  1825. "American (Europe/Asia/Pacific)",
  1826. "aaEdition",
  1827. aaEditions,
  1828. "en_DE"
  1829. );
  1830.  
  1831.  
  1832. /***/ }),
  1833. /* 12 */
  1834. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1835.  
  1836. "use strict";
  1837. __webpack_require__.r(__webpack_exports__);
  1838. /* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
  1839. /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
  1840. /* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
  1841. /* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
  1842.  
  1843.  
  1844.  
  1845.  
  1846.  
  1847. const aac1Editions = [
  1848. { value: "CA", name: "Canada" },
  1849. { value: "US", name: "United States" },
  1850. { value: "GB", name: "United Kingdom" }
  1851. ];
  1852.  
  1853. function printAAc1() {
  1854. var dateToEpoch = function(y, m, d) {
  1855. var dateStr =
  1856. y +
  1857. "-" +
  1858. ("0" + m).slice(-2) +
  1859. "-" +
  1860. ("0" + d).slice(-2) +
  1861. "T00:00:00-06:00";
  1862. return Date.parse(dateStr);
  1863. };
  1864.  
  1865. // validate Passengers here: Max Paxcount = 7 (Infs not included) - >11 = Adult - InfSeat = Child
  1866. var createUrl = function(edition) {
  1867. var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* validatePaxcount */ "d"])({
  1868. maxPaxcount: 6,
  1869. countInf: true,
  1870. childAsAdult: 12,
  1871. sepInfSeat: false,
  1872. childMinAge: 2
  1873. });
  1874. if (!pax) {
  1875. Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printAAc1");
  1876. return false;
  1877. }
  1878. var url = "https://www.aa.com/goto/metasearch?ITEN=GOOGLE,,";
  1879. url += (edition || "US") + ",";
  1880. if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length === 1) {
  1881. url += "oneWay";
  1882. } else {
  1883. url += "multi";
  1884. }
  1885. url +=
  1886. ",4,A" +
  1887. pax.adults +
  1888. "S0C" +
  1889. pax.children.length +
  1890. "I" +
  1891. pax.infLap +
  1892. "Y0L0,0,";
  1893. url += _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].orig + ",0," + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].dest;
  1894. url += ",0";
  1895.  
  1896. for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
  1897. url +=
  1898. ",false," +
  1899. dateToEpoch(
  1900. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[0].dep.year,
  1901. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[0].dep.month,
  1902. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[0].dep.day
  1903. );
  1904. }
  1905.  
  1906. if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length > 1) {
  1907. url += ",0,0";
  1908. }
  1909. url += "," + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].price + ",1,";
  1910.  
  1911. if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length > 1) {
  1912. var addon = "";
  1913. for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
  1914. addon +=
  1915. "#" +
  1916. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].orig +
  1917. "|" +
  1918. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].dest +
  1919. "|0|0|";
  1920. addon += dateToEpoch(
  1921. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[0].dep.year,
  1922. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[0].dep.month,
  1923. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[0].dep.day
  1924. );
  1925. }
  1926. url += encodeURIComponent(addon) + ",";
  1927. }
  1928.  
  1929. var itinsegs = new Array();
  1930.  
  1931. //Build multi-city search based on legs
  1932. for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
  1933. // walks each leg
  1934. for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length; j++) {
  1935. //walks each segment of leg
  1936. var k = 0;
  1937. // lets have a look if we need to skip segments - Flightnumber has to be the same and it must be just a layover
  1938. while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length - 1) {
  1939. if (
  1940. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !==
  1941. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
  1942. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440
  1943. )
  1944. break;
  1945. k++;
  1946. }
  1947. var itinseg =
  1948. "#" +
  1949. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].carrier +
  1950. "|" +
  1951. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].fnr +
  1952. "|" +
  1953. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].bookingclass;
  1954. itinseg += "|" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].orig;
  1955. itinseg += "|" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].dest;
  1956. itinseg +=
  1957. "|" +
  1958. Date.parse(
  1959. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.year +
  1960. "-" +
  1961. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
  1962. "-" +
  1963. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2) +
  1964. "T" +
  1965. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.time).slice(-5) +
  1966. ":00" +
  1967. (typeof _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.offset === "undefined"
  1968. ? "+00:00"
  1969. : _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.offset)
  1970. );
  1971. itinseg += "|" + i;
  1972. itinsegs.push(itinseg);
  1973. j += k;
  1974. }
  1975. }
  1976. url += encodeURIComponent(itinsegs.join(""));
  1977. return url;
  1978. };
  1979. var url = createUrl(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].aac1Edition.toUpperCase());
  1980. if (!url) {
  1981. return;
  1982. }
  1983. var extra =
  1984. ' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
  1985. extra += aac1Editions
  1986. .map(function(edition, i) {
  1987. return (
  1988. '<a href="' +
  1989. createUrl(edition.value.toUpperCase()) +
  1990. '" target="_blank">' +
  1991. edition.name +
  1992. "</a>"
  1993. );
  1994. })
  1995. .join("<br/>");
  1996. extra += "</span></span>";
  1997.  
  1998. return {
  1999. url,
  2000. title: "American",
  2001. desc: "America & UK",
  2002. extra
  2003. };
  2004. }
  2005.  
  2006. Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* registerLink */ "c"])("airlines", printAAc1);
  2007. Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* registerSetting */ "c"])("American (America & UK)", "aac1Edition", aac1Editions, "US");
  2008.  
  2009.  
  2010. /***/ }),
  2011. /* 13 */
  2012. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2013.  
  2014. "use strict";
  2015. __webpack_require__.r(__webpack_exports__);
  2016. /* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
  2017. /* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
  2018. /* harmony import */ var _settings_translations__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8);
  2019. /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2);
  2020. /* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(3);
  2021. /* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(0);
  2022. /* harmony import */ var _print_amadeus__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7);
  2023.  
  2024.  
  2025.  
  2026.  
  2027.  
  2028.  
  2029.  
  2030.  
  2031. const acEditions = [
  2032. { name: "Algeria", value: "dz" },
  2033. { name: "Antigua", value: "ag" },
  2034. { name: "Argentina", value: "ar" },
  2035. { name: "Australia", value: "au" },
  2036. { name: "Austria", value: "at" },
  2037. { name: "Bahamas", value: "bs" },
  2038. { name: "Bahrain", value: "bh" },
  2039. { name: "Barbados", value: "bb" },
  2040. { name: "Belgium", value: "be" },
  2041. { name: "Bermuda", value: "bm" },
  2042. { name: "Canada", value: "ca" },
  2043. { name: "Cayman Islands", value: "ky" },
  2044. { name: "Chile", value: "cl" },
  2045. { name: "China", value: "cn" },
  2046. { name: "Colombia", value: "co" },
  2047. { name: "Costa Rica", value: "cr" },
  2048. { name: "Croatia", value: "hr" },
  2049. { name: "Czech Republic", value: "cz" },
  2050. { name: "Denmark", value: "dk" },
  2051. { name: "Dominican Republic", value: "do" },
  2052. { name: "Egypt", value: "eg" },
  2053. { name: "Finland", value: "fi" },
  2054. { name: "France", value: "fr" },
  2055. { name: "Germany", value: "de" },
  2056. { name: "Greece", value: "gr" },
  2057. { name: "Haiti", value: "ht" },
  2058. { name: "Hong Kong SAR, China", value: "hk" },
  2059. { name: "Hungary", value: "hu" },
  2060. { name: "India", value: "in" },
  2061. { name: "Indonesia", value: "id" },
  2062. { name: "Ireland", value: "ie" },
  2063. { name: "Israel", value: "il" },
  2064. { name: "Italy", value: "it" },
  2065. { name: "Jamaica", value: "jm" },
  2066. { name: "Japan", value: "jp" },
  2067. { name: "Jordan", value: "jo" },
  2068. { name: "Kuwait", value: "kw" },
  2069. { name: "Malaysia", value: "my" },
  2070. { name: "Mexico", value: "mx" },
  2071. { name: "Morocco", value: "ma" },
  2072. { name: "Mozambique", value: "mz" },
  2073. { name: "Netherlands", value: "nl" },
  2074. { name: "New Zealand", value: "nz" },
  2075. { name: "Nigeria", value: "ng" },
  2076. { name: "Norway", value: "no" },
  2077. { name: "Panama", value: "pa" },
  2078. { name: "Peru", value: "pe" },
  2079. { name: "Poland", value: "pl" },
  2080. { name: "Portugal", value: "pt" },
  2081. { name: "Qatar", value: "qa" },
  2082. { name: "Russia", value: "ru" },
  2083. { name: "Romania", value: "ro" },
  2084. { name: "Saudi Arabia", value: "sa" },
  2085. { name: "Singapore", value: "sg" },
  2086. { name: "South Africa", value: "za" },
  2087. { name: "South Korea", value: "kr" },
  2088. { name: "Spain", value: "es" },
  2089. { name: "St. Lucia", value: "lc" },
  2090. { name: "Sweden", value: "se" },
  2091. { name: "Switzerland", value: "ch" },
  2092. { name: "Taiwan, China", value: "tw" },
  2093. { name: "Thailand", value: "th" },
  2094. { name: "Trinidad &amp; Tobago", value: "tt" },
  2095. { name: "Turkey", value: "tr" },
  2096. { name: "Turks and Caicos Island", value: "tc" },
  2097. { name: "Ukraine", value: "ua" },
  2098. { name: "United Arab Emirates", value: "ae" },
  2099. { name: "United Kingdom", value: "gb" },
  2100. { name: "United States", value: "us" },
  2101. { name: "Venezuela", value: "ve" },
  2102. { name: "Vietnam", value: "vn" }
  2103. ];
  2104.  
  2105. function printAC() {
  2106. var createUrl = function(edition) {
  2107. var acUrl =
  2108. "https://book.aircanada.com/pl/AConline/en/RedirectionServlet?FareRequest=YES&PRICING_MODE=0&fromThirdParty=YES";
  2109. acUrl +=
  2110. "&country=" +
  2111. edition +
  2112. "&countryOfResidence=" +
  2113. edition +
  2114. (_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].itaLanguage == "de" || _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].language == "de"
  2115. ? "&language=de"
  2116. : "&language=en");
  2117. // validate Passengers here: Max Paxcount = 7 (Infs not included) - >11 = Adult - InfSeat = Child
  2118. var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_4__[/* validatePaxcount */ "d"])({
  2119. maxPaxcount: 9,
  2120. countInf: true,
  2121. childAsAdult: 16,
  2122. sepInfSeat: false,
  2123. childMinAge: 2
  2124. });
  2125. if (!pax) {
  2126. Object(_utils__WEBPACK_IMPORTED_MODULE_3__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printAC");
  2127. return;
  2128. }
  2129. var paxConfig = { allowinf: 0, youthage: 12 }; // AC does not allow booking of infants for int. flights
  2130. var amadeusConfig = { sepcabin: 1, detailed: 1, allowpremium: 1 };
  2131. var tmpPax = Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_6__[/* getAmadeusPax */ "a"])(pax, paxConfig);
  2132. acUrl += tmpPax.url;
  2133. acUrl += "&numberOfAdults=" + tmpPax.adults;
  2134. acUrl += "&numberOfInfants=" + tmpPax.infants;
  2135. acUrl += "&numberOfYouth=" + tmpPax.youth;
  2136. acUrl += "&numberOfChildren=" + tmpPax.children;
  2137. acUrl += "&tripType=" + Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_6__[/* getAmadeusTriptype */ "b"])();
  2138. for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_5__[/* currentItin */ "a"].itin.length; i++) {
  2139. acUrl +=
  2140. "&departure" +
  2141. (i + 1) +
  2142. "=" +
  2143. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_5__[/* currentItin */ "a"].itin[i].dep.day).slice(-2) +
  2144. "/" +
  2145. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_5__[/* currentItin */ "a"].itin[i].dep.month).slice(-2) +
  2146. "/" +
  2147. _parse_itin__WEBPACK_IMPORTED_MODULE_5__[/* currentItin */ "a"].itin[i].dep.year +
  2148. "&org" +
  2149. (i + 1) +
  2150. "=" +
  2151. _parse_itin__WEBPACK_IMPORTED_MODULE_5__[/* currentItin */ "a"].itin[i].orig +
  2152. "&dest" +
  2153. (i + 1) +
  2154. "=" +
  2155. _parse_itin__WEBPACK_IMPORTED_MODULE_5__[/* currentItin */ "a"].itin[i].dest;
  2156. }
  2157. acUrl += Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_6__[/* getAmadeusUrl */ "c"])(amadeusConfig);
  2158. return acUrl;
  2159. };
  2160. var acUrl = createUrl(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].acEdition.toUpperCase());
  2161. if (!acUrl) {
  2162. return;
  2163. }
  2164. var extra =
  2165. ' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
  2166. extra += acEditions
  2167. .map(function(edition, i) {
  2168. return (
  2169. '<a href="' +
  2170. createUrl(edition.value.toUpperCase()) +
  2171. '" target="_blank">' +
  2172. edition.name +
  2173. "</a>"
  2174. );
  2175. })
  2176. .join("<br/>");
  2177. extra += '<br/><a href="javascript:addACPromo();">Add Promo Code</a>';
  2178. extra += "</span></span>";
  2179. extra += addACPromoControls(acUrl);
  2180.  
  2181. return {
  2182. url: acUrl,
  2183. title: "Air Canada",
  2184. extra
  2185. };
  2186. }
  2187.  
  2188. function addACPromoControls(url) {
  2189. var script = document.createElement("script");
  2190. script.appendChild(document.createTextNode("(" + addACPromo + ")();"));
  2191. (document.body || document.head || document.documentElement).appendChild(
  2192. script
  2193. );
  2194.  
  2195. var label = "Open";
  2196. if (_settings_translations__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"][_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].language] !== undefined) {
  2197. if (_settings_translations__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"][_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].language]["open"] !== undefined) {
  2198. label = _settings_translations__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"][_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].language]["open"];
  2199. }
  2200. }
  2201.  
  2202. var extra =
  2203. '<input type="input" id="ac-promo-input" size="8" style="display:none;margin:0 5px;"></input>';
  2204. extra +=
  2205. '<label style="font-size:' + Number(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].linkFontsize) + '%;">';
  2206. extra +=
  2207. '<a id="ac-promo-link" style="display:none" target="_blank" href="' +
  2208. url +
  2209. '">' +
  2210. label +
  2211. "</a></label>";
  2212. return extra;
  2213. }
  2214.  
  2215. function addACPromo() {
  2216. window.addACPromo = function() {
  2217. var input = document.getElementById("ac-promo-input");
  2218. input.style.display = "inline";
  2219. input.addEventListener("change", event => {
  2220. var replacement =
  2221. event.target.value != ""
  2222. ? "&AUTHORIZATION_ID=" + event.target.value
  2223. : "";
  2224. var link = document.getElementById("ac-promo-link");
  2225. var match = link.href.match(/(&AUTHORIZATION_ID=.*)/g);
  2226. if (match == null) {
  2227. link.href += replacement;
  2228. } else {
  2229. link.href = link.href.replace(match, replacement);
  2230. }
  2231. });
  2232.  
  2233. var link = document.getElementById("ac-promo-link");
  2234. link.style.display = "inline";
  2235. };
  2236. }
  2237.  
  2238. Object(_print_links__WEBPACK_IMPORTED_MODULE_4__[/* registerLink */ "c"])("airlines", printAC);
  2239. Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* registerSetting */ "c"])("Air Canada", "acEdition", acEditions, "us");
  2240.  
  2241.  
  2242. /***/ }),
  2243. /* 14 */
  2244. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2245.  
  2246. "use strict";
  2247. __webpack_require__.r(__webpack_exports__);
  2248. /* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
  2249. /* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
  2250. /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2);
  2251. /* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3);
  2252. /* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(0);
  2253.  
  2254.  
  2255.  
  2256.  
  2257.  
  2258.  
  2259. const afEditions = [
  2260. { value: "DE/de", name: "Germany / Deutsch" },
  2261. { value: "DE/en", name: "Germany / English" },
  2262. { value: "FR/en", name: "France / English" },
  2263. { value: "FI/en", name: "Finland / English" },
  2264. { value: "FR/fr", name: "France / French" },
  2265. { value: "NL/en", name: "Netherlands / English" },
  2266. { value: "GB/en", name: "United Kingdom / English" },
  2267. { value: "US/en", name: "US / English" }
  2268. ];
  2269.  
  2270. function printAF() {
  2271. var createUrl = function(edition) {
  2272. if (
  2273. !_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].showAllAirlines &&
  2274. !(
  2275. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin &&
  2276. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin.length == 2 &&
  2277. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[0].orig == _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[1].dest &&
  2278. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[0].dest == _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[1].orig
  2279. )
  2280. ) {
  2281. return;
  2282. }
  2283.  
  2284. var cabins = ["Y", "W", "C", "F"];
  2285. var mincabin = 3;
  2286. var afUrl =
  2287. "https://www.airfrance.com/" +
  2288. edition +
  2289. "/local/process/standardbooking/DisplayUpsellAction.do?calendarSearch=1&subCabin=MCHER&typeTrip=2";
  2290. for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin.length; i++) {
  2291. if (i == 0) {
  2292. afUrl += "&from=" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].orig;
  2293. afUrl += "&to=" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dest;
  2294. afUrl +=
  2295. "&outboundDate=" +
  2296. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.year +
  2297. "-" +
  2298. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.month).slice(-2) +
  2299. "-" +
  2300. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.day).slice(-2);
  2301. afUrl +=
  2302. "&firstOutboundHour=" +
  2303. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.time).slice(-5);
  2304.  
  2305. let flights = "";
  2306. for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length; j++) {
  2307. if (j > 0) flights += "|";
  2308. flights +=
  2309. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].carrier +
  2310. ("000" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].fnr).slice(-4);
  2311. }
  2312. afUrl += "&flightOutbound=" + flights;
  2313. } else if (i == 1) {
  2314. afUrl +=
  2315. "&inboundDate=" +
  2316. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.year +
  2317. "-" +
  2318. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.month).slice(-2) +
  2319. "-" +
  2320. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.day).slice(-2);
  2321. afUrl +=
  2322. "&firstInboundHour=" + ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.time).slice(-5);
  2323.  
  2324. let flights = "";
  2325. for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length; j++) {
  2326. if (j > 0) flights += "|";
  2327. flights +=
  2328. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].carrier +
  2329. ("000" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].fnr).slice(-4);
  2330. if (_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin < mincabin) {
  2331. mincabin = _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin;
  2332. }
  2333. }
  2334. afUrl += "&flightInbound=" + flights;
  2335. }
  2336. }
  2337. afUrl +=
  2338. "&cabin=" +
  2339. cabins[_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin === "Auto" ? mincabin : Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getForcedCabin */ "c"])()];
  2340. var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_3__[/* validatePaxcount */ "d"])({
  2341. maxPaxcount: 9,
  2342. countInf: true,
  2343. childAsAdult: 18,
  2344. sepInfSeat: false,
  2345. childMinAge: 2
  2346. });
  2347. if (!pax) {
  2348. Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printAF");
  2349. return;
  2350. }
  2351. var tmpPax = { c: 0, y: 0 };
  2352. for (i = 0; i < pax.children.length; i++) {
  2353. if (pax.children[i] > 11) {
  2354. tmpPax.y++;
  2355. } else {
  2356. tmpPax.c++;
  2357. }
  2358. }
  2359. var curPax = 0;
  2360. afUrl += "&nbAdults=" + pax.adults;
  2361. for (i = 0; i < pax.adults; i++) {
  2362. afUrl += "&paxTypoList=ADT";
  2363. curPax++;
  2364. }
  2365. afUrl += "&nbEnfants=" + tmpPax.y;
  2366. for (i = 0; i < tmpPax.y; i++) {
  2367. afUrl += "&paxTypoList=YTH_MIN";
  2368. curPax++;
  2369. }
  2370. afUrl += "&nbChildren=" + tmpPax.c;
  2371. for (i = 0; i < tmpPax.y; i++) {
  2372. afUrl += "&paxTypoList=CHD";
  2373. curPax++;
  2374. }
  2375. afUrl += "&nbBebes=" + pax.infLap;
  2376. for (i = 0; i < pax.infLap; i++) {
  2377. afUrl += "&paxTypoList=INF";
  2378. curPax++;
  2379. }
  2380. afUrl += "&nbPassenger=" + curPax + "&nbPax=" + curPax;
  2381. return afUrl;
  2382. };
  2383. // get edition
  2384. var edition = _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].afEdition;
  2385. var url = createUrl(edition);
  2386. if (!url) {
  2387. return;
  2388. }
  2389. var extra =
  2390. ' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
  2391. extra += afEditions
  2392. .map(function(obj, i) {
  2393. return (
  2394. '<a href="' +
  2395. createUrl(obj.value) +
  2396. '" target="_blank">' +
  2397. obj.name +
  2398. "</a>"
  2399. );
  2400. })
  2401. .join("<br/>");
  2402. extra += "</span></span>";
  2403.  
  2404. return {
  2405. url,
  2406. title: "Air France",
  2407. extra
  2408. };
  2409. }
  2410.  
  2411. Object(_print_links__WEBPACK_IMPORTED_MODULE_3__[/* registerLink */ "c"])("airlines", printAF);
  2412. Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* registerSetting */ "c"])("Air France", "afEdition", afEditions, "US/en");
  2413.  
  2414.  
  2415. /***/ }),
  2416. /* 15 */
  2417. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2418.  
  2419. "use strict";
  2420. __webpack_require__.r(__webpack_exports__);
  2421. /* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
  2422. /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
  2423. /* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
  2424. /* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
  2425.  
  2426.  
  2427.  
  2428.  
  2429.  
  2430. function printAS() {
  2431. if (
  2432. !_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].showAllAirlines &&
  2433. !Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* inArray */ "f"])("AS", _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].carriers)
  2434. ) {
  2435. return;
  2436. }
  2437.  
  2438. // validate Passengers here: Max Paxcount = 7 (Infs not included) - >11 = Adult - InfSeat = Child
  2439. var createUrl = function() {
  2440. var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* validatePaxcount */ "d"])({
  2441. maxPaxcount: 6,
  2442. countInf: true,
  2443. childAsAdult: 6,
  2444. sepInfSeat: false,
  2445. childMinAge: 2
  2446. });
  2447. if (!pax) {
  2448. Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printAAc1");
  2449. return;
  2450. }
  2451. var url = "https://www.alaskaair.com/planbook/shoppingstart?";
  2452. url += "A=" + pax.adults + "&C=" + pax.children.length + "&FT=";
  2453. if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length == 1) {
  2454. url += "ow";
  2455. } else {
  2456. url += "rt";
  2457. }
  2458.  
  2459. var k = 0;
  2460. //Build multi-city search based on legs
  2461. for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
  2462. // walks each leg
  2463. for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length; j++) {
  2464. //walks each segment of leg
  2465. var itinseg =
  2466. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].orig +
  2467. "|" +
  2468. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dest;
  2469. itinseg +=
  2470. "|" +
  2471. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
  2472. "/" +
  2473. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2);
  2474. itinseg += "/" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.year;
  2475. itinseg += "|" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].fnr + "|";
  2476. itinseg += _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].cabin ? "f" : "c";
  2477. url += "&F" + ++k + "=" + encodeURIComponent(itinseg);
  2478. }
  2479. }
  2480. url +=
  2481. "&DEST=" +
  2482. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].seg[_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].seg.length - 1].dest;
  2483. url += "&FARE=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].price + "&frm=cart&META=GOO_CS";
  2484. return url;
  2485. };
  2486. var url = createUrl();
  2487. if (!url) {
  2488. return;
  2489. }
  2490.  
  2491. return {
  2492. url,
  2493. title: "Alaska"
  2494. };
  2495. }
  2496.  
  2497. Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* registerLink */ "c"])("airlines", printAS);
  2498.  
  2499.  
  2500. /***/ }),
  2501. /* 16 */
  2502. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2503.  
  2504. "use strict";
  2505. __webpack_require__.r(__webpack_exports__);
  2506. /* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
  2507. /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
  2508. /* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
  2509. /* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
  2510.  
  2511.  
  2512.  
  2513.  
  2514.  
  2515. const azEditions = [
  2516. { value: "de_de", name: "Germany / Deutsch" },
  2517. { value: "at_de", name: "Austria / Deutsch" },
  2518. { value: "ch_de", name: "Switzerland / Deutsch" },
  2519. { value: "fr_fr", name: "France / French" },
  2520. { value: "nl_nl", name: "Netherlands / Dutch" },
  2521. { value: "it_it", name: "Italy / Italian" },
  2522. { value: "ca_en", name: "Canada / Englisch" },
  2523. { value: "us_en", name: "US / Englisch" },
  2524. { value: "gb_en", name: "GB / Englisch" },
  2525. { value: "en_en", name: "International / Englisch" }
  2526. ];
  2527.  
  2528. function printAZ() {
  2529. if (
  2530. !_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].showAllAirlines &&
  2531. !(_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].carriers.length == 1 && Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* inArray */ "f"])("AZ", _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].carriers))
  2532. ) {
  2533. return;
  2534. }
  2535.  
  2536. var createUrl = function(edition) {
  2537. var azUrl =
  2538. "https://www.alitalia.com/" +
  2539. edition +
  2540. "/home-page.metasearch.json?SearchType=BrandMetasearch";
  2541. var cabins = ["Economy", "Economy", "Business", "First"];
  2542. var seg = 0;
  2543. for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
  2544. for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length; j++) {
  2545. azUrl +=
  2546. "&MetaSearchDestinations[" +
  2547. seg +
  2548. "].From=" +
  2549. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].orig;
  2550. azUrl +=
  2551. "&MetaSearchDestinations[" +
  2552. seg +
  2553. "].To=" +
  2554. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dest;
  2555. azUrl +=
  2556. "&MetaSearchDestinations[" +
  2557. seg +
  2558. "].DepartureDate=" +
  2559. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.year +
  2560. "-" +
  2561. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
  2562. "-" +
  2563. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2) +
  2564. ":" +
  2565. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.time).slice(-5);
  2566. azUrl +=
  2567. "&MetaSearchDestinations[" +
  2568. seg +
  2569. "].ArrivalDate=" +
  2570. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].arr.year +
  2571. "-" +
  2572. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].arr.month).slice(-2) +
  2573. "-" +
  2574. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].arr.day).slice(-2) +
  2575. ":" +
  2576. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].arr.time).slice(-5);
  2577. azUrl +=
  2578. "&MetaSearchDestinations[" +
  2579. seg +
  2580. "].Flight=" +
  2581. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].fnr;
  2582. azUrl +=
  2583. "&MetaSearchDestinations[" +
  2584. seg +
  2585. "].code=" +
  2586. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].farebase;
  2587. azUrl += "&MetaSearchDestinations[" + seg + "].MseType=";
  2588. azUrl +=
  2589. "&MetaSearchDestinations[" +
  2590. seg +
  2591. "].bookingClass=" +
  2592. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].bookingclass;
  2593. azUrl +=
  2594. "&MetaSearchDestinations[" +
  2595. seg +
  2596. "].cabinClass=" +
  2597. cabins[_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].cabin];
  2598. azUrl += "&MetaSearchDestinations[" + seg + "].slices=" + i;
  2599. seg++;
  2600. }
  2601. }
  2602. var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* validatePaxcount */ "d"])({
  2603. maxPaxcount: 7,
  2604. countInf: false,
  2605. childAsAdult: 12,
  2606. sepInfSeat: false,
  2607. childMinAge: 2
  2608. });
  2609. if (!pax) {
  2610. Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printAZ");
  2611. return false;
  2612. }
  2613. azUrl +=
  2614. "&children_number=" +
  2615. pax.children.length +
  2616. "&newborn_number=" +
  2617. pax.infLap +
  2618. "&adult_number=" +
  2619. pax.adults;
  2620. return azUrl;
  2621. };
  2622. // get edition
  2623. var edition = _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].azEdition;
  2624. var azUrl = createUrl(edition);
  2625. if (!azUrl) {
  2626. return;
  2627. }
  2628. var extra =
  2629. ' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
  2630. extra += azEditions
  2631. .map(function(obj, i) {
  2632. return (
  2633. '<a href="' +
  2634. createUrl(obj.value) +
  2635. '" target="_blank">' +
  2636. obj.name +
  2637. "</a>"
  2638. );
  2639. })
  2640. .join("<br/>");
  2641. extra += "</span></span>";
  2642.  
  2643. return {
  2644. url: azUrl,
  2645. title: "Alitalia",
  2646. extra
  2647. };
  2648. }
  2649.  
  2650. Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* registerLink */ "c"])("airlines", printAZ);
  2651. Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* registerSetting */ "c"])("Alitalia", "azEdition", azEditions, "us_en");
  2652.  
  2653.  
  2654. /***/ }),
  2655. /* 17 */
  2656. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2657.  
  2658. "use strict";
  2659. __webpack_require__.r(__webpack_exports__);
  2660. /* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
  2661. /* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
  2662. /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2);
  2663. /* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3);
  2664. /* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(0);
  2665.  
  2666.  
  2667.  
  2668.  
  2669.  
  2670.  
  2671. const baEditions = [
  2672. { value: "AF", name: "Afghanistan" },
  2673. { value: "AL", name: "Albania" },
  2674. { value: "DZ", name: "Algeria" },
  2675. { value: "AS", name: "American Samoa" },
  2676. { value: "AD", name: "Andorra" },
  2677. { value: "AO", name: "Angola" },
  2678. { value: "AI", name: "Anguilla" },
  2679. { value: "AG", name: "Antigua" },
  2680. { value: "AR", name: "Argentina" },
  2681. { value: "AM", name: "Armenia" },
  2682. { value: "AW", name: "Aruba" },
  2683. { value: "AU", name: "Australia" },
  2684. { value: "AT", name: "Austria" },
  2685. { value: "AZ", name: "Azerbaijan" },
  2686. { value: "BS", name: "Bahamas" },
  2687. { value: "BH", name: "Bahrain" },
  2688. { value: "BD", name: "Bangladesh" },
  2689. { value: "BB", name: "Barbados" },
  2690. { value: "BY", name: "Belarus" },
  2691. { value: "BE", name: "Belgium" },
  2692. { value: "BZ", name: "Belize" },
  2693. { value: "BJ", name: "Benin Republic" },
  2694. { value: "BM", name: "Bermuda" },
  2695. { value: "BT", name: "Bhutan" },
  2696. { value: "BO", name: "Bolivia" },
  2697. { value: "BA", name: "Bosnia-Herzegovina" },
  2698. { value: "BW", name: "Botswana" },
  2699. { value: "BR", name: "Brazil" },
  2700. { value: "VG", name: "British Virgin Islands" },
  2701. { value: "BN", name: "Brunei" },
  2702. { value: "BG", name: "Bulgaria" },
  2703. { value: "BF", name: "Burkina Faso" },
  2704. { value: "BI", name: "Burundi" },
  2705. { value: "KH", name: "Cambodia" },
  2706. { value: "CA", name: "Canada" },
  2707. { value: "CV", name: "Cape Verde" },
  2708. { value: "KY", name: "Cayman Islands" },
  2709. { value: "CF", name: "Central African Rep" },
  2710. { value: "TD", name: "Chad" },
  2711. { value: "CL", name: "Chile" },
  2712. { value: "CN", name: "China" },
  2713. { value: "CX", name: "Christmas Island" },
  2714. { value: "CC", name: "Cocos Islands" },
  2715. { value: "CO", name: "Colombia" },
  2716. { value: "CG", name: "Congo" },
  2717. { value: "CK", name: "Cook Islands" },
  2718. { value: "CR", name: "Costa Rica" },
  2719. { value: "HR", name: "Croatia" },
  2720. { value: "CU", name: "Cuba" },
  2721. { value: "CY", name: "Cyprus" },
  2722. { value: "CZ", name: "Czech Republic" },
  2723. { value: "DK", name: "Denmark" },
  2724. { value: "DJ", name: "Djibouti" },
  2725. { value: "DM", name: "Dominica" },
  2726. { value: "DO", name: "Dominican Rep" },
  2727. { value: "EC", name: "Ecuador" },
  2728. { value: "EG", name: "Egypt" },
  2729. { value: "SV", name: "El Salvador" },
  2730. { value: "GQ", name: "Equatorial Guinea" },
  2731. { value: "ER", name: "Eritrea" },
  2732. { value: "EE", name: "Estonia" },
  2733. { value: "ET", name: "Ethiopia" },
  2734. { value: "FO", name: "Faeroe Is" },
  2735. { value: "FK", name: "Falkland Is" },
  2736. { value: "FJ", name: "Fiji" },
  2737. { value: "FI", name: "Finland" },
  2738. { value: "FR", name: "France" },
  2739. { value: "GF", name: "French Guyana" },
  2740. { value: "PF", name: "French Polynesia" },
  2741. { value: "GA", name: "Gabon" },
  2742. { value: "GM", name: "Gambia" },
  2743. { value: "GE", name: "Georgia" },
  2744. { value: "DE", name: "Germany" },
  2745. { value: "GH", name: "Ghana" },
  2746. { value: "GI", name: "Gibraltar (UK)" },
  2747. { value: "GR", name: "Greece" },
  2748. { value: "GL", name: "Greenland" },
  2749. { value: "GD", name: "Grenada" },
  2750. { value: "GP", name: "Guadeloupe" },
  2751. { value: "GU", name: "Guam" },
  2752. { value: "GT", name: "Guatemala" },
  2753. { value: "GN", name: "Guinea" },
  2754. { value: "GW", name: "Guinea Bissau" },
  2755. { value: "GY", name: "Guyana" },
  2756. { value: "HT", name: "Haiti" },
  2757. { value: "HN", name: "Honduras" },
  2758. { value: "HK", name: "Hong Kong" },
  2759. { value: "HU", name: "Hungary" },
  2760. { value: "IS", name: "Iceland" },
  2761. { value: "IN", name: "India" },
  2762. { value: "ID", name: "Indonesia" },
  2763. { value: "IR", name: "Iran" },
  2764. { value: "IQ", name: "Iraq" },
  2765. { value: "IE", name: "Ireland" },
  2766. { value: "IL", name: "Israel" },
  2767. { value: "IT", name: "Italy" },
  2768. { value: "CI", name: "Ivory Coast" },
  2769. { value: "JM", name: "Jamaica" },
  2770. { value: "JP", name: "Japan" },
  2771. { value: "JO", name: "Jordan" },
  2772. { value: "KZ", name: "Kazakhstan" },
  2773. { value: "KE", name: "Kenya" },
  2774. { value: "KI", name: "Kiribati" },
  2775. { value: "XK", name: "Kosovo" },
  2776. { value: "KW", name: "Kuwait" },
  2777. { value: "KG", name: "Kyrgyzstan" },
  2778. { value: "LA", name: "Laos" },
  2779. { value: "LV", name: "Latvia" },
  2780. { value: "LB", name: "Lebanon" },
  2781. { value: "LS", name: "Lesotho" },
  2782. { value: "LR", name: "Liberia" },
  2783. { value: "LY", name: "Libya" },
  2784. { value: "LI", name: "Liechtenstein" },
  2785. { value: "LT", name: "Lithuania" },
  2786. { value: "LU", name: "Luxembourg" },
  2787. { value: "MO", name: "Macau" },
  2788. { value: "MK", name: "Macedonia" },
  2789. { value: "MG", name: "Madagascar" },
  2790. { value: "MW", name: "Malawi" },
  2791. { value: "MY", name: "Malaysia" },
  2792. { value: "MV", name: "Maldives" },
  2793. { value: "ML", name: "Mali" },
  2794. { value: "MT", name: "Malta" },
  2795. { value: "MP", name: "Mariana Islands" },
  2796. { value: "MH", name: "Marshall Islands" },
  2797. { value: "MQ", name: "Martinique" },
  2798. { value: "MR", name: "Mauritania" },
  2799. { value: "MU", name: "Mauritius" },
  2800. { value: "MX", name: "Mexico" },
  2801. { value: "FM", name: "Micronesia" },
  2802. { value: "UM", name: "Minor Island" },
  2803. { value: "MD", name: "Moldova" },
  2804. { value: "MC", name: "Monaco" },
  2805. { value: "ME", name: "Montenegro" },
  2806. { value: "MS", name: "Montserrat" },
  2807. { value: "MA", name: "Morocco" },
  2808. { value: "MZ", name: "Mozambique" },
  2809. { value: "MM", name: "Myanmar" },
  2810. { value: "NA", name: "Namibia" },
  2811. { value: "NR", name: "Nauru" },
  2812. { value: "NP", name: "Nepal" },
  2813. { value: "AN", name: "Netherland Antilles" },
  2814. { value: "NL", name: "Netherlands" },
  2815. { value: "NC", name: "New Caledonia" },
  2816. { value: "NZ", name: "New Zealand" },
  2817. { value: "NI", name: "Nicaragua" },
  2818. { value: "NE", name: "Niger" },
  2819. { value: "NG", name: "Nigeria" },
  2820. { value: "NU", name: "Niue" },
  2821. { value: "NF", name: "Norfolk Island" },
  2822. { value: "NO", name: "Norway" },
  2823. { value: "OM", name: "Oman" },
  2824. { value: "PK", name: "Pakistan" },
  2825. { value: "PA", name: "Panama" },
  2826. { value: "PG", name: "Papua New Guinea" },
  2827. { value: "PY", name: "Paraguay" },
  2828. { value: "KP", name: "Peoples Rep Korea" },
  2829. { value: "PE", name: "Peru" },
  2830. { value: "PH", name: "Philippines" },
  2831. { value: "PL", name: "Poland" },
  2832. { value: "PT", name: "Portugal" },
  2833. { value: "PR", name: "Puerto Rico" },
  2834. { value: "QA", name: "Qatar" },
  2835. { value: "CM", name: "Republic Cameroon" },
  2836. { value: "RE", name: "Reunion" },
  2837. { value: "RO", name: "Romania" },
  2838. { value: "RU", name: "Russia" },
  2839. { value: "RW", name: "Rwanda" },
  2840. { value: "SM", name: "San Marino" },
  2841. { value: "SA", name: "Saudi Arabia" },
  2842. { value: "SN", name: "Senegal" },
  2843. { value: "RS", name: "Serbia" },
  2844. { value: "SC", name: "Seychelles" },
  2845. { value: "SL", name: "Sierra Leone" },
  2846. { value: "SG", name: "Singapore" },
  2847. { value: "SK", name: "Slovakia" },
  2848. { value: "SI", name: "Slovenia" },
  2849. { value: "SB", name: "Solomon Island" },
  2850. { value: "SO", name: "Somalia" },
  2851. { value: "ZA", name: "South Africa" },
  2852. { value: "KR", name: "South Korea" },
  2853. { value: "ES", name: "Spain" },
  2854. { value: "LK", name: "Sri Lanka" },
  2855. { value: "KN", name: "St Kitts and Nevis" },
  2856. { value: "LC", name: "St Lucia" },
  2857. { value: "VC", name: "St Vincent" },
  2858. { value: "SD", name: "Sudan" },
  2859. { value: "SR", name: "Suriname" },
  2860. { value: "SZ", name: "Swaziland" },
  2861. { value: "SE", name: "Sweden" },
  2862. { value: "CH", name: "Switzerland" },
  2863. { value: "SY", name: "Syria" },
  2864. { value: "TW", name: "Taiwan" },
  2865. { value: "TJ", name: "Tajikistan" },
  2866. { value: "TZ", name: "Tanzania" },
  2867. { value: "TH", name: "Thailand" },
  2868. { value: "TL", name: "Timor - Leste" },
  2869. { value: "TG", name: "Togo" },
  2870. { value: "TO", name: "Tonga" },
  2871. { value: "TT", name: "Trinidad and Tobago" },
  2872. { value: "TN", name: "Tunisia" },
  2873. { value: "TR", name: "Turkey" },
  2874. { value: "TM", name: "Turkmenistan" },
  2875. { value: "TC", name: "Turks Caicos" },
  2876. { value: "TV", name: "Tuvalu" },
  2877. { value: "VI", name: "US Virgin Islands" },
  2878. { value: "US", name: "USA" },
  2879. { value: "UG", name: "Uganda" },
  2880. { value: "UA", name: "Ukraine" },
  2881. { value: "AE", name: "United Arab Emirates" },
  2882. { value: "GB", name: "United Kingdom" },
  2883. { value: "UY", name: "Uruguay" },
  2884. { value: "UZ", name: "Uzbekistan" },
  2885. { value: "VU", name: "Vanuatu" },
  2886. { value: "VE", name: "Venezuela" },
  2887. { value: "VN", name: "Vietnam" },
  2888. { value: "WS", name: "Western Samoa" },
  2889. { value: "YE", name: "Yemen Republic" },
  2890. { value: "ZM", name: "Zambia" },
  2891. { value: "ZW", name: "Zimbabwe" }
  2892. ];
  2893.  
  2894. function printBA() {
  2895. if (
  2896. !_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].showAllAirlines &&
  2897. !(
  2898. Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* inArray */ "f"])("IB", _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].carriers) || Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* inArray */ "f"])("BA", _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].carriers)
  2899. )
  2900. ) {
  2901. return;
  2902. }
  2903.  
  2904. var createUrl = function(edition, language) {
  2905. // 0 = Economy; 1=Premium Economy; 2=Business; 3=First
  2906. var cabins = ["M", "W", "C", "F"];
  2907. var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_3__[/* validatePaxcount */ "d"])({
  2908. maxPaxcount: 9,
  2909. countInf: false,
  2910. childAsAdult: 16,
  2911. sepInfSeat: false,
  2912. childMinAge: 2
  2913. });
  2914. if (!pax) {
  2915. Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printBA");
  2916. return false;
  2917. }
  2918. var tmpPax = { c: 0, y: 0 };
  2919. for (i = 0; i < pax.children.length; i++) {
  2920. if (pax.children[i] > 11) {
  2921. tmpPax.y++;
  2922. } else {
  2923. tmpPax.c++;
  2924. }
  2925. }
  2926. var url =
  2927. "https://www.britishairways.com/travel/fx/public/" +
  2928. language +
  2929. "_" +
  2930. edition +
  2931. "?eId=111054&data=F" +
  2932. pax.adults +
  2933. tmpPax.y +
  2934. tmpPax.c +
  2935. pax.infLap +
  2936. "LF";
  2937. var mincabin = 3;
  2938. //Build multi-city search based on legs
  2939. for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin.length; i++) {
  2940. // walks each leg
  2941. for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length; j++) {
  2942. //walks each segment of leg
  2943. var k = 0;
  2944. // lets have a look if we need to skip segments - fnr has to be the same and it must be just a layover
  2945. while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length - 1) {
  2946. if (
  2947. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !=
  2948. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
  2949. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440
  2950. )
  2951. break;
  2952. k++;
  2953. }
  2954. url +=
  2955. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2) +
  2956. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
  2957. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dep.year +
  2958. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dep.time.replace(":", "")).slice(
  2959. -4
  2960. );
  2961. url +=
  2962. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].carrier +
  2963. ("000" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].fnr).slice(-4);
  2964. url += cabins[_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin];
  2965. url +=
  2966. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].orig + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j + k].dest;
  2967. if (_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin.length == 2 && i == 1) {
  2968. url += "F";
  2969. } else {
  2970. url += "T";
  2971. }
  2972. if (_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin < mincabin) {
  2973. mincabin = _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin;
  2974. }
  2975. j += k;
  2976. }
  2977. }
  2978. url +=
  2979. "&p=EUR6666.66&e=FP&c=" +
  2980. cabins[_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin === "Auto" ? mincabin : Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getForcedCabin */ "c"])()] +
  2981. "&source=FareQuoteEmail&isEmailHBOFareQuote=false";
  2982. return url;
  2983. };
  2984. // get edition
  2985. var url = createUrl(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].baEdition, _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].baLanguage);
  2986. if (!url) {
  2987. return;
  2988. }
  2989. var extra =
  2990. ' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
  2991. extra += baEditions
  2992. .map(function(obj, i) {
  2993. return (
  2994. '<a href="' +
  2995. createUrl(obj.value, _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].baLanguage) +
  2996. '" target="_blank">' +
  2997. obj.name +
  2998. "</a>"
  2999. );
  3000. })
  3001. .join("<br/>");
  3002. extra += "</span></span>";
  3003.  
  3004. return {
  3005. url,
  3006. title: "British Airways",
  3007. extra
  3008. };
  3009. }
  3010.  
  3011. Object(_print_links__WEBPACK_IMPORTED_MODULE_3__[/* registerLink */ "c"])("airlines", printBA);
  3012. Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* registerSetting */ "c"])("British Airways", "baEdition", baEditions, "US");
  3013.  
  3014.  
  3015. /***/ }),
  3016. /* 18 */
  3017. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3018.  
  3019. "use strict";
  3020. __webpack_require__.r(__webpack_exports__);
  3021. /* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
  3022. /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
  3023. /* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
  3024. /* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
  3025. /* harmony import */ var _print_amadeus__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7);
  3026.  
  3027.  
  3028.  
  3029.  
  3030.  
  3031.  
  3032. const czEditions = [
  3033. { value: "AR-GB", name: "Argentina / English" },
  3034. { value: "AU-GB", name: "Australia / English" },
  3035. { value: "AZ-GB", name: "Azerbaijan / English" },
  3036. { value: "BD-GB", name: "Bangladesh / English" },
  3037. { value: "BE-GB", name: "Belgium / English" },
  3038. { value: "BR-GB", name: "Brazil / English" },
  3039. { value: "KH-GB", name: "Cambodia / English" },
  3040. { value: "CA-GB", name: "Canada / English" },
  3041. { value: "CA-FR", name: "Canada / French" },
  3042. { value: "CN-GB", name: "China / English" },
  3043. { value: "DK-GB", name: "Denmark / English" },
  3044. { value: "FI-GB", name: "Finland / English" },
  3045. { value: "FR-GB", name: "France / English" },
  3046. { value: "FR-FR", name: "France / French" },
  3047. { value: "GE-GB", name: "Georgia / English" },
  3048. { value: "DE-GB", name: "Germany / English" },
  3049. { value: "DE-DE", name: "Germany / German" },
  3050. { value: "GR-GB", name: "Greece / English" },
  3051. { value: "HK-GB", name: "Hong Kong / English" },
  3052. { value: "IN-GB", name: "India / English" },
  3053. { value: "ID-GB", name: "Indonesia / English" },
  3054. { value: "IR-GB", name: "Iran / English" },
  3055. { value: "IE-GB", name: "Ireland / English" },
  3056. { value: "IT-GB", name: "Italy / English" },
  3057. { value: "JP-GB", name: "Japan / English" },
  3058. { value: "JO-GB", name: "Jordan / English" },
  3059. { value: "KZ-GB", name: "Kazakhstan / English" },
  3060. { value: "KE-GB", name: "Kenya / English" },
  3061. { value: "KG-GB", name: "Kyrgyzstan / English" },
  3062. { value: "MY-GB", name: "Malaysia / English" },
  3063. { value: "MV-GB", name: "Maldives / English" },
  3064. { value: "MO-GB", name: "Macau / English" },
  3065. { value: "MM-GB", name: "Myanmar / English" },
  3066. { value: "NP-GB", name: "Nepal / English" },
  3067. { value: "NL-GB", name: "Netherlands / English" },
  3068. { value: "NZ-GB", name: "New Zealand / English" },
  3069. { value: "NO-GB", name: "Norway / English" },
  3070. { value: "PK-GB", name: "Pakistan / English" },
  3071. { value: "PA-GB", name: "Panama / English" },
  3072. { value: "PE-GB", name: "Peru / English" },
  3073. { value: "PH-GB", name: "Philippines / English" },
  3074. { value: "PT-GB", name: "Portugal / English" },
  3075. { value: "RU-GB", name: "Russia / English" },
  3076. { value: "SA-GB", name: "Saudi Arabia / English" },
  3077. { value: "SG-GB", name: "Singapore / English" },
  3078. { value: "ZA-GB", name: "South Africa / English" },
  3079. { value: "KR-GB", name: "South Korea / English" },
  3080. { value: "ES-GB", name: "Spain / English" },
  3081. { value: "SE-GB", name: "Sweden / English" },
  3082. { value: "CH-GB", name: "Switzerland / English" },
  3083. { value: "TW-GB", name: "Taiwan / English" },
  3084. { value: "TJ-GB", name: "Tajikistan / English" },
  3085. { value: "TZ-GB", name: "Tanzania / English" },
  3086. { value: "TH-GB", name: "Thailand / English" },
  3087. { value: "TR-GB", name: "Turkey / English" },
  3088. { value: "TM-GB", name: "Turkmenistan / English" },
  3089. { value: "UA-GB", name: "Ukraine / English" },
  3090. { value: "GB-GB", name: "United Kingdom / English" },
  3091. { value: "AE-GB", name: "United Arab Emirates / English" },
  3092. { value: "UG-GB", name: "Uganda / English" },
  3093. { value: "US-GB", name: "United States / English" },
  3094. { value: "UZ-GB", name: "Uzbekistan / English" },
  3095. { value: "VE-GB", name: "Venezuela / English" },
  3096. { value: "VN-GB", name: "Vietnam / English" }
  3097. ];
  3098.  
  3099. function printCZ() {
  3100. if (
  3101. !_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].showAllAirlines &&
  3102. !(_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length >= 3 && Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* inArray */ "f"])("CZ", _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].carriers))
  3103. ) {
  3104. return;
  3105. }
  3106.  
  3107. var createUrl = function(edition) {
  3108. var paxConfig = { allowinf: 1, youthage: 0 };
  3109. var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* validatePaxcount */ "d"])({
  3110. maxPaxcount: 9,
  3111. countInf: false,
  3112. childAsAdult: 12,
  3113. sepInfSeat: false,
  3114. childMinAge: 2
  3115. });
  3116. if (!pax) {
  3117. Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printCZ");
  3118. return;
  3119. }
  3120. var amadeusConfig = {
  3121. sepcabin: 0,
  3122. detailed: 0,
  3123. allowpremium: 0,
  3124. inctimes: 0
  3125. };
  3126. var url =
  3127. "http://global.csair.com/CZPortal/dyn/portal/doEnc?SITE=J00YJ00Y&BOOKING_FLOW=REVENUE&IS_FLEXIBLE=FALSE&LANGUAGE=" +
  3128. edition[1] +
  3129. "&PRICING_TYPE=O&COUNTRY_SITE=" +
  3130. edition[0] +
  3131. "&DISPLAY_TYPE=1";
  3132. var tmpPax = Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_4__[/* getAmadeusPax */ "a"])(pax, paxConfig);
  3133. url += tmpPax.url;
  3134. url += "&NB_ADT=" + tmpPax.adults;
  3135. url += "&NB_INF=" + tmpPax.infants;
  3136. url += "&NB_CHD=" + tmpPax.children;
  3137. url += "&TRIP_TYPE=M";
  3138. url += Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_4__[/* getAmadeusUrl */ "c"])(amadeusConfig);
  3139. return url;
  3140. };
  3141. // get edition
  3142. var edition = _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].czEdition.split("-");
  3143. if (edition.length != 2) {
  3144. Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "h"])("Error:Invalid CZ-Edition");
  3145. return;
  3146. }
  3147. var url = createUrl(edition);
  3148. if (!url) {
  3149. return;
  3150. }
  3151. var extra =
  3152. ' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
  3153. extra += czEditions
  3154. .map(function(obj, i) {
  3155. return (
  3156. '<a href="' +
  3157. createUrl(obj.value.split("-")) +
  3158. '" target="_blank">' +
  3159. obj.name +
  3160. "</a>"
  3161. );
  3162. })
  3163. .join("<br/>");
  3164. extra += "</span></span>";
  3165.  
  3166. return {
  3167. url,
  3168. title: "China Southern",
  3169. extra
  3170. };
  3171. }
  3172.  
  3173. Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* registerLink */ "c"])("airlines", printCZ);
  3174. Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* registerSetting */ "c"])("China Southern", "czEdition", czEditions, "US-GB");
  3175.  
  3176.  
  3177. /***/ }),
  3178. /* 19 */
  3179. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3180.  
  3181. "use strict";
  3182. __webpack_require__.r(__webpack_exports__);
  3183. /* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
  3184. /* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
  3185. /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2);
  3186. /* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3);
  3187. /* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(0);
  3188.  
  3189.  
  3190.  
  3191.  
  3192.  
  3193.  
  3194. const dlEditions = [
  3195. { value: "de_de", name: "Germany" },
  3196. { value: "www_us", name: "US" }
  3197. ];
  3198.  
  3199. function printDL() {
  3200. /* Steppo: What about farebasis?
  3201. * What about segmentskipping? */
  3202. var createUrl = function(edition) {
  3203. // 0 = Economy; 1=Premium Economy; 2=Business; 3=First
  3204. // Defaults for cabin identifiers for DL pricing engine; exceptions handled later
  3205. var cabins = ["MAIN", "DPPS", "BU", "FIRST"];
  3206. var mincabin = 3;
  3207. var farebases = new Array();
  3208. var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_3__[/* validatePaxcount */ "d"])({
  3209. maxPaxcount: 9,
  3210. countInf: true,
  3211. childAsAdult: 12,
  3212. sepInfSeat: false,
  3213. childMinAge: 2
  3214. });
  3215. if (!pax) {
  3216. Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printDL");
  3217. return;
  3218. }
  3219.  
  3220. var deltaURL =
  3221. "http://" +
  3222. edition[0] +
  3223. ".delta.com/air-shopping/priceTripAction.action?ftw_reroute=true&tripType=multiCity";
  3224. deltaURL += "&currencyCd=" + (_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].cur == "EUR" ? "EUR" : "USD");
  3225. deltaURL += "&exitCountry=" + edition[1];
  3226. var segcounter = 0;
  3227. for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin.length; i++) {
  3228. // walks each leg
  3229. for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length; j++) {
  3230. //walks each segment of leg
  3231. deltaURL +=
  3232. "&itinSegment[" +
  3233. segcounter.toString() +
  3234. "]=" +
  3235. i.toString() +
  3236. ":" +
  3237. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].bookingclass;
  3238. deltaURL +=
  3239. ":" +
  3240. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].orig +
  3241. ":" +
  3242. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dest +
  3243. ":" +
  3244. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].carrier +
  3245. ":" +
  3246. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].fnr;
  3247. deltaURL +=
  3248. ":" +
  3249. Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* monthnumberToName */ "g"])(_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dep.month) +
  3250. ":" +
  3251. (_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dep.day < 10 ? "0" : "") +
  3252. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dep.day +
  3253. ":" +
  3254. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dep.year +
  3255. ":0";
  3256. farebases.push(_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].farebase);
  3257. if (_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin < mincabin) {
  3258. mincabin = _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin;
  3259. }
  3260. // Exceptions to cabin identifiers for pricing
  3261. switch (_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].bookingclass) {
  3262. // Basic Economy fares
  3263. case "E":
  3264. cabins[0] = "BASIC-ECONOMY";
  3265. break;
  3266. // Comfort+ fares
  3267. case "W":
  3268. cabins[1] = "DCP";
  3269. break;
  3270. default:
  3271. }
  3272. segcounter++;
  3273. }
  3274. }
  3275. deltaURL +=
  3276. "&cabin=" +
  3277. cabins[_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin === "Auto" ? mincabin : Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getForcedCabin */ "c"])()];
  3278. deltaURL += "&fareBasis=" + farebases.join(":");
  3279. //deltaURL += "&price=0";
  3280. deltaURL +=
  3281. "&numOfSegments=" +
  3282. segcounter.toString() +
  3283. "&paxCount=" +
  3284. (pax.adults + pax.children.length + pax.infLap);
  3285. deltaURL += "&vendorRedirectFlag=true&vendorID=Google";
  3286. return deltaURL;
  3287. };
  3288. // get edition
  3289. var edition = _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].dlEdition.split("_");
  3290. if (edition.length != 2) {
  3291. Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "h"])("Error:Invalid Delta-Edition");
  3292. return;
  3293. }
  3294. var url = createUrl(edition);
  3295. if (!url) {
  3296. return;
  3297. }
  3298. var extra =
  3299. ' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
  3300. extra += dlEditions
  3301. .map(function(obj, i) {
  3302. return (
  3303. '<a href="' +
  3304. createUrl(obj.value.split("_")) +
  3305. '" target="_blank">' +
  3306. obj.name +
  3307. "</a>"
  3308. );
  3309. })
  3310. .join("<br/>");
  3311. extra += "</span></span>";
  3312.  
  3313. return {
  3314. url,
  3315. title: "Delta",
  3316. extra
  3317. };
  3318. }
  3319.  
  3320. Object(_print_links__WEBPACK_IMPORTED_MODULE_3__[/* registerLink */ "c"])("airlines", printDL);
  3321. Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* registerSetting */ "c"])("Delta", "dlEdition", dlEditions, "www_us");
  3322.  
  3323.  
  3324. /***/ }),
  3325. /* 20 */
  3326. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3327.  
  3328. "use strict";
  3329. __webpack_require__.r(__webpack_exports__);
  3330. /* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
  3331. /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
  3332. /* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
  3333. /* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
  3334.  
  3335.  
  3336.  
  3337.  
  3338.  
  3339. const ibEditions = [
  3340. { value: "es-AO", name: "Angola - Español" },
  3341. { value: "pt-AO", name: "Angola - Português" },
  3342. { value: "es-DZ", name: "Argelia - Español" },
  3343. { value: "fr-DZ", name: "Algérie - Français" },
  3344. { value: "en-AR", name: "Argentina - English" },
  3345. { value: "es-AR", name: "Argentina - Español" },
  3346. { value: "en-BE", name: "Belgium - English" },
  3347. { value: "es-BE", name: "Bélgica - Español" },
  3348. { value: "fr-BE", name: "Belgique - Français" },
  3349. { value: "es-BR", name: "Brasil - Español" },
  3350. { value: "pt-BR", name: "Brasil - Português" },
  3351. { value: "en-CL", name: "Chile - English" },
  3352. { value: "es-CL", name: "Chile - Español" },
  3353. { value: "en-CO", name: "Colombia - English" },
  3354. { value: "es-CO", name: "Colombia - Español" },
  3355. { value: "en-CR", name: "Costa Rica - English" },
  3356. { value: "es-CR", name: "Costa Rica - Español" },
  3357. { value: "en-HR", name: "Croatia - English" },
  3358. { value: "es-HR", name: "Croacia - Español" },
  3359. { value: "it-HR", name: "Croazia - Italiano" },
  3360. { value: "en-CU", name: "Cuba - English" },
  3361. { value: "es-CU", name: "Cuba - Español" },
  3362. { value: "en-CZ", name: "Czech Republic - English" },
  3363. { value: "es-CZ", name: "República Checa - Español" },
  3364. { value: "en-DK", name: "Denmark - English" },
  3365. { value: "es-DK", name: "Dinamarca - Español" },
  3366. { value: "de-DE", name: "Deutschland - Deutsch" },
  3367. { value: "es-DE", name: "Alemania - Español" },
  3368. { value: "en-DO", name: "Dominican Republic - English" },
  3369. { value: "es-DO", name: "República Dominicana - Español" },
  3370. { value: "en-EC", name: "Ecuador - English" },
  3371. { value: "es-EC", name: "Ecuador - Español" },
  3372. { value: "en-SV", name: "El Salvador - English" },
  3373. { value: "es-SV", name: "El Salvador - Español" },
  3374. { value: "en-GQ", name: "Equatorial Guinea - English" },
  3375. { value: "es-GQ", name: "Guinea Ecuatorial - Español" },
  3376. { value: "ca-ES", name: "Espanya - Català" },
  3377. { value: "en-ES", name: "Spain - English" },
  3378. { value: "es-ES", name: "España - Español" },
  3379. { value: "es-FR", name: "Francia - Español" },
  3380. { value: "fr-FR", name: "France - Français" },
  3381. { value: "en-GH", name: "Ghana - English" },
  3382. { value: "es-GH", name: "Ghana - Español" },
  3383. { value: "en-GR", name: "Greece - English" },
  3384. { value: "es-GR", name: "Grecia - Español" },
  3385. { value: "en-GT", name: "Guatemala - English" },
  3386. { value: "es-GT", name: "Guatemala - Español" },
  3387. { value: "en-HN", name: "Honduras - English" },
  3388. { value: "es-HN", name: "Honduras - Español" },
  3389. { value: "en-IE", name: "Ireland - English" },
  3390. { value: "es-IE", name: "Irlanda - Español" },
  3391. { value: "en-IL", name: "Israel - English" },
  3392. { value: "es-IL", name: "Israel - Español" },
  3393. { value: "en-IT", name: "Italy - English" },
  3394. { value: "es-IT", name: "Italia - Español" },
  3395. { value: "it-IT", name: "Italia - Italiano" },
  3396. { value: "en-JP", name: "Japan - English" },
  3397. { value: "es-JP", name: "Japón - Español" },
  3398. { value: "ja-JP", name: "日本 - 日本語" },
  3399. { value: "en-MT", name: "Malta - English" },
  3400. { value: "es-MT", name: "Malta - Español" },
  3401. { value: "it-MT", name: "Malta - Italiano" },
  3402. { value: "es-MA", name: "Marruecos - Español" },
  3403. { value: "fr-MA", name: "Maroc - Français" },
  3404. { value: "es-MR", name: "Mauritania - Español" },
  3405. { value: "fr-MR", name: "Mauritanie - Français" },
  3406. { value: "en-MX", name: "Mexico - English" },
  3407. { value: "es-MX", name: "México - Español" },
  3408. { value: "en-NL", name: "Netherlands - English" },
  3409. { value: "es-NL", name: "Holanda - Español" },
  3410. { value: "nl-NL", name: "Nederland - Nederlands" },
  3411. { value: "en-NI", name: "Nicaragua - English" },
  3412. { value: "es-NI", name: "Nicaragua - Español" },
  3413. { value: "en-NG", name: "Nigeria - English" },
  3414. { value: "es-NG", name: "Nigeria - Español" },
  3415. { value: "en-PA", name: "Panama - English" },
  3416. { value: "es-PA", name: "Panamá - Español" },
  3417. { value: "en-PE", name: "Peru - English" },
  3418. { value: "es-PE", name: "Perú - Español" },
  3419. { value: "es-PT", name: "Portugal - Español" },
  3420. { value: "pt-PT", name: "Portugal - Português" },
  3421. { value: "en-PR", name: "Puerto Rico - English" },
  3422. { value: "es-PR", name: "Puerto Rico - Español" },
  3423. { value: "en-RU", name: "Russian Federation - English" },
  3424. { value: "es-RU", name: "Rusia - Español" },
  3425. { value: "ru-RU", name: "Rossiya - Русский" },
  3426. { value: "de-CH", name: "Schweiz - Deutsch" },
  3427. { value: "es-CH", name: "Suiza - Español" },
  3428. { value: "fr-CH", name: "Suisse - Français" },
  3429. { value: "es-SN", name: "Senegal - Español" },
  3430. { value: "fr-SN", name: "Sénégal - Français" },
  3431. { value: "en-ZA", name: "South Africa - English" },
  3432. { value: "es-ZA", name: "Sudáfrica - Español" },
  3433. { value: "en-SE", name: "Sweden - English" },
  3434. { value: "es-SE", name: "Suecia - Español" },
  3435. { value: "en-TR", name: "Turkey - English" },
  3436. { value: "es-TR", name: "Turquía - Español" },
  3437. { value: "en-US", name: "USA - English" },
  3438. { value: "es-US", name: "USA - Español" },
  3439. { value: "en-GB", name: "United Kingdom - English" },
  3440. { value: "es-GB", name: "Reino Unido - Español" },
  3441. { value: "en-UY", name: "Uruguay - English" },
  3442. { value: "es-UY", name: "Uruguay - Español" },
  3443. { value: "en-VE", name: "Venezuela - English" },
  3444. { value: "es-VE", name: "Venezuela - Español" }
  3445. ];
  3446.  
  3447. function printIB() {
  3448. if (
  3449. !_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].showAllAirlines &&
  3450. !(
  3451. Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* inArray */ "f"])("IB", _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].carriers) || Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* inArray */ "f"])("BA", _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].carriers)
  3452. )
  3453. ) {
  3454. return;
  3455. }
  3456.  
  3457. var createUrl = function(edition, currency) {
  3458. // 0 = Economy; 1=Premium Economy; 2=Business; 3=First
  3459. var cabins = ["Economy", "Economy", "Business", "First"];
  3460. var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* validatePaxcount */ "d"])({
  3461. maxPaxcount: 9,
  3462. countInf: false,
  3463. childAsAdult: 12,
  3464. sepInfSeat: false,
  3465. childMinAge: 2
  3466. });
  3467. if (!pax) {
  3468. Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printIB");
  3469. return;
  3470. }
  3471. var url =
  3472. "http://www.iberia.com/web/partnerLink.do?Adult=" +
  3473. pax.adults +
  3474. "&Child=" +
  3475. pax.children.length +
  3476. "&Infant=0&InfantLap=" +
  3477. pax.infLap +
  3478. "&PointOfSaleCountry=" +
  3479. edition[1] +
  3480. "&UserCurrency=" +
  3481. currency +
  3482. "&UserLanguage=" +
  3483. edition[0] +
  3484. "&TripType=";
  3485. if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length == 1) {
  3486. url += "OneWay";
  3487. } else if (
  3488. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length == 2 &&
  3489. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].orig == _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[1].dest &&
  3490. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].dest == _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[1].orig
  3491. ) {
  3492. url += "RoundTrip";
  3493. } else {
  3494. url += "MultiCity";
  3495. }
  3496.  
  3497. var seg = 0;
  3498. var slice = 1;
  3499. var slicestr = "";
  3500. //Build multi-city search based on legs
  3501. for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
  3502. // walks each leg
  3503. for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length; j++) {
  3504. seg++;
  3505. //walks each segment of leg
  3506. var k = 0;
  3507. // lets have a look if we need to skip segments - Flightnumber has to be the same and it must be just a layover
  3508. while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length - 1) {
  3509. if (
  3510. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !=
  3511. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
  3512. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440
  3513. )
  3514. break;
  3515. k++;
  3516. }
  3517. url += "&Origin" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].orig;
  3518. url += "&Destination" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].dest;
  3519. url += "&Carrier" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].carrier;
  3520. url +=
  3521. "&DepartureDate" +
  3522. seg +
  3523. "=" +
  3524. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.year +
  3525. "-" +
  3526. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
  3527. "-" +
  3528. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2);
  3529. url += "&FlightNumber" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].fnr;
  3530. url +=
  3531. "&BookingCode" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].bookingclass;
  3532. url += "&Cabin" + seg + "=" + cabins[_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].cabin];
  3533. slicestr += (slicestr === "" ? "" : "%2C") + seg;
  3534. j += k;
  3535. }
  3536. url += "&Slice" + slice + "=" + slicestr;
  3537. slice++;
  3538. slicestr = "";
  3539. }
  3540. return url;
  3541. };
  3542. // get edition
  3543. var edition = _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].ibEdition.split("-");
  3544. var url = createUrl(edition, "USD");
  3545. if (!url) {
  3546. return;
  3547. }
  3548. var extra =
  3549. ' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
  3550. extra += ibEditions
  3551. .map(function(obj, i) {
  3552. return (
  3553. '<a href="' +
  3554. createUrl(obj.value.split("-"), "USD") +
  3555. '" target="_blank">' +
  3556. obj.name +
  3557. "</a>"
  3558. );
  3559. })
  3560. .join("<br/>");
  3561. extra += "</span></span>";
  3562.  
  3563. return {
  3564. url,
  3565. title: "Iberia",
  3566. extra
  3567. };
  3568. }
  3569.  
  3570. Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* registerLink */ "c"])("airlines", printIB);
  3571. Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* registerSetting */ "c"])("Iberia", "ibEdition", ibEditions, "en-US");
  3572.  
  3573.  
  3574. /***/ }),
  3575. /* 21 */
  3576. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3577.  
  3578. "use strict";
  3579. __webpack_require__.r(__webpack_exports__);
  3580. /* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
  3581. /* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
  3582. /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2);
  3583. /* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3);
  3584. /* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(0);
  3585.  
  3586.  
  3587.  
  3588.  
  3589.  
  3590.  
  3591. const klEditions = [
  3592. { value: "de_de", name: "Germany / Deutsch" },
  3593. { value: "de_en", name: "Germany / English" },
  3594. { value: "fr_en", name: "France / English" },
  3595. { value: "fr_fr", name: "France / French" },
  3596. { value: "nl_en", name: "Netherlands / English" },
  3597. { value: "gb_en", name: "United Kingdom / English" },
  3598. { value: "us_en", name: "US / English" }
  3599. ];
  3600.  
  3601. const cabins = ["M", "W", "C", "F"];
  3602.  
  3603. function printKL() {
  3604. if (
  3605. !_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].showAllAirlines &&
  3606. !Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* inArray */ "f"])("KL", _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].carriers)
  3607. ) {
  3608. return;
  3609. }
  3610.  
  3611. var createUrl = function(edition) {
  3612. var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_3__[/* validatePaxcount */ "d"])({
  3613. maxPaxcount: 9,
  3614. countInf: false,
  3615. childAsAdult: 12,
  3616. sepInfSeat: false,
  3617. childMinAge: 2
  3618. });
  3619. if (!pax) {
  3620. Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printKL");
  3621. return;
  3622. }
  3623.  
  3624. const segs = Object(_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* getCurrentSegs */ "b"])();
  3625.  
  3626. let url =
  3627. "https://www.klm.com/ams/search-web/api/metasearch?application=EBT7";
  3628. url +=
  3629. "&trip=" +
  3630. segs
  3631. .map(
  3632. seg =>
  3633. `${seg.orig}:${seg.dep.year}${Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* to2digits */ "i"])(seg.dep.month)}${Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* to2digits */ "i"])(
  3634. seg.dep.day
  3635. )}@${Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* to4digitTime */ "j"])(seg.dep.time)}:${seg.carrier}${Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* to4digits */ "k"])(
  3636. seg.fnr
  3637. )}:${seg.bookingclass}>${seg.dest}`
  3638. )
  3639. .join("-");
  3640. url += "&ref=MS,fb=" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].farebases.join(".");
  3641. url += "&numberOfAdults=" + pax.adults;
  3642. url += "&numberOfChildren=" + pax.children.length;
  3643. url += "&numberOfInfants=" + pax.infLap;
  3644. url +=
  3645. "&cabinClass=" +
  3646. cabins[Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getCabin */ "b"])(Math.min(...segs.map(seg => seg.cabin)))];
  3647. url += "&country=" + edition[0];
  3648. url += "&language=" + edition[1];
  3649.  
  3650. return url;
  3651. };
  3652.  
  3653. // get edition
  3654. var edition = _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].klEdition.split("_");
  3655. if (edition.length != 2) {
  3656. Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "h"])("Error:Invalid KLM-Edition");
  3657. return;
  3658. }
  3659. var url = createUrl(edition);
  3660. if (!url) {
  3661. return;
  3662. }
  3663. var extra =
  3664. ' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
  3665. extra += klEditions
  3666. .map(function(obj, i) {
  3667. return (
  3668. '<a href="' +
  3669. createUrl(obj.value.split("_")) +
  3670. '" target="_blank">' +
  3671. obj.name +
  3672. "</a>"
  3673. );
  3674. })
  3675. .join("<br/>");
  3676. extra += "</span></span>";
  3677.  
  3678. return {
  3679. url,
  3680. title: "KLM",
  3681. extra
  3682. };
  3683. }
  3684.  
  3685. Object(_print_links__WEBPACK_IMPORTED_MODULE_3__[/* registerLink */ "c"])("airlines", printKL);
  3686. Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* registerSetting */ "c"])("KLM", "klEdition", klEditions, "us_en");
  3687.  
  3688.  
  3689. /***/ }),
  3690. /* 22 */
  3691. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3692.  
  3693. "use strict";
  3694. __webpack_require__.r(__webpack_exports__);
  3695. /* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
  3696. /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
  3697. /* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
  3698. /* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
  3699.  
  3700.  
  3701.  
  3702.  
  3703.  
  3704. const laEditions = [
  3705. { value: "es/ar", name: "Argentina / Spanish" },
  3706. { value: "pt/br", name: "Brasil / Portuguese" },
  3707. { value: "es/cl", name: "Chile / Spanish" },
  3708. { value: "es/co", name: "Colombia / Spanish" },
  3709. { value: "es/ec", name: "Ecuador / Spanish" },
  3710. { value: "es/pe", name: "Peru / Spanish" },
  3711. { value: "es/uy", name: "Uruguay / Spanish" },
  3712. { value: "en/us", name: "US / English" },
  3713. { value: "es/mx", name: "Mexico / Spanish" },
  3714. { value: "en/ca", name: "Canada / English" },
  3715. { value: "de/de", name: "Germany / German" },
  3716. { value: "es/es", name: "Spain / Spanish" },
  3717. { value: "fr/fr", name: "France / French" },
  3718. { value: "en/it", name: "Italy / English" },
  3719. { value: "en/uk", name: "UK / English" },
  3720. { value: "en/ue", name: "Rest of Europe / English" },
  3721. { value: "en/au", name: "Australia / English" },
  3722. { value: "en/nz", name: "New Zealand / English" },
  3723. { value: "es/un", name: "Other Countries / Spanish" },
  3724. { value: "en/un", name: "Other Countries / English" }
  3725. ];
  3726.  
  3727. function printLA() {
  3728. if (
  3729. !_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].showAllAirlines &&
  3730. !Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* inArray */ "f"])("LA", _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].carriers)
  3731. ) {
  3732. return;
  3733. }
  3734.  
  3735. // NOTE: currency will be determined by the locale; the deeplink does not support manually specifying the currency
  3736. var createUrl = function(edition) {
  3737. var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* validatePaxcount */ "d"])({
  3738. maxPaxcount: 9,
  3739. countInf: false,
  3740. childAsAdult: 12,
  3741. sepInfSeat: false,
  3742. childMinAge: 2
  3743. });
  3744. if (!pax) {
  3745. Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printLA");
  3746. return;
  3747. }
  3748. var laUrl = '"trip":{"flights":[';
  3749. for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
  3750. // amount and currency required for each segment:
  3751. laUrl +=
  3752. '{"amount":"' +
  3753. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].price +
  3754. '","currency":"' +
  3755. "USD" +
  3756. '","segments":[';
  3757. var mincabin = 3;
  3758. // walks each leg
  3759. for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length; j++) {
  3760. //walks each segment of leg
  3761. var k = 0;
  3762. // lets have a look if we need to skip segments - Flightnumber has to be the same and it must be just a layover
  3763. while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length - 1) {
  3764. if (
  3765. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !=
  3766. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
  3767. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440
  3768. )
  3769. break;
  3770. k++;
  3771. }
  3772. laUrl +=
  3773. '{"departure_airport":"' +
  3774. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].orig +
  3775. '","flight_number":"' +
  3776. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].fnr +
  3777. '","departure_date":"' +
  3778. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.year.toString() +
  3779. "-" +
  3780. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.month.toString()).slice(-2) +
  3781. "-" +
  3782. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.day.toString()).slice(-2) +
  3783. '","arrival_airport":"' +
  3784. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].dest +
  3785. '","farebasis":"' +
  3786. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].farebase +
  3787. '","marketing_airline":"' +
  3788. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].carrier +
  3789. '","class":"' +
  3790. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].bookingclass +
  3791. '","arrival_date":"' +
  3792. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].arr.year.toString() +
  3793. "-" +
  3794. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].arr.month.toString()).slice(-2) +
  3795. "-" +
  3796. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].arr.day.toString()).slice(-2) +
  3797. '"},';
  3798. // check the minimum cabin:
  3799. if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].cabin < mincabin) {
  3800. mincabin = _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].cabin;
  3801. }
  3802. j += k;
  3803. }
  3804. laUrl = laUrl.substring(0, laUrl.length - 1) + "]},";
  3805. }
  3806. // Build passengers info:
  3807. var laPassengers =
  3808. '"passengers":{"numberAdults":"' +
  3809. pax.adults +
  3810. '","numberInfants":"' +
  3811. pax.infLap +
  3812. '","numberChildren":"' +
  3813. pax.children.length +
  3814. '"},';
  3815. // Compile the final URL (and encode it):
  3816. laUrl =
  3817. "https://ssl.lan.com/cgi-bin/compra/paso4.cgi?forced_home=" +
  3818. edition +
  3819. "&sessionParameters=%7B" +
  3820. encodeURIComponent(laPassengers) +
  3821. encodeURIComponent(laUrl.substring(0, laUrl.length - 1)) +
  3822. "]}}&utm_medium=metasearch&utm_source=gfs&utm_campaign=US_deeplink_s4&gclsrc=gf";
  3823. return laUrl;
  3824. };
  3825. var url = createUrl(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].laEdition);
  3826. if (!url) {
  3827. return;
  3828. }
  3829. var extra =
  3830. ' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
  3831. extra += laEditions
  3832. .map(function(obj, i) {
  3833. return (
  3834. '<a href="' +
  3835. createUrl(obj.value) +
  3836. '" target="_blank">' +
  3837. obj.name +
  3838. "</a>"
  3839. );
  3840. })
  3841. .join("<br/>");
  3842. extra += "</span></span>";
  3843. return {
  3844. url,
  3845. title: "LATAM",
  3846. extra
  3847. };
  3848. }
  3849.  
  3850. Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* registerLink */ "c"])("airlines", printLA);
  3851. Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* registerSetting */ "c"])("LATAM", "laEdition", laEditions, "en/us");
  3852.  
  3853.  
  3854. /***/ }),
  3855. /* 23 */
  3856. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3857.  
  3858. "use strict";
  3859. __webpack_require__.r(__webpack_exports__);
  3860. /* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
  3861. /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
  3862. /* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
  3863. /* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
  3864. /* harmony import */ var _print_amadeus__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7);
  3865.  
  3866.  
  3867.  
  3868.  
  3869.  
  3870.  
  3871. const lhEditions = [
  3872. { value: "AL-gb", name: "Albania / English" },
  3873. { value: "DZ-fr", name: "Algeria / Français" },
  3874. { value: "AO-gb", name: "Angola / English" },
  3875. { value: "AR-es", name: "Argentina / Español" },
  3876. { value: "AM-gb", name: "Armenia / English" },
  3877. { value: "AU-gb", name: "Australia / English" },
  3878. { value: "AT-de", name: "Austria / Deutsch" },
  3879. { value: "AT-gb", name: "Austria / English" },
  3880. { value: "AZ-gb", name: "Azerbaijan / English" },
  3881. { value: "BH-gb", name: "Bahrain / English" },
  3882. { value: "BY-gb", name: "Belarus / English" },
  3883. { value: "BE-gb", name: "Belgium / English" },
  3884. { value: "BA-gb", name: "Bosnia/Hercegovina / English" },
  3885. { value: "BR-pt", name: "Brazil / Português" },
  3886. { value: "BG-gb", name: "Bulgaria / English" },
  3887. { value: "CA-gb", name: "Canada / English" },
  3888. { value: "CA-fr", name: "Canada / Français" },
  3889. { value: "CL-es", name: "Chile / Español" },
  3890. { value: "CN-gb", name: "China / English" },
  3891. { value: "CO-es", name: "Colombia / Español" },
  3892. { value: "HR-gb", name: "Croatia / English" },
  3893. { value: "CY-gb", name: "Cyprus / English" },
  3894. { value: "CZ-gb", name: "Czech Republic / English" },
  3895. { value: "DK-gb", name: "Denmark / English" },
  3896. { value: "EG-gb", name: "Egypt / English" },
  3897. { value: "GQ-gb", name: "Equatorial Guinea / English" },
  3898. { value: "ER-gb", name: "Eritrea / English" },
  3899. { value: "EE-gb", name: "Estonia / English" },
  3900. { value: "ET-gb", name: "Ethiopia / English" },
  3901. { value: "FI-gb", name: "Finland / English" },
  3902. { value: "FR-gb", name: "France / English" },
  3903. { value: "FR-fr", name: "France / Français" },
  3904. { value: "GA-gb", name: "Gabon / English" },
  3905. { value: "GE-gb", name: "Georgia / English" },
  3906. { value: "DE-de", name: "Germany / Deutsch" },
  3907. { value: "DE-gb", name: "Germany / English" },
  3908. { value: "GH-gb", name: "Ghana / English" },
  3909. { value: "GR-gb", name: "Greece / English" },
  3910. { value: "HK-gb", name: "Hong Kong / English" },
  3911. { value: "HU-gb", name: "Hungary / English" },
  3912. { value: "IS-gb", name: "Iceland / English" },
  3913. { value: "IN-gb", name: "India / English" },
  3914. { value: "ID-gb", name: "Indonesia / English" },
  3915. { value: "IR-gb", name: "Iran / English" },
  3916. { value: "IQ-gb", name: "Iraq / English" },
  3917. { value: "IE-gb", name: "Ireland / English" },
  3918. { value: "IL-gb", name: "Israel / English" },
  3919. { value: "IT-it", name: "Italy / Italiano" },
  3920. { value: "IT-gb", name: "Italy / English" },
  3921. { value: "JP-gb", name: "Japan / English" },
  3922. { value: "JO-gb", name: "Jordan / English" },
  3923. { value: "KZ-gb", name: "Kazakhstan / English" },
  3924. { value: "KE-gb", name: "Kenya / English" },
  3925. { value: "KR-gb", name: "Republic of Korea / English" },
  3926. { value: "KW-gb", name: "Kuwait / English" },
  3927. { value: "LV-gb", name: "Latvia / English" },
  3928. { value: "LB-gb", name: "Lebanon / English" },
  3929. { value: "LY-gb", name: "Libya / English" },
  3930. { value: "LT-gb", name: "Lithuania / English" },
  3931. { value: "LU-gb", name: "Luxembourg / English" },
  3932. { value: "MY-gb", name: "Malaysia / English" },
  3933. { value: "MV-gb", name: "Maldives / English" },
  3934. { value: "MT-gb", name: "Malta / English" },
  3935. { value: "MU-gb", name: "Mauritius / English" },
  3936. { value: "MX-es", name: "Mexico / Español" },
  3937. { value: "MD-gb", name: "Moldova / English" },
  3938. { value: "MA-fr", name: "Morocco / Français" },
  3939. { value: "NL-gb", name: "Netherlands / English" },
  3940. { value: "NZ-gb", name: "New Zealand / English" },
  3941. { value: "NG-gb", name: "Nigeria / English" },
  3942. { value: "NO-gb", name: "Norway / English" },
  3943. { value: "OM-gb", name: "Oman / English" },
  3944. { value: "PK-gb", name: "Pakistan / English" },
  3945. { value: "PA-es", name: "Panama / Español" },
  3946. { value: "PH-gb", name: "Philippines / English" },
  3947. { value: "PL-gb", name: "Poland / English" },
  3948. { value: "PL-pl", name: "Poland / Polski" },
  3949. { value: "PT-gb", name: "Portugal / English" },
  3950. { value: "PT-pt", name: "Portugal / Português" },
  3951. { value: "QA-gb", name: "Qatar / English" },
  3952. { value: "CD-gb", name: "Republic of the Congo / English" },
  3953. { value: "RO-gb", name: "Romania / English" },
  3954. { value: "RU-gb", name: "Russia / English" },
  3955. { value: "RU-ru", name: "Russia / Русский" },
  3956. { value: "SA-gb", name: "Saudi Arabia / English" },
  3957. { value: "RS-gb", name: "Serbia / English" },
  3958. { value: "SG-gb", name: "Singapore / English" },
  3959. { value: "SK-gb", name: "Slovakia / English" },
  3960. { value: "SI-gb", name: "Slovenia / English" },
  3961. { value: "ZA-gb", name: "South Africa / English" },
  3962. { value: "ES-gb", name: "Spain / English" },
  3963. { value: "ES-es", name: "Spain / Español" },
  3964. { value: "SD-gb", name: "Sudan / English" },
  3965. { value: "SE-gb", name: "Sweden / English" },
  3966. { value: "CH-de", name: "Switzerland / Deutsch" },
  3967. { value: "CH-gb", name: "Switzerland / English" },
  3968. { value: "CH-fr", name: "Switzerland / Français" },
  3969. { value: "TW-gb", name: "Taiwan / English " },
  3970. { value: "TH-gb", name: "Thailand / English" },
  3971. { value: "TN-fr", name: "Tunisia / Français" },
  3972. { value: "TR-gb", name: "Turkey / English" },
  3973. { value: "TM-gb", name: "Turkmenistan / English" },
  3974. { value: "UA-gb", name: "Ukraine / English" },
  3975. { value: "AE-gb", name: "United Arab Emirates / English" },
  3976. { value: "UK-gb", name: "United Kingdom / English" },
  3977. { value: "US-gb", name: "United States / English" },
  3978. { value: "VE-es", name: "Venezuela / Español" },
  3979. { value: "VN-gb", name: "Vietnam / English" },
  3980. { value: "XX-gb", name: "Other countries / English" }
  3981. ];
  3982.  
  3983. function printLH() {
  3984. if (
  3985. !_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].showAllAirlines &&
  3986. !(
  3987. Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* inArray */ "f"])("LH", _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].carriers) || Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* inArray */ "f"])("OS", _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].carriers)
  3988. )
  3989. ) {
  3990. return;
  3991. }
  3992.  
  3993. var createUrl = function(edition) {
  3994. var style = 0; // 0 is direct booking - 1 is pre selected
  3995. var paxConfig = { allowinf: 1, youthage: 0 };
  3996. var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* validatePaxcount */ "d"])({
  3997. maxPaxcount: 9,
  3998. countInf: false,
  3999. childAsAdult: 12,
  4000. sepInfSeat: false,
  4001. childMinAge: 2
  4002. });
  4003. if (!pax) {
  4004. Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printLH");
  4005. return false;
  4006. }
  4007. var amadeusConfig = {
  4008. sepcabin: 0,
  4009. detailed: 0,
  4010. allowpremium: 1,
  4011. inctimes: 0
  4012. };
  4013. if (style == 0) {
  4014. var url =
  4015. "https://book.lufthansa.com/lh/dyn/air-lh/revenue/availThenFare?";
  4016. url += "WDS_MSE_PRICE_CURRENCY=EUR&WDS_MSE_TOTAL_PRICE=1.00&";
  4017. } else {
  4018. var url = "https://book.lufthansa.com/lh/dyn/air-lh/revenue/viewFlights?";
  4019. }
  4020. url +=
  4021. "PORTAL=LH&COUNTRY_SITE=" +
  4022. edition[0].toUpperCase() +
  4023. "&POS=" +
  4024. edition[0].toUpperCase() +
  4025. "&LANGUAGE=" +
  4026. edition[1].toUpperCase() +
  4027. "&SECURE=TRUE&SITE=LUFTLUFT&SO_SITE_LH_FRONTEND_URL=www.lufthansa.com&WDS_WR_CHANNEL=LHCOM";
  4028. var tmpPax = Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_4__[/* getAmadeusPax */ "a"])(pax, paxConfig);
  4029. url += tmpPax.url;
  4030. url += "&NB_ADT=" + tmpPax.adults;
  4031. url += "&NB_INF=" + tmpPax.infants;
  4032. url += "&NB_CHD=" + tmpPax.children;
  4033. url += "&TRIP_TYPE=" + Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_4__[/* getAmadeusTriptype */ "b"])();
  4034. url += Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_4__[/* getAmadeusUrl */ "c"])(amadeusConfig);
  4035.  
  4036. return url;
  4037. };
  4038. // get edition
  4039. var edition = _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].lhEdition.split("-");
  4040. if (edition.length != 2) {
  4041. Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "h"])("Error:Invalid Lufthansa-Edition");
  4042. return;
  4043. }
  4044. var url = createUrl(edition);
  4045. if (!url) {
  4046. return;
  4047. }
  4048. var extra =
  4049. ' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
  4050. extra += lhEditions
  4051. .map(function(obj, i) {
  4052. return (
  4053. '<a href="' +
  4054. createUrl(obj.value.split("-")) +
  4055. '" target="_blank">' +
  4056. obj.name +
  4057. "</a>"
  4058. );
  4059. })
  4060. .join("<br/>");
  4061. extra += "</span></span>";
  4062.  
  4063. return {
  4064. url,
  4065. title: "Lufthansa",
  4066. extra
  4067. };
  4068. }
  4069.  
  4070. Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* registerLink */ "c"])("airlines", printLH);
  4071. Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* registerSetting */ "c"])("Lufthansa", "lhEdition", lhEditions, "US-gb");
  4072.  
  4073.  
  4074. /***/ }),
  4075. /* 24 */
  4076. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  4077.  
  4078. "use strict";
  4079. __webpack_require__.r(__webpack_exports__);
  4080. /* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
  4081. /* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
  4082. /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2);
  4083. /* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3);
  4084. /* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(0);
  4085.  
  4086.  
  4087.  
  4088.  
  4089.  
  4090.  
  4091. const lxEditions = [
  4092. { value: "de_de", name: "Germany" },
  4093. { value: "us_en", name: "US" }
  4094. ];
  4095.  
  4096. function printLX() {
  4097. if (
  4098. !_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].showAllAirlines &&
  4099. !(_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin.length <= 2 && Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* inArray */ "f"])("LX", _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].carriers))
  4100. ) {
  4101. return;
  4102. }
  4103.  
  4104. // 0 = Economy; 1=Premium Economy; 2=Business; 3=First
  4105. var cabins = ["", "", "/class-business", "/class-first"];
  4106. var mincabin = 3;
  4107. var createUrl = function(edition) {
  4108. var url =
  4109. "https://www.swiss.com/" +
  4110. edition[0] +
  4111. "/" +
  4112. edition[1] +
  4113. "/Book/Combined";
  4114. var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_3__[/* validatePaxcount */ "d"])({
  4115. maxPaxcount: 9,
  4116. countInf: false,
  4117. childAsAdult: 12,
  4118. sepInfSeat: false,
  4119. childMinAge: 2
  4120. });
  4121. if (!pax) {
  4122. Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printLX");
  4123. return;
  4124. }
  4125. //Build multi-city search based on legs
  4126. for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin.length; i++) {
  4127. // walks each leg
  4128. url +=
  4129. "/" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].orig + "-" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dest + "/";
  4130. for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length; j++) {
  4131. //walks each segment of leg
  4132. var k = 0;
  4133. // lets have a look if we need to skip segments - Flightnumber has to be the same and it must be just a layover
  4134. while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length - 1) {
  4135. if (
  4136. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !=
  4137. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
  4138. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440
  4139. )
  4140. break;
  4141. k++;
  4142. }
  4143. url +=
  4144. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].carrier +
  4145. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].fnr +
  4146. "-";
  4147. if (_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin < mincabin) {
  4148. mincabin = _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin;
  4149. }
  4150. j += k;
  4151. }
  4152. url = url.substring(0, url.length - 1);
  4153. url +=
  4154. "/" +
  4155. (i > 0 ? "to" : "from") +
  4156. "-" +
  4157. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.year +
  4158. "-" +
  4159. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.month).slice(-2) +
  4160. "-" +
  4161. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.day).slice(-2);
  4162. }
  4163. url +=
  4164. "/adults-" +
  4165. pax.adults +
  4166. "/children-" +
  4167. pax.children.length +
  4168. "/infants-" +
  4169. pax.infLap;
  4170. url += cabins[_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin === "Auto" ? mincabin : Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getForcedCabin */ "c"])()];
  4171. return url;
  4172. };
  4173. // get edition
  4174. var edition = _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].lxEdition.split("_");
  4175. if (edition.length != 2) {
  4176. Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "h"])("Error:Invalid Swiss-Edition");
  4177. return;
  4178. }
  4179. var url = createUrl(edition);
  4180. if (!url) {
  4181. return;
  4182. }
  4183. var extra =
  4184. ' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
  4185. extra += lxEditions
  4186. .map(function(obj, i) {
  4187. return (
  4188. '<a href="' +
  4189. createUrl(obj.value.split("_")) +
  4190. '" target="_blank">' +
  4191. obj.name +
  4192. "</a>"
  4193. );
  4194. })
  4195. .join("<br/>");
  4196. extra += "</span></span>";
  4197.  
  4198. return {
  4199. url,
  4200. title: "Swiss",
  4201. extra
  4202. };
  4203. }
  4204.  
  4205. Object(_print_links__WEBPACK_IMPORTED_MODULE_3__[/* registerLink */ "c"])("airlines", printLX);
  4206. Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* registerSetting */ "c"])("Swiss", "lxEdition", lxEditions, "us_en");
  4207.  
  4208.  
  4209. /***/ }),
  4210. /* 25 */
  4211. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  4212.  
  4213. "use strict";
  4214. __webpack_require__.r(__webpack_exports__);
  4215. /* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
  4216. /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
  4217. /* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
  4218. /* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
  4219. /* harmony import */ var _print_amadeus__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7);
  4220.  
  4221.  
  4222.  
  4223.  
  4224.  
  4225.  
  4226. function printOA() {
  4227. if (
  4228. !_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].showAllAirlines &&
  4229. !(
  4230. Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* inArray */ "f"])("OA", _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].carriers) || Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* inArray */ "f"])("A3", _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].carriers)
  4231. )
  4232. ) {
  4233. return;
  4234. }
  4235.  
  4236. var url =
  4237. "https://e-ticket.olympicair.com/A3Responsive/dyn/air/booking/?BOOKING_FLOW=REVENUE&FLEXIBILITY=3&DISPLAY_TYPE=2&FORCE_OVERRIDE=TRUE&PRICING_TYPE=O";
  4238. var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* validatePaxcount */ "d"])({
  4239. maxPaxcount: 9,
  4240. countInf: false,
  4241. childAsAdult: 12,
  4242. sepInfSeat: false,
  4243. childMinAge: 2
  4244. });
  4245. if (!pax) {
  4246. Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printOA");
  4247. return;
  4248. }
  4249. var paxConfig = { allowinf: 1, youthage: 0 };
  4250. var amadeusConfig = {
  4251. sepcabin: 0,
  4252. detailed: 0,
  4253. allowpremium: 1,
  4254. inctimes: 1
  4255. };
  4256. var tmpPax = Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_4__[/* getAmadeusPax */ "a"])(pax, paxConfig);
  4257. url += "&TRIP_TYPE=" + Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_4__[/* getAmadeusTriptype */ "b"])();
  4258. url += tmpPax.url;
  4259. url += Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_4__[/* getAmadeusUrl */ "c"])(amadeusConfig);
  4260. url +=
  4261. "&SITE=E00KE00K&SKIN=skin_oa&SO_GL=%3CSO_GL%3E%09%3CGLOBAL_LIST%3E%09%09%3CNAME%3ESL_TRAVELLER_TYPE_LIST%3C%2FNAME%3E%09%09%3CLIST_ELEMENT%3E%3CCODE%3EADT%3C%2FCODE%3E%3CLIST_VALUE%3EAdult%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EN%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EADT%3C%2FLIST_VALUE%3E%3C%2FLIST_ELEMENT%3E%09%09%3CLIST_ELEMENT%3E%3CCODE%3EB15%3C%2FCODE%3E%3CLIST_VALUE%3EYoung+adult%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EN%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EB15%3C%2FLIST_VALUE%3E%3C%2FLIST_ELEMENT%3E%09%09%3CLIST_ELEMENT%3E%3CCODE%3EC07%3C%2FCODE%3E%3CLIST_VALUE%3EYouth%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EN%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EC07%3C%2FLIST_VALUE%3E%3C%2FLIST_ELEMENT%3E%09%09%3CLIST_ELEMENT%3E%3CCODE%3EC03%3C%2FCODE%3E%3CLIST_VALUE%3EChild%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EN%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EC03%3C%2FLIST_VALUE%3E%3C%2FLIST_ELEMENT%3E%09%09%3CLIST_ELEMENT%3E%3CCODE%3EINF%3C%2FCODE%3E%3CLIST_VALUE%3EInfant%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EN%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EINF%3C%2FLIST_VALUE%3E%3C%2FLIST_ELEMENT%3E++++++++%3CLIST_ELEMENT%3E%3CCODE%3EUNN%3C%2FCODE%3E%3CLIST_VALUE%3EUMNR%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EN%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EUNN%3C%2FLIST_VALUE%3E%3C%2FLIST_ELEMENT%3E%09%3C%2FGLOBAL_LIST%3E%3C%2FSO_GL%3E&SO_SITE_ETKT_Q_OFFICE_ID=ATHA308OA&SO_SITE_OFFICE_ID=ATHA308OA&SO_SITE_POINT_OF_SALE=ATH&SO_SITE_POINT_OF_TICKETING=ATH&SO_SITE_PREBOOK_DURATION=I180&SO_SITE_QUEUE_OFFICE_ID=ATHA308OA&SO_SITE_SP_QUEUE_OFFICE_ID=ATHA308OA";
  4262. url +=
  4263. "&LANGUAGE=" +
  4264. (_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].language == "oa" || _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].language == "de"
  4265. ? _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].language.toUpperCase()
  4266. : "GB");
  4267. url +=
  4268. "&WDS_ADD_BOOK_NOW_BUTTON_EMAF=TRUE&WDS_ADVERTISING_PANEL_CONF_ACTIVATED=true&WDS_AFFILIATE_STATUS=C&WDS_AMOP_DISPLAY_PRIORITY=PAYPAL:SOFORT:KLARNA:EPS:IDEAL:BANCONTACT:ENTERCASH:ALIPAY:CUP&WDS_AMOP_FEE=PAYPAL:0;KLARNA:0;SOFORT:0;ENTERCASH:0;EPS:0;IDEAL:0;BANCONTACT:0;ALIPAY:0;CUP:0;&WDS_AMOP_FEE_APPLY=PER_TRANSACTION&WDS_AMOP_FEE_CALCULATION=PER&WDS_AMOP_LIST_ACTIVATED=PAYPAL;KLARNA;SOFORT;ENTERCASH;EPS;IDEAL;BANCONTACT;ALIPAY;CUP&WDS_AMOP_LIST_DEACTIVATED=&WDS_AMOP_TIME_LIMIT=PAYPAL:48;KLARNA:0;SOFORT:0;ENTERCASH:0;EPS:0;IDEAL:0;BANCONTACT:0;ALIPAY:24;CUP:24;&WDS_ANCILLARY_IN_MILES_ENABLED=TRUE&WDS_ASSISTANCE_REQUEST_ACTIVATED=TRUE&WDS_ATCOM_TIMEOUT=2000&WDS_AVAIL_PRICE_DISPLAY_TYPE=PER_ADT_WITH_TAX_NO_FEE&WDS_BAG_PLACEHOLDER_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_BAG_POLICY_PANEL_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_BOOKING_LISTENER_URL=https://en.aegeanair.com/BookingListener.axd&WDS_BOUND_INDEX_EXPANDED=1&WDS_BUSINESS_MEAL_FARE_FAMILIES=BUSINESS:BUSINESTES:BUSINESSI&WDS_BUSINESS_MEAL_FREQUENT_FLYER_LEVELS=GOLD:SILVER&WDS_BUSINESS_MEAL_SUPPORTED=true&WDS_BUSINESS_ON_BOARD_DISPLAY_IN_LOGIN_PANEL=TRUE&WDS_BUSINESS_ON_BOARD_ENABLED=TRUE&WDS_BUSINESS_ON_BOARD_PAX_TYPE=ADT&WDS_CABIN_CLASS_DISPLAY=TRUE&WDS_CALENDAR_TO_UPSELL_FLEXIBLE_ACTIVATED=3&WDS_CALLCENTER_EMAIL=res1@aegeanair.com&WDS_CAR_ENABLED=FALSE&WDS_CAR_PANEL_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_CC_FEE_CARD_TYPE=VI:0;CA:0;MA:0;AX:0;DC:0;TP:;&WDS_CC_FEE_NO_CARD=0&WDS_CC_FEE_ZERO_DISPLAYED=FALSE&WDS_CC_LIST=VI:CA:MA:AX:DC:TP&WDS_CFF_TOUSE=CFF01FEB14&WDS_CHANNEL=B2C&WDS_CLEAR_CONTENT_URL=https://en.aegeanair.com/PlainContent.axd&WDS_DEVICE_NAME=DESKTOP_UNKNOWN&WDS_DEVICE_OS=Windows_10&WDS_DEVICE_VIEWPORT=L&WDS_DISPLAY_EMAIL_IN_BROWSER_URL=https://en.aegeanair.com/ConfirmationEmail.axd&WDS_DISPLAY_FBA_AND_REFUNDABILITY_PER_BOUND_IN_SB=TRUE&WDS_DISPLAY_GREEK_RURAL_ID=FALSE&WDS_DISPLAY_RECEIPT=SHOW&WDS_DISPLAY_REGULATION_CONDITIONS_COUNTRY=FR&WDS_DISPLAY_REGULATION_CONDITIONS_LANG=FR&WDS_DONATION_PANEL_ACTIVATED=FALSE&WDS_DONATION_PANEL_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_EMAF_BOOK_NOW_URL=https://en.aegeanair.com/PostHandler.axd&WDS_ENABLE_PARKING=FALSE&WDS_ENABLE_TOKEN=true&WDS_ENABLE_TOKEN_FOR_CAR=false&WDS_ENABLE_TOKEN_FOR_HOTEL=false&WDS_EPTS=unknown_call&WDS_EXTERNAL_CSS_URL=https://en.aegeanair.com/css/1A/responsive.css?v=10&WDS_EXTRAS_DEFAULT_PANEL_ORDER=BAGGAGE;MEALS;SPEQ;PETS;FASTTRACK;INSURANCE;PARKING;DONATION&WDS_FARE_COMPARISON_URL=https://en.aegeanair.com/FareFamilyComparison.axd&WDS_FARE_CONDITIONS_URL=https://en.aegeanair.com/ffc.axd&WDS_FASTTRACK_ELIGIBLE_AIRPORTS=LCA;ATH&WDS_FASTTRACK_ENABLED=TRUE&WDS_FASTTRACK_HANDLER_URL=https://en.aegeanair.com/FastTrackHandler.axd&WDS_FREQUENT_FLYER_PROGRAMS_OA_FLIGHTS=A3;AC;UA;MS;TK;NH;LH;SQ&WDS_GDPR_DISPLAY_PROMOS_CONFIRMATION_NO_CONSENT=FALSE&WDS_GDPR_HANDLER_URL=https://en.aegeanair.com/api/v1/members/checkgdpremailstatus&WDS_GO_TO_FINALIZE_URL=https://en.aegeanair.com/FinalizeRedirect.axd&WDS_GO_TO_MY_BOOKING_URL=https://en.aegeanair.com/MyBooking.axd&WDS_GO_TO_SEAT_SELECTION_URL=https://en.aegeanair.com/SeatRedirect.axd&WDS_HANDLE_SOS_AS_RM_FEE=TRUE&WDS_HOTEL_ENABLED=FALSE&WDS_HOTEL_PANEL_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_HOTEL_POPUP_CONF_ACTIVATED=TRUE&WDS_HOTEL_POPUP_CONF_DELAY=10000&WDS_HOTEL_RECOMMENDATION_PANEL_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_INSURANCE_ACTIVATED=TRUE&WDS_INSURANCE_PANEL_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_INSURANCE_PRESELECT=NONE&WDS_LATE_LOGIN_ENABLED=TRUE&WDS_LATE_LOGIN_URL=https://en.aegeanair.com/api/v1/members/loyaltyauth&WDS_MEAL_FORBIDDEN_PAX_TYPE=INF&WDS_MEAL_HANDLER_URL=https://en.aegeanair.com/MealHandler.axd&WDS_MEAL_LIST_PROPOSED=BBML:BLML:CHML:DBML:FPML:GFML:KSML:LCML:LFML:NLML:LSML:MOML:HNML:SFML:VOML:VLML:AVML:VJML:VGML:RVML&WDS_MILES_EARNED_HANDLER_URL=https://en.aegeanair.com/AwardedMiles.axd&WDS_NEW_PROMOTION_TYPE=NONE&WDS_NEW_PROMOTION_WEBSERVICES_ENVIRONMENT=PRODUCTION&WDS_OBFEE_FROM_NEWPOLICY_ACTIVATED=TRUE&WDS_OLYMPIC_TRACKING=true&WDS_ONLY_DIRECT_REQUESTED=FALSE&WDS_PARKING_PANEL_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_PETS_ENABLED=TRUE&WDS_PHONE_PRESELECT_COUNTRY_CODE=US&WDS_PLUSGRADE_ENABLED=false&WDS_PLUSGRADE_HANDLER_URL=https://en.aegeanair.com/PlusgradeHandler.axd&WDS_PROMO_SLOT_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_PROMOCODE_ROUTE_AUTHORIZED=FALSE&WDS_PROMOTION_RBD_LIST=P&WDS_REBOOKING_HIGHSEASON_DATE=&WDS_RESKIN=TRUE&WDS_SB_HOTEL_TIMEOUT=15000&WDS_SEAT_BANNER_URL=https://en.aegeanair.com/SeatBanner.axd&WDS_SEATMAP_ENABLED=TRUE&WDS_SMS_OPTION=SHOW&WDS_SMS_PROVIDER_EMAIL=aegean_bc@mpassltd.eu&WDS_SMS_SENDER_EMAIL=defineOA@amadeus.com&WDS_SPECIAL_MEAL_LIST=BBML:BLML:CHML:DBML:FPML:GFML:KSML:LCML:LFML:NLML:LSML:MOML:HNML:SFML:VOML:VLML:AVML:VJML:VGML:RVML&WDS_SPECIAL_MEAL_SUPPORTED=TRUE&WDS_SPEQ_ENABLED=TRUE&WDS_TAX_BREAKDOWN_REGULATION_ALLOW_LANG=FR&WDS_TEALEAF_ENABLED=TRUE&WDS_TTT_ENABLED=TRUE&WDS_TTT_PROMO_FARES_REG_EXP=^PR([0-9])+$&WDS_TTT_SELECTION_PANEL_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_UMNR_ENTRY_OVERRIDE=WDS_HOTEL_ENABLED:FALSE;WDS_CAR_ENABLED:FALSE;WDS_TTT_ENABLED:false;WDS_FASTTRACK_ENABLED:false;WDS_ANCILLARY_IN_MILES:false;WDS_ENABLE_PARKING:false;WDS_ASSISTANCE_REQUEST_ACTIVATED:false;WDS_LATE_LOGIN_ENABLED:false;WDS_BUSINESS_ON_BOARD_ENABLED:false&WDS_URL_FACADE_ERROR=https://www.olympicair.com/en/Travel/Reservations/Tickets&WDS_URL_FACADE_NEWSEARCH=https://www.olympicair.com/en/Travel/Reservations/Tickets&WDS_URL_WAITING_CONTENT=https://en.aegeanair.com/WaitingPage.axd&WDS_USE_A3_SOS_INSURANCE_PANEL=TRUE&WDS_USEFUL_LINKS_PANEL_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_VOUCHER_BANNER_ACTIVATED=TRUE&WDS_VOUCHER_BANNER_URL=https://en.aegeanair.com/PromoSlots.axd";
  4269.  
  4270. return {
  4271. url,
  4272. title: "Olympic Air"
  4273. };
  4274. }
  4275.  
  4276. Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* registerLink */ "c"])("airlines", printOA);
  4277.  
  4278.  
  4279. /***/ }),
  4280. /* 26 */
  4281. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  4282.  
  4283. "use strict";
  4284. __webpack_require__.r(__webpack_exports__);
  4285. /* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
  4286. /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
  4287. /* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
  4288. /* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
  4289.  
  4290.  
  4291.  
  4292.  
  4293.  
  4294. function printPS() {
  4295. if (
  4296. !_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].showAllAirlines &&
  4297. !Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* inArray */ "f"])("PS", _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].carriers)
  4298. ) {
  4299. return;
  4300. }
  4301.  
  4302. var createUrl = function(edition, currency) {
  4303. // 0 = Economy; 1=Premium Economy; 2=Business; 3=First
  4304. var cabins = ["Economy", "Economy", "Business", "First"];
  4305. var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* validatePaxcount */ "d"])({
  4306. maxPaxcount: 9,
  4307. countInf: false,
  4308. childAsAdult: 12,
  4309. sepInfSeat: false,
  4310. childMinAge: 2
  4311. });
  4312. if (!pax) {
  4313. Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printPS");
  4314. return false;
  4315. }
  4316. var url =
  4317. "https://bookapi.flyuia.com/flights/metaSearchQuery?Adult=" +
  4318. pax.adults +
  4319. "&Child=" +
  4320. pax.children.length +
  4321. "&Infant=" +
  4322. pax.infLap +
  4323. "&PointOfSaleCountry=" +
  4324. edition[1] +
  4325. "&UserCurrency=" +
  4326. currency +
  4327. "&UserLanguage=" +
  4328. edition[0] +
  4329. "&TripType=";
  4330. if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length == 1) {
  4331. url += "OneWay";
  4332. } else if (
  4333. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length == 2 &&
  4334. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].orig == _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[1].dest &&
  4335. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].dest == _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[1].orig
  4336. ) {
  4337. url += "RoundTrip";
  4338. } else {
  4339. url += "MultiCity";
  4340. }
  4341.  
  4342. var seg = 0;
  4343. var slice = 1;
  4344. var slicestr = "";
  4345. //Build multi-city search based on legs
  4346. for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
  4347. // walks each leg
  4348. for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length; j++) {
  4349. seg++;
  4350. //walks each segment of leg
  4351. var k = 0;
  4352. // lets have a look if we need to skip segments - Flightnumber has to be the same and it must be just a layover
  4353. while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length - 1) {
  4354. if (
  4355. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !=
  4356. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
  4357. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440
  4358. )
  4359. break;
  4360. k++;
  4361. }
  4362. url += "&Origin" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].orig;
  4363. url += "&Destination" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].dest;
  4364. url += "&Carrier" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].carrier;
  4365. url +=
  4366. "&DepartureDate" +
  4367. seg +
  4368. "=" +
  4369. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.year +
  4370. "-" +
  4371. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
  4372. "-" +
  4373. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2);
  4374. url += "&FlightNumber" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].fnr;
  4375. url +=
  4376. "&BookingCode" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].bookingclass;
  4377. url += "&Cabin" + seg + "=" + cabins[_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].cabin];
  4378. slicestr += (slicestr === "" ? "" : "%2C") + seg;
  4379. j += k;
  4380. }
  4381. url += "&Slice" + slice + "=" + slicestr;
  4382. slice++;
  4383. slicestr = "";
  4384. }
  4385. return url;
  4386. };
  4387. var url = createUrl(["EN", "US"], "USD");
  4388. if (!url) {
  4389. return;
  4390. }
  4391.  
  4392. return {
  4393. url,
  4394. title: "UIA"
  4395. };
  4396. }
  4397.  
  4398. Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* registerLink */ "c"])("airlines", printPS);
  4399.  
  4400.  
  4401. /***/ }),
  4402. /* 27 */
  4403. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  4404.  
  4405. "use strict";
  4406. __webpack_require__.r(__webpack_exports__);
  4407. /* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
  4408. /* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
  4409. /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2);
  4410. /* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3);
  4411. /* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(0);
  4412.  
  4413.  
  4414.  
  4415.  
  4416.  
  4417.  
  4418. const qfEditions = [
  4419. { value: "EN_AU", name: "Australia" },
  4420. { value: "EN_NZ", name: "New Zealand" },
  4421. { value: "EN_US", name: "United States" }
  4422. ];
  4423.  
  4424. const qfCurrencies = [
  4425. { value: "AUD", name: "AUD" },
  4426. { value: "NZD", name: "NZD" },
  4427. { value: "USD", name: "USD" }
  4428. ];
  4429.  
  4430. function printQF() {
  4431. if (
  4432. !_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].showAllAirlines &&
  4433. !(
  4434. Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* inArray */ "f"])("QF", _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].carriers) ||
  4435. Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* inArray */ "f"])("JQ", _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].carriers) ||
  4436. Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* inArray */ "f"])("NZ", _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].carriers)
  4437. )
  4438. ) {
  4439. return;
  4440. }
  4441.  
  4442. /* Qantas partner deep-link */
  4443. var createUrl = function(edition, currency) {
  4444. // 0 = Economy; 1=Premium Economy; 2=Business; 3=First
  4445. var travelClass = ["ECO", "PRM", "BUS", "FIR"];
  4446. // Start the minimum cabin at highest possible (it will drop as we check each leg):
  4447. var mincabin = 3;
  4448. // Validate the passenger totals first:
  4449. var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_3__[/* validatePaxcount */ "d"])({
  4450. maxPaxcount: 9,
  4451. countInf: false,
  4452. childAsAdult: 16,
  4453. sepInfSeat: false,
  4454. childMinAge: 2
  4455. });
  4456. if (!pax) {
  4457. Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printQF");
  4458. return false;
  4459. }
  4460. var nbrChildren = pax.children.length;
  4461. if (!nbrChildren || typeof nbrChildren === "undefined") {
  4462. // default to 0 children if undefined:
  4463. nbrChildren = 0;
  4464. }
  4465.  
  4466. // Build search based on legs:
  4467. console.log("printQF: begin leg traversal...");
  4468. var url = "";
  4469. var prefixFltNbr = "sdcFlightNumber";
  4470. var prefixSegRbd = "sdcSegmentRbd";
  4471. var depAirports = "&depAirports=";
  4472. var destAirports = "&destAirports=";
  4473. var segDepAirports = "&depAirports=";
  4474. var segDestAirports = "&destAirports=";
  4475. var tmpTravelDates = "";
  4476. var finalDest = _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[0].seg[0].dest;
  4477.  
  4478. for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin.length; i++) {
  4479. // walks each parent "leg" of the itinerary (a leg can have multiple flight segments)
  4480.  
  4481. // Record the travel date for each leg:
  4482. if (tmpTravelDates === "" || !tmpTravelDates) {
  4483. tmpTravelDates +=
  4484. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.year.toString() +
  4485. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.month).slice(-2).toString() +
  4486. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.day).slice(-2).toString() +
  4487. "0000";
  4488. } else {
  4489. tmpTravelDates +=
  4490. "%2C" +
  4491. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.year.toString() +
  4492. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.month).slice(-2).toString() +
  4493. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.day).slice(-2).toString() +
  4494. "0000";
  4495. }
  4496.  
  4497. // Grab the origin airport of each leg:
  4498. if (segDepAirports.length > 13) segDepAirports += "%2C";
  4499. segDepAirports += _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].orig.toString();
  4500. // Grab the destination airport of each leg:
  4501. if (segDestAirports.length > 14) segDestAirports += "%2C";
  4502. segDestAirports += _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dest.toString();
  4503.  
  4504. for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length; j++) {
  4505. // walks each flight segment of the parent leg
  4506. var k = 0;
  4507. // Do we need to skip segments? fnr has to be the same and it must be just a layover:
  4508. while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length - 1) {
  4509. if (
  4510. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !=
  4511. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
  4512. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440
  4513. ) {
  4514. break;
  4515. }
  4516. k++;
  4517. }
  4518. // Construct URL for this leg:
  4519. url +=
  4520. "&" +
  4521. prefixFltNbr +
  4522. (i + 1) +
  4523. (j + 1) +
  4524. "=" +
  4525. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].carrier +
  4526. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].fnr;
  4527. url +=
  4528. "&" +
  4529. prefixSegRbd +
  4530. (i + 1) +
  4531. (j + 1) +
  4532. "=" +
  4533. _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].bookingclass;
  4534.  
  4535. // record the departing and destination airports for this leg:
  4536. // all departing airports:
  4537. if (depAirports.length > 13) depAirports += "%2C";
  4538. depAirports += _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].orig.toString();
  4539. // all destination airports:
  4540. if (destAirports.length > 14) destAirports += "%2C";
  4541. destAirports += _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dest.toString();
  4542.  
  4543. if (_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin < mincabin) {
  4544. mincabin = _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin;
  4545. }
  4546. j += k;
  4547. }
  4548. }
  4549.  
  4550. // Add airports:
  4551. // url += depAirports + destAirports;
  4552. url += segDepAirports + segDestAirports;
  4553. // Add travel dates:
  4554. url += "&travelDates=" + tmpTravelDates;
  4555. // Add price info:
  4556. url += "&sdcTripPriceAmount=0.00";
  4557. // Add device type:
  4558. url += "&QFdeviceType=desktop";
  4559.  
  4560. // Begin final deeplink URL construction:
  4561. var urlBase =
  4562. "https://book.qantas.com/qf-booking/dyn/air/tripflow.redirect?APPLICATION_NAME=SDC";
  4563. // Add edition / locale:
  4564. urlBase += "&USER_LANG=EN&USER_LOCALE=" + edition;
  4565. // Add class(es) of service:
  4566. urlBase +=
  4567. "&travelClass=" +
  4568. travelClass[_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin === "Auto" ? mincabin : Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getForcedCabin */ "c"])()];
  4569. // Add passenger info:
  4570. urlBase +=
  4571. "&numberOfAdults=" +
  4572. pax.adults +
  4573. "&numberOfChildren=" +
  4574. nbrChildren.toString() +
  4575. "&numberOfInfants=" +
  4576. pax.infLap;
  4577. // Add currency:
  4578. urlBase += "&sdcPriceCurrency=" + currency;
  4579.  
  4580. return urlBase + url;
  4581. };
  4582. // get edition
  4583. var url = createUrl(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].qfEdition, _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].qfCurrency);
  4584. if (!url) {
  4585. return;
  4586. }
  4587.  
  4588. var extra =
  4589. ' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
  4590. extra += qfEditions
  4591. .map(function(obj, i) {
  4592. return (
  4593. '<a href="' +
  4594. createUrl(obj.value, _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].qfCurrency) +
  4595. '" target="_blank">' +
  4596. obj.name +
  4597. "</a>"
  4598. );
  4599. })
  4600. .join("<br/>");
  4601. extra += "</span></span>";
  4602.  
  4603. return {
  4604. url,
  4605. title: "Qantas",
  4606. extra
  4607. };
  4608. }
  4609.  
  4610. Object(_print_links__WEBPACK_IMPORTED_MODULE_3__[/* registerLink */ "c"])("airlines", printQF);
  4611. Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* registerSetting */ "c"])("Qantas", "qfEdition", qfEditions, "EN_US");
  4612. Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* registerSetting */ "c"])("Qantas", "qfCurrency", qfCurrencies, "USD");
  4613.  
  4614.  
  4615. /***/ }),
  4616. /* 28 */
  4617. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  4618.  
  4619. "use strict";
  4620. __webpack_require__.r(__webpack_exports__);
  4621. /* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
  4622. /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
  4623. /* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
  4624. /* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
  4625. /* harmony import */ var _print_amadeus__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7);
  4626.  
  4627.  
  4628.  
  4629.  
  4630.  
  4631.  
  4632. function printTK() {
  4633. if (
  4634. !_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].showAllAirlines &&
  4635. !Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* inArray */ "f"])("TK", _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].carriers)
  4636. ) {
  4637. return;
  4638. }
  4639.  
  4640. var url =
  4641. "https://book.eu2.amadeus.com/plnext/turkishairlines/Override.action?";
  4642. var paxConfig = { allowinf: 1, youthage: 0 };
  4643. var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* validatePaxcount */ "d"])({
  4644. maxPaxcount: 9,
  4645. countInf: false,
  4646. childAsAdult: 12,
  4647. sepInfSeat: false,
  4648. childMinAge: 2
  4649. });
  4650. if (!pax) {
  4651. Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printTK");
  4652. return;
  4653. }
  4654. var amadeusConfig = {
  4655. sepcabin: 0,
  4656. detailed: 0,
  4657. allowpremium: 1,
  4658. inctimes: 1
  4659. };
  4660. var tmpPax = Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_4__[/* getAmadeusPax */ "a"])(pax, paxConfig);
  4661. url += "TRIP_TYPE=" + Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_4__[/* getAmadeusTriptype */ "b"])();
  4662. url += tmpPax.url;
  4663. url += Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_4__[/* getAmadeusUrl */ "c"])(amadeusConfig);
  4664. url +=
  4665. "&PORT_TSC=FALSE&SO_SITE_ALLOW_SERVICE_FEE=0&SO_SITE_SERVICE_FEE_MODE=AIR&SITE=BBAHBBAH";
  4666. url +=
  4667. "&LANGUAGE=" +
  4668. (_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].language == "tk" || _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].language == "de"
  4669. ? _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].language.toUpperCase()
  4670. : "GB");
  4671. url += "&EMBEDDED_TRANSACTION=AirComplexAvailability&TRIPFLOW=YES";
  4672. url +=
  4673. "SO_LANG_TRIPFLOW_ENTRY_ADDRE=online.turkishairlines.com%2Finternet-booking%2Famadeus.tk&ARRANGE_BY=N&DIRECT_NON_STOP=false&REFRESH=0&SO_SITE_TAX_BREAKDOWN_DISP=TRUE&SO_LANG_DISABLE_X_XSS_PROTEC=TRUE&SO_SITE_REDIRECT_MODE=AUTOMATIC&SO_LANG_URL_AIR_NFS_SRCH=http%3A%2F%2Fonline.turkishairlines.com%2Finternet-booking%2Fstart.tk";
  4674.  
  4675. return {
  4676. url,
  4677. title: "Turkish"
  4678. };
  4679. }
  4680.  
  4681. Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* registerLink */ "c"])("airlines", printTK);
  4682.  
  4683.  
  4684. /***/ }),
  4685. /* 29 */
  4686. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  4687.  
  4688. "use strict";
  4689. __webpack_require__.r(__webpack_exports__);
  4690. /* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
  4691. /* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
  4692. /* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
  4693. /* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
  4694.  
  4695.  
  4696.  
  4697.  
  4698.  
  4699. const KayakEditions = [
  4700. { name: "Kayak.com", host: "Kayak.com" },
  4701. { name: "Kayak.de", host: "Kayak.de" },
  4702. { name: "Kayak.it", host: "Kayak.it" },
  4703. { name: "Kayak.es", host: "Kayak.es" },
  4704. { name: "Kayak.co.uk", host: "Kayak.co.uk" },
  4705. { name: "Kayak.dk", host: "Kayak.dk" },
  4706. { name: "Kayak.mx", host: "Kayak.mx" },
  4707. { name: "Kayak.fi", host: "Kayak.fi" },
  4708. { name: "Kayak.fr", host: "Kayak.fr" },
  4709. { name: "Kayak.no", host: "Kayak.no" },
  4710. { name: "Kayak.nl", host: "Kayak.nl" },
  4711. { name: "Kayak.pt", host: "Kayak.pt" },
  4712. { name: "Kayak.se", host: "Kayak.se" },
  4713. { name: "Kayak.ru", host: "Kayak.ru" }
  4714. ];
  4715.  
  4716. function printKayak(method) {
  4717. //example https://www.Kayak.ru/flights/MOW-CPH...OW/2016-05-20/
  4718. // pax: #adults
  4719. // method: 0 = based on leg; 1 = based on segment
  4720. let desc;
  4721. var KayakCreateUrl = function(host) {
  4722. var KayakUrl = "https://www." + host + "/flights";
  4723. var segsize = 0;
  4724. for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
  4725. if (method != 1) {
  4726. KayakUrl += "/" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].orig;
  4727. KayakUrl += "-" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].dest;
  4728. KayakUrl +=
  4729. "/" +
  4730. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].dep.year +
  4731. "-" +
  4732. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].dep.month).slice(-2) +
  4733. "-" +
  4734. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].dep.day).slice(-2);
  4735. segsize++;
  4736. }
  4737. for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length; j++) {
  4738. if (method == 1) {
  4739. var k = 0;
  4740. // lets have a look if we need to skip segments - Flightnumber has to be the same and it must be just a layover
  4741. while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length - 1) {
  4742. if (
  4743. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !=
  4744. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
  4745. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440
  4746. )
  4747. break;
  4748. k++;
  4749. }
  4750. KayakUrl += "/" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].orig;
  4751. KayakUrl += "-" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].dest;
  4752. KayakUrl +=
  4753. "/" +
  4754. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.year +
  4755. "-" +
  4756. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
  4757. "-" +
  4758. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2);
  4759. j += k;
  4760. segsize++;
  4761. }
  4762. }
  4763. }
  4764. if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].numPax > 1) {
  4765. KayakUrl += "/" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].numPax + "adults";
  4766. }
  4767.  
  4768. KayakUrl += getKayakCabin();
  4769.  
  4770. if (method == 1) {
  4771. if (_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].language == "de") {
  4772. desc = "Benutze " + segsize + " Segment(e)";
  4773. } else {
  4774. desc = "Based on " + segsize + " segment(s)";
  4775. }
  4776. } else {
  4777. if (segsize == 1) {
  4778. return false;
  4779. }
  4780. if (_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].language == "de") {
  4781. desc = "Benutze " + segsize + " Abschnitt(e)";
  4782. } else {
  4783. desc = "Based on " + segsize + " segment(s)";
  4784. }
  4785. }
  4786. return KayakUrl;
  4787. };
  4788. var KayakUrl = KayakCreateUrl("Kayak.com");
  4789. if (!KayakUrl) {
  4790. return;
  4791. }
  4792. var KayakExtra =
  4793. ' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
  4794. KayakExtra += KayakEditions.map(function(obj, i) {
  4795. return (
  4796. '<a href="' +
  4797. KayakCreateUrl(obj.host) +
  4798. '" target="_blank">' +
  4799. obj.name +
  4800. "</a>"
  4801. );
  4802. }).join("<br/>");
  4803. KayakExtra += "</span></span>";
  4804.  
  4805. return {
  4806. url: KayakUrl,
  4807. title: "Kayak",
  4808. desc,
  4809. extra: KayakExtra
  4810. };
  4811. }
  4812.  
  4813. function getKayakCabin() {
  4814. switch (_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin) {
  4815. case "Y+":
  4816. return "/premium";
  4817. case "C":
  4818. return "/business";
  4819. case "F":
  4820. return "/first";
  4821. default:
  4822. return "/economy";
  4823. }
  4824. }
  4825.  
  4826. Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* registerLink */ "c"])("meta", () => printKayak(0));
  4827. Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* registerLink */ "c"])("meta", () => printKayak(1));
  4828.  
  4829.  
  4830. /***/ }),
  4831. /* 30 */
  4832. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  4833.  
  4834. "use strict";
  4835. __webpack_require__.r(__webpack_exports__);
  4836. /* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
  4837. /* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(0);
  4838. /* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
  4839.  
  4840.  
  4841.  
  4842.  
  4843. const MomondoEditions = [
  4844. { name: "Momondo.com", host: "Momondo.com" },
  4845. { name: "Momondo.de", host: "Momondo.de" },
  4846. { name: "Momondo.it", host: "Momondo.it" },
  4847. { name: "Momondo.es", host: "Momondo.es" },
  4848. { name: "Momondo.co.uk", host: "Momondo.co.uk" },
  4849. { name: "Momondo.dk", host: "Momondo.dk" },
  4850. { name: "Momondo.mx", host: "Momondo.mx" },
  4851. { name: "Momondo.fi", host: "Momondo.fi" },
  4852. { name: "Momondo.fr", host: "Momondo.fr" },
  4853. { name: "Momondo.no", host: "Momondo.no" },
  4854. { name: "Momondo.nl", host: "Momondo.nl" },
  4855. { name: "Momondo.pt", host: "Momondo.pt" },
  4856. { name: "Momondo.se", host: "Momondo.se" },
  4857. { name: "Momondo.ru", host: "Momondo.ru" }
  4858. ];
  4859.  
  4860. function printMomondo() {
  4861. //example https://www.Momondo.ru/flightsearch/?...false&NA=false
  4862. //pax # &AD=2&CA=0,8 – not working with children (total amount of adults + kids goes to adult)
  4863.  
  4864. var momondoTravelClass = ["economy", "premium", "business", "first"];
  4865. var mincabin = 3;
  4866.  
  4867. var MomondoCreateUrl = function(host) {
  4868. var MomondoUrl = "https://www." + host + "/flight-search/";
  4869. for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin.length; i++) {
  4870. MomondoUrl +=
  4871. _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].orig +
  4872. "-" +
  4873. _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].dest +
  4874. "/" +
  4875. _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].dep.year +
  4876. "-" +
  4877. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].dep.month).slice(-2) +
  4878. "-" +
  4879. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].dep.day).slice(-2) +
  4880. "/";
  4881.  
  4882. for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg.length; j++) {
  4883. // check the min cabin:
  4884. if (_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].cabin < mincabin) {
  4885. mincabin = _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].cabin;
  4886. }
  4887. }
  4888. }
  4889.  
  4890. // Add travel class to URL:
  4891. MomondoUrl +=
  4892. momondoTravelClass[
  4893. _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin === "Auto" ? mincabin : Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getForcedCabin */ "c"])()
  4894. ] + "/";
  4895. // Add passenger info to URL:
  4896. MomondoUrl += _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].numPax + "adults";
  4897. return MomondoUrl;
  4898. };
  4899.  
  4900. var MomondoUrl = MomondoCreateUrl("Momondo.com");
  4901. var MomondoExtra =
  4902. ' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
  4903. MomondoExtra += MomondoEditions.map(function(obj, i) {
  4904. return (
  4905. '<a href="' +
  4906. MomondoCreateUrl(obj.host) +
  4907. '" target="_blank">' +
  4908. obj.name +
  4909. "</a>"
  4910. );
  4911. }).join("<br/>");
  4912. MomondoExtra += "</span></span>";
  4913.  
  4914. return {
  4915. url: MomondoUrl,
  4916. title: "Momondo",
  4917. extra: MomondoExtra
  4918. };
  4919. }
  4920.  
  4921. Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* registerLink */ "c"])("meta", printMomondo);
  4922.  
  4923.  
  4924. /***/ }),
  4925. /* 31 */
  4926. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  4927.  
  4928. "use strict";
  4929. __webpack_require__.r(__webpack_exports__);
  4930. /* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
  4931. /* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
  4932. /* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(0);
  4933.  
  4934.  
  4935.  
  4936.  
  4937. const SkyscannerEditions = [
  4938. { name: "Skyscanner.com", market: "US" },
  4939. { name: "Skyscanner.de", market: "DE" },
  4940. { name: "Skyscanner.it", market: "IT" },
  4941. { name: "Skyscanner.es", market: "ES" },
  4942. { name: "Skyscanner.co.uk", market: "UK" },
  4943. { name: "Skyscanner.dk", market: "DK" },
  4944. { name: "Skyscanner.mx", market: "MX" },
  4945. { name: "Skyscanner.fi", market: "FI" },
  4946. { name: "Skyscanner.fr", market: "FR" },
  4947. { name: "Skyscanner.no", market: "NO" },
  4948. { name: "Skyscanner.nl", market: "NL" },
  4949. { name: "Skyscanner.pt", market: "PT" },
  4950. { name: "Skyscanner.se", market: "SE" },
  4951. { name: "Skyscanner.ru", market: "RU" }
  4952. ];
  4953.  
  4954. function printSkyscanner() {
  4955. //example https://www.skyscanner.ru/transport/d/stoc/2017-09-02/akl/akl/2017-09-16/stoc/akl/2017-09-29/syd?adults=1&children=0&adultsv2=1&childrenv2=&infants=0&cabinclass=economy&ref=day-view#results
  4956. var skyscannerTravelClass = ["", "premiumeconomy", "business", "first"];
  4957. var SkyscannerCreateUrl = function(market) {
  4958. var skyscannerUrl = "http://www.skyscanner.com/transport/d";
  4959. var seg = 0;
  4960. var mincabin = 3;
  4961. for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin.length; i++) {
  4962. skyscannerUrl += "/" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].orig;
  4963. // Add the segments:
  4964. skyscannerUrl +=
  4965. "/" +
  4966. _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].dep.year +
  4967. "-" +
  4968. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].dep.month).slice(-2) +
  4969. "-" +
  4970. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].dep.day).slice(-2);
  4971. skyscannerUrl += "/" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].dest;
  4972.  
  4973. for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg.length; j++) {
  4974. // check the min cabin:
  4975. if (_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].cabin < mincabin) {
  4976. mincabin = _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].cabin;
  4977. }
  4978. }
  4979.  
  4980. seg++;
  4981. }
  4982.  
  4983. // Add passenger info:
  4984. skyscannerUrl +=
  4985. "?adults=" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].numPax + "adultsv2=" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].numPax;
  4986. // Add cabin / class of service:
  4987. skyscannerUrl +=
  4988. "&cabinclass=" +
  4989. skyscannerTravelClass[
  4990. _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin === "Auto" ? mincabin : Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getForcedCabin */ "c"])()
  4991. ];
  4992. // Add locale ("market"):
  4993. skyscannerUrl += "&ref=day-view&market=" + market;
  4994.  
  4995. return skyscannerUrl;
  4996. };
  4997. var skyscannerUrl = SkyscannerCreateUrl("Skyscanner.com");
  4998. var SkyscannerExtra =
  4999. ' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
  5000. SkyscannerExtra += SkyscannerEditions.map(function(obj, i) {
  5001. return (
  5002. '<a href="' +
  5003. SkyscannerCreateUrl(obj.market) +
  5004. '" target="_blank">' +
  5005. obj.name +
  5006. "</a>"
  5007. );
  5008. }).join("<br/>");
  5009. SkyscannerExtra += "</span></span>";
  5010.  
  5011. return {
  5012. url: skyscannerUrl,
  5013. title: "Skyscanner",
  5014. extra: SkyscannerExtra
  5015. };
  5016. }
  5017.  
  5018. Object(_print_links__WEBPACK_IMPORTED_MODULE_1__[/* registerLink */ "c"])("meta", printSkyscanner);
  5019.  
  5020.  
  5021. /***/ }),
  5022. /* 32 */
  5023. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  5024.  
  5025. "use strict";
  5026. __webpack_require__.r(__webpack_exports__);
  5027. /* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
  5028. /* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
  5029. /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2);
  5030. /* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
  5031.  
  5032.  
  5033.  
  5034.  
  5035.  
  5036. function printCheapOair() {
  5037. // 0 = Economy; 1=Premium Economy; 2=Business; 3=First
  5038. var cabins = ["Economy", "PremiumEconomy", "Business", "First"];
  5039. var coaUrl = "http://www.cheapoair.com/default.aspx?tabid=1832&ulang=en";
  5040. var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_1__[/* validatePaxcount */ "d"])({
  5041. maxPaxcount: 9,
  5042. countInf: true,
  5043. childAsAdult: 12,
  5044. sepInfSeat: true,
  5045. childMinAge: 2
  5046. });
  5047. if (!pax) {
  5048. Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printCheapOair");
  5049. return;
  5050. }
  5051. coaUrl +=
  5052. "&ad=" +
  5053. pax.adults +
  5054. "&ch=" +
  5055. pax.children.length +
  5056. "&il=" +
  5057. pax.infLap +
  5058. "&is=" +
  5059. pax.infSeat;
  5060. var seg = 0;
  5061. var slices = {};
  5062. for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
  5063. slices[i] = "";
  5064. for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length; j++) {
  5065. seg++;
  5066. if (slices[i]) slices[i] += ",";
  5067. slices[i] += seg;
  5068.  
  5069. coaUrl +=
  5070. "&cbn" +
  5071. seg +
  5072. "=" +
  5073. cabins[
  5074. _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin === "Auto"
  5075. ? cabins[_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].cabin]
  5076. : Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getForcedCabin */ "c"])()
  5077. ];
  5078. coaUrl += "&carr" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].carrier;
  5079. coaUrl +=
  5080. "&dd" +
  5081. seg +
  5082. "=" +
  5083. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.year +
  5084. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
  5085. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2);
  5086. coaUrl += "&og" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].orig;
  5087. coaUrl += "&dt" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dest;
  5088. coaUrl += "&fbc" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].bookingclass;
  5089. coaUrl += "&fnum" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].fnr;
  5090. }
  5091. coaUrl += "&Slice" + (i + 1) + "=" + slices[i];
  5092. }
  5093.  
  5094. if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length == 1) {
  5095. coaUrl += "&tt=OneWay";
  5096. } else if (
  5097. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length == 2 &&
  5098. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].orig == _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[1].dest &&
  5099. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].dest == _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[1].orig
  5100. ) {
  5101. coaUrl += "&tt=RoundTrip";
  5102. } else {
  5103. coaUrl += "&tt=MultiCity";
  5104. }
  5105.  
  5106. return {
  5107. url: coaUrl,
  5108. title: "CheapOair"
  5109. };
  5110. }
  5111.  
  5112. Object(_print_links__WEBPACK_IMPORTED_MODULE_1__[/* registerLink */ "c"])("otas", printCheapOair);
  5113.  
  5114.  
  5115. /***/ }),
  5116. /* 33 */
  5117. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  5118.  
  5119. "use strict";
  5120. __webpack_require__.r(__webpack_exports__);
  5121. /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
  5122. /* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
  5123. /* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(0);
  5124. /* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4);
  5125.  
  5126.  
  5127.  
  5128.  
  5129.  
  5130. const eDreams = [
  5131. { name: "eDreams.com", domain: "www.edreams.com" },
  5132. { name: "eDreams.au", domain: "www.edreams.com.au" },
  5133. { name: "eDreams.br", domain: "www.edreams.com.br" },
  5134. { name: "eDreams.ca", domain: "ca.edreams.com" },
  5135. { name: "eDreams.ch", domain: "www.edreams.ch" },
  5136. { name: "eDreams.cl", domain: "cl.edreams.com" },
  5137. { name: "eDreams.cn", domain: "cn.edreams.com" },
  5138. { name: "eDreams.co", domain: "co.edreams.com" },
  5139. { name: "eDreams.co.uk", domain: "www.edreams.co.uk" },
  5140. { name: "eDreams.com.ar", domain: "www.edreams.com.ar" },
  5141. { name: "eDreams.com.mx", domain: "www.edreams.com.mx" },
  5142. { name: "eDreams.com.ru", domain: "www.edreams.com.ru" },
  5143. { name: "eDreams.com.tr", domain: "www.edreams.com.tr" },
  5144. { name: "eDreams.de", domain: "www.edreams.de" },
  5145. { name: "eDreams.es", domain: "www.edreams.es" },
  5146. { name: "eDreams.fr", domain: "www.edreams.fr" },
  5147. { name: "eDreams.gr", domain: "www.edreams.gr" },
  5148. { name: "eDreams.hk", domain: "www.edreams.hk" },
  5149. { name: "eDreams.id", domain: "id.edreams.com" },
  5150. { name: "eDreams.in", domain: "www.edreams.in" },
  5151. { name: "eDreams.it", domain: "www.edreams.it" },
  5152. { name: "eDreams.jp", domain: "www.edreams.jp" },
  5153. { name: "eDreams.ma", domain: "www.edreams.ma" },
  5154. { name: "eDreams.net", domain: "www.edreams.net" },
  5155. { name: "eDreams.nl", domain: "nl.edreams.com" },
  5156. { name: "eDreams.nz", domain: "nz.edreams.com" },
  5157. { name: "eDreams.pe", domain: "www.edreams.pe" },
  5158. { name: "eDreams.ph", domain: "www.edreams.ph" },
  5159. { name: "eDreams.pt", domain: "www.edreams.pt" },
  5160. { name: "eDreams.sg", domain: "sg.edreams.com" },
  5161. { name: "eDreams.th", domain: "th.edreams.com" },
  5162. { name: "eDreams.za", domain: "za.edreams.com" }
  5163. ];
  5164.  
  5165. const opodo = [
  5166. { name: "Opodo.com", domain: "www.opodo.com" },
  5167. { name: "Opodo.at", domain: "www.opodo.at" },
  5168. { name: "Opodo.be", domain: "www.opodo.be" },
  5169. { name: "Opodo.ch", domain: "www.opodo.ch" },
  5170. { name: "Opodo.co.uk", domain: "www.opodo.co.uk" },
  5171. { name: "Opodo.com.au", domain: "www.opodo.com.au" },
  5172. { name: "Opodo.de", domain: "www.opodo.de" },
  5173. { name: "Opodo.dk", domain: "www.opodo.dk" },
  5174. { name: "Opodo.es", domain: "www.opodo.es" },
  5175. { name: "Opodo.fi", domain: "www.opodo.fi" },
  5176. { name: "Opodo.fr", domain: "www.opodo.fr" },
  5177. { name: "Opodo.it", domain: "www.opodo.it" },
  5178. { name: "Opodo.nl", domain: "www.opodo.nl" },
  5179. { name: "Opodo.no", domain: "www.opodo.no" },
  5180. { name: "Opodo.pl", domain: "www.opodo.pl" },
  5181. { name: "Opodo.pt", domain: "www.opodo.pt" },
  5182. { name: "Opodo.se", domain: "www.opodo.se" }
  5183. ];
  5184.  
  5185. const travellink = [
  5186. { name: "Travellink.com", domain: "www.travellink.com" },
  5187. { name: "Travellink.de", domain: "www.travellink.de" },
  5188. { name: "Travellink.dk", domain: "www.travellink.dk" },
  5189. { name: "Travellink.fi", domain: "www.travellink.fi" },
  5190. { name: "Travellink.is", domain: "www.travellink.is" },
  5191. { name: "Travellink.no", domain: "www.travellink.no" },
  5192. { name: "Travellink.se", domain: "www.travellink.se" }
  5193. ];
  5194.  
  5195. const cabins = ["TOURIST", "PREMIUM_ECONOMY", "BUSINESS", "FIRST"];
  5196.  
  5197. function printEdreams(title, editions) {
  5198. var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_1__[/* validatePaxcount */ "d"])({
  5199. maxPaxcount: 9,
  5200. countInf: false,
  5201. childAsAdult: 12,
  5202. sepInfSeat: false,
  5203. childMinAge: 2
  5204. });
  5205. if (!pax) {
  5206. Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printEdreams");
  5207. return;
  5208. }
  5209.  
  5210. const cabin =
  5211. cabins[Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_3__[/* getCabin */ "b"])(Math.min(...Object(_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* getCurrentSegs */ "b"])().map(seg => seg.cabin)))];
  5212.  
  5213. var createUrl = function(domain) {
  5214. const deeplink = `/results/type=M;${_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin
  5215. .map(
  5216. (itin, i) =>
  5217. `dep${i}=${itin.dep.year}-${Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* to2digits */ "i"])(itin.dep.month)}-${Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* to2digits */ "i"])(
  5218. itin.dep.day
  5219. )};from${i}=${itin.orig};to${i}=${itin.dest}`
  5220. )
  5221. .join(";")};class=${cabin};adults=${pax.adults};children=${
  5222. pax.children.length
  5223. };infants=${
  5224. pax.infLap
  5225. };collectionmethod=false;airlinescodes=false;internalSearch=true`;
  5226.  
  5227. const segKeys = _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin
  5228. .map(
  5229. (itin, i) =>
  5230. `segmentKey${i}=0,${itin.seg
  5231. .map(seg => seg.carrier + seg.fnr)
  5232. .join(",")}`
  5233. )
  5234. .join("&");
  5235.  
  5236. return `https://${domain}/travel/?landingPageType=TEST_AB&searchId=${new Date().getTime()}&deeplink=${deeplink}&fareItineraryKey=0,1A&${segKeys}&searchMainProductTypeName=FLIGHT`;
  5237. };
  5238.  
  5239. var url = createUrl(editions[0].domain);
  5240. if (!url) return;
  5241.  
  5242. var extra =
  5243. ' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
  5244. extra += editions
  5245. .map(function(obj, i) {
  5246. return (
  5247. '<a href="' +
  5248. createUrl(obj.domain) +
  5249. '" target="_blank">' +
  5250. obj.name +
  5251. "</a>"
  5252. );
  5253. })
  5254. .join("<br/>");
  5255. extra += "</span></span>";
  5256.  
  5257. return {
  5258. url,
  5259. title,
  5260. extra
  5261. };
  5262. }
  5263.  
  5264. Object(_print_links__WEBPACK_IMPORTED_MODULE_1__[/* registerLink */ "c"])("otas", () => printEdreams("eDreams", eDreams));
  5265. Object(_print_links__WEBPACK_IMPORTED_MODULE_1__[/* registerLink */ "c"])("otas", () => printEdreams("Opodo", opodo));
  5266. Object(_print_links__WEBPACK_IMPORTED_MODULE_1__[/* registerLink */ "c"])("otas", () => printEdreams("Travellink", travellink));
  5267.  
  5268.  
  5269. /***/ }),
  5270. /* 34 */
  5271. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  5272.  
  5273. "use strict";
  5274. __webpack_require__.r(__webpack_exports__);
  5275. /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
  5276. /* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
  5277. /* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(0);
  5278.  
  5279.  
  5280.  
  5281.  
  5282. const editions = [
  5283. { name: "Seat24.se", host: "www.seat24.se" },
  5284. { name: "Seat24.de", host: "www.seat24.de" },
  5285. { name: "Seat24.dk", host: "www.seat24.dk" },
  5286. { name: "Seat24.fi", host: "www.seat24.fi" },
  5287. { name: "Seat24.no", host: "www.seat24.no" },
  5288. { name: "Flygvaruhuset.se", host: "www.flygvaruhuset.se" },
  5289. { name: "Travelpartner.se", host: "www.travelpartner.se" },
  5290. { name: "Travelpartner.fi", host: "www.travelpartner.fi" },
  5291. { name: "Travelpartner.no", host: "www.travelpartner.no" },
  5292. { name: "Budjet.se", host: "www.budjet.se" },
  5293. { name: "Budjet.fi", host: "www.budjet.fi" },
  5294. { name: "Budjet.no", host: "www.budjet.no" },
  5295. { name: "Budjet.dk", host: "www.budjet.dk" },
  5296. { name: "Goleif.dk", host: "www.goleif.dk" },
  5297. { name: "Travelfinder.se", host: "www.travelfinder.se" },
  5298. { name: "Gotogate.no", host: "www.gotogate.no" },
  5299. { name: "Gotogate.at", host: "www.gotogate.at" },
  5300. { name: "Gotogate.be", host: "be.gotogate.com" },
  5301. { name: "Gotogate.bg", host: "bg.gotogate.com" },
  5302. { name: "Gotogate.ch", host: "www.gotogate.ch" },
  5303. { name: "Gotogate.cz", host: "cz.gotogate.com" },
  5304. { name: "Gotogate.es", host: "www.gotogate.es" },
  5305. { name: "Gotogate.fr", host: "www.gotogate.fr" },
  5306. { name: "Gotogate.gr", host: "www.gotogate.gr" },
  5307. { name: "Gotogate.hu", host: "hu.gotogate.com" },
  5308. { name: "Gotogate.ie", host: "ie.gotogate.com" },
  5309. { name: "Gotogate.it", host: "www.gotogate.it" },
  5310. { name: "Gotogate.pl", host: "www.gotogate.pl" },
  5311. { name: "Gotogate.pt", host: "www.gotogate.pt" },
  5312. { name: "Gotogate.ro", host: "ro.gotogate.com" },
  5313. { name: "Gotogate.sk", host: "www.gotogate.sk" },
  5314. { name: "Gotogate.tr", host: "tr.gotogate.com" },
  5315. { name: "Gotogate.com.ua", host: "www.gotogate.com.ua" },
  5316. { name: "Gotogate.co.uk", host: "www.gotogate.co.uk" },
  5317. { name: "Flybillet.dk", host: "www.flybillet.dk" },
  5318. { name: "Travelstart.se", host: "www.travelstart.se" },
  5319. { name: "Travelstart.de", host: "www.travelstart.de" },
  5320. { name: "Travelstart.dk", host: "www.travelstart.dk" },
  5321. { name: "Travelstart.fi", host: "www.travelstart.fi" },
  5322. { name: "Travelstart.no", host: "www.travelstart.no" },
  5323. { name: "Supersaver.se", host: "www.supersavertravel.se" },
  5324. { name: "Supersaver.dk", host: "www.supersaver.dk" },
  5325. { name: "Supersaver.fi", host: "www.supersaver.fi" },
  5326. { name: "Supersaver.nl", host: "www.supersaver.nl" },
  5327. { name: "Supersaver.no", host: "www.supersaver.no" },
  5328. { name: "Supersaver.ru", host: "www.supersaver.ru" }
  5329. ];
  5330.  
  5331. function printEtraveli() {
  5332. if (_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin.length > 2) return; // no multi segments
  5333. if (
  5334. _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin.length == 2 &&
  5335. !(
  5336. _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[0].orig == _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[1].dest &&
  5337. _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[0].dest == _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[1].orig
  5338. )
  5339. )
  5340. return; // no open jaws
  5341.  
  5342. var convertDate = function(date, withYear) {
  5343. return (
  5344. ("0" + date.day).slice(-2) +
  5345. Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* monthnumberToName */ "g"])(date.month) +
  5346. (withYear ? date.year.toString().slice(-2) : "")
  5347. );
  5348. };
  5349. var createUrl = function(host) {
  5350. var ggUrl = "http://" + host + "/air/";
  5351. ggUrl +=
  5352. _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[0].orig +
  5353. _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[0].dest +
  5354. convertDate(_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[0].dep, false);
  5355. if (_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin.length > 1)
  5356. ggUrl += convertDate(_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[1].dep, false);
  5357. ggUrl += "/" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].numPax;
  5358. ggUrl +=
  5359. "?selectionKey=" +
  5360. _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin
  5361. .map(function(itin) {
  5362. return itin.seg
  5363. .map(function(seg) {
  5364. return (
  5365. seg.carrier +
  5366. seg.fnr +
  5367. "-" +
  5368. convertDate(seg.dep, true) +
  5369. "-" +
  5370. seg.bookingclass
  5371. );
  5372. })
  5373. .join("_");
  5374. })
  5375. .join("_");
  5376.  
  5377. return ggUrl;
  5378. };
  5379. // picked seat24 as main one, but could be any of them
  5380. var ggUrl = createUrl("www.seat24.de");
  5381. var extra =
  5382. ' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
  5383. extra += editions
  5384. .map(function(obj, i) {
  5385. return (
  5386. '<a href="' +
  5387. createUrl(obj.host) +
  5388. '" target="_blank">' +
  5389. obj.name +
  5390. "</a>"
  5391. );
  5392. })
  5393. .join("<br/>");
  5394. extra += "</span></span>";
  5395.  
  5396. return {
  5397. url: ggUrl,
  5398. title: "Seat24.de",
  5399. extra
  5400. };
  5401. }
  5402.  
  5403. Object(_print_links__WEBPACK_IMPORTED_MODULE_1__[/* registerLink */ "c"])("otas", printEtraveli);
  5404.  
  5405.  
  5406. /***/ }),
  5407. /* 35 */
  5408. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  5409.  
  5410. "use strict";
  5411. __webpack_require__.r(__webpack_exports__);
  5412. /* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
  5413. /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
  5414. /* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
  5415. /* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
  5416.  
  5417.  
  5418.  
  5419.  
  5420.  
  5421. const editions = [
  5422. { name: "expedia.com", host: "expedia.com" },
  5423. { name: "orbitz.com", host: "orbitz.com" },
  5424. { name: "expedia.ca", host: "expedia.ca" },
  5425. { name: "expedia.de", host: "expedia.de" },
  5426. { name: "expedia.it", host: "expedia.it" },
  5427. { name: "expedia.es", host: "expedia.es" },
  5428. { name: "expedia.co.uk", host: "expedia.co.uk" },
  5429. { name: "expedia.dk", host: "expedia.dk" },
  5430. { name: "expedia.mx", host: "expedia.mx" },
  5431. { name: "expedia.fi", host: "expedia.fi" },
  5432. { name: "expedia.fr", host: "expedia.fr" },
  5433. { name: "expedia.no", host: "expedia.no" },
  5434. { name: "expedia.nl", host: "expedia.nl" },
  5435. { name: "expedia.ch", host: "expedia.ch" },
  5436. { name: "expedia.se", host: "expedia.se" },
  5437. { name: "expedia.at", host: "expedia.at" },
  5438. { name: "expedia.co.jp", host: "expedia.co.jp" }
  5439. ];
  5440.  
  5441. function printExpedia() {
  5442. var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* validatePaxcount */ "d"])({
  5443. maxPaxcount: 9,
  5444. countInf: true,
  5445. childAsAdult: 18,
  5446. sepInfSeat: false,
  5447. childMinAge: 2
  5448. });
  5449. if (!pax) {
  5450. Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printExpedia");
  5451. return;
  5452. }
  5453. let expediaClasses = ["coach", "premium", "business", "first"];
  5454. let minCabin = 3;
  5455. let ExpediaCreateUrl = function(expediaBase) {
  5456. let segUrl = "";
  5457. for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
  5458. segUrl +=
  5459. "&legs%5B" + i + "%5D.departureAirport=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].orig;
  5460. segUrl +=
  5461. "&legs%5B" + i + "%5D.arrivalAirport=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].dest;
  5462. segUrl +=
  5463. "&legs%5B" +
  5464. i +
  5465. "%5D.departureDate=" +
  5466. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].arr.year.toString() +
  5467. "-" +
  5468. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].dep.month).slice(-2) +
  5469. "-" +
  5470. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].dep.day).slice(-2);
  5471. for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length; j++) {
  5472. segUrl += (
  5473. "&legs%5B" +
  5474. i +
  5475. "%5D.segments%5B" +
  5476. j +
  5477. "%5D=" +
  5478. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.year.toString() +
  5479. "-" +
  5480. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
  5481. "-" +
  5482. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2) +
  5483. "-" +
  5484. expediaClasses[
  5485. _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin === "Auto" ? minCabin : Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getForcedCabin */ "c"])()
  5486. ] +
  5487. "-" +
  5488. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].orig +
  5489. "-" +
  5490. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dest +
  5491. "-" +
  5492. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].carrier +
  5493. "-" +
  5494. _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].fnr
  5495. ).toLowerCase();
  5496.  
  5497. // check the min cabin:
  5498. if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].cabin < minCabin) {
  5499. minCabin = _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].cabin;
  5500. }
  5501. }
  5502. }
  5503. // Build the URL:
  5504. let baseUrl =
  5505. "https://www." +
  5506. expediaBase +
  5507. "/Flight-Search-Details?action=dl&trip=MultipleDestination";
  5508. // Add travel class to URL:
  5509. baseUrl +=
  5510. "&cabinClass=" +
  5511. expediaClasses[
  5512. _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin === "Auto" ? minCabin : Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getForcedCabin */ "c"])()
  5513. ];
  5514. // Add passenger info to URL:
  5515. baseUrl += "&adults=" + pax.adults;
  5516. return baseUrl + segUrl;
  5517. };
  5518. var ExpediaUrl = ExpediaCreateUrl("expedia.com");
  5519. var container =
  5520. ' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
  5521. container += editions
  5522. .map(function(obj, i) {
  5523. return (
  5524. '<a href="' +
  5525. ExpediaCreateUrl(obj.host) +
  5526. '" target="_blank">' +
  5527. obj.name +
  5528. "</a>"
  5529. );
  5530. })
  5531. .join("<br/>");
  5532. container += "</span></span>";
  5533.  
  5534. return {
  5535. url: ExpediaUrl,
  5536. title: "Expedia",
  5537. extra: container
  5538. };
  5539. }
  5540.  
  5541. Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* registerLink */ "c"])("otas", printExpedia);
  5542.  
  5543.  
  5544. /***/ }),
  5545. /* 36 */
  5546. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  5547.  
  5548. "use strict";
  5549. __webpack_require__.r(__webpack_exports__);
  5550. /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
  5551. /* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
  5552. /* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(0);
  5553.  
  5554.  
  5555.  
  5556.  
  5557. function printPriceline() {
  5558. var pricelineurl = "https://www.priceline.com/m/fly/search";
  5559. var searchparam = "~";
  5560. for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin.length; i++) {
  5561. // walks each leg
  5562. searchparam = searchparam.substring(0, searchparam.length - 1) + "-";
  5563. pricelineurl += "/" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].orig;
  5564. pricelineurl += "-" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].dest;
  5565. pricelineurl +=
  5566. "-" +
  5567. _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].arr.year.toString() +
  5568. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].dep.month).slice(-2) +
  5569. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].dep.day).slice(-2);
  5570. for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg.length; j++) {
  5571. //walks each segment of leg
  5572. var k = 0;
  5573. // lets have a look if we need to skip segments - Flightnumber has to be the same and it must be just a layover
  5574. while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg.length - 1) {
  5575. if (
  5576. _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !=
  5577. _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
  5578. _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440
  5579. )
  5580. break;
  5581. k++;
  5582. }
  5583. searchparam += _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].orig;
  5584. searchparam +=
  5585. _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].dep.year.toString() +
  5586. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
  5587. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2) +
  5588. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].dep.time.replace(":", "")).slice(-4);
  5589. searchparam += _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j + k].dest;
  5590. searchparam +=
  5591. _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j + k].arr.year.toString() +
  5592. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j + k].arr.month).slice(-2) +
  5593. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j + k].arr.day).slice(-2) +
  5594. ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j + k].arr.time.replace(":", "")).slice(
  5595. -4
  5596. );
  5597. searchparam +=
  5598. _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].bookingclass +
  5599. _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].carrier +
  5600. _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].fnr;
  5601. searchparam += "~";
  5602. j += k;
  5603. }
  5604. }
  5605. searchparam = searchparam.substring(1, searchparam.length - 1);
  5606. var pax = Object(_print_links__WEBPACK_IMPORTED_MODULE_1__[/* validatePaxcount */ "d"])({
  5607. maxPaxcount: 9,
  5608. countInf: true,
  5609. childAsAdult: 18,
  5610. sepInfSeat: false,
  5611. childMinAge: 2
  5612. });
  5613. if (!pax) {
  5614. Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* printNotification */ "h"])("Error: Failed to validate Passengers in printPriceline");
  5615. return;
  5616. }
  5617. pricelineurl +=
  5618. "/desktop/details/R_" +
  5619. searchparam +
  5620. "_" +
  5621. (pax.adults + pax.children.length + pax.infLap) +
  5622. "_USD0.00_1-1-1?num-adults=" +
  5623. pax.adults +
  5624. "&num-children=" +
  5625. pax.children.length +
  5626. "&num-infants=" +
  5627. pax.infLap +
  5628. "&num-youths=0";
  5629.  
  5630. return {
  5631. url: pricelineurl,
  5632. title: "Priceline"
  5633. };
  5634. }
  5635.  
  5636. Object(_print_links__WEBPACK_IMPORTED_MODULE_1__[/* registerLink */ "c"])("otas", printPriceline);
  5637.  
  5638.  
  5639. /***/ }),
  5640. /* 37 */
  5641. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  5642.  
  5643. "use strict";
  5644. __webpack_require__.r(__webpack_exports__);
  5645.  
  5646. // EXTERNAL MODULE: ./src/settings/appSettings.js
  5647. var appSettings = __webpack_require__(4);
  5648.  
  5649. // EXTERNAL MODULE: ./src/settings/userSettings.js
  5650. var userSettings = __webpack_require__(1);
  5651.  
  5652. // EXTERNAL MODULE: ./src/settings/itaSettings.js
  5653. var itaSettings = __webpack_require__(5);
  5654.  
  5655. // EXTERNAL MODULE: ./src/utils.js
  5656. var utils = __webpack_require__(2);
  5657.  
  5658. // EXTERNAL MODULE: ./src/parse/itin.js
  5659. var parse_itin = __webpack_require__(0);
  5660.  
  5661. // EXTERNAL MODULE: ./src/settings/translations.js
  5662. var translations = __webpack_require__(8);
  5663.  
  5664. // EXTERNAL MODULE: ./src/print/links.js
  5665. var links = __webpack_require__(3);
  5666.  
  5667. // CONCATENATED MODULE: ./src/print/index.js
  5668.  
  5669.  
  5670.  
  5671.  
  5672.  
  5673.  
  5674.  
  5675. function render() {
  5676. // Editor mode?
  5677. if (
  5678. userSettings["a" /* default */].enableEditormode == 1 &&
  5679. Object(utils["d" /* findtargets */])("editoritem").length === 0
  5680. ) {
  5681. Object(utils["l" /* toggleVis */])(document.getElementById("mptStartparse"), "inline-block");
  5682. addEditor();
  5683. return;
  5684. } else if (Object(utils["d" /* findtargets */])("editoritem").length > 0) {
  5685. Object(utils["l" /* toggleVis */])(document.getElementById("mptStartparse"));
  5686. removeEditor();
  5687. Object(parse_itin["c" /* readItinerary */])();
  5688. }
  5689.  
  5690. bindPageLayout();
  5691.  
  5692. if (userSettings["a" /* default */].enableFarerules == 1) bindRulelinks();
  5693.  
  5694. if (userSettings["a" /* default */].timeformat == "24h") bind24HourTime();
  5695.  
  5696. if (
  5697. userSettings["a" /* default */].language !== "en" &&
  5698. translations["a" /* default */][userSettings["a" /* default */].language].resultpage !== undefined
  5699. )
  5700. bindTranslations(
  5701. "resultpage",
  5702. userSettings["a" /* default */].language,
  5703. Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage.itin, 1).nextElementSibling
  5704. );
  5705.  
  5706. if (userSettings["a" /* default */].enablePricebreakdown == 1) bindPriceBreakdown();
  5707.  
  5708. if (userSettings["a" /* default */].enableInlineMode == 1) printCPM();
  5709.  
  5710. Object(links["b" /* printLinksContainer */])();
  5711.  
  5712. if (userSettings["a" /* default */].enableSeatguru == 1) bindSeatguru();
  5713. if (userSettings["a" /* default */].enablePlanefinder == 1) bindPlanefinder();
  5714. if (userSettings["a" /* default */].enableWheretocredit == 1) bindWheretocredit();
  5715. }
  5716.  
  5717. function cleanUp() {
  5718. // empty outputcontainer
  5719. if (document.getElementById("powertoolslinkcontainer") != undefined) {
  5720. var div = document.getElementById("powertoolslinkcontainer");
  5721. div.innerHTML = "";
  5722. }
  5723. // S&D powertool items
  5724. var elems = Object(utils["d" /* findtargets */])("powertoolsitem");
  5725. for (var i = elems.length - 1; i >= 0; i--) {
  5726. elems[i].parentElement.removeChild(elems[i]);
  5727. }
  5728. // S&D price breakdown
  5729. var pbd = Object(utils["c" /* findtarget */])("pricebreakdown", 1);
  5730. if (pbd != undefined) pbd.parentElement.removeChild(pbd);
  5731. }
  5732.  
  5733. function addEditor() {
  5734. for (var i = 0; i < parse_itin["a" /* currentItin */].itin.length; i++) {
  5735. for (var j = 0; j < parse_itin["a" /* currentItin */].itin[i].seg.length; j++) {
  5736. var target = findItinTarget(i + 1, j + 1, "cabin").firstElementChild;
  5737. var tmp = target.innerHTML;
  5738. var bc = tmp.substr(tmp.length - 2, 1);
  5739. var cabin = tmp.substr(0, tmp.length - 4);
  5740. var cabins = [
  5741. ["Economy", "Y"],
  5742. ["Premium Economy", "Y+"],
  5743. ["Business", "C"],
  5744. ["First", "F"]
  5745. ];
  5746. var str = '<select style="width:40px" class="editoritem">';
  5747. for (var k = 0; k < cabins.length; k++) {
  5748. str +=
  5749. '<option value="' +
  5750. cabins[k][0] +
  5751. '"' +
  5752. (cabins[k][0] === cabin ? ' selected="selected"' : "") +
  5753. ">" +
  5754. cabins[k][1] +
  5755. "</option>";
  5756. }
  5757. str += "</select>";
  5758. str +=
  5759. ' (<input type="text" class="editoritem" value="' +
  5760. bc +
  5761. '" style="width:20px;text-align:center">)';
  5762. target.innerHTML = str;
  5763. }
  5764. }
  5765. }
  5766.  
  5767. function removeEditor() {
  5768. for (var i = 0; i < parse_itin["a" /* currentItin */].itin.length; i++) {
  5769. for (var j = 0; j < parse_itin["a" /* currentItin */].itin[i].seg.length; j++) {
  5770. var target = findItinTarget(i + 1, j + 1, "cabin").firstElementChild;
  5771. var cabin =
  5772. target.firstElementChild.options[target.firstElementChild.selectedIndex]
  5773. .value;
  5774. var bc = target.firstElementChild.nextElementSibling.value;
  5775. var str = cabin + " (" + bc + ")";
  5776. target.innerHTML = str;
  5777. }
  5778. }
  5779. }
  5780.  
  5781. function bindPageLayout() {
  5782. if (userSettings["a" /* default */].enableInlineMode == 1) {
  5783. Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage.milagecontainer, 1).setAttribute(
  5784. "rowspan",
  5785. "10"
  5786. );
  5787. } else if (
  5788. userSettings["a" /* default */].enableInlineMode == 0 &&
  5789. userSettings["a" /* default */].enablePricebreakdown == 1
  5790. ) {
  5791. Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage.milagecontainer, 1).setAttribute(
  5792. "rowspan",
  5793. "3"
  5794. );
  5795. } else {
  5796. Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage.milagecontainer, 1).setAttribute(
  5797. "rowspan",
  5798. "2"
  5799. );
  5800. }
  5801. }
  5802.  
  5803. function bind24HourTime() {
  5804. // lets do the time-replacement
  5805. const segs = Object(parse_itin["b" /* getCurrentSegs */])();
  5806. if (segs.length > 0) {
  5807. const target = Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage.itin, 1)
  5808. .nextElementSibling;
  5809. for (let i = 0; i < segs.length; i++) {
  5810. target.innerHTML = target.innerHTML.replace(
  5811. new RegExp(segs[i].dep.timeDisplay, "g"),
  5812. segs[i].dep.time24
  5813. );
  5814. target.innerHTML = target.innerHTML.replace(
  5815. new RegExp(segs[i].arr.timeDisplay, "g"),
  5816. segs[i].arr.time24
  5817. );
  5818. }
  5819. }
  5820. }
  5821.  
  5822. function bindRulelinks() {
  5823. var i = 0;
  5824. var j = 0;
  5825. var t = 1;
  5826. let target = Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage.rulescontainer, t);
  5827. if (target != undefined) {
  5828. do {
  5829. var current = Number(
  5830. target.firstElementChild.innerHTML.replace(/[^\d]/gi, "")
  5831. );
  5832. if (i > current) {
  5833. j++;
  5834. i = 0;
  5835. }
  5836. target = target.nextElementSibling.nextElementSibling.nextElementSibling;
  5837. var targeturl =
  5838. window.location.href.replace(/view-details/, "view-rules") +
  5839. ";fare-key=" +
  5840. j +
  5841. "/" +
  5842. i;
  5843. var newlink = document.createElement("a");
  5844. newlink.setAttribute("class", "gwt-Anchor");
  5845. newlink.setAttribute("href", targeturl);
  5846. newlink.setAttribute("target", "_blank");
  5847. var linkText = document.createTextNode("rules");
  5848. newlink.appendChild(linkText);
  5849. target.parentElement.replaceChild(newlink, target);
  5850. i++;
  5851. t++;
  5852. target = Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage.rulescontainer, t);
  5853. } while (target != undefined);
  5854. }
  5855. }
  5856.  
  5857. function bindPriceBreakdown() {
  5858. var basefares = 0;
  5859. var taxes = 0;
  5860. var surcharges = 0;
  5861. var basefound = 0;
  5862. var cur = "";
  5863. // define searchpattern to detect carrier imposed surcharges
  5864. var searchpatt = new RegExp("((YQ|YR))");
  5865. var t = 1;
  5866. var target = Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage.htbLeft, t);
  5867. if (userSettings["a" /* default */].enableInlineMode == 0) {
  5868. var output = "";
  5869. var count = 0;
  5870. }
  5871. if (target != undefined) {
  5872. do {
  5873. var type = target.firstChild.firstChild.nodeType;
  5874. if (type == 1) {
  5875. basefound = 1;
  5876. //it's a basefare
  5877. var price = Number(
  5878. target.nextElementSibling.firstElementChild.innerHTML.replace(
  5879. /[^\d]/gi,
  5880. ""
  5881. )
  5882. );
  5883. if (cur == "")
  5884. cur = target.nextElementSibling.firstElementChild.innerHTML.replace(
  5885. /[\d,.]/g,
  5886. ""
  5887. );
  5888. basefares += price;
  5889. } else if (basefound == 1 && type == 3) {
  5890. //its a pricenode
  5891. var name = target.firstElementChild.innerHTML;
  5892. var price = Number(
  5893. target.nextElementSibling.firstElementChild.innerHTML.replace(
  5894. /[^\d]/gi,
  5895. ""
  5896. )
  5897. );
  5898. if (
  5899. Object(utils["e" /* hasClass */])(
  5900. target.nextElementSibling,
  5901. itaSettings["a" /* default */].resultpage.htbGreyBorder
  5902. )
  5903. ) {
  5904. //we are done for this container
  5905. var sum = basefares + taxes + surcharges;
  5906. if (userSettings["a" /* default */].enableInlineMode == 1) {
  5907. var newtr = document.createElement("tr");
  5908. newtr.innerHTML =
  5909. '<td class="' +
  5910. itaSettings["a" /* default */].resultpage.htbLeft +
  5911. '"><div class="gwt-Label">Basefare per passenger (' +
  5912. ((basefares / sum) * 100).toFixed(2).toString() +
  5913. '%)</div></td><td class="' +
  5914. itaSettings["a" /* default */].resultpage.htbGreyBorder +
  5915. '"><div class="gwt-Label">' +
  5916. cur +
  5917. (basefares / 100)
  5918. .toFixed(2)
  5919. .toString()
  5920. .replace(/\d(?=(\d{3})+\.)/g, "$&,") +
  5921. "</div></td>";
  5922. target.parentElement.parentElement.insertBefore(
  5923. newtr,
  5924. target.parentElement
  5925. );
  5926. var newtr = document.createElement("tr");
  5927. newtr.innerHTML =
  5928. '<td class="' +
  5929. itaSettings["a" /* default */].resultpage.htbLeft +
  5930. '"><div class="gwt-Label">Taxes per passenger (' +
  5931. ((taxes / sum) * 100).toFixed(2).toString() +
  5932. '%)</div></td><td class="' +
  5933. itaSettings["a" /* default */].resultpage.htbRight +
  5934. '"><div class="gwt-Label">' +
  5935. cur +
  5936. (taxes / 100)
  5937. .toFixed(2)
  5938. .toString()
  5939. .replace(/\d(?=(\d{3})+\.)/g, "$&,") +
  5940. "</div></td>";
  5941. target.parentElement.parentElement.insertBefore(
  5942. newtr,
  5943. target.parentElement
  5944. );
  5945. var newtr = document.createElement("tr");
  5946. newtr.innerHTML =
  5947. '<td class="' +
  5948. itaSettings["a" /* default */].resultpage.htbLeft +
  5949. '"><div class="gwt-Label">Surcharges per passenger (' +
  5950. ((surcharges / sum) * 100).toFixed(2).toString() +
  5951. '%)</div></td><td class="' +
  5952. itaSettings["a" /* default */].resultpage.htbRight +
  5953. '"><div class="gwt-Label">' +
  5954. cur +
  5955. (surcharges / 100)
  5956. .toFixed(2)
  5957. .toString()
  5958. .replace(/\d(?=(\d{3})+\.)/g, "$&,") +
  5959. "</div></td>";
  5960. target.parentElement.parentElement.insertBefore(
  5961. newtr,
  5962. target.parentElement
  5963. );
  5964. var newtr = document.createElement("tr");
  5965. newtr.innerHTML =
  5966. '<td class="' +
  5967. itaSettings["a" /* default */].resultpage.htbLeft +
  5968. '"><div class="gwt-Label">Basefare + Taxes per passenger (' +
  5969. (((basefares + taxes) / sum) * 100).toFixed(2).toString() +
  5970. '%)</div></td><td class="' +
  5971. itaSettings["a" /* default */].resultpage.htbGreyBorder +
  5972. '"><div class="gwt-Label">' +
  5973. cur +
  5974. ((basefares + taxes) / 100)
  5975. .toFixed(2)
  5976. .toString()
  5977. .replace(/\d(?=(\d{3})+\.)/g, "$&,") +
  5978. "</div></td>";
  5979. target.parentElement.parentElement.insertBefore(
  5980. newtr,
  5981. target.parentElement
  5982. );
  5983. } else {
  5984. count++;
  5985. output += '<table style="float:left; margin-right:15px;"><tbody>';
  5986. output +=
  5987. '<tr><td colspan=3 style="text-align:center;">Price breakdown ' +
  5988. count +
  5989. ": </td></tr>";
  5990. output +=
  5991. "<tr><td>" +
  5992. cur +
  5993. ' per mile</td><td colspan=2 style="text-align:center;">' +
  5994. (sum / parse_itin["a" /* currentItin */].dist / 100).toFixed(4).toString() +
  5995. "</td></tr>";
  5996. output +=
  5997. '<tr><td>Basefare</td><td style="padding:0px 3px;text-align:right;">' +
  5998. ((basefares / sum) * 100).toFixed(1).toString() +
  5999. '%</td><td style="text-align:right;">' +
  6000. cur +
  6001. (basefares / 100)
  6002. .toFixed(2)
  6003. .toString()
  6004. .replace(/\d(?=(\d{3})+\.)/g, "$&,") +
  6005. "</td></tr>";
  6006. output +=
  6007. '<tr><td>Tax</td><td style="padding:0px 3px;text-align:right;">' +
  6008. ((taxes / sum) * 100).toFixed(1).toString() +
  6009. '%</td><td style="text-align:right;">' +
  6010. cur +
  6011. (taxes / 100)
  6012. .toFixed(2)
  6013. .toString()
  6014. .replace(/\d(?=(\d{3})+\.)/g, "$&,") +
  6015. "</td></tr>";
  6016. output +=
  6017. '<tr><td>Surcharges</td><td style="padding:0px 3px;text-align:right;">' +
  6018. ((surcharges / sum) * 100).toFixed(1).toString() +
  6019. '%</td><td style="text-align:right;">' +
  6020. cur +
  6021. (surcharges / 100)
  6022. .toFixed(2)
  6023. .toString()
  6024. .replace(/\d(?=(\d{3})+\.)/g, "$&,") +
  6025. "</td></tr>";
  6026. output +=
  6027. '<tr><td style="border-top: 1px solid #878787;padding:2px 0">Bf+Tax</td><td style="border-top: 1px solid #878787;padding:2px 3px;text-align:right;">' +
  6028. (((basefares + taxes) / sum) * 100).toFixed(1).toString() +
  6029. '%</td><td style="border-top: 1px solid #878787;padding:2px 0; text-align:right;">' +
  6030. cur +
  6031. ((basefares + taxes) / 100)
  6032. .toFixed(2)
  6033. .toString()
  6034. .replace(/\d(?=(\d{3})+\.)/g, "$&,") +
  6035. "</td></tr>";
  6036. output += "</tbody></table>";
  6037. }
  6038. parse_itin["a" /* currentItin */].basefares = +(basefares / 100).toFixed(2);
  6039. parse_itin["a" /* currentItin */].taxes = +(taxes / 100).toFixed(2);
  6040. parse_itin["a" /* currentItin */].surcharges = +(surcharges / 100).toFixed(2);
  6041.  
  6042. // reset var
  6043. basefound = 0;
  6044. basefares = 0;
  6045. taxes = 0;
  6046. surcharges = 0;
  6047. } else {
  6048. //Carrier surcharge?
  6049. if (searchpatt.test(name) === true) {
  6050. surcharges += price;
  6051. } else {
  6052. taxes += price;
  6053. }
  6054. }
  6055. }
  6056. t++;
  6057. target = Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage.htbLeft, t);
  6058. } while (target != undefined);
  6059. }
  6060. if (userSettings["a" /* default */].enableInlineMode == 0) {
  6061. var printtarget = Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage.htbContainer, 1)
  6062. .parentElement.parentElement.parentElement;
  6063. var newtr = document.createElement("tr");
  6064. newtr.setAttribute("class", "pricebreakdown");
  6065. newtr.innerHTML = "<td><div>" + output + "</div></td>";
  6066. printtarget.parentElement.insertBefore(newtr, printtarget);
  6067. }
  6068. }
  6069.  
  6070. function bindTranslations(page, lang, target) {
  6071. if (translations["a" /* default */][lang] === undefined) {
  6072. Object(utils["h" /* printNotification */])("Error: Translation " + lang + " not found");
  6073. return false;
  6074. }
  6075. if (translations["a" /* default */][lang][page] === undefined) {
  6076. Object(utils["h" /* printNotification */])(
  6077. "Error: Translation " + lang + " not found for page " + page
  6078. );
  6079. return false;
  6080. }
  6081. for (let i in translations["a" /* default */][lang][page]) {
  6082. const re = new RegExp(i, "g");
  6083. target.innerHTML = target.innerHTML.replace(
  6084. re,
  6085. translations["a" /* default */][lang][page][i]
  6086. );
  6087. }
  6088. }
  6089.  
  6090. function printCPM() {
  6091. Object(links["a" /* printItemInline */])(
  6092. (Number(parse_itin["a" /* currentItin */].price) / Number(parse_itin["a" /* currentItin */].dist)).toFixed(4) + " cpm",
  6093. "",
  6094. 1
  6095. );
  6096. }
  6097.  
  6098. function bindSeatguru() {
  6099. for (var i = 0; i < parse_itin["a" /* currentItin */].itin.length; i++) {
  6100. // walks each leg
  6101. for (var j = 0; j < parse_itin["a" /* currentItin */].itin[i].seg.length; j++) {
  6102. //walks each segment of leg
  6103. var k = 0;
  6104. // lets have a look if we need to skip segments - Flightnumber has to be the same and it must be just a layover
  6105. while (j + k < parse_itin["a" /* currentItin */].itin[i].seg.length - 1) {
  6106. if (
  6107. parse_itin["a" /* currentItin */].itin[i].seg[j + k].fnr !=
  6108. parse_itin["a" /* currentItin */].itin[i].seg[j + k + 1].fnr ||
  6109. parse_itin["a" /* currentItin */].itin[i].seg[j + k].layoverduration >= 1440
  6110. )
  6111. break;
  6112. k++;
  6113. }
  6114. // build the search to identify flight:
  6115. var target = findItinTarget(i + 1, j + 1, "plane");
  6116. if (!target) {
  6117. Object(utils["h" /* printNotification */])("Error: Could not find target in bindSeatguru");
  6118. return false;
  6119. } else {
  6120. var url =
  6121. "http://www.seatguru.com/findseatmap/findseatmap.php?carrier=" +
  6122. parse_itin["a" /* currentItin */].itin[i].seg[j].carrier +
  6123. "&flightno=" +
  6124. parse_itin["a" /* currentItin */].itin[i].seg[j].fnr +
  6125. "&date=" +
  6126. ("0" + parse_itin["a" /* currentItin */].itin[i].seg[j].dep.month).slice(-2) +
  6127. "%2F" +
  6128. ("0" + parse_itin["a" /* currentItin */].itin[i].seg[j].dep.day).slice(-2) +
  6129. "%2F" +
  6130. parse_itin["a" /* currentItin */].itin[i].seg[j].dep.year +
  6131. "&to=&from=" +
  6132. parse_itin["a" /* currentItin */].itin[i].seg[j].orig;
  6133. target.children[0].innerHTML =
  6134. '<a href="' +
  6135. url +
  6136. '" target="_blank" style="text-decoration:none;color:black">' +
  6137. target.children[0].innerHTML +
  6138. "</a>";
  6139. }
  6140. j += k;
  6141. }
  6142. }
  6143. }
  6144.  
  6145. function bindPlanefinder() {
  6146. for (var i = 0; i < parse_itin["a" /* currentItin */].itin.length; i++) {
  6147. // walks each leg
  6148. for (var j = 0; j < parse_itin["a" /* currentItin */].itin[i].seg.length; j++) {
  6149. //walks each segment of leg
  6150. var k = 0;
  6151. // lets have a look if we need to skip segments - Flightnumber has to be the same and it must be just a layover
  6152. while (j + k < parse_itin["a" /* currentItin */].itin[i].seg.length - 1) {
  6153. if (
  6154. parse_itin["a" /* currentItin */].itin[i].seg[j + k].fnr !=
  6155. parse_itin["a" /* currentItin */].itin[i].seg[j + k + 1].fnr ||
  6156. parse_itin["a" /* currentItin */].itin[i].seg[j + k].layoverduration >= 1440
  6157. )
  6158. break;
  6159. k++;
  6160. }
  6161. // build the search to identify flight:
  6162. var target = findItinTarget(i + 1, j + 1, "flight");
  6163. if (!target) {
  6164. Object(utils["h" /* printNotification */])("Error: Could not find target in bindPlanefinder");
  6165. return false;
  6166. } else {
  6167. var url =
  6168. "http://www.planefinder.net/data/flight/" +
  6169. parse_itin["a" /* currentItin */].itin[i].seg[j].carrier +
  6170. parse_itin["a" /* currentItin */].itin[i].seg[j].fnr;
  6171. target.children[0].innerHTML =
  6172. '<a href="' +
  6173. url +
  6174. '" target="_blank" style="text-decoration:none;color:black">' +
  6175. target.children[0].innerHTML +
  6176. "</a>";
  6177. }
  6178. j += k;
  6179. }
  6180. }
  6181. }
  6182.  
  6183. function bindWheretocredit() {
  6184. for (var i = 0; i < parse_itin["a" /* currentItin */].itin.length; i++) {
  6185. // walks each leg
  6186. for (var j = 0; j < parse_itin["a" /* currentItin */].itin[i].seg.length; j++) {
  6187. //walks each segment of leg
  6188. var target = findItinTarget(i + 1, j + 1, "cabin");
  6189. if (!target) {
  6190. Object(utils["h" /* printNotification */])("Error: Could not find target in bindWheretocredit");
  6191. return false;
  6192. } else {
  6193. var url =
  6194. "http://www.wheretocredit.com/" +
  6195. parse_itin["a" /* currentItin */].itin[i].seg[j].carrier.toLowerCase() +
  6196. "/" +
  6197. parse_itin["a" /* currentItin */].itin[i].seg[j].bookingclass.toLowerCase();
  6198. target.children[0].innerHTML = target.children[0].innerHTML
  6199. .replace(
  6200. /<a.*?\/a>/,
  6201. "(" + parse_itin["a" /* currentItin */].itin[i].seg[j].bookingclass + ")"
  6202. )
  6203. .replace(
  6204. "(" + parse_itin["a" /* currentItin */].itin[i].seg[j].bookingclass + ")",
  6205. '<a href="' +
  6206. url +
  6207. '" target="_blank" style="text-decoration:none;color:black">(' +
  6208. parse_itin["a" /* currentItin */].itin[i].seg[j].bookingclass +
  6209. ")</a>"
  6210. );
  6211. }
  6212. }
  6213. }
  6214. }
  6215.  
  6216. function findItinTarget(leg, seg, tcell) {
  6217. var target = Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage.itin, 1);
  6218. if (!target) {
  6219. Object(utils["h" /* printNotification */])("Error: Itin not found in findItinTarget-function");
  6220. return;
  6221. }
  6222.  
  6223. // go to leg
  6224. var targetLeg = target.nextElementSibling.children[leg - 1];
  6225. if (targetLeg === undefined) {
  6226. Object(utils["h" /* printNotification */])("Error: Leg not found in findItinTarget-function");
  6227. return;
  6228. }
  6229. // go to segments of leg
  6230. var targetSeg = targetLeg.children[1].children;
  6231. if (targetSeg.length >= 2) {
  6232. // go to desired segment
  6233. var index = 0;
  6234. var j = 0;
  6235. let i = 0;
  6236. for (i = 0; i < targetSeg.length; i++) {
  6237. if (Object(utils["e" /* hasClass */])(targetSeg[i], itaSettings["a" /* default */].resultpage.itinRow)) {
  6238. j++;
  6239. if (j >= seg) {
  6240. index = i;
  6241. //special handling for one-seg-legs here
  6242. if (targetSeg.length === 2 || targetSeg.length === 3) {
  6243. // 1. Headline 2. Flight-details 3. arrival next day..
  6244. index--;
  6245. }
  6246. break;
  6247. }
  6248. }
  6249. } // end-for
  6250. if (i == targetSeg.length) {
  6251. //target not found
  6252. Object(utils["h" /* printNotification */])(
  6253. "Error: Call to unreachable Segment in Leg " +
  6254. leg +
  6255. " in findItinTarget-function"
  6256. );
  6257. return;
  6258. }
  6259. var rowoffset = 0;
  6260. var columnoffset = 0;
  6261.  
  6262. switch (tcell) {
  6263. case "headline":
  6264. // special case here allways first row... even in one-seg-legs
  6265. rowoffset = index * -1;
  6266. columnoffset = 1;
  6267. break;
  6268. case "logo":
  6269. rowoffset = 0;
  6270. columnoffset = 0;
  6271. break;
  6272. case "airportsdate":
  6273. rowoffset = 0;
  6274. columnoffset = 1;
  6275. break;
  6276. case "flight":
  6277. rowoffset = 1;
  6278. columnoffset = 0;
  6279. break;
  6280. case "deptime":
  6281. rowoffset = 1;
  6282. columnoffset = 1;
  6283. break;
  6284. case "arrtime":
  6285. rowoffset = 1;
  6286. columnoffset = 2;
  6287. break;
  6288. case "duration":
  6289. rowoffset = 1;
  6290. columnoffset = 2;
  6291. break;
  6292. case "plane":
  6293. rowoffset = 1;
  6294. columnoffset = 4;
  6295. break;
  6296. case "cabin":
  6297. rowoffset = 1;
  6298. columnoffset = 5;
  6299. break;
  6300. default:
  6301. Object(utils["h" /* printNotification */])("Error: Unknown Target in findItinTarget-function");
  6302. return;
  6303. }
  6304. return targetSeg[index + rowoffset].children[columnoffset];
  6305. } else {
  6306. Object(utils["h" /* printNotification */])("Error: Unknown error in findItinTarget-function");
  6307. return;
  6308. }
  6309. }
  6310.  
  6311. // EXTERNAL MODULE: ./src/settings/paxSettings.js
  6312. var paxSettings = __webpack_require__(6);
  6313.  
  6314. // CONCATENATED MODULE: ./src/print/settings.js
  6315.  
  6316.  
  6317.  
  6318.  
  6319.  
  6320.  
  6321.  
  6322.  
  6323. /**************************************** Settings Stuff *****************************************/
  6324. function createUsersettings() {
  6325. var str = "";
  6326. var settingscontainer = document.createElement("div");
  6327. settingscontainer.setAttribute("id", "mptSettingsContainer");
  6328. settingscontainer.setAttribute("style", "border-bottom: 1px dashed grey;");
  6329. settingscontainer.innerHTML =
  6330. '<div style="display:inline-block;float:left;cursor:pointer;" id="passengerVisToggler">Passengers (<label id="mtpPaxCount">1a</label>)</div><div id="mptStartparse" class="invis" style="margin-left:20px;display:none;cursor:pointer">Editor-Mode:Parse!</div><div id="mtpNotification" style="margin-left:50px;display:inline-block;"></div><div style="display:inline-block;float:right;"><div id="settingsVisToggler" style="display:inline-block;cursor:pointer;">Settings</div> (v' +
  6331. appSettings["a" /* default */].version +
  6332. ') <div id="mptCabintoggler" style="display:inline-block;">(Cabin: <label id="mptCabinMode" style="width:30px;text-align:center;cursor:pointer;display:inline-block">Auto</label>)</div></div><div id="mptSettings" class="invis" style="display:none;border-top: 1px dotted grey;"></div><div id="mptPassengers" class="invis" style="display:none;border-top: 1px dotted grey;"></div>';
  6333. var target = document.getElementById("contentwrapper");
  6334. target.parentElement.insertBefore(settingscontainer, target);
  6335. document.getElementById("settingsVisToggler").onclick = function() {
  6336. Object(utils["l" /* toggleVis */])(document.getElementById("mptSettings"));
  6337. };
  6338. document.getElementById("passengerVisToggler").onclick = function() {
  6339. Object(utils["l" /* toggleVis */])(document.getElementById("mptPassengers"));
  6340. };
  6341.  
  6342. // Build settings
  6343. target = document.getElementById("mptSettings");
  6344. str =
  6345. '<div id="mptrestoredefault" style="text-align:right;font-weight:bold;text-decoration:underline;">Restore Defaults</div>';
  6346. str +=
  6347. '<div style="text-align:center;font-weight:bold">**** Display Settings: ****</div>';
  6348. str += '<div style="margin:5px 0;"><div style="float:left;width:25%">';
  6349. str +=
  6350. '<div id="mpttimeformat">Time Format: <label style="cursor:pointer;">' +
  6351. printSettingsvalue("timeformat") +
  6352. "</label></div>";
  6353. str +=
  6354. '<div id="mptlanguage">Language: <label style="cursor:pointer;">' +
  6355. printSettingsvalue("language") +
  6356. "</label></div>";
  6357. str += '</div><div style="float:left;width:25%">';
  6358. str +=
  6359. '<div id="mptenableDeviders">Enable dividers: <label style="cursor:pointer;">' +
  6360. printSettingsvalue("enableDeviders") +
  6361. "</label></div>";
  6362. str +=
  6363. '<div id="mptenableInlineMode">Inline Mode: <label style="cursor:pointer;">' +
  6364. printSettingsvalue("enableInlineMode") +
  6365. "</label></div>";
  6366. str += '</div><div style="float:left;width:25%">';
  6367. str +=
  6368. '<div id="mptenableFarerules">Open fare-rules in new window: <label style="cursor:pointer;">' +
  6369. printSettingsvalue("enableFarerules") +
  6370. "</label></div>";
  6371. str +=
  6372. '<div id="mptenablePricebreakdown">Price breakdown: <label style="cursor:pointer;">' +
  6373. printSettingsvalue("enablePricebreakdown") +
  6374. "</label></div>";
  6375. str += '</div><div style="float:left;width:25%">';
  6376. str +=
  6377. '<div id="mptlinkFontsize">Link font size: <label style="cursor:pointer;">' +
  6378. printSettingsvalue("linkFontsize") +
  6379. "</label>%</div>";
  6380. str +=
  6381. '<div id="mptshowAllAirlines">All airlines: <label style="cursor:pointer;">' +
  6382. printSettingsvalue("showAllAirlines") +
  6383. "</label></div>";
  6384. str += '</div><div style="clear:both"></div></div>';
  6385. str +=
  6386. '<div style="text-align:center;font-weight:bold">**** Feature Settings: ****</div>';
  6387. str += '<div style="margin:5px 0"><div style="float:left;width:25%">';
  6388. str +=
  6389. '<div id="mptenableEditormode">Editor mode: <label style="cursor:pointer;">' +
  6390. printSettingsvalue("enableEditormode") +
  6391. "</label></div>";
  6392. str += '</div><div style="float:left;width:33%">';
  6393. str += '</div><div style="float:left;width:33%">';
  6394. str +=
  6395. '<div id="mptenableIMGautoload">Images autoload: <label style="cursor:pointer;">' +
  6396. printSettingsvalue("enableIMGautoload") +
  6397. "</label></div>";
  6398. str += '</div><div style="float:left;width:33%">';
  6399. str +=
  6400. '<div id="mptenableWheretocredit">Enable WhereToCredit: <label style="cursor:pointer;">' +
  6401. printSettingsvalue("enableWheretocredit") +
  6402. "</label></div>";
  6403. str +=
  6404. '<div id="mptenablePlanefinder">Enable Planefinder: <label style="cursor:pointer;">' +
  6405. printSettingsvalue("enablePlanefinder") +
  6406. "</label></div>";
  6407. str +=
  6408. '<div id="mptenableSeatguru">Enable Seatguru: <label style="cursor:pointer;">' +
  6409. printSettingsvalue("enableSeatguru") +
  6410. "</label></div>";
  6411. str += '</div><div style="clear:both"></div></div>';
  6412. str +=
  6413. '<div style="text-align:center;font-weight:bold">**** Link Settings: ****</div>';
  6414. str += '<div style="margin:5px 0">';
  6415.  
  6416. Object.keys(userSettings["d" /* registeredSettings */]).forEach(setting => {
  6417. str += `<div id="mpt${setting}" style="width:33%;float:left;">${
  6418. userSettings["d" /* registeredSettings */][setting].name
  6419. }: <label style="cursor:pointer;">${printSettingsvalue(
  6420. setting
  6421. )}</label></div>`;
  6422. });
  6423. str += '<div style="clear:both"></div></div>';
  6424. str +=
  6425. '<div style="text-align:center;font-weight:bold"><label id="configcloser" style="cursor:pointer;text-decoration:underline;">Close</label><div>';
  6426. target.innerHTML = str;
  6427.  
  6428. // these onClick event handlers need only be added once:
  6429. document.getElementById("mptrestoredefault").onclick = function() {
  6430. restoreDefaultSettings();
  6431. };
  6432. document.getElementById("mpttimeformat").onclick = function() {
  6433. toggleSettings("timeformat");
  6434. };
  6435. document.getElementById("mptlanguage").onclick = function() {
  6436. toggleSettings("language");
  6437. };
  6438. document.getElementById("mptenableDeviders").onclick = function() {
  6439. toggleSettings("enableDeviders");
  6440. };
  6441. document.getElementById("mptenableInlineMode").onclick = function() {
  6442. toggleSettings("enableInlineMode");
  6443. };
  6444. document.getElementById("mptenableEditormode").onclick = function() {
  6445. toggleSettings("enableEditormode");
  6446. };
  6447. document.getElementById("mptenableIMGautoload").onclick = function() {
  6448. toggleSettings("enableIMGautoload");
  6449. };
  6450. document.getElementById("mptenableFarerules").onclick = function() {
  6451. toggleSettings("enableFarerules");
  6452. };
  6453. document.getElementById("mptenablePricebreakdown").onclick = function() {
  6454. toggleSettings("enablePricebreakdown");
  6455. };
  6456. document.getElementById("mptlinkFontsize").onclick = function() {
  6457. toggleSettings("linkFontsize");
  6458. };
  6459. document.getElementById("mptshowAllAirlines").onclick = function() {
  6460. toggleSettings("showAllAirlines");
  6461. };
  6462. document.getElementById("mptenablePlanefinder").onclick = function() {
  6463. toggleSettings("enablePlanefinder");
  6464. };
  6465. document.getElementById("mptenableSeatguru").onclick = function() {
  6466. toggleSettings("enableSeatguru");
  6467. };
  6468. document.getElementById("mptenableWheretocredit").onclick = function() {
  6469. toggleSettings("enableWheretocredit");
  6470. };
  6471. document.getElementById("mptCabintoggler").onclick = function() {
  6472. toggleSettings("cabin");
  6473. };
  6474. document.getElementById("configcloser").onclick = function() {
  6475. Object(utils["l" /* toggleVis */])(document.getElementById("mptSettings"));
  6476. };
  6477. document.getElementById("mptStartparse").onclick = function() {
  6478. setTimeout(function() {
  6479. render();
  6480. }, 50);
  6481. };
  6482.  
  6483. Object.keys(userSettings["d" /* registeredSettings */]).forEach(setting => {
  6484. document.getElementById("mpt" + setting).onclick = function() {
  6485. toggleSettings(setting);
  6486. };
  6487. });
  6488.  
  6489. // Build passengers
  6490. target = document.getElementById("mptPassengers");
  6491. str = '<div style="float:left;width:25%">';
  6492. str +=
  6493. '<div style="margin:2px 0"><label style="width:100px;display:inline-block">Adults: </label> <select name="numAdults" id="numAdults" style="width:50px">';
  6494. for (var i = 1; i <= 9; i++) {
  6495. str += "<option>" + i + "</option>";
  6496. }
  6497. str += "</select></div>";
  6498. str +=
  6499. '<div style="margin:2px 0"><label style="width:100px;display:inline-block">Infants (Lap): </label> <select name="numInfantsLap" id="numInfantsLap" style="width:50px">';
  6500. for (var i = 0; i <= 9; i++) {
  6501. str += "<option>" + i + "</option>";
  6502. }
  6503. str += "</select></div>";
  6504. str +=
  6505. '<div style="margin:2px 0"><label style="width:100px;display:inline-block">Infants (Seat): </label> <select name="numInfantsSeat" id="numInfantsSeat" style="width:50px">';
  6506. for (var i = 0; i <= 9; i++) {
  6507. str += "<option>" + i + "</option>";
  6508. }
  6509. str += "</select></div>";
  6510. str += '</div><div style="float:left;width:25%">';
  6511. for (var k = 1; k <= 3; k++) {
  6512. str +=
  6513. '<div style="margin:2px 0"><label style="width:100px;display:inline-block">Child ' +
  6514. k +
  6515. ' - Age: </label> <select name="child' +
  6516. k +
  6517. 'age" id="child' +
  6518. k +
  6519. 'age" style="width:50px">';
  6520. str += '<option value="-1">-</option>';
  6521. for (var i = 2; i <= 17; i++) {
  6522. str += '<option value="' + i + '">' + i + "</option>";
  6523. }
  6524. str += "</select></div>";
  6525. }
  6526. str += '</div><div style="float:left;width:25%">';
  6527. for (var k = 4; k <= 6; k++) {
  6528. str +=
  6529. '<div style="margin:2px 0"><label style="width:100px;display:inline-block">Child ' +
  6530. k +
  6531. ' - Age: </label> <select name="child' +
  6532. k +
  6533. 'age" id="child' +
  6534. k +
  6535. 'age" style="width:50px">';
  6536. str += '<option value="-1">-</option>';
  6537. for (var i = 2; i <= 17; i++) {
  6538. str += '<option value="' + i + '">' + i + "</option>";
  6539. }
  6540. str += "</select></div>";
  6541. }
  6542. str += '</div><div style="float:left;width:25%">';
  6543. for (var k = 7; k <= 8; k++) {
  6544. str +=
  6545. '<div style="margin:2px 0"><label style="width:100px;display:inline-block">Child ' +
  6546. k +
  6547. ' - Age: </label> <select name="child' +
  6548. k +
  6549. 'age" id="child' +
  6550. k +
  6551. 'age" style="width:50px">';
  6552. str += '<option value="-1">-</option>';
  6553. for (var i = 2; i <= 17; i++) {
  6554. str += '<option value="' + i + '">' + i + "</option>";
  6555. }
  6556. str += "</select></div>";
  6557. }
  6558. str +=
  6559. '<div style="width:150px;margin:2px 0"><div id="mtpConfirmPax" style="float:left;width:50%;text-align:center;cursor:pointer;font-weight:bold">Confirm</div><div id="mtpCancelPax" style="float:left;width:50%;text-align:center;cursor:pointer;font-weight:bold">Cancel</div></div>';
  6560. str += '</div><div style="clear:both;"></div>';
  6561. target.innerHTML = str;
  6562. document.getElementById("mtpCancelPax").onclick = function() {
  6563. Object(utils["l" /* toggleVis */])(document.getElementById("mptPassengers"));
  6564. };
  6565. document.getElementById("mtpConfirmPax").onclick = function() {
  6566. processPassengers();
  6567. };
  6568. }
  6569.  
  6570. function restoreDefaultSettings() {
  6571. // this function will remove any saved settings and restore default values
  6572. if (
  6573. window.confirm(
  6574. "Are you sure you want to reset any saved settings to the default values? The page will automatically reload to complete the reset."
  6575. )
  6576. ) {
  6577. (async () => {
  6578. if (typeof GM === "undefined" || typeof GM.info != "undefined") {
  6579. await Object(userSettings["e" /* saveUserSettings */])(null);
  6580. }
  6581. // Reload the current page:
  6582. window.location.reload();
  6583. })(); // end async for GM4
  6584. }
  6585. }
  6586.  
  6587. function toggleSettings(target) {
  6588. console.log("toggleSettings called. target=" + target);
  6589.  
  6590. if (userSettings["d" /* registeredSettings */][target] && userSettings["d" /* registeredSettings */][target].values) {
  6591. const pos = findPositionForValue(
  6592. userSettings["a" /* default */][target],
  6593. userSettings["d" /* registeredSettings */][target].values
  6594. );
  6595. if (pos >= userSettings["d" /* registeredSettings */][target].values.length - 1 || pos === -1) {
  6596. userSettings["a" /* default */][target] = userSettings["d" /* registeredSettings */][target].values[0].value;
  6597. } else {
  6598. userSettings["a" /* default */][target] =
  6599. userSettings["d" /* registeredSettings */][target].values[pos + 1].value;
  6600. }
  6601. } else {
  6602. switch (target) {
  6603. case "timeformat":
  6604. if (userSettings["a" /* default */].timeformat == "12h") {
  6605. userSettings["a" /* default */].timeformat = "24h";
  6606. } else {
  6607. userSettings["a" /* default */].timeformat = "12h";
  6608. }
  6609. break;
  6610. case "language":
  6611. if (userSettings["a" /* default */].language == "de") {
  6612. userSettings["a" /* default */].language = "en";
  6613. } else {
  6614. userSettings["a" /* default */].language = "de";
  6615. }
  6616. break;
  6617. case "linkFontsize":
  6618. if (
  6619. userSettings["a" /* default */].linkFontsize <= 190 &&
  6620. userSettings["a" /* default */].linkFontsize >= 50
  6621. ) {
  6622. userSettings["a" /* default */].linkFontsize += 10;
  6623. } else {
  6624. userSettings["a" /* default */].linkFontsize = 50;
  6625. }
  6626. break;
  6627. case "cabin":
  6628. if (appSettings["a" /* default */].cabin === "Auto") {
  6629. appSettings["a" /* default */].cabin = "Y";
  6630. } else if (appSettings["a" /* default */].cabin === "Y") {
  6631. appSettings["a" /* default */].cabin = "Y+";
  6632. } else if (appSettings["a" /* default */].cabin === "Y+") {
  6633. appSettings["a" /* default */].cabin = "C";
  6634. } else if (appSettings["a" /* default */].cabin === "C") {
  6635. appSettings["a" /* default */].cabin = "F";
  6636. } else if (appSettings["a" /* default */].cabin === "F") {
  6637. appSettings["a" /* default */].cabin = "Auto";
  6638. }
  6639. document.getElementById("mptCabinMode").innerHTML = appSettings["a" /* default */].cabin;
  6640.  
  6641. // refresh links
  6642. Object(links["b" /* printLinksContainer */])();
  6643. break;
  6644. default:
  6645. if (userSettings["a" /* default */][target] == 1) {
  6646. userSettings["a" /* default */][target] = 0;
  6647. } else {
  6648. userSettings["a" /* default */][target] = 1;
  6649. }
  6650. }
  6651. }
  6652. document.getElementById(
  6653. "mpt" + target
  6654. ).firstElementChild.innerHTML = printSettingsvalue(target);
  6655. Object(userSettings["e" /* saveUserSettings */])();
  6656. }
  6657.  
  6658. function processPassengers() {
  6659. var paxText = "";
  6660. var e = document.getElementById("numAdults");
  6661. paxSettings["a" /* default */].adults = Number(e.options[e.selectedIndex].value);
  6662. e = document.getElementById("numInfantsLap");
  6663. paxSettings["a" /* default */].infantsLap = Number(e.options[e.selectedIndex].value);
  6664. e = document.getElementById("numInfantsSeat");
  6665. paxSettings["a" /* default */].infantsSeat = Number(e.options[e.selectedIndex].value);
  6666. paxSettings["a" /* default */].cAges = new Array();
  6667. for (var i = 1; i <= 8; i++) {
  6668. processChild("child" + i + "age");
  6669. }
  6670. paxText =
  6671. paxSettings["a" /* default */].adults +
  6672. "a" +
  6673. (paxSettings["a" /* default */].cAges.length > 0
  6674. ? " " + paxSettings["a" /* default */].cAges.length + "c"
  6675. : "") +
  6676. (paxSettings["a" /* default */].infantsLap + paxSettings["a" /* default */].infantsSeat > 0
  6677. ? " " +
  6678. (paxSettings["a" /* default */].infantsLap + paxSettings["a" /* default */].infantsSeat) +
  6679. "i"
  6680. : "");
  6681. document.getElementById("mtpPaxCount").innerHTML = paxText;
  6682. Object(utils["l" /* toggleVis */])(document.getElementById("mptPassengers"));
  6683. // reload links
  6684. Object(links["b" /* printLinksContainer */])();
  6685. }
  6686.  
  6687. function processChild(target) {
  6688. var e = document.getElementById(target);
  6689. var tmp = 0;
  6690. tmp = Number(e.options[e.selectedIndex].value);
  6691. if (tmp >= 2) {
  6692. paxSettings["a" /* default */].cAges.push(tmp);
  6693. }
  6694. }
  6695.  
  6696. function printSettingsvalue(target) {
  6697. if (userSettings["d" /* registeredSettings */][target]) {
  6698. return findNameForValue(
  6699. userSettings["a" /* default */][target],
  6700. userSettings["d" /* registeredSettings */][target].values
  6701. );
  6702. }
  6703.  
  6704. switch (target) {
  6705. case "timeformat":
  6706. return userSettings["a" /* default */].timeformat;
  6707. case "language":
  6708. return userSettings["a" /* default */].language;
  6709. case "linkFontsize":
  6710. return userSettings["a" /* default */].linkFontsize.toString();
  6711. default:
  6712. return boolToEnabled(userSettings["a" /* default */][target]);
  6713. }
  6714. }
  6715.  
  6716. function findNameForValue(needle, haystack) {
  6717. var ret = "Unknown";
  6718. for (var i in haystack) {
  6719. if (haystack[i].value == needle) {
  6720. return haystack[i].name;
  6721. }
  6722. }
  6723. return ret;
  6724. }
  6725.  
  6726. function findPositionForValue(needle, haystack) {
  6727. return haystack.findIndex(o => o.value == needle);
  6728. }
  6729.  
  6730. function boolToEnabled(value) {
  6731. if (value == 1) {
  6732. return "enabled";
  6733. } else {
  6734. return "disabled";
  6735. }
  6736. }
  6737.  
  6738. // CONCATENATED MODULE: ./src/index.js
  6739.  
  6740.  
  6741.  
  6742.  
  6743.  
  6744.  
  6745.  
  6746.  
  6747.  
  6748.  
  6749. /**************************************** Start Script *****************************************/
  6750.  
  6751. // *** DO NOT CHANGE BELOW THIS LINE***/
  6752. (async () => {
  6753. await Object(userSettings["b" /* loadUserSettings */])();
  6754. createUsersettings();
  6755. injectCss();
  6756.  
  6757. if (window.top === window.self) {
  6758. if (appSettings["a" /* default */].scriptEngine === 0) {
  6759. startScript();
  6760. } else {
  6761. // execute language detection and afterwards functions for current page
  6762. if (typeof window.addEventListener !== "undefined") {
  6763. window.addEventListener("load", () => startScript(), false);
  6764. } else {
  6765. window.onload = () => startScript();
  6766. }
  6767. }
  6768. }
  6769. })(); // end async for GM4
  6770.  
  6771. function startScript() {
  6772. if (window.location.href !== appSettings["a" /* default */].laststatus) {
  6773. setTimeout(function() {
  6774. Object(appSettings["d" /* reset */])();
  6775. cleanUp();
  6776. getPageLang();
  6777. }, 100);
  6778. appSettings["a" /* default */].laststatus = window.location.href;
  6779. }
  6780. if (appSettings["a" /* default */].scriptrunning === 1) {
  6781. setTimeout(function() {
  6782. startScript();
  6783. }, 500);
  6784. }
  6785. }
  6786.  
  6787. /**************************************** Get Language *****************************************/
  6788. function getPageLang() {
  6789. if (window.location.href.indexOf("view-details") != -1) {
  6790. setTimeout(function() {
  6791. fePS();
  6792. }, 200);
  6793. } else if (
  6794. window.location.href.indexOf("#search:") != -1 ||
  6795. window.location.href == "https://matrix.itasoftware.com/" ||
  6796. window.location.href == "https://matrix.itasoftware.com/"
  6797. ) {
  6798. setTimeout(function() {
  6799. startPage();
  6800. }, 200);
  6801. }
  6802. }
  6803. /********************************************* Start page *********************************************/
  6804. function startPage() {
  6805. // try to get content
  6806. if (!Object(itaSettings["b" /* findTargetSetVersion */])(settings => settings.startpage.maindiv, 1)) {
  6807. Object(utils["h" /* printNotification */])("Error: Unable to find content on start page.");
  6808. return false;
  6809. } else {
  6810. // apply style-fix
  6811. const target = Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].startpage.maindiv, 1);
  6812. target.children[0].children[0].children[0].children[0].setAttribute(
  6813. "valign",
  6814. "top"
  6815. );
  6816. }
  6817. }
  6818. /********************************************* Result page *********************************************/
  6819.  
  6820. //Primary function for extracting flight data from ITA/Matrix
  6821. function fePS() {
  6822. // try to get content
  6823. const itin = Object(itaSettings["b" /* findTargetSetVersion */])(settings => settings.resultpage.itin, 1);
  6824. if (!itin) {
  6825. Object(utils["h" /* printNotification */])("Error: Unable to find Content on result page.");
  6826. return false;
  6827. }
  6828. // retry if itin not loaded
  6829. if (itin.parentElement.previousElementSibling.style.display != "none") {
  6830. appSettings["a" /* default */].retrycount++;
  6831. if (appSettings["a" /* default */].retrycount > 50) {
  6832. Object(utils["h" /* printNotification */])(
  6833. "Error: Timeout on result page. Content not found after 10s."
  6834. );
  6835. return false;
  6836. }
  6837. setTimeout(function() {
  6838. fePS();
  6839. }, 200);
  6840. return false;
  6841. }
  6842. // do some self-testing to prevent crashing on class-changes
  6843. for (let i in itaSettings["a" /* default */].resultpage) {
  6844. if (Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage[i], 1) === undefined) {
  6845. Object(utils["h" /* printNotification */])(
  6846. "Error: Unable to find class " +
  6847. itaSettings["a" /* default */].resultpage[i] +
  6848. " for " +
  6849. i +
  6850. "."
  6851. );
  6852. return false;
  6853. }
  6854. }
  6855.  
  6856. Object(parse_itin["c" /* readItinerary */])();
  6857. render();
  6858. }
  6859.  
  6860. function injectCss() {
  6861. var css = "",
  6862. head = document.head || document.getElementsByTagName("head")[0],
  6863. style = document.createElement("style");
  6864. style.type = "text/css";
  6865.  
  6866. css +=
  6867. ".pt-hover-menu { position:absolute; padding: 8px; background-color: #FFF; border: 1px solid #808080; display:none; }";
  6868. css += ".pt-hover-container:hover .pt-hover-menu { display:inline; }";
  6869.  
  6870. style.appendChild(document.createTextNode(css));
  6871.  
  6872. head.appendChild(style);
  6873. }
  6874.  
  6875.  
  6876. /***/ })
  6877. /******/ ]);