Your cart is empty.
\r\nGlobal Modal
',\r\n\t\t},\r\n\r\n\t\tremoveFromCartModal: {\r\n\t\t\tshow: false,\r\n\t\t\thideHeader: true,\r\n\t\t\tid: 'removeFromCartModal',\r\n\t\t\tloading: false,\r\n\t\t},\r\n\r\n\t\tproductToRemove: {},\r\n\r\n\t\tdiscount: {\r\n\t\t\tvalue: '',\r\n\t\t\tmessage: '',\r\n\t\t\terror: '',\r\n\t\t\tajaxing: false,\r\n\t\t},\r\n\r\n\t\tactiveProductIds: {\r\n\t\t\tid: null,\r\n\t\t\tproductType: null,\r\n\t\t},\r\n\t\tupdateOrderManagement: {\r\n\t\t\ttimer: null,\r\n\t\t\tajax: null,\r\n\t\t},\r\n\t\torder: {},\r\n\t\tclient: {},\r\n\t\tclientOriginal: {},\r\n\t\tagentKey: null,\r\n\r\n\t\t// environment:\r\n\t\t// document.domain == \"localhost\" ? \"environment_dev\" : \"environment_live\",\r\n\t\t//clientLocationKey: 1, // this is now being passed in the URI\r\n\t\t//imagePath:\r\n\t\t// document.domain == \"localhost\"\r\n\t\t// ? \"http://localhost:8080/static/img\"\r\n\t\t// : \"/assets/static/img\",\r\n\r\n\t\tenvironment: document.domain === 'localhost' ? 'development' : false,\r\n\r\n\t\tserverPath: window.serverPath,\r\n\r\n\t\tcurrentAjaxCall: null,\r\n\t},\r\n\r\n\t// like computed state properties\r\n\tgetters: {\r\n\t\tclientAgentKey: function(state) {\r\n\t\t\treturn state.agentKey;\r\n\t\t},\r\n\t\t// used for Sojern when completing a conversion\r\n\t\tsimpleProducts: function(state) {\r\n\t\t\tif (state.order && state.order.OrderKey) {\r\n\t\t\t\tlet combinedProducts = [\r\n\t\t\t\t\t...state.order.Individual,\r\n\t\t\t\t\t...state.order.Packages,\r\n\t\t\t\t\t//...state.order.GiftCards\r\n\t\t\t\t];\r\n\r\n\t\t\t\tlet products = [];\r\n\r\n\t\t\t\tcombinedProducts.forEach((row) => {\r\n\t\t\t\t\tlet departureDate = false;\r\n\t\t\t\t\tlet returnDate = false;\r\n\t\t\t\t\tlet totalParticipants = 0;\r\n\t\t\t\t\tif (row.Activities) {\r\n\t\t\t\t\t\trow.Activities.forEach((act) => {\r\n\t\t\t\t\t\t\ttotalParticipants += act.TotalParticipants;\r\n\r\n\t\t\t\t\t\t\tlet dd = moment(act.AppointmentDate).format('YYYY/MM/DD');\r\n\r\n\t\t\t\t\t\t\tdepartureDate =\r\n\t\t\t\t\t\t\t\t!departureDate || dd < departureDate ? dd : departureDate;\r\n\t\t\t\t\t\t\treturnDate = !returnDate || dd > returnDate ? dd : returnDate;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tproducts.push({\r\n\t\t\t\t\t\tdepartureDate: departureDate,\r\n\t\t\t\t\t\treturnDate: returnDate,\r\n\t\t\t\t\t\tid: row.EntityHierarchyKey,\r\n\t\t\t\t\t\torderNumber: state.order.OrderNumber,\r\n\t\t\t\t\t\tname: row.Name,\r\n\t\t\t\t\t\tcurrency: state.client.SquareCurrencyCode,\r\n\t\t\t\t\t\tprice: row.SubTotal.toFixed(2),\r\n\t\t\t\t\t\tquantity: totalParticipants,\r\n\t\t\t\t\t\tisPackage: row.PackageKey ? true : false,\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tcity: state.client.City,\r\n\t\t\t\t\tstate: state.client.State,\r\n\t\t\t\t\tpostalCode: state.client.PostalCode,\r\n\t\t\t\t\tcountry: state.client.CountryCode,\r\n\t\t\t\t\torderNumber: state.order.OrderNumber,\r\n\t\t\t\t\tlocationName: state.client.Name,\r\n\t\t\t\t\tsubTotal: state.order.SubTotal.toFixed(2),\r\n\t\t\t\t\ttax: state.order.TaxTotal.toFixed(2),\r\n\t\t\t\t\ttotal: state.order.Total.toFixed(2),\r\n\t\t\t\t\tproducts: products,\r\n\t\t\t\t};\r\n\t\t\t} // if\r\n\t\t\telse {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tsimpleOrder: function(state) {\r\n\t\t\tlet act = [];\r\n\r\n\t\t\tif (state.order && state.order.OrderKey) {\r\n\t\t\t\tlet combinedProducts = [\r\n\t\t\t\t\t...state.order.Individual,\r\n\t\t\t\t\t...state.order.Packages,\r\n\t\t\t\t\t...state.order.GiftCards,\r\n\t\t\t\t];\r\n\r\n\t\t\t\tcombinedProducts.forEach((row) => {\r\n\t\t\t\t\tif (row.Activities) {\r\n\t\t\t\t\t\trow.Activities.forEach((a) => {\r\n\t\t\t\t\t\t\tact.push({\r\n\t\t\t\t\t\t\t\tappointmentDate: a.AppointmentDate,\r\n\t\t\t\t\t\t\t\tid: a.EntityHierarchyKey,\r\n\t\t\t\t\t\t\t\torderNumber: state.order.OrderNumber,\r\n\t\t\t\t\t\t\t\tname: a.Name,\r\n\t\t\t\t\t\t\t\tcurrency: state.SquareCurrencyCode,\r\n\t\t\t\t\t\t\t\tprice: a.SubTotal.toFixed(2),\r\n\t\t\t\t\t\t\t\tquantity: a.TotalParticipants ? a.TotalParticipants : 0,\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tcity: state.City,\r\n\t\t\t\t\tstate: state.State,\r\n\t\t\t\t\tpostalCode: state.PostalCode,\r\n\t\t\t\t\tcountry: state.CountryCode,\r\n\t\t\t\t\torderNumber: state.order.OrderNumber,\r\n\t\t\t\t\tlocationName: state.Name,\r\n\t\t\t\t\tsubTotal: state.order.SubTotal.toFixed(2),\r\n\t\t\t\t\ttax: state.order.TaxTotal.toFixed(2),\r\n\t\t\t\t\ttotal: state.order.Total.toFixed(2),\r\n\t\t\t\t\tactivities: act,\r\n\t\t\t\t};\r\n\t\t\t} else {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t}, // simpleOrder\r\n\r\n\t\tproductsInCart: (state) => {\r\n\t\t\tif (state.order.OrderKey) {\r\n\t\t\t\t//return 444;\r\n\t\t\t\t//alert(state.order.Individual.length);\r\n\t\t\t\treturn state.order.Individual.length + state.order.Packages.length;\r\n\t\t\t}\r\n\t\t\treturn 0;\r\n\t\t},\r\n\r\n\t\tpackages: (state) => {\r\n\t\t\treturn state.client.Packages;\r\n\t\t},\r\n\t\tindividual: (state) => {\r\n\t\t\treturn state.client ? state.client.Individual : [];\r\n\t\t},\r\n\r\n\t\tlogoDark: (state) => {\r\n\t\t\tif (state.client.DarkLogoVersion) {\r\n\t\t\t\treturn (\r\n\t\t\t\t\tstate.client.PhotoDomain +\r\n\t\t\t\t\t'h_140' +\r\n\t\t\t\t\t'/v' +\r\n\t\t\t\t\tstate.client.DarkLogoVersion +\r\n\t\t\t\t\tstate.client.PhotoFolder +\r\n\t\t\t\t\t'/darklogo'\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t},\r\n\r\n\t\tlogoLight: (state) => {\r\n\t\t\tif (state.client.DarkLogoVersion) {\r\n\t\t\t\treturn (\r\n\t\t\t\t\tstate.client.PhotoDomain +\r\n\t\t\t\t\t'h_140' +\r\n\t\t\t\t\t'/v' +\r\n\t\t\t\t\tstate.client.DarkLogoVersion +\r\n\t\t\t\t\tstate.client.PhotoFolder +\r\n\t\t\t\t\t'/lightlogo'\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t},\r\n\r\n\t\tproductSubTotal: (state, getters) => {\r\n\t\t\tlet t = 0; // total\r\n\t\t\tlet peeps = 0; // Participants\r\n\r\n\t\t\tif (\r\n\t\t\t\tgetters.activeProductDetails &&\r\n\t\t\t\tgetters.activeProductDetails.Activities\r\n\t\t\t) {\r\n\t\t\t\tgetters.activeProductDetails.Activities.forEach((act) => {\r\n\t\t\t\t\tif (act.SelectedTimes) {\r\n\t\t\t\t\t\t//alert(\"subtotal: subtotal like large group mode\");\r\n\t\t\t\t\t\tact.SelectedTimes.forEach((st) => {\r\n\t\t\t\t\t\t\t// private tour\r\n\t\t\t\t\t\t\t// console.log(\"SelectedTimes\", st.SubTotal);\r\n\t\t\t\t\t\t\t// add the price (or slashThroughPrice) of the rate marked as IsPrivateTourRate\r\n\t\t\t\t\t\t\t// if (act.IsPrivateTour) {\r\n\t\t\t\t\t\t\t// let findPrivateRate = st.Rates.find(rate => {\r\n\t\t\t\t\t\t\t// return rate.IsPrivateTourRate;\r\n\t\t\t\t\t\t\t// });\r\n\r\n\t\t\t\t\t\t\t// if (findPrivateRate) {\r\n\t\t\t\t\t\t\t// t += findPrivateRate.Price;\r\n\t\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t\t// //\r\n\t\t\t\t\t\t\t// else\r\n\t\t\t\t\t\t\tif (!getters.activeProductDetails.IsLargeGroup) {\r\n\t\t\t\t\t\t\t\t// for not private tour\r\n\t\t\t\t\t\t\t\t//console.log(\"not large group tour\");\r\n\r\n\t\t\t\t\t\t\t\tt += st.SubTotal;\r\n\t\t\t\t\t\t\t\t// st.Rates.forEach(rate => {\r\n\t\t\t\t\t\t\t\t// if (!rate.IsPrivateTourRate) {\r\n\t\t\t\t\t\t\t\t// peeps = peeps + rate.Participants;\r\n\t\t\t\t\t\t\t\t// t = t + rate.Participants * rate.Price;\r\n\t\t\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t\t\t// });\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t//\r\n\t\t\t\t\t\t\telse if (getters.activeProductDetails.IsLargeGroup) {\r\n\t\t\t\t\t\t\t\t// for not private tour\r\n\t\t\t\t\t\t\t\t//console.log(\"IS large group tour\");\r\n\r\n\t\t\t\t\t\t\t\t//t += st.SubTotal;\r\n\t\t\t\t\t\t\t\tst.Rates.forEach((rate) => {\r\n\t\t\t\t\t\t\t\t\tif (!rate.IsPrivateTourRate) {\r\n\t\t\t\t\t\t\t\t\t\tpeeps = peeps + rate.Participants;\r\n\t\t\t\t\t\t\t\t\t\tt = t + rate.Participants * rate.Price;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (st.AddOns) {\r\n\t\t\t\t\t\t\t\tst.AddOns.forEach((ad) => {\r\n\t\t\t\t\t\t\t\t\tt =\r\n\t\t\t\t\t\t\t\t\t\tt +\r\n\t\t\t\t\t\t\t\t\t\tad.Quantity *\r\n\t\t\t\t\t\t\t\t\t\t\t(ad.AddOnDiscount\r\n\t\t\t\t\t\t\t\t\t\t\t\t? ad.PublishedPrice - ad.AddOnDiscount\r\n\t\t\t\t\t\t\t\t\t\t\t\t: ad.PublishedPrice);\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t// if (st.PickupLocation) {\r\n\t\t\t\t\t\t\t// t += peeps * st.PickupLocation.PickupCost;\r\n\t\t\t\t\t\t\t// }\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\treturn t;\r\n\t\t},\r\n\r\n\t\t//\r\n\t\tactiveProductDetails: (state) => {\r\n\t\t\tlet productDetails = {\r\n\t\t\t\tActivities: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tRates: [],\r\n\t\t\t\t\t},\r\n\t\t\t\t],\r\n\t\t\t};\r\n\t\t\t// modifying\r\n\t\t\tif (state.activeProductIds.modify && state.order) {\r\n\t\t\t\t//alert(\"activeProductDetails if\");\r\n\t\t\t\tif (\r\n\t\t\t\t\tstate.activeProductIds.productType === 'activity' &&\r\n\t\t\t\t\tstate.order.Individual\r\n\t\t\t\t) {\r\n\t\t\t\t\t//alert('modify individual ' + state.activeProductIds.id);\r\n\t\t\t\t\tproductDetails = state.order.Individual.find((ele) => {\r\n\t\t\t\t\t\treturn ele.OrderEntityKey == state.activeProductIds.id;\r\n\t\t\t\t\t});\r\n\t\t\t\t} else if (\r\n\t\t\t\t\tstate.activeProductIds.productType === 'package' &&\r\n\t\t\t\t\tstate.order.Packages\r\n\t\t\t\t) {\r\n\t\t\t\t\t//alert('modify package');\r\n\t\t\t\t\tproductDetails = state.order.Packages.find((ele) => {\r\n\t\t\t\t\t\treturn ele.OrderPackageKey == state.activeProductIds.id;\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// not modifying\r\n\t\t\telse {\r\n\t\t\t\t//alert(\"activeProductDetails else\");\r\n\t\t\t\tif (\r\n\t\t\t\t\tstate.activeProductIds.productType === 'activity' &&\r\n\t\t\t\t\tstate.client.Individual\r\n\t\t\t\t) {\r\n\t\t\t\t\t// alert(\r\n\t\t\t\t\t// \"new individual state.activeProductIds.id: \" +\r\n\t\t\t\t\t// state.activeProductIds.id +\r\n\t\t\t\t\t// \" state.client.Individual.length: \" +\r\n\t\t\t\t\t// state.client.Individual.length\r\n\t\t\t\t\t// );\r\n\t\t\t\t\t// if (state.activeProductIds.pkgKey) {\r\n\t\t\t\t\t// \tproductDetails = state.client.Individual.find((e) => {\r\n\t\t\t\t\t// \t\treturn (\r\n\t\t\t\t\t// \t\t\te.EntityHierarchyKey * 1 == state.activeProductIds.id * 1 &&\r\n\t\t\t\t\t// \t\t\te.PackageKey == state.activeProductIds.pkgKey\r\n\t\t\t\t\t// \t\t);\r\n\t\t\t\t\t// \t});\r\n\t\t\t\t\t// } else\r\n\t\t\t\t\tproductDetails = state.client.Individual.find((ele) => {\r\n\t\t\t\t\t\t// return (\r\n\t\t\t\t\t\t// \tele.EntityHierarchyKey * 1 == state.activeProductIds.id * 1\r\n\t\t\t\t\t\t// );\r\n\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\tele.EntityHierarchyKey * 1 == state.activeProductIds.id * 1 &&\r\n\t\t\t\t\t\t\tele.PackageKey == state.activeProductIds.pkgKey\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t});\r\n\t\t\t\t} else if (\r\n\t\t\t\t\tstate.activeProductIds.productType === 'package' &&\r\n\t\t\t\t\tstate.client.Packages\r\n\t\t\t\t) {\r\n\t\t\t\t\t//alert('new package');\r\n\t\t\t\t\tproductDetails = state.client.Packages.find((ele) => {\r\n\t\t\t\t\t\treturn ele.PackageKey == state.activeProductIds.id;\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//productDetails.ClientLocationKey = router.currentRoute.params.client;\r\n\r\n\t\t\t// make a deep copy of details so that doesn't persist\r\n\t\t\t// var details_clone = JSON.parse(JSON.stringify(details));\r\n\t\t\tconsole.log('productDetails :>>', productDetails);\r\n\t\t\tif (!productDetails.ShowFirstActivityOnly) state.hiddenActivities = null;\r\n\t\t\treturn productDetails;\r\n\t\t\t//return details_clone;\r\n\t\t}, // activeProductDetails getter\r\n\t},\r\n\r\n\t// make changes to the state\r\n\tmutations: {\r\n\t\t// setHistoryDistanceToHomePage(state, payload) {\r\n\r\n\t\t// },\r\n\t\tclearCartCount(state) {\r\n\t\t\tstate.order.CartCount = 0;\r\n\t\t},\r\n\t\t// remove any discount\r\n\t\tclearDiscount(state) {\r\n\t\t\tstate.discount = {\r\n\t\t\t\tvalue: '',\r\n\t\t\t\tmessage: '',\r\n\t\t\t\terror: '',\r\n\t\t\t\tajaxing: false,\r\n\t\t\t};\r\n\t\t},\r\n\t\trevertClient(state) {\r\n\t\t\t// simple restores the client object back to it's original version\r\n\t\t\t//setTimeout(() => {\r\n\t\t\tstate.client = JSON.parse(JSON.stringify(state.clientOriginal));\r\n\t\t\t//}, 1500);\r\n\t\t},\r\n\r\n\t\ttoggleCartLinkActive(state, payload) {\r\n\t\t\tstate.cartLinkActive = payload;\r\n\t\t},\r\n\r\n\t\ttogglePrivateTour(state, payload) {\r\n\t\t\tvar findDetails;\r\n\t\t\tif (state.activeProductIds.modify && state.order) {\r\n\t\t\t\tfindDetails = state.order.Individual.find((ele) => {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\tele.EntityHierarchyKey == payload.entityHierarchyKey &&\r\n\t\t\t\t\t\tele.OrderEntityKey == state.activeProductIds.id\r\n\t\t\t\t\t);\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tfindDetails = state.client.Individual.find((ele) => {\r\n\t\t\t\t\treturn ele.EntityHierarchyKey == payload.entityHierarchyKey;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (findDetails) {\r\n\t\t\t\t// you cannot have a large group if it's a private tour\r\n\t\t\t\tif (payload.newVal == true && findDetails.IsLargeGroup) {\r\n\t\t\t\t\tfindDetails.IsLargeGroup = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//\r\n\t\t\t\tvar findPrivateRate = findDetails.Activities[0].Rates.find((ele) => {\r\n\t\t\t\t\treturn ele.IsPrivateTourRate === true;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (findPrivateRate) {\r\n\t\t\t\t\t//alert('findPrivateRate.Name: ' + findPrivateRate.Name);\r\n\t\t\t\t\tif (payload.newVal === true) {\r\n\t\t\t\t\t\t// make it private\r\n\t\t\t\t\t\tfindPrivateRate.Participants = 1;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tfindPrivateRate.Participants = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconsole.warn('Unable to find private rate!');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/*\r\n skipAddOnsForTime(state, payload) {\r\n\r\n //alert('TODO: skipping should revert the state. (not save)');\r\n\r\n let findDetails = false;\r\n\r\n if (payload.packageKey) {\r\n findDetails = state.client.Packages.find((ele) => {\r\n return ele.PackageKey == payload.packageKey;\r\n });\r\n\r\n\r\n // try order object\r\n if(!findDetails){\r\n findDetails = state.order.Packages.find((ele) => {\r\n return ele.OrderPackageKey === payload.orderPackageKey;\r\n });\r\n }\r\n\r\n alert('packageKey '+findDetails.length);\r\n }\r\n\r\n else {\r\n findDetails = state.client.Individual.find((ele) => {\r\n return ele.EntityHierarchyKey == payload.entityHierarchyKey;\r\n });\r\n\r\n // try order object\r\n if(!findDetails){\r\n findDetails = state.order.Individual.find((ele) => {\r\n return ele.OrderEntityKey == payload.orderEntityKey;\r\n });\r\n }\r\n\r\n alert('individual '+findDetails.Name);\r\n }\r\n\r\n\r\n\r\n\r\n\r\n if (findDetails) {\r\n const findActivity = findDetails.Activities.find((ele) => {\r\n return ele.EntityHierarchyKey == payload.entityHierarchyKey;\r\n });\r\n\r\n alert('findActivity.Name '+findActivity.Name);\r\n\r\n if (findActivity && findActivity.SelectedTimes) {\r\n alert('--------findActivity.Name '+findActivity.Name);\r\n var findTime = findActivity.SelectedTimes.find((ele) => {\r\n return ele.Value == payload.timeId;\r\n });\r\n\r\n if (findTime) {\r\n findTime.AddOnsSkipped = true;\r\n\r\n // set Quantity to 0\r\n\r\n payload.callback({});\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n // var findActivity = state.activeProductDetails.Activities.find((ele) => {\r\n // return ele.EntityHierarchyKey == payload.entityHierarchyKey;\r\n // });\r\n\r\n // if (findActivity) {\r\n // var findTime = findActivity.Times.find((ele) => {\r\n // return ele.Value == payload.timeId;\r\n // });\r\n\r\n // if (findTime) {\r\n // alert('fimeTime');\r\n // }\r\n\r\n // }\r\n\r\n },\r\n*/\r\n\t\t/*\r\n mutateTimeSlotRequirements(state, payload) {\r\n \r\n //alert('mutateTimeSlotRequirements, timeSlotId: ' + payload.timeSlotId);\r\n \r\n //alert('state.activeProductIds.productType: ' + state.activeProductIds.productType);\r\n \r\n if (state.activeProductIds.productType == 'activity') {\r\n \r\n // find this timeSlot\r\n //state.activeProductDetails.\r\n \r\n }\r\n \r\n else {\r\n \r\n }\r\n \r\n \r\n },\r\n */\r\n\r\n\t\tresetGiftcard(state) {\r\n\t\t\tstate.client.GiftCard.FromName = '';\r\n\t\t\tstate.client.GiftCard.GiftCardAmount = null;\r\n\t\t\tstate.client.GiftCard.GiftCardAmountOther = null;\r\n\t\t\tstate.client.GiftCard.GiftCardAmountSelection = null;\r\n\t\t\tstate.client.GiftCard.Message = '';\r\n\t\t\tstate.client.GiftCard.RecipientEmail = '';\r\n\t\t\tstate.client.GiftCard.RecipientName = '';\r\n\t\t},\r\n\r\n\t\tupdateOverlappedActivities(state, payload) {\r\n\t\t\tstate.overlappedActivities = payload;\r\n\t\t},\r\n\r\n\t\tpreBookRead(state, payload) {\r\n\t\t\t//alert('preBookRead');\r\n\t\t\tvar find = false;\r\n\r\n\t\t\tif (payload.PackageKey) {\r\n\t\t\t\tfind = state.client.Packages.find((ele) => {\r\n\t\t\t\t\treturn payload.PackageKey == ele.PackageKey;\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tfind = state.client.Individual.find((ele) => {\r\n\t\t\t\t\treturn payload.EntityHierarchyKey == ele.EntityHierarchyKey;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (find) {\r\n\t\t\t\tfind.hasReadPreBookMessage = true;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tupdateProductToRemove: (state, payload) => {\r\n\t\t\tstate.productToRemove = payload;\r\n\t\t},\r\n\r\n\t\tforceUpdateOrder(state) {\r\n\t\t\tVue.localStorage.remove('orderKey');\r\n\t\t\tVue.localStorage.remove('clientLocationKey');\r\n\t\t\tVue.localStorage.remove('cardErrorReq');\r\n\t\t\tlocalStorage.removeItem('CData');\r\n\t\t\tstate.order = {};\r\n\t\t},\r\n\r\n\t\tupdateOrder: (state, payload) => {\r\n\t\t\tif (!payload) {\r\n\t\t\t\tconsole.error('Payload is null');\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (payload.OrderKey) {\r\n\t\t\t\tstate.order = payload;\r\n\t\t\t\tVue.localStorage.set('orderKey', payload.OrderKey);\r\n\t\t\t\tVue.localStorage.set(\r\n\t\t\t\t\t'clientLocationKey',\r\n\t\t\t\t\trouter.currentRoute.params.client\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\t//\r\n\t\t\telse {\r\n\t\t\t\tconsole.warn('Trying to call updateOrder() without an OrderKey.');\r\n\t\t\t}\r\n\t\t},\r\n\t\tupdateCustomer: (state, payload) => {\r\n\t\t\tif (state.order) {\r\n\t\t\t\tstate.order.Customer = payload;\r\n\t\t\t} else {\r\n\t\t\t\tconsole.warn('No order to update customer');\r\n\t\t\t}\r\n\t\t},\r\n\t\tupdateClient: (state, payload) => {\r\n\t\t\tstate.client = payload;\r\n\t\t\tstate.clientOriginal = JSON.parse(JSON.stringify(payload));\r\n\t\t},\r\n\r\n\t\tupdateActiveProductIds: (state, payload) => {\r\n\t\t\t//alert(\"updateActiveProductIds\");\r\n\t\t\t//console.log(\"updateActiveProductIds\", payload);\r\n\t\t\tconsole.log(payload);\r\n\t\t\tstate.activeProductIds = payload;\r\n\t\t},\r\n\t},\r\n\t// ajax here\r\n\tactions: {\r\n\t\t// init Sojern\r\n\t\t//TODO: initSojernSearchPixelId\r\n\t\t// eslint-disable-next-line\r\n\t\tinitSojernSearchPixelId({ state }, payload) {\r\n\t\t\t/* Please fill the following values. */\r\n\r\n\t\t\t//console.log(\"initSojernSearchPixelId().........\");\r\n\r\n\t\t\tvar params = {\r\n\t\t\t\tvid: 'tou' /* Don't Change */,\r\n\t\t\t\tet: 'vs' /* Don't Change */,\r\n\t\t\t\tvd1: '' /* Departure Date */,\r\n\t\t\t\tvd2: '' /* Return Date */,\r\n\t\t\t\tvf1: '' /* Destination City */,\r\n\t\t\t\tvs1: '' /* Destination State or Region */,\r\n\t\t\t\tvn1: '' /* Destination Country */,\r\n\t\t\t\tt: '' /* Number of Travelers */,\r\n\t\t\t};\r\n\t\t\t/* Please do not modify the below code. */\r\n\r\n\t\t\tvar cid = [];\r\n\t\t\tvar paramsArr = [];\r\n\t\t\tvar cidParams = [];\r\n\t\t\tvar pl = document.createElement('script');\r\n\t\t\t//var defaultParams = { vid: \"tou\", et: \"vs\" };\r\n\t\t\t/*for (key in defaultParams) {\r\n params[key] = defaultParams[key];\r\n }*/\r\n\t\t\tfor (let key in cidParams) {\r\n\t\t\t\tcid.push(params[cidParams[key]]);\r\n\t\t\t}\r\n\t\t\tparams.cid = cid.join('|');\r\n\r\n\t\t\tconst keys = Object.keys(params);\r\n\t\t\t//\r\n\t\t\tfor (const key of keys) {\r\n\t\t\t\t//console.log(\"key\", key);\r\n\t\t\t\t//console.log(\"params[key]\", params[key]);\r\n\t\t\t\tparamsArr.push(key + '=' + encodeURIComponent(params[key]));\r\n\t\t\t}\r\n\r\n\t\t\t// for (const [key, val] of params) {\r\n\t\t\t// console.log(\"key\", key);\r\n\t\t\t// console.log(\"val\", val);\r\n\t\t\t// paramsArr.push(key + \"=\" + encodeURIComponent(params[key]));\r\n\t\t\t// }\r\n\r\n\t\t\t//console.table(paramsArr);\r\n\r\n\t\t\t//for (key in params) {\r\n\t\t\t//paramsArr.push(key + \"=\" + encodeURIComponent(params[key]));\r\n\t\t\t//}\r\n\t\t\tpl.type = 'text/javascript';\r\n\t\t\tpl.async = true;\r\n\t\t\tpl.src =\r\n\t\t\t\t'https://beacon.sojern.com/pixel/p/' +\r\n\t\t\t\tstate.client.SojernSearchPixelId +\r\n\t\t\t\t'?f_v=v6_js&p_v=1&' +\r\n\t\t\t\tparamsArr.join('&');\r\n\r\n\t\t\t(\r\n\t\t\t\tdocument.getElementsByTagName('head')[0] ||\r\n\t\t\t\tdocument.getElementsByTagName('body')[0]\r\n\t\t\t).appendChild(pl);\r\n\t\t},\r\n\r\n\t\t// eslint-disable-next-line no-empty-pattern\r\n\t\tcloseDetailComponent({}, payload) {\r\n\t\t\trouter.push({\r\n\t\t\t\tpath: '/' + router.currentRoute.params.client + '/' + payload,\r\n\t\t\t});\r\n\t\t},\r\n\t\tupdateClientAgentKey: ({ state }, key) => {\r\n\t\t\tstate.agentKey = key;\r\n\t\t},\r\n\r\n\t\tviewAllExp() {\r\n\t\t\trouter.push({ path: '/' + router.currentRoute.params.client });\r\n\t\t},\r\n\r\n\t\tcloseRemoveFromCartModal: ({ commit, state }) => {\r\n\t\t\tstate.removeFromCartModal.show = false;\r\n\t\t\tcommit('updateProductToRemove', {});\r\n\t\t},\r\n\r\n\t\tconfirmRemoveFromCart: ({ commit, state }, payload) => {\r\n\t\t\t// console.log(\"...confirmRemoveFromCart\", payload);\r\n\t\t\tstate.removeFromCartModal.show = true;\r\n\t\t\tcommit('updateProductToRemove', payload);\r\n\t\t},\r\n\r\n\t\tremoveFromCart: ({ commit, state }) => {\r\n\t\t\tvar data = {};\r\n\t\t\tdata.orderKey = state.order.OrderKey;\r\n\t\t\tdata.clientLocationKey = router.currentRoute.params.client;\r\n\r\n\t\t\t// Package\r\n\t\t\tif (state.productToRemove.isPackage) {\r\n\t\t\t\tdata.OrderPackageKey = state.productToRemove.OrderPackageKey; //\r\n\t\t\t\tstate.removeFromCartModal.loading = true;\r\n\r\n\t\t\t\twindow.$.ajax({\r\n\t\t\t\t\ttype: 'GET',\r\n\t\t\t\t\turl: state.serverPath + '/RemovePackageFromCart',\r\n\t\t\t\t\tdataType: 'json',\r\n\t\t\t\t\tdata: data,\r\n\t\t\t\t\tcache: false,\r\n\t\t\t\t\tsuccess: (order) => {\r\n\t\t\t\t\t\tcommit('updateOrder', order);\r\n\t\t\t\t\t\t// close the modal\r\n\t\t\t\t\t\tstate.removeFromCartModal.loading = false;\r\n\t\t\t\t\t\tstate.removeFromCartModal.show = false;\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tif (order.CartCount == 0) {\r\n\t\t\t\t\t\t\t\trouter.push({\r\n\t\t\t\t\t\t\t\t\tpath: '/' + router.currentRoute.params.client + '?top=true',\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}, 200);\r\n\t\t\t\t\t}, // success\r\n\t\t\t\t}); // ajax\r\n\t\t\t}\r\n\r\n\t\t\t// GiftCard\r\n\t\t\telse if (state.productToRemove.IsGiftCard) {\r\n\t\t\t\tdata.OrderMerchandiseKey = state.productToRemove.OrderMerchandiseKey; //\r\n\t\t\t\tstate.removeFromCartModal.loading = true;\r\n\r\n\t\t\t\twindow.$.ajax({\r\n\t\t\t\t\ttype: 'GET',\r\n\t\t\t\t\turl: state.serverPath + '/RemoveGiftCardFromCart',\r\n\t\t\t\t\tdataType: 'json',\r\n\t\t\t\t\tdata: data,\r\n\t\t\t\t\tcache: false,\r\n\t\t\t\t\tsuccess: (order) => {\r\n\t\t\t\t\t\t//if (order.OrderKey) {\r\n\t\t\t\t\t\tcommit('updateOrder', order);\r\n\t\t\t\t\t\t//}\r\n\r\n\t\t\t\t\t\t// close the modal\r\n\t\t\t\t\t\tstate.removeFromCartModal.loading = false;\r\n\t\t\t\t\t\tstate.removeFromCartModal.show = false;\r\n\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tif (order.CartCount == 0) {\r\n\t\t\t\t\t\t\t\trouter.push({\r\n\t\t\t\t\t\t\t\t\tpath: '/' + router.currentRoute.params.client + '?top=true',\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}, 200);\r\n\t\t\t\t\t}, // success\r\n\t\t\t\t}); // ajax\r\n\t\t\t}\r\n\r\n\t\t\t// Individual\r\n\t\t\telse {\r\n\t\t\t\tdata.orderEntityKey = state.productToRemove.OrderEntityKey; // !TODO - need to rework API for you data structure...\r\n\t\t\t\tstate.removeFromCartModal.loading = true;\r\n\t\t\t\t//RemoveActivityFromCart(Guid orderKey, Guid orderEntityKey, int clientLocationKey)\r\n\t\t\t\twindow.$.ajax({\r\n\t\t\t\t\ttype: 'GET',\r\n\t\t\t\t\turl: state.serverPath + '/RemoveActivityFromCart',\r\n\t\t\t\t\tdataType: 'json',\r\n\t\t\t\t\tdata: data,\r\n\t\t\t\t\tcache: false,\r\n\t\t\t\t\tsuccess: (order) => {\r\n\t\t\t\t\t\tcommit('updateOrder', order);\r\n\r\n\t\t\t\t\t\t// close the modal\r\n\t\t\t\t\t\tstate.removeFromCartModal.loading = false;\r\n\t\t\t\t\t\tstate.removeFromCartModal.show = false;\r\n\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tif (order.CartCount == 0) {\r\n\t\t\t\t\t\t\t\trouter.push({\r\n\t\t\t\t\t\t\t\t\tpath: '/' + router.currentRoute.params.client + '?top=true',\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}, 200);\r\n\r\n\t\t\t\t\t\t// this.ajaxing = false;\r\n\r\n\t\t\t\t\t\t// this.$store.commit(\"hideLoader\");\r\n\r\n\t\t\t\t\t\t// this.$router.push({ path: \"/\" + tis.$route.params.client });\r\n\t\t\t\t\t}, // success\r\n\t\t\t\t\terror: (err) => {\r\n\t\t\t\t\t\tstate.removeFromCartModal.loading = false;\r\n\t\t\t\t\t\tconsole.warn(err);\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// eslint-disable-next-line no-empty-pattern\r\n\t\tgoToAddons: ({}, payload) => {\r\n\t\t\tconsole.log('goToAddons');\r\n\t\t\tvar r = router.currentRoute.params;\r\n\t\t\tvar path =\r\n\t\t\t\t'/' +\r\n\t\t\t\tr.client +\r\n\t\t\t\t'/' +\r\n\t\t\t\tpayload.productType +\r\n\t\t\t\t'/' +\r\n\t\t\t\tr.modify +\r\n\t\t\t\t'/' +\r\n\t\t\t\tr.id +\r\n\t\t\t\t'/' +\r\n\t\t\t\tr.clientAgentKey +\r\n\t\t\t\t'/addons/' +\r\n\t\t\t\tpayload.entityHierarchyKey +\r\n\t\t\t\t'/' +\r\n\t\t\t\tpayload.timeId;\r\n\t\t\t//var path = '/1';\r\n\t\t\trouter.push({ path: path });\r\n\t\t},\r\n\r\n\t\tgetDetails: ({ commit, state, dispatch }, payload) => {\r\n\t\t\t// is the cliet object empty?\r\n\r\n\t\t\tif (Object.keys(state.client).length === 0) {\r\n\t\t\t\t//alert(\"store getDetails() if\");\r\n\t\t\t\tdispatch('ajaxClient', payload);\r\n\t\t\t}\r\n\t\t\t//\r\n\t\t\telse {\r\n\t\t\t\t//alert(\"store getDetails() else\");\r\n\t\t\t\tcommit('updateActiveProductIds', payload);\r\n\t\t\t\tif (typeof payload.callback == 'function') {\r\n\t\t\t\t\tpayload.callback();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tajaxGetTimes: async ({ state }, payload) => {\r\n\t\t\tlet callTs = window.performance.now().toFixed(0);\r\n\t\t\tconsole.log('getTimes() request', callTs, payload);\r\n\t\t\t// if (state.getTimesLoading) {\r\n\t\t\t// console.warn(\"state.getTimesLoading\", state.getTimesLoading);\r\n\t\t\t// }\r\n\r\n\t\t\tif (payload.EntityHierarchyKey && !state.getTimesLoading) {\r\n\t\t\t\t//alert('store.ajaxGetTimes if');\r\n\r\n\t\t\t\t// https://www.w3schools.com/jsref/jsref_toisostring.asp\r\n\t\t\t\t// Return a Date object as a String, using the ISO standard:\r\n\t\t\t\t//console.log(payload.Date);\r\n\t\t\t\tlet parts = payload.Date.split('-');\r\n\t\t\t\t// Please pay attention to the month (parts[1]); JavaScript counts months from 0:\r\n\t\t\t\t// January - 0, February - 1, etc.\r\n\t\t\t\tlet mydate = new Date(parts[0], parts[1] - 1, parts[2]);\r\n\t\t\t\tpayload.Date = mydate.toISOString();\r\n\r\n\t\t\t\t//console.error(\"TODO: make sure gettimes is passing Order object.\")\r\n\r\n\t\t\t\tif (payload.OrderEntityKey || payload.OrderPackageKey) {\r\n\t\t\t\t\tpayload.Order = state.order;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// add current activity to getTimes call\r\n\t\t\t\t// const apd = getters.activeProductDetails;\r\n\t\t\t\t// payload.Activity = apd ? apd : null;\r\n\r\n\t\t\t\tconsole.log(\"getTimes payload\");\r\n\t\t\t\tconsole.log(JSON.stringify(payload));\r\n\r\n\t\t\t\tstate.getTimesLoading = true;\r\n\t\t\t\twindow.$.ajax({\r\n\t\t\t\t\ttype: 'POST',\r\n\t\t\t\t\turl: state.serverPath + '/gettimes',\r\n\t\t\t\t\tdataType: 'json',\r\n\t\t\t\t\tcontentType: 'application/json',\r\n\t\t\t\t\tdata: await gzip(JSON.stringify(payload)).then((z) => {\r\n\t\t\t\t\t\treturn z;\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tprocessData: false,\r\n\t\t\t\t\theaders: {\r\n\t\t\t\t\t\t'Content-Encoding': 'gzip',\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcache: false,\r\n\t\t\t\t\tsuccess: (json) => {\r\n\t\t\t\t\t\tconsole.log('getTimes() response', callTs, json);\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tstate.getTimesLoading = false;\r\n\t\t\t\t\t\t}, 1000);\r\n\r\n\t\t\t\t\t\t// console.log('store json ', json);\r\n\t\t\t\t\t\t// alert('store.ajaxGetTimes');\r\n\t\t\t\t\t\tpayload.callback(json);\r\n\t\t\t\t\t},\r\n\t\t\t\t\terror: function(e) {\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tstate.getTimesLoading = false;\r\n\t\t\t\t\t\t\tconsole.error(e);\r\n\t\t\t\t\t\t}, 1000);\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tconsole.warn('aborting getTimes() request', callTs);\r\n\t\t\t\tstate.getTimesLoading = false;\r\n\t\t\t\tpayload.abort();\r\n\t\t\t}\r\n\t\t}, // ajaxGetTimes\r\n\r\n\t\tsaveCustomer: async ({ state }, payload) => {\r\n\t\t\twindow.$.ajax({\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\turl: state.serverPath + '/savecustomer',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\tcontentType: 'application/json',\r\n\t\t\t\tdata: await gzip(JSON.stringify(payload)).then((z) => {\r\n\t\t\t\t\treturn z;\r\n\t\t\t\t}),\r\n\t\t\t\tprocessData: false,\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t'Content-Encoding': 'gzip',\r\n\t\t\t\t},\r\n\t\t\t\tcache: false,\r\n\t\t\t\tsuccess: (json) => {\r\n\t\t\t\t\tif (typeof payload.callback == 'function') {\r\n\t\t\t\t\t\tpayload.callback(json);\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t}, // saveCustomer\r\n\r\n\t\tisValidEmail: ({ state }, payload) => {\r\n\t\t\tif (payload.email === '' || !payload.email) {\r\n\t\t\t\tpayload.callback(true);\r\n\t\t\t} else {\r\n\t\t\t\t// do simple client side email validation\r\n\t\t\t\tif (/(.+)@(.+){2,}\\.(.+){2,}/.test(payload.email)) {\r\n\t\t\t\t\t// valid email\r\n\t\t\t\t\twindow.$.ajax({\r\n\t\t\t\t\t\ttype: 'GET',\r\n\t\t\t\t\t\turl: state.serverPath + '/isvalidemail',\r\n\t\t\t\t\t\tdataType: 'json',\r\n\t\t\t\t\t\tdata: payload,\r\n\t\t\t\t\t\tcache: false,\r\n\t\t\t\t\t\tsuccess: (json) => {\r\n\t\t\t\t\t\t\tpayload.callback(json);\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// invalid email\r\n\t\t\t\t\tpayload.callback(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}, // saveCustomer\r\n\r\n\t\t/*\r\n myAction(context, data) {\r\n return new Promise((resolve, reject) => {\r\n // Do something here... lets say, a http call using vue-resource\r\n this.$http(\"/api/something\").then(response => {\r\n // http success, call the mutator and change something in state\r\n resolve(response); // Let the calling function know that http is done. You may send some data back\r\n }, error => {\r\n // http failed, let the calling function know that action did not work out\r\n reject(error);\r\n })\r\n })\r\n },\r\n */\r\n\r\n\t\tajaxAddToCart: async ({ commit, state }, payload) => {\r\n\t\t\tlet callTs = window.performance.now().toFixed(0);\r\n\t\t\tconsole.log('addToCart() request', callTs, payload);\r\n\t\t\treturn new Promise(async (resolve, reject) => {\r\n\t\t\t\twindow.$.ajax({\r\n\t\t\t\t\ttype: 'POST',\r\n\t\t\t\t\turl: state.serverPath + '/addtocart',\r\n\t\t\t\t\tdataType: 'json',\r\n\t\t\t\t\tcontentType: 'application/json',\r\n\t\t\t\t\tdata: await gzip(JSON.stringify(payload)).then((z) => {\r\n\t\t\t\t\t\treturn z;\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tprocessData: false,\r\n\t\t\t\t\theaders: {\r\n\t\t\t\t\t\t'Content-Encoding': 'gzip',\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcache: false,\r\n\t\t\t\t\tsuccess: (json) => {\r\n\t\t\t\t\t\tconsole.log('addToCart() response', callTs, json);\r\n\t\t\t\t\t\t//if (json.Order && json.Order.OrderKey) {\r\n\t\t\t\t\t\t//Vue.localStorage.set(\"orderKey\", json.Order.OrderKey);\r\n\t\t\t\t\t\tcommit('updateOrder', json.Order);\r\n\t\t\t\t\t\t//}\r\n\r\n\t\t\t\t\t\tresolve(json);\r\n\t\t\t\t\t},\r\n\t\t\t\t\terror(err) {\r\n\t\t\t\t\t\tconsole.log(`addToCart() request ${callTs} failed`);\r\n\t\t\t\t\t\treject(err);\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tcompleteOrder: async ({ state }, payload) => {\r\n\t\t\treturn new Promise(async (resolve, reject) => {\r\n\t\t\t\twindow.$.ajax({\r\n\t\t\t\t\ttype: 'POST',\r\n\t\t\t\t\turl: state.serverPath + '/completeorder',\r\n\t\t\t\t\tdataType: 'json',\r\n\t\t\t\t\tcontentType: 'application/json',\r\n\t\t\t\t\tdata: await gzip(JSON.stringify(payload)).then((z) => {\r\n\t\t\t\t\t\treturn z;\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tprocessData: false,\r\n\t\t\t\t\theaders: {\r\n\t\t\t\t\t\t'Content-Encoding': 'gzip',\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcache: false,\r\n\t\t\t\t\tsuccess: (json) => {\r\n\t\t\t\t\t\tresolve(json);\r\n\t\t\t\t\t},\r\n\t\t\t\t\terror(err) {\r\n\t\t\t\t\t\treject(err);\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\t\t\t}); // Promise\r\n\t\t}, // completeOrder()\r\n\t\tsaveOrderProgress: async ({ state }, isCustomerField) => {\r\n\t\t\tlet callTS = window.performance.now().toFixed(0);\r\n\t\t\tvar stateOrder = state.order;\r\n\t\t\tstateOrder.IsCustomerField = isCustomerField;\r\n\t\t\tif (state.updateOrderManagement.timer) {\r\n\t\t\t\tclearTimeout(state.updateOrderManagement.timer);\r\n\t\t\t\tstate.updateOrderManagement.timer = null;\r\n\t\t\t}\r\n\t\t\tstate.updateOrderManagement.timer = setTimeout(async function() {\r\n\t\t\t\tif (state.updateOrderManagement.ajax) {\r\n\t\t\t\t\tstate.updateOrderManagement.ajax.abort();\r\n\t\t\t\t}\r\n\t\t\t\tconsole.log('saveOrderProgress() request', callTS, stateOrder);\r\n\t\t\t\tstate.updateOrderManagement.ajax = window.$.ajax({\r\n\t\t\t\t\ttype: 'POST',\r\n\t\t\t\t\tdataType: 'json',\r\n\t\t\t\t\turl: state.serverPath + '/updateorder',\r\n\t\t\t\t\tcontentType: 'application/json',\r\n\t\t\t\t\tdata: await gzip(JSON.stringify(stateOrder)).then((z) => {\r\n\t\t\t\t\t\treturn z;\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tprocessData: false,\r\n\t\t\t\t\theaders: {\r\n\t\t\t\t\t\t'Content-Encoding': 'gzip',\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcache: false,\r\n\t\t\t\t\tsuccess: (json) => {\r\n\t\t\t\t\t\tconsole.log('saveOrderProgress() response', callTS, json);\r\n\r\n\t\t\t\t\t\tif (json.ExceptionMessage) {\r\n\t\t\t\t\t\t\tconsole.error(json.ExceptionMessage);\r\n\t\t\t\t\t\t} else if (json.ModelErrors) {\r\n\t\t\t\t\t\t\tconsole.error(json.ModelErrors);\r\n\t\t\t\t\t\t\twindow.alert('There was an issue performing this action');\r\n\t\t\t\t\t\t} else if (json.Order) {\r\n\t\t\t\t\t\t\tconsole.log('saveOrderProgress successful');\r\n\t\t\t\t\t\t\t// commit(\"updateOrder\",json.Order)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\terror: (json) => {\r\n\t\t\t\t\t\tconsole.log(`saveOrderProgress() request ${callTS} error`, json);\r\n\t\t\t\t\t},\r\n\t\t\t\t\tabort: () => {\r\n\t\t\t\t\t\tconsole.log(`saveOrderProgress() request ${callTS} aborted`);\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\t\t\t}, 50);\r\n\t\t},\r\n\t\tajaxGetMonthAvailability: async ({ state }, payload) => {\r\n\t\t\tif (payload.Rates.length) {\r\n\t\t\t\tif (state.currentAjaxCall) {\r\n\t\t\t\t\t// properly cancel current ajax call\r\n\t\t\t\t\tconsole.warn('Cancelling GMA ajax call');\r\n\t\t\t\t\tstate.currentAjaxCall.abort();\r\n\t\t\t\t\tstate.currentAjaxCall = null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstate.currentAjaxCall = window.$.ajax({\r\n\t\t\t\t\ttype: 'POST',\r\n\t\t\t\t\tdataType: 'json',\r\n\t\t\t\t\turl: state.serverPath + '/getmonthavailability',\r\n\t\t\t\t\tcontentType: 'application/json',\r\n\t\t\t\t\tdata: JSON.stringify(payload),\r\n\t\t\t\t\tcache: false,\r\n\t\t\t\t\tsuccess: (json) => {\r\n\t\t\t\t\t\twindow.lastGMA = false;\r\n\t\t\t\t\t\tpayload.callback(json);\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tajaxClient: ({ commit, state, dispatch }, payload) => {\r\n\t\t\tif (\r\n\t\t\t\tVue.localStorage.get('clientLocationKey', false) !=\r\n\t\t\t\trouter.currentRoute.params.client\r\n\t\t\t) {\r\n\t\t\t\tVue.localStorage.remove('orderKey');\r\n\t\t\t}\r\n\r\n\t\t\tif (router.currentRoute.params.orderKey) {\r\n\t\t\t\t//Vue.localStorage.set(\"orderKey\", router.currentRoute.params.orderKey);\r\n\t\t\t\tVue.localStorage.set(\r\n\t\t\t\t\t'clientLocationKey',\r\n\t\t\t\t\trouter.currentRoute.params.client\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\t// use production location cache\r\n\t\t\tif (process.env.NODE_ENV == 'production') {\r\n\t\t\t\tlet json = window.clientLocation;\r\n\r\n\t\t\t\tif (json) {\r\n\t\t\t\t\t// for google analytics\r\n\t\t\t\t\twindow.GADomain = json.Domain;\r\n\t\t\t\t\twindow.GATrackingId = json.GATrackingId;\r\n\r\n\t\t\t\t\t//\r\n\t\t\t\t\tdispatch('initSojernSearchPixelId', {});\r\n\r\n\t\t\t\t\tcommit('updateClient', json);\r\n\t\t\t\t\tif (payload.id) {\r\n\t\t\t\t\t\tcommit('updateActiveProductIds', payload);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// call /getorder\r\n\t\t\t\t\tif (payload.getOrderNext !== false) {\r\n\t\t\t\t\t\tdispatch('ajaxOrder');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// if (\r\n\r\n\t\t\t// \tpayload.force ||\r\n\t\t\t// \t(Object.keys(state.client).length === 0 &&\r\n\t\t\t// \t\tpayload.client &&\r\n\t\t\t// \t\t!state.client.ajaxing)\r\n\t\t\t// )\r\n\r\n\t\t\t// dev environment\r\n\t\t\telse {\r\n\t\t\t\t//alert('ajaxClient ');\r\n\t\t\t\tstate.client.ajaxing = true;\r\n\r\n\t\t\t\tvar url =\r\n\t\t\t\t\tstate.serverPath +\r\n\t\t\t\t\t'/getclientlocation?clientLocationKey=' +\r\n\t\t\t\t\tpayload.client;\r\n\r\n\t\t\t\twindow.$.ajax({\r\n\t\t\t\t\ttype: 'GET',\r\n\t\t\t\t\turl: url,\r\n\t\t\t\t\t//data: form,\r\n\t\t\t\t\t//traditional: true,\r\n\t\t\t\t\tcache: false,\r\n\t\t\t\t\tsuccess: (json) => {\r\n\t\t\t\t\t\tconsole.debug('fetching getClientLocation');\r\n\t\t\t\t\t\tstate.client.ajaxing = false;\r\n\r\n\t\t\t\t\t\t// for google analytics\r\n\t\t\t\t\t\twindow.GADomain = json.Domain;\r\n\t\t\t\t\t\twindow.GATrackingId = json.GATrackingId;\r\n\r\n\t\t\t\t\t\t//\r\n\t\t\t\t\t\tdispatch('initSojernSearchPixelId', {});\r\n\r\n\t\t\t\t\t\tcommit('updateClient', json);\r\n\t\t\t\t\t\tif (payload.id) {\r\n\t\t\t\t\t\t\tcommit('updateActiveProductIds', payload);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// call /getorder\r\n\t\t\t\t\t\tif (payload.getOrderNext !== false) {\r\n\t\t\t\t\t\t\tdispatch('ajaxOrder');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\terror: (err) => {\r\n\t\t\t\t\t\t//alert(\"getclientlocation failed\");\r\n\t\t\t\t\t\tconsole.warn(err);\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tajaxOrder: ({ commit, state, dispatch }, orderKey) => {\r\n\t\t\t//alert('ajaxOrder');\r\n\t\t\torderKey = orderKey || Vue.localStorage.get('orderKey');\r\n\t\t\t// console.log(\"Loading order\",orderKey)\r\n\t\t\tstate.getOrderLoading = false;\r\n\t\t\tif (\r\n\t\t\t\tVue.localStorage.get('clientLocationKey', false) !=\r\n\t\t\t\trouter.currentRoute.params.client\r\n\t\t\t) {\r\n\t\t\t\tVue.localStorage.remove('orderKey');\r\n\t\t\t} else {\r\n\t\t\t\tVue.localStorage.set(\r\n\t\t\t\t\t'clientLocationKey',\r\n\t\t\t\t\trouter.currentRoute.params.client\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\treturn new Promise((resolve, reject) => {\r\n\t\t\t\t// var orderKey = Vue.localStorage.get(\"orderKey\", false);\r\n\r\n\t\t\t\t//alert(\"ajaxOrder orderKey \" + orderKey);\r\n\r\n\t\t\t\tvar url = state.serverPath + '/getorder';\r\n\r\n\t\t\t\tif (!orderKey) {\r\n\t\t\t\t\t//Vue.localStorage.set(\"orderKey\", false);\r\n\t\t\t\t\tconsole.warn('Unable to process order, OrderKey is null');\r\n\t\t\t\t\t// reject({ error: \"OrderKey is undefined.\" });\r\n\t\t\t\t}\r\n\t\t\t\t//\r\n\t\t\t\telse {\r\n\t\t\t\t\tstate.getOrderLoading = true;\r\n\t\t\t\t\tvar payload = {\r\n\t\t\t\t\t\torderKey: orderKey,\r\n\t\t\t\t\t\tclientLocationKey: router.currentRoute.params.client,\r\n\t\t\t\t\t};\r\n\t\t\t\t\twindow.$.ajax({\r\n\t\t\t\t\t\ttype: 'GET',\r\n\t\t\t\t\t\turl: url,\r\n\t\t\t\t\t\tdataType: 'json',\r\n\t\t\t\t\t\tdata: payload,\r\n\t\t\t\t\t\tcache: false,\r\n\t\t\t\t\t\tsuccess: (json) => {\r\n\t\t\t\t\t\t\tstate.getOrderLoading = false;\r\n\r\n\t\t\t\t\t\t\tconsole.log('ajaxOrder', json.OrderKey);\r\n\r\n\t\t\t\t\t\t\tif (json.InValidOrderKey) {\r\n\t\t\t\t\t\t\t\tconsole.warn('InValidOrderKey for ajaxOrder ... /getorder');\r\n\t\t\t\t\t\t\t\tresolve(null);\r\n\t\t\t\t\t\t\t\t// Vue.localStorage.remove(\"orderKey\");\r\n\t\t\t\t\t\t\t\t// reject({\r\n\t\t\t\t\t\t\t\t// error: \"InValidOrderKey for ajaxOrder ... /getorder\"\r\n\t\t\t\t\t\t\t\t// });\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t// json is the Order object\r\n\t\t\t\t\t\t\telse if (json.OrderKey) {\r\n\t\t\t\t\t\t\t\tdispatch('updateClientAgentKey', json.ClientAgentKey);\r\n\t\t\t\t\t\t\t\tcommit('updateOrder', json);\r\n\t\t\t\t\t\t\t\t//Vue.localStorage.set(\"orderKey\", json.OrderKey);\r\n\t\t\t\t\t\t\t\tresolve(json);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t//commit(\"updateOrder\", { OrderKey: json.orderKey });\r\n\t\t\t\t\t\t\t\t// Vue.localStorage.set('orderKey', json.orderKey);\r\n\t\t\t\t\t\t\t\treject({ error: 'OrderKey is missing from json' });\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\terror: (err) => {\r\n\t\t\t\t\t\t\tstate.getOrderLoading = false;\r\n\t\t\t\t\t\t\tconsole.warn('getOrder failed');\r\n\t\t\t\t\t\t\tconsole.warn(err);\r\n\t\t\t\t\t\t\tVue.localStorage.remove('orderKey');\r\n\t\t\t\t\t\t\tVue.localStorage.remove('clientLocationKey');\r\n\t\t\t\t\t\t\treject(err);\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t});\r\n\t\t\t\t} // if orderKey\r\n\t\t\t}); // Promise\r\n\t\t},\r\n\r\n\t\tstartOver({ commit, state }, payload) {\r\n\t\t\t//console.log('startOver()');\r\n\t\t\tvar url =\r\n\t\t\t\tstate.serverPath +\r\n\t\t\t\t'/AbandonOrderChanges?orderKey=' +\r\n\t\t\t\tstate.order.OrderKey;\r\n\t\t\tcommit('forceUpdateOrder', {});\r\n\t\t\tVue.localStorage.remove('orderKey');\r\n\t\t\tVue.localStorage.remove('clientLocationKey');\r\n\t\t\tVue.localStorage.remove('cardErrorReq');\r\n\t\t\tlocalStorage.removeItem('CData');\r\n\r\n\t\t\twindow.$.ajax({\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\turl: url,\r\n\t\t\t\tdata: { clientLocationKey: router.currentRoute.params.client },\r\n\t\t\t\tcache: false,\r\n\t\t\t\tsuccess: () => {\r\n\t\t\t\t\t//this will always return \"null\"\r\n\t\t\t\t\t// commit(\"removeStorage\", { name: \"orderKey\" });\r\n\r\n\t\t\t\t\tstate.discount = {\r\n\t\t\t\t\t\tvalue: '',\r\n\t\t\t\t\t\tmessage: '',\r\n\t\t\t\t\t\terror: '',\r\n\t\t\t\t\t\tajaxing: false,\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tpayload.success(); // callback\r\n\t\t\t\t},\r\n\t\t\t\terror: (message) => {\r\n\t\t\t\t\tconsole.warn(message);\r\n\t\t\t\t\tpayload.error(); // callback\r\n\t\t\t\t\t//alert('AbandonOrderChanges');\r\n\t\t\t\t\trouter.push({ path: '/' + router.currentRoute.params.client });\r\n\t\t\t\t},\r\n\t\t\t}); // ajax\r\n\t\t}, //startOver\r\n\t},\r\n});\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',{staticClass:\"currency\",class:_vm.className},[_vm._v(\"\\n \"+_vm._s(_vm.currencyString))])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n {{currencyString}}\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Currency.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Currency.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Currency.vue?vue&type=template&id=93ffd8fa\"\nimport script from \"./Currency.vue?vue&type=script&lang=js\"\nexport * from \"./Currency.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('a',{staticClass:\"call_to_book -text-blue\",attrs:{\"href\":'tel:' + _vm.phone}},[_c('span',{staticClass:\"no_wrap\"},[_vm._v(\"Call to book\")]),_c('br'),_c('small',{staticClass:\"text-blue\"},[_vm._v(_vm._s(_vm.phone))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n Call to book