(function() {
"use strict";
/*! modernizr 3.3.1 (Custom Build) | MIT *
* https://modernizr.com/download/?-backgroundcliptext-csspointerevents-flexbox-objectfit-touchevents-video-setclasses !*/
!function(e, n, t) {
function o(e2, n2) {
return typeof e2 === n2;
}
function r() {
var e2, n2, t2, r2, s2, i2, a2;
for (var l2 in x) if (x.hasOwnProperty(l2)) {
if (e2 = [], n2 = x[l2], n2.name && (e2.push(n2.name.toLowerCase()), n2.options && n2.options.aliases && n2.options.aliases.length)) for (t2 = 0; t2 < n2.options.aliases.length; t2++) e2.push(n2.options.aliases[t2].toLowerCase());
for (r2 = o(n2.fn, "function") ? n2.fn() : n2.fn, s2 = 0; s2 < e2.length; s2++) i2 = e2[s2], a2 = i2.split("."), 1 === a2.length ? Modernizr2[a2[0]] = r2 : (!Modernizr2[a2[0]] || Modernizr2[a2[0]] instanceof Boolean || (Modernizr2[a2[0]] = new Boolean(Modernizr2[a2[0]])), Modernizr2[a2[0]][a2[1]] = r2), g.push((r2 ? "" : "no-") + a2.join("-"));
}
}
function s(e2) {
var n2 = b.className, t2 = Modernizr2._config.classPrefix || "";
if (w && (n2 = n2.baseVal), Modernizr2._config.enableJSClass) {
var o2 = new RegExp("(^|\\s)" + t2 + "no-js(\\s|$)");
n2 = n2.replace(o2, "$1" + t2 + "js$2");
}
Modernizr2._config.enableClasses && (n2 += " " + t2 + e2.join(" " + t2), w ? b.className.baseVal = n2 : b.className = n2);
}
function i() {
return "function" != typeof n.createElement ? n.createElement(arguments[0]) : w ? n.createElementNS.call(n, "http://www.w3.org/2000/svg", arguments[0]) : n.createElement.apply(n, arguments);
}
function a(e2) {
return e2.replace(/([a-z])-([a-z])/g, function(e3, n2, t2) {
return n2 + t2.toUpperCase();
}).replace(/^-/, "");
}
function l() {
var e2 = n.body;
return e2 || (e2 = i(w ? "svg" : "body"), e2.fake = true), e2;
}
function f(e2, t2, o2, r2) {
var s2, a2, f2, u2, c2 = "modernizr", p2 = i("div"), d2 = l();
if (parseInt(o2, 10)) for (; o2--; ) f2 = i("div"), f2.id = r2 ? r2[o2] : c2 + (o2 + 1), p2.appendChild(f2);
return s2 = i("style"), s2.type = "text/css", s2.id = "s" + c2, (d2.fake ? d2 : p2).appendChild(s2), d2.appendChild(p2), s2.styleSheet ? s2.styleSheet.cssText = e2 : s2.appendChild(n.createTextNode(e2)), p2.id = c2, d2.fake && (d2.style.background = "", d2.style.overflow = "hidden", u2 = b.style.overflow, b.style.overflow = "hidden", b.appendChild(d2)), a2 = t2(p2, e2), d2.fake ? (d2.parentNode.removeChild(d2), b.style.overflow = u2, b.offsetHeight) : p2.parentNode.removeChild(p2), !!a2;
}
function u(e2, n2) {
return !!~("" + e2).indexOf(n2);
}
function c(e2, n2) {
return function() {
return e2.apply(n2, arguments);
};
}
function p(e2, n2, t2) {
var r2;
for (var s2 in e2) if (e2[s2] in n2) return t2 === false ? e2[s2] : (r2 = n2[e2[s2]], o(r2, "function") ? c(r2, t2 || n2) : r2);
return false;
}
function d(e2) {
return e2.replace(/([A-Z])/g, function(e3, n2) {
return "-" + n2.toLowerCase();
}).replace(/^ms-/, "-ms-");
}
function v(n2, o2) {
var r2 = n2.length;
if ("CSS" in e && "supports" in e.CSS) {
for (; r2--; ) if (e.CSS.supports(d(n2[r2]), o2)) return true;
return false;
}
if ("CSSSupportsRule" in e) {
for (var s2 = []; r2--; ) s2.push("(" + d(n2[r2]) + ":" + o2 + ")");
return s2 = s2.join(" or "), f("@supports (" + s2 + ") { #modernizr { position: absolute; } }", function(e2) {
return "absolute" == getComputedStyle(e2, null).position;
});
}
return t;
}
function m(e2, n2, r2, s2) {
function l2() {
c2 && (delete k.style, delete k.modElem);
}
if (s2 = o(s2, "undefined") ? false : s2, !o(r2, "undefined")) {
var f2 = v(e2, r2);
if (!o(f2, "undefined")) return f2;
}
for (var c2, p2, d2, m2, y2, h2 = ["modernizr", "tspan", "samp"]; !k.style && h2.length; ) c2 = true, k.modElem = i(h2.shift()), k.style = k.modElem.style;
for (d2 = e2.length, p2 = 0; d2 > p2; p2++) if (m2 = e2[p2], y2 = k.style[m2], u(m2, "-") && (m2 = a(m2)), k.style[m2] !== t) {
if (s2 || o(r2, "undefined")) return l2(), "pfx" == n2 ? m2 : true;
try {
k.style[m2] = r2;
} catch (g2) {
}
if (k.style[m2] != y2) return l2(), "pfx" == n2 ? m2 : true;
}
return l2(), false;
}
function y(e2, n2, t2, r2, s2) {
var i2 = e2.charAt(0).toUpperCase() + e2.slice(1), a2 = (e2 + " " + P.join(i2 + " ") + i2).split(" ");
return o(n2, "string") || o(n2, "undefined") ? m(a2, n2, r2, s2) : (a2 = (e2 + " " + j.join(i2 + " ") + i2).split(" "), p(a2, n2, t2));
}
function h(e2, n2, o2) {
return y(e2, t, t, n2, o2);
}
var g = [], x = [], C = { _version: "3.3.1", _config: { classPrefix: "", enableClasses: true, enableJSClass: true, usePrefixes: true }, _q: [], on: function(e2, n2) {
var t2 = this;
setTimeout(function() {
n2(t2[e2]);
}, 0);
}, addTest: function(e2, n2, t2) {
x.push({ name: e2, fn: n2, options: t2 });
}, addAsyncTest: function(e2) {
x.push({ name: null, fn: e2 });
} }, Modernizr2 = function() {
};
Modernizr2.prototype = C, Modernizr2 = new Modernizr2();
var b = n.documentElement, w = "svg" === b.nodeName.toLowerCase(), T = C._config.usePrefixes ? " -webkit- -moz- -o- -ms- ".split(" ") : ["", ""];
C._prefixes = T, Modernizr2.addTest("video", function() {
var e2 = i("video"), n2 = false;
try {
(n2 = !!e2.canPlayType) && (n2 = new Boolean(n2), n2.ogg = e2.canPlayType('video/ogg; codecs="theora"').replace(/^no$/, ""), n2.h264 = e2.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/, ""), n2.webm = e2.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/, ""), n2.vp9 = e2.canPlayType('video/webm; codecs="vp9"').replace(/^no$/, ""), n2.hls = e2.canPlayType('application/x-mpegURL; codecs="avc1.42E01E"').replace(/^no$/, ""));
} catch (t2) {
}
return n2;
}), Modernizr2.addTest("csspointerevents", function() {
var e2 = i("a").style;
return e2.cssText = "pointer-events:auto", "auto" === e2.pointerEvents;
});
var _ = C.testStyles = f;
Modernizr2.addTest("touchevents", function() {
var t2;
if ("ontouchstart" in e || e.DocumentTouch && n instanceof DocumentTouch) t2 = true;
else {
var o2 = ["@media (", T.join("touch-enabled),("), "heartz", ")", "{#modernizr{top:9px;position:absolute}}"].join("");
_(o2, function(e2) {
t2 = 9 === e2.offsetTop;
});
}
return t2;
});
var S = "Moz O ms Webkit", P = C._config.usePrefixes ? S.split(" ") : [];
C._cssomPrefixes = P;
var E = function(n2) {
var o2, r2 = T.length, s2 = e.CSSRule;
if ("undefined" == typeof s2) return t;
if (!n2) return false;
if (n2 = n2.replace(/^@/, ""), o2 = n2.replace(/-/g, "_").toUpperCase() + "_RULE", o2 in s2) return "@" + n2;
for (var i2 = 0; r2 > i2; i2++) {
var a2 = T[i2], l2 = a2.toUpperCase() + "_" + o2;
if (l2 in s2) return "@-" + a2.toLowerCase() + "-" + n2;
}
return false;
};
C.atRule = E;
var j = C._config.usePrefixes ? S.toLowerCase().split(" ") : [];
C._domPrefixes = j;
var z = { elem: i("modernizr") };
Modernizr2._q.push(function() {
delete z.elem;
});
var k = { style: z.elem.style };
Modernizr2._q.unshift(function() {
delete k.style;
}), C.testAllProps = y, C.testAllProps = h, Modernizr2.addTest("flexbox", h("flexBasis", "1px", true));
var N = C.prefixed = function(e2, n2, t2) {
return 0 === e2.indexOf("@") ? E(e2) : (-1 != e2.indexOf("-") && (e2 = a(e2)), n2 ? y(e2, n2, t2) : y(e2, "pfx"));
};
Modernizr2.addTest("objectfit", !!N("objectFit"), { aliases: ["object-fit"] }), Modernizr2.addTest("backgroundcliptext", function() {
return h("backgroundClip", "text");
}), r(), s(g), delete C.addTest, delete C.addAsyncTest;
for (var L = 0; L < Modernizr2._q.length; L++) Modernizr2._q[L]();
e.Modernizr = Modernizr2;
}(window, document);
/*!
* Bootstrap v3.3.7 (http://getbootstrap.com)
* Copyright 2011-2017 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
/*!
* Generated using the Bootstrap Customizer (http://getbootstrap.com/customize/?id=1f5abcbc13a31592a88f68a5da3768af)
* Config saved to config.json and https://gist.github.com/1f5abcbc13a31592a88f68a5da3768af
*/
if (typeof jQuery === "undefined") {
throw new Error("Bootstrap's JavaScript requires jQuery");
}
+function($) {
var version = $.fn.jquery.split(" ")[0].split(".");
if (version[0] < 2 && version[1] < 9 || version[0] == 1 && version[1] == 9 && version[2] < 1 || version[0] > 3) {
throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4");
}
}(jQuery);
+function($) {
var dismiss = '[data-dismiss="alert"]';
var Alert = function(el) {
$(el).on("click", dismiss, this.close);
};
Alert.VERSION = "3.3.7";
Alert.TRANSITION_DURATION = 150;
Alert.prototype.close = function(e) {
var $this = $(this);
var selector = $this.attr("data-target");
if (!selector) {
selector = $this.attr("href");
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, "");
}
var $parent = $(selector === "#" ? [] : selector);
if (e) e.preventDefault();
if (!$parent.length) {
$parent = $this.closest(".alert");
}
$parent.trigger(e = $.Event("close.bs.alert"));
if (e.isDefaultPrevented()) return;
$parent.removeClass("in");
function removeElement() {
$parent.detach().trigger("closed.bs.alert").remove();
}
$.support.transition && $parent.hasClass("fade") ? $parent.one("bsTransitionEnd", removeElement).emulateTransitionEnd(Alert.TRANSITION_DURATION) : removeElement();
};
function Plugin(option) {
return this.each(function() {
var $this = $(this);
var data = $this.data("bs.alert");
if (!data) $this.data("bs.alert", data = new Alert(this));
if (typeof option == "string") data[option].call($this);
});
}
var old = $.fn.alert;
$.fn.alert = Plugin;
$.fn.alert.Constructor = Alert;
$.fn.alert.noConflict = function() {
$.fn.alert = old;
return this;
};
$(document).on("click.bs.alert.data-api", dismiss, Alert.prototype.close);
}(jQuery);
+function($) {
var Button = function(element, options) {
this.$element = $(element);
this.options = $.extend({}, Button.DEFAULTS, options);
this.isLoading = false;
};
Button.VERSION = "3.3.7";
Button.DEFAULTS = {
loadingText: "loading..."
};
Button.prototype.setState = function(state) {
var d = "disabled";
var $el = this.$element;
var val = $el.is("input") ? "val" : "html";
var data = $el.data();
state += "Text";
if (data.resetText == null) $el.data("resetText", $el[val]());
setTimeout($.proxy(function() {
$el[val](data[state] == null ? this.options[state] : data[state]);
if (state == "loadingText") {
this.isLoading = true;
$el.addClass(d).attr(d, d).prop(d, true);
} else if (this.isLoading) {
this.isLoading = false;
$el.removeClass(d).removeAttr(d).prop(d, false);
}
}, this), 0);
};
Button.prototype.toggle = function() {
var changed = true;
var $parent = this.$element.closest('[data-toggle="buttons"]');
if ($parent.length) {
var $input = this.$element.find("input");
if ($input.prop("type") == "radio") {
if ($input.prop("checked")) changed = false;
$parent.find(".active").removeClass("active");
this.$element.addClass("active");
} else if ($input.prop("type") == "checkbox") {
if ($input.prop("checked") !== this.$element.hasClass("active")) changed = false;
this.$element.toggleClass("active");
}
$input.prop("checked", this.$element.hasClass("active"));
if (changed) $input.trigger("change");
} else {
this.$element.attr("aria-pressed", !this.$element.hasClass("active"));
this.$element.toggleClass("active");
}
};
function Plugin(option) {
return this.each(function() {
var $this = $(this);
var data = $this.data("bs.button");
var options = typeof option == "object" && option;
if (!data) $this.data("bs.button", data = new Button(this, options));
if (option == "toggle") data.toggle();
else if (option) data.setState(option);
});
}
var old = $.fn.button;
$.fn.button = Plugin;
$.fn.button.Constructor = Button;
$.fn.button.noConflict = function() {
$.fn.button = old;
return this;
};
$(document).on("click.bs.button.data-api", '[data-toggle^="button"]', function(e) {
var $btn = $(e.target).closest(".btn");
Plugin.call($btn, "toggle");
if (!$(e.target).is('input[type="radio"], input[type="checkbox"]')) {
e.preventDefault();
if ($btn.is("input,button")) $btn.trigger("focus");
else $btn.find("input:visible,button:visible").first().trigger("focus");
}
}).on("focus.bs.button.data-api blur.bs.button.data-api", '[data-toggle^="button"]', function(e) {
$(e.target).closest(".btn").toggleClass("focus", /^focus(in)?$/.test(e.type));
});
}(jQuery);
+function($) {
var backdrop = ".dropdown-backdrop";
var toggle = '[data-toggle="dropdown"]';
var Dropdown = function(element) {
$(element).on("click.bs.dropdown", this.toggle);
};
Dropdown.VERSION = "3.3.7";
function getParent($this) {
var selector = $this.attr("data-target");
if (!selector) {
selector = $this.attr("href");
selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, "");
}
var $parent = selector && $(selector);
return $parent && $parent.length ? $parent : $this.parent();
}
function clearMenus(e) {
if (e && e.which === 3) return;
$(backdrop).remove();
$(toggle).each(function() {
var $this = $(this);
var $parent = getParent($this);
var relatedTarget = { relatedTarget: this };
if (!$parent.hasClass("open")) return;
if (e && e.type == "click" && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return;
$parent.trigger(e = $.Event("hide.bs.dropdown", relatedTarget));
if (e.isDefaultPrevented()) return;
$this.attr("aria-expanded", "false");
$parent.removeClass("open").trigger($.Event("hidden.bs.dropdown", relatedTarget));
});
}
Dropdown.prototype.toggle = function(e) {
var $this = $(this);
if ($this.is(".disabled, :disabled")) return;
var $parent = getParent($this);
var isActive = $parent.hasClass("open");
clearMenus();
if (!isActive) {
if ("ontouchstart" in document.documentElement && !$parent.closest(".navbar-nav").length) {
$(document.createElement("div")).addClass("dropdown-backdrop").insertAfter($(this)).on("click", clearMenus);
}
var relatedTarget = { relatedTarget: this };
$parent.trigger(e = $.Event("show.bs.dropdown", relatedTarget));
if (e.isDefaultPrevented()) return;
$this.trigger("focus").attr("aria-expanded", "true");
$parent.toggleClass("open").trigger($.Event("shown.bs.dropdown", relatedTarget));
}
return false;
};
Dropdown.prototype.keydown = function(e) {
if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return;
var $this = $(this);
e.preventDefault();
e.stopPropagation();
if ($this.is(".disabled, :disabled")) return;
var $parent = getParent($this);
var isActive = $parent.hasClass("open");
if (!isActive && e.which != 27 || isActive && e.which == 27) {
if (e.which == 27) $parent.find(toggle).trigger("focus");
return $this.trigger("click");
}
var desc = " li:not(.disabled):visible a";
var $items = $parent.find(".dropdown-menu" + desc);
if (!$items.length) return;
var index = $items.index(e.target);
if (e.which == 38 && index > 0) index--;
if (e.which == 40 && index < $items.length - 1) index++;
if (!~index) index = 0;
$items.eq(index).trigger("focus");
};
function Plugin(option) {
return this.each(function() {
var $this = $(this);
var data = $this.data("bs.dropdown");
if (!data) $this.data("bs.dropdown", data = new Dropdown(this));
if (typeof option == "string") data[option].call($this);
});
}
var old = $.fn.dropdown;
$.fn.dropdown = Plugin;
$.fn.dropdown.Constructor = Dropdown;
$.fn.dropdown.noConflict = function() {
$.fn.dropdown = old;
return this;
};
$(document).on("click.bs.dropdown.data-api", clearMenus).on("click.bs.dropdown.data-api", ".dropdown form", function(e) {
e.stopPropagation();
}).on("click.bs.dropdown.data-api", toggle, Dropdown.prototype.toggle).on("keydown.bs.dropdown.data-api", toggle, Dropdown.prototype.keydown).on("keydown.bs.dropdown.data-api", ".dropdown-menu", Dropdown.prototype.keydown);
}(jQuery);
+function($) {
var Tooltip = function(element, options) {
this.type = null;
this.options = null;
this.enabled = null;
this.timeout = null;
this.hoverState = null;
this.$element = null;
this.inState = null;
this.init("tooltip", element, options);
};
Tooltip.VERSION = "3.3.7";
Tooltip.TRANSITION_DURATION = 150;
Tooltip.DEFAULTS = {
animation: true,
placement: "top",
selector: false,
template: '
',
trigger: "hover focus",
title: "",
delay: 0,
html: false,
container: false,
viewport: {
selector: "body",
padding: 0
}
};
Tooltip.prototype.init = function(type, element, options) {
this.enabled = true;
this.type = type;
this.$element = $(element);
this.options = this.getOptions(options);
this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : this.options.viewport.selector || this.options.viewport);
this.inState = { click: false, hover: false, focus: false };
if (this.$element[0] instanceof document.constructor && !this.options.selector) {
throw new Error("`selector` option must be specified when initializing " + this.type + " on the window.document object!");
}
var triggers = this.options.trigger.split(" ");
for (var i = triggers.length; i--; ) {
var trigger = triggers[i];
if (trigger == "click") {
this.$element.on("click." + this.type, this.options.selector, $.proxy(this.toggle, this));
} else if (trigger != "manual") {
var eventIn = trigger == "hover" ? "mouseenter" : "focusin";
var eventOut = trigger == "hover" ? "mouseleave" : "focusout";
this.$element.on(eventIn + "." + this.type, this.options.selector, $.proxy(this.enter, this));
this.$element.on(eventOut + "." + this.type, this.options.selector, $.proxy(this.leave, this));
}
}
this.options.selector ? this._options = $.extend({}, this.options, { trigger: "manual", selector: "" }) : this.fixTitle();
};
Tooltip.prototype.getDefaults = function() {
return Tooltip.DEFAULTS;
};
Tooltip.prototype.getOptions = function(options) {
options = $.extend({}, this.getDefaults(), this.$element.data(), options);
if (options.delay && typeof options.delay == "number") {
options.delay = {
show: options.delay,
hide: options.delay
};
}
return options;
};
Tooltip.prototype.getDelegateOptions = function() {
var options = {};
var defaults = this.getDefaults();
this._options && $.each(this._options, function(key, value) {
if (defaults[key] != value) options[key] = value;
});
return options;
};
Tooltip.prototype.enter = function(obj) {
var self2 = obj instanceof this.constructor ? obj : $(obj.currentTarget).data("bs." + this.type);
if (!self2) {
self2 = new this.constructor(obj.currentTarget, this.getDelegateOptions());
$(obj.currentTarget).data("bs." + this.type, self2);
}
if (obj instanceof $.Event) {
self2.inState[obj.type == "focusin" ? "focus" : "hover"] = true;
}
if (self2.tip().hasClass("in") || self2.hoverState == "in") {
self2.hoverState = "in";
return;
}
clearTimeout(self2.timeout);
self2.hoverState = "in";
if (!self2.options.delay || !self2.options.delay.show) return self2.show();
self2.timeout = setTimeout(function() {
if (self2.hoverState == "in") self2.show();
}, self2.options.delay.show);
};
Tooltip.prototype.isInStateTrue = function() {
for (var key in this.inState) {
if (this.inState[key]) return true;
}
return false;
};
Tooltip.prototype.leave = function(obj) {
var self2 = obj instanceof this.constructor ? obj : $(obj.currentTarget).data("bs." + this.type);
if (!self2) {
self2 = new this.constructor(obj.currentTarget, this.getDelegateOptions());
$(obj.currentTarget).data("bs." + this.type, self2);
}
if (obj instanceof $.Event) {
self2.inState[obj.type == "focusout" ? "focus" : "hover"] = false;
}
if (self2.isInStateTrue()) return;
clearTimeout(self2.timeout);
self2.hoverState = "out";
if (!self2.options.delay || !self2.options.delay.hide) return self2.hide();
self2.timeout = setTimeout(function() {
if (self2.hoverState == "out") self2.hide();
}, self2.options.delay.hide);
};
Tooltip.prototype.show = function() {
var e = $.Event("show.bs." + this.type);
if (this.hasContent() && this.enabled) {
this.$element.trigger(e);
var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]);
if (e.isDefaultPrevented() || !inDom) return;
var that = this;
var $tip = this.tip();
var tipId = this.getUID(this.type);
this.setContent();
$tip.attr("id", tipId);
this.$element.attr("aria-describedby", tipId);
if (this.options.animation) $tip.addClass("fade");
var placement = typeof this.options.placement == "function" ? this.options.placement.call(this, $tip[0], this.$element[0]) : this.options.placement;
var autoToken = /\s?auto?\s?/i;
var autoPlace = autoToken.test(placement);
if (autoPlace) placement = placement.replace(autoToken, "") || "top";
$tip.detach().css({ top: 0, left: 0, display: "block" }).addClass(placement).data("bs." + this.type, this);
this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element);
this.$element.trigger("inserted.bs." + this.type);
var pos = this.getPosition();
var actualWidth = $tip[0].offsetWidth;
var actualHeight = $tip[0].offsetHeight;
if (autoPlace) {
var orgPlacement = placement;
var viewportDim = this.getPosition(this.$viewport);
placement = placement == "bottom" && pos.bottom + actualHeight > viewportDim.bottom ? "top" : placement == "top" && pos.top - actualHeight < viewportDim.top ? "bottom" : placement == "right" && pos.right + actualWidth > viewportDim.width ? "left" : placement == "left" && pos.left - actualWidth < viewportDim.left ? "right" : placement;
$tip.removeClass(orgPlacement).addClass(placement);
}
var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight);
this.applyPlacement(calculatedOffset, placement);
var complete = function() {
var prevHoverState = that.hoverState;
that.$element.trigger("shown.bs." + that.type);
that.hoverState = null;
if (prevHoverState == "out") that.leave(that);
};
$.support.transition && this.$tip.hasClass("fade") ? $tip.one("bsTransitionEnd", complete).emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : complete();
}
};
Tooltip.prototype.applyPlacement = function(offset, placement) {
var $tip = this.tip();
var width = $tip[0].offsetWidth;
var height = $tip[0].offsetHeight;
var marginTop = parseInt($tip.css("margin-top"), 10);
var marginLeft = parseInt($tip.css("margin-left"), 10);
if (isNaN(marginTop)) marginTop = 0;
if (isNaN(marginLeft)) marginLeft = 0;
offset.top += marginTop;
offset.left += marginLeft;
$.offset.setOffset($tip[0], $.extend({
using: function(props) {
$tip.css({
top: Math.round(props.top),
left: Math.round(props.left)
});
}
}, offset), 0);
$tip.addClass("in");
var actualWidth = $tip[0].offsetWidth;
var actualHeight = $tip[0].offsetHeight;
if (placement == "top" && actualHeight != height) {
offset.top = offset.top + height - actualHeight;
}
var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight);
if (delta.left) offset.left += delta.left;
else offset.top += delta.top;
var isVertical = /top|bottom/.test(placement);
var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight;
var arrowOffsetPosition = isVertical ? "offsetWidth" : "offsetHeight";
$tip.offset(offset);
this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical);
};
Tooltip.prototype.replaceArrow = function(delta, dimension, isVertical) {
this.arrow().css(isVertical ? "left" : "top", 50 * (1 - delta / dimension) + "%").css(isVertical ? "top" : "left", "");
};
Tooltip.prototype.setContent = function() {
var $tip = this.tip();
var title = this.getTitle();
$tip.find(".tooltip-inner")[this.options.html ? "html" : "text"](title);
$tip.removeClass("fade in top bottom left right");
};
Tooltip.prototype.hide = function(callback) {
var that = this;
var $tip = $(this.$tip);
var e = $.Event("hide.bs." + this.type);
function complete() {
if (that.hoverState != "in") $tip.detach();
if (that.$element) {
that.$element.removeAttr("aria-describedby").trigger("hidden.bs." + that.type);
}
callback && callback();
}
this.$element.trigger(e);
if (e.isDefaultPrevented()) return;
$tip.removeClass("in");
$.support.transition && $tip.hasClass("fade") ? $tip.one("bsTransitionEnd", complete).emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : complete();
this.hoverState = null;
return this;
};
Tooltip.prototype.fixTitle = function() {
var $e = this.$element;
if ($e.attr("title") || typeof $e.attr("data-original-title") != "string") {
$e.attr("data-original-title", $e.attr("title") || "").attr("title", "");
}
};
Tooltip.prototype.hasContent = function() {
return this.getTitle();
};
Tooltip.prototype.getPosition = function($element) {
$element = $element || this.$element;
var el = $element[0];
var isBody = el.tagName == "BODY";
var elRect = el.getBoundingClientRect();
if (elRect.width == null) {
elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top });
}
var isSvg = window.SVGElement && el instanceof window.SVGElement;
var elOffset = isBody ? { top: 0, left: 0 } : isSvg ? null : $element.offset();
var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() };
var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null;
return $.extend({}, elRect, scroll, outerDims, elOffset);
};
Tooltip.prototype.getCalculatedOffset = function(placement, pos, actualWidth, actualHeight) {
return placement == "bottom" ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : placement == "top" ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : placement == "left" ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : (
/* placement == 'right' */
{ top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
);
};
Tooltip.prototype.getViewportAdjustedDelta = function(placement, pos, actualWidth, actualHeight) {
var delta = { top: 0, left: 0 };
if (!this.$viewport) return delta;
var viewportPadding = this.options.viewport && this.options.viewport.padding || 0;
var viewportDimensions = this.getPosition(this.$viewport);
if (/right|left/.test(placement)) {
var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll;
var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight;
if (topEdgeOffset < viewportDimensions.top) {
delta.top = viewportDimensions.top - topEdgeOffset;
} else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) {
delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset;
}
} else {
var leftEdgeOffset = pos.left - viewportPadding;
var rightEdgeOffset = pos.left + viewportPadding + actualWidth;
if (leftEdgeOffset < viewportDimensions.left) {
delta.left = viewportDimensions.left - leftEdgeOffset;
} else if (rightEdgeOffset > viewportDimensions.right) {
delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset;
}
}
return delta;
};
Tooltip.prototype.getTitle = function() {
var title;
var $e = this.$element;
var o = this.options;
title = $e.attr("data-original-title") || (typeof o.title == "function" ? o.title.call($e[0]) : o.title);
return title;
};
Tooltip.prototype.getUID = function(prefix) {
do
prefix += ~~(Math.random() * 1e6);
while (document.getElementById(prefix));
return prefix;
};
Tooltip.prototype.tip = function() {
if (!this.$tip) {
this.$tip = $(this.options.template);
if (this.$tip.length != 1) {
throw new Error(this.type + " `template` option must consist of exactly 1 top-level element!");
}
}
return this.$tip;
};
Tooltip.prototype.arrow = function() {
return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow");
};
Tooltip.prototype.enable = function() {
this.enabled = true;
};
Tooltip.prototype.disable = function() {
this.enabled = false;
};
Tooltip.prototype.toggleEnabled = function() {
this.enabled = !this.enabled;
};
Tooltip.prototype.toggle = function(e) {
var self2 = this;
if (e) {
self2 = $(e.currentTarget).data("bs." + this.type);
if (!self2) {
self2 = new this.constructor(e.currentTarget, this.getDelegateOptions());
$(e.currentTarget).data("bs." + this.type, self2);
}
}
if (e) {
self2.inState.click = !self2.inState.click;
if (self2.isInStateTrue()) self2.enter(self2);
else self2.leave(self2);
} else {
self2.tip().hasClass("in") ? self2.leave(self2) : self2.enter(self2);
}
};
Tooltip.prototype.destroy = function() {
var that = this;
clearTimeout(this.timeout);
this.hide(function() {
that.$element.off("." + that.type).removeData("bs." + that.type);
if (that.$tip) {
that.$tip.detach();
}
that.$tip = null;
that.$arrow = null;
that.$viewport = null;
that.$element = null;
});
};
function Plugin(option) {
return this.each(function() {
var $this = $(this);
var data = $this.data("bs.tooltip");
var options = typeof option == "object" && option;
if (!data && /destroy|hide/.test(option)) return;
if (!data) $this.data("bs.tooltip", data = new Tooltip(this, options));
if (typeof option == "string") data[option]();
});
}
var old = $.fn.tooltip;
$.fn.tooltip = Plugin;
$.fn.tooltip.Constructor = Tooltip;
$.fn.tooltip.noConflict = function() {
$.fn.tooltip = old;
return this;
};
}(jQuery);
+function($) {
var Tab = function(element) {
this.element = $(element);
};
Tab.VERSION = "3.3.7";
Tab.TRANSITION_DURATION = 150;
Tab.prototype.show = function() {
var $this = this.element;
var $ul = $this.closest("ul:not(.dropdown-menu)");
var selector = $this.data("target");
if (!selector) {
selector = $this.attr("href");
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, "");
}
if ($this.parent("li").hasClass("active")) return;
var $previous = $ul.find(".active:last a");
var hideEvent = $.Event("hide.bs.tab", {
relatedTarget: $this[0]
});
var showEvent = $.Event("show.bs.tab", {
relatedTarget: $previous[0]
});
$previous.trigger(hideEvent);
$this.trigger(showEvent);
if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return;
var $target = $(selector);
this.activate($this.closest("li"), $ul);
this.activate($target, $target.parent(), function() {
$previous.trigger({
type: "hidden.bs.tab",
relatedTarget: $this[0]
});
$this.trigger({
type: "shown.bs.tab",
relatedTarget: $previous[0]
});
});
};
Tab.prototype.activate = function(element, container, callback) {
var $active = container.find("> .active");
var transition = callback && $.support.transition && ($active.length && $active.hasClass("fade") || !!container.find("> .fade").length);
function next() {
$active.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded", false);
element.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded", true);
if (transition) {
element[0].offsetWidth;
element.addClass("in");
} else {
element.removeClass("fade");
}
if (element.parent(".dropdown-menu").length) {
element.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded", true);
}
callback && callback();
}
$active.length && transition ? $active.one("bsTransitionEnd", next).emulateTransitionEnd(Tab.TRANSITION_DURATION) : next();
$active.removeClass("in");
};
function Plugin(option) {
return this.each(function() {
var $this = $(this);
var data = $this.data("bs.tab");
if (!data) $this.data("bs.tab", data = new Tab(this));
if (typeof option == "string") data[option]();
});
}
var old = $.fn.tab;
$.fn.tab = Plugin;
$.fn.tab.Constructor = Tab;
$.fn.tab.noConflict = function() {
$.fn.tab = old;
return this;
};
var clickHandler = function(e) {
e.preventDefault();
Plugin.call($(this), "show");
};
$(document).on("click.bs.tab.data-api", '[data-toggle="tab"]', clickHandler).on("click.bs.tab.data-api", '[data-toggle="pill"]', clickHandler);
}(jQuery);
+function($) {
var Collapse = function(element, options) {
this.$element = $(element);
this.options = $.extend({}, Collapse.DEFAULTS, options);
this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],[data-toggle="collapse"][data-target="#' + element.id + '"]');
this.transitioning = null;
if (this.options.parent) {
this.$parent = this.getParent();
} else {
this.addAriaAndCollapsedClass(this.$element, this.$trigger);
}
if (this.options.toggle) this.toggle();
};
Collapse.VERSION = "3.3.7";
Collapse.TRANSITION_DURATION = 350;
Collapse.DEFAULTS = {
toggle: true
};
Collapse.prototype.dimension = function() {
var hasWidth = this.$element.hasClass("width");
return hasWidth ? "width" : "height";
};
Collapse.prototype.show = function() {
if (this.transitioning || this.$element.hasClass("in")) return;
var activesData;
var actives = this.$parent && this.$parent.children(".panel").children(".in, .collapsing");
if (actives && actives.length) {
activesData = actives.data("bs.collapse");
if (activesData && activesData.transitioning) return;
}
var startEvent = $.Event("show.bs.collapse");
this.$element.trigger(startEvent);
if (startEvent.isDefaultPrevented()) return;
if (actives && actives.length) {
Plugin.call(actives, "hide");
activesData || actives.data("bs.collapse", null);
}
var dimension = this.dimension();
this.$element.removeClass("collapse").addClass("collapsing")[dimension](0).attr("aria-expanded", true);
this.$trigger.removeClass("collapsed").attr("aria-expanded", true);
this.transitioning = 1;
var complete = function() {
this.$element.removeClass("collapsing").addClass("collapse in")[dimension]("");
this.transitioning = 0;
this.$element.trigger("shown.bs.collapse");
};
if (!$.support.transition) return complete.call(this);
var scrollSize = $.camelCase(["scroll", dimension].join("-"));
this.$element.one("bsTransitionEnd", $.proxy(complete, this)).emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]);
};
Collapse.prototype.hide = function() {
if (this.transitioning || !this.$element.hasClass("in")) return;
var startEvent = $.Event("hide.bs.collapse");
this.$element.trigger(startEvent);
if (startEvent.isDefaultPrevented()) return;
var dimension = this.dimension();
this.$element[dimension](this.$element[dimension]())[0].offsetHeight;
this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded", false);
this.$trigger.addClass("collapsed").attr("aria-expanded", false);
this.transitioning = 1;
var complete = function() {
this.transitioning = 0;
this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse");
};
if (!$.support.transition) return complete.call(this);
this.$element[dimension](0).one("bsTransitionEnd", $.proxy(complete, this)).emulateTransitionEnd(Collapse.TRANSITION_DURATION);
};
Collapse.prototype.toggle = function() {
this[this.$element.hasClass("in") ? "hide" : "show"]();
};
Collapse.prototype.getParent = function() {
return $(this.options.parent).find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]').each($.proxy(function(i, element) {
var $element = $(element);
this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element);
}, this)).end();
};
Collapse.prototype.addAriaAndCollapsedClass = function($element, $trigger) {
var isOpen = $element.hasClass("in");
$element.attr("aria-expanded", isOpen);
$trigger.toggleClass("collapsed", !isOpen).attr("aria-expanded", isOpen);
};
function getTargetFromTrigger($trigger) {
var href;
var target = $trigger.attr("data-target") || (href = $trigger.attr("href")) && href.replace(/.*(?=#[^\s]+$)/, "");
return $(target);
}
function Plugin(option) {
return this.each(function() {
var $this = $(this);
var data = $this.data("bs.collapse");
var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == "object" && option);
if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false;
if (!data) $this.data("bs.collapse", data = new Collapse(this, options));
if (typeof option == "string") data[option]();
});
}
var old = $.fn.collapse;
$.fn.collapse = Plugin;
$.fn.collapse.Constructor = Collapse;
$.fn.collapse.noConflict = function() {
$.fn.collapse = old;
return this;
};
$(document).on("click.bs.collapse.data-api", '[data-toggle="collapse"]', function(e) {
var $this = $(this);
if (!$this.attr("data-target")) e.preventDefault();
var $target = getTargetFromTrigger($this);
var data = $target.data("bs.collapse");
var option = data ? "toggle" : $this.data();
Plugin.call($target, option);
});
}(jQuery);
+function($) {
function transitionEnd() {
var el = document.createElement("bootstrap");
var transEndEventNames = {
WebkitTransition: "webkitTransitionEnd",
MozTransition: "transitionend",
OTransition: "oTransitionEnd otransitionend",
transition: "transitionend"
};
for (var name in transEndEventNames) {
if (el.style[name] !== void 0) {
return { end: transEndEventNames[name] };
}
}
return false;
}
$.fn.emulateTransitionEnd = function(duration) {
var called = false;
var $el = this;
$(this).one("bsTransitionEnd", function() {
called = true;
});
var callback = function() {
if (!called) $($el).trigger($.support.transition.end);
};
setTimeout(callback, duration);
return this;
};
$(function() {
$.support.transition = transitionEnd();
if (!$.support.transition) return;
$.event.special.bsTransitionEnd = {
bindType: $.support.transition.end,
delegateType: $.support.transition.end,
handle: function(e) {
if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments);
}
};
});
}(jQuery);
(function() {
if (jQuery == void 0) {
console.log("Jquery not included!");
return;
}
var $ = jQuery;
function isIE_fun() {
var myNav = navigator.userAgent.toLowerCase();
return myNav.indexOf("msie") != -1 ? parseInt(myNav.split("msie")[1]) : false;
}
var isIE = isIE_fun();
var players = 0;
var youtube_api_state = 0;
var vimeo_api_state = 0;
jQuery.fn.extend({
ensureLoad: function(handler) {
return this.each(function() {
if (this.complete || this.readyState === 4) {
handler.call(this);
} else if (this.readyState === "uninitialized" && this.src.indexOf("data:") === 0) {
$(this).trigger("error");
handler.call(this);
} else {
$(this).one("load", handler);
if (isIE && this.src != void 0 && this.src.indexOf("?") == -1) {
this.src = this.src + "?" + (/* @__PURE__ */ new Date()).getTime();
}
}
});
}
});
window.video_background = function($holder, in_parameters) {
this.hidden = false;
this.$holder = $holder;
this.isVimeoPlaying = true;
this.isVimeoMute = 1;
this.id = "video_background_video_" + players;
players++;
this.parameters = {
position: "absolute",
"z-index": "-1",
video_ratio: false,
loop: true,
autoplay: true,
muted: false,
mp4: false,
webm: false,
ogg: false,
youtube: false,
vimeo: false,
controls: 1,
controls_position: "bottom-right",
priority: "html5",
fallback_image: false,
sizing: "fill",
// fill || adjust
start: 0,
video_overlay: 0,
mobile_play: "no",
tranitionIn: true
};
$.each(
in_parameters,
$.proxy(function(index, obj) {
this.parameters[index] = obj;
}, this)
);
this.$video_holder = $(
''
).appendTo($holder).css({
"z-index": this.parameters["z-index"],
position: this.parameters.position,
top: 0,
left: 0,
right: 0,
bottom: 0,
overflow: "hidden"
});
this.ismobile = navigator.userAgent.match(
/(iPad)|(iPhone)|(iPod)|(android)|(webOS)/i
);
this.decision = "image";
var allow_mobile_videos = ZionBuilderFrontend.allow_video_on_mobile;
if (!this.ismobile || allow_mobile_videos) {
this.decision = this.parameters.priority;
if (this.parameters.youtube !== false) {
this.decision = "youtube";
} else if (this.parameters.vimeo !== false) {
this.decision = "vimeo";
} else {
this.decision = "html5";
}
}
if (this.decision == "image") {
this.make_image();
} else if (this.decision == "youtube") {
this.make_youtube();
} else if (this.decision == "vimeo") {
this.make_vimeo();
} else {
this.make_video();
}
return this;
};
window.video_background.prototype = {
// Make html5 video
make_video: function() {
var parameters = (this.parameters.autoplay ? "autoplay " : "") + (this.parameters.loop ? 'loop onended="this.play()" ' : "");
parameters += this.parameters.muted ? " muted " : "";
var str = '";
this.$video = $(str).addClass("object-fit__cover");
this.$video_holder.append(this.$video);
this.video = this.$video.get(0);
if (typeof Modernizr == "object" && !Modernizr.objectfit) {
if (this.parameters.video_ratio !== false) {
this.resize_timeout = false;
$(window).resize(
$.proxy(function() {
clearTimeout(this.resize_timeout);
this.resize_timeout = setTimeout(
$.proxy(this.video_resize, this),
10
);
}, this)
);
this.video_resize();
}
} else {
this.$video.css({ width: "100%", height: "100%" });
}
this.$video_holder.closest(".zn-videoBg").addClass("is-loaded");
if (this.parameters.muted) {
this.mute();
}
if (this.parameters.controls) {
this.make_controls();
}
},
video_resize: function(self2) {
this.$video = typeof self2 !== "undefined" && self2 === true ? this.$video.children("iframe") : this.$video;
var w = this.$video_holder.width();
var h = this.$video_holder.height();
var new_width = w;
var new_height = w / this.parameters.video_ratio;
if (new_height < h) {
new_height = h;
new_width = h * this.parameters.video_ratio;
}
new_height = Math.ceil(new_height);
new_width = Math.ceil(new_width);
var top = Math.round(h / 2 - new_height / 2);
var left = Math.round(w / 2 - new_width / 2);
this.$video.attr("width", new_width);
this.$video.attr("height", new_height);
this.$video.css({
position: "absolute",
top: top + "px",
left: left + "px"
});
},
//Make youtube
make_youtube: function() {
var $html = $("html");
var pars = {
loop: this.parameters.loop ? 1 : 0,
start: this.parameters.start,
autoplay: this.parameters.autoplay ? 1 : 0,
controls: 0,
showinfo: 0,
wmode: "transparent",
iv_load_policy: 3,
modestbranding: 1,
rel: 0,
mute: this.parameters.muted ? 1 : 0
};
if (this.parameters.loop) {
pars["playlist"] = this.parameters.youtube;
}
this.$video = $(
''
).appendTo(this.$video_holder).css({
position: "absolute"
});
this.youtube_ready = false;
if (youtube_api_state == 0) {
var tag = document.createElement("script");
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName("script")[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
youtube_api_state = 1;
window.onYouTubeIframeAPIReady = $.proxy(function() {
$html.trigger("yt_loaded");
this.build_youtube();
youtube_api_state = 2;
}, this);
} else if (youtube_api_state == 1) {
$html.bind("yt_loaded", $.proxy(this.build_youtube, this));
} else if (youtube_api_state == 2) {
this.build_youtube();
}
},
build_youtube: function() {
this.player = new YT.Player(this.id + "_yt", {
height: "100%",
width: "100%",
videoId: this.parameters.youtube,
events: {
onReady: $.proxy(this.youtube_ready_fun, this)
}
});
},
youtube_ready_fun: function(event) {
this.youtube_ready = true;
this.$video = $("#" + this.id + "_yt");
this.$video_holder.closest(".zn-videoBg").addClass("is-loaded");
if (this.parameters.video_ratio !== false) {
this.resize_timeout = false;
$(window).resize(
$.proxy(function() {
clearTimeout(this.resize_timeout);
this.resize_timeout = setTimeout(
$.proxy(this.video_resize, this),
10
);
}, this)
);
this.video_resize();
}
if (this.parameters.muted) {
this.mute();
}
if (this.parameters.controls) {
this.make_controls();
}
},
//Make vimeo
make_vimeo: function() {
$("html");
this.$video = $('').appendTo(this.$video_holder).css({
position: "absolute",
top: 0,
left: 0,
right: 0,
bottom: 0
});
this.vimeo_ready = false;
if (vimeo_api_state === 0) {
$.getScript(
"//player.vimeo.com/api/player.js",
$.proxy(function() {
this.build_vimeo();
vimeo_api_state = 1;
}, this)
);
} else if (vimeo_api_state == 1) {
this.build_vimeo();
}
},
build_vimeo: function() {
console.log(this.parameters);
var pars = {
id: this.parameters.vimeo,
loop: this.parameters.loop ? 1 : 0,
autoplay: this.parameters.autoplay ? 1 : 0,
muted: this.parameters.muted ? 1 : 0
};
this.player = new Vimeo.Player(this.id + "_vm", pars);
var self2 = this;
this.player.on("loaded", function() {
self2.vimeo_ready_fun();
});
this.player.on("play", function() {
self2.isVimeoPlaying = true;
});
this.player.on("pause", function() {
self2.isVimeoPlaying = false;
});
this.player.getPaused().then(function(paused) {
self2.isVimeoPlaying = !paused;
});
this.player.on("volumechange", function(e) {
self2.isVimeoMute = e.volume === 0 ? true : false;
});
},
vimeo_ready_fun: function(event) {
this.vimeo_ready = true;
this.$video = $("#" + this.id + "_vm");
this.$video_holder.closest(".zn-videoBg").addClass("is-loaded");
if (this.parameters.video_ratio !== false) {
this.resize_timeout = false;
$(window).resize(
$.proxy(function() {
clearTimeout(this.resize_timeout);
this.resize_timeout = setTimeout(
$.proxy(this.video_resize, this),
10
);
}, this)
);
this.video_resize(true);
}
if (this.parameters.start) {
this.player.setCurrentTime(this.parameters.start);
}
if (this.parameters.muted) {
this.isVimeoMute = true;
this.mute();
}
if (this.parameters.controls) {
this.make_controls();
}
},
make_controls: function() {
var self2 = this, $controls;
$controls = '";
$($controls).appendTo(this.$video_holder);
this.$video_holder.find(".btn-toggleplay").on("click", function(e) {
e.preventDefault();
self2.toggle_play();
$(this).children("i").toggleClass("paused");
});
this.$video_holder.find(".btn-audio").on("click", function(e) {
e.preventDefault();
self2.toggle_mute();
$(this).children("i").toggleClass("mute");
});
},
// Make image
make_image: function() {
if (this.parameters.fallback_image === false || this.parameters.fallback_image == "") {
return;
}
this.$img = $(
'
'
).appendTo(this.$video_holder).css({
position: "absolute"
});
if (typeof Modernizr == "object" && !Modernizr.objectfit) {
this.$img.ensureLoad($.proxy(this.image_loaded, this));
} else {
this.$img.css({ width: "100%", height: "100%" });
}
this.$video_holder.closest(".zn-videoBg").addClass("is-loaded");
},
image_loaded: function() {
this.original_width = this.$img.width();
this.original_height = this.$img.height();
this.resize_timeout = false;
$(window).resize(
$.proxy(function() {
clearTimeout(this.resize_timeout);
this.resize_timeout = setTimeout(
$.proxy(this.image_resize, this),
10
);
}, this)
);
this.image_resize();
},
image_resize: function() {
var w = this.$video_holder.width();
var h = this.$video_holder.height();
var new_width = w;
var new_height = this.original_height / (this.original_width / w);
if (this.parameters.sizing == "adjust" && new_height > h || this.parameters.sizing == "fill" && new_height < h) {
new_height = h;
new_width = this.original_width / (this.original_height / h);
}
new_height = Math.ceil(new_height);
new_width = Math.ceil(new_width);
var top = Math.round(h / 2 - new_height / 2);
var left = Math.round(w / 2 - new_width / 2);
this.$img.css({
width: new_width + "px",
height: new_height + "px",
top: top + "px",
left: left + "px"
});
},
// User Callable Functions
funcIsVimeoPlaying: function(value) {
this.isVimeoPlaying = value;
},
isPlaying: function() {
if (this.decision == "html5") return !this.video.paused;
else if (this.decision == "youtube" && this.youtube_ready)
return this.player.getPlayerState() === 1;
else if (this.decision == "vimeo" && this.vimeo_ready) {
var self2 = this;
this.player.getPaused().then(function(paused) {
self2.funcIsVimeoPlaying(!paused);
});
return this.isVimeoPlaying;
}
return false;
},
// Play
play: function() {
if (this.decision == "html5") this.video.play();
else if (this.decision == "youtube" && this.youtube_ready)
this.player.playVideo();
else if (this.decision == "vimeo" && this.vimeo_ready) this.player.play();
},
// Pause
pause: function() {
if (this.decision == "html5") this.video.pause();
else if (this.decision == "youtube" && this.youtube_ready)
this.player.pauseVideo();
else if (this.decision == "vimeo" && this.vimeo_ready)
this.player.pause();
},
// Toogle play
toggle_play: function() {
if (this.isPlaying()) {
this.pause();
} else this.play();
},
funcIsVimeoMute: function(value) {
this.isVimeoMute = value;
},
// Is mute
isMuted: function() {
if (this.decision == "html5") return !this.video.volume;
else if (this.decision == "youtube" && this.youtube_ready)
return this.player.isMuted();
else if (this.decision == "vimeo" && this.vimeo_ready) {
var self2 = this;
this.player.getVolume().then(function(volume) {
self2.funcIsVimeoMute(volume === 0 ? true : false);
});
return this.isVimeoMute;
}
return false;
},
// Mute
mute: function() {
if (this.decision == "html5") this.video.volume = 0;
else if (this.decision == "youtube" && this.youtube_ready)
this.player.mute();
else if (this.decision == "vimeo" && this.vimeo_ready) {
this.player.setVolume(0);
}
},
//Unmute
unmute: function() {
if (this.decision == "html5") this.video.volume = 1;
else if (this.decision == "youtube" && this.youtube_ready)
this.player.unMute();
else if (this.decision == "vimeo" && this.vimeo_ready)
this.player.setVolume(1);
},
//Toogle mute
toggle_mute: function() {
if (this.isMuted()) this.unmute();
else this.mute();
},
//Hide
hide: function() {
this.pause();
this.$video_holder.stop().fadeTo(700, 0);
this.hidden = true;
},
//Show
show: function() {
this.play();
this.$video_holder.stop().fadeTo(700, 1);
this.hidden = false;
},
//Toogle Hidden
toogle_hidden: function() {
if (this.hidden) this.show();
else this.hide();
},
//Rewind
rewind: function() {
if (this.decision == "html5") this.video.currentTime = 0;
else if (this.decision == "youtube" && this.youtube_ready)
this.player.seekTo(0);
else if (this.decision == "vimeo" && this.vimeo_ready)
this.player.setCurrentTime(0);
}
};
})();
var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
function getDefaultExportFromCjs(x) {
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
}
var rellax = { exports: {} };
(function(module) {
(function(root, factory) {
if (module.exports) {
module.exports = factory();
} else {
root.Rellax = factory();
}
})(typeof window !== "undefined" ? window : commonjsGlobal, function() {
var Rellax2 = function(el, options) {
var self2 = Object.create(Rellax2.prototype);
var posY = 0;
var screenY = 0;
var posX = 0;
var screenX = 0;
var blocks = [];
var pause = true;
var loop = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.msRequestAnimationFrame || window.oRequestAnimationFrame || function(callback) {
return setTimeout(callback, 1e3 / 60);
};
var loopId = null;
var supportsPassive = false;
try {
var opts = Object.defineProperty({}, "passive", {
get: function() {
supportsPassive = true;
}
});
window.addEventListener("testPassive", null, opts);
window.removeEventListener("testPassive", null, opts);
} catch (e) {
}
var clearLoop = window.cancelAnimationFrame || window.mozCancelAnimationFrame || clearTimeout;
var transformProp = window.transformProp || function() {
var testEl = document.createElement("div");
if (testEl.style.transform === null) {
var vendors = ["Webkit", "Moz", "ms"];
for (var vendor in vendors) {
if (testEl.style[vendors[vendor] + "Transform"] !== void 0) {
return vendors[vendor] + "Transform";
}
}
}
return "transform";
}();
self2.options = {
speed: -2,
verticalSpeed: null,
horizontalSpeed: null,
breakpoints: [576, 768, 1201],
center: false,
wrapper: null,
relativeToWrapper: false,
round: true,
vertical: true,
horizontal: false,
verticalScrollAxis: "y",
horizontalScrollAxis: "x",
callback: function() {
}
};
if (options) {
Object.keys(options).forEach(function(key) {
self2.options[key] = options[key];
});
}
function validateCustomBreakpoints() {
if (self2.options.breakpoints.length === 3 && Array.isArray(self2.options.breakpoints)) {
var isAscending = true;
var isNumerical = true;
var lastVal;
self2.options.breakpoints.forEach(function(i) {
if (typeof i !== "number") isNumerical = false;
if (lastVal !== null) {
if (i < lastVal) isAscending = false;
}
lastVal = i;
});
if (isAscending && isNumerical) return;
}
self2.options.breakpoints = [576, 768, 1201];
console.warn("Rellax: You must pass an array of 3 numbers in ascending order to the breakpoints option. Defaults reverted");
}
if (options && options.breakpoints) {
validateCustomBreakpoints();
}
if (!el) {
el = ".rellax";
}
var elements = typeof el === "string" ? document.querySelectorAll(el) : [el];
if (elements.length > 0) {
self2.elems = elements;
} else {
console.warn("Rellax: The elements you're trying to select don't exist.");
return;
}
if (self2.options.wrapper) {
if (!self2.options.wrapper.nodeType) {
var wrapper = document.querySelector(self2.options.wrapper);
if (wrapper) {
self2.options.wrapper = wrapper;
} else {
console.warn("Rellax: The wrapper you're trying to use doesn't exist.");
return;
}
}
}
var currentBreakpoint;
var getCurrentBreakpoint = function(w) {
var bp = self2.options.breakpoints;
if (w < bp[0]) return "xs";
if (w >= bp[0] && w < bp[1]) return "sm";
if (w >= bp[1] && w < bp[2]) return "md";
return "lg";
};
var cacheBlocks = function() {
for (var i = 0; i < self2.elems.length; i++) {
var block = createBlock(self2.elems[i]);
blocks.push(block);
}
};
var init = function() {
for (var i = 0; i < blocks.length; i++) {
self2.elems[i].style.cssText = blocks[i].style;
}
blocks = [];
screenY = window.innerHeight;
screenX = window.innerWidth;
currentBreakpoint = getCurrentBreakpoint(screenX);
setPosition();
cacheBlocks();
animate();
if (pause) {
window.addEventListener("resize", init);
pause = false;
update();
}
};
var createBlock = function(el2) {
var dataPercentage = el2.getAttribute("data-rellax-percentage");
var dataSpeed = el2.getAttribute("data-rellax-speed");
var dataXsSpeed = el2.getAttribute("data-rellax-xs-speed");
var dataMobileSpeed = el2.getAttribute("data-rellax-mobile-speed");
var dataTabletSpeed = el2.getAttribute("data-rellax-tablet-speed");
var dataDesktopSpeed = el2.getAttribute("data-rellax-desktop-speed");
var dataVerticalSpeed = el2.getAttribute("data-rellax-vertical-speed");
var dataHorizontalSpeed = el2.getAttribute("data-rellax-horizontal-speed");
var dataVericalScrollAxis = el2.getAttribute("data-rellax-vertical-scroll-axis");
var dataHorizontalScrollAxis = el2.getAttribute("data-rellax-horizontal-scroll-axis");
var dataZindex = el2.getAttribute("data-rellax-zindex") || 0;
var dataMin = el2.getAttribute("data-rellax-min");
var dataMax = el2.getAttribute("data-rellax-max");
var dataMinX = el2.getAttribute("data-rellax-min-x");
var dataMaxX = el2.getAttribute("data-rellax-max-x");
var dataMinY = el2.getAttribute("data-rellax-min-y");
var dataMaxY = el2.getAttribute("data-rellax-max-y");
var mapBreakpoints;
var breakpoints = true;
if (!dataXsSpeed && !dataMobileSpeed && !dataTabletSpeed && !dataDesktopSpeed) {
breakpoints = false;
} else {
mapBreakpoints = {
"xs": dataXsSpeed,
"sm": dataMobileSpeed,
"md": dataTabletSpeed,
"lg": dataDesktopSpeed
};
}
var wrapperPosY = self2.options.wrapper ? self2.options.wrapper.scrollTop : window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
if (self2.options.relativeToWrapper) {
var scrollPosY = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
wrapperPosY = scrollPosY - self2.options.wrapper.offsetTop;
}
var posY2 = self2.options.vertical ? dataPercentage || self2.options.center ? wrapperPosY : 0 : 0;
var posX2 = self2.options.horizontal ? dataPercentage || self2.options.center ? self2.options.wrapper ? self2.options.wrapper.scrollLeft : window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft : 0 : 0;
var blockTop = posY2 + el2.getBoundingClientRect().top;
var blockHeight = el2.clientHeight || el2.offsetHeight || el2.scrollHeight;
var blockLeft = posX2 + el2.getBoundingClientRect().left;
var blockWidth = el2.clientWidth || el2.offsetWidth || el2.scrollWidth;
var percentageY = dataPercentage ? dataPercentage : (posY2 - blockTop + screenY) / (blockHeight + screenY);
var percentageX = dataPercentage ? dataPercentage : (posX2 - blockLeft + screenX) / (blockWidth + screenX);
if (self2.options.center) {
percentageX = 0.5;
percentageY = 0.5;
}
var speed = breakpoints && mapBreakpoints[currentBreakpoint] !== null ? Number(mapBreakpoints[currentBreakpoint]) : dataSpeed ? dataSpeed : self2.options.speed;
var verticalSpeed = dataVerticalSpeed ? dataVerticalSpeed : self2.options.verticalSpeed;
var horizontalSpeed = dataHorizontalSpeed ? dataHorizontalSpeed : self2.options.horizontalSpeed;
var verticalScrollAxis = dataVericalScrollAxis ? dataVericalScrollAxis : self2.options.verticalScrollAxis;
var horizontalScrollAxis = dataHorizontalScrollAxis ? dataHorizontalScrollAxis : self2.options.horizontalScrollAxis;
var bases = updatePosition(percentageX, percentageY, speed, verticalSpeed, horizontalSpeed);
var style = el2.style.cssText;
var transform = "";
var searchResult = /transform\s*:/i.exec(style);
if (searchResult) {
var index = searchResult.index;
var trimmedStyle = style.slice(index);
var delimiter = trimmedStyle.indexOf(";");
if (delimiter) {
transform = " " + trimmedStyle.slice(11, delimiter).replace(/\s/g, "");
} else {
transform = " " + trimmedStyle.slice(11).replace(/\s/g, "");
}
}
return {
baseX: bases.x,
baseY: bases.y,
top: blockTop,
left: blockLeft,
height: blockHeight,
width: blockWidth,
speed,
verticalSpeed,
horizontalSpeed,
verticalScrollAxis,
horizontalScrollAxis,
style,
transform,
zindex: dataZindex,
min: dataMin,
max: dataMax,
minX: dataMinX,
maxX: dataMaxX,
minY: dataMinY,
maxY: dataMaxY
};
};
var setPosition = function() {
var oldY = posY;
var oldX = posX;
posY = self2.options.wrapper ? self2.options.wrapper.scrollTop : (document.documentElement || document.body.parentNode || document.body).scrollTop || window.pageYOffset;
posX = self2.options.wrapper ? self2.options.wrapper.scrollLeft : (document.documentElement || document.body.parentNode || document.body).scrollLeft || window.pageXOffset;
if (self2.options.relativeToWrapper) {
var scrollPosY = (document.documentElement || document.body.parentNode || document.body).scrollTop || window.pageYOffset;
posY = scrollPosY - self2.options.wrapper.offsetTop;
}
if (oldY != posY && self2.options.vertical) {
return true;
}
if (oldX != posX && self2.options.horizontal) {
return true;
}
return false;
};
var updatePosition = function(percentageX, percentageY, speed, verticalSpeed, horizontalSpeed) {
var result = {};
var valueX = (horizontalSpeed ? horizontalSpeed : speed) * (100 * (1 - percentageX));
var valueY = (verticalSpeed ? verticalSpeed : speed) * (100 * (1 - percentageY));
result.x = self2.options.round ? Math.round(valueX) : Math.round(valueX * 100) / 100;
result.y = self2.options.round ? Math.round(valueY) : Math.round(valueY * 100) / 100;
return result;
};
var deferredUpdate = function() {
window.removeEventListener("resize", deferredUpdate);
window.removeEventListener("orientationchange", deferredUpdate);
(self2.options.wrapper ? self2.options.wrapper : window).removeEventListener("scroll", deferredUpdate);
(self2.options.wrapper ? self2.options.wrapper : document).removeEventListener("touchmove", deferredUpdate);
loopId = loop(update);
};
var update = function() {
if (setPosition() && pause === false) {
animate();
loopId = loop(update);
} else {
loopId = null;
window.addEventListener("resize", deferredUpdate);
window.addEventListener("orientationchange", deferredUpdate);
(self2.options.wrapper ? self2.options.wrapper : window).addEventListener("scroll", deferredUpdate, supportsPassive ? { passive: true } : false);
(self2.options.wrapper ? self2.options.wrapper : document).addEventListener("touchmove", deferredUpdate, supportsPassive ? { passive: true } : false);
}
};
var animate = function() {
var positions;
for (var i = 0; i < self2.elems.length; i++) {
var verticalScrollAxis = blocks[i].verticalScrollAxis.toLowerCase();
var horizontalScrollAxis = blocks[i].horizontalScrollAxis.toLowerCase();
var verticalScrollX = verticalScrollAxis.indexOf("x") != -1 ? posY : 0;
var verticalScrollY = verticalScrollAxis.indexOf("y") != -1 ? posY : 0;
var horizontalScrollX = horizontalScrollAxis.indexOf("x") != -1 ? posX : 0;
var horizontalScrollY = horizontalScrollAxis.indexOf("y") != -1 ? posX : 0;
var percentageY = (verticalScrollY + horizontalScrollY - blocks[i].top + screenY) / (blocks[i].height + screenY);
var percentageX = (verticalScrollX + horizontalScrollX - blocks[i].left + screenX) / (blocks[i].width + screenX);
positions = updatePosition(percentageX, percentageY, blocks[i].speed, blocks[i].verticalSpeed, blocks[i].horizontalSpeed);
var positionY = positions.y - blocks[i].baseY;
var positionX = positions.x - blocks[i].baseX;
if (blocks[i].min !== null) {
if (self2.options.vertical && !self2.options.horizontal) {
positionY = positionY <= blocks[i].min ? blocks[i].min : positionY;
}
if (self2.options.horizontal && !self2.options.vertical) {
positionX = positionX <= blocks[i].min ? blocks[i].min : positionX;
}
}
if (blocks[i].minY != null) {
positionY = positionY <= blocks[i].minY ? blocks[i].minY : positionY;
}
if (blocks[i].minX != null) {
positionX = positionX <= blocks[i].minX ? blocks[i].minX : positionX;
}
if (blocks[i].max !== null) {
if (self2.options.vertical && !self2.options.horizontal) {
positionY = positionY >= blocks[i].max ? blocks[i].max : positionY;
}
if (self2.options.horizontal && !self2.options.vertical) {
positionX = positionX >= blocks[i].max ? blocks[i].max : positionX;
}
}
if (blocks[i].maxY != null) {
positionY = positionY >= blocks[i].maxY ? blocks[i].maxY : positionY;
}
if (blocks[i].maxX != null) {
positionX = positionX >= blocks[i].maxX ? blocks[i].maxX : positionX;
}
var zindex = blocks[i].zindex;
var translate = "translate3d(" + (self2.options.horizontal ? positionX : "0") + "px," + (self2.options.vertical ? positionY : "0") + "px," + zindex + "px) " + blocks[i].transform;
self2.elems[i].style[transformProp] = translate;
}
self2.options.callback(positions);
};
self2.destroy = function() {
for (var i = 0; i < self2.elems.length; i++) {
self2.elems[i].style.cssText = blocks[i].style;
}
if (!pause) {
window.removeEventListener("resize", init);
pause = true;
}
clearLoop(loopId);
loopId = null;
};
init();
self2.refresh = init;
return self2;
};
return Rellax2;
});
})(rellax);
var rellaxExports = rellax.exports;
const Rellax = /* @__PURE__ */ getDefaultExportFromCjs(rellaxExports);
/*!
* znParallax - Parallax jQuery Plugin
* Based on Parallux Responsive jQuery Parallax plugin
* Original author: @tomsarduy
* Licensed under the MIT license
*/
(function($, window2) {
var pluginName = "znParallax", $window = $(window2), is_mobile = false, winHeight = $window.height(), rendered = false, defaults = {
bleed: 0
};
function debounce(func, wait, immediate) {
var timeout;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
func.apply(context, args);
};
clearTimeout(timeout);
timeout = setTimeout(later, wait || 100);
};
}
function Plugin(element, options) {
this.element = element;
this.options = $.extend({}, defaults, options);
this._defaults = defaults;
this._name = pluginName;
this.init(element);
}
Plugin.prototype = {
init: function(element) {
var self2 = this, $el = $(element);
this.$par = $el.parent();
this.$bg = $el.children().first();
this.scaleFactor = this.options.bleed ? "scale(" + this.options.bleed + ")" : "";
this.updateStuff();
this.render();
if (!$el.hasClass("is-fixed")) {
$el.addClass("is-fixed");
}
is_mobile = this.mobileCheck();
var event = typeof window2.isSmoothScroll !== "undefined" ? "smoothScrollCustomEvent scroll" : "scroll";
$window.on(event, function() {
self2.mobileCheck();
if (!is_mobile) {
self2.updateStuff();
self2.render();
}
});
$window.on("orientationchange resize", debounce(function() {
self2.mobileCheck();
if (!is_mobile) {
self2.updateStuff();
if (!$el.hasClass("is-fixed")) {
$el.addClass("is-fixed");
}
} else {
self2.disableParallax();
}
}));
},
mobileCheck: function() {
var hasTouch = typeof Modernizr === "object" && Modernizr.touchevents || false;
is_mobile = hasTouch && window2.matchMedia("(max-width: 1024px)").matches;
},
updateStuff: function() {
var self2 = this;
var updateValues = function() {
winHeight = $window.height();
self2.parTop = self2.$par.offset().top;
self2.parLeft = Math.ceil(!self2.isRtl() ? self2.$par.offset().left : "-" + ($window.width() - (self2.$par.offset().left + self2.$par.outerWidth())));
self2.parWidth = self2.$par.outerWidth();
self2.parHeight = self2.$par.outerHeight();
$(self2.element).css({ height: self2.parHeight, width: self2.parWidth });
};
debounce(updateValues(), 200);
},
isRtl: function() {
var $html = $("html");
return $html.is("[dir]") && $html.attr("dir") === "rtl";
},
//The Parallax rendering, magic happens here
render: function() {
var $el = $(this.element);
var $scrollY = window2.scrollY || window2.pageYOffset || 0;
var $winST = $window.scrollTop();
if (!rendered || $winST + winHeight >= this.parTop && $winST <= this.parTop + this.parHeight) {
var $diffElem = (($scrollY - this.parTop) / 1.3).toFixed(0);
$el.addClass("is-visible");
$el.css({ "transform": "translate3d(" + this.parLeft + "px," + (this.parTop - $scrollY) + "px,0)" + this.scaleFactor });
this.$bg.css("transform", "translate3d(0," + $diffElem + "px,0)");
rendered = true;
} else {
$el.removeClass("is-visible");
}
},
disableParallax: function() {
$(this.element).removeClass("is-fixed").css({ "transform": "", "height": "" });
this.$bg.css("transform", "");
}
};
$.fn[pluginName] = function(options) {
return this.each(function() {
if (!$.data(this, "plugin_" + pluginName)) {
$.data(
this,
"plugin_" + pluginName,
new Plugin(this, options)
);
}
});
};
})(jQuery, window);
(function($) {
$.ZnbFrontendJs = function() {
this.scope = $(document);
this.zinit();
};
$.ZnbFrontendJs.prototype = {
zinit: function() {
var fw = this;
fw.addActions();
fw.initHelpers($(document));
fw.refresh_events($(document));
$(document).trigger("ZnbFrontendJsReady", this);
},
refresh_events: function(content) {
var fw = this;
fw.contact_forms(content);
fw.doParallax(content);
fw.doObjectParallax(content);
fw.background_video(content);
fw.entryAnimations(content);
fw.objectFitCover(content);
},
RefreshOnWidthChange: function(content) {
},
addActions: function() {
var fw = this;
fw.scope.on("ZnWidthChanged", function(e) {
fw.RefreshOnWidthChange(e.content);
$(window).trigger("resize");
});
fw.scope.on("ZnNewContent", function(e) {
fw.refresh_events(e.content);
});
},
unbind_events: function(scope) {
},
initHelpers: function(scope) {
var fw = this;
this.helpers = {};
this.helpers.IsJsonString = function(a) {
try {
JSON.parse(a);
} catch (e) {
return false;
}
return true;
};
this.helpers.is_null = function(a) {
return a === null;
};
this.helpers.is_undefined = function(a) {
return typeof a == "undefined" || a === null || a === "" || a === "undefined";
};
this.helpers.is_number = function(a) {
return (a instanceof Number || typeof a == "number") && !isNaN(a);
};
this.helpers.is_true = function(a) {
return a === true || a === "true";
};
this.helpers.is_false = function(a) {
return a === false || a === "false";
};
this.helpers.throttle = function(func, wait, options) {
var timeout, context, args, result;
var previous = 0;
if (!options) options = {};
var later = function() {
previous = options.leading === false ? 0 : fw.helpers.date_now;
timeout = null;
result = func.apply(context, args);
if (!timeout) context = args = null;
};
var throttled = function() {
var now = fw.helpers.date_now;
if (!previous && options.leading === false) previous = now;
var remaining = wait - (now - previous);
context = this;
args = arguments;
if (remaining <= 0 || remaining > wait) {
if (timeout) {
clearTimeout(timeout);
timeout = null;
}
previous = now;
result = func.apply(context, args);
if (!timeout) context = args = null;
} else if (!timeout && options.trailing !== false) {
timeout = setTimeout(later, remaining);
}
return result;
};
throttled.cancel = function() {
clearTimeout(timeout);
previous = 0;
timeout = context = args = null;
};
return throttled;
};
this.helpers.debounce = function(func, wait, immediate) {
var timeout;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
if (!immediate) func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
};
this.helpers.isInViewport = function(element) {
var rect = element.getBoundingClientRect();
var html = document.documentElement;
var tolerance = rect.height * 0.75;
return rect.top >= -tolerance && rect.bottom <= (window.innerHeight || html.clientHeight) + tolerance;
};
this.helpers.date_now = Date.now || function() {
return (/* @__PURE__ */ new Date()).getTime();
};
this.helpers.hasTouch = typeof Modernizr == "object" && Modernizr.touchevents || false;
this.helpers.hasTouchMobile = this.helpers.hasTouch && window.matchMedia("(max-width: 1024px)").matches;
this.helpers.ua = navigator.userAgent || "";
this.helpers.is_mobile_ie = -1 !== this.helpers.ua.indexOf("IEMobile");
this.helpers.is_firefox = -1 !== this.helpers.ua.indexOf("Firefox");
this.helpers.isAtLeastIE11 = !!(this.helpers.ua.match(/Trident/) && !this.helpers.ua.match(/MSIE/));
this.helpers.isIE11 = !!(this.helpers.ua.match(/Trident/) && this.helpers.ua.match(/rv[ :]11/));
this.helpers.isMac = /^Mac/.test(navigator.platform);
this.helpers.is_safari = /^((?!chrome|android).)*safari/i.test(
this.helpers.ua
);
this.helpers.isIE10 = navigator.userAgent.match("MSIE 10");
this.helpers.isIE9 = navigator.userAgent.match("MSIE 9");
this.helpers.is_EDGE = /Edge\/12./i.test(this.helpers.ua);
this.helpers.is_pb = !this.helpers.is_undefined(window.ZnPbData);
var $body = $("body");
if (this.helpers.is_EDGE) $body.addClass("is-edge");
if (this.helpers.isIE11) $body.addClass("is-ie11");
if (this.helpers.is_safari) $body.addClass("is-safari");
},
contact_forms: function(scope) {
var fw = this, element = scope ? scope.find(".zn-contactForm") : $(".zn-contactForm");
element.each(function(index, el) {
var $el = $(el), time_picker = $el.find(".zn-formItem-field--timepicker"), date_picker = $el.find(".zn-formItem-field--datepicker"), datepicker_lang = date_picker.is("[data-datepickerlang]") ? date_picker.attr("data-datepickerlang") : "", date_format = date_picker.is("[data-dateformat]") ? date_picker.attr("data-dateformat") : "yy-mm-dd", timeformat = time_picker.is("[data-timeformat]") ? time_picker.attr("data-timeformat") : "h:i A";
if (time_picker.length > 0) {
time_picker.timepicker({
timeFormat: timeformat,
className: "cf-elm-tp"
});
}
if (date_picker.length > 0) {
date_picker.datepicker({
dateFormat: date_format,
showOtherMonths: true
}).datepicker("widget").wrap('');
if (datepicker_lang !== "") {
$.datepicker.setDefaults($.datepicker.regional[datepicker_lang]);
}
}
$el.on("submit", function(e) {
e.preventDefault();
if (fw.form_submitting === true) {
return false;
}
fw.form_submitting = true;
var form = $(this), response_container = form.find(".zn_contact_ajax_response:eq(0)"), has_error = false, inputs = {
fields: form.find(
'textarea, select, input[type="text"], input[type="checkbox"], input[type="hidden"]'
)
}, form_id = response_container.attr("id"), submit_button = form.find(".zn-formSubmit");
if ((fw.helpers.isIE11 || fw.helpers.isIE10 || fw.helpers.isIE9) && form.is('[action="#"]')) {
form.attr("action", "");
}
submit_button.addClass("zn-contactForm--loading");
inputs.fields.each(function() {
var field = $(this), p_container = field.parent();
if (field.is(":checkbox")) {
if (field.is(":checked")) {
field.val(true);
} else {
field.val("");
}
}
p_container.removeClass("zn-formItem--invalid");
if (field.hasClass("zn_validate_not_empty")) {
if (field.is(":checkbox")) {
if (!field.is(":checked")) {
p_container.addClass("zn-formItem--invalid");
has_error = true;
}
} else {
if (field.val() === "") {
p_container.addClass("zn-formItem--invalid");
has_error = true;
}
}
} else if (field.hasClass("zn_validate_is_email")) {
if (!field.val().match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/)) {
p_container.addClass("zn-formItem--invalid");
has_error = true;
}
} else if (field.hasClass("zn_validate_is_numeric")) {
if (isNaN(field.val())) {
p_container.addClass("zn-formItem--invalid");
has_error = true;
}
}
});
if (has_error) {
submit_button.removeClass("zn-contactForm--loading");
fw.form_submitting = false;
return false;
}
var data = form.serialize();
$.post(form.attr("action"), data).success(function(result) {
fw.form_submitting = false;
submit_button.removeClass("zn-contactForm--loading");
var response = $(result).find(
"#" + form_id + " > .zn_cf_response"
), responseContainer = $("#" + form_id), redirect_uri = form.data("redirect");
responseContainer.html(response);
if (response.hasClass("alert-success")) {
inputs.fields.val("");
if (redirect_uri) {
window.location.replace(redirect_uri);
}
}
}).error(function() {
console.log("Error loading page");
});
return false;
});
});
},
/**
* Easy Video Background
* Based on easy background video plugin
* Example data setup attribute:
* data-video-setup='{ "position": absolute, "loop": true , "autoplay": true, "muted": true, "mp4":"", "webm":"", "ogg":"" }'
*/
background_video: function(scope) {
var fw = this, elements = scope.find(".zn-videoBg:not(.zn-videoBg--no-init)");
if (!elements.length) return;
elements.each(function(index, el) {
var $video = $(el), $options = $video.is("[data-video-setup]") && fw.helpers.IsJsonString($video.attr("data-video-setup")) ? JSON.parse($video.attr("data-video-setup")) : {};
if (typeof window.video_background != "undefined") {
new window.video_background($video, $options);
}
});
},
doParallax: function(scope) {
var fw = this, $el = $(".js-znParallax", $(scope));
if ($el.length > 0 && !fw.helpers.hasTouchMobile && typeof $.fn.znParallax != "undefined") {
$el.znParallax();
}
},
doObjectParallax: function(scope) {
var fw = this, $el = $(".js-doObjParallax", $(scope));
if ($el.length > 0 && !fw.helpers.hasTouchMobile && !fw.helpers.is_mobile_ie && typeof Rellax != "undefined") {
new Rellax(".js-doObjParallax");
}
},
entryAnimations: function(scope) {
var fw = this, elements = $(scope).find(".zn-animateInViewport"), is = [];
if (elements.length > 0) {
elements.each(function(i, el) {
var $el = $(el);
$el.css("animation-delay", $el.attr("data-anim-delay"));
function animateEntrance() {
if ($(el).parent().hasClass("eluida7543286")) {
console.log(fw.helpers.isInViewport(el));
}
if (!is[i] && fw.helpers.isInViewport(el)) {
$el.removeClass("zn-animateInViewport").addClass("is-animating");
is[i] = true;
}
}
animateEntrance();
$(window).on("scroll", animateEntrance);
});
}
},
objectFitCover: function(scope) {
var fw = this;
function coverFillSwitch(container, obj, invert) {
if (!container || !obj) return false;
var objHeight = obj.naturalHeight || obj.videoHeight;
var objWidth = obj.naturalWidth || obj.videoWidth;
var containerRatio = container.offsetWidth / container.offsetHeight;
var objRatio = objWidth / objHeight;
var ratioComparison = false;
if (objRatio >= containerRatio) ratioComparison = true;
if (ratioComparison) {
obj.style.height = "100%";
obj.style.width = "auto";
} else {
obj.style.height = "auto";
obj.style.width = "100%";
}
}
function applyStandardProperties(container, obj) {
var containerStyle = window.getComputedStyle(container);
if (containerStyle.overflow !== "hidden")
container.style.overflow = "hidden";
if (containerStyle.position !== "relative" && containerStyle.position !== "absolute" && containerStyle.position !== "fixed")
container.style.position = "relative";
obj.style.position = "absolute";
obj.style.top = "50%";
obj.style.left = "50%";
obj.style.transform = "translate(-50%,-50%)";
}
function objectFitInt(el) {
var objs = document.getElementsByClassName(el);
for (var i = 0; i < objs.length; i++) {
var obj = objs[i];
var container = obj.parentElement;
coverFillSwitch(container, obj);
applyStandardProperties(container, obj);
}
}
if (typeof Modernizr == "object" && !Modernizr.objectfit) {
window.addEventListener(
"load",
objectFitInt("object-fit__cover"),
false
);
window.addEventListener(
"resize",
fw.helpers.throttle(function() {
var i, obj, container;
var objsCover = document.getElementsByClassName("object-fit__cover");
for (i = 0; i < objsCover.length; i++) {
obj = objsCover[i];
container = obj.parentElement;
coverFillSwitch(container, obj);
}
}, 100),
false
);
}
if ($(".js-object-fit-cover", scope).length !== 0) {
window.addEventListener(
"load",
objectFitInt("js-object-fit-cover"),
false
);
window.addEventListener(
"resize",
fw.helpers.throttle(function() {
var i, obj, container;
var objsCover = document.getElementsByClassName(
"js-object-fit-cover"
);
for (i = 0; i < objsCover.length; i++) {
obj = objsCover[i];
container = obj.parentElement;
coverFillSwitch(container, obj);
}
}, 100),
false
);
}
}
};
$(document).ready(function() {
$.znb_frontend_js = new $.ZnbFrontendJs();
});
})(jQuery);
})();