16861 lines
877 KiB
Plaintext
16861 lines
877 KiB
Plaintext
/*! For license information please see main.js.LICENSE.txt */
|
||
(function() {
|
||
var __webpack_modules__ = {
|
||
78079: function() {
|
||
!function() {
|
||
function e() {
|
||
angular.bootstrap(document.body, ["xenaApp"])
|
||
}
|
||
"complete" === document.readyState || "loading" !== document.readyState && !document.documentElement.doScroll ? e() : angular.element(document.body).ready((function() {
|
||
e()
|
||
}
|
||
))
|
||
}()
|
||
},
|
||
64025: function() {
|
||
"use strict";
|
||
angular.module("xenaApp").controller("BookingAncillariesEnterDetailsController", ["$scope", "AncillaryService", "BookingPriceService", function(e, t, i) {
|
||
window.ancillarieDataModule && (t.updateAncillaryData(window.ancillarieDataModule.ancillaryData),
|
||
e.$watch(t.getAncillaries, (function(t) {
|
||
return e.ancillariesChanged()
|
||
}
|
||
), !0),
|
||
e.$watch(t.orderHasAncillaryWithDeliveryTime, (function(t) {
|
||
return e.showAncillaryOrderMessage = t
|
||
}
|
||
), !0)),
|
||
e.hiddenInputKey = "BookingModule.Rooms[0].AncillaryOrder.",
|
||
e.hiddenInputCollection = {},
|
||
e.showAncillaryOrderMessage = !0,
|
||
e.bookingPrice = i.priceObject,
|
||
e.init = function() {
|
||
return e.showAncillaryOrderMessage = t.orderHasAncillaryWithDeliveryTime()
|
||
}
|
||
,
|
||
e.ancillariesChanged = function() {
|
||
e.hiddenInputCollection = {};
|
||
var i = 0
|
||
, n = 0;
|
||
t.ancillaryData.ancillaries.forEach((function(t) {
|
||
t.Variants.forEach((function(t) {
|
||
t.Quantity && (e.addHiddenInput(n, i, t.Id, t.Quantity, t.PriceString),
|
||
i++)
|
||
}
|
||
)),
|
||
i > 0 && n++,
|
||
i = 0
|
||
}
|
||
))
|
||
}
|
||
,
|
||
e.addHiddenInput = function(t, i, n, a, o) {
|
||
var r = e.hiddenInputKey + "Ancillaries[" + t + "].Variants[" + i + "].Id"
|
||
, s = e.hiddenInputKey + "Ancillaries[" + t + "].Variants[" + i + "].Quantity"
|
||
, l = e.hiddenInputKey + "Ancillaries[" + t + "].Variants[" + i + "].Price";
|
||
e.hiddenInputCollection[r] = n,
|
||
e.hiddenInputCollection[s] = a,
|
||
e.hiddenInputCollection[l] = o
|
||
}
|
||
,
|
||
e.setFirstRoomPrice = function(e) {
|
||
i.priceObject.roomPriceHtmlString = e
|
||
}
|
||
}
|
||
])
|
||
},
|
||
17618: function(e, t, i) {
|
||
var n = i(19755)
|
||
, a = i(19755);
|
||
function o(e, t) {
|
||
var i = Object.keys(e);
|
||
if (Object.getOwnPropertySymbols) {
|
||
var n = Object.getOwnPropertySymbols(e);
|
||
t && (n = n.filter((function(t) {
|
||
return Object.getOwnPropertyDescriptor(e, t).enumerable
|
||
}
|
||
))),
|
||
i.push.apply(i, n)
|
||
}
|
||
return i
|
||
}
|
||
function r(e) {
|
||
for (var t = 1; t < arguments.length; t++) {
|
||
var i = null != arguments[t] ? arguments[t] : {};
|
||
t % 2 ? o(Object(i), !0).forEach((function(t) {
|
||
s(e, t, i[t])
|
||
}
|
||
)) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : o(Object(i)).forEach((function(t) {
|
||
Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
|
||
}
|
||
))
|
||
}
|
||
return e
|
||
}
|
||
function s(e, t, i) {
|
||
return t in e ? Object.defineProperty(e, t, {
|
||
value: i,
|
||
enumerable: !0,
|
||
configurable: !0,
|
||
writable: !0
|
||
}) : e[t] = i,
|
||
e
|
||
}
|
||
var l = i(93748)
|
||
, c = i(17970);
|
||
!function() {
|
||
"use strict";
|
||
function e(e, t, i) {
|
||
function o() {
|
||
n("body").toggleClass("popover-is-open")
|
||
}
|
||
e.showQuantityPickerTakeOwer = !1,
|
||
e.ancillary = void 0,
|
||
e.ancillaryTrackingObject = void 0,
|
||
e.bookingId = "",
|
||
e.quantityObject = {
|
||
maxQuantity: 6,
|
||
pointsQuantity: 0,
|
||
fiatQuantity: 0
|
||
},
|
||
e.isMyBookingPage = !1,
|
||
e.isConfirmationPage = !1,
|
||
e.productViewTrackingObj = {
|
||
trackingInformation: {
|
||
productid: ""
|
||
},
|
||
trackingEvent: "productview",
|
||
trackEvent: !1
|
||
},
|
||
e.productViewTrackingObjString = function() {
|
||
return JSON.stringify(e.productViewTrackingObj)
|
||
}
|
||
,
|
||
e.onLoginLinkClick = l.onClickFunction,
|
||
e.init = function(t, i, n) {
|
||
var a, o, s, l;
|
||
e.hotelReservationTrackingData = hotelReservationDataObj,
|
||
e.ancillary = t,
|
||
e.isMyBookingPage = i,
|
||
e.isConfirmationPage = n,
|
||
e.quantityObject = (a = e.ancillary.QuantityInStock < e.quantityObject.maxQuantity,
|
||
e.quantityObject.maxQuantity = a ? e.ancillary.QuantityInStock : e.quantityObject.maxQuantity,
|
||
e.ancillary.Variants.reduce((function(e, t) {
|
||
return t.Id.includes("_LOY") ? e.pointsQuantity = t.Quantity : e.fiatQuantity = t.Quantity,
|
||
e
|
||
}
|
||
), r({}, e.quantityObject))),
|
||
e.productViewTrackingObj = (o = e.productViewTrackingObj,
|
||
s = t.Id,
|
||
l = i,
|
||
r(r({}, o), {}, {
|
||
trackingInformation: r(r({}, o.trackingInformation), {}, {
|
||
productid: s
|
||
}),
|
||
trackEvent: l
|
||
})),
|
||
e.ancillaryTrackingObject = {
|
||
trackEvent: !1,
|
||
trackingEvent: "scchange",
|
||
trackingInformation: {}
|
||
}
|
||
}
|
||
,
|
||
e.ancillaryTrackingObjectString = function() {
|
||
return JSON.stringify(e.ancillaryTrackingObject)
|
||
}
|
||
,
|
||
e.showAncillary = function() {
|
||
a(".navigation-bar").addClass("force-to-bottom"),
|
||
navigator.userAgent.toLowerCase().indexOf("iphone") > -1 && a(".navigation-bar").addClass("absolute-position"),
|
||
o(),
|
||
e.showQuantityPickerTakeOwer = !0,
|
||
e.updateTrackingInformation(),
|
||
e.$broadcast("updateQuantityPickerBroadcast"),
|
||
setTimeout((function() {
|
||
a(".quantity-picker .custom-select:visible").focus()
|
||
}
|
||
), 200)
|
||
}
|
||
,
|
||
e.hideAncillary = function() {
|
||
a(".navigation-bar").removeClass("force-to-bottom"),
|
||
a(".navigation-bar .absolute-position") && a(".navigation-bar").removeClass("absolute-position"),
|
||
i.notifyUpdateAncillaryOptionsObservers(e.ancillary.Id),
|
||
o(),
|
||
e.showQuantityPickerTakeOwer = !1
|
||
}
|
||
,
|
||
e.updateSelectedAncillaries = function() {
|
||
e.$broadcast("updateSelectedAncillariesBroadcast"),
|
||
o(),
|
||
e.showQuantityPickerTakeOwer = !1
|
||
}
|
||
,
|
||
e.redirectToAncillaryPage = function() {
|
||
if (e.$broadcast("updateSelectedAncillariesBroadcast"),
|
||
e.totalQuantity() > 0) {
|
||
var n = function() {
|
||
var t = "";
|
||
t = "True" === i.ancillaryData.bookingInformation.urlEncryptionEnabled ? "" === i.ancillaryData.bookingInformation.refId ? "?bookingId=" + i.ancillaryData.bookingInformation.bookingId : "?RefId=" + i.ancillaryData.bookingInformation.refId : "?bookingId=" + i.ancillaryData.bookingInformation.bookingId;
|
||
t += "&hotel=" + i.ancillaryData.bookingInformation.hotelOperaId,
|
||
e.ancillary.Variants.forEach((function(e) {
|
||
if (e.Quantity > 0) {
|
||
var i = e.Id.includes("_LOY");
|
||
t += (i ? "&variantIdLoy=" : "&variantId=") + e.Id,
|
||
t += (i ? "&quantityLoy=" : "&quantity=") + e.Quantity
|
||
}
|
||
}
|
||
)),
|
||
e.isConfirmationPage && (t += "&isConfirmationPage=" + e.isConfirmationPage);
|
||
return e.$parent.ancillaryPagePathName + t
|
||
}();
|
||
c.toggle((function() {
|
||
t.location.href = n
|
||
}
|
||
))
|
||
}
|
||
o(),
|
||
e.showQuantityPickerTakeOwer = !1
|
||
}
|
||
,
|
||
e.ancillaryIsSelected = function() {
|
||
return e.totalQuantity() > 0
|
||
}
|
||
,
|
||
e.totalQuantity = function() {
|
||
return e.ancillary.Variants.reduce((function(e, t) {
|
||
return e + t.Quantity
|
||
}
|
||
), 0)
|
||
}
|
||
,
|
||
e.updateTrackingInformation = function() {
|
||
var t = i.getCurrentTrackingInfo(e.ancillary.Id)
|
||
, n = {
|
||
trackEvent: !1,
|
||
trackingEvent: "scchange",
|
||
trackingInformation: {}
|
||
};
|
||
n.trackingInformation = t.trackingInfo,
|
||
n.trackingInformation.productcategory = e.$parent.trackingFilterName,
|
||
n.trackingInformation.hotelbnr = i.ancillaryData.bookingInformation ? i.ancillaryData.bookingInformation.bookingId : "",
|
||
n.trackingInformation.hotelid = i.ancillaryData.bookingInformation ? i.ancillaryData.bookingInformation.hotelOperaId : "",
|
||
n.trackEvent = t.trackEvent,
|
||
Object.keys(e.hotelReservationTrackingData).forEach((function(t) {
|
||
var i = t.toLowerCase();
|
||
n.trackingInformation[i] = e.hotelReservationTrackingData[t]
|
||
}
|
||
)),
|
||
n.trackingInformation.hotelpagetype = e.isConfirmationPage ? "hotelconfirmationpage" : "addonpurchase",
|
||
e.ancillaryTrackingObject = n
|
||
}
|
||
}
|
||
angular.module("xenaApp").controller("BookingAncillaryController", e),
|
||
e.$inject = ["$scope", "$window", "AncillaryService"]
|
||
}()
|
||
},
|
||
82672: function(e, t, i) {
|
||
var n = i(19755)
|
||
, a = i(17970)
|
||
, o = i(86455);
|
||
!function() {
|
||
"use strict";
|
||
function e(e, t, i) {
|
||
e.circularLoader = '<div class="circular-loader"></div>',
|
||
e.warningIcon = '<span class="icon icon--info"></span>',
|
||
e.priceHtmlStringOnError = "Error, please reload this page",
|
||
e.hiddenIds = [],
|
||
e.hiddenInDom = !1,
|
||
e.showAncillaryOrderMessage = !0,
|
||
e.init = function(i) {
|
||
e.ancillary = t.getAncillaryById(i),
|
||
null !== window.sweetAlertJson && (e.cancelAlertData = window.sweetAlertJson)
|
||
}
|
||
,
|
||
e.totalQuantity = function() {
|
||
return this.ancillary.Variants.reduce((function(e, t) {
|
||
return e + t.Quantity
|
||
}
|
||
), 0)
|
||
}
|
||
,
|
||
e.isHidden = function(t) {
|
||
return e.hiddenIds.indexOf(t) > -1
|
||
}
|
||
,
|
||
e.totalAncillaryPriceString = function(e, t) {
|
||
if (this.ancillary.Variants.length < 1)
|
||
return "";
|
||
var i = this.ancillary.Variants.filter((function(e) {
|
||
return e.Quantity > 0
|
||
}
|
||
))
|
||
, n = i.filter((function(e) {
|
||
return e.Price.Points > 0
|
||
}
|
||
))
|
||
, a = i.filter((function(e) {
|
||
return e.Price.Amount >= 0
|
||
}
|
||
))
|
||
, o = "";
|
||
return o += n.length > 0 ? n[0].Price.Points * n[0].Quantity + " " + e : "",
|
||
o += i.length > 1 ? " + " : "",
|
||
o += a.length && t.length > 0 ? a[0].Price.Amount * a[0].Quantity + " " + t : ""
|
||
}
|
||
,
|
||
e.deleteAncillary = function(n) {
|
||
o.fire({
|
||
title: e.cancelAlertData.Title,
|
||
html: e.cancelAlertData.Text,
|
||
showCancelButton: !0,
|
||
confirmButtonText: e.cancelAlertData.ConfirmButtonText,
|
||
confirmButtonColor: null,
|
||
cancelButtonText: e.cancelAlertData.CancelButtonText,
|
||
animation: "slide-from-top",
|
||
customClass: "remove-ancillary",
|
||
allowOutsideClick: !0,
|
||
preconfirm: function() {
|
||
e.showSpinner()
|
||
}
|
||
}).then((function(r) {
|
||
if (r.value)
|
||
if (e.thisIsTheLastAncillary()) {
|
||
var s = document.getElementById("my-booking-page-url");
|
||
s ? a.toggle((function() {
|
||
window.location.href = s.value
|
||
}
|
||
)) : t.ClearAncillariesFromUrlAndReload()
|
||
} else
|
||
e.thisIsTheLastAncillaryForCash(n) ? (t.ClearAncillaryVariantFromUrlById(n),
|
||
a.toggle((function() {
|
||
window.location.reload()
|
||
}
|
||
))) : (!function(i) {
|
||
t.clearAncillaryById(i),
|
||
t.ClearAncillaryVariantFromUrlById(i),
|
||
t.saveToSessionStorage(),
|
||
function(t) {
|
||
e.hiddenIds.push(t),
|
||
e.ancillary.Variants.some((function(e) {
|
||
return !!e.Quantity
|
||
}
|
||
)) || (e.hiddenInDom = !0)
|
||
}(i),
|
||
e.showAncillaryOrderMessage = t.orderHasAncillaryWithDeliveryTime()
|
||
}(n),
|
||
t.ancillaryData.isPostBooking ? (e.hideSpinner(),
|
||
o.close()) : (i.priceObject.totalPriceHtmlString = e.circularLoader,
|
||
i.getTotEnterDetailsPrice(window.location.search).then((function(t) {
|
||
e.hideSpinner(),
|
||
t.data.Success ? (i.priceObject.totalPriceHtmlString = t.data.FormattedPrice,
|
||
i.priceObject.firstRoomPriceHtmlString = t.data.FormattedRoomPrice,
|
||
o.close()) : (i.priceObject.totalPriceHtmlString = e.priceHtmlStringOnError,
|
||
o.fire({
|
||
title: e.cancelAlertData.ErrorTitle,
|
||
text: e.cancelAlertData.ErrorText
|
||
}))
|
||
}
|
||
), (function(t) {
|
||
e.hideSpinner(),
|
||
i.priceObject.totalPriceHtmlString = e.priceHtmlStringOnError,
|
||
o.fire({
|
||
title: e.cancelAlertData.ErrorTitle,
|
||
text: e.cancelAlertData.ErrorText
|
||
})
|
||
}
|
||
))),
|
||
a.toggle((function() {
|
||
window.location.reload()
|
||
}
|
||
)))
|
||
}
|
||
))
|
||
}
|
||
,
|
||
e.thisIsTheLastAncillary = function() {
|
||
return 1 === t.getNumberOfSelectedVariants()
|
||
}
|
||
,
|
||
e.thisIsTheLastAncillaryForCash = function(e) {
|
||
return !e.includes("_LOY") && 1 === t.getNumberOfAncillariesForCash()
|
||
}
|
||
,
|
||
e.showSpinner = function() {
|
||
window.Scandic.DisableEnableButton.disable(n("button.swal2-confirm")),
|
||
n("button.swal2-cancel").attr("disabled", !0)
|
||
}
|
||
,
|
||
e.hideSpinner = function() {
|
||
window.Scandic.DisableEnableButton.enable(n("button.swal2-confirm")),
|
||
n("button.swal2-cancel").attr("disabled", !1)
|
||
}
|
||
}
|
||
angular.module("xenaApp").controller("BookingAncillaryEnterDetailsController", e),
|
||
e.$inject = ["$scope", "AncillaryService", "BookingPriceService"]
|
||
}()
|
||
},
|
||
93951: function() {
|
||
!function() {
|
||
"use strict";
|
||
function e(e, t) {
|
||
function i() {
|
||
if (void 0 !== e.options && e.options.length >= e.quantityObject.maxQuantity)
|
||
for (var t = e.isPointsQuantityPicker ? e.quantityObject.fiatQuantity : e.quantityObject.pointsQuantity, i = 0; i < e.quantityObject.maxQuantity + 1; i++)
|
||
i > e.quantityObject.maxQuantity - t ? e.options[i].disabled = !0 : e.isPointsQuantityPicker && i <= e.pointsOptionsToShow ? e.options[i].disabled = !1 : e.isPointsQuantityPicker || (e.options[i].disabled = !1)
|
||
}
|
||
function n(t) {
|
||
if (e.ancillaryVariant.Id.includes(t)) {
|
||
var i = e.options.selectedOption.name;
|
||
return {
|
||
productId: e.ancillaryVariant.Id,
|
||
productPriceOut: e.ancillaryVariant.Price.Amount * i,
|
||
productPointsOut: e.ancillaryVariant.Price.Points * i,
|
||
productUnitsOut: i,
|
||
productPriceIn: e.ancillaryVariant.Price.Amount * e.ancillaryVariant.Quantity,
|
||
productPointsIn: e.ancillaryVariant.Price.Points * e.ancillaryVariant.Quantity,
|
||
productUnitsIn: e.ancillaryVariant.Quantity,
|
||
productcurrency: e.ancillaryVariant.CurrencyTracking,
|
||
quantityHasChanged: e.ancillaryVariant.Quantity !== i
|
||
}
|
||
}
|
||
return null
|
||
}
|
||
e.ancillaryVariant = void 0,
|
||
e.options = [],
|
||
e.notEnoughPointsLeft = !1,
|
||
e.quantityOfAncillaryICanAfford = 0,
|
||
e.emphasizeDropDown = !1,
|
||
e.isPointsQuantityPicker = !1,
|
||
e.userIsAuthenticated = !1,
|
||
e.isLoggedIn = !1,
|
||
e.isBookingOfLoggedInProfile = !1,
|
||
e.isMemberBooking = !1,
|
||
e.showPointsSectionForMember = !1,
|
||
e.showPointsSectionForGuest = !1,
|
||
e.isRoomCancellable = !1,
|
||
e.ancillariesPointsTracker = t.ancillariesPointsTracker,
|
||
e.quantityObject = e.$parent.quantityObject,
|
||
e.$on("updateSelectedAncillariesBroadcast", (function() {
|
||
var i = e.ancillaryVariant.Quantity * e.ancillaryVariant.Price.Points;
|
||
t.setAncillaryQuantity(e.options.selectedOption.id, e.ancillaryVariant.Id),
|
||
e.setEmphasizeDropDown(e.options.selectedOption.id),
|
||
e.updateMyTotalPointsLeft(i)
|
||
}
|
||
)),
|
||
e.$on("updateQuantityPickerBroadcast", (function() {
|
||
if (e.isPointsQuantityPicker) {
|
||
e.quantityOfAncillaryICanAfford = e.getQuantityOfAncillaryICanAfford(),
|
||
e.notEnoughPointsLeft = e.quantityOfAncillaryICanAfford <= 0;
|
||
var n = t.ancillariesPointsTracker.totalPointsLeft
|
||
, a = e.ancillaryVariant.Quantity * e.ancillaryVariant.Price.Points
|
||
, o = n + a;
|
||
e.pointsOptionsToShow = Math.floor(o / e.ancillaryVariant.Price.Points),
|
||
e.pointsOptionsToShow = e.pointsOptionsToShow < 6 ? e.pointsOptionsToShow : 6;
|
||
for (var r = 6; r >= e.pointsOptionsToShow; r--)
|
||
e.options[r].disabled = r > e.quantityOfAncillaryICanAfford;
|
||
i()
|
||
}
|
||
}
|
||
)),
|
||
e.initQuantityPicker = function(i, a, o) {
|
||
e.isPointsQuantityPicker = i.Id.includes("_LOY"),
|
||
e.isRoomCancellable = o.IsRoomCancellable,
|
||
e.userIsAuthenticated = a,
|
||
e.isLoggedIn = o.IsLoggedIn,
|
||
e.isBookingOfLoggedInProfile = o.IsBookingOfLoggedInProfile,
|
||
e.isMemberBooking = o.IsMemberBooking,
|
||
e.showPointsSectionForMember = e.isLoggedIn && e.isMemberBooking && e.isBookingOfLoggedInProfile,
|
||
e.showPointsSectionForGuest = !e.isLoggedIn && e.isMemberBooking,
|
||
e.ancillaryVariant = i,
|
||
e.setOptions(),
|
||
e.setEmphasizeDropDown(e.ancillaryVariant.Quantity),
|
||
t.registerVariantQuantityCallback(n, e.ancillaryVariant.Id),
|
||
t.registerUpdateAncillaryOptionsObservers(e.updateSelectedOptionCallback)
|
||
}
|
||
,
|
||
e.onOptionChanged = function(t) {
|
||
e.updateOptionQuantityTracker(t),
|
||
e.$parent.updateTrackingInformation()
|
||
}
|
||
,
|
||
e.$watch("quantityObject.fiatQuantity", i),
|
||
e.$watch("quantityObject.pointsQuantity", i),
|
||
e.variantIsDisabled = function() {
|
||
return e.notEnoughPointsLeft || e.isPointsQuantityPicker && !e.userIsAuthenticated
|
||
}
|
||
,
|
||
e.notLogedInAndVariantIsForPoints = function() {
|
||
return e.isPointsQuantityPicker && !e.userIsAuthenticated
|
||
}
|
||
,
|
||
e.showPointsSection = function() {
|
||
return !e.isPointsQuantityPicker || !(!e.showPointsSectionForMember && !e.showPointsSectionForGuest)
|
||
}
|
||
,
|
||
e.updateOptionQuantityTracker = function(t) {
|
||
e.isPointsQuantityPicker ? e.quantityObject.pointsQuantity = t.id : e.quantityObject.fiatQuantity = t.id
|
||
}
|
||
,
|
||
e.setEmphasizeDropDown = function(t) {
|
||
e.emphasizeDropDown = !!t
|
||
}
|
||
,
|
||
e.setOptions = function() {
|
||
var t = !1;
|
||
e.quantityOfAncillaryICanAfford = e.isPointsQuantityPicker ? e.getQuantityOfAncillaryICanAfford() : e.quantityObject.maxQuantity,
|
||
e.notEnoughPointsLeft = e.quantityOfAncillaryICanAfford <= 0;
|
||
for (var i = 0; i < e.quantityObject.maxQuantity + 1; i++)
|
||
i > e.quantityOfAncillaryICanAfford && (t = !0),
|
||
e.options.push({
|
||
id: i,
|
||
name: i,
|
||
disabled: t
|
||
});
|
||
e.options.selectedOption = e.options[e.ancillaryVariant.Quantity]
|
||
}
|
||
,
|
||
e.setAncillaryQuantity = function() {
|
||
t.setAncillaryQuantity(e.options.selectedOption.id, e.ancillaryVariant.Id),
|
||
e.setEmphasizeDropDown(e.options.selectedOption.id)
|
||
}
|
||
,
|
||
e.updateSelectedOptionCallback = function(t) {
|
||
e.ancillaryVariant.Id.indexOf(t) > -1 && (e.options.selectedOption = e.options[e.ancillaryVariant.Quantity])
|
||
}
|
||
,
|
||
e.getQuantityOfAncillaryICanAfford = function() {
|
||
var i = 0;
|
||
if (e.ancillaryVariant.Price.Points) {
|
||
var n = e.ancillaryVariant.Quantity * e.ancillaryVariant.Price.Points
|
||
, a = t.ancillariesPointsTracker.totalPointsLeft + n;
|
||
i = (i = Math.floor(a / e.ancillaryVariant.Price.Points)) > e.$parent.quantityObject.maxQuantity ? e.$parent.quantityObject.maxQuantity : i
|
||
}
|
||
return i
|
||
}
|
||
,
|
||
e.updateMyTotalPointsLeft = function(i) {
|
||
var n = e.ancillaryVariant.Quantity * e.ancillaryVariant.Price.Points - i;
|
||
t.ancillariesPointsTracker.totalPointsLeft -= n
|
||
}
|
||
,
|
||
e.getAncillary = function(t) {
|
||
e.ancillaryVariant = t,
|
||
e.setOptions(),
|
||
e.setEmphasizeDropDown(e.ancillaryVariant.Quantity)
|
||
}
|
||
}
|
||
angular.module("xenaApp").controller("BookingAncillaryQuantityPickerController", e),
|
||
e.$inject = ["$scope", "AncillaryService"]
|
||
}()
|
||
},
|
||
26953: function(e, t, i) {
|
||
var n = i(19755);
|
||
function a(e) {
|
||
return function(e) {
|
||
if (Array.isArray(e))
|
||
return o(e)
|
||
}(e) || function(e) {
|
||
if ("undefined" != typeof Symbol && null != e[Symbol.iterator] || null != e["@@iterator"])
|
||
return Array.from(e)
|
||
}(e) || function(e, t) {
|
||
if (!e)
|
||
return;
|
||
if ("string" == typeof e)
|
||
return o(e, t);
|
||
var i = Object.prototype.toString.call(e).slice(8, -1);
|
||
"Object" === i && e.constructor && (i = e.constructor.name);
|
||
if ("Map" === i || "Set" === i)
|
||
return Array.from(e);
|
||
if ("Arguments" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))
|
||
return o(e, t)
|
||
}(e) || function() {
|
||
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
|
||
}()
|
||
}
|
||
function o(e, t) {
|
||
(null == t || t > e.length) && (t = e.length);
|
||
for (var i = 0, n = new Array(t); i < t; i++)
|
||
n[i] = e[i];
|
||
return n
|
||
}
|
||
angular.module("xenaApp").controller("BookingEnterDetailsController", ["$scope", "BookingPriceService", "AncillaryService", function(e, t, o) {
|
||
e.bookingPrice = t.priceObject,
|
||
e.bookingHasNoAncillaries = function() {
|
||
return !o.ancillaryData.ancillaries || !o.ancillaryData.ancillaries.some((function(e) {
|
||
return e.Variants.some((function(e) {
|
||
return !!e.Quantity
|
||
}
|
||
))
|
||
}
|
||
))
|
||
}
|
||
,
|
||
e.bookingHasAncillaryForCash = function() {
|
||
return e.bookingPrice.totalCash() >= 0
|
||
}
|
||
,
|
||
e.bookingHasAncillaryForCashLabelSection = function() {
|
||
return e.bookingPrice.totalCash() > 0
|
||
}
|
||
,
|
||
e.bookingHasAncillaryForPoints = function() {
|
||
return e.bookingPrice.totalPoints() > 0
|
||
}
|
||
,
|
||
e.init = function(e) {
|
||
return t.priceObject.totalPriceHtmlString = e
|
||
}
|
||
;
|
||
var r = i(86455)
|
||
, s = /^30812(?!(0|1|2))[0-9]{9}$/;
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
document.querySelector(".signup-form-section") && !document.querySelector(".signup-form-section").classList.contains("hidden") && document.querySelector("#member-input-group input") && (document.querySelector("#member-input-group input").value = "",
|
||
document.getElementById("memebershipNumber").checked = !1),
|
||
document.querySelector(".membership-input-hidden") && function(e) {
|
||
var t = document.querySelector(".membership-top-input-placehoder").value
|
||
, i = document.querySelector(".membership-bottom-input-placehoder").value
|
||
, a = document.querySelector(".memberShipNumberInput");
|
||
if ("memberTopInputField" === e)
|
||
var o = document.querySelector("#member-input-group .small-text");
|
||
else
|
||
o = document.querySelector(".membership-input-hidden");
|
||
o.parentNode.insertBefore(a, o),
|
||
"memberTopInputField" === e ? n("#member-input-group input").attr("placeholder", t) : n(".form-section .memberShipNumberInput input").attr("placeholder", i)
|
||
}("memberTopInputField"),
|
||
document.querySelector("#member-input-group input") && document.querySelector("#member-input-group input").value && (document.getElementById("memebershipNumber").checked = !0,
|
||
n("#member-input-group").removeClass("hidden"),
|
||
n(".member-input .member-subtext").addClass("hidden")),
|
||
document.querySelector('input[name="memebershipNumber"]') && document.querySelector('input[name="memebershipNumber"]').checked && s.test(document.querySelector("#member-input-group input").value) && d(),
|
||
document.querySelector(".booking-summary-list__totalPrice__item") && document.querySelector(".booking-summary-list__totalPrice__item .price--offer span > span:first-child").classList.contains("bc") && document.querySelector(".booking-summary-list__totalPrice__item .price--offer").classList.add("price--offer-bonus"),
|
||
document.querySelector(".booking-member-price-details__container .price--offer span.price__currency") && document.querySelector(".booking-member-price-details__container .price--offer span > span:first-child").classList.contains("voucher") && document.querySelector(".booking-member-price-details__container .price--offer").classList.add("price--offer-voucher"),
|
||
document.querySelector(".booking-member-price-details .price--offer span.voucher") && document.querySelector(".booking-member-price-details .price--offer span > span:first-child").classList.contains("voucher") && document.querySelector(".booking-member-price-details").classList.add("voucher--price"),
|
||
document.querySelector(".booking-member-price-details .price--offer span.bc") && document.querySelector(".booking-member-price-details .price--offer span > span:first-child").classList.contains("bc") && document.querySelector(".booking-member-price-details").classList.add("bonus--price")
|
||
}
|
||
)),
|
||
n('input[name="memebershipNumber"]').on("click", (function() {
|
||
document.querySelector('input[name="memebershipNumber"]').checked ? (document.querySelector(".joinScandicFriendsCheck-checkbox").checked && n(".joinScandicFriendsCheck-checkbox").trigger("click"),
|
||
document.querySelector("#member-input-group").classList.contains("hidden") && (n("#member-input-group").removeClass("hidden"),
|
||
n(".member-input .member-subtext").addClass("hidden"))) : (c(),
|
||
m())
|
||
}
|
||
));
|
||
var l = null;
|
||
function c() {
|
||
document.querySelector("#member-input-group input").value = "",
|
||
n("#member-input-group").addClass("hidden"),
|
||
n(".member-input .member-subtext").removeClass("hidden"),
|
||
n("#member-input-group #membership-number-0").trigger("change")
|
||
}
|
||
function d() {
|
||
document.querySelector("#booking-member-price--details") && document.querySelector("#booking-member-price--details").classList.contains("hidden") && (n("#booking-member-price--details").removeClass("hidden"),
|
||
document.querySelector("#booking--price--details").classList.add("hidden"),
|
||
document.querySelector("#booking-member-price--details .price--offer span > span:first-child").classList.contains("bc") && n("#booking-member-price--details .price--offer").addClass("price--offer-bonus")),
|
||
function() {
|
||
u || (n(".room-price-info__rate-ribbon").toggleClass("hidden"),
|
||
n(".room__body .pipe-separated-list-item .price").toggleClass("price--switch"),
|
||
n(".room-price-info__rate").toggleClass("hidden"),
|
||
n(".terms--list").toggleClass("hidden"),
|
||
n(".room__rates .room__long-price").toggleClass("price--switch"),
|
||
u = !0,
|
||
p = !1);
|
||
document.querySelector(".booking-details-footer") && h("add")
|
||
}(),
|
||
document.querySelector(".join-scandic-form-section") && document.querySelector(".joinScandicFriendsCheck-checkbox").checked && document.querySelector(".join-scandic-form-section").classList.remove("hidden"),
|
||
document.querySelector("#booking-total-price") && (n("#booking-total-price.price.price--logout-member-price").addClass("price--offer"),
|
||
n(".strike-logout-member-total-price").removeClass("hidden")),
|
||
document.querySelector(".price--logout-member-price.price--offer span.price__currency") && document.querySelector(".price--logout-member-price.price--offer span > span:first-child").classList.contains("voucher") && document.querySelector(".price--logout-member-price.price--offer").classList.add("price--offer-voucher")
|
||
}
|
||
if (n(document).on("blur", "#member-input-group input", (function() {
|
||
if (s.test(document.querySelector("#member-input-group input").value) && document.querySelector('input[name="memebershipNumber"]').checked) {
|
||
var e = n("#member-input-group input").val();
|
||
l !== e && (document.querySelector("#multipleRoomsMemberDiscountAppliedModal") ? b() : g()),
|
||
d(),
|
||
l = e
|
||
} else
|
||
m()
|
||
}
|
||
)),
|
||
n(".joinScandicFriendsCheck-checkbox").on("click", (function() {
|
||
document.querySelector(".joinScandicFriendsCheck-checkbox").checked ? (document.querySelector('input[name="memebershipNumber"]') && (document.querySelector('input[name="memebershipNumber"]').checked = !1,
|
||
c()),
|
||
document.querySelector(".joinScandicFriendsCheck-checkbox").previousElementSibling.setAttribute("disabled", ""),
|
||
document.querySelector(".userWantsToJoinScandicFriendsValue") && a(document.querySelectorAll(".userWantsToJoinScandicFriendsValue")).forEach((function(e) {
|
||
e.value = "true"
|
||
}
|
||
)),
|
||
document.querySelector("#multipleRoomsMemberDiscountAppliedModal") ? v() : f(),
|
||
d()) : (document.querySelector(".joinScandicFriendsCheck-checkbox").previousElementSibling.removeAttribute("disabled"),
|
||
document.querySelector(".userWantsToJoinScandicFriendsValue") && a(document.querySelectorAll(".userWantsToJoinScandicFriendsValue")).forEach((function(e) {
|
||
e.value = "false"
|
||
}
|
||
)),
|
||
m())
|
||
}
|
||
)),
|
||
window.addEventListener("pageshow", (function(e) {
|
||
if ((e.persisted || void 0 !== window.performance && 2 === window.performance.navigation.type || this.sessionStorage.getItem("loginTrackData")) && ("logged in" == JSON.parse(this.sessionStorage.getItem("loginTrackData")).LoginStatus && document.querySelector(".price--offer span:nth-child(1)") && document.querySelector(".price--offer span:nth-child(2)"))) {
|
||
var t = document.querySelector(".price--offer > span:nth-child(1)")
|
||
, i = document.querySelector(".price--offer > span:nth-child(2)")
|
||
, n = "#text" == t.childNodes[0].nodeName ? t.childNodes[0].nodeValue.trim() : t.childNodes[3].nodeValue.trim();
|
||
if (null != i) {
|
||
var a = "#text" == i.childNodes[0].nodeName ? i.childNodes[0].nodeValue.trim() : i.childNodes[3].nodeValue.trim();
|
||
if (parseInt(n) > parseInt(a)) {
|
||
for (var o = new URLSearchParams(window.location.search), r = decodeURI(window.location.href), s = 0; s < 4 && null != o.get("room[" + s + "].ratecode"); ) {
|
||
if (o.get("room[" + s + "].ratecode") && o.get("room[" + s + "].counterratecode")) {
|
||
o.get("room[" + s + "].ratecode");
|
||
r = (r = r.replace("room[" + s + "].ratecode=" + o.get("room[" + s + "].ratecode"), "room[" + s + "].ratecode=" + o.get("room[" + s + "].counterratecode"))).replace("room[" + s + "].counterratecode=" + o.get("room[" + s + "].counterratecode"), "room[" + s + "].counterratecode=" + o.get("room[" + s + "].ratecode"))
|
||
}
|
||
s++
|
||
}
|
||
r = r.replace("#modal", ""),
|
||
window.location.href = r
|
||
}
|
||
}
|
||
}
|
||
}
|
||
)),
|
||
document.querySelector(".member-price-shown"))
|
||
var u = document.querySelector(".member-price-shown").value;
|
||
var p = !u;
|
||
function m() {
|
||
p || (n(".room-price-info__rate-ribbon").toggleClass("hidden"),
|
||
n(".room__body .pipe-separated-list-item .price").toggleClass("price--switch"),
|
||
n(".room-price-info__rate").toggleClass("hidden"),
|
||
n(".terms--list").toggleClass("hidden"),
|
||
n(".room__rates .room__long-price").toggleClass("price--switch"),
|
||
p = !0,
|
||
u = !1),
|
||
document.querySelector("#booking--price--details") && document.querySelector("#booking--price--details").classList.remove("hidden"),
|
||
document.querySelector("#booking-member-price--details") && document.querySelector("#booking-member-price--details").classList.add("hidden"),
|
||
document.querySelector(".join-scandic-form-section") && document.querySelector(".join-scandic-form-section").classList.add("hidden"),
|
||
h("remove"),
|
||
document.querySelector("#booking-total-price") && (n("#booking-total-price.price.price--logout-member-price").removeClass("price--offer"),
|
||
n(".strike-logout-member-total-price").addClass("hidden")),
|
||
document.querySelector(".price--logout-member-price.price--offer-voucher span.price__currency") && document.querySelector(".price--logout-member-price.price--offer-voucher span > span:first-child").classList.contains("voucher") && document.querySelector(".price--logout-member-price").classList.remove("price--offer-voucher")
|
||
}
|
||
function h(e) {
|
||
"add" === e ? a(document.querySelectorAll(".booking-details-footer li.booking-price-details__item .price.price--member")).forEach((function(e) {
|
||
2 === e.children.length && e.classList.add("price--offer")
|
||
}
|
||
)) : "remove" === e && document.querySelector(".booking-details-footer") && a(document.querySelectorAll(".booking-details-footer li.booking-price-details__item .price.price--member")).forEach((function(e) {
|
||
e.classList.remove("price--offer")
|
||
}
|
||
))
|
||
}
|
||
var f = function(e) {
|
||
r.fire({
|
||
title: n("#memberDiscountAppliedModal").attr("data-js-confirm"),
|
||
html: n("#memberDiscountAppliedModal").attr("data-confirm-text") + '<p class="newPriceText"><strong>' + n("#memberDiscountAppliedModal").attr("data-confirm-price-text") + '</p></strong><div class="inline-block"><p class="newPrice">' + n(".booking-member-price-details .price--offer").html() + '</p><p class="oldPrice"><strong>' + n(".booking-member-price-details .price--offer-original").html() + "</strong></p></div>",
|
||
imageUrl: "/Static/img/icons/checkmark-circle.svg",
|
||
showConfirmButton: !0,
|
||
buttonsStyling: !0,
|
||
confirmButtonColor: null,
|
||
customClass: n("#memberDiscountAppliedModal").attr("data-class"),
|
||
allowOutsideClick: !0,
|
||
animation: !1
|
||
})
|
||
}
|
||
, g = function(e) {
|
||
r.fire({
|
||
title: n("#memberShipNumberDiscountAppliedModal").attr("data-js-confirm"),
|
||
html: '<p class="newPriceText u-margin-top-5"><strong>' + n("#memberDiscountAppliedModal").attr("data-confirm-price-text") + '</p></strong><div class="inline-block"><p class="newPrice">' + n(".booking-member-price-details .price--offer").html() + '</p><p class="oldPrice"><strong>' + n(".booking-member-price-details .price--offer-original").html() + "</strong></p></div>",
|
||
imageUrl: "/Static/img/icons/checkmark-circle.svg",
|
||
showConfirmButton: !0,
|
||
buttonsStyling: !0,
|
||
confirmButtonColor: null,
|
||
customClass: n("#memberShipNumberDiscountAppliedModal").attr("data-class"),
|
||
allowOutsideClick: !0,
|
||
animation: !1
|
||
})
|
||
}
|
||
, v = function(e) {
|
||
r.fire({
|
||
title: n("#multipleRoomsMemberDiscountAppliedModal").attr("data-js-confirm"),
|
||
html: n("#multipleRoomsMemberDiscountAppliedModal").attr("data-confirm-text") + '<p class="newPriceText"><strong>' + n("#multipleRoomsMemberDiscountAppliedModal").attr("data-confirm-price-text") + '</p></strong><div class="inline-block"><p class="newPrice">' + n(".booking-member-price-details .price--offer").html() + '</p><p class="oldPrice"><strong>' + n(".booking-member-price-details .price--offer-original").html() + '</strong></p></div><p class="multiRoomNote u-text-align-left"><strong>' + n("#multipleRoomsMemberDiscountAppliedModal").attr("data-conform-multiroom-note-label") + " </strong>" + n("#multipleRoomsMemberDiscountAppliedModal").attr("data-conform-multiroom-note-text") + "</p>",
|
||
imageUrl: "/Static/img/icons/checkmark-circle.svg",
|
||
showConfirmButton: !0,
|
||
buttonsStyling: !0,
|
||
confirmButtonColor: null,
|
||
customClass: n("#multipleRoomsMemberDiscountAppliedModal").attr("data-class"),
|
||
allowOutsideClick: !0,
|
||
animation: !1
|
||
})
|
||
}
|
||
, b = function(e) {
|
||
r.fire({
|
||
title: n("#multipleRoomsmemberShipNumberDiscountAppliedModal").attr("data-js-confirm"),
|
||
html: '<p class="newPriceText u-margin-top-5"><strong>' + n("#multipleRoomsMemberDiscountAppliedModal").attr("data-confirm-price-text") + '</p></strong><div class="inline-block"><p class="newPrice">' + n(".booking-member-price-details .price--offer").html() + '</p><p class="oldPrice"><strong>' + n(".booking-member-price-details .price--offer-original").html() + '</strong></p></div><p class="multiRoomNote u-text-align-left"><strong>' + n("#multipleRoomsMemberDiscountAppliedModal").attr("data-conform-multiroom-note-label") + " </strong>" + n("#multipleRoomsmemberShipNumberDiscountAppliedModal").attr("data-conform-multiroom-note-text") + "</p>",
|
||
imageUrl: "/Static/img/icons/checkmark-circle.svg",
|
||
showConfirmButton: !0,
|
||
buttonsStyling: !0,
|
||
confirmButtonColor: null,
|
||
customClass: n("#multipleRoomsMemberDiscountAppliedModal").attr("data-class"),
|
||
allowOutsideClick: !0,
|
||
animation: !1
|
||
})
|
||
}
|
||
}
|
||
])
|
||
},
|
||
50972: function() {
|
||
angular.module("xenaApp").controller("BookingModuleController", ["$scope", "$http", "BookingPriceService", function(e, t, i) {
|
||
e.priceObject = i.priceObject,
|
||
e.init = function(e) {
|
||
"" !== e && (i.priceObject.totalPriceHtmlString = e)
|
||
}
|
||
}
|
||
])
|
||
},
|
||
27903: function(e, t, i) {
|
||
var n = i(19755);
|
||
angular.module("xenaApp").controller("BookingRoomsAndRatesController", ["$scope", "$sce", "$timeout", function(e, t, i) {
|
||
function a(t) {
|
||
return void 0 !== e.legData[t]
|
||
}
|
||
function o(t, i) {
|
||
var a = Number(i.currentTarget.dataset.dtmAvailableRooms)
|
||
, o = t.rate.roomType;
|
||
if (window.Scandic.roomAvailableData["room" + e.currentLegNumber] !== o) {
|
||
var r = document.querySelectorAll(".booking__room__box")
|
||
, s = t.roomTypeName.toLowerCase().replace(/[^a-z0-9]+/g, "_");
|
||
if (document.querySelector("input[name='singleAvailableRoom']"))
|
||
var l = document.querySelector("input[name='singleAvailableRoom']").value;
|
||
if (document.querySelector("input[name='pluralAvailableRooms']"))
|
||
var c = document.querySelector("input[name='pluralAvailableRooms']").value;
|
||
window.Scandic.roomAvailableData[o] || (window.Scandic.roomAvailableData[o] = a);
|
||
var d = window.Scandic.roomAvailableData["room" + e.currentLegNumber];
|
||
d && d != o && (window.Scandic.roomAvailableData[d] = window.Scandic.roomAvailableData[d] + 1),
|
||
window.Scandic.roomAvailableData["room" + e.currentLegNumber] = o;
|
||
var u = window.Scandic.roomAvailableData["room" + e.currentLegNumber + "_roomType"];
|
||
window.Scandic.roomAvailableData["room" + e.currentLegNumber + "_roomType"] = s,
|
||
window.Scandic.roomAvailableData[o] = window.Scandic.roomAvailableData[o] - 1,
|
||
e.legNumbers.forEach((function(e) {
|
||
var t = n(r[e]).find("#" + s + " .room-pay__btn");
|
||
if (s)
|
||
var i = r[e].querySelector("#" + s + " .room__available-rooms");
|
||
window.Scandic.roomAvailableData[o] >= 0 && i && (1 === window.Scandic.roomAvailableData[o] ? i.innerHTML = l.replace(/\d/g, window.Scandic.roomAvailableData[o]) : (i.innerHTML = c.replace(/\d/g, window.Scandic.roomAvailableData[o]),
|
||
0 === window.Scandic.roomAvailableData[o] && t.each((function(e) {
|
||
n(this).attr("disabled", "disabled")
|
||
}
|
||
))));
|
||
var a = n(r[e]).find("#" + u + " .room-pay__btn");
|
||
if (u)
|
||
var p = r[e].querySelector("#" + u + " .room__available-rooms");
|
||
d && d != o && p && (1 === window.Scandic.roomAvailableData[d] ? p.innerHTML = l.replace(/\d/g, window.Scandic.roomAvailableData[d]) : p.innerHTML = c.replace(/\d/g, window.Scandic.roomAvailableData[d]),
|
||
a.each((function(e) {
|
||
n(this).removeAttr("disabled")
|
||
}
|
||
)))
|
||
}
|
||
))
|
||
}
|
||
}
|
||
e.currentLegNumber = 0,
|
||
e.legNumbers = [],
|
||
e.legData = [],
|
||
e.allRoomsSelected = !1,
|
||
e.registerSelectableRoom = function(t) {
|
||
-1 === e.legNumbers.indexOf(t) && e.legNumbers.push(t),
|
||
e.isMultiRoomBooking() && (e.currentLegNumber = null)
|
||
}
|
||
,
|
||
e.selectRate = function(t, r) {
|
||
e.legData[e.currentLegNumber] = t,
|
||
function(t) {
|
||
n("#room-ribbon-image-" + e.currentLegNumber).html(n("#room-media-" + t.roomDomId).html()),
|
||
e.legData[e.currentLegNumber].roomTypeHeading = n("#room-heading-" + t.roomDomId).text(),
|
||
e.legData[e.currentLegNumber].rateTooltipId = t.rateConditionsTooltip
|
||
}(t),
|
||
e.isSingleRoomBooking() ? i((function() {
|
||
n("#rooms-and-rates-form").submit()
|
||
}
|
||
)) : e.legNumbers.every((function(e) {
|
||
return a(e)
|
||
}
|
||
)) ? (o(t, r),
|
||
e.currentLegNumber = null,
|
||
e.allRoomsSelected = !0,
|
||
e.allRoomsSelected && (n(window).width() < 950 ? n("body, html").animate({
|
||
scrollTop: n("#hotel_body").offset().top - 60
|
||
}, "slow") : n("body, html").animate({
|
||
scrollTop: n("#hotel_body").offset().top
|
||
}, "slow"))) : (o(t, r),
|
||
e.currentLegNumber = function() {
|
||
var t = e.legNumbers.filter((function(e) {
|
||
return !a(e)
|
||
}
|
||
));
|
||
if (t.sort(),
|
||
e.currentLegNumber < Math.max.apply(this, t))
|
||
for (; t[0] < e.currentLegNumber; )
|
||
t.push(t.shift());
|
||
return t[0]
|
||
}(),
|
||
i((function() {
|
||
window.Scandic.ensureElementIsVisible(n("#booking-leg-" + e.currentLegNumber))
|
||
}
|
||
)))
|
||
}
|
||
,
|
||
e.hasSelectedRateForCurrentRoom = function() {
|
||
return void 0 !== e.legData[e.currentLegNumber]
|
||
}
|
||
,
|
||
e.getSelectedRateCode = function() {
|
||
return e.hasSelectedRateForCurrentRoom() ? e.legData[e.currentLegNumber].rate.rateCode : void 0
|
||
}
|
||
,
|
||
e.getSelectedRoomType = function() {
|
||
return e.hasSelectedRateForCurrentRoom() ? e.legData[e.currentLegNumber].rate.roomType : void 0
|
||
}
|
||
,
|
||
e.selectedRoomTypeIn = function(t) {
|
||
return t.indexOf(e.getSelectedRoomType()) > -1
|
||
}
|
||
,
|
||
e.multiRoomFormData = function() {
|
||
var t = {};
|
||
return e.legData.forEach((function(e) {
|
||
for (var i in e.params)
|
||
e.params.hasOwnProperty(i) && (t[i] = e.params[i])
|
||
}
|
||
)),
|
||
t
|
||
}
|
||
,
|
||
e.toggleLeg = function(t) {
|
||
e.currentLegNumber === t ? e.currentLegNumber = null : e.currentLegNumber = t
|
||
}
|
||
,
|
||
e.formattedPriceForLeg = function(t) {
|
||
if (!e.legData[t])
|
||
return "";
|
||
var i = e.legData[t].rate
|
||
, n = i.price + " " + i.currency;
|
||
return i.numberOfBonusCheques > 0 ? i.numberOfBonusCheques + " BC + " + n : n
|
||
}
|
||
,
|
||
e.totalPrice = function() {
|
||
return e.legData.reduce((function(e, t) {
|
||
return e + t.rate.price
|
||
}
|
||
), 0)
|
||
}
|
||
,
|
||
e.formattedTotalPrice = function() {
|
||
var i = {
|
||
numberOfBonusCheques: 0,
|
||
price: 0,
|
||
currency: void 0
|
||
};
|
||
e.legData.forEach((function(e) {
|
||
e && (i.numberOfBonusCheques += e.rate.numberOfBonusCheques,
|
||
i.price += e.rate.price,
|
||
i.currency = i.currency || e.rate.currency)
|
||
}
|
||
));
|
||
var n = i.price + ' <span class="price__currency">' + i.currency + "</span>";
|
||
return i.numberOfBonusCheques > 0 ? t.trustAsHtml(i.numberOfBonusCheques + ' <span class="price__currency">BC</span> <span class="price__plus">+</span> ' + n) : t.trustAsHtml(n)
|
||
}
|
||
,
|
||
e.rateConditionsText = function() {
|
||
var t, i = e.legData.map((function(e) {
|
||
return e.rate.rateConditions
|
||
}
|
||
));
|
||
return (t = i).every((function(e) {
|
||
return e === t[0]
|
||
}
|
||
)) ? i[0] : e.termsDifferCondition || ""
|
||
}
|
||
,
|
||
e.isSingleRoomBooking = function() {
|
||
return 1 === e.legNumbers.length
|
||
}
|
||
,
|
||
e.isMultiRoomBooking = function() {
|
||
return e.legNumbers.length > 1
|
||
}
|
||
,
|
||
e.submitBooking = function() {
|
||
i((function() {
|
||
n("#rooms-and-rates-form").submit()
|
||
}
|
||
))
|
||
}
|
||
,
|
||
window.Scandic.roomAvailableData = {}
|
||
}
|
||
])
|
||
},
|
||
62865: function() {
|
||
angular.module("xenaApp").controller("BookingRoomsAndRatesLegController", ["$scope", function(e) {
|
||
e.legNumber = void 0,
|
||
e.isSelected = !1,
|
||
e.showRates = !1,
|
||
e.roomRateData = {
|
||
params: []
|
||
},
|
||
e.rateModel = {
|
||
index: null
|
||
},
|
||
e.$parent.$watch("currentLegNumber", (function(t) {
|
||
e.editingLeg = t === e.legNumber
|
||
}
|
||
)),
|
||
e.selectRate = function(t, i) {
|
||
e.isSelected = !0,
|
||
e.data = t,
|
||
e.$parent.selectRate(t, i)
|
||
}
|
||
,
|
||
e.toggleLegEditing = function() {
|
||
e.$parent.toggleLeg(e.legNumber),
|
||
e.editingLeg = !e.editingLeg
|
||
}
|
||
,
|
||
e.shouldShowSpeechBubble = function() {
|
||
return null === e.currentLegNumber ? 0 === e.legNumber && !e.isSelected : e.editingLeg && !e.isSelected
|
||
}
|
||
,
|
||
e.toggleRates = function() {
|
||
return e.showRates = !e.showRates
|
||
}
|
||
,
|
||
e.initSetPreSelected = function(t, i) {
|
||
e.roomRateData.params = t,
|
||
e.rateModel.index = i
|
||
}
|
||
,
|
||
e.roomRatesChanged = function(t) {
|
||
return e.roomRateData.params = t
|
||
}
|
||
,
|
||
e.submitPartialPaymentBooking = function() {
|
||
e.$parent.legData[0] = e.roomRateData,
|
||
e.$parent.submitBooking()
|
||
}
|
||
}
|
||
])
|
||
},
|
||
3620: function(e, t, i) {
|
||
var n = i(19755);
|
||
!function() {
|
||
"use strict";
|
||
function e(e, t, i) {
|
||
e.circularLoader = '<div class="circular-loader__centering-container"><div class="modal__circular-loader-container"><div class="circular-loader circular-loader--light circular-loader--large"></div></div></div>',
|
||
e.userPoints = new Number(i.userData.points).formatNumberThousandDelimiter(),
|
||
e.donationWasSuccess = !1,
|
||
e.donationHasError = !1,
|
||
e.donationAmount = 0,
|
||
e.sendingDonation = !1,
|
||
e.charity = {
|
||
id: null
|
||
},
|
||
e.init = function() {
|
||
i.registerResetCharityObserver(e.resetCharity)
|
||
}
|
||
,
|
||
e.setDonationAmount = function(t) {
|
||
e.donationAmount = t
|
||
}
|
||
,
|
||
e.setDonation = function() {
|
||
i.chosenCharity.id = e.charity.id
|
||
}
|
||
,
|
||
e.addHashToUrlForHistoryNavigation = function() {
|
||
var e = window.location.href + "#";
|
||
window.history.pushState(null, "", e)
|
||
}
|
||
,
|
||
e.resetAll = function() {
|
||
e.donationWasSuccess = !1,
|
||
e.donationHasError = !1,
|
||
i.chosenCharity.id = null,
|
||
i.notifyResetCharityObservers()
|
||
}
|
||
,
|
||
e.resetCharity = function() {
|
||
e.charity.id = null
|
||
}
|
||
,
|
||
e.postDonation = function() {
|
||
e.sendingDonation = !0,
|
||
t.post("/ajax/donate", e.charity).then((function(t) {
|
||
e.sendingDonation = !1,
|
||
e.updatePoints(),
|
||
e.donationWasSuccess = t.data.Success,
|
||
e.donationHasError = !t.data.Success,
|
||
i.donationsData.donationWasSuccess = t.data.Success
|
||
}
|
||
), (function(t) {
|
||
e.sendingDonation = !1,
|
||
e.donationHasError = !0
|
||
}
|
||
))
|
||
}
|
||
,
|
||
e.updatePoints = function() {
|
||
n("#my-pages-hero-area__points-section").html(e.circularLoader),
|
||
i.getAvailablePoints().then((function(e) {
|
||
var t = new Number(e.data.Points).formatNumberThousandDelimiter();
|
||
n("#my-pages-hero-area__points-section").html(t)
|
||
}
|
||
), (function() {
|
||
i.userData.points = ""
|
||
}
|
||
))
|
||
}
|
||
,
|
||
e.notEnoughPoints = function(e) {
|
||
return i.userData.points < e
|
||
}
|
||
,
|
||
e.noCharitySelected = function() {
|
||
return null === e.charity.id
|
||
}
|
||
,
|
||
e.otherCharityIsChosen = function() {
|
||
return null !== i.chosenCharity.id && !e.thisCharityIsChosen()
|
||
}
|
||
,
|
||
e.thisCharityIsChosen = function() {
|
||
return null !== e.charity.id && e.charity.id === i.chosenCharity.id
|
||
}
|
||
,
|
||
e.getPointsLeft = function() {
|
||
return i.userData.points - e.donationAmount
|
||
}
|
||
}
|
||
angular.module("xenaApp").controller("CharityController", e),
|
||
e.$inject = ["$scope", "$http", "DonationsService"]
|
||
}()
|
||
},
|
||
88154: function() {
|
||
angular.module("xenaApp").controller("CreditCardController", ["$scope", "creditCardService", function(e, t) {
|
||
function i(t) {
|
||
e.creditCardRequired = a(),
|
||
n(t)
|
||
}
|
||
function n(t) {
|
||
var i = !e.creditCardRequired || !e.cardIsExpired();
|
||
t.MonthField && (t.MonthField.$setValidity("expiration", i),
|
||
t.YearField.$setValidity("expiration", i))
|
||
}
|
||
function a() {
|
||
return e.creditCardData.creditCardIsInRequiredContext && "saved" !== e.useFlexCard && e.captureCreditCardDetails
|
||
}
|
||
e.creditCardData = t.data,
|
||
e.useFlexCard = void 0,
|
||
e.creditCardRequired = a(),
|
||
e.currentFormData = function() {
|
||
return {
|
||
YearField: e.creditCardForm[e.expirationYearFieldName],
|
||
MonthField: e.creditCardForm[e.expirationMonthFieldName],
|
||
ExpirationYear: e.expirationYear,
|
||
ExpirationMonth: e.expirationMonth
|
||
}
|
||
}
|
||
,
|
||
e.$watch("guaranteeForLateArrival", (function() {
|
||
e.creditCardData.creditCardIsInRequiredContext = void 0 === e.guaranteeForLateArrival || e.guaranteeForLateArrival,
|
||
i(e.currentFormData())
|
||
}
|
||
)),
|
||
e.$watch("useFlexCard", (function() {
|
||
return i(e.currentFormData)
|
||
}
|
||
)),
|
||
e.$watch("expirationMonth", (function() {
|
||
return n(e.currentFormData())
|
||
}
|
||
)),
|
||
e.$watch("expirationYear", (function() {
|
||
return n(e.currentFormData())
|
||
}
|
||
)),
|
||
e.cardIsExpired = function() {
|
||
var t = new Date
|
||
, i = t.getMonth() + 1;
|
||
return e.expirationYear < t.getFullYear() || parseInt(e.expirationYear) === t.getFullYear() && e.expirationMonth < i
|
||
}
|
||
}
|
||
])
|
||
},
|
||
76114: function() {
|
||
!function() {
|
||
"use strict";
|
||
function e(e, t) {
|
||
e.donationPageTitle = "",
|
||
e.donationConfirmTitle = "",
|
||
e.donationReciptTitle = "",
|
||
e.init = function(i, n, a, o) {
|
||
e.donationPageTitle = i,
|
||
e.donationConfirmTitle = n,
|
||
e.donationReciptTitle = a,
|
||
t.userData.points = o
|
||
}
|
||
,
|
||
e.noCharityIsChosen = function() {
|
||
return null === t.chosenCharity.id
|
||
}
|
||
,
|
||
e.donationWasSuccess = function() {
|
||
return t.donationsData.donationWasSuccess
|
||
}
|
||
,
|
||
e.getDonationsTitle = function() {
|
||
return e.noCharityIsChosen() ? e.donationPageTitle : t.donationsData.donationWasSuccess ? e.donationReciptTitle : e.donationConfirmTitle
|
||
}
|
||
,
|
||
e.charityIsChosen = function() {
|
||
return null !== t.chosenCharity.id
|
||
}
|
||
}
|
||
angular.module("xenaApp").controller("DonationsPageController", e),
|
||
e.$inject = ["$scope", "DonationsService"]
|
||
}()
|
||
},
|
||
73986: function(e, t, i) {
|
||
var n = i(19755)
|
||
, a = i(86455);
|
||
angular.module("xenaApp").controller("MyBookingAncillaryController", ["$scope", "$http", "AncillaryService", "BookingPriceService", "$window", function(e, t, i, o, r) {
|
||
e.spinner = '<div class="circular-loader"></div>',
|
||
e.ancillaryId = 0,
|
||
e.ancillariesToShow = i.ShowAncillariesObject.ancillaries,
|
||
e.cancelAlertData = {},
|
||
e.ancillaryTrackingData = {},
|
||
e.ancillaryVariantIds = [],
|
||
e.init = function(e) {
|
||
i.ShowAncillariesObject.ancillaries.indexOf(e) < 0 && i.ShowAncillariesObject.ancillaries.push(e),
|
||
this.ancillaryId = e,
|
||
this.cancelAlertData = r.sweetAlertJson
|
||
}
|
||
,
|
||
e.initSetTrackingData = function(e, t, n, a, o, s, l) {
|
||
this.ancillaryVariantIds = e.split(","),
|
||
angular.forEach(this.ancillaryVariantIds, (function(e) {
|
||
i.ShowAncillariesObject.ancillaries.indexOf(e) < 0 && i.ShowAncillariesObject.ancillaries.push(e)
|
||
}
|
||
)),
|
||
this.ancillaryId = this.ancillaryVariantIds[0],
|
||
this.cancelAlertData = r.sweetAlertJson;
|
||
var c = {};
|
||
c = {
|
||
hotelId: s,
|
||
hotelbnr: o,
|
||
productid: e,
|
||
productunits: t,
|
||
productprice: n,
|
||
productcurrencycode: a,
|
||
event: "scremove"
|
||
},
|
||
(c = Object.assign(c, hotelReservationDataObj)).HotelPageType = l ? "hotelconfirmationpage" : "addonpurchase";
|
||
var d = this;
|
||
Object.keys(c).forEach((function(e) {
|
||
var t = e.toLowerCase();
|
||
d.ancillaryTrackingData[t] = c[e]
|
||
}
|
||
))
|
||
}
|
||
,
|
||
e.showAncillary = function() {
|
||
return e.ancillariesToShow.indexOf(e.ancillaryId) > -1
|
||
}
|
||
,
|
||
e.cancelAncillary = function(t, s) {
|
||
a.fire({
|
||
title: e.cancelAlertData.Title,
|
||
html: e.cancelAlertData.Text,
|
||
confirmButtonText: e.cancelAlertData.ConfirmButtonText,
|
||
confirmButtonColor: null,
|
||
showCancelButton: !0,
|
||
cancelButtonText: e.cancelAlertData.CancelButtonText,
|
||
animation: "slide-from-top",
|
||
allowOutsideClick: function() {
|
||
return !a.isLoading()
|
||
},
|
||
customClass: "remove-ancillary",
|
||
preConfirm: function() {
|
||
return e.showSpinner(),
|
||
i.cancelAncillaryFromBookingPut(t, e.ancillaryVariantIds, s).then((function(e) {
|
||
return e
|
||
}
|
||
), (function(t) {
|
||
e.hideSpinner(),
|
||
a.fire({
|
||
title: e.cancelAlertData.ErrorTitle,
|
||
text: e.cancelAlertData.ErrorText,
|
||
customClass: "remove-ancillary"
|
||
})
|
||
}
|
||
))
|
||
}
|
||
}).then((function(l) {
|
||
if (l.value)
|
||
if (l.value.data.Success) {
|
||
e.hideSpinner(),
|
||
r.datalayer.push(e.ancillaryTrackingData),
|
||
a.fire({
|
||
title: e.cancelAlertData.SuccessTitle,
|
||
text: e.cancelAlertData.SuccessText,
|
||
customClass: "remove-ancillary"
|
||
}),
|
||
o.priceObject.totalPriceHtmlString = e.spinner,
|
||
angular.forEach(e.ancillaryVariantIds, (function(e) {
|
||
var t = i.ShowAncillariesObject.ancillaries.indexOf(e);
|
||
i.ShowAncillariesObject.ancillaries[t] = ""
|
||
}
|
||
)),
|
||
o.getTotalPrice(t, s).then((function(e) {
|
||
o.priceObject.totalPriceHtmlString = e.data.FormattedPrice
|
||
}
|
||
));
|
||
var c = n(".l-booking-panel.l-booking-panel--my-booking");
|
||
c && c.hide()
|
||
} else
|
||
a.fire({
|
||
title: e.cancelAlertData.ErrorTitle,
|
||
text: e.cancelAlertData.ErrorText,
|
||
customClass: "remove-ancillary"
|
||
})
|
||
}
|
||
))
|
||
}
|
||
,
|
||
e.showSpinner = function() {
|
||
window.Scandic.DisableEnableButton.disable(n("button.swal2-confirm")),
|
||
n("button.swal2-cancel").attr("disabled", !0)
|
||
}
|
||
,
|
||
e.hideSpinner = function() {
|
||
window.Scandic.DisableEnableButton.enable(n("button.swal2-confirm")),
|
||
n("button.swal2-cancel").attr("disabled", !1)
|
||
}
|
||
}
|
||
])
|
||
},
|
||
81222: function(e, t, i) {
|
||
var n = i(86455);
|
||
angular.module("xenaApp").controller("ProfileMembershipCardsController", ["$scope", function(e) {
|
||
function t(t) {
|
||
e.profileMembershipCardsDetails.splice(t, 1),
|
||
e.$apply()
|
||
}
|
||
e.maxCards = 9,
|
||
e.profileMembershipCardsDetails = [],
|
||
e.$watch("profileMembershipCardsDetails", (function(t) {
|
||
e.profileMembershipCardsDetailsJson = angular.toJson(e.profileMembershipCardsDetails)
|
||
}
|
||
), !0),
|
||
e.loadCardDetails = function(t) {
|
||
t && t.length > 0 && t.forEach((function(t) {
|
||
e.profileMembershipCardsDetails.push({
|
||
cardtype: t.cardtype,
|
||
cardnumber: t.cardnumber,
|
||
operaid: t.operaid
|
||
})
|
||
}
|
||
))
|
||
}
|
||
,
|
||
e.addNewCard = function() {
|
||
if (e.profileMembershipCardsDetails.length < e.maxCards) {
|
||
e.profileMembershipCardsDetails.push({
|
||
cardtype: "",
|
||
cardnumber: "",
|
||
operaid: ""
|
||
})
|
||
}
|
||
}
|
||
,
|
||
e.isCardtypeMissing = function(e) {
|
||
return "" === e.cardtype && "" !== e.cardnumber
|
||
}
|
||
,
|
||
e.isCardnumberMissing = function(e) {
|
||
return "" !== e.cardtype && "" === e.cardnumber
|
||
}
|
||
,
|
||
e.removeCardWithConfirmation = function(e, i, a) {
|
||
var o = a.currentTarget;
|
||
"" !== e.cardtype || "" !== e.cardnumber ? n.fire({
|
||
title: o.getAttribute("data-js-confirm-title"),
|
||
html: o.getAttribute("data-confirm-text"),
|
||
showCancelButton: !0,
|
||
confirmButtonText: o.getAttribute("data-confirm-ok"),
|
||
cancelButtonText: o.getAttribute("data-confirm-cancel"),
|
||
confirmButtonColor: "#00838e",
|
||
animation: "slide-from-top",
|
||
allowOutsideClick: !0,
|
||
buttonsStyling: !0,
|
||
customClass: "remove-card",
|
||
showLoaderOnConfirm: !1
|
||
}).then((function(e) {
|
||
e.value && t(i)
|
||
}
|
||
)) : t(i)
|
||
}
|
||
}
|
||
])
|
||
},
|
||
10712: function(e, t, i) {
|
||
var n = i(19755);
|
||
!function() {
|
||
"use strict";
|
||
function e(e, t) {
|
||
e.showInformationMessage = !1,
|
||
e.init = function(t) {
|
||
e.showMoreShowLessLabel = t
|
||
}
|
||
,
|
||
e.toggleCreditCardInformation = function(i, a) {
|
||
e.showInformationMessage = !e.showInformationMessage;
|
||
var o = n("[data-expandable]")
|
||
, r = o.outerHeight();
|
||
e.showInformationMessage || o.parent().css("height", r),
|
||
o.parent().css({
|
||
height: e.showInformationMessage ? r : 0,
|
||
opacity: e.showInformationMessage ? 1 : 0
|
||
}),
|
||
e.showMoreShowLessLabel = e.showInformationMessage ? a : i,
|
||
e.showInformationMessage && t((function() {
|
||
o.parent().css("height", "")
|
||
}
|
||
), 200)
|
||
}
|
||
}
|
||
angular.module("xenaApp").controller("ScandicInformationAlertController", e),
|
||
e.$inject = ["$scope", "$timeout"]
|
||
}()
|
||
},
|
||
95454: function() {
|
||
!function() {
|
||
"use strict";
|
||
function e(e) {
|
||
e.showMoreText = "",
|
||
e.showLessText = "",
|
||
e.showAll = !1,
|
||
e.showMoreShowLessText = e.showMoreText,
|
||
e.isExpandedClass = "",
|
||
e.ShowMoreClick = function(t) {
|
||
t.stopPropagation(),
|
||
e.showAll = !e.showAll,
|
||
e.showMoreShowLessText = e.showAll ? e.showLessText : e.showMoreText,
|
||
e.isExpandedClass = e.showAll ? "is-expanded" : ""
|
||
}
|
||
,
|
||
e.init = function(t, i) {
|
||
e.showMoreText = t,
|
||
e.showLessText = i,
|
||
e.showMoreShowLessText = e.showMoreText
|
||
}
|
||
}
|
||
angular.module("xenaApp").controller("ShowMoreController", e),
|
||
e.$inject = ["$scope"]
|
||
}()
|
||
},
|
||
1466: function(e, t, i) {
|
||
var n = i(19755);
|
||
!function() {
|
||
"use strict";
|
||
function e(e) {
|
||
e.isOpen = !1,
|
||
e.toggleContainer = function() {
|
||
e.isOpen = !e.isOpen,
|
||
setTimeout((function() {
|
||
n(".hotel-slider.royalSlider").data("royalSlider").updateSliderSize()
|
||
}
|
||
), 30)
|
||
}
|
||
,
|
||
e.toggleContainerDown = function(t) {
|
||
e.isOpen = !e.isOpen;
|
||
var i = n("#" + t).offset()
|
||
, a = "none" == n(".navigation-bar__main__expander").css("display") ? i.top : i.top - n(".navigation-bar__main").height();
|
||
n("html, body").animate({
|
||
scrollTop: a
|
||
}, 800)
|
||
}
|
||
,
|
||
e.toggleContainerHotelBlock = function() {
|
||
e.toggleContainer();
|
||
var t = n("#hotel_block").offset()
|
||
, i = "none" == n(".navigation-bar__main__expander").css("display") ? t.top : t.top - n(".navigation-bar__main").height();
|
||
setTimeout((function() {
|
||
n("html, body").animate({
|
||
scrollTop: i
|
||
}, 500)
|
||
}
|
||
), 100)
|
||
}
|
||
,
|
||
e.init = function(t) {
|
||
e.roomLabel = t
|
||
}
|
||
}
|
||
angular.module("xenaApp").controller("ToggleController", e),
|
||
e.$inject = ["$scope"]
|
||
}()
|
||
},
|
||
91519: function() {
|
||
angular.module("xenaApp").directive("blacklist", (function() {
|
||
return {
|
||
require: "ngModel",
|
||
link: function(e, t, i, n) {
|
||
var a = i.blacklist.split(",");
|
||
n.$parsers.unshift((function(e) {
|
||
var t = i.blacklistIdentifier ? !a.includes(e[i.blacklistIdentifier]) : !a.includes(e);
|
||
return n.$setValidity("blacklist", t),
|
||
t ? e : void 0
|
||
}
|
||
)),
|
||
n.$formatters.unshift((function(e) {
|
||
return n.$setValidity("blacklist", i.blacklistIdentifier && e ? !a.includes(e[i.blacklistIdentifier]) : !a.includes(e)),
|
||
e
|
||
}
|
||
))
|
||
}
|
||
}
|
||
}
|
||
))
|
||
},
|
||
99492: function() {
|
||
angular.module("xenaApp").directive("errorMessageFor", (function() {
|
||
return {
|
||
link: function(e, t, i) {
|
||
var n = i.errorMessageFor.split(/,\s+/)
|
||
, a = t.closest("[data-ng-form]")
|
||
, o = "";
|
||
function r() {
|
||
return e.showAllValidations || c((function(e) {
|
||
return e.$touched
|
||
}
|
||
))
|
||
}
|
||
function s() {
|
||
return i.error.match(/\(\)/) ? e.$eval(i.error) : c((function(e) {
|
||
return !!e.$error[i.error]
|
||
}
|
||
))
|
||
}
|
||
function l() {
|
||
r() && s() ? t.show() : t.hide()
|
||
}
|
||
function c(t) {
|
||
return n.some((function(i) {
|
||
return t(e[o][i])
|
||
}
|
||
))
|
||
}
|
||
o = 0 !== a.length ? a.attr("data-ng-form") : t.closest("form").attr("name"),
|
||
e.$watch((function() {
|
||
return r()
|
||
}
|
||
), (function() {
|
||
l()
|
||
}
|
||
)),
|
||
e.$watch((function() {
|
||
return s()
|
||
}
|
||
), (function() {
|
||
l()
|
||
}
|
||
))
|
||
}
|
||
}
|
||
}
|
||
))
|
||
},
|
||
36185: function() {
|
||
angular.module("xenaApp").directive("legNumber", (function() {
|
||
return {
|
||
link: function(e, t, i) {}
|
||
}
|
||
}
|
||
))
|
||
},
|
||
17163: function(e, t, i) {
|
||
var n = i(19755);
|
||
angular.module("xenaApp").directive("scrollTo", [function() {
|
||
return {
|
||
restrict: "A",
|
||
link: function(e, t, i) {
|
||
t.click(function(e) {
|
||
return function() {
|
||
n("html, body").animate({
|
||
scrollTop: n(e.scrollTo).offset().top - 100
|
||
}, 300)
|
||
}
|
||
}(i))
|
||
}
|
||
}
|
||
}
|
||
])
|
||
},
|
||
21306: function() {
|
||
angular.module("xenaApp").directive("showWithEventTrigger", (function() {
|
||
return {
|
||
link: function(e, t, i) {
|
||
var n = i.showWithEventTrigger;
|
||
e.$watch(n, (function(e, i) {
|
||
e ? (t.show(),
|
||
t.trigger("show")) : t.hide()
|
||
}
|
||
))
|
||
}
|
||
}
|
||
}
|
||
))
|
||
},
|
||
6762: function() {
|
||
angular.module("xenaApp").directive("slideable", (function() {
|
||
return {
|
||
restrict: "C",
|
||
compile: function(e, t) {
|
||
var i = e.html();
|
||
return e.html('<div class="slideable_content" style="margin:0 !important; padding:0 !important" >' + i + "</div>"),
|
||
function(e, t, i) {
|
||
i.duration = i.duration ? i.duration : "1s",
|
||
i.easing = i.easing ? i.easing : "ease-in-out",
|
||
t.css({
|
||
overflow: "hidden",
|
||
height: "0px",
|
||
transitionProperty: "height",
|
||
transitionDuration: i.duration,
|
||
transitionTimingFunction: i.easing
|
||
})
|
||
}
|
||
}
|
||
}
|
||
}
|
||
)).directive("slideToggle", (function() {
|
||
return {
|
||
restrict: "A",
|
||
link: function(e, t, i) {
|
||
var n, a;
|
||
i.expanded = !1,
|
||
t.bind("click", (function() {
|
||
if (n || (n = document.querySelector(i.slideToggle)),
|
||
a || (a = n.querySelector(".slideable_content")),
|
||
i.expanded)
|
||
n.style.height = "0px";
|
||
else {
|
||
a.style.border = "1px solid rgba(0,0,0,0)";
|
||
var e = a.clientHeight;
|
||
a.style.border = 0,
|
||
n.style.height = e + "px"
|
||
}
|
||
i.expanded = !i.expanded
|
||
}
|
||
))
|
||
}
|
||
}
|
||
}
|
||
))
|
||
},
|
||
50867: function(e, t, i) {
|
||
var n = i(19755);
|
||
angular.module("xenaApp").directive("tabLoop", ["$log", "$templateCache", "$compile", function(e, t, i) {
|
||
return {
|
||
restrict: "A",
|
||
link: function(e, t, i) {
|
||
!function(e) {
|
||
var t = e.slice(0, 2)
|
||
, i = e.slice(-2)
|
||
, a = t.first()
|
||
, o = i.last()
|
||
, r = t.last()
|
||
, s = i.first();
|
||
n(o).focus((function() {
|
||
n(r).focus()
|
||
}
|
||
)),
|
||
n(a).focus((function() {
|
||
n(s).focus()
|
||
}
|
||
))
|
||
}(n("a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]", t))
|
||
}
|
||
}
|
||
}
|
||
])
|
||
},
|
||
60979: function(e, t, i) {
|
||
var n = i(19755);
|
||
angular.module("xenaApp").directive("toolTip", ["$log", "$templateCache", "$compile", function(e, t, i) {
|
||
return {
|
||
restrict: "A",
|
||
link: function(e, t, i) {
|
||
i.$$element.click(function(e, t) {
|
||
return function() {
|
||
n(".custom-select option:enabled").each((function() {
|
||
var e = n(this);
|
||
"" !== e.attr("title") && e.attr("title", "")
|
||
}
|
||
)),
|
||
n(".custom-select option[disabled]").each((function() {
|
||
var e = n(this);
|
||
e.attr("title") !== t.toolTip && e.attr("title", t.toolTip)
|
||
}
|
||
))
|
||
}
|
||
}(0, i))
|
||
}
|
||
}
|
||
}
|
||
])
|
||
},
|
||
20905: function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
|
||
var $ = __webpack_require__(19755);
|
||
angular.module("xenaApp").directive("form", (function() {
|
||
"use strict";
|
||
function scrollToFirstError(e) {
|
||
var t = getHighestPosition(e.closest("form").find(".ng-invalid"));
|
||
void 0 === t || withinViewportHeight(t) || $("html, body").animate({
|
||
scrollTop: t - 120 + "px"
|
||
})
|
||
}
|
||
function getHighestPosition(e) {
|
||
var t;
|
||
return $.each(e, (function(e, i) {
|
||
var n = $(i).offset().top;
|
||
(void 0 === t || n < t) && (t = n)
|
||
}
|
||
)),
|
||
t
|
||
}
|
||
function withinViewportHeight(e) {
|
||
var t = $(window);
|
||
return !(e < t.scrollTop()) && e <= t.scrollTop() + t.height()
|
||
}
|
||
return {
|
||
restrict: "E",
|
||
require: "?ngController",
|
||
link: function link(scope, elm, attrs) {
|
||
var onSubmitHandler = attrs.onsubmit;
|
||
elm.attr("onsubmit", null),
|
||
elm.attr("data-angular-validation", !0),
|
||
void 0 !== elm.attr("name") && elm.on("submit", (function(event) {
|
||
return scope[elm.attr("name")].$valid ? (void 0 !== onSubmitHandler && eval(onSubmitHandler),
|
||
elm.trigger("submitValidForm"),
|
||
!0) : void 0 !== elm.closest("form").attr("data-skip-validation") && "false" !== elm.closest("form").attr("data-skip-validation") ? (elm.trigger("submitValidForm"),
|
||
!0) : (event.preventDefault(),
|
||
event.stopPropagation(),
|
||
scope.showAllValidations = !0,
|
||
scope.$apply(),
|
||
void scrollToFirstError(elm))
|
||
}
|
||
))
|
||
}
|
||
}
|
||
}
|
||
))
|
||
},
|
||
70579: function() {
|
||
angular.module("xenaApp").directive("validateUniqueness", ["uniquenessService", function(e) {
|
||
return {
|
||
require: "ngModel",
|
||
link: function(t, i, n, a) {
|
||
a.$validators.unique = function(i, o) {
|
||
return !!a.$isEmpty(i) || e.isUnique(t, n.ngModel, o)
|
||
}
|
||
}
|
||
}
|
||
}
|
||
])
|
||
},
|
||
62485: function() {
|
||
angular.module("xenaApp").directive("valueType", (function() {
|
||
var e = {
|
||
string: function(e) {
|
||
return e.value
|
||
},
|
||
int: function(e) {
|
||
return parseInt(e.value)
|
||
},
|
||
float: function(e) {
|
||
return parseFloat(e.value)
|
||
},
|
||
date: function(e) {
|
||
return Date.parse(e.value)
|
||
},
|
||
checkbox: function(e) {
|
||
return !!e.checked
|
||
},
|
||
select: function(e, t) {
|
||
return t.val()
|
||
}
|
||
};
|
||
function t(t, i, n) {
|
||
return "function" == typeof e[t] ? e[t](i, n) : (console.warn('No parser available for type "' + t + '", assuming type "string"'),
|
||
e.string(i, n))
|
||
}
|
||
return {
|
||
require: "ngModel",
|
||
restrict: "A",
|
||
link: function(e, i, n, a) {
|
||
void 0 !== n.pickADate ? e[n.pickADate] = t(n.valueType, n, i) : e[n.ngModel] = t(n.valueType, n, i)
|
||
}
|
||
}
|
||
}
|
||
))
|
||
},
|
||
68095: function(e, t, i) {
|
||
var n = i(19755);
|
||
function a(e, t) {
|
||
var i = Object.keys(e);
|
||
if (Object.getOwnPropertySymbols) {
|
||
var n = Object.getOwnPropertySymbols(e);
|
||
t && (n = n.filter((function(t) {
|
||
return Object.getOwnPropertyDescriptor(e, t).enumerable
|
||
}
|
||
))),
|
||
i.push.apply(i, n)
|
||
}
|
||
return i
|
||
}
|
||
function o(e) {
|
||
for (var t = 1; t < arguments.length; t++) {
|
||
var i = null != arguments[t] ? arguments[t] : {};
|
||
t % 2 ? a(Object(i), !0).forEach((function(t) {
|
||
r(e, t, i[t])
|
||
}
|
||
)) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : a(Object(i)).forEach((function(t) {
|
||
Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
|
||
}
|
||
))
|
||
}
|
||
return e
|
||
}
|
||
function r(e, t, i) {
|
||
return t in e ? Object.defineProperty(e, t, {
|
||
value: i,
|
||
enumerable: !0,
|
||
configurable: !0,
|
||
writable: !0
|
||
}) : e[t] = i,
|
||
e
|
||
}
|
||
!function() {
|
||
"use strict";
|
||
function e(e, t) {
|
||
var i = this;
|
||
function a(e) {
|
||
return e.reduce((function(e, t) {
|
||
return e + t.Variants.reduce((function(e, t) {
|
||
return e + t.Price.Points * t.Quantity
|
||
}
|
||
), 0)
|
||
}
|
||
), 0)
|
||
}
|
||
function r() {
|
||
var e = null;
|
||
if ("sessionStorage"in window && null !== window.sessionStorage) {
|
||
var t = window.sessionStorage.getItem("ancillaryData");
|
||
t && (e = JSON.parse(t))
|
||
}
|
||
return e
|
||
}
|
||
this.ancillaryData = {
|
||
ancillaries: []
|
||
},
|
||
this.setAncillaryData = function(e) {
|
||
return i.ancillaryData = e ? JSON.parse(JSON.stringify(e)) : {}
|
||
}
|
||
,
|
||
this.ShowAncillariesObject = {
|
||
ancillaries: []
|
||
},
|
||
this.ancillariesPointsTracker = {
|
||
totalPointsLeft: 0,
|
||
totalInitialPoints: 0
|
||
},
|
||
this.getVariantQuantityCallbacks = [],
|
||
this.updateAncillaryOptionsObservers = [],
|
||
this.registerVariantQuantityCallback = function(e, t) {
|
||
for (var n = 0; n < i.getVariantQuantityCallbacks.length; n++) {
|
||
i.getVariantQuantityCallbacks[n].id === t && i.getVariantQuantityCallbacks.splice(n, 1)
|
||
}
|
||
var a = {
|
||
callback: e,
|
||
id: t
|
||
};
|
||
i.getVariantQuantityCallbacks.push(a)
|
||
}
|
||
,
|
||
this.getCurrentTrackingInfo = function(e) {
|
||
var t = {
|
||
trackingInfo: {
|
||
productid: "",
|
||
productpriceout: "",
|
||
productpointsout: "",
|
||
productunitsout: "",
|
||
productpricein: "",
|
||
productpointsin: "",
|
||
productunitsin: "",
|
||
productcurrency: ""
|
||
},
|
||
trackEvent: !1
|
||
};
|
||
return angular.forEach(i.getVariantQuantityCallbacks, (function(i) {
|
||
var n = i.callback(e)
|
||
, a = ",";
|
||
null != n && (t.trackingInfo.productid && (a = ""),
|
||
t.trackingInfo.productid += n.productId + a,
|
||
t.trackingInfo.productpriceout += n.productPriceOut.toString() + a,
|
||
t.trackingInfo.productpointsout += n.productPointsOut.toString() + a,
|
||
t.trackingInfo.productunitsout += n.productUnitsOut.toString() + a,
|
||
t.trackingInfo.productpricein += n.productPriceIn.toString() + a,
|
||
t.trackingInfo.productpointsin += n.productPointsIn.toString() + a,
|
||
t.trackingInfo.productunitsin += n.productUnitsIn.toString() + a,
|
||
t.trackingInfo.productcurrency += n.productcurrency,
|
||
t.trackEvent = t.trackEvent || n.quantityHasChanged)
|
||
}
|
||
)),
|
||
t
|
||
}
|
||
,
|
||
this.registerUpdateAncillaryOptionsObservers = function(e) {
|
||
return i.updateAncillaryOptionsObservers.push(e)
|
||
}
|
||
,
|
||
this.notifyUpdateAncillaryOptionsObservers = function(e) {
|
||
return angular.forEach(i.updateAncillaryOptionsObservers, (function(t) {
|
||
t(e)
|
||
}
|
||
))
|
||
}
|
||
,
|
||
this.setAncillaryQuantity = function(e, t) {
|
||
i.ancillaryData.ancillaries.forEach((function(i) {
|
||
i.Variants.forEach((function(i) {
|
||
return i.Quantity = i.Id === t ? e : i.Quantity
|
||
}
|
||
))
|
||
}
|
||
))
|
||
}
|
||
,
|
||
this.calculateTotalPointsLeftFromAncillaryData = function() {
|
||
var e = i.ancillariesPointsTracker.totalInitialPoints - a(i.ancillaryData.ancillaries);
|
||
e >= 0 ? i.ancillariesPointsTracker.totalPointsLeft = e : (i.ancillaryData.ancillaries = i.ancillaryData.ancillaries.map((function(e) {
|
||
return e.Variants.map((function(e) {
|
||
return e.Id.includes("LOY") ? o(o({}, e), {}, {
|
||
Quantity: 0
|
||
}) : e
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
i.ancillariesPointsTracker.totalPointsLeft = i.ancillariesPointsTracker.totalInitialPoints)
|
||
}
|
||
,
|
||
this.getTotalSelectedPoints = function() {
|
||
return a(i.ancillaryData.ancillaries)
|
||
}
|
||
,
|
||
this.getTotalSelectedCash = function() {
|
||
return i.ancillaryData.ancillaries.reduce((function(e, t) {
|
||
return e + t.Variants.reduce((function(e, t) {
|
||
return e + t.Price.Amount * t.Quantity
|
||
}
|
||
), 0)
|
||
}
|
||
), 0)
|
||
}
|
||
,
|
||
this.setAncillaryDataFromSessionStorage = function(e) {
|
||
var t = r();
|
||
null !== t ? null === t.isAuthenticated || t.isAuthenticated !== e.isAuthenticated ? (i.setAncillaryData(e),
|
||
i.saveToSessionStorage()) : i.setAncillaryData(t) : i.setAncillaryData(e)
|
||
}
|
||
,
|
||
this.updateAncillaryData = function(e) {
|
||
var t, n, a = r();
|
||
null != a ? (t = e,
|
||
function(e) {
|
||
e.ancillaries = e.ancillaries.map((function(e) {
|
||
return e.Variants = e.Variants.map((function(e) {
|
||
return o(o({}, e), {}, {
|
||
Quantity: 0
|
||
})
|
||
}
|
||
)),
|
||
e
|
||
}
|
||
))
|
||
}(n = a),
|
||
n = n.ancillaries.map((function(e) {
|
||
var i = t.ancillaries.find((function(t) {
|
||
return t.Id === e.Id
|
||
}
|
||
));
|
||
return i && (e.Variants = e.Variants.map((function(e) {
|
||
var t = i.Variants.find((function(t) {
|
||
return t.Id === e.Id
|
||
}
|
||
));
|
||
return t ? o(o({}, e), {}, {
|
||
Quantity: t.Quantity
|
||
}) : e
|
||
}
|
||
))),
|
||
e
|
||
}
|
||
)),
|
||
i.setAncillaryData(a),
|
||
i.saveToSessionStorage()) : i.setAncillaryData(e)
|
||
}
|
||
,
|
||
this.getNumberOfSelectedVariants = function() {
|
||
return i.ancillaryData.ancillaries.flatMap((function(e) {
|
||
return e.Variants
|
||
}
|
||
)).filter((function(e) {
|
||
return !!e.Quantity
|
||
}
|
||
)).length
|
||
}
|
||
,
|
||
this.getNumberOfAncillariesForCash = function() {
|
||
return i.ancillaryData.ancillaries.reduce((function(e, t) {
|
||
return t.Variants.some((function(e) {
|
||
return !!e.Quantity && !!e.Price.Amount
|
||
}
|
||
)) ? e + 1 : e
|
||
}
|
||
), 0)
|
||
}
|
||
,
|
||
this.orderHasAncillaryWithDeliveryTime = function() {
|
||
return i.ancillaryData.ancillaries.some((function(e) {
|
||
return function(e) {
|
||
return !e.DeliveryTimeOptional && e.Variants.some((function(e) {
|
||
return !!e.Quantity
|
||
}
|
||
))
|
||
}(e)
|
||
}
|
||
))
|
||
}
|
||
,
|
||
this.cancelAncillaryFromBookingPut = function(e, i, n) {
|
||
var a = "/ajax/bookings/" + e + "/ancillary/cancel"
|
||
, o = {
|
||
Ids: i,
|
||
LastName: n
|
||
};
|
||
return t.post(a, o)
|
||
}
|
||
,
|
||
this.getAncillary = function(e) {
|
||
return i.ancillaryData.ancillaries[e]
|
||
}
|
||
,
|
||
this.getAncillaryById = function(e) {
|
||
return i.ancillaryData.ancillaries.find((function(t) {
|
||
return t.Id === e
|
||
}
|
||
))
|
||
}
|
||
,
|
||
this.getAncillaries = function() {
|
||
return i.ancillaryData.ancillaries
|
||
}
|
||
,
|
||
this.saveToSessionStorage = function() {
|
||
"sessionStorage"in window && null !== window.sessionStorage && window.sessionStorage.setItem("ancillaryData", JSON.stringify(i.ancillaryData))
|
||
}
|
||
,
|
||
this.deleteFromSessionStorage = function() {
|
||
"sessionStorage"in window && null !== window.sessionStorage && window.sessionStorage.removeItem("ancillaryData")
|
||
}
|
||
,
|
||
this.clearAncillaryById = function(e) {
|
||
i.ancillaryData.ancillaries = function(e, t) {
|
||
return e.map((function(e) {
|
||
return e.Variants = e.Variants.map((function(e) {
|
||
return e.Id === t ? o(o({}, e), {}, {
|
||
Quantity: 0
|
||
}) : e
|
||
}
|
||
)),
|
||
e
|
||
}
|
||
))
|
||
}(i.ancillaryData.ancillaries, e)
|
||
}
|
||
,
|
||
this.ClearAncillaryVariantFromUrlById = function(e) {
|
||
var t = window.location.search.split("&")
|
||
, i = ""
|
||
, a = t.find((function(t) {
|
||
return t.endsWith(e)
|
||
}
|
||
));
|
||
if (a) {
|
||
var o = a.indexOf(e);
|
||
i = a.slice(0, o - 3) + "quantity"
|
||
}
|
||
i && (t = t.map((function(e) {
|
||
return e.includes(i) ? e.slice(0, e.indexOf("=")) + "=0" : e
|
||
}
|
||
)));
|
||
var r, s, l = window.location.pathname + t.join("&"), c = window.location.protocol + "//" + window.location.host + l;
|
||
window.history.replaceState({
|
||
path: c
|
||
}, "", c),
|
||
r = l,
|
||
(s = n("#loginform-returnurl")) && s.val(r)
|
||
}
|
||
,
|
||
this.ClearAncillariesFromUrlAndReload = function() {
|
||
var e = window.location.search.split("&").filter((function(e) {
|
||
return !e.includes("ancillaries")
|
||
}
|
||
))
|
||
, t = window.location.protocol + "//" + window.location.host + window.location.pathname + e.join("&");
|
||
window.location.href = t
|
||
}
|
||
}
|
||
angular.module("xenaApp").service("AncillaryService", e),
|
||
e.$inject = ["$rootScope", "$http"],
|
||
document.querySelector("#adm-ancillaries") && (window.ancillarieDataModule = function() {
|
||
var e = JSON.parse(document.querySelector("#adm-ancillaries").value)
|
||
, t = {};
|
||
if (e = e || [],
|
||
document.querySelector("#adm-bookingId"))
|
||
t = {
|
||
ancillaries: e,
|
||
bookingInformation: {
|
||
bookingId: JSON.parse(document.querySelector("#adm-bookingId").value),
|
||
hotelOperaId: JSON.parse(document.querySelector("#adm-hotelOperaId").value),
|
||
refId: document.querySelector("#adm-refId").value,
|
||
urlEncryptionEnabled: document.querySelector("#adm-urlEncryptionEnabled").value
|
||
}
|
||
};
|
||
else {
|
||
var i = document.querySelector("#adm-deliveryTimeOptions") ? JSON.parse(document.querySelector("#adm-deliveryTimeOptions").value) : []
|
||
, n = document.querySelector("#adm-ancillariesFilterCategories") ? JSON.parse(document.querySelector("#adm-ancillariesFilterCategories").value) : "";
|
||
t = {
|
||
ancillaries: e,
|
||
message: "",
|
||
deliveryTimes: {
|
||
options: i || [],
|
||
selectedDeliveryTime: JSON.parse(document.querySelector("#adm-selectedDeliveryTime").value)
|
||
},
|
||
isAuthenticated: JSON.parse(document.querySelector("#adm-isAuthenticated").value),
|
||
isPostBooking: JSON.parse(document.querySelector("#adm-isPostBooking").value),
|
||
ancillariesFilterCategories: n
|
||
}
|
||
}
|
||
return {
|
||
ancillaryData: t
|
||
}
|
||
}()),
|
||
document.querySelector("#hotel-reservation-data") && (window.hotelReservationDataObj = JSON.parse(document.querySelector("#hotel-reservation-data").value)),
|
||
document.querySelector("#HRD-hotelbnr") && hotelReservationDataObj && (hotelReservationDataObj.hotelbnr = document.querySelector("#HRD-hotelbnr").value),
|
||
document.querySelector("#HRD-hotelid") && hotelReservationDataObj && (hotelReservationDataObj.hotelid = document.querySelector("#HRD-hotelid").value),
|
||
window.sweetAlertJson = document.querySelector("#sweetAlertLbls") ? JSON.parse(document.querySelector("#sweetAlertLbls").value) : ""
|
||
}()
|
||
},
|
||
84887: function() {
|
||
!function() {
|
||
"use strict";
|
||
function e(e, t, i) {
|
||
this.spinner = '<div class="circular-loader"></div>',
|
||
this.priceObject = {
|
||
totalPriceHtmlString: this.spinner,
|
||
firstRoomPriceHtmlString: this.spinner,
|
||
totalPoints: i.getTotalSelectedPoints,
|
||
totalCash: i.getTotalSelectedCash
|
||
},
|
||
this.getTotalPrice = function(e, i) {
|
||
var n = "/ajax/bookings/" + e + "/totalprice"
|
||
, a = {
|
||
Id: 0,
|
||
LastName: i
|
||
};
|
||
return t.post(n, a)
|
||
}
|
||
,
|
||
this.getTotEnterDetailsPrice = function(e) {
|
||
var i = "/ajax/enterdetails/totalprice/" + e;
|
||
return t.get(i)
|
||
}
|
||
}
|
||
angular.module("xenaApp").service("BookingPriceService", e),
|
||
e.$inject = ["$rootScope", "$http", "AncillaryService"]
|
||
}()
|
||
},
|
||
60530: function(e, t, i) {
|
||
var n = i(19755)
|
||
, a = i(19755);
|
||
window.xenaApp.factory("calendarService", (function() {
|
||
var e = {};
|
||
function t(e) {
|
||
return 60 * e * 1e3
|
||
}
|
||
return e.data = {
|
||
maxFromDate: new Date,
|
||
minToDate: new Date,
|
||
maxToDate: new Date,
|
||
today: new Date((new Date).getTime() + t((new Date).getTimezoneOffset()))
|
||
},
|
||
e.init = function(i, n, a, o, r) {
|
||
e.initCalendarLanguage(),
|
||
e.addcalendarOpenCallback();
|
||
var s = t(new Date(a || e.data.today).getTimezoneOffset())
|
||
, l = t(new Date(o || e.data.today).getTimezoneOffset());
|
||
r && (i.fromDate = a ? new Date(new Date(a).getTime() + s) : e.data.today,
|
||
i.toDate = o ? new Date(new Date(o).getTime() + l) : e.data.today),
|
||
n.fromDate = i.fromDate,
|
||
e.setDateRangeValues(new Date(i.fromDate))
|
||
}
|
||
,
|
||
e.getDateDayDifference = function(e, t) {
|
||
var i = Math.abs(t.getTime() - e.getTime());
|
||
return Math.ceil(i / 864e5)
|
||
}
|
||
,
|
||
e.setDateRangeValues = function(t) {
|
||
e.data.maxFromDate = (new Date).addDays(395),
|
||
e.furthestLimit = e.data.maxFromDate.addDays(1),
|
||
e.data.minToDate = t.addDays(1),
|
||
e.data.maxToDate = t.addDays(99),
|
||
e.data.maxToDate > e.furthestLimit && (e.data.maxToDate = new Date(e.furthestLimit.getTime()))
|
||
}
|
||
,
|
||
e.initCalendarLanguage = function() {
|
||
n.fn.pickadate = n.fn.pickadate || {
|
||
defaults: {}
|
||
};
|
||
var e = n("html").attr("lang");
|
||
void 0 !== PICKADATE_TRANSLATIONS[e] && a.extend(a.fn.pickadate.defaults, PICKADATE_TRANSLATIONS[e])
|
||
}
|
||
,
|
||
e.addcalendarOpenCallback = function() {
|
||
a.extend(a.fn.pickadate.defaults, {
|
||
onOpen: function() {
|
||
var e = n(this.$holder[0]);
|
||
e.one("transitionend", (function() {
|
||
e.focus()
|
||
}
|
||
))
|
||
}
|
||
})
|
||
}
|
||
,
|
||
e.adjustDates = function(t, i, n) {
|
||
var a;
|
||
t !== i && (e.setDateRangeValues(new Date(t)),
|
||
a = e.getDateDayDifference(i, n.toDate),
|
||
n.toDate = t.addDays(a),
|
||
n.toDate < e.data.minToDate && (n.toDate = new Date(e.data.minToDate.getTime())),
|
||
n.toDate > e.data.maxToDate && (n.toDate = new Date(e.data.maxToDate.getTime())),
|
||
n.fromDate = t)
|
||
}
|
||
,
|
||
e
|
||
}
|
||
))
|
||
},
|
||
6430: function() {
|
||
window.xenaApp.factory("creditCardService", (function() {
|
||
var e = {
|
||
data: {
|
||
creditCardIsInRequiredContext: !0
|
||
}
|
||
};
|
||
return e
|
||
}
|
||
))
|
||
},
|
||
46934: function() {
|
||
!function() {
|
||
"use strict";
|
||
function e(e, t) {
|
||
this.resetCharitytObserverCallbacks = [],
|
||
this.chosenCharity = {
|
||
id: null
|
||
},
|
||
this.userData = {
|
||
points: 0
|
||
},
|
||
this.donationsData = {
|
||
donationWasSuccess: !1
|
||
},
|
||
this.registerResetCharityObserver = function(e) {
|
||
this.resetCharitytObserverCallbacks.push(e)
|
||
}
|
||
,
|
||
this.notifyResetCharityObservers = function() {
|
||
angular.forEach(this.resetCharitytObserverCallbacks, (function(e) {
|
||
e()
|
||
}
|
||
))
|
||
}
|
||
,
|
||
this.getAvailablePoints = function() {
|
||
return t.get("/ajax/getPoints/")
|
||
}
|
||
}
|
||
angular.module("xenaApp").service("DonationsService", e),
|
||
e.$inject = ["$rootScope", "$http"]
|
||
}()
|
||
},
|
||
53129: function() {
|
||
window.xenaApp.factory("uniquenessService", (function() {
|
||
var e = {}
|
||
, t = {};
|
||
return e.isUnique = function(e, i, n) {
|
||
return function(e, i) {
|
||
t[i] = t[i] || [],
|
||
-1 === t[i].indexOf(e) && t[i].push(e)
|
||
}(e, i),
|
||
!t[i].some((function(t) {
|
||
return t !== e && "" !== t.$eval(i) && t.$eval(i) === n
|
||
}
|
||
))
|
||
}
|
||
,
|
||
e
|
||
}
|
||
))
|
||
},
|
||
20419: function() {
|
||
"use strict";
|
||
angular.module("xenaApp").service("UserService", ["$rootScope", "$http", function() {
|
||
this.UserData = {
|
||
userIsAuthenticated: !1
|
||
},
|
||
this.setUserData = function(e) {
|
||
this.UserData = e
|
||
}
|
||
}
|
||
])
|
||
},
|
||
17970: function(e, t, i) {
|
||
"use strict";
|
||
i.r(t),
|
||
i.d(t, {
|
||
init: function() {
|
||
return r
|
||
},
|
||
toggle: function() {
|
||
return s
|
||
},
|
||
show: function() {
|
||
return l
|
||
},
|
||
hide: function() {
|
||
return c
|
||
}
|
||
});
|
||
var n = i(19755)
|
||
, a = !1
|
||
, o = !1
|
||
, r = function() {
|
||
n("#loader".length < 1) && n("body").append('\n <div id="loader" class="modal">\n <div class="modal__circular-loader-container">\n <div class="circular-loader circular-loader--light circular-loader--large"></div>\n </div>\n <div class="modal__background-layer"></div>\n </div>\n '),
|
||
n(document).on("keyup", (function(e) {
|
||
27 === e.keyCode && c()
|
||
}
|
||
)),
|
||
o = !0
|
||
}
|
||
, s = function(e) {
|
||
o || r(),
|
||
(a = !a) ? l() : c(),
|
||
"function" == typeof e && (-1 != navigator.userAgent.indexOf("Safari") && -1 == navigator.userAgent.indexOf("Chrome") ? setTimeout((function() {
|
||
e()
|
||
}
|
||
), 500) : e())
|
||
}
|
||
, l = function() {
|
||
a = !0,
|
||
n("#loader").show()
|
||
}
|
||
, c = function() {
|
||
a = !1,
|
||
n("#loader").hide()
|
||
}
|
||
},
|
||
93748: function(e, t, i) {
|
||
"use strict";
|
||
i.r(t),
|
||
i.d(t, {
|
||
init: function() {
|
||
return p
|
||
},
|
||
initLoginPopup: function() {
|
||
return C
|
||
},
|
||
onClickFunction: function() {
|
||
return m
|
||
}
|
||
});
|
||
var n, a, o, r = i(15898), s = i(98780), l = i(19755), c = "#js-login-modal", d = "js-login";
|
||
l(window).on("load", (function() {
|
||
var e = decodeURIComponent(window.location.href).split("?registration=");
|
||
e[1] && ("" !== e[1] && "success" === e[1] || "success" === e[1]) && (0,
|
||
s.fR)()
|
||
}
|
||
));
|
||
var u = function() {
|
||
window.sessionStorage.removeItem("userHtmlForLoggedInOrLoggedOut"),
|
||
window.sessionStorage.removeItem("loginTrackData"),
|
||
window.localStorage.removeItem("loginTrackData"),
|
||
window.localStorage.removeItem("userLoggedInId")
|
||
}
|
||
, p = function() {
|
||
l('*[data-js="login-modal-open"]').off("click"),
|
||
l('*[data-js="login-modal-open"]').on("click", m);
|
||
var e = (o = l(c)).data("js-action");
|
||
if (e)
|
||
switch (e) {
|
||
case "activate-login":
|
||
u(),
|
||
window.location.search.indexOf("uppd=1") > -1 ? b() : h();
|
||
break;
|
||
case "activate-verify-email":
|
||
f(),
|
||
u()
|
||
}
|
||
l('*[data-js="unlock-profile-modal-open"]').on("click", (function(e) {
|
||
e.preventDefault();
|
||
var t = e.target
|
||
, i = l("#js-mfa-modal").data("js-unlock-profile");
|
||
v(i, t)
|
||
}
|
||
))
|
||
}
|
||
, m = function(e) {
|
||
l(e.currentTarget).attr("data-js-trigger-promotion") && localStorage.setItem("data-js-trigger-promotion", !0),
|
||
e.target.classList.contains("nav-secondary__item__link") ? (0,
|
||
s.ay)("member-login-top") : e.target.classList.contains("member-banner-login-btn") && (0,
|
||
s.ay)("member-login-banner"),
|
||
e.preventDefault(),
|
||
g(e),
|
||
u(),
|
||
l.ajax({
|
||
type: "POST",
|
||
url: "/ajax/startpage/setsessionredirecturl"
|
||
})
|
||
}
|
||
, h = function() {
|
||
var e = o.data(d);
|
||
v(e)
|
||
}
|
||
, f = function() {
|
||
setTimeout((function() {
|
||
var e = o.data("js-verify-email");
|
||
v(e)
|
||
}
|
||
), 1e3)
|
||
}
|
||
, g = function(e) {
|
||
var t = e.target
|
||
, i = l(c).data(d);
|
||
v(i, t)
|
||
}
|
||
, v = function(e, t) {
|
||
t = t || null;
|
||
var i = '<iframe src="' + e + '" id="login-iframe" width="100%" height="100%"></iframe>';
|
||
n = new r.Z({
|
||
width: 454,
|
||
height: 657,
|
||
content: i,
|
||
contentBackground: !1,
|
||
triggerObject: t,
|
||
showLoadingSpinner: !0,
|
||
fullscreenInSmallDown: !0,
|
||
closeOnBackgroundClick: !1
|
||
}),
|
||
window.addEventListener("message", y, !1)
|
||
}
|
||
, b = function() {
|
||
var e = document.querySelector(".pwd-change-msg");
|
||
e.classList.remove("hidden"),
|
||
a = new r.Z({
|
||
width: 400,
|
||
height: 380,
|
||
content: e,
|
||
contentBackground: !1,
|
||
showLoadingSpinner: !0,
|
||
fullscreenInSmallDown: !0,
|
||
closeOnBackBtn: !1,
|
||
closeOnBackgroundClick: !1
|
||
}),
|
||
l(".pwd-change-msg button.login-button").on("click", (function() {
|
||
a.close(),
|
||
h()
|
||
}
|
||
)),
|
||
l(".pwd-change-msg .close").on("click", (function() {
|
||
a.close()
|
||
}
|
||
))
|
||
}
|
||
, y = function(e) {
|
||
if (e.data && "function" == typeof e.data.split)
|
||
switch (e.data.split(":")[0]) {
|
||
case "setFrameHeight":
|
||
var t = e.data.split(":")[1];
|
||
S(t);
|
||
break;
|
||
case "closeLoginModal":
|
||
w(),
|
||
l("body").removeClass("scrollable-body");
|
||
break;
|
||
case "showLoginPage":
|
||
_();
|
||
break;
|
||
case "authenticating":
|
||
l("body").addClass("scrollable-body");
|
||
var i = l("body").find(".modal.modal--fullscreen-in-small-down")[0];
|
||
l(i).addClass("scrollable");
|
||
break;
|
||
case "error":
|
||
var n = e.data.replace("error", "loginfailure");
|
||
n = (n = -1 != n.indexOf(". ") ? n.split(". ")[0] : n).replace(/\s/g, ""),
|
||
(0,
|
||
s.ay)("loginfail", {
|
||
errorcode: n,
|
||
loginaction: "login fail"
|
||
})
|
||
}
|
||
}
|
||
, w = function(e) {
|
||
window.removeEventListener("message", y, !1),
|
||
n.close(),
|
||
null !== localStorage.getItem("data-js-trigger-promotion") && localStorage.removeItem("data-js-trigger-promotion")
|
||
}
|
||
, S = function(e) {
|
||
n.setHeight(e)
|
||
}
|
||
, _ = function() {
|
||
var e = o.data(d);
|
||
l("#login-iframe").attr("src", e)
|
||
}
|
||
, C = function(e) {
|
||
g(e),
|
||
u()
|
||
}
|
||
},
|
||
15898: function(e, t, i) {
|
||
"use strict";
|
||
i.d(t, {
|
||
Z: function() {
|
||
return a
|
||
}
|
||
});
|
||
var n = i(19755);
|
||
function a(e) {
|
||
var t, i, a, o;
|
||
e = n.extend({
|
||
width: 500,
|
||
height: 250,
|
||
content: null,
|
||
contentBackground: !0,
|
||
contentBackgroundColor: "#FFF",
|
||
overlay: !0,
|
||
autoOpen: !0,
|
||
triggerObject: null,
|
||
closeOnBackBtn: !0,
|
||
showLoadingSpinner: !1,
|
||
closeOnBackgroundClick: !0,
|
||
fullscreenInSmallDown: !1,
|
||
customClass: ""
|
||
}, e);
|
||
function r(e) {
|
||
o.html(e)
|
||
}
|
||
function s() {
|
||
var i, a, r;
|
||
e.closeOnBackBtn && history.pushState(null, null, "#modal"),
|
||
e.parentElement ? parentElement.append(t) : n("body").append(t),
|
||
i = o.find("a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]"),
|
||
a = i.first(),
|
||
r = i.last(),
|
||
a.focus(),
|
||
r.on("keydown", (function(e) {
|
||
9 !== e.which || e.shiftKey || (e.preventDefault(),
|
||
a.focus())
|
||
}
|
||
)),
|
||
a.on("keydown", (function(e) {
|
||
9 === e.which && e.shiftKey && (e.preventDefault(),
|
||
r.focus())
|
||
}
|
||
)),
|
||
t.fadeIn("fast", l)
|
||
}
|
||
function l() {
|
||
n(document).on("keyup.modal", c),
|
||
e.closeOnBackBtn && Modernizr.history && n(window).one("popstate.modal", d),
|
||
n("body").addClass("modal-is-open"),
|
||
o.focus()
|
||
}
|
||
function c(e) {
|
||
27 === e.keyCode && (e.preventDefault(),
|
||
e.stopPropagation(),
|
||
u())
|
||
}
|
||
function d() {
|
||
h(),
|
||
p()
|
||
}
|
||
function u() {
|
||
if (h(),
|
||
e.closeOnBackBtn && Modernizr.history) {
|
||
"" === window.location.search || window.location.search;
|
||
history.back()
|
||
}
|
||
p()
|
||
}
|
||
function p() {
|
||
t.fadeOut("fast", m)
|
||
}
|
||
function m() {
|
||
n("body").removeClass("modal-is-open"),
|
||
t.trigger("modalIsClosed"),
|
||
t.remove(),
|
||
null !== e.triggerObject && e.triggerObject.focus()
|
||
}
|
||
function h() {
|
||
i.off("click", u),
|
||
n(document).off("keyup.modal", c)
|
||
}
|
||
t = n('<div class="modal" />'),
|
||
e.fullscreenInSmallDown && t.addClass("modal--fullscreen-in-small-down"),
|
||
a = n('<div class="modal__inner-container" />'),
|
||
t.append(a),
|
||
e.showLoadingSpinner && t.append('<div class="modal__circular-loader-container"><div class="circular-loader circular-loader--light circular-loader--large" /></div>'),
|
||
i = n('<div class="modal__background-layer" />'),
|
||
e.overlay || i.addClass("u-bg-color-none"),
|
||
e.closeOnBackgroundClick && i.on("click", u),
|
||
t.append(i),
|
||
(o = n('<div class="modal__content-container"></div>')).width(e.width),
|
||
o.height(e.height),
|
||
e.contentBackground && o.css("background-color", e.contentBackgroundColor),
|
||
a.append(o),
|
||
e.content && r(e.content),
|
||
e.customClass && t.addClass(e.customClass),
|
||
e.autoOpen && s(),
|
||
this.setWidth = function(e) {
|
||
o.width(e)
|
||
}
|
||
,
|
||
this.setHeight = function(e) {
|
||
o.height(e)
|
||
}
|
||
,
|
||
this.getElement = function() {
|
||
return t
|
||
}
|
||
,
|
||
this.setContent = r,
|
||
this.open = s,
|
||
this.close = u
|
||
}
|
||
},
|
||
54648: function(e, t, i) {
|
||
"use strict";
|
||
i.r(t),
|
||
i.d(t, {
|
||
emailRegexp: function() {
|
||
return n
|
||
},
|
||
phone: function() {
|
||
return a
|
||
},
|
||
companyCode: function() {
|
||
return o
|
||
},
|
||
membershipNumber: function() {
|
||
return r
|
||
},
|
||
alphanumeric: function() {
|
||
return s
|
||
},
|
||
noHtmlTags: function() {
|
||
return l
|
||
}
|
||
});
|
||
var n = /^[-0-9a-zA-Z.+_]+@[-0-9a-zA-Z.+_]+\.[a-zA-Z]{2,12}$/
|
||
, a = Object.freeze({
|
||
strict: /^(?![0\D]+$)[\s\d()\\-]{1,20}$/,
|
||
loose: /^\+?[0-9 \-\(\)]+$/
|
||
})
|
||
, o = /^d\d+$/i
|
||
, r = /^30812(?!(0|1|2))[0-9]{9}$/
|
||
, s = Object.freeze({
|
||
noSpecialCharacters: /^[A-Za-z¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ0-9-\s]*$/,
|
||
noSpecialCharactersExceptPeriod: /^[A-Za-z¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ0-9-\.\s]*$/,
|
||
streetAddress: /^[[A-Za-z¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ0-9-\.,\s/]*$/,
|
||
password: /^[A-Za-z0-9@#%\*]*$/
|
||
})
|
||
, l = /^[^<>]*$/
|
||
},
|
||
52071: function(e, t, i) {
|
||
var n = i(19755);
|
||
!function() {
|
||
"use strict";
|
||
n(".skip-to-content").click((function() {
|
||
var e = "#" + this.href.split("#")[1];
|
||
n(e).attr("tabindex", -1).on("blur focusout", (function() {
|
||
n(this).removeAttr("tabindex")
|
||
}
|
||
)).focus()
|
||
}
|
||
))
|
||
}()
|
||
},
|
||
27927: function(e, t, i) {
|
||
"use strict";
|
||
i(26981),
|
||
i(40851),
|
||
i(56997),
|
||
i(57147),
|
||
i(83587),
|
||
i(50533),
|
||
i(94092),
|
||
i(13711),
|
||
i(69219),
|
||
i(95648),
|
||
i(5091),
|
||
i(42004);
|
||
var n = i(19755);
|
||
var a = i(19755);
|
||
var o = i(19755);
|
||
function r(e) {
|
||
"true" === o(e).attr("aria-pressed") ? o(e).attr("aria-pressed", "false") : o(e).attr("aria-pressed", "true")
|
||
}
|
||
var s = i(19755)
|
||
, l = function() {
|
||
var e = !1
|
||
, t = this;
|
||
s(t).on("click", (function i(n) {
|
||
n.stopPropagation(),
|
||
e = !e,
|
||
s(t).parents(".dropdown-container").toggleClass("open"),
|
||
r(s(this)),
|
||
e ? s(document).on("click", i) : s(document).off("click", i)
|
||
}
|
||
)),
|
||
s(t).parent().on("focusout", (function(e) {
|
||
t.parentElement.contains(e.relatedTarget) || s(document).trigger("click")
|
||
}
|
||
))
|
||
}
|
||
, c = i(19755);
|
||
function d(e) {
|
||
this.$trigger = e,
|
||
this.eventHandlers = []
|
||
}
|
||
d.find = function(e) {
|
||
return e.data("tooltip-info-instance") || e.data("tooltip-info-instance", new d(e)),
|
||
e.data("tooltip-info-instance")
|
||
}
|
||
,
|
||
d.closeAll = function() {
|
||
c("[data-js-tooltip]").each((function(e, t) {
|
||
d.find(c(t)).close()
|
||
}
|
||
))
|
||
}
|
||
,
|
||
d.mouseOutEventHandler = function() {
|
||
clearTimeout(d.find(c(this)).thresholdTimer)
|
||
}
|
||
,
|
||
d.registerMouseOutEventHandler = function(e) {
|
||
d.unregisterMouseOutEventHandler(e),
|
||
c(e).on("mouseout", d.mouseOutEventHandler)
|
||
}
|
||
,
|
||
d.unregisterMouseOutEventHandler = function(e) {
|
||
c(e).off("mouseout", d.mouseOutEventHandler)
|
||
}
|
||
,
|
||
d.prototype = {
|
||
ANIMATION_TIME: 250,
|
||
threshold_TIME: 500,
|
||
ESCAPE_KEY: 27,
|
||
open: function() {
|
||
return this.$tooltip = c("#" + this.$trigger.attr("aria-describedby")),
|
||
this.visible() || d.closeAll(),
|
||
this.$tooltip.addClass("visible"),
|
||
this.escapeRelativePositioning(),
|
||
this.closeOnEscapeKey(),
|
||
this
|
||
},
|
||
hoverOpen: function(e) {
|
||
this.thresholdTimer = setTimeout(function() {
|
||
this.open(),
|
||
e.call(this)
|
||
}
|
||
.bind(this), this.threshold_TIME)
|
||
},
|
||
close: function() {
|
||
return this.visible() && (this.animateOut(),
|
||
this.unregisterEventHandlers()),
|
||
this
|
||
},
|
||
visible: function() {
|
||
return this.$tooltip && this.$tooltip.hasClass("visible")
|
||
},
|
||
animateOut: function() {
|
||
var e = this;
|
||
this.$tooltip.addClass("hiding"),
|
||
setTimeout((function() {
|
||
e.$tooltip.removeClass("visible").removeClass("hiding"),
|
||
e.removePositioning()
|
||
}
|
||
), this.ANIMATION_TIME)
|
||
},
|
||
closeOnEscapeKey: function() {
|
||
var e = this;
|
||
this.escapeKeyHandler = function(t) {
|
||
t.which === e.ESCAPE_KEY && e.close()
|
||
}
|
||
,
|
||
c("body").on("keyup", this.escapeKeyHandler)
|
||
},
|
||
closeOnMouseout: function() {
|
||
var e = this;
|
||
if (!this.hasActiveCloseEvent()) {
|
||
this.registerDefaultEventHandler("mousemove", (function(t) {
|
||
e.outsideBoundingBox(t.pageX, t.pageY) && e.close()
|
||
}
|
||
));
|
||
var t = function() {
|
||
e.close()
|
||
};
|
||
c("body").on("click", t),
|
||
this.eventHandlers.push({
|
||
eventType: "click",
|
||
handler: t
|
||
})
|
||
}
|
||
},
|
||
closeOnClick: function() {
|
||
var e = this;
|
||
c("body").attr("onclick", ""),
|
||
this.registerDefaultEventHandler("click", (function(t) {
|
||
e.close()
|
||
}
|
||
))
|
||
},
|
||
closeOnBlur: function(e) {
|
||
var t = this;
|
||
c(document).on("blur", e, (function(e) {
|
||
t.close()
|
||
}
|
||
))
|
||
},
|
||
registerDefaultEventHandler: function(e, t) {
|
||
this.unregisterDefaultEventHandler(),
|
||
c("body").on(e, t),
|
||
this.eventHandlers.push({
|
||
eventType: e,
|
||
handler: t
|
||
})
|
||
},
|
||
registerResizeEventHandler: function() {
|
||
var e = this;
|
||
this.resizeEventHandler = function() {
|
||
e.updatePosition()
|
||
}
|
||
,
|
||
c(window).on("resize", this.resizeEventHandler)
|
||
},
|
||
unregisterEventHandlers: function() {
|
||
this.unregisterEscapeKeyHandler(),
|
||
this.unregisterDefaultEventHandler(),
|
||
this.unregisterResizeEventHandler()
|
||
},
|
||
unregisterDefaultEventHandler: function() {
|
||
this.eventHandlers && (this.eventHandlers.forEach((function(e) {
|
||
c("body").off(e.eventType, e.handler)
|
||
}
|
||
)),
|
||
this.eventHandlers = [])
|
||
},
|
||
unregisterEscapeKeyHandler: function() {
|
||
this.escapeKeyHandler && (c("body").off("keyup", this.escapeKeyHandler),
|
||
this.escapeKeyHandler = null)
|
||
},
|
||
unregisterResizeEventHandler: function() {
|
||
this.resizeEventHandler && c(window).off("resize", this.resizeEventHandler)
|
||
},
|
||
outsideBoundingBox: function(e, t) {
|
||
var i = this.boundingBox();
|
||
return e < i.left || e > i.right || t < i.top || t > i.bottom
|
||
},
|
||
boundingBox: function() {
|
||
return {
|
||
left: Math.min(this.$trigger.offset().left - 10, this.$tooltip.offset().left),
|
||
right: Math.max(this.$trigger.offset().left + this.$trigger.width() + 10, this.$tooltip.offset().left + this.$tooltip.width()),
|
||
top: Math.min(this.$trigger.offset().top - 10, this.$tooltip.offset().top),
|
||
bottom: Math.max(this.$trigger.offset().top + this.$trigger.height() + 10, this.$tooltip.offset().top + this.$tooltip.height())
|
||
}
|
||
},
|
||
hasActiveCloseEvent: function() {
|
||
return !!this.eventHandlers.length
|
||
},
|
||
escapeRelativePositioning: function() {
|
||
c("body").append(this.$tooltip),
|
||
this.updatePosition(),
|
||
this.registerResizeEventHandler()
|
||
},
|
||
updatePosition: function() {
|
||
this.normalizePosition();
|
||
var e = {
|
||
top: this.$trigger.offset().top - 5 - this.$tooltip.outerHeight() / 2,
|
||
left: this.$trigger.offset().left - (window.ScreenHelper.mediaMediumUp() ? this.$tooltip.outerWidth() / 2 : this.$tooltip.outerWidth())
|
||
}
|
||
, t = c(window).scrollTop() + this.getReservedHeight() + 5;
|
||
e.top < t && (e.top = t),
|
||
e.left < c(window).scrollLeft() && (e.left = c(window).scrollLeft()),
|
||
this.$tooltip.css(e)
|
||
},
|
||
getReservedHeight: function() {
|
||
var e = c(".navigation-bar");
|
||
return e.hasClass("is-expanded") ? 0 : e.height()
|
||
},
|
||
normalizePosition: function() {
|
||
this.$tooltip.css({
|
||
top: 0,
|
||
left: 0
|
||
})
|
||
},
|
||
removePositioning: function() {
|
||
this.$tooltip.css({
|
||
top: "",
|
||
left: ""
|
||
})
|
||
}
|
||
};
|
||
var u = i(19755)
|
||
, p = "[data-js-tooltip]"
|
||
, m = i(98780)
|
||
, h = [{
|
||
featureType: "administrative",
|
||
elementType: "labels.text.fill",
|
||
stylers: [{
|
||
color: "#ada6a0"
|
||
}]
|
||
}, {
|
||
featureType: "administrative.country",
|
||
elementType: "labels.text.fill",
|
||
stylers: [{
|
||
color: "#483729"
|
||
}]
|
||
}, {
|
||
featureType: "administrative.province",
|
||
elementType: "labels.text.fill",
|
||
stylers: [{
|
||
color: "#483729"
|
||
}]
|
||
}, {
|
||
featureType: "administrative.locality",
|
||
elementType: "labels.text.fill",
|
||
stylers: [{
|
||
color: "#483729"
|
||
}]
|
||
}, {
|
||
featureType: "administrative.neighborhood",
|
||
elementType: "geometry.fill",
|
||
stylers: [{
|
||
color: "#483729"
|
||
}]
|
||
}, {
|
||
featureType: "administrative.land_parcel",
|
||
elementType: "geometry.fill",
|
||
stylers: [{
|
||
color: "#483729"
|
||
}]
|
||
}, {
|
||
featureType: "landscape",
|
||
elementType: "all",
|
||
stylers: [{
|
||
visibility: "simplified"
|
||
}]
|
||
}, {
|
||
featureType: "landscape",
|
||
elementType: "labels.text.fill",
|
||
stylers: [{
|
||
visibility: "on"
|
||
}, {
|
||
color: "#ada6a0"
|
||
}]
|
||
}, {
|
||
featureType: "landscape.man_made",
|
||
elementType: "geometry.fill",
|
||
stylers: [{
|
||
visibility: "on"
|
||
}, {
|
||
saturation: "-100"
|
||
}, {
|
||
weight: "1.39"
|
||
}, {
|
||
hue: "#ff9500"
|
||
}, {
|
||
lightness: "45"
|
||
}]
|
||
}, {
|
||
featureType: "landscape.natural",
|
||
elementType: "geometry.fill",
|
||
stylers: [{
|
||
color: "#f2f2f2"
|
||
}]
|
||
}, {
|
||
featureType: "landscape.natural.landcover",
|
||
elementType: "geometry.fill",
|
||
stylers: [{
|
||
color: "#fcfcfc"
|
||
}]
|
||
}, {
|
||
featureType: "poi",
|
||
elementType: "all",
|
||
stylers: [{
|
||
visibility: "simplified"
|
||
}]
|
||
}, {
|
||
featureType: "poi",
|
||
elementType: "geometry.fill",
|
||
stylers: [{
|
||
color: "#e4e4e2"
|
||
}]
|
||
}, {
|
||
featureType: "poi",
|
||
elementType: "labels.text.fill",
|
||
stylers: [{
|
||
color: "#483729"
|
||
}]
|
||
}, {
|
||
featureType: "poi",
|
||
elementType: "labels.icon",
|
||
stylers: [{
|
||
visibility: "off"
|
||
}]
|
||
}, {
|
||
featureType: "poi.park",
|
||
elementType: "geometry.fill",
|
||
stylers: [{
|
||
color: "#dbe9ce"
|
||
}]
|
||
}, {
|
||
featureType: "road",
|
||
elementType: "labels",
|
||
stylers: [{
|
||
visibility: "simplified"
|
||
}]
|
||
}, {
|
||
featureType: "road",
|
||
elementType: "labels.icon",
|
||
stylers: [{
|
||
visibility: "off"
|
||
}]
|
||
}, {
|
||
featureType: "road.highway",
|
||
elementType: "all",
|
||
stylers: [{
|
||
visibility: "off"
|
||
}, {
|
||
color: "#ad9b8d"
|
||
}]
|
||
}, {
|
||
featureType: "road.highway",
|
||
elementType: "geometry",
|
||
stylers: [{
|
||
visibility: "on"
|
||
}]
|
||
}, {
|
||
featureType: "road.highway",
|
||
elementType: "geometry.fill",
|
||
stylers: [{
|
||
color: "#c7c3be"
|
||
}]
|
||
}, {
|
||
featureType: "road.highway",
|
||
elementType: "geometry.stroke",
|
||
stylers: [{
|
||
visibility: "on"
|
||
}, {
|
||
color: "#bab4ad"
|
||
}]
|
||
}, {
|
||
featureType: "road.arterial",
|
||
elementType: "geometry.stroke",
|
||
stylers: [{
|
||
visibility: "off"
|
||
}]
|
||
}, {
|
||
featureType: "road.local",
|
||
elementType: "all",
|
||
stylers: [{
|
||
visibility: "on"
|
||
}]
|
||
}, {
|
||
featureType: "road.local",
|
||
elementType: "geometry.fill",
|
||
stylers: [{
|
||
color: "#ffffff"
|
||
}]
|
||
}, {
|
||
featureType: "road.local",
|
||
elementType: "geometry.stroke",
|
||
stylers: [{
|
||
visibility: "off"
|
||
}]
|
||
}, {
|
||
featureType: "road.local",
|
||
elementType: "labels.text.fill",
|
||
stylers: [{
|
||
color: "#555555"
|
||
}]
|
||
}, {
|
||
featureType: "transit",
|
||
elementType: "all",
|
||
stylers: [{
|
||
visibility: "simplified"
|
||
}]
|
||
}, {
|
||
featureType: "transit",
|
||
elementType: "geometry.fill",
|
||
stylers: [{
|
||
color: "#d2d0cd"
|
||
}]
|
||
}, {
|
||
featureType: "transit",
|
||
elementType: "labels.text.fill",
|
||
stylers: [{
|
||
color: "#aba6a1"
|
||
}]
|
||
}, {
|
||
featureType: "transit",
|
||
elementType: "labels.icon",
|
||
stylers: [{
|
||
visibility: "off"
|
||
}]
|
||
}, {
|
||
featureType: "transit.station",
|
||
elementType: "labels.icon",
|
||
stylers: [{
|
||
visibility: "off"
|
||
}]
|
||
}, {
|
||
featureType: "water",
|
||
elementType: "all",
|
||
stylers: [{
|
||
visibility: "simplified"
|
||
}, {
|
||
color: "#abbaa4"
|
||
}]
|
||
}, {
|
||
featureType: "water",
|
||
elementType: "geometry.fill",
|
||
stylers: [{
|
||
saturation: "-100"
|
||
}, {
|
||
lightness: "52"
|
||
}, {
|
||
color: "#d4dddd"
|
||
}]
|
||
}]
|
||
, f = i(19755);
|
||
document.querySelector("#globalHotel") && (document.hotel = JSON.parse(document.querySelector("#globalHotel").textContent.toString()));
|
||
var g, v = window;
|
||
document,
|
||
document.mapSettings,
|
||
document.hotel;
|
||
function b(e, t) {
|
||
this.$canvas = e,
|
||
this.primaryPOI = t,
|
||
this.autoPanDirection = e.attr("data-auto-pan"),
|
||
this.controlPosition = e.attr("data-controls") || "left",
|
||
this.maxAutoZoom = parseInt(e.attr("data-max-auto-zoom")),
|
||
this.setInitialZoom = parseInt(e.attr("data-set-initial-zoom")),
|
||
this.markers = {},
|
||
this.createMap(),
|
||
this.createPrimaryMarker(),
|
||
this.attachEvents()
|
||
}
|
||
b.prototype = {
|
||
ICON_BASE_URL: "/static/img/icons/map/map-pin-",
|
||
ICON_SIZE: 34,
|
||
createMap: function() {
|
||
var e = f('<div id="mapElement" style="position: absolute; width: 100%; height: 100%;"></div>')
|
||
, t = {
|
||
center: this.defaultCenterLocation(),
|
||
zoom: 14,
|
||
maxZoom: 17,
|
||
minZoom: 3,
|
||
clickableIcons: !1,
|
||
draggable: !!this.$canvas.data("touchEvents") && this.$canvas.data("touchEvents"),
|
||
scrollwheel: !0 === this.$canvas.data("scrollable"),
|
||
panControl: !0,
|
||
panControlOptions: {
|
||
style: google.maps.ZoomControlStyle.LARGE,
|
||
position: this.panControlPosition()
|
||
},
|
||
zoomControlOptions: {
|
||
style: google.maps.ZoomControlStyle.LARGE,
|
||
position: this.zoomControlPosition()
|
||
},
|
||
scaleControl: !1,
|
||
streetViewControl: !1,
|
||
overviewMapControl: !0,
|
||
mapTypeControl: !1,
|
||
disableDefaultUI: !0
|
||
};
|
||
this.$canvas.append(e),
|
||
this.map = new google.maps.Map(e[0],t),
|
||
this.map.set("styles", h);
|
||
var n = document.createElement("div");
|
||
this.ZoomControl(n, this.map);
|
||
n.index = 1,
|
||
"right" === this.controlPosition ? this.map.controls[google.maps.ControlPosition.TOP_RIGHT].push(n) : this.map.controls[google.maps.ControlPosition.TOP_LEFT].push(n),
|
||
this.updateCanvasSize(),
|
||
this.autoPan(),
|
||
g = i(61223)(google.maps)
|
||
},
|
||
ZoomControl: function(e, t) {
|
||
e.style.padding = "5px";
|
||
var i = f("<div>", {
|
||
id: "mapZoomControlsWrapper",
|
||
class: "zoom-controls"
|
||
});
|
||
e.appendChild(i[0]);
|
||
var n = f("<button>", {
|
||
id: "mapZoomInBtn",
|
||
class: "zoom-controls__zoom-in"
|
||
});
|
||
i.append(n);
|
||
var a = f("<hr />", {
|
||
class: "zoom-controls__delimiter"
|
||
});
|
||
i.append(a);
|
||
var o = f("<button>", {
|
||
id: "mapZoomOutBtn",
|
||
class: "zoom-controls__zoom-out"
|
||
});
|
||
i.append(o),
|
||
google.maps.event.addDomListener(n[0], "click", (function() {
|
||
t.setZoom(t.getZoom() + 1)
|
||
}
|
||
)),
|
||
google.maps.event.addDomListener(o[0], "click", (function() {
|
||
t.setZoom(t.getZoom() - 1)
|
||
}
|
||
))
|
||
},
|
||
attachEvents: function() {
|
||
var e = this;
|
||
this.$canvas.on("scroll-with:resize", (function() {
|
||
google.maps.event.trigger(e.map, "resize")
|
||
}
|
||
)),
|
||
this.$canvas.on("tab.activated", (function() {
|
||
google.maps.event.trigger(e.map, "resize")
|
||
}
|
||
)),
|
||
google.maps.event.addDomListener(v, "resize", (function() {
|
||
e.recenterMapAfterResize()
|
||
}
|
||
))
|
||
},
|
||
resizeMap: function() {
|
||
google.maps.event.trigger(this.map, "resize")
|
||
},
|
||
defaultCenterLocation: function() {
|
||
return this.primaryPOI ? new google.maps.LatLng(this.primaryPOI.location.latitude,this.primaryPOI.location.longitude) : new google.maps.LatLng(0,0)
|
||
},
|
||
panControlPosition: function() {
|
||
return "right" === this.controlPosition ? google.maps.ControlPosition.RIGHT_BOTTOM : google.maps.ControlPosition.LEFT_BOTTOM
|
||
},
|
||
zoomControlPosition: function() {
|
||
return "right" === this.controlPosition ? google.maps.ControlPosition.TOP_RIGHT : google.maps.ControlPosition.TOP_LEFT
|
||
},
|
||
autoPan: function() {
|
||
ScreenHelper.isLargeScreen() && ("left" === this.autoPanDirection ? this.map.panBy(150, 0) : "right" === this.autoPanDirection && this.map.panBy(-200, 0))
|
||
},
|
||
createPrimaryMarker: function() {
|
||
this.primaryPOI && (this.markers[":primary"] = this.addMarker({
|
||
lat: this.primaryPOI.location.latitude,
|
||
long: this.primaryPOI.location.longitude,
|
||
name: this.primaryPOI.name,
|
||
icon: document.querySelector(".hotel-theme-scandic-go") ? "scandic-go" : this.primaryPOI.icon || "hotel",
|
||
category: "hotel-pin"
|
||
}))
|
||
},
|
||
getPrimaryMarker: function() {
|
||
return this.findMarkerByName(":primary")
|
||
},
|
||
shouldCenterOnPrimaryMarker: function() {
|
||
return this.primaryPOI && !1 !== this.primaryPOI.autoCenter
|
||
},
|
||
allGrayed: !1,
|
||
trackEvent: !1,
|
||
isAnyVisited: !1,
|
||
isInfoWindowOpen: !1,
|
||
addMarker: function(e) {
|
||
var t, i, n, a = this;
|
||
if (!e.element || "hidden" != e.element.getAttribute("data-category"))
|
||
return e.label ? (f(e.element).find(".webtest-main-price").text().length > 0 && (e.label = f(e.element).find(".webtest-main-price").text(),
|
||
-1 != e.label.indexOf("/") && (e.label = e.label.substr(0, e.label.indexOf("/")))),
|
||
e.label = e.label.replace(/,|\/.+/g, ""),
|
||
e.label = e.label.replace(/\B(?=(\d{3})+(?!\d))/g, " "),
|
||
a.allGrayed = !1,
|
||
a.isAnyVisited = !1,
|
||
a.isInfoWindowOpen = !1,
|
||
t = new g({
|
||
position: new google.maps.LatLng(e.lat,e.long),
|
||
draggable: !1,
|
||
raiseOnDrag: !1,
|
||
map: this.map,
|
||
icon: {
|
||
path: google.maps.SymbolPath.CIRCLE,
|
||
scale: 0
|
||
},
|
||
labelContent: e.label,
|
||
zIndex: this.markers ? Object.keys(this.markers).length : 0,
|
||
labelAnchor: new google.maps.Point(4 * e.label.length,30),
|
||
labelClass: "map-label",
|
||
labelInBackground: !1
|
||
}),
|
||
google.maps.event.addListener(t, "mouseover", this.highlightMarker(e.name)),
|
||
google.maps.event.addListener(t, "mouseout", this.highlightMarker(e.name)),
|
||
f(e.element).on("mouseover mouseout", this.highlightMarker(e.name))) : (t = new google.maps.Marker({
|
||
position: new google.maps.LatLng(e.lat,e.long),
|
||
map: this.map,
|
||
zIndex: this.markers ? Object.keys(this.markers).length : 0
|
||
}),
|
||
"hidden" === e.category ? t.setVisible(!1) : t.setIcon(this.icon(e.icon))),
|
||
e.link ? i = '<div class="info-window"><a href="' + e.link + '">' + e.name + " </a>" : e.infoWindowDetail ? (i = this.getHotelInfo(e.element),
|
||
a.trackEvent = !0) : i = '<div class="info-window info-' + e.category + '">' + e.name + " ",
|
||
e.distance && (i += '<span class="distance">' + e.distance + "</span>"),
|
||
i += "</div>",
|
||
n = new google.maps.InfoWindow({
|
||
content: i,
|
||
maxWidth: 300
|
||
}),
|
||
google.maps.event.addListener(n, "domready", (function() {
|
||
if (e.infoWindowDetail) {
|
||
f(".l-section.map-section__wrapper").addClass("map-section__custom-info-window"),
|
||
f(".gm-style").addClass("custom-info-card");
|
||
var t = f(".gm-style-iw");
|
||
t.prev().addClass("info-window__background"),
|
||
f(".gm-style-iw-c").addClass("infoWindowCard"),
|
||
f(".infoWindowCard > button[type=button]").addClass("info-window__close-btn"),
|
||
t && t.find(".info-window__btn-holder").find(".btn.btn--primary")[0].addEventListener("click", (function() {
|
||
(0,
|
||
m.UQ)(e.element)
|
||
}
|
||
))
|
||
}
|
||
}
|
||
)),
|
||
google.maps.event.addListener(t, "click", (function() {
|
||
a.closeAllInfoWindows(),
|
||
e.infoWindowDetail && a.map.panTo(t.getPosition()),
|
||
a.openInfoWindow(e.name),
|
||
e.label && a.scrollToElement(e.name)
|
||
}
|
||
)),
|
||
google.maps.event.addListener(n, "closeclick", (function() {
|
||
if (e.label) {
|
||
for (var i = Object.keys(a.markers), n = i.length - 1; n >= 0; n--)
|
||
-1 !== a.markers[i[n]].marker.get("labelClass").indexOf("visited") && a.markers[i[n]].marker.set("labelClass", "map-label grayed");
|
||
f(e.element).find(".hotel-teaser").removeClass("hotel-teaser--hover"),
|
||
t.set("labelClass", "map-label visited"),
|
||
t.set("zIndex", t.get("zIndex") + 99),
|
||
a.isInfoWindowOpen = !1
|
||
}
|
||
}
|
||
)),
|
||
this.markers[e.name] = {
|
||
marker: t,
|
||
label: e.label,
|
||
infoWindow: n,
|
||
element: e.element
|
||
},
|
||
this.markers[e.name]
|
||
},
|
||
scrollToElement: function(e) {
|
||
var t = this.markers[e].element
|
||
, i = f(t).offset().top - 50
|
||
, n = Object.keys(this.markers);
|
||
n[n.length - 1] !== e && n[n.length - 2] !== e || (i = i - (window.innerHeight - t.offsetHeight) + 130),
|
||
document.querySelector(".list-pois") && (i = f(".list-pois").parent().parent().offset().top - 65),
|
||
f("html, body").stop().animate({
|
||
scrollTop: i
|
||
}, 400)
|
||
},
|
||
highlightMarker: function(e) {
|
||
var t = this;
|
||
return function(i) {
|
||
var n = t.markers[e].marker;
|
||
"-1" == n.get("labelClass").indexOf("hidden") && (t.isInfoWindowOpen || t.isAnyVisited || !t.markers || t.grayOutMarkers(n),
|
||
f(t.markers[e].element).find(".hotel-teaser").toggleClass("hotel-teaser--hover"),
|
||
t.updateMarkerStatus(n))
|
||
}
|
||
},
|
||
grayOutMarkers: function(e) {
|
||
var t = this
|
||
, i = Object.keys(t.markers);
|
||
if (t.allGrayed) {
|
||
for (a = i.length - 1; a >= 0; a--) {
|
||
var n = t.markers[i[a]].marker;
|
||
n != e && (t.isVisited(n) ? n.set("labelClass", "map-label visited") : n.set("labelClass", "map-label"))
|
||
}
|
||
t.allGrayed = !1
|
||
} else {
|
||
for (var a = i.length - 1; a >= 0; a--) {
|
||
var o = t.markers[i[a]].marker;
|
||
t.isVisited(o) ? o.set("labelClass", "map-label visited grayed") : o.set("labelClass", "map-label grayed")
|
||
}
|
||
t.allGrayed = !0
|
||
}
|
||
},
|
||
isVisited: function(e) {
|
||
if (e.get("labelClass"))
|
||
return -1 != e.get("labelClass").indexOf("visited")
|
||
},
|
||
updateMarkerStatus: function(e) {
|
||
var t = this
|
||
, i = e.get("labelClass");
|
||
-1 == i.indexOf("active") ? (i = "map-label active" + (t.isVisited(e) ? " visited" : ""),
|
||
e.set("labelClass", i),
|
||
e.set("zIndex", e.get("zIndex") + 999)) : (i = "map-label" + (t.isVisited(e) ? " visited" : ""),
|
||
i += t.isInfoWindowOpen ? " lost-focus" : t.isAnyVisited ? " grayed" : "",
|
||
e.set("labelClass", i),
|
||
e.set("zIndex", e.get("zIndex") - 999))
|
||
},
|
||
getHotelInfo: function(e) {
|
||
var t, i = f(e).find(".hotel-teaser__btn-holder"), n = "";
|
||
f(e).find(".viewRoom")[0] && (n = f(e).find(".viewRoom")[0].value ? f(e).find(".viewRoom")[0].value : "",
|
||
t = f(e).find(".view-rooms-link")[0].value || f(e).attr("href"));
|
||
var a = i.length > 0 && !i.find(".btn").hasClass("disabled") ? i.html() : '\n\t\t\t<a class="btn btn--primary" href="'.concat(t, '">\n\t\t\t\t').concat(n, "\n\t\t\t</a>")
|
||
, o = f(e).find(".webtest-main-price").html() || f(e).find(".available-rates-price .price").first().html() || e.getAttribute("data-room-availability");
|
||
(f(e).find(".webtest-main-price").html() || f(e).find(".available-rates-price .price").first().html()) && ((o = o.split(/ (.*)/))[0] = o[0].replace(/\B(?=(\d{3})+(?!\d))/g, " "),
|
||
o = o[0] + " " + o[1]);
|
||
var r = f(e).find(".webtest-main-price").text() || f(e).find(".available-rates-price .price").first().text() ? "" : "no-availability"
|
||
, s = "";
|
||
f(e).find(".recommendedBy")[0] && (s = '<div class="info-window__trip-advisor">'.concat(f(e).find(".recommendedBy")[0].value ? f(e).find(".recommendedBy")[0].value : "", ' <img src="').concat(f(e).find(".tripadvisor-rating > img").attr("src"), '" /></div>'));
|
||
var l = f(e).find(".tripadvisor-rating > img").attr("src") ? s : ""
|
||
, c = f(e).find(".hotel-teaser .rsContent").first().html() ? f(e).find(".hotel-teaser .rsContent").first().html() : ""
|
||
, d = f(e).find(".hotelNameLink").attr("href") || e.href
|
||
, u = f(e).find("h3.hotel-teaser__body__header a").text() || f(e).find("h3.hotel-teaser__body__header").text()
|
||
, p = o ? '<div class="info-window__price-holder '.concat(r, '">').concat(o, "</div>") : "";
|
||
return '\n\t\t\t<div class="info-window hotel-card">\n\t\t\t\t<div class="info-window__hotel-slider">'.concat(c, '</div>\n\t\t\t\t<div class="info-window__header"><a href="').concat(d, '">').concat(u, "</a></div>\n\t\t\t\t").concat(l, "\n\t\t\t\t").concat(p, '\n\t\t\t\t<div class="info-window__btn-holder">').concat(a, "</div>\n\t\t\t</div>\n\t\t")
|
||
},
|
||
setInfoWindowStyles: function(e) {
|
||
google.maps.event.addListener(e, "domready", (function() {
|
||
f(".l-section.map-section__wrapper").addClass("map-section__custom-info-window"),
|
||
f(".gm-style").addClass("custom-info-card"),
|
||
f(".gm-style-iw").prev().addClass("info-window__background"),
|
||
f("button[title|='Close']").addClass("info-window__close-btn"),
|
||
f(".gm-style-iw-c").addClass("infoWindowCard")
|
||
}
|
||
))
|
||
},
|
||
mapInfoWindowClose: function(e) {
|
||
var t = "map-label grayed " + (-1 != e.get("labelClass").indexOf("visited") ? "visited" : "");
|
||
e.set("labelClass", t),
|
||
-1 != e.get("labelClass").indexOf("visited") && e.set("zIndex", e.get("zIndex") + 99)
|
||
},
|
||
scaleToFitMarkers: function(e) {
|
||
if (0 !== e.length) {
|
||
for (var t = new google.maps.LatLngBounds, i = 0, n = e.length; i < n; ++i)
|
||
t.extend(e[i].marker.position);
|
||
this.primaryPOI && t.extend(this.getPrimaryMarker().marker.position),
|
||
ScreenHelper.isLargeScreen() && this.autoPanDirection && t.extend(this.autoPanBoundsExtension(t)),
|
||
this.map.fitBounds(t),
|
||
1 === e.length && (this.autoPan(),
|
||
ScreenHelper.isLargeScreen() && document.querySelector(".map-controls__pois--right") && this.map.fitBounds(t, {
|
||
top: 25,
|
||
right: window.innerWidth - document.querySelector(".map-controls__pois--right").offsetLeft,
|
||
bottom: 25,
|
||
left: 25
|
||
}))
|
||
}
|
||
},
|
||
getMarkers: function() {
|
||
for (var e, t = [], i = Object.keys(this.markers), n = 0, a = i.length; n < a; ++n)
|
||
e = i[n],
|
||
this.markers.hasOwnProperty(e) && t.push(this.markers[e]);
|
||
return t
|
||
},
|
||
autoPanBoundsExtension: function(e) {
|
||
var t = e.getCenter();
|
||
return "left" === this.autoPanDirection || "right" === this.autoPanDirection ? new google.maps.LatLng(t.lat(),t.lng()) : void 0
|
||
},
|
||
restrictAutoZoom: function() {
|
||
var e, t = this;
|
||
e = google.maps.event.addListener(this.map, "zoom_changed", (function() {
|
||
t.map.getZoom() > t.maxAutoZoom ? t.map.setZoom(t.maxAutoZoom) : t.map.getZoom() < t.setInitialZoom && t.map.setZoom(t.setInitialZoom),
|
||
google.maps.event.removeListener(e)
|
||
}
|
||
))
|
||
},
|
||
zoomOut: function() {
|
||
this.map.setZoom(this.map.getZoom() - 1)
|
||
},
|
||
recenterMapAfterResize: function() {
|
||
this.map.panBy(-(this.$canvas.width() - this.previousCanvasSize.width) / 2, -(this.$canvas.height() - this.previousCanvasSize.height) / 2),
|
||
this.updateCanvasSize()
|
||
},
|
||
findMarkerByName: function(e) {
|
||
return this.markers[e]
|
||
},
|
||
closeAllInfoWindows: function() {
|
||
for (var e, t = Object.keys(this.markers), i = 0, n = t.length; i < n; ++i) {
|
||
e = t[i];
|
||
var a = this.markers[e];
|
||
a && (a.infoWindow.close(),
|
||
a.label && -1 != a.marker.get("labelClass").indexOf("hidden") && this.mapInfoWindowClose(a.marker))
|
||
}
|
||
},
|
||
openInfoWindow: function(e) {
|
||
var t = this.markers[e]
|
||
, i = t.marker;
|
||
if (t.label) {
|
||
i.set("zIndex", i.get("zIndex") - 999);
|
||
for (var n = Object.keys(this.markers), a = n.length - 1; a >= 0; a--) {
|
||
var o = this.markers[n[a]].marker;
|
||
o.get("labelClass") && -1 == o.get("labelClass").indexOf("visited") && o.set("labelClass", "map-label lost-focus"),
|
||
f(this.markers[n[a]].element).find(".hotel-teaser").removeClass("hotel-teaser--hover")
|
||
}
|
||
this.allGrayed = !1,
|
||
this.isInfoWindowOpen = !0,
|
||
this.isAnyVisited = !0,
|
||
i.set("labelClass", "map-label visited hidden"),
|
||
f(t.element).find(".hotel-teaser").addClass("hotel-teaser--hover")
|
||
}
|
||
t.infoWindow.open(this.map, t.marker),
|
||
this.trackEvent && (0,
|
||
m.Jf)(t.element)
|
||
},
|
||
updateCanvasSize: function() {
|
||
this.previousCanvasSize = {
|
||
width: this.$canvas.width(),
|
||
height: this.$canvas.height()
|
||
}
|
||
},
|
||
icon: function(e) {
|
||
return "scandic-go" == e ? {
|
||
url: this.ICON_BASE_URL + e + "-v2.svg",
|
||
anchor: new google.maps.Point(49,70),
|
||
scaledSize: new google.maps.Size(87,86)
|
||
} : "hotel" !== e ? {
|
||
url: this.ICON_BASE_URL + (-1 !== ["airport", "bus", "taxi", "trains", "transportation"].indexOf(e) ? e + "-v2" : e) + ".png",
|
||
anchor: new google.maps.Point(17,32),
|
||
scaledSize: new google.maps.Size(this.ICON_SIZE,this.ICON_SIZE)
|
||
} : {
|
||
url: this.ICON_BASE_URL + e + ".png",
|
||
anchor: new google.maps.Point(49,70),
|
||
scaledSize: new google.maps.Size(97,97)
|
||
}
|
||
}
|
||
};
|
||
var y, w = i(19755);
|
||
function S(e) {
|
||
return S = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
|
||
return typeof e
|
||
}
|
||
: function(e) {
|
||
return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
|
||
}
|
||
,
|
||
S(e)
|
||
}
|
||
function _() {
|
||
var e = '[data-js="location-map-canvas"]'
|
||
, t = !1
|
||
, i = !1
|
||
, n = w(e);
|
||
if (n && 0 !== n.length) {
|
||
var a = function(e) {
|
||
if (e.preventDefault(),
|
||
e.stopPropagation(),
|
||
"keypress" != e.type || "Enter" == e.key) {
|
||
if (w("#hotelPage").length && w('*[data-js="hotelnav-widget-toggle"]').hasClass("active") && v(),
|
||
w("#hotelPage").length && (window.Scandic.isMapClickOnHotelPage = !0,
|
||
document.body.querySelector(".navigation-bar[data-js=main-nav-bar]").style.zIndex = "-1"),
|
||
i) {
|
||
u();
|
||
var t = w(this).parents("[data-lat], [data-long]")
|
||
, n = t.attr("data-name") || t.find(".poi").html()
|
||
, a = y.findMarkerByName(n);
|
||
y.scaleToFitMarkers([a]),
|
||
y.closeAllInfoWindows(),
|
||
y.openInfoWindow(n)
|
||
} else {
|
||
f({
|
||
$poiElement: w(this),
|
||
openMap: !0,
|
||
touchEvents: !0
|
||
})
|
||
}
|
||
o("show")
|
||
}
|
||
}
|
||
, o = function(e) {
|
||
(window.ScreenHelper.isLargeScreen() || w(".filter-page").length) && (e && "show" == e ? w(".filter-page .map-section__wrapper").addClass("map-opened") : w(".filter-page .map-section__wrapper").removeClass("map-opened"),
|
||
window.dispatchEvent(new CustomEvent("resize")))
|
||
};
|
||
!function() {
|
||
if (!(w(e).length <= 0)) {
|
||
if (!ScreenHelper.isLargeScreen() && w(".map__pois-container ul li").length > 3) {
|
||
var t = w('*[data-js="pois-container"]');
|
||
t.addClass("pois-container--threeRowsHeight"),
|
||
w('*[data-js="pois-container__toggle"]').on("click", (function() {
|
||
var e = w(this);
|
||
w(this).hasClass("expanded") ? (t.removeClass("pois-container--full").addClass("pois-container--threeRowsHeight"),
|
||
e.removeClass("expanded")) : (t.addClass("pois-container--full").removeClass("pois-container--threeRowsHeight"),
|
||
e.addClass("expanded"))
|
||
}
|
||
))
|
||
}
|
||
w(e).is(":hidden") ? (w(e).data().noHashChange || (w(window).on("hashchange", g),
|
||
w(window).trigger("hashchange")),
|
||
w('[data-js="open-map"]').on("click", (function(e) {
|
||
e.preventDefault(),
|
||
e.stopPropagation(),
|
||
w("#hotelPage").length && w('*[data-js="hotelnav-widget-toggle"]').hasClass("active") && v(),
|
||
i ? (w(".filter-page").length > 0 ? u() : (u(),
|
||
y.closeAllInfoWindows(),
|
||
y.shouldCenterOnPrimaryMarker() ? y.scaleToFitMarkers([y.getPrimaryMarker()]) : y.scaleToFitMarkers(y.getMarkers())),
|
||
w("#hotelPage").length && (window.Scandic.isMapClickOnHotelPage = !0,
|
||
document.body.querySelector(".navigation-bar[data-js=main-nav-bar]").style.zIndex = "-1")) : (f({
|
||
openMap: !0,
|
||
touchEvents: !0
|
||
}),
|
||
w("#hotelPage").length && (window.Scandic.isMapClickOnHotelPage = !0,
|
||
document.body.querySelector(".navigation-bar[data-js=main-nav-bar]").style.zIndex = "-1")),
|
||
document.querySelector(".booking-widget-bar") && document.querySelector(".booking-widget-bar").classList.toggle("force-to-top"),
|
||
o("show")
|
||
}
|
||
)),
|
||
w('[data-js="poi-goto"]').on("click", a),
|
||
w(window).on("resize", (function() {
|
||
w('[data-js="poi-goto"]').off("click keypress", a),
|
||
w('[data-js="poi-goto"]').on("click keypress", a)
|
||
}
|
||
))) : f()
|
||
}
|
||
}()
|
||
}
|
||
function r(e) {
|
||
if (!i) {
|
||
((e = w.extend({
|
||
$poiElement: !1,
|
||
openMap: !1,
|
||
touchEvents: !1
|
||
}, e)).touchEvents || ScreenHelper.isLargeScreen()) && n.data("touchEvents", !0),
|
||
y = new b(n,document.hotel);
|
||
var a = w("[data-lat][data-long]").not((function(e, t) {
|
||
return "0" === t.getAttribute("data-lat") && "0" === t.getAttribute("data-long") || t.classList.contains("hidden")
|
||
}
|
||
)).map((function(e, t) {
|
||
return y.addMarker({
|
||
lat: t.getAttribute("data-lat"),
|
||
long: t.getAttribute("data-long"),
|
||
icon: t.getAttribute("data-category") || "hotel-pin",
|
||
iconHighlight: t.getAttribute("data-category-highlight"),
|
||
element: t,
|
||
category: t.getAttribute("data-category"),
|
||
infoWindowDetail: t.getAttribute("data-info-window-show-detail"),
|
||
name: t.getAttribute("data-name") || w(t).find(".poi").html(),
|
||
distance: w(t).find(".distance").html(),
|
||
label: t.getAttribute("data-label"),
|
||
link: t.getAttribute("data-href")
|
||
})
|
||
}
|
||
)).get();
|
||
if (y.shouldCenterOnPrimaryMarker() || y.scaleToFitMarkers(a),
|
||
w('*[data-js="pois-container"] li a').on("click", (function(e) {
|
||
e.preventDefault();
|
||
var t = w(this).find(".poi").html();
|
||
ScreenHelper.isLargeScreen() ? c() : l(),
|
||
y.closeAllInfoWindows(),
|
||
y.scaleToFitMarkers([y.getPrimaryMarker(), y.findMarkerByName(t)]),
|
||
y.openInfoWindow(t)
|
||
}
|
||
)),
|
||
w('*[data-js="pois-container__toggle"], *[data-js="map-expand"]').on("click", (function() {
|
||
t ? d() : c()
|
||
}
|
||
)),
|
||
ScreenHelper.isLargeScreen() && (s(),
|
||
function() {
|
||
function e() {
|
||
var e = w(this).parent().attr("data-name");
|
||
y.findMarkerByName(e);
|
||
y.openInfoWindow(e)
|
||
}
|
||
function t() {
|
||
y.closeAllInfoWindows()
|
||
}
|
||
w('*[data-js="poi-show-on-map"]').on("mouseenter focusin", e).on("mouseleave focusout", t)
|
||
}(),
|
||
d(!0),
|
||
window.Scandic.ltie9)) {
|
||
var o = w('*[data-js="map-expand"]');
|
||
o.find("span").text(o.text() + " / " + o.data("collapse-map"))
|
||
}
|
||
if (!ScreenHelper.isLargeScreen() && n.hasClass("map__canvas--non-full-screen") && s(),
|
||
n.on("tab.activated", (function(e, t) {
|
||
y.scaleToFitMarkers(a),
|
||
y.recenterMapAfterResize(a)
|
||
}
|
||
)),
|
||
n.hasClass("map__canvas--non-full-screen") && w(window).on("resize", (function() {
|
||
d(!0),
|
||
y.map.setOptions({
|
||
draggable: ScreenHelper.isLargeScreen()
|
||
})
|
||
}
|
||
)),
|
||
e.$poiElement) {
|
||
var r = e.$poiElement.parents("[data-lat], [data-long]")
|
||
, p = r.attr("data-name") || r.find(".poi").html()
|
||
, m = y.findMarkerByName(p);
|
||
y.closeAllInfoWindows(),
|
||
y.scaleToFitMarkers([m]),
|
||
y.openInfoWindow(p)
|
||
}
|
||
e.openMap && u(),
|
||
i = !0
|
||
}
|
||
}
|
||
function s() {
|
||
w("*[data-js='poi-goto'] .hotel-teaser__address__goto").on("keypress", (function(e) {
|
||
"Enter" == e.key && w(e.currentTarget).parents("[data-js='poi-goto']").trigger("click")
|
||
}
|
||
)),
|
||
w('*[data-js="poi-goto"]').on("click", (function(e) {
|
||
if (e.preventDefault(),
|
||
e.stopPropagation(),
|
||
i) {
|
||
var t = w(e.currentTarget).parents("[data-lat], [data-long]")
|
||
, n = t.attr("data-name") || t.find(".poi").html()
|
||
, a = y.findMarkerByName(n);
|
||
y.scaleToFitMarkers([a]),
|
||
y.closeAllInfoWindows(),
|
||
y.scrollToElement(n),
|
||
y.openInfoWindow(n),
|
||
"block" === w(".tab-panel").css("display") && l()
|
||
}
|
||
}
|
||
))
|
||
}
|
||
function l() {
|
||
w("html, body").animate({
|
||
scrollTop: y.$canvas.offset().top - 105
|
||
}, 200)
|
||
}
|
||
function c() {
|
||
if (0 !== w("[data-js=map-expand]").length && !t) {
|
||
var e = document.documentElement.clientHeight
|
||
, i = w('*[data-js="sub-nav-inner"]').height();
|
||
ScreenHelper.isLargeScreen() && (w('*[data-js="location-map-canvas"]').height(e - i),
|
||
google.maps.event.trigger(y.map, "resize"),
|
||
l(),
|
||
w('*[data-js="pois-container"]').addClass("pois-container--full").css("height", e - i),
|
||
w('*[data-js="map-expand"]').addClass("-expanded").css("top", e - i - 46)),
|
||
t = !0
|
||
}
|
||
}
|
||
function d(e, i) {
|
||
0 !== w("[data-js=map-expand]").length && (t || e) && (ScreenHelper.isLargeScreen() && (w('*[data-js="location-map-canvas"]').height(360),
|
||
google.maps.event.trigger(y.map, "resize"),
|
||
t && l(),
|
||
w('*[data-js="pois-container"]').removeClass("pois-container--full").css("height", 360),
|
||
w('*[data-js="map-expand"]').removeClass("-expanded").css("top", 314)),
|
||
t = !1)
|
||
}
|
||
function u() {
|
||
w("body").addClass("is-map-fullscreen-open");
|
||
var t = w(e)
|
||
, i = w(".navigation-bar").hasClass("is-expanded");
|
||
t.addClass("is-visible").toggleClass("topMenuExpanded", i);
|
||
var n = t.data("btn-close-label") ? t.data("btn-close-label") : ""
|
||
, a = w("<p class='map__close-map'><button role='button' data-js-close-map class='btn btn--medium btn--primary-deemphasized'>" + n + "</button></p>");
|
||
w(".filter-page").length && (a.find("button").removeClass("btn--medium"),
|
||
window.ScreenHelper.mediaLargeUp() || w("body").css("overflow", "hidden")),
|
||
w(".filter-page").length && window.ScreenHelper.mediaLargeUp() ? w(".filter-page .map__close-map").length || w(".filter-page .section-heading-wrapper").after(a) : t.append(a),
|
||
y.resizeMap(),
|
||
a.on("click", "button", p),
|
||
"#map" === window.location.hash || w(e).data().noHashChange || history.pushState(null, null, "#map"),
|
||
w(window).on("popstate.fullscreen-map", (function() {
|
||
h(a, t)
|
||
}
|
||
)),
|
||
w(document).on("close-fullscreen-map", (function(e) {
|
||
h(a, t)
|
||
}
|
||
)),
|
||
w(".section-heading-wrapper ~ p.map__close-map").length > 0 && w(window).on("resize", m)
|
||
}
|
||
function p(e) {
|
||
e.preventDefault(),
|
||
h(w("p.map__close-map"), n, !0),
|
||
document.querySelector(".booking-widget-bar") && document.querySelector(".booking-widget-bar").classList.toggle("force-to-top"),
|
||
w("#hotelPage").length && (window.Scandic.isMapClickOnHotelPage = !1,
|
||
document.body.querySelector(".navigation-bar[data-js=main-nav-bar]").style.zIndex = ""),
|
||
o("hide")
|
||
}
|
||
function m(e) {
|
||
!window.ScreenHelper.mediaLargeUp() && w("p.map__close-map").length > 0 && p(e),
|
||
0 == w("p.map__close-map").length && w(window).off("resize", m)
|
||
}
|
||
function h(t, i, n) {
|
||
w(window).off("popstate.fullscreen-map"),
|
||
w(document).off("close-fullscreen-map"),
|
||
i.removeClass("is-visible"),
|
||
w("body").removeClass("is-map-fullscreen-open"),
|
||
w(".filter-page").length && !window.ScreenHelper.mediaLargeUp() && w("body").css("overflow", ""),
|
||
t.remove(),
|
||
n && !w(e).data().noHashChange && history.back()
|
||
}
|
||
function f(e) {
|
||
i || (!function(e) {
|
||
"object" === S(window.google) && "object" === ("undefined" == typeof google ? "undefined" : S(google)) && "object" === S(google.maps) ? r(e) : w.getScript("https://maps.googleapis.com/maps/api/js?v=3&callback=googleMapsLoaded&key=AIzaSyDcO9xiB9d3NBSJ3qevjXu_TSjcrUyW1yI")
|
||
}(e),
|
||
window.googleMapsLoaded = function() {
|
||
r(e),
|
||
setTimeout((function() {
|
||
y && y.resizeMap && y.resizeMap()
|
||
}
|
||
), 500)
|
||
}
|
||
)
|
||
}
|
||
function g() {
|
||
"#map" === window.location.hash && i ? u() : "#map" === window.location.hash && f({
|
||
openMap: !0,
|
||
touchEvents: !0
|
||
})
|
||
}
|
||
function v() {
|
||
w('*[data-js="hotelnav-widget-toggle"]').removeClass("active"),
|
||
w('*[data-js="booking-widget-form"]').css("display", "none"),
|
||
w(".hotel-menu-wrapper").removeClass("has-open-widget"),
|
||
w(window).scroll(),
|
||
document.body.querySelector(".navigation-bar[data-js=main-nav-bar]").style.zIndex = "-1"
|
||
}
|
||
}
|
||
function C() {
|
||
return y
|
||
}
|
||
var k = i(19755);
|
||
function T(e, t) {
|
||
this.$gluedElement = e,
|
||
this.$gluedTo = t,
|
||
this.clingToScrolledElement()
|
||
}
|
||
T.prototype = {
|
||
MIN_HEIGHT: 350,
|
||
clingToScrolledElement: function() {
|
||
var e = this;
|
||
k(window).resize((function() {
|
||
e.onResize()
|
||
}
|
||
)),
|
||
k(window).scroll((function() {
|
||
e.onScroll()
|
||
}
|
||
)),
|
||
this.$gluedTo.on("eqResize", (function() {
|
||
e.onResize()
|
||
}
|
||
)),
|
||
ScreenHelper.isLargeScreen() && (this.adaptHeightToScrolledElement(),
|
||
this.revalidatePosition())
|
||
},
|
||
onResize: function() {
|
||
ScreenHelper.isLargeScreen() ? this.adaptHeightToScrolledElement() : this.reset()
|
||
},
|
||
onScroll: function() {
|
||
ScreenHelper.isLargeScreen() && this.revalidatePosition()
|
||
},
|
||
adaptHeightToScrolledElement: function() {
|
||
var e = this.desiredHeight();
|
||
e < this.MIN_HEIGHT && (e = this.MIN_HEIGHT),
|
||
this.$gluedElement.height(e),
|
||
this.$gluedElement.trigger("scroll-with:resize")
|
||
},
|
||
revalidatePosition: function() {
|
||
this.scrolledAboveFixedElement() ? this.fixAtScrollElementTop() : this.scrolledBelowFixedElement() ? this.fixAtScrollElementBottom() : this.fixAtWindowTop()
|
||
},
|
||
desiredHeight: function() {
|
||
var e = parseInt(this.$gluedTo.css("height"));
|
||
return Math.min(e, k(window).height())
|
||
},
|
||
scrolledAboveFixedElement: function() {
|
||
return k(window).scrollTop() < this.$gluedTo.offset().top
|
||
},
|
||
scrolledBelowFixedElement: function() {
|
||
return k(window).scrollTop() + k(window).height() > this.$gluedTo.offset().top + this.$gluedTo.height()
|
||
},
|
||
fixAtScrollElementTop: function() {
|
||
this.$gluedElement.css({
|
||
position: "absolute",
|
||
top: 0
|
||
})
|
||
},
|
||
fixAtScrollElementBottom: function() {
|
||
this.$gluedElement.css({
|
||
position: "absolute",
|
||
top: this.$gluedTo.height() - this.$gluedElement.height()
|
||
})
|
||
},
|
||
fixAtWindowTop: function() {
|
||
this.$gluedElement.css({
|
||
position: "fixed",
|
||
top: 0
|
||
})
|
||
},
|
||
reset: function() {
|
||
"static" !== this.$gluedElement.css("position") && (this.$gluedElement.css({
|
||
position: "static",
|
||
top: "",
|
||
height: ""
|
||
}),
|
||
this.$gluedElement.trigger("scroll-with:resize"))
|
||
}
|
||
};
|
||
var x = i(19755)
|
||
, A = i(19755)
|
||
, I = function() {
|
||
var e, t, i, n = "hotelSortBy";
|
||
function a(i, n) {
|
||
(t = e.find("[data-js-sortable-hotel-list__hotel]").get()).sort(r[i]),
|
||
t.forEach((function(t) {
|
||
e.append(t),
|
||
"function" == typeof n && n(A(t))
|
||
}
|
||
))
|
||
}
|
||
function o(e) {
|
||
"function" == typeof history.replaceState ? history.replaceState({}, window.title, "#" + e) : document.location.hash = e
|
||
}
|
||
A(document).on("change", "select[name=sort-order]", (function(t) {
|
||
var r = A(t.target).val();
|
||
i = !(!A(t.target).data() || !A(t.target).data().urlHash) && A(t.target).data().urlHash,
|
||
e = A("[data-js-sortable-hotel-list]"),
|
||
i || (o("sort=" + r),
|
||
sessionStorage.setItem(n, r)),
|
||
a(r, (function(e) {
|
||
var t;
|
||
(t = e).addClass("animated--flash-in"),
|
||
t.one("webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend", (function() {
|
||
t.removeClass("animated--flash-in")
|
||
}
|
||
))
|
||
}
|
||
))
|
||
}
|
||
));
|
||
var r = {
|
||
distance: function(e, t) {
|
||
return s(e, t) || (i = t,
|
||
n = "data-distance",
|
||
a = parseInt(c(e, n)),
|
||
o = parseInt(c(i, n)),
|
||
d(a, o));
|
||
var i, n, a, o
|
||
},
|
||
name: function(e, t) {
|
||
return s(e, t) || (i = t,
|
||
a = c(e, n = "data-name"),
|
||
o = c(i, n),
|
||
d(a, o));
|
||
var i, n, a, o
|
||
},
|
||
price: function(e, t) {
|
||
return s(e, t) || l(e, t, "data-price")
|
||
},
|
||
"tripadvisor-rating": function(e, t) {
|
||
return s(e, t) || l(t, e, "data-tripadvisor-rating")
|
||
}
|
||
};
|
||
function s(e, t) {
|
||
var i = e.hasAttribute("data-available")
|
||
, n = e.hasAttribute("data-available-for-booking-code")
|
||
, a = t.hasAttribute("data-available")
|
||
, o = t.hasAttribute("data-available-for-booking-code");
|
||
return i && !a ? -1 : a && !i ? 1 : n && !o ? -1 : o && !n ? 1 : 0
|
||
}
|
||
function l(e, t, i) {
|
||
return d(parseFloat(c(e, i)) || 0, parseFloat(c(t, i)) || 0)
|
||
}
|
||
function c(e, t) {
|
||
if (e.hasAttribute(t))
|
||
return e.getAttribute(t);
|
||
var i = "[" + t + "]";
|
||
return null !== e.querySelector(i) && e.querySelector(i).hasAttribute(t) ? e.querySelector(i).getAttribute(t) : 0
|
||
}
|
||
function d(e, t) {
|
||
return e === t ? 0 : e < t ? -1 : 1
|
||
}
|
||
var u = window.location.hash.match(/sort=([\w-]+)/)
|
||
, p = u ? u[1] : sessionStorage.getItem(n)
|
||
, m = A("select[name=sort-order]");
|
||
(e = e || A("[data-js-sortable-hotel-list]")).length && p && void 0 !== r[p] && m.find('option[value="' + p + '"]').length && (m.val(p),
|
||
a(p),
|
||
i = !(!m.data() || !m.data().urlHash) && m.data().urlHash,
|
||
u || i || o("sort=" + p))
|
||
}
|
||
, P = i(19755)
|
||
, D = i(19755)
|
||
, O = i(19755);
|
||
function E(e) {
|
||
this.moduleName = "formDataStore",
|
||
this.element = e,
|
||
this.init()
|
||
}
|
||
E.prototype.init = function() {
|
||
this.identifier = O(this.element).attr("id") || O(this.element).attr("name"),
|
||
this.identifier ? (this.populateForm(),
|
||
O(this.element).on("submit", function() {
|
||
this.saveFormData()
|
||
}
|
||
.bind(this)),
|
||
O(this.element).on("blur", "input,select", function() {
|
||
this.saveFormData()
|
||
}
|
||
.bind(this))) : window.console && console.log("FormDataStore Error: No form identifier. Give the form a name or id")
|
||
}
|
||
,
|
||
E.prototype.saveFormData = function() {
|
||
for (var e, t = {}, i = O(this.element).find(":input").filter("[data-remember-form-include]").not(":disabled"), n = i.length; n--; )
|
||
(e = i.eq(n)).is(":checkbox, :radio") ? t[e.attr("name")] = e.is(":checked") : t[e.attr("name")] = e.val() ? e.val() : "";
|
||
window.sessionStorage.setItem("form_" + this.identifier, JSON.stringify(t))
|
||
}
|
||
,
|
||
E.prototype.populateForm = function() {
|
||
for (var e, t = JSON.parse(window.sessionStorage.getItem("form_" + this.identifier)), i = Object.keys(t || {}), n = 0, a = i.length; n < a; ++n)
|
||
e = i[n],
|
||
t.hasOwnProperty(e) && this.populateField(e, t[e])
|
||
}
|
||
,
|
||
E.prototype.populateField = function(e, t) {
|
||
var i = O(this.element).find('[name="' + e + '"]').filter("[data-remember-form-include]").not(":disabled");
|
||
i.is("select") ? i.find('option[value="' + t + '"]').not(":disabled").length && (i.val(t),
|
||
i.find('option[value="' + t + '"]').attr("selected", "selected"),
|
||
i.trigger("change")) : i.is(":checkbox, :radio") ? i.prop("checked", t).trigger("change") : i.val() || (i.attr("value", t),
|
||
i.val(t),
|
||
i.trigger("change"))
|
||
}
|
||
;
|
||
var M = i(19755);
|
||
function L(e, t) {
|
||
return t.reduce((function(e, t, i, n) {
|
||
var a = n.slice(0, i).find((function(e) {
|
||
return t.name === e.name
|
||
}
|
||
));
|
||
return a ? "true" === a.value || "true" === t.value ? (e[t.name] = "true",
|
||
e) : void 0 : (e[t.name] = t.value,
|
||
e)
|
||
}
|
||
), {})
|
||
}
|
||
var N = i(19755);
|
||
function H(e, t) {
|
||
return N.ajax({
|
||
url: e,
|
||
type: "post",
|
||
data: t
|
||
})
|
||
}
|
||
function B(e, t) {
|
||
return N.ajax({
|
||
url: e,
|
||
type: "get"
|
||
})
|
||
}
|
||
var j = i(19755);
|
||
function z(e) {
|
||
this.$element = e,
|
||
this.init()
|
||
}
|
||
z.prototype.init = function() {
|
||
j("form", this.$element).on("submit", function(e) {
|
||
if (e.preventDefault(),
|
||
!j("form", this.$element).valid())
|
||
return !1;
|
||
var t = j("form", this.$element)
|
||
, i = t.serializeArray();
|
||
return i = L(0, i),
|
||
this.ajaxPost(i),
|
||
!1
|
||
}
|
||
.bind(this))
|
||
}
|
||
,
|
||
z.prototype.ajaxPost = function(e) {
|
||
var t = this.$element.data("sign-up-redirect-url") + "?registration=success"
|
||
, i = this;
|
||
H(window.location.origin + "/api/upgradetoscandicfriendsprofile", e).done((function(e) {
|
||
t ? window.location = t : location.reload(!0)
|
||
}
|
||
)).fail((function(e) {
|
||
i.ajaxErrorHandling(e)
|
||
}
|
||
))
|
||
}
|
||
,
|
||
z.prototype.ajaxErrorHandling = function(e) {
|
||
var t = j("#sign-up-error")
|
||
, i = j("#sign-up-conflict-text")
|
||
, n = j("*#sign-up-general-error-text");
|
||
t.removeClass("hidden"),
|
||
409 === e.status ? (n.addClass("hidden"),
|
||
i.removeClass("hidden")) : (i.addClass("hidden"),
|
||
n.removeClass("hidden"));
|
||
var a = this.$element.find(".js-form-submit-button");
|
||
window.Scandic.DisableEnableButton.enable(a),
|
||
j("html, body").animate({
|
||
scrollTop: t.offset().top - 60
|
||
}, 300)
|
||
}
|
||
,
|
||
j.validator.unobtrusive.adapters.add("birthyearrangevalidation", ["minage", "maxage"], (function(e) {
|
||
e.rules.birthyearrangevalidation = e.params,
|
||
e.messages.birthyearrangevalidation = e.message
|
||
}
|
||
)),
|
||
j.validator.addMethod("birthyearrangevalidation", (function(e, t, i) {
|
||
if (e) {
|
||
var n = new Date(e).getFullYear();
|
||
return n >= parseInt(i.minage, 10) && n <= parseInt(i.maxage, 10)
|
||
}
|
||
}
|
||
));
|
||
var q = i(19755)
|
||
, F = i(19755);
|
||
function R(e) {
|
||
this.$element = e,
|
||
this.previousMessage = null,
|
||
this.init()
|
||
}
|
||
R.prototype.init = function() {
|
||
var e = F("form", this.$element);
|
||
e.on("submit", function(t) {
|
||
var i;
|
||
return t.preventDefault(),
|
||
e.valid() && (i = L(0, e.serializeArray()),
|
||
this.ajaxPost(i)),
|
||
!1
|
||
}
|
||
.bind(this))
|
||
}
|
||
,
|
||
R.prototype.ajaxPost = function(e) {
|
||
var t = this.$element.data("modify-booking-redirect-url")
|
||
, i = this;
|
||
H(window.location.origin + this.$element.data("modify-booking-ajax-url"), e).done((function() {
|
||
window.location = t
|
||
}
|
||
)).fail((function(e) {
|
||
i.ajaxErrorHandling(e)
|
||
}
|
||
))
|
||
}
|
||
,
|
||
R.prototype.ajaxErrorHandling = function(e) {
|
||
var t, i, n, a, o = this.$element.find(F("*[data-modify-booking-error]")), r = this.$element.find("button[data-js=form-submit-button]");
|
||
o.removeClass("hidden"),
|
||
null !== this.previousMessage && this.previousMessage.addClass("hidden"),
|
||
400 === e.status ? ((t = this.$element.find(F("*[data-modify-booking-error-bad-request]"))).removeClass("hidden"),
|
||
this.previousMessage = t,
|
||
window.Scandic.DisableEnableButton.enable(r)) : 403 === e.status ? ((i = this.$element.find(F("*[data-modify-booking-error-forbidden]"))).removeClass("hidden"),
|
||
this.previousMessage = i,
|
||
window.Scandic.DisableEnableButton.enable(r)) : 405 === e.status ? ((n = this.$element.find(F("*[data-modify-booking-error-unauthorized]"))).removeClass("hidden"),
|
||
this.previousMessage = n,
|
||
window.Scandic.DisableEnableButton.enable(r)) : ((a = this.$element.find(F("*[data-modify-booking-error-general]"))).removeClass("hidden"),
|
||
this.previousMessage = a,
|
||
window.Scandic.DisableEnableButton.enable(r))
|
||
}
|
||
;
|
||
var $ = i(19755)
|
||
, V = i(19755);
|
||
function W(e) {
|
||
return function(e) {
|
||
if (Array.isArray(e))
|
||
return U(e)
|
||
}(e) || function(e) {
|
||
if ("undefined" != typeof Symbol && null != e[Symbol.iterator] || null != e["@@iterator"])
|
||
return Array.from(e)
|
||
}(e) || function(e, t) {
|
||
if (!e)
|
||
return;
|
||
if ("string" == typeof e)
|
||
return U(e, t);
|
||
var i = Object.prototype.toString.call(e).slice(8, -1);
|
||
"Object" === i && e.constructor && (i = e.constructor.name);
|
||
if ("Map" === i || "Set" === i)
|
||
return Array.from(e);
|
||
if ("Arguments" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))
|
||
return U(e, t)
|
||
}(e) || function() {
|
||
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
|
||
}()
|
||
}
|
||
function U(e, t) {
|
||
(null == t || t > e.length) && (t = e.length);
|
||
for (var i = 0, n = new Array(t); i < t; i++)
|
||
n[i] = e[i];
|
||
return n
|
||
}
|
||
function G(e) {
|
||
this.$domObj = e,
|
||
this.$tabs = void 0
|
||
}
|
||
G.prototype.initTab = function(e, t) {
|
||
e.empty(),
|
||
e.html("<div style='width:100%;'></div>"),
|
||
window.setTimeout((function() {
|
||
e.html(t)
|
||
}
|
||
), 0),
|
||
V("a", e).one("click", (function(t) {
|
||
e.prepend('<div class="price-calender__tab__active-loader"><div class="loader"></div></div>')
|
||
}
|
||
))
|
||
}
|
||
,
|
||
G.prototype.init = function() {
|
||
this.$tabs = V("*[data-price-calendar-tab]", this.$domObj),
|
||
V(".price-calender__tab--selected a", this.$domObj).on("click", (function(e) {
|
||
e.preventDefault()
|
||
}
|
||
));
|
||
var e = this;
|
||
if (this.$tabs.each((function(t) {
|
||
var i, n = V(this).data("endpoint-url"), a = V(this);
|
||
n && (i = n,
|
||
B(i)).done((function(t) {
|
||
e.initTab(a, t)
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
screen.width < 768) {
|
||
if (V(".price-calender__tab--selected").length) {
|
||
for (var t = V(".price-calender__tab-list")[0], i = V(".price-calender__tab--selected")[0], n = t.offsetWidth, a = i.offsetWidth, o = W(i.parentElement.children).findIndex((function(e) {
|
||
return e.className === i.className
|
||
}
|
||
)), r = 0, s = i.parentElement.children, l = 0; l < o; l++)
|
||
r += s[l].offsetWidth;
|
||
var c = Math.max(0, r - (n - a) / 2) + a / 4;
|
||
c > 40 && t.scrollTo(c, 0)
|
||
}
|
||
} else
|
||
"javascript:void(0);" != V(".left-chevron")[0].href ? V(".left-chevron")[0].href = new URL("/hotelreservation/select-rate" + V(".left-chevron").data("endpointUrl").replace("pricecalendar/mini/tab", ""),window.location.href).href : V(".left-chevron").attr("tabindex", "-1"),
|
||
"javascript:void(0);" != V(".right-chevron")[0].href ? V(".right-chevron")[0].href = new URL("/hotelreservation/select-rate" + V(".right-chevron").data("endpointUrl").replace("pricecalendar/mini/tab", ""),window.location.href).href : V(".right-chevron").attr("tabindex", "-1")
|
||
}
|
||
;
|
||
var Q = i(19755)
|
||
, Y = i(19755);
|
||
function J(e) {
|
||
this.$toggler = Y(e),
|
||
this.$body = Y("body"),
|
||
this.$mainNavigationBar = Y(".main-header.navigation-bar"),
|
||
this.$target = void 0,
|
||
this.$document = Y(document),
|
||
this.isOpen = !1,
|
||
this.init()
|
||
}
|
||
J.prototype.toggleOpenClosed = function(e) {
|
||
this.isOpen ? this.close() : this.$document.scrollTop() > this.$target.scrollTop() ? this.openWithScroll() : this.open(),
|
||
e.preventDefault()
|
||
}
|
||
,
|
||
J.prototype.open = function() {
|
||
this.$target.removeClass("is-collapsed"),
|
||
this.$toggler.addClass("is-expanded"),
|
||
this.$mainNavigationBar.addClass("u-scroll-y"),
|
||
this.$body.addClass("u-no-scroll"),
|
||
this.publishToOtherComponents("isOpened"),
|
||
this.isOpen = !0
|
||
}
|
||
,
|
||
J.prototype.openWithScroll = function() {
|
||
Y("html, body").animate({
|
||
scrollTop: this.$target.scrollTop()
|
||
}, 500, function() {
|
||
this.open()
|
||
}
|
||
.bind(this))
|
||
}
|
||
,
|
||
J.prototype.close = function() {
|
||
this.$target.addClass("is-collapsed"),
|
||
this.$toggler.removeClass("is-expanded"),
|
||
this.$mainNavigationBar.removeClass("u-scroll-y"),
|
||
this.$body.removeClass("u-no-scroll"),
|
||
this.publishToOtherComponents("isClosed"),
|
||
this.isOpen = !1
|
||
}
|
||
,
|
||
J.prototype.publishToOtherComponents = function(e) {
|
||
var t = "mainNavToggler." + e;
|
||
this.$toggler.trigger(t)
|
||
}
|
||
,
|
||
J.prototype.subscribeToOtherComponents = function() {
|
||
this.$document.on("bookButtonToggler.open-booking-widget bookButtonToggler.open-booking-widget-with-summary ", function() {
|
||
this.close()
|
||
}
|
||
.bind(this))
|
||
}
|
||
,
|
||
J.prototype.init = function() {
|
||
var e = this.$toggler.data("target");
|
||
this.$target = Y(e),
|
||
0 !== this.$target.length ? (this.subscribeToOtherComponents(),
|
||
this.$toggler.on("click", this.toggleOpenClosed.bind(this))) : console.log("Target is missing for MainNavToggler")
|
||
}
|
||
;
|
||
var X = i(19755)
|
||
, K = i(19755);
|
||
function Z(e) {
|
||
this.$mainNavigationBar = K(e),
|
||
this.$document = K(document),
|
||
this.isBookingWidgetOpen = !1,
|
||
this.isMainNavigationOpen = !1,
|
||
this.init()
|
||
}
|
||
Z.prototype.toggleMainNavState = function(e) {
|
||
!0 === this.isBookingWidgetOpen || !0 === this.isMainNavigationOpen ? this.expand() : this.collapseAndMakeSticky()
|
||
}
|
||
,
|
||
Z.prototype.expand = function() {
|
||
this.$mainNavigationBar.addClass("is-expanded")
|
||
}
|
||
,
|
||
Z.prototype.collapseAndMakeSticky = function() {
|
||
this.$mainNavigationBar.removeClass("is-expanded")
|
||
}
|
||
,
|
||
Z.prototype.subscribeToOtherComponents = function() {
|
||
this.$document.on("widgetWithSummaryToggler.isOpened", function(e) {
|
||
this.isBookingWidgetOpen = !0,
|
||
this.toggleMainNavState()
|
||
}
|
||
.bind(this)),
|
||
this.$document.on("widgetWithSummaryToggler.isClosed", function(e) {
|
||
this.isBookingWidgetOpen = !1,
|
||
this.toggleMainNavState()
|
||
}
|
||
.bind(this)),
|
||
this.$document.on("bookingWidgetToggle.isOpening", function(e) {
|
||
this.isBookingWidgetOpen = !0,
|
||
this.toggleMainNavState()
|
||
}
|
||
.bind(this)),
|
||
this.$document.on("bookingWidgetToggle.isClosed", function(e) {
|
||
this.isBookingWidgetOpen = !1,
|
||
this.toggleMainNavState()
|
||
}
|
||
.bind(this)),
|
||
this.$document.on("mainNavToggler.isOpened", function(e) {
|
||
this.isMainNavigationOpen = !0,
|
||
this.toggleMainNavState(),
|
||
K("#navbar-header-design").removeClass("hidden")
|
||
}
|
||
.bind(this)),
|
||
this.$document.on("mainNavToggler.isClosed", function(e) {
|
||
this.isMainNavigationOpen = !1,
|
||
this.toggleMainNavState(),
|
||
K("#navbar-header-design").addClass("hidden")
|
||
}
|
||
.bind(this))
|
||
}
|
||
,
|
||
Z.prototype.init = function() {
|
||
this.subscribeToOtherComponents()
|
||
}
|
||
;
|
||
var ee = i(19755)
|
||
, te = i(19755)
|
||
, ie = "is-expanded"
|
||
, ne = "is-collapsed";
|
||
function ae(e) {
|
||
this.self = this,
|
||
this.toggleElement = e,
|
||
this.data = this.toggleElement.data(),
|
||
void 0 !== this.data.target ? (this.expandableTarget = te('[data-js-expandable-module="' + this.data.target + '"]'),
|
||
this.expandableTarget.on("data-js-collapsible-ribbon-state-change", {
|
||
self: this.self
|
||
}, this.expandableTargetChangedState),
|
||
this.updateState()) : this.updateLabel(),
|
||
this.toggleElement.click({
|
||
self: this.self
|
||
}, (function(e) {
|
||
e.preventDefault(),
|
||
e.data.self.isClicked()
|
||
}
|
||
))
|
||
}
|
||
ae.prototype = {
|
||
isClicked: function() {
|
||
void 0 !== this.expandableTarget ? (this.expandableTarget.toggleClass(ne).trigger("data-js-expandable-module-state-change"),
|
||
this.updateState()) : (this.toggleElement.toggleClass(ie),
|
||
this.updateLabel())
|
||
},
|
||
updateState: function() {
|
||
this.expandableTarget.hasClass(ne) ? this.toggleElement.removeClass(ie) : this.toggleElement.addClass(ie),
|
||
this.updateLabel()
|
||
},
|
||
updateLabel: function() {
|
||
void 0 === this.data.textExpand && void 0 === this.data.textCollapse || (this.toggleElement.hasClass(ie) ? void 0 !== this.data.textCollapse && this.toggleElement.find("span:not(:has(*))").text(this.data.textCollapse) : void 0 !== this.data.textExpand && this.toggleElement.find("span:not(:has(*))").text(this.data.textExpand))
|
||
},
|
||
expandableTargetChangedState: function(e) {
|
||
e.data.self.updateState()
|
||
}
|
||
};
|
||
var oe = i(19755);
|
||
function re() {
|
||
oe("[data-js-expandable-toggler]").length && function() {
|
||
var e = [];
|
||
oe("[data-js-expandable-toggler]").each((function() {
|
||
var t = new ae(oe(this));
|
||
e.push(t)
|
||
}
|
||
))
|
||
}()
|
||
}
|
||
var se = i(19755);
|
||
function le(e) {
|
||
this.$target = void 0,
|
||
this.$toggler = se(e),
|
||
this.$document = se(document),
|
||
this.isOpen = !1,
|
||
this.init()
|
||
}
|
||
le.prototype.toggleOpenClosed = function(e) {
|
||
this.isOpen ? this.close() : this.open(),
|
||
e.preventDefault()
|
||
}
|
||
,
|
||
le.prototype.open = function() {
|
||
this.$toggler.addClass("active"),
|
||
this.$target.slideDown(function() {
|
||
this.isOpen = !0,
|
||
this.publishToOtherComponents("isOpened")
|
||
}
|
||
.bind(this))
|
||
}
|
||
,
|
||
le.prototype.close = function() {
|
||
this.$toggler.removeClass("active"),
|
||
this.$target.slideUp(function() {
|
||
this.isOpen = !1,
|
||
this.publishToOtherComponents("isClosed")
|
||
}
|
||
.bind(this))
|
||
}
|
||
,
|
||
le.prototype.publishToOtherComponents = function(e) {
|
||
var t = "widgetWithSummaryToggler." + e;
|
||
this.$toggler.trigger(t)
|
||
}
|
||
,
|
||
le.prototype.subscribeToOtherComponents = function() {
|
||
this.$document.on("bookButtonToggler.open-booking-widget-with-summary", function() {
|
||
this.open()
|
||
}
|
||
.bind(this)),
|
||
this.$document.on("bookButtonToggler.close-booking-widget-with-summary", function() {
|
||
this.close()
|
||
}
|
||
.bind(this))
|
||
}
|
||
,
|
||
le.prototype.init = function() {
|
||
var e = this.$toggler.data("target");
|
||
this.$target = se("*[data-js=" + e + "]"),
|
||
0 !== this.$target.length ? (this.subscribeToOtherComponents(),
|
||
this.$toggler.on("click", this.toggleOpenClosed.bind(this))) : console.log("Target is missing for WidgetWithSummaryToggler")
|
||
}
|
||
;
|
||
var ce = i(19755)
|
||
, de = i(19755);
|
||
function ue(e) {
|
||
this.$toggler = de(e),
|
||
this.isOpen = !1,
|
||
this.hasWidgetWithSummary = !1,
|
||
this.$document = de(document),
|
||
this.init()
|
||
}
|
||
ue.prototype.toggleOpenClosed = function(e) {
|
||
(0,
|
||
m.ay)("book all pages", {
|
||
ctaname: "book"
|
||
}),
|
||
"hotelsearchpage" != datalayer[0].pagetype && (this.isOpen ? this.close() : this.$document.scrollTop() > this.$toggler.scrollTop() ? this.openWithScroll() : this.open(),
|
||
e.preventDefault())
|
||
}
|
||
,
|
||
ue.prototype.open = function() {
|
||
this.hasWidgetWithSummary ? this.publishToOtherComponents("open-booking-widget-with-summary") : this.publishToOtherComponents("open-booking-widget")
|
||
}
|
||
,
|
||
ue.prototype.openWithScroll = function() {
|
||
de("html, body").animate({
|
||
scrollTop: this.$toggler.scrollTop()
|
||
}, 500, function() {
|
||
this.open()
|
||
}
|
||
.bind(this))
|
||
}
|
||
,
|
||
ue.prototype.close = function() {
|
||
this.hasWidgetWithSummary ? this.publishToOtherComponents("close-booking-widget-with-summary") : this.publishToOtherComponents("close-booking-widget")
|
||
}
|
||
,
|
||
ue.prototype.publishToOtherComponents = function(e) {
|
||
var t = "bookButtonToggler." + e;
|
||
this.$toggler.trigger(t)
|
||
}
|
||
,
|
||
ue.prototype.subscribeToOtherComponents = function() {
|
||
this.$document.on("widgetWithSummaryToggler.isOpened", function() {
|
||
this.isOpen = !0
|
||
}
|
||
.bind(this)),
|
||
this.$document.on("widgetWithSummaryToggler.isClosed", function() {
|
||
this.isOpen = !1
|
||
}
|
||
.bind(this)),
|
||
this.$document.on("bookingWidgetToggle.isOpening", function() {
|
||
this.isOpen = !0
|
||
}
|
||
.bind(this)),
|
||
this.$document.on("bookingWidgetToggle.isClosed", function() {
|
||
this.isOpen = !1
|
||
}
|
||
.bind(this))
|
||
}
|
||
,
|
||
ue.prototype.init = function() {
|
||
this.subscribeToOtherComponents(),
|
||
this.$toggler.on("click", this.toggleOpenClosed.bind(this)),
|
||
"true" === this.$toggler.attr("data-has-summary") && (this.hasWidgetWithSummary = !0)
|
||
}
|
||
;
|
||
var pe = i(19755)
|
||
, me = i(19755)
|
||
, he = {};
|
||
function fe(e, t) {
|
||
this.button = me(e),
|
||
this.options = me.extend({}, he, t),
|
||
this.target = me('*[data-collapsable="' + this.button.attr("data-target") + '"]'),
|
||
this.scrollTop = !!this.button.data("scroll-top"),
|
||
this.overflowClass = this.button.data("overflow-class"),
|
||
this.overflow = this.button.data("disable-overflow"),
|
||
this.init()
|
||
}
|
||
fe.prototype.init = function() {
|
||
var e = this;
|
||
this.button.on("click", (function(t) {
|
||
var i = "collapse" === me(this).data("toggle")
|
||
, n = "expand" === me(this).data("toggle")
|
||
, a = e.target.hasClass("is-collapsed");
|
||
"undefined" != typeof overflow && "undefined" != typeof overflowClass && me(overflow).toggleClass(overflowClass, e.button.hasClass("is-expanded")),
|
||
a && !i ? (e.previousScrollPosition = me(document).scrollTop(),
|
||
e.scrollTop && me(document).scrollTop() > e.target.scrollTop() ? me("html, body").animate({
|
||
scrollTop: e.target.scrollTop()
|
||
}, 500, (function() {
|
||
e.toggleCollapsed(!1)
|
||
}
|
||
)) : e.toggleCollapsed(!1)) : n || (e.toggleCollapsed(!0),
|
||
e.scrollTop && e.previousScrollPosition > e.target.scrollTop() && me("html, body").animate({
|
||
scrollTop: e.previousScrollPosition
|
||
}, 500)),
|
||
e.button.is('input[type="checkbox"], input[type="radio"]') || t.preventDefault()
|
||
}
|
||
))
|
||
}
|
||
,
|
||
fe.prototype.toggleCollapsed = function(e) {
|
||
this.button.toggleClass("is-expanded", !e),
|
||
this.target.toggleClass("is-collapsed", e),
|
||
this.options.onToggleCollapse.call(this, e)
|
||
}
|
||
;
|
||
var ge = i(19755)
|
||
, ve = function() {
|
||
for (var e, t = ge('*[data-js="collapsible-toggler"]'), i = 0, n = t.length; i < n; ++i) {
|
||
var a = new fe(e = t[i],{
|
||
onToggleCollapse: function(e) {
|
||
var t = this.button.data("target");
|
||
"main-menu" === t && (ge(".navigation-bar").toggleClass("is-expanded", !e),
|
||
ge(window).trigger("main-nav-toggle"),
|
||
ge(".login__container .form-close-btn").trigger("click"),
|
||
e || widgetToggler.hideMainNavWidgetArea(!0)),
|
||
"list-expandable" === t.substring(0, 15) && window.Scandic.OneSidebarPageLayout.adjustHeight()
|
||
}
|
||
});
|
||
ge(e).data("collapsible-toggler", a)
|
||
}
|
||
t.on("click", (function() {
|
||
r(ge(this))
|
||
}
|
||
))
|
||
}
|
||
, be = i(19755);
|
||
function ye(e) {
|
||
this.$target = be(e),
|
||
this.$document = be(document),
|
||
this.isOpen = !1,
|
||
this.init()
|
||
}
|
||
ye.prototype.open = function() {
|
||
this.publishToOtherComponents("isOpening"),
|
||
this.$target.slideDown(function() {
|
||
this.isOpen = !0,
|
||
this.publishToOtherComponents("isOpened")
|
||
}
|
||
.bind(this))
|
||
}
|
||
,
|
||
ye.prototype.close = function() {
|
||
this.publishToOtherComponents("isClosing"),
|
||
this.$target.slideUp(function() {
|
||
this.isOpen = !1,
|
||
this.publishToOtherComponents("isClosed")
|
||
}
|
||
.bind(this))
|
||
}
|
||
,
|
||
ye.prototype.publishToOtherComponents = function(e) {
|
||
var t = "bookingWidgetToggle." + e;
|
||
this.$target.trigger(t)
|
||
}
|
||
,
|
||
ye.prototype.subscribeToOtherComponents = function() {
|
||
this.$document.on("bookButtonToggler.open-booking-widget", function() {
|
||
this.open()
|
||
}
|
||
.bind(this)),
|
||
this.$document.on("bookButtonToggler.close-booking-widget", function() {
|
||
this.close()
|
||
}
|
||
.bind(this))
|
||
}
|
||
,
|
||
ye.prototype.init = function() {
|
||
this.subscribeToOtherComponents()
|
||
}
|
||
;
|
||
var we = i(19755)
|
||
, Se = i(15898)
|
||
, _e = i(19755)
|
||
, Ce = '*[data-js="image-slider-hotel-trigger"], *[data-js="image-slider-room-trigger"]';
|
||
var ke = function() {
|
||
_e(Ce).each((function() {
|
||
_e(this).on("click", (function(e) {
|
||
e.originalEvent.preventDefault();
|
||
var t, i = new Se.Z({
|
||
width: window.innerWidth,
|
||
height: window.innerHeight,
|
||
contentBackground: !1,
|
||
contentBackgroundColor: "transparent",
|
||
triggerObject: _e(this),
|
||
closeOnBackBtn: !0,
|
||
showLoadingSpinner: !0,
|
||
closeOnBackgroundClick: !1,
|
||
fullscreenInSmallDown: !1,
|
||
customClass: "fullscreen-gallery"
|
||
}), n = _e(this).data("image-source");
|
||
(t = "/ajax/imageslider/roomcategory/images/" + n,
|
||
B(t)).done(function(e) {
|
||
i.setContent(e),
|
||
Modernizr.scrset || picturefill(),
|
||
document.querySelector(".close-btn").addEventListener("click", function(e) {
|
||
e.preventDefault(),
|
||
i.close()
|
||
}
|
||
.bind(i)),
|
||
_e(".image-wrapper > img").last().on("load", (function() {
|
||
_e(".modal__circular-loader-container").hide()
|
||
}
|
||
))
|
||
}
|
||
.bind(i)).fail((function() {
|
||
console.log("Error fetching image slider")
|
||
}
|
||
))
|
||
}
|
||
))
|
||
}
|
||
))
|
||
}
|
||
, Te = i(19755)
|
||
, xe = i(19755);
|
||
var Ae = i(19755)
|
||
, Ie = i(19755)
|
||
, Pe = "hotelnav-widget-toggle";
|
||
function De(e) {
|
||
var t = Ie('*[data-js="inquiry-widget"]').find('*[data-js="inquiry-widget-secondary-fields"]')
|
||
, i = Ie('*[data-js="widget-icon"]')
|
||
, n = Ie('*[data-is-open="inquiry-widget-open"]')
|
||
, a = Ie('*[data-js="check-availibility-link"]')
|
||
, o = Ie('*[data-js="pilot-hotel-labels"]');
|
||
Ie('*[data-mediumup-goto="hotelnav-widget"]').length ? n.hide() : e && "" === Ie.trim(Ie("#widgetdestination").val()) && (t.hide(),
|
||
Ie("#widgetdestination").removeClass("pilot-hotel-search"),
|
||
i.show(),
|
||
a.hide(),
|
||
o.hide())
|
||
}
|
||
function Oe(e, t, i) {
|
||
var n = t.closest(".navigation-bar")
|
||
, a = Ie(".hero-intro__content").find(".hotel-menu-wrapper").closest('[data-js="sub-nav"]')
|
||
, o = n.find('[data-js="collapsible-toggler"]').data("collapsible-toggler");
|
||
De(!0);
|
||
var r = function() {
|
||
n.addClass("is-expanded"),
|
||
e.slideDown(),
|
||
t.addClass("active")
|
||
};
|
||
if (t.data("js") === Pe && i && !i.closest(".navigation-bar").length)
|
||
if (Ie(window).width() < window.ScreenHelper.CSS_SMALL_BREAKPOINT && window.Scandic.hotelNavs.map((function(e) {
|
||
return e.hideNav()
|
||
}
|
||
)),
|
||
(0,
|
||
m.ay)("book all pages", {
|
||
ctaname: "book"
|
||
}),
|
||
a.hasClass("sticky"))
|
||
if (t.trigger("close-fullscreen-map"),
|
||
e.slideUp((function() {
|
||
Ie(".mp-cta").length || (a.removeClass("sticky"),
|
||
Ie(".hotel-menu-wrapper").addClass("has-open-widget"))
|
||
}
|
||
)),
|
||
"booking-widget-form" == t.data("target"))
|
||
Ie("html, body").animate({
|
||
scrollTop: 0
|
||
}, r);
|
||
else if ("hotelnav-widget" == t.data("target")) {
|
||
var s = Ie(".mp-cta").length ? t.offset().top - 20 : 0;
|
||
Ie("html, body").animate({
|
||
scrollTop: s
|
||
}, r)
|
||
} else
|
||
window.ScreenHelper.mediaMediumUp() ? Ie("html, body").animate({
|
||
scrollTop: 0
|
||
}) : r();
|
||
else
|
||
e.slideUp((function() {
|
||
document.querySelector(".mp-cta") || Ie(".hotel-menu-wrapper").addClass("has-open-widget")
|
||
}
|
||
)),
|
||
"booking-widget-form" == t.data("target") ? Ie("html, body").animate({
|
||
scrollTop: 0
|
||
}, r) : Ie(document).scrollTop() < t.offset().top - 20 ? Ie("html, body").animate({
|
||
scrollTop: t.offset().top - 20
|
||
}, r) : r();
|
||
else
|
||
o && !o.isCollapsed && o.toggleCollapsed(!0),
|
||
Ie(".login__container .form-close-btn").trigger("click"),
|
||
Ie(document).scrollTop() > 0 ? Ie("html, body").animate({
|
||
scrollTop: 0
|
||
}, (function() {
|
||
n.addClass("is-expanded"),
|
||
e.slideDown(),
|
||
t.addClass("active")
|
||
}
|
||
)) : (n.addClass("is-expanded"),
|
||
e.slideDown(),
|
||
t.addClass("active"));
|
||
Ie("#hotelPage").length && window.Scandic.isMapClickOnHotelPage && (window.Scandic.isMapClickOnHotelPage = !1,
|
||
document.body.querySelector(".navigation-bar[data-js=main-nav-bar]").style.zIndex = "")
|
||
}
|
||
function Ee(e, t, i, n) {
|
||
if (De(!1),
|
||
e) {
|
||
var a = t.closest(".navigation-bar");
|
||
e.closest(".hero-intro__content").find('[data-js="sub-nav"]');
|
||
t.data("js") === Pe && i && !i.closest(".navigation-bar").length ? e.slideUp((function() {
|
||
Ie(".hotel-menu-wrapper").removeClass("has-open-widget")
|
||
}
|
||
)) : e.slideUp((function() {
|
||
Ie(".hotel-menu-wrapper").removeClass("has-open-widget"),
|
||
a.toggleClass("is-expanded", n)
|
||
}
|
||
)),
|
||
t.trigger("close-fullscreen-map"),
|
||
t.removeClass("active")
|
||
}
|
||
}
|
||
function Me() {
|
||
return Ie('*[data-js="hotelnav-widget-toggle"]')
|
||
}
|
||
var Le = i(19755);
|
||
function Ne(e) {
|
||
var t = Le('*[data-js="' + e.attr("data-target") + '"]');
|
||
t.length > 0 && (e.click((function(i) {
|
||
i.preventDefault();
|
||
var n = Le('*[data-js="' + e.data("mediumup-goto") + '"]').children().first();
|
||
n.length > 0 && ScreenHelper.mediaMediumUp() ? Le("html, body").animate({
|
||
scrollTop: n.offset().top - 20
|
||
}, 500) : e.hasClass("active") ? Ee(t, e, Le(this)) : Oe(t, e, Le(this))
|
||
}
|
||
)),
|
||
e.data("widgetarea", t))
|
||
}
|
||
function He() {
|
||
var e = Ie('*[data-js="mainnav-widget-toggle"]')
|
||
, t = Me();
|
||
e.length > 0 && Ne(e),
|
||
t.length > 0 && Ne(t)
|
||
}
|
||
function Be(e, t) {
|
||
var i = Object.keys(e);
|
||
if (Object.getOwnPropertySymbols) {
|
||
var n = Object.getOwnPropertySymbols(e);
|
||
t && (n = n.filter((function(t) {
|
||
return Object.getOwnPropertyDescriptor(e, t).enumerable
|
||
}
|
||
))),
|
||
i.push.apply(i, n)
|
||
}
|
||
return i
|
||
}
|
||
function je(e) {
|
||
for (var t = 1; t < arguments.length; t++) {
|
||
var i = null != arguments[t] ? arguments[t] : {};
|
||
t % 2 ? Be(Object(i), !0).forEach((function(t) {
|
||
ze(e, t, i[t])
|
||
}
|
||
)) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : Be(Object(i)).forEach((function(t) {
|
||
Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
|
||
}
|
||
))
|
||
}
|
||
return e
|
||
}
|
||
function ze(e, t, i) {
|
||
return t in e ? Object.defineProperty(e, t, {
|
||
value: i,
|
||
enumerable: !0,
|
||
configurable: !0,
|
||
writable: !0
|
||
}) : e[t] = i,
|
||
e
|
||
}
|
||
function qe(e) {
|
||
return function(e) {
|
||
if (Array.isArray(e))
|
||
return Fe(e)
|
||
}(e) || function(e) {
|
||
if ("undefined" != typeof Symbol && null != e[Symbol.iterator] || null != e["@@iterator"])
|
||
return Array.from(e)
|
||
}(e) || function(e, t) {
|
||
if (!e)
|
||
return;
|
||
if ("string" == typeof e)
|
||
return Fe(e, t);
|
||
var i = Object.prototype.toString.call(e).slice(8, -1);
|
||
"Object" === i && e.constructor && (i = e.constructor.name);
|
||
if ("Map" === i || "Set" === i)
|
||
return Array.from(e);
|
||
if ("Arguments" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))
|
||
return Fe(e, t)
|
||
}(e) || function() {
|
||
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
|
||
}()
|
||
}
|
||
function Fe(e, t) {
|
||
(null == t || t > e.length) && (t = e.length);
|
||
for (var i = 0, n = new Array(t); i < t; i++)
|
||
n[i] = e[i];
|
||
return n
|
||
}
|
||
var Re = '[data-js="filter-item"]'
|
||
, $e = "[data-on-no-filter]"
|
||
, Ve = "[data-on-no-filter-in-category]"
|
||
, We = '[data-js="filter-items-list"]'
|
||
, Ue = '[data-js="filter-toggle"]'
|
||
, Ge = '[data-js="filter-category-container"]';
|
||
function Qe(e) {
|
||
var t = Ze(e)
|
||
, i = e.querySelector(Ue)
|
||
, n = it().map((function(e) {
|
||
return e.id
|
||
}
|
||
))
|
||
, a = ot(t, n);
|
||
if (e.classList.toggle("hidden", a),
|
||
!a) {
|
||
nt(e, n),
|
||
at(),
|
||
i.addEventListener("click", rt(e, t)),
|
||
Array.from(e.querySelectorAll('[data-js="filter-toggle-secondary"]'), (function(e) {
|
||
return e.addEventListener("click", (function() {
|
||
return i.click()
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
Array.from(e.querySelectorAll('[data-js="clear-category"]'), (function(t) {
|
||
return t.addEventListener("click", lt(!1, e, t.closest(Ge)))
|
||
}
|
||
)),
|
||
Array.from(e.querySelectorAll('[data-js="clear-all-categories"]'), (function(t) {
|
||
return t.addEventListener("click", lt(!1, e))
|
||
}
|
||
)),
|
||
Array.from(e.querySelectorAll('[data-js="clear-all-categories-and-refresh"]'), (function(t) {
|
||
return t.addEventListener("click", lt(!0, e))
|
||
}
|
||
)),
|
||
Array.from(t, (function(t) {
|
||
return t.elem.addEventListener("change", Ye(e, [t]))
|
||
}
|
||
)),
|
||
Array.from(e.querySelectorAll('[data-js="filter-category-toggle"]'), (function(e) {
|
||
return e.addEventListener("click", (t = e.closest(Ge),
|
||
function() {
|
||
return t.classList.toggle("section-minimized-mobile", i)
|
||
}
|
||
));
|
||
var t, i
|
||
}
|
||
)),
|
||
Array.from(e.querySelectorAll($e), (function(e) {
|
||
return et(!0, e.dataset.onNoFilter)(e)
|
||
}
|
||
)),
|
||
Array.from(e.querySelectorAll(Ve), (function(e) {
|
||
return et(!0, e.dataset.onNoFilterInCategory)(e)
|
||
}
|
||
)),
|
||
Array.from(e.querySelectorAll("[data-on-all-disabled-in-category]"), (function(e) {
|
||
return et(Ze(e).every(Xe), e.dataset.onAllDisabledInCategory)(e)
|
||
}
|
||
)),
|
||
e.querySelector('[data-js="cancel-filter"]').addEventListener("click", function(e) {
|
||
return function() {
|
||
var t = Ze(e).map((function(e) {
|
||
return e.elem.checked = JSON.parse(e.elem.dataset.fallback || "false"),
|
||
e
|
||
}
|
||
)).filter((function(e) {
|
||
return e.elem.checked
|
||
}
|
||
));
|
||
Ye(e, t)(),
|
||
e.querySelector(Ue).click()
|
||
}
|
||
}(e));
|
||
var o = e.querySelector('[data-js="shadow-for-mobile-scroll"]')
|
||
, r = e.querySelector(We);
|
||
r.addEventListener("scroll", (function() {
|
||
o.classList.toggle("box-shadow-active", !!r.scrollTop)
|
||
}
|
||
), !!window.supportsPassiveEventListeners && {
|
||
passive: !0
|
||
}),
|
||
t.forEach((function(e) {
|
||
return e.container.classList.toggle("hidden", e.disabled)
|
||
}
|
||
))
|
||
}
|
||
}
|
||
function Ye(e, t) {
|
||
return function() {
|
||
var i = Ze(e, t)
|
||
, n = i.filter(Je)
|
||
, a = n.length > 0 ? n.reduce((function(e, t, i) {
|
||
return 0 === i ? t.hotelIds : e.filter((function(e) {
|
||
return t.hotelIds.includes(e)
|
||
}
|
||
))
|
||
}
|
||
), []) : it().map((function(e) {
|
||
return e.id
|
||
}
|
||
));
|
||
nt(e, a),
|
||
ot(i, a);
|
||
var o = n.filter(Ke);
|
||
ct(e.querySelectorAll('[data-js="filter-items-count"]'), o.length),
|
||
Array.from(e.querySelectorAll($e), (function(e) {
|
||
return et(!o.length, e.dataset.onNoFilter)(e)
|
||
}
|
||
)),
|
||
Array.from(e.querySelectorAll(Ve), (function(e) {
|
||
return et(!Ze(e.closest(Ge)).some(Je), e.dataset.onNoFilterInCategory)(e)
|
||
}
|
||
));
|
||
var r = e.querySelectorAll(Ge);
|
||
Array.from(r, (function(e) {
|
||
return ct(e.querySelectorAll('[data-js="filter-category-items-count"]'), Ze(e).filter(Je).length)
|
||
}
|
||
))
|
||
}
|
||
}
|
||
function Je(e) {
|
||
return e.applied
|
||
}
|
||
function Xe(e) {
|
||
return e.disabled
|
||
}
|
||
function Ke(e, t, i) {
|
||
return !i.slice(t + 1).some((function(t) {
|
||
return t.id === e.id
|
||
}
|
||
))
|
||
}
|
||
function Ze(e, t) {
|
||
return qe(e.querySelectorAll(Re)).map((function(e) {
|
||
var i = tt(e)
|
||
, n = t ? t.find((function(e) {
|
||
return e.id === i.id
|
||
}
|
||
)) : void 0;
|
||
return je(je({}, i), {}, {
|
||
applied: n ? n.elem.checked : e.checked
|
||
})
|
||
}
|
||
))
|
||
}
|
||
function et(e, t) {
|
||
return function(i) {
|
||
var n = "!" === t.substr(0, 1);
|
||
if (n && (t = t.substr(1)),
|
||
"disabled" === t)
|
||
i.disabled = n ? !e : e;
|
||
else
|
||
i.classList.toggle(t, n ? !e : e)
|
||
}
|
||
}
|
||
function tt(e) {
|
||
return {
|
||
id: JSON.parse(e.dataset.id || "null"),
|
||
hotelIds: JSON.parse(e.dataset.hotelIds),
|
||
elem: e,
|
||
applied: e.checked.id,
|
||
disabled: e.closest("fieldset").disabled,
|
||
container: e.closest(".filter__facilities-item-container")
|
||
}
|
||
}
|
||
function it() {
|
||
return qe(document.querySelectorAll('[data-js="hotel-item"]')).map((function(e) {
|
||
return {
|
||
id: JSON.parse(e.dataset.hotelId),
|
||
elem: e
|
||
}
|
||
}
|
||
))
|
||
}
|
||
function nt(e, t) {
|
||
var i = it();
|
||
i.forEach((function(e) {
|
||
e.elem.dataset.hide = !t.includes(e.id)
|
||
}
|
||
)),
|
||
ct(document.querySelectorAll('[data-js="filter-results-count"]'), i.filter((function(e) {
|
||
return t.includes(e.id)
|
||
}
|
||
)).length)
|
||
}
|
||
function at() {
|
||
!function(e) {
|
||
var t = C();
|
||
if (!t)
|
||
return;
|
||
t.getMarkers().forEach((function(e) {
|
||
return e.marker.setMap(null)
|
||
}
|
||
));
|
||
var i = e.map((function(e) {
|
||
return function(e, t) {
|
||
var i = t.querySelector(".poi")
|
||
, n = t.querySelector(".distance");
|
||
return e.addMarker({
|
||
lat: t.dataset.lat,
|
||
long: t.dataset.long,
|
||
icon: t.dataset.category || "hotel-pin",
|
||
category: t.dataset.category,
|
||
name: t.dataset.name || (i ? i.innerHTML : void 0),
|
||
distance: n ? n.innerHTML : void 0,
|
||
link: t.dataset.href,
|
||
iconHighlight: t.dataset.categoryHighlight,
|
||
element: t,
|
||
infoWindowDetail: t.dataset.infoWindowShowDetail,
|
||
label: t.dataset.label
|
||
})
|
||
}(t, e.elem)
|
||
}
|
||
));
|
||
setTimeout((function() {
|
||
window.dispatchEvent(new CustomEvent("resize")),
|
||
t.scaleToFitMarkers(i)
|
||
}
|
||
), 0)
|
||
}(it().map((function(e) {
|
||
return e.elem.classList.toggle("hidden", JSON.parse(e.elem.dataset.hide || "false")),
|
||
e
|
||
}
|
||
)).filter((function(e) {
|
||
return !JSON.parse(e.elem.dataset.hide || "false")
|
||
}
|
||
)))
|
||
}
|
||
function ot(e, t) {
|
||
return Array.from(e, (function(e) {
|
||
var i = e.elem.closest("fieldset");
|
||
return e.disabled = i.disabled = !e.elem.checked && !e.hotelIds.some((function(e) {
|
||
return t.includes(e)
|
||
}
|
||
)),
|
||
e.elem.checked = e.applied,
|
||
i.disabled
|
||
}
|
||
)).filter((function(e) {
|
||
return e
|
||
}
|
||
)).length === e.length
|
||
}
|
||
function rt(e, t) {
|
||
return st(t),
|
||
function i(n) {
|
||
n.currentTarget.removeEventListener("click", i),
|
||
n.currentTarget.addEventListener("click", rt(e, t)),
|
||
e.querySelector(We).classList.toggle("hidden"),
|
||
n.currentTarget.classList.toggle("filter__button--filter-opened"),
|
||
Array.from(document.querySelectorAll("body, html"), (function(e) {
|
||
return e.classList.toggle("filter-open")
|
||
}
|
||
));
|
||
var a = Ze(e).filter(Je).filter(Ke).map((function(e) {
|
||
return e.id
|
||
}
|
||
)).reduce((function(e, t) {
|
||
return e.length ? "".concat(e, "|").concat(t) : "".concat(t)
|
||
}
|
||
), "");
|
||
at(),
|
||
a.length && (0,
|
||
m.ay)("filtersearch", {
|
||
filters: a
|
||
}),
|
||
e.querySelector(We).scrollIntoView({
|
||
block: "start",
|
||
inline: "nearest",
|
||
behavior: "smooth"
|
||
})
|
||
}
|
||
}
|
||
function st(e) {
|
||
e.forEach((function(e) {
|
||
return e.elem.dataset.fallback = e.elem.checked
|
||
}
|
||
))
|
||
}
|
||
function lt(e, t, i) {
|
||
return function(n) {
|
||
n.stopPropagation();
|
||
var a = qe((i || t).querySelectorAll(Re)).map((function(e) {
|
||
return e.checked = !1,
|
||
tt(e)
|
||
}
|
||
));
|
||
t.querySelector(We).classList.contains("hidden") && st(a),
|
||
Ye(t, a)(),
|
||
e && at()
|
||
}
|
||
}
|
||
function ct(e, t) {
|
||
Array.from(e, (function(e) {
|
||
e.classList.contains("result__counter") && (e.innerHTML = "".concat(t),
|
||
t > 1 ? (e.parentElement.querySelector("span.plural").classList.remove("hidden"),
|
||
e.parentElement.querySelector("span.singular").classList.add("hidden")) : (e.parentElement.querySelector("span.singular").classList.remove("hidden"),
|
||
e.parentElement.querySelector("span.plural").classList.add("hidden"))),
|
||
JSON.parse(e.dataset.parenthesis || "false") ? (e.innerHTML = "(".concat(t, ")"),
|
||
e.classList.toggle("hidden", !t)) : "false" === e.dataset.parenthesis ? (e.innerHTML = "".concat(t),
|
||
e.classList.toggle("hidden", !t)) : e.setAttribute("data-value", "".concat(t))
|
||
}
|
||
))
|
||
}
|
||
var dt = i(19755)
|
||
, ut = i(19755);
|
||
function pt(e) {
|
||
return function(e) {
|
||
if (Array.isArray(e))
|
||
return e
|
||
}(e) || function(e) {
|
||
if ("undefined" != typeof Symbol && null != e[Symbol.iterator] || null != e["@@iterator"])
|
||
return Array.from(e)
|
||
}(e) || function(e, t) {
|
||
if (!e)
|
||
return;
|
||
if ("string" == typeof e)
|
||
return mt(e, t);
|
||
var i = Object.prototype.toString.call(e).slice(8, -1);
|
||
"Object" === i && e.constructor && (i = e.constructor.name);
|
||
if ("Map" === i || "Set" === i)
|
||
return Array.from(e);
|
||
if ("Arguments" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))
|
||
return mt(e, t)
|
||
}(e) || function() {
|
||
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
|
||
}()
|
||
}
|
||
function mt(e, t) {
|
||
(null == t || t > e.length) && (t = e.length);
|
||
for (var i = 0, n = new Array(t); i < t; i++)
|
||
n[i] = e[i];
|
||
return n
|
||
}
|
||
function ht(e) {
|
||
var t, i = pt(e).slice(0), n = function(e) {
|
||
if (e || e.querySelector(".slider-image-template")) {
|
||
var i = document.createElement("div");
|
||
return i.class = "fullscreen-gallery hidden",
|
||
i.innerHTML = "<a class='close-btn' href=''></a>",
|
||
e.querySelectorAll(".slider-image-template").forEach((function(e) {
|
||
i.innerHTML = i.innerHTML + e.outerHTML
|
||
}
|
||
)),
|
||
e.classList.add("active-fullscreen"),
|
||
i.innerHTML = i.innerHTML.replace(/sizes=\"\w*\"\s/gi, "sizes='100vw'"),
|
||
i.innerHTML = i.innerHTML.replace(/1024w,.*\n*.*1600w/gi, "1024w"),
|
||
i.innerHTML = i.innerHTML.replace(/slider-image-template/gi, "image-wrapper"),
|
||
t = new Se.Z({
|
||
content: i,
|
||
width: window.innerWidth,
|
||
height: window.innerHeight,
|
||
contentBackground: !1,
|
||
contentBackgroundColor: "transparent",
|
||
triggerObject: e,
|
||
closeOnBackBtn: !0,
|
||
closeOnBackgroundClick: !1,
|
||
fullscreenInSmallDown: !1,
|
||
customClass: "fullscreen-gallery",
|
||
bodyNoScroll: !0
|
||
}),
|
||
vt(),
|
||
document.querySelector(".close-btn").addEventListener("click", function(e) {
|
||
e.preventDefault(),
|
||
t.close()
|
||
}
|
||
.bind(t)),
|
||
t
|
||
}
|
||
};
|
||
i.map((function(e) {
|
||
var i = ut(e).royalSlider({
|
||
autoScaleSlider: !0,
|
||
autoScaleSliderWidth: 770,
|
||
autoScaleSliderHeight: 513,
|
||
loop: !0,
|
||
keyboardNavEnabled: !1,
|
||
controlsInside: !0,
|
||
arrowsNav: !0,
|
||
arrowsNavAutoHide: !1,
|
||
arrowsNavHideOnTouch: !1,
|
||
controlNavigation: "bullets",
|
||
numImagesToPreload: 3,
|
||
usePreloader: !1,
|
||
startSlideId: 0,
|
||
transitionType: "slide",
|
||
transitionSpeed: 300,
|
||
addActiveClass: !0,
|
||
navigateByClick: !1
|
||
}).data("royalSlider");
|
||
ut(e).on("click", function(e) {
|
||
e.stopPropagation(),
|
||
e.preventDefault(),
|
||
e.target.classList.contains("hotel-slider") && (t = n(e.target))
|
||
}
|
||
.bind(i)),
|
||
ut(e).on("keyup", function(e) {
|
||
switch (e.stopPropagation(),
|
||
e.preventDefault(),
|
||
e.keyCode) {
|
||
case 37:
|
||
i.prev();
|
||
break;
|
||
case 39:
|
||
i.next();
|
||
break;
|
||
case 13:
|
||
t = n(e.target)
|
||
}
|
||
}
|
||
.bind(i)),
|
||
i.ev.on("rsSlideClick", (function(e, i) {
|
||
i.stopPropagation(),
|
||
e.stopPropagation(),
|
||
i.preventDefault(),
|
||
t = n(e.target.slider[0])
|
||
}
|
||
)),
|
||
i.ev.on("rsAfterSlideChange", (function(e) {
|
||
(0,
|
||
m.ay)("hotel_slider_next"),
|
||
lazySizes.autoSizer.checkElems()
|
||
}
|
||
)),
|
||
setTimeout((function() {
|
||
window.dispatchEvent(new CustomEvent("resize"))
|
||
}
|
||
), 100)
|
||
}
|
||
))
|
||
}
|
||
var ft, gt, vt = (ft = function() {
|
||
return (0,
|
||
m.ay)("hotel_slider_full_screen")
|
||
}
|
||
,
|
||
gt = !1,
|
||
function() {
|
||
if (!gt)
|
||
return gt = !0,
|
||
ft()
|
||
}
|
||
);
|
||
function bt(e) {
|
||
return function(e) {
|
||
if (Array.isArray(e))
|
||
return yt(e)
|
||
}(e) || function(e) {
|
||
if ("undefined" != typeof Symbol && null != e[Symbol.iterator] || null != e["@@iterator"])
|
||
return Array.from(e)
|
||
}(e) || function(e, t) {
|
||
if (!e)
|
||
return;
|
||
if ("string" == typeof e)
|
||
return yt(e, t);
|
||
var i = Object.prototype.toString.call(e).slice(8, -1);
|
||
"Object" === i && e.constructor && (i = e.constructor.name);
|
||
if ("Map" === i || "Set" === i)
|
||
return Array.from(e);
|
||
if ("Arguments" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))
|
||
return yt(e, t)
|
||
}(e) || function() {
|
||
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
|
||
}()
|
||
}
|
||
function yt(e, t) {
|
||
(null == t || t > e.length) && (t = e.length);
|
||
for (var i = 0, n = new Array(t); i < t; i++)
|
||
n[i] = e[i];
|
||
return n
|
||
}
|
||
var wt = function() {
|
||
var e = bt(document.querySelectorAll("div.hotel-slider"));
|
||
0 !== e.length && ht(e)
|
||
};
|
||
function St(e) {
|
||
return function(e) {
|
||
if (Array.isArray(e))
|
||
return _t(e)
|
||
}(e) || function(e) {
|
||
if ("undefined" != typeof Symbol && null != e[Symbol.iterator] || null != e["@@iterator"])
|
||
return Array.from(e)
|
||
}(e) || function(e, t) {
|
||
if (!e)
|
||
return;
|
||
if ("string" == typeof e)
|
||
return _t(e, t);
|
||
var i = Object.prototype.toString.call(e).slice(8, -1);
|
||
"Object" === i && e.constructor && (i = e.constructor.name);
|
||
if ("Map" === i || "Set" === i)
|
||
return Array.from(e);
|
||
if ("Arguments" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))
|
||
return _t(e, t)
|
||
}(e) || function() {
|
||
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
|
||
}()
|
||
}
|
||
function _t(e, t) {
|
||
(null == t || t > e.length) && (t = e.length);
|
||
for (var i = 0, n = new Array(t); i < t; i++)
|
||
n[i] = e[i];
|
||
return n
|
||
}
|
||
var Ct = i(17970)
|
||
, kt = i(19755);
|
||
function Tt(e) {
|
||
this.$toggleDisplayButton = kt(e),
|
||
this.$hotelNavigationWrapper = void 0,
|
||
this.$navigationMenu = void 0,
|
||
this.$overlay = kt('<div class="hotel-nav-overlay"></div>'),
|
||
this.$body = kt("body"),
|
||
this.init()
|
||
}
|
||
Tt.prototype.toggleNavigation = function(e) {
|
||
kt("#hotelPage").length && (window.Scandic.isMapClickOnHotelPage = !1,
|
||
document.body.querySelector(".navigation-bar[data-js=main-nav-bar]").style.zIndex = ""),
|
||
this.$navigationMenu.is(":visible") ? this.hideNav() : this.showNav()
|
||
}
|
||
,
|
||
Tt.prototype.showNav = function() {
|
||
this.$toggleDisplayButton.addClass("is-expanded"),
|
||
function() {
|
||
var e = Me();
|
||
Ee(e.data("widgetarea"), e, Ie(this))
|
||
}(),
|
||
this.$navigationMenu.slideDown(),
|
||
this.appendOverlay(),
|
||
kt(window).on("scroll.hotelNavigation.keepMenuOpen", this.scrollListener.bind(this))
|
||
}
|
||
,
|
||
Tt.prototype.scrollListener = function(e) {
|
||
this.$hotelNavigationWrapper.offset().top - kt(window).scrollTop() >= 0 || (kt(window).off("scroll.hotelNavigation.keepMenuOpen"),
|
||
this.closeMenuAfterScroll())
|
||
}
|
||
,
|
||
Tt.prototype.closeMenuAfterScroll = function(e) {
|
||
window.setTimeout(function() {
|
||
this.hideNav()
|
||
}
|
||
.bind(this), 200)
|
||
}
|
||
,
|
||
Tt.prototype.hideNav = function() {
|
||
kt(window).off("scroll.hotelNavigation"),
|
||
this.$toggleDisplayButton.removeClass("is-expanded"),
|
||
this.$navigationMenu.slideUp(),
|
||
this.hideOverlay()
|
||
}
|
||
,
|
||
Tt.prototype.appendOverlay = function() {
|
||
kt("main").prepend(this.$overlay),
|
||
this.$overlay.fadeIn()
|
||
}
|
||
,
|
||
Tt.prototype.hideOverlay = function() {
|
||
this.$overlay.fadeOut()
|
||
}
|
||
,
|
||
Tt.prototype.init = function() {
|
||
this.$navigationMenu = kt('*[data-js="' + this.$toggleDisplayButton.attr("data-target") + '"]'),
|
||
0 !== this.$navigationMenu.length ? (this.$hotelNavigationWrapper = kt('*[data-js="sub-nav"]'),
|
||
0 !== this.$hotelNavigationWrapper.length ? (this.$navigationMenu.hide(),
|
||
this.$toggleDisplayButton.on("click", this.toggleNavigation.bind(this)),
|
||
this.$overlay.on("click", this.hideNav.bind(this))) : console.log('Attribute [data-js="hotel-navigation-wrapper"] is missing in markup')) : console.log("target is missing on HotelNavigation")
|
||
}
|
||
;
|
||
var xt = i(19755)
|
||
, At = i(19755)
|
||
, It = i(19755);
|
||
function Pt() {
|
||
var e;
|
||
window.modelData = document.querySelector("#model-data-jobs") ? JSON.parse(document.querySelector("#model-data-jobs").value) : null,
|
||
At(window).on("load", (function() {
|
||
"undefined" != typeof modelData && modelData && ("undefined" != typeof modelData && modelData && (e = modelData.JobResult),
|
||
function() {
|
||
var i = It.map(It("#country_dropdown option"), (function(e) {
|
||
return e.value
|
||
}
|
||
)).indexOf(s("cntry")) < 0 ? "All" : s("cntry")
|
||
, n = It.map(It("#categoryDropdown option"), (function(e) {
|
||
return e.value
|
||
}
|
||
)).indexOf(s("ctgry")) < 0 ? "All" : s("ctgry")
|
||
, a = It.map(It("#locationDropdown option"), (function(e) {
|
||
return e.value
|
||
}
|
||
)).indexOf(decodeURIComponent(s("loc"))) < 0 ? "All" : decodeURIComponent(s("loc"))
|
||
, o = It.map(It("#departmentDropdown option"), (function(e) {
|
||
return e.value
|
||
}
|
||
)).indexOf(s("dept")) < 0 ? "All" : s("dept")
|
||
, m = e
|
||
, S = a
|
||
, _ = i
|
||
, C = n
|
||
, k = o
|
||
, T = m;
|
||
i && (r.cntry = i,
|
||
"All" !== i && (t = !0,
|
||
T = m = l(i, m)));
|
||
n && (r.ctgry = n,
|
||
"All" !== n && (t = !0,
|
||
m = c(n, m),
|
||
b(n),
|
||
_ = m[0].Locations[0].Location.Country_Short));
|
||
a && (r.loc = a,
|
||
"All" !== a && (t = !0,
|
||
_ = (m = d(a, m))[0].Locations[0].Location.Country_Short));
|
||
o && (r.dept = o,
|
||
"All" !== o && (t = !0,
|
||
m = u(o, m),
|
||
y(o)));
|
||
p(_, T),
|
||
h(_, a, T),
|
||
f(_, a, T),
|
||
i && g(_);
|
||
n && b(C);
|
||
a && v(S);
|
||
o && y(k);
|
||
w(m)
|
||
}(),
|
||
S(e),
|
||
t ? _(It("#resultCount").html()) : (0,
|
||
m.Z6)(It("#resultCount").html()),
|
||
C())
|
||
}
|
||
));
|
||
var t = !1
|
||
, i = It('*[data-js="selectCountry"]')
|
||
, n = It('*[data-js="selectCategory"]')
|
||
, a = It('*[data-js="selectLocation"]')
|
||
, o = It('*[data-js="selectDepartment"]')
|
||
, r = new Object;
|
||
function s(e) {
|
||
for (var t = window.location.href.slice(window.location.href.indexOf("?") + 1).split("&"), i = 0; i < t.length; i++) {
|
||
var n = t[i].split("=");
|
||
if (n[0] === e)
|
||
return n[1]
|
||
}
|
||
}
|
||
function l(e, t) {
|
||
var i = [];
|
||
return "All" === e ? t : (t.forEach((function(t) {
|
||
t.Locations.forEach((function(n) {
|
||
n.Location.Country_Short === e && i.push(t)
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
i)
|
||
}
|
||
function c(e, t) {
|
||
var i = [];
|
||
return "All" === e ? t : (t.forEach((function(t) {
|
||
t.Categories.forEach((function(n) {
|
||
n.Category.Id === e && i.push(t)
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
i)
|
||
}
|
||
function d(e, t) {
|
||
var i = [];
|
||
return "All" === e ? t : (t.forEach((function(t) {
|
||
t.Locations.forEach((function(n) {
|
||
n.Location.City === e && i.push(t)
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
i)
|
||
}
|
||
function u(e, t) {
|
||
if ("All" !== e) {
|
||
var i = [];
|
||
return t.forEach((function(t) {
|
||
t.Departments.forEach((function(n) {
|
||
n.Department.Id === e && i.push(t)
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
i
|
||
}
|
||
return t
|
||
}
|
||
function p(e, t) {
|
||
var i = [];
|
||
"All" !== e ? t.forEach((function(t) {
|
||
t.Locations.forEach((function(t) {
|
||
t.Location.Country_Short === e && i.indexOf(t.Location.City) < 0 && t.Location.City && i.push(t.Location.City)
|
||
}
|
||
))
|
||
}
|
||
)) : modelData.Locations.forEach((function(e) {
|
||
e && i.push(e)
|
||
}
|
||
)),
|
||
function(e) {
|
||
e.sort(),
|
||
It("#locationDropdown option").slice(1).remove(),
|
||
It.each(e, (function(e, t) {
|
||
var i = "<option value='" + t + "'>" + t + "</option>";
|
||
a.append(i)
|
||
}
|
||
)),
|
||
v("All")
|
||
}(i)
|
||
}
|
||
function h(e, t, i) {
|
||
var n = [];
|
||
"All" !== e ? i.forEach((function(i) {
|
||
i.Locations.forEach((function(a) {
|
||
var o = !t || "All" == t || t == a.Location.City;
|
||
a.Location.Country_Short === e && o && i.Departments.forEach((function(e) {
|
||
if (n.map((function(e) {
|
||
return e.id
|
||
}
|
||
)).indexOf(e.Department.Id) < 0) {
|
||
var t = e.Department.Id
|
||
, i = e.Department.Name;
|
||
n.push({
|
||
id: t,
|
||
text: i
|
||
})
|
||
}
|
||
}
|
||
))
|
||
}
|
||
))
|
||
}
|
||
)) : modelData.Departments.forEach((function(e) {
|
||
var t = e.Department.Id
|
||
, i = e.Department.Name;
|
||
n.push({
|
||
id: t,
|
||
text: i
|
||
})
|
||
}
|
||
)),
|
||
function(e) {
|
||
e.sort((function(e, t) {
|
||
var i = e.text
|
||
, n = t.text;
|
||
return i < n ? -1 : i > n ? 1 : 0
|
||
}
|
||
)),
|
||
It("#departmentDropdown option").slice(1).remove(),
|
||
It.each(e, (function(e, t) {
|
||
var i = "<option value='" + t.id + "'>" + t.text + "</option>";
|
||
o.append(i)
|
||
}
|
||
)),
|
||
y("All")
|
||
}(n)
|
||
}
|
||
function f(e, t, i) {
|
||
var a = [];
|
||
"All" !== e ? i.forEach((function(i) {
|
||
i.Locations.forEach((function(n) {
|
||
var o = !t || "All" == t || t == n.Location.City;
|
||
n.Location.Country_Short === e && o && i.Categories.forEach((function(e) {
|
||
if (a.map((function(e) {
|
||
return e.id
|
||
}
|
||
)).indexOf(e.Category.Id) < 0) {
|
||
var t = e.Category.Id
|
||
, i = e.Category.Text;
|
||
a.push({
|
||
id: t,
|
||
text: i
|
||
})
|
||
}
|
||
}
|
||
))
|
||
}
|
||
))
|
||
}
|
||
)) : modelData.Categories.forEach((function(e) {
|
||
var t = e.Category.Id
|
||
, i = e.Category.Text;
|
||
a.push({
|
||
id: t,
|
||
text: i
|
||
})
|
||
}
|
||
)),
|
||
function(e) {
|
||
e = e.sort((function(e, t) {
|
||
var i = e.text
|
||
, n = t.text;
|
||
return i < n ? -1 : i > n ? 1 : 0
|
||
}
|
||
)),
|
||
It("#categoryDropdown option").slice(1).remove(),
|
||
It.each(e, (function(e, t) {
|
||
var i = "<option value='" + t.id + "'>" + t.text + "</option>";
|
||
n.append(i)
|
||
}
|
||
)),
|
||
b("All")
|
||
}(a)
|
||
}
|
||
function g(e) {
|
||
i.val(e)
|
||
}
|
||
function v(e) {
|
||
a.val(e)
|
||
}
|
||
function b(e) {
|
||
n.val(e)
|
||
}
|
||
function y(e) {
|
||
o.val(e)
|
||
}
|
||
function w(e) {
|
||
!function() {
|
||
r.cntry = i[0].value,
|
||
r.loc = a[0].value,
|
||
r.ctgry = n[0].value,
|
||
r.dept = o[0].value;
|
||
var e = "?" + It.param(r);
|
||
window.history.replaceState(null, null, e)
|
||
}(),
|
||
It("#job_listing_results").html("");
|
||
var t = e
|
||
, s = "";
|
||
if (t.length > 0) {
|
||
var l = 0;
|
||
It.each(t, (function(e, t) {
|
||
var i = ""
|
||
, n = ""
|
||
, a = "";
|
||
It.each(t.Categories, (function(e, t) {
|
||
i += "<span>" + t.Category.Text + "</span>"
|
||
}
|
||
)),
|
||
It.each(t.Locations, (function(e, i) {
|
||
var a = "";
|
||
i.Location.Country && i.Location.City ? a = i.Location.City + "," + i.Location.Country : !i.Location.Country && i.Location.City ? a = i.Location.City : i.Location.Country && !i.Location.City && (a = i.Location.Country),
|
||
e + 1 < t.Locations.length ? n += "<span>" + a + "</span> /" : n += "<span>" + a + "</span>"
|
||
}
|
||
)),
|
||
a = t.To_Date ? It("#deadLineLabel")[0].textContent + " " + t.To_Date : It("#applicationOpenLabel")[0].textContent,
|
||
s += '<div class="results__container"><div class="heading-3"><a class="arrow-link result-title" href="' + t.Urls.Ad + '" target="_blank" data-js="view_apply_job" data-index="' + l + '">' + t.Title + '</a></div><div class="category">' + i + '</div><div class="category">' + n + '</div> <div class="deadline"><span class="text-small">' + a + '</span><span class="apply_to_job"><a href="' + t.Urls.Ad + '" class="btn btn--primary" target="_blank" data-js="view_apply_job" data-index="' + l + '">' + It("#viewandapplylabel")[0].textContent + "</a></span></div></div>",
|
||
l++
|
||
}
|
||
)),
|
||
S(e)
|
||
} else {
|
||
var c = "";
|
||
c = "Please try adjusting your search." !== It("#JobListingSubscribeURL")[0].textContent ? '<div class="alerts_message_container"><div class="alerts_message_container">' + It("#NewJobsSubscription")[0].textContent + "</div><a href= " + It("#JobListingSubscribeURL")[0].textContent + ' class="btn btn--primary" target="_blank" data-js="job_subscription">' + It("#JobsSubscribeSubscription")[0].textContent + "</a></div>" : '<div class="alerts_message_container"><span>' + It("#JobListingSubscribeURL")[0].textContent + "</span></div>",
|
||
s = '<div class="results__notfound"><span class="heading-3"> ' + It("#NoResultsFound")[0].textContent + "</span><div>" + c + "</div></div>"
|
||
}
|
||
It("#job_listing_results").append(s),
|
||
S(t),
|
||
C(),
|
||
It("#resultCount").html(t.length)
|
||
}
|
||
i.on("change", (function() {
|
||
var t = e;
|
||
"All" != i[0].value && (t = l(i[0].value, t)),
|
||
p(i[0].value, t),
|
||
h(i[0].value, "All", t),
|
||
f(i[0].value, "All", t),
|
||
"All" != i[0].value && _(t.length),
|
||
w(t)
|
||
}
|
||
)),
|
||
a.on("change", (function() {
|
||
var t = e
|
||
, n = a[0].value;
|
||
"All" === i[0].value && "All" !== n && g(d(a[0].value, t)[0].Locations[0].Location.Country_Short);
|
||
t = l(i[0].value, t),
|
||
"All" !== n && (p(i[0].value, t),
|
||
t = d(n, t),
|
||
v(n)),
|
||
h(i[0].value, n, t),
|
||
f(i[0].value, n, t),
|
||
_(t.length),
|
||
w(t)
|
||
}
|
||
)),
|
||
o.on("change", (function() {
|
||
var t = e
|
||
, n = o[0].value;
|
||
if (("All" === i[0].value || "All" === a[0].value) && "All" !== n) {
|
||
var r = u(n, t);
|
||
r[0].Locations[0].Location.Country_Short && (g(r[0].Locations[0].Location.Country_Short),
|
||
p(i[0].value, t)),
|
||
r[0].Locations[0].Location.City && v(r[0].Locations[0].Location.City),
|
||
h(i[0].value, a[0].value, t),
|
||
y(n)
|
||
}
|
||
t = l(i[0].value, t),
|
||
t = d(a[0].value, t),
|
||
"All" !== n && _((t = u(o[0].value, t)).length),
|
||
f(i[0].value, a[0].value, t),
|
||
w(t)
|
||
}
|
||
)),
|
||
n.on("change", (function() {
|
||
var t = n[0].value
|
||
, r = e;
|
||
if ("All" === i[0].value && "All" !== t) {
|
||
var s = c(t, r);
|
||
s[0].Locations[0].Location.Country_Short && (g(s[0].Locations[0].Location.Country_Short),
|
||
p(i[0].value, r),
|
||
f(i[0].value, a[0].value, r),
|
||
b(t))
|
||
}
|
||
r = l(i[0].value, r),
|
||
r = d(a[0].value, r),
|
||
r = c(t, r = u(o[0].value, r)),
|
||
"All" !== t && _(r.length),
|
||
w(r)
|
||
}
|
||
));
|
||
var S = function(e) {
|
||
var t = It('[data-js="view_apply_job"]');
|
||
t.off("click"),
|
||
t.on("click", (function() {
|
||
for (var t = It(this).attr("data-index"), i = e[t], n = i.Title.split(",", 1), a = i.Departments[0] ? i.Departments[0].Department.Name : "", o = "", r = "", s = 0; s < 3; s++)
|
||
o += i.Categories[s] ? '"' + i.Categories[s].Category.Text + '"|' : "|";
|
||
for (var l = 0; l < 3; l++)
|
||
r += i.Locations[l] ? '"' + i.Locations[l].Location.City + ", " + i.Locations[l].Location.Country + '"|' : "|";
|
||
var c = i.To_Date ? Math.round((new Date(i.To_Date.replace(/st|nd|rd|th/, "") + " " + (new Date).getFullYear()).getTime() - (new Date).getTime()) / 864e5) : 0
|
||
, d = {
|
||
jobPosition: '"' + n + '"|"' + a + '"|' + o + r + (c > 0 ? c : 0)
|
||
};
|
||
(0,
|
||
m.bV)(d)
|
||
}
|
||
))
|
||
};
|
||
function _(e) {
|
||
var t = {
|
||
jobfilterhoteloroffice: o[0].value,
|
||
jobfiltercountry: i[0].value,
|
||
jobfilterlocation: a[0].value,
|
||
jobfiltercategory: n[0].value
|
||
};
|
||
(0,
|
||
m.ke)(e, t)
|
||
}
|
||
var C = function() {
|
||
var e = It('[data-js="job_subscription"]');
|
||
e.off("click"),
|
||
e.on("click", (function() {
|
||
(0,
|
||
m.py)()
|
||
}
|
||
))
|
||
}
|
||
}
|
||
var Dt = i(19755);
|
||
function Ot() {
|
||
this.initialize()
|
||
}
|
||
function Et() {
|
||
if (function() {
|
||
var e = document.querySelector("header .offline-banner");
|
||
if (e) {
|
||
var t, i = navigator.onLine ? "online" : "offline";
|
||
"function" == typeof Event ? t = new Event(i) : (t = document.createEvent("Event")).initEvent(i, !0, !0),
|
||
window.dispatchEvent(t),
|
||
window.addEventListener("offline", n),
|
||
window.addEventListener("online", n),
|
||
e.querySelector(".reload").addEventListener("click", (function() {
|
||
return window.location.reload()
|
||
}
|
||
))
|
||
}
|
||
function n(t) {
|
||
var i = t.type;
|
||
e.classList.toggle("hidden", "online" === i)
|
||
}
|
||
}(),
|
||
-1 !== navigator.userAgent.toLowerCase().indexOf("android"))
|
||
new Ot
|
||
}
|
||
Ot.prototype = {
|
||
type: "android",
|
||
initialize: function() {
|
||
this.element = document.querySelector(".app-banner"),
|
||
this.isClosed = !!window.localStorage.getItem("app-banner-closed"),
|
||
-1 !== navigator.userAgent.toLowerCase().indexOf("android") && !this.isClosed && this.element && ("getInstalledRelatedApps"in navigator ? navigator.getInstalledRelatedApps().then(function(e) {
|
||
var t = this;
|
||
e.length ? e.forEach((function(e) {
|
||
"com.scandichotels.app" == e.id && t.showOpenApp(1)
|
||
}
|
||
)) : this.showOpenApp(0)
|
||
}
|
||
.bind(this)) : this.show(),
|
||
this.element.querySelector(".app-banner__cta").addEventListener("click", this.trackBtnClick))
|
||
},
|
||
show: function() {
|
||
this.element.classList.remove("hidden"),
|
||
window.addEventListener("scroll", this.handleNavigationBarScroll),
|
||
this.element.querySelector(".app-banner__close").addEventListener("click", this.close.bind(this)),
|
||
window.onload = function() {
|
||
(0,
|
||
m.ay)("smart-app-android-shown")
|
||
}
|
||
},
|
||
showOpenApp: function(e) {
|
||
e ? (this.element.querySelector(".app-banner__desc-installed").classList.remove("hidden"),
|
||
this.element.querySelector(".app-banner__cta .btn__view").classList.add("hidden"),
|
||
this.element.querySelector(".app-banner__cta .btn__open").classList.remove("hidden")) : this.element.querySelector(".app-banner__desc-uninstalled").classList.remove("hidden"),
|
||
this.show()
|
||
},
|
||
close: function() {
|
||
this.element.classList.add("hidden"),
|
||
this.element.parentNode.removeChild(this.element),
|
||
document.querySelector("header .navigation-bar").style.top = 0,
|
||
window.removeEventListener("scroll", this.handleNavigationBarScroll),
|
||
window.localStorage.setItem("app-banner-closed", 1),
|
||
(0,
|
||
m.ay)("smart-app-android-closed")
|
||
},
|
||
handleNavigationBarScroll: function() {
|
||
document.querySelector("header .navigation-bar").style.top = (window.scrollY > 80 ? 0 : 80 - window.scrollY) + "px"
|
||
},
|
||
trackBtnClick: function(e) {
|
||
e.currentTarget.querySelector(".app-banner__cta span:not(.hidden)").classList.contains("btn__open") ? (0,
|
||
m.ay)("smart-app-android-open") : (0,
|
||
m.ay)("smart-app-android-view")
|
||
}
|
||
};
|
||
var Mt = i(19755)
|
||
, Lt = i(19755);
|
||
function Nt(e) {
|
||
return Nt = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
|
||
return typeof e
|
||
}
|
||
: function(e) {
|
||
return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
|
||
}
|
||
,
|
||
Nt(e)
|
||
}
|
||
function Ht(e) {
|
||
return function(e) {
|
||
if (Array.isArray(e))
|
||
return Bt(e)
|
||
}(e) || function(e) {
|
||
if ("undefined" != typeof Symbol && null != e[Symbol.iterator] || null != e["@@iterator"])
|
||
return Array.from(e)
|
||
}(e) || function(e, t) {
|
||
if (!e)
|
||
return;
|
||
if ("string" == typeof e)
|
||
return Bt(e, t);
|
||
var i = Object.prototype.toString.call(e).slice(8, -1);
|
||
"Object" === i && e.constructor && (i = e.constructor.name);
|
||
if ("Map" === i || "Set" === i)
|
||
return Array.from(e);
|
||
if ("Arguments" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))
|
||
return Bt(e, t)
|
||
}(e) || function() {
|
||
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
|
||
}()
|
||
}
|
||
function Bt(e, t) {
|
||
(null == t || t > e.length) && (t = e.length);
|
||
for (var i = 0, n = new Array(t); i < t; i++)
|
||
n[i] = e[i];
|
||
return n
|
||
}
|
||
function jt() {
|
||
this.destination = "",
|
||
this.country = "",
|
||
this.amenities = [],
|
||
this.hotelType = "",
|
||
this.filteredHotels = [],
|
||
this.filteredHotelsExcludeHoteltype = [],
|
||
this.cmsMode = -1 != window.location.href.toLowerCase().indexOf("webmgmt/cms"),
|
||
this.init()
|
||
}
|
||
jt.prototype = {
|
||
parseUrl: function() {
|
||
var e = this
|
||
, t = decodeURI(window.location.pathname.toLowerCase()).split("/");
|
||
if (window.location.hash) {
|
||
var i = decodeURI(window.location.hash.toLowerCase()).split("#");
|
||
t = t.concat(i)
|
||
}
|
||
var n = ["hotels", "hotell", "hoteller", "hotellit", "hotelsuche"]
|
||
, a = t.filter((function(e) {
|
||
return n.some((function(t) {
|
||
return t == e
|
||
}
|
||
))
|
||
}
|
||
)).length;
|
||
this.destination = "",
|
||
this.country = "",
|
||
this.amenities = [],
|
||
this.hotelType = "";
|
||
var o = ["filters", "maincontent", "hotels", "hotell", "hoteller", "hotellit", "hotelsuche"];
|
||
if (t.forEach((function(t) {
|
||
t && "-1" == o.indexOf(t) && (e.destination = e.isLocationFilter(t) ? t : e.destination,
|
||
e.isAminityFilter(t) && e.amenities.push(t),
|
||
e.hotelType = e.isHotelTypeFilter(t) ? t : e.hotelType,
|
||
-1 != [e.destination, e.hotelType].concat(Ht(e.amenities)).indexOf(t) || e.cmsMode || (window.location.href = window.location.protocol + "//" + window.location.host + "/error/404"))
|
||
}
|
||
)),
|
||
this.destination || (this.destination = Mt(".filter-cities .filter-item").first().data().nameInUrl,
|
||
this.country = this.destination,
|
||
this.updateBrowserURLDestn(this.destination, !0)),
|
||
!a && !this.cmsMode) {
|
||
var r = Mt(".filter-cities .filter-item[data-name-in-url='" + this.destination + "'] a").attr("href")
|
||
, s = decodeURI(window.location.href).replace("/" + this.destination, r);
|
||
window.history.pushState({}, "", s)
|
||
}
|
||
this.updateFilterSelection()
|
||
},
|
||
init: function() {
|
||
Mt(".filter-cities .all-cities").each((function() {
|
||
var e = [];
|
||
Mt(this).siblings().each((function() {
|
||
e = e ? e.concat(Lt(this).data().hotelIds.filter((function(t) {
|
||
return e.indexOf(t) < 0
|
||
}
|
||
))) : Lt(this).data().hotelIds
|
||
}
|
||
)),
|
||
Mt(this).find(".hotel-count").text(e.length)
|
||
}
|
||
)),
|
||
Mt(".dropdown-menu li a, .navbar-language-selector li a").each((function() {
|
||
var e = this.getAttribute("href");
|
||
e = (e = e.match(/.*hotel\w*\//gi)[0]).slice(0, -1),
|
||
this.setAttribute("href", e)
|
||
}
|
||
))
|
||
},
|
||
isLocationFilter: function(e) {
|
||
var t = Mt(".filter-cities .filter-item[data-name-in-url='" + e + "']");
|
||
return t.hasClass("all-cities") && (this.country = e),
|
||
!!t.length
|
||
},
|
||
isAminityFilter: function(e) {
|
||
return !!Mt(".filter-amenity .filter-item[data-name-in-url='" + e + "']").length
|
||
},
|
||
isHotelTypeFilter: function(e) {
|
||
return !!Mt(".filter-hoteltype .filter-item[data-name-in-url='" + e + "']").length
|
||
},
|
||
updateFilterSelection: function() {
|
||
this.destination && this.updateDestinationFilterSelection(),
|
||
Mt(".filter-amenity .filter-item.active").removeClass("active"),
|
||
this.updateAmenityFilterSelection(),
|
||
Mt(".filter-hoteltype .filter-item.active").removeClass("active"),
|
||
this.updateHotelTypeFilterSelection(),
|
||
this.updateFilteredHotelsList(),
|
||
this.updateHotelCount(),
|
||
this.updateFilterSelectionPills(".filter-amenity"),
|
||
this.updateFilterSelectionPills(".filter-hoteltype")
|
||
},
|
||
updateFilterCounter: function(e) {
|
||
var t = Mt(e).find(".filter-item.active").length;
|
||
Mt(e).find(".filter__counter").text(t),
|
||
t ? Mt(e).find(".filter__counter").removeClass("hidden") : Mt(e).find(".filter__counter").addClass("hidden")
|
||
},
|
||
updateDestinationFilterSelection: function() {
|
||
var e = Mt(".filter-cities .filter-item[data-name-in-url='" + this.destination + "']")
|
||
, t = e.parent().parent()
|
||
, i = Mt(".filter-cities .filter-item.active");
|
||
i.parent().parent().addClass("hidden"),
|
||
i.removeClass("active"),
|
||
e.addClass("active"),
|
||
t.removeClass("hidden"),
|
||
e.find("input.custom-radio").prop("checked", !0),
|
||
e.parents(".filter-destination-wrapper").addClass("slide-left"),
|
||
i ? setTimeout((function() {
|
||
var t = Mt(".filter-cities .filter-item.active").parent();
|
||
t.animate({
|
||
scrollTop: Lt(e).position().top - 50 + t.scrollTop()
|
||
}, "slow")
|
||
}
|
||
), 300) : Mt(window).on("load", (function() {
|
||
Mt(".filter-cities .filter-item.active").parent().animate({
|
||
scrollTop: Lt(e).position().top - 50
|
||
}, "slow")
|
||
}
|
||
)),
|
||
this.updateFilterCounter(e.parents(".filter-container")),
|
||
Mt(".filter-separator-destn").text(e.data().name),
|
||
Mt(".filter-separator-info").show()
|
||
},
|
||
updateAmenityFilterSelection: function() {
|
||
this.amenities.length > 0 && this.amenities.forEach((function(e, t) {
|
||
var i = Mt(".filter-amenity .filter-item[data-name-in-url='" + e + "']");
|
||
i.addClass("active"),
|
||
0 == t && Mt(window).on("load", (function() {
|
||
i.parent().animate({
|
||
scrollTop: Lt(i).position().top
|
||
}, "slow")
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
this.toggleAmenityClearAll(),
|
||
this.updateFilterCounter(Mt(".filter-amenity").parent())
|
||
},
|
||
updateHotelTypeFilterSelection: function() {
|
||
var e = Mt(".filter-hoteltype .filter-item[data-name-in-url='" + this.hotelType + "']");
|
||
e.addClass("active"),
|
||
e.find("input.custom-radio").prop("checked", !0),
|
||
this.hotelType && Mt(window).on("load", (function() {
|
||
e.parent().animate({
|
||
scrollTop: Lt(e).position().top
|
||
}, "slow")
|
||
}
|
||
)),
|
||
this.updateFilterCounter(Mt(".filter-hoteltype").parent())
|
||
},
|
||
updateFilteredHotelsList: function() {
|
||
this.filteredHotels = this.destination ? Mt(".filter-cities .filter-item.active").data().hotelIds : [];
|
||
var e = this;
|
||
e.filteredHotels || Mt(".filter-cities .filter-item.active ~ .filter-item").each((function() {
|
||
e.filteredHotels = e.filteredHotels ? e.filteredHotels.concat(Lt(this).data().hotelIds.filter((function(t) {
|
||
return e.filteredHotels.indexOf(t) < 0
|
||
}
|
||
))) : Lt(this).data().hotelIds
|
||
}
|
||
)),
|
||
e.filteredHotelsExcludeHoteltype = e.filteredHotels,
|
||
Mt(".filter-list:not(.filter-list-city) > .filter-item.active").each((function() {
|
||
var t = Lt(this).data().hotelIds.filter((function(t) {
|
||
return !e.filteredHotels.length || e.filteredHotels.indexOf(t) > -1
|
||
}
|
||
));
|
||
e.filteredHotels = t,
|
||
Lt(this).parent().hasClass("filter-hoteltype") || (e.filteredHotelsExcludeHoteltype = t),
|
||
Lt(this).find("span.hotel-count").text(t.length)
|
||
}
|
||
))
|
||
},
|
||
updateHotelCount: function() {
|
||
var e = this
|
||
, t = this.getUpdatedBaseUrl();
|
||
Mt(".filter-list:not(.filter-list-city) > .filter-item").each((function() {
|
||
var i, n = Lt(this).parent().hasClass("filter-hoteltype") ? e.filteredHotelsExcludeHoteltype : e.filteredHotels;
|
||
i = Lt(this).data().hotelIds.filter((function(e) {
|
||
return n.indexOf(e) > -1
|
||
}
|
||
)),
|
||
Lt(this).find("span.hotel-count").text(i.length),
|
||
0 === i.length ? (Lt(this).addClass("disabled"),
|
||
Lt(this).find("a").removeAttr("href"),
|
||
Lt(this).find("input.custom-radio").attr("disabled", "")) : (Lt(this).removeClass("disabled"),
|
||
e.updateFilterUrl(Lt(this), t),
|
||
Lt(this).find("input.custom-radio").removeAttr("disabled"))
|
||
}
|
||
))
|
||
},
|
||
getUpdatedBaseUrl: function() {
|
||
var e = this.destination ? Mt(".filter-cities .filter-item.active > a").attr("href") : "";
|
||
if (this.hotelType) {
|
||
var t = Mt(".filter-hoteltype .filter-item.active > a");
|
||
e += e ? "/" + t.parent().data().nameInUrl : t.attr("href")
|
||
}
|
||
if (this.amenities && this.amenities[0]) {
|
||
for (var i = "", n = 0; n < this.amenities.length; n++)
|
||
i += i ? "#" : "/",
|
||
i += this.amenities[n];
|
||
e += i
|
||
}
|
||
return e
|
||
},
|
||
updateFilterUrl: function(e, t) {
|
||
var i = Lt(e).hasClass("active")
|
||
, n = Lt(e).data().nameInUrl
|
||
, a = t;
|
||
if (e.parent().hasClass("filter-amenity")) {
|
||
var o = this.amenities && this.amenities[0]
|
||
, r = o ? "#" : "/";
|
||
a = i ? a.replace("#" + n, "#" + this.amenities[0]) : t + r + this.amenities[0],
|
||
a = o ? a.replace(this.amenities[0], n) : t + r + n
|
||
} else {
|
||
var s = this.hotelType ? "/" + this.hotelType : "";
|
||
a = a.replace(this.destination + s, this.destination + "/" + Lt(e).data().nameInUrl)
|
||
}
|
||
Lt(e).find("a").attr("href", a)
|
||
},
|
||
updateBrowserURLDestn: function(e, t) {
|
||
if (!this.cmsMode) {
|
||
if (t) {
|
||
var i = window.location.pathname.split("/")[1];
|
||
return n = decodeURI(window.location.href).replace(i, i + "/" + this.destination),
|
||
void window.history.pushState({}, "", n)
|
||
}
|
||
var n = decodeURI(window.location.href)
|
||
, a = !!this.destination && this.destination;
|
||
(a = !(a = !(a = a && a != this.country ? this.country + "/" + a : a) && this.hotelType ? this.hotelType : a) && this.amenities.length ? this.amenities[0] : a) ? (n = n.substring(0, window.location.href.indexOf(a)),
|
||
n += ("/" == n.charAt(n.length - 1) ? "" : "/") + e) : n += ("/" == n.charAt(n.length - 1) ? "" : "/") + e,
|
||
window.history.pushState({}, "", n)
|
||
}
|
||
},
|
||
updateBrowserURLAmenity: function(e) {
|
||
if (!this.cmsMode) {
|
||
var t = decodeURI(window.location.href);
|
||
if ("object" == Nt(e) && e.length)
|
||
e.forEach((function(e) {
|
||
t = (t = t.replace("/" + e, "")).replace("#" + e, "")
|
||
}
|
||
));
|
||
else if (t.indexOf("#" + e) > 0 || t.indexOf("/" + e) > 0) {
|
||
t = t.replace("#" + e, "");
|
||
var i = this.amenities.length ? this.amenities[0] : null;
|
||
t = i ? (t = t.replace("/" + e, "/" + i)).replace("#" + i, "") : t.replace("/" + e, "")
|
||
} else
|
||
t = 1 == this.amenities.length ? t + "/" + e : t + "#" + e;
|
||
window.history.pushState({}, "", encodeURI(t))
|
||
}
|
||
},
|
||
updateBrowserURLHotelType: function(e, t) {
|
||
if (!this.cmsMode) {
|
||
var i = decodeURI(window.location.href);
|
||
t = t ? "/" + t : "",
|
||
!!e && i.indexOf("/" + e) > 0 ? i = i.replace("/" + e, t) : this.amenities.length ? i = i.replace("/" + this.amenities[0], t + "/" + this.amenities[0]) : i += t,
|
||
window.history.pushState({}, "", encodeURI(i))
|
||
}
|
||
},
|
||
updateFilterSelectionPills: function(e) {
|
||
var t = Mt(e).parent();
|
||
t.find(".filter-pill:not(.hidden)").remove();
|
||
var i = ".filter-amenity" == e
|
||
, n = i ? this.amenities : this.hotelType;
|
||
if (n.length)
|
||
if (i)
|
||
n.forEach((function(e) {
|
||
var i = t.find(".filter-pill.hidden").clone(!0);
|
||
i.removeClass("hidden"),
|
||
i.find("span").text(t.find("[data-name-in-url='" + e + "']").data().name),
|
||
t.find(".filter-pills").append(i)
|
||
}
|
||
));
|
||
else {
|
||
var a = t.find(".filter-pill.hidden").clone(!0);
|
||
a.removeClass("hidden"),
|
||
a.find("span").text(t.find("[data-name-in-url='" + n + "']").data().name),
|
||
t.find(".filter-pills").append(a)
|
||
}
|
||
},
|
||
toggleAmenityClearAll: function() {
|
||
var e = Mt(".filter-amenity").parent().find(".filter-clear");
|
||
this.amenities.length > 1 ? e.removeClass("hidden") : e.addClass("hidden")
|
||
},
|
||
updateHeaderSection: function() {
|
||
var e = 0 == this.amenities.length
|
||
, t = !this.hotelType
|
||
, i = !e || !t
|
||
, n = Lt(".filter-item[data-name-in-url='" + this.destination + "']")
|
||
, a = i ? "" : Lt("#title-destn").val();
|
||
a = (a = a || e ? a : Lt("#title-destn-amentiy").val()) || t ? a : Lt("#title-destn-closeto").val(),
|
||
a = e || t ? a : Lt("#title-all").val(),
|
||
this.filteredHotels.length < 1 && (a = Lt("h2.section-heading .singular").text());
|
||
var o = this.hotelType ? Lt(".filter-item[data-name-in-url='" + this.hotelType + "']").data().name.toLowerCase() : ""
|
||
, r = this.amenities[0] ? Lt(".filter-item[data-name-in-url='" + this.amenities[0] + "']").data().name.toLowerCase() : "";
|
||
a = this.destination ? a.replace("{0}", n.data().name) : a,
|
||
a = this.hotelType ? a.replace("{1}", o) : a,
|
||
a = this.amenities[0] ? a.replace("{2}", r) : a;
|
||
var s = this.destination ? n.data().shortDescription : "";
|
||
(Lt("main .l-combo-main-sidebar-small__main--content h1").length < 1 ? Lt("main p.description").before('<h1 class="page-title no-margin">' + a + "</h1>") : Lt("h1.page-title").text(a),
|
||
-1 != a.indexOf("ß") && Lt("h1.page-title").html(Lt("h1.page-title").text().replace(/ß/g, '<span class="u-no-text-transform">ß</span>')),
|
||
Lt("p.description").text(s),
|
||
i) ? (Lt("p.description").hide(),
|
||
s = "") : (Lt("p.description").show(),
|
||
Lt(".preamble.description").text().length > (window.ScreenHelper.isLargeScreen() ? 160 : 120) && this.hideLongHotelDesc(window.ScreenHelper.isLargeScreen() ? 130 : 100));
|
||
this.updateHeadTags(a, s)
|
||
},
|
||
hideLongHotelDesc: function(e) {
|
||
var t = Lt(".preamble.description").text().substring(0, e)
|
||
, i = Lt(".preamble.description").text().substr(e)
|
||
, n = document.querySelector(".preamble.description ~ .read-more").outerHTML;
|
||
Lt(".preamble.description").html("<span>" + t + "</span>" + n + "<span>" + i + "</span>"),
|
||
Lt(".preamble.description").addClass("short-view"),
|
||
Lt(".preamble.description .read-more").show(),
|
||
Lt(".preamble.description .read-more").on("click", (function() {
|
||
Lt(this).hide(),
|
||
Lt(this).off("click"),
|
||
Lt(".preamble.description").removeClass("short-view")
|
||
}
|
||
))
|
||
},
|
||
updateHeadTags: function(e, t) {
|
||
var i = Lt(".page-head-title").val().substring(Lt(".page-head-title").val().indexOf("|"));
|
||
Lt("head > title").length < 1 ? Lt("head > script").first().before("<title>" + e + " " + i + "</title>") : Lt("head > title").text(e + " " + i),
|
||
Lt("head > meta[property='og:title']").attr("content", e + i);
|
||
var n = window.location.href
|
||
, a = n.substring(0, window.location.hash ? n.indexOf("#") : n.length);
|
||
Lt("head link[rel='canonical']").length > 0 ? Lt("head link[rel='canonical']").attr("href", a) : Lt("head").append("<link rel='canonical' href='" + a + "'>"),
|
||
Lt("head > meta[name='description']").attr("content", t),
|
||
t && (Lt("head > meta[name='description']").length || Lt("head").append("<meta name='description' content='" + t + "' />"),
|
||
Lt("head > meta[property='og:description']").attr("content", t))
|
||
}
|
||
};
|
||
var zt = i(19755)
|
||
, qt = i(19755);
|
||
function Ft(e) {
|
||
return function(e) {
|
||
if (Array.isArray(e))
|
||
return Rt(e)
|
||
}(e) || function(e) {
|
||
if ("undefined" != typeof Symbol && null != e[Symbol.iterator] || null != e["@@iterator"])
|
||
return Array.from(e)
|
||
}(e) || function(e, t) {
|
||
if (!e)
|
||
return;
|
||
if ("string" == typeof e)
|
||
return Rt(e, t);
|
||
var i = Object.prototype.toString.call(e).slice(8, -1);
|
||
"Object" === i && e.constructor && (i = e.constructor.name);
|
||
if ("Map" === i || "Set" === i)
|
||
return Array.from(e);
|
||
if ("Arguments" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))
|
||
return Rt(e, t)
|
||
}(e) || function() {
|
||
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
|
||
}()
|
||
}
|
||
function Rt(e, t) {
|
||
(null == t || t > e.length) && (t = e.length);
|
||
for (var i = 0, n = new Array(t); i < t; i++)
|
||
n[i] = e[i];
|
||
return n
|
||
}
|
||
var $t = i(17970)
|
||
, Vt = i(19755)
|
||
, Wt = function() {
|
||
var e = Vt(".sort-list");
|
||
if (!e.length)
|
||
return !1;
|
||
Vt("[data-sort-field]").css("cursor", "pointer"),
|
||
Vt("[data-sort-field]").on("click", (function(t) {
|
||
var i = Vt(t.currentTarget).data("sort-field")
|
||
, n = Vt(t.currentTarget).data("sort-order")
|
||
, a = e.get();
|
||
a.sort((function(e, t) {
|
||
var a, o, r, s;
|
||
return "asc" == n ? (a = e.querySelector("[data-sort-value=" + i + "]").innerText,
|
||
o = t.querySelector("[data-sort-value=" + i + "]").innerText) : (o = e.querySelector("[data-sort-value=" + i + "]").innerText,
|
||
a = t.querySelector("[data-sort-value=" + i + "]").innerText),
|
||
(r = a) === (s = o) ? 0 : r < s ? -1 : 1
|
||
}
|
||
));
|
||
var o = e.parent();
|
||
a.forEach((function(e) {
|
||
o.append(e)
|
||
}
|
||
)),
|
||
function(e, t, i) {
|
||
Vt(e).data("sort-order", "asc" == i ? "desc" : "asc"),
|
||
Vt("[data-sort-field]").removeClass("active"),
|
||
Vt(e).addClass("active"),
|
||
Vt(e).find("i.icon-sort").removeClass("icon-sort-asc icon-sort-desc"),
|
||
Vt(e).find("i.icon-sort").addClass("icon-sort-" + ("asc" == i ? "desc" : "asc"))
|
||
}(t.currentTarget, 0, n)
|
||
}
|
||
))
|
||
}
|
||
, Ut = i(19755);
|
||
function Gt() {
|
||
if (document.querySelector("form[name=bookingDetailsForm]")) {
|
||
var e = function(e) {
|
||
return /Rooms\[[0-9]\]/g.test(e) ? parseInt(e.substring(20, 21)) + 1 : -1
|
||
}
|
||
, t = [];
|
||
Ut("form[name=bookingDetailsForm] input, form[name=bookingDetailsForm] select").on("blur", (function(i) {
|
||
var n = e(i.target.name);
|
||
if (-1 != n && !t[n]) {
|
||
var a = {
|
||
event: "form start",
|
||
"form name": "checkout enter detail",
|
||
"form type": "checkout"
|
||
};
|
||
Ut(".booking-details--multi-room").length && (a["form name"] += " Room " + n),
|
||
(0,
|
||
m.ay)("form start", a),
|
||
t[n] = !0
|
||
}
|
||
}
|
||
));
|
||
Ut("form").on("submit", (function(t) {
|
||
Ut(t.target).hasClass("ng-valid") ? (0,
|
||
m.ay)("form complete", {
|
||
event: "form complete",
|
||
"form name": "checkout enter detail",
|
||
"form type": "checkout"
|
||
}) : function() {
|
||
var t = [];
|
||
if (Ut("input.ng-invalid").each((function() {
|
||
Ut(this).siblings("span.error-text:visible").each((function() {
|
||
t.push(Ut(this).text())
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
!(t.length < 1)) {
|
||
var i = e(Ut("input.ng-invalid")[0].getAttribute("name"))
|
||
, n = {
|
||
event: "form error",
|
||
"form name": "checkout enter detail",
|
||
"form type": "checkout",
|
||
"form error": t.join("|").substring(0, 255)
|
||
};
|
||
Ut(".booking-details--multi-room").length && (n["form name"] += " Room " + i),
|
||
(0,
|
||
m.ay)("form error", n)
|
||
}
|
||
}()
|
||
}
|
||
))
|
||
}
|
||
}
|
||
var Qt = i(19755);
|
||
function Yt(e) {
|
||
this.$sliderObj = e,
|
||
this.sliderAPI = e.data("royalSlider")
|
||
}
|
||
Yt.prototype = {
|
||
enableSliderKeyboardNav: function(e) {
|
||
e && this.$sliderObj.one("focus", function(e) {
|
||
var t = this.$sliderObj.data("royalSlider");
|
||
Qt(document).on("keydown.slider", function(e) {
|
||
var i = !1;
|
||
(i = Qt(document.activeElement)[0] === this.$sliderObj[0] || Qt(document.activeElement).closest(this.$sliderObj).length > 0) && 37 === e.keyCode ? t.prev() : i && 39 === e.keyCode && t.next()
|
||
}
|
||
.bind(this))
|
||
}
|
||
.bind(this))
|
||
},
|
||
enableTabbing: function() {
|
||
this.$sliderObj.find(".rsArrow").each(function(e, t) {
|
||
Qt(t).find(".rsArrowIcn").attr("tabindex", 0),
|
||
Qt(t).keyup(function(e) {
|
||
13 !== e.keyCode && 32 !== e.keyCode || (Qt(t).hasClass("rsArrowLeft") ? this.sliderAPI.prev() : Qt(t).hasClass("rsArrowRight") && this.sliderAPI.next())
|
||
}
|
||
.bind(this))
|
||
}
|
||
.bind(this))
|
||
}
|
||
},
|
||
window.Scandic.runOnWindowLoad.push((function() {
|
||
var e = Qt('*[data-js="gallery-slider"]');
|
||
if (!(e.length <= 0)) {
|
||
new Yt(e).enableSliderKeyboardNav(e, !0),
|
||
e.royalSlider({
|
||
autoHeight: !0,
|
||
imageAlignCenter: !1,
|
||
autoScaleSlider: !1,
|
||
autoScaleSliderWidth: 900,
|
||
autoScaleSliderHeight: 600,
|
||
imageScaleMode: "none",
|
||
loop: !0,
|
||
keyboardNavEnabled: !1,
|
||
controlsInside: !1,
|
||
arrowsNav: !0,
|
||
arrowsNavAutoHide: !1,
|
||
arrowsNavHideOnTouch: !1,
|
||
controlNavigation: "none",
|
||
thumbsFitInViewport: !1,
|
||
navigateByClick: !0,
|
||
numImagesToPreload: 3,
|
||
usePreloader: !0,
|
||
transitionType: "move",
|
||
globalCaption: !1,
|
||
deeplinking: {
|
||
enabled: !0,
|
||
change: !0,
|
||
prefix: "image-"
|
||
},
|
||
fullscreen: {
|
||
enabled: !0,
|
||
nativeFS: !0
|
||
},
|
||
autoPlay: !1
|
||
}),
|
||
i();
|
||
var t = e.data("royalSlider");
|
||
t.ev.on("rsExitFullscreen", (function() {
|
||
Qt(".l-booking-widget--horizontal").css("z-index", "100"),
|
||
i(),
|
||
Qt(".navigation-bar").removeClass("hidden"),
|
||
Qt(".special-alerts").removeClass("hidden")
|
||
}
|
||
)),
|
||
t.ev.on("rsEnterFullscreen", (function() {
|
||
Qt(".navigation-bar").addClass("hidden"),
|
||
Qt(".special-alerts").addClass("hidden"),
|
||
Qt(".l-booking-widget--horizontal").css("z-index", "10")
|
||
}
|
||
))
|
||
}
|
||
function i() {
|
||
Qt("html, body").animate({
|
||
scrollTop: Qt('*[data-js="gallery-slider-section"]').offset().top - (window.innerWidth > 950 ? 100 : 120)
|
||
}, 1e3)
|
||
}
|
||
}
|
||
)),
|
||
window.Scandic.runOnWindowLoad.push((function() {
|
||
var e = Qt('*[data-js="slider--withcontrols"]');
|
||
e.length <= 0 || e.each((function() {
|
||
var e = Qt(this);
|
||
Qt(this).royalSlider({
|
||
autoHeight: !0,
|
||
imageAlignCenter: !1,
|
||
autoScaleSlider: !1,
|
||
imageScaleMode: "none",
|
||
autoScaleSliderWidth: 900,
|
||
autoScaleSliderHeight: 600,
|
||
loop: !1,
|
||
keyboardNavEnabled: !1,
|
||
controlsInside: !1,
|
||
arrowsNav: !1,
|
||
arrowsNavAutoHide: !1,
|
||
arrowsNavHideOnTouch: !1,
|
||
controlNavigation: "thumbnails",
|
||
thumbsFitInViewport: !0,
|
||
thumbs: {
|
||
spacing: 2,
|
||
arrowsAutoHide: !0,
|
||
autoCenter: !1
|
||
},
|
||
navigateByClick: !0,
|
||
numImagesToPreload: 3,
|
||
usePreloader: !0,
|
||
transitionType: "move",
|
||
globalCaption: !1,
|
||
autoPlay: !1
|
||
});
|
||
var t = e.data("royalSlider");
|
||
setTimeout((function() {
|
||
e.removeClass("media-container media-container--3x2"),
|
||
t.updateSliderSize()
|
||
}
|
||
), 1e3),
|
||
e.find(".rsNavItem.rsThumb img").attr("tabindex", "0").on("keydown", (function(e) {
|
||
"enter" == e.key.toLowerCase() && Qt(this).trigger("click")
|
||
}
|
||
))
|
||
}
|
||
))
|
||
}
|
||
));
|
||
var Jt = i(19755)
|
||
, Xt = function() {
|
||
var e, t;
|
||
if (t = (e = Jt(".hero__img-container")).find("img.hero__image"),
|
||
!(e.length <= 0 || t.length <= 0)) {
|
||
picturefill();
|
||
var i, n = Jt('*[data-js="hero-slider"]');
|
||
if (n.children().length > 0) {
|
||
!function(e) {
|
||
e.royalSlider({
|
||
autoScaleSlider: !1,
|
||
autoHeight: !1,
|
||
loop: !0,
|
||
keyboardNavEnabled: !1,
|
||
controlsInside: !0,
|
||
arrowsNav: !0,
|
||
arrowsNavAutoHide: !1,
|
||
arrowsNavHideOnTouch: !1,
|
||
controlNavigation: "bullets",
|
||
thumbsFitInViewport: !1,
|
||
navigateByClick: !0,
|
||
numImagesToPreload: 1,
|
||
usePreloader: !0,
|
||
startSlideId: 0,
|
||
transitionType: "fade",
|
||
transitionSpeed: 300,
|
||
autoPlayTriggeredTransitionSpeed: 2e3,
|
||
globalCaption: !1,
|
||
deeplinking: {
|
||
enabled: !0,
|
||
change: !1
|
||
},
|
||
autoPlay: {
|
||
enabled: !1,
|
||
pauseOnHover: !1,
|
||
stopAtAction: !0,
|
||
delay: 5e3
|
||
}
|
||
}),
|
||
Jt("#full-width-slider").show(),
|
||
Jt(".slider-plchldr").fadeOut(3e3, (function() {
|
||
Jt(this).remove()
|
||
}
|
||
));
|
||
var t = new Yt(e);
|
||
t.enableSliderKeyboardNav(!0),
|
||
t.enableTabbing()
|
||
}(n);
|
||
var a = n.data("royalSlider");
|
||
(i = a).st.autoPlay.enabled && i.st.autoPlayTriggeredTransitionSpeed !== i.st.transitionSpeed && (i.st.userActionTriggeredTransitionSpeed = i.st.transitionSpeed,
|
||
i.ev.on("rsBeforeMove", (function(e, t, n) {
|
||
i.st.transitionSpeed = !1 === n ? i.st.autoPlayTriggeredTransitionSpeed : i.st.userActionTriggeredTransitionSpeed
|
||
}
|
||
)));
|
||
var o = Jt('*[data-js="hero-teaser-link"]');
|
||
o.focus((function() {
|
||
a.stopAutoPlay()
|
||
}
|
||
)),
|
||
o.focusout((function() {
|
||
a.startAutoPlay()
|
||
}
|
||
))
|
||
}
|
||
}
|
||
};
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
var e, t, i, o, r;
|
||
!function() {
|
||
if (document.querySelector(".l-section--hotel")) {
|
||
var e = function(e) {
|
||
n.ajax({
|
||
url: "/ajax/hotelalerts",
|
||
type: "GET",
|
||
data: {
|
||
id: e,
|
||
lang: document.documentElement.lang
|
||
},
|
||
success: function(e) {
|
||
n(".l-section.l-section--pattern").after(e)
|
||
}
|
||
})
|
||
};
|
||
n(".l-section--hotel").length && (window.Scandic.bookingWidgetData ? e(window.Scandic.bookingWidgetData.stayValue) : window.datalayer[1] && window.datalayer[1].hotelid && setTimeout(e, 1e3, window.datalayer[1].hotelid))
|
||
}
|
||
}(),
|
||
function() {
|
||
function e(e) {
|
||
var t = a('[data-tab-content="' + e.data("tab-panel") + '"]');
|
||
t.length && (e.find("a").each((function() {
|
||
var i = a(this)
|
||
, n = i.parent();
|
||
i.on("click", (function(a) {
|
||
a.preventDefault();
|
||
var o = t.find('[data-tab="' + i.attr("href").substring(1) + '"]');
|
||
!n.hasClass("is-active") && o.length && (e.children().removeClass("is-active"),
|
||
t.find("[data-tab]").removeClass("is-active"),
|
||
n.addClass("is-active"),
|
||
o.addClass("is-active").trigger("tab.activated", o))
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
a("*[data-tab-trigger]").on("click", (function() {
|
||
var i = a(this).data("tab-trigger")
|
||
, n = a('[data-tab="' + i + '"]');
|
||
e.children().removeClass("is-active"),
|
||
t.find("[data-tab]").removeClass("is-active"),
|
||
e.find('[href="#' + i + '"]').parent().addClass("is-active"),
|
||
n.addClass("is-active"),
|
||
n.addClass("is-active").trigger("tab.activated", n)
|
||
}
|
||
)))
|
||
}
|
||
for (var t = a('*[data-js="tab-panel"]'), i = 0, n = t.length; i < n; ++i)
|
||
e(t.eq(i))
|
||
}(),
|
||
e = s('*[data-js="dropdown-toggler"]'),
|
||
s('*[data-js="dropdown-toggler"]').length && e.each(l),
|
||
u(document).on("mouseover", p, (function() {
|
||
d.registerMouseOutEventHandler(this),
|
||
d.find(u(this)).hoverOpen((function() {
|
||
this.closeOnMouseout()
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
u(document).on("focus", p, (function(e) {
|
||
u(this).data("tooltip-open-on-focus") && d.find(u(this)).open().closeOnBlur(p),
|
||
e.preventDefault()
|
||
}
|
||
)),
|
||
u(document).on("click", p, (function(e) {
|
||
e.preventDefault(),
|
||
d.find(u(this)).open().closeOnClick()
|
||
}
|
||
)),
|
||
(t = x("[data-scroll-with]")) && 0 !== t.length && t.map((function(e, t) {
|
||
return new T(x(t),x(t.getAttribute("data-scroll-with")))
|
||
}
|
||
)),
|
||
I(),
|
||
function() {
|
||
var e, t;
|
||
function i(e) {
|
||
"ger" === e.toLowerCase() ? t.show() : t.hide()
|
||
}
|
||
e = P("*[data-js=profile-language-selection]"),
|
||
t = P("*[data-js=profile-title-selection]"),
|
||
e.length > 0 && t.length > 0 && (i(e.val()),
|
||
e.change((function() {
|
||
i(this.value)
|
||
}
|
||
)))
|
||
}(),
|
||
D('form[name="registerprofile"]').on("invalid-form.validate", (function() {
|
||
setTimeout((function() {
|
||
var e, t = D(":focus");
|
||
t.offset() && (e = t.offset().top - D(".navigation-bar").outerHeight(),
|
||
D("html, body").scrollTop(e))
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
function() {
|
||
var e = "formDataStore";
|
||
function t() {
|
||
window.sessionStorage.removeItem("form_bookingDetailsForm")
|
||
}
|
||
document.querySelector("#reset-enter-details") && t(),
|
||
M('*[data-js="logout-form"]').on("submit", (function() {
|
||
t()
|
||
}
|
||
)),
|
||
M('*[data-js="remember-form-data"]').each((function() {
|
||
M(this).data("module_" + e) || M(this).data("module_" + e, new E(this))
|
||
}
|
||
))
|
||
}(),
|
||
q('[data-js="sign-up"]').each((function() {
|
||
new z(q(this))
|
||
}
|
||
)),
|
||
$((function() {
|
||
$(".js-modify-booking").doOnce((function() {
|
||
this.each((function() {
|
||
new R($(this))
|
||
}
|
||
))
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
window.onload = function() {
|
||
document.querySelector("#booking-status") && (0,
|
||
m.ay)("my booking - find booking", {
|
||
"form name": "my booking",
|
||
"form type": "find booking",
|
||
"form status": document.querySelector("#booking-status").value
|
||
})
|
||
}
|
||
,
|
||
Q("*[data-js='price-calendar']").each((function() {
|
||
new G(Q(this)).init()
|
||
}
|
||
)),
|
||
X('*[data-js="main-nav-toggler"]').each((function(e, t) {
|
||
new J(t)
|
||
}
|
||
)),
|
||
ee('*[data-js="main-nav-bar"]').each((function(e, t) {
|
||
new Z(t)
|
||
}
|
||
)),
|
||
re(),
|
||
ce(".widget-with-summary-toggle").each((function(e, t) {
|
||
new le(t)
|
||
}
|
||
)),
|
||
pe('*[data-js="book-button-toggler"]').each((function(e, t) {
|
||
new ue(t)
|
||
}
|
||
)),
|
||
ve(),
|
||
we('*[data-js="booking-widget-form"]').each((function(e, t) {
|
||
new ye(t)
|
||
}
|
||
)),
|
||
(i = Te("body").find(".mlc-carousel__preloader")[0]) && Te(i).hide(),
|
||
Te("a[data-viewallbenefits-link]").on("click", (function(e) {
|
||
e.preventDefault(),
|
||
window.location.href = e.target.href
|
||
}
|
||
)),
|
||
function() {
|
||
var e = ".table__container--historical-bookings"
|
||
, t = ".table__container-historical-bookings-inner"
|
||
, i = "#hb-fade-overlay-right";
|
||
function n(i) {
|
||
if (xe(e).length) {
|
||
var n = xe(e).outerWidth()
|
||
, a = xe(t + " > table.table--nlp").get(0).scrollWidth
|
||
, o = xe(t).find(i)[0];
|
||
"#hb-fade-overlay-right" === i ? n < a || 0 === n ? xe(o).removeClass("hidden") : xe(o).addClass("hidden") : n > a ? xe(o).removeClass("hidden") : xe(o).addClass("hidden")
|
||
}
|
||
}
|
||
document.querySelector(e) && (xe(window).on("load", (function() {
|
||
n(i)
|
||
}
|
||
)),
|
||
xe(window).on("resize", (function() {
|
||
n(i)
|
||
}
|
||
)),
|
||
document.addEventListener("scroll", (function(n) {
|
||
var a, o;
|
||
n.target === xe(e)[0] && (a = xe(t).find(i)[0],
|
||
o = "right",
|
||
xe(e)[0].scrollWidth - (xe(e)[0].clientWidth + xe(e)[0].scrollLeft) < 30 ? xe(a).addClass("hidden") : xe(a).removeClass("hidden"),
|
||
"right" === o ? xe(a).css("right", -(xe(e)[0].scrollLeft + 5)) : xe(a).css("left", xe(e)[0].scrollLeft - 5))
|
||
}
|
||
), !0))
|
||
}(),
|
||
Ae("#contact-us__phone-info__link").on("click", (function(e) {
|
||
e.preventDefault(),
|
||
(0,
|
||
m.ay)("phoneNumberClicked"),
|
||
window.location.href = Ae(e.currentTarget).data("number")
|
||
}
|
||
)),
|
||
Ae("#contact-us__email").on("click", (function(e) {
|
||
e.preventDefault(),
|
||
(0,
|
||
m.ay)("emailClicked"),
|
||
window.location.href = Ae(e.currentTarget).data("email")
|
||
}
|
||
)),
|
||
Ae("#table__container--historical-bookings__toggle-btn").on("click", (function(e) {
|
||
(0,
|
||
m.ay)("previousTransactionsTableToggleButtonClicked")
|
||
}
|
||
)),
|
||
Ae("#my-expiring-points-container__toggle-btn").on("click", (function(e) {
|
||
(0,
|
||
m.ay)("expiringPointsTableToggleButtonClicked")
|
||
}
|
||
)),
|
||
Ae("#previous-transactions > form").submit((function(e) {
|
||
(0,
|
||
m.ay)("previousTransactionsTableIsFiltered")
|
||
}
|
||
)),
|
||
Ae(".multiple-rates-block__donate-points-btn").on("click", (function(e) {
|
||
var t = {
|
||
charity: Ae(e.target).attr("data-donation-name") || null
|
||
};
|
||
(0,
|
||
m.ay)("confirmdonation", t)
|
||
}
|
||
)),
|
||
Ae("#product-card__cancel-button").on("click", (function(e) {
|
||
(0,
|
||
m.ay)("donationcancel")
|
||
}
|
||
)),
|
||
Ae(".multiple-rates-block__donate-points-confirmation-btn").on("click", (function(e) {
|
||
var t = {
|
||
charity: Ae(e.target).attr("data-donation-name") || null,
|
||
charitypoints: Ae(e.target).attr("data-donation-amount") || null
|
||
};
|
||
(0,
|
||
m.ay)("donationthankyou", t)
|
||
}
|
||
)),
|
||
0 !== _e(Ce).length && ke(),
|
||
He(),
|
||
(o = document.querySelector('[data-js="search-filter"]')) && Qe(o),
|
||
function() {
|
||
for (var e = dt('*[data-js="scroll-top"]'), t = 0, i = e.length; t < i; ++t)
|
||
e.eq(t).on("click", n);
|
||
function n() {
|
||
dt("html, body").stop().animate({
|
||
scrollTop: 0
|
||
}, 400, "swing")
|
||
}
|
||
for (t = 0,
|
||
i = (e = dt('*[data-js="new-search"]')).length; t < i; ++t)
|
||
e.eq(t).on("click", a);
|
||
function a() {
|
||
dt("html, body").stop().animate({
|
||
scrollTop: 0
|
||
}, 400, "swing", (function() {
|
||
dt(".booking-widget-toggle").hasClass("active") || dt(".booking-widget-toggle").trigger("click"),
|
||
"none" == dt(".l-booking-widget--mobile-collapsed").css("display") && dt(".navigation-bar__main__booking-widget-toggle").trigger("click"),
|
||
dt("#widget-search__text").focus()
|
||
}
|
||
))
|
||
}
|
||
}(),
|
||
wt(),
|
||
St(document.querySelectorAll("[data-lazysizes-refresh]")).forEach((function(e) {
|
||
return e.addEventListener("click", lazySizes.autoSizer.checkElems)
|
||
}
|
||
)),
|
||
(0,
|
||
Ct.init)(),
|
||
Pt(),
|
||
function() {
|
||
if (document.querySelector("#tvgo-HotelId")) {
|
||
var e = read_cookie("trv_reference");
|
||
null !== e && Dt.ajax({
|
||
type: "Post",
|
||
data: {
|
||
TrvReference: e,
|
||
HotelId: document.querySelector("#tvgo-HotelId").value,
|
||
ArrivalDate: document.querySelector("#tvgo-ArrivalDate").value,
|
||
DepartureDate: document.querySelector("#tvgo-DepartureDate").value,
|
||
DateFormat: document.querySelector("#tvgo-DateFormat").value,
|
||
TotalBookingPricePerStay: document.querySelector("#tvgo-TotalBookingPricePerStay").value,
|
||
Currency: document.querySelector("#tvgo-Currency").value,
|
||
BookingId: document.querySelector("#tvgo-BookingId").value
|
||
},
|
||
url: "/ajax/bookingconfirmation/sendConfirmedBookingToTrivago",
|
||
success: function(e) {
|
||
"True" == e ? console.log("Trivago Conversion API call successfully completed") : console.log("Trivago Conversion API call failed")
|
||
},
|
||
error: function(e) {
|
||
console.log("Trivago Conversion API call failed with error", e)
|
||
}
|
||
})
|
||
}
|
||
}(),
|
||
function() {
|
||
if ("filteringpage" == window.datalayer[0].pagetype || document.querySelector(".filter-wrapper")) {
|
||
var e = new jt;
|
||
e.parseUrl();
|
||
var t = function() {
|
||
window.ScreenHelper.mediaSmallUp() && !zt(".filter-modal").length && (zt(".filter-destination").parents(".filter-wrapper").addClass("filter-open"),
|
||
zt(".filter-destination").parents(".filter-container").addClass("filter-modal"))
|
||
};
|
||
t(),
|
||
zt(window).on("resize", t),
|
||
zt(".filter-destination-wrapper .filter-item, .filter-destination-wrapper .filter-item .custom-radio").on("click change", function(t) {
|
||
t.stopPropagation();
|
||
var a = t.currentTarget;
|
||
(t.type = "radio" == a.type) && (a = a.parentElement);
|
||
var o = zt(a).data().nameInUrl
|
||
, r = zt(a).data().name
|
||
, s = zt(a).hasClass("filter-country") && zt(".slide-left").length;
|
||
if ((o != e.destination || zt(a).hasClass("filter-country")) && !s) {
|
||
if (zt(a).hasClass("filter-country")) {
|
||
var l = zt(a).parents(".filter-destination-wrapper");
|
||
return l.addClass("slide-left"),
|
||
l.find(".filter-cities #" + o).removeClass("hidden"),
|
||
l.find(".filter-cities #" + o + " ul li").length > 7 && !window.ScreenHelper.mediaSmallUp() ? zt(".filter-modal").css("height", "85%") : zt(".filter-modal").css("height", "auto"),
|
||
void zt(".filter-cities .back:visible").trigger("focus")
|
||
}
|
||
zt(".filter-list .filter-item.active").removeClass("active");
|
||
var c = zt(a).find("a").attr("href").split("/")[2];
|
||
e.updateBrowserURLDestn(c != o ? c + "/" + o : o),
|
||
o && (e.country = c,
|
||
e.destination = o,
|
||
e.amenities = [],
|
||
e.hotelType = ""),
|
||
zt(a).addClass("active"),
|
||
zt(a).find("input.custom-radio").prop("checked", !0),
|
||
zt(".filter-separator-destn").text(r),
|
||
zt(".filter-separator-info").show(),
|
||
e.updateFilteredHotelsList(),
|
||
e.updateHotelCount(),
|
||
e.updateFilterCounter(zt(".filter-destination").parent()),
|
||
e.updateFilterSelectionPills(".filter-amenity"),
|
||
e.toggleAmenityClearAll(),
|
||
e.updateFilterCounter(zt(".filter-amenity").parent()),
|
||
e.updateFilterSelectionPills(".filter-hoteltype"),
|
||
e.updateFilterCounter(zt(".filter-hoteltype").parent()),
|
||
i(),
|
||
n()
|
||
}
|
||
}
|
||
.bind(e)),
|
||
window.navigator.userAgent.indexOf("Trident") > 0 && qt(".filter-list-city").css("height", "calc(100% - 26px)"),
|
||
zt(".filter-cities .back").on("click keydown", (function(e) {
|
||
"keydown" == e.type && 13 != e.which || (e.stopPropagation(),
|
||
zt(".filter-modal .filter-destination").show(),
|
||
zt(".filter-modal").css("height", "auto"),
|
||
zt(this).parents(".filter-destination-wrapper").removeClass("slide-left"),
|
||
zt(this).parent().addClass("hidden"),
|
||
window.ScreenHelper.mediaMediumUp() && document.querySelector(".filter-country[data-name-in-url=" + e.currentTarget.parentElement.id + "] a").focus())
|
||
}
|
||
)),
|
||
zt(".filter-amenity .filter-item").on("click", function(t) {
|
||
if (t.stopPropagation(),
|
||
!zt(t.currentTarget).hasClass("disabled")) {
|
||
var a = zt(t.currentTarget).data().nameInUrl
|
||
, o = e.amenities.indexOf(a);
|
||
-1 !== o ? (zt(t.currentTarget).removeClass("active"),
|
||
e.amenities.splice(o, 1)) : (zt(t.currentTarget).addClass("active"),
|
||
e.amenities.push(a)),
|
||
e.updateFilteredHotelsList(),
|
||
e.updateHotelCount(),
|
||
e.updateBrowserURLAmenity(a),
|
||
e.updateFilterSelectionPills(".filter-amenity"),
|
||
e.toggleAmenityClearAll(),
|
||
e.updateFilterCounter(zt(".filter-amenity").parent()),
|
||
i(),
|
||
n()
|
||
}
|
||
}
|
||
.bind(e)),
|
||
zt(".filter-hoteltype .filter-item").on("click", (function(t) {
|
||
if (t.stopPropagation(),
|
||
!(zt(this).hasClass("disabled") || zt(this).hasClass("active") && t.originalEvent)) {
|
||
var a = zt(t.currentTarget).data().nameInUrl
|
||
, o = e.hotelType;
|
||
a == e.hotelType && (zt(t.currentTarget).removeClass("active"),
|
||
a = "",
|
||
zt(this).find("input.custom-radio").prop("checked", !1)),
|
||
e.hotelType = a,
|
||
zt(".filter-hoteltype .filter-item.active").removeClass("active"),
|
||
a && (zt(this).addClass("active"),
|
||
zt(this).find("input.custom-radio").prop("checked", !0)),
|
||
e.updateFilteredHotelsList(),
|
||
e.updateHotelCount("filter-hoteltype"),
|
||
e.updateBrowserURLHotelType(o, a),
|
||
e.updateFilterSelectionPills(".filter-hoteltype"),
|
||
e.updateFilterCounter(zt(".filter-hoteltype").parent()),
|
||
i(),
|
||
n()
|
||
}
|
||
}
|
||
)),
|
||
zt(".filter-heading").on("click keydown", (function(e) {
|
||
if (("keydown" != e.type || 13 == e.which) && (!zt(this).parent().hasClass("filter-modal") || window.ScreenHelper.mediaSmallUp()) && (zt(this).parent().hasClass("filter-modal") || zt(".filter-modal").removeClass("filter-modal"),
|
||
zt(this).parents(".filter-wrapper").toggleClass("filter-open"),
|
||
zt(this).parent().toggleClass("filter-modal"),
|
||
!window.ScreenHelper.mediaSmallUp())) {
|
||
zt(".navigation-bar, .booking-widget-wrapper").addClass("force-to-bottom"),
|
||
zt("body").addClass("modal-is-open");
|
||
var t = zt(this).next();
|
||
if (t.find("li").length > 7) {
|
||
var i = t.find("ul li.active").first();
|
||
zt(".filter-modal").css("height", "85%"),
|
||
t.find("ul").length && i.position().top > t.find("ul").height() && t.find("ul").animate({
|
||
scrollTop: i.position().top - 50
|
||
}, "slow")
|
||
}
|
||
}
|
||
}
|
||
)),
|
||
zt(".filter-close").on("click", (function(e) {
|
||
zt(".navigation-bar, .booking-widget-wrapper").removeClass("force-to-bottom"),
|
||
zt(".filter-open").removeClass("filter-open"),
|
||
zt(".filter-modal").removeClass("filter-modal"),
|
||
zt("body").removeClass("modal-is-open"),
|
||
zt(e.currentTarget).next().trigger("focus")
|
||
}
|
||
)),
|
||
zt(".filter-pill-close").on("click keydown", (function(e) {
|
||
if ("keydown" != e.type || 13 == e.which) {
|
||
var t = zt(this).parent().text().trim();
|
||
zt(this).parents(".filter-container").find("[data-name='" + t + "']").trigger("click")
|
||
}
|
||
}
|
||
)),
|
||
zt(".filter-clear").on("click keydown", function(t) {
|
||
if ("keydown" != t.type || 13 == t.which) {
|
||
t.stopPropagation();
|
||
var a = e.amenities;
|
||
a.forEach((function(e) {
|
||
zt(".filter-amenity .filter-item[data-name-in-url='" + e + "']").removeClass("active")
|
||
}
|
||
)),
|
||
e.amenities = [],
|
||
e.updateFilteredHotelsList(),
|
||
e.updateHotelCount(),
|
||
e.updateFilterSelectionPills(".filter-amenity"),
|
||
e.updateBrowserURLAmenity(a),
|
||
e.toggleAmenityClearAll(),
|
||
e.updateFilterCounter(zt(".filter-amenity").parent()),
|
||
zt(".filter-amenity .filter-item").first().trigger("focus"),
|
||
i(),
|
||
n()
|
||
}
|
||
}
|
||
.bind(e));
|
||
var i = function(t) {
|
||
var i = e.filteredHotels.join(",")
|
||
, n = !1;
|
||
if (e.filteredHotels.forEach((function(e) {
|
||
qt("[data-hotel-id=" + e + "]").length || (n = !0)
|
||
}
|
||
)),
|
||
e.filteredHotels.length || qt("head meta[name=robots]").length ? qt("head meta[name=robots]").length && qt("head meta[name=robots]").remove() : qt("head").append("<meta name='robots' content='noindex, nofollow'>"),
|
||
$t.toggle(),
|
||
o(),
|
||
r(),
|
||
e.updateHeaderSection(),
|
||
!n)
|
||
return a(),
|
||
window.dispatchEvent(new CustomEvent("resize")),
|
||
void $t.toggle();
|
||
qt.ajax({
|
||
url: "/ajax/fetchhotels?ids=" + i,
|
||
success: function(e) {
|
||
qt(".speech-bubble--error").addClass("hidden"),
|
||
qt(".hotel-list").html(e),
|
||
window.dispatchEvent(new CustomEvent("resize")),
|
||
qt("select[name=sort-order]").trigger("change"),
|
||
wt();
|
||
var t = Ft(document.querySelectorAll(".hotel-list > a")).map((function(e) {
|
||
return {
|
||
id: JSON.parse(e.dataset.hotelId),
|
||
elem: e
|
||
}
|
||
}
|
||
));
|
||
s(t),
|
||
c(),
|
||
window.dispatchEvent(new CustomEvent("resize"))
|
||
},
|
||
error: function(e, t, i) {
|
||
qt(".hotel-list").html(""),
|
||
qt(".speech-bubble--error").removeClass("hidden")
|
||
},
|
||
complete: function() {
|
||
if (!t) {
|
||
var e = window.ScreenHelper.mediaMediumUp() ? 15 : 65;
|
||
qt("html, body").animate({
|
||
scrollTop: qt(".section-heading-wrapper").offset().top - e
|
||
}, 400)
|
||
}
|
||
$t.toggle()
|
||
}
|
||
})
|
||
}
|
||
, n = function() {
|
||
var e = document.querySelector(".filter-city.active a").href;
|
||
e && e == location.href ? (qt("#page-content").hide(),
|
||
qt("#page-content__loader").show(),
|
||
qt.ajax({
|
||
type: "POST",
|
||
url: e + "/getpagecontent",
|
||
success: function(e) {
|
||
e.toString().trim() ? qt("#page-content").html(e).show() : qt("#page-content").html("").hide(),
|
||
qt("#page-content__loader").hide()
|
||
},
|
||
error: function(e, t, i) {
|
||
qt("#page-content").html("").hide(),
|
||
qt("#page-content__loader").hide()
|
||
}
|
||
})) : qt("#page-content").html("").hide()
|
||
}
|
||
, a = function() {
|
||
Ft(document.querySelectorAll(".hotel-list > a")).forEach((function(t) {
|
||
-1 == e.filteredHotels.indexOf(parseInt(t.dataset.hotelId)) ? qt(t).addClass("hidden") : qt(t).removeClass("hidden")
|
||
}
|
||
));
|
||
var t = Ft(document.querySelectorAll(".hotel-list > a")).map((function(e) {
|
||
return {
|
||
id: JSON.parse(e.dataset.hotelId),
|
||
elem: e
|
||
}
|
||
}
|
||
)).filter((function(e) {
|
||
return !JSON.parse(e.elem.classList.contains("hidden") || "false")
|
||
}
|
||
));
|
||
s(t),
|
||
c();
|
||
var i = window.ScreenHelper.mediaMediumUp() ? 15 : 65;
|
||
qt("html, body").animate({
|
||
scrollTop: qt(".section-heading-wrapper").offset().top - i
|
||
}, 400)
|
||
}
|
||
, o = function() {
|
||
var t = e.filteredHotels.length
|
||
, i = qt("h2.section-heading");
|
||
qt(".hotels-count").text(t),
|
||
t > 1 ? (qt(i).find(".plural").show(),
|
||
qt(i).find(".singular").hide()) : (qt(i).find(".plural").hide(),
|
||
qt(i).find(".singular").show())
|
||
}
|
||
.bind(e)
|
||
, r = function() {
|
||
var t = e.destination ? 1 : 0;
|
||
t += e.amenities.length,
|
||
t += e.hotelType ? 1 : 0,
|
||
qt(".filters-added .filter__counter").text(t),
|
||
t < 2 ? (qt(".filters-added .filter__counter-label.singular").show(),
|
||
qt(".filters-added .filter__counter-label.plural").hide()) : (qt(".filters-added .filter__counter-label.singular").hide(),
|
||
qt(".filters-added .filter__counter-label.plural").show())
|
||
}
|
||
, s = function(e) {
|
||
var t = C();
|
||
if (t) {
|
||
t.getMarkers().forEach((function(e) {
|
||
return e.marker.setMap(null)
|
||
}
|
||
));
|
||
var i = e.map((function(e) {
|
||
return l(t, e.elem)
|
||
}
|
||
));
|
||
setTimeout((function() {
|
||
window.dispatchEvent(new CustomEvent("resize")),
|
||
t.scaleToFitMarkers(i)
|
||
}
|
||
), 0)
|
||
}
|
||
}
|
||
, l = function(e, t) {
|
||
var i = t.querySelector(".poi")
|
||
, n = t.querySelector(".distance");
|
||
return e.addMarker({
|
||
lat: t.dataset.lat,
|
||
long: t.dataset.long,
|
||
icon: t.dataset.category || "hotel-pin",
|
||
category: t.dataset.category,
|
||
name: t.dataset.name || (i ? i.innerHTML : void 0),
|
||
distance: n ? n.innerHTML : void 0,
|
||
link: t.dataset.href,
|
||
iconHighlight: t.dataset.categoryHighlight,
|
||
element: t,
|
||
infoWindowDetail: t.dataset.infoWindowShowDetail,
|
||
label: t.dataset.label
|
||
})
|
||
}
|
||
, c = function() {
|
||
var t = e.destination + "|" + e.hotelType + "|";
|
||
e.amenities.length && e.amenities.forEach((function(e, i) {
|
||
t = t + (i > 0 ? ":" : "") + e
|
||
}
|
||
));
|
||
var i = {
|
||
event: "seo_filters",
|
||
seo_filter_selection: t
|
||
};
|
||
void 0 !== window._satellite && window._satellite.track("seo_filter_action", i)
|
||
};
|
||
/iPad|iPhone/.test(navigator.userAgent) && (window.onpageshow = function(e) {
|
||
e.persisted && (qt(".map-opened").removeClass("map-opened"),
|
||
setTimeout((function() {
|
||
qt(document).trigger("close-fullscreen-map")
|
||
}
|
||
), 500))
|
||
}
|
||
),
|
||
i(!0),
|
||
n(),
|
||
window.onpopstate = function() {
|
||
setTimeout((function() {
|
||
e.parseUrl(),
|
||
qt(".map-opened").length && qt('[data-js="open-map"]').trigger("click"),
|
||
i(!0),
|
||
n()
|
||
}
|
||
), 200)
|
||
}
|
||
}
|
||
}(),
|
||
Wt(),
|
||
Gt(),
|
||
Xt(),
|
||
window.Scandic.hotelNavs = (r = [],
|
||
xt('*[data-js="hotel-menu-toggle"]').each((function(e, t) {
|
||
r.push(new Tt(t))
|
||
}
|
||
)),
|
||
r)
|
||
}
|
||
)),
|
||
window.Scandic.runOnWindowLoad.push((function() {
|
||
_()
|
||
}
|
||
)),
|
||
function() {
|
||
Number.prototype.formatNumberThousandDelimiter || (Number.prototype.formatNumberThousandDelimiter = function() {
|
||
var e = this.toString()
|
||
, t = e.indexOf(".");
|
||
return e.replace(/\d(?=(?:\d{3})+(?:\.|$))/g, (function(e, i) {
|
||
return t < 0 || i < t ? e + " " : e
|
||
}
|
||
))
|
||
}
|
||
),
|
||
Date.prototype.addDays || (Date.prototype.addDays = function(e) {
|
||
var t = new Date(this.valueOf());
|
||
return t.setDate(t.getDate() + e),
|
||
t
|
||
}
|
||
),
|
||
Element.prototype.matches || (Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector),
|
||
Element.prototype.closest || (Element.prototype.closest = function(e) {
|
||
var t = this;
|
||
if (!document.documentElement.contains(t))
|
||
return null;
|
||
do {
|
||
if (t.matches(e))
|
||
return t;
|
||
t = t.parentElement || t.parentNode
|
||
} while (null !== t && 1 === t.nodeType);
|
||
return null
|
||
}
|
||
),
|
||
window.supportsPassiveEventListeners = !1;
|
||
try {
|
||
var e = Object.defineProperty({}, "passive", {
|
||
get: function() {
|
||
window.supportsPassiveEventListeners = !0
|
||
}
|
||
});
|
||
window.addEventListener("testPassive", null, e),
|
||
window.removeEventListener("testPassive", null, e)
|
||
} catch (e) {}
|
||
}(),
|
||
document.addEventListener("DOMContentLoaded", (function() {
|
||
return Et()
|
||
}
|
||
));
|
||
var Kt = i(19755)
|
||
, Zt = i(19755);
|
||
function ei(e, t) {
|
||
return function(e) {
|
||
if (Array.isArray(e))
|
||
return e
|
||
}(e) || function(e, t) {
|
||
var i = null == e ? null : "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
|
||
if (null == i)
|
||
return;
|
||
var n, a, o = [], r = !0, s = !1;
|
||
try {
|
||
for (i = i.call(e); !(r = (n = i.next()).done) && (o.push(n.value),
|
||
!t || o.length !== t); r = !0)
|
||
;
|
||
} catch (e) {
|
||
s = !0,
|
||
a = e
|
||
} finally {
|
||
try {
|
||
r || null == i.return || i.return()
|
||
} finally {
|
||
if (s)
|
||
throw a
|
||
}
|
||
}
|
||
return o
|
||
}(e, t) || function(e, t) {
|
||
if (!e)
|
||
return;
|
||
if ("string" == typeof e)
|
||
return ti(e, t);
|
||
var i = Object.prototype.toString.call(e).slice(8, -1);
|
||
"Object" === i && e.constructor && (i = e.constructor.name);
|
||
if ("Map" === i || "Set" === i)
|
||
return Array.from(e);
|
||
if ("Arguments" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))
|
||
return ti(e, t)
|
||
}(e, t) || function() {
|
||
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
|
||
}()
|
||
}
|
||
function ti(e, t) {
|
||
(null == t || t > e.length) && (t = e.length);
|
||
for (var i = 0, n = new Array(t); i < t; i++)
|
||
n[i] = e[i];
|
||
return n
|
||
}
|
||
var ii = function() {
|
||
var e, t, i = 0, n = [], a = [];
|
||
if (Zt(".booking__selection.select-rate").length) {
|
||
var o = Zt(".booking__selection.select-rate");
|
||
t = o.data().termsDifferCondition.replace("\\", "")
|
||
}
|
||
document.querySelector(".booking-select-rate") && window.ScreenHelper.mediaMediumUp() && window.Scandic.runOnWindowLoad.push((function() {
|
||
document.querySelectorAll(".room__body--flex-ie-fix").forEach((function(e) {
|
||
e.insertAdjacentElement("afterEnd", e.closest(".room--booking").querySelector(".room__collapsible__row.room__facilities__container"))
|
||
}
|
||
))
|
||
}
|
||
));
|
||
var r = {
|
||
params: []
|
||
}
|
||
, s = {
|
||
index: null
|
||
}
|
||
, l = Zt(".room__rates__available-rates-holder.l-price-box__available-rates-holder");
|
||
function c() {
|
||
return n.length > 1
|
||
}
|
||
function d() {
|
||
setTimeout((function() {
|
||
return Zt("#rooms-and-rates-form").submit()
|
||
}
|
||
))
|
||
}
|
||
function u(e) {
|
||
return void 0 !== a[e]
|
||
}
|
||
function p() {
|
||
Zt('input[class="selected-room-details"]').remove(),
|
||
a.forEach((function(e) {
|
||
return Object.entries(e.params).forEach((function(e) {
|
||
var t = ei(e, 2)
|
||
, i = t[0]
|
||
, n = t[1];
|
||
n && null != n && "null" != n && Zt("#rooms-and-rates-form").append(Zt('<input class="selected-room-details" type="hidden" name="'.concat(i, '" value="').concat(n, '" autocomplete="off" />')))
|
||
}
|
||
))
|
||
}
|
||
))
|
||
}
|
||
l.length && (r.params = l.data().selectedRateParameters,
|
||
s.index = l.data().preSelectedIndex,
|
||
Zt(".rate-selectable__input").each((function(e, t) {
|
||
Zt(t).attr("value") == s.index && Zt(t).prop("checked", !0),
|
||
Zt(t).data("disabled") && Zt(t).prop("disabled", !0)
|
||
}
|
||
))),
|
||
Zt(".submit-partial-payment").on("click", (function(e) {
|
||
a[0] = r;
|
||
var t = Zt(e.target).parents(".room__rates-container");
|
||
Zt(t).length && Zt(t).find("input.rate-selectable__input").length && (r.params = Zt(t).find("input.rate-selectable__input:checked").data("rateParams")),
|
||
p(),
|
||
d()
|
||
}
|
||
)),
|
||
Zt(".room.room--booking.is-collapsed.collapsible-room, .booking__room__box").each((function(e, t) {
|
||
var i = Number(Zt(t).data().legNumber);
|
||
-1 === n.indexOf(i) && n.push(i),
|
||
c() && Zt(".booking-details-footer.booking-rooms-rates-footer").show()
|
||
}
|
||
)),
|
||
Zt(".room.room--ribbon.room--deemphasized.room--clickable").click((function() {
|
||
!function(e) {
|
||
Zt(e).find(".change-selection-button").hasClass("active") ? (Zt(e).find(".change-selection-button").removeClass("active").hide(),
|
||
Zt(e).find(".cancel-selection").addClass("active").show()) : Zt(e).find(".cancel-selection").hasClass("active") && (Zt(e).find(".change-selection-button").addClass("active").show(),
|
||
Zt(e).find(".cancel-selection").removeClass("active").hide())
|
||
}(this),
|
||
e = Zt(this).data().legNumber,
|
||
i = e,
|
||
Object.values(n).forEach((function(t) {
|
||
var i = Zt('div[data-leg-number="'.concat(t, '"]')).siblings(".room.room--booking.room--booking--multiroom.is-collapsed.room--deemphasized");
|
||
t == e ? i.toggle() : i.hide()
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
Zt(".room-price-info__btn.room-pay__btn").on("click", (function() {
|
||
var o = Zt(this).data().selectrate
|
||
, r = Zt(this).data().dtmAvailableRooms;
|
||
a[i] = o,
|
||
p(),
|
||
function(e) {
|
||
Zt("#room-ribbon-image-" + i).html(Zt("#room-media-" + e.roomDomId).html()),
|
||
a[i].roomTypeHeading = Zt("#room-heading-" + e.roomDomId).text(),
|
||
a[i].rateTooltipId = e.rateConditionsTooltip
|
||
}(o),
|
||
c() ? (function() {
|
||
var t = Zt('div[data-leg-number="'.concat(e, '"]'));
|
||
t.siblings(".room.room--booking.room--booking--multiroom.is-collapsed.room--deemphasized").toggle(),
|
||
t.find(".room__media.hidden-small.hidden-xsmall.hidden-xxsmall").show(),
|
||
t.find(".room-type").text(a[e].roomTypeHeading).show(),
|
||
t.find(".room-number").hide(),
|
||
t.find(".room-leg-number-label").show(),
|
||
t.find(".room-occupants-label").addClass("pipe-separated-list-item");
|
||
var i = t.find(".package-detail");
|
||
a[e].rate.price > 0 && (i.show(),
|
||
i.find(".rate-name").text(a[e].rate.rateName),
|
||
i.find(".price.price--inline").text(function(e) {
|
||
if (!a[e])
|
||
return "";
|
||
var t = a[e].rate
|
||
, i = "".concat(t.price, " ").concat(t.currency);
|
||
return t.numberOfBonusCheques > 0 ? "".concat(t.numberOfBonusCheques, " BC + ").concat(i) : i
|
||
}(e)));
|
||
i.find(".pipe-separated-list-item").show(),
|
||
t.find(".xyz").hide(),
|
||
t.find(".select-room-button").removeClass("active").hide(),
|
||
t.find(".cancel-selection").removeClass("active").hide(),
|
||
t.find(".change-selection-button").addClass("active").show()
|
||
}(),
|
||
function(e, t) {
|
||
var a = Number(t)
|
||
, o = e.rate.roomType;
|
||
if (window.Scandic.roomAvailableData["room" + i] === o)
|
||
return;
|
||
var r = document.querySelectorAll(".booking__room__box")
|
||
, s = e.roomTypeName.toLowerCase().replace(/[^a-z0-9]+/g, "_");
|
||
if (document.querySelector("input[name='singleAvailableRoom']"))
|
||
var l = document.querySelector("input[name='singleAvailableRoom']").value;
|
||
if (document.querySelector("input[name='pluralAvailableRooms']"))
|
||
var c = document.querySelector("input[name='pluralAvailableRooms']").value;
|
||
window.Scandic.roomAvailableData[o] || (window.Scandic.roomAvailableData[o] = a);
|
||
var d = window.Scandic.roomAvailableData["room" + i];
|
||
d && d != o && (window.Scandic.roomAvailableData[d] = window.Scandic.roomAvailableData[d] + 1);
|
||
window.Scandic.roomAvailableData["room" + i] = o;
|
||
var u = window.Scandic.roomAvailableData["room" + i + "_roomType"];
|
||
window.Scandic.roomAvailableData["room" + i + "_roomType"] = s,
|
||
window.Scandic.roomAvailableData[o] = window.Scandic.roomAvailableData[o] - 1,
|
||
n.forEach((function(e) {
|
||
var t = Zt(r[e]).find("#" + s + " .room-pay__btn");
|
||
if (s)
|
||
var i = r[e].querySelector("#" + s + " .room__available-rooms");
|
||
window.Scandic.roomAvailableData[o] >= 0 && i && (1 === window.Scandic.roomAvailableData[o] ? i.innerHTML = l.replace(/\d/g, window.Scandic.roomAvailableData[o]) : (i.innerHTML = c.replace(/\d/g, window.Scandic.roomAvailableData[o]),
|
||
0 === window.Scandic.roomAvailableData[o] && t.each((function(e) {
|
||
Zt(this).attr("disabled", "disabled")
|
||
}
|
||
))));
|
||
var n = Zt(r[e]).find("#" + u + " .room-pay__btn");
|
||
if (u)
|
||
var a = r[e].querySelector("#" + u + " .room__available-rooms");
|
||
d && d != o && a && (1 === window.Scandic.roomAvailableData[d] ? a.innerHTML = l.replace(/\d/g, window.Scandic.roomAvailableData[d]) : a.innerHTML = c.replace(/\d/g, window.Scandic.roomAvailableData[d]),
|
||
n.each((function(e) {
|
||
Zt(this).removeAttr("disabled")
|
||
}
|
||
)))
|
||
}
|
||
))
|
||
}(o, r),
|
||
n.every((function(e) {
|
||
return u(e)
|
||
}
|
||
)) ? (i = null,
|
||
function() {
|
||
Zt(".booking-price-details__container.label").hide();
|
||
var e, i, n = Zt(".booking-price-details__container.price-details");
|
||
n.show(),
|
||
a.reduce((function(e, t) {
|
||
return e + t.rate.price
|
||
}
|
||
), 0) > 0 && (n.find(".booking-price-details__item").show(),
|
||
n.find(".price.price--inline-large").html(function() {
|
||
var e = {
|
||
numberOfBonusCheques: 0,
|
||
price: 0,
|
||
currency: void 0
|
||
};
|
||
a.forEach((function(t) {
|
||
e.numberOfBonusCheques += t.rate.numberOfBonusCheques,
|
||
e.price += t.rate.price,
|
||
e.currency = e.currency || t.rate.currency
|
||
}
|
||
));
|
||
var t = "".concat(e.price, ' <span class="price__currency"> ').concat(e.currency, "</span>");
|
||
return e.numberOfBonusCheques > 0 ? "".concat(e.numberOfBonusCheques, ' <span class="price__currency">BC</span> <span class="price__plus">+</span> ').concat(t) : t
|
||
}())),
|
||
n.find("li:last").text((e = a.map((function(e) {
|
||
return e.rate.rateConditions
|
||
}
|
||
)),
|
||
(i = e).every((function(e) {
|
||
return e === i[0]
|
||
}
|
||
)) ? e[0] : t || "")),
|
||
Zt(".rooms-and-rates-form-submit").removeAttr("disabled")
|
||
}(),
|
||
Zt(window).width() < 950 ? Zt("body, html").animate({
|
||
scrollTop: Zt("#hotel_body").offset().top - 60
|
||
}, "slow") : Zt("body, html").animate({
|
||
scrollTop: Zt("#hotel_body").offset().top
|
||
}, "slow")) : function() {
|
||
i = function() {
|
||
var e = n.filter((function(e) {
|
||
return !u(e)
|
||
}
|
||
));
|
||
if (e.sort(),
|
||
i < Math.max.apply(this, e))
|
||
for (; e[0] < i; )
|
||
e.push(e.shift());
|
||
return e[0]
|
||
}();
|
||
var e = "#booking-leg-".concat(i);
|
||
Zt(e).siblings().find(".room.room--ribbon.room--deemphasized.room--clickable").click(),
|
||
setTimeout((function() {
|
||
return window.Scandic.ensureElementIsVisible(Zt(e))
|
||
}
|
||
))
|
||
}()) : d()
|
||
}
|
||
)),
|
||
window.Scandic.roomAvailableData = {},
|
||
Zt(".expand-rates-btn ~ .room-price-info").removeClass("ng-hide").hide(),
|
||
Zt(".expand-rates-btn.expandable-toggler--left-arrow--small").on("click", (function() {
|
||
Zt(this).toggleClass("is-expanded"),
|
||
Zt(this).nextAll(".room-price-info").toggle("fast")
|
||
}
|
||
))
|
||
};
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
navigator.userAgent.search("Chrome") >= 0 && Kt(".available-payment-icons #ApplePay").remove(),
|
||
-1 != navigator.userAgent.indexOf("Safari") && -1 == navigator.userAgent.indexOf("Chrome") && Kt(".available-payment-icons #GooglePay").remove(),
|
||
navigator.userAgent.match(/(\(iPod|\(iPhone|\(iPad)/) && Kt(".available-payment-icons #GooglePay").remove(),
|
||
navigator.userAgent.match(/Android/i) && Kt(".available-payment-icons #ApplePay").remove(),
|
||
document.querySelector(".payment-error") && Kt("html, body").animate({
|
||
scrollTop: Kt(".payment-error").offset().top - 200
|
||
}, 400),
|
||
Kt(".credit-card--saved").on("change", (function() {
|
||
Kt(".payment-options__item.selected").removeClass("selected"),
|
||
Kt(".credit-card--saved:checked").length && (Kt(".card-source__saved").prop("checked", !0),
|
||
Kt(this).parents(".payment-options__item").addClass("selected"))
|
||
}
|
||
)),
|
||
Kt(".card-source").on("change", (function() {
|
||
Kt(".payment-options__item.selected").removeClass("selected"),
|
||
Kt(".card-source__saved:checked").length < 1 && (Kt(".credit-card--saved:checked").prop("checked", !1),
|
||
Kt(this).parents(".payment-options__item").addClass("selected"))
|
||
}
|
||
)),
|
||
ii()
|
||
}
|
||
));
|
||
var ni = i(11440)
|
||
, ai = i.n(ni)
|
||
, oi = i(93748)
|
||
, ri = i(19755);
|
||
function si(e) {
|
||
var t = e.find("span")
|
||
, i = t.hasClass("is-collapsed")
|
||
, n = t.attr("data-text-alt")
|
||
, a = t.text();
|
||
t.text((function() {
|
||
return i ? (t.removeClass("is-collapsed"),
|
||
t.addClass("is-expanded")) : (t.removeClass("is-expanded"),
|
||
t.addClass("is-collapsed")),
|
||
t.attr("data-text-alt", a),
|
||
n
|
||
}
|
||
))
|
||
}
|
||
function li(e, t, i, n, a) {
|
||
return ri(t ? '<a href="#" aria-label="Toggle information about ' + a + '" class="' + e + '"><span class="is-collapsed" data-text-alt="' + i + '">' + n + "</span></a>" : '<a href="#" aria-label="Toggle information about ' + a + '" class="' + e + '"><span class="is-expanded" data-text-alt="' + n + '">' + i + "</span></a>")
|
||
}
|
||
var ci, di, ui, pi, mi, hi, fi, gi, vi, bi, yi, wi, Si = i(19755), _i = i(19755);
|
||
function Ci() {
|
||
(ci = Si('*[data-js="inquiry-widget"]')).length <= 0 || (di = ci.find('*[data-js="inquiry-widget-secondary-fields"]'),
|
||
hi = ci.find('*[data-js="inquiry-widget-meeting-room-field"]'),
|
||
ui = ci.find('*[data-js="inquiry-widget-submit"]'),
|
||
pi = Si.merge(ci.find('*[data-js="inquiry-widget-focus-listener"]'), ui),
|
||
Si.merge(ci.find('*[data-js="inquiry-widget-click-listener"]'), ui),
|
||
fi = ci.find('*[data-js="inquiry-widget-collapse"]'),
|
||
gi = ci.find('*[data-js="inquiry-widget-server-message"]'),
|
||
mi = Si('*[data-js="inquiry-widget-lead"]'),
|
||
vi = Si('*[data-js="widget-icon"]'),
|
||
bi = Si('*[data-is-open="inquiry-widget-open"]'),
|
||
yi = Si('*[data-js="check-availibility-link"]'),
|
||
wi = Si('*[data-js="check-availability-room-listing"]'))
|
||
}
|
||
function ki() {
|
||
Ci(),
|
||
Si(this).is(ui) && pi[0].focus(),
|
||
di.show(),
|
||
vi.hide(),
|
||
bi.hide(),
|
||
pi.off("focus", ki),
|
||
gi.hide(),
|
||
Si(".hotel-meetings-page")[0] && (0,
|
||
m.fe)()
|
||
}
|
||
function Ti() {
|
||
pi.on("focus", ki)
|
||
}
|
||
function xi() {
|
||
Ci(),
|
||
di.hide(),
|
||
vi.show(),
|
||
bi.show(),
|
||
Ti(),
|
||
yi.show()
|
||
}
|
||
function Ai() {
|
||
function e(e) {
|
||
gi.text(e).fadeIn()
|
||
}
|
||
Ci(),
|
||
Ti(),
|
||
fi.on("click", xi),
|
||
mi.on("click", (function(e) {
|
||
var t = Si(e.delegateTarget).data("roomid");
|
||
e.preventDefault(),
|
||
!ScreenHelper.mediaMediumUp() && Me().is(":visible") && function() {
|
||
var e = Me();
|
||
Oe(e.data("widgetarea"), e, Ie(this))
|
||
}(),
|
||
hi.val(t),
|
||
pi[0].focus()
|
||
}
|
||
)),
|
||
wi.on("click", (function() {
|
||
var e = Si(this).find('[data-js="roomName"]').attr("data-roomid");
|
||
(0,
|
||
m.LO)(e)
|
||
}
|
||
)),
|
||
ci.on("submitValidForm", (function(t) {
|
||
t.preventDefault(),
|
||
Si("#meetingRoomInquiryForm").valid() && (window.Scandic.DisableEnableButton.disable(ui),
|
||
Si.post(ci.attr("action"), ci.serialize(), (function(t) {
|
||
var i;
|
||
"success" === t.status && ((0,
|
||
m.$4)(),
|
||
ci[0].reset(),
|
||
Si("input[type='hidden']", Si(this)).val(""),
|
||
_i("span.clearable-input .clearable-input__clear").each((function(e) {
|
||
_i(this).hide()
|
||
}
|
||
)),
|
||
xi()),
|
||
i = t.message ? t.message + " " : "",
|
||
t.data && (i += t.data.join(". ") + "."),
|
||
e(i)
|
||
}
|
||
)).fail((function(t, i, n) {
|
||
e("Something went wrong: " + i + ". " + n)
|
||
}
|
||
)).always((function() {
|
||
window.Scandic.DisableEnableButton.enable(ui)
|
||
}
|
||
)))
|
||
}
|
||
)),
|
||
ci.on("submit", (function(e) {
|
||
e.preventDefault()
|
||
}
|
||
))
|
||
}
|
||
function Ii() {
|
||
var e = Si(".mp-cta");
|
||
if (e.length) {
|
||
var t, i, n = !0, a = !1, o = Si(".meeting-widget-container"), r = function() {
|
||
a || (t = Si(".meeting-widget-container").offset().top,
|
||
t = window.ScreenHelper.mediaMediumUp() ? t + 50 : t,
|
||
i = Si(".hotel-menu-wrapper__inner").length ? Si(".hotel-menu-wrapper__inner").offset().top : 0)
|
||
}, s = function() {
|
||
e.hasClass("active") && a && window.innerHeight < Si("#mp-booking-engine-iframe-container").height() ? setTimeout((function() {
|
||
Si(".meeting-widget-container").css("bottom", 0),
|
||
Si("body").addClass("force-to-top")
|
||
}
|
||
), 300) : (Si(".meeting-widget-container").css("bottom", "auto"),
|
||
Si("body").removeClass("force-to-top"))
|
||
}, l = function() {
|
||
var e = Si(".no-hero .meeting-widget-container").length
|
||
, r = e ? 51 : 60
|
||
, l = t - r - Si(window).scrollTop();
|
||
window.ScreenHelper.mediaMediumUp() ? Si(".l-section.main-header").removeAttr("style") : l < 0 ? (Si(".l-section.main-header").css("position", "absolute"),
|
||
Si(".l-section.main-header").css("top", t - (e ? 51 : 72) + "px")) : (Si(".l-section.main-header").css("position", "fixed"),
|
||
Si(".l-section.main-header").css("top", "0")),
|
||
Si("main.hotel-meetings-page").length ? function() {
|
||
var e = document.querySelector(".mp-cta");
|
||
if (i < Si(window).scrollTop() && !a) {
|
||
var t = document.querySelector(".navbar-header").childNodes
|
||
, n = t[t.length - 1];
|
||
document.querySelector(".navbar-header").insertBefore(e, n),
|
||
window.ScreenHelper.mediaMediumUp() || o.addClass("sticky"),
|
||
a = !0
|
||
} else
|
||
i >= Si(window).scrollTop() && a && (a = !1,
|
||
document.querySelector(".meeting-widget-container").insertBefore(e, document.querySelector(".mp-container")),
|
||
o.removeClass("sticky"))
|
||
}() : l < -r ? (a = !0,
|
||
o.addClass("sticky")) : (a = !1,
|
||
o.removeClass("sticky")),
|
||
s(),
|
||
n = !0
|
||
};
|
||
r(),
|
||
l(),
|
||
window.onresize = function() {
|
||
r(),
|
||
window.ScreenHelper.mediaMediumUp() && a ? o.removeClass("sticky") : a && o.addClass("sticky")
|
||
}
|
||
,
|
||
window.onscroll = function() {
|
||
n && (n = !1,
|
||
l())
|
||
}
|
||
,
|
||
Si(".mp-cta, [data-js=hotel-menu-toggle]").on("click", (function() {
|
||
s()
|
||
}
|
||
)),
|
||
Si(window).on("mp-widget-loaded", (function() {
|
||
document.querySelector(".meeting-widget-container h2").classList.remove("hidden"),
|
||
document.querySelector(".meeting-widget-container .loader").classList.add("hidden")
|
||
}
|
||
))
|
||
}
|
||
}
|
||
function Pi(e) {
|
||
return e && decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*" + encodeURIComponent(e).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=\\s*([^;]*).*$)|^.*$"), "$1")) || null
|
||
}
|
||
function Di(e, t, i, n, a, o) {
|
||
if (!e || /^(?:expires|max\-age|path|domain|secure)$/i.test(e))
|
||
return !1;
|
||
var r = "";
|
||
if (i)
|
||
switch (i.constructor) {
|
||
case Number:
|
||
r = i === 1 / 0 ? "; expires=Fri, 31 Dec 9999 23:59:59 GMT" : "; max-age=" + i;
|
||
break;
|
||
case String:
|
||
r = "; expires=" + i;
|
||
break;
|
||
case Date:
|
||
r = "; expires=" + i.toUTCString()
|
||
}
|
||
return document.cookie = encodeURIComponent(e) + "=" + encodeURIComponent(t) + r + (a ? "; domain=" + a : "") + (n ? "; path=" + n : "") + (o ? "; secure" : ""),
|
||
!0
|
||
}
|
||
function Oi(e, t, i) {
|
||
return !!function(e) {
|
||
if (!e)
|
||
return !1;
|
||
return new RegExp("(?:^|;\\s*)" + encodeURIComponent(e).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=").test(document.cookie)
|
||
}(e) && (document.cookie = encodeURIComponent(e) + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT" + (i ? "; domain=" + i : "") + (t ? "; path=" + t : ""),
|
||
!0)
|
||
}
|
||
var Ei, Mi = i(19755), Li = i(19755), Ni = (i(17970),
|
||
i(86455));
|
||
function Hi(e, t, i, n) {
|
||
[t.value, i.value, n.value].includes("") || Bi(t, i, n) ? (e.innerHTML = "",
|
||
Mi(e).parent("span").removeClass("field-validation-error"),
|
||
Mi(e).parent("span").addClass("field-validation-valid")) : (e.innerHTML = n.getAttribute("data-val-birthyearrangevalidation"),
|
||
Mi(e).parent("span").removeClass("field-validation-valid"),
|
||
Mi(e).parent("span").addClass("field-validation-error"))
|
||
}
|
||
function Bi(e, t, i) {
|
||
var n = new Date(i.value,t.value - 1,e.value);
|
||
return n.getMonth() == t.value - 1 && n.getDate() == e.value && n.getFullYear() == i.value
|
||
}
|
||
function ji(e, t, i, n) {
|
||
var a = Mi(".passWordFormat-error ." + t + " span.icon")
|
||
, o = Mi(".passWordFormat-error ." + t);
|
||
if (e && "notAllowedCharFormat" != t && i)
|
||
return a.removeClass("hidden"),
|
||
void ("input" == n ? (a.addClass("icon--checkmark-circle-green"),
|
||
o.addClass("valid"),
|
||
a.hasClass("icon--close-circle-red") && (a.removeClass("icon--close-circle-red"),
|
||
o.removeClass("invalid"))) : (a.addClass("icon--close-circle-red"),
|
||
o.addClass("invalid"),
|
||
a.hasClass("icon--checkmark-circle-green") && o.hasClass("valid") && (a.removeClass("icon--checkmark-circle-green"),
|
||
o.removeClass("valid")),
|
||
zi()));
|
||
null != t && "notAllowedCharFormat" != t && ("input" == n ? (a.hasClass("icon--checkmark-circle-green") && (document.querySelector(".create-password").classList.contains("invalid-input") ? (a.removeClass("icon--checkmark-circle-green"),
|
||
a.addClass("icon--close-circle-red"),
|
||
o.addClass("invalid"),
|
||
a.removeClass("hidden")) : (a.addClass("hidden"),
|
||
a.removeClass("icon--checkmark-circle-green"))),
|
||
o.hasClass("valid") && o.removeClass("valid")) : zi()),
|
||
e && "notAllowedCharFormat" == t && i ? (Mi(".input-invalid-format-error").removeClass("hidden"),
|
||
Mi(".create-password").addClass("input-invalid-error")) : document.querySelector(".create-password").classList.contains("input-invalid-error") && (Mi(".input-invalid-format-error").addClass("hidden"),
|
||
Mi(".create-password").removeClass("input-invalid-error")),
|
||
null != e && null != t || (Mi(".passWordFormat-error span.icon").addClass("hidden"),
|
||
Mi(".passWordFormat-error span.icon").removeClass("icon--checkmark-circle-green"),
|
||
Mi(".passWordFormat-error span.icon").removeClass("icon--close-circle-red"),
|
||
Mi(".passWordFormat-error span").removeClass("valid"),
|
||
Mi(".passWordFormat-error span").removeClass("invalid"),
|
||
Mi(".input-invalid-format-error").addClass("hidden"),
|
||
Mi(".create-password").removeClass("invalid-input"))
|
||
}
|
||
function zi() {
|
||
document.querySelector(".passWordFormat-error .invalid") ? Mi(".create-password").addClass("invalid-input") : Mi(".create-password").removeClass("invalid-input")
|
||
}
|
||
function qi(e) {
|
||
var t = setInterval((function() {
|
||
Mi(window).width() < 950 ? Mi("body, html").animate({
|
||
scrollTop: Mi(e).offset().top - 70
|
||
}, "slow") : Mi("body, html").animate({
|
||
scrollTop: Mi(e).offset().top - 10
|
||
}, "slow"),
|
||
clearInterval(t)
|
||
}
|
||
), "slow")
|
||
}
|
||
document.documentElement.classList.remove("no-js"),
|
||
document.documentElement.classList.add("js"),
|
||
window.Scandic.ltie9 = document.documentElement.classList.contains("ltie9"),
|
||
window.Scandic.validation = i(54648),
|
||
window.Scandic.addPaymentClickEvent = m.W5,
|
||
window.ScreenHelper = {
|
||
LARGE_SCREEN_BREAKPOINT: 768,
|
||
CSS_SMALL_BREAKPOINT: 740,
|
||
CSS_MEDIUM_BREAKPOINT: 950,
|
||
CSS_LARGE_BREAKPOINT: 1200,
|
||
CSS_XLARGE_BREAKPOINT: 1500,
|
||
isLargeScreen: function() {
|
||
return Mi(window).innerWidth() >= ScreenHelper.LARGE_SCREEN_BREAKPOINT
|
||
},
|
||
mediaSmallUp: function() {
|
||
return Mi(window).innerWidth() >= ScreenHelper.CSS_SMALL_BREAKPOINT
|
||
},
|
||
mediaMediumUp: function() {
|
||
return Mi(window).innerWidth() >= ScreenHelper.CSS_MEDIUM_BREAKPOINT
|
||
},
|
||
mediaLargeUp: function() {
|
||
return Mi(window).innerWidth() >= ScreenHelper.CSS_LARGE_BREAKPOINT
|
||
}
|
||
},
|
||
Li.fn.doOnce = function(e) {
|
||
return this.length && e.apply(this),
|
||
this
|
||
}
|
||
,
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
var e;
|
||
ai()(),
|
||
Mi("html.no-svg").length > 0 && (e = Mi('*[data-js="scandiclogoimg"]')).attr("src", e.attr("data-nosvgsrc"))
|
||
}
|
||
)),
|
||
window.Scandic.ensureElementIsVisible = function(e) {
|
||
var t = Mi(e);
|
||
if (Ei = Mi(".navigation-bar").height() + 10,
|
||
function(e) {
|
||
var t = {
|
||
top: Mi(window).scrollTop() + Ei,
|
||
bottom: Mi(window).scrollTop() + Mi(window).height()
|
||
}
|
||
, i = {
|
||
top: e.offset().top,
|
||
bottom: e.offset().top + e.height()
|
||
};
|
||
return i.top < t.top || i.top > t.bottom
|
||
}(t)) {
|
||
var i = Math.round(t.offset().top - Ei);
|
||
Mi("html, body").animate({
|
||
scrollTop: i
|
||
}, 500)
|
||
}
|
||
}
|
||
,
|
||
window.Scandic.DisableEnableButton = {
|
||
disable: function(e) {
|
||
e.attr("disabled", "disabled").append(Mi('<span class="loader loader--right"><span></span><span></span><span></span></span>'))
|
||
},
|
||
enable: function(e) {
|
||
e.removeAttr("disabled").find(".loader").remove()
|
||
}
|
||
},
|
||
window.Scandic.isEditOrPreviewMode = Mi("[data-js-edit-mode]").data("js-edit-mode"),
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
var e, t = Mi('form[data-js-form="form-with-progress"]');
|
||
var i = document.getElementById("ProfileInfo_Day") || document.getElementById("BookingModule_Rooms_0__CustomerEnterDetails_JoinSFInBookingFlow_BirthDay")
|
||
, n = document.getElementById("ProfileInfo_Month") || document.getElementById("BookingModule_Rooms_0__CustomerEnterDetails_JoinSFInBookingFlow_BirthMonth")
|
||
, a = document.getElementById("ProfileInfo_Year") || document.getElementById("BookingModule_Rooms_0__CustomerEnterDetails_JoinSFInBookingFlow_BirthYear");
|
||
if (i && n && a) {
|
||
var o = document.querySelector("#ProfileInfo_Birthdate-error") || document.querySelector("#BookingModule_Rooms_0__CustomerEnterDetails_JoinSFInBookingFlow_Birthdate-error");
|
||
Mi(i).change((function(e) {
|
||
Hi(o, i, n, a)
|
||
}
|
||
)),
|
||
Mi(n).change((function(e) {
|
||
Hi(o, i, n, a)
|
||
}
|
||
)),
|
||
Mi(a).change((function(e) {
|
||
Hi(o, i, n, a)
|
||
}
|
||
))
|
||
}
|
||
if (t.length) {
|
||
var r = "";
|
||
if ((e = t.find("button[data-js=form-submit-button]")).on("click", (function(e) {
|
||
r = "submit"
|
||
}
|
||
)),
|
||
Mi && Mi.validator && (Li.validator.addMethod("mustbetrue", (function(e, t) {
|
||
return t.checked
|
||
}
|
||
)),
|
||
Li.validator.unobtrusive.adapters.addBool("mustbetrue"),
|
||
Li.validator.addMethod("mustbefuture", (function(e, t) {
|
||
var i = new Date
|
||
, n = i.getMonth() + 1;
|
||
return e > i.getFullYear() || parseInt(e) === i.getFullYear() && Mi(t).parents(".input-group").find("[data-js=expiration-month]").val() >= n
|
||
}
|
||
)),
|
||
Li.validator.unobtrusive.adapters.add("mustbefuture", {}, (function(e) {
|
||
e.rules.mustbefuture = !0,
|
||
e.messages.mustbefuture = e.message
|
||
}
|
||
)),
|
||
Li("*[data-update-password]").each((function() {
|
||
var e = Li(this);
|
||
Li(e.data("update-password")).change((function() {
|
||
e.valid()
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
Li.validator.addMethod("updatepassword", (function(e, t) {
|
||
var i = Li(t)
|
||
, n = Li(i.data("update-password"));
|
||
return void 0 === n || !n.length || !n.val().length || 0 !== i.val().length
|
||
}
|
||
)),
|
||
Li.validator.unobtrusive.adapters.add("updatepassword", {}, (function(e) {
|
||
e.rules.updatepassword = !0,
|
||
e.messages.updatepassword = e.message
|
||
}
|
||
)),
|
||
Mi(t).removeData("validator").removeData("unobtrusiveValidation"),
|
||
Mi.validator.unobtrusive.parse(t),
|
||
t.data && void 0 !== t.data("validator")))
|
||
return void (t.data("validator").settings.submitHandler = function(o) {
|
||
if (o.classList.contains("ng-invalid"))
|
||
return Mi("form .ng-invalid").focus(),
|
||
!1;
|
||
if (i && i.value && n && n.value && a && a.value && (Hi(document.querySelector("#ProfileInfo_Birthdate-error"), i, n, a),
|
||
!Bi(i, n, a))) {
|
||
var s = document.querySelectorAll(".input-birthday");
|
||
return Mi("body, html").animate({
|
||
scrollTop: Mi(s).offset().top - 250
|
||
}, "slow"),
|
||
!1
|
||
}
|
||
return document.querySelector(".create-password") && (document.querySelector(".create-password").classList.contains("invalid-input") || document.querySelector(".create-password").classList.contains("input-invalid-error")) ? (Mi(".create-password").focus(),
|
||
!1) : ("submit" === r && window.Scandic.DisableEnableButton.disable(e),
|
||
!0 !== t.data("ajax-post") && void o.submit())
|
||
}
|
||
);
|
||
t.on("submit", (function() {
|
||
(function(e) {
|
||
return null !== e.attr("data-angular-validation")
|
||
}
|
||
)(t) || window.Scandic.DisableEnableButton.disable(e)
|
||
}
|
||
)),
|
||
t.on("submitValidForm", (function() {
|
||
window.Scandic.DisableEnableButton.disable(e)
|
||
}
|
||
))
|
||
}
|
||
}
|
||
)),
|
||
window.Scandic.runOnWindowLoad.push((function() {
|
||
var e = document.querySelector("form[name=savecreditcard] button");
|
||
e && e.addEventListener("click", (function(t) {
|
||
t.preventDefault(),
|
||
window.Scandic.DisableEnableButton.disable(Mi(e));
|
||
var i = {
|
||
method: "POST",
|
||
body: new FormData(document.querySelector("form[name=savecreditcard]")),
|
||
headers: new Headers
|
||
};
|
||
document.querySelector(".save-credit-card__error").classList.add("hidden"),
|
||
fetch("/ajax/bookingconfirmation/savecreditcard", i).then((function(e) {
|
||
return e.json()
|
||
}
|
||
)).then((function(t) {
|
||
t && t.Success ? (document.querySelector(".save-credit-card__success").classList.remove("hidden"),
|
||
document.querySelector(".save-credit-card__form").classList.add("hidden"),
|
||
window.Scandic.DisableEnableButton.enable(Mi(e))) : (Mi("html, body").animate({
|
||
scrollTop: 0
|
||
}, 500),
|
||
document.querySelector(".save-credit-card__form").classList.add("hidden"),
|
||
document.querySelector(".save-credit-card__error").classList.remove("hidden")),
|
||
(0,
|
||
m.ay)("credit_card_action", {
|
||
event: "credit_card_action",
|
||
credit_card_actions: "save_card",
|
||
card_action_status: t && t.Success ? "yes" : "no"
|
||
})
|
||
}
|
||
))
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
window.Scandic.runOnWindowLoad.push((function() {
|
||
Mi(".custom-radio.credit-card--saved").last().keydown((function(e) {
|
||
40 === e.keyCode && (e.preventDefault(),
|
||
Mi("#card-payment").focus(),
|
||
Mi("#card-payment").click())
|
||
}
|
||
)),
|
||
Mi(".custom-radio.credit-card--saved").first().keydown((function(e) {
|
||
38 === e.keyCode && (e.preventDefault(),
|
||
Mi("#other-payment").focus(),
|
||
Mi("#other-payment").click())
|
||
}
|
||
)),
|
||
Mi("#card-payment").keydown((function(e) {
|
||
38 === e.keyCode && (e.preventDefault(),
|
||
Mi(".custom-radio.credit-card--saved").last().focus(),
|
||
Mi(".custom-radio.credit-card--saved").last().click())
|
||
}
|
||
)),
|
||
Mi("#other-payment").keydown((function(e) {
|
||
40 === e.keyCode && (e.preventDefault(),
|
||
Mi(document.querySelector(".custom-radio.credit-card--saved")).focus(),
|
||
Mi(document.querySelector(".custom-radio.credit-card--saved")).click())
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
window.Scandic.runOnWindowLoad.push((function() {
|
||
Mi('*[data-js="clear-validation"]').on("submit", (function() {
|
||
Mi(this).find('*[data-js="submit-status"]').hide()
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
function e(e) {
|
||
var t = Mi(e).closest("[data-js=expandable]")
|
||
, i = t.find("[data-js-expandable=toggle]").first()
|
||
, n = t.find("[data-js-expandable-toggle-all]").first()
|
||
, a = t.find("[data-js-expandable=body]").first()
|
||
, o = t.find("[data-js-expandable=icon]").first()
|
||
, r = t.find("[data-js-expandable-text]").first()
|
||
, s = t.find("[data-js-expandable-alt-text]").first()
|
||
, l = t.find("[data-js-add-expandable-icon]").first();
|
||
a.toggle(),
|
||
o.toggleClass("expandable__toggled-icon"),
|
||
i.toggleClass("is-expanded"),
|
||
n.length > 0 && (n.toggleClass("is-expanded"),
|
||
si(n)),
|
||
l.length > 0 ? si(i) : (r.toggleClass("hidden"),
|
||
s.toggleClass("hidden"))
|
||
}
|
||
Mi(document).find("[data-js=expandable].is-expanded").each((function(t, i) {
|
||
e(i)
|
||
}
|
||
)),
|
||
Mi(document).on("click", "[data-js=expandable] [data-js-expandable=toggle]", (function(t) {
|
||
e(this),
|
||
t.preventDefault()
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
var e, t = Mi('div[data-js="collapsible-room"]');
|
||
function i(e) {
|
||
if (e) {
|
||
var t = Mi("#" + e);
|
||
t.length <= 0 || (t.removeClass("is-collapsed"),
|
||
setTimeout((function() {
|
||
Mi("html, body").animate({
|
||
scrollTop: t.offset().top
|
||
}, 500),
|
||
setTimeout((function() {
|
||
window.dispatchEvent(new CustomEvent("resize"))
|
||
}
|
||
), 700)
|
||
}
|
||
), 1e3))
|
||
}
|
||
}
|
||
function n(e) {
|
||
var t = e.find(".room__facilities__container");
|
||
if (e.hasClass("is-collapsed"))
|
||
t.css("height", 0);
|
||
else {
|
||
var i = t.find(".room__body__main").outerHeight();
|
||
t.css("height", i)
|
||
}
|
||
}
|
||
function a(e) {
|
||
e.each((function() {
|
||
!function(e) {
|
||
if (e.hasClass("is-collapsed")) {
|
||
var t = e.find('*[data-js-child="room-prices-availability"]').outerHeight(!0);
|
||
if (t) {
|
||
var i = e.find('*[data-js-child="room-focus"]').outerHeight(!0) + t;
|
||
e.find('*[data-js-child="room-body"]').css({
|
||
"min-height": i + "px"
|
||
})
|
||
}
|
||
}
|
||
}(Mi(this))
|
||
}
|
||
))
|
||
}
|
||
function o(e) {
|
||
var t = Mi(e.delegateTarget).closest(".room");
|
||
e.preventDefault(),
|
||
r(t, !0),
|
||
lazySizes.autoSizer.checkElems(),
|
||
t.find(".rsThumb.rsNavSelected").length && t[0].querySelector(".rsThumb.rsNavSelected img").focus()
|
||
}
|
||
function r(e, t) {
|
||
n(e);
|
||
var i = e.offset().top;
|
||
e.find("[data-js-room-toggle]").toggleClass("is-expanded", e.hasClass("is-collapsed")),
|
||
e.hasClass("is-collapsed") ? (e.removeClass("is-collapsed"),
|
||
i = ScreenHelper.mediaMediumUp() ? i : window.scrollY,
|
||
e.trigger("show")) : e.addClass("is-collapsed"),
|
||
si(e.data("toggler")),
|
||
t && Mi("html, body").animate({
|
||
scrollTop: i
|
||
}, 250, (function() {
|
||
e.hasClass("is-collapsed") || e.find(".room__facilities__container").css({
|
||
height: ""
|
||
})
|
||
}
|
||
)),
|
||
n(e)
|
||
}
|
||
t.length <= 0 || (!function(e) {
|
||
e.each((function() {
|
||
var e = Mi(this)
|
||
, t = li("room__footer", e.hasClass("is-collapsed"), e.attr("data-text-collapse"), e.attr("data-text-expand"), e.attr("data-text-section-name"));
|
||
t.on("click", o),
|
||
t.on("click", (function() {
|
||
!function(e) {
|
||
e.find(".expand-rates__info").toggle()
|
||
}(e),
|
||
0 !== Mi(this).find(".is-expanded").length ? function(e) {
|
||
e.find(".expand-rates-btn:not(.is-expanded)").click()
|
||
}(e) : function(e) {
|
||
e.find(".expand-rates-btn.is-expanded").click()
|
||
}(e)
|
||
}
|
||
)),
|
||
e.on("click", "[data-js-room-toggle]", o),
|
||
e.on("show", (function() {
|
||
!function(e) {
|
||
e.find(".royalSlider").find("img").one("load", (function() {
|
||
Mi(window).trigger("resize")
|
||
}
|
||
))
|
||
}(e)
|
||
}
|
||
)),
|
||
e.append(t),
|
||
e.data("toggler", t)
|
||
}
|
||
))
|
||
}(t),
|
||
function(e) {
|
||
e.each((function() {
|
||
var e = Mi(this)
|
||
, t = window.location.hash.slice(1);
|
||
e.attr("id") !== t && function(e, t) {
|
||
e.hasClass("is-collapsed") || r(e, t)
|
||
}(e)
|
||
}
|
||
))
|
||
}(t),
|
||
Mi(".hotel-page")[0] && (a(t),
|
||
Mi(window).on("resize", (function() {
|
||
e || (e = setTimeout((function() {
|
||
e = null,
|
||
a(t)
|
||
}
|
||
), 66))
|
||
}
|
||
))),
|
||
window.location.hash.length && i(window.location.hash.slice(1)),
|
||
Mi(window).bind("hashchange", (function() {
|
||
i(window.location.hash.slice(1))
|
||
}
|
||
)),
|
||
Mi(window).on("load", (function() {
|
||
Mi(".collapsible-room").length <= 0 || window.location.hash.length && i(window.location.hash.slice(1))
|
||
}
|
||
)))
|
||
}
|
||
)),
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
var e = "is-collapsed";
|
||
Mi(document).on("click", "[data-js-collapsible-ribbon-toggle]", (function(e) {
|
||
var t = Mi(e.target).closest("[data-js-collapsible-ribbon-toggle]");
|
||
e.preventDefault(),
|
||
t.toggleClass("is-collapsed"),
|
||
t.closest("[data-js-collapsible-ribbon]").toggleClass("is-collapsed").trigger("data-js-collapsible-ribbon-state-change")
|
||
}
|
||
)),
|
||
Mi("[data-js-collapsible-ribbon]").on("data-js-expandable-module-state-change", (function() {
|
||
var t, i = Mi(this);
|
||
0 !== i.find("[data-js-collapsible-ribbon-toggle]").length && (t = i.hasClass(e),
|
||
i.find("[data-js-collapsible-ribbon-toggle]").each((function() {
|
||
t ? Mi(this).addClass(e) : Mi(this).removeClass(e)
|
||
}
|
||
)))
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
var e = Mi('*[data-js="collapsible-meeting-room-teaser"]');
|
||
function t(e) {
|
||
var t = Mi(e.delegateTarget)
|
||
, i = t.prev();
|
||
e.preventDefault(),
|
||
i.slideToggle(),
|
||
si(t)
|
||
}
|
||
e.length <= 0 || e.each((function() {
|
||
var e = Mi(this)
|
||
, i = li("meeting-room-teaser__footer", e.hasClass("is-collapsed"), e.attr("data-text-collapse"), e.attr("data-text-expand"), e.attr("data-text-section-name"));
|
||
i.on("click", t),
|
||
e.after(i)
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
Mi('[data-js-toggle="hotel-facts"]').on("click", (function(e) {
|
||
var t = Mi('[data-js-toggle="hotel-facts"]')
|
||
, i = Mi('[data-js-collapsible="hotel-facts"]');
|
||
e.preventDefault(),
|
||
i.slideToggle(),
|
||
si(t)
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
var e = function(e, t) {
|
||
var i;
|
||
return function() {
|
||
return e && (i = e.apply(t || this, arguments),
|
||
e = null),
|
||
i
|
||
}
|
||
}((function() {
|
||
eqjs.query()
|
||
}
|
||
))
|
||
, t = Mi('[data-js-collapsible="hotel-content"]')
|
||
, i = Mi('[data-js-toggle="hotel-content"]');
|
||
0 !== Mi.trim(t.text()).length ? i.on("click", (function(i) {
|
||
var n = Mi(i.delegateTarget);
|
||
i.preventDefault(),
|
||
r(n),
|
||
t.slideToggle("slow", (function() {
|
||
e()
|
||
}
|
||
)),
|
||
Mi('[data-js-toggle="hotel-content"]').each((function() {
|
||
var e = Mi(this);
|
||
n !== e && si(e)
|
||
}
|
||
))
|
||
}
|
||
)) : i.remove()
|
||
}
|
||
)),
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
Mi('*[data-js="collapsible-list"]').each((function() {
|
||
var e, t, i = Mi(this);
|
||
i.find("li").length <= 7 || ((e = i.addClass("collapsible-list").clone().addClass("collapsible-list--partial").attr("data-js", "").insertAfter(i)).hide(),
|
||
e.find("li").filter((function(e) {
|
||
return e < 5
|
||
}
|
||
)).remove(),
|
||
i.find("li").filter((function(e) {
|
||
return e >= 5
|
||
}
|
||
)).addClass("collapsible-list__item--hidden"),
|
||
(t = Mi('<a class="collapsible-list-toggler" href="#">...</a>')).click((function(t) {
|
||
t.preventDefault(),
|
||
e.slideToggle()
|
||
}
|
||
)),
|
||
e.after(t))
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
Mi(".inquiry-widget")[0] ? Ai() : Mi(".mp-cta").length && Ii()
|
||
}
|
||
)),
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
Mi("#book-a-new-stay-btn").on("click", (function(e) {
|
||
if (e.preventDefault(),
|
||
(0,
|
||
m.ay)("bookANewStayButtonClicked"),
|
||
window.sessionStorage.getItem("searchData")) {
|
||
var t = JSON.parse(window.sessionStorage.getItem("searchData"));
|
||
window.sessionStorage.setItem("searchData", JSON.stringify(t))
|
||
}
|
||
window.open(Mi(e.currentTarget).data("url"), "_blank")
|
||
}
|
||
)),
|
||
Mi(".click_prices_availability").on("click", (function(e) {
|
||
e.preventDefault(),
|
||
(0,
|
||
m.ay)("click_prices_availability"),
|
||
window.location.href = Mi(this).attr("href")
|
||
}
|
||
)),
|
||
window.onload = function() {
|
||
if (Mi("#booking-summary").hasClass("booking-is-cancelled")) {
|
||
(0,
|
||
m.ay)("bookingCancellationEvent", {
|
||
cancellation: !0
|
||
})
|
||
}
|
||
}
|
||
}
|
||
)),
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
var e = Mi('*[data-js="elevator-pitch-expander"]')
|
||
, t = Mi('*[data-js="' + e.attr("data-target") + '"]')
|
||
, i = Mi(e.attr("data-collapser"));
|
||
e.click((function(e) {
|
||
e.preventDefault(),
|
||
t.toggleClass("is-elevator-pitch-expanded")
|
||
}
|
||
)),
|
||
i.click((function(e) {
|
||
e.preventDefault(),
|
||
t.toggleClass("is-elevator-pitch-expanded")
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
Mi("*[data-href]").on("click", (function(e) {
|
||
e.preventDefault(),
|
||
window.location = Mi(this).data("href")
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
window.Scandic.runOnWindowLoad.push((function() {
|
||
var e, t = "media-container--1x1", i = Mi("[data-match-height]");
|
||
Mi.fn.matchHeight._beforeUpdate = function() {
|
||
if (!e)
|
||
return !1;
|
||
e.addClass(t).css("height", ""),
|
||
e.closest(".content-teaser__media").css("height", ""),
|
||
e.find(".media-container__media").css({
|
||
height: "",
|
||
width: "",
|
||
left: "",
|
||
"max-width": ""
|
||
})
|
||
}
|
||
,
|
||
Mi.fn.matchHeight._afterUpdate = function() {
|
||
if (!e)
|
||
return !1;
|
||
e.each((function() {
|
||
var e = Mi(this)
|
||
, i = Mi(this).closest(".content-teaser")
|
||
, n = i.width() / i.height()
|
||
, a = i.find(".content-teaser__media")
|
||
, o = i.find(".media-container__media")
|
||
, r = i.height() * o.width() / o.height();
|
||
n < 1 && (e.outerHeight(i.height()),
|
||
a.height(i.height()),
|
||
o.css({
|
||
width: r,
|
||
height: i.height(),
|
||
left: -(r - i.width()) / 2,
|
||
"max-width": "none"
|
||
}),
|
||
e.removeClass(t))
|
||
}
|
||
))
|
||
}
|
||
,
|
||
i.matchHeight({
|
||
property: "min-height"
|
||
}),
|
||
e = Mi('[data-match-height="content-teaser"]').find(".media-container--1x1")
|
||
}
|
||
)),
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
var e, t, i, n, a, o;
|
||
function r() {
|
||
var e, o = t.height(), r = i.height();
|
||
a ? (e = parseInt(n.closest(".l-section__inner").css("padding-top"), 10),
|
||
n.css("min-height", o - r - e)) : i.css("min-height", o)
|
||
}
|
||
if (e = Mi("*[data-js=big-sidebar]")) {
|
||
if (e.length <= 0)
|
||
return;
|
||
t = e.find("*[data-js=big-sidebar-sidebar]"),
|
||
i = e.find("*[data-js=big-sidebar-main-first]"),
|
||
n = e.find("*[data-js=big-sidebar-main-second]"),
|
||
a = n.length > 0,
|
||
r(),
|
||
o = !1,
|
||
Mi(window).on("resize", window._.debounce && window._.debounce((function() {
|
||
o = !0
|
||
}
|
||
), 500)),
|
||
setInterval((function() {
|
||
o && (r(),
|
||
o = !1)
|
||
}
|
||
), 500)
|
||
}
|
||
window.Scandic.runOnWindowLoad.push((function() {
|
||
e && 0 !== e.length && r()
|
||
}
|
||
)),
|
||
window.Scandic.OneSidebarPageLayout = {
|
||
adjustHeight: r
|
||
}
|
||
}
|
||
)),
|
||
Mi(document).on("focus", "[data-js-select-all-on-focus]", (function() {
|
||
this.setSelectionRange(0, this.value.length)
|
||
}
|
||
)),
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
Mi("a[data-js-past-stays-showall]").on("click", (function(e) {
|
||
var t = Mi("li[data-js-past-stays-item]");
|
||
e.preventDefault(),
|
||
si(Mi(e.delegateTarget)),
|
||
t.slideToggle(),
|
||
eqjs.query(t.find(".hotel-teaser"))
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
var e, t, i, n, a, o = Mi("ul[data-js-rooms-list]");
|
||
o.length <= 0 || (e = Mi('<a href="#more-l-rooms" class="content-toggler content-toggler--rooms"><span class="is-collapsed"></span></a>'),
|
||
t = Mi('<ul class="l-rooms" data-js="l-rooms__hide" id="more-l-rooms"></ul>'),
|
||
o.children("li").length > 4 && (i = o.children("li").slice(4).clone().end().remove(),
|
||
n = o.data("text-showmore"),
|
||
a = o.data("text-showless"),
|
||
t = i.wrapAll(t).parent().hide().insertAfter(o),
|
||
e.find("span").text(n),
|
||
e.insertAfter(t).on("click", (function(e) {
|
||
e.preventDefault(),
|
||
Mi(this).find("span").toggleClass("is-expanded").text(Mi(this).find("span").hasClass("is-expanded") ? a : n),
|
||
t.slideToggle()
|
||
}
|
||
))))
|
||
}
|
||
)),
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
var e = Mi('*[data-js="content-nav-toggle"]')
|
||
, t = Mi('*[data-js="' + e.attr("data-target") + '"]');
|
||
e.click((function() {
|
||
t.slideToggle(),
|
||
e.hasClass("active") ? e.removeClass("active") : e.addClass("active")
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
var e = function(e, t, i, n, a, o) {
|
||
var r = ScreenHelper.mediaMediumUp() ? 0 : o.height()
|
||
, s = o.find(".navigation-bar__main__expander").hasClass("is-expanded") || o.find('[data-js="mainnav-widget-toggle"]').hasClass("active")
|
||
, l = e.find(".hotel-menu-wrapper__inner");
|
||
t - r - Mi(window).scrollTop() < 0 && !Mi(".mp-cta").length ? ScreenHelper.mediaMediumUp() || s || o.addClass("locked").css("top", t - r) : ScreenHelper.mediaMediumUp() || o.removeClass("locked").css("top", ""),
|
||
t + 0 - Mi(window).scrollTop() < 0 && !e.hasClass("has-open-widget") ? e.hasClass("sticky") || (e.addClass("sticky"),
|
||
n.addClass("sticky"),
|
||
Mi(".mp-cta").hasClass("active") && !window.ScreenHelper.mediaMediumUp() ? (e.addClass("is-animated"),
|
||
l.addClass("is-animated"),
|
||
n.addClass("sticky is-animated")) : (setTimeout((function() {
|
||
e.addClass("sticky is-animated"),
|
||
l.addClass("is-animated")
|
||
}
|
||
), 200),
|
||
setTimeout((function() {
|
||
n.addClass("sticky is-animated")
|
||
}
|
||
), 500))) : (e.removeClass("sticky"),
|
||
n.removeClass("sticky"),
|
||
l.hasClass("is-animated") && e.hasClass("is-animated") && e.hasClass("is-animated") && (e.removeClass("is-animated"),
|
||
l.removeClass("is-animated"),
|
||
n.removeClass("is-animated")))
|
||
}
|
||
, t = Mi("*[data-js=sub-nav]");
|
||
if (t.length) {
|
||
var i = Mi("*[data-js=sub-nav-inner]")
|
||
, n = (i.length ? i.outerHeight() : t.outerHeight(),
|
||
Mi("*[data-js=sub-nav-title]"))
|
||
, a = (n.length && n.outerHeight(),
|
||
t.offset().top)
|
||
, o = Mi(".navigation-bar")
|
||
, r = !1;
|
||
Mi(window).on("load sitewide-alert-update main-nav-toggle login-area-toggle", (function() {
|
||
a = t.offset().top,
|
||
t.data("hotel-menu-position", a),
|
||
e(t, a, 0, n, 0, o),
|
||
r = !0
|
||
}
|
||
)),
|
||
Mi(window).on("scroll", (function(i) {
|
||
window.Scandic.isMapClickOnHotelPage || r && e(t, a, 0, n, 0, o)
|
||
}
|
||
));
|
||
var s = !1;
|
||
Mi(window).on("resize", (function() {
|
||
s = !0
|
||
}
|
||
)),
|
||
setInterval((function() {
|
||
s && !window.Scandic.isMapClickOnHotelPage && (t.removeClass("sticky"),
|
||
Mi(".navigation-bar").removeClass("locked").css("top", 0),
|
||
a = t.offset().top,
|
||
n.length ? n.outerHeight() : 0,
|
||
e(t, a, 0, n, 0, o),
|
||
s = !1)
|
||
}
|
||
), 250),
|
||
(-1 != window.navigator.userAgent.indexOf("MSIE ") || navigator.userAgent.match(/Trident.*rv\:11\./)) && setTimeout((function() {
|
||
r = !0
|
||
}
|
||
), 800)
|
||
}
|
||
}
|
||
)),
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
Mi(".global-footer-toggler").on("click", (function(e) {
|
||
var t = Mi(e.delegateTarget)
|
||
, i = Mi(".collapsible-global-footer");
|
||
e.preventDefault(),
|
||
i.slideToggle((function() {
|
||
window.Scandic.isEditOrPreviewMode && Mi(window.parent.document).find("iframe").height(Mi(document).height())
|
||
}
|
||
)),
|
||
si(t)
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
Mi("*[data-js=go-to-map]").each((function() {
|
||
Mi(this).on("click", (function(e) {
|
||
e.preventDefault(),
|
||
window.location.href = Mi(this).attr("data-link") + "#location-map"
|
||
}
|
||
))
|
||
}
|
||
));
|
||
var e = !1;
|
||
Mi("#hotelCategoryMap").on("click", (function() {
|
||
e || (_(),
|
||
e = !0)
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
Mi(document).on("click", "input[data-js-confirm]", (function(e) {
|
||
var t = this
|
||
, i = this.hasAttribute("data-spinner-on-confirm");
|
||
Mi(this).data("js-confirmed") ? Mi(t).data("js-confirmed", !1) : (Ni.fire({
|
||
title: this.getAttribute("data-js-confirm"),
|
||
text: this.getAttribute("data-confirm-text"),
|
||
showCancelButton: !0,
|
||
confirmButtonText: this.getAttribute("data-confirm-ok"),
|
||
cancelButtonText: this.getAttribute("data-confirm-cancel"),
|
||
preconfirm: function() {},
|
||
animation: "slide-from-top",
|
||
reverseButtons: !0,
|
||
allowOutsideClick: !0,
|
||
customClass: this.getAttribute("data-class") ? this.getAttribute("data-class") : ""
|
||
}).then((function(e) {
|
||
e.value && (Mi(t).data("js-confirmed", !0),
|
||
-1 != navigator.userAgent.indexOf("Safari") && -1 == navigator.userAgent.indexOf("Chrome") ? new Promise((function(e, t) {
|
||
i && (window.Scandic.DisableEnableButton.disable(Mi("button.swal2-confirm")),
|
||
Mi("button.swal2-cancel").attr("disabled", !0)),
|
||
e()
|
||
}
|
||
)).then((function() {
|
||
setTimeout((function() {
|
||
t.click()
|
||
}
|
||
))
|
||
}
|
||
)) : (i && (window.Scandic.DisableEnableButton.disable(Mi("button.swal2-confirm")),
|
||
Mi("button.swal2-cancel").attr("disabled", !0)),
|
||
t.click()))
|
||
}
|
||
)),
|
||
e.preventDefault(),
|
||
e.stopPropagation())
|
||
}
|
||
)),
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
Mi("*[data-js=ajax-load]").each((function() {
|
||
var e = Mi(this)
|
||
, t = e.data("url");
|
||
"string" == typeof t && t.length && Mi.ajax({
|
||
url: t,
|
||
type: "GET",
|
||
success: function(t) {
|
||
if (Mi.trim(t)) {
|
||
e.html(t);
|
||
var i = e.data("loaded-event");
|
||
"string" == typeof i && i.length && Mi("body").trigger(i)
|
||
}
|
||
}
|
||
})
|
||
}
|
||
)),
|
||
Mi("#my-future-bookings__toggle-btn").click((function(e) {
|
||
e.preventDefault(),
|
||
Mi("#my-future-bookings__toggle-btn").hide(),
|
||
Mi("#my-future-bookings__show-all-btn").show(),
|
||
(0,
|
||
m.ay)("futureBookingsTableToggleButtonClicked")
|
||
}
|
||
)),
|
||
Mi("#my-future-bookings__show-all-btn").click((function(e) {
|
||
var t, i;
|
||
e.preventDefault(),
|
||
Mi("#my-future-bookings__show-all-btn").hide(),
|
||
Mi("#my-future-bookings__show-all-spinner").show(),
|
||
t = Mi(this).data("lastName"),
|
||
i = "/ajax/bookings/future?lastName=" + t,
|
||
Mi.ajax({
|
||
type: "POST",
|
||
url: i
|
||
}).done((function(e) {
|
||
Mi("#my-future-bookings__toggle-btn").addClass("is-expanded").show(),
|
||
Mi("#my-future-bookings-body").html(e),
|
||
Mi("#my-future-bookings__show-all-spinner").hide()
|
||
}
|
||
)).fail((function(e) {
|
||
Mi("#my-future-bookings__show-all-btn").show(),
|
||
Mi("#my-future-bookings__show-all-spinner").hide(),
|
||
console.log(e.responseText)
|
||
}
|
||
)),
|
||
(0,
|
||
m.ay)("futureBookingsTableToggleButtonClicked")
|
||
}
|
||
)),
|
||
Mi("#add-credit-card-button").length > 0 && Mi("#add-credit-card-button").click((function(e) {
|
||
var t;
|
||
e.preventDefault(),
|
||
t = "/ajax/memberprofileupdate/addnewcard",
|
||
Mi.ajax({
|
||
type: "POST",
|
||
url: t,
|
||
data: {
|
||
routeURL: location.pathname
|
||
}
|
||
}).done((function(e) {
|
||
window.location.href = e.RedirectURL
|
||
}
|
||
)).fail((function(e) {}
|
||
))
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
var e, t, i, n, a, o;
|
||
function r() {
|
||
e.length && Mi(".l-booking-widget__widget:visible, .main, .hero-intro").each((function() {
|
||
var i = Mi(this);
|
||
t.css("height", ""),
|
||
setTimeout((function() {
|
||
i.offset().top < e.offset().top + e.outerHeight() && (t.outerHeight("+=" + e.outerHeight()),
|
||
e.outerHeight()),
|
||
Mi(window).trigger("sitewide-alert-update")
|
||
}
|
||
), 300)
|
||
}
|
||
))
|
||
}
|
||
function s() {
|
||
var e = Mi(window).width();
|
||
n = i,
|
||
i = e <= ScreenHelper.CSS_SMALL_BREAKPOINT ? 0 : e > ScreenHelper.CSS_XLARGE_BREAKPOINT ? ScreenHelper.CSS_XLARGE_BREAKPOINT : e > ScreenHelper.CSS_SMALL_BREAKPOINT && e <= ScreenHelper.CSS_MEDIUM_BREAKPOINT ? ScreenHelper.CSS_SMALL_BREAKPOINT : e > ScreenHelper.CSS_MEDIUM_BREAKPOINT && e <= ScreenHelper.CSS_LARGE_BREAKPOINT ? ScreenHelper.CSS_MEDIUM_BREAKPOINT : ScreenHelper.CSS_LARGE_BREAKPOINT
|
||
}
|
||
if (e = Mi(".special-alerts--sitewide"),
|
||
a = Mi(".hero-fixed"),
|
||
o = Mi(".hero__img-container"),
|
||
(t = a.length ? a.add(".hero__img-container") : o.length ? o : Mi(".hero-content-overlay")).length) {
|
||
Mi(window).on("load", (function() {
|
||
s(),
|
||
Mi(".main.signature-hotel-main").length || r()
|
||
}
|
||
));
|
||
var l = !1;
|
||
Mi(window).on("resize", (function() {
|
||
l = !0
|
||
}
|
||
)),
|
||
setInterval((function() {
|
||
l && (s(),
|
||
(i !== n || Mi(window).width() <= 500) && (Mi(".main.signature-hotel-main").length || r()),
|
||
l = !1)
|
||
}
|
||
), 500)
|
||
} else
|
||
e.addClass("special-alerts--sitewide-static")
|
||
}
|
||
)),
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
if (Mi("#lbl-promotionpageurl").length) {
|
||
Mi.post(Mi("#lbl-promotionpageurl").val(), {}, (function(e) {
|
||
var t, i, n;
|
||
Mi("#lbl-promotionpageurl").after(e),
|
||
t = Mi(".promotion-form"),
|
||
i = t.find(".btn--activate-promotion"),
|
||
n = t.find(".btn--become-member"),
|
||
i.on("click", (function(e) {
|
||
e.preventDefault();
|
||
var n, a = t.attr("action");
|
||
a && (n = t.serialize(),
|
||
i.prop("disabled", !0),
|
||
Mi.post(a, n, (function(e) {
|
||
Ni.fire({
|
||
title: "",
|
||
html: e.message,
|
||
confirmButtonText: i.data("confirm-text"),
|
||
confirmButtonColor: null,
|
||
animation: "slide-from-top",
|
||
allowOutsideClick: !0,
|
||
customClass: "center-action-btn"
|
||
}).then((function() {
|
||
"success" === e.status && location.reload()
|
||
}
|
||
)),
|
||
i.prop("disabled", !1)
|
||
}
|
||
)))
|
||
}
|
||
)),
|
||
n.on("click", (function(e) {
|
||
var i = t.data("registration-url");
|
||
i && (window.location.href = i + "?promotioncode=" + Mi(this).attr("data-promo-code")),
|
||
Mi(this).data("js-confirmed"),
|
||
e.preventDefault()
|
||
}
|
||
)),
|
||
(0,
|
||
oi.init)(),
|
||
ve()
|
||
}
|
||
))
|
||
}
|
||
}
|
||
)),
|
||
Scandic.runOnDocumentReady.push((function() {
|
||
if (Mi(".promotion-container").length && null !== localStorage.getItem("data-js-trigger-promotion"))
|
||
var e = setInterval((function() {
|
||
Mi("body, html").animate({
|
||
scrollTop: Mi(".promotion-container").offset().top
|
||
}, 1e3),
|
||
clearInterval(e),
|
||
localStorage.removeItem("data-js-trigger-promotion")
|
||
}
|
||
), 1e3);
|
||
else
|
||
null !== localStorage.getItem("data-js-trigger-promotion") && localStorage.removeItem("data-js-trigger-promotion")
|
||
}
|
||
)),
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
Mi('[data-js="toggle-booking-terms"]').on("click keydown", (function(e) {
|
||
9 !== e.which && (e.preventDefault(),
|
||
13 !== e.which && "click" !== e.type || !document.querySelector("#booking-terms-list").classList.contains("hidden") ? 13 !== e.which && "click" !== e.type || (Mi("#booking-terms-list").addClass("hidden"),
|
||
Mi("#view-terms-text").show(),
|
||
Mi("#hide-terms-text").hide()) : (Mi("#booking-terms-list").removeClass("hidden"),
|
||
Mi("#view-terms-text").hide(),
|
||
document.querySelector("#hide-terms-text").classList.contains("hidden") && Mi("#hide-terms-text").removeClass("hidden"),
|
||
Mi("#hide-terms-text").show()),
|
||
"keydown" === e.type && Mi('[data-js="toggle-booking-terms"]:visible').focus())
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
window.Scandic.runOnWindowLoad.push((function() {
|
||
if (window.datalayerObj) {
|
||
if ("logged in" == datalayerObj.loginstatus && -1 != ["bookinghotelspage", "bookingroomsandratespage", "bookingenterdetailspage", "bookingconfirmationpage"].indexOf(window.datalayerObj.pagetype))
|
||
if (CookieConsent && CookieConsent.consented) {
|
||
(0,
|
||
m.j8)({
|
||
userMemberId: datalayerObj.memberid,
|
||
pageId: {
|
||
bookinghotelspage: "city_search",
|
||
bookingroomsandratespage: "resort_search",
|
||
bookingenterdetailspage: "details",
|
||
bookingconfirmationpage: "confirmation"
|
||
}[datalayerObj.pagetype],
|
||
pageUrl: location.href + "&userMemberId=" + datalayerObj.memberid
|
||
})
|
||
} else
|
||
(0,
|
||
m.j8)({})
|
||
}
|
||
}
|
||
)),
|
||
function() {
|
||
Mi(document).ready((function() {
|
||
for (var e = 0, t = window.Scandic.runOnDocumentReady.length; e < t; ++e) {
|
||
window.Scandic.runOnDocumentReady[e].call(window.Scandic)
|
||
}
|
||
if (Mi(".hero-fixed").length > 0 && Mi(".l-booking-widget--position").length > 0 && !Mi(".main.signature-hotel-main").length) {
|
||
var i = function() {
|
||
Mi(".hero-content-overlay").addClass("hero-content-widget");
|
||
var e = document.querySelector(".hero");
|
||
if (ScreenHelper.mediaMediumUp()) {
|
||
var t = document.querySelector(".special-alerts--sitewide") ? document.querySelector(".special-alerts--sitewide").offsetHeight : 0
|
||
, i = document.querySelector("header.header").offsetHeight + t;
|
||
Mi(".hero-fixed").css("margin-top", 0),
|
||
e.style.top = i - window.pageYOffset + "px",
|
||
document.onscroll = function(t) {
|
||
var n = i - window.pageYOffset;
|
||
e.style.top = n >= 0 ? n + "px" : 0
|
||
}
|
||
}
|
||
ScreenHelper.mediaSmallUp() && Mi(".hero-intro--overlay").css("margin-top", "-60px")
|
||
};
|
||
Mi(window).on("resize", i);
|
||
var n = setInterval(i, 100);
|
||
Mi(window).on("load", (function() {
|
||
n && (i(),
|
||
clearInterval(n))
|
||
}
|
||
))
|
||
}
|
||
}
|
||
)),
|
||
Mi(window).on("load", (function() {
|
||
for (var e = 0, t = window.Scandic.runOnWindowLoad.length; e < t; ++e) {
|
||
window.Scandic.runOnWindowLoad[e].call(window.Scandic)
|
||
}
|
||
}
|
||
)),
|
||
Mi(document).ready((function() {
|
||
if (!(Mi(".l-section--has-sidebar .big-sidebar-wrapper__sidebar-section__sidebar").length < 1)) {
|
||
var e = function() {
|
||
if (window.innerWidth < 740)
|
||
Mi(".l-section--has-sidebar .big-sidebar-wrapper__sidebar-section__sidebar").attr("style", "margin-top: 0px;");
|
||
else if (Mi(".l-section--has-sidebar.big-sidebar-wrapper__main-secondary > .l-section__inner.l-section__inner--content").length > 0) {
|
||
var e = Mi(".l-section--has-sidebar.big-sidebar-wrapper__main-secondary > .l-section__inner.l-section__inner--content")[0].clientHeight + 20;
|
||
Mi(".l-section--has-sidebar .big-sidebar-wrapper__sidebar-section__sidebar").attr("style", "margin-top:" + e + "px;")
|
||
}
|
||
};
|
||
e(),
|
||
Mi(window).on("resize", e)
|
||
}
|
||
}
|
||
));
|
||
var e = function() {
|
||
window.sessionStorage.removeItem("form_bookingDetailsForm"),
|
||
window.sessionStorage.removeItem("userHtmlForLoggedInOrLoggedOut"),
|
||
window.sessionStorage.removeItem("loginTrackData"),
|
||
window.localStorage.removeItem("loginTrackData"),
|
||
window.localStorage.removeItem("userLoggedInId")
|
||
}
|
||
, t = function() {
|
||
var t = JSON.parse(sessionStorage.getItem("userHtmlForLoggedInOrLoggedOut"));
|
||
Mi("#js-login-modal").length || Mi(".navigation--skip-to-content").after(t.userStateHtml),
|
||
Mi("#navbarUser").remove(),
|
||
Mi("ul.nav-secondary.navbar-login").append(t.userHtml),
|
||
Mi("#navbarliload").remove(),
|
||
Mi("#navbar-header-design").html(t.navigationHtml),
|
||
Mi("#main-menu .nav-primary__item--primary.nav-primary__item--myprofile").remove(),
|
||
Mi("#main-menu").append(t.navigationForDeviceHtml),
|
||
(0,
|
||
oi.init)(),
|
||
Mi('*[data-js="logout-form"]').on("submit", (function() {
|
||
e()
|
||
}
|
||
)),
|
||
"true" !== Pi("cookieAccept") && sessionStorage.getItem("cookieUserHtml") && (Mi(".navigation--skip-to-content").before(sessionStorage.getItem("cookieUserHtml")),
|
||
Mi('*[data-js="cookie-confirm"]').click((function(e) {
|
||
e.preventDefault();
|
||
var t = new Date;
|
||
t.setTime(t.getTime() + 31536e6),
|
||
Di("cookieAccept", "true", t.toUTCString(), "/"),
|
||
Mi('*[data-js="cookie-section"]').remove()
|
||
}
|
||
)))
|
||
};
|
||
window.addEventListener("load", (function() {
|
||
(window.location.href.indexOf("login") > -1 || window.location.href.indexOf("memberlogin") > -1 || window.location.href.indexOf("showModal") > -1) && e();
|
||
var i = !0;
|
||
if (sessionStorage.getItem("userHtmlForLoggedInOrLoggedOut")) {
|
||
var n = JSON.parse(sessionStorage.getItem("loginTrackData"))
|
||
, a = JSON.parse(localStorage.getItem("loginTrackData"));
|
||
(i = !((i = n.MemberId != a.MemberId) || "n/a" == n.MemberId || !document.querySelector(".room-price-info__member .room-member-price")) || i) || t()
|
||
}
|
||
if (i) {
|
||
Mi.ajax({
|
||
url: "/ajax/startpage/checkuserauthentication",
|
||
type: "POST",
|
||
success: function(e) {
|
||
if (window.sessionStorage) {
|
||
var i;
|
||
i = {
|
||
userStateHtml: e.outUserStateHtml,
|
||
userHtml: e.outUserHtml,
|
||
navigationHtml: e.outNavigationHtml,
|
||
navigationForDeviceHtml: e.outNavigationForDeviceHtml
|
||
},
|
||
sessionStorage.setItem("userHtmlForLoggedInOrLoggedOut", JSON.stringify(i)),
|
||
e.outCookieDetailsHtml.length > 2 && sessionStorage.setItem("cookieUserHtml", e.outCookieDetailsHtml),
|
||
sessionStorage.setItem("loginTrackData", JSON.stringify(e.loginTrackingData)),
|
||
sessionStorage.setItem("sessionId", JSON.stringify(e.sessionId));
|
||
var n = JSON.parse(localStorage.getItem("loginTrackData"));
|
||
(!n || n && n.MemberId != e.loginTrackingData.MemberId) && localStorage.setItem("loginTrackData", JSON.stringify(e.loginTrackingData))
|
||
}
|
||
t()
|
||
}
|
||
})
|
||
}
|
||
}
|
||
), !1)
|
||
}(),
|
||
window.Scandic.runOnWindowLoad.push((function() {
|
||
function e(e) {
|
||
for (var t = e.closest(".l-price-box__available-rates-holder").find(".morePrices"), i = 0; i < t.length; i++) {
|
||
var n = t[parseInt(i, 10)];
|
||
n.classList.contains("hidden") ? n.classList.remove("hidden") : n.classList.add("hidden")
|
||
}
|
||
}
|
||
for (var t = Mi('*[data-js="show-more-rates"]'), i = 0; i < t.length; i++)
|
||
t[parseInt(i, 10)].addEventListener("click", (function() {
|
||
var t;
|
||
event.stopPropagation(),
|
||
(t = Mi(this)).hasClass("is-expanded") ? (t.removeClass("is-expanded"),
|
||
t.find(".showLess").first().addClass("hidden"),
|
||
t.find(".showMore").first().removeClass("hidden")) : (t.addClass("is-expanded"),
|
||
t.find(".showLess").first().removeClass("hidden"),
|
||
t.find(".showMore").first().addClass("hidden")),
|
||
e(Mi(this))
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
if (document.getElementById("lbl-personalized-areas") && document.getElementById("lbl-pageurl")) {
|
||
var e = document.getElementById("lbl-personalized-areas").value
|
||
, t = document.getElementById("lbl-pageurl").value;
|
||
Mi.ajax({
|
||
url: t,
|
||
type: "POST",
|
||
data: {
|
||
sectionNames: e
|
||
},
|
||
success: function(e) {
|
||
var t = JSON.parse(e)
|
||
, i = t.PersonalizedSectionNames;
|
||
document.getElementById("lbl-personalized-areas").value = i,
|
||
(i = i.split(",")).forEach((function(e) {
|
||
t.hasOwnProperty(e) && document.getElementById(e.toLowerCase() + "_personalized") && (document.getElementById(e.toLowerCase() + "_personalized").innerHTML = t[e])
|
||
}
|
||
))
|
||
}
|
||
})
|
||
}
|
||
}
|
||
)),
|
||
window.Scandic.runOnWindowLoad.push((function() {
|
||
Mi("#booking-summary-add-hotel").click((function() {
|
||
Mi("#booking-summary-add-booking-widget").removeClass("hidden"),
|
||
document.querySelector("#widget-search__text").focus()
|
||
}
|
||
)),
|
||
Mi("#remove-Booking-widget").click((function() {
|
||
Mi("#booking-summary-add-booking-widget").addClass("hidden")
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
document.querySelectorAll(".l-section--content a[href]").forEach((function(e) {
|
||
-1 != e.href.indexOf("login=1") && Mi(e).click((function(t) {
|
||
sessionStorage.getItem("loginTrackData") && "not logged in" != JSON.parse(sessionStorage.getItem("loginTrackData")).LoginStatus || (t.preventDefault(),
|
||
Mi.ajax({
|
||
type: "POST",
|
||
data: {
|
||
redirectUrl: e.href.replace("?login=1", "")
|
||
},
|
||
url: "/ajax/startpage/setsessionredirecturl"
|
||
}),
|
||
(0,
|
||
oi.initLoginPopup)(t))
|
||
}
|
||
))
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
document.querySelector(".locked-profile") ? (Mi(".locked-profile input").each((function() {
|
||
Mi(this).attr("readonly", !0)
|
||
}
|
||
)),
|
||
Mi(".locked-profile select").each((function() {
|
||
Mi(this).attr("disabled", !0),
|
||
Mi(this).after("<input type='hidden' name='" + Mi(this).attr("name") + "' value='" + Mi(this).val() + "' >")
|
||
}
|
||
))) : "memberprofileupdatepage" == window.datalayer[0].pagetype && document.querySelector("form[name=registerprofile] input[type=text]").focus()
|
||
}
|
||
)),
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
var e = /\d/
|
||
, t = /[A-ZÅÄÖÆØÜ]/
|
||
, i = /[a-zåäöæøüß]/
|
||
, n = /[!@#$%^&*()=+?_-]/
|
||
, a = /^[A-Za-zåäöæøüßÅÄÖÆØÜ0-9&!?()@#$%^+=_\*\-]+$/;
|
||
Mi(".toggle-password").click((function() {
|
||
Mi(this).toggleClass("icon-eye icon-eye-slash");
|
||
var e = Mi(Mi(this).attr("toggle"));
|
||
"password" == e.attr("type") ? e.attr("type", "text") : e.attr("type", "password")
|
||
}
|
||
)),
|
||
Mi("form input[type='password']").on("input", (function() {
|
||
Mi(this).val() ? Mi(this).next(".toggle-password").removeClass("hidden") : Mi(this).next(".toggle-password").addClass("hidden")
|
||
}
|
||
)),
|
||
Mi(".create-password").on("input", (function(o) {
|
||
Mi(this).val() ? (t.test(Mi(this).val()) ? ji(Mi(this).val(), "upperCaserChar", !0, o.type) : ji(Mi(this).val(), "upperCaserChar", !1, o.type),
|
||
i.test(Mi(this).val()) ? ji(Mi(this).val(), "lowerCaserChar", !0, o.type) : ji(Mi(this).val(), "lowerCaserChar", !1, o.type),
|
||
e.test(Mi(this).val()) ? ji(Mi(this).val(), "numberFormat", !0, o.type) : ji(Mi(this).val(), "numberFormat", !1, o.type),
|
||
n.test(Mi(this).val()) ? ji(Mi(this).val(), "specialCharFormat", !0, o.type) : ji(Mi(this).val(), "specialCharFormat", !1, o.type),
|
||
Mi(this).val().length >= 10 ? ji(Mi(this).val(), "charLimit", !0, o.type) : ji(Mi(this).val(), "charLimit", !1, o.type),
|
||
a.test(Mi(this).val()) ? ji(Mi(this).val(), "notAllowedCharFormat", !1, o.type) : ji(Mi(this).val(), "notAllowedCharFormat", !0, o.type)) : ji(null, null)
|
||
}
|
||
)),
|
||
Mi(".create-password").on("blur", (function(o) {
|
||
Mi(this).val() && (t.test(Mi(this).val()) ? ji(Mi(this).val(), "upperCaserChar", !1, o.type) : ji(Mi(this).val(), "upperCaserChar", !0, o.type),
|
||
i.test(Mi(this).val()) ? ji(Mi(this).val(), "lowerCaserChar", !1, o.type) : ji(Mi(this).val(), "lowerCaserChar", !0, o.type),
|
||
e.test(Mi(this).val()) ? ji(Mi(this).val(), "numberFormat", !1, o.type) : ji(Mi(this).val(), "numberFormat", !0, o.type),
|
||
n.test(Mi(this).val()) ? ji(Mi(this).val(), "specialCharFormat", !1, o.type) : ji(Mi(this).val(), "specialCharFormat", !0, o.type),
|
||
Mi(this).val().length >= 10 ? ji(Mi(this).val(), "charLimit", !1, o.type) : ji(Mi(this).val(), "charLimit", !0, o.type),
|
||
a.test(Mi(this).val()) ? ji(Mi(this).val(), "notAllowedCharFormat", !1, o.type) : ji(Mi(this).val(), "notAllowedCharFormat", !0, o.type))
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
var e = new URLSearchParams(window.location.search)
|
||
, t = e.get("isRedirect")
|
||
, i = e.get("actionSuccess");
|
||
document.getElementsByClassName("validation-summary-errors") && document.getElementsByClassName("validation-summary-errors").length && qi(".validation-summary-errors"),
|
||
document.getElementsByClassName("scroll-up-message") && document.getElementsByClassName("scroll-up-message").length && qi(".scroll-up-message"),
|
||
document.getElementsByClassName("scroll-up-message") && document.getElementsByClassName("scroll-up-message").length || "True" != t || "True" != i || Mi("body, html").animate({
|
||
scrollTop: Mi("#add-credit-card-button").offset().top - 250
|
||
}, "slow")
|
||
}
|
||
)),
|
||
window.Scandic.runOnWindowLoad.push((function() {
|
||
document.querySelector(".booking__verify_email_success .speech-bubble") && document.querySelector(".booking__verify_email_success .speech-bubble").classList.contains("speech-bubble--deemphasized") && (0,
|
||
m.ay)("member-signup-enter-details"),
|
||
document.getElementById("isMembershipAttached") && (0,
|
||
m.ay)("profileAttachedToBooking")
|
||
}
|
||
)),
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
Mi(".loading-button").click((function() {
|
||
var e = Mi(this);
|
||
setTimeout(function() {
|
||
window.Scandic.DisableEnableButton.disable(e),
|
||
e.attr("disabled", !0)
|
||
}
|
||
.bind(e), 10)
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
window.GDPROnSubmit = function() {
|
||
grecaptcha.execute(),
|
||
document.getElementById("gdprRequestForm").submit()
|
||
}
|
||
,
|
||
Mi("#IdentificationFile").on("change", (function() {
|
||
var e = Mi(this).val();
|
||
if ("" !== e && null != e) {
|
||
var t = e.substring(e.lastIndexOf("\\") + 1);
|
||
Mi("#fileLabel").val(t)
|
||
}
|
||
}
|
||
)),
|
||
Mi(".browse-label").on("click", (function() {
|
||
Mi("#IdentificationFile").trigger("click")
|
||
}
|
||
)),
|
||
window.selectRoomRedirectPage = function(e, t, i) {
|
||
"disabled" == t ? i.stopPropagation() : window.location.href = e
|
||
}
|
||
,
|
||
window.Scandic.runOnDocumentReady.push((function() {
|
||
var e = function() {
|
||
document.getElementById("lang-popup").classList.add("hidden"),
|
||
i("cancel")
|
||
}
|
||
, t = !1
|
||
, i = function(e) {
|
||
if (!t) {
|
||
var i = n();
|
||
(0,
|
||
m.ay)("redirect domain", {
|
||
popupactions: "redirection-" + (e || i).toLowerCase()
|
||
}),
|
||
t = !0
|
||
}
|
||
}
|
||
, n = function() {
|
||
var e = "";
|
||
switch (Pi("UserLocation").toLowerCase()) {
|
||
case "sweden":
|
||
e = "Svenska";
|
||
break;
|
||
case "norway":
|
||
e = "Norsk";
|
||
break;
|
||
case "denmark":
|
||
e = "Dansk";
|
||
break;
|
||
case "finland":
|
||
e = "Suomi";
|
||
break;
|
||
case "german":
|
||
e = "Deutsch"
|
||
}
|
||
return e.toString()
|
||
}
|
||
, a = Pi("UserLocation") ? Pi("UserLocation").toLowerCase() : null
|
||
, o = Pi("UserLocationChange") ? Pi("UserLocationChange").toLowerCase() : null;
|
||
if ("/" == location.pathname && "" == location.search && a && !o) {
|
||
var r = document.getElementById("lang-popup");
|
||
r.classList.remove("hidden");
|
||
var s = n();
|
||
r.querySelector(".lang-popup__msg").innerText = r.querySelector(".lang-popup__msg").innerText.replace("{language}", s),
|
||
r.querySelector(".lang-popup__cta").innerText = r.querySelector(".lang-popup__cta").innerText.replace("{language}", s),
|
||
document.querySelectorAll(".navbar-language-selector ul li a").forEach((function(e) {
|
||
e.innerText.toLowerCase() == s.toLowerCase() && (document.querySelector(".lang-popup__cta").href = e.href)
|
||
}
|
||
)),
|
||
r.querySelector(".lang-popup__cta").addEventListener("click", (function() {
|
||
i(!1),
|
||
Di("UserLocationChange", a, 1 / 0)
|
||
}
|
||
)),
|
||
r.querySelector(".lang-popup__cancel").addEventListener("click", e),
|
||
r.querySelector(".lang-popup__close").addEventListener("click", e),
|
||
window.onbeforeunload = function() {
|
||
i("cancel")
|
||
}
|
||
,
|
||
Di("UserLocationChange", 1, 1 / 0)
|
||
} else if ("/" == location.pathname && "" == location.search && o && o == a) {
|
||
if (-1 != document.referrer.indexOf(location.hostname))
|
||
return;
|
||
var l = n();
|
||
document.querySelectorAll(".dropdown-container ul li a").forEach((function(e) {
|
||
e.innerText.toLowerCase() == l.toLowerCase() && (window.location.href = e.href)
|
||
}
|
||
))
|
||
}
|
||
}
|
||
)),
|
||
function() {
|
||
if ("startpage" == window.datalayer[0].pagetype) {
|
||
var e = document.getElementById("book-button")
|
||
, t = document.querySelector("#booking-widget-form");
|
||
e.style.display = "none",
|
||
window.onscroll = function() {
|
||
document.body.scrollTop > parseInt(t.offsetHeight) || document.documentElement.scrollTop > parseInt(t.offsetHeight) ? e.style.display = "block" : e.style.display = "none"
|
||
}
|
||
}
|
||
}();
|
||
i(52071),
|
||
i(66695),
|
||
i(21335),
|
||
i(87828),
|
||
i(23234),
|
||
i(67131),
|
||
i(3517);
|
||
window.xenaApp = angular.module("xenaApp", ["pickadate", "ngAria", "ui.swiper", "ngAnimate", "ngSanitize"]).config(["$compileProvider", function(e) {
|
||
e.aHrefSanitizationWhitelist(/^\s*(https?|mailto|webcal|tel):/)
|
||
}
|
||
]),
|
||
xenaApp.directive("select", (function() {
|
||
return {
|
||
restrict: "E",
|
||
require: "?ngModel",
|
||
scope: !1,
|
||
link: function(e, t, i, n) {
|
||
n && t.bind("keyup", (function() {
|
||
t.triggerHandler("change")
|
||
}
|
||
))
|
||
}
|
||
}
|
||
}
|
||
));
|
||
i(68095),
|
||
i(84887),
|
||
i(60530),
|
||
i(6430),
|
||
i(46934),
|
||
i(53129),
|
||
i(20419),
|
||
i(88154),
|
||
i(76114),
|
||
i(3620);
|
||
var Fi = i(19755)
|
||
, Ri = i(19755);
|
||
angular.module("xenaApp").controller("BookingAncillariesController", ["$scope", "AncillaryService", "UserService", "$sce", "$timeout", function(e, t, i, n, a) {
|
||
Fi("#ancillary-msg") && Fi("#ancillary-msg").val() && (window.ancillarieDataModule.ancillaryData.message = Fi("#ancillary-msg").val()),
|
||
"true" === Pi("clearSavedAncillaries") ? (Oi("clearSavedAncillaries", "/"),
|
||
t.setAncillaryData(window.ancillarieDataModule.ancillaryData),
|
||
t.deleteFromSessionStorage()) : t.setAncillaryDataFromSessionStorage(window.ancillarieDataModule.ancillaryData),
|
||
e.filteredAncillariesList = [],
|
||
e.trackingFilterName = void 0,
|
||
e.AncillaryService = t,
|
||
e.selectedFilterOption = void 0,
|
||
e.hiddenInputKey = "room[0].ancillaries.",
|
||
e.hiddenInputCollection = {},
|
||
e.trackSkipLink = "",
|
||
e.loadingEnterDetailsPage = !1,
|
||
e.isAncillariesSelected = !1,
|
||
e.deliveryTimeIsRequred = t.orderHasAncillaryWithDeliveryTime,
|
||
e.deliveryTimeIsDisabled = !1,
|
||
e.skipValidation = !1,
|
||
e.message = t.ancillaryData.message,
|
||
e.ancillariesPointsTracker = t.ancillariesPointsTracker,
|
||
e.getDeliveryTimeOptions = e.AncillaryService.ancillaryData.deliveryTimes,
|
||
e.onLoginLinkClick = oi.onClickFunction,
|
||
e.$watch("message", (function(e) {
|
||
t.ancillaryData.message = e
|
||
}
|
||
)),
|
||
e.$watch("AncillaryService.getAncillaries()", (function(t, i, n) {
|
||
e.ancillariesChanged()
|
||
}
|
||
), !0),
|
||
e.updateDeliveryTime = function() {
|
||
t.ancillaryData.deliveryTimes.selectedDeliveryTime = e.getDeliveryTimeOptions.selectedDeliveryTime
|
||
}
|
||
,
|
||
e.skipAncillaries = function(t) {
|
||
e.skipValidation = !0,
|
||
e.trackSkipLink = t,
|
||
e.removeHiddenInputs(),
|
||
a((function() {
|
||
Ri("#ancillaries-form").submit()
|
||
}
|
||
))
|
||
}
|
||
,
|
||
e.ancillariesChanged = function() {
|
||
e.hiddenInputCollection = {},
|
||
e.isAncillariesSelected = !1;
|
||
var n = 0;
|
||
angular.forEach(t.ancillaryData.ancillaries, (function(t) {
|
||
angular.forEach(t.Variants, (function(t) {
|
||
0 !== t.Quantity && (t.Id.indexOf("LOY") > -1 && !i.UserData.userIsAuthenticated || (e.isAncillariesSelected = !0,
|
||
e.addHiddenInput(n, t.Id, t.Quantity),
|
||
n++))
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
e.isAncillariesSelected || t.ancillaryData.isPostBooking || (e.message = "",
|
||
e.getDeliveryTimeOptions.selectedDeliveryTime = e.getDeliveryTimeOptions.options.find((function(e) {
|
||
return "X" === e.Id
|
||
}
|
||
)),
|
||
e.ancillariesForm.$setPristine(),
|
||
e.ancillariesForm.$setUntouched())
|
||
}
|
||
,
|
||
e.addHiddenInput = function(t, i, n) {
|
||
var a = e.hiddenInputKey + "variants[" + t + "].id"
|
||
, o = e.hiddenInputKey + "variants[" + t + "].quantity";
|
||
e.hiddenInputCollection[a] = i,
|
||
e.hiddenInputCollection[o] = n
|
||
}
|
||
,
|
||
e.removeHiddenInputs = function() {
|
||
e.hiddenInputCollection = []
|
||
}
|
||
,
|
||
e.submitHandler = function(i) {
|
||
e.formSubmitted || (e.loadingEnterDetailsPage = e.ancillariesForm.$valid,
|
||
t.saveToSessionStorage(),
|
||
e.ancillariesForm.$valid && (e.formSubmitted = !0,
|
||
a((function() {
|
||
Ri("#ancillaries-form").submit()
|
||
}
|
||
))),
|
||
i && i.preventDefault(),
|
||
Ri("*[data-disable-on-widget-update]").length > 0 && Ri("form").hasClass("ng-valid") && Ri("*[data-disable-on-widget-update]").toggleClass("is-disabled-after-update"))
|
||
}
|
||
,
|
||
e.filterAncillaries = function(t) {
|
||
void 0 !== t && (e.filteredAncillariesList = [],
|
||
e.selectedFilterOption = t.InternalName,
|
||
e.trackingFilterName = t.InternalName,
|
||
angular.forEach(t.AncillaryIds, (function(t) {
|
||
angular.forEach(e.AncillaryService.ancillaryData.ancillaries, (function(i) {
|
||
i.Id === t && e.filteredAncillariesList.push(i)
|
||
}
|
||
))
|
||
}
|
||
)))
|
||
}
|
||
,
|
||
e.isSelected = function(t) {
|
||
return t === e.selectedFilterOption
|
||
}
|
||
,
|
||
e.removeEmptyAncillaries = function() {
|
||
e.AncillaryService.ancillaryData.ancillariesFilterCategories = e.AncillaryService.ancillaryData.ancillariesFilterCategories.filter((function(t) {
|
||
return e.categoryHasAncillaries(t)
|
||
}
|
||
))
|
||
}
|
||
,
|
||
e.categoryHasAncillaries = function(t) {
|
||
for (var i = !1, n = 0; n < e.AncillaryService.ancillaryData.ancillaries.length; n++)
|
||
for (var a = e.AncillaryService.ancillaryData.ancillaries[n], o = 0; o < t.AncillaryIds.length; o++) {
|
||
var r = t.AncillaryIds[o];
|
||
a.Id === r && (n = e.AncillaryService.ancillaryData.ancillaries.length,
|
||
o = t.AncillaryIds.length,
|
||
i = !0)
|
||
}
|
||
return i
|
||
}
|
||
;
|
||
e.init = function(n, a, o) {
|
||
t.ancillaryData.deliveryTimes.selectedDeliveryTime.Id = t.ancillaryData.deliveryTimes.selectedDeliveryTime.Id || "X",
|
||
i.UserData.userIsAuthenticated = n,
|
||
e.deliveryTimeIsDisabled = t.ancillaryData.isPostBooking && "X" !== t.ancillaryData.deliveryTimes.selectedDeliveryTime.Id && null !== t.ancillaryData.deliveryTimes.selectedDeliveryTime.Id && "X" !== window.ancillarieDataModule.ancillaryData.deliveryTimes.selectedDeliveryTime.Id,
|
||
e.removeEmptyAncillaries(),
|
||
e.filterAncillaries(e.AncillaryService.ancillaryData.ancillariesFilterCategories[0]),
|
||
i.UserData.userIsAuthenticated && (t.ancillariesPointsTracker.totalInitialPoints = a,
|
||
t.calculateTotalPointsLeftFromAncillaryData()),
|
||
e.getDeliveryTimeOptions.options.find((function(e) {
|
||
return "X" === e.Id
|
||
}
|
||
)) || e.getDeliveryTimeOptions.options.unshift({
|
||
Id: "X",
|
||
Name: o,
|
||
disabled: !0
|
||
})
|
||
}
|
||
}
|
||
]);
|
||
i(64025),
|
||
i(17618),
|
||
i(82672),
|
||
i(93951);
|
||
var $i = i(54648);
|
||
angular.module("xenaApp").controller("BookingDetailsController", ["$scope", "$http", "uniquenessService", "creditCardService", function(e, t, i, n) {
|
||
function a() {
|
||
var t = !e.isNameDuplicated();
|
||
e.bookingDetailsForm[e.firstNameFieldName].$setValidity("uniqueness", t),
|
||
e.bookingDetailsForm[e.lastNameFieldName].$setValidity("uniqueness", t)
|
||
}
|
||
e.validPhoneNumber = $i.phone.strict,
|
||
e.validEmail = $i.emailRegexp,
|
||
e.validCompanyCode = $i.companyCode,
|
||
e.validName = $i.alphanumeric.noSpecialCharacters,
|
||
e.validMembershipNumber = $i.membershipNumber,
|
||
e.dirtyPhone = !1,
|
||
e.creditCardData = n.data,
|
||
t.get("/api/cc-prefix.json").then((function(t) {
|
||
e.countryPhoneMappings = t.data
|
||
}
|
||
)).catch((function() {
|
||
console.log("Failed to load country to phoneprefixprefix mapping.")
|
||
}
|
||
)),
|
||
e.creditCardData.creditCardIsInRequiredContext = e.guaranteeForLateArrival,
|
||
e.$watch("firstName", (function() {
|
||
a()
|
||
}
|
||
)),
|
||
e.$watch("lastName", (function() {
|
||
a()
|
||
}
|
||
)),
|
||
e.$watch("countryCode", (function() {
|
||
e.dirtyPhone || void 0 !== e.countryPhoneMappings && (e.phoneCountryCodePrefix = e.findCountry(e.countryCode))
|
||
}
|
||
)),
|
||
e.isNameDuplicated = function() {
|
||
return !i.isUnique(e, "validatableFullName()", e.validatableFullName())
|
||
}
|
||
,
|
||
e.validatableFullName = function() {
|
||
return void 0 !== e.firstName && "" !== e.firstName && void 0 !== e.lastName && "" !== e.lastName ? JSON.stringify([e.firstName.trim().toLowerCase(), e.lastName.trim().toLowerCase()]) : ""
|
||
}
|
||
,
|
||
e.findCountry = function(t) {
|
||
return e.countryPhoneMappings[t]
|
||
}
|
||
,
|
||
e.setDirtyPhone = function() {
|
||
e.dirtyPhone = !0
|
||
}
|
||
}
|
||
]);
|
||
i(26953),
|
||
i(50972),
|
||
i(27903),
|
||
i(62865),
|
||
i(73986);
|
||
var Vi = i(19755)
|
||
, Wi = i(19755)
|
||
, Ui = i(86455)
|
||
, Gi = i(17970);
|
||
angular.module("xenaApp").controller("MyBookingController", ["$scope", "AncillaryService", "UserService", "$window", function(e, t, i, n) {
|
||
e.AncillaryService = t,
|
||
e.AncillaryService.setAncillaryData(window.ancillarieDataModule.ancillaryData),
|
||
e.myBookingSweetAlertData = {},
|
||
document.querySelector("#myBookingSweetAlertData") && (window.myBookingSweetAlertData = JSON.parse(document.querySelector("#myBookingSweetAlertData").textContent.toString())),
|
||
e.ancillaryPagePathName = "",
|
||
e.validEmail = new RegExp($i.emailRegexp),
|
||
e.validName = new RegExp($i.alphanumeric.noSpecialCharacters),
|
||
e.init = function() {
|
||
e.myBookingSweetAlertData = window.myBookingSweetAlertData,
|
||
e.filteredAncillariesList = e.AncillaryService.ancillaryData.ancillaries
|
||
}
|
||
,
|
||
e.initPostBooking = function(n, a, o) {
|
||
e.ancillaryPagePathName = o,
|
||
i.UserData.userIsAuthenticated = n,
|
||
i.UserData.userIsAuthenticated && (t.ancillariesPointsTracker.totalInitialPoints = a,
|
||
t.ancillariesPointsTracker.totalPointsLeft = a)
|
||
}
|
||
,
|
||
e.redirectToAncillariesPage = function(t, i, a, o, r) {
|
||
var s = "";
|
||
r = r || !1,
|
||
s += "True" === o && "" !== a ? e.ancillaryPagePathName + "?RefId=" + a + "&hotel=" + i : e.ancillaryPagePathName + "?bookingId=" + t + "&hotel=" + i,
|
||
r && (s += "&isConfirmationPage=" + r),
|
||
Gi.toggle((function() {
|
||
n.location.href = s
|
||
}
|
||
))
|
||
}
|
||
,
|
||
e.logInToCancelAlert = function(t) {
|
||
"true" === t && Ui.fire({
|
||
title: e.myBookingSweetAlertData.CancelBookingTitle,
|
||
html: e.myBookingSweetAlertData.CancelBookingText,
|
||
confirmButtonText: e.myBookingSweetAlertData.ConfirmationButtonText,
|
||
confirmButtonColor: "#00838e",
|
||
showCancelButton: !1,
|
||
animation: !1,
|
||
allowOutsideClick: !0,
|
||
buttonsStyling: !0,
|
||
customClass: "inverted_modify_details",
|
||
showLoaderOnConfirm: !1,
|
||
reverseButtons: !0
|
||
})
|
||
}
|
||
,
|
||
e.logInToModifyPersonalDetailsAlert = function(t) {
|
||
"true" === t && Ui.fire({
|
||
title: e.myBookingSweetAlertData.Title,
|
||
html: e.myBookingSweetAlertData.Text,
|
||
confirmButtonText: e.myBookingSweetAlertData.ConfirmationButtonText,
|
||
confirmButtonColor: "#00838e",
|
||
showCancelButton: !1,
|
||
animation: !1,
|
||
allowOutsideClick: !0,
|
||
buttonsStyling: !0,
|
||
customClass: "inverted_modify_details",
|
||
showLoaderOnConfirm: !1,
|
||
reverseButtons: !0
|
||
})
|
||
}
|
||
;
|
||
var a = function(e) {
|
||
Ui.fire({
|
||
title: Vi("#cancellationLabels").attr("data-js-confirm"),
|
||
html: Vi("#cancellationLabels").attr("data-confirm-text"),
|
||
showConfirmButton: !0,
|
||
showCancelButton: !0,
|
||
showLoaderOnConfirm: !0,
|
||
buttonsStyling: !0,
|
||
confirmButtonColor: null,
|
||
confirmButtonText: Vi("#cancellationLabels").attr("data-confirm-ok"),
|
||
cancelButtonText: Vi("#cancellationLabels").attr("data-confirm-cancel"),
|
||
animation: !1,
|
||
cancelButtonColor: "#00838e",
|
||
customClass: "cancel-booking",
|
||
reverseButtons: !0
|
||
}).then((function(t) {
|
||
t.value && Gi.toggle((function() {
|
||
var t = "#" + e.currentTarget.parentElement.id;
|
||
Vi(t).submit()
|
||
}
|
||
))
|
||
}
|
||
))
|
||
}
|
||
, o = function(e, t, i, n, a) {
|
||
"" === a.trim() || null === a.trim() ? (Wi(t).css("display", "block"),
|
||
Wi(i).css("display", "none")) : "" !== a.trim() || null !== a.trim() ? n.test(a.trim()) ? (Wi(i).css("display", "none"),
|
||
Wi(t).css("display", "none")) : (Wi(i).css("display", "block"),
|
||
Wi(t).css("display", "none")) : (Wi(t).css("display", "none"),
|
||
Wi(i).css("display", "none"))
|
||
};
|
||
e.validationForm = {
|
||
form: Vi("#confirmation-form").html(),
|
||
title: Vi("#confirmation-form h2.title").text(),
|
||
desc: Vi("#confirmation-form p.desc").text(),
|
||
errorTitle: Vi("#valid_error_title").text(),
|
||
errorDesc: Vi("#valid_error_text").text(),
|
||
confirmBtnText: Vi("#valid_confirm_text").text(),
|
||
cancelBtnText: Vi("#valid_cancel_text").text()
|
||
};
|
||
var r = function(t, i) {
|
||
var n = t.querySelector("#firstName")
|
||
, a = t.querySelector("#lastName")
|
||
, o = t.querySelector("#emailaddress");
|
||
if (!n.value || !a.value || !o.value)
|
||
return !1;
|
||
window.Scandic.DisableEnableButton.disable(Vi("#validate-form button[type=submit]"));
|
||
var r = e.AncillaryService.ancillaryData.bookingInformation.bookingId;
|
||
i = i || r,
|
||
Wi.ajax({
|
||
type: "Post",
|
||
data: {
|
||
FirstName: n.value.trim(),
|
||
LastName: a.value.trim(),
|
||
Email: o.value.trim()
|
||
},
|
||
url: "/ajax/bookings/" + r + "/validateusermodifyingbooking",
|
||
success: function(e) {
|
||
e.Success ? (document.getElementById(r) && (document.getElementById(r).value = "true"),
|
||
(-1 !== i.toString().indexOf("-") || document.getElementById(r + "-1") || document.getElementById(r + "-2") || document.getElementById(r + "-3") || document.getElementById(r + "-4")) && (-1 !== r.indexOf("-") && (r = r.split("-")[0]),
|
||
document.getElementById(r + "-1") && (document.getElementById(r + "-1").value = "true"),
|
||
document.getElementById(r + "-2") && (document.getElementById(r + "-2").value = "true"),
|
||
document.getElementById(r + "-3") && (document.getElementById(r + "-3").value = "true"),
|
||
document.getElementById(r + "-4") && (document.getElementById(r + "-4").value = "true")),
|
||
setTimeout((function() {
|
||
window.location.reload()
|
||
}
|
||
), 100)) : (l(),
|
||
window.Scandic.DisableEnableButton.enable(Vi("#validate-form button[type=submit]")))
|
||
},
|
||
error: function(e) {
|
||
l(),
|
||
window.Scandic.DisableEnableButton.enable(Vi("#validate-form button[type=submit]"))
|
||
}
|
||
}).catch((function(e) {
|
||
l(),
|
||
window.Scandic.DisableEnableButton.enable(Vi("#validate-form button[type=submit]"))
|
||
}
|
||
))
|
||
};
|
||
e.securityCheckModifySweetAlert = function(t, i) {
|
||
var n = e.AncillaryService.ancillaryData.bookingInformation.bookingId
|
||
, l = !!document.getElementById(n) && document.getElementById(n).value
|
||
, c = n;
|
||
e.alertType = t,
|
||
i && (n = c = i.currentTarget.parentElement.querySelector(".bookingId-multiroom").value,
|
||
l = !!document.getElementById(n) && document.getElementById(n).value,
|
||
-1 !== n.indexOf("-") && 1 === n.split("-")[1] && (n = n.split("-")[0])),
|
||
Vi("#confirmation-form").remove(),
|
||
Wi(".confirmation-form h2.title").text(e.validationForm.title),
|
||
Wi(".confirmation-form p.desc").text(e.validationForm.desc),
|
||
"false" == l ? Ui.fire({
|
||
html: e.validationForm.form,
|
||
showConfirmButton: !0,
|
||
showCancelButton: !0,
|
||
showLoaderOnConfirm: !0,
|
||
buttonsStyling: !0,
|
||
confirmButtonColor: null,
|
||
confirmButtonText: e.validationForm.confirmBtnText,
|
||
cancelButtonText: e.validationForm.cancelBtnText,
|
||
animation: !1,
|
||
cancelButtonColor: "#00838e",
|
||
customClass: "form_inverted",
|
||
showCloseButton: !0,
|
||
reverseButtons: !0,
|
||
onOpen: function() {
|
||
var t = Ui.getContent()
|
||
, i = t.querySelector.bind(t)
|
||
, n = i("#firstName")
|
||
, a = i("#lastName")
|
||
, r = i("#emailaddress");
|
||
n.addEventListener("blur", (function() {
|
||
o(0, ".firstNameErrorRequired", ".firstNameErropattern", e.validName, n.value)
|
||
}
|
||
)),
|
||
a.addEventListener("blur", (function() {
|
||
o(0, ".lastNameErrorRequired", ".lastNameErrorpattern", e.validName, a.value)
|
||
}
|
||
)),
|
||
r.addEventListener("blur", (function() {
|
||
o(0, ".emailErrorRequired", ".emailErrorpattern", e.validEmail, r.value)
|
||
}
|
||
))
|
||
},
|
||
onBeforeOpen: function() {
|
||
s(".firstNameErrorRequired", ".firstNameErropattern"),
|
||
s(".lastNameErrorRequired", ".lastNameErrorpattern"),
|
||
s(".emailErrorRequired", ".emailErrorpattern")
|
||
},
|
||
preConfirm: function(e) {
|
||
return r(Ui.getContent(), c),
|
||
!1
|
||
},
|
||
allowOutsideClick: function() {
|
||
return !Ui.isLoading()
|
||
}
|
||
}) : function(t) {
|
||
"cancel" === e.alertType ? a(t) : "changeDate" === e.alertType ? Gi.toggle((function() {
|
||
window.location.href = Vi("#modify-date-link").attr("data-url")
|
||
}
|
||
)) : Gi.toggle((function() {
|
||
var e = "#" + t.currentTarget.parentElement.querySelector(".modifyContactDetails").id;
|
||
window.location.href = Vi(e).attr("data-url")
|
||
}
|
||
))
|
||
}(i)
|
||
}
|
||
;
|
||
var s = function(e, t) {
|
||
Wi(e).css("display", "none"),
|
||
Wi(t).css("display", "none")
|
||
}
|
||
, l = function() {
|
||
Wi(".confirmation-form h2.title").html('<span class="error-text" style="font-size: inherit; font-weight: inherit;">' + e.validationForm.errorTitle + "</span>"),
|
||
Wi(".confirmation-form p.desc").text(e.validationForm.errorDesc)
|
||
};
|
||
e.logInToModifyDatesAlert = function(t) {
|
||
"true" === t && Ui.fire({
|
||
title: e.myBookingSweetAlertData.ChangeDateTitle,
|
||
html: e.myBookingSweetAlertData.ChangeDateText,
|
||
confirmButtonText: e.myBookingSweetAlertData.ConfirmationButtonText,
|
||
confirmButtonColor: "#00838e",
|
||
showCancelButton: !1,
|
||
animation: !1,
|
||
allowOutsideClick: !0,
|
||
buttonsStyling: !0,
|
||
customClass: "inverted_modify_details",
|
||
showLoaderOnConfirm: !1,
|
||
reverseButtons: !0
|
||
})
|
||
}
|
||
;
|
||
var c = document.getElementById("confirmation-form");
|
||
if (c) {
|
||
c.querySelector("#firstName").addEventListener("blur", (function(t) {
|
||
o(0, ".firstNameErrorRequired", ".firstNameErropattern", e.validName, t.target.value)
|
||
}
|
||
)),
|
||
c.querySelector("#lastName").addEventListener("blur", (function(t) {
|
||
o(0, ".lastNameErrorRequired", ".lastNameErrorpattern", e.validName, t.target.value)
|
||
}
|
||
)),
|
||
c.querySelector("#emailaddress").addEventListener("blur", (function(t) {
|
||
o(0, ".emailErrorRequired", ".emailErrorpattern", e.validEmail, t.target.value)
|
||
}
|
||
)),
|
||
Vi("#validate-form button[type=submit]").on("click", (function(e) {
|
||
e.preventDefault(),
|
||
d(),
|
||
r(c)
|
||
}
|
||
));
|
||
var d = function() {
|
||
o(0, ".firstNameErrorRequired", ".firstNameErropattern", e.validName, document.querySelector("#firstName").value),
|
||
o(0, ".lastNameErrorRequired", ".lastNameErrorpattern", e.validName, document.querySelector("#lastName").value),
|
||
o(0, ".emailErrorRequired", ".emailErrorpattern", e.validEmail, document.querySelector("#emailaddress").value)
|
||
}
|
||
}
|
||
}
|
||
]);
|
||
var Qi = i(19755);
|
||
angular.module("xenaApp").controller("MeetingRoomInquiryWidgetController", ["$scope", "calendarService", function(e, t) {
|
||
var i;
|
||
e.validEmail = $i.emailRegexp,
|
||
e.validPhoneNumber = $i.phone.loose,
|
||
e.validMeetingInquiryMessage = $i.noHtmlTags,
|
||
e.today = new Date,
|
||
e.fromDate = new Date,
|
||
e.toDate = new Date,
|
||
e.calendarService = t,
|
||
e.serviceData = {},
|
||
e.calendarService.init(e.serviceData, {}, e.fromDate, e.toDate, {}),
|
||
e.$watch("fromDate", (function(t) {
|
||
e.minToDate = i(),
|
||
e.toDate < e.minToDate && (e.toDate = new Date(e.minToDate.getTime()))
|
||
}
|
||
), !0),
|
||
i = function() {
|
||
var t = new Date(e.fromDate.getTime());
|
||
return t.setDate(t.getDate()),
|
||
t
|
||
}
|
||
,
|
||
e.callCheckAvailabilityEvent = function(e) {
|
||
(0,
|
||
m.LO)()
|
||
}
|
||
,
|
||
e.resetToDefaultState = function(t) {
|
||
Qi("#meetingRoomInquiryForm").valid() || Qi(".meetingForm").each((function(t, i) {
|
||
Qi(i).valid() || (Qi(i).val() || (e[Qi(i).attr("name")] = Qi(i).val()),
|
||
Qi(i).val(Qi(i).val()).trigger("input"))
|
||
}
|
||
)),
|
||
e.serviceData.isDefaultView = !1,
|
||
t ? (Qi("#widgetdestination").val(""),
|
||
e.q = "") : e.q = Qi("#widgetdestination").val()
|
||
}
|
||
,
|
||
e.minToDate = i()
|
||
}
|
||
]);
|
||
var Yi = i(19755)
|
||
, Ji = i(19755)
|
||
, Xi = i(86455);
|
||
angular.module("xenaApp").controller("ProfileCreditCardsController", ["$scope", "$http", function(e, t) {
|
||
e.performedOperations = [],
|
||
e.$watch("performedOperations", (function() {
|
||
e.performedOperationsJson = angular.toJson(e.performedOperations)
|
||
}
|
||
), !0),
|
||
e.isCardRemoved = function(t) {
|
||
return e.performedOperations.some((function(e) {
|
||
return e.key === t
|
||
}
|
||
))
|
||
}
|
||
,
|
||
e.removeCardWithConfirmation = function(i, n) {
|
||
var a = n.currentTarget;
|
||
Xi.fire({
|
||
title: a.getAttribute("data-js-confirm-title"),
|
||
html: a.getAttribute("data-confirm-text"),
|
||
showCancelButton: !0,
|
||
confirmButtonText: a.getAttribute("data-confirm-ok"),
|
||
cancelButtonText: a.getAttribute("data-confirm-cancel"),
|
||
confirmButtonColor: "#00838e",
|
||
animation: "slide-from-top",
|
||
allowOutsideClick: !0,
|
||
buttonsStyling: !0,
|
||
customClass: "remove-card",
|
||
showLoaderOnConfirm: !1
|
||
}).then((function(n) {
|
||
n.value && function(i, n) {
|
||
if (0 != Yi("#credit-card-via-api").val()) {
|
||
Yi("#loader").length < 1 ? Yi("body").append('\n\t\t\t\t\t<div id="loader" class="modal" style="display: block;">\n\t\t\t\t\t\t<div class="modal__circular-loader-container">\n\t\t\t\t\t\t\t<div class="circular-loader circular-loader--light circular-loader--large"></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="modal__background-layer"></div>\n\t\t\t\t\t</div>\n\t\t\t\t') : Yi("#loader").show();
|
||
var a = {
|
||
id: i
|
||
}
|
||
, o = function(e) {
|
||
Yi("#loader").hide(),
|
||
Yi("p.speech-bubble").remove(),
|
||
Yi(".l-combo-main-sidebar-small__main > nav").after('\n\t\t\t\t\t<p class="speech-bubble speech-bubble--short speech-bubble--point-down">\n\t\t\t\t\t\t'.concat(Yi("#cc-delete-failure-msg").val(), "\n\t\t\t\t\t</p>\n\t\t\t\t\t")),
|
||
Ji("html, body").animate({
|
||
scrollTop: Ji(".l-combo-main-sidebar-small__main > p.speech-bubble").offset().top - 50
|
||
}, "slow", (function() {
|
||
Yi(".l-combo-main-sidebar-small__main > p.speech-bubble").focus()
|
||
}
|
||
)),
|
||
(0,
|
||
m.s6)({
|
||
number_of_saved_cards: Yi(".credit-card").length || 0,
|
||
card_action_status: "no"
|
||
})
|
||
};
|
||
t.post("/ajax/profile/deletecreditcard", a).then((function(t) {
|
||
Yi("#loader").hide(),
|
||
t.data.Success ? (Yi("p.speech-bubble").remove(),
|
||
e.performedOperations.push({
|
||
key: i
|
||
}),
|
||
(0,
|
||
m.s6)({
|
||
number_of_saved_cards: Yi(".credit-card").length - 1 || 0,
|
||
card_action_status: "yes"
|
||
})) : o(t.data)
|
||
}
|
||
), o)
|
||
} else
|
||
e.performedOperations.push({
|
||
key: i
|
||
})
|
||
}(i)
|
||
}
|
||
))
|
||
}
|
||
}
|
||
]);
|
||
i(81222),
|
||
i(10712),
|
||
i(1466),
|
||
i(95454),
|
||
i(91519);
|
||
var Ki = i(19755);
|
||
angular.module("xenaApp").directive("showMore", (function() {
|
||
return {
|
||
restrict: "A",
|
||
link: function(e, t, i) {
|
||
var n;
|
||
Ki(".toggle-btn", t).on("click", (n = t,
|
||
function() {
|
||
var e = Ki(".togglable-table-item", n)
|
||
, t = 0;
|
||
si(Ki(this)),
|
||
e.first().is(":visible") ? (Ki(e.get().reverse()).each((function() {
|
||
var e = Ki(this);
|
||
setTimeout((function() {
|
||
e.fadeOut(50)
|
||
}
|
||
), t),
|
||
t += 3
|
||
}
|
||
)),
|
||
Ki("html, body").animate({
|
||
scrollTop: n.offset().top - 170
|
||
}, 3 * e.length)) : e.each((function() {
|
||
var e = Ki(this);
|
||
setTimeout((function() {
|
||
e.fadeIn()
|
||
}
|
||
), t),
|
||
t += 3
|
||
}
|
||
))
|
||
}
|
||
))
|
||
}
|
||
}
|
||
}
|
||
)),
|
||
angular.module("xenaApp").directive("creditCardNumber", (function() {
|
||
return {
|
||
require: "ngModel",
|
||
link: function(e, t, i, n) {
|
||
t.on("blur", (function() {
|
||
e[i.ngModel] = function(e) {
|
||
if (void 0 !== e) {
|
||
var t = e.replace(/\s/g, "").replace(/-/g, "");
|
||
return t === e ? e : t
|
||
}
|
||
}(e[i.ngModel])
|
||
}
|
||
)),
|
||
e.$watch("cardType", (function() {
|
||
n.$validate()
|
||
}
|
||
)),
|
||
n.$validators.creditCardNumber = function(t, i) {
|
||
return !1 === e.creditCardRequired || (void 0 === e.cardType || "" === e.cardType || void 0 === i || function(e, t, i) {
|
||
var n = new Array;
|
||
n[0] = {
|
||
name: "Visa",
|
||
length: "13,16",
|
||
prefixes: "4",
|
||
checkdigit: !0
|
||
},
|
||
n[1] = {
|
||
name: "MasterCard",
|
||
length: "16",
|
||
prefixes: "51,52,53,54,55",
|
||
checkdigit: !0
|
||
},
|
||
n[2] = {
|
||
name: "DinersClub",
|
||
length: "14,16",
|
||
prefixes: "36,38,54,55",
|
||
checkdigit: !0
|
||
},
|
||
n[3] = {
|
||
name: "AmericanExpress",
|
||
length: "15",
|
||
prefixes: "34,37",
|
||
checkdigit: !0
|
||
},
|
||
n[4] = {
|
||
name: "Dankort",
|
||
length: "16",
|
||
prefixes: "5019",
|
||
checkdigit: !1
|
||
};
|
||
for (var a = -1, o = 0; o < n.length; o++)
|
||
if (t.toLowerCase() == n[o].name.toLowerCase()) {
|
||
a = o;
|
||
break
|
||
}
|
||
if (-1 == a)
|
||
return !1;
|
||
if (0 == e.length)
|
||
return !1;
|
||
var r = e = e.replace(/\s/g, "")
|
||
, s = null;
|
||
if (i.search("_") >= 1)
|
||
switch (i.substring(i.indexOf("_") - 1, i.indexOf("_"))) {
|
||
case "0":
|
||
s = cd0Value;
|
||
break;
|
||
case "1":
|
||
s = cd1Value;
|
||
break;
|
||
case "2":
|
||
s = cd2Value;
|
||
break;
|
||
case "3":
|
||
s = cd3Value
|
||
}
|
||
else
|
||
s = "";
|
||
if (e == s)
|
||
return !0;
|
||
if (!/^[0-9]{13,19}$/.exec(r))
|
||
return !1;
|
||
if (n[a].checkdigit) {
|
||
var l, c = 0, d = 1;
|
||
for (o = r.length - 1; o >= 0; o--)
|
||
(l = Number(r.charAt(o)) * d) > 9 && (c += 1,
|
||
l -= 10),
|
||
c += l,
|
||
d = 1 == d ? 2 : 1;
|
||
if (c % 10 != 0)
|
||
return !1
|
||
}
|
||
if ("5490997771092064" == r)
|
||
return !1;
|
||
var u = !1
|
||
, p = !1
|
||
, m = new Array
|
||
, h = new Array;
|
||
for (m = n[a].prefixes.split(","),
|
||
o = 0; o < m.length; o++)
|
||
new RegExp("^" + m[o]).test(r) && (p = !0);
|
||
if (!p)
|
||
return !1;
|
||
for (h = n[a].length.split(","),
|
||
d = 0; d < h.length; d++)
|
||
r.length == h[d] && (u = !0);
|
||
return !!u || !1
|
||
}(i, e.cardType, ""))
|
||
}
|
||
}
|
||
}
|
||
}
|
||
));
|
||
i(99492),
|
||
i(36185),
|
||
i(17163),
|
||
i(21306),
|
||
i(6762),
|
||
i(50867),
|
||
i(60979);
|
||
angular.module("xenaApp").directive("track", (function() {
|
||
return {
|
||
restrict: "A",
|
||
link: function(e, t, i) {
|
||
i.$$element.click(function(e) {
|
||
return function() {
|
||
var t, i, n;
|
||
(!(n = angular.isString(e.track) ? angular.fromJson(e.track.split("'").join('"')) : e.track).hasOwnProperty("trackEvent") || n.trackEvent) && (t = n.trackingInformation,
|
||
i = n.trackingEvent,
|
||
(0,
|
||
m.ay)(i, t))
|
||
}
|
||
}(i))
|
||
}
|
||
}
|
||
}
|
||
));
|
||
i(20905),
|
||
i(70579),
|
||
i(62485),
|
||
i(40494);
|
||
var Zi = i(60885)
|
||
, en = i.n(Zi)
|
||
, tn = i(19755);
|
||
!function() {
|
||
var e = {}
|
||
, t = !1;
|
||
function i(e) {
|
||
this.element = tn(e),
|
||
this.searchField = this.element.find('input[type="text"]'),
|
||
this.searchAction = this.element.data("search-action"),
|
||
this.emptyText = this.element.data("search-empty") || ""
|
||
}
|
||
function n(e, t) {
|
||
this.searchType = e,
|
||
this.language = t,
|
||
this.subscribers = [],
|
||
this.dataFiles = {
|
||
hotels: "hotels",
|
||
hotelsAndCities: "citiesandhotels",
|
||
default: "all"
|
||
}
|
||
}
|
||
i.prototype.getFormattedEmptyText = function(e) {
|
||
return this.emptyText.length ? '<div class="tt-no-result">' + this.emptyText.replace("{0}", '"<strong>' + e + '</strong>"') + "</div>" : '<div class="tt-no-result">Sorry, we cannot find "<strong>' + e + '</strong>"</div>'
|
||
}
|
||
,
|
||
i.prototype.getSuggestionTemplate = function(e) {
|
||
var t = "nordicsea";
|
||
return "HotelPage" === e.Type ? t = "crocus" : "CityPage" === e.Type && (t = "dawn"),
|
||
'<div class="needsclick"><svg class="icon icon--xs icon--' + t + '" viewBox="0 0 32 32"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/Static/img/icons/sprites.svg#icon-map-marker"></use></svg>' + e.Name + "</div>"
|
||
}
|
||
,
|
||
i.prototype.getDefaultSuggestion = function() {
|
||
if (angular) {
|
||
var e = angular.element(this.searchField[0]).scope();
|
||
if (e && e.serviceData)
|
||
return {
|
||
Name: e.serviceData.searchQuery,
|
||
Type: e.serviceData.destinationType,
|
||
Id: e.serviceData.destination
|
||
}
|
||
}
|
||
return null
|
||
}
|
||
,
|
||
i.prototype.forceOpenTypeahead = function() {
|
||
var e = tn.Event("keyleft");
|
||
e.keyCode = e.which = 37,
|
||
this.searchField.trigger(e)
|
||
}
|
||
,
|
||
i.prototype.visitUrl = function(e) {
|
||
document.location.href = e
|
||
}
|
||
,
|
||
i.prototype.updateAngularScope = function(e) {
|
||
if (angular) {
|
||
var t = angular.element(this.searchField[0]).scope()
|
||
, i = tn('*[data-js="widget-icon"]');
|
||
t && t.serviceData && (e ? ((tn(".hotel-meetings-page")[0] || tn(".global-meeting-page")[0]) && (ki(),
|
||
i.hide(),
|
||
e.isPilotHotel = !1,
|
||
e.isDefaultView = !0),
|
||
t.serviceData.searchQuery = e.Name || t.serviceData.searchQuery,
|
||
t.serviceData.destinationType = e.Type ? this.inputName(e.Type) : t.serviceData.destinationType,
|
||
t.serviceData.destination = e.Id || t.serviceData.destination,
|
||
t.serviceData.isPilotHotel = !!e.isPilotHotel && e.isPilotHotel,
|
||
t.serviceData.isDefaultView = !!e.isDefaultView && e.isDefaultView,
|
||
"hotel" == t.serviceData.destinationType && (t.serviceData.trackingDestination = e.Url.split("/")[3])) : (t.serviceData.searchQuery = "",
|
||
tn(window).width() < window.ScreenHelper.CSS_LARGE_BREAKPOINT && (t.serviceData.isDefaultView = !1)),
|
||
t.$apply())
|
||
}
|
||
}
|
||
,
|
||
i.prototype.preventSearchCriteriaSave = function() {
|
||
if (angular) {
|
||
var e = angular.element(this.searchField[0]).scope();
|
||
e && e.serviceData && (e.serviceData.preventSearchCriteriaSave = !0,
|
||
e.$apply())
|
||
}
|
||
}
|
||
,
|
||
i.prototype.inputName = function(e) {
|
||
return "HotelPage" === e || "hotel" === e ? "hotel" : "city"
|
||
}
|
||
,
|
||
i.prototype.init = function(e) {
|
||
var i = this;
|
||
this.searchField.typeahead({
|
||
hint: !1,
|
||
highlight: !0,
|
||
autoselect: !0,
|
||
minLength: 1
|
||
}, {
|
||
name: "citiesAndHotels",
|
||
displayKey: "Name",
|
||
source: function(t, i) {
|
||
t = t.replace(/scandic/gi, ""),
|
||
e.search(t, (function(e) {
|
||
i(e)
|
||
}
|
||
))
|
||
},
|
||
templates: {
|
||
empty: function(e) {
|
||
return i.getFormattedEmptyText(e.query)
|
||
},
|
||
suggestion: i.getSuggestionTemplate
|
||
},
|
||
limit: 30
|
||
}).on("typeahead:selected", (function(e, t) {
|
||
i.currentSuggestion = t,
|
||
"visit-url" === i.searchAction && i.visitUrl(t.Url),
|
||
i.updateAngularScope(i.currentSuggestion)
|
||
}
|
||
)).on("typeahead:change", (function(e, t) {
|
||
"" === t && (tn(".check-availability_btn").removeAttr("href"),
|
||
i.currentSuggestion = null,
|
||
i.searchField.val(t),
|
||
i.updateAngularScope(t))
|
||
}
|
||
)).on("typeahead:render", (function(e, t) {
|
||
i.currentSuggestion = t
|
||
}
|
||
)).on("typeahead:autocomplete", (function(e, t) {
|
||
i.searchField.typeahead("close")
|
||
}
|
||
)).on("typeahead:close", (function() {
|
||
i.currentSuggestion && (i.searchField.val(i.currentSuggestion.Name),
|
||
"form-input" !== i.searchAction && "visit-url" !== i.searchAction || i.updateAngularScope(i.currentSuggestion))
|
||
}
|
||
)),
|
||
i.searchField.on("focus keydown", (function(e) {
|
||
tn(this).val().length > 0 && (9 === e.keyCode ? i.searchField.typeahead("close") : i.forceOpenTypeahead()),
|
||
t || ((0,
|
||
m.fe)(),
|
||
t = !0)
|
||
}
|
||
)),
|
||
i.searchField.closest("form").on("submit", (function(e) {
|
||
i.currentSuggestion && (i.searchField.typeahead("close"),
|
||
"visit-url" === i.searchAction && i.visitUrl(i.currentSuggestion.Url)),
|
||
"visit-url" !== i.searchAction && i.currentSuggestion || (i.preventSearchCriteriaSave(),
|
||
e.preventDefault())
|
||
}
|
||
)),
|
||
setTimeout((function() {
|
||
i.currentSuggestion = i.getDefaultSuggestion(i.searchField[0])
|
||
}
|
||
))
|
||
}
|
||
,
|
||
n.prototype.init = function() {
|
||
var e = this;
|
||
fetch(e.getDataSourceUrl()).then((function(t) {
|
||
t.json().then((function(t) {
|
||
e.bloodHound = new (en())({
|
||
datumTokenizer: function(e) {
|
||
return en().tokenizers.whitespace(e.tokens.join(" "))
|
||
},
|
||
queryTokenizer: en().tokenizers.whitespace,
|
||
local: t,
|
||
sufficient: 1
|
||
}),
|
||
e.bloodHound.initialize();
|
||
for (var i = e.subscribers.length; i--; )
|
||
"function" == typeof e.subscribers[i].init && e.subscribers[i].init(e.bloodHound)
|
||
}
|
||
))
|
||
}
|
||
))
|
||
}
|
||
,
|
||
n.prototype.addSubscriber = function(e) {
|
||
this.subscribers.push(e)
|
||
}
|
||
,
|
||
n.prototype.getDataSourceUrl = function() {
|
||
var e;
|
||
return e = "hotels" === this.searchType || "hotelsAndCities" === this.searchType ? this.dataFiles[this.searchType] : this.dataFiles.default,
|
||
window.location.origin + "/ta/" + e + "-" + this.language
|
||
}
|
||
,
|
||
tn(document).ready((function() {
|
||
var t = tn('*[data-js="hotel-search-bar"]');
|
||
if (t.length)
|
||
for (var a in t.each((function() {
|
||
var t = tn(this).data("search-type")
|
||
, a = tn(this).data("search-language")
|
||
, o = new i(this);
|
||
e[t] || (e[t] = new n(t,a)),
|
||
e[t].addSubscriber(o),
|
||
tn(this).data("search-widget", o)
|
||
}
|
||
)),
|
||
e)
|
||
e.hasOwnProperty(a) && e[a].init()
|
||
}
|
||
))
|
||
}(),
|
||
tn(document).ready((function() {
|
||
tn('*[data-js="search-list-expander"]').on("click", (function(e) {
|
||
"A" !== e.target.nodeName && (e.preventDefault(),
|
||
tn(this).parent().toggleClass("is-expanded"))
|
||
}
|
||
))
|
||
}
|
||
));
|
||
i(78079)
|
||
},
|
||
98780: function(e, t, i) {
|
||
"use strict";
|
||
i.d(t, {
|
||
ay: function() {
|
||
return s
|
||
},
|
||
$4: function() {
|
||
return p
|
||
},
|
||
fe: function() {
|
||
return m
|
||
},
|
||
LO: function() {
|
||
return h
|
||
},
|
||
W5: function() {
|
||
return f
|
||
},
|
||
Jf: function() {
|
||
return v
|
||
},
|
||
UQ: function() {
|
||
return b
|
||
},
|
||
s6: function() {
|
||
return w
|
||
},
|
||
bV: function() {
|
||
return S
|
||
},
|
||
Z6: function() {
|
||
return _
|
||
},
|
||
py: function() {
|
||
return C
|
||
},
|
||
ke: function() {
|
||
return k
|
||
},
|
||
fR: function() {
|
||
return T
|
||
},
|
||
j8: function() {
|
||
return x
|
||
}
|
||
});
|
||
var n = i(19755);
|
||
function a(e, t) {
|
||
var i = Object.keys(e);
|
||
if (Object.getOwnPropertySymbols) {
|
||
var n = Object.getOwnPropertySymbols(e);
|
||
t && (n = n.filter((function(t) {
|
||
return Object.getOwnPropertyDescriptor(e, t).enumerable
|
||
}
|
||
))),
|
||
i.push.apply(i, n)
|
||
}
|
||
return i
|
||
}
|
||
function o(e) {
|
||
for (var t = 1; t < arguments.length; t++) {
|
||
var i = null != arguments[t] ? arguments[t] : {};
|
||
t % 2 ? a(Object(i), !0).forEach((function(t) {
|
||
r(e, t, i[t])
|
||
}
|
||
)) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : a(Object(i)).forEach((function(t) {
|
||
Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t))
|
||
}
|
||
))
|
||
}
|
||
return e
|
||
}
|
||
function r(e, t, i) {
|
||
return t in e ? Object.defineProperty(e, t, {
|
||
value: i,
|
||
enumerable: !0,
|
||
configurable: !0,
|
||
writable: !0
|
||
}) : e[t] = i,
|
||
e
|
||
}
|
||
function s(e, t) {
|
||
var i = {};
|
||
t && (i = t),
|
||
i.event = e,
|
||
window.datalayer.push(i),
|
||
void 0 !== window._satellite && window._satellite.track(e)
|
||
}
|
||
function l(e) {
|
||
return "[object Date]" === Object.prototype.toString.call(e)
|
||
}
|
||
function c(e, t) {
|
||
for (var i = e.split("&"), n = 0; n < i.length; n++) {
|
||
var a = i[n].split("=");
|
||
if (decodeURIComponent(a[0]) === t)
|
||
return decodeURIComponent(a[1])
|
||
}
|
||
return "information missing"
|
||
}
|
||
function d(e) {
|
||
var t = e.split("-");
|
||
return e = new Date(t[0],t[1] - 1,t[2])
|
||
}
|
||
function u(e) {
|
||
return e && e.length > 0 ? e : "n/a"
|
||
}
|
||
function p() {
|
||
var e = "information missing"
|
||
, t = n('*[data-js="inquiry-widget"]')
|
||
, i = c(t.serialize(), "fromDate")
|
||
, a = c(t.serialize(), "toDate")
|
||
, o = n("#MeetingRoomId").find("option:selected").text()
|
||
, r = t.find('*[data-js="destination"]').val()
|
||
, s = t.find('*[data-js="hotelOperaId"]').val()
|
||
, p = t.find('*[data-js="hotelName"]').val();
|
||
p || (p = c(t.serialize(), "q").replace("+", " ")),
|
||
r || (r = c(t.serialize(), "hotelDestination").replace("+", " ")),
|
||
s || (s = c(t.serialize(), "hotelOperaId").replace("+", " ")),
|
||
a = d(a),
|
||
i = d(i);
|
||
var m = {
|
||
event: "meetinginquiresent",
|
||
meetingpagetype: "meetinginquiresent"
|
||
};
|
||
m.meetingarrivalyear = function(e, t) {
|
||
var i = t;
|
||
return l(e) && (i = (i = e.getFullYear()).toString()),
|
||
i
|
||
}(i, e).toLowerCase(),
|
||
m.meetingarrivalmonth = function(e, t) {
|
||
var i = t;
|
||
return l(e) && (i = (i = e.getMonth() + 1) < 10 ? "0" + i.toString() : i.toString()),
|
||
i
|
||
}(i, e).toLowerCase(),
|
||
m.meetingarrivalday = function(e, t) {
|
||
var i = t;
|
||
return l(e) && (i = (i = e.getDate()) < 10 ? "0" + i.toString() : i.toString()),
|
||
i
|
||
}(i, e).toLowerCase(),
|
||
m.meetingduration = function(e, t, i) {
|
||
var n = i;
|
||
return l(e) && l(t) && (n = (n = (t - e) / 864e5).toString()),
|
||
n
|
||
}(i, a, e).toLowerCase(),
|
||
m.meetingparticipant = c(t.serialize(), "NumberOfParticipants").toLowerCase(),
|
||
m.meetingroom = o.toLowerCase(),
|
||
m.meetingdestination = u(r).toLowerCase(),
|
||
m.meetinghotelid = u(s).toLowerCase(),
|
||
m.meetinghotelname = u(p).toLowerCase(),
|
||
window.datalayer.push(m),
|
||
void 0 !== window._satellite && window._satellite.track("meetinginquireend")
|
||
}
|
||
function m() {
|
||
var e = n('*[data-js="inquiry-widget"]')
|
||
, t = e.find('*[data-js="destination"]').val()
|
||
, i = e.find('*[data-js="hotelOperaId"]').val()
|
||
, a = e.find('*[data-js="hotelName"]').val();
|
||
a || (a = c(e.serialize(), "q").replace("+", " "));
|
||
var o = {
|
||
event: "meetinginquireopen",
|
||
meetingpagetype: "meetinginquireopen"
|
||
};
|
||
o.meetingdestination = u(t).toLowerCase(),
|
||
o.meetinghotelid = u(i).toLowerCase(),
|
||
o.meetinghotelname = u(a).toLowerCase(),
|
||
window.datalayer.push(o),
|
||
void 0 !== window._satellite && window._satellite.track("meetinginquirestart")
|
||
}
|
||
function h(e) {
|
||
var t = n('*[data-js="inquiry-widget"]')
|
||
, i = t.find('*[data-js="destination"]').val()
|
||
, a = t.find('*[data-js="operaId"]').val()
|
||
, o = t.find('*[data-js="hotelName"]').val()
|
||
, r = e;
|
||
o || (o = c(t.serialize(), "q").replace("+", " "));
|
||
var s = {
|
||
event: "meetingcheckavailabilityend",
|
||
meetingpagetype: "meetingcheckavailability"
|
||
};
|
||
s.meetingdestination = u(i).toLowerCase(),
|
||
s.meetinghotelid = u(a).toLowerCase(),
|
||
s.meetinghotelname = u(o).toLowerCase(),
|
||
void 0 !== r && (s.meetingroomname = u(r).toLowerCase()),
|
||
window.datalayer.push(s),
|
||
void 0 !== window._satellite && window._satellite.track("meetingcheckavailabilityend")
|
||
}
|
||
function f() {
|
||
g("paymentattemptstart")
|
||
}
|
||
function g(e) {
|
||
var t = n('*[data-js="hotelId"]').val()
|
||
, i = n("#countryCode-0").find("option:selected").val()
|
||
, a = {};
|
||
a.event = e,
|
||
a.paymentcustomercountry = u(i).toLowerCase(),
|
||
a.paymenthotelid = u(t).toLowerCase(),
|
||
"paymentattemptstart" == e && (a = function(e) {
|
||
var t, i = !1, n = !1;
|
||
if (!document.querySelector(".payment-options__item.selected"))
|
||
return e;
|
||
document.querySelector(".credit-card-form__saved .payment-options__item.selected") ? (i = !0,
|
||
n = !0,
|
||
t = document.querySelector(".credit-card-form__saved .payment-options__item.selected label").classList[0].split("--")[1]) : t = (n = -1 != document.querySelector(".payment-options__item.selected label").classList[1].indexOf("--new")) ? "new_card" : "other_payment_method";
|
||
return e = o(o({}, e), {}, {
|
||
issavedcreditcard: i,
|
||
iscreditcard: n,
|
||
paymentstatus: "attempt",
|
||
paymenttype: t
|
||
})
|
||
}(a)),
|
||
window.datalayer.push(a),
|
||
void 0 !== window._satellite && window._satellite.track(e)
|
||
}
|
||
function v(e) {
|
||
y("mapclick", e)
|
||
}
|
||
function b(e) {
|
||
y("mapviewroomsclick", e)
|
||
}
|
||
function y(e, t) {
|
||
var i = {};
|
||
i.event = e,
|
||
i.maptype = n(t).find(".price__currency").length > 0 ? "hotelPrice" : "hotelname",
|
||
n(t).find(".hotelId")[0] && (i.hotelid = n(t).find(".hotelId").length > 0 ? n(t).find(".hotelId")[0].value : null),
|
||
"hotelPrice" === i.maptype && (i.hotelprice = n(t).find(".webtest-main-price").text().split(" ", 1)[0],
|
||
i.hotelcurrency = n(t).find(".price__currency").text()),
|
||
window.datalayer.push(i),
|
||
void 0 !== window._satellite && window._satellite.track(e)
|
||
}
|
||
function w(e) {
|
||
var t = {
|
||
event: "credit_card_action",
|
||
credit_card_actions: "delete_card"
|
||
};
|
||
t.number_of_saved_cards = e.number_of_saved_cards.toString(),
|
||
t.card_action_status = e.card_action_status,
|
||
window.datalayer.push(t),
|
||
void 0 !== window._satellite && window._satellite.track("credit_card_action")
|
||
}
|
||
function S(e) {
|
||
var t = {
|
||
event: "view_and_apply_click"
|
||
};
|
||
t.job_position = e.jobPosition,
|
||
window.datalayer.push(t),
|
||
void 0 !== window._satellite && window._satellite.track("view_and_apply_click")
|
||
}
|
||
function _(e) {
|
||
var t = window.datalayer[0];
|
||
t.no_of_jobsearch_result = e,
|
||
window.datalayer.push(t),
|
||
void 0 !== window._satellite && window._satellite.track("joblisting")
|
||
}
|
||
function C() {
|
||
var e = {
|
||
event: "available_positions_signup"
|
||
};
|
||
window.datalayer.push(e),
|
||
void 0 !== window._satellite && window._satellite.track("available_positions_signup")
|
||
}
|
||
function k(e, t) {
|
||
var i = window.datalayer[0];
|
||
i.event = "jobfiltersearch",
|
||
i.no_of_jobsearch_result = e,
|
||
Object.keys(t).forEach((function(e) {
|
||
i[e] = t[e]
|
||
}
|
||
)),
|
||
window.datalayer.push(i),
|
||
void 0 !== window._satellite && window._satellite.track("joblisting")
|
||
}
|
||
function T() {
|
||
var e = {
|
||
event: "memberregistration"
|
||
};
|
||
window.datalayer.push(e),
|
||
void 0 !== window._satellite && window._satellite.track("memberregistration")
|
||
}
|
||
function x(e) {
|
||
e && "undefined" != typeof _etmc && (_etmc.push(["setOrgId", document.getElementById("salesforce-script").dataset.orgid]),
|
||
e.userMemberId ? (_etmc.push(["setUserInfo", {
|
||
email: e.userMemberId
|
||
}]),
|
||
_etmc.push(["trackPageView", {
|
||
item: e.pageId,
|
||
search: e.pageUrl
|
||
}])) : (_etmc.push(["doNotTrack"]),
|
||
_etmc.push(["trackPageView"])))
|
||
}
|
||
},
|
||
3517: function(e, t, i) {
|
||
"use strict";
|
||
var n = i(19755)
|
||
, a = i(19755);
|
||
function o(e) {
|
||
return o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
|
||
return typeof e
|
||
}
|
||
: function(e) {
|
||
return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
|
||
}
|
||
,
|
||
o(e)
|
||
}
|
||
function r(e) {
|
||
var t, i, r, s = function i(r, s) {
|
||
if (!(this instanceof i))
|
||
return new i(r,s);
|
||
var l = {
|
||
direction: "horizontal",
|
||
touchEventsTarget: "container",
|
||
initialSlide: 0,
|
||
speed: 300,
|
||
autoplay: !1,
|
||
autoplayDisableOnInteraction: !0,
|
||
autoplayStopOnLast: !1,
|
||
iOSEdgeSwipeDetection: !1,
|
||
iOSEdgeSwipeThreshold: 20,
|
||
freeMode: !1,
|
||
freeModeMomentum: !0,
|
||
freeModeMomentumRatio: 1,
|
||
freeModeMomentumBounce: !0,
|
||
freeModeMomentumBounceRatio: 1,
|
||
freeModeSticky: !1,
|
||
freeModeMinimumVelocity: .02,
|
||
autoHeight: !1,
|
||
setWrapperSize: !1,
|
||
virtualTranslate: !1,
|
||
effect: "slide",
|
||
coverflow: {
|
||
rotate: 50,
|
||
stretch: 0,
|
||
depth: 100,
|
||
modifier: 1,
|
||
slideShadows: !0
|
||
},
|
||
flip: {
|
||
slideShadows: !0,
|
||
limitRotation: !0
|
||
},
|
||
cube: {
|
||
slideShadows: !0,
|
||
shadow: !0,
|
||
shadowOffset: 20,
|
||
shadowScale: .94
|
||
},
|
||
fade: {
|
||
crossFade: !1
|
||
},
|
||
parallax: !1,
|
||
scrollbar: null,
|
||
scrollbarHide: !0,
|
||
scrollbarDraggable: !1,
|
||
scrollbarSnapOnRelease: !1,
|
||
keyboardControl: !1,
|
||
mousewheelControl: !1,
|
||
mousewheelReleaseOnEdges: !1,
|
||
mousewheelInvert: !1,
|
||
mousewheelForceToAxis: !1,
|
||
mousewheelSensitivity: 1,
|
||
hashnav: !1,
|
||
breakpoints: void 0,
|
||
spaceBetween: 0,
|
||
slidesPerView: 1,
|
||
slidesPerColumn: 1,
|
||
slidesPerColumnFill: "column",
|
||
slidesPerGroup: 1,
|
||
centeredSlides: !1,
|
||
slidesOffsetBefore: 0,
|
||
slidesOffsetAfter: 0,
|
||
roundLengths: !1,
|
||
touchRatio: 1,
|
||
touchAngle: 45,
|
||
simulateTouch: !0,
|
||
shortSwipes: !0,
|
||
longSwipes: !0,
|
||
longSwipesRatio: .5,
|
||
longSwipesMs: 300,
|
||
followFinger: !0,
|
||
onlyExternal: !1,
|
||
threshold: 0,
|
||
touchMoveStopPropagation: !0,
|
||
uniqueNavElements: !0,
|
||
pagination: null,
|
||
paginationElement: "span",
|
||
paginationClickable: !1,
|
||
paginationHide: !1,
|
||
paginationBulletRender: null,
|
||
paginationProgressRender: null,
|
||
paginationFractionRender: null,
|
||
paginationCustomRender: null,
|
||
paginationType: "bullets",
|
||
resistance: !0,
|
||
resistanceRatio: .85,
|
||
nextButton: null,
|
||
prevButton: null,
|
||
watchSlidesProgress: !1,
|
||
watchSlidesVisibility: !1,
|
||
grabCursor: !1,
|
||
preventClicks: !0,
|
||
preventClicksPropagation: !0,
|
||
slideToClickedSlide: !1,
|
||
lazyLoading: !1,
|
||
lazyLoadingInPrevNext: !1,
|
||
lazyLoadingInPrevNextAmount: 1,
|
||
lazyLoadingOnTransitionStart: !1,
|
||
preloadImages: !0,
|
||
updateOnImagesReady: !0,
|
||
loop: !1,
|
||
loopAdditionalSlides: 0,
|
||
loopedSlides: null,
|
||
control: void 0,
|
||
controlInverse: !1,
|
||
controlBy: "slide",
|
||
allowSwipeToPrev: !0,
|
||
allowSwipeToNext: !0,
|
||
swipeHandler: null,
|
||
noSwiping: !0,
|
||
noSwipingClass: "swiper-no-swiping",
|
||
slideClass: "swiper-slide",
|
||
slideActiveClass: "swiper-slide-active",
|
||
slideVisibleClass: "swiper-slide-visible",
|
||
slideDuplicateClass: "swiper-slide-duplicate",
|
||
slideNextClass: "swiper-slide-next",
|
||
slidePrevClass: "swiper-slide-prev",
|
||
wrapperClass: "swiper-wrapper",
|
||
bulletClass: "swiper-pagination-bullet",
|
||
bulletActiveClass: "swiper-pagination-bullet-active",
|
||
buttonDisabledClass: "swiper-button-disabled",
|
||
paginationCurrentClass: "swiper-pagination-current",
|
||
paginationTotalClass: "swiper-pagination-total",
|
||
paginationHiddenClass: "swiper-pagination-hidden",
|
||
paginationProgressbarClass: "swiper-pagination-progressbar",
|
||
observer: !1,
|
||
observeParents: !1,
|
||
a11y: !1,
|
||
prevSlideMessage: "Previous slide",
|
||
nextSlideMessage: "Next slide",
|
||
firstSlideMessage: "This is the first slide",
|
||
lastSlideMessage: "This is the last slide",
|
||
paginationBulletMessage: "Go to slide {{index}}",
|
||
runCallbacksOnInit: !0
|
||
}
|
||
, c = s && s.virtualTranslate;
|
||
s = s || {};
|
||
var d = {};
|
||
for (var u in s)
|
||
if ("object" !== o(s[u]) || null === s[u] || (s[u].nodeType || s[u] === window || s[u] === document || void 0 !== e && s[u]instanceof e || void 0 !== n && s[u]instanceof n))
|
||
d[u] = s[u];
|
||
else
|
||
for (var p in d[u] = {},
|
||
s[u])
|
||
d[u][p] = s[u][p];
|
||
for (var m in l)
|
||
if (void 0 === s[m])
|
||
s[m] = l[m];
|
||
else if ("object" === o(s[m]))
|
||
for (var h in l[m])
|
||
void 0 === s[m][h] && (s[m][h] = l[m][h]);
|
||
var f = this;
|
||
if (f.params = s,
|
||
f.originalParams = d,
|
||
f.classNames = [],
|
||
void 0 !== t && void 0 !== e && (t = e),
|
||
(void 0 !== t || (t = void 0 === e ? window.Dom7 || window.Zepto || a : e)) && (f.$ = t,
|
||
f.currentBreakpoint = void 0,
|
||
f.getActiveBreakpoint = function() {
|
||
if (!f.params.breakpoints)
|
||
return !1;
|
||
var e, t = !1, i = [];
|
||
for (e in "string" == typeof f.params.breakpoints && (f.params.breakpoints = JSON.parse(f.params.breakpoints)),
|
||
f.params.breakpoints)
|
||
f.params.breakpoints.hasOwnProperty(e) && i.push(e);
|
||
i.sort((function(e, t) {
|
||
return parseInt(e, 10) > parseInt(t, 10)
|
||
}
|
||
));
|
||
for (var n = 0; n < i.length; n++)
|
||
(e = i[n]) >= window.innerWidth && !t && (t = e);
|
||
return t || "max"
|
||
}
|
||
,
|
||
f.setBreakpoint = function() {
|
||
var e = f.getActiveBreakpoint();
|
||
if (e && f.currentBreakpoint !== e) {
|
||
var t = e in f.params.breakpoints ? f.params.breakpoints[e] : f.originalParams
|
||
, i = f.params.loop && t.slidesPerView !== f.params.slidesPerView;
|
||
for (var n in t)
|
||
f.params[n] = t[n];
|
||
f.currentBreakpoint = e,
|
||
i && f.destroyLoop && f.reLoop(!0)
|
||
}
|
||
}
|
||
,
|
||
f.params.breakpoints && f.setBreakpoint(),
|
||
f.container = t(r),
|
||
0 !== f.container.length)) {
|
||
if (f.container.length > 1) {
|
||
var g = [];
|
||
return f.container.each((function() {
|
||
g.push(new i(this,s))
|
||
}
|
||
)),
|
||
g
|
||
}
|
||
f.container[0].swiper = f,
|
||
f.container.data("swiper", f),
|
||
f.classNames.push("swiper-container-" + f.params.direction),
|
||
f.params.freeMode && f.classNames.push("swiper-container-free-mode"),
|
||
f.support.flexbox || (f.classNames.push("swiper-container-no-flexbox"),
|
||
f.params.slidesPerColumn = 1),
|
||
f.params.autoHeight && f.classNames.push("swiper-container-autoheight"),
|
||
(f.params.parallax || f.params.watchSlidesVisibility) && (f.params.watchSlidesProgress = !0),
|
||
["cube", "coverflow", "flip"].indexOf(f.params.effect) >= 0 && (f.support.transforms3d ? (f.params.watchSlidesProgress = !0,
|
||
f.classNames.push("swiper-container-3d")) : f.params.effect = "slide"),
|
||
"slide" !== f.params.effect && f.classNames.push("swiper-container-" + f.params.effect),
|
||
"cube" === f.params.effect && (f.params.resistanceRatio = 0,
|
||
f.params.slidesPerView = 1,
|
||
f.params.slidesPerColumn = 1,
|
||
f.params.slidesPerGroup = 1,
|
||
f.params.centeredSlides = !1,
|
||
f.params.spaceBetween = 0,
|
||
f.params.virtualTranslate = !0,
|
||
f.params.setWrapperSize = !1),
|
||
"fade" !== f.params.effect && "flip" !== f.params.effect || (f.params.slidesPerView = 1,
|
||
f.params.slidesPerColumn = 1,
|
||
f.params.slidesPerGroup = 1,
|
||
f.params.watchSlidesProgress = !0,
|
||
f.params.spaceBetween = 0,
|
||
f.params.setWrapperSize = !1,
|
||
void 0 === c && (f.params.virtualTranslate = !0)),
|
||
f.params.grabCursor && f.support.touch && (f.params.grabCursor = !1),
|
||
f.wrapper = f.container.children("." + f.params.wrapperClass),
|
||
f.params.pagination && (f.paginationContainer = t(f.params.pagination),
|
||
f.params.uniqueNavElements && "string" == typeof f.params.pagination && f.paginationContainer.length > 1 && 1 === f.container.find(f.params.pagination).length && (f.paginationContainer = f.container.find(f.params.pagination)),
|
||
"bullets" === f.params.paginationType && f.params.paginationClickable ? f.paginationContainer.addClass("swiper-pagination-clickable") : f.params.paginationClickable = !1,
|
||
f.paginationContainer.addClass("swiper-pagination-" + f.params.paginationType)),
|
||
(f.params.nextButton || f.params.prevButton) && (f.params.nextButton && (f.nextButton = t(f.params.nextButton),
|
||
f.params.uniqueNavElements && "string" == typeof f.params.nextButton && f.nextButton.length > 1 && 1 === f.container.find(f.params.nextButton).length && (f.nextButton = f.container.find(f.params.nextButton))),
|
||
f.params.prevButton && (f.prevButton = t(f.params.prevButton),
|
||
f.params.uniqueNavElements && "string" == typeof f.params.prevButton && f.prevButton.length > 1 && 1 === f.container.find(f.params.prevButton).length && (f.prevButton = f.container.find(f.params.prevButton)))),
|
||
f.isHorizontal = function() {
|
||
return "horizontal" === f.params.direction
|
||
}
|
||
,
|
||
f.rtl = f.isHorizontal() && ("rtl" === f.container[0].dir.toLowerCase() || "rtl" === f.container.css("direction")),
|
||
f.rtl && f.classNames.push("swiper-container-rtl"),
|
||
f.rtl && (f.wrongRTL = "-webkit-box" === f.wrapper.css("display")),
|
||
f.params.slidesPerColumn > 1 && f.classNames.push("swiper-container-multirow"),
|
||
f.device.android && f.classNames.push("swiper-container-android"),
|
||
f.container.addClass(f.classNames.join(" ")),
|
||
f.translate = 0,
|
||
f.progress = 0,
|
||
f.velocity = 0,
|
||
f.lockSwipeToNext = function() {
|
||
f.params.allowSwipeToNext = !1
|
||
}
|
||
,
|
||
f.lockSwipeToPrev = function() {
|
||
f.params.allowSwipeToPrev = !1
|
||
}
|
||
,
|
||
f.lockSwipes = function() {
|
||
f.params.allowSwipeToNext = f.params.allowSwipeToPrev = !1
|
||
}
|
||
,
|
||
f.unlockSwipeToNext = function() {
|
||
f.params.allowSwipeToNext = !0
|
||
}
|
||
,
|
||
f.unlockSwipeToPrev = function() {
|
||
f.params.allowSwipeToPrev = !0
|
||
}
|
||
,
|
||
f.unlockSwipes = function() {
|
||
f.params.allowSwipeToNext = f.params.allowSwipeToPrev = !0
|
||
}
|
||
,
|
||
f.params.grabCursor && (f.container[0].style.cursor = "move",
|
||
f.container[0].style.cursor = "-webkit-grab",
|
||
f.container[0].style.cursor = "-moz-grab",
|
||
f.container[0].style.cursor = "grab"),
|
||
f.imagesToLoad = [],
|
||
f.imagesLoaded = 0,
|
||
f.loadImage = function(e, t, i, n, a) {
|
||
var o;
|
||
function r() {
|
||
a && a()
|
||
}
|
||
e.complete && n ? r() : t ? ((o = new window.Image).onload = r,
|
||
o.onerror = r,
|
||
i && (o.srcset = i),
|
||
t && (o.src = t)) : r()
|
||
}
|
||
,
|
||
f.preloadImages = function() {
|
||
function e() {
|
||
null != f && (void 0 !== f.imagesLoaded && f.imagesLoaded++,
|
||
f.imagesLoaded === f.imagesToLoad.length && (f.params.updateOnImagesReady && f.update(),
|
||
f.emit("onImagesReady", f)))
|
||
}
|
||
f.imagesToLoad = f.container.find("img");
|
||
for (var t = 0; t < f.imagesToLoad.length; t++)
|
||
f.loadImage(f.imagesToLoad[t], f.imagesToLoad[t].currentSrc || f.imagesToLoad[t].getAttribute("src"), f.imagesToLoad[t].srcset || f.imagesToLoad[t].getAttribute("srcset"), !0, e)
|
||
}
|
||
,
|
||
f.autoplayTimeoutId = void 0,
|
||
f.autoplaying = !1,
|
||
f.autoplayPaused = !1,
|
||
f.startAutoplay = function() {
|
||
return void 0 === f.autoplayTimeoutId && (!!f.params.autoplay && (!f.autoplaying && (f.autoplaying = !0,
|
||
f.emit("onAutoplayStart", f),
|
||
void H())))
|
||
}
|
||
,
|
||
f.stopAutoplay = function(e) {
|
||
f.autoplayTimeoutId && (f.autoplayTimeoutId && clearTimeout(f.autoplayTimeoutId),
|
||
f.autoplaying = !1,
|
||
f.autoplayTimeoutId = void 0,
|
||
f.emit("onAutoplayStop", f))
|
||
}
|
||
,
|
||
f.pauseAutoplay = function(e) {
|
||
f.autoplayPaused || (f.autoplayTimeoutId && clearTimeout(f.autoplayTimeoutId),
|
||
f.autoplayPaused = !0,
|
||
0 === e ? (f.autoplayPaused = !1,
|
||
H()) : f.wrapper.transitionEnd((function() {
|
||
f && (f.autoplayPaused = !1,
|
||
f.autoplaying ? H() : f.stopAutoplay())
|
||
}
|
||
)))
|
||
}
|
||
,
|
||
f.minTranslate = function() {
|
||
return -f.snapGrid[0]
|
||
}
|
||
,
|
||
f.maxTranslate = function() {
|
||
return -f.snapGrid[f.snapGrid.length - 1]
|
||
}
|
||
,
|
||
f.updateAutoHeight = function() {
|
||
var e = f.slides.eq(f.activeIndex)[0];
|
||
if (void 0 !== e) {
|
||
var t = e.offsetHeight;
|
||
t && f.wrapper.css("height", t + "px")
|
||
}
|
||
}
|
||
,
|
||
f.updateContainerSize = function() {
|
||
var e, t;
|
||
e = void 0 !== f.params.width ? f.params.width : f.container[0].clientWidth,
|
||
t = void 0 !== f.params.height ? f.params.height : f.container[0].clientHeight,
|
||
0 === e && f.isHorizontal() || 0 === t && !f.isHorizontal() || (e = e - parseInt(f.container.css("padding-left"), 10) - parseInt(f.container.css("padding-right"), 10),
|
||
t = t - parseInt(f.container.css("padding-top"), 10) - parseInt(f.container.css("padding-bottom"), 10),
|
||
f.width = e,
|
||
f.height = t,
|
||
f.size = f.isHorizontal() ? f.width : f.height)
|
||
}
|
||
,
|
||
f.updateSlidesSize = function() {
|
||
f.slides = f.wrapper.children("." + f.params.slideClass),
|
||
f.snapGrid = [],
|
||
f.slidesGrid = [],
|
||
f.slidesSizesGrid = [];
|
||
var e, t = f.params.spaceBetween, i = -f.params.slidesOffsetBefore, n = 0, a = 0;
|
||
if (void 0 !== f.size) {
|
||
var o, r;
|
||
"string" == typeof t && t.indexOf("%") >= 0 && (t = parseFloat(t.replace("%", "")) / 100 * f.size),
|
||
f.virtualSize = -t,
|
||
f.rtl ? f.slides.css({
|
||
marginLeft: "",
|
||
marginTop: ""
|
||
}) : f.slides.css({
|
||
marginRight: "",
|
||
marginBottom: ""
|
||
}),
|
||
f.params.slidesPerColumn > 1 && (o = Math.floor(f.slides.length / f.params.slidesPerColumn) === f.slides.length / f.params.slidesPerColumn ? f.slides.length : Math.ceil(f.slides.length / f.params.slidesPerColumn) * f.params.slidesPerColumn,
|
||
"auto" !== f.params.slidesPerView && "row" === f.params.slidesPerColumnFill && (o = Math.max(o, f.params.slidesPerView * f.params.slidesPerColumn)));
|
||
var s, l = f.params.slidesPerColumn, c = o / l, d = c - (f.params.slidesPerColumn * c - f.slides.length);
|
||
for (e = 0; e < f.slides.length; e++) {
|
||
r = 0;
|
||
var u, p, m, h = f.slides.eq(e);
|
||
if (f.params.slidesPerColumn > 1)
|
||
"column" === f.params.slidesPerColumnFill ? (m = e - (p = Math.floor(e / l)) * l,
|
||
(p > d || p === d && m === l - 1) && ++m >= l && (m = 0,
|
||
p++),
|
||
u = p + m * o / l,
|
||
h.css({
|
||
"-webkit-box-ordinal-group": u,
|
||
"-moz-box-ordinal-group": u,
|
||
"-ms-flex-order": u,
|
||
"-webkit-order": u,
|
||
order: u
|
||
})) : p = e - (m = Math.floor(e / c)) * c,
|
||
h.css({
|
||
"margin-top": 0 !== m && f.params.spaceBetween && f.params.spaceBetween + "px"
|
||
}).attr("data-swiper-column", p).attr("data-swiper-row", m);
|
||
"none" !== h.css("display") && ("auto" === f.params.slidesPerView ? (r = f.isHorizontal() ? h.outerWidth(!0) : h.outerHeight(!0),
|
||
f.params.roundLengths && (r = N(r))) : (340,
|
||
r = (f.size + 340 - (f.params.slidesPerView - 1) * t) / f.params.slidesPerView,
|
||
f.params.roundLengths && (r = N(r)),
|
||
f.isHorizontal() ? f.slides[e].style.width = r + "px" : f.slides[e].style.height = r + "px"),
|
||
f.slides[e].swiperSlideSize = r,
|
||
f.slidesSizesGrid.push(r),
|
||
f.params.centeredSlides ? (i = i + r / 2 + n / 2 + t,
|
||
0 === e && (i = i - f.size / 2 - t),
|
||
Math.abs(i) < .001 && (i = 0),
|
||
a % f.params.slidesPerGroup == 0 && f.snapGrid.push(i),
|
||
f.slidesGrid.push(i)) : (a % f.params.slidesPerGroup == 0 && f.snapGrid.push(i),
|
||
f.slidesGrid.push(i),
|
||
i = i + r + t),
|
||
f.virtualSize += r + t,
|
||
n = r,
|
||
a++)
|
||
}
|
||
if (f.virtualSize = Math.max(f.virtualSize, f.size) + f.params.slidesOffsetAfter,
|
||
f.rtl && f.wrongRTL && ("slide" === f.params.effect || "coverflow" === f.params.effect) && f.wrapper.css({
|
||
width: f.virtualSize + f.params.spaceBetween + "px"
|
||
}),
|
||
f.support.flexbox && !f.params.setWrapperSize || (f.isHorizontal() ? f.wrapper.css({
|
||
width: f.virtualSize + f.params.spaceBetween + "px"
|
||
}) : f.wrapper.css({
|
||
height: f.virtualSize + f.params.spaceBetween + "px"
|
||
})),
|
||
f.params.slidesPerColumn > 1 && (f.virtualSize = (r + f.params.spaceBetween) * o,
|
||
f.virtualSize = Math.ceil(f.virtualSize / f.params.slidesPerColumn) - f.params.spaceBetween,
|
||
f.wrapper.css({
|
||
width: f.virtualSize + f.params.spaceBetween + "px"
|
||
}),
|
||
f.params.centeredSlides)) {
|
||
for (s = [],
|
||
e = 0; e < f.snapGrid.length; e++)
|
||
f.snapGrid[e] < f.virtualSize + f.snapGrid[0] && s.push(f.snapGrid[e]);
|
||
f.snapGrid = s
|
||
}
|
||
if (!f.params.centeredSlides) {
|
||
for (s = [],
|
||
e = 0; e < f.snapGrid.length; e++)
|
||
f.snapGrid[e] <= f.virtualSize - f.size && s.push(f.snapGrid[e]);
|
||
f.snapGrid = s,
|
||
Math.floor(f.virtualSize - f.size) - Math.floor(f.snapGrid[f.snapGrid.length - 1]) > 1 && f.snapGrid.push(f.virtualSize - f.size)
|
||
}
|
||
0 === f.snapGrid.length && (f.snapGrid = [0]),
|
||
0 !== f.params.spaceBetween && (f.isHorizontal() ? f.rtl ? f.slides.css({
|
||
marginLeft: t + "px"
|
||
}) : f.slides.css({
|
||
marginRight: t + "px"
|
||
}) : f.slides.css({
|
||
marginBottom: t + "px"
|
||
})),
|
||
f.params.watchSlidesProgress && f.updateSlidesOffset()
|
||
}
|
||
}
|
||
,
|
||
f.updateSlidesOffset = function() {
|
||
for (var e = 0; e < f.slides.length; e++)
|
||
f.slides[e].swiperSlideOffset = f.isHorizontal() ? f.slides[e].offsetLeft : f.slides[e].offsetTop
|
||
}
|
||
,
|
||
f.updateSlidesProgress = function(e) {
|
||
if (void 0 === e && (e = f.translate || 0),
|
||
0 !== f.slides.length) {
|
||
void 0 === f.slides[0].swiperSlideOffset && f.updateSlidesOffset();
|
||
var t = -e;
|
||
f.rtl && (t = e),
|
||
f.slides.removeClass(f.params.slideVisibleClass);
|
||
for (var i = 0; i < f.slides.length; i++) {
|
||
var n = f.slides[i]
|
||
, a = (t - n.swiperSlideOffset) / (n.swiperSlideSize + f.params.spaceBetween);
|
||
if (f.params.watchSlidesVisibility) {
|
||
var o = -(t - n.swiperSlideOffset)
|
||
, r = o + f.slidesSizesGrid[i];
|
||
(o >= 0 && o < f.size || r > 0 && r <= f.size || o <= 0 && r >= f.size) && f.slides.eq(i).addClass(f.params.slideVisibleClass)
|
||
}
|
||
n.progress = f.rtl ? -a : a
|
||
}
|
||
}
|
||
}
|
||
,
|
||
f.updateProgress = function(e) {
|
||
void 0 === e && (e = f.translate || 0);
|
||
var t = f.maxTranslate() - f.minTranslate()
|
||
, i = f.isBeginning
|
||
, n = f.isEnd;
|
||
0 === t ? (f.progress = 0,
|
||
f.isBeginning = f.isEnd = !0) : (f.progress = (e - f.minTranslate()) / t,
|
||
f.isBeginning = f.progress <= 0,
|
||
f.isEnd = f.progress >= 1),
|
||
f.isBeginning && !i && f.emit("onReachBeginning", f),
|
||
f.isEnd && !n && f.emit("onReachEnd", f),
|
||
f.params.watchSlidesProgress && f.updateSlidesProgress(e),
|
||
f.emit("onProgress", f, f.progress)
|
||
}
|
||
,
|
||
f.updateActiveIndex = function() {
|
||
var e, t, i, n = f.rtl ? f.translate : -f.translate;
|
||
for (t = 0; t < f.slidesGrid.length; t++)
|
||
void 0 !== f.slidesGrid[t + 1] ? n >= f.slidesGrid[t] && n < f.slidesGrid[t + 1] - (f.slidesGrid[t + 1] - f.slidesGrid[t]) / 2 ? e = t : n >= f.slidesGrid[t] && n < f.slidesGrid[t + 1] && (e = t + 1) : n >= f.slidesGrid[t] && (e = t);
|
||
(e < 0 || void 0 === e) && (e = 0),
|
||
(i = Math.floor(e / f.params.slidesPerGroup)) >= f.snapGrid.length && (i = f.snapGrid.length - 1),
|
||
e !== f.activeIndex && (f.snapIndex = i,
|
||
f.previousIndex = f.activeIndex,
|
||
f.activeIndex = e,
|
||
f.updateClasses())
|
||
}
|
||
,
|
||
f.updateClasses = function() {
|
||
f.slides.removeClass(f.params.slideActiveClass + " " + f.params.slideNextClass + " " + f.params.slidePrevClass);
|
||
var e = f.slides.eq(f.activeIndex);
|
||
e.addClass(f.params.slideActiveClass);
|
||
var i = e.next("." + f.params.slideClass).addClass(f.params.slideNextClass);
|
||
f.params.loop && 0 === i.length && f.slides.eq(0).addClass(f.params.slideNextClass);
|
||
var n = e.prev("." + f.params.slideClass).addClass(f.params.slidePrevClass);
|
||
if (f.params.loop && 0 === n.length && f.slides.eq(-1).addClass(f.params.slidePrevClass),
|
||
f.paginationContainer && f.paginationContainer.length > 0) {
|
||
var a, o = f.params.loop ? Math.ceil((f.slides.length - 2 * f.loopedSlides) / f.params.slidesPerGroup) : f.snapGrid.length;
|
||
if (f.params.loop ? ((a = Math.ceil((f.activeIndex - f.loopedSlides) / f.params.slidesPerGroup)) > f.slides.length - 1 - 2 * f.loopedSlides && (a -= f.slides.length - 2 * f.loopedSlides),
|
||
a > o - 1 && (a -= o),
|
||
a < 0 && "bullets" !== f.params.paginationType && (a = o + a)) : a = void 0 !== f.snapIndex ? f.snapIndex : f.activeIndex || 0,
|
||
"bullets" === f.params.paginationType && f.bullets && f.bullets.length > 0 && (f.bullets.removeClass(f.params.bulletActiveClass),
|
||
f.paginationContainer.length > 1 ? f.bullets.each((function() {
|
||
t(this).index() === a && t(this).addClass(f.params.bulletActiveClass)
|
||
}
|
||
)) : f.bullets.eq(a).addClass(f.params.bulletActiveClass)),
|
||
"fraction" === f.params.paginationType && (f.paginationContainer.find("." + f.params.paginationCurrentClass).text(a + 1),
|
||
f.paginationContainer.find("." + f.params.paginationTotalClass).text(o)),
|
||
"progress" === f.params.paginationType) {
|
||
var r = (a + 1) / o
|
||
, s = r
|
||
, l = 1;
|
||
f.isHorizontal() || (l = r,
|
||
s = 1),
|
||
f.paginationContainer.find("." + f.params.paginationProgressbarClass).transform("translate3d(0,0,0) scaleX(" + s + ") scaleY(" + l + ")").transition(f.params.speed)
|
||
}
|
||
"custom" === f.params.paginationType && f.params.paginationCustomRender && (f.paginationContainer.html(f.params.paginationCustomRender(f, a + 1, o)),
|
||
f.emit("onPaginationRendered", f, f.paginationContainer[0]))
|
||
}
|
||
f.params.loop || (f.params.prevButton && f.prevButton && f.prevButton.length > 0 && (f.isBeginning ? (f.prevButton.addClass(f.params.buttonDisabledClass),
|
||
f.params.a11y && f.a11y && f.a11y.disable(f.prevButton)) : (f.prevButton.removeClass(f.params.buttonDisabledClass),
|
||
f.params.a11y && f.a11y && f.a11y.enable(f.prevButton))),
|
||
f.params.nextButton && f.nextButton && f.nextButton.length > 0 && (f.isEnd ? (f.nextButton.addClass(f.params.buttonDisabledClass),
|
||
f.params.a11y && f.a11y && f.a11y.disable(f.nextButton)) : (f.nextButton.removeClass(f.params.buttonDisabledClass),
|
||
f.params.a11y && f.a11y && f.a11y.enable(f.nextButton))))
|
||
}
|
||
,
|
||
f.updatePagination = function() {
|
||
if (f.params.pagination && f.paginationContainer && f.paginationContainer.length > 0) {
|
||
var e = "";
|
||
if ("bullets" === f.params.paginationType) {
|
||
for (var t = f.params.loop ? Math.ceil((f.slides.length - 2 * f.loopedSlides) / f.params.slidesPerGroup) : f.snapGrid.length, i = 0; i < t; i++)
|
||
f.params.paginationBulletRender ? e += f.params.paginationBulletRender(i, f.params.bulletClass) : e += "<" + f.params.paginationElement + ' class="' + f.params.bulletClass + '"></' + f.params.paginationElement + ">";
|
||
f.paginationContainer.html(e),
|
||
f.bullets = f.paginationContainer.find("." + f.params.bulletClass),
|
||
f.params.paginationClickable && f.params.a11y && f.a11y && f.a11y.initPagination()
|
||
}
|
||
"fraction" === f.params.paginationType && (e = f.params.paginationFractionRender ? f.params.paginationFractionRender(f, f.params.paginationCurrentClass, f.params.paginationTotalClass) : '<span class="' + f.params.paginationCurrentClass + '"></span> / <span class="' + f.params.paginationTotalClass + '"></span>',
|
||
f.paginationContainer.html(e)),
|
||
"progress" === f.params.paginationType && (e = f.params.paginationProgressRender ? f.params.paginationProgressRender(f, f.params.paginationProgressbarClass) : '<span class="' + f.params.paginationProgressbarClass + '"></span>',
|
||
f.paginationContainer.html(e)),
|
||
"custom" !== f.params.paginationType && f.emit("onPaginationRendered", f, f.paginationContainer[0])
|
||
}
|
||
}
|
||
,
|
||
f.update = function(e) {
|
||
function t() {
|
||
i = Math.min(Math.max(f.translate, f.maxTranslate()), f.minTranslate()),
|
||
f.setWrapperTranslate(i),
|
||
f.updateActiveIndex(),
|
||
f.updateClasses()
|
||
}
|
||
var i;
|
||
(f.updateContainerSize(),
|
||
f.updateSlidesSize(),
|
||
f.updateProgress(),
|
||
f.updatePagination(),
|
||
f.updateClasses(),
|
||
f.params.scrollbar && f.scrollbar && f.scrollbar.set(),
|
||
e) ? (f.controller && f.controller.spline && (f.controller.spline = void 0),
|
||
f.params.freeMode ? (t(),
|
||
f.params.autoHeight && f.updateAutoHeight()) : (("auto" === f.params.slidesPerView || f.params.slidesPerView > 1) && f.isEnd && !f.params.centeredSlides ? f.slideTo(f.slides.length - 1, 0, !1, !0) : f.slideTo(f.activeIndex, 0, !1, !0)) || t()) : f.params.autoHeight && f.updateAutoHeight()
|
||
}
|
||
,
|
||
f.onResize = function(e) {
|
||
f.params.breakpoints && f.setBreakpoint();
|
||
var t = f.params.allowSwipeToPrev
|
||
, i = f.params.allowSwipeToNext;
|
||
f.params.allowSwipeToPrev = f.params.allowSwipeToNext = !0,
|
||
f.updateContainerSize(),
|
||
f.updateSlidesSize(),
|
||
("auto" === f.params.slidesPerView || f.params.freeMode || e) && f.updatePagination(),
|
||
f.params.scrollbar && f.scrollbar && f.scrollbar.set(),
|
||
f.controller && f.controller.spline && (f.controller.spline = void 0);
|
||
var n = !1;
|
||
if (f.params.freeMode) {
|
||
var a = Math.min(Math.max(f.translate, f.maxTranslate()), f.minTranslate());
|
||
f.setWrapperTranslate(a),
|
||
f.updateActiveIndex(),
|
||
f.updateClasses(),
|
||
f.params.autoHeight && f.updateAutoHeight()
|
||
} else
|
||
f.updateClasses(),
|
||
n = ("auto" === f.params.slidesPerView || f.params.slidesPerView > 1) && f.isEnd && !f.params.centeredSlides ? f.slideTo(f.slides.length - 1, 0, !1, !0) : f.slideTo(f.activeIndex, 0, !1, !0);
|
||
f.params.lazyLoading && !n && f.lazy && f.lazy.load(),
|
||
f.params.allowSwipeToPrev = t,
|
||
f.params.allowSwipeToNext = i
|
||
}
|
||
;
|
||
var v = ["mousedown", "mousemove", "mouseup"];
|
||
window.navigator.pointerEnabled ? v = ["pointerdown", "pointermove", "pointerup"] : window.navigator.msPointerEnabled && (v = ["MSPointerDown", "MSPointerMove", "MSPointerUp"]),
|
||
f.touchEvents = {
|
||
start: f.support.touch || !f.params.simulateTouch ? "touchstart" : v[0],
|
||
move: f.support.touch || !f.params.simulateTouch ? "touchmove" : v[1],
|
||
end: f.support.touch || !f.params.simulateTouch ? "touchend" : v[2]
|
||
},
|
||
(window.navigator.pointerEnabled || window.navigator.msPointerEnabled) && ("container" === f.params.touchEventsTarget ? f.container : f.wrapper).addClass("swiper-wp8-" + f.params.direction),
|
||
f.initEvents = function(e) {
|
||
var t = e ? "off" : "on"
|
||
, i = e ? "removeEventListener" : "addEventListener"
|
||
, n = "container" === f.params.touchEventsTarget ? f.container[0] : f.wrapper[0]
|
||
, a = f.support.touch ? n : document
|
||
, o = !!f.params.nested;
|
||
f.browser.ie ? (n[i](f.touchEvents.start, f.onTouchStart, !1),
|
||
a[i](f.touchEvents.move, f.onTouchMove, o),
|
||
a[i](f.touchEvents.end, f.onTouchEnd, !1)) : (f.support.touch && (n[i](f.touchEvents.start, f.onTouchStart, !1),
|
||
n[i](f.touchEvents.move, f.onTouchMove, o),
|
||
n[i](f.touchEvents.end, f.onTouchEnd, !1)),
|
||
!s.simulateTouch || f.device.ios || f.device.android || (n[i]("mousedown", f.onTouchStart, !1),
|
||
document[i]("mousemove", f.onTouchMove, o),
|
||
document[i]("mouseup", f.onTouchEnd, !1))),
|
||
window[i]("resize", f.onResize),
|
||
f.params.nextButton && f.nextButton && f.nextButton.length > 0 && (f.nextButton[t]("click", f.onClickNext),
|
||
f.params.a11y && f.a11y && f.nextButton[t]("keydown", f.a11y.onEnterKey)),
|
||
f.params.prevButton && f.prevButton && f.prevButton.length > 0 && (f.prevButton[t]("click", f.onClickPrev),
|
||
f.params.a11y && f.a11y && f.prevButton[t]("keydown", f.a11y.onEnterKey)),
|
||
f.params.pagination && f.params.paginationClickable && (f.paginationContainer[t]("click", "." + f.params.bulletClass, f.onClickIndex),
|
||
f.params.a11y && f.a11y && f.paginationContainer[t]("keydown", "." + f.params.bulletClass, f.a11y.onEnterKey)),
|
||
(f.params.preventClicks || f.params.preventClicksPropagation) && n[i]("click", f.preventClicks, !0)
|
||
}
|
||
,
|
||
f.attachEvents = function() {
|
||
f.initEvents()
|
||
}
|
||
,
|
||
f.detachEvents = function() {
|
||
f.initEvents(!0)
|
||
}
|
||
,
|
||
f.allowClick = !0,
|
||
f.preventClicks = function(e) {
|
||
f.allowClick || (f.params.preventClicks && e.preventDefault(),
|
||
f.params.preventClicksPropagation && f.animating && (e.stopPropagation(),
|
||
e.stopImmediatePropagation()))
|
||
}
|
||
,
|
||
f.onClickNext = function(e) {
|
||
e.preventDefault(),
|
||
f.isEnd && !f.params.loop || f.slideNext()
|
||
}
|
||
,
|
||
f.onClickPrev = function(e) {
|
||
e.preventDefault(),
|
||
f.isBeginning && !f.params.loop || f.slidePrev()
|
||
}
|
||
,
|
||
f.onClickIndex = function(e) {
|
||
e.preventDefault();
|
||
var i = t(this).index() * f.params.slidesPerGroup;
|
||
f.params.loop && (i += f.loopedSlides),
|
||
f.slideTo(i)
|
||
}
|
||
,
|
||
f.updateClickedSlide = function(e) {
|
||
var i = B(e, "." + f.params.slideClass)
|
||
, n = !1;
|
||
if (i)
|
||
for (var a = 0; a < f.slides.length; a++)
|
||
f.slides[a] === i && (n = !0);
|
||
if (!i || !n)
|
||
return f.clickedSlide = void 0,
|
||
void (f.clickedIndex = void 0);
|
||
if (f.clickedSlide = i,
|
||
f.clickedIndex = t(i).index(),
|
||
f.params.slideToClickedSlide && void 0 !== f.clickedIndex && f.clickedIndex !== f.activeIndex) {
|
||
var o, r = f.clickedIndex;
|
||
if (f.params.loop) {
|
||
if (f.animating)
|
||
return;
|
||
o = t(f.clickedSlide).attr("data-swiper-slide-index"),
|
||
f.params.centeredSlides ? r < f.loopedSlides - f.params.slidesPerView / 2 || r > f.slides.length - f.loopedSlides + f.params.slidesPerView / 2 ? (f.fixLoop(),
|
||
r = f.wrapper.children("." + f.params.slideClass + '[data-swiper-slide-index="' + o + '"]:not(.swiper-slide-duplicate)').eq(0).index(),
|
||
setTimeout((function() {
|
||
f.slideTo(r)
|
||
}
|
||
), 0)) : f.slideTo(r) : r > f.slides.length - f.params.slidesPerView ? (f.fixLoop(),
|
||
r = f.wrapper.children("." + f.params.slideClass + '[data-swiper-slide-index="' + o + '"]:not(.swiper-slide-duplicate)').eq(0).index(),
|
||
setTimeout((function() {
|
||
f.slideTo(r)
|
||
}
|
||
), 0)) : f.slideTo(r)
|
||
} else
|
||
f.slideTo(r)
|
||
}
|
||
}
|
||
;
|
||
var b, y, w, S, _, C, k, T, x, A, I, P, D = "input, select, textarea, button", O = Date.now(), E = [];
|
||
if (f.animating = !1,
|
||
f.touches = {
|
||
startX: 0,
|
||
startY: 0,
|
||
currentX: 0,
|
||
currentY: 0,
|
||
diff: 0
|
||
},
|
||
f.onTouchStart = function(e) {
|
||
if (e.originalEvent && (e = e.originalEvent),
|
||
(I = "touchstart" === e.type) || !("which"in e) || 3 !== e.which)
|
||
if (f.params.noSwiping && B(e, "." + f.params.noSwipingClass))
|
||
f.allowClick = !0;
|
||
else if (!f.params.swipeHandler || B(e, f.params.swipeHandler)) {
|
||
var i = f.touches.currentX = "touchstart" === e.type ? e.targetTouches[0].pageX : e.pageX
|
||
, n = f.touches.currentY = "touchstart" === e.type ? e.targetTouches[0].pageY : e.pageY;
|
||
if (!(f.device.ios && f.params.iOSEdgeSwipeDetection && i <= f.params.iOSEdgeSwipeThreshold)) {
|
||
if (b = !0,
|
||
y = !1,
|
||
w = !0,
|
||
_ = void 0,
|
||
P = void 0,
|
||
f.touches.startX = i,
|
||
f.touches.startY = n,
|
||
S = Date.now(),
|
||
f.allowClick = !0,
|
||
f.updateContainerSize(),
|
||
f.swipeDirection = void 0,
|
||
f.params.threshold > 0 && (T = !1),
|
||
"touchstart" !== e.type) {
|
||
var a = !0;
|
||
t(e.target).is(D) && (a = !1),
|
||
document.activeElement && t(document.activeElement).is(D) && document.activeElement.blur(),
|
||
a && e.preventDefault()
|
||
}
|
||
f.emit("onTouchStart", f, e)
|
||
}
|
||
}
|
||
}
|
||
,
|
||
f.onTouchMove = function(e) {
|
||
if (e.originalEvent && (e = e.originalEvent),
|
||
!I || "mousemove" !== e.type) {
|
||
if (e.preventedByNestedSwiper)
|
||
return f.touches.startX = "touchmove" === e.type ? e.targetTouches[0].pageX : e.pageX,
|
||
void (f.touches.startY = "touchmove" === e.type ? e.targetTouches[0].pageY : e.pageY);
|
||
if (f.params.onlyExternal)
|
||
return f.allowClick = !1,
|
||
void (b && (f.touches.startX = f.touches.currentX = "touchmove" === e.type ? e.targetTouches[0].pageX : e.pageX,
|
||
f.touches.startY = f.touches.currentY = "touchmove" === e.type ? e.targetTouches[0].pageY : e.pageY,
|
||
S = Date.now()));
|
||
if (I && document.activeElement && e.target === document.activeElement && t(e.target).is(D))
|
||
return y = !0,
|
||
void (f.allowClick = !1);
|
||
if (w && f.emit("onTouchMove", f, e),
|
||
!(e.targetTouches && e.targetTouches.length > 1)) {
|
||
if (f.touches.currentX = "touchmove" === e.type ? e.targetTouches[0].pageX : e.pageX,
|
||
f.touches.currentY = "touchmove" === e.type ? e.targetTouches[0].pageY : e.pageY,
|
||
void 0 === _) {
|
||
var i = 180 * Math.atan2(Math.abs(f.touches.currentY - f.touches.startY), Math.abs(f.touches.currentX - f.touches.startX)) / Math.PI;
|
||
_ = f.isHorizontal() ? i > f.params.touchAngle : 90 - i > f.params.touchAngle
|
||
}
|
||
if (_ && f.emit("onTouchMoveOpposite", f, e),
|
||
void 0 === P && f.browser.ieTouch && (f.touches.currentX === f.touches.startX && f.touches.currentY === f.touches.startY || (P = !0)),
|
||
b)
|
||
if (_)
|
||
b = !1;
|
||
else if (P || !f.browser.ieTouch) {
|
||
f.allowClick = !1,
|
||
f.emit("onSliderMove", f, e),
|
||
e.preventDefault(),
|
||
f.params.touchMoveStopPropagation && !f.params.nested && e.stopPropagation(),
|
||
y || (s.loop && f.fixLoop(),
|
||
k = f.getWrapperTranslate(),
|
||
f.setWrapperTransition(0),
|
||
f.animating && f.wrapper.trigger("webkitTransitionEnd transitionend oTransitionEnd MSTransitionEnd msTransitionEnd"),
|
||
f.params.autoplay && f.autoplaying && (f.params.autoplayDisableOnInteraction ? f.stopAutoplay() : f.pauseAutoplay()),
|
||
A = !1,
|
||
f.params.grabCursor && (f.container[0].style.cursor = "move",
|
||
f.container[0].style.cursor = "-webkit-grabbing",
|
||
f.container[0].style.cursor = "-moz-grabbin",
|
||
f.container[0].style.cursor = "grabbing")),
|
||
y = !0;
|
||
var n = f.touches.diff = f.isHorizontal() ? f.touches.currentX - f.touches.startX : f.touches.currentY - f.touches.startY;
|
||
n *= f.params.touchRatio,
|
||
f.rtl && (n = -n),
|
||
f.swipeDirection = n > 0 ? "prev" : "next",
|
||
C = n + k;
|
||
var a = !0;
|
||
if (n > 0 && C > f.minTranslate() ? (a = !1,
|
||
f.params.resistance && (C = f.minTranslate() - 1 + Math.pow(-f.minTranslate() + k + n, f.params.resistanceRatio))) : n < 0 && C < f.maxTranslate() && (a = !1,
|
||
f.params.resistance && (C = f.maxTranslate() + 1 - Math.pow(f.maxTranslate() - k - n, f.params.resistanceRatio))),
|
||
a && (e.preventedByNestedSwiper = !0),
|
||
!f.params.allowSwipeToNext && "next" === f.swipeDirection && C < k && (C = k),
|
||
!f.params.allowSwipeToPrev && "prev" === f.swipeDirection && C > k && (C = k),
|
||
f.params.followFinger) {
|
||
if (f.params.threshold > 0) {
|
||
if (!(Math.abs(n) > f.params.threshold || T))
|
||
return void (C = k);
|
||
if (!T)
|
||
return T = !0,
|
||
f.touches.startX = f.touches.currentX,
|
||
f.touches.startY = f.touches.currentY,
|
||
C = k,
|
||
void (f.touches.diff = f.isHorizontal() ? f.touches.currentX - f.touches.startX : f.touches.currentY - f.touches.startY)
|
||
}
|
||
(f.params.freeMode || f.params.watchSlidesProgress) && f.updateActiveIndex(),
|
||
f.params.freeMode && (0 === E.length && E.push({
|
||
position: f.touches[f.isHorizontal() ? "startX" : "startY"],
|
||
time: S
|
||
}),
|
||
E.push({
|
||
position: f.touches[f.isHorizontal() ? "currentX" : "currentY"],
|
||
time: (new window.Date).getTime()
|
||
})),
|
||
f.updateProgress(C),
|
||
f.setWrapperTranslate(C)
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
,
|
||
f.onTouchEnd = function(e) {
|
||
if (e.originalEvent && (e = e.originalEvent),
|
||
w && f.emit("onTouchEnd", f, e),
|
||
w = !1,
|
||
b) {
|
||
f.params.grabCursor && y && b && (f.container[0].style.cursor = "move",
|
||
f.container[0].style.cursor = "-webkit-grab",
|
||
f.container[0].style.cursor = "-moz-grab",
|
||
f.container[0].style.cursor = "grab");
|
||
var i, n = Date.now(), a = n - S;
|
||
if (f.allowClick && (f.updateClickedSlide(e),
|
||
f.emit("onTap", f, e),
|
||
a < 300 && n - O > 300 && (x && clearTimeout(x),
|
||
x = setTimeout((function() {
|
||
f && (f.params.paginationHide && f.paginationContainer.length > 0 && !t(e.target).hasClass(f.params.bulletClass) && f.paginationContainer.toggleClass(f.params.paginationHiddenClass),
|
||
f.emit("onClick", f, e))
|
||
}
|
||
), 300)),
|
||
a < 300 && n - O < 300 && (x && clearTimeout(x),
|
||
f.emit("onDoubleTap", f, e))),
|
||
O = Date.now(),
|
||
setTimeout((function() {
|
||
f && (f.allowClick = !0)
|
||
}
|
||
), 0),
|
||
b && y && f.swipeDirection && 0 !== f.touches.diff && C !== k)
|
||
if (b = y = !1,
|
||
i = f.params.followFinger ? f.rtl ? f.translate : -f.translate : -C,
|
||
f.params.freeMode) {
|
||
if (i < -f.minTranslate())
|
||
return void f.slideTo(f.activeIndex);
|
||
if (i > -f.maxTranslate())
|
||
return void (f.slides.length < f.snapGrid.length ? f.slideTo(f.snapGrid.length - 1) : f.slideTo(f.slides.length - 1));
|
||
if (f.params.freeModeMomentum) {
|
||
if (E.length > 1) {
|
||
var o = E.pop()
|
||
, r = E.pop()
|
||
, s = o.position - r.position
|
||
, l = o.time - r.time;
|
||
f.velocity = s / l,
|
||
f.velocity = f.velocity / 2,
|
||
Math.abs(f.velocity) < f.params.freeModeMinimumVelocity && (f.velocity = 0),
|
||
(l > 150 || (new window.Date).getTime() - o.time > 300) && (f.velocity = 0)
|
||
} else
|
||
f.velocity = 0;
|
||
E.length = 0;
|
||
var c = 1e3 * f.params.freeModeMomentumRatio
|
||
, d = f.velocity * c
|
||
, u = f.translate + d;
|
||
f.rtl && (u = -u);
|
||
var p, m = !1, h = 20 * Math.abs(f.velocity) * f.params.freeModeMomentumBounceRatio;
|
||
if (u < f.maxTranslate())
|
||
f.params.freeModeMomentumBounce ? (u + f.maxTranslate() < -h && (u = f.maxTranslate() - h),
|
||
p = f.maxTranslate(),
|
||
m = !0,
|
||
A = !0) : u = f.maxTranslate();
|
||
else if (u > f.minTranslate())
|
||
f.params.freeModeMomentumBounce ? (u - f.minTranslate() > h && (u = f.minTranslate() + h),
|
||
p = f.minTranslate(),
|
||
m = !0,
|
||
A = !0) : u = f.minTranslate();
|
||
else if (f.params.freeModeSticky) {
|
||
var g, v = 0;
|
||
for (v = 0; v < f.snapGrid.length; v += 1)
|
||
if (f.snapGrid[v] > -u) {
|
||
g = v;
|
||
break
|
||
}
|
||
u = Math.abs(f.snapGrid[g] - u) < Math.abs(f.snapGrid[g - 1] - u) || "next" === f.swipeDirection ? f.snapGrid[g] : f.snapGrid[g - 1],
|
||
f.rtl || (u = -u)
|
||
}
|
||
if (0 !== f.velocity)
|
||
c = f.rtl ? Math.abs((-u - f.translate) / f.velocity) : Math.abs((u - f.translate) / f.velocity);
|
||
else if (f.params.freeModeSticky)
|
||
return void f.slideReset();
|
||
f.params.freeModeMomentumBounce && m ? (f.updateProgress(p),
|
||
f.setWrapperTransition(c),
|
||
f.setWrapperTranslate(u),
|
||
f.onTransitionStart(),
|
||
f.animating = !0,
|
||
f.wrapper.transitionEnd((function() {
|
||
f && A && (f.emit("onMomentumBounce", f),
|
||
f.setWrapperTransition(f.params.speed),
|
||
f.setWrapperTranslate(p),
|
||
f.wrapper.transitionEnd((function() {
|
||
f && f.onTransitionEnd()
|
||
}
|
||
)))
|
||
}
|
||
))) : f.velocity ? (f.updateProgress(u),
|
||
f.setWrapperTransition(c),
|
||
f.setWrapperTranslate(u),
|
||
f.onTransitionStart(),
|
||
f.animating || (f.animating = !0,
|
||
f.wrapper.transitionEnd((function() {
|
||
f && f.onTransitionEnd()
|
||
}
|
||
)))) : f.updateProgress(u),
|
||
f.updateActiveIndex()
|
||
}
|
||
(!f.params.freeModeMomentum || a >= f.params.longSwipesMs) && (f.updateProgress(),
|
||
f.updateActiveIndex())
|
||
} else {
|
||
var _, T = 0, I = f.slidesSizesGrid[0];
|
||
for (_ = 0; _ < f.slidesGrid.length; _ += f.params.slidesPerGroup)
|
||
void 0 !== f.slidesGrid[_ + f.params.slidesPerGroup] ? i >= f.slidesGrid[_] && i < f.slidesGrid[_ + f.params.slidesPerGroup] && (T = _,
|
||
I = f.slidesGrid[_ + f.params.slidesPerGroup] - f.slidesGrid[_]) : i >= f.slidesGrid[_] && (T = _,
|
||
I = f.slidesGrid[f.slidesGrid.length - 1] - f.slidesGrid[f.slidesGrid.length - 2]);
|
||
var P = (i - f.slidesGrid[T]) / I;
|
||
if (a > f.params.longSwipesMs) {
|
||
if (!f.params.longSwipes)
|
||
return void f.slideTo(f.activeIndex);
|
||
"next" === f.swipeDirection && (P >= f.params.longSwipesRatio ? f.slideTo(T + f.params.slidesPerGroup) : f.slideTo(T)),
|
||
"prev" === f.swipeDirection && (P > 1 - f.params.longSwipesRatio ? f.slideTo(T + f.params.slidesPerGroup) : f.slideTo(T))
|
||
} else {
|
||
if (!f.params.shortSwipes)
|
||
return void f.slideTo(f.activeIndex);
|
||
"next" === f.swipeDirection && f.slideTo(T + f.params.slidesPerGroup),
|
||
"prev" === f.swipeDirection && f.slideTo(T)
|
||
}
|
||
}
|
||
else
|
||
b = y = !1
|
||
}
|
||
}
|
||
,
|
||
f._slideTo = function(e, t) {
|
||
return f.slideTo(e, t, !0, !0)
|
||
}
|
||
,
|
||
f.slideTo = function(e, t, i, n) {
|
||
void 0 === i && (i = !0),
|
||
void 0 === e && (e = 0),
|
||
e < 0 && (e = 0),
|
||
f.snapIndex = Math.floor(e / f.params.slidesPerGroup),
|
||
f.snapIndex >= f.snapGrid.length && (f.snapIndex = f.snapGrid.length - 1);
|
||
var a = -f.snapGrid[f.snapIndex];
|
||
f.params.autoplay && f.autoplaying && (n || !f.params.autoplayDisableOnInteraction ? f.pauseAutoplay(t) : f.stopAutoplay()),
|
||
f.updateProgress(a);
|
||
for (var o = 0; o < f.slidesGrid.length; o++)
|
||
-Math.floor(100 * a) >= Math.floor(100 * f.slidesGrid[o]) && (e = o);
|
||
return !(!f.params.allowSwipeToNext && a < f.translate && a < f.minTranslate()) && (!(!f.params.allowSwipeToPrev && a > f.translate && a > f.maxTranslate() && (f.activeIndex || 0) !== e) && (void 0 === t && (t = f.params.speed),
|
||
f.previousIndex = f.activeIndex || 0,
|
||
f.activeIndex = e,
|
||
f.rtl && -a === f.translate || !f.rtl && a === f.translate ? (f.params.autoHeight && f.updateAutoHeight(),
|
||
f.updateClasses(),
|
||
"slide" !== f.params.effect && f.setWrapperTranslate(a),
|
||
!1) : (f.updateClasses(),
|
||
f.onTransitionStart(i),
|
||
0 === t ? (f.setWrapperTranslate(a),
|
||
f.setWrapperTransition(0),
|
||
f.onTransitionEnd(i)) : (f.setWrapperTranslate(a),
|
||
f.setWrapperTransition(t),
|
||
f.animating || (f.animating = !0,
|
||
f.wrapper.transitionEnd((function() {
|
||
f && f.onTransitionEnd(i)
|
||
}
|
||
)))),
|
||
!0)))
|
||
}
|
||
,
|
||
f.onTransitionStart = function(e) {
|
||
void 0 === e && (e = !0),
|
||
f.params.autoHeight && f.updateAutoHeight(),
|
||
f.lazy && f.lazy.onTransitionStart(),
|
||
e && (f.emit("onTransitionStart", f),
|
||
f.activeIndex !== f.previousIndex && (f.emit("onSlideChangeStart", f),
|
||
f.activeIndex > f.previousIndex ? f.emit("onSlideNextStart", f) : f.emit("onSlidePrevStart", f)))
|
||
}
|
||
,
|
||
f.onTransitionEnd = function(e) {
|
||
f.animating = !1,
|
||
f.setWrapperTransition(0),
|
||
void 0 === e && (e = !0),
|
||
f.lazy && f.lazy.onTransitionEnd(),
|
||
f.update(),
|
||
e && (f.emit("onTransitionEnd", f),
|
||
f.activeIndex !== f.previousIndex && (f.emit("onSlideChangeEnd", f),
|
||
f.activeIndex > f.previousIndex ? f.emit("onSlideNextEnd", f) : f.emit("onSlidePrevEnd", f))),
|
||
f.params.hashnav && f.hashnav && f.hashnav.setHash()
|
||
}
|
||
,
|
||
f.slideNext = function(e, t, i) {
|
||
if (f.params.loop) {
|
||
if (f.animating)
|
||
return !1;
|
||
f.fixLoop();
|
||
f.container[0].clientLeft;
|
||
return f.slideTo(f.activeIndex + f.params.slidesPerGroup, t, e, i)
|
||
}
|
||
return f.slideTo(f.activeIndex + f.params.slidesPerGroup, t, e, i)
|
||
}
|
||
,
|
||
f._slideNext = function(e) {
|
||
return f.slideNext(!0, e, !0)
|
||
}
|
||
,
|
||
f.slidePrev = function(e, t, i) {
|
||
if (f.params.loop) {
|
||
if (f.animating)
|
||
return !1;
|
||
f.fixLoop();
|
||
f.container[0].clientLeft;
|
||
return f.slideTo(f.activeIndex - 1, t, e, i)
|
||
}
|
||
return f.slideTo(f.activeIndex - 1, t, e, i)
|
||
}
|
||
,
|
||
f._slidePrev = function(e) {
|
||
return f.slidePrev(!0, e, !0)
|
||
}
|
||
,
|
||
f.slideReset = function(e, t, i) {
|
||
return f.slideTo(f.activeIndex, t, e)
|
||
}
|
||
,
|
||
f.setWrapperTransition = function(e, t) {
|
||
f.wrapper.transition(e),
|
||
"slide" !== f.params.effect && f.effects[f.params.effect] && f.effects[f.params.effect].setTransition(e),
|
||
f.params.parallax && f.parallax && f.parallax.setTransition(e),
|
||
f.params.scrollbar && f.scrollbar && f.scrollbar.setTransition(e),
|
||
f.params.control && f.controller && f.controller.setTransition(e, t),
|
||
f.emit("onSetTransition", f, e)
|
||
}
|
||
,
|
||
f.setWrapperTranslate = function(e, t, i) {
|
||
var n = 0
|
||
, a = 0;
|
||
f.isHorizontal() ? n = f.rtl ? -e : e : a = e,
|
||
f.params.roundLengths && (n = N(n),
|
||
a = N(a)),
|
||
f.params.virtualTranslate || (f.support.transforms3d ? f.wrapper.transform("translate3d(" + n + "px, " + a + "px, 0px)") : f.wrapper.transform("translate(" + n + "px, " + a + "px)")),
|
||
f.translate = f.isHorizontal() ? n : a;
|
||
var o = f.maxTranslate() - f.minTranslate();
|
||
(0 === o ? 0 : (e - f.minTranslate()) / o) !== f.progress && f.updateProgress(e),
|
||
t && f.updateActiveIndex(),
|
||
"slide" !== f.params.effect && f.effects[f.params.effect] && f.effects[f.params.effect].setTranslate(f.translate),
|
||
f.params.parallax && f.parallax && f.parallax.setTranslate(f.translate),
|
||
f.params.scrollbar && f.scrollbar && f.scrollbar.setTranslate(f.translate),
|
||
f.params.control && f.controller && f.controller.setTranslate(f.translate, i),
|
||
f.emit("onSetTranslate", f, f.translate)
|
||
}
|
||
,
|
||
f.getTranslate = function(e, t) {
|
||
var i, n, a, o;
|
||
return void 0 === t && (t = "x"),
|
||
f.params.virtualTranslate ? f.rtl ? -f.translate : f.translate : (a = window.getComputedStyle(e, null),
|
||
window.WebKitCSSMatrix ? ((n = a.transform || a.webkitTransform).split(",").length > 6 && (n = n.split(", ").map((function(e) {
|
||
return e.replace(",", ".")
|
||
}
|
||
)).join(", ")),
|
||
o = new window.WebKitCSSMatrix("none" === n ? "" : n)) : i = (o = a.MozTransform || a.OTransform || a.MsTransform || a.msTransform || a.transform || a.getPropertyValue("transform").replace("translate(", "matrix(1, 0, 0, 1,")).toString().split(","),
|
||
"x" === t && (n = window.WebKitCSSMatrix ? o.m41 : 16 === i.length ? parseFloat(i[12]) : parseFloat(i[4])),
|
||
"y" === t && (n = window.WebKitCSSMatrix ? o.m42 : 16 === i.length ? parseFloat(i[13]) : parseFloat(i[5])),
|
||
f.rtl && n && (n = -n),
|
||
n || 0)
|
||
}
|
||
,
|
||
f.getWrapperTranslate = function(e) {
|
||
return void 0 === e && (e = f.isHorizontal() ? "x" : "y"),
|
||
f.getTranslate(f.wrapper[0], e)
|
||
}
|
||
,
|
||
f.observers = [],
|
||
f.initObservers = function() {
|
||
if (f.params.observeParents)
|
||
for (var e = f.container.parents(), t = 0; t < e.length; t++)
|
||
j(e[t]);
|
||
j(f.container[0], {
|
||
childList: !1
|
||
}),
|
||
j(f.wrapper[0], {
|
||
attributes: !1
|
||
})
|
||
}
|
||
,
|
||
f.disconnectObservers = function() {
|
||
for (var e = 0; e < f.observers.length; e++)
|
||
f.observers[e].disconnect();
|
||
f.observers = []
|
||
}
|
||
,
|
||
f.createLoop = function() {
|
||
f.wrapper.children("." + f.params.slideClass + "." + f.params.slideDuplicateClass).remove();
|
||
var e = f.wrapper.children("." + f.params.slideClass);
|
||
"auto" !== f.params.slidesPerView || f.params.loopedSlides || (f.params.loopedSlides = e.length),
|
||
f.loopedSlides = parseInt(f.params.loopedSlides || f.params.slidesPerView, 10),
|
||
f.loopedSlides = f.loopedSlides + f.params.loopAdditionalSlides,
|
||
f.loopedSlides > e.length && (f.loopedSlides = e.length);
|
||
var i, n = [], a = [];
|
||
for (e.each((function(i, o) {
|
||
var r = t(this);
|
||
i < f.loopedSlides && a.push(o),
|
||
i < e.length && i >= e.length - f.loopedSlides && n.push(o),
|
||
r.attr("data-swiper-slide-index", i)
|
||
}
|
||
)),
|
||
i = 0; i < a.length; i++)
|
||
f.wrapper.append(t(a[i].cloneNode(!0)).addClass(f.params.slideDuplicateClass));
|
||
for (i = n.length - 1; i >= 0; i--)
|
||
f.wrapper.prepend(t(n[i].cloneNode(!0)).addClass(f.params.slideDuplicateClass))
|
||
}
|
||
,
|
||
f.destroyLoop = function() {
|
||
f.wrapper.children("." + f.params.slideClass + "." + f.params.slideDuplicateClass).remove(),
|
||
f.slides.removeAttr("data-swiper-slide-index")
|
||
}
|
||
,
|
||
f.reLoop = function(e) {
|
||
var t = f.activeIndex - f.loopedSlides;
|
||
f.destroyLoop(),
|
||
f.createLoop(),
|
||
f.updateSlidesSize(),
|
||
e && f.slideTo(t + f.loopedSlides, 0, !1)
|
||
}
|
||
,
|
||
f.fixLoop = function() {
|
||
var e;
|
||
f.activeIndex < f.loopedSlides ? (e = f.slides.length - 3 * f.loopedSlides + f.activeIndex,
|
||
e += f.loopedSlides,
|
||
f.slideTo(e, 0, !1, !0)) : ("auto" === f.params.slidesPerView && f.activeIndex >= 2 * f.loopedSlides || f.activeIndex > f.slides.length - 2 * f.params.slidesPerView) && (e = -f.slides.length + f.activeIndex + f.loopedSlides,
|
||
e += f.loopedSlides,
|
||
f.slideTo(e, 0, !1, !0))
|
||
}
|
||
,
|
||
f.appendSlide = function(e) {
|
||
if (f.params.loop && f.destroyLoop(),
|
||
"object" === o(e) && e.length)
|
||
for (var t = 0; t < e.length; t++)
|
||
e[t] && f.wrapper.append(e[t]);
|
||
else
|
||
f.wrapper.append(e);
|
||
f.params.loop && f.createLoop(),
|
||
f.params.observer && f.support.observer || f.update(!0)
|
||
}
|
||
,
|
||
f.prependSlide = function(e) {
|
||
f.params.loop && f.destroyLoop();
|
||
var t = f.activeIndex + 1;
|
||
if ("object" === o(e) && e.length) {
|
||
for (var i = 0; i < e.length; i++)
|
||
e[i] && f.wrapper.prepend(e[i]);
|
||
t = f.activeIndex + e.length
|
||
} else
|
||
f.wrapper.prepend(e);
|
||
f.params.loop && f.createLoop(),
|
||
f.params.observer && f.support.observer || f.update(!0),
|
||
f.slideTo(t, 0, !1)
|
||
}
|
||
,
|
||
f.removeSlide = function(e) {
|
||
f.params.loop && (f.destroyLoop(),
|
||
f.slides = f.wrapper.children("." + f.params.slideClass));
|
||
var t, i = f.activeIndex;
|
||
if ("object" === o(e) && e.length) {
|
||
for (var n = 0; n < e.length; n++)
|
||
t = e[n],
|
||
f.slides[t] && f.slides.eq(t).remove(),
|
||
t < i && i--;
|
||
i = Math.max(i, 0)
|
||
} else
|
||
t = e,
|
||
f.slides[t] && f.slides.eq(t).remove(),
|
||
t < i && i--,
|
||
i = Math.max(i, 0);
|
||
f.params.loop && f.createLoop(),
|
||
f.params.observer && f.support.observer || f.update(!0),
|
||
f.params.loop ? f.slideTo(i + f.loopedSlides, 0, !1) : f.slideTo(i, 0, !1)
|
||
}
|
||
,
|
||
f.removeAllSlides = function() {
|
||
for (var e = [], t = 0; t < f.slides.length; t++)
|
||
e.push(t);
|
||
f.removeSlide(e)
|
||
}
|
||
,
|
||
f.effects = {
|
||
fade: {
|
||
setTranslate: function() {
|
||
for (var e = 0; e < f.slides.length; e++) {
|
||
var t = f.slides.eq(e)
|
||
, i = -t[0].swiperSlideOffset;
|
||
f.params.virtualTranslate || (i -= f.translate);
|
||
var n = 0;
|
||
f.isHorizontal() || (n = i,
|
||
i = 0);
|
||
var a = f.params.fade.crossFade ? Math.max(1 - Math.abs(t[0].progress), 0) : 1 + Math.min(Math.max(t[0].progress, -1), 0);
|
||
t.css({
|
||
opacity: a
|
||
}).transform("translate3d(" + i + "px, " + n + "px, 0px)")
|
||
}
|
||
},
|
||
setTransition: function(e) {
|
||
if (f.slides.transition(e),
|
||
f.params.virtualTranslate && 0 !== e) {
|
||
var t = !1;
|
||
f.slides.transitionEnd((function() {
|
||
if (!t && f) {
|
||
t = !0,
|
||
f.animating = !1;
|
||
for (var e = ["webkitTransitionEnd", "transitionend", "oTransitionEnd", "MSTransitionEnd", "msTransitionEnd"], i = 0; i < e.length; i++)
|
||
f.wrapper.trigger(e[i])
|
||
}
|
||
}
|
||
))
|
||
}
|
||
}
|
||
},
|
||
flip: {
|
||
setTranslate: function() {
|
||
for (var e = 0; e < f.slides.length; e++) {
|
||
var i = f.slides.eq(e)
|
||
, n = i[0].progress;
|
||
f.params.flip.limitRotation && (n = Math.max(Math.min(i[0].progress, 1), -1));
|
||
var a = -180 * n
|
||
, o = 0
|
||
, r = -i[0].swiperSlideOffset
|
||
, s = 0;
|
||
if (f.isHorizontal() ? f.rtl && (a = -a) : (s = r,
|
||
r = 0,
|
||
o = -a,
|
||
a = 0),
|
||
i[0].style.zIndex = -Math.abs(Math.round(n)) + f.slides.length,
|
||
f.params.flip.slideShadows) {
|
||
var l = f.isHorizontal() ? i.find(".swiper-slide-shadow-left") : i.find(".swiper-slide-shadow-top")
|
||
, c = f.isHorizontal() ? i.find(".swiper-slide-shadow-right") : i.find(".swiper-slide-shadow-bottom");
|
||
0 === l.length && (l = t('<div class="swiper-slide-shadow-' + (f.isHorizontal() ? "left" : "top") + '"></div>'),
|
||
i.append(l)),
|
||
0 === c.length && (c = t('<div class="swiper-slide-shadow-' + (f.isHorizontal() ? "right" : "bottom") + '"></div>'),
|
||
i.append(c)),
|
||
l.length && (l[0].style.opacity = Math.max(-n, 0)),
|
||
c.length && (c[0].style.opacity = Math.max(n, 0))
|
||
}
|
||
i.transform("translate3d(" + r + "px, " + s + "px, 0px) rotateX(" + o + "deg) rotateY(" + a + "deg)")
|
||
}
|
||
},
|
||
setTransition: function(e) {
|
||
if (f.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),
|
||
f.params.virtualTranslate && 0 !== e) {
|
||
var i = !1;
|
||
f.slides.eq(f.activeIndex).transitionEnd((function() {
|
||
if (!i && f && t(this).hasClass(f.params.slideActiveClass)) {
|
||
i = !0,
|
||
f.animating = !1;
|
||
for (var e = ["webkitTransitionEnd", "transitionend", "oTransitionEnd", "MSTransitionEnd", "msTransitionEnd"], n = 0; n < e.length; n++)
|
||
f.wrapper.trigger(e[n])
|
||
}
|
||
}
|
||
))
|
||
}
|
||
}
|
||
},
|
||
cube: {
|
||
setTranslate: function() {
|
||
var e, i = 0;
|
||
f.params.cube.shadow && (f.isHorizontal() ? (0 === (e = f.wrapper.find(".swiper-cube-shadow")).length && (e = t('<div class="swiper-cube-shadow"></div>'),
|
||
f.wrapper.append(e)),
|
||
e.css({
|
||
height: f.width + "px"
|
||
})) : 0 === (e = f.container.find(".swiper-cube-shadow")).length && (e = t('<div class="swiper-cube-shadow"></div>'),
|
||
f.container.append(e)));
|
||
for (var n = 0; n < f.slides.length; n++) {
|
||
var a = f.slides.eq(n)
|
||
, o = 90 * n
|
||
, r = Math.floor(o / 360);
|
||
f.rtl && (o = -o,
|
||
r = Math.floor(-o / 360));
|
||
var s = Math.max(Math.min(a[0].progress, 1), -1)
|
||
, l = 0
|
||
, c = 0
|
||
, d = 0;
|
||
n % 4 == 0 ? (l = 4 * -r * f.size,
|
||
d = 0) : (n - 1) % 4 == 0 ? (l = 0,
|
||
d = 4 * -r * f.size) : (n - 2) % 4 == 0 ? (l = f.size + 4 * r * f.size,
|
||
d = f.size) : (n - 3) % 4 == 0 && (l = -f.size,
|
||
d = 3 * f.size + 4 * f.size * r),
|
||
f.rtl && (l = -l),
|
||
f.isHorizontal() || (c = l,
|
||
l = 0);
|
||
var u = "rotateX(" + (f.isHorizontal() ? 0 : -o) + "deg) rotateY(" + (f.isHorizontal() ? o : 0) + "deg) translate3d(" + l + "px, " + c + "px, " + d + "px)";
|
||
if (s <= 1 && s > -1 && (i = 90 * n + 90 * s,
|
||
f.rtl && (i = 90 * -n - 90 * s)),
|
||
a.transform(u),
|
||
f.params.cube.slideShadows) {
|
||
var p = f.isHorizontal() ? a.find(".swiper-slide-shadow-left") : a.find(".swiper-slide-shadow-top")
|
||
, m = f.isHorizontal() ? a.find(".swiper-slide-shadow-right") : a.find(".swiper-slide-shadow-bottom");
|
||
0 === p.length && (p = t('<div class="swiper-slide-shadow-' + (f.isHorizontal() ? "left" : "top") + '"></div>'),
|
||
a.append(p)),
|
||
0 === m.length && (m = t('<div class="swiper-slide-shadow-' + (f.isHorizontal() ? "right" : "bottom") + '"></div>'),
|
||
a.append(m)),
|
||
p.length && (p[0].style.opacity = Math.max(-s, 0)),
|
||
m.length && (m[0].style.opacity = Math.max(s, 0))
|
||
}
|
||
}
|
||
if (f.wrapper.css({
|
||
"-webkit-transform-origin": "50% 50% -" + f.size / 2 + "px",
|
||
"-moz-transform-origin": "50% 50% -" + f.size / 2 + "px",
|
||
"-ms-transform-origin": "50% 50% -" + f.size / 2 + "px",
|
||
"transform-origin": "50% 50% -" + f.size / 2 + "px"
|
||
}),
|
||
f.params.cube.shadow)
|
||
if (f.isHorizontal())
|
||
e.transform("translate3d(0px, " + (f.width / 2 + f.params.cube.shadowOffset) + "px, " + -f.width / 2 + "px) rotateX(90deg) rotateZ(0deg) scale(" + f.params.cube.shadowScale + ")");
|
||
else {
|
||
var h = Math.abs(i) - 90 * Math.floor(Math.abs(i) / 90)
|
||
, g = 1.5 - (Math.sin(2 * h * Math.PI / 360) / 2 + Math.cos(2 * h * Math.PI / 360) / 2)
|
||
, v = f.params.cube.shadowScale
|
||
, b = f.params.cube.shadowScale / g
|
||
, y = f.params.cube.shadowOffset;
|
||
e.transform("scale3d(" + v + ", 1, " + b + ") translate3d(0px, " + (f.height / 2 + y) + "px, " + -f.height / 2 / b + "px) rotateX(-90deg)")
|
||
}
|
||
var w = f.isSafari || f.isUiWebView ? -f.size / 2 : 0;
|
||
f.wrapper.transform("translate3d(0px,0," + w + "px) rotateX(" + (f.isHorizontal() ? 0 : i) + "deg) rotateY(" + (f.isHorizontal() ? -i : 0) + "deg)")
|
||
},
|
||
setTransition: function(e) {
|
||
f.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),
|
||
f.params.cube.shadow && !f.isHorizontal() && f.container.find(".swiper-cube-shadow").transition(e)
|
||
}
|
||
},
|
||
coverflow: {
|
||
setTranslate: function() {
|
||
for (var e = f.translate, i = f.isHorizontal() ? -e + f.width / 2 : -e + f.height / 2, n = f.isHorizontal() ? f.params.coverflow.rotate : -f.params.coverflow.rotate, a = f.params.coverflow.depth, o = 0, r = f.slides.length; o < r; o++) {
|
||
var s = f.slides.eq(o)
|
||
, l = f.slidesSizesGrid[o]
|
||
, c = (i - s[0].swiperSlideOffset - l / 2) / l * f.params.coverflow.modifier
|
||
, d = f.isHorizontal() ? n * c : 0
|
||
, u = f.isHorizontal() ? 0 : n * c
|
||
, p = -a * Math.abs(c)
|
||
, m = f.isHorizontal() ? 0 : f.params.coverflow.stretch * c
|
||
, h = f.isHorizontal() ? f.params.coverflow.stretch * c : 0;
|
||
Math.abs(h) < .001 && (h = 0),
|
||
Math.abs(m) < .001 && (m = 0),
|
||
Math.abs(p) < .001 && (p = 0),
|
||
Math.abs(d) < .001 && (d = 0),
|
||
Math.abs(u) < .001 && (u = 0);
|
||
var g = "translate3d(" + h + "px," + m + "px," + p + "px) rotateX(" + u + "deg) rotateY(" + d + "deg)";
|
||
if (s.transform(g),
|
||
s[0].style.zIndex = 1 - Math.abs(Math.round(c)),
|
||
f.params.coverflow.slideShadows) {
|
||
var v = f.isHorizontal() ? s.find(".swiper-slide-shadow-left") : s.find(".swiper-slide-shadow-top")
|
||
, b = f.isHorizontal() ? s.find(".swiper-slide-shadow-right") : s.find(".swiper-slide-shadow-bottom");
|
||
0 === v.length && (v = t('<div class="swiper-slide-shadow-' + (f.isHorizontal() ? "left" : "top") + '"></div>'),
|
||
s.append(v)),
|
||
0 === b.length && (b = t('<div class="swiper-slide-shadow-' + (f.isHorizontal() ? "right" : "bottom") + '"></div>'),
|
||
s.append(b)),
|
||
v.length && (v[0].style.opacity = c > 0 ? c : 0),
|
||
b.length && (b[0].style.opacity = -c > 0 ? -c : 0)
|
||
}
|
||
}
|
||
f.browser.ie && (f.wrapper[0].style.perspectiveOrigin = i + "px 50%")
|
||
},
|
||
setTransition: function(e) {
|
||
f.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e)
|
||
}
|
||
}
|
||
},
|
||
f.lazy = {
|
||
initialImageLoaded: !1,
|
||
loadImageInSlide: function(e, i) {
|
||
if (void 0 !== e && (void 0 === i && (i = !0),
|
||
0 !== f.slides.length)) {
|
||
var n = f.slides.eq(e)
|
||
, a = n.find(".swiper-lazy:not(.swiper-lazy-loaded):not(.swiper-lazy-loading)");
|
||
!n.hasClass("swiper-lazy") || n.hasClass("swiper-lazy-loaded") || n.hasClass("swiper-lazy-loading") || (a = a.add(n[0])),
|
||
0 !== a.length && a.each((function() {
|
||
var e = t(this);
|
||
e.addClass("swiper-lazy-loading");
|
||
var a = e.attr("data-background")
|
||
, o = e.attr("data-src")
|
||
, r = e.attr("data-srcset");
|
||
f.loadImage(e[0], o || a, r, !1, (function() {
|
||
if (a ? (e.css("background-image", 'url("' + a + '")'),
|
||
e.removeAttr("data-background")) : (r && (e.attr("srcset", r),
|
||
e.removeAttr("data-srcset")),
|
||
o && (e.attr("src", o),
|
||
e.removeAttr("data-src"))),
|
||
e.addClass("swiper-lazy-loaded").removeClass("swiper-lazy-loading"),
|
||
n.find(".swiper-lazy-preloader, .preloader").remove(),
|
||
f.params.loop && i) {
|
||
var t = n.attr("data-swiper-slide-index");
|
||
if (n.hasClass(f.params.slideDuplicateClass)) {
|
||
var s = f.wrapper.children('[data-swiper-slide-index="' + t + '"]:not(.' + f.params.slideDuplicateClass + ")");
|
||
f.lazy.loadImageInSlide(s.index(), !1)
|
||
} else {
|
||
var l = f.wrapper.children("." + f.params.slideDuplicateClass + '[data-swiper-slide-index="' + t + '"]');
|
||
f.lazy.loadImageInSlide(l.index(), !1)
|
||
}
|
||
}
|
||
f.emit("onLazyImageReady", f, n[0], e[0])
|
||
}
|
||
)),
|
||
f.emit("onLazyImageLoad", f, n[0], e[0])
|
||
}
|
||
))
|
||
}
|
||
},
|
||
load: function() {
|
||
var e;
|
||
if (f.params.watchSlidesVisibility)
|
||
f.wrapper.children("." + f.params.slideVisibleClass).each((function() {
|
||
f.lazy.loadImageInSlide(t(this).index())
|
||
}
|
||
));
|
||
else if (f.params.slidesPerView > 1)
|
||
for (e = f.activeIndex; e < f.activeIndex + f.params.slidesPerView; e++)
|
||
f.slides[e] && f.lazy.loadImageInSlide(e);
|
||
else
|
||
f.lazy.loadImageInSlide(f.activeIndex);
|
||
if (f.params.lazyLoadingInPrevNext)
|
||
if (f.params.slidesPerView > 1 || f.params.lazyLoadingInPrevNextAmount && f.params.lazyLoadingInPrevNextAmount > 1) {
|
||
var i = f.params.lazyLoadingInPrevNextAmount
|
||
, n = f.params.slidesPerView
|
||
, a = Math.min(f.activeIndex + n + Math.max(i, n), f.slides.length)
|
||
, o = Math.max(f.activeIndex - Math.max(n, i), 0);
|
||
for (e = f.activeIndex + f.params.slidesPerView; e < a; e++)
|
||
f.slides[e] && f.lazy.loadImageInSlide(e);
|
||
for (e = o; e < f.activeIndex; e++)
|
||
f.slides[e] && f.lazy.loadImageInSlide(e)
|
||
} else {
|
||
var r = f.wrapper.children("." + f.params.slideNextClass);
|
||
r.length > 0 && f.lazy.loadImageInSlide(r.index());
|
||
var s = f.wrapper.children("." + f.params.slidePrevClass);
|
||
s.length > 0 && f.lazy.loadImageInSlide(s.index())
|
||
}
|
||
},
|
||
onTransitionStart: function() {
|
||
f.params.lazyLoading && (f.params.lazyLoadingOnTransitionStart || !f.params.lazyLoadingOnTransitionStart && !f.lazy.initialImageLoaded) && f.lazy.load()
|
||
},
|
||
onTransitionEnd: function() {
|
||
f.params.lazyLoading && !f.params.lazyLoadingOnTransitionStart && f.lazy.load()
|
||
}
|
||
},
|
||
f.scrollbar = {
|
||
isTouched: !1,
|
||
setDragPosition: function(e) {
|
||
var t = f.scrollbar
|
||
, i = (f.isHorizontal() ? "touchstart" === e.type || "touchmove" === e.type ? e.targetTouches[0].pageX : e.pageX || e.clientX : "touchstart" === e.type || "touchmove" === e.type ? e.targetTouches[0].pageY : e.pageY || e.clientY) - t.track.offset()[f.isHorizontal() ? "left" : "top"] - t.dragSize / 2
|
||
, n = -f.minTranslate() * t.moveDivider
|
||
, a = -f.maxTranslate() * t.moveDivider;
|
||
i < n ? i = n : i > a && (i = a),
|
||
i = -i / t.moveDivider,
|
||
f.updateProgress(i),
|
||
f.setWrapperTranslate(i, !0)
|
||
},
|
||
dragStart: function(e) {
|
||
var t = f.scrollbar;
|
||
t.isTouched = !0,
|
||
e.preventDefault(),
|
||
e.stopPropagation(),
|
||
t.setDragPosition(e),
|
||
clearTimeout(t.dragTimeout),
|
||
t.track.transition(0),
|
||
f.params.scrollbarHide && t.track.css("opacity", 1),
|
||
f.wrapper.transition(100),
|
||
t.drag.transition(100),
|
||
f.emit("onScrollbarDragStart", f)
|
||
},
|
||
dragMove: function(e) {
|
||
var t = f.scrollbar;
|
||
t.isTouched && (e.preventDefault ? e.preventDefault() : e.returnValue = !1,
|
||
t.setDragPosition(e),
|
||
f.wrapper.transition(0),
|
||
t.track.transition(0),
|
||
t.drag.transition(0),
|
||
f.emit("onScrollbarDragMove", f))
|
||
},
|
||
dragEnd: function(e) {
|
||
var t = f.scrollbar;
|
||
t.isTouched && (t.isTouched = !1,
|
||
f.params.scrollbarHide && (clearTimeout(t.dragTimeout),
|
||
t.dragTimeout = setTimeout((function() {
|
||
t.track.css("opacity", 0),
|
||
t.track.transition(400)
|
||
}
|
||
), 1e3)),
|
||
f.emit("onScrollbarDragEnd", f),
|
||
f.params.scrollbarSnapOnRelease && f.slideReset())
|
||
},
|
||
enableDraggable: function() {
|
||
var e = f.scrollbar
|
||
, i = f.support.touch ? e.track : document;
|
||
t(e.track).on(f.touchEvents.start, e.dragStart),
|
||
t(i).on(f.touchEvents.move, e.dragMove),
|
||
t(i).on(f.touchEvents.end, e.dragEnd)
|
||
},
|
||
disableDraggable: function() {
|
||
var e = f.scrollbar
|
||
, i = f.support.touch ? e.track : document;
|
||
t(e.track).off(f.touchEvents.start, e.dragStart),
|
||
t(i).off(f.touchEvents.move, e.dragMove),
|
||
t(i).off(f.touchEvents.end, e.dragEnd)
|
||
},
|
||
set: function() {
|
||
if (f.params.scrollbar) {
|
||
var e = f.scrollbar;
|
||
e.track = t(f.params.scrollbar),
|
||
f.params.uniqueNavElements && "string" == typeof f.params.scrollbar && e.track.length > 1 && 1 === f.container.find(f.params.scrollbar).length && (e.track = f.container.find(f.params.scrollbar)),
|
||
e.drag = e.track.find(".swiper-scrollbar-drag"),
|
||
0 === e.drag.length && (e.drag = t('<div class="swiper-scrollbar-drag"></div>'),
|
||
e.track.append(e.drag)),
|
||
e.drag[0].style.width = "",
|
||
e.drag[0].style.height = "",
|
||
e.trackSize = f.isHorizontal() ? e.track[0].offsetWidth : e.track[0].offsetHeight,
|
||
e.divider = f.size / f.virtualSize,
|
||
e.moveDivider = e.divider * (e.trackSize / f.size),
|
||
e.dragSize = e.trackSize * e.divider,
|
||
f.isHorizontal() ? e.drag[0].style.width = e.dragSize + "px" : e.drag[0].style.height = e.dragSize + "px",
|
||
e.divider >= 1 ? e.track[0].style.display = "none" : e.track[0].style.display = "",
|
||
f.params.scrollbarHide && (e.track[0].style.opacity = 0)
|
||
}
|
||
},
|
||
setTranslate: function() {
|
||
if (f.params.scrollbar) {
|
||
var e, t = f.scrollbar, i = (f.translate,
|
||
t.dragSize);
|
||
e = (t.trackSize - t.dragSize) * f.progress,
|
||
f.rtl && f.isHorizontal() ? (e = -e) > 0 ? (i = t.dragSize - e,
|
||
e = 0) : -e + t.dragSize > t.trackSize && (i = t.trackSize + e) : e < 0 ? (i = t.dragSize + e,
|
||
e = 0) : e + t.dragSize > t.trackSize && (i = t.trackSize - e),
|
||
f.isHorizontal() ? (f.support.transforms3d ? t.drag.transform("translate3d(" + e + "px, 0, 0)") : t.drag.transform("translateX(" + e + "px)"),
|
||
t.drag[0].style.width = i + "px") : (f.support.transforms3d ? t.drag.transform("translate3d(0px, " + e + "px, 0)") : t.drag.transform("translateY(" + e + "px)"),
|
||
t.drag[0].style.height = i + "px"),
|
||
f.params.scrollbarHide && (clearTimeout(t.timeout),
|
||
t.track[0].style.opacity = 1,
|
||
t.timeout = setTimeout((function() {
|
||
t.track[0].style.opacity = 0,
|
||
t.track.transition(400)
|
||
}
|
||
), 1e3))
|
||
}
|
||
},
|
||
setTransition: function(e) {
|
||
f.params.scrollbar && f.scrollbar.drag.transition(e)
|
||
}
|
||
},
|
||
f.controller = {
|
||
LinearSpline: function(e, t) {
|
||
var i, n;
|
||
this.x = e,
|
||
this.y = t,
|
||
this.lastIndex = e.length - 1;
|
||
this.x.length;
|
||
this.interpolate = function(e) {
|
||
return e ? (n = s(this.x, e),
|
||
i = n - 1,
|
||
(e - this.x[i]) * (this.y[n] - this.y[i]) / (this.x[n] - this.x[i]) + this.y[i]) : 0
|
||
}
|
||
;
|
||
var a, o, r, s = function(e, t) {
|
||
for (o = -1,
|
||
a = e.length; a - o > 1; )
|
||
e[r = a + o >> 1] <= t ? o = r : a = r;
|
||
return a
|
||
}
|
||
},
|
||
getInterpolateFunction: function(e) {
|
||
f.controller.spline || (f.controller.spline = f.params.loop ? new f.controller.LinearSpline(f.slidesGrid,e.slidesGrid) : new f.controller.LinearSpline(f.snapGrid,e.snapGrid))
|
||
},
|
||
setTranslate: function(e, t) {
|
||
var n, a, o = f.params.control;
|
||
function r(t) {
|
||
e = t.rtl && "horizontal" === t.params.direction ? -f.translate : f.translate,
|
||
"slide" === f.params.controlBy && (f.controller.getInterpolateFunction(t),
|
||
a = -f.controller.spline.interpolate(-e)),
|
||
a && "container" !== f.params.controlBy || (n = (t.maxTranslate() - t.minTranslate()) / (f.maxTranslate() - f.minTranslate()),
|
||
a = (e - f.minTranslate()) * n + t.minTranslate()),
|
||
f.params.controlInverse && (a = t.maxTranslate() - a),
|
||
t.updateProgress(a),
|
||
t.setWrapperTranslate(a, !1, f),
|
||
t.updateActiveIndex()
|
||
}
|
||
if (f.isArray(o))
|
||
for (var s = 0; s < o.length; s++)
|
||
o[s] !== t && o[s]instanceof i && r(o[s]);
|
||
else
|
||
o instanceof i && t !== o && r(o)
|
||
},
|
||
setTransition: function(e, t) {
|
||
var n, a = f.params.control;
|
||
function o(t) {
|
||
t.setWrapperTransition(e, f),
|
||
0 !== e && (t.onTransitionStart(),
|
||
t.wrapper.transitionEnd((function() {
|
||
a && (t.params.loop && "slide" === f.params.controlBy && t.fixLoop(),
|
||
t.onTransitionEnd())
|
||
}
|
||
)))
|
||
}
|
||
if (f.isArray(a))
|
||
for (n = 0; n < a.length; n++)
|
||
a[n] !== t && a[n]instanceof i && o(a[n]);
|
||
else
|
||
a instanceof i && t !== a && o(a)
|
||
}
|
||
},
|
||
f.hashnav = {
|
||
init: function() {
|
||
if (f.params.hashnav) {
|
||
f.hashnav.initialized = !0;
|
||
var e = document.location.hash.replace("#", "");
|
||
if (e)
|
||
for (var t = 0, i = f.slides.length; t < i; t++) {
|
||
var n = f.slides.eq(t);
|
||
if (n.attr("data-hash") === e && !n.hasClass(f.params.slideDuplicateClass)) {
|
||
var a = n.index();
|
||
f.slideTo(a, 0, f.params.runCallbacksOnInit, !0)
|
||
}
|
||
}
|
||
}
|
||
},
|
||
setHash: function() {
|
||
f.hashnav.initialized && f.params.hashnav && (document.location.hash = f.slides.eq(f.activeIndex).attr("data-hash") || "")
|
||
}
|
||
},
|
||
f.disableKeyboardControl = function() {
|
||
f.params.keyboardControl = !1,
|
||
t(document).off("keydown", z)
|
||
}
|
||
,
|
||
f.enableKeyboardControl = function() {
|
||
f.params.keyboardControl = !0,
|
||
t(document).on("keydown", z)
|
||
}
|
||
,
|
||
f.mousewheel = {
|
||
event: !1,
|
||
lastScrollTime: (new window.Date).getTime()
|
||
},
|
||
f.params.mousewheelControl) {
|
||
try {
|
||
new window.WheelEvent("wheel"),
|
||
f.mousewheel.event = "wheel"
|
||
} catch (e) {
|
||
(window.WheelEvent || f.container[0] && "wheel"in f.container[0]) && (f.mousewheel.event = "wheel")
|
||
}
|
||
!f.mousewheel.event && window.WheelEvent,
|
||
f.mousewheel.event || void 0 === document.onmousewheel || (f.mousewheel.event = "mousewheel"),
|
||
f.mousewheel.event || (f.mousewheel.event = "DOMMouseScroll")
|
||
}
|
||
for (var M in f.disableMousewheelControl = function() {
|
||
return !!f.mousewheel.event && (f.container.off(f.mousewheel.event, q),
|
||
!0)
|
||
}
|
||
,
|
||
f.enableMousewheelControl = function() {
|
||
return !!f.mousewheel.event && (f.container.on(f.mousewheel.event, q),
|
||
!0)
|
||
}
|
||
,
|
||
f.parallax = {
|
||
setTranslate: function() {
|
||
f.container.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each((function() {
|
||
F(this, f.progress)
|
||
}
|
||
)),
|
||
f.slides.each((function() {
|
||
var e = t(this);
|
||
e.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each((function() {
|
||
F(this, Math.min(Math.max(e[0].progress, -1), 1))
|
||
}
|
||
))
|
||
}
|
||
))
|
||
},
|
||
setTransition: function(e) {
|
||
void 0 === e && (e = f.params.speed),
|
||
f.container.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each((function() {
|
||
var i = t(this)
|
||
, n = parseInt(i.attr("data-swiper-parallax-duration"), 10) || e;
|
||
0 === e && (n = 0),
|
||
i.transition(n)
|
||
}
|
||
))
|
||
}
|
||
},
|
||
f._plugins = [],
|
||
f.plugins) {
|
||
var L = f.plugins[M](f, f.params[M]);
|
||
L && f._plugins.push(L)
|
||
}
|
||
return f.callPlugins = function(e) {
|
||
for (var t = 0; t < f._plugins.length; t++)
|
||
e in f._plugins[t] && f._plugins[t][e](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5])
|
||
}
|
||
,
|
||
f.emitterEventListeners = {},
|
||
f.emit = function(e) {
|
||
var t;
|
||
if (f.params[e] && f.params[e](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]),
|
||
f.emitterEventListeners[e])
|
||
for (t = 0; t < f.emitterEventListeners[e].length; t++)
|
||
f.emitterEventListeners[e][t](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);
|
||
f.callPlugins && f.callPlugins(e, arguments[1], arguments[2], arguments[3], arguments[4], arguments[5])
|
||
}
|
||
,
|
||
f.on = function(e, t) {
|
||
return e = R(e),
|
||
f.emitterEventListeners[e] || (f.emitterEventListeners[e] = []),
|
||
f.emitterEventListeners[e].push(t),
|
||
f
|
||
}
|
||
,
|
||
f.off = function(e, t) {
|
||
var i;
|
||
if (e = R(e),
|
||
void 0 === t)
|
||
return f.emitterEventListeners[e] = [],
|
||
f;
|
||
if (f.emitterEventListeners[e] && 0 !== f.emitterEventListeners[e].length) {
|
||
for (i = 0; i < f.emitterEventListeners[e].length; i++)
|
||
f.emitterEventListeners[e][i] === t && f.emitterEventListeners[e].splice(i, 1);
|
||
return f
|
||
}
|
||
}
|
||
,
|
||
f.once = function(e, t) {
|
||
e = R(e);
|
||
return f.on(e, (function i() {
|
||
t(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]),
|
||
f.off(e, i)
|
||
}
|
||
)),
|
||
f
|
||
}
|
||
,
|
||
f.a11y = {
|
||
makeFocusable: function(e) {
|
||
return e.attr("tabIndex", "0"),
|
||
e
|
||
},
|
||
addRole: function(e, t) {
|
||
return e.attr("role", t),
|
||
e
|
||
},
|
||
addLabel: function(e, t) {
|
||
return e.attr("aria-label", t),
|
||
e
|
||
},
|
||
disable: function(e) {
|
||
return e.attr("aria-disabled", !0),
|
||
e
|
||
},
|
||
enable: function(e) {
|
||
return e.attr("aria-disabled", !1),
|
||
e
|
||
},
|
||
onEnterKey: function(e) {
|
||
13 === e.keyCode && (t(e.target).is(f.params.nextButton) ? (f.onClickNext(e),
|
||
f.isEnd ? f.a11y.notify(f.params.lastSlideMessage) : f.a11y.notify(f.params.nextSlideMessage)) : t(e.target).is(f.params.prevButton) && (f.onClickPrev(e),
|
||
f.isBeginning ? f.a11y.notify(f.params.firstSlideMessage) : f.a11y.notify(f.params.prevSlideMessage)),
|
||
t(e.target).is("." + f.params.bulletClass) && t(e.target)[0].click())
|
||
},
|
||
liveRegion: t('<span class="swiper-notification" aria-live="assertive" aria-atomic="true"></span>'),
|
||
notify: function(e) {
|
||
var t = f.a11y.liveRegion;
|
||
0 !== t.length && (t.html(""),
|
||
t.html(e))
|
||
},
|
||
init: function() {
|
||
f.params.nextButton && f.nextButton && f.nextButton.length > 0 && (f.a11y.makeFocusable(f.nextButton),
|
||
f.a11y.addRole(f.nextButton, "button"),
|
||
f.a11y.addLabel(f.nextButton, f.params.nextSlideMessage)),
|
||
f.params.prevButton && f.prevButton && f.prevButton.length > 0 && (f.a11y.makeFocusable(f.prevButton),
|
||
f.a11y.addRole(f.prevButton, "button"),
|
||
f.a11y.addLabel(f.prevButton, f.params.prevSlideMessage)),
|
||
t(f.container).append(f.a11y.liveRegion)
|
||
},
|
||
initPagination: function() {
|
||
f.params.pagination && f.params.paginationClickable && f.bullets && f.bullets.length && f.bullets.each((function() {
|
||
var e = t(this);
|
||
f.a11y.makeFocusable(e),
|
||
f.a11y.addRole(e, "button"),
|
||
f.a11y.addLabel(e, f.params.paginationBulletMessage.replace(/{{index}}/, e.index() + 1))
|
||
}
|
||
))
|
||
},
|
||
destroy: function() {
|
||
f.a11y.liveRegion && f.a11y.liveRegion.length > 0 && f.a11y.liveRegion.remove()
|
||
}
|
||
},
|
||
f.init = function() {
|
||
f.params.loop && f.createLoop(),
|
||
f.updateContainerSize(),
|
||
f.updateSlidesSize(),
|
||
f.updatePagination(),
|
||
f.params.scrollbar && f.scrollbar && (f.scrollbar.set(),
|
||
f.params.scrollbarDraggable && f.scrollbar.enableDraggable()),
|
||
"slide" !== f.params.effect && f.effects[f.params.effect] && (f.params.loop || f.updateProgress(),
|
||
f.effects[f.params.effect].setTranslate()),
|
||
f.params.loop ? f.slideTo(f.params.initialSlide + f.loopedSlides, 0, f.params.runCallbacksOnInit) : (f.slideTo(f.params.initialSlide, 0, f.params.runCallbacksOnInit),
|
||
0 === f.params.initialSlide && (f.parallax && f.params.parallax && f.parallax.setTranslate(),
|
||
f.lazy && f.params.lazyLoading && (f.lazy.load(),
|
||
f.lazy.initialImageLoaded = !0))),
|
||
f.attachEvents(),
|
||
f.params.observer && f.support.observer && f.initObservers(),
|
||
f.params.preloadImages && !f.params.lazyLoading && f.preloadImages(),
|
||
f.params.autoplay && f.startAutoplay(),
|
||
f.params.keyboardControl && f.enableKeyboardControl && f.enableKeyboardControl(),
|
||
f.params.mousewheelControl && f.enableMousewheelControl && f.enableMousewheelControl(),
|
||
f.params.hashnav && f.hashnav && f.hashnav.init(),
|
||
f.params.a11y && f.a11y && f.a11y.init(),
|
||
f.emit("onInit", f)
|
||
}
|
||
,
|
||
f.cleanupStyles = function() {
|
||
f.container.removeClass(f.classNames.join(" ")).removeAttr("style"),
|
||
f.wrapper.removeAttr("style"),
|
||
f.slides && f.slides.length && f.slides.removeClass([f.params.slideVisibleClass, f.params.slideActiveClass, f.params.slideNextClass, f.params.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-column").removeAttr("data-swiper-row"),
|
||
f.paginationContainer && f.paginationContainer.length && f.paginationContainer.removeClass(f.params.paginationHiddenClass),
|
||
f.bullets && f.bullets.length && f.bullets.removeClass(f.params.bulletActiveClass),
|
||
f.params.prevButton && t(f.params.prevButton).removeClass(f.params.buttonDisabledClass),
|
||
f.params.nextButton && t(f.params.nextButton).removeClass(f.params.buttonDisabledClass),
|
||
f.params.scrollbar && f.scrollbar && (f.scrollbar.track && f.scrollbar.track.length && f.scrollbar.track.removeAttr("style"),
|
||
f.scrollbar.drag && f.scrollbar.drag.length && f.scrollbar.drag.removeAttr("style"))
|
||
}
|
||
,
|
||
f.destroy = function(e, t) {
|
||
f.detachEvents(),
|
||
f.stopAutoplay(),
|
||
f.params.scrollbar && f.scrollbar && f.params.scrollbarDraggable && f.scrollbar.disableDraggable(),
|
||
f.params.loop && f.destroyLoop(),
|
||
t && f.cleanupStyles(),
|
||
f.disconnectObservers(),
|
||
f.params.keyboardControl && f.disableKeyboardControl && f.disableKeyboardControl(),
|
||
f.params.mousewheelControl && f.disableMousewheelControl && f.disableMousewheelControl(),
|
||
f.params.a11y && f.a11y && f.a11y.destroy(),
|
||
f.emit("onDestroy"),
|
||
!1 !== e && (f = null)
|
||
}
|
||
,
|
||
f.init(),
|
||
f
|
||
}
|
||
function N(e) {
|
||
return Math.floor(e)
|
||
}
|
||
function H() {
|
||
f.autoplayTimeoutId = setTimeout((function() {
|
||
f.params.loop ? (f.fixLoop(),
|
||
f._slideNext(),
|
||
f.emit("onAutoplay", f)) : f.isEnd ? s.autoplayStopOnLast ? f.stopAutoplay() : (f._slideTo(0),
|
||
f.emit("onAutoplay", f)) : (f._slideNext(),
|
||
f.emit("onAutoplay", f))
|
||
}
|
||
), f.params.autoplay)
|
||
}
|
||
function B(e, i) {
|
||
var n = t(e.target);
|
||
if (!n.is(i))
|
||
if ("string" == typeof i)
|
||
n = n.parents(i);
|
||
else if (i.nodeType) {
|
||
var a;
|
||
return n.parents().each((function(e, t) {
|
||
t === i && (a = i)
|
||
}
|
||
)),
|
||
a ? i : void 0
|
||
}
|
||
if (0 !== n.length)
|
||
return n[0]
|
||
}
|
||
function j(e, t) {
|
||
t = t || {};
|
||
var i = new (window.MutationObserver || window.WebkitMutationObserver)((function(e) {
|
||
e.forEach((function(e) {
|
||
f.onResize(!0),
|
||
f.emit("onObserverUpdate", f, e)
|
||
}
|
||
))
|
||
}
|
||
));
|
||
i.observe(e, {
|
||
attributes: void 0 === t.attributes || t.attributes,
|
||
childList: void 0 === t.childList || t.childList,
|
||
characterData: void 0 === t.characterData || t.characterData
|
||
}),
|
||
f.observers.push(i)
|
||
}
|
||
function z(e) {
|
||
e.originalEvent && (e = e.originalEvent);
|
||
var t = e.keyCode || e.charCode;
|
||
if (!f.params.allowSwipeToNext && (f.isHorizontal() && 39 === t || !f.isHorizontal() && 40 === t))
|
||
return !1;
|
||
if (!f.params.allowSwipeToPrev && (f.isHorizontal() && 37 === t || !f.isHorizontal() && 38 === t))
|
||
return !1;
|
||
if (!(e.shiftKey || e.altKey || e.ctrlKey || e.metaKey || document.activeElement && document.activeElement.nodeName && ("input" === document.activeElement.nodeName.toLowerCase() || "textarea" === document.activeElement.nodeName.toLowerCase()))) {
|
||
if (37 === t || 39 === t || 38 === t || 40 === t) {
|
||
var i = !1;
|
||
if (f.container.parents(".swiper-slide").length > 0 && 0 === f.container.parents(".swiper-slide-active").length)
|
||
return;
|
||
var n = {
|
||
left: window.pageXOffset,
|
||
top: window.pageYOffset
|
||
}
|
||
, a = window.innerWidth
|
||
, o = window.innerHeight
|
||
, r = f.container.offset();
|
||
f.rtl && (r.left = r.left - f.container[0].scrollLeft);
|
||
for (var s = [[r.left, r.top], [r.left + f.width, r.top], [r.left, r.top + f.height], [r.left + f.width, r.top + f.height]], l = 0; l < s.length; l++) {
|
||
var c = s[l];
|
||
c[0] >= n.left && c[0] <= n.left + a && c[1] >= n.top && c[1] <= n.top + o && (i = !0)
|
||
}
|
||
if (!i)
|
||
return
|
||
}
|
||
f.isHorizontal() ? (37 !== t && 39 !== t || (e.preventDefault ? e.preventDefault() : e.returnValue = !1),
|
||
(39 === t && !f.rtl || 37 === t && f.rtl) && f.slideNext(),
|
||
(37 === t && !f.rtl || 39 === t && f.rtl) && f.slidePrev()) : (38 !== t && 40 !== t || (e.preventDefault ? e.preventDefault() : e.returnValue = !1),
|
||
40 === t && f.slideNext(),
|
||
38 === t && f.slidePrev())
|
||
}
|
||
}
|
||
function q(e) {
|
||
e.originalEvent && (e = e.originalEvent);
|
||
var t = f.mousewheel.event
|
||
, i = 0
|
||
, n = f.rtl ? -1 : 1;
|
||
if ("mousewheel" === t)
|
||
if (f.params.mousewheelForceToAxis)
|
||
if (f.isHorizontal()) {
|
||
if (!(Math.abs(e.wheelDeltaX) > Math.abs(e.wheelDeltaY)))
|
||
return;
|
||
i = e.wheelDeltaX * n
|
||
} else {
|
||
if (!(Math.abs(e.wheelDeltaY) > Math.abs(e.wheelDeltaX)))
|
||
return;
|
||
i = e.wheelDeltaY
|
||
}
|
||
else
|
||
i = Math.abs(e.wheelDeltaX) > Math.abs(e.wheelDeltaY) ? -e.wheelDeltaX * n : -e.wheelDeltaY;
|
||
else if ("DOMMouseScroll" === t)
|
||
i = -e.detail;
|
||
else if ("wheel" === t)
|
||
if (f.params.mousewheelForceToAxis)
|
||
if (f.isHorizontal()) {
|
||
if (!(Math.abs(e.deltaX) > Math.abs(e.deltaY)))
|
||
return;
|
||
i = -e.deltaX * n
|
||
} else {
|
||
if (!(Math.abs(e.deltaY) > Math.abs(e.deltaX)))
|
||
return;
|
||
i = -e.deltaY
|
||
}
|
||
else
|
||
i = Math.abs(e.deltaX) > Math.abs(e.deltaY) ? -e.deltaX * n : -e.deltaY;
|
||
if (0 !== i) {
|
||
if (f.params.mousewheelInvert && (i = -i),
|
||
f.params.freeMode) {
|
||
var a = f.getWrapperTranslate() + i * f.params.mousewheelSensitivity
|
||
, o = f.isBeginning
|
||
, r = f.isEnd;
|
||
if (a >= f.minTranslate() && (a = f.minTranslate()),
|
||
a <= f.maxTranslate() && (a = f.maxTranslate()),
|
||
f.setWrapperTransition(0),
|
||
f.setWrapperTranslate(a),
|
||
f.updateProgress(),
|
||
f.updateActiveIndex(),
|
||
(!o && f.isBeginning || !r && f.isEnd) && f.updateClasses(),
|
||
f.params.freeModeSticky ? (clearTimeout(f.mousewheel.timeout),
|
||
f.mousewheel.timeout = setTimeout((function() {
|
||
f.slideReset()
|
||
}
|
||
), 300)) : f.params.lazyLoading && f.lazy && f.lazy.load(),
|
||
0 === a || a === f.maxTranslate())
|
||
return
|
||
} else {
|
||
if ((new window.Date).getTime() - f.mousewheel.lastScrollTime > 60)
|
||
if (i < 0)
|
||
if (f.isEnd && !f.params.loop || f.animating) {
|
||
if (f.params.mousewheelReleaseOnEdges)
|
||
return !0
|
||
} else
|
||
f.slideNext();
|
||
else if (f.isBeginning && !f.params.loop || f.animating) {
|
||
if (f.params.mousewheelReleaseOnEdges)
|
||
return !0
|
||
} else
|
||
f.slidePrev();
|
||
f.mousewheel.lastScrollTime = (new window.Date).getTime()
|
||
}
|
||
return f.params.autoplay && f.stopAutoplay(),
|
||
e.preventDefault ? e.preventDefault() : e.returnValue = !1,
|
||
!1
|
||
}
|
||
}
|
||
function F(e, i) {
|
||
var n, a, o;
|
||
e = t(e);
|
||
var r = f.rtl ? -1 : 1;
|
||
n = e.attr("data-swiper-parallax") || "0",
|
||
a = e.attr("data-swiper-parallax-x"),
|
||
o = e.attr("data-swiper-parallax-y"),
|
||
a || o ? (a = a || "0",
|
||
o = o || "0") : f.isHorizontal() ? (a = n,
|
||
o = "0") : (o = n,
|
||
a = "0"),
|
||
a = a.indexOf("%") >= 0 ? parseInt(a, 10) * i * r + "%" : a * i * r + "px",
|
||
o = o.indexOf("%") >= 0 ? parseInt(o, 10) * i + "%" : o * i + "px",
|
||
e.transform("translate3d(" + a + ", " + o + ",0px)")
|
||
}
|
||
function R(e) {
|
||
return 0 !== e.indexOf("on") && (e = e[0] !== e[0].toUpperCase() ? "on" + e[0].toUpperCase() + e.substring(1) : "on" + e),
|
||
e
|
||
}
|
||
};
|
||
s.prototype = {
|
||
isSafari: (r = navigator.userAgent.toLowerCase(),
|
||
r.indexOf("safari") >= 0 && r.indexOf("chrome") < 0 && r.indexOf("android") < 0),
|
||
isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(navigator.userAgent),
|
||
isArray: function(e) {
|
||
return "[object Array]" === Object.prototype.toString.apply(e)
|
||
},
|
||
browser: {
|
||
ie: window.navigator.pointerEnabled || window.navigator.msPointerEnabled,
|
||
ieTouch: window.navigator.msPointerEnabled && window.navigator.msMaxTouchPoints > 1 || window.navigator.pointerEnabled && window.navigator.maxTouchPoints > 1
|
||
},
|
||
device: function() {
|
||
var e = navigator.userAgent
|
||
, t = e.match(/(Android);?[\s\/]+([\d.]+)?/)
|
||
, i = e.match(/(iPad).*OS\s([\d_]+)/)
|
||
, n = e.match(/(iPod)(.*OS\s([\d_]+))?/)
|
||
, a = !i && e.match(/(iPhone\sOS)\s([\d_]+)/);
|
||
return {
|
||
ios: i || a || n,
|
||
android: t
|
||
}
|
||
}(),
|
||
support: {
|
||
touch: window.Modernizr && !0 === Modernizr.touch || !!("ontouchstart"in window || window.DocumentTouch && document instanceof DocumentTouch),
|
||
transforms3d: window.Modernizr && !0 === Modernizr.csstransforms3d || (i = document.createElement("div").style,
|
||
"webkitPerspective"in i || "MozPerspective"in i || "OPerspective"in i || "MsPerspective"in i || "perspective"in i),
|
||
flexbox: function() {
|
||
for (var e = document.createElement("div").style, t = "alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient".split(" "), i = 0; i < t.length; i++)
|
||
if (t[i]in e)
|
||
return !0
|
||
}(),
|
||
observer: "MutationObserver"in window || "WebkitMutationObserver"in window
|
||
},
|
||
plugins: {}
|
||
};
|
||
for (var l, c = ["jQuery", "Zepto", "Dom7"], d = 0; d < c.length; d++)
|
||
window[c[d]] && u(window[c[d]]);
|
||
function u(e) {
|
||
e.fn.swiper = function(t) {
|
||
var i;
|
||
return e(this).each((function() {
|
||
var e = new s(this,t);
|
||
i || (i = e)
|
||
}
|
||
)),
|
||
i
|
||
}
|
||
}
|
||
return (l = void 0 === e ? window.Dom7 || window.Zepto || a : e) && ("transitionEnd"in l.fn || (l.fn.transitionEnd = function(e) {
|
||
var t, i = ["webkitTransitionEnd", "transitionend", "oTransitionEnd", "MSTransitionEnd", "msTransitionEnd"], n = this;
|
||
function a(o) {
|
||
if (o.target === this)
|
||
for (e.call(this, o),
|
||
t = 0; t < i.length; t++)
|
||
n.off(i[t], a)
|
||
}
|
||
if (e)
|
||
for (t = 0; t < i.length; t++)
|
||
n.on(i[t], a);
|
||
return this
|
||
}
|
||
),
|
||
"transform"in l.fn || (l.fn.transform = function(e) {
|
||
for (var t = 0; t < this.length; t++) {
|
||
var i = this[t].style;
|
||
i.webkitTransform = i.MsTransform = i.msTransform = i.MozTransform = i.OTransform = i.transform = e
|
||
}
|
||
return this
|
||
}
|
||
),
|
||
"transition"in l.fn || (l.fn.transition = function(e) {
|
||
"string" != typeof e && (e += "ms");
|
||
for (var t = 0; t < this.length; t++) {
|
||
var i = this[t].style;
|
||
i.webkitTransitionDuration = i.MsTransitionDuration = i.msTransitionDuration = i.MozTransitionDuration = i.OTransitionDuration = i.transitionDuration = e
|
||
}
|
||
return this
|
||
}
|
||
)),
|
||
s
|
||
}
|
||
function s(e, t, i) {
|
||
return {
|
||
restrict: "E",
|
||
transclude: !0,
|
||
replace: !0,
|
||
scope: {
|
||
onInit: "=",
|
||
onSlideChangeStart: "=",
|
||
onSlideChangeEnd: "=",
|
||
onSlideNextStart: "=",
|
||
onSlideNextEnd: "=",
|
||
onSlidePrevStart: "=",
|
||
onSlidePrevEnd: "=",
|
||
onTransitionStart: "=",
|
||
onTransitionEnd: "=",
|
||
onTouchStart: "=",
|
||
onTouchMove: "=",
|
||
onTouchMoveOpposite: "=",
|
||
onSliderMove: "=",
|
||
onTouchEnd: "=",
|
||
onClick: "=",
|
||
onTap: "=",
|
||
onDoubleTap: "=",
|
||
onImagesReady: "=",
|
||
onProgress: "=",
|
||
onReachBeginning: "=",
|
||
onReachEnd: "=",
|
||
onDestroy: "=",
|
||
onSetTranslate: "=",
|
||
onSetTransition: "=",
|
||
onAutoplay: "=",
|
||
onAutoplayStart: "=",
|
||
onAutoplayStop: "=",
|
||
onLazyImageLoad: "=",
|
||
onLazyImageReady: "=",
|
||
onPaginationRendered: "=",
|
||
instance: "=?"
|
||
},
|
||
priority: 0,
|
||
template: '<div class="swiper-container" ng-transclude></div>',
|
||
link: function(n, a, o) {
|
||
var r;
|
||
angular.extend(o, n),
|
||
n.uuid = (r = (new Date).getTime(),
|
||
"axxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (function(e) {
|
||
var t = (r + 16 * Math.random()) % 16 | 0;
|
||
return r = Math.floor(r / 16),
|
||
("x" == e ? t : 3 & t | 8).toString(16)
|
||
}
|
||
))),
|
||
a.addClass(n.uuid),
|
||
o.pagination = "." + n.uuid + " .swiper-pagination",
|
||
o.paginationClickable = !0,
|
||
o.nextButton = "." + n.uuid + " .swiper-button-next",
|
||
o.prevButton = "." + n.uuid + " .swiper-button-prev",
|
||
i((function() {
|
||
o && o.speed && (o.speed = parseInt(o.speed)),
|
||
n.instance = new e("." + n.uuid,o)
|
||
}
|
||
)),
|
||
t.$on(n.uuid, (function() {
|
||
i((function() {
|
||
n.instance = new e("." + n.uuid,o)
|
||
}
|
||
))
|
||
}
|
||
))
|
||
}
|
||
}
|
||
}
|
||
function l(e) {
|
||
return {
|
||
restrict: "E",
|
||
replace: !0,
|
||
transclude: !0,
|
||
template: '<div class="swiper-slide" ng-transclude></div>',
|
||
require: "^slides",
|
||
priority: 3,
|
||
link: function(t, i, n) {
|
||
var a = t.$parent.$parent.$parent.uuid;
|
||
t.$watch("$last", (function(t) {
|
||
t && e.$broadcast(a)
|
||
}
|
||
))
|
||
}
|
||
}
|
||
}
|
||
angular.module("ui.swiper", []),
|
||
r.$inject = ["Dom7"],
|
||
angular.module("ui.swiper").factory("Swiper", r),
|
||
s.$inject = ["Swiper", "$rootScope", "$timeout"],
|
||
angular.module("ui.swiper").directive("swiper", s),
|
||
angular.module("ui.swiper").directive("slides", (function() {
|
||
return {
|
||
restrict: "E",
|
||
transclude: !0,
|
||
replace: !0,
|
||
require: "^swiper",
|
||
template: '<div class="swiper-wrapper" ng-transclude></div>',
|
||
priority: 2,
|
||
controller: function() {}
|
||
}
|
||
}
|
||
)),
|
||
l.$inject = ["$rootScope"],
|
||
angular.module("ui.swiper").directive("slide", l),
|
||
angular.module("ui.swiper").directive("prev", (function() {
|
||
return {
|
||
restrict: "AE",
|
||
transclude: !0,
|
||
replace: !0,
|
||
require: "^swiper",
|
||
template: '<div class="swiper-button-prev" ng-transclude></div>',
|
||
priority: 2,
|
||
scope: !0
|
||
}
|
||
}
|
||
)),
|
||
angular.module("ui.swiper").directive("pagination", (function() {
|
||
return {
|
||
restrict: "AE",
|
||
transclude: !0,
|
||
replace: !0,
|
||
require: "^swiper",
|
||
template: '<div class="swiper-pagination" ng-transclude></div>',
|
||
priority: 2
|
||
}
|
||
}
|
||
)),
|
||
angular.module("ui.swiper").directive("next", (function() {
|
||
return {
|
||
restrict: "AE",
|
||
transclude: !0,
|
||
replace: !0,
|
||
require: "^swiper",
|
||
template: '<div class="swiper-button-next" ng-transclude></div>',
|
||
priority: 2
|
||
}
|
||
}
|
||
)),
|
||
angular.module("ui.swiper").factory("Dom7", (function() {
|
||
var e = function() {
|
||
var e = function(e) {
|
||
var t = 0;
|
||
for (t = 0; t < e.length; t++)
|
||
this[t] = e[t];
|
||
return this.length = e.length,
|
||
this
|
||
}
|
||
, t = function(t, i) {
|
||
var n = []
|
||
, a = 0;
|
||
if (t && !i && t instanceof e)
|
||
return t;
|
||
if (t)
|
||
if ("string" == typeof t) {
|
||
var o, r, s = t.trim();
|
||
if (s.indexOf("<") >= 0 && s.indexOf(">") >= 0) {
|
||
var l = "div";
|
||
for (0 === s.indexOf("<li") && (l = "ul"),
|
||
0 === s.indexOf("<tr") && (l = "tbody"),
|
||
0 !== s.indexOf("<td") && 0 !== s.indexOf("<th") || (l = "tr"),
|
||
0 === s.indexOf("<tbody") && (l = "table"),
|
||
0 === s.indexOf("<option") && (l = "select"),
|
||
(r = document.createElement(l)).innerHTML = t,
|
||
a = 0; a < r.childNodes.length; a++)
|
||
n.push(r.childNodes[a])
|
||
} else
|
||
for (o = i || "#" !== t[0] || t.match(/[ .<>:~]/) ? (i || document).querySelectorAll(t) : [document.getElementById(t.split("#")[1])],
|
||
a = 0; a < o.length; a++)
|
||
o[a] && n.push(o[a])
|
||
} else if (t.nodeType || t === window || t === document)
|
||
n.push(t);
|
||
else if (t.length > 0 && t[0].nodeType)
|
||
for (a = 0; a < t.length; a++)
|
||
n.push(t[a]);
|
||
return new e(n)
|
||
};
|
||
return e.prototype = {
|
||
addClass: function(e) {
|
||
if (void 0 === e)
|
||
return this;
|
||
for (var t = e.split(" "), i = 0; i < t.length; i++)
|
||
for (var n = 0; n < this.length; n++)
|
||
this[n].classList.add(t[i]);
|
||
return this
|
||
},
|
||
removeClass: function(e) {
|
||
for (var t = e.split(" "), i = 0; i < t.length; i++)
|
||
for (var n = 0; n < this.length; n++)
|
||
this[n].classList.remove(t[i]);
|
||
return this
|
||
},
|
||
hasClass: function(e) {
|
||
return !!this[0] && this[0].classList.contains(e)
|
||
},
|
||
toggleClass: function(e) {
|
||
for (var t = e.split(" "), i = 0; i < t.length; i++)
|
||
for (var n = 0; n < this.length; n++)
|
||
this[n].classList.toggle(t[i]);
|
||
return this
|
||
},
|
||
attr: function(e, t) {
|
||
if (1 === arguments.length && "string" == typeof e)
|
||
return this[0] ? this[0].getAttribute(e) : void 0;
|
||
for (var i = 0; i < this.length; i++)
|
||
if (2 === arguments.length)
|
||
this[i].setAttribute(e, t);
|
||
else
|
||
for (var n in e)
|
||
this[i][n] = e[n],
|
||
this[i].setAttribute(n, e[n]);
|
||
return this
|
||
},
|
||
removeAttr: function(e) {
|
||
for (var t = 0; t < this.length; t++)
|
||
this[t].removeAttribute(e);
|
||
return this
|
||
},
|
||
data: function(e, t) {
|
||
if (void 0 !== t) {
|
||
for (var i = 0; i < this.length; i++) {
|
||
var n = this[i];
|
||
n.dom7ElementDataStorage || (n.dom7ElementDataStorage = {}),
|
||
n.dom7ElementDataStorage[e] = t
|
||
}
|
||
return this
|
||
}
|
||
if (this[0]) {
|
||
var a = this[0].getAttribute("data-" + e);
|
||
return a || (this[0].dom7ElementDataStorage && e in this[0].dom7ElementDataStorage ? this[0].dom7ElementDataStorage[e] : void 0)
|
||
}
|
||
},
|
||
transform: function(e) {
|
||
for (var t = 0; t < this.length; t++) {
|
||
var i = this[t].style;
|
||
i.webkitTransform = i.MsTransform = i.msTransform = i.MozTransform = i.OTransform = i.transform = e
|
||
}
|
||
return this
|
||
},
|
||
transition: function(e) {
|
||
"string" != typeof e && (e += "ms");
|
||
for (var t = 0; t < this.length; t++) {
|
||
var i = this[t].style;
|
||
i.webkitTransitionDuration = i.MsTransitionDuration = i.msTransitionDuration = i.MozTransitionDuration = i.OTransitionDuration = i.transitionDuration = e
|
||
}
|
||
return this
|
||
},
|
||
on: function(e, i, n, a) {
|
||
function o(e) {
|
||
var a = e.target;
|
||
if (t(a).is(i))
|
||
n.call(a, e);
|
||
else
|
||
for (var o = t(a).parents(), r = 0; r < o.length; r++)
|
||
t(o[r]).is(i) && n.call(o[r], e)
|
||
}
|
||
var r, s, l = e.split(" ");
|
||
for (r = 0; r < this.length; r++)
|
||
if ("function" == typeof i || !1 === i)
|
||
for ("function" == typeof i && (n = arguments[1],
|
||
a = arguments[2] || !1),
|
||
s = 0; s < l.length; s++)
|
||
this[r].addEventListener(l[s], n, a);
|
||
else
|
||
for (s = 0; s < l.length; s++)
|
||
this[r].dom7LiveListeners || (this[r].dom7LiveListeners = []),
|
||
this[r].dom7LiveListeners.push({
|
||
listener: n,
|
||
liveListener: o
|
||
}),
|
||
this[r].addEventListener(l[s], o, a);
|
||
return this
|
||
},
|
||
off: function(e, t, i, n) {
|
||
for (var a = e.split(" "), o = 0; o < a.length; o++)
|
||
for (var r = 0; r < this.length; r++)
|
||
if ("function" == typeof t || !1 === t)
|
||
"function" == typeof t && (i = arguments[1],
|
||
n = arguments[2] || !1),
|
||
this[r].removeEventListener(a[o], i, n);
|
||
else if (this[r].dom7LiveListeners)
|
||
for (var s = 0; s < this[r].dom7LiveListeners.length; s++)
|
||
this[r].dom7LiveListeners[s].listener === i && this[r].removeEventListener(a[o], this[r].dom7LiveListeners[s].liveListener, n);
|
||
return this
|
||
},
|
||
once: function(e, t, i, n) {
|
||
var a = this;
|
||
function o(r) {
|
||
i(r),
|
||
a.off(e, t, o, n)
|
||
}
|
||
"function" == typeof t && (t = !1,
|
||
i = arguments[1],
|
||
n = arguments[2]),
|
||
a.on(e, t, o, n)
|
||
},
|
||
trigger: function(e, t) {
|
||
for (var i = 0; i < this.length; i++) {
|
||
var n;
|
||
try {
|
||
n = new window.CustomEvent(e,{
|
||
detail: t,
|
||
bubbles: !0,
|
||
cancelable: !0
|
||
})
|
||
} catch (i) {
|
||
(n = document.createEvent("Event")).initEvent(e, !0, !0),
|
||
n.detail = t
|
||
}
|
||
this[i].dispatchEvent(n)
|
||
}
|
||
return this
|
||
},
|
||
transitionEnd: function(e) {
|
||
var t, i = ["webkitTransitionEnd", "transitionend", "oTransitionEnd", "MSTransitionEnd", "msTransitionEnd"], n = this;
|
||
function a(o) {
|
||
if (o.target === this)
|
||
for (e.call(this, o),
|
||
t = 0; t < i.length; t++)
|
||
n.off(i[t], a)
|
||
}
|
||
if (e)
|
||
for (t = 0; t < i.length; t++)
|
||
n.on(i[t], a);
|
||
return this
|
||
},
|
||
width: function() {
|
||
return this[0] === window ? window.innerWidth : this.length > 0 ? parseFloat(this.css("width")) : null
|
||
},
|
||
outerWidth: function(e) {
|
||
return this.length > 0 ? e ? this[0].offsetWidth + parseFloat(this.css("margin-right")) + parseFloat(this.css("margin-left")) : this[0].offsetWidth : null
|
||
},
|
||
height: function() {
|
||
return this[0] === window ? window.innerHeight : this.length > 0 ? parseFloat(this.css("height")) : null
|
||
},
|
||
outerHeight: function(e) {
|
||
return this.length > 0 ? e ? this[0].offsetHeight + parseFloat(this.css("margin-top")) + parseFloat(this.css("margin-bottom")) : this[0].offsetHeight : null
|
||
},
|
||
offset: function() {
|
||
if (this.length > 0) {
|
||
var e = this[0]
|
||
, t = e.getBoundingClientRect()
|
||
, i = document.body
|
||
, n = e.clientTop || i.clientTop || 0
|
||
, a = e.clientLeft || i.clientLeft || 0
|
||
, o = window.pageYOffset || e.scrollTop
|
||
, r = window.pageXOffset || e.scrollLeft;
|
||
return {
|
||
top: t.top + o - n,
|
||
left: t.left + r - a
|
||
}
|
||
}
|
||
return null
|
||
},
|
||
css: function(e, t) {
|
||
var i;
|
||
if (1 === arguments.length) {
|
||
if ("string" != typeof e) {
|
||
for (i = 0; i < this.length; i++)
|
||
for (var n in e)
|
||
this[i].style[n] = e[n];
|
||
return this
|
||
}
|
||
if (this[0])
|
||
return window.getComputedStyle(this[0], null).getPropertyValue(e)
|
||
}
|
||
if (2 === arguments.length && "string" == typeof e) {
|
||
for (i = 0; i < this.length; i++)
|
||
this[i].style[e] = t;
|
||
return this
|
||
}
|
||
return this
|
||
},
|
||
each: function(e) {
|
||
for (var t = 0; t < this.length; t++)
|
||
e.call(this[t], t, this[t]);
|
||
return this
|
||
},
|
||
html: function(e) {
|
||
if (void 0 === e)
|
||
return this[0] ? this[0].innerHTML : void 0;
|
||
for (var t = 0; t < this.length; t++)
|
||
this[t].innerHTML = e;
|
||
return this
|
||
},
|
||
text: function(e) {
|
||
if (void 0 === e)
|
||
return this[0] ? this[0].textContent.trim() : null;
|
||
for (var t = 0; t < this.length; t++)
|
||
this[t].textContent = e;
|
||
return this
|
||
},
|
||
is: function(i) {
|
||
if (!this[0])
|
||
return !1;
|
||
var n, a;
|
||
if ("string" == typeof i) {
|
||
var o = this[0];
|
||
if (o === document)
|
||
return i === document;
|
||
if (o === window)
|
||
return i === window;
|
||
if (o.matches)
|
||
return o.matches(i);
|
||
if (o.webkitMatchesSelector)
|
||
return o.webkitMatchesSelector(i);
|
||
if (o.mozMatchesSelector)
|
||
return o.mozMatchesSelector(i);
|
||
if (o.msMatchesSelector)
|
||
return o.msMatchesSelector(i);
|
||
for (n = t(i),
|
||
a = 0; a < n.length; a++)
|
||
if (n[a] === this[0])
|
||
return !0;
|
||
return !1
|
||
}
|
||
if (i === document)
|
||
return this[0] === document;
|
||
if (i === window)
|
||
return this[0] === window;
|
||
if (i.nodeType || i instanceof e) {
|
||
for (n = i.nodeType ? [i] : i,
|
||
a = 0; a < n.length; a++)
|
||
if (n[a] === this[0])
|
||
return !0;
|
||
return !1
|
||
}
|
||
return !1
|
||
},
|
||
index: function() {
|
||
if (this[0]) {
|
||
for (var e = this[0], t = 0; null !== (e = e.previousSibling); )
|
||
1 === e.nodeType && t++;
|
||
return t
|
||
}
|
||
},
|
||
eq: function(t) {
|
||
if (void 0 === t)
|
||
return this;
|
||
var i, n = this.length;
|
||
return new e(t > n - 1 ? [] : t < 0 ? (i = n + t) < 0 ? [] : [this[i]] : [this[t]])
|
||
},
|
||
append: function(t) {
|
||
var i, n;
|
||
for (i = 0; i < this.length; i++)
|
||
if ("string" == typeof t) {
|
||
var a = document.createElement("div");
|
||
for (a.innerHTML = t; a.firstChild; )
|
||
this[i].appendChild(a.firstChild)
|
||
} else if (t instanceof e)
|
||
for (n = 0; n < t.length; n++)
|
||
this[i].appendChild(t[n]);
|
||
else
|
||
this[i].appendChild(t);
|
||
return this
|
||
},
|
||
prepend: function(t) {
|
||
var i, n;
|
||
for (i = 0; i < this.length; i++)
|
||
if ("string" == typeof t) {
|
||
var a = document.createElement("div");
|
||
for (a.innerHTML = t,
|
||
n = a.childNodes.length - 1; n >= 0; n--)
|
||
this[i].insertBefore(a.childNodes[n], this[i].childNodes[0])
|
||
} else if (t instanceof e)
|
||
for (n = 0; n < t.length; n++)
|
||
this[i].insertBefore(t[n], this[i].childNodes[0]);
|
||
else
|
||
this[i].insertBefore(t, this[i].childNodes[0]);
|
||
return this
|
||
},
|
||
insertBefore: function(e) {
|
||
for (var i = t(e), n = 0; n < this.length; n++)
|
||
if (1 === i.length)
|
||
i[0].parentNode.insertBefore(this[n], i[0]);
|
||
else if (i.length > 1)
|
||
for (var a = 0; a < i.length; a++)
|
||
i[a].parentNode.insertBefore(this[n].cloneNode(!0), i[a])
|
||
},
|
||
insertAfter: function(e) {
|
||
for (var i = t(e), n = 0; n < this.length; n++)
|
||
if (1 === i.length)
|
||
i[0].parentNode.insertBefore(this[n], i[0].nextSibling);
|
||
else if (i.length > 1)
|
||
for (var a = 0; a < i.length; a++)
|
||
i[a].parentNode.insertBefore(this[n].cloneNode(!0), i[a].nextSibling)
|
||
},
|
||
next: function(i) {
|
||
return this.length > 0 ? i ? this[0].nextElementSibling && t(this[0].nextElementSibling).is(i) ? new e([this[0].nextElementSibling]) : new e([]) : this[0].nextElementSibling ? new e([this[0].nextElementSibling]) : new e([]) : new e([])
|
||
},
|
||
nextAll: function(i) {
|
||
var n = []
|
||
, a = this[0];
|
||
if (!a)
|
||
return new e([]);
|
||
for (; a.nextElementSibling; ) {
|
||
var o = a.nextElementSibling;
|
||
i ? t(o).is(i) && n.push(o) : n.push(o),
|
||
a = o
|
||
}
|
||
return new e(n)
|
||
},
|
||
prev: function(i) {
|
||
return this.length > 0 ? i ? this[0].previousElementSibling && t(this[0].previousElementSibling).is(i) ? new e([this[0].previousElementSibling]) : new e([]) : this[0].previousElementSibling ? new e([this[0].previousElementSibling]) : new e([]) : new e([])
|
||
},
|
||
prevAll: function(i) {
|
||
var n = []
|
||
, a = this[0];
|
||
if (!a)
|
||
return new e([]);
|
||
for (; a.previousElementSibling; ) {
|
||
var o = a.previousElementSibling;
|
||
i ? t(o).is(i) && n.push(o) : n.push(o),
|
||
a = o
|
||
}
|
||
return new e(n)
|
||
},
|
||
parent: function(e) {
|
||
for (var i = [], n = 0; n < this.length; n++)
|
||
e ? t(this[n].parentNode).is(e) && i.push(this[n].parentNode) : i.push(this[n].parentNode);
|
||
return t(t.unique(i))
|
||
},
|
||
parents: function(e) {
|
||
for (var i = [], n = 0; n < this.length; n++)
|
||
for (var a = this[n].parentNode; a; )
|
||
e ? t(a).is(e) && i.push(a) : i.push(a),
|
||
a = a.parentNode;
|
||
return t(t.unique(i))
|
||
},
|
||
find: function(t) {
|
||
for (var i = [], n = 0; n < this.length; n++)
|
||
for (var a = this[n].querySelectorAll(t), o = 0; o < a.length; o++)
|
||
i.push(a[o]);
|
||
return new e(i)
|
||
},
|
||
children: function(i) {
|
||
for (var n = [], a = 0; a < this.length; a++)
|
||
for (var o = this[a].childNodes, r = 0; r < o.length; r++)
|
||
i ? 1 === o[r].nodeType && t(o[r]).is(i) && n.push(o[r]) : 1 === o[r].nodeType && n.push(o[r]);
|
||
return new e(t.unique(n))
|
||
},
|
||
remove: function() {
|
||
for (var e = 0; e < this.length; e++)
|
||
this[e].parentNode && this[e].parentNode.removeChild(this[e]);
|
||
return this
|
||
},
|
||
add: function() {
|
||
var e, i, n = this;
|
||
for (e = 0; e < arguments.length; e++) {
|
||
var a = t(arguments[e]);
|
||
for (i = 0; i < a.length; i++)
|
||
n[n.length] = a[i],
|
||
n.length++
|
||
}
|
||
return n
|
||
}
|
||
},
|
||
t.fn = e.prototype,
|
||
t.unique = function(e) {
|
||
for (var t = [], i = 0; i < e.length; i++)
|
||
-1 === t.indexOf(e[i]) && t.push(e[i]);
|
||
return t
|
||
}
|
||
,
|
||
t
|
||
}();
|
||
return e
|
||
}
|
||
))
|
||
},
|
||
69219: function(e, t, i) {
|
||
var n, a, o, r, s, l, c, d = i(19755);
|
||
function u(e) {
|
||
return u = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
|
||
return typeof e
|
||
}
|
||
: function(e) {
|
||
return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
|
||
}
|
||
,
|
||
u(e)
|
||
}
|
||
!function(e) {
|
||
function t(t, i) {
|
||
var n, a = this, o = window.navigator, r = o.userAgent.toLowerCase();
|
||
a.uid = e.rsModules.uid++,
|
||
a.ns = ".rs" + a.uid;
|
||
var s, l = document.createElement("div").style, c = ["webkit", "Moz", "ms", "O"], d = "", u = 0;
|
||
for (n = 0; n < c.length; n++) {
|
||
var p = c[n];
|
||
!d && p + "Transform"in l && (d = p),
|
||
p = p.toLowerCase(),
|
||
window.requestAnimationFrame || (window.requestAnimationFrame = window[p + "RequestAnimationFrame"],
|
||
window.cancelAnimationFrame = window[p + "CancelAnimationFrame"] || window[p + "CancelRequestAnimationFrame"])
|
||
}
|
||
window.requestAnimationFrame || (window.requestAnimationFrame = function(e, t) {
|
||
var i = (new Date).getTime()
|
||
, n = Math.max(0, 16 - (i - u))
|
||
, a = window.setTimeout((function() {
|
||
e(i + n)
|
||
}
|
||
), n);
|
||
return u = i + n,
|
||
a
|
||
}
|
||
),
|
||
window.cancelAnimationFrame || (window.cancelAnimationFrame = function(e) {
|
||
clearTimeout(e)
|
||
}
|
||
),
|
||
a.isIPAD = r.match(/(ipad)/),
|
||
a.isIOS = a.isIPAD || r.match(/(iphone|ipod)/),
|
||
n = function(e) {
|
||
return {
|
||
browser: (e = /(chrome)[ \/]([\w.]+)/.exec(e) || /(webkit)[ \/]([\w.]+)/.exec(e) || /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e) || /(msie) ([\w.]+)/.exec(e) || 0 > e.indexOf("compatible") && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e) || [])[1] || "",
|
||
version: e[2] || "0"
|
||
}
|
||
}(r),
|
||
c = {},
|
||
n.browser && (c[n.browser] = !0,
|
||
c.version = n.version),
|
||
c.chrome && (c.webkit = !0),
|
||
a._browser = c,
|
||
a.isAndroid = -1 < r.indexOf("android"),
|
||
a.slider = e(t),
|
||
a.ev = e(a),
|
||
a._doc = e(document),
|
||
a.st = e.extend({}, e.fn.royalSlider.defaults, i),
|
||
a._currAnimSpeed = a.st.transitionSpeed,
|
||
a._minPosOffset = 0,
|
||
!a.st.allowCSS3 || c.webkit && !a.st.allowCSS3OnWebkit || (n = d + (d ? "T" : "t"),
|
||
a._useCSS3Transitions = n + "ransform"in l && n + "ransition"in l,
|
||
a._useCSS3Transitions && (a._use3dTransform = d + (d ? "P" : "p") + "erspective"in l)),
|
||
d = d.toLowerCase(),
|
||
a._vendorPref = "-" + d + "-",
|
||
a._slidesHorizontal = "vertical" !== a.st.slidesOrientation,
|
||
a._reorderProp = a._slidesHorizontal ? "left" : "top",
|
||
a._sizeProp = a._slidesHorizontal ? "width" : "height",
|
||
a._prevNavItemId = -1,
|
||
a._isMove = "fade" !== a.st.transitionType,
|
||
a._isMove || (a.st.sliderDrag = !1,
|
||
a._fadeZIndex = 10),
|
||
a._opacityCSS = "z-index:0; display:none; opacity:0;",
|
||
a._newSlideId = 0,
|
||
a._sPosition = 0,
|
||
a._nextSlidePos = 0,
|
||
e.each(e.rsModules, (function(e, t) {
|
||
"uid" !== e && t.call(a)
|
||
}
|
||
)),
|
||
a.slides = [],
|
||
a._idCount = 0,
|
||
(a.st.slides ? e(a.st.slides) : a.slider.children().detach()).each((function() {
|
||
a._parseNode(this, !0)
|
||
}
|
||
)),
|
||
a.st.randomizeSlides && a.slides.sort((function() {
|
||
return .5 - Math.random()
|
||
}
|
||
)),
|
||
a.numSlides = a.slides.length,
|
||
a._refreshNumPreloadImages(),
|
||
a.st.startSlideId ? a.st.startSlideId > a.numSlides - 1 && (a.st.startSlideId = a.numSlides - 1) : a.st.startSlideId = 0,
|
||
a._newSlideId = a.staticSlideId = a.currSlideId = a._realId = a.st.startSlideId,
|
||
a.currSlide = a.slides[a.currSlideId],
|
||
a._accelerationPos = 0,
|
||
a.pointerMultitouch = !1,
|
||
a.slider.addClass((a._slidesHorizontal ? "rsHor" : "rsVer") + (a._isMove ? "" : " rsFade")),
|
||
l = '<div class="rsOverflow"><div class="rsContainer">',
|
||
a.slidesSpacing = a.st.slidesSpacing,
|
||
a._slideSize = (a._slidesHorizontal ? a.slider.width() : a.slider.height()) + a.st.slidesSpacing,
|
||
a._preload = 0 < a._numPreloadImages,
|
||
1 >= a.numSlides && (a._loop = !1),
|
||
a._loopHelpers = a._loop && a._isMove ? 2 === a.numSlides ? 1 : 2 : 0,
|
||
a._maxImages = 6 > a.numSlides ? a.numSlides : 6,
|
||
a._currBlockIndex = 0,
|
||
a._idOffset = 0,
|
||
a.slidesJQ = [];
|
||
for (n = 0; n < a.numSlides; n++)
|
||
a.slidesJQ.push(e('<div style="' + (a._isMove ? "" : n !== a.currSlideId ? a._opacityCSS : "z-index:0;") + '" class="rsSlide "></div>'));
|
||
a._sliderOverflow = l = e(l + "</div></div>"),
|
||
d = function(e, t, i, n, o) {
|
||
a._downEvent = e + t,
|
||
a._moveEvent = e + i,
|
||
a._upEvent = e + n,
|
||
o && (a._cancelEvent = e + o)
|
||
}
|
||
,
|
||
n = o.pointerEnabled,
|
||
a.pointerEnabled = n || o.msPointerEnabled,
|
||
a.pointerEnabled ? (a.hasTouch = !1,
|
||
a._lastItemFriction = .2,
|
||
a.pointerMultitouch = 1 < o[(n ? "m" : "msM") + "axTouchPoints"],
|
||
n ? d("pointer", "down", "move", "up", "cancel") : d("MSPointer", "Down", "Move", "Up", "Cancel")) : (a.isIOS ? a._downEvent = a._moveEvent = a._upEvent = a._cancelEvent = "" : d("mouse", "down", "move", "up"),
|
||
"ontouchstart"in window || "createTouch"in document ? (a.hasTouch = !0,
|
||
a._downEvent += " touchstart",
|
||
a._moveEvent += " touchmove",
|
||
a._upEvent += " touchend",
|
||
a._cancelEvent += " touchcancel",
|
||
a._lastItemFriction = .5,
|
||
a.st.sliderTouch && (a._hasDrag = !0)) : (a.hasTouch = !1,
|
||
a._lastItemFriction = .2)),
|
||
a.st.sliderDrag && (a._hasDrag = !0,
|
||
c.msie || c.opera ? a._grabCursor = a._grabbingCursor = "move" : c.mozilla ? (a._grabCursor = "-moz-grab",
|
||
a._grabbingCursor = "-moz-grabbing") : c.webkit && -1 != o.platform.indexOf("Mac") && (a._grabCursor = "-webkit-grab",
|
||
a._grabbingCursor = "-webkit-grabbing"),
|
||
a._setGrabCursor()),
|
||
a.slider.html(l),
|
||
a._controlsContainer = a.st.controlsInside ? a._sliderOverflow : a.slider,
|
||
a._slidesContainer = a._sliderOverflow.children(".rsContainer"),
|
||
a.pointerEnabled && a._slidesContainer.css((n ? "" : "-ms-") + "touch-action", a._slidesHorizontal ? "pan-y" : "pan-x"),
|
||
a._preloader = e('<div class="rsPreloader"></div>'),
|
||
o = a._slidesContainer.children(".rsSlide"),
|
||
a._currHolder = a.slidesJQ[a.currSlideId],
|
||
a._selectedSlideHolder = 0,
|
||
a._eventCallbacks = {
|
||
dragStart: function(e) {
|
||
a._onDragStart(e)
|
||
},
|
||
dragStartThumb: function(e) {
|
||
a._onDragStart(e, !0)
|
||
},
|
||
touchmoveFix: function() {}
|
||
},
|
||
a._useCSS3Transitions ? (a._TP = "transition-property",
|
||
a._TD = "transition-duration",
|
||
a._TTF = "transition-timing-function",
|
||
a._yProp = a._xProp = a._vendorPref + "transform",
|
||
a._use3dTransform ? (c.webkit && !c.chrome && a.slider.addClass("rsWebkit3d"),
|
||
a._tPref1 = "translate3d(",
|
||
a._tPref2 = "px, ",
|
||
a._tPref3 = "px, 0px)") : (a._tPref1 = "translate(",
|
||
a._tPref2 = "px, ",
|
||
a._tPref3 = "px)"),
|
||
a._isMove ? a._slidesContainer[a._vendorPref + a._TP] = a._vendorPref + "transform" : ((c = {})[a._vendorPref + a._TP] = "opacity",
|
||
c[a._vendorPref + a._TD] = a.st.transitionSpeed + "ms",
|
||
c[a._vendorPref + a._TTF] = a.st.css3easeInOut,
|
||
o.css(c))) : (a._xProp = "left",
|
||
a._yProp = "top"),
|
||
a._slidesHorizontal && a.slider.css("touch-action", "pan-y"),
|
||
e(window).on("resize" + a.ns, (function() {
|
||
s && clearTimeout(s),
|
||
s = setTimeout((function() {
|
||
a.updateSliderSize()
|
||
}
|
||
), 50)
|
||
}
|
||
)),
|
||
a.ev.trigger("rsAfterPropsSetup"),
|
||
a.updateSliderSize(),
|
||
a.st.keyboardNavEnabled && a._bindKeyboardNav(),
|
||
a.st.arrowsNavHideOnTouch && (a.hasTouch || a.pointerMultitouch) && (a.st.arrowsNav = !1),
|
||
a.st.arrowsNav && (o = a._controlsContainer,
|
||
e('<div class="rsArrow rsArrowLeft"><div class="rsArrowIcn"></div></div><div class="rsArrow rsArrowRight"><div class="rsArrowIcn"></div></div>').appendTo(o),
|
||
a._arrowLeft = o.children(".rsArrowLeft").click((function(e) {
|
||
e.preventDefault(),
|
||
a.prev()
|
||
}
|
||
)),
|
||
a._arrowRight = o.children(".rsArrowRight").click((function(e) {
|
||
e.preventDefault(),
|
||
a.next()
|
||
}
|
||
)),
|
||
a.st.arrowsNavAutoHide && !a.hasTouch && (a._arrowLeft.addClass("rsHidden"),
|
||
a._arrowRight.addClass("rsHidden"),
|
||
o.one("mousemove.arrowshover", (function() {
|
||
a._arrowLeft.removeClass("rsHidden"),
|
||
a._arrowRight.removeClass("rsHidden")
|
||
}
|
||
)),
|
||
o.hover((function() {
|
||
a._arrowsAutoHideLocked || (a._arrowLeft.removeClass("rsHidden"),
|
||
a._arrowRight.removeClass("rsHidden"))
|
||
}
|
||
), (function() {
|
||
a._arrowsAutoHideLocked || (a._arrowLeft.addClass("rsHidden"),
|
||
a._arrowRight.addClass("rsHidden"))
|
||
}
|
||
))),
|
||
a.ev.on("rsOnUpdateNav", (function() {
|
||
a._updateArrowsNav()
|
||
}
|
||
)),
|
||
a._updateArrowsNav()),
|
||
a.hasTouch && a.st.sliderTouch || !a.hasTouch && a.st.sliderDrag ? (a._bindPassiveEvent(a._slidesContainer[0], a._downEvent, a._eventCallbacks.dragStart, !1),
|
||
a._bindPassiveEvent(a.slider[0], a._moveEvent, a._eventCallbacks.touchmoveFix, !1)) : a.dragSuccess = !1;
|
||
var m = ["rsPlayBtnIcon", "rsPlayBtn", "rsCloseVideoBtn", "rsCloseVideoIcn"];
|
||
a._slidesContainer.click((function(t) {
|
||
if (!a.dragSuccess) {
|
||
var i = e(t.target).attr("class");
|
||
if (-1 !== e.inArray(i, m) && a.toggleVideo())
|
||
return !1;
|
||
if (a.st.navigateByClick && !a._blockActions) {
|
||
if (e(t.target).closest(".rsNoDrag", a._currHolder).length)
|
||
return !0;
|
||
a._mouseNext(t)
|
||
}
|
||
a.ev.trigger("rsSlideClick", t)
|
||
}
|
||
}
|
||
)).on("click.rs", "a", (function(e) {
|
||
if (a.dragSuccess)
|
||
return !1;
|
||
a._blockActions = !0,
|
||
setTimeout((function() {
|
||
a._blockActions = !1
|
||
}
|
||
), 3)
|
||
}
|
||
)),
|
||
a.ev.trigger("rsAfterInit")
|
||
}
|
||
e.rsModules || (e.rsModules = {
|
||
uid: 0
|
||
}),
|
||
t.prototype = {
|
||
constructor: t,
|
||
_mouseNext: function(e) {
|
||
(e = e[this._slidesHorizontal ? "pageX" : "pageY"] - this._sliderOffset) >= this._nextSlidePos ? this.next() : 0 > e && this.prev()
|
||
},
|
||
_refreshNumPreloadImages: function() {
|
||
var e = this.st.numImagesToPreload;
|
||
(this._loop = this.st.loop) && (2 === this.numSlides ? (this._loop = !1,
|
||
this.st.loopRewind = !0) : 2 > this.numSlides && (this.st.loopRewind = this._loop = !1)),
|
||
this._loop && 0 < e && (4 >= this.numSlides ? e = 1 : this.st.numImagesToPreload > (this.numSlides - 1) / 2 && (e = Math.floor((this.numSlides - 1) / 2))),
|
||
this._numPreloadImages = e
|
||
},
|
||
_parseNode: function(t, i) {
|
||
function n(e, t) {
|
||
if (t ? o.images.push(e.attr(t)) : o.images.push(e.text()),
|
||
r) {
|
||
r = !1,
|
||
o.caption = "src" === t ? e.attr("alt") : e.contents(),
|
||
o.image = o.images[0],
|
||
o.videoURL = e.attr("data-rsVideo");
|
||
var i = e.attr("data-rsw")
|
||
, n = e.attr("data-rsh");
|
||
void 0 !== i && !1 !== i && void 0 !== n && !1 !== n ? (o.iW = parseInt(i, 10),
|
||
o.iH = parseInt(n, 10)) : a.st.imgWidth && a.st.imgHeight && (o.iW = a.st.imgWidth,
|
||
o.iH = a.st.imgHeight)
|
||
}
|
||
}
|
||
var a = this
|
||
, o = {}
|
||
, r = !0;
|
||
if (t = e(t),
|
||
a._currContent = t,
|
||
a.ev.trigger("rsBeforeParseNode", [t, o]),
|
||
!o.stopParsing) {
|
||
if (t = a._currContent,
|
||
o.id = a._idCount,
|
||
o.contentAdded = !1,
|
||
a._idCount++,
|
||
o.images = [],
|
||
o.isBig = !1,
|
||
!o.hasCover) {
|
||
if (t.hasClass("rsImg"))
|
||
var s = t
|
||
, l = !0;
|
||
else
|
||
(s = t.find(".rsImg")).length && (l = !0);
|
||
l ? (o.bigImage = s.eq(0).attr("data-rsBigImg"),
|
||
s.each((function() {
|
||
var t = e(this);
|
||
t.is("a") ? n(t, "href") : t.is("img") ? n(t, "src") : n(t)
|
||
}
|
||
))) : t.is("img") && (t.addClass("rsImg rsMainSlideImage"),
|
||
n(t, "src"))
|
||
}
|
||
return (s = t.find(".rsCaption")).length && (o.caption = s.remove()),
|
||
o.content = t,
|
||
a.ev.trigger("rsAfterParseNode", [t, o]),
|
||
i && a.slides.push(o),
|
||
0 === o.images.length && (o.isLoaded = !0,
|
||
o.isRendered = !1,
|
||
o.isLoading = !1,
|
||
o.images = null),
|
||
o
|
||
}
|
||
},
|
||
_bindKeyboardNav: function() {
|
||
var e, t, i = this, n = function(e) {
|
||
37 === e ? i.prev() : 39 === e && i.next()
|
||
};
|
||
i._doc.on("keydown" + i.ns, (function(a) {
|
||
if (!i.st.keyboardNavEnabled)
|
||
return !0;
|
||
if (!(i._isDragging || (t = a.keyCode,
|
||
37 !== t && 39 !== t || e))) {
|
||
if (document.activeElement && /(INPUT|SELECT|TEXTAREA)/i.test(document.activeElement.tagName))
|
||
return !0;
|
||
i.isFullscreen && a.preventDefault(),
|
||
n(t),
|
||
e = setInterval((function() {
|
||
n(t)
|
||
}
|
||
), 700)
|
||
}
|
||
}
|
||
)).on("keyup" + i.ns, (function(t) {
|
||
e && (clearInterval(e),
|
||
e = null)
|
||
}
|
||
))
|
||
},
|
||
goTo: function(e, t) {
|
||
e !== this.currSlideId && this._moveTo(e, this.st.transitionSpeed, !0, !t)
|
||
},
|
||
destroy: function(t) {
|
||
this.ev.trigger("rsBeforeDestroy"),
|
||
this._doc.off("keydown" + this.ns + " keyup" + this.ns),
|
||
this._eventCallbacks.dragMove && (this._unbindPassiveEvent(document, this._moveEvent, this._eventCallbacks.dragMove, !0),
|
||
this._unbindPassiveEvent(document, this._upEvent, this._eventCallbacks.dragRelease, !0)),
|
||
this._eventCallbacks.downEvent && (this._unbindPassiveEvent(this._slidesContainer[0], this._downEvent, this._eventCallbacks.dragStart, !1),
|
||
this._unbindPassiveEvent(this.slider[0], this._moveEvent, this._eventCallbacks.touchmoveFix, !1)),
|
||
this._slidesContainer.off(this._downEvent + " click"),
|
||
this.slider.data("royalSlider", null),
|
||
e.removeData(this.slider, "royalSlider"),
|
||
e(window).off("resize" + this.ns),
|
||
this.loadingTimeout && clearTimeout(this.loadingTimeout),
|
||
t && this.slider.remove(),
|
||
this.ev = this.slider = this.slides = null
|
||
},
|
||
_updateBlocksContent: function(t, i) {
|
||
function n(i, n, r) {
|
||
i.isAdded ? (a(n, i),
|
||
o(n, i)) : (r || (r = c.slidesJQ[n]),
|
||
i.holder ? r = i.holder : (r = c.slidesJQ[n] = e(r),
|
||
i.holder = r),
|
||
i.appendOnLoaded = !1,
|
||
o(n, i, r),
|
||
a(n, i),
|
||
c._addBlockToContainer(i, r, t),
|
||
i.isAdded = !0)
|
||
}
|
||
function a(e, i) {
|
||
i.contentAdded || (c.setItemHtml(i, t),
|
||
t || (i.contentAdded = !0))
|
||
}
|
||
function o(e, t, i) {
|
||
c._isMove && (i || (i = c.slidesJQ[e]),
|
||
i.css(c._reorderProp, (e + c._idOffset + b) * c._slideSize))
|
||
}
|
||
function r(e) {
|
||
if (d) {
|
||
if (e > u - 1)
|
||
return r(e - u);
|
||
if (0 > e)
|
||
return r(u + e)
|
||
}
|
||
return e
|
||
}
|
||
var s, l, c = this, d = c._loop, u = c.numSlides;
|
||
if (!isNaN(i))
|
||
return r(i);
|
||
var p = c.currSlideId
|
||
, m = t ? Math.abs(c._prevSlideId - c.currSlideId) >= c.numSlides - 1 ? 0 : 1 : c._numPreloadImages
|
||
, h = Math.min(2, m)
|
||
, f = !1
|
||
, g = !1;
|
||
for (l = p; l < p + 1 + h; l++) {
|
||
var v = r(l);
|
||
if ((s = c.slides[v]) && (!s.isAdded || !s.positionSet)) {
|
||
f = !0;
|
||
break
|
||
}
|
||
}
|
||
for (l = p - 1; l > p - 1 - h; l--)
|
||
if (v = r(l),
|
||
(s = c.slides[v]) && (!s.isAdded || !s.positionSet)) {
|
||
g = !0;
|
||
break
|
||
}
|
||
if (f)
|
||
for (l = p; l < p + m + 1; l++) {
|
||
v = r(l);
|
||
var b = Math.floor((c._realId - (p - l)) / c.numSlides) * c.numSlides;
|
||
(s = c.slides[v]) && n(s, v)
|
||
}
|
||
if (g)
|
||
for (l = p - 1; l > p - 1 - m; l--)
|
||
v = r(l),
|
||
b = Math.floor((c._realId - (p - l)) / u) * u,
|
||
(s = c.slides[v]) && n(s, v);
|
||
if (!t)
|
||
for (m = (h = r(p - m)) > (p = r(p + m)) ? 0 : h,
|
||
l = 0; l < u; l++)
|
||
h > p && l > h - 1 || !(l < m || l > p) || (s = c.slides[l]) && s.holder && (s.holder.detach(),
|
||
s.isAdded = !1)
|
||
},
|
||
setItemHtml: function(t, i) {
|
||
var n = this
|
||
, a = function() {
|
||
if (t.images) {
|
||
if (!t.isLoading) {
|
||
if (t.content.hasClass("rsImg"))
|
||
var i = t.content
|
||
, a = !0;
|
||
else
|
||
i = t.content.find(".rsImg:not(img)");
|
||
if (i && !i.is("img") && i.each((function() {
|
||
var i = e(this)
|
||
, n = '<img class="rsImg" src="' + (i.is("a") ? i.attr("href") : i.text()) + '" />';
|
||
a ? t.content = e(n) : i.replaceWith(n)
|
||
}
|
||
)),
|
||
i = a ? t.content : t.content.find("img.rsImg"),
|
||
c(),
|
||
i.eq(0).addClass("rsMainSlideImage"),
|
||
t.iW && t.iH && (t.isLoaded || n._resizeImage(t),
|
||
s()),
|
||
t.isLoading = !0,
|
||
t.isBig)
|
||
e("<img />").on("load.rs error.rs", (function(t) {
|
||
e(this).off("load.rs error.rs"),
|
||
o([this], !0)
|
||
}
|
||
)).attr("src", t.image);
|
||
else {
|
||
t.loaded = [],
|
||
t.numStartedLoad = 0,
|
||
i = function(i) {
|
||
e(this).off("load.rs error.rs"),
|
||
t.loaded.push(this),
|
||
t.loaded.length === t.numStartedLoad && o(t.loaded, !1)
|
||
}
|
||
;
|
||
for (var r = 0; r < t.images.length; r++) {
|
||
var l = e("<img />");
|
||
t.numStartedLoad++,
|
||
l.on("load.rs error.rs", i).attr("src", t.images[r])
|
||
}
|
||
}
|
||
}
|
||
} else
|
||
t.isRendered = !0,
|
||
t.isLoaded = !0,
|
||
t.isLoading = !1,
|
||
s(!0)
|
||
}
|
||
, o = function(e, i) {
|
||
if (e.length) {
|
||
var n = e[0];
|
||
if (i !== t.isBig)
|
||
(n = t.holder.children()) && 1 < n.length && d();
|
||
else if (t.iW && t.iH)
|
||
r();
|
||
else if (t.iW = n.width,
|
||
t.iH = n.height,
|
||
t.iW && t.iH)
|
||
r();
|
||
else {
|
||
var a = new Image;
|
||
a.onload = function() {
|
||
a.width ? (t.iW = a.width,
|
||
t.iH = a.height,
|
||
r()) : setTimeout((function() {
|
||
a.width && (t.iW = a.width,
|
||
t.iH = a.height),
|
||
r()
|
||
}
|
||
), 1e3)
|
||
}
|
||
,
|
||
a.src = n.src
|
||
}
|
||
} else
|
||
r()
|
||
}
|
||
, r = function() {
|
||
t.isLoaded = !0,
|
||
t.isLoading = !1,
|
||
s(),
|
||
d(),
|
||
l()
|
||
}
|
||
, s = function() {
|
||
if (!t.isAppended && n.ev) {
|
||
var e = n.st.visibleNearby
|
||
, a = t.id - n._newSlideId;
|
||
i || t.appendOnLoaded || !n.st.fadeinLoadedSlide || 0 !== a && (!(e || n._isAnimating || n._isDragging) || -1 !== a && 1 !== a) || ((e = {
|
||
visibility: "visible",
|
||
opacity: 0
|
||
})[n._vendorPref + "transition"] = "opacity 400ms ease-in-out",
|
||
t.content.css(e),
|
||
setTimeout((function() {
|
||
t.content.css("opacity", 1)
|
||
}
|
||
), 16)),
|
||
t.holder.find(".rsPreloader").length ? t.holder.append(t.content) : t.holder.html(t.content),
|
||
t.isAppended = !0,
|
||
t.isLoaded && (n._resizeImage(t),
|
||
l()),
|
||
t.sizeReady || (t.sizeReady = !0,
|
||
setTimeout((function() {
|
||
n.ev.trigger("rsMaybeSizeReady", t)
|
||
}
|
||
), 100))
|
||
}
|
||
}
|
||
, l = function() {
|
||
!t.loadedTriggered && n.ev && (t.isLoaded = t.loadedTriggered = !0,
|
||
t.holder.trigger("rsAfterContentSet"),
|
||
n.ev.trigger("rsAfterContentSet", t))
|
||
}
|
||
, c = function() {
|
||
n.st.usePreloader && t.holder.html(n._preloader.clone())
|
||
}
|
||
, d = function(e) {
|
||
n.st.usePreloader && ((e = t.holder.find(".rsPreloader")).length && e.remove())
|
||
};
|
||
t.isLoaded ? s() : i ? !n._isMove && t.images && t.iW && t.iH ? a() : (t.holder.isWaiting = !0,
|
||
c(),
|
||
t.holder.slideId = -99) : a()
|
||
},
|
||
_addBlockToContainer: function(e, t, i) {
|
||
this._slidesContainer.append(e.holder),
|
||
e.appendOnLoaded = !1
|
||
},
|
||
_onDragStart: function(t, i) {
|
||
var n = this
|
||
, a = "touchstart" === t.type;
|
||
if (n._isTouchGesture = a,
|
||
n.ev.trigger("rsDragStart"),
|
||
e(t.target).closest(".rsNoDrag", n._currHolder).length)
|
||
return n.dragSuccess = !1,
|
||
!0;
|
||
if (!i && n._isAnimating && (n._wasAnimating = !0,
|
||
n._stopAnimation()),
|
||
n.dragSuccess = !1,
|
||
n._isDragging)
|
||
a && (n._multipleTouches = !0);
|
||
else {
|
||
if (a && (n._multipleTouches = !1),
|
||
n._setGrabbingCursor(),
|
||
a) {
|
||
var o = t.touches;
|
||
if (!(o && 0 < o.length))
|
||
return;
|
||
var r = o[0];
|
||
1 < o.length && (n._multipleTouches = !0)
|
||
} else
|
||
t.preventDefault(),
|
||
r = t;
|
||
n._isDragging = !0,
|
||
n._eventCallbacks.dragMove && (n._unbindPassiveEvent(document, n._moveEvent, n._eventCallbacks.dragMove, !0),
|
||
n._unbindPassiveEvent(document, n._upEvent, n._eventCallbacks.dragRelease, !0)),
|
||
n._eventCallbacks.dragMove = function(e) {
|
||
n._onDragMove(e, i)
|
||
}
|
||
,
|
||
n._eventCallbacks.dragRelease = function(e) {
|
||
n._onDragRelease(e, i)
|
||
}
|
||
,
|
||
n._bindPassiveEvent(document, n._moveEvent, n._eventCallbacks.dragMove, !0),
|
||
n._bindPassiveEvent(document, n._upEvent, n._eventCallbacks.dragRelease, !0),
|
||
n._currMoveAxis = "",
|
||
n._hasMoved = !1,
|
||
n._pageX = r.pageX,
|
||
n._pageY = r.pageY,
|
||
n._startPagePos = n._accelerationPos = (i ? n._thumbsHorizontal : n._slidesHorizontal) ? r.pageX : r.pageY,
|
||
n._horDir = 0,
|
||
n._verDir = 0,
|
||
n._currRenderPosition = i ? n._thumbsPosition : n._sPosition,
|
||
n._startTime = (new Date).getTime(),
|
||
a && n._sliderOverflow.on(n._cancelEvent, (function(e) {
|
||
n._onDragRelease(e, i)
|
||
}
|
||
))
|
||
}
|
||
},
|
||
_renderMovement: function(e, t) {
|
||
if (this._checkedAxis) {
|
||
var i = this._renderMoveTime
|
||
, n = e.pageX - this._pageX
|
||
, a = e.pageY - this._pageY
|
||
, o = this._currRenderPosition + n
|
||
, r = this._currRenderPosition + a
|
||
, s = t ? this._thumbsHorizontal : this._slidesHorizontal;
|
||
o = s ? o : r,
|
||
r = this._currMoveAxis,
|
||
this._hasMoved = !0,
|
||
this._pageX = e.pageX,
|
||
this._pageY = e.pageY,
|
||
"x" === r && 0 !== n ? this._horDir = 0 < n ? 1 : -1 : "y" === r && 0 !== a && (this._verDir = 0 < a ? 1 : -1),
|
||
r = s ? this._pageX : this._pageY,
|
||
n = s ? n : a,
|
||
t ? (o > this._thumbsMinPosition || o < this._thumbsMaxPosition) && (o = this._currRenderPosition + n * this._lastItemFriction) : this._loop || (0 >= this.currSlideId && 0 < r - this._startPagePos && (o = this._currRenderPosition + n * this._lastItemFriction),
|
||
this.currSlideId >= this.numSlides - 1 && 0 > r - this._startPagePos && (o = this._currRenderPosition + n * this._lastItemFriction)),
|
||
this._currRenderPosition = o,
|
||
200 < i - this._startTime && (this._startTime = i,
|
||
this._accelerationPos = r),
|
||
t ? this._setThumbsPosition(this._currRenderPosition) : this._isMove && this._setPosition(this._currRenderPosition)
|
||
}
|
||
},
|
||
_onDragMove: function(e, t) {
|
||
var i = this
|
||
, n = "touchmove" === e.type;
|
||
if (!i._isTouchGesture || n) {
|
||
if (n) {
|
||
if (i._lockAxis)
|
||
return;
|
||
var a = e.touches;
|
||
if (!a)
|
||
return;
|
||
if (1 < a.length)
|
||
return;
|
||
var o = a[0]
|
||
} else
|
||
o = e;
|
||
if (i._hasMoved || (i._useCSS3Transitions && (t ? i._thumbsContainer : i._slidesContainer).css(i._vendorPref + i._TD, "0s"),
|
||
function e() {
|
||
i._isDragging && (i._animFrame = requestAnimationFrame(e),
|
||
i._renderMoveEvent && i._renderMovement(i._renderMoveEvent, t))
|
||
}()),
|
||
i._checkedAxis)
|
||
e.preventDefault(),
|
||
i._renderMoveTime = (new Date).getTime(),
|
||
i._renderMoveEvent = o;
|
||
else if (a = t ? i._thumbsHorizontal : i._slidesHorizontal,
|
||
7 < (o = Math.abs(o.pageX - i._pageX) - Math.abs(o.pageY - i._pageY) - (a ? -7 : 7))) {
|
||
if (a)
|
||
e.preventDefault(),
|
||
i._currMoveAxis = "x";
|
||
else if (n)
|
||
return void i._completeGesture(e);
|
||
i._checkedAxis = !0
|
||
} else if (-7 > o) {
|
||
if (a) {
|
||
if (n)
|
||
return void i._completeGesture(e)
|
||
} else
|
||
e.preventDefault(),
|
||
i._currMoveAxis = "y";
|
||
i._checkedAxis = !0
|
||
}
|
||
}
|
||
},
|
||
_completeGesture: function(e, t) {
|
||
this._lockAxis = !0,
|
||
this._hasMoved = this._isDragging = !1,
|
||
this._onDragRelease(e)
|
||
},
|
||
_onDragRelease: function(t, i) {
|
||
function n(e) {
|
||
return 100 > e ? 100 : 500 < e ? 500 : e
|
||
}
|
||
function a(e, t) {
|
||
(r._isMove || i) && (g = (-r._realId - r._idOffset) * r._slideSize,
|
||
o = Math.abs(r._sPosition - g),
|
||
r._currAnimSpeed = o / t,
|
||
e && (r._currAnimSpeed += 250),
|
||
r._currAnimSpeed = n(r._currAnimSpeed),
|
||
r._animateTo(g, !1))
|
||
}
|
||
var o, r = this, s = -1 < t.type.indexOf("touch");
|
||
if (!r._isTouchGesture || s)
|
||
if (r._isTouchGesture = !1,
|
||
r.ev.trigger("rsDragRelease"),
|
||
r._renderMoveEvent = null,
|
||
r._isDragging = !1,
|
||
r._lockAxis = !1,
|
||
r._checkedAxis = !1,
|
||
r._renderMoveTime = 0,
|
||
cancelAnimationFrame(r._animFrame),
|
||
r._hasMoved && (i ? r._setThumbsPosition(r._currRenderPosition) : r._isMove && r._setPosition(r._currRenderPosition)),
|
||
r._eventCallbacks.dragMove && (r._unbindPassiveEvent(document, r._moveEvent, r._eventCallbacks.dragMove, !0),
|
||
r._unbindPassiveEvent(document, r._upEvent, r._eventCallbacks.dragRelease, !0)),
|
||
s && r._sliderOverflow.off(r._cancelEvent),
|
||
r._setGrabCursor(),
|
||
!r._hasMoved && !r._multipleTouches && i && r._thumbsEnabled) {
|
||
var l = e(t.target).closest(".rsNavItem");
|
||
l.length && r.goTo(l.index())
|
||
} else {
|
||
if (l = i ? r._thumbsHorizontal : r._slidesHorizontal,
|
||
!r._hasMoved || "y" === r._currMoveAxis && l || "x" === r._currMoveAxis && !l) {
|
||
if (i || !r._wasAnimating)
|
||
return r._wasAnimating = !1,
|
||
void (r.dragSuccess = !1);
|
||
if (r._wasAnimating = !1,
|
||
r.st.navigateByClick)
|
||
return r._mouseNext(t),
|
||
void (r.dragSuccess = !0);
|
||
r.dragSuccess = !0
|
||
} else
|
||
r.dragSuccess = !0;
|
||
r._wasAnimating = !1,
|
||
r._currMoveAxis = "";
|
||
var c = r.st.minSlideOffset;
|
||
s = s ? t.changedTouches[0] : t;
|
||
var d = l ? s.pageX : s.pageY
|
||
, u = r._startPagePos
|
||
, p = r.currSlideId
|
||
, m = r.numSlides
|
||
, h = l ? r._horDir : r._verDir
|
||
, f = r._loop;
|
||
if (s = d - r._accelerationPos,
|
||
l = (new Date).getTime() - r._startTime,
|
||
l = Math.abs(s) / l,
|
||
0 === h || 1 >= m)
|
||
a(!0, l);
|
||
else {
|
||
if (!f && !i)
|
||
if (0 >= p) {
|
||
if (0 < h)
|
||
return void a(!0, l)
|
||
} else if (p >= m - 1 && 0 > h)
|
||
return void a(!0, l);
|
||
if (i) {
|
||
var g = r._thumbsPosition;
|
||
if (g > r._thumbsMinPosition)
|
||
g = r._thumbsMinPosition;
|
||
else if (g < r._thumbsMaxPosition)
|
||
g = r._thumbsMaxPosition;
|
||
else {
|
||
d = l * l / .006;
|
||
var v = -r._thumbsPosition;
|
||
if (u = r._thumbsContainerSize - r._thumbsViewportSize + r._thumbsPosition,
|
||
0 < s && d > v ? (l = l * (v += r._thumbsViewportSize / (15 / (d / l * .003))) / d,
|
||
d = v) : 0 > s && d > u && (l = l * (u += r._thumbsViewportSize / (15 / (d / l * .003))) / d,
|
||
d = u),
|
||
v = Math.max(Math.round(l / .003), 50),
|
||
(g += d * (0 > s ? -1 : 1)) > r._thumbsMinPosition)
|
||
return void r._animateThumbsTo(g, v, !0, r._thumbsMinPosition, 200);
|
||
if (g < r._thumbsMaxPosition)
|
||
return void r._animateThumbsTo(g, v, !0, r._thumbsMaxPosition, 200)
|
||
}
|
||
r._animateThumbsTo(g, v, !0)
|
||
} else
|
||
v = function(e) {
|
||
var t = Math.floor(e / r._slideSize);
|
||
return e - t * r._slideSize > c && t++,
|
||
t
|
||
}
|
||
,
|
||
u + c < d ? 0 > h ? a(!1, l) : (v = v(d - u),
|
||
r._moveTo(r.currSlideId - v, n(Math.abs(r._sPosition - (-r._realId - r._idOffset + v) * r._slideSize) / l), !1, !0, !0)) : u - c > d ? 0 < h ? a(!1, l) : (v = v(u - d),
|
||
r._moveTo(r.currSlideId + v, n(Math.abs(r._sPosition - (-r._realId - r._idOffset - v) * r._slideSize) / l), !1, !0, !0)) : a(!1, l)
|
||
}
|
||
}
|
||
},
|
||
_setPosition: function(e) {
|
||
e = this._sPosition = e,
|
||
this._useCSS3Transitions ? this._slidesContainer.css(this._xProp, this._tPref1 + (this._slidesHorizontal ? e + this._tPref2 + 0 : 0 + this._tPref2 + e) + this._tPref3) : this._slidesContainer.css(this._slidesHorizontal ? this._xProp : this._yProp, e)
|
||
},
|
||
updateSliderSize: function(e) {
|
||
if (this.slider) {
|
||
if (this.st.autoScaleSlider) {
|
||
var t = this.st.autoScaleSliderWidth
|
||
, i = this.st.autoScaleSliderHeight;
|
||
if (this.st.autoScaleHeight) {
|
||
var n = this.slider.width();
|
||
n != this.width && (this.slider.css("height", i / t * n),
|
||
n = this.slider.width());
|
||
var a = this.slider.height()
|
||
} else
|
||
(a = this.slider.height()) != this.height && (this.slider.css("width", t / i * a),
|
||
a = this.slider.height()),
|
||
n = this.slider.width()
|
||
} else
|
||
n = this.slider.width(),
|
||
a = this.slider.height();
|
||
if (e || n != this.width || a != this.height) {
|
||
for (this.width = n,
|
||
this.height = a,
|
||
this._wrapWidth = n,
|
||
this._wrapHeight = a,
|
||
this.ev.trigger("rsBeforeSizeSet"),
|
||
this.ev.trigger("rsAfterSizePropSet"),
|
||
this._sliderOverflow.css({
|
||
width: this._wrapWidth,
|
||
height: this._wrapHeight
|
||
}),
|
||
this._slideSize = (this._slidesHorizontal ? this._wrapWidth : this._wrapHeight) + this.st.slidesSpacing,
|
||
this._imagePadding = this.st.imageScalePadding,
|
||
n = 0; n < this.slides.length; n++)
|
||
(e = this.slides[n]).positionSet = !1,
|
||
e && e.images && e.isLoaded && (e.isRendered = !1,
|
||
this._resizeImage(e));
|
||
if (this._cloneHolders)
|
||
for (n = 0; n < this._cloneHolders.length; n++)
|
||
(e = this._cloneHolders[n]).holder.css(this._reorderProp, (e.id + this._idOffset) * this._slideSize);
|
||
this._updateBlocksContent(),
|
||
this._isMove && (this._useCSS3Transitions && this._slidesContainer.css(this._vendorPref + "transition-duration", "0s"),
|
||
this._setPosition((-this._realId - this._idOffset) * this._slideSize)),
|
||
this.ev.trigger("rsOnUpdateNav")
|
||
}
|
||
this._sliderOffset = this._sliderOverflow.offset(),
|
||
this._sliderOffset = this._sliderOffset[this._reorderProp]
|
||
}
|
||
},
|
||
appendSlide: function(t, i) {
|
||
var n = this._parseNode(t);
|
||
(isNaN(i) || i > this.numSlides) && (i = this.numSlides),
|
||
this.slides.splice(i, 0, n),
|
||
this.slidesJQ.splice(i, 0, e('<div style="' + (this._isMove ? "position:absolute;" : this._opacityCSS) + '" class="rsSlide"></div>')),
|
||
i <= this.currSlideId && this.currSlideId++,
|
||
this.ev.trigger("rsOnAppendSlide", [n, i]),
|
||
this._refreshSlides(i),
|
||
i === this.currSlideId && this.ev.trigger("rsAfterSlideChange")
|
||
},
|
||
removeSlide: function(e) {
|
||
var t = this.slides[e];
|
||
t && (t.holder && t.holder.remove(),
|
||
e < this.currSlideId && this.currSlideId--,
|
||
this.slides.splice(e, 1),
|
||
this.slidesJQ.splice(e, 1),
|
||
this.ev.trigger("rsOnRemoveSlide", [e]),
|
||
this._refreshSlides(e),
|
||
e === this.currSlideId && this.ev.trigger("rsAfterSlideChange"))
|
||
},
|
||
_refreshSlides: function(e) {
|
||
var t = this;
|
||
for (e = t.numSlides,
|
||
e = 0 >= t._realId ? 0 : Math.floor(t._realId / e),
|
||
t.numSlides = t.slides.length,
|
||
0 === t.numSlides ? (t.currSlideId = t._idOffset = t._realId = 0,
|
||
t.currSlide = t._oldHolder = null) : t._realId = e * t.numSlides + t.currSlideId,
|
||
e = 0; e < t.numSlides; e++)
|
||
t.slides[e].id = e;
|
||
t.currSlide = t.slides[t.currSlideId],
|
||
t._currHolder = t.slidesJQ[t.currSlideId],
|
||
t.currSlideId >= t.numSlides ? t.goTo(t.numSlides - 1) : 0 > t.currSlideId && t.goTo(0),
|
||
t._refreshNumPreloadImages(),
|
||
t._isMove && t._slidesContainer.css(t._vendorPref + t._TD, "0ms"),
|
||
t._refreshSlidesTimeout && clearTimeout(t._refreshSlidesTimeout),
|
||
t._refreshSlidesTimeout = setTimeout((function() {
|
||
t._isMove && t._setPosition((-t._realId - t._idOffset) * t._slideSize),
|
||
t._updateBlocksContent(),
|
||
t._isMove || t._currHolder.css({
|
||
display: "block",
|
||
opacity: 1
|
||
})
|
||
}
|
||
), 14),
|
||
t.ev.trigger("rsOnUpdateNav")
|
||
},
|
||
_setGrabCursor: function() {
|
||
this._hasDrag && this._isMove && (this._grabCursor ? this._sliderOverflow.css("cursor", this._grabCursor) : (this._sliderOverflow.removeClass("grabbing-cursor"),
|
||
this._sliderOverflow.addClass("grab-cursor")))
|
||
},
|
||
_setGrabbingCursor: function() {
|
||
this._hasDrag && this._isMove && (this._grabbingCursor ? this._sliderOverflow.css("cursor", this._grabbingCursor) : (this._sliderOverflow.removeClass("grab-cursor"),
|
||
this._sliderOverflow.addClass("grabbing-cursor")))
|
||
},
|
||
next: function(e) {
|
||
this._moveTo("next", this.st.transitionSpeed, !0, !e)
|
||
},
|
||
prev: function(e) {
|
||
this._moveTo("prev", this.st.transitionSpeed, !0, !e)
|
||
},
|
||
_moveTo: function(e, t, i, n, a) {
|
||
var o = this;
|
||
o.ev.trigger("rsBeforeMove", [e, n]);
|
||
var r = "next" === e ? o.currSlideId + 1 : "prev" === e ? o.currSlideId - 1 : e = parseInt(e, 10);
|
||
if (!o._loop) {
|
||
if (0 > r)
|
||
return void o._doBackAndForthAnim("left", !n);
|
||
if (r >= o.numSlides)
|
||
return void o._doBackAndForthAnim("right", !n)
|
||
}
|
||
o._isAnimating && (o._stopAnimation(!0),
|
||
i = !1);
|
||
var s = r - o.currSlideId;
|
||
r = o._prevSlideId = o.currSlideId;
|
||
var l, c = o.currSlideId + s;
|
||
n = o._realId,
|
||
o._loop ? (c = o._updateBlocksContent(!1, c),
|
||
n += s) : n = c,
|
||
o._newSlideId = c,
|
||
o._oldHolder = o.slidesJQ[o.currSlideId],
|
||
o._realId = n,
|
||
o.currSlideId = o._newSlideId,
|
||
o.currSlide = o.slides[o.currSlideId],
|
||
o._currHolder = o.slidesJQ[o.currSlideId],
|
||
c = o.st.slidesDiff;
|
||
var d = 0 < s;
|
||
s = Math.abs(s);
|
||
var u = Math.floor(r / o._numPreloadImages)
|
||
, p = Math.floor((r + (d ? c : -c)) / o._numPreloadImages);
|
||
if ((u = (d ? Math.max(u, p) : Math.min(u, p)) * o._numPreloadImages + (d ? o._numPreloadImages - 1 : 0)) > o.numSlides - 1 ? u = o.numSlides - 1 : 0 > u && (u = 0),
|
||
(r = d ? u - r : r - u) > o._numPreloadImages && (r = o._numPreloadImages),
|
||
s > r + c)
|
||
for (o._idOffset += (s - (r + c)) * (d ? -1 : 1),
|
||
t *= 1.4,
|
||
r = 0; r < o.numSlides; r++)
|
||
o.slides[r].positionSet = !1;
|
||
o._currAnimSpeed = t,
|
||
o._updateBlocksContent(!0),
|
||
a || (l = !0);
|
||
var m = (-n - o._idOffset) * o._slideSize;
|
||
l ? setTimeout((function() {
|
||
o._isWorking = !1,
|
||
o._animateTo(m, e, !1, i),
|
||
o.ev.trigger("rsOnUpdateNav")
|
||
}
|
||
), 0) : (o._animateTo(m, e, !1, i),
|
||
o.ev.trigger("rsOnUpdateNav"))
|
||
},
|
||
_updateArrowsNav: function() {
|
||
this.st.arrowsNav && (1 >= this.numSlides ? (this._arrowLeft.css("display", "none"),
|
||
this._arrowRight.css("display", "none")) : (this._arrowLeft.css("display", "block"),
|
||
this._arrowRight.css("display", "block"),
|
||
this._loop || this.st.loopRewind || (0 === this.currSlideId ? this._arrowLeft.addClass("rsArrowDisabled") : this._arrowLeft.removeClass("rsArrowDisabled"),
|
||
this.currSlideId === this.numSlides - 1 ? this._arrowRight.addClass("rsArrowDisabled") : this._arrowRight.removeClass("rsArrowDisabled"))))
|
||
},
|
||
_animateTo: function(t, i, n, a, o) {
|
||
function r() {
|
||
var e;
|
||
c && (e = c.data("rsTimeout")) && (c !== d && c.css({
|
||
opacity: 0,
|
||
display: "none",
|
||
zIndex: 0
|
||
}),
|
||
clearTimeout(e),
|
||
c.data("rsTimeout", "")),
|
||
(e = d.data("rsTimeout")) && (clearTimeout(e),
|
||
d.data("rsTimeout", ""))
|
||
}
|
||
var s = this
|
||
, l = {};
|
||
if (isNaN(s._currAnimSpeed) && (s._currAnimSpeed = 400),
|
||
s._sPosition = s._currRenderPosition = t,
|
||
s.ev.trigger("rsBeforeAnimStart"),
|
||
s._useCSS3Transitions)
|
||
if (s._isMove)
|
||
s._currAnimSpeed = parseInt(s._currAnimSpeed, 10),
|
||
n = s._vendorPref + s._TTF,
|
||
l[s._vendorPref + s._TD] = s._currAnimSpeed + "ms",
|
||
l[n] = a ? e.rsCSS3Easing[s.st.easeInOut] : e.rsCSS3Easing[s.st.easeOut],
|
||
s._slidesContainer.css(l),
|
||
a || !s.hasTouch ? setTimeout((function() {
|
||
s._setPosition(t)
|
||
}
|
||
), 5) : s._setPosition(t);
|
||
else {
|
||
s._currAnimSpeed = s.st.transitionSpeed;
|
||
var c = s._oldHolder
|
||
, d = s._currHolder;
|
||
d.data("rsTimeout") && d.css("opacity", 0),
|
||
r(),
|
||
c && c.data("rsTimeout", setTimeout((function() {
|
||
l[s._vendorPref + s._TD] = "0ms",
|
||
l.zIndex = 0,
|
||
l.display = "none",
|
||
c.data("rsTimeout", ""),
|
||
c.css(l),
|
||
setTimeout((function() {
|
||
c.css("opacity", 0)
|
||
}
|
||
), 16)
|
||
}
|
||
), s._currAnimSpeed + 60)),
|
||
l.display = "block",
|
||
l.zIndex = s._fadeZIndex,
|
||
l.opacity = 0,
|
||
l[s._vendorPref + s._TD] = "0ms",
|
||
l[s._vendorPref + s._TTF] = e.rsCSS3Easing[s.st.easeInOut],
|
||
d.css(l),
|
||
d.data("rsTimeout", setTimeout((function() {
|
||
d.css(s._vendorPref + s._TD, s._currAnimSpeed + "ms"),
|
||
d.data("rsTimeout", setTimeout((function() {
|
||
d.css("opacity", 1),
|
||
d.data("rsTimeout", "")
|
||
}
|
||
), 20))
|
||
}
|
||
), 20))
|
||
}
|
||
else
|
||
s._isMove ? (l[s._slidesHorizontal ? s._xProp : s._yProp] = t + "px",
|
||
s._slidesContainer.animate(l, s._currAnimSpeed, a ? s.st.easeInOut : s.st.easeOut)) : (c = s._oldHolder,
|
||
(d = s._currHolder).stop(!0, !0).css({
|
||
opacity: 0,
|
||
display: "block",
|
||
zIndex: s._fadeZIndex
|
||
}),
|
||
s._currAnimSpeed = s.st.transitionSpeed,
|
||
d.animate({
|
||
opacity: 1
|
||
}, s._currAnimSpeed, s.st.easeInOut),
|
||
r(),
|
||
c && c.data("rsTimeout", setTimeout((function() {
|
||
c.stop(!0, !0).css({
|
||
opacity: 0,
|
||
display: "none",
|
||
zIndex: 0
|
||
})
|
||
}
|
||
), s._currAnimSpeed + 60)));
|
||
s._isAnimating = !0,
|
||
s.loadingTimeout && clearTimeout(s.loadingTimeout),
|
||
s.loadingTimeout = o ? setTimeout((function() {
|
||
s.loadingTimeout = null,
|
||
o.call()
|
||
}
|
||
), s._currAnimSpeed + 60) : setTimeout((function() {
|
||
s.loadingTimeout = null,
|
||
s._animationComplete(i)
|
||
}
|
||
), s._currAnimSpeed + 60)
|
||
},
|
||
_stopAnimation: function(e) {
|
||
if (this._isAnimating = !1,
|
||
clearTimeout(this.loadingTimeout),
|
||
this._isMove)
|
||
if (this._useCSS3Transitions) {
|
||
if (!e) {
|
||
e = this._sPosition;
|
||
var t = this._currRenderPosition = this._getTransformProp();
|
||
this._slidesContainer.css(this._vendorPref + this._TD, "0ms"),
|
||
e !== t && this._setPosition(t)
|
||
}
|
||
} else
|
||
this._slidesContainer.stop(!0),
|
||
this._sPosition = parseInt(this._slidesContainer.css(this._slidesHorizontal ? this._xProp : this._yProp), 10);
|
||
else
|
||
20 < this._fadeZIndex ? this._fadeZIndex = 10 : this._fadeZIndex++
|
||
},
|
||
_getTransformProp: function() {
|
||
var e = window.getComputedStyle(this._slidesContainer.get(0), null).getPropertyValue(this._vendorPref + "transform").replace(/^matrix\(/i, "").split(/, |\)$/g)
|
||
, t = 0 === e[0].indexOf("matrix3d");
|
||
return parseInt(e[this._slidesHorizontal ? t ? 12 : 4 : t ? 13 : 5], 10)
|
||
},
|
||
_getCSS3Prop: function(e, t) {
|
||
return this._useCSS3Transitions ? this._tPref1 + (t ? e + this._tPref2 + 0 : 0 + this._tPref2 + e) + this._tPref3 : e
|
||
},
|
||
_animationComplete: function(e) {
|
||
this._isMove || (this._currHolder.css("z-index", 0),
|
||
this._fadeZIndex = 10),
|
||
this._isAnimating = !1,
|
||
this.staticSlideId = this.currSlideId,
|
||
this._updateBlocksContent(),
|
||
this._slidesMoved = !1,
|
||
this.ev.trigger("rsAfterSlideChange")
|
||
},
|
||
_doBackAndForthAnim: function(e, t) {
|
||
var i = this
|
||
, n = (-i._realId - i._idOffset) * i._slideSize;
|
||
if (0 !== i.numSlides && !i._isAnimating)
|
||
if (i.st.loopRewind)
|
||
i.goTo("left" === e ? i.numSlides - 1 : 0, t);
|
||
else if (i._isMove) {
|
||
i._currAnimSpeed = 200;
|
||
var a = function() {
|
||
i._isAnimating = !1
|
||
};
|
||
i._animateTo(n + ("left" === e ? 30 : -30), "", !1, !0, (function() {
|
||
i._isAnimating = !1,
|
||
i._animateTo(n, "", !1, !0, a)
|
||
}
|
||
))
|
||
}
|
||
},
|
||
_detectPassiveSupport: function() {
|
||
var e = this;
|
||
if (!e._passiveChecked) {
|
||
e._passiveChecked = !0,
|
||
e._passiveParam = !1;
|
||
try {
|
||
var t = Object.defineProperty({}, "passive", {
|
||
get: function() {
|
||
e._passiveParam = {
|
||
passive: !1
|
||
}
|
||
}
|
||
});
|
||
window.addEventListener("testPassive", null, t),
|
||
window.removeEventListener("testPassive", null, t)
|
||
} catch (e) {}
|
||
}
|
||
},
|
||
_bindPassiveEvent: function(e, t, i, n) {
|
||
this._detectPassiveSupport(),
|
||
t = t.split(" ");
|
||
for (var a = 0; a < t.length; a++)
|
||
t[a] && 2 < t[a].length && e.addEventListener(t[a], i, !!n && this._passiveParam)
|
||
},
|
||
_unbindPassiveEvent: function(e, t, i, n) {
|
||
this._detectPassiveSupport(),
|
||
t = t.split(" ");
|
||
for (var a = 0; a < t.length; a++)
|
||
t[a] && 2 < t[a].length && e.removeEventListener(t[a], i, !!n && this._passiveParam)
|
||
},
|
||
_resizeImage: function(t, i) {
|
||
if (!t.isRendered) {
|
||
var n = t.content
|
||
, a = "rsMainSlideImage"
|
||
, o = e.isFunction(this.st.imageAlignCenter) ? this.st.imageAlignCenter(t) : this.st.imageAlignCenter
|
||
, r = e.isFunction(this.st.imageScaleMode) ? this.st.imageScaleMode(t) : this.st.imageScaleMode;
|
||
if (t.videoURL)
|
||
if (a = "rsVideoContainer",
|
||
"fill" !== r)
|
||
var s = !0;
|
||
else {
|
||
var l = n;
|
||
l.hasClass(a) || (l = l.find("." + a)),
|
||
l.css({
|
||
width: "100%",
|
||
height: "100%"
|
||
}),
|
||
a = "rsMainSlideImage"
|
||
}
|
||
if (n.hasClass(a) || (n = n.find("." + a)),
|
||
n) {
|
||
var c = t.iW
|
||
, d = t.iH;
|
||
if (t.isRendered = !0,
|
||
"none" !== r || o) {
|
||
a = "fill" !== r ? this._imagePadding : 0,
|
||
l = this._wrapWidth - 2 * a;
|
||
var u = this._wrapHeight - 2 * a
|
||
, p = {};
|
||
if ("fit-if-smaller" === r && (c > l || d > u) && (r = "fit"),
|
||
"fill" === r || "fit" === r) {
|
||
var m = l / c
|
||
, h = u / d;
|
||
m = "fill" == r ? m > h ? m : h : "fit" == r ? m < h ? m : h : 1,
|
||
c = Math.ceil(c * m, 10),
|
||
d = Math.ceil(d * m, 10)
|
||
}
|
||
"none" !== r && (p.width = c,
|
||
p.height = d,
|
||
s && n.find(".rsImg").css({
|
||
width: "100%",
|
||
height: "100%"
|
||
})),
|
||
o && (p.marginLeft = Math.floor((l - c) / 2) + a,
|
||
p.marginTop = Math.floor((u - d) / 2) + a),
|
||
n.css(p)
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
e.rsProto = t.prototype,
|
||
e.fn.royalSlider = function(i) {
|
||
var n = arguments;
|
||
return this.each((function() {
|
||
var a = e(this);
|
||
if ("object" !== u(i) && i) {
|
||
if ((a = a.data("royalSlider")) && a[i])
|
||
return a[i].apply(a, Array.prototype.slice.call(n, 1))
|
||
} else
|
||
a.data("royalSlider") || a.data("royalSlider", new t(a,i))
|
||
}
|
||
))
|
||
}
|
||
,
|
||
e.fn.royalSlider.defaults = {
|
||
slidesSpacing: 8,
|
||
startSlideId: 0,
|
||
loop: !1,
|
||
loopRewind: !1,
|
||
numImagesToPreload: 4,
|
||
fadeinLoadedSlide: !0,
|
||
slidesOrientation: "horizontal",
|
||
transitionType: "move",
|
||
transitionSpeed: 600,
|
||
controlNavigation: "bullets",
|
||
controlsInside: !0,
|
||
arrowsNav: !0,
|
||
arrowsNavAutoHide: !0,
|
||
navigateByClick: !0,
|
||
randomizeSlides: !1,
|
||
sliderDrag: !0,
|
||
sliderTouch: !0,
|
||
keyboardNavEnabled: !1,
|
||
fadeInAfterLoaded: !0,
|
||
allowCSS3: !0,
|
||
allowCSS3OnWebkit: !0,
|
||
addActiveClass: !1,
|
||
autoHeight: !1,
|
||
easeOut: "easeOutSine",
|
||
easeInOut: "easeInOutSine",
|
||
minSlideOffset: 10,
|
||
imageScaleMode: "fit-if-smaller",
|
||
imageAlignCenter: !0,
|
||
imageScalePadding: 4,
|
||
usePreloader: !0,
|
||
autoScaleSlider: !1,
|
||
autoScaleSliderWidth: 800,
|
||
autoScaleSliderHeight: 400,
|
||
autoScaleHeight: !0,
|
||
arrowsNavHideOnTouch: !1,
|
||
globalCaption: !1,
|
||
slidesDiff: 2
|
||
},
|
||
e.rsCSS3Easing = {
|
||
easeOutSine: "cubic-bezier(0.390, 0.575, 0.565, 1.000)",
|
||
easeInOutSine: "cubic-bezier(0.445, 0.050, 0.550, 0.950)"
|
||
},
|
||
e.extend(d.easing, {
|
||
easeInOutSine: function(e, t, i, n, a) {
|
||
return -n / 2 * (Math.cos(Math.PI * t / a) - 1) + i
|
||
},
|
||
easeOutSine: function(e, t, i, n, a) {
|
||
return n * Math.sin(t / a * (Math.PI / 2)) + i
|
||
},
|
||
easeOutCubic: function(e, t, i, n, a) {
|
||
return n * ((t = t / a - 1) * t * t + 1) + i
|
||
}
|
||
})
|
||
}(d, window),
|
||
(n = d).extend(n.rsProto, {
|
||
_initBullets: function() {
|
||
var e = this;
|
||
"bullets" === e.st.controlNavigation && (e.ev.one("rsAfterPropsSetup", (function() {
|
||
e._controlNavEnabled = !0,
|
||
e.slider.addClass("rsWithBullets");
|
||
for (var t = '<div class="rsNav rsBullets">', i = 0; i < e.numSlides; i++)
|
||
t += '<div class="rsNavItem rsBullet"><span></span></div>';
|
||
e._controlNav = t = n(t + "</div>"),
|
||
e._controlNavItems = t.appendTo(e.slider).children(),
|
||
e._controlNav.on("click.rs", ".rsNavItem", (function(t) {
|
||
e._thumbsDrag || e.goTo(n(this).index())
|
||
}
|
||
))
|
||
}
|
||
)),
|
||
e.ev.on("rsOnAppendSlide", (function(t, i, n) {
|
||
n >= e.numSlides ? e._controlNav.append('<div class="rsNavItem rsBullet"><span></span></div>') : e._controlNavItems.eq(n).before('<div class="rsNavItem rsBullet"><span></span></div>'),
|
||
e._controlNavItems = e._controlNav.children()
|
||
}
|
||
)),
|
||
e.ev.on("rsOnRemoveSlide", (function(t, i) {
|
||
var n = e._controlNavItems.eq(i);
|
||
n && n.length && (n.remove(),
|
||
e._controlNavItems = e._controlNav.children())
|
||
}
|
||
)),
|
||
e.ev.on("rsOnUpdateNav", (function() {
|
||
var t = e.currSlideId;
|
||
e._prevNavItem && e._prevNavItem.removeClass("rsNavSelected"),
|
||
(t = e._controlNavItems.eq(t)).addClass("rsNavSelected"),
|
||
e._prevNavItem = t
|
||
}
|
||
)))
|
||
}
|
||
}),
|
||
n.rsModules.bullets = n.rsProto._initBullets,
|
||
(a = d).extend(a.rsProto, {
|
||
_initThumbs: function() {
|
||
var e = this;
|
||
"thumbnails" === e.st.controlNavigation && (e._thumbsDefaults = {
|
||
drag: !0,
|
||
touch: !0,
|
||
orientation: "horizontal",
|
||
navigation: !0,
|
||
arrows: !0,
|
||
arrowLeft: null,
|
||
arrowRight: null,
|
||
spacing: 4,
|
||
arrowsAutoHide: !1,
|
||
appendSpan: !1,
|
||
transitionSpeed: 600,
|
||
autoCenter: !0,
|
||
fitInViewport: !0,
|
||
firstMargin: !0,
|
||
paddingTop: 0,
|
||
paddingBottom: 0
|
||
},
|
||
e.st.thumbs = a.extend({}, e._thumbsDefaults, e.st.thumbs),
|
||
e._firstThumbMoved = !0,
|
||
!1 === e.st.thumbs.firstMargin ? e.st.thumbs.firstMargin = 0 : !0 === e.st.thumbs.firstMargin && (e.st.thumbs.firstMargin = e.st.thumbs.spacing),
|
||
e.ev.on("rsBeforeParseNode", (function(e, t, i) {
|
||
t = a(t),
|
||
i.thumbnail = t.find(".rsTmb").remove(),
|
||
i.thumbnail.length ? i.thumbnail = a(document.createElement("div")).append(i.thumbnail).html() : (i.thumbnail = t.attr("data-rsTmb"),
|
||
i.thumbnail || (i.thumbnail = t.find(".rsImg").attr("data-rsTmb")),
|
||
i.thumbnail = i.thumbnail ? '<img src="' + i.thumbnail + '"/>' : "")
|
||
}
|
||
)),
|
||
e.ev.one("rsAfterPropsSetup", (function() {
|
||
e._createThumbs()
|
||
}
|
||
)),
|
||
e._prevNavItem = null,
|
||
e.ev.on("rsOnUpdateNav", (function() {
|
||
var t = a(e._controlNavItems[e.currSlideId]);
|
||
t !== e._prevNavItem && (e._prevNavItem && (e._prevNavItem.removeClass("rsNavSelected"),
|
||
e._prevNavItem = null),
|
||
e._thumbsNavigation && e._setCurrentThumb(e.currSlideId),
|
||
e._prevNavItem = t.addClass("rsNavSelected"))
|
||
}
|
||
)),
|
||
e.ev.on("rsOnAppendSlide", (function(t, i, n) {
|
||
t = "<div" + e._thumbsMargin + ' class="rsNavItem rsThumb">' + e._addThumbHTML + i.thumbnail + "</div>",
|
||
e._useCSS3Transitions && e._thumbsContainer.css(e._vendorPref + "transition-duration", "0ms"),
|
||
n >= e.numSlides ? e._thumbsContainer.append(t) : e._controlNavItems.eq(n).before(t),
|
||
e._controlNavItems = e._thumbsContainer.children(),
|
||
e.updateThumbsSize(!0)
|
||
}
|
||
)),
|
||
e.ev.on("rsOnRemoveSlide", (function(t, i) {
|
||
var n = e._controlNavItems.eq(i);
|
||
n && (e._useCSS3Transitions && e._thumbsContainer.css(e._vendorPref + "transition-duration", "0ms"),
|
||
n.remove(),
|
||
e._controlNavItems = e._thumbsContainer.children(),
|
||
e.updateThumbsSize(!0))
|
||
}
|
||
)))
|
||
},
|
||
_createThumbs: function() {
|
||
var e, t = this, i = "rsThumbs", n = t.st.thumbs, o = "", r = n.spacing;
|
||
t._controlNavEnabled = !0,
|
||
t._thumbsHorizontal = "vertical" !== n.orientation,
|
||
t._thumbsMargin = e = r ? ' style="margin-' + (t._thumbsHorizontal ? "right" : "bottom") + ":" + r + 'px;"' : "",
|
||
t._thumbsPosition = 0,
|
||
t._isThumbsAnimating = !1,
|
||
t._thumbsDrag = !1,
|
||
t._thumbsNavigation = !1,
|
||
t._thumbsArrows = n.arrows && n.navigation;
|
||
var s = t._thumbsHorizontal ? "Hor" : "Ver";
|
||
t.slider.addClass("rsWithThumbs rsWithThumbs" + s),
|
||
o += '<div class="rsNav rsThumbs rsThumbs' + s + '"><div class="' + i + 'Container">',
|
||
t._addThumbHTML = n.appendSpan ? '<span class="thumbIco"></span>' : "";
|
||
for (var l = 0; l < t.numSlides; l++)
|
||
o += "<div" + e + ' class="rsNavItem rsThumb">' + (s = t.slides[l]).thumbnail + t._addThumbHTML + "</div>";
|
||
o = a(o + "</div></div>"),
|
||
e = {},
|
||
n.paddingTop && (e[t._thumbsHorizontal ? "paddingTop" : "paddingLeft"] = n.paddingTop),
|
||
n.paddingBottom && (e[t._thumbsHorizontal ? "paddingBottom" : "paddingRight"] = n.paddingBottom),
|
||
o.css(e),
|
||
t._thumbsContainer = a(o).find("." + i + "Container"),
|
||
t._thumbsArrows && (i += "Arrow",
|
||
n.arrowLeft ? t._thumbsArrowLeft = n.arrowLeft : (t._thumbsArrowLeft = a('<div class="' + i + " " + i + 'Left"><div class="' + i + 'Icn"></div></div>'),
|
||
o.append(t._thumbsArrowLeft)),
|
||
n.arrowRight ? t._thumbsArrowRight = n.arrowRight : (t._thumbsArrowRight = a('<div class="' + i + " " + i + 'Right"><div class="' + i + 'Icn"></div></div>'),
|
||
o.append(t._thumbsArrowRight)),
|
||
t._thumbsArrowLeft.click((function() {
|
||
var e = (Math.floor(t._thumbsPosition / t._thumbSize) + t._visibleThumbsPerView) * t._thumbSize + t.st.thumbs.firstMargin;
|
||
t._animateThumbsTo(e > t._thumbsMinPosition ? t._thumbsMinPosition : e)
|
||
}
|
||
)),
|
||
t._thumbsArrowRight.click((function() {
|
||
var e = (Math.floor(t._thumbsPosition / t._thumbSize) - t._visibleThumbsPerView) * t._thumbSize + t.st.thumbs.firstMargin;
|
||
t._animateThumbsTo(e < t._thumbsMaxPosition ? t._thumbsMaxPosition : e)
|
||
}
|
||
)),
|
||
n.arrowsAutoHide && !t.hasTouch && (t._thumbsArrowLeft.css("opacity", 0),
|
||
t._thumbsArrowRight.css("opacity", 0),
|
||
o.one("mousemove.rsarrowshover", (function() {
|
||
t._thumbsNavigation && (t._thumbsArrowLeft.css("opacity", 1),
|
||
t._thumbsArrowRight.css("opacity", 1))
|
||
}
|
||
)),
|
||
o.hover((function() {
|
||
t._thumbsNavigation && (t._thumbsArrowLeft.css("opacity", 1),
|
||
t._thumbsArrowRight.css("opacity", 1))
|
||
}
|
||
), (function() {
|
||
t._thumbsNavigation && (t._thumbsArrowLeft.css("opacity", 0),
|
||
t._thumbsArrowRight.css("opacity", 0))
|
||
}
|
||
)))),
|
||
t._controlNav = o,
|
||
t._controlNavItems = t._thumbsContainer.children(),
|
||
t.msEnabled && t.st.thumbs.navigation && t._thumbsContainer.css("-ms-touch-action", t._thumbsHorizontal ? "pan-y" : "pan-x"),
|
||
t.slider.append(o),
|
||
t._thumbsEnabled = !0,
|
||
t._thumbsSpacing = r,
|
||
n.navigation && t._useCSS3Transitions && t._thumbsContainer.css(t._vendorPref + "transition-property", t._vendorPref + "transform"),
|
||
t._controlNav.on("click.rs", ".rsNavItem", (function(e) {
|
||
t._thumbsDrag || t.goTo(a(this).index())
|
||
}
|
||
)),
|
||
t.ev.off("rsBeforeSizeSet.thumbs").on("rsBeforeSizeSet.thumbs", (function() {
|
||
t._realWrapSize = t._thumbsHorizontal ? t._wrapHeight : t._wrapWidth,
|
||
t.updateThumbsSize(!0)
|
||
}
|
||
)),
|
||
t.ev.off("rsAutoHeightChange.thumbs").on("rsAutoHeightChange.thumbs", (function(e, i) {
|
||
t.updateThumbsSize(!0, i)
|
||
}
|
||
))
|
||
},
|
||
updateThumbsSize: function(e, t) {
|
||
var i = this._controlNavItems.first()
|
||
, n = {}
|
||
, a = this._controlNavItems.length;
|
||
this._thumbSize = (this._thumbsHorizontal ? i.outerWidth() : i.outerHeight()) + this._thumbsSpacing,
|
||
this._thumbsContainerSize = a * this._thumbSize - this._thumbsSpacing,
|
||
n[this._thumbsHorizontal ? "width" : "height"] = this._thumbsContainerSize + this._thumbsSpacing,
|
||
this._thumbsViewportSize = this._thumbsHorizontal ? this._controlNav.width() : void 0 !== t ? t : this._controlNav.height(),
|
||
this._thumbsEnabled && (this.isFullscreen || this.st.thumbs.fitInViewport) && (this._thumbsHorizontal ? this._wrapHeight = this._realWrapSize - this._controlNav.outerHeight() : this._wrapWidth = this._realWrapSize - this._controlNav.outerWidth()),
|
||
this._thumbsViewportSize && (this._thumbsMaxPosition = -(this._thumbsContainerSize - this._thumbsViewportSize) - this.st.thumbs.firstMargin,
|
||
this._thumbsMinPosition = this.st.thumbs.firstMargin,
|
||
this._visibleThumbsPerView = Math.floor(this._thumbsViewportSize / this._thumbSize),
|
||
this._thumbsContainerSize < this._thumbsViewportSize ? (this.st.thumbs.autoCenter ? this._setThumbsPosition((this._thumbsViewportSize - this._thumbsContainerSize) / 2) : this._setThumbsPosition(this._thumbsMinPosition),
|
||
this.st.thumbs.arrows && this._thumbsArrowLeft && (this._thumbsArrowLeft.addClass("rsThumbsArrowDisabled"),
|
||
this._thumbsArrowRight.addClass("rsThumbsArrowDisabled")),
|
||
this._thumbsDrag = this._thumbsNavigation = !1,
|
||
this._unbindPassiveEvent(this._controlNav[0], this._downEvent, this._eventCallbacks.dragStartThumb, !1)) : this.st.thumbs.navigation && !this._thumbsNavigation && (this._thumbsNavigation = !0,
|
||
!this.hasTouch && this.st.thumbs.drag || this.hasTouch && this.st.thumbs.touch) && (this._thumbsDrag = !0,
|
||
this._bindPassiveEvent(this._controlNav[0], this._downEvent, this._eventCallbacks.dragStartThumb, !1)),
|
||
this._thumbsContainer.css(n),
|
||
e && t && this._setCurrentThumb(this.currSlideId, !0))
|
||
},
|
||
setThumbsOrientation: function(e, t) {
|
||
this._thumbsEnabled && (this.st.thumbs.orientation = e,
|
||
this._controlNav.remove(),
|
||
this.slider.removeClass("rsWithThumbsHor rsWithThumbsVer"),
|
||
this._createThumbs(),
|
||
this._unbindPassiveEvent(this._controlNav[0], this._downEvent, this._eventCallbacks.dragStartThumb, !1),
|
||
t || this.updateSliderSize(!0))
|
||
},
|
||
_setThumbsPosition: function(e) {
|
||
this._thumbsPosition = e,
|
||
this._useCSS3Transitions ? this._thumbsContainer.css(this._xProp, this._tPref1 + (this._thumbsHorizontal ? e + this._tPref2 + 0 : 0 + this._tPref2 + e) + this._tPref3) : this._thumbsContainer.css(this._thumbsHorizontal ? this._xProp : this._yProp, e)
|
||
},
|
||
_animateThumbsTo: function(e, t, i, n, o) {
|
||
var r = this;
|
||
if (r._thumbsNavigation) {
|
||
t || (t = r.st.thumbs.transitionSpeed),
|
||
r._thumbsPosition = e,
|
||
r._thumbsAnimTimeout && clearTimeout(r._thumbsAnimTimeout),
|
||
r._isThumbsAnimating && (r._useCSS3Transitions || r._thumbsContainer.stop(),
|
||
i = !0);
|
||
var s = {};
|
||
r._isThumbsAnimating = !0,
|
||
r._useCSS3Transitions ? (s[r._vendorPref + "transition-duration"] = t + "ms",
|
||
s[r._vendorPref + "transition-timing-function"] = i ? a.rsCSS3Easing[r.st.easeOut] : a.rsCSS3Easing[r.st.easeInOut],
|
||
r._thumbsContainer.css(s),
|
||
r._setThumbsPosition(e)) : (s[r._thumbsHorizontal ? r._xProp : r._yProp] = e + "px",
|
||
r._thumbsContainer.animate(s, t, i ? "easeOutCubic" : r.st.easeInOut)),
|
||
n && (r._thumbsPosition = n),
|
||
r._updateThumbsArrows(),
|
||
r._thumbsAnimTimeout = setTimeout((function() {
|
||
r._isThumbsAnimating = !1,
|
||
o && (r._animateThumbsTo(n, o, !0),
|
||
o = null)
|
||
}
|
||
), t)
|
||
}
|
||
},
|
||
_updateThumbsArrows: function() {
|
||
this._thumbsArrows && (this._thumbsPosition === this._thumbsMinPosition ? this._thumbsArrowLeft.addClass("rsThumbsArrowDisabled") : this._thumbsArrowLeft.removeClass("rsThumbsArrowDisabled"),
|
||
this._thumbsPosition === this._thumbsMaxPosition ? this._thumbsArrowRight.addClass("rsThumbsArrowDisabled") : this._thumbsArrowRight.removeClass("rsThumbsArrowDisabled"))
|
||
},
|
||
_setCurrentThumb: function(e, t) {
|
||
var i = 0
|
||
, n = e * this._thumbSize + 2 * this._thumbSize - this._thumbsSpacing + this._thumbsMinPosition;
|
||
if (this._thumbsNavigation) {
|
||
if (this._firstThumbMoved && (t = !0,
|
||
this._firstThumbMoved = !1),
|
||
n + this._thumbsPosition > this._thumbsViewportSize) {
|
||
e === this.numSlides - 1 && (i = 1);
|
||
var a = -e + this._visibleThumbsPerView - 2 + i;
|
||
a = a * this._thumbSize + this._thumbsViewportSize % this._thumbSize + this._thumbsSpacing - this._thumbsMinPosition
|
||
} else
|
||
0 !== e ? (e - 1) * this._thumbSize <= -this._thumbsPosition + this._thumbsMinPosition && e - 1 <= this.numSlides - this._visibleThumbsPerView && (a = (1 - e) * this._thumbSize + this._thumbsMinPosition) : a = this._thumbsMinPosition;
|
||
a !== this._thumbsPosition && ((i = void 0 === a ? this._thumbsPosition : a) > this._thumbsMinPosition ? this._setThumbsPosition(this._thumbsMinPosition) : i < this._thumbsMaxPosition ? this._setThumbsPosition(this._thumbsMaxPosition) : void 0 !== a && (t ? this._setThumbsPosition(a) : this._animateThumbsTo(a))),
|
||
this._updateThumbsArrows()
|
||
}
|
||
}
|
||
}),
|
||
a.rsModules.thumbnails = a.rsProto._initThumbs,
|
||
(o = d).extend(o.rsProto, {
|
||
_initTabs: function() {
|
||
var e = this;
|
||
"tabs" === e.st.controlNavigation && (e.ev.on("rsBeforeParseNode", (function(e, t, i) {
|
||
t = o(t),
|
||
i.thumbnail = t.find(".rsTmb").remove(),
|
||
i.thumbnail.length ? i.thumbnail = o(document.createElement("div")).append(i.thumbnail).html() : (i.thumbnail = t.attr("data-rsTmb"),
|
||
i.thumbnail || (i.thumbnail = t.find(".rsImg").attr("data-rsTmb")),
|
||
i.thumbnail = i.thumbnail ? '<img src="' + i.thumbnail + '"/>' : "")
|
||
}
|
||
)),
|
||
e.ev.one("rsAfterPropsSetup", (function() {
|
||
e._createTabs()
|
||
}
|
||
)),
|
||
e.ev.on("rsOnAppendSlide", (function(t, i, n) {
|
||
n >= e.numSlides ? e._controlNav.append('<div class="rsNavItem rsTab">' + i.thumbnail + "</div>") : e._controlNavItems.eq(n).before('<div class="rsNavItem rsTab">' + item.thumbnail + "</div>"),
|
||
e._controlNavItems = e._controlNav.children()
|
||
}
|
||
)),
|
||
e.ev.on("rsOnRemoveSlide", (function(t, i) {
|
||
var n = e._controlNavItems.eq(i);
|
||
n && (n.remove(),
|
||
e._controlNavItems = e._controlNav.children())
|
||
}
|
||
)),
|
||
e.ev.on("rsOnUpdateNav", (function() {
|
||
var t = e.currSlideId;
|
||
e._prevNavItem && e._prevNavItem.removeClass("rsNavSelected"),
|
||
(t = e._controlNavItems.eq(t)).addClass("rsNavSelected"),
|
||
e._prevNavItem = t
|
||
}
|
||
)))
|
||
},
|
||
_createTabs: function() {
|
||
var e = this;
|
||
e._controlNavEnabled = !0;
|
||
for (var t = '<div class="rsNav rsTabs">', i = 0; i < e.numSlides; i++)
|
||
t += '<div class="rsNavItem rsTab">' + e.slides[i].thumbnail + "</div>";
|
||
t = o(t + "</div>"),
|
||
e._controlNav = t,
|
||
e._controlNavItems = t.children(".rsNavItem"),
|
||
e.slider.append(t),
|
||
e._controlNav.click((function(t) {
|
||
(t = o(t.target).closest(".rsNavItem")).length && e.goTo(t.index())
|
||
}
|
||
))
|
||
}
|
||
}),
|
||
o.rsModules.tabs = o.rsProto._initTabs,
|
||
function(e) {
|
||
e.extend(e.rsProto, {
|
||
_initFullscreen: function() {
|
||
var t = this;
|
||
t._fullscreenDefaults = {
|
||
enabled: !1,
|
||
keyboardNav: !0,
|
||
buttonFS: !0,
|
||
nativeFS: !1,
|
||
doubleTap: !0
|
||
},
|
||
t.st.fullscreen = e.extend({}, t._fullscreenDefaults, t.st.fullscreen),
|
||
t.st.fullscreen.enabled && t.ev.one("rsBeforeSizeSet", (function() {
|
||
t._setupFullscreen()
|
||
}
|
||
))
|
||
},
|
||
_setupFullscreen: function() {
|
||
var t = this;
|
||
if (t._fsKeyboard = !t.st.keyboardNavEnabled && t.st.fullscreen.keyboardNav,
|
||
t.st.fullscreen.nativeFS) {
|
||
var i = {
|
||
supportsFullScreen: !1,
|
||
isFullScreen: function() {
|
||
return !1
|
||
},
|
||
requestFullScreen: function() {},
|
||
cancelFullScreen: function() {},
|
||
fullScreenEventName: "",
|
||
prefix: ""
|
||
}
|
||
, n = ["webkit", "moz", "o", "ms", "khtml"];
|
||
if (void 0 !== document.cancelFullScreen)
|
||
i.supportsFullScreen = !0;
|
||
else
|
||
for (var a = 0, o = n.length; a < o; a++)
|
||
if (i.prefix = n[a],
|
||
void 0 !== document[i.prefix + "CancelFullScreen"]) {
|
||
i.supportsFullScreen = !0;
|
||
break
|
||
}
|
||
i.supportsFullScreen ? (t.nativeFS = !0,
|
||
i.fullScreenEventName = i.prefix + "fullscreenchange" + t.ns,
|
||
i.isFullScreen = function() {
|
||
switch (this.prefix) {
|
||
case "":
|
||
return document.fullScreen;
|
||
case "webkit":
|
||
return document.webkitIsFullScreen;
|
||
default:
|
||
return document[this.prefix + "FullScreen"]
|
||
}
|
||
}
|
||
,
|
||
i.requestFullScreen = function(e) {
|
||
return "" === this.prefix ? e.requestFullScreen() : e[this.prefix + "RequestFullScreen"]()
|
||
}
|
||
,
|
||
i.cancelFullScreen = function(e) {
|
||
return "" === this.prefix ? document.cancelFullScreen() : document[this.prefix + "CancelFullScreen"]()
|
||
}
|
||
,
|
||
t._fullScreenApi = i) : t._fullScreenApi = !1
|
||
}
|
||
t.st.fullscreen.buttonFS && (t._fsBtn = e('<div class="rsFullscreenBtn"><div class="rsFullscreenIcn"></div></div>').appendTo(t._controlsContainer).on("click.rs", (function() {
|
||
t.isFullscreen ? t.exitFullscreen() : t.enterFullscreen()
|
||
}
|
||
)))
|
||
},
|
||
enterFullscreen: function(t) {
|
||
var i = this;
|
||
if (i._fullScreenApi) {
|
||
if (!t)
|
||
return i._doc.on(i._fullScreenApi.fullScreenEventName, (function(e) {
|
||
i._fullScreenApi.isFullScreen() ? i.enterFullscreen(!0) : i.exitFullscreen(!0)
|
||
}
|
||
)),
|
||
void i._fullScreenApi.requestFullScreen(e("html")[0]);
|
||
i._fullScreenApi.requestFullScreen(e("html")[0])
|
||
}
|
||
if (!i._isFullscreenUpdating) {
|
||
var n;
|
||
for (i._isFullscreenUpdating = !0,
|
||
i._doc.on("keyup" + i.ns + "fullscreen", (function(e) {
|
||
27 === e.keyCode && i.exitFullscreen()
|
||
}
|
||
)),
|
||
i._fsKeyboard && i._bindKeyboardNav(),
|
||
t = e(window),
|
||
i._fsScrollTopOnEnter = t.scrollTop(),
|
||
i._fsScrollLeftOnEnter = t.scrollLeft(),
|
||
i._htmlStyle = e("html").attr("style"),
|
||
i._bodyStyle = e("body").attr("style"),
|
||
i._sliderStyle = i.slider.attr("style"),
|
||
e("body, html").css({
|
||
overflow: "hidden",
|
||
height: "100%",
|
||
width: "100%",
|
||
margin: "0",
|
||
padding: "0"
|
||
}),
|
||
i.slider.addClass("rsFullscreen"),
|
||
n = 0; n < i.numSlides; n++)
|
||
(t = i.slides[n]).isRendered = !1,
|
||
t.bigImage && (t.isBig = !0,
|
||
t.isMedLoaded = t.isLoaded,
|
||
t.isMedLoading = t.isLoading,
|
||
t.medImage = t.image,
|
||
t.medIW = t.iW,
|
||
t.medIH = t.iH,
|
||
t.slideId = -99,
|
||
t.bigImage !== t.medImage && (t.sizeType = "big"),
|
||
t.isLoaded = t.isBigLoaded,
|
||
t.isLoading = !1,
|
||
t.image = t.bigImage,
|
||
t.images[0] = t.bigImage,
|
||
t.iW = t.bigIW,
|
||
t.iH = t.bigIH,
|
||
t.isAppended = t.contentAdded = !1,
|
||
i._updateItemSrc(t));
|
||
i.isFullscreen = !0,
|
||
i._isFullscreenUpdating = !1,
|
||
i.updateSliderSize(),
|
||
i.ev.trigger("rsEnterFullscreen")
|
||
}
|
||
},
|
||
exitFullscreen: function(t) {
|
||
var i = this;
|
||
if (i._fullScreenApi) {
|
||
if (!t)
|
||
return void i._fullScreenApi.cancelFullScreen(e("html")[0]);
|
||
i._doc.off(i._fullScreenApi.fullScreenEventName)
|
||
}
|
||
if (!i._isFullscreenUpdating) {
|
||
var n;
|
||
for (i._isFullscreenUpdating = !0,
|
||
i._doc.off("keyup" + i.ns + "fullscreen"),
|
||
i._fsKeyboard && i._doc.off("keydown" + i.ns),
|
||
e("html").attr("style", i._htmlStyle || ""),
|
||
e("body").attr("style", i._bodyStyle || ""),
|
||
n = 0; n < i.numSlides; n++)
|
||
(t = i.slides[n]).isRendered = !1,
|
||
t.bigImage && (t.isBig = !1,
|
||
t.slideId = -99,
|
||
t.isBigLoaded = t.isLoaded,
|
||
t.isBigLoading = t.isLoading,
|
||
t.bigImage = t.image,
|
||
t.bigIW = t.iW,
|
||
t.bigIH = t.iH,
|
||
t.isLoaded = t.isMedLoaded,
|
||
t.isLoading = !1,
|
||
t.image = t.medImage,
|
||
t.images[0] = t.medImage,
|
||
t.iW = t.medIW,
|
||
t.iH = t.medIH,
|
||
t.isAppended = t.contentAdded = !1,
|
||
i._updateItemSrc(t, !0),
|
||
t.bigImage !== t.medImage && (t.sizeType = "med"));
|
||
i.isFullscreen = !1,
|
||
(t = e(window)).scrollTop(i._fsScrollTopOnEnter),
|
||
t.scrollLeft(i._fsScrollLeftOnEnter),
|
||
i._isFullscreenUpdating = !1,
|
||
i.slider.removeClass("rsFullscreen"),
|
||
i.updateSliderSize(),
|
||
setTimeout((function() {
|
||
i.updateSliderSize()
|
||
}
|
||
), 1),
|
||
i.ev.trigger("rsExitFullscreen")
|
||
}
|
||
},
|
||
_updateItemSrc: function(t, i) {
|
||
var n = t.isLoaded || t.isLoading ? '<img class="rsImg rsMainSlideImage" src="' + t.image + '"/>' : '<a class="rsImg rsMainSlideImage" href="' + t.image + '"></a>';
|
||
t.content.hasClass("rsImg") ? t.content = e(n) : t.content.find(".rsImg").eq(0).replaceWith(n),
|
||
t.isLoaded || t.isLoading || !t.holder || t.holder.html(t.content)
|
||
}
|
||
}),
|
||
e.rsModules.fullscreen = e.rsProto._initFullscreen
|
||
}(d),
|
||
(r = d).extend(r.rsProto, {
|
||
_initAutoplay: function() {
|
||
var e, t = this;
|
||
t._autoPlayDefaults = {
|
||
enabled: !1,
|
||
stopAtAction: !0,
|
||
pauseOnHover: !0,
|
||
delay: 2e3
|
||
},
|
||
!t.st.autoPlay && t.st.autoplay && (t.st.autoPlay = t.st.autoplay),
|
||
t.st.autoPlay = r.extend({}, t._autoPlayDefaults, t.st.autoPlay),
|
||
t.st.autoPlay.enabled && (t.ev.on("rsBeforeParseNode", (function(t, i, n) {
|
||
i = r(i),
|
||
(e = i.attr("data-rsDelay")) && (n.customDelay = parseInt(e, 10))
|
||
}
|
||
)),
|
||
t.ev.one("rsAfterInit", (function() {
|
||
t._setupAutoPlay()
|
||
}
|
||
)),
|
||
t.ev.on("rsBeforeDestroy", (function() {
|
||
t.stopAutoPlay(),
|
||
t.slider.off("mouseenter mouseleave"),
|
||
r(window).off("blur" + t.ns + " focus" + t.ns)
|
||
}
|
||
)))
|
||
},
|
||
_setupAutoPlay: function() {
|
||
var e = this;
|
||
e.startAutoPlay(),
|
||
e.ev.on("rsAfterContentSet", (function(t, i) {
|
||
e._isDragging || e._isAnimating || !e._autoPlayEnabled || i !== e.currSlide || e._play()
|
||
}
|
||
)),
|
||
e.ev.on("rsDragRelease", (function() {
|
||
e._autoPlayEnabled && e._autoPlayPaused && (e._autoPlayPaused = !1,
|
||
e._play())
|
||
}
|
||
)),
|
||
e.ev.on("rsAfterSlideChange", (function() {
|
||
e._autoPlayEnabled && e._autoPlayPaused && (e._autoPlayPaused = !1,
|
||
e.currSlide.isLoaded && e._play())
|
||
}
|
||
)),
|
||
e.ev.on("rsDragStart", (function() {
|
||
e._autoPlayEnabled && (e.st.autoPlay.stopAtAction ? e.stopAutoPlay() : (e._autoPlayPaused = !0,
|
||
e._pause()))
|
||
}
|
||
)),
|
||
e.ev.on("rsBeforeMove", (function(t, i, n) {
|
||
e._autoPlayEnabled && (n && e.st.autoPlay.stopAtAction ? e.stopAutoPlay() : (e._autoPlayPaused = !0,
|
||
e._pause()))
|
||
}
|
||
)),
|
||
e._pausedByVideo = !1,
|
||
e.ev.on("rsVideoStop", (function() {
|
||
e._autoPlayEnabled && (e._pausedByVideo = !1,
|
||
e._play())
|
||
}
|
||
)),
|
||
e.ev.on("rsVideoPlay", (function() {
|
||
e._autoPlayEnabled && (e._autoPlayPaused = !1,
|
||
e._pause(),
|
||
e._pausedByVideo = !0)
|
||
}
|
||
)),
|
||
r(window).on("blur" + e.ns, (function() {
|
||
e._autoPlayEnabled && (e._autoPlayPaused = !0,
|
||
e._pause())
|
||
}
|
||
)).on("focus" + e.ns, (function() {
|
||
e._autoPlayEnabled && e._autoPlayPaused && (e._autoPlayPaused = !1,
|
||
e._play())
|
||
}
|
||
)),
|
||
e.st.autoPlay.pauseOnHover && (e._pausedByHover = !1,
|
||
e.slider.hover((function() {
|
||
e._autoPlayEnabled && (e._autoPlayPaused = !1,
|
||
e._pause(),
|
||
e._pausedByHover = !0)
|
||
}
|
||
), (function() {
|
||
e._autoPlayEnabled && (e._pausedByHover = !1,
|
||
e._play())
|
||
}
|
||
)))
|
||
},
|
||
toggleAutoPlay: function() {
|
||
this._autoPlayEnabled ? this.stopAutoPlay() : this.startAutoPlay()
|
||
},
|
||
startAutoPlay: function() {
|
||
this._autoPlayEnabled = !0,
|
||
this.currSlide.isLoaded && this._play()
|
||
},
|
||
stopAutoPlay: function() {
|
||
this._pausedByVideo = this._pausedByHover = this._autoPlayPaused = this._autoPlayEnabled = !1,
|
||
this._pause()
|
||
},
|
||
_play: function() {
|
||
var e = this;
|
||
e._pausedByHover || e._pausedByVideo || (e._autoPlayRunning = !0,
|
||
e._autoPlayTimeout && clearTimeout(e._autoPlayTimeout),
|
||
e._autoPlayTimeout = setTimeout((function() {
|
||
if (!e._loop && !e.st.loopRewind) {
|
||
var t = !0;
|
||
e.st.loopRewind = !0
|
||
}
|
||
e.next(!0),
|
||
t && (e.st.loopRewind = !1)
|
||
}
|
||
), e.currSlide.customDelay ? e.currSlide.customDelay : e.st.autoPlay.delay))
|
||
},
|
||
_pause: function() {
|
||
this._pausedByHover || this._pausedByVideo || (this._autoPlayRunning = !1,
|
||
this._autoPlayTimeout && (clearTimeout(this._autoPlayTimeout),
|
||
this._autoPlayTimeout = null))
|
||
}
|
||
}),
|
||
r.rsModules.autoplay = r.rsProto._initAutoplay,
|
||
(s = d).extend(s.rsProto, {
|
||
_initVideo: function() {
|
||
var e = this;
|
||
e._videoDefaults = {
|
||
autoHideArrows: !0,
|
||
autoHideControlNav: !1,
|
||
autoHideBlocks: !1,
|
||
autoHideCaption: !1,
|
||
disableCSS3inFF: !0,
|
||
youTubeCode: '<iframe src="https://www.youtube.com/embed/%id%?rel=1&showinfo=0&autoplay=1&wmode=transparent" frameborder="no"></iframe>',
|
||
vimeoCode: '<iframe src="https://player.vimeo.com/video/%id%?byline=0&portrait=0&autoplay=1" frameborder="no" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>'
|
||
},
|
||
e.st.video = s.extend({}, e._videoDefaults, e.st.video),
|
||
e.ev.on("rsBeforeSizeSet", (function() {
|
||
e._isVideoPlaying && setTimeout((function() {
|
||
var t = e._currHolder;
|
||
t = t.hasClass("rsVideoContainer") ? t : t.find(".rsVideoContainer"),
|
||
e._videoFrameHolder && e._videoFrameHolder.css({
|
||
width: t.width(),
|
||
height: t.height()
|
||
})
|
||
}
|
||
), 32)
|
||
}
|
||
));
|
||
var t = e._browser.mozilla;
|
||
e.ev.on("rsAfterParseNode", (function(i, n, a) {
|
||
if (i = s(n),
|
||
a.videoURL) {
|
||
e.st.video.disableCSS3inFF && t && (e._useCSS3Transitions = e._use3dTransform = !1),
|
||
n = s('<div class="rsVideoContainer"></div>');
|
||
var o = s('<div class="rsBtnCenterer"><div class="rsPlayBtn"><div class="rsPlayBtnIcon"></div></div></div>');
|
||
i.hasClass("rsImg") ? a.content = n.append(i).append(o) : a.content.find(".rsImg").wrap(n).after(o)
|
||
}
|
||
}
|
||
)),
|
||
e.ev.on("rsAfterSlideChange", (function() {
|
||
e.stopVideo()
|
||
}
|
||
))
|
||
},
|
||
toggleVideo: function() {
|
||
return this._isVideoPlaying ? this.stopVideo() : this.playVideo()
|
||
},
|
||
playVideo: function() {
|
||
var e = this;
|
||
if (!e._isVideoPlaying) {
|
||
var t = e.currSlide;
|
||
if (!t.videoURL)
|
||
return !1;
|
||
e._playingVideoSlide = t;
|
||
var i, n = e._currVideoContent = t.content;
|
||
if ((t = t.videoURL).match(/youtu\.be/i) || t.match(/youtube\.com/i)) {
|
||
var a = /^.*(youtu\.be\/|v\/|u\/\w\/|embed\/|watch\?v=|&v=)([^#&\?]*).*/;
|
||
(a = t.match(a)) && 11 == a[2].length && (i = a[2]),
|
||
void 0 !== i && (e._videoFrameHolder = e.st.video.youTubeCode.replace("%id%", i))
|
||
} else
|
||
t.match(/vimeo\.com/i) && (a = /(www\.)?vimeo.com\/(\d+)($|\/)/,
|
||
(a = t.match(a)) && (i = a[2]),
|
||
void 0 !== i && (e._videoFrameHolder = e.st.video.vimeoCode.replace("%id%", i)));
|
||
return e.videoObj = s(e._videoFrameHolder),
|
||
e.ev.trigger("rsOnCreateVideoElement", [t]),
|
||
e.videoObj.length && (e._videoFrameHolder = s('<div class="rsVideoFrameHolder"><div class="rsPreloader"></div><div class="rsCloseVideoBtn"><div class="rsCloseVideoIcn"></div></div></div>'),
|
||
e._videoFrameHolder.find(".rsPreloader").after(e.videoObj),
|
||
n = n.hasClass("rsVideoContainer") ? n : n.find(".rsVideoContainer"),
|
||
e._videoFrameHolder.css({
|
||
width: n.width(),
|
||
height: n.height()
|
||
}).find(".rsCloseVideoBtn").off("click.rsv").on("click.rsv", (function(t) {
|
||
return e.stopVideo(),
|
||
t.preventDefault(),
|
||
t.stopPropagation(),
|
||
!1
|
||
}
|
||
)),
|
||
n.append(e._videoFrameHolder),
|
||
e.isIPAD && n.addClass("rsIOSVideo"),
|
||
e._toggleHiddenClass(!1),
|
||
setTimeout((function() {
|
||
e._videoFrameHolder.addClass("rsVideoActive")
|
||
}
|
||
), 10),
|
||
e.ev.trigger("rsVideoPlay"),
|
||
e._isVideoPlaying = !0),
|
||
!0
|
||
}
|
||
return !1
|
||
},
|
||
stopVideo: function() {
|
||
var e = this;
|
||
return !!e._isVideoPlaying && (e.isIPAD && e.slider.find(".rsCloseVideoBtn").remove(),
|
||
e._toggleHiddenClass(!0),
|
||
setTimeout((function() {
|
||
e.ev.trigger("rsOnDestroyVideoElement", [e.videoObj]);
|
||
var t = e._videoFrameHolder.find("iframe");
|
||
if (t.length)
|
||
try {
|
||
t.attr("src", "")
|
||
} catch (e) {}
|
||
e._videoFrameHolder.remove(),
|
||
e._videoFrameHolder = null
|
||
}
|
||
), 16),
|
||
e.ev.trigger("rsVideoStop"),
|
||
e._isVideoPlaying = !1,
|
||
!0)
|
||
},
|
||
_toggleHiddenClass: function(e, t) {
|
||
var i = []
|
||
, n = this.st.video;
|
||
if (n.autoHideArrows && (this._arrowLeft && (i.push(this._arrowLeft, this._arrowRight),
|
||
this._arrowsAutoHideLocked = !e),
|
||
this._fsBtn && i.push(this._fsBtn)),
|
||
n.autoHideControlNav && this._controlNav && i.push(this._controlNav),
|
||
n.autoHideBlocks && this._playingVideoSlide.animBlocks && i.push(this._playingVideoSlide.animBlocks),
|
||
n.autoHideCaption && this.globalCaption && i.push(this.globalCaption),
|
||
this.slider[e ? "removeClass" : "addClass"]("rsVideoPlaying"),
|
||
i.length)
|
||
for (n = 0; n < i.length; n++)
|
||
e ? i[n].removeClass("rsHidden") : i[n].addClass("rsHidden")
|
||
}
|
||
}),
|
||
s.rsModules.video = s.rsProto._initVideo,
|
||
(l = d).extend(l.rsProto, {
|
||
_initAnimatedBlocks: function() {
|
||
function e() {
|
||
var e = i.currSlide;
|
||
if (i.currSlide && i.currSlide.isLoaded && i._slideWithBlocks !== e) {
|
||
if (0 < i._animatedBlockTimeouts.length) {
|
||
for (t = 0; t < i._animatedBlockTimeouts.length; t++)
|
||
clearTimeout(i._animatedBlockTimeouts[t]);
|
||
i._animatedBlockTimeouts = []
|
||
}
|
||
if (0 < i._blockAnimProps.length) {
|
||
var n;
|
||
for (t = 0; t < i._blockAnimProps.length; t++)
|
||
(n = i._blockAnimProps[t]) && (i._useCSS3Transitions ? (n.block.css(i._vendorPref + i._TD, "0s"),
|
||
n.block.css(n.css)) : n.block.stop(!0).css(n.css),
|
||
i._slideWithBlocks = null,
|
||
e.animBlocksDisplayed = !1);
|
||
i._blockAnimProps = []
|
||
}
|
||
e.animBlocks && (e.animBlocksDisplayed = !0,
|
||
i._slideWithBlocks = e,
|
||
i._animateBlocks(e.animBlocks))
|
||
}
|
||
}
|
||
var t, i = this;
|
||
i._blockDefaults = {
|
||
fadeEffect: !0,
|
||
moveEffect: "top",
|
||
moveOffset: 20,
|
||
speed: 400,
|
||
easing: "easeOutSine",
|
||
delay: 200
|
||
},
|
||
i.st.block = l.extend({}, i._blockDefaults, i.st.block),
|
||
i._blockAnimProps = [],
|
||
i._animatedBlockTimeouts = [],
|
||
i.ev.on("rsAfterInit", (function() {
|
||
e()
|
||
}
|
||
)),
|
||
i.ev.on("rsBeforeParseNode", (function(e, t, i) {
|
||
t = l(t),
|
||
i.animBlocks = t.find(".rsABlock").css("display", "none"),
|
||
i.animBlocks.length || (t.hasClass("rsABlock") ? i.animBlocks = t.css("display", "none") : i.animBlocks = !1)
|
||
}
|
||
)),
|
||
i.ev.on("rsAfterContentSet", (function(t, n) {
|
||
n.id === i.slides[i.currSlideId].id && setTimeout((function() {
|
||
e()
|
||
}
|
||
), i.st.fadeinLoadedSlide ? 300 : 0)
|
||
}
|
||
)),
|
||
i.ev.on("rsAfterSlideChange", (function() {
|
||
e()
|
||
}
|
||
))
|
||
},
|
||
_updateAnimBlockProps: function(e, t) {
|
||
setTimeout((function() {
|
||
e.css(t)
|
||
}
|
||
), 6)
|
||
},
|
||
_animateBlocks: function(e) {
|
||
var t, i, n, a, o, r, s, c = this;
|
||
c._animatedBlockTimeouts = [],
|
||
e.each((function(e) {
|
||
t = l(this),
|
||
i = {},
|
||
n = {},
|
||
a = null;
|
||
var d = t.attr("data-move-offset");
|
||
if (0 < (d = d ? parseInt(d, 10) : c.st.block.moveOffset) && ((r = t.data("move-effect")) ? ("none" === (r = r.toLowerCase()) || "left" !== r && "top" !== r && "bottom" !== r && "right" !== r && "none" === (r = c.st.block.moveEffect)) && (r = !1) : r = c.st.block.moveEffect,
|
||
r && "none" !== r)) {
|
||
var u = "right" === r || "left" === r;
|
||
if (s = !1,
|
||
c._useCSS3Transitions) {
|
||
var p = 0;
|
||
o = c._xProp
|
||
} else
|
||
u ? isNaN(parseInt(t.css("right"), 10)) ? o = "left" : (o = "right",
|
||
s = !0) : isNaN(parseInt(t.css("bottom"), 10)) ? o = "top" : (o = "bottom",
|
||
s = !0),
|
||
o = "margin-" + o,
|
||
s && (d = -d),
|
||
c._useCSS3Transitions ? p = parseInt(t.css(o), 10) : void 0 === (p = t.data("rs-start-move-prop")) && (p = parseInt(t.css(o), 10),
|
||
isNaN(p) && (p = 0),
|
||
t.data("rs-start-move-prop", p));
|
||
n[o] = c._getCSS3Prop("top" === r || "left" === r ? p - d : p + d, u),
|
||
i[o] = c._getCSS3Prop(p, u)
|
||
}
|
||
(d = t.attr("data-fade-effect")) ? "none" !== d.toLowerCase() && "false" !== d.toLowerCase() || (d = !1) : d = c.st.block.fadeEffect,
|
||
d && (n.opacity = 0,
|
||
i.opacity = 1),
|
||
(d || r) && ((a = {}).hasFade = !!d,
|
||
r && (a.moveProp = o,
|
||
a.hasMove = !0),
|
||
a.speed = t.data("speed"),
|
||
isNaN(a.speed) && (a.speed = c.st.block.speed),
|
||
a.easing = t.data("easing"),
|
||
a.easing || (a.easing = c.st.block.easing),
|
||
a.css3Easing = l.rsCSS3Easing[a.easing],
|
||
a.delay = t.data("delay"),
|
||
isNaN(a.delay) && (a.delay = c.st.block.delay * e)),
|
||
d = {},
|
||
c._useCSS3Transitions && (d[c._vendorPref + c._TD] = "0ms"),
|
||
d.moveProp = i.moveProp,
|
||
d.opacity = i.opacity,
|
||
d.display = "none",
|
||
c._blockAnimProps.push({
|
||
block: t,
|
||
css: d
|
||
}),
|
||
c._updateAnimBlockProps(t, n),
|
||
c._animatedBlockTimeouts.push(setTimeout(function(e, t, i, n) {
|
||
return function() {
|
||
if (e.css("display", "block"),
|
||
i) {
|
||
var a = {};
|
||
if (c._useCSS3Transitions) {
|
||
var o = "";
|
||
i.hasMove && (o += i.moveProp),
|
||
i.hasFade && (i.hasMove && (o += ", "),
|
||
o += "opacity"),
|
||
a[c._vendorPref + c._TP] = o,
|
||
a[c._vendorPref + c._TD] = i.speed + "ms",
|
||
a[c._vendorPref + c._TTF] = i.css3Easing,
|
||
e.css(a),
|
||
setTimeout((function() {
|
||
e.css(t)
|
||
}
|
||
), 24)
|
||
} else
|
||
setTimeout((function() {
|
||
e.animate(t, i.speed, i.easing)
|
||
}
|
||
), 16)
|
||
}
|
||
delete c._animatedBlockTimeouts[n]
|
||
}
|
||
}(t, i, a, e), 6 >= a.delay ? 12 : a.delay))
|
||
}
|
||
))
|
||
}
|
||
}),
|
||
l.rsModules.animatedBlocks = l.rsProto._initAnimatedBlocks,
|
||
function(e) {
|
||
e.extend(e.rsProto, {
|
||
_initAutoHeight: function() {
|
||
var e = this;
|
||
if (e.st.autoHeight) {
|
||
var t, i, n, a = !0, o = function(o) {
|
||
n = e.slides[e.currSlideId],
|
||
(t = n.holder) && (i = t.height()) && void 0 !== i && i > (e.st.minAutoHeight || 30) && (e._wrapHeight = i,
|
||
e._useCSS3Transitions || !o ? e._sliderOverflow.css("height", i) : e._sliderOverflow.stop(!0, !0).animate({
|
||
height: i
|
||
}, e.st.transitionSpeed),
|
||
e.ev.trigger("rsAutoHeightChange", i),
|
||
a && (e._useCSS3Transitions && setTimeout((function() {
|
||
e._sliderOverflow.css(e._vendorPref + "transition", "height " + e.st.transitionSpeed + "ms ease-in-out")
|
||
}
|
||
), 16),
|
||
a = !1))
|
||
};
|
||
e.ev.on("rsMaybeSizeReady.rsAutoHeight", (function(e, t) {
|
||
n === t && o()
|
||
}
|
||
)),
|
||
e.ev.on("rsAfterContentSet.rsAutoHeight", (function(e, t) {
|
||
n === t && o()
|
||
}
|
||
)),
|
||
e.slider.addClass("rsAutoHeight"),
|
||
e.ev.one("rsAfterInit", (function() {
|
||
setTimeout((function() {
|
||
o(!1),
|
||
setTimeout((function() {
|
||
e.slider.append('<div style="clear:both; float: none;"></div>')
|
||
}
|
||
), 16)
|
||
}
|
||
), 16)
|
||
}
|
||
)),
|
||
e.ev.on("rsBeforeAnimStart", (function() {
|
||
o(!0)
|
||
}
|
||
)),
|
||
e.ev.on("rsBeforeSizeSet", (function() {
|
||
setTimeout((function() {
|
||
o(!1)
|
||
}
|
||
), 16)
|
||
}
|
||
))
|
||
}
|
||
}
|
||
}),
|
||
e.rsModules.autoHeight = e.rsProto._initAutoHeight
|
||
}(d),
|
||
function(e) {
|
||
e.extend(e.rsProto, {
|
||
_initGlobalCaption: function() {
|
||
var t = this;
|
||
t.st.globalCaption && (t.ev.on("rsAfterInit", (function() {
|
||
t.globalCaption = e('<div class="rsGCaption"></div>').appendTo(t.st.globalCaptionInside ? t._sliderOverflow : t.slider),
|
||
t.globalCaption.html(t.currSlide.caption || "")
|
||
}
|
||
)),
|
||
t.ev.on("rsBeforeAnimStart", (function() {
|
||
t.globalCaption.html(t.currSlide.caption || "")
|
||
}
|
||
)))
|
||
}
|
||
}),
|
||
e.rsModules.globalCaption = e.rsProto._initGlobalCaption
|
||
}(d),
|
||
function(e) {
|
||
e.rsProto._initActiveClass = function() {
|
||
var e, t = this;
|
||
t.st.addActiveClass && t.ev.on("rsOnUpdateNav", (function() {
|
||
e && clearTimeout(e),
|
||
e = setTimeout((function() {
|
||
t._oldHolder && t._oldHolder.removeClass("rsActiveSlide"),
|
||
t._currHolder && t._currHolder.addClass("rsActiveSlide"),
|
||
e = null
|
||
}
|
||
), 50)
|
||
}
|
||
))
|
||
}
|
||
,
|
||
e.rsModules.activeClass = e.rsProto._initActiveClass
|
||
}(d),
|
||
function(e) {
|
||
e.extend(e.rsProto, {
|
||
_initDeeplinking: function() {
|
||
var t, i, n, a = this;
|
||
if (a._hashDefaults = {
|
||
enabled: !1,
|
||
change: !1,
|
||
prefix: ""
|
||
},
|
||
a.st.deeplinking = e.extend({}, a._hashDefaults, a.st.deeplinking),
|
||
a.st.deeplinking.enabled) {
|
||
var o = a.st.deeplinking.change
|
||
, r = a.st.deeplinking.prefix
|
||
, s = "#" + r
|
||
, l = function() {
|
||
var e = window.location.hash;
|
||
return e && 0 < e.indexOf(r) && 0 <= (e = parseInt(e.substring(s.length), 10)) ? e - 1 : -1
|
||
}
|
||
, c = l();
|
||
-1 !== c && (a.st.startSlideId = c),
|
||
o && (e(window).on("hashchange" + a.ns, (function(e) {
|
||
t || (0 > (e = l()) || (e > a.numSlides - 1 && (e = a.numSlides - 1),
|
||
a.goTo(e)))
|
||
}
|
||
)),
|
||
a.ev.on("rsBeforeAnimStart", (function() {
|
||
i && clearTimeout(i),
|
||
n && clearTimeout(n)
|
||
}
|
||
)),
|
||
a.ev.on("rsAfterSlideChange", (function() {
|
||
i && clearTimeout(i),
|
||
n && clearTimeout(n),
|
||
n = setTimeout((function() {
|
||
t = !0,
|
||
window.location.replace(("" + window.location).split("#")[0] + s + (a.currSlideId + 1)),
|
||
i = setTimeout((function() {
|
||
t = !1,
|
||
i = null
|
||
}
|
||
), 60)
|
||
}
|
||
), 400)
|
||
}
|
||
))),
|
||
a.ev.on("rsBeforeDestroy", (function() {
|
||
i = n = null,
|
||
o && e(window).off("hashchange" + a.ns)
|
||
}
|
||
))
|
||
}
|
||
}
|
||
}),
|
||
e.rsModules.deeplinking = e.rsProto._initDeeplinking
|
||
}(d),
|
||
function(e, t, i) {
|
||
function n(e) {
|
||
return "#" + (e = e || location.href).replace(/^[^#]*#?(.*)$/, "$1")
|
||
}
|
||
var a = document
|
||
, o = e.event.special
|
||
, r = a.documentMode
|
||
, s = "onhashchange"in t && (r === i || 7 < r);
|
||
e.fn.hashchange = function(e) {
|
||
return e ? this.bind("hashchange", e) : this.trigger("hashchange")
|
||
}
|
||
,
|
||
e.fn.hashchange.delay = 50,
|
||
o.hashchange = e.extend(o.hashchange, {
|
||
setup: function() {
|
||
if (s)
|
||
return !1;
|
||
e(l.start)
|
||
},
|
||
teardown: function() {
|
||
if (s)
|
||
return !1;
|
||
e(l.stop)
|
||
}
|
||
});
|
||
var l = function() {
|
||
function o() {
|
||
var i = n()
|
||
, a = p(c);
|
||
i !== c ? (u(c = i, a),
|
||
e(t).trigger("hashchange")) : a !== c && (location.href = location.href.replace(/#.*/, "") + a),
|
||
r = setTimeout(o, e.fn.hashchange.delay)
|
||
}
|
||
var r, l = {}, c = n(), d = function(e) {
|
||
return e
|
||
}, u = d, p = d;
|
||
return l.start = function() {
|
||
r || o()
|
||
}
|
||
,
|
||
l.stop = function() {
|
||
r && clearTimeout(r),
|
||
r = i
|
||
}
|
||
,
|
||
t.attachEvent && !t.addEventListener && !s && function() {
|
||
var t, i;
|
||
l.start = function() {
|
||
t || (i = (i = e.fn.hashchange.src) && i + n(),
|
||
t = e('<iframe tabindex="-1" title="empty"/>').hide().one("load", (function() {
|
||
i || u(n()),
|
||
o()
|
||
}
|
||
)).attr("src", i || "javascript:0").insertAfter("body")[0].contentWindow,
|
||
a.onpropertychange = function() {
|
||
try {
|
||
"title" === event.propertyName && (t.document.title = a.title)
|
||
} catch (e) {}
|
||
}
|
||
)
|
||
}
|
||
,
|
||
l.stop = d,
|
||
p = function() {
|
||
return n(t.location.href)
|
||
}
|
||
,
|
||
u = function(i, n) {
|
||
var o = t.document
|
||
, r = e.fn.hashchange.domain;
|
||
i !== n && (o.title = a.title,
|
||
o.open(),
|
||
r && o.write('<script>document.domain="' + r + '"<\/script>'),
|
||
o.close(),
|
||
t.location.hash = i)
|
||
}
|
||
}(),
|
||
l
|
||
}()
|
||
}(d, window),
|
||
(c = d).rsProto._initVisibleNearby = function() {
|
||
var e = this;
|
||
e.st.visibleNearby && e.st.visibleNearby.enabled && (e._vnDefaults = {
|
||
enabled: !0,
|
||
centerArea: .6,
|
||
center: !0,
|
||
breakpoint: 0,
|
||
breakpointCenterArea: .8,
|
||
hiddenOverflow: !0,
|
||
navigateByCenterClick: !1
|
||
},
|
||
e.st.visibleNearby = c.extend({}, e._vnDefaults, e.st.visibleNearby),
|
||
e.ev.one("rsAfterPropsSetup", (function() {
|
||
e._sliderVisibleNearbyWrap = e._sliderOverflow.css("overflow", "visible").wrap('<div class="rsVisibleNearbyWrap"></div>').parent(),
|
||
e.st.visibleNearby.hiddenOverflow || e._sliderVisibleNearbyWrap.css("overflow", "visible"),
|
||
e._controlsContainer = e.st.controlsInside ? e._sliderVisibleNearbyWrap : e.slider
|
||
}
|
||
)),
|
||
e.ev.on("rsAfterSizePropSet", (function() {
|
||
var t = e.st.visibleNearby
|
||
, i = t.breakpoint && e.width < t.breakpoint ? t.breakpointCenterArea : t.centerArea;
|
||
e._slidesHorizontal ? (e._wrapWidth *= i,
|
||
e._sliderVisibleNearbyWrap.css({
|
||
height: e._wrapHeight,
|
||
width: e._wrapWidth / i
|
||
}),
|
||
e._minPosOffset = e._wrapWidth * (1 - i) / 2 / i) : (e._wrapHeight *= i,
|
||
e._sliderVisibleNearbyWrap.css({
|
||
height: e._wrapHeight / i,
|
||
width: e._wrapWidth
|
||
}),
|
||
e._minPosOffset = e._wrapHeight * (1 - i) / 2 / i),
|
||
t.navigateByCenterClick || (e._nextSlidePos = e._slidesHorizontal ? e._wrapWidth : e._wrapHeight),
|
||
t.center && e._sliderOverflow.css("margin-" + (e._slidesHorizontal ? "left" : "top"), e._minPosOffset)
|
||
}
|
||
)))
|
||
}
|
||
,
|
||
c.rsModules.visibleNearby = c.rsProto._initVisibleNearby
|
||
},
|
||
95648: function(e, t, i) {
|
||
var n;
|
||
function a(e) {
|
||
return a = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
|
||
return typeof e
|
||
}
|
||
: function(e) {
|
||
return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
|
||
}
|
||
,
|
||
a(e)
|
||
}
|
||
e = i.nmd(e),
|
||
function() {
|
||
var o, r = {
|
||
boolean: !1,
|
||
function: !0,
|
||
object: !0,
|
||
number: !1,
|
||
string: !1,
|
||
undefined: !1
|
||
}, s = r["undefined" == typeof window ? "undefined" : a(window)] && window || this, l = r[a(t)] && t && !t.nodeType && t, c = r[a(e)] && e && !e.nodeType && e, d = c && c.exports === l && l, u = r[void 0 === i.g ? "undefined" : a(i.g)] && i.g;
|
||
!u || u.global !== u && u.window !== u || (s = u);
|
||
var p = Object.prototype.toString
|
||
, m = RegExp("^" + String(p).replace(/[.*+?^${}()|[\]\\]/g, "\\$&").replace(/toString| for [^\]]+/g, ".*?") + "$")
|
||
, h = Math.max;
|
||
function f() {}
|
||
function g(e) {
|
||
return "function" == typeof e
|
||
}
|
||
function v(e) {
|
||
return !(!e || !r[a(e)])
|
||
}
|
||
g(/x/) && (g = function(e) {
|
||
return "function" == typeof e && "[object Function]" == p.call(e)
|
||
}
|
||
);
|
||
var b, y = "function" == typeof (b = y = Date.now) && m.test(b) && y || function() {
|
||
return (new Date).getTime()
|
||
}
|
||
;
|
||
f.debounce = function(e, t, i) {
|
||
var n, a, r, s, l, c, d, u = 0, p = !1, m = !0;
|
||
if (!g(e))
|
||
throw new TypeError;
|
||
if (t = h(0, t) || 0,
|
||
!0 === i) {
|
||
var f = !0;
|
||
m = !1
|
||
} else
|
||
v(i) && (f = i.leading,
|
||
p = "maxWait"in i && (h(t, i.maxWait) || 0),
|
||
m = "trailing"in i ? i.trailing : m);
|
||
var b = function i() {
|
||
var p = t - (y() - s);
|
||
if (p <= 0) {
|
||
a && clearTimeout(a);
|
||
var m = d;
|
||
a = c = d = o,
|
||
m && (u = y(),
|
||
r = e.apply(l, n),
|
||
c || a || (n = l = null))
|
||
} else
|
||
c = setTimeout(i, p)
|
||
}
|
||
, w = function() {
|
||
c && clearTimeout(c),
|
||
a = c = d = o,
|
||
(m || p !== t) && (u = y(),
|
||
r = e.apply(l, n),
|
||
c || a || (n = l = null))
|
||
};
|
||
return function() {
|
||
if (n = arguments,
|
||
s = y(),
|
||
l = this,
|
||
d = m && (c || !f),
|
||
!1 === p)
|
||
var i = f && !c;
|
||
else {
|
||
a || f || (u = s);
|
||
var o = p - (s - u)
|
||
, h = o <= 0;
|
||
h ? (a && (a = clearTimeout(a)),
|
||
u = s,
|
||
r = e.apply(l, n)) : a || (a = setTimeout(w, o))
|
||
}
|
||
return h && c ? c = clearTimeout(c) : c || t === p || (c = setTimeout(b, t)),
|
||
i && (h = !0,
|
||
r = e.apply(l, n)),
|
||
!h || c || a || (n = l = null),
|
||
r
|
||
}
|
||
}
|
||
,
|
||
f.isFunction = g,
|
||
f.isObject = v,
|
||
f.now = y,
|
||
f.VERSION = "2.4.1",
|
||
"object" == a(i.amdO) && i.amdO ? (s._ = f,
|
||
(n = function() {
|
||
return f
|
||
}
|
||
.call(t, i, t, e)) === o || (e.exports = n)) : l && c ? d ? (c.exports = f)._ = f : l._ = f : s._ = f
|
||
}
|
||
.call(this)
|
||
},
|
||
5091: function(e, t, i) {
|
||
var n, a, o, r;
|
||
function s(e) {
|
||
return s = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
|
||
return typeof e
|
||
}
|
||
: function(e) {
|
||
return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
|
||
}
|
||
,
|
||
s(e)
|
||
}
|
||
r = function(e) {
|
||
return e
|
||
}
|
||
,
|
||
"object" === s(t) ? e.exports = t = r(i(17653), i(309)) : (a = [i(17653), i(309)],
|
||
void 0 === (o = "function" == typeof (n = r) ? n.apply(t, a) : n) || (e.exports = o))
|
||
},
|
||
309: function(e, t, i) {
|
||
var n, a, o;
|
||
a = [i(17653), i(19755)],
|
||
void 0 === (o = "function" == typeof (n = function(e, t) {
|
||
var i, n = 7, a = 6, o = e._;
|
||
function r(e, t) {
|
||
var i, n = this, a = e.$node[0], o = a.value, r = e.$node.data("value"), s = r || o, l = r ? t.formatSubmit : t.format, c = function() {
|
||
return a.currentStyle ? "rtl" == a.currentStyle.direction : "rtl" == getComputedStyle(e.$root[0]).direction
|
||
};
|
||
n.settings = t,
|
||
n.$node = e.$node,
|
||
n.queue = {
|
||
min: "measure create",
|
||
max: "measure create",
|
||
now: "now create",
|
||
select: "parse create validate",
|
||
highlight: "parse navigate create validate",
|
||
view: "parse create validate viewset",
|
||
disable: "deactivate",
|
||
enable: "activate"
|
||
},
|
||
n.item = {},
|
||
n.item.clear = null,
|
||
n.item.disable = (t.disable || []).slice(0),
|
||
n.item.enable = -(!0 === (i = n.item.disable)[0] ? i.shift() : -1),
|
||
n.set("min", t.min).set("max", t.max).set("now"),
|
||
s ? n.set("select", s, {
|
||
format: l,
|
||
defaultValue: !0
|
||
}) : n.set("select", null).set("highlight", n.item.now),
|
||
n.key = {
|
||
40: 7,
|
||
38: -7,
|
||
39: function() {
|
||
return c() ? -1 : 1
|
||
},
|
||
37: function() {
|
||
return c() ? 1 : -1
|
||
},
|
||
go: function(e) {
|
||
var t = n.item.highlight
|
||
, i = new Date(t.year,t.month,t.date + e);
|
||
n.set("highlight", i, {
|
||
interval: e
|
||
}),
|
||
this.render()
|
||
}
|
||
},
|
||
e.on("render", (function() {
|
||
e.$root.find("." + t.klass.selectMonth).on("change", (function() {
|
||
var i = this.value;
|
||
i && (e.set("highlight", [e.get("view").year, i, e.get("highlight").date]),
|
||
e.$root.find("." + t.klass.selectMonth).trigger("focus"))
|
||
}
|
||
)),
|
||
e.$root.find("." + t.klass.selectYear).on("change", (function() {
|
||
var i = this.value;
|
||
i && (e.set("highlight", [i, e.get("view").month, e.get("highlight").date]),
|
||
e.$root.find("." + t.klass.selectYear).trigger("focus"))
|
||
}
|
||
))
|
||
}
|
||
), 1).on("open", (function() {
|
||
var i = "";
|
||
n.disabled(n.get("now")) && (i = ":not(." + t.klass.buttonToday + ")"),
|
||
e.$root.find("button" + i + ", select").attr("disabled", !1)
|
||
}
|
||
), 1).on("close", (function() {
|
||
e.$root.find("button, select").attr("disabled", !0)
|
||
}
|
||
), 1)
|
||
}
|
||
r.prototype.set = function(e, t, i) {
|
||
var n = this
|
||
, a = n.item;
|
||
return null === t ? ("clear" == e && (e = "select"),
|
||
a[e] = t,
|
||
n) : (a["enable" == e ? "disable" : "flip" == e ? "enable" : e] = n.queue[e].split(" ").map((function(a) {
|
||
return t = n[a](e, t, i)
|
||
}
|
||
)).pop(),
|
||
"select" == e ? n.set("highlight", a.select, i) : "highlight" == e ? n.set("view", a.highlight, i) : e.match(/^(flip|min|max|disable|enable)$/) && (a.select && n.disabled(a.select) && n.set("select", a.select, i),
|
||
a.highlight && n.disabled(a.highlight) && n.set("highlight", a.highlight, i)),
|
||
n)
|
||
}
|
||
,
|
||
r.prototype.get = function(e) {
|
||
return this.item[e]
|
||
}
|
||
,
|
||
r.prototype.create = function(e, i, n) {
|
||
var a, r = this;
|
||
return (i = void 0 === i ? e : i) == -1 / 0 || i == 1 / 0 ? a = i : t.isPlainObject(i) && o.isInteger(i.pick) ? i = i.obj : t.isArray(i) ? (i = new Date(i[0],i[1],i[2]),
|
||
i = o.isDate(i) ? i : r.create().obj) : i = o.isInteger(i) || o.isDate(i) ? r.normalize(new Date(i), n) : r.now(e, i, n),
|
||
{
|
||
year: a || i.getFullYear(),
|
||
month: a || i.getMonth(),
|
||
date: a || i.getDate(),
|
||
day: a || i.getDay(),
|
||
obj: a || i,
|
||
pick: a || i.getTime()
|
||
}
|
||
}
|
||
,
|
||
r.prototype.createRange = function(e, i) {
|
||
var n = this
|
||
, a = function(e) {
|
||
return !0 === e || t.isArray(e) || o.isDate(e) ? n.create(e) : e
|
||
};
|
||
return o.isInteger(e) || (e = a(e)),
|
||
o.isInteger(i) || (i = a(i)),
|
||
o.isInteger(e) && t.isPlainObject(i) ? e = [i.year, i.month, i.date + e] : o.isInteger(i) && t.isPlainObject(e) && (i = [e.year, e.month, e.date + i]),
|
||
{
|
||
from: a(e),
|
||
to: a(i)
|
||
}
|
||
}
|
||
,
|
||
r.prototype.withinRange = function(e, t) {
|
||
return e = this.createRange(e.from, e.to),
|
||
t.pick >= e.from.pick && t.pick <= e.to.pick
|
||
}
|
||
,
|
||
r.prototype.overlapRanges = function(e, t) {
|
||
var i = this;
|
||
return e = i.createRange(e.from, e.to),
|
||
t = i.createRange(t.from, t.to),
|
||
i.withinRange(e, t.from) || i.withinRange(e, t.to) || i.withinRange(t, e.from) || i.withinRange(t, e.to)
|
||
}
|
||
,
|
||
r.prototype.now = function(e, t, i) {
|
||
return t = new Date,
|
||
i && i.rel && t.setDate(t.getDate() + i.rel),
|
||
this.normalize(t, i)
|
||
}
|
||
,
|
||
r.prototype.navigate = function(e, i, n) {
|
||
var a, o, r, s, l = t.isArray(i), c = t.isPlainObject(i), d = this.item.view;
|
||
if (l || c) {
|
||
for (c ? (o = i.year,
|
||
r = i.month,
|
||
s = i.date) : (o = +i[0],
|
||
r = +i[1],
|
||
s = +i[2]),
|
||
n && n.nav && d && d.month !== r && (o = d.year,
|
||
r = d.month),
|
||
o = (a = new Date(o,r + (n && n.nav ? n.nav : 0),1)).getFullYear(),
|
||
r = a.getMonth(); new Date(o,r,s).getMonth() !== r; )
|
||
s -= 1;
|
||
i = [o, r, s]
|
||
}
|
||
return i
|
||
}
|
||
,
|
||
r.prototype.normalize = function(e) {
|
||
return e.setHours(0, 0, 0, 0),
|
||
e
|
||
}
|
||
,
|
||
r.prototype.measure = function(e, t) {
|
||
var i = this;
|
||
return t ? "string" == typeof t ? t = i.parse(e, t) : o.isInteger(t) && (t = i.now(e, t, {
|
||
rel: t
|
||
})) : t = "min" == e ? -1 / 0 : 1 / 0,
|
||
t
|
||
}
|
||
,
|
||
r.prototype.viewset = function(e, t) {
|
||
return this.create([t.year, t.month, 1])
|
||
}
|
||
,
|
||
r.prototype.validate = function(e, i, n) {
|
||
var a, r, s, l, c = this, d = i, u = n && n.interval ? n.interval : 1, p = -1 === c.item.enable, m = c.item.min, h = c.item.max, f = p && c.item.disable.filter((function(e) {
|
||
if (t.isArray(e)) {
|
||
var n = c.create(e).pick;
|
||
n < i.pick ? a = !0 : n > i.pick && (r = !0)
|
||
}
|
||
return o.isInteger(e)
|
||
}
|
||
)).length;
|
||
if ((!n || !n.nav && !n.defaultValue) && (!p && c.disabled(i) || p && c.disabled(i) && (f || a || r) || !p && (i.pick <= m.pick || i.pick >= h.pick)))
|
||
for (p && !f && (!r && u > 0 || !a && u < 0) && (u *= -1); c.disabled(i) && (Math.abs(u) > 1 && (i.month < d.month || i.month > d.month) && (i = d,
|
||
u = u > 0 ? 1 : -1),
|
||
i.pick <= m.pick ? (s = !0,
|
||
u = 1,
|
||
i = c.create([m.year, m.month, m.date + (i.pick === m.pick ? 0 : -1)])) : i.pick >= h.pick && (l = !0,
|
||
u = -1,
|
||
i = c.create([h.year, h.month, h.date + (i.pick === h.pick ? 0 : 1)])),
|
||
!s || !l); )
|
||
i = c.create([i.year, i.month, i.date + u]);
|
||
return i
|
||
}
|
||
,
|
||
r.prototype.disabled = function(e) {
|
||
var i = this
|
||
, n = i.item.disable.filter((function(n) {
|
||
return o.isInteger(n) ? e.day === (i.settings.firstDay ? n : n - 1) % 7 : t.isArray(n) || o.isDate(n) ? e.pick === i.create(n).pick : t.isPlainObject(n) ? i.withinRange(n, e) : void 0
|
||
}
|
||
));
|
||
return n = n.length && !n.filter((function(e) {
|
||
return t.isArray(e) && "inverted" == e[3] || t.isPlainObject(e) && e.inverted
|
||
}
|
||
)).length,
|
||
-1 === i.item.enable ? !n : n || e.pick < i.item.min.pick || e.pick > i.item.max.pick
|
||
}
|
||
,
|
||
r.prototype.parse = function(e, t, i) {
|
||
var n = this
|
||
, a = {};
|
||
return t && "string" == typeof t ? (i && i.format || ((i = i || {}).format = n.settings.format),
|
||
n.formats.toArray(i.format).map((function(e) {
|
||
var i = n.formats[e]
|
||
, r = i ? o.trigger(i, n, [t, a]) : e.replace(/^!/, "").length;
|
||
i && (a[e] = t.substr(0, r)),
|
||
t = t.substr(r)
|
||
}
|
||
)),
|
||
[a.yyyy || a.yy, +(a.mm || a.m) - 1, a.dd || a.d]) : t
|
||
}
|
||
,
|
||
r.prototype.formats = function() {
|
||
function e(e, t, i) {
|
||
var n = e.match(/[^\x00-\x7F]+|\w+/)[0];
|
||
return i.mm || i.m || (i.m = t.indexOf(n) + 1),
|
||
n.length
|
||
}
|
||
function t(e) {
|
||
return e.match(/\w+/)[0].length
|
||
}
|
||
return {
|
||
d: function(e, t) {
|
||
return e ? o.digits(e) : t.date
|
||
},
|
||
dd: function(e, t) {
|
||
return e ? 2 : o.lead(t.date)
|
||
},
|
||
ddd: function(e, i) {
|
||
return e ? t(e) : this.settings.weekdaysShort[i.day]
|
||
},
|
||
dddd: function(e, i) {
|
||
return e ? t(e) : this.settings.weekdaysFull[i.day]
|
||
},
|
||
m: function(e, t) {
|
||
return e ? o.digits(e) : t.month + 1
|
||
},
|
||
mm: function(e, t) {
|
||
return e ? 2 : o.lead(t.month + 1)
|
||
},
|
||
mmm: function(t, i) {
|
||
var n = this.settings.monthsShort;
|
||
return t ? e(t, n, i) : n[i.month]
|
||
},
|
||
mmmm: function(t, i) {
|
||
var n = this.settings.monthsFull;
|
||
return t ? e(t, n, i) : n[i.month]
|
||
},
|
||
yy: function(e, t) {
|
||
return e ? 2 : ("" + t.year).slice(2)
|
||
},
|
||
yyyy: function(e, t) {
|
||
return e ? 4 : t.year
|
||
},
|
||
toArray: function(e) {
|
||
return e.split(/(d{1,4}|m{1,4}|y{4}|yy|!.)/g)
|
||
},
|
||
toString: function(e, t) {
|
||
var i = this;
|
||
return i.formats.toArray(e).map((function(e) {
|
||
return o.trigger(i.formats[e], i, [0, t]) || e.replace(/^!/, "")
|
||
}
|
||
)).join("")
|
||
}
|
||
}
|
||
}(),
|
||
r.prototype.isDateExact = function(e, i) {
|
||
var n = this;
|
||
return o.isInteger(e) && o.isInteger(i) || "boolean" == typeof e && "boolean" == typeof i ? e === i : (o.isDate(e) || t.isArray(e)) && (o.isDate(i) || t.isArray(i)) ? n.create(e).pick === n.create(i).pick : !(!t.isPlainObject(e) || !t.isPlainObject(i)) && n.isDateExact(e.from, i.from) && n.isDateExact(e.to, i.to)
|
||
}
|
||
,
|
||
r.prototype.isDateOverlap = function(e, i) {
|
||
var n = this
|
||
, a = n.settings.firstDay ? 1 : 0;
|
||
return o.isInteger(e) && (o.isDate(i) || t.isArray(i)) ? (e = e % 7 + a) === n.create(i).day + 1 : o.isInteger(i) && (o.isDate(e) || t.isArray(e)) ? (i = i % 7 + a) === n.create(e).day + 1 : !(!t.isPlainObject(e) || !t.isPlainObject(i)) && n.overlapRanges(e, i)
|
||
}
|
||
,
|
||
r.prototype.flipEnable = function(e) {
|
||
var t = this.item;
|
||
t.enable = e || (-1 == t.enable ? 1 : -1)
|
||
}
|
||
,
|
||
r.prototype.deactivate = function(e, i) {
|
||
var n = this
|
||
, a = n.item.disable.slice(0);
|
||
return "flip" == i ? n.flipEnable() : !1 === i ? (n.flipEnable(1),
|
||
a = []) : !0 === i ? (n.flipEnable(-1),
|
||
a = []) : i.map((function(e) {
|
||
for (var i, r = 0; r < a.length; r += 1)
|
||
if (n.isDateExact(e, a[r])) {
|
||
i = !0;
|
||
break
|
||
}
|
||
i || (o.isInteger(e) || o.isDate(e) || t.isArray(e) || t.isPlainObject(e) && e.from && e.to) && a.push(e)
|
||
}
|
||
)),
|
||
a
|
||
}
|
||
,
|
||
r.prototype.activate = function(e, i) {
|
||
var n = this
|
||
, a = n.item.disable
|
||
, r = a.length;
|
||
return "flip" == i ? n.flipEnable() : !0 === i ? (n.flipEnable(1),
|
||
a = []) : !1 === i ? (n.flipEnable(-1),
|
||
a = []) : i.map((function(e) {
|
||
var i, s, l, c;
|
||
for (l = 0; l < r; l += 1) {
|
||
if (s = a[l],
|
||
n.isDateExact(s, e)) {
|
||
i = a[l] = null,
|
||
c = !0;
|
||
break
|
||
}
|
||
if (n.isDateOverlap(s, e)) {
|
||
t.isPlainObject(e) ? (e.inverted = !0,
|
||
i = e) : t.isArray(e) ? (i = e)[3] || i.push("inverted") : o.isDate(e) && (i = [e.getFullYear(), e.getMonth(), e.getDate(), "inverted"]);
|
||
break
|
||
}
|
||
}
|
||
if (i)
|
||
for (l = 0; l < r; l += 1)
|
||
if (n.isDateExact(a[l], e)) {
|
||
a[l] = null;
|
||
break
|
||
}
|
||
if (c)
|
||
for (l = 0; l < r; l += 1)
|
||
if (n.isDateOverlap(a[l], e)) {
|
||
a[l] = null;
|
||
break
|
||
}
|
||
i && a.push(i)
|
||
}
|
||
)),
|
||
a.filter((function(e) {
|
||
return null != e
|
||
}
|
||
))
|
||
}
|
||
,
|
||
r.prototype.nodes = function(e) {
|
||
var t, i, r = this, s = r.settings, l = r.item, c = l.now, d = l.select, u = l.highlight, p = l.view, m = l.disable, h = l.min, f = l.max, g = (t = (s.showWeekdaysFull ? s.weekdaysFull : s.weekdaysShort).slice(0),
|
||
i = s.weekdaysFull.slice(0),
|
||
s.firstDay && (t.push(t.shift()),
|
||
i.push(i.shift())),
|
||
o.node("thead", o.node("tr", o.group({
|
||
min: 0,
|
||
max: n - 1,
|
||
i: 1,
|
||
node: "th",
|
||
item: function(e) {
|
||
return [t[e], s.klass.weekdays, 'scope=col title="' + i[e] + '"']
|
||
}
|
||
})))), v = function(e) {
|
||
return o.node("div", " ", s.klass["nav" + (e ? "Next" : "Prev")] + (e && p.year >= f.year && p.month >= f.month || !e && p.year <= h.year && p.month <= h.month ? " " + s.klass.navDisabled : ""), "data-nav=" + (e || -1) + " " + o.ariaAttr({
|
||
role: "button",
|
||
controls: r.$node[0].id + "_table"
|
||
}) + ' title="' + (e ? s.labelMonthNext : s.labelMonthPrev) + '"')
|
||
}, b = function() {
|
||
var t = s.showMonthsShort ? s.monthsShort : s.monthsFull;
|
||
return s.selectMonths ? o.node("select", o.group({
|
||
min: 0,
|
||
max: 11,
|
||
i: 1,
|
||
node: "option",
|
||
item: function(e) {
|
||
return [t[e], 0, "value=" + e + (p.month == e ? " selected" : "") + (p.year == h.year && e < h.month || p.year == f.year && e > f.month ? " disabled" : "")]
|
||
}
|
||
}), s.klass.selectMonth, (e ? "" : "disabled") + " " + o.ariaAttr({
|
||
controls: r.$node[0].id + "_table"
|
||
}) + ' title="' + s.labelMonthSelect + '"') : o.node("div", t[p.month], s.klass.month)
|
||
}, y = function() {
|
||
var t = p.year
|
||
, i = !0 === s.selectYears ? 5 : ~~(s.selectYears / 2);
|
||
if (i) {
|
||
var n = h.year
|
||
, a = f.year
|
||
, l = t - i
|
||
, c = t + i;
|
||
if (n > l && (c += n - l,
|
||
l = n),
|
||
a < c) {
|
||
var d = l - n
|
||
, u = c - a;
|
||
l -= d > u ? u : d,
|
||
c = a
|
||
}
|
||
return o.node("select", o.group({
|
||
min: l,
|
||
max: c,
|
||
i: 1,
|
||
node: "option",
|
||
item: function(e) {
|
||
return [e, 0, "value=" + e + (t == e ? " selected" : "")]
|
||
}
|
||
}), s.klass.selectYear, (e ? "" : "disabled") + " " + o.ariaAttr({
|
||
controls: r.$node[0].id + "_table"
|
||
}) + ' title="' + s.labelYearSelect + '"')
|
||
}
|
||
return o.node("div", t, s.klass.year)
|
||
};
|
||
return o.node("div", (s.selectYears ? y() + b() : b() + y()) + v() + v(1), s.klass.header) + o.node("table", g + o.node("tbody", o.group({
|
||
min: 0,
|
||
max: a - 1,
|
||
i: 1,
|
||
node: "tr",
|
||
item: function(e) {
|
||
var t = s.firstDay && 0 === r.create([p.year, p.month, 1]).day ? -7 : 0;
|
||
return [o.group({
|
||
min: n * e - p.day + t + 1,
|
||
max: function() {
|
||
return this.min + n - 1
|
||
},
|
||
i: 1,
|
||
node: "td",
|
||
item: function(e) {
|
||
e = r.create([p.year, p.month, e + (s.firstDay ? 1 : 0)]);
|
||
var t, i = d && d.pick == e.pick, n = u && u.pick == e.pick, a = m && r.disabled(e) || e.pick < h.pick || e.pick > f.pick, l = o.trigger(r.formats.toString, r, [s.format, e]);
|
||
return [o.node("div", e.date, (t = [s.klass.day],
|
||
t.push(p.month == e.month ? s.klass.infocus : s.klass.outfocus),
|
||
c.pick == e.pick && t.push(s.klass.now),
|
||
i && t.push(s.klass.selected),
|
||
n && t.push(s.klass.highlighted),
|
||
a && t.push(s.klass.disabled),
|
||
t.join(" ")), "data-pick=" + e.pick + " " + o.ariaAttr({
|
||
role: "gridcell",
|
||
label: l,
|
||
selected: !(!i || r.$node.val() !== l) || null,
|
||
activedescendant: !!n || null,
|
||
disabled: !!a || null
|
||
})), "", o.ariaAttr({
|
||
role: "presentation"
|
||
})]
|
||
}
|
||
})]
|
||
}
|
||
})), s.klass.table, 'id="' + r.$node[0].id + '_table" ' + o.ariaAttr({
|
||
role: "grid",
|
||
controls: r.$node[0].id,
|
||
readonly: !0
|
||
})) + o.node("div", o.node("button", s.today, s.klass.buttonToday, "type=button data-pick=" + c.pick + (e && !r.disabled(c) ? "" : " disabled") + " " + o.ariaAttr({
|
||
controls: r.$node[0].id
|
||
})) + o.node("button", s.clear, s.klass.buttonClear, "type=button data-clear=1" + (e ? "" : " disabled") + " " + o.ariaAttr({
|
||
controls: r.$node[0].id
|
||
})) + o.node("button", s.close, s.klass.buttonClose, "type=button data-close=true " + (e ? "" : " disabled") + " " + o.ariaAttr({
|
||
controls: r.$node[0].id
|
||
})), s.klass.footer)
|
||
}
|
||
,
|
||
r.defaults = {
|
||
labelMonthNext: "Next month",
|
||
labelMonthPrev: "Previous month",
|
||
labelMonthSelect: "Select a month",
|
||
labelYearSelect: "Select a year",
|
||
monthsFull: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
|
||
monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
|
||
weekdaysFull: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
|
||
weekdaysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
|
||
today: "Today",
|
||
clear: "Clear",
|
||
close: "Close",
|
||
closeOnSelect: !0,
|
||
closeOnClear: !0,
|
||
format: "d mmmm, yyyy",
|
||
klass: {
|
||
table: (i = e.klasses().picker + "__") + "table",
|
||
header: i + "header",
|
||
navPrev: i + "nav--prev",
|
||
navNext: i + "nav--next",
|
||
navDisabled: i + "nav--disabled",
|
||
month: i + "month",
|
||
year: i + "year",
|
||
selectMonth: i + "select--month",
|
||
selectYear: i + "select--year",
|
||
weekdays: i + "weekday",
|
||
day: i + "day",
|
||
disabled: i + "day--disabled",
|
||
selected: i + "day--selected",
|
||
highlighted: i + "day--highlighted",
|
||
now: i + "day--today",
|
||
infocus: i + "day--infocus",
|
||
outfocus: i + "day--outfocus",
|
||
footer: i + "footer",
|
||
buttonClear: i + "button--clear",
|
||
buttonToday: i + "button--today",
|
||
buttonClose: i + "button--close"
|
||
}
|
||
},
|
||
e.extend("pickadate", r)
|
||
}
|
||
) ? n.apply(t, a) : n) || (e.exports = o)
|
||
},
|
||
17653: function(e, t, i) {
|
||
var n, a, o;
|
||
a = [i(19755)],
|
||
n = function(e) {
|
||
var t = e(window)
|
||
, i = e(document)
|
||
, n = e(document.documentElement)
|
||
, a = null != document.documentElement.style.transition;
|
||
function o(t, c, d, p) {
|
||
if (!t)
|
||
return o;
|
||
var m = !1
|
||
, h = {
|
||
id: t.id || "P" + Math.abs(~~(Math.random() * new Date))
|
||
}
|
||
, f = d ? e.extend(!0, {}, d.defaults, p) : p || {}
|
||
, g = e.extend({}, o.klasses(), f.klass)
|
||
, v = e(t)
|
||
, b = function() {
|
||
return this.start()
|
||
}
|
||
, y = b.prototype = {
|
||
constructor: b,
|
||
$node: v,
|
||
start: function() {
|
||
return h && h.start ? y : (h.methods = {},
|
||
h.start = !0,
|
||
h.open = !1,
|
||
h.type = t.type,
|
||
t.autofocus = t == u(),
|
||
t.readOnly = !f.editable,
|
||
t.id = t.id || h.id,
|
||
"text" != t.type && (t.type = "text"),
|
||
y.component = new d(y,f),
|
||
y.$root = e('<div class="' + g.picker + '" id="' + t.id + '_root" />'),
|
||
_(),
|
||
y.$holder = e(w()).appendTo(y.$root),
|
||
C(),
|
||
f.formatSubmit && k(),
|
||
S(),
|
||
f.containerHidden ? e(f.containerHidden).append(y._hidden) : v.after(y._hidden),
|
||
f.container ? e(f.container).append(y.$root) : v.after(y.$root),
|
||
y.on({
|
||
start: y.component.onStart,
|
||
render: y.component.onRender,
|
||
stop: y.component.onStop,
|
||
open: y.component.onOpen,
|
||
close: y.component.onClose,
|
||
set: y.component.onSet
|
||
}).on({
|
||
start: f.onStart,
|
||
render: f.onRender,
|
||
stop: f.onStop,
|
||
open: f.onOpen,
|
||
close: f.onClose,
|
||
set: f.onSet
|
||
}),
|
||
m = r(y.$holder[0]),
|
||
t.autofocus && y.open(),
|
||
y.trigger("start").trigger("render"))
|
||
},
|
||
render: function(t) {
|
||
return t ? (y.$holder = e(w()),
|
||
C(),
|
||
y.$root.html(y.$holder)) : y.$root.find("." + g.box).html(y.component.nodes(h.open)),
|
||
y.trigger("render")
|
||
},
|
||
stop: function() {
|
||
return h.start ? (y.close(),
|
||
y._hidden && y._hidden.parentNode.removeChild(y._hidden),
|
||
y.$root.remove(),
|
||
v.removeClass(g.input).removeData(c),
|
||
setTimeout((function() {
|
||
v.off("." + h.id)
|
||
}
|
||
), 0),
|
||
t.type = h.type,
|
||
t.readOnly = !1,
|
||
y.trigger("stop"),
|
||
h.methods = {},
|
||
h.start = !1,
|
||
y) : y
|
||
},
|
||
open: function(a) {
|
||
return h.open ? y : (v.addClass(g.active),
|
||
l(t, "expanded", !0),
|
||
setTimeout((function() {
|
||
y.$root.addClass(g.opened),
|
||
l(y.$root[0], "hidden", !1)
|
||
}
|
||
), 0),
|
||
!1 !== a && (h.open = !0,
|
||
m && n.css("overflow", "hidden").css("padding-right", "+=" + s()),
|
||
T(),
|
||
i.on("click." + h.id + " focusin." + h.id, (function(e) {
|
||
var i = e.target;
|
||
i != t && i != document && 3 != e.which && y.close(i === y.$holder[0])
|
||
}
|
||
)).on("keydown." + h.id, (function(t) {
|
||
var i = t.keyCode
|
||
, n = y.component.key[i]
|
||
, a = t.target;
|
||
27 == i ? y.close(!0) : a != y.$holder[0] || !n && 13 != i ? e.contains(y.$root[0], a) && 13 == i && (t.preventDefault(),
|
||
a.click()) : (t.preventDefault(),
|
||
n ? o._.trigger(y.component.key.go, y, [o._.trigger(n)]) : y.$root.find("." + g.highlighted).hasClass(g.disabled) || (y.set("select", y.component.item.highlight),
|
||
f.closeOnSelect && y.close(!0)))
|
||
}
|
||
))),
|
||
y.trigger("open"))
|
||
},
|
||
close: function(a) {
|
||
return a && (f.editable ? t.focus() : (y.$holder.off("focus.toOpen").focus(),
|
||
setTimeout((function() {
|
||
y.$holder.on("focus.toOpen", x)
|
||
}
|
||
), 0)),
|
||
("Microsoft Internet Explorer" == navigator.appName || navigator.userAgent.match(/Trident/) || navigator.userAgent.match(/rv:11/) || void 0 !== e.browser && 1 == e.browser.msie) && (y.$holder.blur(),
|
||
e(t).off("focus"),
|
||
e(t).focus(),
|
||
e(t).select(),
|
||
setTimeout((function() {
|
||
v.on("focus." + h.id, (function(e) {
|
||
e.preventDefault(),
|
||
y.open()
|
||
}
|
||
))
|
||
}
|
||
), 0))),
|
||
v.removeClass(g.active),
|
||
l(t, "expanded", !1),
|
||
setTimeout((function() {
|
||
y.$root.removeClass(g.opened + " " + g.focused),
|
||
l(y.$root[0], "hidden", !0)
|
||
}
|
||
), 0),
|
||
h.open ? (h.open = !1,
|
||
m && n.css("overflow", "").css("padding-right", "-=" + s()),
|
||
i.off("." + h.id),
|
||
y.trigger("close")) : y
|
||
},
|
||
clear: function(e) {
|
||
return y.set("clear", null, e)
|
||
},
|
||
set: function(t, i, n) {
|
||
var a, o, r = e.isPlainObject(t), s = r ? t : {};
|
||
if (n = r && e.isPlainObject(i) ? i : n || {},
|
||
t) {
|
||
for (a in r || (s[t] = i),
|
||
s)
|
||
o = s[a],
|
||
a in y.component.item && (void 0 === o && (o = null),
|
||
y.component.set(a, o, n)),
|
||
"select" != a && "clear" != a || v.val("clear" == a ? "" : y.get(a, f.format)).trigger("change");
|
||
y.render()
|
||
}
|
||
return n.muted ? y : y.trigger("set", s)
|
||
},
|
||
get: function(e, i) {
|
||
if (null != h[e = e || "value"])
|
||
return h[e];
|
||
if ("valueSubmit" == e) {
|
||
if (y._hidden)
|
||
return y._hidden.value;
|
||
e = "value"
|
||
}
|
||
if ("value" == e)
|
||
return t.value;
|
||
if (e in y.component.item) {
|
||
if ("string" == typeof i) {
|
||
var n = y.component.get(e);
|
||
return n ? o._.trigger(y.component.formats.toString, y.component, [i, n]) : ""
|
||
}
|
||
return y.component.get(e)
|
||
}
|
||
},
|
||
on: function(t, i, n) {
|
||
var a, o, r = e.isPlainObject(t), s = r ? t : {};
|
||
if (t)
|
||
for (a in r || (s[t] = i),
|
||
s)
|
||
o = s[a],
|
||
n && (a = "_" + a),
|
||
h.methods[a] = h.methods[a] || [],
|
||
h.methods[a].push(o);
|
||
return y
|
||
},
|
||
off: function() {
|
||
var e, t, i = arguments;
|
||
for (e = 0,
|
||
namesCount = i.length; e < namesCount; e += 1)
|
||
(t = i[e])in h.methods && delete h.methods[t];
|
||
return y
|
||
},
|
||
trigger: function(e, t) {
|
||
var i = function(e) {
|
||
var i = h.methods[e];
|
||
i && i.map((function(e) {
|
||
o._.trigger(e, y, [t])
|
||
}
|
||
))
|
||
};
|
||
return i("_" + e),
|
||
i(e),
|
||
y
|
||
}
|
||
};
|
||
function w() {
|
||
return o._.node("div", o._.node("div", o._.node("div", o._.node("div", y.component.nodes(h.open), g.box), g.wrap), g.frame), g.holder, 'tabindex="-1"')
|
||
}
|
||
function S() {
|
||
v.data(c, y).addClass(g.input).val(v.data("value") ? y.get("select", f.format) : t.value),
|
||
f.editable || v.on("focus." + h.id + " click." + h.id, (function(e) {
|
||
e.preventDefault(),
|
||
y.open()
|
||
}
|
||
)).on("keydown." + h.id, A),
|
||
l(t, {
|
||
haspopup: !0,
|
||
expanded: !1,
|
||
readonly: !1,
|
||
owns: t.id + "_root"
|
||
})
|
||
}
|
||
function _() {
|
||
l(y.$root[0], "hidden", !0)
|
||
}
|
||
function C() {
|
||
y.$holder.on({
|
||
keydown: A,
|
||
"focus.toOpen": x,
|
||
blur: function() {
|
||
v.removeClass(g.target)
|
||
},
|
||
focusin: function(e) {
|
||
y.$root.removeClass(g.focused),
|
||
e.stopPropagation()
|
||
},
|
||
"mousedown click": function(t) {
|
||
var i = t.target;
|
||
i != y.$holder[0] && (t.stopPropagation(),
|
||
"mousedown" != t.type || e(i).is("input, select, textarea, button, option") || (t.preventDefault(),
|
||
y.$holder[0].focus()))
|
||
}
|
||
}).on("click", "[data-pick], [data-nav], [data-clear], [data-close]", (function() {
|
||
var t = e(this)
|
||
, i = t.data()
|
||
, n = t.hasClass(g.navDisabled) || t.hasClass(g.disabled)
|
||
, a = u();
|
||
a = a && (a.type || a.href),
|
||
(n || a && !e.contains(y.$root[0], a)) && y.$holder[0].focus(),
|
||
!n && i.nav ? y.set("highlight", y.component.item.highlight, {
|
||
nav: i.nav
|
||
}) : !n && "pick"in i ? (y.set("select", i.pick),
|
||
f.closeOnSelect && y.close(!0)) : i.clear ? (y.clear(),
|
||
f.closeOnClear && y.close(!0)) : i.close && y.close(!0)
|
||
}
|
||
))
|
||
}
|
||
function k() {
|
||
var i;
|
||
!0 === f.hiddenName ? (i = t.name,
|
||
t.name = "") : i = (i = ["string" == typeof f.hiddenPrefix ? f.hiddenPrefix : "", "string" == typeof f.hiddenSuffix ? f.hiddenSuffix : "_submit"])[0] + t.name + i[1],
|
||
y._hidden = e('<input type=hidden name="' + i + '"' + (v.data("value") || t.value ? ' value="' + y.get("select", f.formatSubmit) + '"' : "") + ">")[0],
|
||
v.on("change." + h.id, (function() {
|
||
y._hidden.value = t.value ? y.get("select", f.formatSubmit) : ""
|
||
}
|
||
))
|
||
}
|
||
function T() {
|
||
m && a ? y.$holder.find("." + g.frame).one("transitionend", (function() {
|
||
y.$holder[0].focus()
|
||
}
|
||
)) : a ? y.$holder.one("transitionend", (function() {
|
||
y.$holder[0].focus()
|
||
}
|
||
)) : y.$holder[0].focus()
|
||
}
|
||
function x(e) {
|
||
e.stopPropagation(),
|
||
v.addClass(g.target),
|
||
y.$root.addClass(g.focused),
|
||
y.open()
|
||
}
|
||
function A(e) {
|
||
var t = e.keyCode
|
||
, i = /^(8|46)$/.test(t);
|
||
if (27 == t)
|
||
return y.close(!0),
|
||
!1;
|
||
(32 == t || i || !h.open && y.component.key[t]) && (e.preventDefault(),
|
||
e.stopPropagation(),
|
||
i ? y.clear().close() : y.open())
|
||
}
|
||
return new b
|
||
}
|
||
function r(e) {
|
||
var t, i = "position";
|
||
return e.currentStyle ? t = e.currentStyle[i] : window.getComputedStyle && (t = getComputedStyle(e)[i]),
|
||
"fixed" == t
|
||
}
|
||
function s() {
|
||
if (n.height() <= t.height())
|
||
return 0;
|
||
var i = e('<div style="visibility:hidden;width:100px" />').appendTo("body")
|
||
, a = i[0].offsetWidth;
|
||
i.css("overflow", "scroll");
|
||
var o = e('<div style="width:100%" />').appendTo(i)[0].offsetWidth;
|
||
return i.remove(),
|
||
a - o
|
||
}
|
||
function l(t, i, n) {
|
||
if (e.isPlainObject(i))
|
||
for (var a in i)
|
||
c(t, a, i[a]);
|
||
else
|
||
c(t, i, n)
|
||
}
|
||
function c(e, t, i) {
|
||
e.setAttribute(("role" == t ? "" : "aria-") + t, i)
|
||
}
|
||
function d(t, i) {
|
||
for (var n in e.isPlainObject(t) || (t = {
|
||
attribute: i
|
||
}),
|
||
i = "",
|
||
t) {
|
||
var a = ("role" == n ? "" : "aria-") + n;
|
||
i += null == t[n] ? "" : a + '="' + t[n] + '"'
|
||
}
|
||
return i
|
||
}
|
||
function u() {
|
||
try {
|
||
return document.activeElement
|
||
} catch (e) {}
|
||
}
|
||
return o.klasses = function(e) {
|
||
return {
|
||
picker: e = e || "picker",
|
||
opened: e + "--opened",
|
||
focused: e + "--focused",
|
||
input: e + "__input",
|
||
active: e + "__input--active",
|
||
target: e + "__input--target",
|
||
holder: e + "__holder",
|
||
frame: e + "__frame",
|
||
wrap: e + "__wrap",
|
||
box: e + "__box"
|
||
}
|
||
}
|
||
,
|
||
o._ = {
|
||
group: function(e) {
|
||
for (var t, i = "", n = o._.trigger(e.min, e); n <= o._.trigger(e.max, e, [n]); n += e.i)
|
||
t = o._.trigger(e.item, e, [n]),
|
||
i += o._.node(e.node, t[0], t[1], t[2]);
|
||
return i
|
||
},
|
||
node: function(t, i, n, a) {
|
||
return i ? "<" + t + (n = n ? ' class="' + n + '"' : "") + (a = a ? " " + a : "") + ">" + (i = e.isArray(i) ? i.join("") : i) + "</" + t + ">" : ""
|
||
},
|
||
lead: function(e) {
|
||
return (e < 10 ? "0" : "") + e
|
||
},
|
||
trigger: function(e, t, i) {
|
||
return "function" == typeof e ? e.apply(t, i || []) : e
|
||
},
|
||
digits: function(e) {
|
||
return /\d/.test(e[1]) ? 2 : 1
|
||
},
|
||
isDate: function(e) {
|
||
return {}.toString.call(e).indexOf("Date") > -1 && this.isInteger(e.getDate())
|
||
},
|
||
isInteger: function(e) {
|
||
return {}.toString.call(e).indexOf("Number") > -1 && e % 1 == 0
|
||
},
|
||
ariaAttr: d
|
||
},
|
||
o.extend = function(t, i) {
|
||
e.fn[t] = function(n, a) {
|
||
var r = this.data(t);
|
||
return "picker" == n ? r : r && "string" == typeof n ? o._.trigger(r[n], r, [a]) : this.each((function() {
|
||
e(this).data(t) || new o(this,t,i,n)
|
||
}
|
||
))
|
||
}
|
||
,
|
||
e.fn[t].defaults = i.defaults
|
||
}
|
||
,
|
||
o
|
||
}
|
||
,
|
||
void 0 === (o = "function" == typeof n ? n.apply(t, a) : n) || (e.exports = o)
|
||
},
|
||
42004: function() {
|
||
window.PICKADATE_TRANSLATIONS = {
|
||
de: {
|
||
monthsFull: ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"],
|
||
monthsShort: ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"],
|
||
weekdaysFull: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"],
|
||
weekdaysShort: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"],
|
||
today: "Heute",
|
||
clear: "Löschen",
|
||
close: "Schließen",
|
||
firstDay: 1,
|
||
format: "dddd, dd. mmmm yyyy",
|
||
formatSubmit: "yyyy/mm/dd"
|
||
},
|
||
da: {
|
||
monthsFull: ["januar", "februar", "marts", "april", "maj", "juni", "juli", "august", "september", "oktober", "november", "december"],
|
||
monthsShort: ["jan", "feb", "mar", "apr", "maj", "jun", "jul", "aug", "sep", "okt", "nov", "dec"],
|
||
weekdaysFull: ["søndag", "mandag", "tirsdag", "onsdag", "torsdag", "fredag", "lørdag"],
|
||
weekdaysShort: ["søn", "man", "tir", "ons", "tor", "fre", "lør"],
|
||
today: "i dag",
|
||
clear: "slet",
|
||
close: "luk",
|
||
firstDay: 1,
|
||
format: "d. mmmm yyyy",
|
||
formatSubmit: "yyyy/mm/dd"
|
||
},
|
||
en: {
|
||
firstDay: 1
|
||
},
|
||
fi: {
|
||
monthsFull: ["tammikuu", "helmikuu", "maaliskuu", "huhtikuu", "toukokuu", "kesäkuu", "heinäkuu", "elokuu", "syyskuu", "lokakuu", "marraskuu", "joulukuu"],
|
||
monthsShort: ["tammi", "helmi", "maalis", "huhti", "touko", "kesä", "heinä", "elo", "syys", "loka", "marras", "joulu"],
|
||
weekdaysFull: ["sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai"],
|
||
weekdaysShort: ["su", "ma", "ti", "ke", "to", "pe", "la"],
|
||
today: "tänään",
|
||
clear: "tyhjennä",
|
||
firstDay: 1,
|
||
format: "d.m.yyyy",
|
||
formatSubmit: "yyyy/mm/dd"
|
||
},
|
||
no: {
|
||
monthsFull: ["januar", "februar", "mars", "april", "mai", "juni", "juli", "august", "september", "oktober", "november", "desember"],
|
||
monthsShort: ["jan", "feb", "mar", "apr", "mai", "jun", "jul", "aug", "sep", "okt", "nov", "des"],
|
||
weekdaysFull: ["søndag", "mandag", "tirsdag", "onsdag", "torsdag", "fredag", "lørdag"],
|
||
weekdaysShort: ["søn", "man", "tir", "ons", "tor", "fre", "lør"],
|
||
today: "i dag",
|
||
clear: "nullstill",
|
||
close: "lukk",
|
||
firstDay: 1,
|
||
format: "dd. mmm. yyyy",
|
||
formatSubmit: "yyyy/mm/dd"
|
||
},
|
||
pl: {
|
||
monthsFull: ["styczeń", "luty", "marzec", "kwiecień", "maj", "czerwiec", "lipiec", "sierpień", "wrzesień", "październik", "listopad", "grudzień"],
|
||
monthsShort: ["sty", "lut", "mar", "kwi", "maj", "cze", "lip", "sie", "wrz", "paź", "lis", "gru"],
|
||
weekdaysFull: ["niedziela", "poniedziałek", "wtorek", "środa", "czwartek", "piątek", "sobota"],
|
||
weekdaysShort: ["niedz.", "pn.", "wt.", "śr.", "cz.", "pt.", "sob."],
|
||
today: "Dzisiaj",
|
||
clear: "Usuń",
|
||
close: "Zamknij",
|
||
firstDay: 1,
|
||
format: "d mmmm yyyy",
|
||
formatSubmit: "yyyy/mm/dd"
|
||
},
|
||
ru: {
|
||
monthsFull: ["января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "декабря"],
|
||
monthsShort: ["янв", "фев", "мар", "апр", "май", "июн", "июл", "авг", "сен", "окт", "ноя", "дек"],
|
||
weekdaysFull: ["воскресенье", "понедельник", "вторник", "среда", "четверг", "пятница", "суббота"],
|
||
weekdaysShort: ["вс", "пн", "вт", "ср", "чт", "пт", "сб"],
|
||
today: "сегодня",
|
||
clear: "удалить",
|
||
close: "закрыть",
|
||
firstDay: 1,
|
||
format: "d mmmm yyyy г.",
|
||
formatSubmit: "yyyy/mm/dd"
|
||
},
|
||
sv: {
|
||
monthsFull: ["januari", "februari", "mars", "april", "maj", "juni", "juli", "augusti", "september", "oktober", "november", "december"],
|
||
monthsShort: ["jan", "feb", "mar", "apr", "maj", "jun", "jul", "aug", "sep", "okt", "nov", "dec"],
|
||
weekdaysFull: ["söndag", "måndag", "tisdag", "onsdag", "torsdag", "fredag", "lördag"],
|
||
weekdaysShort: ["sön", "mån", "tis", "ons", "tor", "fre", "lör"],
|
||
today: "Idag",
|
||
clear: "Rensa",
|
||
close: "Stäng",
|
||
firstDay: 1,
|
||
format: "yyyy-mm-dd",
|
||
formatSubmit: "yyyy/mm/dd",
|
||
labelMonthNext: "Nästa månad",
|
||
labelMonthPrev: "Föregående månad",
|
||
labelMonthSelect: "Välj månad",
|
||
labelYearSelect: "Välj år"
|
||
}
|
||
}
|
||
}
|
||
}, __webpack_module_cache__ = {}, deferred;
|
||
function __webpack_require__(e) {
|
||
var t = __webpack_module_cache__[e];
|
||
if (void 0 !== t)
|
||
return t.exports;
|
||
var i = __webpack_module_cache__[e] = {
|
||
id: e,
|
||
loaded: !1,
|
||
exports: {}
|
||
};
|
||
return __webpack_modules__[e].call(i.exports, i, i.exports, __webpack_require__),
|
||
i.loaded = !0,
|
||
i.exports
|
||
}
|
||
__webpack_require__.m = __webpack_modules__,
|
||
__webpack_require__.amdO = {},
|
||
deferred = [],
|
||
__webpack_require__.O = function(e, t, i, n) {
|
||
if (!t) {
|
||
var a = 1 / 0;
|
||
for (l = 0; l < deferred.length; l++) {
|
||
t = deferred[l][0],
|
||
i = deferred[l][1],
|
||
n = deferred[l][2];
|
||
for (var o = !0, r = 0; r < t.length; r++)
|
||
(!1 & n || a >= n) && Object.keys(__webpack_require__.O).every((function(e) {
|
||
return __webpack_require__.O[e](t[r])
|
||
}
|
||
)) ? t.splice(r--, 1) : (o = !1,
|
||
n < a && (a = n));
|
||
if (o) {
|
||
deferred.splice(l--, 1);
|
||
var s = i();
|
||
void 0 !== s && (e = s)
|
||
}
|
||
}
|
||
return e
|
||
}
|
||
n = n || 0;
|
||
for (var l = deferred.length; l > 0 && deferred[l - 1][2] > n; l--)
|
||
deferred[l] = deferred[l - 1];
|
||
deferred[l] = [t, i, n]
|
||
}
|
||
,
|
||
__webpack_require__.n = function(e) {
|
||
var t = e && e.__esModule ? function() {
|
||
return e.default
|
||
}
|
||
: function() {
|
||
return e
|
||
}
|
||
;
|
||
return __webpack_require__.d(t, {
|
||
a: t
|
||
}),
|
||
t
|
||
}
|
||
,
|
||
__webpack_require__.d = function(e, t) {
|
||
for (var i in t)
|
||
__webpack_require__.o(t, i) && !__webpack_require__.o(e, i) && Object.defineProperty(e, i, {
|
||
enumerable: !0,
|
||
get: t[i]
|
||
})
|
||
}
|
||
,
|
||
__webpack_require__.g = function() {
|
||
if ("object" == typeof globalThis)
|
||
return globalThis;
|
||
try {
|
||
return this || new Function("return this")()
|
||
} catch (e) {
|
||
if ("object" == typeof window)
|
||
return window
|
||
}
|
||
}(),
|
||
__webpack_require__.o = function(e, t) {
|
||
return Object.prototype.hasOwnProperty.call(e, t)
|
||
}
|
||
,
|
||
__webpack_require__.r = function(e) {
|
||
"undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
|
||
value: "Module"
|
||
}),
|
||
Object.defineProperty(e, "__esModule", {
|
||
value: !0
|
||
})
|
||
}
|
||
,
|
||
__webpack_require__.nmd = function(e) {
|
||
return e.paths = [],
|
||
e.children || (e.children = []),
|
||
e
|
||
}
|
||
,
|
||
function() {
|
||
var e = {
|
||
47: 0
|
||
};
|
||
__webpack_require__.O.j = function(t) {
|
||
return 0 === e[t]
|
||
}
|
||
;
|
||
var t = function(t, i) {
|
||
var n, a, o = i[0], r = i[1], s = i[2], l = 0;
|
||
if (o.some((function(t) {
|
||
return 0 !== e[t]
|
||
}
|
||
))) {
|
||
for (n in r)
|
||
__webpack_require__.o(r, n) && (__webpack_require__.m[n] = r[n]);
|
||
if (s)
|
||
var c = s(__webpack_require__)
|
||
}
|
||
for (t && t(i); l < o.length; l++)
|
||
a = o[l],
|
||
__webpack_require__.o(e, a) && e[a] && e[a][0](),
|
||
e[o[l]] = 0;
|
||
return __webpack_require__.O(c)
|
||
}
|
||
, i = self.webpackChunkxena_static = self.webpackChunkxena_static || [];
|
||
i.forEach(t.bind(null, 0)),
|
||
i.push = t.bind(null, i.push.bind(i))
|
||
}();
|
||
var __webpack_exports__ = __webpack_require__.O(void 0, [498], (function() {
|
||
return __webpack_require__(27927)
|
||
}
|
||
));
|
||
__webpack_exports__ = __webpack_require__.O(__webpack_exports__)
|
||
}
|
||
)();
|