' + e.name + " " : e.infoWindowDetail ? (i = this.getHotelInfo(e.element),
a.trackEvent = !0) : i = '
' + e.name + " ",
e.distance && (i += '' + e.distance + ""),
i += "
",
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
\n\t\t\t\t').concat(n, "\n\t\t\t")
, 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 = '
'.concat(f(e).find(".recommendedBy")[0].value ? f(e).find(".recommendedBy")[0].value : "", '
.concat(f(e).find()
img").attr("src"), '" />
'));
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 ? '
').concat(o, "
") : "";
return '\n\t\t\t
\n\t\t\t\t
'.concat(c, '
\n\t\t\t\t\n\t\t\t\t").concat(l, "\n\t\t\t\t").concat(p, '\n\t\t\t\t
').concat(a, "
\n\t\t\t
\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("
");
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("
"),
window.setTimeout((function() {
e.html(t)
}
), 0),
V("a", e).one("click", (function(t) {
e.prepend('
')
}
))
}
,
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 = "
",
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('
'),
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 = "
";
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 = "
";
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 = "
";
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 += "
" + t.Category.Text + ""
}
)),
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 += "
" + a + " /" : n += "
" + a + ""
}
)),
a = t.To_Date ? It("#deadLineLabel")[0].textContent + " " + t.To_Date : It("#applicationOpenLabel")[0].textContent,
s += '
",
l++
}
)),
S(e)
} else {
var c = "";
c = "Please try adjusting your search." !== It("#JobListingSubscribeURL")[0].textContent ? '
" : '
' + It("#JobListingSubscribeURL")[0].textContent + "
",
s = '
' + It("#NoResultsFound")[0].textContent + "" + c + "
"
}
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('
' + a + "
") : Lt("h1.page-title").text(a),
-1 != a.indexOf("ß") && Lt("h1.page-title").html(Lt("h1.page-title").text().replace(/ß/g, '
ß')),
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("
" + t + "" + n + "
" + i + ""),
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("
" + e + " " + i + "") : 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("
"),
Lt("head > meta[name='description']").attr("content", t),
t && (Lt("head > meta[name='description']").length || Lt("head").append("
"),
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("
"),
$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('
')))
}
))
}
))
}
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, '
').concat(e.currency, "");
return e.numberOfBonusCheques > 0 ? "".concat(e.numberOfBonusCheques, '
BC + ').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 ? '
' + n + "" : '
' + i + "")
}
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('
'))
},
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('
...')).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('
'),
t = Mi('
'),
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("
")
}
))) : "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('
' + e.validationForm.errorTitle + ""),
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
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\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
\n\t\t\t\t\t\t'.concat(Yi("#cc-delete-failure-msg").val(), "\n\t\t\t\t\t
\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 ? '
' + this.emptyText.replace("{0}", '"' + e + '"') + "
" : '
Sorry, we cannot find "' + e + '"
'
}
,
i.prototype.getSuggestionTemplate = function(e) {
var t = "nordicsea";
return "HotelPage" === e.Type ? t = "crocus" : "CityPage" === e.Type && (t = "dawn"),
'
' + e.Name + "
"
}
,
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) : ' / ',
f.paginationContainer.html(e)),
"progress" === f.params.paginationType && (e = f.params.paginationProgressRender ? f.params.paginationProgressRender(f, f.params.paginationProgressbarClass) : '',
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('
'),
i.append(l)),
0 === c.length && (c = t('
'),
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('
'),
f.wrapper.append(e)),
e.css({
height: f.width + "px"
})) : 0 === (e = f.container.find(".swiper-cube-shadow")).length && (e = t('
'),
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('
'),
a.append(p)),
0 === m.length && (m = t('
'),
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('
'),
s.append(v)),
0 === b.length && (b = t('
'),
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('
'),
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('
'),
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: '
',
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: '
',
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: '
',
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: '
',
priority: 2,
scope: !0
}
}
)),
angular.module("ui.swiper").directive("pagination", (function() {
return {
restrict: "AE",
transclude: !0,
replace: !0,
require: "^swiper",
template: '',
priority: 2
}
}
)),
angular.module("ui.swiper").directive("next", (function() {
return {
restrict: "AE",
transclude: !0,
replace: !0,
require: "^swiper",
template: '
',
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("
:~]/) ? (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 = '',
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(''));
a._sliderOverflow = l = e(l + "
"),
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(''),
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('').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 = '
';
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("
").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("
");
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('')),
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 = '', i = 0; i < e.numSlides; i++)
t += '
';
e._controlNav = t = n(t + "
"),
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('
') : e._controlNavItems.eq(n).before('
'),
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 ? '
' : "")
}
)),
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 = "' + e._addThumbHTML + i.thumbnail + "
",
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 += '',
t._addThumbHTML = n.appendSpan ? '
' : "";
for (var l = 0; l < t.numSlides; l++)
o += "
' + (s = t.slides[l]).thumbnail + t._addThumbHTML + "
";
o = a(o + "
"),
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(''),
o.append(t._thumbsArrowLeft)),
n.arrowRight ? t._thumbsArrowRight = n.arrowRight : (t._thumbsArrowRight = a(''),
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 ? '
' : "")
}
)),
e.ev.one("rsAfterPropsSetup", (function() {
e._createTabs()
}
)),
e.ev.on("rsOnAppendSlide", (function(t, i, n) {
n >= e.numSlides ? e._controlNav.append('' + i.thumbnail + "
") : e._controlNavItems.eq(n).before('' + item.thumbnail + "
"),
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 = '', i = 0; i < e.numSlides; i++)
t += '
' + e.slides[i].thumbnail + "
";
t = o(t + "
"),
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('').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 ? '
' : '';
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: '',
vimeoCode: ''
},
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('');
var o = s('');
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(''),
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('')
}
), 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('').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('').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('