Guest User

Untitled

a guest
Oct 11th, 2016
1,243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 420.21 KB | None | 0 0
  1. SIA.stickySidebar = function() {
  2. var global = SIA.global,
  3. win = global.vars.win;
  4. var bookingNav = $("[data-fixed].sidebar");
  5. var innerBookingNav = bookingNav.children(".inner");
  6. if (bookingNav.length) {
  7. win.scrollTop(0);
  8. var wrapperBookingNav = bookingNav.parent();
  9. var startScroll, maxScroll, topRelative;
  10. win.off("scroll.sticky").on("scroll.sticky", function() {
  11. if (window.innerWidth >= global.config.tablet) {
  12. var currentTop = win.scrollTop();
  13. startScroll = bookingNav.offset().top;
  14. maxScroll = (wrapperBookingNav.height() + wrapperBookingNav.offset().top) - innerBookingNav.height() - 140;
  15. topRelative = bookingNav.height() - innerBookingNav.height();
  16. innerBookingNav.css({
  17. left: bookingNav.offset().left
  18. });
  19. if (startScroll <= currentTop) {
  20. innerBookingNav.removeClass("inner-relative").addClass("inner-fixed").css("top", "");
  21. if (currentTop + innerBookingNav.height() >= bookingNav.height() + startScroll) {
  22. innerBookingNav.removeClass("inner-fixed").addClass("inner-relative").css({
  23. top: topRelative
  24. });
  25. }
  26. } else {
  27. innerBookingNav.removeClass("inner-fixed inner-relative").css("top", "");
  28. }
  29. }
  30. });
  31. win.off("resize.stickySidebar").on("resize.stickySidebar", function() {
  32. innerBookingNav.css("left", "auto");
  33. if (window.innerWidth < global.config.tablet) {
  34. innerBookingNav.removeClass("inner-fixed").removeClass("inner-relative");
  35. }
  36. });
  37. }
  38. };
  39. var WTFROLAND = WTFROLAND || {};
  40. $(document).ready(function() {
  41. $("#seat-4-submit").click(function() {
  42. var nexttab = $(".seat-tabs .tab .tab-item.active").next().find("a");
  43. setPassenger();
  44. $("#jQserialValue").val(true);
  45. if ($("#seat-4-submit").val() != saar5.l.seateconomy.nextflightcontinue && $("#seat-4-submit").val() != saar5.l.seateconomy.next) {
  46. var newFlightDate = $('[name="newFlightDate"]');
  47. var newFlightNumber = $('[name="newFlightNumber"]');
  48. var newDepartureSegment = $('[name="newDepartureSegment"]');
  49. var newArrivalSegment = $('[name="newArrivalSegment"]');
  50. newFlightDate.val(nexttab.attr("data-flightdate"));
  51. newFlightNumber.val(nexttab.attr("data-flightnumber"));
  52. newDepartureSegment.val(nexttab.attr("data-departsegment"));
  53. newArrivalSegment.val(nexttab.attr("data-arrivalsegment"));
  54. $("#_eventId_updateSeatMapEvent_submitSeatSelection").val("randomFlight");
  55. } else {
  56. $("#_eventId_updateSeatMapEvent_submitSeatSelection").val("updateSeatMap");
  57. }
  58. $("#_eventId").val("updateSeatMapEvent");
  59. $("#sidebar-tab-select").attr("name", "sidebartabselect");
  60. $("[id^=preferred-seat-]").attr("name", "preferredseat");
  61. });
  62. $("#seat-3-submit").click(function() {
  63. setPassenger();
  64. $("#jQserialValue").val(true);
  65. $("#_eventId").val("updateSeatMapEvent");
  66. $("#_eventId_updateSeatMapEvent_submitSeatSelection").val("updateSeatMap");
  67. $("#sidebar-tab-select").attr("name", "sidebartabselect");
  68. $("[id^=preferred-seat-]").attr("name", "preferredseat");
  69. });
  70. $("#form-prefer-submit-1").click(function(e) {
  71. e.preventDefault();
  72. setPassenger();
  73. $("#jQserialValue").val(true);
  74. $("#_eventId").val("updateSeatMapEvent");
  75. $("#sidebar-tab-select").attr("name", "sidebartabselect");
  76. $("[id^=preferred-seat-]").attr("name", "preferredseat");
  77. $("#form-seatmap").submit();
  78. });
  79. $(".multi-select.tab-select").change(function() {
  80. var preload = $(".overlay-loading");
  81. preload.removeClass("hidden").css("display", "block");
  82. $("#tab-clicked").val("true");
  83. setPassenger();
  84. $("#jQserialValue").val(true);
  85. $("#_eventId_updateSeatMapEvent_submitSeatSelection").val("randomFlight");
  86. $("#_eventId").val("updateSeatMapEvent");
  87. $("#sidebar-tab-select").attr("name", "sidebartabselect");
  88. $("[id^=preferred-seat-]").attr("name", "preferredseat");
  89. });
  90. });
  91. WTFROLAND.FileDrop = (function() {
  92. var overlay = $('<div class="drop-overlay" style="width:100%; height:100%; z-index: 99999; position: fixed; top:0; left: 0; background-color: rgba(255,255,255,0.95); overflow: hidden; -webkit-animation-duration: 1s"></div>');
  93. var dragTarget = $('<h1 style="font-size: 40px; position: relative; top: 30vh; left: 35vw; line-height: 40vh; padding: 30px; text-align:center; display block; width: 30vw; height: 40vh; border: 6px dash #333; border-style: dashed; border-radius: 20px; -webkit-animation-duration: 1s;">Drag file here.</h1>');
  94. var dragcont = $('<div class="hidden"></div>');
  95. var hasDragObj = false;
  96. var win = $(window);
  97. var body = $("body");
  98. var init = function() {
  99. body.append(dragcont);
  100. overlay.append(dragTarget);
  101. win.on({
  102. "dragover": function(e) {
  103. e.preventDefault();
  104. e.stopPropagation();
  105. if (!hasDragObj) {
  106. $("body").append(overlay);
  107. overlay.addClass("animated bounceInDown");
  108. overlay.one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend", function() {
  109. $(this).off().removeClass("animated bounceInDown");
  110. });
  111. hasDragObj = true;
  112. }
  113. body.addClass("no-overflow");
  114. return false;
  115. },
  116. "dragend": function(e) {
  117. e.preventDefault();
  118. e.stopPropagation();
  119. if (hasDragObj) {
  120. overlay.addClass("animated bounceOutDown");
  121. overlay.one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend", function() {
  122. $(this).off().removeClass("animated bounceOutDown");
  123. dragcont.append(overlay);
  124. hasDragObj = false;
  125. });
  126. }
  127. return false;
  128. },
  129. "drop": function(e) {
  130. e.preventDefault();
  131. e.stopPropagation();
  132. var file = e.originalEvent.dataTransfer.files[0],
  133. reader = new FileReader();
  134. reader.onload = function(event) {
  135. var handler = dragcont.data("handler");
  136. handler(event.target.result);
  137. };
  138. reader.readAsText(file);
  139. win.trigger("dragend");
  140. body.removeClass("no-overflow");
  141. return false;
  142. }
  143. });
  144. dragTarget.on({
  145. "dragenter": function(e) {
  146. e.preventDefault();
  147. e.stopPropagation();
  148. dragTarget.addClass("animated bounce");
  149. dragTarget.one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend", function() {
  150. $(this).removeClass("animated bounce");
  151. });
  152. return false;
  153. }
  154. });
  155. };
  156. var fileDrop = {
  157. dragcont: dragcont,
  158. init: init
  159. };
  160. return fileDrop;
  161. })();
  162. SIA.RenderSeat = (function() {
  163. var global = SIA.global;
  164. var body = global.vars.body;
  165. var container = $(".main-inner");
  166. var tabs = container.find(".seat-tabs>.tab");
  167. var select = container.find("#main-tab-select");
  168. var paxNav = container.find(".seat-tabs .tab-wrapper .booking-nav");
  169. var paxSelect, paxLabel;
  170. var paxPopup = $("#paxPopup .pax-group");
  171. var seatForm = container.find("#form-seatmap");
  172. var seatContainer = seatForm.children(".seatmap");
  173. var flightHeader = seatForm.siblings(".blk-heading");
  174. var equipCont = seatForm.find(".seat-equipped");
  175. var equipContUD = equipCont.clone(false).attr("id", "seat-ud").html("").addClass("hidden");
  176. equipCont.attr("id", "seat-md").before(equipContUD);
  177. var seatsCont = seatForm.find(".seatmap-content");
  178. var deckNav = seatsCont.find(".seat-deck-nav");
  179. var mainDeck = $('<div id="main-deck" class="seat-deck"></div>');
  180. var upperDeck = $('<div id="upper-deck" class="seat-deck"></div>');
  181. var wingCont = seatForm.find(".seat-bg");
  182. var seatObjects = {
  183. template: {
  184. cabin: '<div class="seatmap-cabin"><div class="seatmap-cabin-row seatmap-toprow"></div><div class="seatmap-cabin-wrapper"></div></div>',
  185. blk: '<div class="seatmap-row-block"></div>',
  186. seatRow: '<div class="seatmap-cabin-row"><span class="seatmap-rownum left">{0}</span><span class="seatmap-rownum right">{0}</span></div>',
  187. sLabel: '<div class="seatmap-columnletter">{1}</div>',
  188. seatColumn: '<div class="seatmap-row-block"></div>',
  189. aisle: '<div class="seat-aisle"></div>',
  190. inforSeat: '<span class="passenger-info__seat"></span>',
  191. space: '<div class="seatmap-cabin-separate"></div>',
  192. equipment: '<span class="seat-equipped-item">All seats are equipped with:</span>',
  193. equipmentLegend: '<div class="seat-legend"><div class="seat-legend-content"></div><a href="#" class="seat-legend__control">seat legend<em class="ico-down"></em></a></div>',
  194. wingStart: '<div class="seatmap-wings seatmap-wingstart"><div class="seatmap-wing-content"><span class="seatmap-wingtip left"><img src="/saar5/images/wing-start-l.png" alt="" /></span><span class="seatmap-wingtip right"><img src="/saar5/images/wing-start-r.png" alt="" /></span></div></div>',
  195. wingEnd: '<div class="seatmap-wings seatmap-wingend"><div class="seatmap-wing-content"><span class="seatmap-wingtip left"><img src="/saar5/images/wing-end-l.png" alt="" /></span><span class="seatmap-wingtip right"><img src="/saar5/images/wing-end-r.png" alt="" /></span></div></div>',
  196. genericMessage: "<p>Specific seat selection is not available on this flight, as it&rsquo;s operated by our partner airline. Please choose your preferred seat type, and we&rsquo;ll do our best to ensure that our partner airline fulfils your selection.</p>",
  197. genericSeats: '<div class="seatmap-content"><h4 class="sub-heading-2--grey">Legend</h4><div class="type-seatmap"><div class="type-seatmap-item"><div data-sia-rowblock="1" class="seatmap-row-block"><span class="seat seat-free">W</span><span class="seat seat-free">&nbsp;</span><span class="seat seat-free">A</span></div><div class="seat-aisle"></div><div data-sia-rowblock="2" class="seatmap-row-block"><span class="seat seat-free">A</span><span class="seat seat-free">&nbsp;</span><span class="seat seat-free">A</span></div><div class="seat-aisle"></div><div data-sia-rowblock="3" class="seatmap-row-block"><span class="seat seat-free">A</span><span class="seat seat-free">&nbsp;</span><span class="seat seat-free">W</span></div></div></div><p class="note-text">Aircraft types may vary. For details, get in touch with our partner airline operating this flight.</p></div>',
  198. messageforRailCoach: "<p>Seat selection is not available for non-flight segments.</p>",
  199. wcag: {
  200. tpl: '<label for="" class="wcag" style="font-size:0;"></label>',
  201. seatPreferred: '<label for="" class="wcag" style="font-size:0;"></label><input type="text" id="" value="" class="hidden wcag" readonly="readonly" />',
  202. seatNormal: '<label for="" class="wcag" style="font-size:0;"></label><input type="text" id="" value="" class="hidden wcag" readonly="readonly" />',
  203. seatBassinet: '<label for="" class="wcag" style="font-size:0;"></label><input type="text" id="" value="" class="hidden wcag" readonly="readonly" />'
  204. }
  205. },
  206. deckClass: null
  207. };
  208. var cabinVO, rowVO, cl, rl, actLeg;
  209. var preselected = [],
  210. preselAttr = [],
  211. cabins = [],
  212. rows = [],
  213. paxGroups = [],
  214. paxTabs = [],
  215. paxOptions = [],
  216. paxRadios = [];
  217. var tabInfo = function() {
  218. var flightInfo = globalJson.seatMap.seatMapVO.flightDateInformationVO;
  219. var airCraftInfo = globalJson.seatMap.aircraftEquipmentVO.meansOfTransport;
  220. var l = flightInfo.length;
  221. for (var i = 0; i < l; i++) {
  222. var cinfo = flightInfo[i];
  223. var active = cinfo.selected === "true" ? " active" : "";
  224. var selected = cinfo.selected === "true" ? ' selected="selected"' : "";
  225. if (cinfo.selected === "true") {
  226. actLeg = cinfo;
  227. }
  228. var tab = null;
  229. var ct = '<div data-customselect="true" class="custom-select custom-select--2 hidden" data-replace-text-by-plane="to">' + '<label for="multi-select-limit-' + i + '" class="select__label">&nbsp;</label><span class="select__text">' + cinfo.departureCityCode + ' <em class="ico-plane">?</em> ' + cinfo.arrivalCityCode + '</span><span class="ico-dropdown"></span>' + '<select id="multi-select-limit-' + i + '" name="multi-select-limit">' + "</select>" + "</div>";
  230. tab = $('<li class="tab-item' + active + '"><a href="javascript:void(0)" data-flightnumber="' + cinfo.marketingAirlineCode + cinfo.flightNumber + '" data-flightdate="' + cinfo.departureDate + '" data-departsegment="' + cinfo.departureCityCode + '" data-arrivalsegment="' + cinfo.arrivalCityCode + '">' + cinfo.departureCityCode + '<em class="ico-plane">&#xe601;</em>' + cinfo.arrivalCityCode + '<em class="ico-dropdown"></em></a>' + ct + "</li>");
  231. var opt = $('<option value="' + (i + 1) + '"' + selected + ' data-flightnumber="' + cinfo.marketingAirlineCode + cinfo.flightNumber + '" data-flightdate="' + cinfo.departureDate + '" data-departsegment="' + cinfo.departureCityCode + '" data-arrivalsegment="' + cinfo.arrivalCityCode + '">' + cinfo.departureCityCode + " to " + cinfo.arrivalCityCode + "</option>");
  232. tabs.append(tab);
  233. select.append(opt);
  234. if (l < 2) {
  235. tabs.hide();
  236. select.hide();
  237. }
  238. if (cinfo.selected === "true") {
  239. flightDetails(flightInfo[i].departureCity, flightInfo[i].arrivalCity, flightInfo[i].carrierNumber, airCraftInfo, flightInfo[i].classOfService, flightInfo[i].aircraftType);
  240. if (typeof flightInfo[i].operatingCarrier !== "undefined" && flightInfo[i].operatingCarrier != "") {
  241. var operatedBy = $("#seatOperatedBy");
  242. operatedBy.removeClass("hidden");
  243. var operatedByString = saar5.l.bookingsummary.operatedBy + " " + flightInfo[i].operatingCarrier;
  244. operatedBy.html(operatedByString);
  245. }
  246. }
  247. }
  248. if (l >= 3 && l <= 7) {
  249. tabs.parent().addClass("multi-tabs");
  250. } else {
  251. if (l > 7) {
  252. tabs.parent().addClass("multi-tabs-extra");
  253. }
  254. }
  255. };
  256. var tabWrapper = tabs.parent();
  257. var buildSelectForLongText = function() {
  258. var indexLimitTab = 0;
  259. var totalwid = 0;
  260. var tabItem = tabs.children();
  261. tabItem.each(function(i) {
  262. var self = $(this);
  263. var ctselect = self.find("select");
  264. ctselect.empty().append(select.children(":eq(" + i + "),:gt(" + i + ")").clone());
  265. if (totalwid + self.outerWidth() <= global.config.tablet && !tabItem.eq(indexLimitTab).hasClass("limit-item")) {
  266. totalwid += (self.outerWidth() - (self.find("em.ico-dropdown").is(":hidden") ? 0 : self.find("em.ico-dropdown").outerWidth(true)));
  267. indexLimitTab = i;
  268. } else {
  269. if (!tabItem.eq(indexLimitTab).hasClass("limit-item")) {
  270. tabItem.eq(indexLimitTab).addClass("limit-item").children("[data-customselect]").removeClass("hidden");
  271. }
  272. }
  273. });
  274. tabWrapper.addClass("multi-tabs");
  275. tabItem.filter(":gt(" + indexLimitTab + ")").addClass("hidden");
  276. if (tabItem.eq(indexLimitTab).hasClass("limit-item")) {
  277. var multiSelect = tabItem.eq(indexLimitTab).find("select");
  278. var customSelectEl = multiSelect.closest("[data-customselect]");
  279. var limitItem = customSelectEl.closest(".limit-item");
  280. var indexOfFakeTab = limitItem.index();
  281. var indexTab = limitItem.is(".active") ? indexOfFakeTab : limitItem.siblings("li.active").index();
  282. var indexHolder = 0;
  283. customSelectEl.customSelect({
  284. itemsShow: 5,
  285. heightItem: 43,
  286. scrollWith: 2
  287. });
  288. var changeIcon = function() {
  289. var displayTxtEl = customSelectEl.find(customSelectEl.data("customSelect").options.customText),
  290. txt = multiSelect.find("option:selected").text(),
  291. txtReplace = customSelectEl.data("replaceTextByPlane"),
  292. regx = new RegExp(txtReplace, "gi");
  293. displayTxtEl.html(txt.replace(regx, '<em class="ico-plane">?</em>'));
  294. customSelectEl.siblings(".mark-desktop").html(txt.replace(regx, '<em class="ico-plane">?</em>') + '<em class="ico-dropdown"></em>');
  295. };
  296. customSelectEl.off("beforeSelect.triggerTab").on("beforeSelect.triggerTab", function() {
  297. changeIcon();
  298. });
  299. if (tabs.data("click-through")) {
  300. customSelectEl.addClass("click-through");
  301. customSelectEl.off("click.triggerTab").on("click.triggerTab", function() {
  302. customSelectEl.closest("li").find("> a").trigger("click.switch-flight");
  303. });
  304. }
  305. customSelectEl.off("afterSelect.triggerTab").on("afterSelect.triggerTab", function() {
  306. changeIcon();
  307. var curIndex = customSelectEl.data("customSelect").element.curIndex;
  308. tabs.find("> li > a").eq(curIndex + indexOfFakeTab).trigger("click.switch-flight");
  309. if (indexTab >= indexLimitTab) {
  310. multiSelect.prop("selectedIndex", indexHolder);
  311. customSelectEl.customSelect("refresh");
  312. changeIcon();
  313. }
  314. });
  315. if (indexTab > indexLimitTab) {
  316. multiSelect.prop("selectedIndex", indexTab - limitItem.index());
  317. indexHolder = indexTab - limitItem.index();
  318. customSelectEl.customSelect("refresh");
  319. limitItem.siblings("li.active").removeClass("active").end().addClass("active");
  320. }
  321. changeIcon();
  322. }
  323. };
  324. buildSelectForLongText();
  325. var flightDetails = function(o, d, cn, ac, c, at) {
  326. if (typeof ac === "undefined") {
  327. ac = "";
  328. } else {
  329. ac = ac + " ";
  330. }
  331. flightHeader.find("h3").html(o + " " + saar5.l.seateconomy.toLabel + " " + d);
  332. if (at === "TRN" || at === "BUS") {
  333. flightHeader.find("h4").html(cn + " " + ac);
  334. } else {
  335. flightHeader.find("h4").html(cn + " " + ac + "&ndash; " + c);
  336. }
  337. };
  338. var paxDetails = function() {
  339. var paxAr = globalJson.seatMap.passengerAndSeatAssociationVO;
  340. var start = globalJson.seatMap.seatMapVO.passengerStartingPoint;
  341. paxNav.html('<label class="tab-select_label hidden" for="sidebar-tab-select">&nbsp;</label><select name="sidebartabselect" id="sidebar-tab-select" class="tab-select"></select>');
  342. paxSelect = paxNav.find("#sidebar-tab-select");
  343. paxLabel = paxNav.find(".tab-select_label");
  344. paxPopup.html('<label class="tooltip__label">Select this seat for:</label>');
  345. var l = paxAr.length;
  346. var wChild = [];
  347. for (var i = 0; i < l; i++) {
  348. var po = paxAr[i];
  349. var active = (po.passengerId) == parseInt(start) ? " active" : "";
  350. var seat = "";
  351. var disabled = "";
  352. if (po.passengerType.toLowerCase() === "infant") {
  353. var ad;
  354. var newSeatVal = "";
  355. for (var j = l - 1; j >= 0; j--) {
  356. if (paxAr[j].passengerId === po.passengerId) {
  357. ad = paxAr[j];
  358. wChild.push(j);
  359. break;
  360. }
  361. }
  362. if (po.seatNumber.toLowerCase() !== "na") {
  363. var seatNo = po.seatNumber;
  364. if (seatNo.charAt(0) === "0") {
  365. seatNo = seatNo.slice(1);
  366. }
  367. seat = '<span class="passenger-info__seat">' + seatNo + "</span>";
  368. preselected.push([seatNo, po.passengerId, paxTabs.length + 1]);
  369. preselAttr.push(seatNo);
  370. disabled = ' disabled="disabled"';
  371. seatForm.prepend($('<input type="hidden" name="paxOld[]" value="paxOld' + po.passengerId + "-" + seatNo + '" data-paxindex="' + paxTabs.length + '">'));
  372. newSeatVal = seatNo;
  373. }
  374. if (ad.seatNumber.toLowerCase() !== "na") {
  375. var seatNo = ad.seatNumber;
  376. if (seatNo.charAt(0) === "0") {
  377. seatNo = seatNo.slice(1);
  378. }
  379. seat = '<span class="passenger-info__seat">' + seatNo + "</span>";
  380. preselected.push([seatNo, po.passengerId, paxTabs.length + 1]);
  381. preselAttr.push(seatNo);
  382. disabled = ' disabled="disabled"';
  383. seatForm.prepend($('<input type="hidden" name="paxOld[]" value="paxOld' + po.passengerId + "-" + seatNo + '" data-paxindex="' + paxTabs.length + '">'));
  384. newSeatVal = seatNo;
  385. }
  386. if (ad.seatNumber.toLowerCase() === "na" || po.seatNumber.toLowerCase() === "na") {
  387. seatForm.prepend($('<input type="hidden" name="paxOld[]" value="paxOld' + po.passengerId + '-NA" data-paxindex="' + paxTabs.length + '">'));
  388. }
  389. var adultName = ad.passengerName.length > 0 ? ad.passengerName + " - " + ad.passengerType : "Passenger " + (paxTabs.length + 1) + " - " + ad.passengerType;
  390. var infantName = po.passengerName.length > 0 ? po.passengerName + "<span>&nbsp;-&nbsp;" + po.passengerType + "</span>" : "Passenger " + (paxTabs.length + 1) + " - " + po.passengerType;
  391. var paxTab = $('<a href="#" class="booking-nav__item' + active + '"><span class="passenger-info"><span class="passenger-info__number">' + (paxTabs.length + 1) + '.</span><span class="passenger-info__text">' + adultName + " <br/> " + infantName + '</span><em class="ico-point-r"></em><input type="hidden" name="paxNew[]" data-name="' + po.passengerId + '" value="' + newSeatVal + '"></span>' + seat + "</a>");
  392. paxTab.data("paxDetails", [newSeatVal]);
  393. console.log(paxTab.data("paxDetails"));
  394. var option = $('<option value="' + (paxTabs.length + 1) + '">' + adultName + " - " + infantName + "(Infant)</option>");
  395. var paxRadio = $('<div class="custom-radio custom-radio--1 ' + (disabled ? "disabled" : "") + '"><input name="search-radio" id="seat-tooltip-radio-' + po.passengerId + '" type="radio"' + disabled + ' value="' + newSeatVal + '"><label for="seat-tooltip-radio-' + po.passengerId + '">' + adultName + " <br/> " + infantName + "</label>" + seat + "</div>");
  396. paxTab.attr("data-hasinfant", true);
  397. option.attr("data-hasinfant", true);
  398. paxGroups.push(ad);
  399. paxTabs.push(paxTab);
  400. paxOptions.push(option);
  401. paxRadios.push(paxRadio);
  402. } else {
  403. if (po.paxHasInfant.toLowerCase() === "yes") {
  404. continue;
  405. }
  406. var seatNo;
  407. var newSeatVal = "";
  408. if (po.seatNumber.toLowerCase() !== "na") {
  409. seatNo = po.seatNumber;
  410. if (seatNo.charAt(0) === "0") {
  411. seatNo = seatNo.slice(1);
  412. }
  413. seat = '<span class="passenger-info__seat">' + seatNo + "</span>";
  414. preselected.push([seatNo, po.passengerId, paxTabs.length + 1]);
  415. preselAttr.push(seatNo);
  416. disabled = ' disabled="disabled"';
  417. newSeatVal = seatNo;
  418. } else {
  419. seatNo = "NA";
  420. }
  421. var paxName = po.passengerName.length > 0 ? po.passengerName + " - " + po.passengerType : "Passenger " + (paxTabs.length + 1) + " - " + po.passengerType;
  422. var paxTab = $('<a href="#" class="booking-nav__item' + active + '"><span class="passenger-info"><span class="passenger-info__number">' + (paxTabs.length + 1) + '.</span><span class="passenger-info__text">' + paxName + '</span><em class="ico-point-r"></em><input type="hidden" name="paxNew[]" data-name="' + po.passengerId + '" value="' + newSeatVal + '"></span>' + seat + "</a>");
  423. paxTab.data("paxDetails", [newSeatVal]);
  424. console.log(paxTab.data("paxDetails"));
  425. var option = $('<option value="' + (paxTabs.length + 1) + '">' + paxName + "</option>");
  426. var paxRadio = $('<div class="custom-radio custom-radio--1 ' + (disabled ? "disabled" : "") + '"><input name="search-radio" id="seat-tooltip-radio-' + po.passengerId + '" type="radio"' + disabled + ' value="' + newSeatVal + '"><label for="seat-tooltip-radio-' + po.passengerId + '">' + paxName + "</label>" + seat + "</div>");
  427. if (po.oldSeatNumber) {
  428. paxTab = $('<a href="#" class="booking-nav__item' + active + '" data-oldseatnumber="' + po.oldSeatNumber + '" data-assignseatnumber="' + po.seatNumber + '"><span class="passenger-info"><span class="passenger-info__number">' + (paxTabs.length + 1) + '.</span><span class="passenger-info__text">' + paxName + '</span><em class="ico-point-r"></em><input type="hidden" name="paxNew[]" data-name="' + po.passengerId + '" value="' + newSeatVal + '"></span>' + seat + "</a>");
  429. paxRadio = $('<div class="custom-radio custom-radio--1 ' + (disabled ? "disabled" : "") + '"><input name="search-radio" data-oldseatnumber="' + po.oldSeatNumber + '" data-assignseatnumber="' + po.seatNumber + '" id="seat-tooltip-radio-' + po.passengerId + '" type="radio"' + disabled + ' value="' + newSeatVal + '"><label for="seat-tooltip-radio-' + po.passengerId + '">' + paxName + "</label>" + seat + "</div>");
  430. }
  431. if (po.passengerType.toLowerCase() === "child") {
  432. paxTab.attr("data-ischild", true);
  433. option.attr("data-ischild", true);
  434. }
  435. paxGroups.push(po);
  436. paxTabs.push(paxTab);
  437. paxOptions.push(option);
  438. paxRadios.push(paxRadio);
  439. seatForm.prepend($('<input type="hidden" name="paxOld[]" value="paxOld' + po.passengerId + "-" + seatNo + '" data-paxindex="' + paxTabs.length + '">'));
  440. }
  441. var wcag = $('<label for="paxNav' + i + '" class="wcag" style="font-size:0;">Passenger ' + paxTabs[paxTabs.length - 1].find(".passenger-info__text").text() + " selected seat " + paxTabs[paxTabs.length - 1].find(".passenger-info__seat").text() + '</label><input type="text" id="paxNav' + i + '" value="Passenger ' + paxTabs[paxTabs.length - 1].find(".passenger-info__text").text() + " selected seat " + paxTabs[paxTabs.length - 1].find(".passenger-info__seat").text() + '" class="hidden wcag" readonly="readonly" />');
  442. paxTabs[paxTabs.length - 1].append(wcag);
  443. }
  444. var pl = paxTabs.length;
  445. for (var i = 0; i < pl; i++) {
  446. paxLabel.before(paxTabs[i]);
  447. paxSelect.append(paxOptions[i]);
  448. paxPopup.append(paxRadios[i]);
  449. }
  450. seatContainer.attr("data-preselected", preselAttr.toString());
  451. };
  452. var updateInputFields = function() {
  453. var curFlight;
  454. for (var i = globalJson.seatMap.seatMapVO.flightDateInformationVO.length - 1; i >= 0; i--) {
  455. if (globalJson.seatMap.seatMapVO.flightDateInformationVO[i].selected === "true") {
  456. curFlight = globalJson.seatMap.seatMapVO.flightDateInformationVO[i];
  457. break;
  458. }
  459. }
  460. var flowIndicator = curFlight.FlowIndicator;
  461. var existingFlightDate = curFlight.departureDate;
  462. var existingFlightNumber = curFlight.flightNumber;
  463. var existingDepartureSegment = curFlight.departureCityCode;
  464. var existingArrivalSegment = curFlight.arrivalCityCode;
  465. var existingCabin = curFlight.existingCabin;
  466. var newFlightDate = curFlight.newFlightDate;
  467. var newFlightNumber = curFlight.newFlightNumber;
  468. var newDepartureSegment = curFlight.newDepartureSegment;
  469. var newArrivalSegment = curFlight.newArrivalSegment;
  470. var newCabin = curFlight.newCabin;
  471. var paymentRequired = curFlight.paymentRequired;
  472. if (typeof flowIndicator !== "undefined") {
  473. $('input[name="FlowIndicator"]').val(flowIndicator);
  474. } else {
  475. $('input[name="FlowIndicator"]').val("NA");
  476. }
  477. if (typeof existingFlightDate !== "undefined") {
  478. $('input[name="existingFlightDate"]').val(existingFlightDate);
  479. } else {
  480. $('input[name="existingFlightDate"]').val("NA");
  481. }
  482. if (typeof existingFlightNumber !== "undefined") {
  483. $('input[name="existingFlightNumber"]').val(existingFlightNumber);
  484. } else {
  485. $('input[name="existingFlightNumber"]').val("NA");
  486. }
  487. if (typeof existingFlightNumber !== "undefined") {
  488. $('input[name="existingFlightNumber"]').val(existingFlightNumber);
  489. } else {
  490. $('input[name="existingFlightNumber"]').val("NA");
  491. }
  492. if (typeof existingDepartureSegment !== "undefined") {
  493. $('input[name="existingDepartureSegment"]').val(existingDepartureSegment);
  494. } else {
  495. $('input[name="existingDepartureSegment"]').val("NA");
  496. }
  497. if (typeof existingArrivalSegment !== "undefined") {
  498. $('input[name="existingArrivalSegment"]').val(existingArrivalSegment);
  499. } else {
  500. $('input[name="existingArrivalSegment"]').val("NA");
  501. }
  502. if (typeof existingCabin !== "undefined") {
  503. $('input[name="existingCabin"]').val(existingCabin);
  504. } else {
  505. $('input[name="existingCabin"]').val("NA");
  506. }
  507. if (typeof newFlightDate !== "undefined") {
  508. $('input[name="newFlightDate"]').val(newFlightDate);
  509. } else {
  510. $('input[name="newFlightDate"]').val("NA");
  511. }
  512. if (typeof newFlightNumber !== "undefined") {
  513. $('input[name="newFlightNumber"]').val(newFlightNumber);
  514. } else {
  515. $('input[name="newFlightNumber"]').val("NA");
  516. }
  517. if (typeof newDepartureSegment !== "undefined") {
  518. $('input[name="newDepartureSegment"]').val(newDepartureSegment);
  519. } else {
  520. $('input[name="newDepartureSegment"]').val("NA");
  521. }
  522. if (typeof newArrivalSegment !== "undefined") {
  523. $('input[name="newArrivalSegment"]').val(newArrivalSegment);
  524. } else {
  525. $('input[name="newArrivalSegment"]').val("NA");
  526. }
  527. if (typeof newCabin !== "undefined") {
  528. $('input[name="newCabin"]').val(newCabin);
  529. } else {
  530. $('input[name="newCabin"]').val("NA");
  531. }
  532. if (typeof paymentRequired !== "undefined") {
  533. $('input[name="paymentRequired"]').val(paymentRequired);
  534. } else {
  535. $('input[name="paymentRequired"]').val("NA");
  536. }
  537. var paxObj = globalJson.seatMap.passengerAndSeatAssociationVO;
  538. var paxType = [];
  539. var oldSeatType = [];
  540. for (var j = paxObj.length - 1; j >= 0; j--) {
  541. paxType.push(paxObj[j].passengerId + "-" + paxObj[j].passengerType);
  542. oldSeatType.push(paxObj[j].passengerId + "-" + paxObj[j].seatType);
  543. }
  544. $('input[name="paxType"]').val(paxType);
  545. $('input[name="oldSeatType"]').val(oldSeatType);
  546. };
  547. var renderMap = function() {
  548. seatObjects.deckClass = actLeg.classOfService;
  549. var seatClass = actLeg.classOfService.toLowerCase().replace(" class", "");
  550. seatsCont.addClass("seatmap--" + seatClass);
  551. seatsCont.append(upperDeck).append(mainDeck);
  552. var rowcount = 0;
  553. for (var cbc = 0; cbc < cl; cbc++) {
  554. var cabin = $(seatObjects.template.cabin);
  555. var cabinWrap = cabin.find(".seatmap-cabin-wrapper");
  556. var cabinTop = cabin.find(".seatmap-toprow");
  557. cabinWrap.data("groupLabels", []);
  558. cabinWrap.data("groupWrapper", []);
  559. cabins.push([cabinWrap, cabinTop]);
  560. var curEquipCont;
  561. if (cabinVO[cbc].cabinDetailsVO.cabinLocation === "U") {
  562. upperDeck.append(cabin);
  563. curEquipCont = equipContUD;
  564. } else {
  565. mainDeck.append(cabin);
  566. curEquipCont = equipCont;
  567. }
  568. var seat = cabinVO[cbc].cabinDetailsVO.seat;
  569. var bed = cabinVO[cbc].cabinDetailsVO.bed;
  570. var power = cabinVO[cbc].cabinDetailsVO.power;
  571. var screen = cabinVO[cbc].cabinDetailsVO.screen;
  572. if (typeof seat !== "undefined" || typeof bed !== "undefined" || typeof power !== "undefined" || typeof screen !== "undefined" && curEquipCont.children().length) {
  573. var eq = seatObjects.template.equipment;
  574. var eql = seatObjects.template.equipmentLegend;
  575. curEquipCont.html("").append($(eq));
  576. if (typeof seat !== "undefined") {
  577. curEquipCont.append($('<span class="seat-equipped-item"><em class="ico-1-flat-bed"></em>' + cabinVO[cbc].cabinDetailsVO.seat + "</span>"));
  578. }
  579. if (typeof bed !== "undefined") {
  580. curEquipCont.append($('<span class="seat-equipped-item"><em class="ico-1-flat-bed"></em>' + cabinVO[cbc].cabinDetailsVO.bed + "</span>"));
  581. }
  582. if (typeof power !== "undefined") {
  583. curEquipCont.append($('<span class="seat-equipped-item"><em class="ico-1-plug-in"></em>' + cabinVO[cbc].cabinDetailsVO.power + "</span>"));
  584. }
  585. if (typeof screen !== "undefined") {
  586. curEquipCont.append($('<span class="seat-equipped-item"><em class="ico-1-screen"></em>' + cabinVO[cbc].cabinDetailsVO.screen + "</span>"));
  587. }
  588. }
  589. if (!curEquipCont.find(".seat-legend").length) {
  590. curEquipCont.append($(eql));
  591. }
  592. var columnDetails = cabinVO[cbc].cabinDetailsVO.cabinColumnDetailsVO;
  593. var colCount = columnDetails.length;
  594. var bool = false;
  595. var grpCount = 0;
  596. var blk = $(seatObjects.template.blk);
  597. var curBlk = blk.clone();
  598. cabinTop.append(curBlk);
  599. cabinTop.append($(seatObjects.template.aisle));
  600. var curGrp = [];
  601. cabinWrap.data("groupLabels").push(curGrp);
  602. cabinWrap.data("groupWrapper").push(curBlk);
  603. for (var i = 0; i < colCount; i++) {
  604. var colLabelCont = $(seatObjects.template.sLabel);
  605. colLabelCont.text(columnDetails[i].seatColumn);
  606. curBlk.append(colLabelCont);
  607. curGrp.push(columnDetails[i].seatColumn);
  608. if (columnDetails[i].seatCharacteristic === "A" || columnDetails[i].seatCharacteristic === "W/A") {
  609. if (!bool) {
  610. curBlk = blk.clone();
  611. cabinTop.append(curBlk);
  612. bool = !bool;
  613. curGrp = [];
  614. } else {
  615. cabinTop.append($(seatObjects.template.aisle));
  616. bool = !bool;
  617. grpCount++;
  618. cabinWrap.data("groupLabels").push(curGrp);
  619. cabinWrap.data("groupWrapper").push(curBlk);
  620. }
  621. }
  622. }
  623. var tg = cabinTop.find(".seatmap-row-block").length;
  624. var colRowBlks = cabinTop.find(".seatmap-row-block");
  625. for (var i = colRowBlks.length - 1; i >= 0; i--) {
  626. colRowBlks.eq(i).attr("data-colgrp", i);
  627. }
  628. cabinTop.find(".seat-aisle").last().remove();
  629. var rowStart = cabinVO[cbc].cabinDetailsVO.cabinRangeOfRowsDetailVO.seatRowNumber[0];
  630. var rowEnd = cabinVO[cbc].cabinDetailsVO.cabinRangeOfRowsDetailVO.seatRowNumber[1];
  631. var crc = 0;
  632. for (var i = rowStart; i < rowEnd + 1; i++) {
  633. var r = getRow(i);
  634. if (!r) {
  635. continue;
  636. }
  637. var row = $(seatObjects.template.seatRow);
  638. row.find("span").text(i);
  639. row.attr("data-row", i);
  640. cabinWrap.append(row);
  641. mapRow(row, i, tg, cbc);
  642. if (row.hasClass("row-has-empty-seat") && !row.hasClass("seat-inner-bassinet") && !row.hasClass("seat-inner-galley")) {
  643. var empty = checkRowEmpty(row);
  644. if (empty) {
  645. row.remove();
  646. } else {
  647. rows.push(row);
  648. }
  649. }
  650. crc++;
  651. rowcount++;
  652. }
  653. var cabinFacilityObj = cabinVO[cbc].cabinFacilitiesDetailsVO;
  654. if (typeof cabinFacilityObj !== "undefined") {
  655. var cDir = true;
  656. if (cabinFacilityObj.rowLocation === "F") {
  657. cDir = false;
  658. }
  659. if (cabinFacilityObj.rowLocation === "R") {
  660. cDir = true;
  661. }
  662. cabinFacility(cabinWrap, cabinFacilityObj.cabinFacilitiesVO, cDir);
  663. }
  664. }
  665. mainDeck.addClass("active");
  666. upperDeck.addClass("active");
  667. var rowWingStart = seatsCont.find(".seat-wingstart");
  668. var rowWingEnd = seatsCont.find(".seat-wingend");
  669. if (upperDeck.children().length > 0 && mainDeck.children().length < 1) {
  670. mainDeck.removeClass("active");
  671. equipCont.addClass("hidden");
  672. equipContUD.removeClass("hidden");
  673. }
  674. if (mainDeck.children().length > 0 && upperDeck.children().length < 1) {
  675. upperDeck.removeClass("active");
  676. renderWings(rowWingStart, rowWingEnd);
  677. }
  678. if (upperDeck.children().length > 0 && mainDeck.children().length) {
  679. upperDeck.removeClass("active");
  680. initDeckNav();
  681. renderWings(rowWingStart, rowWingEnd);
  682. }
  683. };
  684. var mapRow = function(row, rowNo, totalGrp, cabinIndex) {
  685. var crArr = getRow(rowNo);
  686. var curRow = crArr[0];
  687. var curRowObjIndex = crArr[1];
  688. var rowFacilities = curRow.rowFacilitiesDetailsVO;
  689. var rowColDetails = curRow.rowDetailsVO.seatOccupationDetails;
  690. var cabinRow = row;
  691. for (var c = 0; c < totalGrp; c++) {
  692. var seatBlk = $(seatObjects.template.blk);
  693. seatBlk.attr("data-colgrp", c);
  694. cabinRow.append(seatBlk);
  695. if (c !== totalGrp - 1) {
  696. cabinRow.append($(seatObjects.template.aisle));
  697. }
  698. var curRow = cabins[cabinIndex][0].data("groupLabels")[c];
  699. renderSeats(curRow, rowColDetails, c, seatBlk, rowNo, totalGrp);
  700. renderFacilities(c, totalGrp, seatBlk, rowFacilities.rowFacilitiesVO);
  701. seatBlk.attr("data-col", curRow.length);
  702. if (seatBlk.attr("data-replace")) {
  703. var f = $(getFacility(seatBlk.attr("data-replace")));
  704. seatBlk.html(f).parent().addClass("seat-has-facility");
  705. }
  706. if (seatBlk.children(".seatmap-galley").length > 0 && !seatBlk.attr("data-replace")) {
  707. if (seatBlk.children(".seat").length === seatBlk.children(".seat.seat-empty").length) {
  708. seatBlk.children(".seat-empty").remove();
  709. }
  710. }
  711. if (seatBlk.children(".seat.seat-empty").length && seatBlk.children(".seatmap-galley").length) {
  712. if (seatBlk.children(".seat.seat-empty").length > 1) {
  713. seatBlk.addClass("galley-less-" + seatBlk.children(".seat.seat-empty").length);
  714. } else {
  715. seatBlk.addClass("galley-less");
  716. }
  717. }
  718. if (cabinRow.hasClass("seat-row-hasexit")) {
  719. cabinRow.find(".seatmap-exit").remove();
  720. cabinRow.append($('<span class="seatmap-exit left">' + saar5.l.seateconomy.exit + "</span>"));
  721. cabinRow.append($('<span class="seatmap-exit right">' + saar5.l.seateconomy.exit + "</span>"));
  722. }
  723. if (cabinRow.hasClass("seat-row-hasexit") && !cabinRow.prev().hasClass("seatmap-row--empty")) {
  724. cabinRow.addClass("seatmap-facility-lift");
  725. }
  726. if (cabinRow.hasClass("seat-row-hasexit") && !cabinRow.hasClass("seatmap-facility-lift")) {
  727. cabinRow.addClass("seatmap-facility-lift");
  728. }
  729. var prevRow = cabinRow.prev();
  730. if (prevRow.hasClass("row-has-empty-seat")) {
  731. var emptyCol = prevRow.find(".col-has-empty-seat");
  732. if (emptyCol.length > 1) {
  733. cabinRow.find('[data-colgrp="' + emptyCol.attr("data-colgrp") + '"]').addClass("galley-less-" + emptyCol.length);
  734. } else {
  735. cabinRow.find('[data-colgrp="' + emptyCol.attr("data-colgrp") + '"]').addClass("galley-less");
  736. }
  737. }
  738. if (cabinRow.hasClass("seat-inner-bassinet") && !cabinRow.hasClass("seatmap-facility-lift")) {
  739. if (!prevRow.hasClass("has-colgrp-noseats") && !prevRow.hasClass("has-colgrp-nofacil")) {
  740. prevRow.addClass("seatmap-facility-lift");
  741. } else {
  742. var curBasGrp = jqEachToArray(cabinRow.find(".seatcol-hasbassinet"));
  743. var p = curBasGrp.length;
  744. while (p--) {
  745. var pGrp = prevRow.find('[data-colgrp="' + curBasGrp[p].attr("data-colgrp") + '"]');
  746. if (!pGrp.hasClass("colgrp-noseats") && !pGrp.hasClass("colgrp-nofacil")) {
  747. cabinRow.addClass("seatmap-facility-lift");
  748. }
  749. }
  750. }
  751. }
  752. var prevColGrp = prevRow.find('[data-colgrp="' + seatBlk.attr("data-colgrp") + '"]');
  753. if (seatBlk.hasClass("seatcol-hasbassinet")) {
  754. if (prevColGrp.hasClass("colgrp-noseats") && prevColGrp.hasClass("colgrp-nofacil") && !cabinRow.hasClass("has-nospace")) {
  755. cabinRow.addClass("has-space-forbass");
  756. } else {
  757. cabinRow.addClass("has-nospace");
  758. }
  759. if (prevColGrp.length) {
  760. prevColGrp.addClass("next-colgrp-hasbassinet");
  761. }
  762. }
  763. resetRowClass(cabinRow);
  764. if (cabinRow.hasClass("seat-row-hasexit") && prevRow.hasClass("has-colgrp-noseats") && prevRow.hasClass("has-colgrp-nofacil") && prevRow.hasClass("seatmap-facility-lift")) {
  765. prevRow.removeClass("seatmap-facility-lift");
  766. }
  767. if (cabinRow.hasClass("seat-row-hasexit") && prevRow.hasClass("has-colgrp-noseats") && prevRow.hasClass("has-colgrp-nofacil")) {
  768. if (prevColGrp.hasClass("colgrp-noseats") && prevColGrp.hasClass("colgrp-nofacil")) {
  769. if (c === 0 || c === totalGrp - 1) {
  770. var prevExit = prevColGrp.find(".seatmap-exit");
  771. if (!prevColGrp.hasClass("has-transfer-exit")) {
  772. prevExit.remove();
  773. prevColGrp.append($('<div class="seatmap-exit"><span>' + saar5.l.seateconomy.exit + "</span></div>")).addClass("has-transfer-exit").removeClass("colgrp-nofacil");
  774. }
  775. }
  776. cabinRow.removeClass("seatmap-facility-lift seat-row-hasexit").find(".seatmap-exit").remove();
  777. }
  778. }
  779. if (seatBlk.children(".seatmap-galley").length > 0) {
  780. cabinRow.addClass("seat-inner-galley");
  781. }
  782. checkForEmpty(seatBlk, cabinRow);
  783. }
  784. if (cabinRow.hasClass("seat-inner-bassinet") && cabinRow.prev().hasClass("has-transfer-facility") && !cabinRow.hasClass("seatmap-facility-lift")) {
  785. cabinRow.prev().addClass("seatmap-lift-transfer-facility");
  786. }
  787. var firstSeatRowNo = cabinVO[cabinIndex].cabinDetailsVO.cabinRangeOfRowsDetailVO.seatRowNumber[0];
  788. if (cabinIndex === 0 && rowNo === firstSeatRowNo) {
  789. checkExternalFacilities(cabinRow, totalGrp, curRowObjIndex, false, cabinRow.parent());
  790. checkExternalFacilities(cabinRow, totalGrp, curRowObjIndex, true, cabinRow.parent());
  791. }
  792. if (curRowObjIndex > 0) {
  793. checkExternalFacilities(cabinRow, totalGrp, curRowObjIndex, true, cabinRow.parent());
  794. }
  795. };
  796. var renderSeats = function(rowLabel, rowColDetails, curGroup, rowCont, rowNo, totalGrp) {
  797. var rcl = rowColDetails.length;
  798. var rc = rowLabel.length;
  799. for (var i = 0; i < rc; i++) {
  800. var curLabel = rowLabel[i];
  801. var match = false;
  802. var details;
  803. for (var j = 0; j < rcl; j++) {
  804. var col = rowColDetails[j];
  805. if (curLabel === col.seatColumn) {
  806. match = true;
  807. details = col;
  808. break;
  809. }
  810. }
  811. var seat;
  812. if (match) {
  813. var occ = "free";
  814. if (details.seatOccupation) {
  815. occ = details.seatOccupation;
  816. }
  817. var seatLabel = rowNo + details.seatColumn;
  818. seat = $('<div data-sia-seat="' + seatLabel + '" class="seat seat-' + occ.toLowerCase() + '" data-seat-description="' + details.seatDescription + '"></div>');
  819. if (details.seatPrice !== "NA" && details.seatPrice !== "na" && details.seatPrice !== "Not available") {
  820. seat.attr("data-seat-price", details.seatPrice);
  821. }
  822. if (details.seatPrice !== "NA" && details.seatPrice !== "Not available" && typeof details.seatUSDPrice !== "undefined") {
  823. seat.attr("data-seat-price-usd", details.seatUSDPrice);
  824. }
  825. getSeatType(seat, details);
  826. var p = preselected.length;
  827. while (p--) {
  828. if (preselected[p][0] === seatLabel) {
  829. seat.addClass("seat-preselected seat-selected").html(preselected[p][2]).data("preselected", preselected[p][2]);
  830. if (seat.hasClass("seat-char-bassinet")) {
  831. seat.data("hasbassinet", true);
  832. }
  833. break;
  834. }
  835. }
  836. var wcag;
  837. if (seat.hasClass("seat-char-bassinet")) {
  838. wcag = $(seatObjects.template.wcag.tpl);
  839. wcag.attr("for", seatLabel);
  840. wcag.next().attr("id", seatLabel);
  841. wcag.html(L10n.seatMap.seat.bassinet.replace("{seatlabel}", seatLabel));
  842. } else {
  843. if (seat.hasClass("seat-char-preferred")) {
  844. wcag = $(seatObjects.template.wcag.tpl);
  845. wcag.html(L10n.seatMap.seat.preferred.replace("{seatlabel}", seatLabel).replace("{seatprice}", seat.attr("data-seat-price")));
  846. wcag.attr("for", seatLabel);
  847. wcag.next().attr("id", seatLabel);
  848. } else {
  849. wcag = $(seatObjects.template.wcag.tpl);
  850. wcag.html(L10n.seatMap.seat.normal.replace("{seatlabel}", seatLabel));
  851. wcag.attr("for", seatLabel);
  852. wcag.next().attr("id", seatLabel);
  853. }
  854. }
  855. if (!seat.hasClass("seat-occupied")) {
  856. seat.attr("tabindex", 23);
  857. }
  858. seat.append(wcag);
  859. } else {
  860. seat = $('<div data-sia-seat="' + (rowNo + curLabel) + '" class="seat seat-empty"></div>');
  861. }
  862. if (curGroup === 0) {
  863. rowCont.addClass("leftWing");
  864. }
  865. if (curGroup === (totalGrp - 1)) {
  866. rowCont.addClass("rightWing");
  867. }
  868. rowCont.append(seat);
  869. if (seat.hasClass("seat-char-hasexit")) {
  870. rowCont.parent().addClass("seat-row-hasexit");
  871. }
  872. if (seat.hasClass("seat-char-bassinet")) {
  873. rowCont.parent().addClass("seat-inner-bassinet");
  874. rowCont.addClass("seatcol-hasbassinet");
  875. }
  876. if (seat.hasClass("seat-char-wingstart") && (rowCont.hasClass("leftWing") || rowCont.hasClass("rightWing"))) {
  877. rowCont.addClass("seat-wingstart");
  878. }
  879. if (seat.hasClass("seat-char-wingend") && (rowCont.hasClass("leftWing") || rowCont.hasClass("rightWing"))) {
  880. rowCont.addClass("seat-wingend");
  881. }
  882. if (details) {
  883. getSeatCharacteristic(seat, details);
  884. seat.attr("data-seattype", details.seatType);
  885. getSeatAlignment(seat, details);
  886. }
  887. if (seat.hasClass("seat-empty")) {
  888. rowCont.addClass("col-has-empty-seat");
  889. rowCont.parent().addClass("row-has-empty-seat");
  890. }
  891. }
  892. };
  893. var cabinFacility = function(cabinWrap, rowFacilities, direction) {
  894. var row = $(seatObjects.template.seatRow);
  895. row.find("span").remove();
  896. if (direction) {
  897. cabinWrap.append(row);
  898. }
  899. if (!direction) {
  900. cabinWrap.prepend(row);
  901. }
  902. var totalGrp = cabinWrap.data("groupLabels").length;
  903. for (var c = 0; c < totalGrp; c++) {
  904. var seatBlk = $(seatObjects.template.blk);
  905. seatBlk.attr("data-colgrp", c);
  906. seatBlk.attr("data-col", cabinWrap.data("groupLabels")[c].length);
  907. row.append(seatBlk).addClass("seatmap-facility-row");
  908. if (c !== totalGrp - 1) {
  909. row.append($(seatObjects.template.aisle));
  910. }
  911. var facilities;
  912. if (rowFacilities.length > 0 && typeof cabinWrap.data("groupLabels") !== "undefined") {
  913. facilities = getExtRFacility(cabinWrap.data("groupLabels")[c], rowFacilities, c, totalGrp);
  914. }
  915. if (facilities && facilities.length > 0) {
  916. appendFacility(facilities, seatBlk);
  917. }
  918. }
  919. };
  920. var checkExternalFacilities = function(cabinRow, totalGrp, curRowObjIndex, direction, cabinWrap) {
  921. var nextIndex = direction ? curRowObjIndex + 1 : curRowObjIndex - 1;
  922. var rowObj = rowVO[nextIndex];
  923. if (typeof rowObj !== "undefined") {
  924. if (rowObj.rowDetailsVO.seatRowNumber === 0) {
  925. createFacilityBlk(cabinRow, totalGrp, nextIndex, direction, cabinWrap);
  926. }
  927. }
  928. };
  929. var createFacilityBlk = function(cabinRow, totalGrp, nextIndex, direction, cabinWrap) {
  930. var row = $(seatObjects.template.seatRow);
  931. row.find("span").remove();
  932. var prevIndex = direction ? nextIndex - 1 : nextIndex + 1;
  933. var crl = rowVO[prevIndex].rowDetailsVO.seatRowNumber;
  934. var rowL = direction ? crl + "b" : crl + "a";
  935. row.attr("data-row", rowL).addClass("seatmap-row--empty has-colgrp-noseats");
  936. var cwChild = cabinWrap.children();
  937. var prevRow = direction ? cwChild.eq(cwChild.length - 1) : cwChild.eq(0);
  938. if (direction) {
  939. cabinWrap.append(row);
  940. }
  941. if (!direction) {
  942. cabinWrap.prepend(row);
  943. }
  944. if (!direction && cabinRow.hasClass("seat-inner-bassinet")) {
  945. cabinRow.addClass("seatmap-facility-lift");
  946. }
  947. for (var c = 0; c < totalGrp; c++) {
  948. var seatBlk = $(seatObjects.template.blk);
  949. seatBlk.attr("data-colgrp", c).addClass("colgrp-noseats");
  950. var curColGroup = cabinRow.children(".seatmap-row-block").eq(c);
  951. var seatCount = curColGroup.attr("data-col");
  952. if (typeof seatCount !== "undefined") {
  953. seatBlk.attr("data-col", seatCount);
  954. }
  955. row.append(seatBlk).addClass("seatmap-facility-row");
  956. if (c !== totalGrp - 1) {
  957. row.append($(seatObjects.template.aisle));
  958. }
  959. var rowFacilities = rowVO[nextIndex].rowFacilitiesDetailsVO.rowFacilitiesVO;
  960. var facilities;
  961. if (rowFacilities.length > 0 && typeof cabinWrap.data("groupLabels") !== "undefined") {
  962. facilities = getExtRFacility(cabinWrap.data("groupLabels")[c], rowFacilities, c, totalGrp);
  963. }
  964. var prevEmptyColGrp = prevRow.find('[data-colgrp="' + seatBlk.attr("data-colgrp") + '"]');
  965. if (typeof facilities !== "undefined" && facilities.length > 0) {
  966. if (prevRow.hasClass("has-colgrp-noseats") && prevRow.hasClass("has-colgrp-nofacil") && prevEmptyColGrp.hasClass("colgrp-noseats") && prevEmptyColGrp.hasClass("colgrp-nofacil") && !prevEmptyColGrp.hasClass("colgrp-exit")) {
  967. prevEmptyColGrp.html("");
  968. appendFacility(facilities, prevEmptyColGrp);
  969. prevRow.addClass("has-transfer-facility");
  970. } else {
  971. appendFacility(facilities, seatBlk);
  972. }
  973. resetRowClass(prevRow);
  974. }
  975. if (seatBlk.children(".seatmap-galley").length > 0) {
  976. row.addClass("seat-inner-galley");
  977. var prevRowEmptyCol = cabinRow.find('[data-colgrp="' + seatBlk.attr("data-colgrp") + '"]');
  978. if (cabinRow.hasClass("has-colgrp-noseats") && prevRowEmptyCol.hasClass("colgrp-noseats") && !prevRowEmptyCol.hasClass("colgrp-exit")) {
  979. cabinRow.addClass("has-transfer-facility");
  980. }
  981. }
  982. if (seatBlk.hasClass("colgrp-exit")) {
  983. row.addClass("has-colgrp-exit");
  984. }
  985. checkForEmpty(seatBlk, row);
  986. }
  987. if (prevRow.hasClass("row-has-empty-seat")) {
  988. var emptyCol = prevRow.find(".col-has-empty-seat");
  989. if (emptyCol.length > 1) {
  990. cabinRow.find('[data-colgrp="' + emptyCol.attr("data-colgrp") + '"]').addClass("galley-less-" + emptyCol.length);
  991. } else {
  992. cabinRow.find('[data-colgrp="' + emptyCol.attr("data-colgrp") + '"]').addClass("galley-less");
  993. }
  994. }
  995. if (row.hasClass("has-colgrp-noseats") && row.hasClass("has-colgrp-nofacil") && !row.hasClass("has-colgrp-exit")) {
  996. var empty = checkRowEmpty(row);
  997. if (empty) {
  998. row.remove();
  999. } else {
  1000. rows.push(row);
  1001. }
  1002. }
  1003. if (row.hasClass("has-colgrp-exit") && prevRow.hasClass("seat-row-hasexit")) {
  1004. row.remove();
  1005. }
  1006. var nIndex = direction ? (nextIndex + 1) : (nextIndex - 1);
  1007. var rowObj;
  1008. rowObj = rowVO[nIndex];
  1009. if (typeof rowObj !== "undefined") {
  1010. if (rowObj.rowDetailsVO.seatRowNumber === 0) {
  1011. createFacilityBlk(row, totalGrp, nIndex, direction, cabinWrap);
  1012. }
  1013. }
  1014. };
  1015. var renderFacilities = function(curGroup, totalGrp, groupCont, rowFacilities) {
  1016. var l = rowFacilities.length;
  1017. if (l > 0) {
  1018. var mid = Math.floor(totalGrp / 2);
  1019. var facilities = [];
  1020. var cabinWrapLbl = groupCont.parent().parent().data("groupLabels");
  1021. for (var i = 0; i < l; i++) {
  1022. var hf = (typeof rowFacilities[i].handicapSymbol !== "undefined") && rowFacilities[i].handicapSymbol === "true";
  1023. var tof = hf ? "LAH" : rowFacilities[i].typeOfFacility;
  1024. var lof = rowFacilities[i].locOfFacility;
  1025. var hasFacFormat = (typeof rowFacilities[i].facilityFormat !== "undefined" && rowFacilities[0].facilityFormat === "COLUMN");
  1026. var curLbls = cabinWrapLbl[curGroup];
  1027. if (hasFacFormat) {
  1028. for (var j = curLbls.length - 1; j >= 0; j--) {
  1029. if (curLbls[j] === lof) {
  1030. addValue(!hf, facilities, getFacility(tof));
  1031. }
  1032. }
  1033. } else {
  1034. var fac = getFacility(tof);
  1035. if ((curGroup === 0) && (lof === "L") && fac !== "") {
  1036. addValue(!hf, facilities, fac);
  1037. }
  1038. if ((curGroup === 0) && (lof === "A") && fac !== "") {
  1039. addValue(!hf, facilities, fac);
  1040. }
  1041. if (curGroup === (totalGrp - 1) && lof === "R" && fac !== "") {
  1042. addValue(!hf, facilities, fac);
  1043. }
  1044. if (curGroup === mid && lof === "C" && fac !== "") {
  1045. addValue(!hf, facilities, fac);
  1046. }
  1047. if (curGroup === mid && lof === "LC" && fac !== "") {
  1048. addValue(!hf, facilities, fac);
  1049. }
  1050. if (curGroup === mid && lof === "RC" && fac !== "") {
  1051. addValue(!hf, facilities, fac);
  1052. }
  1053. }
  1054. }
  1055. appendFacility(facilities, groupCont);
  1056. if (groupCont.find(".has-handicap").length) {
  1057. groupCont.attr("data-handicap", "true");
  1058. }
  1059. } else {
  1060. return;
  1061. }
  1062. };
  1063. var addValue = function(end, arr, val) {
  1064. if (end) {
  1065. arr.push(val);
  1066. } else {
  1067. arr.unshift(val);
  1068. }
  1069. };
  1070. var appendFacility = function(facArr, cont) {
  1071. var uniQueFacs = [];
  1072. var l = facArr.length;
  1073. for (var i = 0; i < l; i++) {
  1074. var c = uniQueFacs.length;
  1075. var unique = true;
  1076. var f = facArr[i];
  1077. if (c > 0) {
  1078. while (c--) {
  1079. if (f === uniQueFacs[c]) {
  1080. unique = false;
  1081. break;
  1082. }
  1083. }
  1084. if (unique) {
  1085. uniQueFacs.push(f);
  1086. cont.append(f);
  1087. if ($(f).hasClass("seatmap-exit")) {
  1088. cont.addClass("colgrp-exit");
  1089. }
  1090. }
  1091. } else {
  1092. uniQueFacs.push(f);
  1093. cont.append(f);
  1094. if ($(f).hasClass("seatmap-exit")) {
  1095. cont.addClass("colgrp-exit");
  1096. }
  1097. }
  1098. }
  1099. var la = cont.find(".icon-only");
  1100. var lah = cont.find(".has-handicap");
  1101. if (la.length > 0 && lah.length > 0) {
  1102. la.eq(0).remove();
  1103. }
  1104. };
  1105. var renderWings = function(rws, rwe) {
  1106. var dno = 0;
  1107. if (deckNav.hasClass("on")) {
  1108. dno = deckNav.outerHeight() + 5;
  1109. }
  1110. if (rws.length) {
  1111. var wingStart = $(seatObjects.template.wingStart);
  1112. wingStart.css({
  1113. "top": rws.offset().top - mainDeck.offset().top - 118 + dno
  1114. });
  1115. wingCont.append(wingStart);
  1116. }
  1117. if (rwe.length) {
  1118. var wingEnd = $(seatObjects.template.wingEnd);
  1119. wingEnd.css({
  1120. "height": mainDeck.offset().top + mainDeck.height() - rwe.offset().top - 10
  1121. });
  1122. wingCont.append(wingEnd);
  1123. }
  1124. };
  1125. var initDeckNav = function() {
  1126. var mNav = deckNav.find(".tab-item").eq(0);
  1127. var uNav = deckNav.find(".tab-item").eq(1);
  1128. var popupSeatSelect = $("[data-infomations-1]");
  1129. var popupSeatChange = $("[data-infomations-2]");
  1130. uNav.find("a").on({
  1131. "click": function(e) {
  1132. e.preventDefault();
  1133. e.stopPropagation();
  1134. popupSeatSelect.find(".tooltip__close").trigger("click");
  1135. popupSeatChange.find(".tooltip__close").trigger("click");
  1136. var t = $(this);
  1137. if (!t.parent().hasClass("active")) {
  1138. t.parent().addClass("active");
  1139. mNav.removeClass("active");
  1140. deckIn(upperDeck, false);
  1141. deckOut(mainDeck, true);
  1142. wingCont.hide();
  1143. equipCont.addClass("hidden");
  1144. equipContUD.removeClass("hidden");
  1145. }
  1146. }
  1147. });
  1148. mNav.find("a").on({
  1149. "click": function(e) {
  1150. e.preventDefault();
  1151. e.stopPropagation();
  1152. popupSeatSelect.find(".tooltip__close").trigger("click");
  1153. popupSeatChange.find(".tooltip__close").trigger("click");
  1154. var t = $(this);
  1155. if (!t.parent().hasClass("active")) {
  1156. t.parent().addClass("active");
  1157. uNav.removeClass("active");
  1158. deckIn(mainDeck, true);
  1159. deckOut(upperDeck, false);
  1160. setTimeout(function() {
  1161. wingCont.show();
  1162. equipContUD.addClass("hidden");
  1163. equipCont.removeClass("hidden");
  1164. }, 300);
  1165. }
  1166. }
  1167. });
  1168. deckNav.addClass("on");
  1169. mNav.addClass("active");
  1170. };
  1171. var deckIn = function(deck) {
  1172. deck.one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend", function() {
  1173. $(this).off().removeClass("animated fadeIn").addClass("seat-deck active");
  1174. seatsCont.removeAttr("style");
  1175. });
  1176. setTimeout(function() {
  1177. deck.addClass("animated active fadeIn");
  1178. }, 300);
  1179. };
  1180. var deckOut = function(deck) {
  1181. deck.one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend", function() {
  1182. $(this).off().removeClass("animated active fadeOut").addClass("seat-deck");
  1183. });
  1184. deck.addClass("animated fadeOut");
  1185. };
  1186. var getRow = function(rn) {
  1187. for (var i = rowVO.length - 1; i >= 0; i--) {
  1188. if (rowVO[i].rowDetailsVO.seatRowNumber === rn) {
  1189. return [rowVO[i], i];
  1190. }
  1191. }
  1192. };
  1193. var getExtRFacility = function(cabinLabelArr, rowFacilities, curGroup, totalGrp) {
  1194. var facilities = [];
  1195. var mid = Math.floor(totalGrp / 2);
  1196. for (var i = rowFacilities.length - 1; i >= 0; i--) {
  1197. var curRowFac = rowFacilities[i];
  1198. if (typeof curRowFac.facilityFormat !== "undefined" && curRowFac.facilityFormat === "COLUMN") {
  1199. for (var j = cabinLabelArr.length - 1; j >= 0; j--) {
  1200. if (cabinLabelArr[j] === curRowFac.locOfFacility) {
  1201. var hf = (typeof curRowFac.handicapSymbol !== "undefined") && curRowFac.handicapSymbol === "true";
  1202. var tof = hf ? "LAH" : curRowFac.typeOfFacility;
  1203. var f = getFacility(tof);
  1204. if (f !== "") {
  1205. facilities.push(getFacility(tof));
  1206. }
  1207. }
  1208. }
  1209. } else {
  1210. var hf = (typeof curRowFac.handicapSymbol !== "undefined") && curRowFac.handicapSymbol === "true";
  1211. var tof = hf ? "LAH" : rowFacilities[i].typeOfFacility;
  1212. var lof = rowFacilities[i].locOfFacility;
  1213. var fac = getFacility(tof);
  1214. if ((curGroup === 0) && (lof === "L") && fac !== "") {
  1215. facilities.push(fac);
  1216. }
  1217. if ((curGroup === 0) && (lof === "A") && fac !== "") {
  1218. facilities.push(fac);
  1219. }
  1220. if (curGroup === (totalGrp - 1) && lof === "R" && fac !== "") {
  1221. facilities.push(fac);
  1222. }
  1223. if (curGroup === mid && lof === "C" && fac !== "") {
  1224. facilities.push(fac);
  1225. }
  1226. if (curGroup === mid && lof === "LC" && fac !== "") {
  1227. facilities.push(fac);
  1228. }
  1229. if (curGroup === mid && lof === "RC" && fac !== "") {
  1230. facilities.push(fac);
  1231. }
  1232. if ((curGroup === 0 || curGroup === (totalGrp - 1)) && lof === "NA" && tof === "E" && fac !== "") {
  1233. facilities.push(fac);
  1234. }
  1235. }
  1236. }
  1237. return facilities;
  1238. };
  1239. var getSeatType = function(seat, col) {
  1240. for (var i = 0; i < col.seatType.length; i++) {
  1241. switch (col.seatType[i].toLowerCase()) {
  1242. case "preferredseat":
  1243. seat.html("P").addClass("seat-char-preferred").attr("data-preferred", "P");
  1244. break;
  1245. case "windowless":
  1246. seat.addClass("seat-char-windowless");
  1247. break;
  1248. case "basinetseat":
  1249. seat.addClass("seat-char-bassinet");
  1250. break;
  1251. case "emergencyexit":
  1252. seat.addClass("seat-char-hasexit");
  1253. break;
  1254. case "wingstart":
  1255. seat.addClass("seat-char-wingstart");
  1256. break;
  1257. case "wingend":
  1258. seat.addClass("seat-char-wingend");
  1259. break;
  1260. }
  1261. }
  1262. };
  1263. var getSeatAlignment = function(seat, col) {
  1264. switch (col.alignment) {
  1265. case "right":
  1266. seat.parent().addClass("al-r");
  1267. break;
  1268. case "left":
  1269. seat.parent().addClass("al-l");
  1270. break;
  1271. case "centre":
  1272. seat.parent().addClass("al-c");
  1273. break;
  1274. case "cross":
  1275. seat.parent().addClass("al-x");
  1276. break;
  1277. }
  1278. };
  1279. var getSeatCharacteristic = function(seat, schar) {
  1280. for (var i = 0; i < schar.seatCharacteristic.length; i++) {
  1281. switch (schar[i]) {
  1282. case "GN":
  1283. seat.parent().attr("data-replace", "G");
  1284. seat.removeClass().addClass("seat seat-free");
  1285. break;
  1286. case "LA":
  1287. if (seat.parent().attr("data-handicap") === "true") {
  1288. seat.parent().attr("data-replace", "LAH");
  1289. } else {
  1290. seat.parent().attr("data-replace", "LA");
  1291. }
  1292. seat.removeClass().addClass("seat seat-free");
  1293. break;
  1294. case "LAE":
  1295. if (seat.parent().attr("data-handicap") === "true") {
  1296. seat.parent().attr("data-replace", "LAH");
  1297. } else {
  1298. seat.parent().attr("data-replace", "LAE");
  1299. }
  1300. seat.removeClass().addClass("seat seat-free");
  1301. break;
  1302. case "8":
  1303. seat.removeClass().addClass("seat seat-empty");
  1304. break;
  1305. case "OW":
  1306. seat.parent().parent().addClass("seat-overwing");
  1307. break;
  1308. }
  1309. }
  1310. if (schar.seatCharacteristic.indexOf("CH") != -1 && schar.seatCharacteristic.indexOf("O") != -1) {
  1311. seat.attr("data-bubble-seat", "true");
  1312. }
  1313. };
  1314. var getFacility = function(fc) {
  1315. var t;
  1316. switch (fc) {
  1317. case "LA":
  1318. t = '<div class="seatmap-galley icon-only"><em class="ico-1-toilet"></em></div>';
  1319. break;
  1320. case "LAE":
  1321. t = '<div class="seatmap-galley"><em class="ico-1-toilet"></em><em class="ico-1-assistance"></em></div>';
  1322. break;
  1323. case "LAH":
  1324. t = '<div class="seatmap-galley has-handicap"><em class="ico-1-toilet"></em><em class="ico-1-assistance"></em></div>';
  1325. break;
  1326. case "G":
  1327. t = '<div class="seatmap-galley">' + saar5.l.seateconomy.galley + "</div>";
  1328. break;
  1329. case "GN":
  1330. t = '<div class="seatmap-galley">' + saar5.l.seateconomy.galley + "</div>";
  1331. break;
  1332. case "E":
  1333. t = '<div class="seatmap-exit"><span>' + saar5.l.seateconomy.exit + "</span></div>";
  1334. break;
  1335. case "D":
  1336. t = '<div class="seatmap-exit left"><span>' + saar5.l.seateconomy.exit + "</span></div>";
  1337. break;
  1338. default:
  1339. t = "";
  1340. break;
  1341. }
  1342. return t;
  1343. };
  1344. var genericSeatMap = function() {
  1345. var bookingNavItem = $(".booking-nav__item");
  1346. var holderActive = bookingNavItem.filter(".active").index();
  1347. var passengerDropdowns = $(".seatmap__select[data-pax]");
  1348. var seatMapNonClickable = $(".seatmap-content");
  1349. var selectNextPass = function(el) {
  1350. if ($(document.body).hasClass("f-loop")) {
  1351. if (!withFLoop()) {
  1352. if (el.length) {
  1353. el.trigger("click.togglePaxDropdown");
  1354. } else {
  1355. bookingNavItemWithoutInfant.eq(0).trigger("click.togglePaxDropdown");
  1356. }
  1357. }
  1358. } else {
  1359. if (!withoutFLoop()) {
  1360. if (el.length) {
  1361. el.trigger("click.togglePaxDropdown");
  1362. } else {
  1363. bookingNavItemWithoutInfant.eq(0).trigger("click.togglePaxDropdown");
  1364. }
  1365. }
  1366. }
  1367. };
  1368. var withoutFLoop = function() {
  1369. var all = true;
  1370. for (var i = 0; i < bookingNavItemWithoutInfant.length; i++) {
  1371. if (!bookingNavItemWithoutInfant.eq(i).find(".passenger-info__seat").length) {
  1372. all = false;
  1373. return all;
  1374. }
  1375. }
  1376. return all;
  1377. };
  1378. var withFLoop = function() {
  1379. var all = true;
  1380. for (var i = 0; i < bookingNavItemWithoutInfant.length; i++) {
  1381. if (!bookingNavItemWithoutInfant.eq(i).hasClass("chosen")) {
  1382. all = false;
  1383. return all;
  1384. }
  1385. }
  1386. return all;
  1387. };
  1388. var detectAssignedPass = function() {
  1389. for (var i = 0; i < bookingNavItem.length; i++) {
  1390. if (bookingNavItem.eq(i).find(".passenger-info__seat").length) {
  1391. if (bookingNavItem.eq(i).find(".passenger-info__seat").html() !== "window" && bookingNavItem.eq(i).find(".passenger-info__seat").html() !== "aisle" && bookingNavItem.eq(i).find(".passenger-info__seat").html() !== "Aisle" && bookingNavItem.eq(i).find(".passenger-info__seat").html() !== "Window" && bookingNavItem.eq(i).find(".passenger-info__seat").html() !== "WINDOW" && bookingNavItem.eq(i).find(".passenger-info__seat").html() !== "AISLE" && bookingNavItem.eq(i).find(".passenger-info__seat").html() !== "W" && bookingNavItem.eq(i).find(".passenger-info__seat").html() !== "A") {
  1392. bookingNavItem.eq(i).addClass("ignore");
  1393. passengerDropdowns.eq(i).find("[data-customselect]").addClass("disabled");
  1394. } else {
  1395. passengerDropdowns.eq(i).find("select").val(bookingNavItem.eq(i).find(".passenger-info__seat").html());
  1396. passengerDropdowns.eq(i).find("[data-customselect]").removeClass("default");
  1397. }
  1398. }
  1399. }
  1400. };
  1401. if (passengerDropdowns.length) {
  1402. bookingNavItem.off("click.togglePaxDropdown").on("click.togglePaxDropdown", function(e) {
  1403. e.preventDefault();
  1404. bookingNavItem.removeClass("active");
  1405. var index = bookingNavItem.index($(this).addClass("active"));
  1406. passengerDropdowns.addClass("hidden-dt").eq(index).removeClass("hidden-dt");
  1407. });
  1408. detectAssignedPass();
  1409. }
  1410. var bookingNavItemWithoutInfant = bookingNavItem.filter(function() {
  1411. return !$(this).find(".passenger-info__text > span").length && !$(this).hasClass("ignore");
  1412. });
  1413. var passengerDropdownsWithoutInfant = passengerDropdowns.filter(function(i) {
  1414. return !bookingNavItem.eq(i).find(".passenger-info__text > span").length && !bookingNavItem.eq(i).hasClass("ignore");
  1415. });
  1416. passengerDropdownsWithoutInfant.each(function(i, it) {
  1417. var dropdown = $(it);
  1418. dropdown.find("[data-customselect]").off("afterSelect.changeSeatPosition").on("afterSelect.changeSeatPosition", function(e, isTrigger) {
  1419. var selectedValue = $(this).find("select").val();
  1420. var seat = bookingNavItemWithoutInfant.eq(i).children(".passenger-info__seat");
  1421. var navPass = bookingNavItemWithoutInfant.eq(i);
  1422. navPass.find(".passenger-info input").val(selectedValue);
  1423. if (!isTrigger) {
  1424. navPass.addClass("chosen");
  1425. }
  1426. if (selectedValue.toLowerCase() !== "") {
  1427. if (seat.length) {
  1428. seat.text(selectedValue);
  1429. } else {
  1430. navPass.append('<span class="passenger-info__seat">' + selectedValue + "</span>");
  1431. }
  1432. } else {
  1433. if (navPass.find(".passenger-info__seat").html() === "W" || navPass.find(".passenger-info__seat").html() === "window" || navPass.find(".passenger-info__seat").html() === "aisle" || navPass.find(".passenger-info__seat").html() === "WINDOW" || navPass.find(".passenger-info__seat").html() === "Window" || navPass.find(".passenger-info__seat").html() === "Aisle" || navPass.find(".passenger-info__seat").html() === "AISLE" || navPass.find(".passenger-info__seat").html() === "A") {
  1434. navPass.find(".passenger-info__seat").remove();
  1435. navPass.removeClass("chosen");
  1436. }
  1437. }
  1438. selectNextPass(bookingNavItemWithoutInfant.eq(i + 1));
  1439. }).trigger("afterSelect.changeSeatPosition", [true]);
  1440. });
  1441. bookingNavItem.eq(holderActive).trigger("click.togglePaxDropdown");
  1442. if (seatMapNonClickable.is("[data-non-clickable]")) {
  1443. seatMapNonClickable.undelegate(".ico-seat", "click.selectSeat");
  1444. }
  1445. };
  1446. var startGenericRender = function() {
  1447. seatContainer.addClass("seatmap--generic");
  1448. var paxAr = globalJson.seatMap.passengerAndSeatAssociationVO;
  1449. var start = globalJson.seatMap.seatMapVO.passengerStartingPoint;
  1450. var flightInfo = globalJson.seatMap.seatMapVO.flightDateInformationVO;
  1451. var selectedSeginfo;
  1452. var l = flightInfo.length;
  1453. for (var i = 0; i < l; i++) {
  1454. var cinfo = flightInfo[i];
  1455. if (cinfo.selected === "true") {
  1456. selectedSeginfo = cinfo;
  1457. break;
  1458. }
  1459. }
  1460. if (selectedSeginfo.aircraftType === "TRN" || selectedSeginfo.aircraftType === "BUS") {
  1461. seatContainer.append($(seatObjects.template.messageforRailCoach));
  1462. } else {
  1463. seatContainer.append($(seatObjects.template.genericMessage));
  1464. }
  1465. equipCont.remove();
  1466. seatsCont.hide();
  1467. tabInfo();
  1468. paxDetails();
  1469. updateInputFields();
  1470. var paxSelects = [];
  1471. var l = paxAr.length;
  1472. for (var i = 0; i < l; i++) {
  1473. var po = paxAr[i];
  1474. var wChild = [];
  1475. var hidden = (i + 1) === parseInt(start) ? "" : " hidden-dt";
  1476. if (po.passengerType.toLowerCase() === "infant") {
  1477. var ad;
  1478. for (var j = l - 1; j >= 0; j--) {
  1479. if (paxAr[j].passengerId === po.passengerId) {
  1480. ad = paxAr[j];
  1481. wChild.push(j);
  1482. break;
  1483. }
  1484. }
  1485. var seatNo;
  1486. if (po.seatNumber.toLowerCase() !== "na") {
  1487. seatNo = po.seatNumber;
  1488. if (seatNo.charAt(0) === "0") {
  1489. seatNo = seatNo.slice(1);
  1490. }
  1491. preselected.push([seatNo, po.passengerId, paxSelects.length + 1]);
  1492. preselAttr.push(seatNo);
  1493. seatForm.prepend($('<input type="hidden" name="paxOld[]" value="paxOld' + po.passengerId + "-" + seatNo + '" data-paxindex="' + paxSelects.length + '">'));
  1494. }
  1495. if (ad.seatNumber.toLowerCase() !== "na") {
  1496. seatNo = ad.seatNumber;
  1497. if (seatNo.charAt(0) === "0") {
  1498. seatNo = seatNo.slice(1);
  1499. }
  1500. preselected.push([seatNo, po.passengerId, paxSelects.length + 1]);
  1501. seatForm.prepend($('<input type="hidden" name="paxOld[]" value="paxOld' + po.passengerId + "-" + seatNo + '" data-paxindex="' + paxSelects.length + '">'));
  1502. }
  1503. if (ad.seatNumber.toLowerCase() === "na" || po.seatNumber.toLowerCase() === "na") {
  1504. seatForm.prepend($('<input type="hidden" name="paxOld[]" value="paxOld' + po.passengerId + '-NA" data-paxindex="' + paxSelects.length + '">'));
  1505. }
  1506. var aSelected = "",
  1507. wSelected = "",
  1508. sSelected = "";
  1509. if (typeof seatNo === "undefined") {
  1510. seatNo = "NA";
  1511. }
  1512. if (seatNo.toLowerCase() === "A" || seatNo.toLowerCase() === "aisle") {
  1513. aSelected = ' selected="selected"';
  1514. } else {
  1515. if (seatNo.toLowerCase() === "W" || seatNo.toLowerCase() === "window") {
  1516. wSelected = ' selected="selected"';
  1517. } else {
  1518. sSelected = ' selected="selected"';
  1519. }
  1520. }
  1521. var adultName = ad.passengerName.length > 0 ? ad.passengerName + " - " + ad.passengerType : "Passenger " + (paxSelects.length + 1) + " - " + ad.passengerType;
  1522. var infantName = po.passengerName.length > 0 ? po.passengerName + "<span>&nbsp;-" + po.passengerType + "</span>" : "Passenger " + (paxSelects.length + 1) + " - " + po.passengerType;
  1523. var paxSelect;
  1524. if (wChild.length > 0 && (selectedSeginfo.aircraftType !== "TRN" && selectedSeginfo.aircraftType !== "BUS")) {
  1525. paxSelect = $('<div data-pax="' + paxSelects.length + '" class="seatmap__select' + hidden + '"><label for="preferred-seat-' + paxSelects.length + '" class="seatmap__select-label hidden-dt">' + (paxSelects.length + 1) + ". " + adultName + " <br/> " + infantName + '</label><div class="alert-block checkin-alert error-message"><div class="inner"><div class="alert__icon"><em class="ico-alert">&nbsp;</em></div><div class="alert__message"><p>' + saar5.l.seateconomy.genericmessageError + "</p></div></div></div></div>");
  1526. } else {
  1527. if (selectedSeginfo.marketingAirlineCode === "TZ") {
  1528. paxSelect = $('<div data-pax="' + paxSelects.length + '" class="seatmap__select' + hidden + '"><label for="preferred-seat-' + paxSelects.length + '" class="seatmap__select-label hidden-dt">' + (paxSelects.length + 1) + ". " + adultName + " <br/> " + infantName + '</label><div class="alert-block checkin-alert error-message"><div class="inner"><div class="alert__icon"><em class="ico-alert">&nbsp;</em></div><div class="alert__message"><p>' + saar5.l.seateconomy.genericmessageTZ + "</p></div></div></div></div>");
  1529. } else {
  1530. if (selectedSeginfo.aircraftType === "TRN" || selectedSeginfo.aircraftType === "BUS") {
  1531. paxSelect = $('<div data-pax="' + paxSelects.length + '" class="seatmap__select' + hidden + '"><label for="preferred-seat-' + paxSelects.length + '" class="seatmap__select-label hidden-dt">' + (paxSelects.length + 1) + ". " + adultName + " <br/> " + infantName + "</label></div>");
  1532. } else {
  1533. paxSelect = $('<div data-pax="' + paxSelects.length + '" class="seatmap__select' + hidden + '"><label for="preferred-seat-' + paxSelects.length + '" class="seatmap__select-label hidden-dt">' + (paxSelects.length + 1) + ". " + adultName + " <br/> " + infantName + '</label><div data-customselect="true" class="custom-select custom-select--2 custom-select--seat genericSeatDropdown"><label for="preferred-seat" class="select__label">Seat preference</label><span class="select__text">Window (W)</span><span class="ico-dropdown">Window (W)</span><select id="preferred-seat-' + paxSelects.length + '" name="preferredseat"><option value=""' + sSelected + '>Select</option><option value="WINDOW"' + wSelected + '>Window (W)</option><option value="AISLE"' + aSelected + ">Aisle (A)</option></select></div></div>");
  1534. }
  1535. }
  1536. }
  1537. paxSelects.push(paxSelect);
  1538. } else {
  1539. if (po.paxHasInfant.toLowerCase() === "yes") {
  1540. continue;
  1541. }
  1542. var seatNo;
  1543. if (po.seatNumber.toLowerCase() !== "na") {
  1544. seatNo = po.seatNumber;
  1545. if (seatNo.charAt(0) === "0") {
  1546. seatNo = seatNo.slice(1);
  1547. }
  1548. } else {
  1549. seatNo = "NA";
  1550. }
  1551. var aSelected = "",
  1552. wSelected = "",
  1553. sSelected = "";
  1554. if (seatNo.toLowerCase() === "A" || seatNo.toLowerCase() === "aisle") {
  1555. aSelected = ' selected="selected"';
  1556. } else {
  1557. if (seatNo.toLowerCase() === "W" || seatNo.toLowerCase() === "window") {
  1558. wSelected = ' selected="selected"';
  1559. } else {
  1560. sSelected = ' selected="selected"';
  1561. }
  1562. }
  1563. var paxName = po.passengerName.length > 0 ? po.passengerName + " - " + po.passengerType : "Passenger " + (paxSelects.length + 1) + " - " + po.passengerType;
  1564. var paxSelect;
  1565. if (selectedSeginfo.marketingAirlineCode === "TZ") {
  1566. paxSelect = $('<div data-pax="' + paxSelects.length + '" class="seatmap__select' + hidden + '"><label for="preferred-seat-' + paxSelects.length + '" class="seatmap__select-label hidden-dt">' + (paxSelects.length + 1) + ". " + paxName + " <br/> " + '</label><div class="alert-block checkin-alert error-message"><div class="inner"><div class="alert__icon"><em class="ico-alert">&nbsp;</em></div><div class="alert__message"><p>' + saar5.l.seateconomy.genericmessageTZ + "</p></div></div></div></div>");
  1567. } else {
  1568. if (selectedSeginfo.aircraftType === "TRN" || selectedSeginfo.aircraftType === "BUS") {
  1569. paxSelect = $('<div data-pax="' + paxSelects.length + '" class="seatmap__select' + hidden + '"><label for="preferred-seat-' + paxSelects.length + '" class="seatmap__select-label hidden-dt">' + (paxSelects.length + 1) + ". " + paxName + " <br/> " + "</label></div>");
  1570. } else {
  1571. paxSelect = $('<div data-pax="' + paxSelects.length + '" class="seatmap__select' + hidden + '"><label for="preferred-seat-' + paxSelects.length + '" class="seatmap__select-label hidden-dt">' + (paxSelects.length + 1) + ". " + paxName + " <br/> " + '</label><div data-customselect="true" class="custom-select custom-select--2 custom-select--seat genericSeatDropdown"><label for="preferred-seat" class="select__label">Seat preference</label><span class="select__text">Window (W)</span><span class="ico-dropdown">Window (W)</span><select id="preferred-seat-' + paxSelects.length + '" name="preferredseat"><option value=""' + sSelected + '>Select</option><option value="WINDOW"' + wSelected + '>Window (W)</option><option value="AISLE"' + aSelected + ">Aisle (A)</option></select></div></div>");
  1572. }
  1573. }
  1574. paxSelects.push(paxSelect);
  1575. seatForm.prepend($('<input type="hidden" name="paxOld[]" value="paxOld' + po.passengerId + "-" + seatNo + '" data-paxindex="' + paxSelect.length + '">'));
  1576. }
  1577. }
  1578. var pl = paxSelects.length;
  1579. if (selectedSeginfo.aircraftType !== "TRN" && selectedSeginfo.aircraftType !== "BUS") {
  1580. seatContainer.append($(seatObjects.template.genericSeats));
  1581. }
  1582. for (var i = 0; i < pl; i++) {
  1583. seatContainer.append(paxSelects[i]);
  1584. }
  1585. genericSeatMap();
  1586. if (selectedSeginfo.marketingAirlineCode === "TZ") {
  1587. $(".seatmap--generic p:eq(0)").remove();
  1588. $(".seatmap-content").remove();
  1589. }
  1590. };
  1591. var startRender = function() {
  1592. cabinVO = globalJson.seatMap.cabinVO;
  1593. rowVO = globalJson.seatMap.rowVO;
  1594. cl = cabinVO.length;
  1595. rl = rowVO.length;
  1596. tabInfo();
  1597. paxDetails();
  1598. updateInputFields();
  1599. renderMap();
  1600. };
  1601. var jqEachToArray = function(jqobj) {
  1602. var arr = [];
  1603. jqobj.each(function() {
  1604. arr.push($(this));
  1605. });
  1606. return arr;
  1607. };
  1608. var checkForEmpty = function(colGroup, row) {
  1609. if (colGroup.children(".seat.seat-empty").length && colGroup.children(".seat.seat-empty").length === colGroup.children().length) {
  1610. colGroup.addClass("colgrp-noseats");
  1611. row.addClass("has-colgrp-noseats");
  1612. }
  1613. if (colGroup.children().length === 0 || colGroup.find(".seatmap-galley").length === 0) {
  1614. colGroup.addClass("colgrp-nofacil");
  1615. row.addClass("has-colgrp-nofacil").removeClass("seatmap-facility-row seat-inner-galley");
  1616. } else {
  1617. row.addClass("seat-inner-galley");
  1618. colGroup.removeClass("colgrp-nofacil");
  1619. }
  1620. };
  1621. var resetRowClass = function(row) {
  1622. var colGrps = row.find(".seatmap-row-block");
  1623. var e = 0,
  1624. f = 0,
  1625. s = 0;
  1626. var prevRow = row.prev();
  1627. var bassinetHit = false;
  1628. colGrps.each(function() {
  1629. var t = $(this);
  1630. var seats = t.find(".seat");
  1631. var eseats = t.find(".seat.seat-empty");
  1632. if (seats.length === eseats.length || seats.length < 1) {
  1633. t.addClass("colgrp-noseats");
  1634. row.addClass("has-colgrp-noseats");
  1635. }
  1636. if (seats.length === 0) {
  1637. t.removeClass("colgrp-noseats");
  1638. s++;
  1639. }
  1640. var facilities = t.find(".seatmap-galley");
  1641. if (facilities.length > 0) {
  1642. t.removeClass("colgrp-nofacil");
  1643. f++;
  1644. } else {
  1645. t.addClass("colgrp-nofacil");
  1646. row.addClass("has-colgrp-nofacil seat-inner-galley");
  1647. }
  1648. var exits = t.find(".seatmap-exit");
  1649. if (exits.length > 0) {
  1650. t.addClass("colgrp-exit");
  1651. row.addClass("has-colgrp-exit");
  1652. } else {
  1653. t.removeClass("colgrp-exit");
  1654. e++;
  1655. }
  1656. var prevColGrp = prevRow.find('[data-colgrp="' + t.attr("data-colgrp") + '"]');
  1657. if ((t.hasClass("seatcol-hasbassinet") && !prevColGrp.hasClass("colgrp-nofacil")) || (t.hasClass("seatcol-hasbassinet") && !prevColGrp.hasClass("colgrp-noseats"))) {
  1658. bassinetHit = true;
  1659. t.addClass("bassinet-hit");
  1660. }
  1661. var prevHasHit = (t.hasClass("seatcol-hasbassinet") && !prevColGrp.hasClass("colgrp-nofacil")) || (t.hasClass("seatcol-hasbassinet") && !prevColGrp.hasClass("colgrp-noseats"));
  1662. if (prevHasHit && prevRow.hasClass("has-bassinet-hit")) {
  1663. t.addClass("prev-col-has-bassinet-hit");
  1664. }
  1665. });
  1666. if (e === colGrps.length) {
  1667. row.removeClass("has-colgrp-exit");
  1668. }
  1669. if (f === colGrps.length) {
  1670. row.removeClass("has-colgrp-nofacil");
  1671. }
  1672. if (s === colGrps.length) {
  1673. row.removeClass("has-colgrp-noseats");
  1674. }
  1675. if (bassinetHit && row.hasClass("seat-inner-bassinet")) {
  1676. row.removeClass("has-space-forbass").addClass("has-bassinet-hit");
  1677. } else {
  1678. row.addClass("has-space-forbass").removeClass("has-bassinet-hit");
  1679. }
  1680. };
  1681. var checkRowEmpty = function(row) {
  1682. var empty = true;
  1683. var noseat = true;
  1684. row.find(".seat").each(function() {
  1685. if (!$(this).hasClass("seat-empty")) {
  1686. noseat = false;
  1687. }
  1688. });
  1689. var nofac = true;
  1690. if (row.find(".seatmap-galley").length > 0) {
  1691. nofac = false;
  1692. }
  1693. var noexit = true;
  1694. if (row.find(".seatmap-exit").length > 0) {
  1695. noexit = false;
  1696. }
  1697. empty = noseat && nofac && noexit ? true : false;
  1698. return empty;
  1699. };
  1700. var init = function() {
  1701. var el = document.getElementById("seatMap");
  1702. if ($(el).text().length > 23) {
  1703. var elBody = $.trim(el.innerHTML);
  1704. var s = elBody.substr(2, (elBody.length - 4));
  1705. SIA.ParseJSON(s);
  1706. if (globalJson.seatMap.errorVO.errocode === "ERROR_seat.selection.generic") {
  1707. startGenericRender();
  1708. } else {
  1709. startRender();
  1710. }
  1711. SIA.SeatSelection.init();
  1712. } else {
  1713. $(".error-message").attr("data-errormsg", "dfgd").removeClass("hidden").find("p").text("Please try after some time...");
  1714. $("#seat-4-submit").hide();
  1715. }
  1716. $(".overlay-loading ").hide();
  1717. };
  1718. var oRenderer = {
  1719. init: init,
  1720. startRender: startRender,
  1721. preselected: preselAttr,
  1722. seatObjects: seatObjects,
  1723. seatsCont: seatsCont,
  1724. paxGroups: paxGroups,
  1725. paxTabs: paxTabs,
  1726. paxOptions: paxOptions,
  1727. paxRadios: paxRadios
  1728. };
  1729. return oRenderer;
  1730. })();
  1731. SIA.ParseJSON = function(str) {
  1732. eval(str);
  1733. };
  1734. SIA.SeatSelection = (function() {
  1735. var global, win, winW;
  1736. var body = SIA.global.vars.body;
  1737. var seatsCont, seatItems, templateInforSeat;
  1738. var occupiedClass = "seat-occupied";
  1739. var blockedClass = "ico-seat-blocked";
  1740. var preselected = "seat-preselected";
  1741. var emptyClass = "seat-empty";
  1742. var avaibleSeatClass = "seat-free";
  1743. var selectedClass = "seat-selected";
  1744. var blankSeat = "blank-seat";
  1745. var deselectOn = "deselect-on";
  1746. var preferredSeatClass = "seat-char-preferred";
  1747. var timerPopup = null;
  1748. var tablet = 988;
  1749. var templateInforSeat = $(SIA.RenderSeat.seatObjects.template.inforSeat);
  1750. var item, getTotal;
  1751. var texttemplatePrefer, texttemplateFeePrefer;
  1752. var currency = null;
  1753. var unformatNumber = function(number) {
  1754. var unformat = window.accounting.unformat(number);
  1755. return parseFloat(unformat);
  1756. };
  1757. var formatNumber = function(number, decimal) {
  1758. if (decimal || decimal === 0) {
  1759. if (globalJson.seatMap.locale === "de_DE" || globalJson.seatMap.locale === "es_ES" || globalJson.seatMap.locale === "pt_BR") {
  1760. return window.accounting.formatNumber(number, decimal, ".", ",");
  1761. } else {
  1762. if (globalJson.seatMap.locale === "fr_FR" || globalJson.seatMap.locale === "ru_RU") {
  1763. return window.accounting.formatNumber(number, decimal, " ", ",");
  1764. } else {
  1765. return window.accounting.formatNumber(number, decimal, ",", ".");
  1766. }
  1767. }
  1768. } else {
  1769. if (globalJson.seatMap.locale === "de_DE" || globalJson.seatMap.locale === "es_ES" || globalJson.seatMap.locale === "pt_BR") {
  1770. return window.accounting.formatNumber(number, 2, ".", ",");
  1771. } else {
  1772. if (globalJson.seatMap.locale === "fr_FR" || globalJson.seatMap.locale === "ru_RU") {
  1773. return window.accounting.formatNumber(number, 2, " ", ",");
  1774. } else {
  1775. return window.accounting.formatNumber(number, 2, ",", ".");
  1776. }
  1777. }
  1778. }
  1779. };
  1780. var precision = {
  1781. currency: {
  1782. "SGD": 2,
  1783. "JPY": 0,
  1784. "TWD": 0,
  1785. "HKD": 0,
  1786. "KRW": 0,
  1787. "INR": 0,
  1788. "KWD": 3,
  1789. "DKK": 0,
  1790. "CNY": 0,
  1791. "THB": 0,
  1792. "LKR": 0,
  1793. "ZAR": 2,
  1794. "SEK": 0,
  1795. "NOK": 0,
  1796. "AED": 0,
  1797. "SAR": 0,
  1798. "BND": 0,
  1799. "MYR": 2,
  1800. "IDR": 0
  1801. },
  1802. getPrecision: function(currency) {
  1803. return this.currency[$.trim(currency)];
  1804. }
  1805. };
  1806. var mainDeckArr = [];
  1807. var upperDeckArr = [];
  1808. var seatMapArr = [];
  1809. var getCurrency = function(number) {
  1810. return number.replace(/[\d*\.\,]/g, "");
  1811. };
  1812. var onSelected = function() {};
  1813. var onUnSelected = function() {};
  1814. var afterChoose = function() {};
  1815. var popupSeatSelect, popupSeatChange, popupSeatSelectRadio, peopleList, seat;
  1816. var indexSeat = 0;
  1817. var arrSeat = [];
  1818. var number = 0;
  1819. var isSelect = false;
  1820. var filterPeopleList = $();
  1821. var filterOccupied = $();
  1822. var popupSeatPrefer = $(".popup--seat-prefer");
  1823. var popupConfirmSeatBlank = $(".popup--confirm-seat-2");
  1824. var popupConfirmModal = $(".popup--confirm-seat-4");
  1825. var preventUpdate = false;
  1826. var flyingFocus = $("#flying-focus");
  1827. var checkAllEmptyChair = function() {
  1828. for (var i = 0; i < peopleList.length; i++) {
  1829. if (arrSeat[i].status) {
  1830. return false;
  1831. }
  1832. }
  1833. return true;
  1834. };
  1835. var checkLeftChair = function() {
  1836. var c = 0;
  1837. for (var i = 0; i < peopleList.length; i++) {
  1838. if (!arrSeat[i].status) {
  1839. c++;
  1840. }
  1841. }
  1842. return c;
  1843. };
  1844. var checkEmptyChair = function(number) {
  1845. if (!arrSeat[number].status) {
  1846. arrSeat[number].status = true;
  1847. return arrSeat[number].chairNumber;
  1848. }
  1849. for (var i = 0; i < peopleList.length; i++) {
  1850. if (!arrSeat[i].status) {
  1851. arrSeat[i].status = true;
  1852. return arrSeat[i].chairNumber;
  1853. }
  1854. }
  1855. return -1;
  1856. };
  1857. var findEmptyChair = function(number) {
  1858. if (arrSeat[number] && !arrSeat[number].status) {
  1859. return arrSeat[number].chairNumber;
  1860. }
  1861. for (var ii = number; ii < peopleList.length; ii++) {
  1862. if (arrSeat[ii] && !arrSeat[ii].status) {
  1863. return arrSeat[ii].chairNumber;
  1864. }
  1865. }
  1866. for (var i = 0; i < peopleList.length; i++) {
  1867. if (!arrSeat[i].status) {
  1868. return arrSeat[i].chairNumber;
  1869. }
  1870. }
  1871. return -1;
  1872. };
  1873. var checkAllPassenger = function() {
  1874. var all = true;
  1875. for (var i = 0; i < peopleList.length; i++) {
  1876. if (!peopleList.eq(i).find(".passenger-info__seat").length) {
  1877. all = false;
  1878. return all;
  1879. }
  1880. }
  1881. return all;
  1882. };
  1883. var newCircleRule = function() {
  1884. var all = true;
  1885. for (var i = 0; i < peopleList.length; i++) {
  1886. if (!peopleList.eq(i).hasClass("chosen")) {
  1887. all = false;
  1888. return all;
  1889. }
  1890. }
  1891. return all;
  1892. };
  1893. var removeChair = function(number) {
  1894. for (var i = 0; i < peopleList.length; i++) {
  1895. if ((i + 1) === Number(number)) {
  1896. arrSeat[i].status = false;
  1897. arrSeat[i].occupied = $();
  1898. arrSeat[i].renew = false;
  1899. return false;
  1900. }
  1901. }
  1902. };
  1903. var revertSeat = function(s) {
  1904. s.removeClass(avaibleSeatClass).addClass(selectedClass);
  1905. s.html(filterPeopleList.index() + 1);
  1906. };
  1907. var addResizeForPopupSelect = function() {
  1908. clearTimeout(timerPopup);
  1909. timerPopup = setTimeout(function() {
  1910. var leftP = seat.offset().left - popupSeatSelect.outerWidth(true) / 2 + seat.outerWidth() / 2;
  1911. var leftArrow = 0;
  1912. if (leftP < 0) {
  1913. leftArrow = seat.offset().left + seat.outerWidth() / 2;
  1914. leftP = 0;
  1915. } else {
  1916. if (leftP + popupSeatSelect.width() >= win.width()) {
  1917. leftP = leftP - (leftP + popupSeatSelect.width() - win.width());
  1918. leftArrow = seat.offset().left - leftP + seat.outerWidth() / 2;
  1919. }
  1920. }
  1921. popupSeatSelect.show().css({
  1922. top: seat.offset().top - popupSeatSelect.outerHeight(true) - 12 - SIA.global.vars.container.offset().top,
  1923. left: leftP
  1924. });
  1925. popupSeatSelect.find(".tooltip__arrow").css("left", "").css({
  1926. left: leftArrow ? leftArrow : ""
  1927. });
  1928. if (win.width() !== winW) {
  1929. popupSeatSelect.hide();
  1930. win.off("resize.popupSeatSelect");
  1931. isSelect = false;
  1932. }
  1933. }, 150);
  1934. };
  1935. var selectOnDeskTop = function() {
  1936. var sInfo = templateInforSeat.clone();
  1937. var updateInfor = function() {
  1938. peopleList.eq((number - 1)).find(".passenger-info__seat").remove();
  1939. sInfo.appendTo(peopleList.eq((number - 1))).html(seat.data("sia-seat"));
  1940. peopleList.eq((number - 1)).find("input").val(seat.data("sia-seat"));
  1941. seat.removeClass(avaibleSeatClass).addClass(selectedClass).html(number);
  1942. arrSeat[number - 1].occupied = seat;
  1943. seat.data("name", popupSeatSelectRadio.eq(number - 1).siblings("label").html());
  1944. };
  1945. var showPopupWindowLess = function(isPrefer) {
  1946. popupSeatSelect.show();
  1947. switch (isPrefer) {
  1948. case "preferred":
  1949. popupSeatSelect.find(".tooltip__text-1").show();
  1950. popupSeatSelect.find(".tooltip__windowless").hide();
  1951. break;
  1952. case "both":
  1953. popupSeatSelect.find(".tooltip__text-1").show();
  1954. popupSeatSelect.find(".tooltip__windowless").text(saar5.l.seateconomy.preferredWindowLess);
  1955. popupSeatSelect.find(".tooltip__windowless").show();
  1956. break;
  1957. case "bubble":
  1958. popupSeatSelect.find(".tooltip__text-1").show();
  1959. popupSeatSelect.find(".tooltip__windowless").text(saar5.l.seateconomy.bubbleSeat);
  1960. popupSeatSelect.find(".tooltip__windowless").show();
  1961. break;
  1962. case "windowlessbubble":
  1963. popupSeatSelect.find(".tooltip__text-1").show();
  1964. popupSeatSelect.find(".tooltip__windowless").text(saar5.l.seateconomy.bubbleSeatWindowLess);
  1965. popupSeatSelect.find(".tooltip__windowless").show();
  1966. break;
  1967. default:
  1968. popupSeatSelect.find(".tooltip__text-1").hide();
  1969. popupSeatSelect.find(".tooltip__windowless").show();
  1970. }
  1971. popupSeatSelect.find(".tooltip__heading strong").text(seat.data("sia-seat"));
  1972. var leftP = seat.offset().left - popupSeatSelect.outerWidth(true) / 2 + seat.outerWidth() / 2;
  1973. var leftArrow = 0;
  1974. if (leftP < 0) {
  1975. leftArrow = seat.offset().left + seat.outerWidth() / 2;
  1976. leftP = 0;
  1977. }
  1978. if (leftP + popupSeatSelect.outerWidth(true) >= win.width()) {
  1979. leftP = leftP - (leftP + popupSeatSelect.outerWidth(true) - win.width());
  1980. leftArrow = seat.offset().left - leftP + seat.outerWidth() / 2;
  1981. }
  1982. popupSeatSelect.css({
  1983. top: seat.offset().top - popupSeatSelect.outerHeight(true) - 12 - SIA.global.vars.container.offset().top,
  1984. left: leftP
  1985. });
  1986. popupSeatSelect.find(".tooltip__close").off("click.choosePerson").on("click.choosePerson", function(e) {
  1987. e.preventDefault();
  1988. popupSeatSelect.hide();
  1989. popupSeatSelect.find(".tooltip__windowless").hide();
  1990. popupSeatSelect.find(".tooltip__text-1").hide();
  1991. isSelect = false;
  1992. win.off("resize.popupSeatSelect");
  1993. });
  1994. win.off("resize.popupSeatSelect").on("resize.popupSeatSelect", addResizeForPopupSelect);
  1995. };
  1996. var resetSeat = function() {
  1997. popupSeatSelect.hide();
  1998. win.off("resize.popupSeatSelect");
  1999. filterOccupied = $(arrSeat[filterPeopleList.index()].occupied);
  2000. filterOccupied.addClass(avaibleSeatClass).removeClass(selectedClass);
  2001. seat.removeClass(avaibleSeatClass).addClass(selectedClass);
  2002. showConfirmSeatBlank();
  2003. if (!peopleList.eq(filterPeopleList.index()).data("hasinfant") && seat.hasClass("seat-char-bassinet") && (SIA.RenderSeat.seatObjects.deckClass === "Economy Class" || SIA.RenderSeat.seatObjects.deckClass === "Premium Economy Class")) {
  2004. if (!preventUpdate) {
  2005. popupConfirmModal.find(".popup__text-intro--2").html(L10n.seatEconomy.noinfant);
  2006. $(".overlay-loading").addClass("hidden").css("display", "none");
  2007. popupConfirmModal.Popup("show");
  2008. preventUpdate = true;
  2009. }
  2010. }
  2011. if ((peopleList.eq(filterPeopleList.index()).data("hasinfant") || peopleList.eq(filterPeopleList.index()).data("ischild")) && seat.hasClass("seat-char-hasexit")) {
  2012. if (!preventUpdate) {
  2013. popupConfirmModal.find(".popup__text-intro--2").html(L10n.seatEconomy.withInfantAndChild);
  2014. $(".overlay-loading").addClass("hidden").css("display", "none");
  2015. popupConfirmModal.Popup("show");
  2016. preventUpdate = true;
  2017. }
  2018. }
  2019. if (preventUpdate) {
  2020. seat.addClass(avaibleSeatClass).removeClass(selectedClass);
  2021. revertSeat(filterOccupied);
  2022. filterOccupied = $();
  2023. return;
  2024. }
  2025. filterOccupied.html("&nbsp;");
  2026. filterPeopleList.find(".passenger-info__seat").remove();
  2027. filterPeopleList.find("input").val("");
  2028. number = filterPeopleList.index() + 1;
  2029. if (filterOccupied.data("preselected")) {
  2030. filterOccupied.addClass(preselected).html(filterOccupied.data("preselected"));
  2031. filterOccupied.removeClass(occupiedClass);
  2032. if (filterOccupied.data("preferred") && filterPeopleList.data("preferred")) {
  2033. filterPeopleList.removeData("preferred");
  2034. }
  2035. if (filterOccupied.hasClass("seat-char-bassinet")) {
  2036. popupConfirmModal.find(".popup__text-intro--2").html(L10n.seatEconomy.preAssignedBassinet);
  2037. $(".overlay-loading").addClass("hidden").css("display", "none");
  2038. if (!seat.hasClass("seat-char-bassinet")) {
  2039. popupConfirmModal.Popup("show");
  2040. }
  2041. } else {
  2042. if (filterOccupied.hasClass(preferredSeatClass) && globalJson.seatMap.flow === "MB" && !filterOccupied.data("notified")) {
  2043. popupConfirmModal.find(".popup__text-intro--2").html(L10n.seatEconomy.preAssignedPreferred);
  2044. $(".overlay-loading").addClass("hidden").css("display", "none");
  2045. popupConfirmModal.Popup("show");
  2046. filterOccupied.data("notified", true);
  2047. }
  2048. }
  2049. } else {
  2050. if (filterOccupied.data("preferred") && filterPeopleList.data("preferred")) {
  2051. filterOccupied.html(filterOccupied.data("preferred"));
  2052. filterPeopleList.removeData("preferred");
  2053. } else {
  2054. if (filterOccupied.data("seat-characteristic")) {
  2055. filterOccupied.html(filterOccupied.data("seat-characteristic"));
  2056. } else {
  2057. filterOccupied.html("&nbsp;");
  2058. }
  2059. }
  2060. }
  2061. sInfo.appendTo(peopleList.eq((filterPeopleList.index()))).html(seat.data("sia-seat"));
  2062. peopleList.eq(filterPeopleList.index()).find("input").val(seat.data("sia-seat"));
  2063. filterOccupied.data("name", "");
  2064. var wcag;
  2065. if (seat.hasClass("seat-char-bassinet")) {
  2066. wcag = $(SIA.RenderSeat.seatObjects.template.wcag.tpl);
  2067. wcag.attr("for", seat.data("sia-seat"));
  2068. wcag.next().attr("id", seat.data("sia-seat"));
  2069. wcag.html(L10n.seatMap.seat.bassinet.replace("{seatlabel}", seat.data("sia-seat")));
  2070. } else {
  2071. if (seat.hasClass("seat-char-preferred")) {
  2072. wcag = $(SIA.RenderSeat.seatObjects.template.wcag.tpl);
  2073. wcag.html(L10n.seatMap.seat.preferred.replace("{seatlabel}", seat.data("sia-seat")).replace("{seatprice}", seat.attr("data-seat-price")));
  2074. wcag.attr("for", seat.data("sia-seat"));
  2075. wcag.next().attr("id", seat.data("sia-seat"));
  2076. } else {
  2077. wcag = $(SIA.RenderSeat.seatObjects.template.wcag.tpl);
  2078. wcag.html(L10n.seatMap.seat.normal.replace("{seatlabel}", seat.data("sia-seat")));
  2079. wcag.attr("for", seat.data("sia-seat"));
  2080. wcag.next().attr("id", seat.data("sia-seat"));
  2081. }
  2082. }
  2083. seat.removeClass(avaibleSeatClass).addClass(selectedClass).html(number);
  2084. seat.append(wcag);
  2085. arrSeat[filterPeopleList.index()].occupied = seat;
  2086. seat.data("name", popupSeatSelectRadio.eq(number - 1).siblings("label").html());
  2087. if (seat.data("preferred")) {
  2088. peopleList.eq(filterPeopleList.index()).data("preferred", {
  2089. price: seat.data("seat-price").replace(/[a-z\s]/gi, ""),
  2090. priceUSD: seat.data("seat-price-usd"),
  2091. seat: seat.data("sia-seat"),
  2092. el: seat,
  2093. info: peopleList.eq(filterPeopleList.index()).find(".passenger-info__text").html()
  2094. });
  2095. currency = getCurrency(seat.data("seat-price"));
  2096. }
  2097. if (seat.hasClass("seat-char-windowless")) {
  2098. showPopupWindowLess();
  2099. }
  2100. if (seat.data("preferred")) {
  2101. popupSeatSelect.find(".tooltip__preferred").text(texttemplatePrefer.format(seat.data("preferred") ? seat.data("seat-price-usd") + " USD" : seat.data("seat-price"))).show();
  2102. if (seat.hasClass("seat-char-windowless") && seat.data("bubble-seat")) {
  2103. showPopupWindowLess("windowlessbubble");
  2104. } else {
  2105. if (seat.hasClass("seat-char-windowless") && !seat.data("bubble-seat")) {
  2106. showPopupWindowLess("both");
  2107. } else {
  2108. if (!seat.hasClass("seat-char-windowless") && seat.data("bubble-seat")) {
  2109. showPopupWindowLess("bubble");
  2110. } else {
  2111. showPopupWindowLess("preferred");
  2112. }
  2113. }
  2114. }
  2115. }
  2116. var etc = filterPeopleList.next(".booking-nav__item");
  2117. popupSeatSelectRadio.eq(filterPeopleList.index()).siblings(".passenger-info__seat").remove();
  2118. popupSeatSelectRadio.eq(filterPeopleList.index()).parent().append($(templateInforSeat).clone().html(seat.data("sia-seat")));
  2119. var doneCR = function() {
  2120. popupSeatSelectRadio.eq(filterPeopleList.index()).prop({
  2121. "checked": true
  2122. }).parent().removeClass("disabled");
  2123. };
  2124. var firstCR = function() {
  2125. peopleList.removeClass("active").eq(0).addClass("active");
  2126. popupSeatSelectRadio.eq(0).prop({
  2127. "checked": true
  2128. }).parent().removeClass("disabled");
  2129. };
  2130. var nextCR = function() {
  2131. filterPeopleList.removeClass("active").next().addClass("active");
  2132. popupSeatSelectRadio.eq(etc.index()).prop({
  2133. "checked": true
  2134. }).parent().removeClass("disabled");
  2135. };
  2136. if (etc.length && !checkAllPassenger()) {
  2137. nextCR();
  2138. filterPeopleList.addClass("chosen");
  2139. } else {
  2140. if (!etc.length) {
  2141. filterPeopleList.addClass("chosen");
  2142. if ($(document.body).hasClass("f-loop")) {
  2143. if (newCircleRule()) {
  2144. doneCR();
  2145. } else {
  2146. firstCR();
  2147. }
  2148. } else {
  2149. if (!checkAllPassenger()) {
  2150. firstCR();
  2151. }
  2152. }
  2153. } else {
  2154. if (checkAllPassenger()) {
  2155. filterPeopleList.addClass("chosen");
  2156. if ($(document.body).hasClass("f-loop")) {
  2157. if (newCircleRule()) {
  2158. doneCR();
  2159. } else {
  2160. nextCR();
  2161. }
  2162. } else {
  2163. doneCR();
  2164. }
  2165. }
  2166. }
  2167. }
  2168. };
  2169. var pickOutAgain = function() {
  2170. filterPeopleList = peopleList.filter(".active");
  2171. number = checkEmptyChair(filterPeopleList.index());
  2172. preventUpdate = false;
  2173. winW = win.width();
  2174. if (arrSeat[filterPeopleList.index()].status) {
  2175. resetSeat();
  2176. if (!preventUpdate) {
  2177. updateInfor();
  2178. }
  2179. }
  2180. filterPeopleList.data("seattype", seat.data("seattype"));
  2181. };
  2182. pickOutAgain();
  2183. };
  2184. var unselectOnDeskTop = function(seat) {
  2185. var seatNumberUnSelect = seat.html();
  2186. popupSeatSelect.hide();
  2187. seat.data("name", "");
  2188. seat.removeClass(selectedClass).addClass(avaibleSeatClass);
  2189. peopleList.eq((seatNumberUnSelect - 1)).removeClass("chosen").find(".passenger-info__seat").remove();
  2190. peopleList.eq((seatNumberUnSelect - 1)).find("input").val("");
  2191. if (parseInt(seatNumberUnSelect === peopleList.length)) {
  2192. peopleList.eq(peopleList.length - 1);
  2193. } else {
  2194. if (!peopleList.eq(peopleList.length - 1).find(".passenger-info__seat").length) {
  2195. peopleList.eq(peopleList.length - 1);
  2196. }
  2197. }
  2198. peopleList.eq((seatNumberUnSelect - 1)).removeData("seattype");
  2199. removeChair(seat.text());
  2200. popupSeatSelectRadio.eq((seatNumberUnSelect - 1)).prop("disabled", false).parent().removeClass("disabled");
  2201. popupSeatSelectRadio.eq((seatNumberUnSelect - 1)).siblings(".passenger-info__seat").remove();
  2202. if (checkLeftChair() === 1) {
  2203. popupSeatSelectRadio.filter("[disabled]").prop({
  2204. "checked": false
  2205. }).parent().addClass("disabled");
  2206. if (!popupSeatSelectRadio.eq(findEmptyChair(seatNumberUnSelect - 1) - 1).parent().hasClass("disabled")) {
  2207. popupSeatSelectRadio.eq(findEmptyChair(seatNumberUnSelect - 1) - 1).prop({
  2208. "checked": true
  2209. });
  2210. }
  2211. peopleList.removeClass("active").eq(seatNumberUnSelect - 1).addClass("active");
  2212. }
  2213. if (seat.data("preselected")) {
  2214. if (seat.data("preferred") && peopleList.eq((seatNumberUnSelect - 1)).data("preferred")) {
  2215. peopleList.eq((seatNumberUnSelect - 1)).removeData("preferred");
  2216. }
  2217. seat.addClass(preselected).html(seatNumberUnSelect);
  2218. seat.html(seat.data("preselected"));
  2219. } else {
  2220. if (seat.data("preferred") && peopleList.eq((seatNumberUnSelect - 1)).data("preferred")) {
  2221. peopleList.eq((seatNumberUnSelect - 1)).removeData("preferred");
  2222. seat.html(seat.data("preferred"));
  2223. } else {
  2224. if (seat.data("seat-characteristic")) {
  2225. seat.html(seat.data("seat-characteristic"));
  2226. } else {
  2227. seat.html($(seat.find("label")));
  2228. }
  2229. }
  2230. }
  2231. if (checkAllEmptyChair()) {
  2232. peopleList.removeClass("active").eq(0).addClass("active");
  2233. }
  2234. };
  2235. var selectOnMobile = function() {
  2236. var sInfo = templateInforSeat.clone();
  2237. win = $(window);
  2238. isSelect = true;
  2239. popupSeatChange.hide();
  2240. showConfirmSeatBlank();
  2241. winW = win.width();
  2242. if (preventUpdate) {
  2243. isSelect = false;
  2244. return;
  2245. }
  2246. popupSeatSelect.show();
  2247. popupSeatSelect.find(".tooltip__windowless").hide();
  2248. popupSeatSelect.find(".tooltip__text-1").hide();
  2249. if (seat.hasClass("seat-char-windowless")) {
  2250. popupSeatSelect.find(".tooltip__preferred").hide();
  2251. popupSeatSelect.find(".tooltip__windowless").show();
  2252. }
  2253. if (seat.data("preferred")) {
  2254. popupSeatSelect.find(".tooltip__text-1").show();
  2255. popupSeatSelect.find(".tooltip__preferred").text(texttemplatePrefer.format(seat.data("preferred") ? seat.data("seat-price-usd") + " USD" : seat.data("seat-price"))).show();
  2256. currency = getCurrency(seat.data("seat-price"));
  2257. }
  2258. var total = popupSeatSelectRadio;
  2259. var checkedRadio = total.filter(":checked");
  2260. if (!checkedRadio.length) {
  2261. checkedRadio = total.parent().not(".disabled").first().find(":radio").prop({
  2262. "checked": true
  2263. });
  2264. }
  2265. var leftP = seat.offset().left - popupSeatSelect.outerWidth(true) / 2 + seat.outerWidth() / 2;
  2266. var leftArrow = 0;
  2267. if (leftP < 0) {
  2268. leftArrow = seat.offset().left + seat.outerWidth() / 2;
  2269. leftP = 0;
  2270. }
  2271. if (leftP + popupSeatSelect.outerWidth(true) >= win.width()) {
  2272. leftP = leftP - (leftP + popupSeatSelect.outerWidth(true) - win.width());
  2273. leftArrow = seat.offset().left - leftP + seat.outerWidth() / 2;
  2274. }
  2275. popupSeatSelect.css({
  2276. top: seat.offset().top - popupSeatSelect.outerHeight(true) - 12 - SIA.global.vars.container.offset().top,
  2277. left: leftP
  2278. }).find(".btn-full").off("click.choosePerson").on("click.choosePerson", function(e) {
  2279. e.preventDefault();
  2280. preventUpdate = false;
  2281. filterPeopleList = peopleList.filter(".active");
  2282. checkedRadio = total.filter(":checked");
  2283. var index = checkedRadio.length ? total.index(checkedRadio) : filterPeopleList.index();
  2284. var updateInfor = function() {
  2285. number = checkEmptyChair(index);
  2286. if (arrSeat[filterPeopleList.index()].status) {
  2287. filterOccupied = $(arrSeat[filterPeopleList.index()].occupied);
  2288. filterOccupied.addClass(avaibleSeatClass).removeClass(selectedClass);
  2289. seat.removeClass(avaibleSeatClass).addClass(selectedClass);
  2290. showConfirmSeatBlank();
  2291. if (!peopleList.eq(filterPeopleList.index()).data("hasinfant") && seat.hasClass("seat-char-bassinet")) {
  2292. if (!preventUpdate) {
  2293. popupConfirmModal.find(".popup__text-intro--2").html(L10n.seatEconomy.noinfant);
  2294. $(".overlay-loading").addClass("hidden").css("display", "none");
  2295. popupConfirmModal.Popup("show");
  2296. preventUpdate = true;
  2297. }
  2298. }
  2299. if ((peopleList.eq(filterPeopleList.index()).data("hasinfant") || peopleList.eq(filterPeopleList.index()).data("ischild")) && seat.hasClass("seat-char-hasexit")) {
  2300. if (!preventUpdate) {
  2301. popupConfirmModal.find(".popup__text-intro--2").html(L10n.seatEconomy.withInfantAndChild);
  2302. $(".overlay-loading").addClass("hidden").css("display", "none");
  2303. popupConfirmModal.Popup("show");
  2304. preventUpdate = true;
  2305. }
  2306. }
  2307. if (preventUpdate) {
  2308. seat.addClass(avaibleSeatClass).removeClass(selectedClass);
  2309. popupSeatSelect.find(".tooltip__close").trigger("click.choosePerson");
  2310. revertSeat(filterOccupied);
  2311. filterOccupied = $();
  2312. return;
  2313. }
  2314. filterOccupied.html("&nbsp;");
  2315. filterPeopleList.find(".passenger-info__seat").remove();
  2316. filterPeopleList.find("input").val("");
  2317. number = filterPeopleList.index() + 1;
  2318. if (filterOccupied.data("preselected")) {
  2319. filterOccupied.addClass(preselected).html(filterOccupied.data("preselected"));
  2320. filterOccupied.removeClass(occupiedClass);
  2321. if (filterOccupied.data("preferred") && filterPeopleList.data("preferred")) {
  2322. filterPeopleList.removeData("preferred");
  2323. }
  2324. if (filterOccupied.hasClass("seat-char-bassinet")) {
  2325. popupConfirmModal.find(".popup__text-intro--2").html(L10n.seatEconomy.preAssignedBassinet);
  2326. $(".overlay-loading").addClass("hidden").css("display", "none");
  2327. if (!seat.hasClass("seat-char-bassinet")) {
  2328. popupConfirmModal.Popup("show");
  2329. }
  2330. } else {
  2331. if (filterOccupied.hasClass(preferredSeatClass) && globalJson.seatMap.flow === "MB" && !filterOccupied.data("notified")) {
  2332. popupConfirmModal.find(".popup__text-intro--2").html(L10n.seatEconomy.preAssignedPreferred);
  2333. $(".overlay-loading").addClass("hidden").css("display", "none");
  2334. popupConfirmModal.Popup("show");
  2335. filterOccupied.data("notified", true);
  2336. }
  2337. }
  2338. } else {
  2339. if (filterOccupied.data("preferred") && filterPeopleList.data("preferred")) {
  2340. filterOccupied.html(filterOccupied.data("preferred"));
  2341. filterPeopleList.removeData("preferred");
  2342. } else {
  2343. if (filterOccupied.data("seat-characteristic")) {
  2344. filterOccupied.html(filterOccupied.data("seat-characteristic"));
  2345. } else {
  2346. filterOccupied.html("&nbsp;");
  2347. }
  2348. }
  2349. }
  2350. sInfo.appendTo(peopleList.eq((filterPeopleList.index()))).html(seat.data("sia-seat"));
  2351. peopleList.eq(filterPeopleList.index()).find("input").val(seat.data("sia-seat"));
  2352. filterOccupied.data("name", "");
  2353. seat.removeClass(avaibleSeatClass).addClass(selectedClass).html(number);
  2354. arrSeat[filterPeopleList.index()].occupied = seat;
  2355. seat.data("name", popupSeatSelectRadio.eq(number - 1).siblings("label").html());
  2356. if (seat.data("preferred")) {
  2357. peopleList.eq(filterPeopleList.index()).data("preferred", {
  2358. price: seat.data("seat-price").replace(/[a-z\s]/gi, ""),
  2359. priceUSD: seat.data("seat-price-usd"),
  2360. seat: seat.data("sia-seat"),
  2361. el: seat,
  2362. info: peopleList.eq(filterPeopleList.index()).find(".passenger-info__text").html()
  2363. });
  2364. currency = getCurrency(seat.data("seat-price"));
  2365. }
  2366. var etc = filterPeopleList.next(".booking-nav__item");
  2367. total.eq(filterPeopleList.index()).siblings(".passenger-info__seat").remove();
  2368. total.eq(filterPeopleList.index()).parent().append($(templateInforSeat).clone().html(seat.data("sia-seat")));
  2369. var doneCR = function() {
  2370. total.eq(filterPeopleList.index()).prop({
  2371. "checked": true
  2372. }).parent().removeClass("disabled");
  2373. };
  2374. var firstCR = function() {
  2375. peopleList.removeClass("active").eq(0).addClass("active");
  2376. total.eq(0).prop({
  2377. "checked": true
  2378. }).parent().removeClass("disabled");
  2379. };
  2380. var nextCR = function() {
  2381. filterPeopleList.removeClass("active").next().addClass("active");
  2382. total.eq(etc.index()).prop({
  2383. "checked": true
  2384. }).parent().removeClass("disabled");
  2385. };
  2386. if (etc.length && !checkAllPassenger()) {
  2387. nextCR();
  2388. filterPeopleList.addClass("chosen");
  2389. } else {
  2390. if (!etc.length) {
  2391. filterPeopleList.addClass("chosen");
  2392. if ($(document.body).hasClass("f-loop")) {
  2393. if (newCircleRule()) {
  2394. doneCR();
  2395. } else {
  2396. firstCR();
  2397. }
  2398. } else {
  2399. if (!checkAllPassenger()) {
  2400. firstCR();
  2401. }
  2402. }
  2403. } else {
  2404. if (checkAllPassenger()) {
  2405. filterPeopleList.addClass("chosen");
  2406. if ($(document.body).hasClass("f-loop")) {
  2407. if (newCircleRule()) {
  2408. doneCR();
  2409. } else {
  2410. nextCR();
  2411. }
  2412. } else {
  2413. doneCR();
  2414. }
  2415. }
  2416. }
  2417. }
  2418. }
  2419. popupSeatSelect.hide();
  2420. win.off("resize.popupSeatSelect");
  2421. filterPeopleList.data("seattype", seat.data("seattype"));
  2422. };
  2423. updateInfor();
  2424. isSelect = false;
  2425. popupSeatSelect.find(".tooltip__windowless").hide();
  2426. popupSeatSelect.find(".tooltip__text-1").hide();
  2427. if ($.isFunction(onSelected)) {
  2428. onSelected.call(this, seat, index);
  2429. }
  2430. });
  2431. popupSeatSelect.find(".tooltip__heading strong").text(seat.data("sia-seat"));
  2432. popupSeatSelect.find(".tooltip__arrow").css("left", "").css({
  2433. left: leftArrow ? leftArrow : ""
  2434. });
  2435. popupSeatSelect.find(".tooltip__close").off("click.choosePerson").on("click.choosePerson", function(e) {
  2436. e.preventDefault();
  2437. popupSeatSelect.hide();
  2438. popupSeatSelect.find(".tooltip__windowless").hide();
  2439. popupSeatSelect.find(".tooltip__text-1").hide();
  2440. isSelect = false;
  2441. win.off("resize.popupSeatSelect");
  2442. });
  2443. win.off("resize.popupSeatSelect").on("resize.popupSeatSelect", addResizeForPopupSelect);
  2444. };
  2445. var unselectedOnMobile = function() {
  2446. isSelect = true;
  2447. popupSeatChange.find(".tooltip__heading").html(seat.data("name"));
  2448. popupSeatSelect.hide();
  2449. popupSeatChange.show();
  2450. winW = win.width();
  2451. var leftP = seat.offset().left - popupSeatChange.outerWidth(true) / 2 + seat.outerWidth() / 2;
  2452. var leftArrow = 0;
  2453. if (leftP < 0) {
  2454. leftArrow = seat.offset().left + seat.outerWidth() / 2;
  2455. leftP = 0;
  2456. } else {
  2457. if (leftP + popupSeatChange.width() >= win.width()) {
  2458. leftP = leftP - (leftP + popupSeatChange.width() - win.width());
  2459. leftArrow = seat.offset().left - leftP + seat.outerWidth() / 2;
  2460. }
  2461. }
  2462. popupSeatChange.css({
  2463. top: seat.offset().top - popupSeatChange.outerHeight(true) - 12 - SIA.global.vars.container.offset().top,
  2464. left: leftP
  2465. }).find(".btn-full").off("click.changeSeat").on("click.changeSeat", function(e) {
  2466. e.preventDefault();
  2467. var seatNumberUnSelect = seat.html();
  2468. popupSeatChange.hide();
  2469. removeChair(seat.text());
  2470. popupSeatSelectRadio.eq((seatNumberUnSelect - 1)).prop("disabled", false).parent().removeClass("disabled");
  2471. popupSeatSelectRadio.eq((seatNumberUnSelect - 1)).siblings(".passenger-info__seat").remove();
  2472. peopleList.eq((seatNumberUnSelect - 1)).removeClass("chosen").find(".passenger-info__seat").remove();
  2473. peopleList.eq((seatNumberUnSelect - 1)).find(".input").val("");
  2474. if (parseInt(seatNumberUnSelect === peopleList.length)) {
  2475. peopleList.eq(peopleList.length - 1);
  2476. } else {
  2477. if (!peopleList.eq(peopleList.length - 1).find(".passenger-info__seat").length) {
  2478. peopleList.eq(peopleList.length - 1);
  2479. }
  2480. }
  2481. peopleList.eq((seatNumberUnSelect - 1)).removeData("seattype");
  2482. seat.removeClass(selectedClass).addClass(avaibleSeatClass);
  2483. if ($.isFunction(onUnSelected)) {
  2484. onUnSelected.call(this, seat);
  2485. }
  2486. if (checkLeftChair() === 1) {
  2487. popupSeatSelectRadio.filter("[disabled]").prop({
  2488. "checked": false
  2489. }).parent().addClass("disabled");
  2490. if (!popupSeatSelectRadio.eq(findEmptyChair(seatNumberUnSelect - 1) - 1).parent().hasClass("disabled")) {
  2491. popupSeatSelectRadio.eq(findEmptyChair(seatNumberUnSelect - 1) - 1).prop({
  2492. "checked": true
  2493. });
  2494. }
  2495. peopleList.removeClass("active").eq(seatNumberUnSelect - 1).addClass("active");
  2496. }
  2497. if (seat.data("preselected")) {
  2498. if (seat.data("preferred") && peopleList.eq((seatNumberUnSelect - 1)).data("preferred")) {
  2499. peopleList.eq((seat.html() - 1)).removeData("preferred");
  2500. }
  2501. seat.addClass(preselected).html(seatNumberUnSelect);
  2502. seat.html(seat.data("preselected"));
  2503. } else {
  2504. if (seat.data("preferred") && peopleList.eq((seatNumberUnSelect - 1)).data("preferred")) {
  2505. peopleList.eq((seatNumberUnSelect - 1)).removeData("preferred");
  2506. seat.html(seat.data("preferred"));
  2507. } else {
  2508. if (seat.data("seat-characteristic")) {
  2509. seat.html(seat.data("seat-characteristic"));
  2510. } else {
  2511. seat.html("");
  2512. }
  2513. }
  2514. }
  2515. isSelect = false;
  2516. win.off("resize.popupSeatChange");
  2517. if (checkAllEmptyChair()) {
  2518. peopleList.removeClass("active").eq(0).addClass("active");
  2519. }
  2520. });
  2521. popupSeatChange.find(".tooltip__arrow").css("left", "").css({
  2522. left: leftArrow ? leftArrow : ""
  2523. });
  2524. popupSeatChange.find(".tooltip__close").off("click.cancelChangeSeat").on("click.cancelChangeSeat", function(e) {
  2525. e.preventDefault();
  2526. popupSeatChange.hide();
  2527. win.off("resize.popupSeatChange");
  2528. isSelect = false;
  2529. });
  2530. win.off("resize.popupSeatChange").on("resize.popupSeatChange", function() {
  2531. clearTimeout(timerPopup);
  2532. timerPopup = setTimeout(function() {
  2533. var leftP = seat.offset().left - popupSeatChange.outerWidth(true) / 2 + seat.outerWidth() / 2;
  2534. var leftArrow = 0;
  2535. if (leftP < 0) {
  2536. leftArrow = seat.offset().left + seat.outerWidth() / 2;
  2537. leftP = 0;
  2538. } else {
  2539. if (leftP + popupSeatChange.width() >= win.width()) {
  2540. leftP = leftP - (leftP + popupSeatChange.width() - win.width());
  2541. leftArrow = seat.offset().left - leftP + seat.outerWidth() / 2;
  2542. }
  2543. }
  2544. popupSeatChange.show().css({
  2545. top: seat.offset().top - popupSeatChange.outerHeight(true) - 12 - SIA.global.vars.container.offset().top,
  2546. left: leftP
  2547. });
  2548. popupSeatChange.find(".tooltip__arrow").css("left", "").css({
  2549. left: leftArrow ? leftArrow : ""
  2550. });
  2551. if (win.width() !== winW) {
  2552. popupSeatChange.hide();
  2553. win.off("resize.popupSeatChange");
  2554. isSelect = false;
  2555. }
  2556. }, 150);
  2557. });
  2558. };
  2559. var showConfirmSeatBlank = function() {
  2560. if ($(document.body).hasClass(blankSeat)) {
  2561. if (seat.siblings("." + selectedClass).length) {
  2562. var siblingsChair = seat.siblings("." + selectedClass).last();
  2563. if (seat.next("." + selectedClass).length) {
  2564. siblingsChair = seat.next("." + selectedClass);
  2565. }
  2566. if (Math.abs(siblingsChair.index() - seat.index()) >= 2 && (!seat.prev().hasClass(occupiedClass) && !seat.prev().hasClass(emptyClass) && !seat.next().hasClass(occupiedClass) && !seat.next().hasClass(emptyClass))) {
  2567. $(".overlay-loading").addClass("hidden").css("display", "none");
  2568. popupConfirmSeatBlank.Popup("show");
  2569. preventUpdate = true;
  2570. }
  2571. }
  2572. if (filterOccupied.length && filterOccupied.prev().hasClass(selectedClass) && filterOccupied.next().hasClass(selectedClass)) {
  2573. $(".overlay-loading").addClass("hidden").css("display", "none");
  2574. popupConfirmSeatBlank.Popup("show");
  2575. preventUpdate = true;
  2576. }
  2577. }
  2578. };
  2579. var init = function() {
  2580. global = SIA.global;
  2581. win = global.vars.win;
  2582. SIA.stickySidebar();
  2583. seatsCont = SIA.RenderSeat.seatsCont;
  2584. seatItems = seatsCont.find(".seat");
  2585. templateInforSeat = $(SIA.RenderSeat.seatObjects.template.inforSeat);
  2586. popupSeatPrefer = $(".popup--seat-prefer");
  2587. popupConfirmSeatBlank = $(".popup--confirm-seat-2");
  2588. popupConfirmModal = $(".popup--confirm-seat-4");
  2589. preventUpdate = false;
  2590. flyingFocus = $("#flying-focus");
  2591. popupSeatSelect = $("[data-infomations-1]");
  2592. popupSeatChange = $("[data-infomations-2]");
  2593. texttemplatePrefer = popupSeatSelect.find(".tooltip__preferred").text();
  2594. texttemplateFeePrefer = popupSeatPrefer.find("div.popup__text-1 p").text();
  2595. popupSeatSelectRadio = popupSeatSelect.find(":radio");
  2596. peopleList = $(".sidebar .booking-nav > a");
  2597. popupSeatSelect.removeClass("hidden").hide();
  2598. popupSeatChange.removeClass("hidden").hide();
  2599. popupSeatSelectRadio.each(function(idx) {
  2600. $(this).prop("disabled", false).parent().removeClass("disabled").off("change.changestatus").on("change.changestatus", function() {
  2601. peopleList.removeClass("active").eq(idx).addClass("active");
  2602. });
  2603. });
  2604. var detectAllDisable = function() {
  2605. var all = true;
  2606. peopleList.each(function() {
  2607. if (!$(this).find(".passenger-info__seat")) {
  2608. all = false;
  2609. return all;
  2610. }
  2611. });
  2612. return all;
  2613. };
  2614. if (detectAllDisable()) {
  2615. popupSeatSelectRadio.eq(0).prop({
  2616. "checked": true
  2617. }).parent().removeClass("disabled");
  2618. }
  2619. if (!peopleList.filter(".active").length) {
  2620. peopleList.eq(0).addClass("active");
  2621. popupSeatSelectRadio.eq(0).prop({
  2622. "checked": true
  2623. }).parent().removeClass("disabled");
  2624. }
  2625. popupSeatSelectRadio.eq(peopleList.filter(".active").index()).prop({
  2626. "checked": true
  2627. }).parent().removeClass("disabled");
  2628. var preferData = {
  2629. heading: {
  2630. passenger: L10n.preferModal.passenger,
  2631. seat: L10n.preferModal.seat,
  2632. price: L10n.preferModal.price.format($.trim(currency))
  2633. },
  2634. isICE: false,
  2635. flightInfo: globalJson.seatMap.seatMapVO.flightDateInformationVO,
  2636. total: {
  2637. text: L10n.preferModal.total,
  2638. number: 240
  2639. }
  2640. };
  2641. var templateCustommerPreferSeat = '<div class="table-row">' + '<div class="table-col table-col-1">' + '<p class="text-dark">{0}</p>' + "</div>" + '<div class="table-col table-col-2"><span class="passenger-info__seat">{1}</span></div>' + '<div class="table-col table-col-3"><span class="visible-mb">{2}</span><span class="price">{3}</span></div>' + "</div>";
  2642. if (!popupSeatPrefer.data("Popup")) {
  2643. popupSeatPrefer.Popup({
  2644. overlayBGTemplate: '<div class="overlay"></div>',
  2645. modalShowClass: "",
  2646. triggerCloseModal: ".popup__close, [data-close]",
  2647. afterShow: function() {
  2648. flyingFocus = $("#flying-focus");
  2649. if (flyingFocus.length) {
  2650. flyingFocus.remove();
  2651. }
  2652. win.off("resize.popupSeatSelect");
  2653. $("[data-replace-text-by-plane]").customSelect("hide");
  2654. },
  2655. afterHide: function() {
  2656. isSelect = false;
  2657. win.off("resize.popupSeatSelect");
  2658. }
  2659. });
  2660. }
  2661. if (!popupConfirmSeatBlank.data("Popup")) {
  2662. popupConfirmSeatBlank.Popup({
  2663. overlayBGTemplate: '<div class="overlay"></div>',
  2664. modalShowClass: "",
  2665. triggerCloseModal: ".popup__close, [data-close]",
  2666. afterShow: function() {
  2667. flyingFocus = $("#flying-focus");
  2668. if (flyingFocus.length) {
  2669. flyingFocus.remove();
  2670. }
  2671. }
  2672. });
  2673. }
  2674. if (!popupConfirmModal.data("Popup")) {
  2675. popupConfirmModal.Popup({
  2676. overlayBGTemplate: '<div class="overlay"></div>',
  2677. modalShowClass: "",
  2678. triggerCloseModal: ".popup__close, [data-close]",
  2679. afterShow: function() {
  2680. flyingFocus = $("#flying-focus");
  2681. if (flyingFocus.length) {
  2682. flyingFocus.remove();
  2683. }
  2684. }
  2685. });
  2686. }
  2687. peopleList.off("click.selectPerson").on("click.selectPerson", function(e) {
  2688. e.preventDefault();
  2689. peopleList.removeClass("active");
  2690. $(this).addClass("active");
  2691. popupSeatSelectRadio.eq($(this).index()).prop({
  2692. "checked": true
  2693. });
  2694. });
  2695. for (var i = 1; i <= peopleList.length; i++) {
  2696. if (typeof arrSeat[i - 1] === "undefined") {
  2697. arrSeat[i - 1] = {};
  2698. }
  2699. arrSeat[i - 1].chairNumber = i;
  2700. arrSeat[i - 1].renew = false;
  2701. arrSeat[i - 1].status = false;
  2702. arrSeat[i - 1].occupied = $();
  2703. }
  2704. seatItems.filter("." + selectedClass).each(function() {
  2705. var self = $(this);
  2706. var index = parseInt(self.text()) - 1;
  2707. arrSeat[index].status = true;
  2708. arrSeat[index].occupied = self;
  2709. });
  2710. seatItems.each(function() {
  2711. var self = $(this);
  2712. var seatAllClass = self.attr("class");
  2713. if (self.parents("#main-deck").length > 0) {
  2714. if (self.hasClass("seat-free") || self.hasClass("seat-preselected")) {
  2715. mainDeckArr.push({
  2716. seat: self.attr("data-sia-seat"),
  2717. type: self.data("seattype"),
  2718. deck: self.parents(".seat-deck").attr("id")
  2719. });
  2720. }
  2721. }
  2722. if (self.parents("#upper-deck").length > 0) {
  2723. if (self.hasClass("seat-free") || self.hasClass("seat-preselected")) {
  2724. upperDeckArr.push({
  2725. seat: self.attr("data-sia-seat"),
  2726. type: self.data("seattype"),
  2727. deck: self.parents(".seat-deck").attr("id")
  2728. });
  2729. }
  2730. }
  2731. $(this).on("click.selectSeat", function() {
  2732. $(this).trigger("preselect");
  2733. if (isSelect) {
  2734. return;
  2735. }
  2736. seat = $(this);
  2737. if (seat.hasClass(occupiedClass) || seat.hasClass(blockedClass) || seat.hasClass(emptyClass)) {
  2738. return;
  2739. }
  2740. if (seat.hasClass(selectedClass)) {
  2741. if (body.hasClass(deselectOn)) {
  2742. return;
  2743. }
  2744. if (seat.siblings("." + selectedClass).length) {
  2745. if (seat.next("." + selectedClass).length && seat.prev("." + selectedClass).length) {
  2746. if (body.hasClass(blankSeat)) {
  2747. $(".overlay-loading").addClass("hidden").css("display", "none");
  2748. popupConfirmSeatBlank.Popup("show");
  2749. return;
  2750. }
  2751. }
  2752. }
  2753. if (window.innerWidth >= tablet) {
  2754. unselectOnDeskTop(seat);
  2755. } else {
  2756. unselectedOnMobile();
  2757. }
  2758. } else {
  2759. preventUpdate = false;
  2760. if (preventUpdate) {
  2761. return;
  2762. }
  2763. if (window.innerWidth >= tablet) {
  2764. selectOnDeskTop();
  2765. } else {
  2766. selectOnMobile();
  2767. }
  2768. }
  2769. indexSeat = seatsCont.find(seatItems).index(seat);
  2770. if ($.isFunction(afterChoose)) {
  2771. afterChoose.call(this, indexSeat);
  2772. }
  2773. });
  2774. });
  2775. seatMapArr.push(mainDeckArr);
  2776. seatMapArr.push(upperDeckArr);
  2777. var sortByProperty = function(property) {
  2778. return function(a, b) {
  2779. var sortStatus = 0;
  2780. if (a[property] < b[property]) {
  2781. sortStatus = -1;
  2782. } else {
  2783. if (a[property] > b[property]) {
  2784. sortStatus = 1;
  2785. }
  2786. }
  2787. return sortStatus;
  2788. };
  2789. };
  2790. seatMapArr.sort(sortByProperty("seat"));
  2791. var checkLogic = function() {
  2792. var formSeatmap = $("#form-seatmap");
  2793. var nextFlightBtn = $(".button-group-1 input", formSeatmap);
  2794. var acceptPopBtn = popupSeatPrefer.find("#form-prefer-submit-1");
  2795. var rdAcceptPop = popupSeatPrefer.find("#form-prefer-1");
  2796. var preferContain = null;
  2797. var newFlightDate = $('[name="newFlightDate"]');
  2798. var newFlightNumber = $('[name="newFlightNumber"]');
  2799. var newDepartureSegment = $('[name="newDepartureSegment"]');
  2800. var newArrivalSegment = $('[name="newArrivalSegment"]');
  2801. var isloading = false;
  2802. var counter = 0;
  2803. var checkAndDataPreferred = function() {
  2804. seatItems.filter("." + selectedClass).filter("." + preferredSeatClass).each(function() {
  2805. var self = $(this);
  2806. var index = parseInt(self.html()) - 1;
  2807. peopleList.eq(index).data("preferred", {
  2808. price: self.data("seat-price").replace(/[a-z\s]/gi, ""),
  2809. priceUSD: self.data("seat-price-usd"),
  2810. seat: self.data("sia-seat"),
  2811. el: self,
  2812. info: peopleList.eq(index).find(".passenger-info__text").html()
  2813. });
  2814. currency = getCurrency(self.data("seat-price"));
  2815. });
  2816. };
  2817. if (!globalJson.seatMap.flow && globalJson.seatMap.flow !== "ICE" && globalJson.seatMap.flow !== "MB") {
  2818. checkAndDataPreferred();
  2819. }
  2820. var checkChoosePrefer = function() {
  2821. var preferInfor = [];
  2822. peopleList.each(function(idx) {
  2823. var passengerInforholder = $(this);
  2824. var preferredInfor = passengerInforholder.data("preferred");
  2825. if (preferredInfor) {
  2826. if (globalJson.seatMap.flow === "MB") {
  2827. if (passengerInforholder.data("oldseatnumber")) {
  2828. if (passengerInforholder.data("oldseatnumber") !== preferredInfor.seat) {
  2829. preferInfor.push(preferredInfor);
  2830. } else {
  2831. if (passengerInforholder.data("oldseatnumber") === preferredInfor.seat && passengerInforholder.data("assignseatnumber") !== preferredInfor.seat) {
  2832. if (!preferredInfor.el.data("preselected")) {
  2833. preferInfor.push(preferredInfor);
  2834. } else {
  2835. if (preferredInfor.el.data("preselected") !== idx + 1) {
  2836. preferInfor.push(preferredInfor);
  2837. }
  2838. }
  2839. }
  2840. }
  2841. } else {
  2842. if (!preferredInfor.el.data("preselected")) {
  2843. preferInfor.push(preferredInfor);
  2844. } else {
  2845. if (preferredInfor.el.data("preselected") !== idx + 1) {
  2846. preferInfor.push(preferredInfor);
  2847. }
  2848. }
  2849. }
  2850. } else {
  2851. if (globalJson.seatMap.flow !== "ICE") {
  2852. preferInfor.push(preferredInfor);
  2853. }
  2854. }
  2855. }
  2856. });
  2857. return preferInfor;
  2858. };
  2859. var enableAccept = function() {
  2860. if (rdAcceptPop.is(":checked")) {
  2861. acceptPopBtn.removeClass("disabled").prop("disabled", false);
  2862. } else {
  2863. acceptPopBtn.addClass("disabled").prop("disabled", true);
  2864. }
  2865. };
  2866. var numberOfSelectedSeats = popupSeatPrefer.find(".table-content");
  2867. var popupValidationCheck = $(".popup--confirm-seat-5");
  2868. if (!popupValidationCheck.data("Popup")) {
  2869. popupValidationCheck.Popup({
  2870. overlayBGTemplate: '<div class="overlay"></div>',
  2871. modalShowClass: "",
  2872. triggerCloseModal: ".popup__close, [data-close]",
  2873. afterShow: function() {
  2874. flyingFocus = $("#flying-focus");
  2875. if (flyingFocus.length) {
  2876. flyingFocus.remove();
  2877. }
  2878. }
  2879. });
  2880. }
  2881. popupValidationCheck.find("#seatmap-cancel-1").off("click.cancelPopup").on("click.cancelPopup", function(e) {
  2882. e.preventDefault();
  2883. popupValidationCheck.Popup("hide");
  2884. });
  2885. popupValidationCheck.find("#seatmap-save").off("click.saveAndSubmit").on("click.saveAndSubmit", function(e) {
  2886. e.preventDefault();
  2887. if (preferContain.length) {
  2888. popupValidationCheck.Popup("hide");
  2889. renderPrefer();
  2890. } else {
  2891. formSeatmap[0].submit();
  2892. }
  2893. });
  2894. var updateSeatNumber = function(info) {
  2895. numberOfSelectedSeats.each(function() {
  2896. var self = $(this);
  2897. $.each(info, function() {
  2898. $(templateCustommerPreferSeat.format(this.info, this.seat, L10n.preferModal.price.format(currency), this.price)).appendTo(self);
  2899. });
  2900. });
  2901. };
  2902. var calculateTotal = function(data, usd) {
  2903. var tt = 0;
  2904. if (usd) {
  2905. $.each(data, function() {
  2906. if (globalJson.seatMap.locale === "de_DE" || globalJson.seatMap.locale === "es_ES" || globalJson.seatMap.locale === "pt_BR") {
  2907. tt += parseFloat(this.priceUSD.replace(/[.]/gi, "").replace(",", "."));
  2908. } else {
  2909. if (globalJson.seatMap.locale === "fr_FR" || globalJson.seatMap.locale === "ru_RU") {
  2910. tt += parseFloat(this.priceUSD.replace(/[ ]/gi, "").replace(",", "."));
  2911. } else {
  2912. tt += unformatNumber(this.priceUSD);
  2913. }
  2914. }
  2915. });
  2916. } else {
  2917. $.each(data, function() {
  2918. if (globalJson.seatMap.locale === "de_DE" || globalJson.seatMap.locale === "es_ES" || globalJson.seatMap.locale === "pt_BR") {
  2919. tt += parseFloat(this.price.replace(/[.]/gi, "").replace(",", "."));
  2920. } else {
  2921. if (globalJson.seatMap.locale === "fr_FR" || globalJson.seatMap.locale === "ru_RU") {
  2922. tt += parseFloat(this.price.replace(/[ ]/gi, "").replace(",", "."));
  2923. } else {
  2924. tt += unformatNumber(this.price);
  2925. }
  2926. }
  2927. });
  2928. }
  2929. return formatNumber(parseFloat(tt), precision.getPrecision(usd ? "USD" : currency));
  2930. };
  2931. rdAcceptPop.off("change.enableAccept").off("change.enableAccept").on("change.enableAccept", function() {
  2932. enableAccept();
  2933. });
  2934. var updateNewSeatType = function() {
  2935. var newSeatType = $("[name=newSeatType]");
  2936. var st = "";
  2937. var c = 0;
  2938. peopleList.each(function(idx) {
  2939. var seattype = $(this).data("seattype");
  2940. if (seattype) {
  2941. if (c) {
  2942. st += (idx + 1) + "-" + seattype;
  2943. c++;
  2944. } else {
  2945. st += "," + (idx + 1) + "-" + seattype;
  2946. }
  2947. }
  2948. });
  2949. newSeatType.val(st);
  2950. };
  2951. var renderPrefer = function() {
  2952. popupSeatPrefer.find(".table-default").empty();
  2953. popupSeatSelect.find(".tooltip__close").trigger("click");
  2954. popupSeatChange.find(".tooltip__close").trigger("click");
  2955. $.get(SIA.global.config.url.preferSeatContent, function(data) {
  2956. if (counter == 0) {
  2957. var template = window._.template(data, {
  2958. "data": preferData
  2959. });
  2960. $(template).appendTo(popupSeatPrefer.find(".table-default"));
  2961. numberOfSelectedSeats = popupSeatPrefer.find(".table-content");
  2962. updateSeatNumber(preferContain);
  2963. $(".overlay-loading").addClass("hidden").css("display", "none");
  2964. popupSeatPrefer.Popup("show");
  2965. if ($(this).data("url")) {
  2966. $(this).closest("form").attr("action", $(this).data("url"));
  2967. popupSeatPrefer.find("form").attr("action", $(this).data("url"));
  2968. }
  2969. enableAccept();
  2970. counter = 1;
  2971. }
  2972. }, "html");
  2973. };
  2974. var nextFlightBtnDataNext = nextFlightBtn.filter('[data-next="true"]');
  2975. nextFlightBtnDataNext.off("click.showPrefer").off("click.showPrefer").on("click.showPrefer", function(e) {
  2976. if (counter == 0 || counter == 1) {
  2977. counter = 0;
  2978. preferContain = checkChoosePrefer();
  2979. updateNewSeatType();
  2980. preferData = {
  2981. heading: {
  2982. passenger: L10n.preferModal.passenger,
  2983. seat: L10n.preferModal.seat,
  2984. price: L10n.preferModal.price.format($.trim(currency))
  2985. },
  2986. isICE: false,
  2987. flightInfo: globalJson.seatMap.seatMapVO.flightDateInformationVO,
  2988. total: {
  2989. text: L10n.preferModal.total,
  2990. number: calculateTotal(preferContain)
  2991. }
  2992. };
  2993. if (isloading) {
  2994. return;
  2995. }
  2996. popupSeatPrefer.find("p.popup__text-intro").html(L10n.preferModal.alert.format(calculateTotal(preferContain, true), currency));
  2997. if (preferContain.length) {
  2998. e.preventDefault();
  2999. renderPrefer();
  3000. } else {
  3001. if ($(this).data("url")) {
  3002. $(this).closest("form").attr("action", $(this).data("url"));
  3003. }
  3004. }
  3005. }
  3006. });
  3007. nextFlightBtn.filter(':not([data-next="true"])').off("click.skipThisStep").on("click.skipThisStep", function(e) {
  3008. e.preventDefault();
  3009. var self = $(this);
  3010. if (self.data("url")) {
  3011. formSeatmap.attr("action", self.data("url"));
  3012. }
  3013. formSeatmap[0].submit();
  3014. });
  3015. var updateFlightInforOnTab = function(el) {
  3016. newFlightDate.val(el.data("flightdate"));
  3017. newFlightNumber.val(el.data("flightnumber"));
  3018. newDepartureSegment.val(el.data("departsegment"));
  3019. newArrivalSegment.val(el.data("arrivalsegment"));
  3020. };
  3021. var limitItemTab = $(".tabs--1.seat-tabs").find("li.limit-item");
  3022. var limitItemSelect = limitItemTab.find("select");
  3023. var limitItemIndex = null;
  3024. if (limitItemSelect.length) {
  3025. limitItemIndex = limitItemSelect.prop("selectedIndex");
  3026. }
  3027. $(".tabs--1.seat-tabs").removeClass("hidden").on("click.switch-flight", "> .tab .tab-item a", function(e) {
  3028. var self = $(this);
  3029. var li = self.parent();
  3030. var liIndex = self.closest("ul").children().index(li);
  3031. var activeLi = li.is(".active") ? li : li.siblings("li.active");
  3032. var activeLiIndex = activeLi.index();
  3033. if (limitItemSelect.length) {
  3034. activeLiIndex = activeLiIndex + limitItemIndex;
  3035. }
  3036. updateFlightInforOnTab(self);
  3037. e.preventDefault();
  3038. if (li.is(".active") && !li.is(".limit-item")) {
  3039. return;
  3040. }
  3041. nextFlightBtn.filter('[data-next="true"]').trigger("click.showPrefer");
  3042. });
  3043. var seatTabs = $(".tabs--1.seat-tabs");
  3044. var selectFlight = seatTabs.children(".tab-select");
  3045. var triggerTab = seatTabs.find("ul.tab .tab-item > a");
  3046. var selectFlightIndex = selectFlight.prop("selectedIndex");
  3047. selectFlight.off("change.triggerTab").off("change.triggerSubmit").on("change.triggerSubmit", function(e) {
  3048. e.preventDefault();
  3049. triggerTab.eq($(this).prop("selectedIndex")).trigger("click.switch-flight");
  3050. $(this).prop("selectedIndex", selectFlightIndex);
  3051. }).off("blur.resetValue").on("blur.resetValue", function() {
  3052. $(this).children().eq(selectFlightIndex).prop("selected", true);
  3053. });
  3054. };
  3055. var addLegend = function() {
  3056. var seatLegend = $(".seat-legend");
  3057. var seatLegendControl = seatLegend.find(".seat-legend__control");
  3058. var seatLegendContent = seatLegend.find(".seat-legend-content");
  3059. var seatStatus = $(".seat-status").clone().appendTo(seatLegendContent);
  3060. seatStatus.find("[data-tooltip]").each(function() {
  3061. if (!$(this).data("kTooltip")) {
  3062. $(this).kTooltip();
  3063. }
  3064. });
  3065. seatLegendControl.off("click.showlegend").on("click.showlegend", function(e) {
  3066. e.preventDefault();
  3067. seatLegendContent.slideToggle(400);
  3068. if (seatLegendContent.hasClass("active")) {
  3069. seatLegendContent.removeClass("active");
  3070. seatLegendControl.removeClass("active");
  3071. } else {
  3072. seatLegendContent.addClass("active");
  3073. seatLegendControl.addClass("active");
  3074. }
  3075. if (popupSeatSelect.is(":visible")) {
  3076. popupSeatSelect.find("a.tooltip__close").trigger("click");
  3077. }
  3078. if (popupSeatChange.is(":visible")) {
  3079. popupSeatChange.find("a.tooltip__close").trigger("click");
  3080. }
  3081. });
  3082. };
  3083. var showErrorMessage = function() {
  3084. var errorMessage = $(".error-message");
  3085. if (globalJson.seatMap.errorVO.errocode !== "" && globalJson.seatMap.errorVO.errocode !== "Not available" && globalJson.seatMap.errorVO.errocode !== "ERROR_seat.selection.generic") {
  3086. if (globalJson.seatMap.errorVO.errodesc == "saar5.l.seateconomy.seatmapfull") {
  3087. errorMessage.attr("data-errormsg", globalJson.seatMap.errorVO.errocode).removeClass("hidden").find("p").text(saar5.l.seateconomy.seatmapfull);
  3088. } else {
  3089. if (globalJson.seatMap.errorVO.errodesc == "saar5.l.seateconomy.partialcheckinerror") {
  3090. errorMessage.attr("data-errormsg", globalJson.seatMap.errorVO.errocode).removeClass("hidden").find("p").text(saar5.l.seateconomy.partialcheckinerror);
  3091. } else {
  3092. if (globalJson.seatMap.errorVO.errodesc == "saar5.l.seateconomy.genericmessage") {
  3093. errorMessage.attr("data-errormsg", globalJson.seatMap.errorVO.errocode).removeClass("hidden").find("p").text(saar5.l.seateconomy.genericmessage);
  3094. } else {
  3095. if (globalJson.seatMap.errorVO.errodesc == "saar5.l.seateconomy.homepagesessionexpirymessage") {
  3096. errorMessage.attr("data-errormsg", globalJson.seatMap.errorVO.errocode).removeClass("hidden").find("p").text(saar5.l.seateconomy.homepagesessionexpirymessage);
  3097. }
  3098. }
  3099. }
  3100. }
  3101. }
  3102. };
  3103. var adjustHeightNavAndSeatMapContent = function() {
  3104. var nav = $("[data-fixed]");
  3105. var innerNav = nav.children(".inner");
  3106. var seapContent = nav.next();
  3107. if (seapContent.outerHeight(true) < innerNav.outerHeight(true)) {
  3108. seapContent.height(innerNav.height() + 100);
  3109. }
  3110. };
  3111. var removeClassSeatInnerGaller = function() {
  3112. $(".seat-inner-galley").each(function() {
  3113. var self = $(this);
  3114. if (!self.find(".seatmap-galley").length) {
  3115. self.removeClass("seat-inner-galley");
  3116. }
  3117. });
  3118. };
  3119. var cabinvo = globalJson.seatMap.cabinVO;
  3120. var upperDeckPresent = false;
  3121. for (var i = 0; i < cabinvo.length; i++) {
  3122. if (cabinvo[i].cabinDetailsVO.cabinLocation === "U") {
  3123. upperDeckPresent = true;
  3124. }
  3125. }
  3126. var keyBoardNavigation = function() {
  3127. var config = {
  3128. cabinWrap: $(".seatmap-cabin-wrapper"),
  3129. deckNav: ".seat-deck-tabs",
  3130. deckNavItem: $(this.deckNav).children(),
  3131. activeSeat: $(".seat-selected", this.cabinWrap),
  3132. paxNav: {
  3133. focus: false,
  3134. activePax: 0,
  3135. selected: [],
  3136. btn: $(".booking-nav__item")
  3137. },
  3138. deckNavi: {
  3139. focus: false,
  3140. activeDeck: 0
  3141. },
  3142. seatMap: {
  3143. focus: false,
  3144. current: 0
  3145. },
  3146. submit: {
  3147. focus: false,
  3148. activeBtn: 1,
  3149. saveExit: $("#seat-3-submit"),
  3150. seatSubmit: $("#seat-4-submit")
  3151. }
  3152. };
  3153. $(".logo").focus();
  3154. var paxNav = function() {
  3155. var paxNav = $(".booking-nav");
  3156. var paxNavBtn = $(".booking-nav__item", paxNav);
  3157. paxNavBtn.each(function() {
  3158. var self = $(this);
  3159. var paxScreenReader = $(SIA.RenderSeat.seatObjects.template.wcag.tpl);
  3160. paxScreenReader.html(L10n.seatMap.pax);
  3161. self.append(paxScreenReader);
  3162. self.focus(function() {
  3163. overrideKeys();
  3164. moveScreen(".seatmap-content");
  3165. });
  3166. });
  3167. };
  3168. var overrideKeys = function() {
  3169. config.paxNav.focus = true;
  3170. $(document).off("keydown").on("keydown", function(e) {
  3171. var keyCode = e.keyCode || e.which || e.charCode;
  3172. var allowKeyCode = [9, 13, 37, 38, 39, 40];
  3173. if ($.inArray(keyCode, allowKeyCode) >= 0) {
  3174. if (config.activeSeat.length) {
  3175. switch (keyCode) {
  3176. case 9:
  3177. keyTab(config, keyCode, e);
  3178. break;
  3179. case 37:
  3180. if (config.seatMap.focus) {
  3181. seatSelect("backward");
  3182. }
  3183. break;
  3184. case 39:
  3185. if (config.seatMap.focus) {
  3186. seatSelect("forward");
  3187. }
  3188. break;
  3189. case 13:
  3190. keyEnter(config.seatMap.current, keyCode, e);
  3191. break;
  3192. default:
  3193. break;
  3194. }
  3195. } else {}
  3196. e.preventDefault();
  3197. }
  3198. });
  3199. };
  3200. var moveScreen = function(el) {
  3201. $("body,html").animate({
  3202. scrollTop: $(el).offset().top
  3203. }, 800);
  3204. return false;
  3205. };
  3206. var keyTab = function(config, key, e) {
  3207. if (config.paxNav.focus) {
  3208. var paxAr = globalJson.seatMap.passengerAndSeatAssociationVO;
  3209. var l = paxAr.length;
  3210. var paxCount = 0;
  3211. for (var i = 0; i < l; i++) {
  3212. var po = paxAr[i];
  3213. if (po.passengerType.toLowerCase() !== "infant") {
  3214. paxCount++;
  3215. }
  3216. }
  3217. if (key === 9 && e.shiftKey) {
  3218. config.paxNav.activePax--;
  3219. if (config.paxNav.activePax < 0) {
  3220. config.paxNav.activePax = paxCount - 1;
  3221. }
  3222. } else {
  3223. config.paxNav.activePax++;
  3224. if (config.paxNav.activePax > paxCount - 1) {
  3225. config.paxNav.activePax = 0;
  3226. }
  3227. }
  3228. $(".booking-nav__item").eq(config.paxNav.activePax).trigger("click").focus();
  3229. } else {
  3230. if (config.deckNavi.focus) {
  3231. if (key === 9 && e.shiftKey && config.deckNavi.activeDeck === 0) {
  3232. $(".booking-nav__item.active").trigger("click").focus();
  3233. config.deckNavi.focus = false;
  3234. config.paxNav.focus = true;
  3235. return;
  3236. }
  3237. if (config.deckNavi.activeDeck === 0) {
  3238. config.deckNavi.activeDeck = 1;
  3239. } else {
  3240. config.deckNavi.activeDeck = 0;
  3241. }
  3242. $(".seat-deck-tabs").children().eq(config.deckNavi.activeDeck).find("a").trigger("click").focus();
  3243. } else {
  3244. if (config.seatMap.focus) {
  3245. if (key === 9 && e.shiftKey) {
  3246. if (upperDeckPresent) {
  3247. $(".seat-deck-tabs").children().eq(config.deckNavi.activeDeck).find("a").trigger("click");
  3248. config.deckNavi.focus = true;
  3249. config.seatMap.focus = false;
  3250. } else {
  3251. $(".booking-nav__item.active").trigger("click").focus();
  3252. config.deckNavi.focus = false;
  3253. config.paxNav.focus = true;
  3254. return;
  3255. }
  3256. }
  3257. } else {
  3258. if (config.submit.focus) {
  3259. if (key === 9 && e.shiftKey) {
  3260. if (config.submit.activeBtn === 1) {
  3261. config.submit.saveExit.focus();
  3262. config.submit.activeBtn = 0;
  3263. } else {
  3264. if (config.submit.activeBtn === 0) {
  3265. config.paxNav.btn.eq(2).focus();
  3266. config.submit.activeBtn = 1;
  3267. config.paxNav.focus = true;
  3268. config.deckNavi.focus = false;
  3269. config.seatMap.focus = false;
  3270. config.submit.focus = false;
  3271. }
  3272. }
  3273. } else {
  3274. if (config.submit.activeBtn === 1) {
  3275. config.submit.saveExit.focus();
  3276. config.submit.activeBtn = 0;
  3277. } else {
  3278. if (config.submit.activeBtn === 0) {
  3279. config.submit.seatSubmit.focus();
  3280. config.submit.activeBtn = 1;
  3281. }
  3282. }
  3283. }
  3284. }
  3285. }
  3286. }
  3287. }
  3288. };
  3289. var currentSeat;
  3290. var seatSelect = function(type) {
  3291. if (type === "forward") {
  3292. if (config.deckNavi.activeDeck === 0) {
  3293. config.seatMap.current++;
  3294. if (config.seatMap.current >= seatMapArr[config.deckNavi.activeDeck].length) {
  3295. if (upperDeckPresent) {
  3296. toggleDeck();
  3297. } else {
  3298. config.seatMap.current = 1;
  3299. recursive(config.seatMap.current, true);
  3300. currentSeat = seatMapArr[config.deckNavi.activeDeck][config.seatMap.current].seat;
  3301. $('[data-sia-seat="' + currentSeat + '"]').trigger("click").focus();
  3302. }
  3303. } else {
  3304. if (config.seatMap.current < seatMapArr[config.deckNavi.activeDeck].length) {
  3305. recursive(config.seatMap.current, true);
  3306. currentSeat = seatMapArr[config.deckNavi.activeDeck][config.seatMap.current].seat;
  3307. $('[data-sia-seat="' + currentSeat + '"]').trigger("click").focus();
  3308. }
  3309. }
  3310. }
  3311. if (config.deckNavi.activeDeck === 1) {
  3312. config.seatMap.current++;
  3313. if (config.seatMap.current < seatMapArr[config.deckNavi.activeDeck].length) {
  3314. recursive(config.seatMap.current, true);
  3315. currentSeat = seatMapArr[config.deckNavi.activeDeck][config.seatMap.current].seat;
  3316. $('[data-sia-seat="' + currentSeat + '"]').trigger("click").focus();
  3317. } else {
  3318. config.seatMap.current = seatMapArr[config.deckNavi.activeDeck].length - 1;
  3319. currentSeat = seatMapArr[config.deckNavi.activeDeck][config.seatMap.current].seat;
  3320. $('[data-sia-seat="' + currentSeat + '"]').focus();
  3321. }
  3322. }
  3323. } else {
  3324. if (type === "backward") {
  3325. config.seatMap.current--;
  3326. if (config.seatMap.current === -1 && config.deckNavi.activeDeck === 1) {
  3327. toggleDeck();
  3328. config.seatMap.current = (seatMapArr[config.deckNavi.activeDeck].length - 1);
  3329. }
  3330. if (config.seatMap.current < 0 && config.deckNavi.activeDeck === 1) {
  3331. toggleDeck();
  3332. } else {
  3333. if (config.seatMap.current < 0 && config.deckNavi.activeDeck === 0) {
  3334. config.seatMap.current = 0;
  3335. } else {
  3336. if (config.seatMap.current < seatMapArr[config.deckNavi.activeDeck].length) {
  3337. recursive(config.seatMap.current, false);
  3338. currentSeat = seatMapArr[config.deckNavi.activeDeck][config.seatMap.current].seat;
  3339. $('[data-sia-seat="' + currentSeat + '"]').trigger("click").focus();
  3340. }
  3341. }
  3342. }
  3343. }
  3344. }
  3345. };
  3346. var recursive = function(seatIdx, dir) {
  3347. var i;
  3348. if ($(".booking-nav__item.active").data("hasinfant") === true) {
  3349. i = $('[data-sia-seat="' + seatMapArr[config.deckNavi.activeDeck][seatIdx].seat + '"].seat-selected').length || $('[data-sia-seat="' + seatMapArr[config.deckNavi.activeDeck][seatIdx].seat + '"].seat-char-hasexit').length || $('[data-sia-seat="' + seatMapArr[config.deckNavi.activeDeck][seatIdx].seat + '"].seat-empty').length;
  3350. } else {
  3351. i = $('[data-sia-seat="' + seatMapArr[config.deckNavi.activeDeck][seatIdx].seat + '"].seat-selected').length || $('[data-sia-seat="' + seatMapArr[config.deckNavi.activeDeck][seatIdx].seat + '"].seat-char-bassinet').length || $('[data-sia-seat="' + seatMapArr[config.deckNavi.activeDeck][seatIdx].seat + '"].seat-empty').length;
  3352. }
  3353. console.log("count: " + i);
  3354. while (i > 0) {
  3355. if (dir === true) {
  3356. seatIdx++;
  3357. } else {
  3358. if (seatIdx !== -1) {
  3359. seatIdx--;
  3360. }
  3361. }
  3362. config.seatMap.current = seatIdx;
  3363. if (i === 0) {
  3364. break;
  3365. }
  3366. return recursive(config.seatMap.current, dir);
  3367. }
  3368. };
  3369. var toggleDeck = function() {
  3370. if (config.deckNavi.activeDeck === 0) {
  3371. config.deckNavi.activeDeck = 1;
  3372. config.seatMap.current = 0;
  3373. $('[data-sia-seat="' + seatMapArr[1][0].seat + '"]').trigger("click").focus();
  3374. } else {
  3375. config.deckNavi.activeDeck = 0;
  3376. config.seatMap.current = seatMapArr[config.deckNavi.activeDeck].length - 1;
  3377. }
  3378. $(".seat-deck-tabs").children().eq(config.deckNavi.activeDeck).find("a").trigger("click").focus();
  3379. };
  3380. var keyEnter = function(seatIndex, key, e) {
  3381. console.log(key + e);
  3382. if (config.paxNav.focus) {
  3383. if (upperDeckPresent) {
  3384. if (config.deckNav.length) {
  3385. console.log("deck nav: " + config.deckNav.length);
  3386. $(".seat-deck-tabs").children().eq(config.deckNavi.activeDeck).find("a").trigger("click").focus();
  3387. } else {}
  3388. config.paxNav.activePax = $(".booking-nav__item.active").index();
  3389. console.log(config.paxNav.activePax);
  3390. config.seatMap.current = 0;
  3391. config.paxNav.focus = false;
  3392. config.deckNavi.focus = true;
  3393. config.seatMap.focus = false;
  3394. } else {
  3395. var currentSeatLabel = $(".booking-nav__item.active .passenger-info__seat").text();
  3396. console.log("New Active Deck: " + config.deckNavi.activeDeck);
  3397. var getCurrSeatIdx = seatMapArr[config.deckNavi.activeDeck].map(function(e) {
  3398. return e.seat;
  3399. }).indexOf(currentSeatLabel);
  3400. var checkSelectedSeat = $('[data-sia-seat="' + currentSeatLabel + '"]');
  3401. console.log("Current Seat Selected: " + getCurrSeatIdx);
  3402. console.log("Active Deck: " + config.deckNavi.activeDeck);
  3403. if (currentSeatLabel !== "") {
  3404. if (!checkSelectedSeat.hasClass("seat-preselected")) {
  3405. console.log("thecurrent: " + getCurrSeatIdx);
  3406. if (getCurrSeatIdx === -1) {
  3407. config.seatMap.current = 0;
  3408. recursive(config.seatMap.current, true);
  3409. $('[data-sia-seat="' + seatMapArr[config.deckNavi.activeDeck][config.seatMap.current].seat + '"]').trigger("click");
  3410. }
  3411. config.seatMap.current = getCurrSeatIdx;
  3412. } else {
  3413. if (config.deckNavi.activeDeck === 1) {
  3414. config.seatMap.current = 0;
  3415. recursive(config.seatMap.current, true);
  3416. $('[data-sia-seat="' + seatMapArr[config.deckNavi.activeDeck][config.seatMap.current].seat + '"]').trigger("click");
  3417. } else {
  3418. $('[data-sia-seat="' + seatMapArr[config.deckNavi.activeDeck][getCurrSeatIdx].seat + '"]').focus();
  3419. }
  3420. config.seatMap.current = getCurrSeatIdx;
  3421. }
  3422. } else {
  3423. $('[data-sia-seat="' + seatMapArr[config.deckNavi.activeDeck][0].seat + '"]').focus();
  3424. }
  3425. config.paxNav.focus = false;
  3426. config.deckNavi.focus = false;
  3427. config.seatMap.focus = true;
  3428. }
  3429. } else {
  3430. if (config.deckNavi.focus) {
  3431. var currentSeatLabel = $(".booking-nav__item.active .passenger-info__seat").text();
  3432. console.log("New Active Deck: " + config.deckNavi.activeDeck);
  3433. var getCurrSeatIdx = seatMapArr[config.deckNavi.activeDeck].map(function(e) {
  3434. return e.seat;
  3435. }).indexOf(currentSeatLabel);
  3436. var checkSelectedSeat = $('[data-sia-seat="' + currentSeatLabel + '"]');
  3437. console.log("Current Seat Selected: " + getCurrSeatIdx);
  3438. console.log("Active Deck: " + config.deckNavi.activeDeck);
  3439. if (currentSeatLabel !== "") {
  3440. if (!checkSelectedSeat.hasClass("seat-preselected")) {
  3441. console.log("thecurrent: " + getCurrSeatIdx);
  3442. if (getCurrSeatIdx === -1) {
  3443. config.seatMap.current = 0;
  3444. recursive(config.seatMap.current, true);
  3445. $('[data-sia-seat="' + seatMapArr[config.deckNavi.activeDeck][config.seatMap.current].seat + '"]').trigger("click");
  3446. }
  3447. config.seatMap.current = getCurrSeatIdx;
  3448. } else {
  3449. if (config.deckNavi.activeDeck === 1) {
  3450. config.seatMap.current = 0;
  3451. recursive(config.seatMap.current, true);
  3452. $('[data-sia-seat="' + seatMapArr[config.deckNavi.activeDeck][config.seatMap.current].seat + '"]').trigger("click");
  3453. } else {
  3454. $('[data-sia-seat="' + seatMapArr[config.deckNavi.activeDeck][getCurrSeatIdx].seat + '"]').focus();
  3455. }
  3456. config.seatMap.current = getCurrSeatIdx;
  3457. }
  3458. } else {
  3459. $('[data-sia-seat="' + seatMapArr[config.deckNavi.activeDeck][0].seat + '"]').focus();
  3460. }
  3461. config.paxNav.focus = false;
  3462. config.deckNavi.focus = false;
  3463. config.seatMap.focus = true;
  3464. } else {
  3465. if (config.seatMap.focus) {
  3466. if ($(".booking-nav__item.chosen").length < $(".booking-nav__item").length) {
  3467. $(".booking-nav__item:not(.chosen)").eq(0).trigger("click").focus();
  3468. } else {
  3469. config.submit.seatSubmit.focus();
  3470. moveScreen(".button-group-1");
  3471. config.paxNav.focus = false;
  3472. config.deckNavi.focus = false;
  3473. config.seatMap.focus = false;
  3474. config.submit.focus = true;
  3475. }
  3476. config.paxNav.activePax = $(".booking-nav__item.active").index();
  3477. console.log("Active Pax: " + config.paxNav.activePax);
  3478. } else {
  3479. if (config.submit.focus) {
  3480. if (config.submit.activeBtn === 1) {
  3481. config.submit.saveExit.trigger("click");
  3482. } else {
  3483. if (config.submit.activeBtn === 0) {
  3484. config.submit.seatSubmit.trigger("click");
  3485. }
  3486. }
  3487. }
  3488. }
  3489. }
  3490. }
  3491. };
  3492. var wcagScreenText = function() {
  3493. var deckNav = function() {
  3494. $(".seat-deck-tabs").children().each(function(i) {
  3495. var self = $(this);
  3496. var screenReaderTpl = $(SIA.RenderSeat.seatObjects.template.wcag.tpl);
  3497. screenReaderTpl.html((i === 0) ? L10n.seatMap.deck.main : L10n.seatMap.deck.upper);
  3498. self.find("a").append(screenReaderTpl);
  3499. });
  3500. };
  3501. deckNav();
  3502. };
  3503. var init = function() {
  3504. paxNav();
  3505. wcagScreenText();
  3506. };
  3507. init();
  3508. };
  3509. keyBoardNavigation();
  3510. checkLogic();
  3511. addLegend();
  3512. showErrorMessage();
  3513. adjustHeightNavAndSeatMapContent();
  3514. removeClassSeatInnerGaller();
  3515. };
  3516. var oSeatSelection = {
  3517. init: init
  3518. };
  3519. return oSeatSelection;
  3520. })();
  3521. SIA.RenderSeat.init();
  3522.  
  3523. function setPassenger() {
  3524. if (globalJson.seatMap.flow === "ICE") {
  3525. var paxArCheckin = globalJson.seatMap.passengerAndSeatAssociationVO;
  3526. var seatInfant = $('input[name="paxNew[]"]');
  3527. for (var a = 0; a < seatInfant.size(); a++) {
  3528. if (seatInfant[a].value == "W") {
  3529. $('input[name="passengers[' + (count - 1) + '].genericSeatNumber"]').val("WINDOW");
  3530. } else {
  3531. if (seatInfant[a].value == "A") {
  3532. $('input[name="passengers[' + (count - 1) + '].genericSeatNumber"]').val("AISLE");
  3533. } else {
  3534. if (seatInfant[a].value == "Select") {
  3535. $('input[name="passengers[' + (count - 1) + '].genericSeatNumber"]').val("");
  3536. } else {
  3537. if (seatInfant[a].value == "NA") {
  3538. $('input[name="passengers[' + (count - 1) + '].genericSeatNumber"]').val("");
  3539. } else {
  3540. $('input[name="passenger' + $(seatInfant[a]).attr("data-name") + '"]').val(seatInfant[a].value);
  3541. }
  3542. }
  3543. }
  3544. }
  3545. }
  3546. } else {
  3547. var count = 1;
  3548. $('input[name="paxNew[]"]').each(function() {
  3549. if ($(this).val() == "W") {
  3550. $('input[name="passengers[' + (count - 1) + '].genericSeatNumber"]').val("WINDOW");
  3551. } else {
  3552. if ($(this).val() == "A") {
  3553. $('input[name="passengers[' + (count - 1) + '].genericSeatNumber"]').val("AISLE");
  3554. } else {
  3555. if ($(this).val() == "Select") {
  3556. $('input[name="passengers[' + (count - 1) + '].genericSeatNumber"]').val("");
  3557. } else {
  3558. if ($(this).val() == "NA") {
  3559. $('input[name="passengers[' + (count - 1) + '].genericSeatNumber"]').val("");
  3560. } else {
  3561. $('input[name="passenger' + count + '"]').val($(this).val());
  3562. }
  3563. }
  3564. }
  3565. }
  3566. count++;
  3567. });
  3568. }
  3569. }
  3570. $(document).ready(function() {
  3571. if ($("#checkinFlow").val() == 1) {
  3572. $("#seat-4-submit").val(saar5.l.seateconomy.nextflightcontinue);
  3573. $("#seat-3-submit").hide();
  3574. $(".btn-back").hide();
  3575. } else {
  3576. if ($("#bookingFlow").val() == 1) {
  3577. $("#seat-3-submit").hide();
  3578. if ($(".seat-tabs .tab .tab-item:last").hasClass("active")) {
  3579. $("#seat-4-submit").val(saar5.l.seateconomy.next);
  3580. } else {
  3581. $("#seat-4-submit").val(saar5.l.seateconomy.nextflight);
  3582. }
  3583. } else {
  3584. if ($("#checkinFlow").val() == 0 && $("#bookingFlow").val() == 0) {
  3585. $(".btn-back").hide();
  3586. if ($(".seat-tabs .tab .tab-item:last").hasClass("active")) {
  3587. $("#seat-4-submit").val(saar5.l.seateconomy.nextflightcontinue);
  3588. $("#seat-3-submit").hide();
  3589. } else {
  3590. $("#seat-4-submit").val(saar5.l.seateconomy.saveandproceedtonextflight);
  3591. }
  3592. }
  3593. }
  3594. }
  3595. $(".seat-tabs .tab .tab-item:not(.active)").click(function() {
  3596. var preload = $(".overlay-loading");
  3597. preload.removeClass("hidden").css("display", "block");
  3598. $("#tab-clicked").val("true");
  3599. setPassenger();
  3600. $("#jQserialValue").val(true);
  3601. $("#_eventId_updateSeatMapEvent_submitSeatSelection").val("randomFlight");
  3602. $("#_eventId").val("updateSeatMapEvent");
  3603. $("#sidebar-tab-select").attr("name", "sidebartabselect");
  3604. $("[id^=preferred-seat-]").attr("name", "preferredseat");
  3605. });
  3606. if (globalJson.seatMap.errorVO.errocode !== "" && globalJson.seatMap.errorVO.errocode !== "Not available" && globalJson.seatMap.errorVO.errocode == "ERROR_seat.partial.checkin.error") {
  3607. $("#seat-4-submit").hide();
  3608. $(".popup--mbaftercheckin-seat-1").find(".popup__close").click(function() {
  3609. $(".popup--mbaftercheckin-seat-1").Popup("hide").Popup("hide");
  3610. $(".overlay").addClass("hidden");
  3611. });
  3612. $(".overlay").click(function() {
  3613. $(".popup--mbaftercheckin-seat-1").Popup("hide");
  3614. $(".overlay").addClass("hidden");
  3615. });
  3616. $(".popup--mbaftercheckin-seat-1").click(function() {
  3617. $(".popup--mbaftercheckin-seat-1").Popup("hide");
  3618. $(".overlay").addClass("hidden");
  3619. });
  3620. $(document).on("keyup", function(evt) {
  3621. if (evt.keyCode == 27) {
  3622. $(".popup--mbaftercheckin-seat-1").Popup("hide");
  3623. $(".overlay").addClass("hidden");
  3624. }
  3625. });
  3626. $(".overlay").removeClass("hidden");
  3627. $(".popup--mbaftercheckin-seat-1").Popup("show").Popup("show");
  3628. $(".popup--mbaftercheckin-seat-1").find("#seatmap-cancel").click(function(e) {
  3629. $(".popup--mbaftercheckin-seat-1").find($("input[name^='_eventId']")).prop("name", "_eventId_cancel");
  3630. });
  3631. }
  3632. var count;
  3633. if ($(document.body).hasClass("generic-seatsmap-page") && $("[name^=passengers]").size() == 0) {
  3634. count = 0;
  3635. $("a.booking-nav__item").each(function() {
  3636. $(this).find(".passenger-info").append('<input type="hidden" value="" name="passengers[' + (count) + '].genericSeatNumber" />');
  3637. count++;
  3638. });
  3639. } else {
  3640. if ($(document.body).hasClass("seatsmap-page") && $("[id^=passenger]").size() == 0) {
  3641. count = 1;
  3642. $("a.booking-nav__item").each(function() {
  3643. $(this).find(".passenger-info").append('<input type="hidden" value="" name="passenger' + (count) + '" id="passenger' + (count) + '" />');
  3644. count++;
  3645. });
  3646. }
  3647. }
  3648. var triggerPopupSummaryFareConditions = $("a.fareConditions");
  3649. var triggerPopupBaggageAllowance = $("a.baggageAllowance");
  3650. var popupSummaryFareConditions = $(".popup--add-ons-summary");
  3651. var popupBaggageAllowance = $(".popup--seat-baggage");
  3652. if (!popupSummaryFareConditions.data("Popup")) {
  3653. popupSummaryFareConditions.Popup({
  3654. overlayBGTemplate: SIA.global.config.template.overlay,
  3655. modalShowClass: "",
  3656. triggerCloseModal: ".popup__close, [data-close]",
  3657. afterShow: function() {
  3658. flyingFocus = $("#flying-focus");
  3659. if (flyingFocus.length) {
  3660. flyingFocus.remove();
  3661. }
  3662. }
  3663. });
  3664. }
  3665. triggerPopupSummaryFareConditions.off("click.triggerPopupSummaryFareConditions").on("click.triggerPopupSummaryFareConditions", function(e) {
  3666. $(".overlay-loading").removeClass("hidden");
  3667. var formURL = $(this).attr("href");
  3668. $.ajax({
  3669. url: formURL,
  3670. type: "POST",
  3671. success: function(data, textStatus, jqXHR) {
  3672. var preload = $(".overlay-loading");
  3673. preload.addClass("hidden");
  3674. $("#fareConditionsDiv").val("");
  3675. $("#fareConditionsDiv").html(data.trim());
  3676. popupSummaryFareConditions.Popup("show");
  3677. },
  3678. error: function(jqXHR, textStatus, errorThrown) {
  3679. $("#fareConditionsDiv").html("<div class='popup--fare-condition popup__inner'><div class='popup__content'><a href='#' class='popup__close'>&#xe60d;</a>" + saar5.m.popupBlock.nofarepopup + "</div></div>");
  3680. popupSummaryFareConditions.Popup("show");
  3681. var preload = $(".overlay-loading");
  3682. preload.addClass("hidden");
  3683. }
  3684. });
  3685. e.preventDefault();
  3686. });
  3687. if (!popupBaggageAllowance.data("Popup")) {
  3688. popupBaggageAllowance.Popup({
  3689. overlayBGTemplate: SIA.global.config.template.overlay,
  3690. modalShowClass: "",
  3691. triggerCloseModal: ".popup__close, [data-close]",
  3692. afterShow: function() {
  3693. flyingFocus = $("#flying-focus");
  3694. if (flyingFocus.length) {
  3695. flyingFocus.remove();
  3696. }
  3697. }
  3698. });
  3699. }
  3700. triggerPopupBaggageAllowance.off("click.triggerPopupBaggageAllowance").on("click.triggerPopupBaggageAllowance", function(e) {
  3701. var formURL = $(this).attr("href");
  3702. $.ajax({
  3703. url: formURL,
  3704. type: "GET",
  3705. success: function(data, textStatus, jqXHR) {
  3706. var preload = $(".overlay-loading");
  3707. preload.addClass("hidden");
  3708. $("#baggageInfoDiv").val("");
  3709. $("#baggageInfoDiv").html(data.trim());
  3710. popupBaggageAllowance.Popup("show");
  3711. },
  3712. error: function(jqXHR, textStatus, errorThrown) {
  3713. var preload = $(".overlay-loading");
  3714. preload.addClass("hidden");
  3715. }
  3716. });
  3717. e.preventDefault();
  3718. });
  3719. });
  3720. SIA.initTabMenu = function() {
  3721. var wrapperTab = $("[data-wrapper-tab]");
  3722. if (wrapperTab.length) {
  3723. var global = SIA.global,
  3724. win = global.vars.win,
  3725. timerResize;
  3726. var setSelectWidth = function() {
  3727. if (wrapperTab.hasClass("multi-tabs") || wrapperTab.hasClass("multi-tabs-extra")) {
  3728. if (win.width() < global.config.tablet) {
  3729. wrapperTab.children("select").width(wrapperTab.find("li.active").width());
  3730. } else {
  3731. wrapperTab.children("select").width("");
  3732. }
  3733. }
  3734. };
  3735. win.off("resize.tabMenu").on("resize.tabMenu", function() {
  3736. clearTimeout(timerResize);
  3737. timerResize = setTimeout(function() {
  3738. setSelectWidth();
  3739. }, 400);
  3740. }).trigger("resize.tabMenu");
  3741. }
  3742. $(".tabs--1").tabMenu({
  3743. tab: "> ul.tab .tab-item",
  3744. tabContent: "> div.tab-wrapper > div.tab-content",
  3745. activeClass: "active"
  3746. });
  3747. $(".tabs--2").tabMenu({
  3748. tab: "> ul.tab .tab-item",
  3749. tabContent: "> div.tab-wrapper > div.tab-content",
  3750. activeClass: "active"
  3751. });
  3752. };
  3753. SIA.CIBBookingSummary = function() {
  3754. var config = SIA.global.config;
  3755. var flightSearch = $(".flights__searchs");
  3756. var flightUpgrades = $(".flights-upgrade");
  3757. var bookingSummaryWidget = $(".booking-summary");
  3758. var bookingSummaryControl = bookingSummaryWidget.find(".booking-summary__heading .booking-summary__control");
  3759. var bookingSummaryContent = bookingSummaryWidget.find(".booking-summary__content");
  3760. var bookingSummaryOffset = bookingSummaryWidget.offset();
  3761. var addonSubtotal = 0;
  3762. var grandTotal = 0;
  3763. var addons = [];
  3764. var kkMiles = 0;
  3765. var kkMilesRest = 0;
  3766. var infoFare = bookingSummaryWidget.find("[data-fare] span").last();
  3767. var infoTaxes = bookingSummaryWidget.find("[data-taxes] span").last();
  3768. var infoCarrier = bookingSummaryWidget.find("[data-carrier] span").last();
  3769. var infoFlightSubtotal = bookingSummaryWidget.find("[data-subtotal] span").last();
  3770. var infoGrandTotal = bookingSummaryWidget.find("[data-grandtotal]");
  3771. var infoAddonList = bookingSummaryWidget.find("[data-addons]");
  3772. var infoKKMilesRest = bookingSummaryWidget.find("[data-krisflyer-miles-rest]");
  3773. var tooltipPopup = $(".add-ons-booking-tooltip");
  3774. var passengerCount = bookingSummaryWidget.find(".number-passengers");
  3775. var infoPayableWithMiles = bookingSummaryWidget.find("[data-krisflyer-miles]");
  3776. var additionalGuest = $("[data-additional-guest]");
  3777. var flightsSearch = $("div.flights__searchs");
  3778. var flightsTable = flightsSearch.find("table.flights__table");
  3779. var totalToBePaid = $("[data-headtotal],[data-tobepaid]");
  3780. var totalPaid = $("[data-tobepaid]");
  3781. var currecyCode = "";
  3782. var milesAllocated = "";
  3783. var cashAllocated = "";
  3784. var precision = 2;
  3785. var prevFare = 0;
  3786. var onloadFlag = true;
  3787. var infoOthers = bookingSummaryWidget.find("[data-others] span").last();
  3788. if (!bookingSummaryWidget.length) {
  3789. return;
  3790. }
  3791. var unformatNumber = function(number) {
  3792. number = window.accounting.unformat(number);
  3793. return parseFloat(number);
  3794. };
  3795. var formatNumber = function(number, fraction) {
  3796. var locale = "";
  3797. if (typeof globalJson.bookingSummary !== "undefined" && typeof globalJson.bookingSummary.bookingSummary !== "undefined" && typeof globalJson.bookingSummary.bookingSummary.locale !== "undefined") {
  3798. locale = globalJson.bookingSummary.bookingSummary.locale;
  3799. }
  3800. if (fraction || fraction === 0) {
  3801. if (locale === "de_DE" || locale === "es_ES" || locale === "pt_BR") {
  3802. return window.accounting.formatNumber(number, fraction, ".", ",");
  3803. } else {
  3804. if (locale === "fr_FR" || locale === "ru_RU") {
  3805. return window.accounting.formatNumber(number, fraction, " ", ",");
  3806. } else {
  3807. return window.accounting.formatNumber(number, fraction, ",", ".");
  3808. }
  3809. }
  3810. } else {
  3811. if (locale === "de_DE" || locale === "es_ES" || locale === "pt_BR") {
  3812. return window.accounting.formatNumber(number, 2, ".", ",");
  3813. } else {
  3814. if (locale === "fr_FR" || locale === "ru_RU") {
  3815. return window.accounting.formatNumber(number, 2, " ", ",");
  3816. } else {
  3817. return window.accounting.formatNumber(number, 2, ",", ".");
  3818. }
  3819. }
  3820. }
  3821. };
  3822. var setPassengerCount = function() {
  3823. if (globalJson.bookingSummary) {
  3824. var bsinfo = globalJson.bookingSummary.bookingSummary;
  3825. var html = "";
  3826. if (bsinfo.adultCount) {
  3827. html += bsinfo.adultCount + " " + (bsinfo.adultCount > 1 ? saar5.l.bookingsummary.adults : saar5.l.bookingsummary.adult);
  3828. }
  3829. if (bsinfo.childCount) {
  3830. html += (html.length ? ", " : "") + bsinfo.childCount + " " + (bsinfo.childCount > 1 ? " " + saar5.l.bookingsummary.children : saar5.l.bookingsummary.child);
  3831. }
  3832. if (bsinfo.infantCount) {
  3833. html += (html.length ? ", " : "") + bsinfo.infantCount + " " + (bsinfo.infantCount > 1 ? saar5.l.bookingsummary.infants : saar5.l.bookingsummary.infant);
  3834. }
  3835. passengerCount.html(html);
  3836. }
  3837. };
  3838. var preselectFlights = function() {
  3839. if (globalJson.bookingSummary) {
  3840. var flightInfo = globalJson.bookingSummary.fareAvailablityVO;
  3841. if (typeof flightInfo !== "undefined") {
  3842. if (typeof flightInfo.defaults !== "undefined") {
  3843. for (var i = flightInfo.defaults.length - 1; i >= 0; i--) {
  3844. if (flightInfo.defaults[i] !== null) {
  3845. flightSearch.filter('[data-flight="' + (i + 1) + '"]').find('input[value="' + flightInfo.defaults[i] + '"]').prop("checked", true).trigger("change.select-flight");
  3846. var selectedFlightId = flightInfo.defaults[i];
  3847. var typeoftrip = selectedFlightId.substring(0, 1);
  3848. if (typeoftrip == "M") {
  3849. var selectedID = selectedFlightId.substring(2, selectedFlightId.indexOf("F")) + "|" + selectedFlightId.substring(selectedFlightId.indexOf("F"));
  3850. } else {
  3851. var selectedID = selectedFlightId.substring(1, selectedFlightId.indexOf("F")) + "|" + selectedFlightId.substring(selectedFlightId.indexOf("F"));
  3852. }
  3853. $('[name="selectedFlightIdDetails[' + i + ']"]').val(selectedID);
  3854. }
  3855. }
  3856. }
  3857. flightSearch.each(function(i, it) {
  3858. $(it).find("td.hidden-mb").find("input:radio:checked").first().each(function(boundnumber) {
  3859. var selectedradioId = $(this).val();
  3860. var typetrip = selectedradioId.substring(0, 1);
  3861. var fEndpos = (selectedradioId.indexOf("F")) + 3;
  3862. if (typetrip == "M") {
  3863. var codewordTemp = selectedradioId.substring(1, fEndpos);
  3864. } else {
  3865. var codewordTemp = selectedradioId.substring(0, fEndpos);
  3866. }
  3867. var codeWord = codewordTemp + "_";
  3868. var selectedSegments = $('input[id^="' + codeWord + '"]');
  3869. var flightnumber = 0;
  3870. var thisflightsegments = globalJson.bookingSummary.bookingSummary.flight[i].flightSegments;
  3871. var totalflights = thisflightsegments.length;
  3872. var flightcode = "a",
  3873. preflightcode = "b";
  3874. selectedSegments.each(function(segmentno) {
  3875. var that = $(this);
  3876. if (segmentno > 0) {
  3877. do {
  3878. if (thisflightsegments[flightnumber] != undefined) {
  3879. flightcode = thisflightsegments[flightnumber].carrierCode + thisflightsegments[flightnumber].flightNumber;
  3880. preflightcode = thisflightsegments[flightnumber - 1].carrierCode + thisflightsegments[flightnumber - 1].flightNumber;
  3881. if (flightcode == preflightcode) {
  3882. flightnumber++;
  3883. }
  3884. }
  3885. } while (flightcode == preflightcode && flightnumber < totalflights);
  3886. }
  3887. if (flightnumber < totalflights && thisflightsegments[flightnumber] != undefined) {
  3888. var textinBS = thisflightsegments[flightnumber].cabinClassDesc;
  3889. var cabinClassText = textinBS.substring(0, textinBS.indexOf("("));
  3890. that.val(cabinClassText);
  3891. flightnumber++;
  3892. }
  3893. });
  3894. });
  3895. });
  3896. var boundnumber = $(".flights__table").length;
  3897. for (var i = 1; i <= boundnumber; i++) {
  3898. while ($("div[data-flight=" + i + "] table tr.hidden.active").length > 0) {
  3899. $('a[data-see-more="' + i + '"]').trigger("click");
  3900. }
  3901. }
  3902. var checkedRadios = $(".flights__searchs").find("td.hidden-mb").find("input:radio:checked");
  3903. checkedRadios.each(function() {
  3904. var that = $(this);
  3905. var thisPrevious = that.parents("div.flights__searchs").find("a.wi-icon.wi-icon-previous");
  3906. var thisNext = that.parents("div.flights__searchs").find("a.wi-icon.wi-icon-next");
  3907. var displayProp = that.parents("td.hidden-mb").css("display");
  3908. if (displayProp == "none") {
  3909. if (thisPrevious.css("display") == "none") {
  3910. thisNext.trigger("click");
  3911. } else {
  3912. thisPrevious.trigger("click");
  3913. }
  3914. }
  3915. });
  3916. var selec;
  3917. flightSearch.each(function(i, it) {
  3918. $(it).find("td.hidden-mb").find("input:radio:checked").first().each(function() {
  3919. changeCabinClassText($(this).val());
  3920. selec = getSelectedCabinClass($(this).val());
  3921. });
  3922. });
  3923. }
  3924. flightSearch.find("input:radio").each(function() {
  3925. if (typeof flightInfo !== "undefined") {
  3926. if (!$.isEmptyObject(flightInfo.messages)) {
  3927. var flightId = $(this).val();
  3928. if (typeof(flightInfo.messages[flightId]) === "undefined") {
  3929. $(this).prop("disabled", true);
  3930. $(this).closest("td.hidden-mb, .package--price").find("[data-tooltip]").addClass("disabled");
  3931. } else {
  3932. $(this).prop("disabled", false);
  3933. $(this).closest("td.hidden-mb, .package--price").find("[data-tooltip]").removeClass("disabled");
  3934. }
  3935. }
  3936. } else {
  3937. $(this).prop("disabled", false);
  3938. $(this).closest("td.hidden-mb, .package--price").find("[data-tooltip]").removeClass("disabled");
  3939. }
  3940. });
  3941. if (typeof flightInfo !== "undefined") {
  3942. if ($.isEmptyObject(flightInfo.messages)) {
  3943. var firstFare = flightSearch.eq(0).find("input:checked:first");
  3944. var isWaitlisted = firstFare.data("waitlisted");
  3945. flightSearch.not(":first").find(isWaitlisted ? 'input[data-waitlisted="true"]' : 'input[data-waitlisted="false"]').each(function() {
  3946. $(this).prop("disabled", true);
  3947. $(this).closest("td.hidden-mb, .package--price").find("[data-tooltip]").addClass("disabled");
  3948. });
  3949. }
  3950. }
  3951. flightSearch.each(function(i, it) {
  3952. $(it).find("td.hidden-mb").find("input:radio:unchecked").each(function() {
  3953. var cabinUnchecked = getSelectedCabinClass($(this).val());
  3954. if (($(this).prop("disabled")) || (!($(this).prop("disabled")) && (cabinUnchecked != selec))) {
  3955. var selCabin = $(this).val();
  3956. var itineraryId;
  3957. var fareFamilyCode;
  3958. if (selCabin != undefined) {
  3959. if (selCabin != "" && selCabin.substring(0, 1) == "M") {
  3960. if (selCabin.length < 7) {
  3961. itineraryId = selCabin.substring(1, 3);
  3962. } else {
  3963. itineraryId = selCabin.substring(1, 4);
  3964. }
  3965. if (selCabin.length < 7) {
  3966. fareFamilyCode = selCabin.substring(3, 6);
  3967. } else {
  3968. fareFamilyCode = selCabin.substring(4, 7);
  3969. }
  3970. } else {
  3971. if (selCabin.length < 10) {
  3972. itineraryId = selCabin.substring(0, 2);
  3973. } else {
  3974. itineraryId = selCabin.substring(0, 3);
  3975. }
  3976. if (selCabin.length < 10) {
  3977. fareFamilyCode = selCabin.substring(2, 5);
  3978. } else {
  3979. fareFamilyCode = selCabin.substring(3, 6);
  3980. }
  3981. }
  3982. }
  3983. var segmentCabinDisp = $("#segmentCabinDisplay").val();
  3984. var segmentSizeVar = ".segmentSize_" + itineraryId;
  3985. var segmentSize = $(segmentSizeVar).attr("id");
  3986. var stdCabinvar = "#cabinClass_" + fareFamilyCode;
  3987. var selectedCabinClass = $(stdCabinvar).val();
  3988. if (selectedCabinClass === "S") {
  3989. for (var i = 0; i < segmentSize; i++) {
  3990. var cabinDes = "#" + itineraryId + fareFamilyCode + "_" + i;
  3991. var cabinClass = $(cabinDes).val();
  3992. if (cabinClass != undefined && cabinClass != "") {
  3993. var changeCabin = ".cabin" + itineraryId + i;
  3994. var oldCabin = ".oldCabinClass" + itineraryId + i;
  3995. $(changeCabin).text(segmentCabinDisp);
  3996. $(oldCabin).hide();
  3997. }
  3998. }
  3999. } else {
  4000. if (!($(this).prop("disabled"))) {
  4001. for (var i = 0; i < segmentSize; i++) {
  4002. var cabinDes = "#" + itineraryId + fareFamilyCode + "_" + i;
  4003. var cabinClass = $(cabinDes).val();
  4004. if (cabinClass != undefined && cabinClass != "") {
  4005. var changeCabin = ".cabin" + itineraryId + i;
  4006. var oldCabin = ".oldCabinClass" + itineraryId + i;
  4007. $(changeCabin).text(segmentCabinDisp);
  4008. $(oldCabin).hide();
  4009. }
  4010. }
  4011. }
  4012. }
  4013. }
  4014. });
  4015. $(it).find("td.hidden-mb").find("input:radio:checked").first().each(function() {
  4016. changeCabinClassText($(this).val());
  4017. });
  4018. });
  4019. }
  4020. };
  4021. var setBookingSummaryFlightInfo = function() {
  4022. var bsinfo = globalJson.bookingSummary.bookingSummary;
  4023. var flightsInfo = bookingSummaryWidget.find("[data-flight-info]");
  4024. flightsInfo.empty();
  4025. var flightsInfoHtml = "";
  4026. for (var i = 0; i < bsinfo.flight.length; i++) {
  4027. flightsInfoHtml += '<div class="flights-info">';
  4028. flightsInfoHtml += ' <div class="flights-info-heading">';
  4029. flightsInfoHtml += " <h4>" + saar5.l.bookingsummary.flight + " " + (i + 1) + "</h4>";
  4030. flightsInfoHtml += " <span>" + bsinfo.flight[i].flightSegments[0].deparure.date + " - " + bsinfo.flight[i].flightSegments[0].deparure.time + "</span>";
  4031. flightsInfoHtml += " </div>";
  4032. flightsInfoHtml += ' <div class="flights-info__country">';
  4033. flightsInfoHtml += " <span>" + bsinfo.flight[i].flightSegments[0].deparure.airportCode + "</span>";
  4034. flightsInfoHtml += " <span>" + bsinfo.flight[i].flightSegments[bsinfo.flight[i].flightSegments.length - 1].arrival.airportCode + "</span>";
  4035. flightsInfoHtml += " </div>";
  4036. flightsInfoHtml += "</div>";
  4037. }
  4038. flightsInfo.html(flightsInfoHtml);
  4039. infoFare.text(formatNumber(bsinfo.fareTotal, precision));
  4040. infoTaxes.text(formatNumber(bsinfo.taxTotal, precision));
  4041. if (bsinfo.othersTotal != 0) {
  4042. $("#others").removeClass("hidden");
  4043. infoOthers.text(formatNumber(bsinfo.othersTotal, precision));
  4044. }
  4045. infoCarrier.text(formatNumber(bsinfo.surchargeTotal, precision));
  4046. infoFlightSubtotal.text(currecyCode + formatNumber(bsinfo.fareSubTotal, precision));
  4047. infoAddonList.empty();
  4048. for (var i = 0; i < addons.length; i++) {
  4049. var html = "";
  4050. html += '<li class="addon--item"><span>' + addons[i].title + "</span>";
  4051. html += '<span class="price">' + formatNumber(addons[i].price, precision) + "</span>";
  4052. html += "</li>";
  4053. var li = $(html);
  4054. infoAddonList.append(li);
  4055. }
  4056. if (addonSubtotal > 0 || (typeof bsinfo.commonAddons !== "undefined" && bsinfo.commonAddons.length > 0)) {
  4057. if (infoAddonList.parent().hasClass("hidden")) {
  4058. infoAddonList.parent().removeClass("hidden");
  4059. }
  4060. var htmlEnd = '<li class="sub-total"><span>' + saar5.l.bookingsummary.subtotal + '</span><span class="price">' + currecyCode + formatNumber(addonSubtotal, precision) + "</span></li>";
  4061. } else {
  4062. infoAddonList.parent().addClass("hidden");
  4063. }
  4064. var liTotal = $(htmlEnd);
  4065. infoAddonList.append(liTotal);
  4066. infoGrandTotal.text(currecyCode + formatNumber(grandTotal, precision));
  4067. if (kkMiles > 0) {
  4068. if (!$(".flight-select-page,.passenger-details-page").length) {
  4069. if ((infoPayableWithMiles.parent().hasClass("hidden")) && (infoKKMilesRest.parent().hasClass("hidden"))) {
  4070. infoPayableWithMiles.parent().removeClass("hidden");
  4071. infoKKMilesRest.parent().removeClass("hidden");
  4072. }
  4073. infoPayableWithMiles.text(currecyCode + formatNumber(kkMiles, precision));
  4074. infoKKMilesRest.text(currecyCode + formatNumber(kkMilesRest, precision));
  4075. }
  4076. } else {
  4077. if (!(infoPayableWithMiles.parent().hasClass("hidden")) && !(infoKKMilesRest.parent().hasClass("hidden"))) {
  4078. infoPayableWithMiles.parent().addClass("hidden");
  4079. infoKKMilesRest.parent().addClass("hidden");
  4080. }
  4081. }
  4082. var stringTotalPaid = "";
  4083. var stringTotalPaidMCP = "";
  4084. var payWithKfMilesCheckbox = $("[data-pay-with-kfmile]");
  4085. var payWithSmeMilesCheckbox = $("[data-pay-with-smemile]");
  4086. var payWithKfMiles = false;
  4087. var payWithSmeMiles = false;
  4088. if (payWithKfMilesCheckbox.is(":checked")) {
  4089. payWithKfMiles = true;
  4090. }
  4091. if (payWithSmeMilesCheckbox.is(":checked")) {
  4092. payWithSmeMiles = true;
  4093. }
  4094. if (payWithKfMilesCheckbox.length && !payWithKfMilesCheckbox.is(":checked") && !globalJson.bookingSummary.bookingSummary.milesAllocated) {
  4095. payWithKfMiles = false;
  4096. }
  4097. if (payWithSmeMilesCheckbox.length && !payWithSmeMilesCheckbox.is(":checked") && !globalJson.bookingSummary.bookingSummary.milesAllocated) {
  4098. payWithSmeMiles = false;
  4099. }
  4100. if ($(".payments-page").length && (payWithKfMiles || payWithSmeMiles) && globalJson.bookingSummary.bookingSummary.milesAllocated > 0) {
  4101. if (typeof globalJson.bookingSummary.bookingSummary.mcp !== "undefined" && globalJson.bookingSummary.bookingSummary.mcp.length > 0) {
  4102. stringTotalPaidMCP += '<span class="unit">' + globalJson.bookingSummary.bookingSummary.mcp[0].currency + "&nbsp;" + globalJson.bookingSummary.bookingSummary.mcp[0].amount + '<div class="bsgrey"><span class="bslower">(' + saar5.l.bookingsummary.convertfrom + "&nbsp;" + currecyCode + "&nbsp;" + formatNumber(cashAllocated, precision) + ")</span></div>";
  4103. }
  4104. stringTotalPaid += '<span class="unit">' + currecyCode + formatNumber(cashAllocated, precision);
  4105. } else {
  4106. if (typeof globalJson.bookingSummary.bookingSummary.mcp !== "undefined" && globalJson.bookingSummary.bookingSummary.mcp.length > 0) {
  4107. stringTotalPaidMCP += '<span class="unit">' + globalJson.bookingSummary.bookingSummary.mcp[0].currency + "&nbsp;" + globalJson.bookingSummary.bookingSummary.mcp[0].amount + '<div class="bsgrey"><span class="bslower">(' + saar5.l.bookingsummary.convertfrom + "&nbsp;" + currecyCode + "&nbsp;" + formatNumber(grandTotal, precision) + ")</span></div>";
  4108. }
  4109. stringTotalPaid += '<span class="unit">' + currecyCode + formatNumber(grandTotal, precision);
  4110. }
  4111. if ($(".payments-page").length && payWithKfMiles && globalJson.bookingSummary.bookingSummary.milesAllocated > 0) {
  4112. stringTotalPaid += "&nbsp;<small>+</small></span>";
  4113. stringTotalPaid += '<span class="miles">' + formatNumber(milesAllocated, 0) + " " + saar5.l.bookingsummary.krisflyermiles + "</span>";
  4114. }
  4115. if ($(".payments-page").length && payWithSmeMiles && globalJson.bookingSummary.bookingSummary.milesAllocated > 0) {
  4116. stringTotalPaid += "&nbsp;<small>+</small></span>";
  4117. stringTotalPaid += '<span class="miles">' + formatNumber(milesAllocated, 0) + " " + saar5.l.bookingsummary.smemiles + "</span>";
  4118. }
  4119. if ($(".payments-page").length && payWithKfMiles && globalJson.bookingSummary.bookingSummary.milesAllocated > 0 && typeof globalJson.bookingSummary.bookingSummary.mcp !== "undefined" && globalJson.bookingSummary.bookingSummary.mcp.length > 0) {
  4120. stringTotalPaidMCP += "&nbsp;<small>+</small></span>";
  4121. stringTotalPaidMCP += '<span class="miles">' + formatNumber(milesAllocated, 0) + " " + saar5.l.bookingsummary.krisflyermiles + "</span>";
  4122. }
  4123. if ($(".payments-page").length && payWithSmeMiles && globalJson.bookingSummary.bookingSummary.milesAllocated > 0 && typeof globalJson.bookingSummary.bookingSummary.mcp !== "undefined" && globalJson.bookingSummary.bookingSummary.mcp.length > 0) {
  4124. stringTotalPaidMCP += "&nbsp;<small>+</small></span>";
  4125. stringTotalPaidMCP += '<span class="miles">' + formatNumber(milesAllocated, 0) + " " + saar5.l.bookingsummary.smemiles + "</span>";
  4126. }
  4127. totalToBePaid.html(stringTotalPaid);
  4128. if (typeof globalJson.bookingSummary.bookingSummary.mcp !== "undefined" && globalJson.bookingSummary.bookingSummary.mcp.length > 0) {
  4129. totalPaid.html(stringTotalPaidMCP);
  4130. }
  4131. $("#farelink").removeClass("hidden");
  4132. };
  4133. var payWithKfMilesChange = function() {
  4134. var payWithKfMilesCheckbox = $("[data-pay-with-kfmile]");
  4135. var payWithSmeMilesCheckbox = $("[data-pay-with-smemile]");
  4136. payWithKfMilesCheckbox.off("change.pay-with-miles").on("change.pay-with-miles", function() {
  4137. setBookingSummaryFlightInfo();
  4138. });
  4139. };
  4140. payWithKfMilesChange();
  4141. var calculateFlightPrices = function() {
  4142. var bsinfo = globalJson.bookingSummary.bookingSummary;
  4143. addonSubtotal = bsinfo.addonSubTotal;
  4144. grandTotal = bsinfo.grandTotal;
  4145. kkMilesRest = bsinfo.costPayableByCash;
  4146. kkMiles = bsinfo.costPayableByMiles;
  4147. milesAllocated = bsinfo.milesAllocated;
  4148. cashAllocated = bsinfo.cashAllocated;
  4149. };
  4150. var fillUpgradeBlocks = function() {
  4151. flightUpgrades.empty().addClass("hidden");
  4152. };
  4153. var printFareCondition = function(res) {
  4154. if ($(".flight-select-page").length) {
  4155. var fareCondition = $(".summary-fare__conditions");
  4156. var html = "";
  4157. for (var i = 0; i < res.fareFamilyCondition.length; i++) {
  4158. html += "<li>";
  4159. if (res.fareFamilyCondition[i].isAllowed) {
  4160. html += '<em class="ico-check-thick"></em>';
  4161. } else {
  4162. html += '<em class="ico-close"></em>';
  4163. }
  4164. html += res.fareFamilyCondition[i].description;
  4165. html += "</li>";
  4166. }
  4167. fareCondition.html(html);
  4168. }
  4169. };
  4170. var printAddons = function(res) {
  4171. addons = [];
  4172. if (typeof res.bookingSummary.commonAddons !== "undefined") {
  4173. for (var i = 0; i < res.bookingSummary.commonAddons.length; i++) {
  4174. if (typeof res.bookingSummary.commonAddons[i].type !== "undefined" && !checkExistAddon(res.bookingSummary.commonAddons[i].type)) {
  4175. addons.push({
  4176. title: res.bookingSummary.commonAddons[i].type,
  4177. price: res.bookingSummary.commonAddons[i].amount,
  4178. element: $()
  4179. });
  4180. }
  4181. }
  4182. }
  4183. };
  4184. var renderPopupDetails = function(res) {
  4185. var countryCode = $("#countryCode").val();
  4186. $.get(config.url.cibBookingSummaryDetailsPopupTemplate, function(data) {
  4187. if (!$(".add-ons-page, .payments-page").length) {
  4188. res.bookingSummary.commonAddons = [];
  4189. }
  4190. var template = window._.template(data, {
  4191. data: res,
  4192. confirmationPage: $(".cib-confirmation-page").length,
  4193. labels: saar5.l.bookingsummary,
  4194. countryCode: countryCode
  4195. });
  4196. var popupContent = $(".popup--flights-details .popup__content");
  4197. popupContent.children(":not(.popup__close)").remove();
  4198. popupContent.append(template);
  4199. popupContent.find("[data-need-format]").each(function() {
  4200. var number = unformatNumber($(this).text());
  4201. if ($(this).data("need-format") == 0) {
  4202. $(this).text(formatNumber(number, 0));
  4203. } else {
  4204. $(this).text(formatNumber(number, precision));
  4205. }
  4206. });
  4207. popupContent.find(".flights--detail span").off("click.getFlightInfo").on("click.getFlightInfo", function() {
  4208. var self = $(this);
  4209. var details = self.siblings(".details");
  4210. if (details.is(".hidden")) {
  4211. details.removeClass("hidden").hide();
  4212. }
  4213. if (!details.is(":visible")) {
  4214. self.children("em").addClass("hidden");
  4215. self.children(".loading").removeClass("hidden");
  4216. var flightNumber = self.parent().data("flight-num");
  4217. var origin = self.parent().data("origin");
  4218. var carrier_code = self.parent().data("carrier-code");
  4219. var dateAndDestination = getDateAndDestinationFromBS(carrier_code + flightNumber);
  4220. var date = dateAndDestination.split("|")[1];
  4221. var destination = dateAndDestination.split("|")[0];
  4222. var flight_no = "";
  4223. if ($('[data-flight-number$="' + flightNumber + '"]').length > 0) {
  4224. flight_no = "" + $('[data-flight-number$="' + flightNumber + '"]').data("flight-number");
  4225. if ($("#tripType").length > 0 && $("#tripType").val() == "M") {
  4226. flight_no = flight_no.substring(1);
  4227. }
  4228. } else {
  4229. flight_no = "X" + self.parent().data("flight-num");
  4230. }
  4231. if (typeof self.parent().data("aircrafttype") !== "undefined" && self.parent().data("flyingtime") !== "undefined") {
  4232. var textAircraftType = saar5.l.bookingsummary.aircrafttype + ": " + self.parent().data("aircrafttype");
  4233. var textFlyingTime = saar5.l.bookingsummary.flyingtime + ": " + self.parent().data("flyingtime");
  4234. var rowAircraftType = $("<p>" + textAircraftType + "</p>");
  4235. var rowFlyingTime = $("<p>" + textFlyingTime + "</p>");
  4236. details.empty();
  4237. details.append(rowAircraftType, rowFlyingTime);
  4238. self.children("em").toggleClass("ico-point-d ico-point-u");
  4239. details.stop().slideToggle(400);
  4240. self.children("em").removeClass("hidden");
  4241. self.children(".loading").addClass("hidden");
  4242. } else {
  4243. $.ajax({
  4244. url: config.url.flightSearchFareFlightInfoJSON,
  4245. dataType: "json",
  4246. type: "GET",
  4247. data: {
  4248. flightNumber: flight_no,
  4249. carrierCode: carrier_code,
  4250. departureDate: date,
  4251. origin: origin,
  4252. destination: destination
  4253. },
  4254. success: function(data) {
  4255. var flyingTime = "";
  4256. for (var ft in data.flyingTimes) {
  4257. flyingTime = data.flyingTimes[ft];
  4258. }
  4259. if (flyingTime == "" || typeof flyingTime === "undefined") {
  4260. flyingTime = saar5.l.bookingsummary.notAvailablemsg;
  4261. } else {
  4262. self.parent().attr("data-flyingTime", flyingTime);
  4263. }
  4264. var aircraftType = "";
  4265. aircraftType = data.aircraftType;
  4266. if (aircraftType == "" || typeof aircraftType === "undefined") {
  4267. aircraftType = saar5.l.bookingsummary.notAvailablemsg;
  4268. } else {
  4269. self.parent().attr("data-aircraftType", aircraftType);
  4270. }
  4271. var textAircraftType = saar5.l.bookingsummary.aircrafttype + ": " + aircraftType;
  4272. var textFlyingTime = saar5.l.bookingsummary.flyingtime + ": " + flyingTime;
  4273. var rowAircraftType = $("<p>" + textAircraftType + "</p>");
  4274. var rowFlyingTime = $("<p>" + textFlyingTime + "</p>");
  4275. details.empty();
  4276. details.append(rowAircraftType, rowFlyingTime);
  4277. details.stop().slideToggle(400);
  4278. },
  4279. error: function(xhr, status) {
  4280. if (status !== "abort") {
  4281. var textAircraftType = saar5.l.bookingsummary.aircrafttype + ": " + saar5.l.bookingsummary.notAvailablemsg;
  4282. var textFlyingTime = saar5.l.bookingsummary.flyingtime + ": " + saar5.l.bookingsummary.notAvailablemsg;
  4283. var rowAircraftType = $("<p>" + textAircraftType + "</p>");
  4284. var rowFlyingTime = $("<p>" + textFlyingTime + "</p>");
  4285. details.empty();
  4286. details.append(rowAircraftType, rowFlyingTime);
  4287. details.stop().slideToggle(400);
  4288. }
  4289. },
  4290. complete: function() {
  4291. self.children("em").toggleClass("ico-point-d ico-point-u");
  4292. self.children("em").removeClass("hidden");
  4293. self.children(".loading").addClass("hidden");
  4294. }
  4295. });
  4296. }
  4297. } else {
  4298. self.children("em").toggleClass("ico-point-d ico-point-u");
  4299. details.stop().slideToggle(400);
  4300. }
  4301. });
  4302. });
  4303. };
  4304.  
  4305. function getDateAndDestinationFromBS(flightNumber) {
  4306. if (typeof globalJson.bookingSummary.bookingSummary.paxDetails[0].detailsPerFlight !== "undefined") {
  4307. var dateAndDestination;
  4308. var detailsPerFlight = globalJson.bookingSummary.bookingSummary.paxDetails[0].detailsPerFlight;
  4309. $.each(detailsPerFlight, function(id, flight) {
  4310. if (flight.flightNo == flightNumber) {
  4311. dateAndDestination = flight.destinationAirportCode + "|" + flight.departureDate;
  4312. return dateAndDestination;
  4313. }
  4314. });
  4315. return dateAndDestination;
  4316. }
  4317. }
  4318. var restrictedFareFamily = function(searchFor) {
  4319. if (searchFor) {
  4320. var fareId;
  4321. var checkedRadioBtns = $("div.flights__searchs").find("table.flights__table > tbody").find('input[type="radio"]');
  4322. $.each(checkedRadioBtns, function(key, item) {
  4323. var keyValue = (item.value).toLowerCase();
  4324. if (keyValue.search(searchFor.toLowerCase()) != -1) {
  4325. fareId = item.id;
  4326. if (fareId.search("mb") == -1) {
  4327. return false;
  4328. }
  4329. }
  4330. });
  4331. var restrictiveFareContent = ($("#" + fareId).closest("td").find("[data-content]").data("content"));
  4332. $("#restrictive").html(restrictiveFareContent);
  4333. }
  4334. };
  4335. var BSPAjax;
  4336. var setAdditionalGuest = function(res) {
  4337. if (additionalGuest && additionalGuest.length) {
  4338. var adultCount = res.bookingSummary.adultCount ? parseInt(res.bookingSummary.adultCount) : 0;
  4339. var childCount = res.bookingSummary.childCount ? parseInt(res.bookingSummary.childCount) : 0;
  4340. var guestCount = adultCount + childCount;
  4341. additionalGuest.find("select").empty();
  4342. if (guestCount) {
  4343. var html = "",
  4344. i = 0;
  4345. for (i = 1; i <= guestCount; i++) {
  4346. html += '<option value="' + i + '">' + i + "</option>";
  4347. }
  4348. additionalGuest.find("select").append(html).find("option:last-child").prop("selected", true);
  4349. }
  4350. additionalGuest.customSelect("_createTemplate");
  4351. }
  4352. };
  4353. var callBSPAjax = function(onchange, extData, callback, radioEl) {
  4354. if ($(".passenger-details-page").length && typeof globalJsonForBs !== "undefined" && typeof globalJsonForBs.bookingSummary !== "undefined") {
  4355. successBSPAjax(globalJsonForBs, callback);
  4356. return;
  4357. }
  4358. if (typeof globalJson.bookingSummary !== "undefined" && typeof globalJson.bookingSummary.bookingSummary !== "undefined" && typeof globalJson.bookingSummary.bookingSummary.fareSubTotal !== "undefined") {
  4359. prevFare = globalJson.bookingSummary.bookingSummary.fareSubTotal;
  4360. }
  4361. var data = {};
  4362. $.extend(data, extData);
  4363. if (onchange) {
  4364. flightSearch.each(function(i, it) {
  4365. var selectedFlightId = $(it).find("td.hidden-mb").find("input:radio:checked").first().val();
  4366. if (selectedFlightId) {
  4367. var typeoftrip = selectedFlightId.substring(0, 1);
  4368. if (typeoftrip == "M") {
  4369. selectedFlightId = selectedFlightId.substring(2, selectedFlightId.indexOf("F")) + "|" + selectedFlightId.substring(selectedFlightId.indexOf("F"));
  4370. } else {
  4371. selectedFlightId = selectedFlightId.substring(1, selectedFlightId.indexOf("F")) + "|" + selectedFlightId.substring(selectedFlightId.indexOf("F"));
  4372. }
  4373. data["selectedFlightIdDetails[" + i + "]"] = selectedFlightId;
  4374. }
  4375. });
  4376. }
  4377. var BSPUrl = onchange ? config.url.cibFlightSelectOnChange : config.url.cibFlightSelect;
  4378. BSPUrl += "&CIB=true";
  4379. if (!$("body").hasClass("flight-select-page")) {
  4380. BSPUrl = config.url.bookingSummaryJSON;
  4381. if (typeof($("#initiator").val()) !== "undefined") {
  4382. var usExceptionForInsurance = "false";
  4383. if (typeof($("#usExceptionForInsurance").attr("data-excludedstates")) !== "undefined" && $("#usExceptionForInsurance").attr("data-excludedstates") == "allow") {
  4384. usExceptionForInsurance = "true";
  4385. }
  4386. data = {
  4387. "id": $("#initiator").val(),
  4388. "usExceptionForInsurance": usExceptionForInsurance,
  4389. };
  4390. }
  4391. }
  4392. if (BSPAjax) {
  4393. BSPAjax.abort();
  4394. }
  4395. var salt = window.name;
  4396. if (salt == "") {
  4397. salt = "DUPLICATE_SALT";
  4398. }
  4399. globalJson.bookingSummary = undefined;
  4400. BSPAjax = $.ajax({
  4401. url: BSPUrl + "&rnd=" + (new Date().getTime()) + "&salt=" + salt,
  4402. type: config.ajaxMethod,
  4403. data: data,
  4404. dataType: "json",
  4405. success: function(res) {
  4406. if (res.errorMessage == "NOTELIGIBLE") {
  4407. $("#getFareCallErrorMsg").removeClass("hidden");
  4408. var departErrorMsg = saar5.m.flightselect.dateException;
  4409. $("#getFareCallErrorMsg").find("p").html(departErrorMsg);
  4410. $("#getFareCallErrorMsg").css("margin-top", "11px");
  4411. flightSearch.find("input:radio").not(radioEl).not(":checked").prop("disabled", false);
  4412. } else {
  4413. successBSPAjax(res, callback);
  4414. setAdditionalGuest(res);
  4415. if ($(".flight-select-page").length) {
  4416. $("#btn-next").prop("disabled", false).removeClass("disabled");
  4417. $(".link-4").prop("disabled", false).removeClass("disabled");
  4418. $(".link-4").removeClass("disableClick");
  4419. }
  4420. }
  4421. },
  4422. error: function(jqXHR, textStatus, errorThrown) {
  4423. if (textStatus !== "abort") {}
  4424. if (jqXHR.status == 400 && jqXHR.responseText == "DUPLICATE_OR_MULTITAB") {
  4425. economyHomePopUp.Popup("show");
  4426. return;
  4427. }
  4428. $("#getFareCallErrorMsg").removeClass("hidden");
  4429. var errorMsg = saar5.m.flightselect.genericException;
  4430. $("#getFareCallErrorMsg").find("P").html(errorMsg);
  4431. $("#getFareCallErrorMsg").css("margin-top", "11px");
  4432. if ($(".payments-page").length) {
  4433. if (bookingSummaryWidget.hasClass("active")) {
  4434. bookingSummaryControl.trigger("click.openBS");
  4435. }
  4436. }
  4437. },
  4438. beforeSend: function() {
  4439. passengerCount.add(totalToBePaid).add(infoFare).add(infoTaxes).add(infoCarrier).add(infoFlightSubtotal).add(infoGrandTotal).add(infoKKMilesRest).add(infoPayableWithMiles).text("...");
  4440. infoAddonList.empty();
  4441. $("#getFareCallErrorMsg").addClass("hidden");
  4442. if (!onchange) {
  4443. var bspInfo = bookingSummaryWidget.find(".booking-summary__info");
  4444. bspInfo.find(".fare-notice-cib").addClass("hidden");
  4445. bspInfo.siblings(".loading--medium-2").removeClass("hidden");
  4446. }
  4447. if ($(".flight-select-page").length) {
  4448. $("#btn-next").prop("disabled", true).addClass("disabled");
  4449. $(".link-4").prop("disabled", true).addClass("disabled");
  4450. $(".link-4").addClass("disableClick");
  4451. if (onchange && radioEl) {
  4452. var bspInfo = bookingSummaryWidget.find(".booking-summary__info");
  4453. bspInfo.find(".total-cost").addClass("hidden");
  4454. bspInfo.find(".fare-notice-cib").addClass("hidden");
  4455. bspInfo.siblings(".loading--medium-2").removeClass("hidden");
  4456. flightSearch.find("input:radio").not(radioEl).not(":checked").prop("disabled", true);
  4457. } else {
  4458. SIA.preloader.show();
  4459. }
  4460. }
  4461. },
  4462. complete: function() {
  4463. var scootCheckNeeded = $("#scootChk").val();
  4464. if (scootCheckNeeded != undefined && scootCheckNeeded != null && scootCheckNeeded == "true") {
  4465. var scootPresent = false;
  4466. var carrierList = $("input[type='radio']:checked").parent().parent().parent().find(".flights__info").find(".flights--detail.left");
  4467. $(carrierList).each(function() {
  4468. var carrierCode = $(this).attr("data-carrier-code");
  4469. if (carrierCode == "TZ") {
  4470. scootPresent = true;
  4471. }
  4472. });
  4473. if (scootPresent) {
  4474. $("#scootInfo").removeClass("hidden");
  4475. } else {
  4476. $("#scootInfo").addClass("hidden");
  4477. }
  4478. }
  4479. if (!onchange) {
  4480. var bspInfo = $(".booking-summary").find(".booking-summary__info");
  4481. bspInfo.find(".fare-notice-cib").removeClass("hidden");
  4482. bspInfo.siblings(".loading--medium-2").addClass("hidden");
  4483. }
  4484. if ($(".flight-select-page").length && onchange) {
  4485. var bspInfo = $(".booking-summary").find(".booking-summary__info");
  4486. bspInfo.find(".total-cost").removeClass("hidden");
  4487. bspInfo.find(".fare-notice-cib").removeClass("hidden");
  4488. bspInfo.siblings(".loading--medium-2").addClass("hidden");
  4489. } else {
  4490. SIA.preloader.hide();
  4491. }
  4492. if ($("#getFareCallErrorMsg").length) {
  4493. $("#getFareCallErrorMsg").focus();
  4494. if ($(".checkin-alert.error-alert").length > 1) {
  4495. $("#getFareCallErrorMsg").addClass("hidden");
  4496. }
  4497. }
  4498. if ($(".payments-page").length) {
  4499. if (typeof globalJson !== "undefined" && typeof globalJson.bookingSummary !== "undefined" && typeof globalJson.bookingSummary.bookingSummary !== "undefined") {
  4500. if (!bookingSummaryWidget.hasClass("active")) {
  4501. bookingSummaryControl.trigger("click.openBS");
  4502. }
  4503. } else {
  4504. if (bookingSummaryWidget.hasClass("active")) {
  4505. bookingSummaryControl.trigger("click.openBS");
  4506. }
  4507. }
  4508. if ($("#change-payment-currency").prop("checked") == true) {
  4509. globalJson.bookingSummary.bookingSummary.mcp = [];
  4510. var currecy_Code = globalJson.bookingSummary.bookingSummary.currency;
  4511. var currencyDrpDwn = $("#pax1-27").val();
  4512. var mcpobj = {};
  4513. if (currencyDrpDwn !== currecy_Code) {
  4514. mcpobj.currency = $("#pax1-27").val();
  4515. mcpobj.amount = $("#input-alexandra-road-2").val();
  4516. globalJson.bookingSummary.bookingSummary.mcp.push(mcpobj);
  4517. }
  4518. successBSPAjax(globalJson.bookingSummary);
  4519. }
  4520. }
  4521. }
  4522. });
  4523. };
  4524. var economyHomePopUp = $(".popup--economy-home-back");
  4525. economyHomePopUp.Popup({
  4526. overlayBGTemplate: SIA.global.config.template.overlay,
  4527. modalShowClass: "",
  4528. afterShow: function() {
  4529. flyingFocus = $("#flying-focus");
  4530. if (flyingFocus.length) {
  4531. flyingFocus.remove();
  4532. }
  4533. },
  4534. closeViaOverlay: false
  4535. });
  4536.  
  4537. function updatePSSOnCommonAddOn(res) {
  4538. if (res) {
  4539. var flag = 0;
  4540. var amt = 0;
  4541. if (typeof res.bookingSummary.commonAddons === "undefined") {
  4542. res.bookingSummary.commonAddons = [];
  4543. }
  4544. if (res.bookingSummary && res.bookingSummary.paxDetails && res.bookingSummary.paxDetails.length > 0 && ($.grep(res.bookingSummary.commonAddons, function(addon, index) {
  4545. return (addon.type == saar5.l.bookingsummary.preferredseat);
  4546. }).length == 0)) {
  4547. $.each(res.bookingSummary.paxDetails, function(paxId, pax) {
  4548. if (pax.detailsPerFlight && pax.detailsPerFlight.length > 0) {
  4549. $.each(pax.detailsPerFlight, function(flightId, flight) {
  4550. if (flight.addonPerPax && flight.addonPerPax.length > 0) {
  4551. $.each(flight.addonPerPax, function(id, addon) {
  4552. if (addon && addon.type == saar5.l.bookingsummary.preferredseat) {
  4553. flag = 1;
  4554. amt = amt + parseFloat(addon.amount);
  4555. }
  4556. });
  4557. }
  4558. });
  4559. }
  4560. });
  4561. if (flag > 0) {
  4562. var addon = {};
  4563. addon.type = saar5.l.bookingsummary.preferredseat;
  4564. addon.category = "Chargeable";
  4565. addon.description = "";
  4566. addon.amount = amt;
  4567. res.bookingSummary.commonAddons.push(addon);
  4568. }
  4569. }
  4570. }
  4571. return updatePSSAmountToPaxFare(res);
  4572. }
  4573.  
  4574. function updatePSSAmountToPaxFare(res) {
  4575. if (res) {
  4576. var totalPSSAmount = 0;
  4577. if (res.bookingSummary && res.bookingSummary.paxDetails && res.bookingSummary.paxDetails.length > 0 && onloadFlag) {
  4578. $.each(res.bookingSummary.paxDetails, function(paxId, pax) {
  4579. if (pax.detailsPerFlight && pax.detailsPerFlight.length > 0) {
  4580. var amt = 0;
  4581. $.each(pax.detailsPerFlight, function(flightId, flight) {
  4582. if (flight.addonPerPax && flight.addonPerPax.length > 0) {
  4583. $.each(flight.addonPerPax, function(id, addon) {
  4584. if (addon && addon.type == saar5.l.bookingsummary.preferredseat) {
  4585. amt = amt + parseFloat(addon.amount);
  4586. }
  4587. });
  4588. }
  4589. });
  4590. totalPSSAmount = totalPSSAmount + amt;
  4591. if (amt > 0 && pax.fareDetails.totalCost > amt) {
  4592. pax.fareDetails.totalCost = pax.fareDetails.totalCost + amt;
  4593. }
  4594. }
  4595. });
  4596. }
  4597. }
  4598. return res;
  4599. }
  4600.  
  4601. function successBSPAjax(result, callback) {
  4602. var res = updatePSSOnCommonAddOn(result);
  4603. globalJson.bookingSummary = res;
  4604. if (res) {
  4605. currecyCode = res.bookingSummary.currency + " ";
  4606. precision = res.bookingSummary.precision;
  4607. }
  4608. if ($(".payments-page").length) {
  4609. var triggerCostPayableByCash = new jQuery.Event("change.costPayableByCash");
  4610. triggerCostPayableByCash.cash = res.bookingSummary.costPayableByCash;
  4611. bookingSummaryWidget.trigger(triggerCostPayableByCash);
  4612. if ($("#pay-krisflyer-miles").prop("checked") == true) {
  4613. var paymentDetail = $(".payments-detail");
  4614. var mile = $("[data-mile]", paymentDetail);
  4615. var grandTotal = $("[data-grandtotal]", paymentDetail);
  4616. var smemile = $("[data-smemile]", paymentDetail);
  4617. var smegrandTotal = $("[data-smegrandtotal]", paymentDetail);
  4618. smemile.html(jQuery.validator.format("{0} " + saar5.l.bookingsummary.smemiles, formatNumber(globalJson.bookingSummary.bookingSummary.milesAllocated, 0)));
  4619. smegrandTotal.html(jQuery.validator.format("{0} " + saar5.l.bookingsummary.smemiles + " + {2} {1}", formatNumber(globalJson.bookingSummary.bookingSummary.milesAllocated, 0), formatNumber(unformatNumber(globalJson.bookingSummary.bookingSummary.cashAllocated), precision), globalJson.bookingSummary.bookingSummary.currency));
  4620. mile.html(jQuery.validator.format("{0} " + saar5.l.bookingsummary.krisflyermiles, formatNumber(globalJson.bookingSummary.bookingSummary.milesAllocated, 0)));
  4621. grandTotal.html(jQuery.validator.format("{0} " + saar5.l.bookingsummary.krisflyermiles + " + {2} {1}", formatNumber(globalJson.bookingSummary.bookingSummary.milesAllocated, 0), formatNumber(unformatNumber(globalJson.bookingSummary.bookingSummary.cashAllocated), precision), globalJson.bookingSummary.bookingSummary.currency));
  4622. $("#totalMilesUsed").val(globalJson.bookingSummary.bookingSummary.milesAllocated);
  4623. $("#spinner1").val(globalJson.bookingSummary.bookingSummary.milesAllocated);
  4624. window.parent.$("#totalMilesUsedParent").val(globalJson.bookingSummary.bookingSummary.milesAllocated);
  4625. if ($("#spinner1").length) {
  4626. splitPaxFare(globalJson.bookingSummary.bookingSummary.cashAllocated, 0);
  4627. }
  4628. $(".overlay-loading").addClass("hidden");
  4629. }
  4630. }
  4631. printAddons(res);
  4632. setPassengerCount();
  4633. if ($(".flight-select-page").length) {
  4634. preselectFlights();
  4635. }
  4636. calculateFlightPrices();
  4637. setBookingSummaryFlightInfo();
  4638. if ($(".flight-select-page").length) {
  4639. fillUpgradeBlocks();
  4640. }
  4641. renderPopupDetails(res);
  4642. if (res && res.fareFamilyCondition && res.fareFamilyCondition.length && res.fareFamilyCondition[0].description) {
  4643. var searchFor = res.fareFamilyCondition[0].description;
  4644. restrictedFareFamily(searchFor);
  4645. }
  4646. if (typeof(callback) === "function") {
  4647. callback();
  4648. }
  4649. }
  4650. callBSPAjax(false, {}, function() {
  4651. $("[data-flight]").each(function() {
  4652. $(this).find("input:radio:checked").eq(0).trigger("change.select-flight");
  4653. });
  4654. });
  4655. var paymentKFMiles = function() {
  4656. bookingSummaryWidget.off("change.KfMiles").on("change.KfMiles", function(e) {
  4657. callBSPAjax(true, {
  4658. selectedMiles: e.miles,
  4659. cashToBeConvertedToMiles: e.cash
  4660. }, e.callback);
  4661. });
  4662. };
  4663. paymentKFMiles();
  4664. var checkExistAddon = function(elm) {
  4665. var exists = false;
  4666. for (var i = addons.length - 1; i >= 0; i--) {
  4667. if (typeof(elm) === "object" && addons[i].element.is(elm)) {
  4668. exists = true;
  4669. return exists;
  4670. } else {
  4671. if (typeof(elm) === "string" && addons[i].title === elm) {
  4672. exists = true;
  4673. return exists;
  4674. }
  4675. }
  4676. }
  4677. return exists;
  4678. };
  4679. getSelectedCabinClass = function(checkdelmt) {
  4680. var selectedCabin = checkdelmt;
  4681. var itineraryId;
  4682. var fareFamilyCode;
  4683. if (selectedCabin != undefined) {
  4684. if (selectedCabin != "" && selectedCabin.substring(0, 1) == "M") {
  4685. if (selectedCabin.length < 7) {
  4686. itineraryId = selectedCabin.substring(1, 3);
  4687. } else {
  4688. itineraryId = selectedCabin.substring(1, 4);
  4689. }
  4690. if (selectedCabin.length < 7) {
  4691. fareFamilyCode = selectedCabin.substring(3, 6);
  4692. } else {
  4693. fareFamilyCode = selectedCabin.substring(4, 7);
  4694. }
  4695. } else {
  4696. if (selectedCabin.length < 10) {
  4697. itineraryId = selectedCabin.substring(0, 2);
  4698. } else {
  4699. itineraryId = selectedCabin.substring(0, selectedCabin.indexOf("F"));
  4700. }
  4701. if (selectedCabin.length < 10) {
  4702. fareFamilyCode = selectedCabin.substring(2, 5);
  4703. } else {
  4704. var ffSelected = selectedCabin.substring(selectedCabin.indexOf("F"), selectedCabin.length);
  4705. fareFamilyCode = ffSelected.substring(0, 3);
  4706. }
  4707. }
  4708. }
  4709. var segmentSizeVar = ".segmentSize_" + itineraryId;
  4710. var segmentSize = $(segmentSizeVar).attr("id");
  4711. var stdCabinvar = "#cabinClass_" + fareFamilyCode;
  4712. var selectedCabinClassOnLoad = $(stdCabinvar).val();
  4713. return selectedCabinClassOnLoad;
  4714. };
  4715. var changeCabinClassText = function(checkdelmt) {
  4716. var selectedCabin = checkdelmt;
  4717. var itineraryId;
  4718. var fareFamilyCode;
  4719. var mul = 0;
  4720. if (selectedCabin != undefined) {
  4721. if (selectedCabin != "" && selectedCabin.substring(0, 1) == "M") {
  4722. mul = 1;
  4723. if (selectedCabin.length < 7) {
  4724. itineraryId = selectedCabin.substring(1, 3);
  4725. } else {
  4726. itineraryId = selectedCabin.substring(1, 4);
  4727. }
  4728. if (selectedCabin.length < 7) {
  4729. fareFamilyCode = selectedCabin.substring(3, 6);
  4730. } else {
  4731. fareFamilyCode = selectedCabin.substring(4, 7);
  4732. }
  4733. } else {
  4734. if (selectedCabin.length < 10) {
  4735. itineraryId = selectedCabin.substring(0, 2);
  4736. } else {
  4737. itineraryId = selectedCabin.substring(0, selectedCabin.indexOf("F"));
  4738. }
  4739. if (selectedCabin.length < 10) {
  4740. fareFamilyCode = selectedCabin.substring(2, 5);
  4741. } else {
  4742. var ffSelected = selectedCabin.substring(selectedCabin.indexOf("F"), selectedCabin.length);
  4743. fareFamilyCode = ffSelected.substring(0, 3);
  4744. }
  4745. }
  4746. }
  4747. var segmentSizeVar = ".segmentSize_" + itineraryId;
  4748. var segmentSize = $(segmentSizeVar).attr("id");
  4749. var stdCabinvar = "#cabinClass_" + fareFamilyCode;
  4750. var selectedCabinClass = $(stdCabinvar).val();
  4751. var headerSize = $("#ffHeaderSize").val();
  4752. for (var i = 0; i < segmentSize; i++) {
  4753. var cabinDes = "#" + itineraryId + fareFamilyCode + "_" + i;
  4754. var cabinClass = $(cabinDes).val();
  4755. if (cabinClass != undefined && cabinClass != "") {
  4756. var changeCabin = ".cabin" + itineraryId + i;
  4757. var oldCabin = ".oldCabinClass" + itineraryId + i;
  4758. if (selectedCabinClass == "S") {
  4759. $(changeCabin).addClass("htCabin");
  4760. } else {
  4761. $(changeCabin).removeClass("htCabin");
  4762. }
  4763. if (mul == 1) {
  4764. if (headerSize != 1) {
  4765. $(changeCabin).text(cabinClass);
  4766. $(oldCabin).hide();
  4767. }
  4768. } else {
  4769. $(changeCabin).text(cabinClass);
  4770. $(oldCabin).hide();
  4771. }
  4772. }
  4773. }
  4774. return true;
  4775. };
  4776. var fillData = function() {
  4777. flightSearch.off("change.fillData").on("change.fillData", 'input[type="radio"]', function(e) {
  4778. var radio = $(this);
  4779. var tableIndex = flightSearch.index($(this).closest(".flights__searchs"));
  4780. var selectedFlightId = $(this).val();
  4781. if (!($(this).prop("disabled"))) {
  4782. changeCabinClassText(selectedFlightId);
  4783. }
  4784. var typeoftrip = selectedFlightId.substring(0, 1);
  4785. if (typeoftrip == "M") {
  4786. var selectedID = selectedFlightId.substring(2, selectedFlightId.indexOf("F")) + "|" + selectedFlightId.substring(selectedFlightId.indexOf("F"));
  4787. } else {
  4788. var selectedID = selectedFlightId.substring(1, selectedFlightId.indexOf("F")) + "|" + selectedFlightId.substring(selectedFlightId.indexOf("F"));
  4789. }
  4790. $('[name="selectedFlightIdDetails[' + tableIndex + ']"]').val(selectedID);
  4791. callBSPAjax(true, {
  4792. tripType: $(this).val()[0]
  4793. }, function() {
  4794. if (e.originalEvent) {
  4795. var bsfare = globalJson.bookingSummary.bookingSummary.fareSubTotal;
  4796. var diffFare = bsfare - prevFare;
  4797. toogleTooltip(tooltipPopup, saar5.l.bookingsummary.fare, diffFare);
  4798. }
  4799. }, radio);
  4800. });
  4801. flightUpgrades.off("change.fillData").on("change.fillData", 'input[type="checkbox"]', function(e) {
  4802. var checkbox = $(this);
  4803. var isChecked = $(this).is(":checked");
  4804. if (isChecked) {
  4805. if (!checkExistAddon(checkbox)) {
  4806. addons.push({
  4807. title: checkbox.data("upgrade-title"),
  4808. price: unformatNumber(checkbox.data("upgrade-price")),
  4809. element: checkbox
  4810. });
  4811. }
  4812. } else {
  4813. for (var i = addons.length - 1; i >= 0; i--) {
  4814. if (addons[i].element.is(checkbox)) {
  4815. addons.splice(i, 1);
  4816. }
  4817. }
  4818. }
  4819. calculateFlightPrices();
  4820. setBookingSummaryFlightInfo();
  4821. if (e.originalEvent && isChecked) {
  4822. toogleTooltip(tooltipPopup, checkbox.data("upgrade-title"), checkbox.data("upgrade-price"));
  4823. }
  4824. });
  4825. flightUpgrades.off("clearAddOn").on("clearAddOn", function() {
  4826. var radio = $(this).find('input[type="checkbox"]');
  4827. for (var i = addons.length - 1; i >= 0; i--) {
  4828. if (addons[i].element.is(radio)) {
  4829. addons.splice(i, 1);
  4830. }
  4831. }
  4832. calculateFlightPrices();
  4833. setBookingSummaryFlightInfo();
  4834. });
  4835. };
  4836. fillData();
  4837. var popupScroll = function() {
  4838. var trigger = bookingSummaryWidget.find("[data-popup-anchor]");
  4839. trigger.off("click.setAnchor").on("click.setAnchor", function() {
  4840. var anchor = $(this).data("popup-anchor");
  4841. var popup = $($(this).data("trigger-popup"));
  4842. popup.data("anchor", anchor);
  4843. });
  4844. trigger.each(function() {
  4845. var popup = $($(this).data("trigger-popup"));
  4846. if (!popup.data("boundScroll")) {
  4847. popup.data("boundScroll", true);
  4848. popup.off("afterShow.scrollToAnchor").on("afterShow.scrollToAnchor", function() {
  4849. var pop = $(this);
  4850. window.setTimeout(function() {
  4851. var paddingTop = parseInt(pop.find(".popup__content").css("padding-top"), 10);
  4852. var anchorElement = pop.find('[data-anchor="' + pop.data("anchor") + '"]');
  4853. if (anchorElement.length) {
  4854. popup.scrollTop(anchorElement.position().top - paddingTop);
  4855. }
  4856. }, 1);
  4857. });
  4858. }
  4859. });
  4860. };
  4861. popupScroll();
  4862. var stickyWidget = function() {
  4863. var setStickyPosition = function() {
  4864. if ($(".passenger-details-page, .seatsmap-page, .cib-confirmation-page").length) {
  4865. return;
  4866. }
  4867. var fixedClassName = "booking-summary--fixed";
  4868. var footer = $("footer.footer");
  4869. if ($(window).scrollTop() >= bookingSummaryOffset.top && Modernizr.mq("(min-width: " + SIA.global.config.tablet + "px)")) {
  4870. var right = $(window).width() - $(".main-inner").width();
  4871. right = right / 2;
  4872. bookingSummaryWidget.addClass(fixedClassName).css("right", right);
  4873. var winHeight = $(window).height(),
  4874. winTop = $(window).scrollTop(),
  4875. bmHeight = bookingSummaryWidget.height(),
  4876. footTop = footer.offset().top;
  4877. if (bmHeight <= winHeight) {
  4878. if (winTop + bmHeight >= footTop) {
  4879. bookingSummaryWidget.css({
  4880. top: "auto",
  4881. bottom: winTop + winHeight - footTop
  4882. });
  4883. } else {
  4884. bookingSummaryWidget.css({
  4885. top: "5px",
  4886. bottom: ""
  4887. });
  4888. }
  4889. } else {
  4890. if (winTop + winHeight >= footTop) {
  4891. bookingSummaryWidget.css({
  4892. top: "auto",
  4893. bottom: winTop + winHeight - footTop
  4894. });
  4895. } else {
  4896. bookingSummaryWidget.css({
  4897. top: "5px",
  4898. bottom: ""
  4899. });
  4900. }
  4901. }
  4902. } else {
  4903. bookingSummaryWidget.removeClass(fixedClassName).css({
  4904. right: "",
  4905. top: "",
  4906. bottom: ""
  4907. });
  4908. }
  4909. };
  4910. var originalWidth = $(window).width();
  4911. $(window).on("resize.sticky-booking-summary", function() {
  4912. if ($(this).width() !== originalWidth) {
  4913. setStickyPosition();
  4914. }
  4915. }).on("scroll.sticky-booking-summary", function() {
  4916. setStickyPosition();
  4917. }).trigger("scroll.sticky-booking-summary");
  4918. return {
  4919. setStickyPosition: setStickyPosition
  4920. };
  4921. };
  4922. var sticky = stickyWidget();
  4923. var toggleBookingSummary = function() {
  4924. bookingSummaryControl.off("click.openBS").on("click.openBS", function(e) {
  4925. e.preventDefault();
  4926. if (typeof globalJson === "undefined" || typeof globalJson.bookingSummary === "undefined" || typeof globalJson.bookingSummary.bookingSummary === "undefined") {
  4927. if (!bookingSummaryWidget.hasClass("active")) {
  4928. return;
  4929. }
  4930. if (!$(".payments-page").length) {
  4931. return;
  4932. }
  4933. }
  4934. if ($(".orb-flight-select-page").length) {
  4935. if ($("[data-flight] input[type=radio]:checked").length === 0) {
  4936. return;
  4937. }
  4938. }
  4939. if (window.innerWidth < SIA.global.config.tablet) {
  4940. var popupSeatSelect = $("[data-infomations-1]"),
  4941. popupSeatChange = $("[data-infomations-2]");
  4942. if (popupSeatSelect.length) {
  4943. popupSeatSelect.find(".tooltip__close").trigger("click");
  4944. }
  4945. if (popupSeatChange.length) {
  4946. popupSeatChange.find(".tooltip__close").trigger("click");
  4947. }
  4948. }
  4949. bookingSummaryWidget.toggleClass("active");
  4950. bookingSummaryContent.toggle(0, function() {
  4951. if (bookingSummaryWidget.hasClass("active") && bookingSummaryWidget.closest("body").hasClass("add-ons-page")) {
  4952. bookingSummaryWidget.parents("div.content-wrapper").css("min-height", bookingSummaryWidget.outerHeight(true) + "px");
  4953. } else {
  4954. bookingSummaryWidget.parent().css("min-height", "");
  4955. }
  4956. });
  4957. sticky.setStickyPosition();
  4958. });
  4959. };
  4960. toggleBookingSummary();
  4961. var toogleTooltip = function(tooltipElement, upperText, priceAdded) {
  4962. var spanSign = '<span class="text-1">+ ';
  4963. if (priceAdded < 0) {
  4964. spanSign = '<span class="text-1">- ';
  4965. priceAdded = priceAdded * -1;
  4966. }
  4967. if (!tooltipElement.hasClass("active") && !bookingSummaryWidget.hasClass("active")) {
  4968. var overwriteTxtTooltip = tooltipElement.find(".tooltip__content");
  4969. var position = bookingSummaryWidget.offset(),
  4970. scrollTop = $(window).scrollTop(),
  4971. posTop = Math.max(position.top - scrollTop, 0),
  4972. posRight = (document.body.clientWidth || $(window).width()) - position.left + 15;
  4973. overwriteTxtTooltip.html(upperText + spanSign + currecyCode + formatNumber(priceAdded, precision) + "</span>");
  4974. if (window.innerWidth < SIA.global.config.tablet) {
  4975. var posBottomBooking = position.top + bookingSummaryWidget.height();
  4976. if (scrollTop > posBottomBooking) {
  4977. posTop = 15;
  4978. } else {
  4979. posTop = posBottomBooking - scrollTop + 15;
  4980. }
  4981. posRight = position.left;
  4982. }
  4983. tooltipElement.addClass("active").stop().css({
  4984. position: "fixed",
  4985. top: posTop,
  4986. right: posRight
  4987. }).fadeIn(400).delay(2000).fadeOut(400, function() {
  4988. $(this).removeClass("active");
  4989. });
  4990. }
  4991. $(window).on("scroll.sticky-booking-summary", function() {
  4992. if (bookingSummaryWidget.hasClass("booking-summary--fixed")) {
  4993. tooltipElement.css("top", "5px");
  4994. } else {
  4995. tooltipElement.css("top", bookingSummaryWidget.offset().top - $(window).scrollTop());
  4996. }
  4997. if (window.innerWidth < SIA.global.config.tablet) {
  4998. var posBottomBooking = bookingSummaryWidget.offset().top + bookingSummaryWidget.height();
  4999. if ($(window).scrollTop() > posBottomBooking) {
  5000. tooltipElement.css("top", "15px");
  5001. } else {
  5002. tooltipElement.css("top", posBottomBooking - $(window).scrollTop() + 15);
  5003. }
  5004. }
  5005. });
  5006. };
  5007. $("a#stateresideConfirm").click(function() {
  5008. if ($("#state-provine").val() != null) {
  5009. var usState = $("#state-provine").val();
  5010. if (($("#country").val() === "US") && ($("#usInsurance").val() === "true")) {
  5011. SIA.preloader.show();
  5012. $("#usExceptionForInsurance").attr("data-excludedstates", "allow");
  5013. var triggerKfMiles = new jQuery.Event("change.KfMiles");
  5014. $(".booking-summary").trigger(triggerKfMiles);
  5015. }
  5016. }
  5017. });
  5018. $("a#stateresideCancel").click(function() {
  5019. if ($("#state-provine").val() != null) {
  5020. var usState = $("#state-provine").val();
  5021. if (($("#country").val() === "US") && ($("#usInsurance").val() === "true")) {
  5022. $("#state-provine").val("");
  5023. }
  5024. }
  5025. });
  5026. SIA.Insurance = function(insuranceAmt, addFlag) {
  5027. var flag = false;
  5028. var bs = globalJson.bookingSummary.bookingSummary;
  5029. if (addFlag) {
  5030. if (typeof bs.commonAddons !== "undefined" && bs.commonAddons.length > 0) {
  5031. $.each(bs.commonAddons, function(key, Addon) {
  5032. if (Addon.type == saar5.l.bookingsummary.travelinsurance) {
  5033. flag = true;
  5034. return false;
  5035. }
  5036. });
  5037. }
  5038. if (!flag) {
  5039. bs.grandTotal = bs.grandTotal + insuranceAmt;
  5040. bs.costPayableByCash = bs.costPayableByCash + insuranceAmt;
  5041. bs.addonSubTotal = bs.addonSubTotal + insuranceAmt;
  5042. bs.cashAllocated = bs.cashAllocated + insuranceAmt;
  5043. var addon = {};
  5044. addon.type = saar5.l.bookingsummary.travelinsurance;
  5045. addon.description = " ";
  5046. addon.category = "Chargeable";
  5047. addon.amount = insuranceAmt;
  5048. if (typeof bs.commonAddons === "undefined") {
  5049. bs.commonAddons = [];
  5050. }
  5051. bs.commonAddons.push(addon);
  5052. globalJson.bookingSummary.bookingSummary = bs;
  5053. }
  5054. } else {
  5055. if (typeof bs.commonAddons !== "undefined" && bs.commonAddons.length > 0) {
  5056. $.each(bs.commonAddons, function(key, Addon) {
  5057. if (Addon.type == saar5.l.bookingsummary.travelinsurance) {
  5058. flag = true;
  5059. bs.commonAddons.splice(key, 1);
  5060. return false;
  5061. }
  5062. });
  5063. if (flag) {
  5064. bs.grandTotal = bs.grandTotal - insuranceAmt;
  5065. bs.costPayableByCash = bs.costPayableByCash - insuranceAmt;
  5066. if (bs.addonSubTotal >= insuranceAmt) {
  5067. var addonSubTot = bs.addonSubTotal - insuranceAmt;
  5068. bs.addonSubTotal = addonSubTot;
  5069. }
  5070. if (bs.cashAllocated >= insuranceAmt) {
  5071. var cashAllcted = bs.cashAllocated - insuranceAmt;
  5072. bs.cashAllocated = cashAllcted;
  5073. }
  5074. globalJson.bookingSummary.bookingSummary = bs;
  5075. }
  5076. }
  5077. }
  5078. passengerCount.add(totalToBePaid).add(infoFare).add(infoTaxes).add(infoCarrier).add(infoFlightSubtotal).add(infoGrandTotal).add(infoKKMilesRest).add(infoPayableWithMiles).text("...");
  5079. infoAddonList.empty();
  5080. onloadFlag = false;
  5081. successBSPAjax(globalJson.bookingSummary);
  5082. };
  5083. $(".fareConditions").removeClass("hidden");
  5084. if (!$(".flight-select-page").length) {
  5085. $(".fare-notice-cib").removeClass("hidden");
  5086. }
  5087. if ($("#isinsuranceeligible").val() != "" && $("#isinsuranceeligible").val() == "true") {
  5088. SIA.resizeBreadCrumbType("cib");
  5089. } else {
  5090. SIA.resizeBreadCrumbType("cibwithoutAddon");
  5091. }
  5092. SIA.MCP = function(res) {
  5093. successBSPAjax(res);
  5094. };
  5095. var bookingSummaryWCAG = function() {
  5096. var init = function() {
  5097. captureKeys();
  5098. getElements();
  5099. };
  5100. var config = {
  5101. bsp: {
  5102. wrapper: $(".booking-summary"),
  5103. target: $(".booking-summary").find("[data-tabindex]"),
  5104. heading: {
  5105. el: $(".booking-summary .booking-summary__heading"),
  5106. copy: "2 Adults, 1 Infant. Sgd 1,750.00. Total fare including taxes and surcharges. ",
  5107. instruction: "This is the instruction for expanding the BSP",
  5108. focus: false
  5109. }
  5110. }
  5111. };
  5112. var namespace = "bsp-wcag-";
  5113. var ariaDescribe = "aria-describedby";
  5114. var bSRemoveFocus = [".booking-summary__control", ".booking-summary__info"];
  5115. var getElements = function() {
  5116. console.log(config.bsp.target.length);
  5117. };
  5118. var captureKeys = function() {
  5119. $(document).off("keydown").on("keydown", function(e) {
  5120. var keyCode = e.keyCode || e.which || e.charCode;
  5121. var allowKeyCode = [17, 66, 13];
  5122. if ($.inArray(keyCode, allowKeyCode) >= 0) {
  5123. if (config.bsp.wrapper.length) {
  5124. switch (keyCode) {
  5125. case 66:
  5126. bookingKeyEvent(config, keyCode, e);
  5127. break;
  5128. case 13:
  5129. bookingKeyEvent(config, keyCode, e);
  5130. break;
  5131. default:
  5132. break;
  5133. }
  5134. } else {}
  5135. }
  5136. });
  5137. };
  5138. var bookingPreview = function(el) {
  5139. el.attr(ariaDescribe, namespace + "preview");
  5140. el.find("#" + namespace + "preview").remove();
  5141. el.append('<span style="display:none;" id="' + namespace + 'preview">' + config.bsp.heading.copy + config.bsp.heading.instruction + "</span>");
  5142. };
  5143. var bookingKeyEvent = function(config, k, e) {
  5144. window.focus();
  5145. if (k === 66 && e.ctrlKey) {
  5146. bookingPreview($(".booking-summary__heading"));
  5147. $(".booking-summary__heading").attr("tabindex", 100);
  5148. $(".booking-summary__heading").focus().click();
  5149. config.bsp.heading.focus = true;
  5150. } else {
  5151. if (k === 13) {
  5152. if (config.bsp.heading.focus) {
  5153. $(".booking-summary__control").trigger("click");
  5154. } else {
  5155. if ($("*:focus").attr("data-tooltip")) {
  5156. setTimeout(function() {
  5157. $(".tooltip").attr("role", "tooltip");
  5158. $(".tooltip ").attr("tabindex", 0);
  5159. $(".tooltip p").focus();
  5160. }, 100);
  5161. }
  5162. }
  5163. }
  5164. }
  5165. };
  5166. var prepareElements = function() {
  5167. bookingSummaryWidget.each(function() {
  5168. var tabIndex = 100;
  5169. config.bsp.target.each(function() {
  5170. var self = $(this);
  5171. var attr = self.attr("data-aria-text");
  5172. if (self.parent(".flights-info").is(":last-child")) {
  5173. self.attr("tabindex", tabIndex++);
  5174. self.parents(".booking-group").find("[data-popup-anchor]").attr("tabindex", tabIndex);
  5175. } else {
  5176. if (self.index() === 2 && self.parent() === "booking-group__content") {} else {
  5177. self.attr("tabindex", tabIndex++);
  5178. }
  5179. }
  5180. self.attr(ariaDescribe, namespace + tabIndex);
  5181. if (typeof attr !== typeof undefined && attr !== false && self.find(".bsp-wcag").length === 0 && !self.hasClass("flights-cost")) {
  5182. self.append('<span class="bsp-wcag" style="font-size:0;" id="' + namespace + tabIndex + '">' + self.data("aria-text") + "</span>");
  5183. } else {
  5184. if (self.attr("data-tooltip")) {
  5185. $("aside.tooltip").attr("id", namespace + tabIndex);
  5186. }
  5187. }
  5188. if (!self.hasClass("flights-cost") && !self.hasClass("grand-total") && self.attr("data-tooltip")) {
  5189. self.children(":not(.bsp-wcag)").attr("aria-hidden", "true");
  5190. }
  5191. });
  5192. for (var i = 0; i < bSRemoveFocus.length; i++) {
  5193. $(bSRemoveFocus[i]).attr("tabindex", -1);
  5194. }
  5195. });
  5196. };
  5197. prepareElements();
  5198. init();
  5199. };
  5200. setTimeout(function() {
  5201. bookingSummaryWCAG();
  5202. }, 5000);
  5203. };
  5204. "use strict";
  5205. var SIA = SIA || {};
  5206. (function($, window, undefined) {
  5207. SIA.validateCustom = function(formName, event) {
  5208. if ($(formName).attr("id") === "form-book-travel") {
  5209. var dataValue = $("#city-1").val();
  5210. if (dataValue && dataValue.indexOf("-") != -1) {
  5211. var splitdataValue = dataValue.lastIndexOf("-");
  5212. $("#originCityCode").val(dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  5213. }
  5214. var dataValue = $("#city-2").val();
  5215. if (dataValue && dataValue.indexOf("-") != -1) {
  5216. var splitdataValue = dataValue.lastIndexOf("-");
  5217. $("#destCityCode").val(dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  5218. }
  5219. if ($("#city-2").val()) {
  5220. $("#city-2").removeAttr("name");
  5221. }
  5222. if ($("#city-radio-4").is(":checked") && $("#city-travel-start-day").val() && $("#city-travel-return-day").val()) {
  5223. if ($("#city-one-way-2").hasClass("hidden")) {
  5224. $("#city-one-way-2 :input").attr("disabled", "disabled");
  5225. } else {
  5226. $("#city-one-way-2 :input").removeAttr("disabled");
  5227. }
  5228. } else {
  5229. if ($("#city-radio-5").is(":checked") && $("#city-travel-start-day-2").val()) {
  5230. if ($("#city-one-way-1").hasClass("hidden")) {
  5231. $("#city-one-way-1 :input").attr("disabled", "disabled");
  5232. } else {
  5233. $("#city-one-way-1 :input").removeAttr("disabled");
  5234. }
  5235. }
  5236. }
  5237. }
  5238. if ($(formName).attr("id") === "form-book-travel-1") {
  5239. var dataValue = $("#city1-1").val();
  5240. if (dataValue && dataValue.indexOf("-") != -1) {
  5241. var splitdataValue = dataValue.lastIndexOf("-");
  5242. $("#orbOriginCity").val(dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  5243. }
  5244. var dataValue = $("#city1-2").val();
  5245. if (dataValue && dataValue.indexOf("-") != -1) {
  5246. var splitdataValue = dataValue.lastIndexOf("-");
  5247. $("#orbdestCity").val(dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  5248. }
  5249. if ($("#loginForORB").hasClass("showPopUp")) {
  5250. event.preventDefault();
  5251. if ($("#city1-2").val()) {
  5252. $("#city1-2").removeAttr("name");
  5253. }
  5254. if ($("#city1-radio-4").is(":checked") && $("#city1-travel-start-day").val() && $("#city1-travel-return-day").val()) {
  5255. if ($("#city1-one-way-2").hasClass("hidden")) {
  5256. $("#city1-one-way-2 :input").attr("disabled", "disabled");
  5257. } else {
  5258. $("#city1-one-way-2 :input").removeAttr("disabled");
  5259. }
  5260. } else {
  5261. if ($("#city1-radio-5").is(":checked") && $("#city1-travel-start-day-2").val()) {
  5262. if ($("#city1-one-way-1").hasClass("hidden")) {
  5263. $("#city1-one-way-1 :input").attr("disabled", "disabled");
  5264. } else {
  5265. $("#city1-one-way-1 :input").removeAttr("disabled");
  5266. }
  5267. }
  5268. }
  5269. var postData = $("#form-book-travel-1").serializeArray();
  5270. var formURL = $("#form-book-travel-1").attr("action");
  5271. $.ajax({
  5272. url: formURL,
  5273. type: "POST",
  5274. data: postData,
  5275. success: function(data, textStatus, jqXHR) {
  5276. SIA.preloader.hide();
  5277. $("#loginFromHeader").val("");
  5278. $("#executionId").val(data.trim());
  5279. var menuBar = $(".menu-bar");
  5280. var triggerLoginPoup = menuBar.find("ul a.login");
  5281. triggerLoginPoup.trigger("click.showLoginPopup");
  5282. },
  5283. error: function(jqXHR, textStatus, errorThrown) {
  5284. SIA.preloader.hide();
  5285. }
  5286. });
  5287. } else {
  5288. if ($("#city1-2").val()) {
  5289. $("#city1-2").removeAttr("name");
  5290. }
  5291. if ($("#city1-radio-4").is(":checked") && $("#city1-travel-start-day").val() && $("#city1-travel-return-day").val()) {
  5292. if ($("#city1-one-way-2").hasClass("hidden")) {
  5293. $("#city1-one-way-2 :input").attr("disabled", "disabled");
  5294. } else {
  5295. $("#city1-one-way-2 :input").removeAttr("disabled");
  5296. }
  5297. } else {
  5298. if ($("#city1-radio-5").is(":checked") && $("#city1-travel-start-day-2").val()) {
  5299. if ($("#city1-one-way-1").hasClass("hidden")) {
  5300. $("#city1-one-way-2 :input").attr("disabled", "disabled");
  5301. } else {
  5302. $("#city1-one-way-2 :input").removeAttr("disabled");
  5303. }
  5304. }
  5305. }
  5306. }
  5307. }
  5308. if ($(formName).attr("id") === "form-book-travel-2") {
  5309. var dataValue = $("#city2-1").val();
  5310. if (dataValue && dataValue.indexOf("-") != -1) {
  5311. var splitdataValue = dataValue.lastIndexOf("-");
  5312. $("#originCityCodeSQC").val(dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  5313. }
  5314. var dataValue = $("#city2-2").val();
  5315. if (dataValue && dataValue.indexOf("-") != -1) {
  5316. var splitdataValue = dataValue.lastIndexOf("-");
  5317. $("#destCityCodeSQC").val(dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  5318. }
  5319. if ($("#city2-2").val()) {
  5320. $("#city2-2").removeAttr("name");
  5321. }
  5322. if ($("#city2-radio-4").is(":checked") && $("#city2-travel-start-day").val() && $("#city2-travel-return-day").val()) {
  5323. if ($("#city2-one-way-2").hasClass("hidden")) {
  5324. $("#city2-one-way-2 :input").attr("disabled", "disabled");
  5325. } else {
  5326. $("#city2-one-way-2 :input").removeAttr("disabled");
  5327. }
  5328. } else {
  5329. if ($("#city2-radio-5").is(":checked") && $("#city2-travel-start-day-2").val()) {
  5330. if ($("#city2-one-way-1").hasClass("hidden")) {
  5331. $("#city2-one-way-1 :input").attr("disabled", "disabled");
  5332. } else {
  5333. $("#city2-one-way-1 :input").removeAttr("disabled");
  5334. }
  5335. }
  5336. }
  5337. }
  5338. };
  5339. $("#city-1").blur(function() {
  5340. var dataValue = $("#city-1").val();
  5341. if (dataValue && dataValue.indexOf("-") != -1) {
  5342. var splitdataValue = dataValue.lastIndexOf("-");
  5343. $("#originCityCode").val(dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  5344. }
  5345. });
  5346. $(".login").click(function(e) {
  5347. $("#showMessage").find("p").remove();
  5348. if (($("#passThruFlightSearch").val())) {
  5349. $("#passThruFlightSearch").val("");
  5350. }
  5351. });
  5352. $("#submit-1").click(function(e) {
  5353. if (($("#passThruFlightSearch").val())) {
  5354. if ($("#membership-1").val() === "" || $("#membership-1").val() === null || $("#membership-2").val() === "" || $("#membership-2").val() === null || isNaN($("#membership-1").val()) || isNaN($("#membership-2").val())) {} else {
  5355. var originData = $('input[name="origin"]').val();
  5356. var destinData = $('input[name="destination"]').val();
  5357. var tripTypeData = $('input[name="tripType"]').val();
  5358. var returnMonthData = $('input[name="returnMonth"]').val();
  5359. var departureMonthData = $('input[name="departureMonth"]').val();
  5360. var cabinClassData = $('input[name="cabinClass"]').val();
  5361. var numOfAdultsData = $('select[name="numOfAdults"]').val();
  5362. var numOfChildrenData = $('select[name="numOfChildren"]').val();
  5363. var numOfInfantsData = $('select[name="numOfInfants"]').val();
  5364. var promotionModeData = $('input[name="promotionMode"]').val();
  5365. var postData = $("#headerLoginForm").serializeArray();
  5366. var formURL = $("#executionId").val();
  5367. $.ajax({
  5368. url: formURL,
  5369. type: "POST",
  5370. data: postData,
  5371. success: function(data, textStatus, jqXHR) {
  5372. if (data.indexOf("eventId=kfloginSuccess") === -1) {
  5373. var $response = $(data);
  5374. SIA.preloader.hide();
  5375. if ($response && $response.filter("div#flightScheduleAjaxError") && $response.filter("div#flightScheduleAjaxError").find("p") && $response.filter("div#flightScheduleAjaxError").find("p").text()) {
  5376. var error = $response.filter("div#flightScheduleAjaxError").find("p").text().trim();
  5377. var redirect = $response.filter(".jQajaxRedirect").val();
  5378. }
  5379. if (typeof error !== "undefined") {
  5380. $(".alert-block.error-alert").remove();
  5381. $("h2.kf_error:last").after('<div class="alert-block error-alert"><div class="inner"><div class="alert__icon"><em class="ico-close-round-fill">&nbsp;</em></div><div class="alert__message""><p>' + error + "</p></div></div></div>");
  5382. }
  5383. if (data && data == "kfTierMismatch") {
  5384. SIA.preloader.show();
  5385. $(".popup--login").Popup("hide");
  5386. location.reload();
  5387. }
  5388. } else {
  5389. var formPopUpSubmitForKF = $("<form></form>", {
  5390. action: "/booking-flow.form",
  5391. method: "post"
  5392. });
  5393. $("<input>", {
  5394. type: "text",
  5395. name: "origin",
  5396. value: originData
  5397. }).appendTo(formPopUpSubmitForKF);
  5398. $("<input>", {
  5399. type: "text",
  5400. name: "destination",
  5401. value: destinData
  5402. }).appendTo(formPopUpSubmitForKF);
  5403. $("<input>", {
  5404. type: "text",
  5405. name: "tripType",
  5406. value: tripTypeData
  5407. }).appendTo(formPopUpSubmitForKF);
  5408. $("<input>", {
  5409. type: "text",
  5410. name: "returnMonth",
  5411. value: returnMonthData
  5412. }).appendTo(formPopUpSubmitForKF);
  5413. $("<input>", {
  5414. type: "text",
  5415. name: "departureMonth",
  5416. value: departureMonthData
  5417. }).appendTo(formPopUpSubmitForKF);
  5418. $("<input>", {
  5419. type: "text",
  5420. name: "cabinClass",
  5421. value: cabinClassData
  5422. }).appendTo(formPopUpSubmitForKF);
  5423. $("<input>", {
  5424. type: "text",
  5425. name: "numOfAdults",
  5426. value: numOfAdultsData
  5427. }).appendTo(formPopUpSubmitForKF);
  5428. $("<input>", {
  5429. type: "text",
  5430. name: "numOfChildren",
  5431. value: numOfChildrenData
  5432. }).appendTo(formPopUpSubmitForKF);
  5433. $("<input>", {
  5434. type: "text",
  5435. name: "numOfInfants",
  5436. value: numOfInfantsData
  5437. }).appendTo(formPopUpSubmitForKF);
  5438. $("<input>", {
  5439. type: "text",
  5440. name: "promotionKFLoginMode",
  5441. value: "true"
  5442. }).appendTo(formPopUpSubmitForKF);
  5443. $("<input>", {
  5444. type: "text",
  5445. name: "promotionMode",
  5446. value: promotionModeData
  5447. }).appendTo(formPopUpSubmitForKF);
  5448. formPopUpSubmitForKF.appendTo("body").submit();
  5449. }
  5450. },
  5451. error: function(jqXHR, textStatus, errorThrown) {}
  5452. });
  5453. e.preventDefault();
  5454. }
  5455. }
  5456. });
  5457. $("#city-1").blur(function() {
  5458. var dataValue = $("#city-1").val();
  5459. if (dataValue && dataValue.indexOf("-") != -1) {
  5460. var splitdataValue = dataValue.lastIndexOf("-");
  5461. $("#origin").val(dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  5462. }
  5463. });
  5464. $("#search-fl-city-1").blur(function() {
  5465. $(".search-flight-1:last").find("li:first").removeClass("error");
  5466. $(".search-flight-2:last").find("li:first").removeClass("error");
  5467. $(".search-flight-1:last").find("li:first").find("li.search-fl-city-1").removeClass("error");
  5468. $(".search-flight-1:last").find("li:first").find("p.text-error").remove();
  5469. $(".search-flight-2:last").find("li:first").find("li.search-fl-city-1").removeClass("error");
  5470. $(".search-flight-2:last").find("li:first").find("p.text-error").remove();
  5471. $("#search-fl-city-3").val($("#search-fl-city-1").val());
  5472. $("#originCityCode").val("");
  5473. $("#originCityCode1").val("");
  5474. if ($("#search-fl-city-1").val()) {
  5475. var dataValue = $("#search-fl-city-1").val();
  5476. if (dataValue && dataValue.indexOf("-") != -1) {
  5477. var splitdataValue = dataValue.lastIndexOf("-");
  5478. $("#originCityCode").val(dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  5479. $("#originCityCode1").val(dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  5480. }
  5481. }
  5482. if (!($("#search-fl-city-1").val())) {
  5483. $(".search-flight-2:last").find("li:first").find("li.search-fl-city-3").addClass("error");
  5484. $(".search-flight-2:last").find("li:first").find("li.search-fl-city-3").append('<p class="text-error"><span></span></p></div>');
  5485. $(".search-flight-2:last li:first li.search-fl-city-3 p.text-error").text(saar5.m.flightschedule.cityselect);
  5486. $(".search-flight-1:last").find("li:first").find("li.search-fl-city-1").addClass("error");
  5487. $(".search-flight-1:last").find("li:first").find("li.search-fl-city-1").append('<p class="text-error"><span></span></p></div>');
  5488. $(".search-flight-1:last li:first li.search-fl-city-1 p.text-error").text(saar5.m.flightschedule.cityselect);
  5489. }
  5490. });
  5491. $("#search-fl-city-2").blur(function() {
  5492. $(".search-flight-1:last").find("li:first").removeClass("error");
  5493. $(".search-flight-2:last").find("li:first").removeClass("error");
  5494. $(".search-flight-1:last").find("li:first").find("li.search-fl-city-2").removeClass("error");
  5495. $(".search-flight-1:last").find("li:first").find("p.text-error").remove();
  5496. $(".search-flight-2:last").find("li:first").find("li.search-fl-city-4").removeClass("error");
  5497. $(".search-flight-2:last").find("li:first").find("p.text-error").remove();
  5498. $(".search-flight-1:last").find("ul:first").find("li:last").removeClass("error");
  5499. $(".search-flight-1:last").find("ul:first").find("li:last").find("p.text-error").remove();
  5500. $(".search-flight-2:last").find("ul:first").find("li:last").removeClass("error");
  5501. $(".search-flight-2:last").find("ul:first").find("li:last").find("p.text-error").remove();
  5502. if (!($("#search-fl-city-1").val())) {
  5503. $(".search-flight-2:last").find("li:first").find("li.search-fl-city-3").addClass("error");
  5504. $(".search-flight-2:last").find("li:first").find("li.search-fl-city-3").append('<p class="text-error"><span></span></p></div>');
  5505. $(".search-flight-2:last li:first li.search-fl-city-3 p.text-error").text(saar5.m.flightschedule.cityselect);
  5506. $(".search-flight-1:last").find("li:first").find("li.search-fl-city-1").addClass("error");
  5507. $(".search-flight-1:last").find("li:first").find("li.search-fl-city-1").append('<p class="text-error"><span></span></p></div>');
  5508. $(".search-flight-1:last li:first li.search-fl-city-1 p.text-error").text(saar5.m.flightschedule.cityselect);
  5509. }
  5510. if (!($("#search-fl-city-2").val())) {
  5511. $(".search-flight-2:last").find("li:first").find("li.search-fl-city-4").addClass("error");
  5512. $(".search-flight-2:last").find("li:first").find("li.search-fl-city-4").append('<p class="text-error"><span></span></p></div>');
  5513. $(".search-flight-2:last li:first li.search-fl-city-4 p.text-error").text(saar5.m.flightschedule.cityselect);
  5514. $(".search-flight-1:last").find("li:first").find("li.search-fl-city-2").addClass("error");
  5515. $(".search-flight-1:last").find("li:first").find("li.search-fl-city-2").append('<p class="text-error"><span></span></p></div>');
  5516. $(".search-flight-1:last li:first li.search-fl-city-2 p.text-error").text(saar5.m.flightschedule.cityselect);
  5517. }
  5518. $("#search-fl-city-4").val($("#search-fl-city-2").val());
  5519. $("#destCityCode").val("");
  5520. $("#destCityCode1").val("");
  5521. if ($("#search-fl-city-2").val()) {
  5522. var dataValue = $("#search-fl-city-2").val();
  5523. if (dataValue && dataValue.indexOf("-") != -1) {
  5524. var splitdataValue = dataValue.lastIndexOf("-");
  5525. $("#destCityCode").val(dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  5526. $("#destCityCode1").val(dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  5527. }
  5528. }
  5529. if ($("#search-fl-city-1").val() && $("#search-fl-city-2").val() && ($("#search-fl-city-1").val().trim()) == ($("#search-fl-city-2").val().trim())) {
  5530. $(".search-flight-1:last").find("li:first").addClass("error");
  5531. $(".search-flight-1:last").find("li:first").append('<p class="text-error"><span></span></p></div>');
  5532. $(".search-flight-1:last li:first p.text-error").text(saar5.m.flightschedule.odsame);
  5533. $(".search-flight-2:last").find("li:first").addClass("error");
  5534. $(".search-flight-2:last").find("li:first").append('<p class="text-error"><span></span></p></div>');
  5535. $(".search-flight-2:last li:first p.text-error").text(saar5.m.flightschedule.odsame);
  5536. }
  5537. });
  5538. $("#search-fl-city-3").blur(function() {
  5539. $(".search-flight-1:last").find("li:first").removeClass("error");
  5540. $(".search-flight-2:last").find("li:first").removeClass("error");
  5541. $(".search-flight-2:last").find("li:first").find("li.search-fl-city-3").removeClass("error");
  5542. $(".search-flight-2:last").find("li:first").find("p.text-error").remove();
  5543. $(".search-flight-1:last").find("li:first").find("li.search-fl-city-1").removeClass("error");
  5544. $(".search-flight-1:last").find("li:first").find("p.text-error").remove();
  5545. $("#search-fl-city-1").val($("#search-fl-city-3").val());
  5546. $("#originCityCode").val("");
  5547. $("#originCityCode1").val("");
  5548. if ($("#search-fl-city-3").val()) {
  5549. var dataValue = $("#search-fl-city-3").val();
  5550. if (dataValue && dataValue.indexOf("-") != -1) {
  5551. var splitdataValue = dataValue.lastIndexOf("-");
  5552. $("#originCityCode1").val(dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  5553. $("#originCityCode").val(dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  5554. }
  5555. }
  5556. if (!($("#search-fl-city-3").val())) {
  5557. $(".search-flight-2:last").find("li:first").find("li.search-fl-city-3").addClass("error");
  5558. $(".search-flight-2:last").find("li:first").find("li.search-fl-city-3").append('<p class="text-error"><span></span></p></div>');
  5559. $(".search-flight-2:last li:first li.search-fl-city-3 p.text-error").text(saar5.m.flightschedule.cityselect);
  5560. $(".search-flight-1:last").find("li:first").find("li.search-fl-city-1").addClass("error");
  5561. $(".search-flight-1:last").find("li:first").find("li.search-fl-city-1").append('<p class="text-error"><span></span></p></div>');
  5562. $(".search-flight-1:last li:first li.search-fl-city-1 p.text-error").text(saar5.m.flightschedule.cityselect);
  5563. }
  5564. });
  5565. $("#search-fl-city-4").blur(function() {
  5566. $(".search-flight-1:last").find("li:first").removeClass("error");
  5567. $(".search-flight-2:last").find("li:first").removeClass("error");
  5568. $(".search-flight-2:last").find("li:first").find("li.search-fl-city-4").removeClass("error");
  5569. $(".search-flight-2:last").find("li:first").find("p.text-error").remove();
  5570. $(".search-flight-1:last").find("li:first").find("li.search-fl-city-2").removeClass("error");
  5571. $(".search-flight-1:last").find("li:first").find("p.text-error").remove();
  5572. $(".search-flight-1:last").find("ul:first").find("li:last").removeClass("error");
  5573. $(".search-flight-1:last").find("ul:first").find("li:last").find("p.text-error").remove();
  5574. $(".search-flight-2:last").find("ul:first").find("li:last").removeClass("error");
  5575. $(".search-flight-2:last").find("ul:first").find("li:last").find("p.text-error").remove();
  5576. if (!($("#search-fl-city-3").val())) {
  5577. $(".search-flight-2:last").find("li:first").find("li.search-fl-city-1").addClass("error");
  5578. $(".search-flight-2:last").find("li:first").find("li.search-fl-city-1").append('<p class="text-error"><span></span></p></div>');
  5579. $(".search-flight-2:last li:first li.search-fl-city-1 p.text-error").text(saar5.m.flightschedule.cityselect);
  5580. $(".search-flight-1:last").find("li:first").find("li.search-fl-city-3").addClass("error");
  5581. $(".search-flight-1:last").find("li:first").find("li.search-fl-city-3").append('<p class="text-error"><span></span></p></div>');
  5582. $(".search-flight-1:last li:first li.search-fl-city-3 p.text-error").text(saar5.m.flightschedule.cityselect);
  5583. }
  5584. if (!($("#search-fl-city-4").val())) {
  5585. $(".search-flight-2:last").find("li:first").find("li.search-fl-city-4").addClass("error");
  5586. $(".search-flight-2:last").find("li:first").find("li.search-fl-city-4").append('<p class="text-error"><span></span></p></div>');
  5587. $(".search-flight-2:last li:first li.search-fl-city-4 p.text-error").text(saar5.m.flightschedule.cityselect);
  5588. $(".search-flight-1:last").find("li:first").find("li.search-fl-city-2").addClass("error");
  5589. $(".search-flight-1:last").find("li:first").find("li.search-fl-city-2").append('<p class="text-error"><span></span></p></div>');
  5590. $(".search-flight-1:last li:first li.search-fl-city-2 p.text-error").text(saar5.m.flightschedule.cityselect);
  5591. }
  5592. $("#search-fl-city-2").val($("#search-fl-city-4").val());
  5593. $("#destCityCode").val("");
  5594. $("#destCityCode1").val("");
  5595. if ($("#search-fl-city-3").val()) {
  5596. var dataValue = $("#search-fl-city-4").val();
  5597. if (dataValue && dataValue.indexOf("-") != -1) {
  5598. var splitdataValue = dataValue.lastIndexOf("-");
  5599. $("#destCityCode1").val(dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  5600. $("#destCityCode").val(dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  5601. }
  5602. }
  5603. if ($("#search-fl-city-3").val() && $("#search-fl-city-4").val() && ($("#search-fl-city-3").val().trim()) == ($("#search-fl-city-4").val().trim())) {
  5604. $(".search-flight-2:last").find("li:first").addClass("error");
  5605. $(".search-flight-2:last").find("li:first").append('<p class="text-error"><span></span></p></div>');
  5606. $(".search-flight-2:last li:first p.text-error").text(saar5.m.flightschedule.odsame);
  5607. $(".search-flight-1:last").find("li:first").addClass("error");
  5608. $(".search-flight-1:last").find("li:first").append('<p class="text-error"><span></span></p></div>');
  5609. $(".search-flight-1:last li:first p.text-error").text(saar5.m.flightschedule.odsame);
  5610. }
  5611. });
  5612. $("#city-2").blur(function() {
  5613. $(".to-valid").find("p.text-error").remove();
  5614. $(".to-valid").removeClass("error");
  5615. var dataValue = $("#city-2").val();
  5616. if (dataValue && dataValue.indexOf("-") != -1) {
  5617. var splitdataValue = dataValue.lastIndexOf("-");
  5618. $("#destCityCode").val(dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  5619. }
  5620. });
  5621. $("#city-2").blur(function() {
  5622. var dataValue = $("#city-2").val();
  5623. if (dataValue && dataValue.indexOf("-") != -1) {
  5624. var splitdataValue = dataValue.lastIndexOf("-");
  5625. $("#dest").val(dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  5626. }
  5627. });
  5628. $("#city1-1").blur(function() {
  5629. var dataValue = $("#city1-1").val();
  5630. if (dataValue && dataValue.indexOf("-") != -1) {
  5631. var splitdataValue = dataValue.lastIndexOf("-");
  5632. $("#orbOriginCity").val(dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  5633. }
  5634. });
  5635. $("#city1-2").blur(function() {
  5636. $(".to-valid-orb").find("p.text-error").remove();
  5637. $(".to-valid-orb").removeClass("error");
  5638. var dataValue = $("#city1-2").val();
  5639. if (dataValue && dataValue.indexOf("-") != -1) {
  5640. var splitdataValue = dataValue.lastIndexOf("-");
  5641. $("#orbdestCity").val(dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  5642. }
  5643. });
  5644. $("#city2-1").blur(function() {
  5645. var dataValue = $("#city2-1").val();
  5646. if (dataValue && dataValue.indexOf("-") != -1) {
  5647. var splitdataValue = dataValue.lastIndexOf("-");
  5648. $("#originCityCodeSQC").val(dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  5649. }
  5650. });
  5651. $("#city2-2").blur(function() {
  5652. var dataValue = $("#city2-2").val();
  5653. if (dataValue && dataValue.indexOf("-") != -1) {
  5654. var splitdataValue = dataValue.lastIndexOf("-");
  5655. $("#destCityCodeSQC").val(dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  5656. }
  5657. });
  5658. $(".grid-col.one-half:last").removeClass("error");
  5659. $(".grid-col.one-half :first").removeClass("error");
  5660. $("#city-travel-start-day").blur(function() {
  5661. $(".grid-col.one-half:last").removeClass("error");
  5662. $(".grid-col.one-half :first").removeClass("error");
  5663. $(".grid-col.one-half :first").find("p.text-error").remove();
  5664. });
  5665. $("#city-travel-return-day").blur(function() {
  5666. $(".grid-col.one-half:last").removeClass("error");
  5667. $(".grid-col.one-half :first").removeClass("error");
  5668. $(".grid-col.one-half :first").find("p.text-error").remove();
  5669. });
  5670. $("#city2-travel-start-day").blur(function() {
  5671. $(".grid-col.one-half:last").removeClass("error");
  5672. $(".grid-col.one-half :first").removeClass("error");
  5673. $(".grid-col.one-half :first").find("p.text-error").remove();
  5674. });
  5675. $("#city2-travel-return-day").blur(function() {
  5676. $(".grid-col.one-half:last").removeClass("error");
  5677. $(".grid-col.one-half :first").removeClass("error");
  5678. $(".grid-col.one-half :first").find("p.text-error").remove();
  5679. });
  5680. $("#city1-radio-5").click(function(e) {
  5681. $("#city1-one-way-2 :input").removeAttr("disabled");
  5682. });
  5683. var dataValue = $("#city1-2").val();
  5684. if (dataValue && dataValue.indexOf("-") != -1) {
  5685. var splitdataValue = dataValue.lastIndexOf("-");
  5686. $("#orbdestCity").val(dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  5687. }
  5688. $("#loginForORB").click(function(e) {
  5689. $("#kfLoginPopup").show();
  5690. $("#kfLoginPopupHeader").show();
  5691. $(".captchaHidden").remove();
  5692. $("#membership-1").removeAttr("disabled");
  5693. $("#membership-2").removeAttr("disabled");
  5694. $(".input-1").removeClass("disabled");
  5695. $("#redeemformdata").attr("value", "");
  5696. $("#searchmode").attr("value", "");
  5697. $("#executionId").attr("value", "");
  5698. $("#membership-1").val("");
  5699. $("#membership-2").val("");
  5700. $(".continueForCaptcha").remove();
  5701. $("#submitFromCaptcha").attr("value", "");
  5702. $("#jQerrorLightbox").remove();
  5703. if (($("#city1-radio-4").is(":checked") && $("#city1-1").val() && $("#city1-2").val() && ($("#city1-1").val() !== $("#city1-2").val()) && $("#city1-travel-start-day").val() && $("#city1-travel-return-day").val()) || ($("#city1-radio-5").is(":checked") && $("#city1-1").val() && $("#city1-2").val() && ($("#city1-1").val() !== $("#city1-2").val()) && $("#city1-travel-start-day-2").val())) {
  5704. $("#city1-2").removeAttr("name");
  5705. if ($("#city1-radio-4").is(":checked") && $("#city1-travel-start-day").val() && $("#city1-travel-return-day").val()) {
  5706. if ($("#city1-one-way-2").hasClass("hidden")) {
  5707. $("#city1-one-way-2 :input").attr("disabled", "disabled");
  5708. } else {
  5709. $("#city1-one-way-2 :input").removeAttr("disabled");
  5710. }
  5711. } else {
  5712. if ($("#city1-radio-5").is(":checked") && $("#city1-travel-start-day-2").val()) {
  5713. if ($("#city1-one-way-1").hasClass("hidden")) {
  5714. $("#city1-one-way-1 :input").attr("disabled", "disabled");
  5715. } else {
  5716. $("#city1-one-way-1 :input").removeAttr("disabled");
  5717. }
  5718. }
  5719. }
  5720. var postData = $("#form-book-travel-1").serializeArray();
  5721. var formstring = JSON.stringify(postData);
  5722. var formURL = $("#form-book-travel-1").attr("action");
  5723. $.ajax({
  5724. url: formURL,
  5725. type: "POST",
  5726. data: postData,
  5727. success: function(data, textStatus, jqXHR) {
  5728. SIA.preloader.hide();
  5729. $("#loginFromHeader").val("");
  5730. $("#executionId").val(data.trim());
  5731. $("#searchmode").val("redeemsearch");
  5732. $("#redeemformdata").val(formstring);
  5733. var menuBar = $(".menu-bar");
  5734. var triggerLoginPoup = menuBar.find("ul a.login");
  5735. triggerLoginPoup.trigger("click.showLoginPopup");
  5736. },
  5737. error: function(jqXHR, textStatus, errorThrown) {
  5738. SIA.preloader.hide();
  5739. }
  5740. });
  5741. e.preventDefault();
  5742. }
  5743. e.preventDefault();
  5744. });
  5745. var tpl = $(".showLanguage");
  5746. tpl.find(".toolbar__close").off("click.closeToolbar").on("click.closeToolbar", function(e) {
  5747. tpl.css("margin-top", -tpl.height());
  5748. $("#showLanguageBar").addClass("hidden");
  5749. });
  5750. tpl.find("[data-lang-toolbar]").off("click.translateLang").on("click.translateLang", function(e) {
  5751. e.stopPropagation();
  5752. hideTbar(tpl);
  5753. });
  5754. var hideTbar = function(tpl) {
  5755. $.ajax({
  5756. url: "/languageSwitch.form",
  5757. type: "GET",
  5758. data: {},
  5759. success: function(data) {
  5760. $("#showLanguageBar").addClass("hidden");
  5761. tpl.css("margin-top", -tpl.height());
  5762. },
  5763. error: function() {
  5764. $("#showLanguageBar").addClass("hidden");
  5765. tpl.css("margin-top", -tpl.height());
  5766. }
  5767. });
  5768. };
  5769. var url = String(window.location);
  5770. if (url.indexOf("http:") != -1) {
  5771. if (url.indexOf("#retrieveBooking") != -1) {
  5772. if (url.indexOf("?") != -1) {
  5773. var urlsplit = url.split("?");
  5774. url = urlsplit[0] + "#retrieveBooking?" + urlsplit[1];
  5775. }
  5776. url = url.replace("http:", "https:");
  5777. window.location = url;
  5778. }
  5779. }
  5780. $(".manageBooking").click(function() {
  5781. window.location.href = $("#URL").val() + "#retrieveBooking";
  5782. });
  5783. $(".kfRetriveBooking").click(function() {
  5784. window.location.href = $("#kfRetrieve").val();
  5785. });
  5786. $(".kfOnlineCheckin").click(function() {
  5787. window.location.href = $("#kfCheckin").val();
  5788. });
  5789. $("#city-cabin-1").change(function() {
  5790. var dataValue = $("#city-cabin-1").val();
  5791. if (dataValue && dataValue == "economy") {
  5792. $("#cabinCIB").val("Y");
  5793. } else {
  5794. if (dataValue && dataValue == "business") {
  5795. $("#cabinCIB").val("J");
  5796. } else {
  5797. if (dataValue && dataValue == "firstSuite") {
  5798. $("#cabinCIB").val("F");
  5799. }
  5800. }
  5801. }
  5802. });
  5803. $("#city1-cabin-1").change(function() {
  5804. var dataValue = $("#city1-cabin-1").val();
  5805. if (dataValue && dataValue == "economy") {
  5806. $("#cabinORB").val("Y");
  5807. } else {
  5808. if (dataValue && dataValue == "premiumeconomy") {
  5809. $("#cabinORB").val("S");
  5810. } else {
  5811. if (dataValue && dataValue == "business") {
  5812. $("#cabinORB").val("J");
  5813. } else {
  5814. if (dataValue && dataValue == "firstSuite") {
  5815. $("#cabinORB").val("F");
  5816. }
  5817. }
  5818. }
  5819. }
  5820. });
  5821. $("#city2-cabin-1").change(function() {
  5822. var dataValue = $("#city2-cabin-1").val();
  5823. if (dataValue && dataValue == "economy") {
  5824. $("#cabinSQC").val("Y");
  5825. } else {
  5826. if (dataValue && dataValue == "business") {
  5827. $("#cabinSQC").val("J");
  5828. } else {
  5829. if (dataValue && dataValue == "firstSuite") {
  5830. $("#cabinSQC").val("F");
  5831. }
  5832. }
  5833. }
  5834. });
  5835. var logOutPopUp = $(".popup--logout");
  5836. logOutPopUp.Popup({
  5837. overlayBGTemplate: SIA.global.config.template.overlay,
  5838. modalShowClass: "",
  5839. triggerCloseModal: ".popup__close, [data-close]",
  5840. afterShow: function() {
  5841. flyingFocus = $("#flying-focus");
  5842. if (flyingFocus.length) {
  5843. flyingFocus.remove();
  5844. }
  5845. },
  5846. afterHide: function() {
  5847. win.trigger("resize.openMenuT");
  5848. win.trigger("resize.resetTabMenu");
  5849. }
  5850. });
  5851. $(document).ready(function() {
  5852. var isCorporateUserLoggedIn = $("#isCorporateLoggedIn").val();
  5853. if (isCorporateUserLoggedIn == "true") {
  5854. $("#travel-radio-3").attr("checked", true).trigger("click");
  5855. }
  5856. $(".redeemsearch").click(function() {
  5857. var postData = JSON.parse($("#redeemformdata").val());
  5858. var formURL = $("#form-book-travel-1").attr("action");
  5859. $.ajax({
  5860. url: formURL,
  5861. type: "POST",
  5862. data: postData,
  5863. success: function(data, textStatus, jqXHR) {
  5864. $("#loginFromHeader").val("");
  5865. $("#executionId").val(data.trim());
  5866. $("#headerLoginForm").submit();
  5867. },
  5868. error: function(jqXHR, textStatus, errorThrown) {
  5869. SIA.preloader.hide();
  5870. }
  5871. });
  5872. });
  5873. var url = String(window.location);
  5874. if (url.indexOf("#retrieveBooking") != -1) {
  5875. $("#retrieveBookingdiv").trigger("click.show");
  5876. }
  5877. if ($("#logOutVar").val() == "true") {
  5878. $(".popup--logout").Popup("show");
  5879. } else {
  5880. $(".popup--logout").Popup("hide");
  5881. }
  5882.  
  5883. function GetURLParameter(param) {
  5884. var pageURL = window.location.search.substring(1);
  5885. var urlVariables = pageURL.split("&");
  5886. for (var i = 0; i < urlVariables.length; i++) {
  5887. var parameterName = urlVariables[i].split("=");
  5888. if (parameterName[0] == param) {
  5889. return parameterName[1];
  5890. }
  5891. }
  5892. }
  5893.  
  5894. function Getparams(param) {
  5895. var URL = String(window.location);
  5896. var urlVariables = URL.split("&");
  5897. for (var i = 0; i < urlVariables.length; i++) {
  5898. var parameterName = urlVariables[i].split("=");
  5899. if (parameterName[0] == param) {
  5900. return parameterName[1];
  5901. }
  5902. }
  5903. }
  5904. if (url.indexOf("/passthru.form") != -1) {
  5905. SIA.preloader.show();
  5906. var originData = GetURLParameter("cityFrom");
  5907. var destinData = GetURLParameter("cityTo");
  5908. var tripTypeData = GetURLParameter("tripType");
  5909. var returnMonthData = GetURLParameter("returnMonth");
  5910. var departureMonthData = GetURLParameter("departureMonth");
  5911. var cabinClassData = GetURLParameter("cabinClass");
  5912. var numOfAdultsData = GetURLParameter("numOfAdults");
  5913. var numOfChildrenData = GetURLParameter("numOfChildren");
  5914. var numOfInfantsData = GetURLParameter("numOfInfants");
  5915. var promotionModeData = GetURLParameter("promotionMode");
  5916. $(".grid-col.one-half:nth(1)").removeClass("error");
  5917. $(".grid-col.one-half :first").removeClass("error");
  5918. $(".grid_validate").removeClass("error");
  5919. $(".grid_cabin").find("p.text-error").remove();
  5920. if (((Number(numOfAdultsData) + Number(numOfChildrenData) + Number(numOfInfantsData)) < Number($("#fareDealMinPax").val()))) {
  5921. $(".grid_validate").addClass("error");
  5922. $(".grid_cabin").append('<p class="text-error"><span></span></p></div>');
  5923. $(".grid_cabin p.text-error").text(saar5.m.faredeals.validminPax);
  5924. } else {
  5925. var flag = 1;
  5926. $(".grid-col.one-half:nth(1)").removeClass("error");
  5927. $(".grid-col.one-half :first").removeClass("error");
  5928. if (tripTypeData && departureMonthData && tripTypeData == "O") {
  5929. var postData = $("#form-promotion-book-flight").serializeArray();
  5930. $.ajax({
  5931. url: "/booking-flow.form?",
  5932. type: "POST",
  5933. data: postData,
  5934. success: function(data, textStatus, jqXHR) {
  5935. if (data.indexOf("eventId=kfloginSuccess") === -1) {
  5936. var $response = $(data);
  5937. if ($response && $response.filter("div#flightScheduleAjaxError") && $response.filter("div#flightScheduleAjaxError").find("p") && $response.filter("div#flightScheduleAjaxError").find("p").text()) {
  5938. var error = $response.filter("div#flightScheduleAjaxError").find("p").text().trim();
  5939. var redirect = $response.filter(".jQajaxRedirect").val();
  5940. }
  5941. if (typeof error !== "undefined") {
  5942. $(".alert-block.error-alert").remove();
  5943. $("h2.kf_error:last").after('<div class="alert-block error-alert"><div class="inner"><div class="alert__icon"><em class="ico-close-round-fill">&nbsp;</em></div><div class="alert__message""><p>' + error + "</p></div></div></div>");
  5944. }
  5945. if (data && data == "kfTierMismatch") {
  5946. SIA.preloader.show();
  5947. $(".popup--login").Popup("hide");
  5948. location.reload();
  5949. } else {
  5950. var formNormaPromotionalFares = $("<form></form>", {
  5951. action: "/booking-flow.form",
  5952. method: "post"
  5953. });
  5954. $("<input>", {
  5955. type: "text",
  5956. name: "origin",
  5957. value: originData
  5958. }).appendTo(formNormaPromotionalFares);
  5959. $("<input>", {
  5960. type: "text",
  5961. name: "destination",
  5962. value: destinData
  5963. }).appendTo(formNormaPromotionalFares);
  5964. $("<input>", {
  5965. type: "text",
  5966. name: "tripType",
  5967. value: tripTypeData
  5968. }).appendTo(formNormaPromotionalFares);
  5969. $("<input>", {
  5970. type: "text",
  5971. name: "returnMonth",
  5972. value: returnMonthData
  5973. }).appendTo(formNormaPromotionalFares);
  5974. $("<input>", {
  5975. type: "text",
  5976. name: "departureMonth",
  5977. value: departureMonthData
  5978. }).appendTo(formNormaPromotionalFares);
  5979. $("<input>", {
  5980. type: "text",
  5981. name: "cabinClass",
  5982. value: cabinClassData
  5983. }).appendTo(formNormaPromotionalFares);
  5984. $("<input>", {
  5985. type: "text",
  5986. name: "numOfAdults",
  5987. value: numOfAdultsData
  5988. }).appendTo(formNormaPromotionalFares);
  5989. $("<input>", {
  5990. type: "text",
  5991. name: "numOfChildren",
  5992. value: numOfChildrenData
  5993. }).appendTo(formNormaPromotionalFares);
  5994. $("<input>", {
  5995. type: "text",
  5996. name: "numOfInfants",
  5997. value: numOfInfantsData
  5998. }).appendTo(formNormaPromotionalFares);
  5999. $("<input>", {
  6000. type: "text",
  6001. name: "promotionMode",
  6002. value: promotionModeData
  6003. }).appendTo(formNormaPromotionalFares);
  6004. formNormaPromotionalFares.appendTo("body").submit();
  6005. }
  6006. }
  6007. },
  6008. error: function(jqXHR, textStatus, errorThrown) {}
  6009. });
  6010. } else {
  6011. if (tripTypeData == "O") {
  6012. $(".grid-col.one-half :first").find("p.text-error").remove();
  6013. $(".grid-col.one-half :first").addClass("error");
  6014. SIA.preloader.hide();
  6015. $(".grid-col.one-half :first").append('<p class="text-error"><span></span></p></div>');
  6016. $(".grid-col.one-half :first p.text-error").text(saar5.m.faredeals.validdate);
  6017. flag = 0;
  6018. }
  6019. }
  6020. if (tripTypeData && departureMonthData && tripTypeData == "R") {
  6021. if (returnMonthData) {
  6022. var postData = $("#form-promotion-book-flight").serializeArray();
  6023. $.ajax({
  6024. url: "/booking-flow.form?",
  6025. type: "POST",
  6026. data: postData,
  6027. success: function(data, textStatus, jqXHR) {
  6028. if (data.indexOf("eventId=kfloginSuccess") === -1) {
  6029. var $response = $(data);
  6030. if ($response && $response.filter("div#flightScheduleAjaxError") && $response.filter("div#flightScheduleAjaxError").find("p") && $response.filter("div#flightScheduleAjaxError").find("p").text()) {
  6031. var error = $response.filter("div#flightScheduleAjaxError").find("p").text().trim();
  6032. var redirect = $response.filter(".jQajaxRedirect").val();
  6033. }
  6034. if (typeof error !== "undefined") {
  6035. $(".alert-block.error-alert").remove();
  6036. $("h2.kf_error:last").after('<div class="alert-block error-alert"><div class="inner"><div class="alert__icon"><em class="ico-close-round-fill">&nbsp;</em></div><div class="alert__message""><p>' + error + "</p></div></div></div>");
  6037. }
  6038. if (data && data == "kfTierMismatch") {
  6039. SIA.preloader.show();
  6040. $(".popup--login").Popup("hide");
  6041. location.reload();
  6042. } else {
  6043. var formNormaPromotionalFares = $("<form></form>", {
  6044. action: "/booking-flow.form",
  6045. method: "post"
  6046. });
  6047. $("<input>", {
  6048. type: "text",
  6049. name: "origin",
  6050. value: originData
  6051. }).appendTo(formNormaPromotionalFares);
  6052. $("<input>", {
  6053. type: "text",
  6054. name: "destination",
  6055. value: destinData
  6056. }).appendTo(formNormaPromotionalFares);
  6057. $("<input>", {
  6058. type: "text",
  6059. name: "tripType",
  6060. value: tripTypeData
  6061. }).appendTo(formNormaPromotionalFares);
  6062. $("<input>", {
  6063. type: "text",
  6064. name: "returnMonth",
  6065. value: returnMonthData
  6066. }).appendTo(formNormaPromotionalFares);
  6067. $("<input>", {
  6068. type: "text",
  6069. name: "departureMonth",
  6070. value: departureMonthData
  6071. }).appendTo(formNormaPromotionalFares);
  6072. $("<input>", {
  6073. type: "text",
  6074. name: "cabinClass",
  6075. value: cabinClassData
  6076. }).appendTo(formNormaPromotionalFares);
  6077. $("<input>", {
  6078. type: "text",
  6079. name: "numOfAdults",
  6080. value: numOfAdultsData
  6081. }).appendTo(formNormaPromotionalFares);
  6082. $("<input>", {
  6083. type: "text",
  6084. name: "numOfChildren",
  6085. value: numOfChildrenData
  6086. }).appendTo(formNormaPromotionalFares);
  6087. $("<input>", {
  6088. type: "text",
  6089. name: "numOfInfants",
  6090. value: numOfInfantsData
  6091. }).appendTo(formNormaPromotionalFares);
  6092. $("<input>", {
  6093. type: "text",
  6094. name: "promotionMode",
  6095. value: promotionModeData
  6096. }).appendTo(formNormaPromotionalFares);
  6097. formNormaPromotionalFares.appendTo("body").submit();
  6098. }
  6099. }
  6100. },
  6101. error: function(jqXHR, textStatus, errorThrown) {}
  6102. });
  6103. } else {
  6104. if (tripTypeData == "R") {
  6105. $(".grid-col.one-half :first").find("p.text-error").remove();
  6106. $(".grid-col.one-half:nth(1)").addClass("error");
  6107. SIA.preloader.hide();
  6108. $(".grid-col.one-half :first").append('<p class="text-error"><span></span></p></div>');
  6109. $(".grid-col.one-half :first p.text-error").text(saar5.m.faredeals.validdate);
  6110. flag = 0;
  6111. }
  6112. }
  6113. } else {
  6114. if (tripTypeData == "R" && flag == 1) {
  6115. $(".grid-col.one-half :first").find("p.text-error").remove();
  6116. $(".grid-col.one-half :first").addClass("error");
  6117. SIA.preloader.hide();
  6118. $(".grid-col.one-half :first").append('<p class="text-error"><span></span></p></div>');
  6119. $(".grid-col.one-half :first p.text-error").text(saar5.m.faredeals.validdate);
  6120. }
  6121. }
  6122. }
  6123. } else {
  6124. if (url.indexOf("&KFpassthru") != -1) {
  6125. $('input[name="parentPageURL"]').val("");
  6126. $(".fares-details-page").removeClass("hidden");
  6127. var originData = Getparams("cityFrom");
  6128. var destinData = Getparams("cityTo");
  6129. var tripTypeData = Getparams("tripType");
  6130. var returnMonthData = Getparams("returnMonth");
  6131. var departureMonthData = Getparams("departureMonth");
  6132. var cabinClassData = Getparams("cabinClass");
  6133. var numOfAdultsData = Getparams("numOfAdults");
  6134. var numOfChildrenData = Getparams("numOfChildren");
  6135. var numOfInfantsData = Getparams("numOfInfants");
  6136. $("#city-travel-start-day").val(departureMonthData);
  6137. $("#city-travel-return-day").val(returnMonthData);
  6138. $("#refereshAdult").customSelect("init");
  6139. } else {
  6140. $(".fares-details-page").removeClass("hidden");
  6141. }
  6142. }
  6143. var payByMilesValue = GetURLParameter("payByMiles");
  6144. if (payByMilesValue != "" && payByMilesValue == "true") {
  6145. $("#travel-radio-2").attr("checked", true).trigger("click");
  6146. }
  6147. if ($("#breakingAlert").length) {
  6148. $.ajax({
  6149. url: "/home-breakingalert.form",
  6150. type: "GET",
  6151. success: function(res) {
  6152. $("#breakingAlert").html(res);
  6153. SIA.newsTickerContent();
  6154. }
  6155. });
  6156. }
  6157. if ($("#home_page_take_over_switch").val() == "on") {
  6158. function readCookie(name) {
  6159. var nameEQ = name + "=";
  6160. var ca = document.cookie.split("; ");
  6161. for (var i = 0; i < ca.length; i++) {
  6162. var c = ca[i];
  6163. if (c.indexOf(nameEQ) === 0) {
  6164. return c.substring(nameEQ.length, c.length);
  6165. }
  6166. }
  6167. return null;
  6168. }
  6169. var popupHide = readCookie("popupHide");
  6170. var popupSession = readCookie("popupSession");
  6171. var jsessionId = $("#sessionId").val();
  6172. var url = String(window.location);
  6173. $("#remember-cb").click(function() {
  6174. if ($(this).is(":checked")) {
  6175. $.cookies.set("popupHide", "true", {
  6176. expiresAt: new Date(new Date().getTime() + 365 * (24 * 60 * 60) * 1000),
  6177. path: "/"
  6178. });
  6179. $.cookies.del("popupSession");
  6180. } else {
  6181. $.cookies.del("popupHide");
  6182. $.cookies.set("popupSession", jsessionId, {
  6183. path: "/"
  6184. });
  6185. }
  6186. });
  6187. if (url.indexOf("/home") != -1 && popupHide == null && popupSession != jsessionId) {
  6188. var popupIntroLightBox = $(".popup--intro-lightbox");
  6189. var win = SIA.global.vars.win;
  6190. var flyingFocus = $("#flying-focus");
  6191. popupIntroLightBox.Popup({
  6192. overlayBGTemplate: SIA.global.config.template.overlay,
  6193. modalShowClass: "",
  6194. afterShow: function() {
  6195. flyingFocus = $("#flying-focus");
  6196. if (flyingFocus.length) {
  6197. flyingFocus.remove();
  6198. }
  6199. },
  6200. afterHide: function() {
  6201. win.trigger("resize.resetTabMenu");
  6202. },
  6203. triggerCloseModal: ".popup__close, [data-close]"
  6204. });
  6205. popupIntroLightBox.Popup("show");
  6206. $.cookies.set("popupSession", jsessionId, {
  6207. path: "/"
  6208. });
  6209. }
  6210. }
  6211. if (($("#instructional_video_switch").val() == "on") && ($("body").hasClass("home-page") || $("body").hasClass("book-flight"))) {
  6212. if ($("#country_code").val() == "CN") {
  6213. var script1 = document.createElement("script");
  6214. script1.src = "/saar5/_desktop/scripts/flowplayer-app.js";
  6215. var script2 = document.createElement("script");
  6216. script2.src = "/saar5/_desktop/scripts/flowplayer.min.js";
  6217. document.getElementsByTagName("body" ? "body" : "head")[0].appendChild(script2);
  6218. document.getElementsByTagName("body" ? "body" : "head")[0].appendChild(script1);
  6219. $("#chinaPlayer").html($('<a href="#" class="link-4" data-flow-url="0"><em class="ico-point-r"></em>' + saar5.l.awarenessvideo.checkinone + "</a>"));
  6220. $("#redeem_chinaPlayer").html($('<a href="#" class="link-4" data-flow-url="0"><em class="ico-point-r"></em>' + saar5.l.awarenessvideo.manageone + "</a>"));
  6221. } else {
  6222. var script1 = document.createElement("script");
  6223. script1.src = "/saar5/_desktop/scripts/youtube-app.js";
  6224. var script2 = document.createElement("script");
  6225. script2.src = "/saar5/_desktop/scripts/youtube_iframe_api.js";
  6226. document.getElementsByTagName("body" ? "body" : "head")[0].appendChild(script2);
  6227. document.getElementsByTagName("body" ? "body" : "head")[0].appendChild(script1);
  6228. $("#redeem_globalPlayer").html($('<a href="#" class="link-4" data-youtube-url="0"><em class="ico-point-r"></em>' + saar5.l.awarenessvideo.manageone + "</a>"));
  6229. $("#globalPlayer").html($('<a href="#" class="link-4" data-youtube-url="0"><em class="ico-point-r"></em>' + saar5.l.awarenessvideo.checkinone + "</a>"));
  6230. }
  6231. }
  6232. var cibOriginOptions = $("#cib-flight1").find("option");
  6233. var cibDestOptions = $("#cib-flight2").find("option");
  6234. for (var i = 0; i < cibOriginOptions.length; i++) {
  6235. var cibOriginValue = cibOriginOptions[i].getAttribute("data-text");
  6236. if ($("select#cib-flight1").find(cibOriginOptions[i]).attr("selected")) {
  6237. $("#city-1").val(cibOriginValue);
  6238. var splitdataValue = cibOriginValue.lastIndexOf("-");
  6239. $("#originCityCode").val(cibOriginValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  6240. break;
  6241. }
  6242. }
  6243. if (($("#milesaccural").val() != undefined && $("#milesaccural").val() != "undefined") && $("#milesaccural").val() != "") {
  6244. var cibKFOriginValue = $("#cib-flight1").find('option[value="' + $("#milesaccural").val() + '"]').attr("data-text");
  6245. $("#city-1").val(cibKFOriginValue);
  6246. $("#originCityCode").val($("#milesaccural").val());
  6247. }
  6248. for (var i = 0; i < cibDestOptions.length; i++) {
  6249. var cibDestValue = cibDestOptions[i].getAttribute("data-text");
  6250. if ($("select#cib-flight2").find(cibDestOptions[i]).attr("selected")) {
  6251. $("#city-2").val(cibDestValue);
  6252. var splitdataValue = cibDestValue.lastIndexOf("-");
  6253. $("#destCityCode").val(cibDestValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  6254. break;
  6255. }
  6256. }
  6257. if (($("#milesaccuraldest").val() != undefined && $("#milesaccuraldest").val() != "undefined") && $("#milesaccuraldest").val() != "") {
  6258. var cibDestValue = $("#cib-flight2").find('option[value="' + $("#milesaccuraldest").val() + '"]').attr("data-text");
  6259. $("#city-2").val(cibDestValue);
  6260. $("#destCityCode").val($("#milesaccuraldest").val());
  6261. }
  6262. var orbOriginOptions = $("#cib-flight3").find("option");
  6263. var orbDestOptions = $("#cib-flight4").find("option");
  6264. for (var i = 0; i < orbOriginOptions.length; i++) {
  6265. var orbOriginValue = orbOriginOptions[i].getAttribute("data-text");
  6266. if ($("select#cib-flight3").find(orbOriginOptions[i]).attr("selected")) {
  6267. $("#city1-1").val(orbOriginValue);
  6268. var splitdataValue = orbOriginValue.lastIndexOf("-");
  6269. $("#orbOriginCity").val(orbOriginValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  6270. break;
  6271. }
  6272. }
  6273. if (($("#milesaccuralorb").val() != undefined && $("#milesaccuralorb").val() != "undefined") && $("#milesaccuralorb").val() != "") {
  6274. var orbKFOriginValue = $("#cib-flight3").find('option[value="' + $("#milesaccuralorb").val() + '"]').attr("data-text");
  6275. $("#city1-1").val(orbKFOriginValue);
  6276. $("#orbOriginCity").val($("#milesaccuralorb").val());
  6277. }
  6278. for (var i = 0; i < orbDestOptions.length; i++) {
  6279. var orbDestValue = orbDestOptions[i].getAttribute("data-text");
  6280. if ($("select#cib-flight4").find(orbDestOptions[i]).attr("selected")) {
  6281. $("#city1-2").val(orbDestValue);
  6282. var splitdataValue = orbDestValue.lastIndexOf("-");
  6283. $("#orbDestination").val(orbDestValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  6284. break;
  6285. }
  6286. }
  6287. if (($("#milesaccuralorbDest").val() != undefined && $("#milesaccuralorbDest").val() != "undefined") && $("#milesaccuralorbDest").val() != "") {
  6288. var orbKFDestValue = $("#cib-flight4").find('option[value="' + $("#milesaccuralorbDest").val() + '"]').attr("data-text");
  6289. $("#city1-2").val(orbKFDestValue);
  6290. $("#orbDestination").val($("#milesaccuralorbDest").val());
  6291. $("#travel-radio-2").attr("checked", true).trigger("click");
  6292. }
  6293. var sqcOriginOptions = $("#cib-flight5").find("option");
  6294. var sqcDestOptions = $("#cib-flight6").find("option");
  6295. for (var i = 0; i < sqcOriginOptions.length; i++) {
  6296. var sqcOriginValue = sqcOriginOptions[i].getAttribute("data-text");
  6297. if ($("select#cib-flight5").find(sqcOriginOptions[i]).attr("selected")) {
  6298. $("#city2-1").val(sqcOriginValue);
  6299. var splitdataValue = sqcOriginValue.lastIndexOf("-");
  6300. $("#originCityCodeSQC").val(sqcOriginValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  6301. break;
  6302. }
  6303. }
  6304. for (var i = 0; i < sqcDestOptions.length; i++) {
  6305. var sqcDestValue = sqcDestOptions[i].getAttribute("data-text");
  6306. if ($("select#cib-flight6").find(sqcDestOptions[i]).attr("selected")) {
  6307. $("#city2-2").val(sqcDestValue);
  6308. var splitdataValue = sqcDestValue.lastIndexOf("-");
  6309. $("#destCityCodeSQC").val(sqcDestValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  6310. break;
  6311. }
  6312. }
  6313. $("#depart-route-2").click(function() {
  6314. $("#fl-no-3A").attr("name", "station");
  6315. $("#choose-city-5A").attr("name", "stationA");
  6316. });
  6317. $("#arrive-route-2").click(function() {
  6318. $("#fl-no-3A").attr("name", "stationD");
  6319. $("#choose-city-5A").attr("name", "station");
  6320. $("#datetobynumber").removeAttr("name");
  6321. $("#date-to-by-number").attr("name", "eventMonthByFlight");
  6322. });
  6323. $("#Schedule-event").click(function() {
  6324. $("#isched-search").attr("value", "true");
  6325. });
  6326. $("#manageBookingForm").submit(function(e) {
  6327. e.preventDefault();
  6328. if (($("#booking-1").val().length == 6) && $("#booking-2").val() && $("#manageBookingForm").valid()) {
  6329. var data = $("#manageBookingForm").serializeArray();
  6330. var url = $("#manageBookingForm").attr("action");
  6331. $.ajax({
  6332. url: url,
  6333. type: "POST",
  6334. data: data,
  6335. success: function(data) {
  6336. var $response = $(data);
  6337. var securityError = $response.find(".securityError").val();
  6338. if (typeof securityError !== "undefined") {
  6339. window.location = securityError;
  6340. }
  6341. var error = $response.filter(".alert-block").val();
  6342. var redirect = $response.filter(".ajaxRedirect").val();
  6343. var jQajaxRedirect = $response.filter(".jQajaxRedirect").val();
  6344. var offline = $response.filter(".popup--offline").val();
  6345. if (typeof error !== "undefined") {
  6346. SIA.preloader.hide();
  6347. $("#errorMsg").html($response);
  6348. }
  6349. if (typeof redirect !== "undefined" || typeof jQajaxRedirect !== "undefined") {
  6350. handleAjaxRedirect($response);
  6351. e.preventDefault();
  6352. }
  6353. if (typeof offline !== "undefined") {
  6354. callPopup($response);
  6355. }
  6356. }
  6357. });
  6358. }
  6359. });
  6360.  
  6361. function callPopup(element) {
  6362. SIA.preloader.hide();
  6363. var popupOffline = element;
  6364. var flyingFocus = $("#flying-focus");
  6365. popupOffline.Popup({
  6366. overlayBGTemplate: SIA.global.config.template.overlay,
  6367. modalShowClass: "",
  6368. afterShow: function() {
  6369. flyingFocus = $("#flying-focus");
  6370. if (flyingFocus.length) {
  6371. flyingFocus.remove();
  6372. }
  6373. },
  6374. afterHide: function() {
  6375. win.trigger("resize.resetTabMenu");
  6376. },
  6377. triggerCloseModal: ".popup__close"
  6378. });
  6379. popupOffline.Popup("show");
  6380. }
  6381.  
  6382. function handleAjaxRedirect(element) {
  6383. var href = element.attr("href");
  6384. window.location = href;
  6385. }
  6386. $("#manageBookingForm1").submit(function(e) {
  6387. e.preventDefault();
  6388. var ticno = $("#booking-3").val();
  6389. var tic = ticno.substring(0, 3);
  6390. if (($("#booking-3").val().length == 13) && $("#booking-4").val() && (tic == "618") && $("#manageBookingForm1").valid()) {
  6391. var data = $("#manageBookingForm1").serializeArray();
  6392. var url = $("#manageBookingForm1").attr("action");
  6393. $.ajax({
  6394. url: url,
  6395. type: "POST",
  6396. data: data,
  6397. success: function(data) {
  6398. var $response = $(data);
  6399. var securityError = $response.find(".securityError").val();
  6400. if (typeof securityError !== "undefined") {
  6401. window.location = securityError;
  6402. }
  6403. var error = $response.filter(".alert-block").val();
  6404. var redirect = $response.filter(".ajaxRedirect").val();
  6405. var jQajaxRedirect = $response.filter(".jQajaxRedirect").val();
  6406. var offline = $response.filter(".popup--offline").val();
  6407. if (typeof error !== "undefined") {
  6408. SIA.preloader.hide();
  6409. $("#errorMsg").html($response);
  6410. }
  6411. if (typeof redirect !== "undefined" || typeof jQajaxRedirect !== "undefined") {
  6412. handleAjaxRedirect($response);
  6413. e.preventDefault();
  6414. }
  6415. if (typeof offline !== "undefined") {
  6416. callPopup($response);
  6417. }
  6418. }
  6419. });
  6420. }
  6421. });
  6422. $("#city-promo-code").click(function(e) {
  6423. e.preventDefault();
  6424. var isLoggedInUser = $("#isLoggedInUser").val();
  6425. if (isLoggedInUser == "true") {
  6426. SIA.preloader.hide();
  6427. $(".overlay").removeClass("hidden");
  6428. $(".popup--promo-code-kf-member").Popup("show").Popup("show");
  6429. } else {
  6430. SIA.preloader.hide();
  6431. $(".overlay").removeClass("hidden");
  6432. $(".popup--promo").Popup("show");
  6433. }
  6434. $("#overlay").addClass("overlay");
  6435. });
  6436. $("#city1-promo-code").click(function(e) {
  6437. e.preventDefault();
  6438. var isLoggedInUser = $("#isLoggedInUser").val();
  6439. if (isLoggedInUser == "true") {
  6440. SIA.preloader.hide();
  6441. $(".overlay").removeClass("hidden");
  6442. $(".popup--promo-code-kf-member").Popup("show").Popup("show");
  6443. } else {
  6444. SIA.preloader.hide();
  6445. $(".overlay").removeClass("hidden");
  6446. $(".popup--promo").Popup("show");
  6447. }
  6448. $("#overlay").addClass("overlay");
  6449. });
  6450. $("#city2-promo-code").click(function(e) {
  6451. e.preventDefault();
  6452. var isLoggedInUser = $("#isLoggedInUser").val();
  6453. if (isLoggedInUser == "true") {
  6454. SIA.preloader.hide();
  6455. $(".overlay").removeClass("hidden");
  6456. $(".popup--promo-code-kf-member").Popup("show").Popup("show");
  6457. } else {
  6458. SIA.preloader.hide();
  6459. $(".overlay").removeClass("hidden");
  6460. $(".popup--promo").Popup("show");
  6461. }
  6462. $("#overlay").addClass("overlay");
  6463. });
  6464. if (window.location.href.indexOf("#promocode") > -1) {
  6465. var url = $("#city-promo-code").attr("href");
  6466. $.ajax({
  6467. url: url,
  6468. type: "GET",
  6469. data: {},
  6470. success: function(data) {
  6471. var $response = $(data);
  6472. var offline = $response.filter(".popup--promo").val();
  6473. var offlinekf = $response.filter(".popup--promo-code-kf-member").val();
  6474. if (typeof offline !== "undefined") {
  6475. callPopupPromo($response);
  6476. }
  6477. if (typeof offlinekf !== "undefined") {
  6478. callPopupPromo($response);
  6479. }
  6480. }
  6481. });
  6482. }
  6483.  
  6484. function callPopupPromo(element) {
  6485. var popupOffline = element;
  6486. popupOffline.Popup({
  6487. overlayBGTemplate: SIA.global.config.template.overlay,
  6488. modalShowClass: "",
  6489. afterShow: function() {},
  6490. afterHide: function() {
  6491. win.trigger("resize.resetTabMenu");
  6492. },
  6493. triggerCloseModal: ".popup__close"
  6494. });
  6495. popupOffline.Popup("show");
  6496. }
  6497. });
  6498. $(".schedSearch").click(function(e) {
  6499. e.preventDefault();
  6500. var dataValue = $("#city1-1").val();
  6501. if (dataValue && dataValue.indexOf("-") != -1) {
  6502. var splitdataValue = dataValue.lastIndexOf("-");
  6503. $("#orbOriginCity").val(dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  6504. }
  6505. var dataValue = $("#city1-2").val();
  6506. if (dataValue && dataValue.indexOf("-") != -1) {
  6507. var splitdataValue = dataValue.lastIndexOf("-");
  6508. $("#orbdestCity").val(dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  6509. }
  6510. if ($("#city1-2").val()) {
  6511. $("#city1-2").removeAttr("name");
  6512. }
  6513. if (($("#city1-1").val() && $("#city1-2").val() && $("#city1-travel-start-day").val() && $("#city1-travel-return-day").val()) || ($("#city1-1").val() && $("#city1-2").val() && $("#city1-travel-start-day-2").val())) {
  6514. $("#scheduleSearchForm").find("#origin").val($("#originCityCode").val());
  6515. if ($("#searchForm").find("#originMobile") != "undefined" && $("#searchForm").find("#originMobile").length > 0) {
  6516. $("#scheduleSearchForm").find("#originMobile").val($("#orbOriginCity").val());
  6517. }
  6518. $("#scheduleSearchForm").find("#destination").val($("#orbdestCity").val());
  6519. if ($("#searchForm").find("#destinationMobile") != "undefined" && $("#searchForm").find("#destinationMobile").length > 0) {
  6520. $("#scheduleSearchForm").find("#destinationMobile").val($("#destCityCode").val());
  6521. }
  6522. if ($("#city1-radio-4").is(":checked")) {
  6523. var departureDate = $("#city1-travel-start-day").val();
  6524. var returnDate = $("#city1-travel-return-day").val();
  6525. var departSplit = "";
  6526. var returnSplit = "";
  6527. if (departureDate) {
  6528. departSplit = departureDate.split("/");
  6529. }
  6530. if (returnDate) {
  6531. returnSplit = returnDate.split("/");
  6532. }
  6533. $("#scheduleSearchForm").find("#tripTypeSchedule").val("");
  6534. $("#scheduleSearchForm").find("#jQdatePickerMonthYear_3").val(departSplit[1] + departSplit[2]);
  6535. $("#scheduleSearchForm").find("#jQdatePickerMonthYear_4").val(returnSplit[1] + returnSplit[2]);
  6536. $("#scheduleSearchForm").find("#jQdatePickerDay_3").val(departSplit[0]);
  6537. $("#scheduleSearchForm").find("#jQdatePickerDay_4").val(returnSplit[0]);
  6538. } else {
  6539. var departureDateOneway = $("#city1-travel-start-day-2").val().split("/");
  6540. $("#scheduleSearchForm").find("#jQdatePickerMonthYear_3").val(departureDateOneway[1] + departureDateOneway[2]);
  6541. $("#scheduleSearchForm").find("#jQdatePickerDay_3").val(departureDateOneway[0]);
  6542. $("#scheduleSearchForm").find("#tripTypeSchedule").val("O");
  6543. }
  6544. $("#destination_error").find(".error").remove();
  6545. $("#origin_error").find(".error").remove();
  6546. var newHidden = $("<input/>", {
  6547. type: "hidden",
  6548. name: "tripType",
  6549. value: $("#scheduleSearchForm").find("#tripTypeSchedule").val(),
  6550. id: "tripTypeSchedSearch"
  6551. });
  6552. $("#scheduleSearchForm").append(newHidden);
  6553. if ($("#scheduleSearchForm").valid()) {
  6554. $("#schedSearch").attr("disabled", "disabled");
  6555. $("#form-book-travel-1").remove();
  6556. $("#scheduleSearchForm").submit();
  6557. }
  6558. }
  6559. });
  6560. $("#schedSearch").click(function(e) {
  6561. $(".to-valid").find("p.text-error").remove();
  6562. $(".to-valid").removeClass("error");
  6563. e.preventDefault();
  6564. var dataValue = $("#city-1").val();
  6565. if (dataValue && dataValue.indexOf("-") != -1) {
  6566. var splitdataValue = dataValue.lastIndexOf("-");
  6567. var boarding = dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim();
  6568. }
  6569. dataValue = $("#city-2").val();
  6570. if (dataValue && dataValue.indexOf("-") != -1) {
  6571. var splitdataValue = dataValue.lastIndexOf("-");
  6572. var destin = dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim();
  6573. }
  6574. if ($("#city-radio-4").is(":checked")) {
  6575. var trip = "Round Trip";
  6576. var dDate = $("#city-travel-start-day").val();
  6577. var rDate = $("#city-travel-return-day").val();
  6578. } else {
  6579. if ($("#city-radio-5").is(":checked")) {
  6580. var trip = "One Way";
  6581. var dDate = $("#city-travel-start-day-2").val();
  6582. var rDate = "";
  6583. }
  6584. }
  6585. var parms = {
  6586. BoardingPoint: boarding,
  6587. DestinationPoint: destin,
  6588. tripType: trip,
  6589. DepartureDate: dDate,
  6590. ReturnDate: rDate,
  6591. fromHome: "true"
  6592. };
  6593. if (($("#city-1").val()) && ($("#city-2").val())) {
  6594. if (($("#city-radio-4").is(":checked")) || ($("#city-radio-5").is(":checked"))) {
  6595. $.ajax({
  6596. url: "/getFlightSchedule.form",
  6597. type: "POST",
  6598. data: parms,
  6599. success: function(data) {
  6600. var $response = $(data);
  6601. var error = $response.filter("#flightScheduleAjaxError").val();
  6602. var redirect = $response.filter(".jQajaxRedirect").val();
  6603. if (typeof error !== "undefined") {
  6604. SIA.preloader.hide();
  6605. $("#errorFSMsgCib").html($response);
  6606. }
  6607. if (typeof redirect !== "undefined") {
  6608. handleAjaxRedirectFS($response);
  6609. e.preventDefault();
  6610. }
  6611. }
  6612. });
  6613. }
  6614. } else {
  6615. if (!($("#city-2").val())) {
  6616. SIA.preloader.hide();
  6617. $(".to-valid").addClass("error");
  6618. $(".to-valid").append('<p class="text-error"><span></span></p></div>');
  6619. $(".to-valid p.text-error").text(saar5.m.flightschedule.cityselect);
  6620. }
  6621. }
  6622. });
  6623. $("#schedSearchOrb").click(function(e) {
  6624. $(".to-valid-orb").find("p.text-error").remove();
  6625. $(".to-valid-orb").removeClass("error");
  6626. e.preventDefault();
  6627. var dataValue = $("#city1-1").val();
  6628. if (dataValue && dataValue.indexOf("-") != -1) {
  6629. var splitdataValue = dataValue.lastIndexOf("-");
  6630. var boarding = dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim();
  6631. }
  6632. dataValue = $("#city1-2").val();
  6633. if (dataValue && dataValue.indexOf("-") != -1) {
  6634. var splitdataValue = dataValue.lastIndexOf("-");
  6635. var destin = dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim();
  6636. }
  6637. if ($("#city1-radio-4").is(":checked")) {
  6638. var trip = "Round Trip";
  6639. var dDate = $("#city1-travel-start-day").val();
  6640. var rDate = $("#city1-travel-return-day").val();
  6641. } else {
  6642. if ($("#city1-radio-5").is(":checked")) {
  6643. var trip = "One Way";
  6644. var dDate = $("#city1-travel-start-day-2").val();
  6645. var rDate = "";
  6646. }
  6647. }
  6648. var parms = {
  6649. BoardingPoint: boarding,
  6650. DestinationPoint: destin,
  6651. tripType: trip,
  6652. DepartureDate: dDate,
  6653. ReturnDate: rDate,
  6654. fromHome: "true"
  6655. };
  6656. if (($("#city1-1").val()) && ($("#city1-2").val())) {
  6657. if (($("#city1-radio-4").is(":checked")) || ($("#city1-radio-5").is(":checked"))) {
  6658. $.ajax({
  6659. url: "/getFlightSchedule.form",
  6660. type: "POST",
  6661. data: parms,
  6662. success: function(data) {
  6663. var $response = $(data);
  6664. var error = $response.filter("#flightScheduleAjaxError").val();
  6665. var redirect = $response.filter(".jQajaxRedirect").val();
  6666. if (typeof error !== "undefined") {
  6667. SIA.preloader.hide();
  6668. $("#errorFSMsgOrb").html($response);
  6669. }
  6670. if (typeof redirect !== "undefined") {
  6671. handleAjaxRedirectFS($response);
  6672. e.preventDefault();
  6673. }
  6674. }
  6675. });
  6676. }
  6677. } else {
  6678. if (!($("#city1-2").val())) {
  6679. SIA.preloader.hide();
  6680. $(".to-valid-orb").addClass("error");
  6681. $(".to-valid-orb").append('<p class="text-error"><span></span></p></div>');
  6682. $(".to-valid-orb p.text-error").text(saar5.m.flightschedule.cityselect);
  6683. }
  6684. }
  6685. });
  6686. $("#addStopoverSearchHome, #multiCitySearchHome, #multiCitySearchHomeSQC").click(function(e) {
  6687. e.preventDefault();
  6688. var dataValue = $("#city-1").val();
  6689. if (dataValue && dataValue.indexOf("-") != -1) {
  6690. var splitdataValue = dataValue.lastIndexOf("-");
  6691. $("#originCityCode").val(dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  6692. }
  6693. var dataValue = $("#city-2").val();
  6694. if (dataValue && dataValue.indexOf("-") != -1) {
  6695. var splitdataValue = dataValue.lastIndexOf("-");
  6696. $("#destCityCode").val(dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  6697. }
  6698. if ($("#city-2").val()) {
  6699. $("#city-2").removeAttr("name");
  6700. }
  6701. var dataValue = $("#city1-1").val();
  6702. if (dataValue && dataValue.indexOf("-") != -1) {
  6703. var splitdataValue = dataValue.lastIndexOf("-");
  6704. $("#orbOriginCity").val(dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  6705. }
  6706. var dataValue = $("#city1-2").val();
  6707. if (dataValue && dataValue.indexOf("-") != -1) {
  6708. var splitdataValue = dataValue.lastIndexOf("-");
  6709. $("#orbdestCity").val(dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  6710. }
  6711. if ($("#city1-2").val()) {
  6712. $("#city1-2").removeAttr("name");
  6713. }
  6714. var dataValue = $("#city2-1").val();
  6715. if (dataValue && dataValue.indexOf("-") != -1) {
  6716. var splitdataValue = dataValue.lastIndexOf("-");
  6717. $("#originCityCodeSQC").val(dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  6718. }
  6719. var dataValue = $("#city2-2").val();
  6720. if (dataValue && dataValue.indexOf("-") != -1) {
  6721. var splitdataValue = dataValue.lastIndexOf("-");
  6722. $("#destCityCodeSQC").val(dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim());
  6723. }
  6724. if ($("#city2-2").val()) {
  6725. $("#city2-2").removeAttr("name");
  6726. }
  6727. if ($("#city2-radio-4").is(":checked") && $("#city2-travel-start-day").val() && $("#city2-travel-return-day").val()) {
  6728. if ($("#city2-one-way-2").hasClass("hidden")) {
  6729. $("#city2-one-way-2 :input").attr("disabled", "disabled");
  6730. } else {
  6731. $("#city2-one-way-2 :input").removeAttr("disabled");
  6732. }
  6733. } else {
  6734. if ($("#city2-radio-5").is(":checked") && $("#city2-travel-start-day-2").val()) {
  6735. if ($("#city2-one-way-1").hasClass("hidden")) {
  6736. $("#city2-one-way-1 :input").attr("disabled", "disabled");
  6737. } else {
  6738. $("#city2-one-way-1 :input").removeAttr("disabled");
  6739. }
  6740. }
  6741. }
  6742. if ($("#city-radio-4").is(":checked") && $("#city-travel-start-day").val() && $("#city-travel-return-day").val()) {
  6743. if ($("#city-one-way-2").hasClass("hidden")) {
  6744. $("#city-one-way-2 :input").attr("disabled", "disabled");
  6745. } else {
  6746. $("#city-one-way-2 :input").removeAttr("disabled");
  6747. }
  6748. } else {
  6749. if ($("#city-radio-5").is(":checked") && $("#city-travel-start-day-2").val()) {
  6750. if ($("#city-one-way-1").hasClass("hidden")) {
  6751. $("#city-one-way-1 :input").attr("disabled", "disabled");
  6752. } else {
  6753. $("#city-one-way-1 :input").removeAttr("disabled");
  6754. }
  6755. }
  6756. }
  6757. if ($("#city1-radio-4").is(":checked") && $("#city1-travel-start-day").val() && $("#city1-travel-return-day").val()) {
  6758. if ($("#city1-one-way-2").hasClass("hidden")) {
  6759. $("#city1-one-way-2 :input").attr("disabled", "disabled");
  6760. } else {
  6761. $("#city1-one-way-2 :input").removeAttr("disabled");
  6762. }
  6763. } else {
  6764. if ($("#city1-radio-5").is(":checked") && $("#city1-travel-start-day-2").val()) {
  6765. if ($("#city1-one-way-1").hasClass("hidden")) {
  6766. $("#city1-one-way-2 :input").attr("disabled", "disabled");
  6767. } else {
  6768. $("#city1-one-way-2 :input").removeAttr("disabled");
  6769. }
  6770. }
  6771. }
  6772. $("#cabinCIB").attr({
  6773. "name": "OWRTcabinClass"
  6774. });
  6775. $("#cabinSQC").attr({
  6776. "name": "OWRTcabinClass"
  6777. });
  6778. var inps = $(this).parents("form:eq(0)").serialize();
  6779. var loc = $(this).attr("href");
  6780. var url = (loc.indexOf("?")) ? loc + "&" + inps : loc + "?" + inps;
  6781. window.location = url;
  6782. });
  6783. $("#form-flight-status").submit(function(e) {
  6784. e.preventDefault();
  6785. var dataValue = $("#city-3").val();
  6786. if (dataValue && dataValue.indexOf("-") != -1) {
  6787. var splitdataValue = dataValue.lastIndexOf("-");
  6788. var splitValue = dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim();
  6789. $("#city-3A").attr("value", splitValue);
  6790. }
  6791. var dataValue = $("#city-4").val();
  6792. if (dataValue && dataValue.indexOf("-") != -1) {
  6793. var splitdataValue = dataValue.lastIndexOf("-");
  6794. var splitValue = dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim();
  6795. $("#city-4A").attr("value", splitValue);
  6796. }
  6797. if ($("#city-3").val() && $("#city-4").val() && ($("#city-3").val() !== $("#city-4").val())) {
  6798. $("#city-4").removeAttr("name");
  6799. e.preventDefault();
  6800. var data = $("#form-flight-status").serializeArray();
  6801. var url = $("#form-flight-status").attr("action");
  6802. $.ajax({
  6803. url: url,
  6804. type: "POST",
  6805. data: data,
  6806. success: function(data) {
  6807. var $response = $(data);
  6808. var error = $response.filter("#flightStatusAjaxError").val();
  6809. var redirect = $response.filter(".jQajaxRedirect").val();
  6810. if (typeof error !== "undefined") {
  6811. SIA.preloader.hide();
  6812. $("#errorFSMsg").html($response);
  6813. }
  6814. if (typeof redirect !== "undefined") {
  6815. handleAjaxRedirectFS($response);
  6816. e.preventDefault();
  6817. }
  6818. },
  6819. error: function() {
  6820. SIA.preloader.hide();
  6821. var error = $('<div class="alert-block error-alert"><div class="inner"><div class="alert__icon"><em class="ico-close-round-fill">&nbsp;</em></div><div class="alert__message""><p>' + saar5.l.flightStatus.message + "</p></div></div></div>");
  6822. $("#errorFSMsg").html(error);
  6823. }
  6824. });
  6825. } else {
  6826. SIA.preloader.hide();
  6827. }
  6828. });
  6829.  
  6830. function handleAjaxRedirectFS(element) {
  6831. var href = element.attr("href");
  6832. window.location = href;
  6833. }
  6834. $("#form-flight-status-1").submit(function(e) {
  6835. e.preventDefault();
  6836. if ($("#depart-route-2").is(":checked")) {
  6837. var dataValue = $("#fl-no-3").val();
  6838. if (dataValue && dataValue.indexOf("-") != -1) {
  6839. var splitdataValue = dataValue.lastIndexOf("-");
  6840. var splitValue = dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim();
  6841. $("#fl-no-3A").attr("value", splitValue);
  6842. }
  6843. }
  6844. if ($("#arrive-route-2").is(":checked")) {
  6845. var dataValue = $("#choose-city-5").val();
  6846. if (dataValue && dataValue.indexOf("-") != -1) {
  6847. var splitdataValue = dataValue.lastIndexOf("-");
  6848. var splitValue = dataValue.substring(splitdataValue + 1, splitdataValue + 5).trim();
  6849. $("#choose-city-5A").attr("value", splitValue);
  6850. }
  6851. }
  6852. if ($("#fl-no-2").val() && ($("#fl-no-3A").val() || $("#choose-city-5A").val())) {
  6853. e.preventDefault();
  6854. $("#fl-no-2").val($("#fl-no-2").val().trim());
  6855. var data = $("#form-flight-status-1").serializeArray();
  6856. var url = $("#form-flight-status-1").attr("action");
  6857. $.ajax({
  6858. url: url,
  6859. type: "POST",
  6860. data: data,
  6861. success: function(data) {
  6862. var $response = $(data);
  6863. var error = $response.filter("#flightStatusAjaxError").val();
  6864. var redirect = $response.filter(".jQajaxRedirect").val();
  6865. if (typeof error !== "undefined") {
  6866. SIA.preloader.hide();
  6867. $("#errorFSMsg").html($response);
  6868. }
  6869. if (typeof redirect !== "undefined") {
  6870. handleAjaxRedirectFS($response);
  6871. e.preventDefault();
  6872. }
  6873. }
  6874. });
  6875. }
  6876. });
  6877. $(".kfapplypromo").click(function(e) {
  6878. e.preventDefault();
  6879. var kfid = $(this).attr("id");
  6880. var url2 = $("#" + kfid).attr("href");
  6881. var promoCode = url2.split("/").pop();
  6882. $("#input-4").val(decodeURIComponent(promoCode));
  6883. $("#submit-3").trigger("click");
  6884. });
  6885. $("#submit-3").click(function(e) {
  6886. var regex = new RegExp("^[a-zA-Z0-9\\s-_]*$");
  6887. if ((regex.test($("#input-4").val()) === "" || (regex.test($("#input-4").val()) === null))) {
  6888. SIA.preloader.hide();
  6889. e.preventDefault();
  6890. } else {
  6891. if ((regex.test($("#input-4").val()) == true) && (($("#input-4").val().length) < 6) || (($("#input-4").val().length) > 15)) {
  6892. $("#promotionForm").find(".form-group:first").find("p.text-error").remove();
  6893. $("#promotionForm").find(".form-group:first").append('<p class="text-error"><span></span></p>');
  6894. $("#promotionForm").find(".form-group:first p.text-error").text(saar5.m.faredeals.enterdigit);
  6895. SIA.preloader.hide();
  6896. e.preventDefault();
  6897. } else {
  6898. SIA.preloader.hide();
  6899. SIA.preloader.show();
  6900. var originData = $('input[name="origin"]').val();
  6901. var destinData = $('input[name="destination"]').val();
  6902. var tripTypeData = $('input[name="tripType"]').val();
  6903. var returnMonthData = $('input[name="returnMonth"]').val();
  6904. var departureMonthData = $('input[name="departureMonth"]').val();
  6905. var cabinClassData = $('input[name="cabinClass"]').val();
  6906. var numOfAdultsData = $('select[name="numOfAdults"]').val();
  6907. var numOfChildrenData = $('select[name="numOfChildren"]').val();
  6908. var numOfInfantsData = $('select[name="numOfInfants"]').val();
  6909. var promoData = $("#input-4").val();
  6910. var fareDealIdData = $("#fareDealId").val();
  6911. var promotionModeData = $('input[name="promotionMode"]').val();
  6912. var fromPopUpData = $("#fromPopUp").val();
  6913. if ($('input[name="showLoginWidget"]').val()) {
  6914. var showLoginWidgetData = $('input[name="showLoginWidget"]').val();
  6915. }
  6916. if ($("#passThruFlightSearch").val()) {
  6917. var parms = {
  6918. origin: originData,
  6919. destination: destinData,
  6920. tripType: tripTypeData,
  6921. departureMonth: departureMonthData,
  6922. returnMonth: returnMonthData,
  6923. cabinClass: cabinClassData,
  6924. numOfAdults: numOfAdultsData,
  6925. numOfChildren: numOfChildrenData,
  6926. numOfInfants: numOfInfantsData,
  6927. promotionMode: promotionModeData,
  6928. promotionCode: promoData,
  6929. fareDealId: fareDealIdData,
  6930. fromPassthru: "true",
  6931. showLoginWidget: showLoginWidgetData,
  6932. fromPopUp: fromPopUpData
  6933. };
  6934. } else {
  6935. var parms = {
  6936. promotionCode: $("#input-4").val(),
  6937. fromPopUp: $("#fromPopUp").val()
  6938. };
  6939. }
  6940. e.preventDefault();
  6941. var url = $("#promotionForm").prop("action") + "/";
  6942. $.ajax({
  6943. url: url,
  6944. type: "POST",
  6945. data: parms,
  6946. success: function(data) {
  6947. var $response = $(data);
  6948. var error = $response.filter("#flightStatusAjaxError").val();
  6949. var redirect = $response.filter(".jQajaxRedirect").val();
  6950. if (typeof error !== "undefined") {
  6951. SIA.preloader.hide();
  6952. if ($("#passThruFlightSearch").val()) {
  6953. $("#errorFSMsg").html('<div class="alert-block error-alert"><div class="inner"><div class="alert__icon"><em class="ico-close-round-fill">&nbsp;</em></div><div class="alert__message"">' + '<div id="fareDealsAjaxError">' + ($("#errorFSMsg").html($response).find("p").text()) + "</div>" + "</div>" + "</div></div>");
  6954. } else {
  6955. $("p.error").html('<div class="alert-block error-alert"><div class="inner"><div class="alert__icon"><em class="ico-close-round-fill">&nbsp;</em></div><div class="alert__message"">' + '<div id="fareDealsAjaxError">' + ($("#errorFSMsg").html($response).find("p").text()) + "</div>" + "</div>" + "</div></div>");
  6956. }
  6957. } else {
  6958. if (data && data == "errorMismatchPromotionCode") {
  6959. SIA.preloader.hide();
  6960. $("#errorFSMsg").html('<div class="alert-block error-alert"><div class="inner"><div class="alert__icon"><em class="ico-close-round-fill">&nbsp;</em></div><div class="alert__message"">' + '<div id="fareDealsAjaxError">' + saar5.m.faredeals.incorrecttag + "</div>" + "</div>" + "</div></div>");
  6961. } else {
  6962. if (data && (data.toLowerCase() == "commercialfalse" || data.toLowerCase() == "redemptionfalse")) {
  6963. var formPopUpSubmit = $("<form></form>", {
  6964. action: "/booking-flow.form",
  6965. method: "post"
  6966. });
  6967. $("<input>", {
  6968. type: "text",
  6969. name: "origin",
  6970. value: originData
  6971. }).appendTo(formPopUpSubmit);
  6972. $("<input>", {
  6973. type: "text",
  6974. name: "destination",
  6975. value: destinData
  6976. }).appendTo(formPopUpSubmit);
  6977. $("<input>", {
  6978. type: "text",
  6979. name: "tripType",
  6980. value: tripTypeData
  6981. }).appendTo(formPopUpSubmit);
  6982. $("<input>", {
  6983. type: "text",
  6984. name: "returnMonth",
  6985. value: returnMonthData
  6986. }).appendTo(formPopUpSubmit);
  6987. $("<input>", {
  6988. type: "text",
  6989. name: "departureMonth",
  6990. value: departureMonthData
  6991. }).appendTo(formPopUpSubmit);
  6992. $("<input>", {
  6993. type: "text",
  6994. name: "cabinClass",
  6995. value: cabinClassData
  6996. }).appendTo(formPopUpSubmit);
  6997. $("<input>", {
  6998. type: "text",
  6999. name: "numOfAdults",
  7000. value: numOfAdultsData
  7001. }).appendTo(formPopUpSubmit);
  7002. $("<input>", {
  7003. type: "text",
  7004. name: "numOfChildren",
  7005. value: numOfChildrenData
  7006. }).appendTo(formPopUpSubmit);
  7007. $("<input>", {
  7008. type: "text",
  7009. name: "numOfInfants",
  7010. value: numOfInfantsData
  7011. }).appendTo(formPopUpSubmit);
  7012. $("<input>", {
  7013. type: "text",
  7014. name: "promotionMode",
  7015. value: promotionModeData
  7016. }).appendTo(formPopUpSubmit);
  7017. formPopUpSubmit.appendTo("body").submit();
  7018. } else {
  7019. if (data && (data.toLowerCase() == "commercialtrue" || data.toLowerCase() == "redemptiontrue")) {
  7020. var newHidden = $("<input/>", {
  7021. type: "hidden",
  7022. name: "isPromotionFareOrbLogin",
  7023. value: "true",
  7024. });
  7025. $("#form-promotion-book-flight").append(newHidden);
  7026. $('input[name="promotionMode"]').val("");
  7027. var postData = $("#form-promotion-book-flight").serializeArray();
  7028. var formURL = $("#form-promotion-book-flight").attr("action");
  7029. $.ajax({
  7030. url: formURL,
  7031. type: "POST",
  7032. data: postData,
  7033. success: function(data, textStatus, jqXHR) {
  7034. $(".popup--promo").Popup("hide");
  7035. SIA.preloader.hide();
  7036. $("#loginFromHeader").val("");
  7037. $("#executionId").val(data.trim());
  7038. $(".popup--promo").Popup("hide");
  7039. var menuBar = $(".menu-bar");
  7040. var triggerLoginPoup = menuBar.find("ul a.login");
  7041. triggerLoginPoup.trigger("click.showLoginPopup");
  7042. },
  7043. error: function(jqXHR, textStatus, errorThrown) {}
  7044. });
  7045. e.preventDefault();
  7046. } else {
  7047. $("#promotionForm").attr("action", url);
  7048. $("#promotionForm").submit();
  7049. }
  7050. }
  7051. }
  7052. }
  7053. }
  7054. });
  7055. }
  7056. }
  7057. });
  7058. $("#input-4").keyup(function() {
  7059. var isLoggedInUser = $("#isLoggedInUser").val();
  7060. var isHomePage = $("#isHomePageCheck").val();
  7061. var regex = new RegExp("^[^^}@#$~`%,.&*!:?;/|=+\"'{<>()]+$");
  7062. $("#promotionForm").find(".form-group:first").removeClass("error");
  7063. $("#promotionForm").find(".form-group:first").find("p.text-error").remove();
  7064. if ($("#passThruFlightSearch").val() || (isHomePage == "true" && isLoggedInUser != "true") || $("#isSecondaryLanding").val()) {
  7065. if (regex.test($("#input-4").val()) == false) {
  7066. $("#promotionForm").find(".form-group:first").addClass("error");
  7067. $("#promotionForm").find(".form-group:first").append('<p class="text-error"><span></span></p></div>');
  7068. $("#promotionForm").find(".form-group:first p.text-error").text(saar5.m.faredeals.enterdigit);
  7069. } else {
  7070. if ($("#input-4").val() === "" || $("#input-4").val() === null) {
  7071. $("#promotionForm").find(".form-group:first").addClass("error");
  7072. $("#promotionForm").find(".form-group:first").append('<p class="text-error"><span></span></p></div>');
  7073. $("#promotionForm").find(".form-group:first p.text-error").text(saar5.m.faredeals.enterpromo);
  7074. } else {
  7075. $("#promotionForm").find(".form-group:first").removeClass("error");
  7076. $("#promotionForm").find(".form-group:first").find("p.text-error").remove();
  7077. }
  7078. }
  7079. } else {
  7080. if ($("#passThruFlightSearch").val() != "true" && isLoggedInUser == "true") {
  7081. if (regex.test($("#input-4").val()) == false) {
  7082. $(".input-addon-1").addClass("error");
  7083. $("p.error").text(saar5.m.faredeals.enterdigit);
  7084. } else {
  7085. if ($("#input-4").val() === "" || $("#input-4").val() === null) {
  7086. $(".input-addon-1").addClass("error");
  7087. $("p.error").text(saar5.m.faredeals.enterpromo);
  7088. } else {
  7089. $(".input-addon-1").removeClass("error");
  7090. $("p.error").text("");
  7091. }
  7092. }
  7093. }
  7094. }
  7095. });
  7096. $("#input-4").focusin(function() {
  7097. $("#errorFSMsg").find(".alert-block").remove();
  7098. $("#errorFSMsg").find("#flightStatusAjaxError").remove();
  7099. $("p.error").find(".alert-block").remove();
  7100. });
  7101. $(".popup__close").click(function() {
  7102. var isLoggedInUser = $("#isLoggedInUser").val();
  7103. $("#errorFSMsg").find("#flightStatusAjaxError").remove();
  7104. $("p.error").find(".alert-block").remove();
  7105. $(".alert-block").remove();
  7106. $(".overlay").addClass("hidden");
  7107. if (isLoggedInUser) {
  7108. $(".popup--promo-code-kf-member").Popup("hide");
  7109. $(".popup--promo").Popup("hide");
  7110. $(".popup--account-alert").Popup("hide").Popup("hide");
  7111. } else {
  7112. $(".popup--promo").Popup("hide");
  7113. }
  7114. $(".popup--account-alert").Popup("hide").Popup("hide");
  7115. });
  7116. $("#fareDealCancel").click(function(e) {
  7117. $(".popup--account-alert").Popup("hide");
  7118. });
  7119.  
  7120. function showPromos() {
  7121. $(".overlay").removeClass("hidden");
  7122. $(".popup--promo").Popup("show").Popup("show");
  7123. $(document).on("keyup", function(evt) {
  7124. if (evt.keyCode == 27) {
  7125. var isLoggedInUser = $("#isLoggedInUser").val();
  7126. $("#errorFSMsg").find("#flightStatusAjaxError").remove();
  7127. $("p.error").find(".alert-block").remove();
  7128. $(".alert-block ").remove();
  7129. if (isLoggedInUser) {
  7130. $(".popup--promo-code-kf-member").Popup("hide");
  7131. $(".popup--promo").Popup("hide");
  7132. $(".overlay").addClass("hidden");
  7133. } else {
  7134. $(".popup--promo").Popup("hide");
  7135. }
  7136. $(".overlay").addClass("hidden");
  7137. }
  7138. });
  7139. $(".overlay").click(function() {
  7140. var isLoggedInUser = $("#isLoggedInUser").val();
  7141. $("#errorFSMsg").find("#flightStatusAjaxError").remove();
  7142. $("p.error").find(".alert-block").remove();
  7143. $(".alert-block ").remove();
  7144. if (isLoggedInUser) {
  7145. $(".popup--promo-code-kf-member").Popup("hide");
  7146. $(".popup--promo").Popup("hide");
  7147. $(".overlay").addClass("hidden");
  7148. } else {
  7149. $(".popup--promo").Popup("hide");
  7150. }
  7151. $(".overlay").addClass("hidden");
  7152. });
  7153. $(".popup--promo").click(function() {
  7154. $(".popup--promo").Popup("hide");
  7155. $(".overlay").addClass("hidden");
  7156. });
  7157. $(".popup--promo-code-kf-member").click(function() {
  7158. $(".popup--promo-code-kf-member").Popup("hide");
  7159. $(".overlay").addClass("hidden");
  7160. });
  7161. }
  7162. $("#kfmanagebooktab").click(function() {
  7163. $("#kfmanagebookingtab").attr("value", "true");
  7164. $("#isloginreq").attr("value", "");
  7165. $("#loginFromHeader").attr("value", "");
  7166. $("#redirectTopage").attr("value", "");
  7167. });
  7168. $("#kfmanagebooktab1").click(function() {
  7169. $("#kfmanagebookingtab").attr("value", "true");
  7170. $("#isloginreq").attr("value", "");
  7171. $("#loginFromHeader").attr("value", "");
  7172. $("#redirectTopage").attr("value", "");
  7173. });
  7174. $("#kfcheckinfromhome").click(function() {
  7175. $("#kfcheckintab").attr("value", "true");
  7176. $("#isloginreq").attr("value", "");
  7177. $("#loginFromHeader").attr("value", "");
  7178. $("#redirectTopage").attr("value", "");
  7179. });
  7180. $("#kfcheckinfromhome1").click(function() {
  7181. $("#kfcheckintab").attr("value", "true");
  7182. $("#isloginreq").attr("value", "");
  7183. $("#loginFromHeader").attr("value", "");
  7184. $("#redirectTopage").attr("value", "");
  7185. });
  7186. var urlkf = String(window.location);
  7187. if ((urlkf.indexOf("validationMsgKey") != -1) || (urlkf.indexOf("messageKey") != -1)) {
  7188. var url = "/booking-flow.form?kferrorclear=true";
  7189. $.ajax({
  7190. url: url,
  7191. type: "GET",
  7192. data: {},
  7193. success: function(data) {}
  7194. });
  7195. }
  7196. $("#promotion-fare-btn").click(function(e) {
  7197. var originData = $('input[name="origin"]').val();
  7198. var destinData = $('input[name="destination"]').val();
  7199. var tripTypeData = $('input[name="tripType"]').val();
  7200. var returnMonthData = $('input[name="returnMonth"]').val();
  7201. var departureMonthData = $('input[name="departureMonth"]').val();
  7202. var cabinClassData = $('input[name="cabinClass"]').val();
  7203. var numOfAdultsData = $('select[name="numOfAdults"]').val();
  7204. var numOfChildrenData = $('select[name="numOfChildren"]').val();
  7205. var numOfInfantsData = $('select[name="numOfInfants"]').val();
  7206. var promotionModeData = $('input[name="promotionMode"]').val();
  7207. $(".grid-col.one-half:nth(1)").removeClass("error");
  7208. $(".grid-col.one-half :first").removeClass("error");
  7209. $(".grid_validate").removeClass("error");
  7210. $(".grid_cabin").find("p.text-error").remove();
  7211. if (((Number($(".adult_count").text()) + Number($(".child_count").text()) + Number($(".infant_count").text())) < Number($("#fareDealMinPax").val()))) {
  7212. $(".grid_validate").addClass("error");
  7213. SIA.preloader.hide();
  7214. $(".grid_cabin").append('<p class="text-error"><span></span></p></div>');
  7215. $(".grid_cabin p.text-error").text(saar5.m.faredeals.validminPax);
  7216. e.preventDefault();
  7217. } else {
  7218. var flag = 1;
  7219. $(".grid-col.one-half:nth(1)").removeClass("error");
  7220. $(".grid-col.one-half :first").removeClass("error");
  7221. if ($('input[name="tripType"]').val() && $('input[name="departureMonth"]').val() && $('input[name="tripType"]').val() == "O") {
  7222. var postData = $("#form-promotion-book-flight").serializeArray();
  7223. var formURL = $("#executionId").val();
  7224. $.ajax({
  7225. url: "/booking-flow.form?",
  7226. type: "POST",
  7227. data: postData,
  7228. success: function(data, textStatus, jqXHR) {
  7229. if (data.indexOf("eventId=kfloginSuccess") === -1) {
  7230. var $response = $(data);
  7231. SIA.preloader.hide();
  7232. if ($response && $response.filter("div#flightScheduleAjaxError") && $response.filter("div#flightScheduleAjaxError").find("p") && $response.filter("div#flightScheduleAjaxError").find("p").text()) {
  7233. var error = $response.filter("div#flightScheduleAjaxError").find("p").text().trim();
  7234. var redirect = $response.filter(".jQajaxRedirect").val();
  7235. }
  7236. if (typeof error !== "undefined") {
  7237. $(".alert-block.error-alert").remove();
  7238. $("h2.kf_error:last").after('<div class="alert-block error-alert"><div class="inner"><div class="alert__icon"><em class="ico-close-round-fill">&nbsp;</em></div><div class="alert__message""><p>' + error + "</p></div></div></div>");
  7239. }
  7240. if (data && data == "kfTierMismatch") {
  7241. SIA.preloader.show();
  7242. $(".popup--login").Popup("hide");
  7243. location.reload();
  7244. } else {
  7245. var formNormaPromotionalFares = $("<form></form>", {
  7246. action: "/booking-flow.form",
  7247. method: "post"
  7248. });
  7249. $("<input>", {
  7250. type: "text",
  7251. name: "origin",
  7252. value: originData
  7253. }).appendTo(formNormaPromotionalFares);
  7254. $("<input>", {
  7255. type: "text",
  7256. name: "destination",
  7257. value: destinData
  7258. }).appendTo(formNormaPromotionalFares);
  7259. $("<input>", {
  7260. type: "text",
  7261. name: "tripType",
  7262. value: tripTypeData
  7263. }).appendTo(formNormaPromotionalFares);
  7264. $("<input>", {
  7265. type: "text",
  7266. name: "returnMonth",
  7267. value: returnMonthData
  7268. }).appendTo(formNormaPromotionalFares);
  7269. $("<input>", {
  7270. type: "text",
  7271. name: "departureMonth",
  7272. value: departureMonthData
  7273. }).appendTo(formNormaPromotionalFares);
  7274. $("<input>", {
  7275. type: "text",
  7276. name: "cabinClass",
  7277. value: cabinClassData
  7278. }).appendTo(formNormaPromotionalFares);
  7279. $("<input>", {
  7280. type: "text",
  7281. name: "numOfAdults",
  7282. value: numOfAdultsData
  7283. }).appendTo(formNormaPromotionalFares);
  7284. $("<input>", {
  7285. type: "text",
  7286. name: "numOfChildren",
  7287. value: numOfChildrenData
  7288. }).appendTo(formNormaPromotionalFares);
  7289. $("<input>", {
  7290. type: "text",
  7291. name: "numOfInfants",
  7292. value: numOfInfantsData
  7293. }).appendTo(formNormaPromotionalFares);
  7294. $("<input>", {
  7295. type: "text",
  7296. name: "promotionMode",
  7297. value: promotionModeData
  7298. }).appendTo(formNormaPromotionalFares);
  7299. formNormaPromotionalFares.appendTo("body").submit();
  7300. }
  7301. }
  7302. },
  7303. error: function(jqXHR, textStatus, errorThrown) {}
  7304. });
  7305. } else {
  7306. if ($('input[name="tripType"]').val() == "O") {
  7307. e.preventDefault();
  7308. $(".grid-col.one-half :first").find("p.text-error").remove();
  7309. $(".grid-col.one-half :first").addClass("error");
  7310. SIA.preloader.hide();
  7311. $(".grid-col.one-half :first").append('<p class="text-error"><span></span></p></div>');
  7312. $(".grid-col.one-half :first p.text-error").text(saar5.m.faredeals.validdate);
  7313. flag = 0;
  7314. }
  7315. }
  7316. if ($('input[name="tripType"]').val() && $('input[name="departureMonth"]').val() && $('input[name="tripType"]').val() == "R") {
  7317. if ($('input[name="returnMonth"]').val()) {
  7318. var postData = $("#form-promotion-book-flight").serializeArray();
  7319. var formURL = $("#executionId").val();
  7320. $.ajax({
  7321. url: "/booking-flow.form?",
  7322. type: "POST",
  7323. data: postData,
  7324. success: function(data, textStatus, jqXHR) {
  7325. if (data.indexOf("eventId=kfloginSuccess") === -1) {
  7326. var $response = $(data);
  7327. SIA.preloader.hide();
  7328. if ($response && $response.filter("div#flightScheduleAjaxError") && $response.filter("div#flightScheduleAjaxError").find("p") && $response.filter("div#flightScheduleAjaxError").find("p").text()) {
  7329. var error = $response.filter("div#flightScheduleAjaxError").find("p").text().trim();
  7330. var redirect = $response.filter(".jQajaxRedirect").val();
  7331. }
  7332. if (typeof error !== "undefined") {
  7333. $(".alert-block.error-alert").remove();
  7334. $("h2.kf_error:last").after('<div class="alert-block error-alert"><div class="inner"><div class="alert__icon"><em class="ico-close-round-fill">&nbsp;</em></div><div class="alert__message""><p>' + error + "</p></div></div></div>");
  7335. }
  7336. if (data && data == "kfTierMismatch") {
  7337. SIA.preloader.show();
  7338. $(".popup--login").Popup("hide");
  7339. location.reload();
  7340. } else {
  7341. var formNormaPromotionalFares = $("<form></form>", {
  7342. action: "/booking-flow.form",
  7343. method: "post"
  7344. });
  7345. $("<input>", {
  7346. type: "text",
  7347. name: "origin",
  7348. value: originData
  7349. }).appendTo(formNormaPromotionalFares);
  7350. $("<input>", {
  7351. type: "text",
  7352. name: "destination",
  7353. value: destinData
  7354. }).appendTo(formNormaPromotionalFares);
  7355. $("<input>", {
  7356. type: "text",
  7357. name: "tripType",
  7358. value: tripTypeData
  7359. }).appendTo(formNormaPromotionalFares);
  7360. $("<input>", {
  7361. type: "text",
  7362. name: "returnMonth",
  7363. value: returnMonthData
  7364. }).appendTo(formNormaPromotionalFares);
  7365. $("<input>", {
  7366. type: "text",
  7367. name: "departureMonth",
  7368. value: departureMonthData
  7369. }).appendTo(formNormaPromotionalFares);
  7370. $("<input>", {
  7371. type: "text",
  7372. name: "cabinClass",
  7373. value: cabinClassData
  7374. }).appendTo(formNormaPromotionalFares);
  7375. $("<input>", {
  7376. type: "text",
  7377. name: "numOfAdults",
  7378. value: numOfAdultsData
  7379. }).appendTo(formNormaPromotionalFares);
  7380. $("<input>", {
  7381. type: "text",
  7382. name: "numOfChildren",
  7383. value: numOfChildrenData
  7384. }).appendTo(formNormaPromotionalFares);
  7385. $("<input>", {
  7386. type: "text",
  7387. name: "numOfInfants",
  7388. value: numOfInfantsData
  7389. }).appendTo(formNormaPromotionalFares);
  7390. $("<input>", {
  7391. type: "text",
  7392. name: "promotionMode",
  7393. value: promotionModeData
  7394. }).appendTo(formNormaPromotionalFares);
  7395. formNormaPromotionalFares.appendTo("body").submit();
  7396. }
  7397. }
  7398. },
  7399. error: function(jqXHR, textStatus, errorThrown) {}
  7400. });
  7401. } else {
  7402. if ($('input[name="tripType"]').val() == "R") {
  7403. e.preventDefault();
  7404. $(".grid-col.one-half :first").find("p.text-error").remove();
  7405. $(".grid-col.one-half:nth(1)").addClass("error");
  7406. SIA.preloader.hide();
  7407. $(".grid-col.one-half :first").append('<p class="text-error"><span></span></p></div>');
  7408. $(".grid-col.one-half :first p.text-error").text(saar5.m.faredeals.validdate);
  7409. flag = 0;
  7410. }
  7411. }
  7412. } else {
  7413. if ($('input[name="tripType"]').val() == "R" && flag == 1) {
  7414. e.preventDefault();
  7415. $(".grid-col.one-half :first").find("p.text-error").remove();
  7416. $(".grid-col.one-half :first").addClass("error");
  7417. SIA.preloader.hide();
  7418. $(".grid-col.one-half :first").append('<p class="text-error"><span></span></p></div>');
  7419. $(".grid-col.one-half :first p.text-error").text(saar5.m.faredeals.validdate);
  7420. }
  7421. }
  7422. }
  7423. e.preventDefault();
  7424. });
  7425. $("#regularSearch").click(function(e) {
  7426. $(".grid_cabin").find("p.text-error").remove();
  7427. $(".grid_validate").removeClass("error");
  7428. $(".grid_cabin").find("p.text-error").remove();
  7429. e.preventDefault();
  7430. var originData = $('input[name="origin"]').val();
  7431. var destinData = $('input[name="destination"]').val();
  7432. var tripTypeData = $('input[name="tripType"]').val();
  7433. var returnMonthData = $('input[name="returnMonth"]').val();
  7434. var departureMonthData = $('input[name="departureMonth"]').val();
  7435. var formAction = $("#formAction").val();
  7436. var cabinClassData = $('input[name="cabinClass"]').val();
  7437. var _tripTypeData = $('input[name="_tripType"]').val();
  7438. var numOfAdultsData = $('select[name="numOfAdults"]').val();
  7439. var numOfChildrenData = $('select[name="numOfChildren"]').val();
  7440. var numOfInfantsData = $('select[name="numOfInfants"]').val();
  7441. $("#city-radio-4").click(function(e) {
  7442. $("#city-one-way-1 :input").removeAttr("disabled");
  7443. });
  7444. var formSearchForRegularFares = $("<form></form>", {
  7445. action: "/booking-flow.form",
  7446. method: "post"
  7447. });
  7448. $("<input>", {
  7449. type: "text",
  7450. name: "origin",
  7451. value: originData
  7452. }).appendTo(formSearchForRegularFares);
  7453. $("<input>", {
  7454. type: "text",
  7455. name: "destination",
  7456. value: destinData
  7457. }).appendTo(formSearchForRegularFares);
  7458. $("<input>", {
  7459. type: "text",
  7460. name: "tripType",
  7461. value: tripTypeData
  7462. }).appendTo(formSearchForRegularFares);
  7463. $("<input>", {
  7464. type: "text",
  7465. name: "returnMonth",
  7466. value: returnMonthData
  7467. }).appendTo(formSearchForRegularFares);
  7468. $("<input>", {
  7469. type: "text",
  7470. name: "departureMonth",
  7471. value: departureMonthData
  7472. }).appendTo(formSearchForRegularFares);
  7473. $("<input>", {
  7474. type: "text",
  7475. name: "cabinClass",
  7476. value: cabinClassData
  7477. }).appendTo(formSearchForRegularFares);
  7478. $("<input>", {
  7479. type: "text",
  7480. name: "_tripType",
  7481. value: _tripTypeData
  7482. }).appendTo(formSearchForRegularFares);
  7483. $("<input>", {
  7484. type: "text",
  7485. name: "numOfAdults",
  7486. value: numOfAdultsData
  7487. }).appendTo(formSearchForRegularFares);
  7488. $("<input>", {
  7489. type: "text",
  7490. name: "numOfChildren",
  7491. value: numOfChildrenData
  7492. }).appendTo(formSearchForRegularFares);
  7493. $("<input>", {
  7494. type: "text",
  7495. name: "numOfInfants",
  7496. value: numOfInfantsData
  7497. }).appendTo(formSearchForRegularFares);
  7498. $("<input>", {
  7499. type: "text",
  7500. name: "fromHomePage",
  7501. value: "true"
  7502. }).appendTo(formSearchForRegularFares);
  7503. $("<input>", {
  7504. type: "text",
  7505. name: "searchForRegularFares",
  7506. value: "doSearch"
  7507. }).appendTo(formSearchForRegularFares);
  7508. var flag = 1;
  7509. $(".grid-col.one-half:nth(1)").removeClass("error");
  7510. $(".grid-col.one-half :first").removeClass("error");
  7511. if ($('input[name="tripType"]').val() && $('input[name="departureMonth"]').val() && $('input[name="tripType"]').val() == "O") {
  7512. formSearchForRegularFares.appendTo("body").submit();
  7513. } else {
  7514. if ($('input[name="tripType"]').val() == "O") {
  7515. $(".grid-col.one-half :first").find("p.text-error").remove();
  7516. SIA.preloader.hide();
  7517. $(".grid-col.one-half :first").addClass("error");
  7518. $(".grid-col.one-half :first").append('<p class="text-error"><span></span></p></div>');
  7519. $(".grid-col.one-half :first p.text-error").text(saar5.m.faredeals.validdate);
  7520. flag = 0;
  7521. }
  7522. }
  7523. if ($('input[name="tripType"]').val() && $('input[name="departureMonth"]').val() && $('input[name="tripType"]').val() == "R") {
  7524. if ($('input[name="returnMonth"]').val()) {
  7525. formSearchForRegularFares.appendTo("body").submit();
  7526. } else {
  7527. if ($('input[name="tripType"]').val() == "R") {
  7528. $(".grid-col.one-half :first").find("p.text-error").remove();
  7529. SIA.preloader.hide();
  7530. $(".grid-col.one-half:nth(1)").addClass("error");
  7531. $(".grid-col.one-half :first").append('<p class="text-error"><span></span></p></div>');
  7532. $(".grid-col.one-half :first p.text-error").text(saar5.m.faredeals.validdate);
  7533. flag = 0;
  7534. }
  7535. }
  7536. } else {
  7537. if ($('input[name="tripType"]').val() == "R" && flag == 1) {
  7538. $(".grid-col.one-half :first").find("p.text-error").remove();
  7539. SIA.preloader.hide();
  7540. $(".grid-col.one-half :first").addClass("error");
  7541. $(".grid-col.one-half :first").append('<p class="text-error"><span></span></p></div>');
  7542. $(".grid-col.one-half :first p.text-error").text(saar5.m.faredeals.validdate);
  7543. }
  7544. }
  7545. });
  7546. $("#loginForPromoCode").click(function(e) {
  7547. $(".grid-col.one-half :first").find("p.text-error").remove();
  7548. $(".grid_cabin").find("p.text-error").remove();
  7549. if (((Number($(".adult_count").text()) + Number($(".child_count").text()) + Number($(".infant_count").text())) < Number($("#fareDealMinPax").val()))) {
  7550. $(".grid_validate").addClass("error");
  7551. $(".grid_cabin").append('<p class="text-error"><span></span></p></div>');
  7552. $(".grid_cabin p.text-error").text(saar5.m.faredeals.validminPax);
  7553. e.preventDefault();
  7554. } else {
  7555. $(".grid_validate").removeClass("error");
  7556. $(".grid_cabin").find("p.text-error").remove();
  7557. var flag = 1;
  7558. $(".grid-col.one-half:nth(1)").removeClass("error");
  7559. $(".grid-col.one-half :first").removeClass("error");
  7560. if ($('input[name="tripType"]').val() && $('input[name="departureMonth"]').val() && $('input[name="tripType"]').val() == "O") {
  7561. showPromos();
  7562. e.preventDefault();
  7563. } else {
  7564. if ($('input[name="tripType"]').val() == "O") {
  7565. e.preventDefault();
  7566. $(".grid-col.one-half :first").find("p.text-error").remove();
  7567. $(".grid-col.one-half :first").addClass("error");
  7568. $(".grid-col.one-half :first").append('<p class="text-error"><span></span></p></div>');
  7569. $(".grid-col.one-half :first p.text-error").text(saar5.m.faredeals.validdate);
  7570. flag = 0;
  7571. }
  7572. }
  7573. if ($('input[name="tripType"]').val() && $('input[name="departureMonth"]').val() && $('input[name="tripType"]').val() == "R") {
  7574. if ($('input[name="returnMonth"]').val()) {
  7575. showPromos();
  7576. e.preventDefault();
  7577. } else {
  7578. if ($('input[name="tripType"]').val() == "R") {
  7579. e.preventDefault();
  7580. $(".grid-col.one-half :first").find("p.text-error").remove();
  7581. $(".grid-col.one-half:nth(1)").addClass("error");
  7582. $(".grid-col.one-half :first").append('<p class="text-error"><span></span></p></div>');
  7583. $(".grid-col.one-half :first p.text-error").text(saar5.m.faredeals.validdate);
  7584. flag = 0;
  7585. }
  7586. }
  7587. } else {
  7588. if ($('input[name="tripType"]').val() == "R" && flag == 1) {
  7589. e.preventDefault();
  7590. $(".grid-col.one-half :first").find("p.text-error").remove();
  7591. $(".grid-col.one-half :first").addClass("error");
  7592. $(".grid-col.one-half :first").append('<p class="text-error"><span></span></p></div>');
  7593. $(".grid-col.one-half :first p.text-error").text(saar5.m.faredeals.validdate);
  7594. }
  7595. }
  7596. }
  7597. });
  7598. $("#loginForPromoORB").click(function(e) {
  7599. var validateFlag = 0;
  7600. $(".grid-col.one-half :first").find("p.text-error").remove();
  7601. $(".grid_cabin").find("p.text-error").remove();
  7602. var flag = 1;
  7603. $(".grid-col.one-half:nth(1)").removeClass("error");
  7604. $(".grid-col.one-half :first").removeClass("error");
  7605. if ($('input[name="tripType"]').val() && $('input[name="departureMonth"]').val() && $('input[name="tripType"]').val() == "O") {
  7606. validateFlag++;
  7607. e.preventDefault();
  7608. } else {
  7609. if ($('input[name="tripType"]').val() == "O") {
  7610. $(".grid-col.one-half :first").find("p.text-error").remove();
  7611. SIA.preloader.hide();
  7612. $(".grid-col.one-half :first").addClass("error");
  7613. $(".grid-col.one-half :first").append('<p class="text-error"><span></span></p></div>');
  7614. $(".grid-col.one-half :first p.text-error").text(saar5.m.faredeals.validdate);
  7615. flag = 0;
  7616. e.preventDefault();
  7617. }
  7618. }
  7619. if ($('input[name="tripType"]').val() && $('input[name="departureMonth"]').val() && $('input[name="tripType"]').val() == "R") {
  7620. if ($('input[name="returnMonth"]').val()) {
  7621. validateFlag++;
  7622. e.preventDefault();
  7623. } else {
  7624. if ($('input[name="tripType"]').val() == "R") {
  7625. $(".grid-col.one-half :first").find("p.text-error").remove();
  7626. SIA.preloader.hide();
  7627. $(".grid-col.one-half:nth(1)").addClass("error");
  7628. $(".grid-col.one-half :first").append('<p class="text-error"><span></span></p></div>');
  7629. $(".grid-col.one-half :first p.text-error").text(saar5.m.faredeals.validdate);
  7630. flag = 0;
  7631. e.preventDefault();
  7632. }
  7633. }
  7634. } else {
  7635. if ($('input[name="tripType"]').val() == "R" && flag == 1) {
  7636. $(".grid-col.one-half :first").find("p.text-error").remove();
  7637. SIA.preloader.hide();
  7638. $(".grid-col.one-half :first").addClass("error");
  7639. $(".grid-col.one-half :first").append('<p class="text-error"><span></span></p></div>');
  7640. $(".grid-col.one-half :first p.text-error").text(saar5.m.faredeals.validdate);
  7641. e.preventDefault();
  7642. }
  7643. }
  7644. if (((Number($(".adult_count").text()) + Number($(".child_count").text()) + Number($(".infant_count").text())) < Number($("#fareDealMinPax").val()))) {
  7645. SIA.preloader.hide();
  7646. $(".grid_validate").addClass("error");
  7647. $(".grid_cabin").append('<p class="text-error"><span></span></p></div>');
  7648. $(".grid_cabin p.text-error").text(saar5.m.faredeals.validminPax);
  7649. e.preventDefault();
  7650. } else {
  7651. validateFlag++;
  7652. }
  7653. if (validateFlag >= 2) {
  7654. $(".grid_validate").removeClass("error");
  7655. $(".grid_cabin").find("p.text-error").remove();
  7656. var postData = $("#form-promotion-book-flight").serializeArray();
  7657. var formURL = $("#form-promotion-book-flight").attr("action");
  7658. $.ajax({
  7659. url: formURL,
  7660. type: "POST",
  7661. data: postData,
  7662. success: function(data, textStatus, jqXHR) {
  7663. SIA.preloader.hide();
  7664. if (data.indexOf("eventId=loginSuccess") === -1) {
  7665. var $response = $(data);
  7666. if ($response && $response.filter("div#container") && $response.filter("div#container").find("div.main-inner div#fareDealsAjaxError") && $response.filter("div#container").find("div.main-inner div#fareDealsAjaxError").find("p") && $response.filter("div#container").find("div.main-inner div#fareDealsAjaxError").find("p").text()) {
  7667. var error = $response.filter("div#container").find("div.main-inner div#fareDealsAjaxError").find("aside");
  7668. }
  7669. }
  7670. if (typeof error !== "undefined") {
  7671. var fareDealAlert = error;
  7672. fareDealAlert.find("#fareDealCancel").click(function(e) {
  7673. fareDealAlert.Popup("hide");
  7674. });
  7675. fareDealAlert.find(".popup__close").click(function(e) {
  7676. fareDealAlert.Popup("hide");
  7677. });
  7678. error.Popup("show").Popup("show");
  7679. } else {
  7680. $("#showMessage").find("p").remove();
  7681. $("#loginFromHeader").val("");
  7682. $("#executionId").val(data.trim());
  7683. var menuBar = $(".menu-bar");
  7684. var triggerLoginPoup = menuBar.find("ul a.login");
  7685. triggerLoginPoup.trigger("click.showLoginPopup");
  7686. $("#showMessage").append("<p>" + saar5.m.promotions.login + "</p>");
  7687. }
  7688. },
  7689. error: function(jqXHR, textStatus, errorThrown) {}
  7690. });
  7691. e.preventDefault();
  7692. }
  7693. });
  7694. var renderSearchSuggestions;
  7695. $("#hideErrorMsg").click(function(e) {
  7696. $("#jQerrorLightbox").hide();
  7697. });
  7698. var popupSqlogout = $("#sqloqout");
  7699. var popupsqlog = $("#sqlogoutpopup");
  7700. popupsqlog.Popup({
  7701. overlayBGTemplate: '<div class="overlay"></div>',
  7702. modalShowClass: "",
  7703. triggerCloseModal: ".popup__close, .btn-back-booking",
  7704. afterShow: function() {},
  7705. closeViaOverlay: false
  7706. });
  7707. popupSqlogout.off("click.showSqlogoutPopup").on("click.showSqlogoutPopup", function(e) {
  7708. e.preventDefault();
  7709. popupsqlog.Popup("show");
  7710. });
  7711. $.fn.digits = function() {
  7712. return this.each(function() {
  7713. $(this).text($(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"));
  7714. });
  7715. };
  7716. $("h3#kfmilesdig").digits();
  7717. $(function popupCheck() {
  7718. if ($("#fromCheckAvailPopup").val()) {
  7719. $(".popup--check-available").find(".popup__close").click(function() {
  7720. $(".popup--check-available").Popup("hide").Popup("hide");
  7721. $(".overlay").addClass("hidden");
  7722. });
  7723. $(".overlay").click(function() {
  7724. $(".popup--check-available").Popup("hide");
  7725. $(".overlay").addClass("hidden");
  7726. });
  7727. $(".popup--check-available").click(function() {
  7728. $(".popup--check-available").Popup("hide");
  7729. $(".overlay").addClass("hidden");
  7730. });
  7731. $(document).on("keyup", function(evt) {
  7732. if (evt.keyCode == 27) {
  7733. $(".popup--check-available").Popup("hide");
  7734. $(".overlay").addClass("hidden");
  7735. }
  7736. });
  7737. $(".overlay").removeClass("hidden");
  7738. $(".popup--check-available").Popup("show").Popup("show");
  7739. }
  7740. });
  7741. $("#btn-search-fl-1").click(function(e) {
  7742. $(".search-flight-2:last").find("li:first").find("li.search-fl-city-4").removeClass("error");
  7743. $(".search-flight-1:last").find("li:first").find("li.search-fl-city-2").removeClass("error");
  7744. $(".search-flight-2:last").find("li:first").find("li.search-fl-city-3").removeClass("error");
  7745. $(".search-flight-1:last").find("li:first").find("li.search-fl-city-1").removeClass("error");
  7746. $(".search-flight-1:last").find("li:first").removeClass("error");
  7747. $(".search-flight-1:last").find("li:first").find("p.text-error").remove();
  7748. $(".search-flight-2:last").find("li:first").removeClass("error");
  7749. $(".search-flight-2:last").find("li:first").find("p.text-error").remove();
  7750. $(".search-flight-1:last").find("ul:first").find("li:last").removeClass("error");
  7751. $(".search-flight-1:last").find("ul:first").find("li:last").find("p.text-error").remove();
  7752. $(".search-flight-2:last").find("ul:first").find("li:last").removeClass("error");
  7753. $(".search-flight-2:last").find("ul:first").find("li:last").find("p.text-error").remove();
  7754. if ($("#search-fl-city-3").val() && $("#search-fl-city-4").val() && ($("#search-fl-city-3").val().trim()) == ($("#search-fl-city-4").val().trim())) {
  7755. e.preventDefault();
  7756. SIA.preloader.hide();
  7757. $(".search-flight-2:last").find("li:first").addClass("error");
  7758. $(".search-flight-2:last").find("li:first").append('<p class="text-error"><span></span></p></div>');
  7759. $(".search-flight-2:last li:first p.text-error").text(saar5.m.flightschedule.odsame);
  7760. $(".search-flight-1:last").find("li:first").addClass("error");
  7761. $(".search-flight-1:last").find("li:first").append('<p class="text-error"><span></span></p></div>');
  7762. $(".search-flight-1:last li:first p.text-error").text(saar5.m.flightschedule.odsame);
  7763. }
  7764. if (!($("#search-fl-city-3").val())) {
  7765. e.preventDefault();
  7766. SIA.preloader.hide();
  7767. $(".search-flight-2:last").find("li:first").find("li.search-fl-city-3").addClass("error");
  7768. $(".search-flight-2:last").find("li:first").find("li.search-fl-city-3").append('<p class="text-error"><span></span></p></div>');
  7769. $(".search-flight-2:last li:first li.search-fl-city-3 p.text-error").text(saar5.m.flightschedule.cityselect);
  7770. $(".search-flight-1:last").find("li:first").find("li.search-fl-city-1").addClass("error");
  7771. $(".search-flight-1:last").find("li:first").find("li.search-fl-city-1").append('<p class="text-error"><span></span></p></div>');
  7772. $(".search-flight-1:last li:first li.search-fl-city-1 p.text-error").text(saar5.m.flightschedule.cityselect);
  7773. }
  7774. if (!($("#search-fl-city-4").val())) {
  7775. e.preventDefault();
  7776. SIA.preloader.hide();
  7777. $(".search-flight-2:last").find("li:first").find("li.search-fl-city-4").addClass("error");
  7778. $(".search-flight-2:last").find("li:first").find("li.search-fl-city-4").append('<p class="text-error"><span></span></p></div>');
  7779. $(".search-flight-2:last li:first li.search-fl-city-4 p.text-error").text(saar5.m.flightschedule.cityselect);
  7780. $(".search-flight-1:last").find("li:first").find("li.search-fl-city-2").addClass("error");
  7781. $(".search-flight-1:last").find("li:first").find("li.search-fl-city-2").append('<p class="text-error"><span></span></p></div>');
  7782. $(".search-flight-1:last li:first li.search-fl-city-2 p.text-error").text(saar5.m.flightschedule.cityselect);
  7783. }
  7784. if (($("#search-fl-city-3").val()) && ($("#search-fl-city-4").val())) {
  7785. if ((($("#rdo-search-fl-return-1").is(":checked"))) || (($("#rdo-search-fl-return-2").is(":checked")))) {
  7786. $("#search-fl-city-2").removeAttr("name");
  7787. $("#search-fl-city-4").removeAttr("name");
  7788. }
  7789. }
  7790. if (($("#rdo-search-fl-return-1").is(":checked"))) {
  7791. $("#select-date-3").removeAttr("name");
  7792. }
  7793. });
  7794. $("#btn-search-fl-2").click(function(e) {
  7795. $(".search-flight-2:last").find("li:first").find("li.search-fl-city-4").removeClass("error");
  7796. $(".search-flight-1:last").find("li:first").find("li.search-fl-city-2").removeClass("error");
  7797. $(".search-flight-2:last").find("li:first").find("li.search-fl-city-3").removeClass("error");
  7798. $(".search-flight-1:last").find("li:first").find("li.search-fl-city-1").removeClass("error");
  7799. $(".search-flight-1:last").find("li:first").removeClass("error");
  7800. $(".search-flight-1:last").find("li:first").find("p.text-error").remove();
  7801. $(".search-flight-2:last").find("li:first").removeClass("error");
  7802. $(".search-flight-2:last").find("li:first").find("p.text-error").remove();
  7803. $(".search-flight-1:last").find("ul:first").find("li:last").removeClass("error");
  7804. $(".search-flight-1:last").find("ul:first").find("li:last").find("p.text-error").remove();
  7805. $(".search-flight-2:last").find("ul:first").find("li:last").removeClass("error");
  7806. $(".search-flight-2:last").find("ul:first").find("li:last").find("p.text-error").remove();
  7807. if ($("#search-fl-city-3").val() && $("#search-fl-city-4").val() && ($("#search-fl-city-3").val().trim()) == ($("#search-fl-city-4").val().trim())) {
  7808. e.preventDefault();
  7809. SIA.preloader.hide();
  7810. $(".search-flight-2:last").find("li:first").addClass("error");
  7811. $(".search-flight-2:last").find("li:first").append('<p class="text-error"><span></span></p></div>');
  7812. $(".search-flight-2:last li:first p.text-error").text(saar5.m.flightschedule.odsame);
  7813. $(".search-flight-1:last").find("li:first").addClass("error");
  7814. $(".search-flight-1:last").find("li:first").append('<p class="text-error"><span></span></p></div>');
  7815. $(".search-flight-1:last li:first p.text-error").text(saar5.m.flightschedule.odsame);
  7816. }
  7817. if (!($("#search-fl-city-3").val())) {
  7818. e.preventDefault();
  7819. SIA.preloader.hide();
  7820. $(".search-flight-2:last").find("li:first").find("li.search-fl-city-3").addClass("error");
  7821. $(".search-flight-2:last").find("li:first").find("li.search-fl-city-3").append('<p class="text-error"><span></span></p></div>');
  7822. $(".search-flight-2:last li:first li.search-fl-city-3 p.text-error").text(saar5.m.flightschedule.cityselect);
  7823. $(".search-flight-1:last").find("li:first").find("li.search-fl-city-1").addClass("error");
  7824. $(".search-flight-1:last").find("li:first").find("li.search-fl-city-1").append('<p class="text-error"><span></span></p></div>');
  7825. $(".search-flight-1:last li:first li.search-fl-city-1 p.text-error").text(saar5.m.flightschedule.cityselect);
  7826. }
  7827. if (!($("#search-fl-city-4").val())) {
  7828. e.preventDefault();
  7829. SIA.preloader.hide();
  7830. $(".search-flight-2:last").find("li:first").find("li.search-fl-city-4").addClass("error");
  7831. $(".search-flight-2:last").find("li:first").find("li.search-fl-city-4").append('<p class="text-error"><span></span></p></div>');
  7832. $(".search-flight-2:last li:first li.search-fl-city-4 p.text-error").text(saar5.m.flightschedule.cityselect);
  7833. $(".search-flight-1:last").find("li:first").find("li.search-fl-city-2").addClass("error");
  7834. $(".search-flight-1:last").find("li:first").find("li.search-fl-city-2").append('<p class="text-error"><span></span></p></div>');
  7835. $(".search-flight-1:last li:first li.search-fl-city-2 p.text-error").text(saar5.m.flightschedule.cityselect);
  7836. }
  7837. if (($("#search-fl-city-3").val()) && ($("#search-fl-city-4").val())) {
  7838. if ((($("#rdo-search-fl-return-1").is(":checked"))) || (($("#rdo-search-fl-return-2").is(":checked")))) {
  7839. $("#search-fl-city-2").removeAttr("name");
  7840. $("#search-fl-city-4").removeAttr("name");
  7841. }
  7842. }
  7843. if (($("#rdo-search-fl-return-2").is(":checked"))) {
  7844. $("#select-date-1").removeAttr("name");
  7845. $("#select-date-2").removeAttr("name");
  7846. }
  7847. });
  7848. $(".pax").change(function() {
  7849. $(".grid_validate").removeClass("error");
  7850. $(".grid_cabin").removeClass("error");
  7851. $(".grid_cabin").find("p.text-error").remove();
  7852. });
  7853. if ($("#showDownTimeAlert").val()) {
  7854. var popupOffline = $(".popup-showDownTimeAlert");
  7855. var win = SIA.global.vars.win;
  7856. var flyingFocus = $("#flying-focus");
  7857. popupOffline.Popup({
  7858. overlayBGTemplate: SIA.global.config.template.overlay,
  7859. modalShowClass: "",
  7860. afterShow: function() {
  7861. flyingFocus = $("#flying-focus");
  7862. if (flyingFocus.length) {
  7863. flyingFocus.remove();
  7864. }
  7865. },
  7866. afterHide: function() {
  7867. win.trigger("resize.resetTabMenu");
  7868. },
  7869. triggerCloseModal: ".popup__close"
  7870. });
  7871. popupOffline.Popup("show");
  7872. $("#removeFromSession").html($('<%request.getSession().removeAttribute("showAlert");%>'));
  7873. }
  7874. }(jQuery, window));
  7875. $(window).bind("load", function() {
  7876. var url = String(window.location);
  7877. var popupPromo = $(".popup--promo");
  7878. var url = String(window.location);
  7879. if (url.indexOf("#promocode") != -1) {
  7880. popupPromo.Popup("show");
  7881. var a = url.split("#promocode=");
  7882. $("#input-4").val(decodeURIComponent(a[1]));
  7883. }
  7884. });
  7885. var clock;
  7886. var sia = sia || {};
  7887. (function(sessionTimer, $) {
  7888. var timer, count = 0,
  7889. counterLogic, secondsToCount, renewMethod, userRenew, autoRenew, pageData, timerShouldStart, confirmResponse, expiredResponse, renewAction, autorenewCount = 0,
  7890. userrenewCount = 0,
  7891. reqAjaxData = {},
  7892. JSONURL = "/extendERetailSession.form",
  7893. OPTION = "extendSession",
  7894. ONPAGEDATASTOREID = "#sessionTimerSeconds",
  7895. EXPIREDSTRING_HOME = saar5.l.sessionexpiry.expiredstring;
  7896. CONFIRMSTRING = saar5.l.sessionexpiry.confirmstring, EXTENDSTRING = saar5.l.sessionexpiry.extendstring;
  7897. var renewHome, redirectHome, deaultTimeout = 1020000,
  7898. hrClock, JSONWEBURL = "extendHome.form";
  7899. var CONFIRMMSG = saar5.l.sessionexpiry.confirmmsg,
  7900. EXIPRYMSG = saar5.l.sessionexpiry.extendstring;
  7901. var pageInterval = 0;
  7902. try {
  7903. pageInterval = (parseInt(maxInactive) - parseInt(alertInterval)) * 1000;
  7904. } catch (err) {
  7905. pageInterval = deaultTimeout;
  7906. }
  7907. sessionTimer.init = function() {
  7908. if (timerShouldStart()) {
  7909. if (pageData()) {
  7910. if (reqAjaxData.isLastRenewal !== "true") {
  7911. clock = setInterval(counterLogic, 1000);
  7912. } else {}
  7913. }
  7914. }
  7915. try {
  7916. if (isHandleSession != undefined && isHandleSession) {
  7917. if (pageInterval != undefined && pageInterval != 0) {
  7918. hrClock = setInterval(renewHome, pageInterval);
  7919. }
  7920. }
  7921. } catch (err) {}
  7922. };
  7923. renewHome = function() {
  7924. var startTime = new Date().getTime();
  7925. clearInterval(hrClock);
  7926. alert(CONFIRMMSG);
  7927. var endTime = new Date().getTime();
  7928. if ((endTime - startTime) < 180000) {
  7929. $.ajax({
  7930. url: JSONWEBURL,
  7931. dataType: "text",
  7932. success: function(data) {
  7933. hrClock = setInterval(renewHome, pageInterval);
  7934. },
  7935. error: function(error) {
  7936. redirectHome();
  7937. }
  7938. });
  7939. } else {
  7940. redirectHome();
  7941. }
  7942. };
  7943.  
  7944. function redirectHome() {
  7945. dataLayer.push({
  7946. "timeOutURL": formattedPageName,
  7947. "event": "timeout"
  7948. });
  7949. alert(EXIPRYMSG);
  7950. document.location.href = "/";
  7951. }
  7952.  
  7953. function timerShouldStart() {
  7954. if ($(ONPAGEDATASTOREID).length > 0) {
  7955. return true;
  7956. }
  7957. }
  7958. pageData = function() {
  7959. var pageValueArray = $(ONPAGEDATASTOREID).attr("value").split("|");
  7960. if (pageValueArray.length > 1) {
  7961. secondsToCount = parseInt(pageValueArray[0], 10);
  7962. renewMethod = $(ONPAGEDATASTOREID).attr("class");
  7963. reqAjaxData = {
  7964. "option": OPTION,
  7965. "pageType": pageValueArray[1],
  7966. "counterIndex": parseInt(pageValueArray[2], 10),
  7967. "isLastRenewal": pageValueArray[3]
  7968. };
  7969. return true;
  7970. } else {
  7971. return false;
  7972. }
  7973. };
  7974. counterLogic = function() {
  7975. count += 1;
  7976. if ((count === secondsToCount) && (renewMethod === "autoRenew")) {
  7977. if (autorenewCount === 0) {
  7978. autorenewCount = 1;
  7979. autoRenew();
  7980. } else {
  7981. if (userrenewCount < 3) {
  7982. userrenewCount = userrenewCount + 1;
  7983. userRenew();
  7984. } else {
  7985. expiredResponse = confirm(EXPIREDSTRING_HOME);
  7986. if (expiredResponse === true) {
  7987. document.location.href = "/";
  7988. } else {
  7989. document.location.href = "/";
  7990. }
  7991. }
  7992. }
  7993. } else {
  7994. if ((count === secondsToCount) && (renewMethod === "userRenew")) {
  7995. userRenew();
  7996. }
  7997. }
  7998. };
  7999.  
  8000. function autoRenew() {
  8001. $.ajax({
  8002. url: JSONURL,
  8003. dataType: "json",
  8004. data: reqAjaxData,
  8005. success: function(data) {
  8006. renewAction(data);
  8007. },
  8008. error: function(error) {}
  8009. });
  8010. }
  8011.  
  8012. function userRenew() {
  8013. var actualDate = new Date();
  8014. var expireTime = new Date(actualDate.getTime() + 60000);
  8015. confirmResponse = confirm(CONFIRMSTRING + " " + expireTime.toLocaleTimeString() + "." + "\n" + EXTENDSTRING);
  8016. if (confirmResponse === true) {
  8017. autoRenew();
  8018. } else {
  8019. if (confirmResponse === false) {
  8020. clearInterval(clock);
  8021. if (corpLogin != undefined && corpLogin === true) {
  8022. document.location.href = "/corporateBooking-flow.form";
  8023. }
  8024. }
  8025. }
  8026. }
  8027.  
  8028. function renewAction(data) {
  8029. if (data.isLastRenewal === "true") {
  8030. clearInterval(clock);
  8031. } else {
  8032. if (data.isRedirect === "true") {
  8033. clearInterval(clock);
  8034. dataLayer.push({
  8035. "timeOutURL": formattedPageName,
  8036. "event": "timeout"
  8037. });
  8038. expiredResponse = confirm(EXPIREDSTRING_HOME);
  8039. if (expiredResponse === true) {
  8040. document.location.href = "/";
  8041. } else {
  8042. document.location.href = "/";
  8043. }
  8044. } else {
  8045. count = 0;
  8046. if (reqAjaxData.pageType === "postPnr") {
  8047. reqAjaxData.counterIndex = reqAjaxData.counterIndex + 1;
  8048. }
  8049. secondsToCount = data.sessionSecondsRenew;
  8050. clearInterval(clock);
  8051. clock = setInterval(counterLogic, 1000);
  8052. }
  8053. }
  8054. }
  8055. }(sia.sessionTimer, jQuery));
  8056. $(function() {
  8057. sia.sessionTimer.init();
  8058. });
Add Comment
Please, Sign In to add comment