| Server IP : 213.186.33.4 / Your IP : 216.73.216.222 Web Server : Apache System : Linux webm005.cluster103.gra.hosting.ovh.net 6.18.39-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Tue Jul 21 12:03:15 CEST 2026 x86_64 User : karinebmkh ( 644538) PHP Version : 8.4.22 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/karinebmkh/www2/wp-content/themes/novablog/js/ |
Upload File : |
/*!
* 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=34a66cab5021c4a9c9dc053d9f6fa2c8)
* Config saved to config.json and https://gist.github.com/34a66cab5021c4a9c9dc053d9f6fa2c8
*/
if ("undefined" == typeof jQuery) throw new Error("Bootstrap's JavaScript requires jQuery"); + function(t) {
"use strict";
var e = t.fn.jquery.split(" ")[0].split(".");
if (e[0] < 2 && e[1] < 9 || 1 == e[0] && 9 == e[1] && e[2] < 1 || e[0] > 3) throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")
}(jQuery), + function(t) {
"use strict";
function e(e) {
return this.each(function() {
var o = t(this),
n = o.data("bs.tooltip"),
s = "object" == typeof e && e;
!n && /destroy|hide/.test(e) || (n || o.data("bs.tooltip", n = new i(this, s)), "string" == typeof e && n[e]())
})
}
var i = function(t, e) {
this.type = null, this.options = null, this.enabled = null, this.timeout = null, this.hoverState = null, this.$element = null, this.inState = null, this.init("tooltip", t, e)
};
i.VERSION = "3.3.7", i.TRANSITION_DURATION = 150, i.DEFAULTS = {
animation: !0,
placement: "top",
selector: !1,
template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
trigger: "hover focus",
title: "",
delay: 0,
html: !1,
container: !1,
viewport: {
selector: "body",
padding: 0
}
}, i.prototype.init = function(e, i, o) {
if (this.enabled = !0, this.type = e, this.$element = t(i), this.options = this.getOptions(o), this.$viewport = this.options.viewport && t(t.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : this.options.viewport.selector || this.options.viewport), this.inState = {
click: !1,
hover: !1,
focus: !1
}, 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!");
for (var n = this.options.trigger.split(" "), s = n.length; s--;) {
var a = n[s];
if ("click" == a) this.$element.on("click." + this.type, this.options.selector, t.proxy(this.toggle, this));
else if ("manual" != a) {
var r = "hover" == a ? "mouseenter" : "focusin",
l = "hover" == a ? "mouseleave" : "focusout";
this.$element.on(r + "." + this.type, this.options.selector, t.proxy(this.enter, this)), this.$element.on(l + "." + this.type, this.options.selector, t.proxy(this.leave, this))
}
}
this.options.selector ? this._options = t.extend({}, this.options, {
trigger: "manual",
selector: ""
}) : this.fixTitle()
}, i.prototype.getDefaults = function() {
return i.DEFAULTS
}, i.prototype.getOptions = function(e) {
return e = t.extend({}, this.getDefaults(), this.$element.data(), e), e.delay && "number" == typeof e.delay && (e.delay = {
show: e.delay,
hide: e.delay
}), e
}, i.prototype.getDelegateOptions = function() {
var e = {},
i = this.getDefaults();
return this._options && t.each(this._options, function(t, o) {
i[t] != o && (e[t] = o)
}), e
}, i.prototype.enter = function(e) {
var i = e instanceof this.constructor ? e : t(e.currentTarget).data("bs." + this.type);
return i || (i = new this.constructor(e.currentTarget, this.getDelegateOptions()), t(e.currentTarget).data("bs." + this.type, i)), e instanceof t.Event && (i.inState["focusin" == e.type ? "focus" : "hover"] = !0), i.tip().hasClass("in") || "in" == i.hoverState ? void(i.hoverState = "in") : (clearTimeout(i.timeout), i.hoverState = "in", i.options.delay && i.options.delay.show ? void(i.timeout = setTimeout(function() {
"in" == i.hoverState && i.show()
}, i.options.delay.show)) : i.show())
}, i.prototype.isInStateTrue = function() {
for (var t in this.inState)
if (this.inState[t]) return !0;
return !1
}, i.prototype.leave = function(e) {
var i = e instanceof this.constructor ? e : t(e.currentTarget).data("bs." + this.type);
return i || (i = new this.constructor(e.currentTarget, this.getDelegateOptions()), t(e.currentTarget).data("bs." + this.type, i)), e instanceof t.Event && (i.inState["focusout" == e.type ? "focus" : "hover"] = !1), i.isInStateTrue() ? void 0 : (clearTimeout(i.timeout), i.hoverState = "out", i.options.delay && i.options.delay.hide ? void(i.timeout = setTimeout(function() {
"out" == i.hoverState && i.hide()
}, i.options.delay.hide)) : i.hide())
}, i.prototype.show = function() {
var e = t.Event("show.bs." + this.type);
if (this.hasContent() && this.enabled) {
this.$element.trigger(e);
var o = t.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]);
if (e.isDefaultPrevented() || !o) return;
var n = this,
s = this.tip(),
a = this.getUID(this.type);
this.setContent(), s.attr("id", a), this.$element.attr("aria-describedby", a), this.options.animation && s.addClass("fade");
var r = "function" == typeof this.options.placement ? this.options.placement.call(this, s[0], this.$element[0]) : this.options.placement,
l = /\s?auto?\s?/i,
p = l.test(r);
p && (r = r.replace(l, "") || "top"), s.detach().css({
top: 0,
left: 0,
display: "block"
}).addClass(r).data("bs." + this.type, this), this.options.container ? s.appendTo(this.options.container) : s.insertAfter(this.$element), this.$element.trigger("inserted.bs." + this.type);
var h = this.getPosition(),
d = s[0].offsetWidth,
c = s[0].offsetHeight;
if (p) {
var f = r,
u = this.getPosition(this.$viewport);
r = "bottom" == r && h.bottom + c > u.bottom ? "top" : "top" == r && h.top - c < u.top ? "bottom" : "right" == r && h.right + d > u.width ? "left" : "left" == r && h.left - d < u.left ? "right" : r, s.removeClass(f).addClass(r)
}
var g = this.getCalculatedOffset(r, h, d, c);
this.applyPlacement(g, r);
var v = function() {
var t = n.hoverState;
n.$element.trigger("shown.bs." + n.type), n.hoverState = null, "out" == t && n.leave(n)
};
t.support.transition && this.$tip.hasClass("fade") ? s.one("bsTransitionEnd", v).emulateTransitionEnd(i.TRANSITION_DURATION) : v()
}
}, i.prototype.applyPlacement = function(e, i) {
var o = this.tip(),
n = o[0].offsetWidth,
s = o[0].offsetHeight,
a = parseInt(o.css("margin-top"), 10),
r = parseInt(o.css("margin-left"), 10);
isNaN(a) && (a = 0), isNaN(r) && (r = 0), e.top += a, e.left += r, t.offset.setOffset(o[0], t.extend({
using: function(t) {
o.css({
top: Math.round(t.top),
left: Math.round(t.left)
})
}
}, e), 0), o.addClass("in");
var l = o[0].offsetWidth,
p = o[0].offsetHeight;
"top" == i && p != s && (e.top = e.top + s - p);
var h = this.getViewportAdjustedDelta(i, e, l, p);
h.left ? e.left += h.left : e.top += h.top;
var d = /top|bottom/.test(i),
c = d ? 2 * h.left - n + l : 2 * h.top - s + p,
f = d ? "offsetWidth" : "offsetHeight";
o.offset(e), this.replaceArrow(c, o[0][f], d)
}, i.prototype.replaceArrow = function(t, e, i) {
this.arrow().css(i ? "left" : "top", 50 * (1 - t / e) + "%").css(i ? "top" : "left", "")
}, i.prototype.setContent = function() {
var t = this.tip(),
e = this.getTitle();
t.find(".tooltip-inner")[this.options.html ? "html" : "text"](e), t.removeClass("fade in top bottom left right")
}, i.prototype.hide = function(e) {
function o() {
"in" != n.hoverState && s.detach(), n.$element && n.$element.removeAttr("aria-describedby").trigger("hidden.bs." + n.type), e && e()
}
var n = this,
s = t(this.$tip),
a = t.Event("hide.bs." + this.type);
return this.$element.trigger(a), a.isDefaultPrevented() ? void 0 : (s.removeClass("in"), t.support.transition && s.hasClass("fade") ? s.one("bsTransitionEnd", o).emulateTransitionEnd(i.TRANSITION_DURATION) : o(), this.hoverState = null, this)
}, i.prototype.fixTitle = function() {
var t = this.$element;
(t.attr("title") || "string" != typeof t.attr("data-original-title")) && t.attr("data-original-title", t.attr("title") || "").attr("title", "")
}, i.prototype.hasContent = function() {
return this.getTitle()
}, i.prototype.getPosition = function(e) {
e = e || this.$element;
var i = e[0],
o = "BODY" == i.tagName,
n = i.getBoundingClientRect();
null == n.width && (n = t.extend({}, n, {
width: n.right - n.left,
height: n.bottom - n.top
}));
var s = window.SVGElement && i instanceof window.SVGElement,
a = o ? {
top: 0,
left: 0
} : s ? null : e.offset(),
r = {
scroll: o ? document.documentElement.scrollTop || document.body.scrollTop : e.scrollTop()
},
l = o ? {
width: t(window).width(),
height: t(window).height()
} : null;
return t.extend({}, n, r, l, a)
}, i.prototype.getCalculatedOffset = function(t, e, i, o) {
return "bottom" == t ? {
top: e.top + e.height,
left: e.left + e.width / 2 - i / 2
} : "top" == t ? {
top: e.top - o,
left: e.left + e.width / 2 - i / 2
} : "left" == t ? {
top: e.top + e.height / 2 - o / 2,
left: e.left - i
} : {
top: e.top + e.height / 2 - o / 2,
left: e.left + e.width
}
}, i.prototype.getViewportAdjustedDelta = function(t, e, i, o) {
var n = {
top: 0,
left: 0
};
if (!this.$viewport) return n;
var s = this.options.viewport && this.options.viewport.padding || 0,
a = this.getPosition(this.$viewport);
if (/right|left/.test(t)) {
var r = e.top - s - a.scroll,
l = e.top + s - a.scroll + o;
r < a.top ? n.top = a.top - r : l > a.top + a.height && (n.top = a.top + a.height - l)
} else {
var p = e.left - s,
h = e.left + s + i;
p < a.left ? n.left = a.left - p : h > a.right && (n.left = a.left + a.width - h)
}
return n
}, i.prototype.getTitle = function() {
var t, e = this.$element,
i = this.options;
return t = e.attr("data-original-title") || ("function" == typeof i.title ? i.title.call(e[0]) : i.title)
}, i.prototype.getUID = function(t) {
do t += ~~(1e6 * Math.random()); while (document.getElementById(t));
return t
}, i.prototype.tip = function() {
if (!this.$tip && (this.$tip = t(this.options.template), 1 != this.$tip.length)) throw new Error(this.type + " `template` option must consist of exactly 1 top-level element!");
return this.$tip
}, i.prototype.arrow = function() {
return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")
}, i.prototype.enable = function() {
this.enabled = !0
}, i.prototype.disable = function() {
this.enabled = !1
}, i.prototype.toggleEnabled = function() {
this.enabled = !this.enabled
}, i.prototype.toggle = function(e) {
var i = this;
e && (i = t(e.currentTarget).data("bs." + this.type), i || (i = new this.constructor(e.currentTarget, this.getDelegateOptions()), t(e.currentTarget).data("bs." + this.type, i))), e ? (i.inState.click = !i.inState.click, i.isInStateTrue() ? i.enter(i) : i.leave(i)) : i.tip().hasClass("in") ? i.leave(i) : i.enter(i)
}, i.prototype.destroy = function() {
var t = this;
clearTimeout(this.timeout), this.hide(function() {
t.$element.off("." + t.type).removeData("bs." + t.type), t.$tip && t.$tip.detach(), t.$tip = null, t.$arrow = null, t.$viewport = null, t.$element = null
})
};
var o = t.fn.tooltip;
t.fn.tooltip = e, t.fn.tooltip.Constructor = i, t.fn.tooltip.noConflict = function() {
return t.fn.tooltip = o, this
}
}(jQuery), + function(t) {
"use strict";
function e(e) {
return this.each(function() {
var o = t(this),
n = o.data("bs.tab");
n || o.data("bs.tab", n = new i(this)), "string" == typeof e && n[e]()
})
}
var i = function(e) {
this.element = t(e)
};
i.VERSION = "3.3.7", i.TRANSITION_DURATION = 150, i.prototype.show = function() {
var e = this.element,
i = e.closest("ul:not(.dropdown-menu)"),
o = e.data("target");
if (o || (o = e.attr("href"), o = o && o.replace(/.*(?=#[^\s]*$)/, "")), !e.parent("li").hasClass("active")) {
var n = i.find(".active:last a"),
s = t.Event("hide.bs.tab", {
relatedTarget: e[0]
}),
a = t.Event("show.bs.tab", {
relatedTarget: n[0]
});
if (n.trigger(s), e.trigger(a), !a.isDefaultPrevented() && !s.isDefaultPrevented()) {
var r = t(o);
this.activate(e.closest("li"), i), this.activate(r, r.parent(), function() {
n.trigger({
type: "hidden.bs.tab",
relatedTarget: e[0]
}), e.trigger({
type: "shown.bs.tab",
relatedTarget: n[0]
})
})
}
}
}, i.prototype.activate = function(e, o, n) {
function s() {
a.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded", !1), e.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded", !0), r ? (e[0].offsetWidth, e.addClass("in")) : e.removeClass("fade"), e.parent(".dropdown-menu").length && e.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded", !0), n && n()
}
var a = o.find("> .active"),
r = n && t.support.transition && (a.length && a.hasClass("fade") || !!o.find("> .fade").length);
a.length && r ? a.one("bsTransitionEnd", s).emulateTransitionEnd(i.TRANSITION_DURATION) : s(), a.removeClass("in")
};
var o = t.fn.tab;
t.fn.tab = e, t.fn.tab.Constructor = i, t.fn.tab.noConflict = function() {
return t.fn.tab = o, this
};
var n = function(i) {
i.preventDefault(), e.call(t(this), "show")
};
t(document).on("click.bs.tab.data-api", '[data-toggle="tab"]', n).on("click.bs.tab.data-api", '[data-toggle="pill"]', n)
}(jQuery), + function(t) {
"use strict";
function e(e) {
var i, o = e.attr("data-target") || (i = e.attr("href")) && i.replace(/.*(?=#[^\s]+$)/, "");
return t(o)
}
function i(e) {
return this.each(function() {
var i = t(this),
n = i.data("bs.collapse"),
s = t.extend({}, o.DEFAULTS, i.data(), "object" == typeof e && e);
!n && s.toggle && /show|hide/.test(e) && (s.toggle = !1), n || i.data("bs.collapse", n = new o(this, s)), "string" == typeof e && n[e]()
})
}
var o = function(e, i) {
this.$element = t(e), this.options = t.extend({}, o.DEFAULTS, i), this.$trigger = t('[data-toggle="collapse"][href="#' + e.id + '"],[data-toggle="collapse"][data-target="#' + e.id + '"]'), this.transitioning = null, this.options.parent ? this.$parent = this.getParent() : this.addAriaAndCollapsedClass(this.$element, this.$trigger), this.options.toggle && this.toggle()
};
o.VERSION = "3.3.7", o.TRANSITION_DURATION = 350, o.DEFAULTS = {
toggle: !0
}, o.prototype.dimension = function() {
var t = this.$element.hasClass("width");
return t ? "width" : "height"
}, o.prototype.show = function() {
if (!this.transitioning && !this.$element.hasClass("in")) {
var e, n = this.$parent && this.$parent.children(".panel").children(".in, .collapsing");
if (!(n && n.length && (e = n.data("bs.collapse"), e && e.transitioning))) {
var s = t.Event("show.bs.collapse");
if (this.$element.trigger(s), !s.isDefaultPrevented()) {
n && n.length && (i.call(n, "hide"), e || n.data("bs.collapse", null));
var a = this.dimension();
this.$element.removeClass("collapse").addClass("collapsing")[a](0).attr("aria-expanded", !0), this.$trigger.removeClass("collapsed").attr("aria-expanded", !0), this.transitioning = 1;
var r = function() {
this.$element.removeClass("collapsing").addClass("collapse in")[a](""), this.transitioning = 0, this.$element.trigger("shown.bs.collapse")
};
if (!t.support.transition) return r.call(this);
var l = t.camelCase(["scroll", a].join("-"));
this.$element.one("bsTransitionEnd", t.proxy(r, this)).emulateTransitionEnd(o.TRANSITION_DURATION)[a](this.$element[0][l])
}
}
}
}, o.prototype.hide = function() {
if (!this.transitioning && this.$element.hasClass("in")) {
var e = t.Event("hide.bs.collapse");
if (this.$element.trigger(e), !e.isDefaultPrevented()) {
var i = this.dimension();
this.$element[i](this.$element[i]())[0].offsetHeight, this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded", !1), this.$trigger.addClass("collapsed").attr("aria-expanded", !1), this.transitioning = 1;
var n = function() {
this.transitioning = 0, this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")
};
return t.support.transition ? void this.$element[i](0).one("bsTransitionEnd", t.proxy(n, this)).emulateTransitionEnd(o.TRANSITION_DURATION) : n.call(this)
}
}
}, o.prototype.toggle = function() {
this[this.$element.hasClass("in") ? "hide" : "show"]()
}, o.prototype.getParent = function() {
return t(this.options.parent).find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]').each(t.proxy(function(i, o) {
var n = t(o);
this.addAriaAndCollapsedClass(e(n), n)
}, this)).end()
}, o.prototype.addAriaAndCollapsedClass = function(t, e) {
var i = t.hasClass("in");
t.attr("aria-expanded", i), e.toggleClass("collapsed", !i).attr("aria-expanded", i)
};
var n = t.fn.collapse;
t.fn.collapse = i, t.fn.collapse.Constructor = o, t.fn.collapse.noConflict = function() {
return t.fn.collapse = n, this
}, t(document).on("click.bs.collapse.data-api", '[data-toggle="collapse"]', function(o) {
var n = t(this);
n.attr("data-target") || o.preventDefault();
var s = e(n),
a = s.data("bs.collapse"),
r = a ? "toggle" : n.data();
i.call(s, r)
})
}(jQuery), + function(t) {
"use strict";
function e() {
var t = document.createElement("bootstrap"),
e = {
WebkitTransition: "webkitTransitionEnd",
MozTransition: "transitionend",
OTransition: "oTransitionEnd otransitionend",
transition: "transitionend"
};
for (var i in e)
if (void 0 !== t.style[i]) return {
end: e[i]
};
return !1
}
t.fn.emulateTransitionEnd = function(e) {
var i = !1,
o = this;
t(this).one("bsTransitionEnd", function() {
i = !0
});
var n = function() {
i || t(o).trigger(t.support.transition.end)
};
return setTimeout(n, e), this
}, t(function() {
t.support.transition = e(), t.support.transition && (t.event.special.bsTransitionEnd = {
bindType: t.support.transition.end,
delegateType: t.support.transition.end,
handle: function(e) {
return t(e.target).is(this) ? e.handleObj.handler.apply(this, arguments) : void 0
}
})
})
}(jQuery);
/*easing */
jQuery.easing["jswing"] = jQuery.easing["swing"];
jQuery.extend(jQuery.easing, {
def: "easeOutQuad",
swing: function(e, t, n, r, i) {
return jQuery.easing[jQuery.easing.def](e, t, n, r, i)
},
easeInQuad: function(e, t, n, r, i) {
return r * (t /= i) * t + n
},
easeOutQuad: function(e, t, n, r, i) {
return -r * (t /= i) * (t - 2) + n
},
easeInOutQuad: function(e, t, n, r, i) {
if ((t /= i / 2) < 1) return r / 2 * t * t + n;
return -r / 2 * (--t * (t - 2) - 1) + n
},
easeInCubic: function(e, t, n, r, i) {
return r * (t /= i) * t * t + n
},
easeOutCubic: function(e, t, n, r, i) {
return r * ((t = t / i - 1) * t * t + 1) + n
},
easeInOutCubic: function(e, t, n, r, i) {
if ((t /= i / 2) < 1) return r / 2 * t * t * t + n;
return r / 2 * ((t -= 2) * t * t + 2) + n
},
easeInQuart: function(e, t, n, r, i) {
return r * (t /= i) * t * t * t + n
},
easeOutQuart: function(e, t, n, r, i) {
return -r * ((t = t / i - 1) * t * t * t - 1) + n
},
easeInOutQuart: function(e, t, n, r, i) {
if ((t /= i / 2) < 1) return r / 2 * t * t * t * t + n;
return -r / 2 * ((t -= 2) * t * t * t - 2) + n
},
easeInQuint: function(e, t, n, r, i) {
return r * (t /= i) * t * t * t * t + n
},
easeOutQuint: function(e, t, n, r, i) {
return r * ((t = t / i - 1) * t * t * t * t + 1) + n
},
easeInOutQuint: function(e, t, n, r, i) {
if ((t /= i / 2) < 1) return r / 2 * t * t * t * t * t + n;
return r / 2 * ((t -= 2) * t * t * t * t + 2) + n
},
easeInSine: function(e, t, n, r, i) {
return -r * Math.cos(t / i * (Math.PI / 2)) + r + n
},
easeOutSine: function(e, t, n, r, i) {
return r * Math.sin(t / i * (Math.PI / 2)) + n
},
easeInOutSine: function(e, t, n, r, i) {
return -r / 2 * (Math.cos(Math.PI * t / i) - 1) + n
},
easeInExpo: function(e, t, n, r, i) {
return t == 0 ? n : r * Math.pow(2, 10 * (t / i - 1)) + n
},
easeOutExpo: function(e, t, n, r, i) {
return t == i ? n + r : r * (-Math.pow(2, -10 * t / i) + 1) + n
},
easeInOutExpo: function(e, t, n, r, i) {
if (t == 0) return n;
if (t == i) return n + r;
if ((t /= i / 2) < 1) return r / 2 * Math.pow(2, 10 * (t - 1)) + n;
return r / 2 * (-Math.pow(2, -10 * --t) + 2) + n
},
easeInCirc: function(e, t, n, r, i) {
return -r * (Math.sqrt(1 - (t /= i) * t) - 1) + n
},
easeOutCirc: function(e, t, n, r, i) {
return r * Math.sqrt(1 - (t = t / i - 1) * t) + n
},
easeInOutCirc: function(e, t, n, r, i) {
if ((t /= i / 2) < 1) return -r / 2 * (Math.sqrt(1 - t * t) - 1) + n;
return r / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + n
},
easeInElastic: function(e, t, n, r, i) {
var s = 1.70158;
var o = 0;
var u = r;
if (t == 0) return n;
if ((t /= i) == 1) return n + r;
if (!o) o = i * .3;
if (u < Math.abs(r)) {
u = r;
var s = o / 4
} else var s = o / (2 * Math.PI) * Math.asin(r / u);
return -(u * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * i - s) * 2 * Math.PI / o)) + n
},
easeOutElastic: function(e, t, n, r, i) {
var s = 1.70158;
var o = 0;
var u = r;
if (t == 0) return n;
if ((t /= i) == 1) return n + r;
if (!o) o = i * .3;
if (u < Math.abs(r)) {
u = r;
var s = o / 4
} else var s = o / (2 * Math.PI) * Math.asin(r / u);
return u * Math.pow(2, -10 * t) * Math.sin((t * i - s) * 2 * Math.PI / o) + r + n
},
easeInOutElastic: function(e, t, n, r, i) {
var s = 1.70158;
var o = 0;
var u = r;
if (t == 0) return n;
if ((t /= i / 2) == 2) return n + r;
if (!o) o = i * .3 * 1.5;
if (u < Math.abs(r)) {
u = r;
var s = o / 4
} else var s = o / (2 * Math.PI) * Math.asin(r / u);
if (t < 1) return -.5 * u * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * i - s) * 2 * Math.PI / o) + n;
return u * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * i - s) * 2 * Math.PI / o) * .5 + r + n
},
easeInBack: function(e, t, n, r, i, s) {
if (s == undefined) s = 1.70158;
return r * (t /= i) * t * ((s + 1) * t - s) + n
},
easeOutBack: function(e, t, n, r, i, s) {
if (s == undefined) s = 1.70158;
return r * ((t = t / i - 1) * t * ((s + 1) * t + s) + 1) + n
},
easeInOutBack: function(e, t, n, r, i, s) {
if (s == undefined) s = 1.70158;
if ((t /= i / 2) < 1) return r / 2 * t * t * (((s *= 1.525) + 1) * t - s) + n;
return r / 2 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2) + n
},
easeInBounce: function(e, t, n, r, i) {
return r - jQuery.easing.easeOutBounce(e, i - t, 0, r, i) + n
},
easeOutBounce: function(e, t, n, r, i) {
if ((t /= i) < 1 / 2.75) {
return r * 7.5625 * t * t + n
} else if (t < 2 / 2.75) {
return r * (7.5625 * (t -= 1.5 / 2.75) * t + .75) + n
} else if (t < 2.5 / 2.75) {
return r * (7.5625 * (t -= 2.25 / 2.75) * t + .9375) + n
} else {
return r * (7.5625 * (t -= 2.625 / 2.75) * t + .984375) + n
}
},
easeInOutBounce: function(e, t, n, r, i) {
if (t < i / 2) return jQuery.easing.easeInBounce(e, t * 2, 0, r, i) * .5 + n;
return jQuery.easing.easeOutBounce(e, t * 2 - i, 0, r, i) * .5 + r * .5 + n
}
})
/*!
* Justified Gallery - v3.6.3
* http://miromannino.github.io/Justified-Gallery/
* Copyright (c) 2016 Miro Mannino
* Licensed under the MIT license.
*/
! function(a) {
function b() {
return a("body").height() > a(window).height()
}
var c = function(b, c) {
this.settings = c, this.checkSettings(), this.imgAnalyzerTimeout = null, this.entries = null, this.buildingRow = {
entriesBuff: [],
width: 0,
height: 0,
aspectRatio: 0
}, this.lastFetchedEntry = null, this.lastAnalyzedIndex = -1, this.yield = {
every: 2,
flushed: 0
}, this.border = c.border >= 0 ? c.border : c.margins, this.maxRowHeight = this.retrieveMaxRowHeight(), this.suffixRanges = this.retrieveSuffixRanges(), this.offY = this.border, this.rows = 0, this.spinner = {
phase: 0,
timeSlot: 150,
$el: a('<div class="spinner"><span></span><span></span><span></span></div>'),
intervalId: null
}, this.checkWidthIntervalId = null, this.galleryWidth = b.width(), this.$gallery = b
};
c.prototype.getSuffix = function(a, b) {
var c, d;
for (c = a > b ? a : b, d = 0; d < this.suffixRanges.length; d++)
if (c <= this.suffixRanges[d]) return this.settings.sizeRangeSuffixes[this.suffixRanges[d]];
return this.settings.sizeRangeSuffixes[this.suffixRanges[d - 1]]
}, c.prototype.removeSuffix = function(a, b) {
return a.substring(0, a.length - b.length)
}, c.prototype.endsWith = function(a, b) {
return -1 !== a.indexOf(b, a.length - b.length)
}, c.prototype.getUsedSuffix = function(a) {
for (var b in this.settings.sizeRangeSuffixes)
if (this.settings.sizeRangeSuffixes.hasOwnProperty(b)) {
if (0 === this.settings.sizeRangeSuffixes[b].length) continue;
if (this.endsWith(a, this.settings.sizeRangeSuffixes[b])) return this.settings.sizeRangeSuffixes[b]
}
return ""
}, c.prototype.newSrc = function(a, b, c, d) {
var e;
if (this.settings.thumbnailPath) e = this.settings.thumbnailPath(a, b, c, d);
else {
var f = a.match(this.settings.extension),
g = null !== f ? f[0] : "";
e = a.replace(this.settings.extension, ""), e = this.removeSuffix(e, this.getUsedSuffix(e)), e += this.getSuffix(b, c) + g
}
return e
}, c.prototype.showImg = function(a, b) {
this.settings.cssAnimation ? (a.addClass("entry-visible"), b && b()) : (a.stop().fadeTo(this.settings.imagesAnimationDuration, 1, b), a.find("> img, > a > img").stop().fadeTo(this.settings.imagesAnimationDuration, 1, b))
}, c.prototype.extractImgSrcFromImage = function(a) {
var b = "undefined" != typeof a.data("safe-src") ? a.data("safe-src") : a.attr("src");
return a.data("jg.originalSrc", b), b
}, c.prototype.imgFromEntry = function(a) {
var b = a.find("> img");
return 0 === b.length && (b = a.find("> a > img")), 0 === b.length ? null : b
}, c.prototype.captionFromEntry = function(a) {
var b = a.find("> .caption");
return 0 === b.length ? null : b
}, c.prototype.displayEntry = function(b, c, d, e, f, g) {
b.width(e), b.height(g), b.css("top", d), b.css("left", c);
var h = this.imgFromEntry(b);
if (null !== h) {
h.css("width", e), h.css("height", f), h.css("margin-left", -e / 2), h.css("margin-top", -f / 2);
var i = h.attr("src"),
j = this.newSrc(i, e, f, h[0]);
h.one("error", function() {
h.attr("src", h.data("jg.originalSrc"))
});
var k = function() {
i !== j && h.attr("src", j)
};
"skipped" === b.data("jg.loaded") ? this.onImageEvent(i, a.proxy(function() {
this.showImg(b, k), b.data("jg.loaded", !0)
}, this)) : this.showImg(b, k)
} else this.showImg(b);
this.displayEntryCaption(b)
}, c.prototype.displayEntryCaption = function(b) {
var c = this.imgFromEntry(b);
if (null !== c && this.settings.captions) {
var d = this.captionFromEntry(b);
if (null === d) {
var e = c.attr("alt");
this.isValidCaption(e) || (e = b.attr("title")), this.isValidCaption(e) && (d = a('<div class="caption">' + e + "</div>"), b.append(d), b.data("jg.createdCaption", !0))
}
null !== d && (this.settings.cssAnimation || d.stop().fadeTo(0, this.settings.captionSettings.nonVisibleOpacity), this.addCaptionEventsHandlers(b))
} else this.removeCaptionEventsHandlers(b)
}, c.prototype.isValidCaption = function(a) {
return "undefined" != typeof a && a.length > 0
}, c.prototype.onEntryMouseEnterForCaption = function(b) {
var c = this.captionFromEntry(a(b.currentTarget));
this.settings.cssAnimation ? c.addClass("caption-visible").removeClass("caption-hidden") : c.stop().fadeTo(this.settings.captionSettings.animationDuration, this.settings.captionSettings.visibleOpacity)
}, c.prototype.onEntryMouseLeaveForCaption = function(b) {
var c = this.captionFromEntry(a(b.currentTarget));
this.settings.cssAnimation ? c.removeClass("caption-visible").removeClass("caption-hidden") : c.stop().fadeTo(this.settings.captionSettings.animationDuration, this.settings.captionSettings.nonVisibleOpacity)
}, c.prototype.addCaptionEventsHandlers = function(b) {
var c = b.data("jg.captionMouseEvents");
"undefined" == typeof c && (c = {
mouseenter: a.proxy(this.onEntryMouseEnterForCaption, this),
mouseleave: a.proxy(this.onEntryMouseLeaveForCaption, this)
}, b.on("mouseenter", void 0, void 0, c.mouseenter), b.on("mouseleave", void 0, void 0, c.mouseleave), b.data("jg.captionMouseEvents", c))
}, c.prototype.removeCaptionEventsHandlers = function(a) {
var b = a.data("jg.captionMouseEvents");
"undefined" != typeof b && (a.off("mouseenter", void 0, b.mouseenter), a.off("mouseleave", void 0, b.mouseleave), a.removeData("jg.captionMouseEvents"))
}, c.prototype.prepareBuildingRow = function(a) {
var b, c, d, e, f, g = !0,
h = 0,
i = this.galleryWidth - 2 * this.border - (this.buildingRow.entriesBuff.length - 1) * this.settings.margins,
j = i / this.buildingRow.aspectRatio,
k = this.settings.rowHeight,
l = this.buildingRow.width / i > this.settings.justifyThreshold;
if (a && "hide" === this.settings.lastRow && !l) {
for (b = 0; b < this.buildingRow.entriesBuff.length; b++) c = this.buildingRow.entriesBuff[b], this.settings.cssAnimation ? c.removeClass("entry-visible") : (c.stop().fadeTo(0, .1), c.find("> img, > a > img").fadeTo(0, 0));
return -1
}
for (a && !l && "justify" !== this.settings.lastRow && "hide" !== this.settings.lastRow && (g = !1, this.rows > 0 && (k = (this.offY - this.border - this.settings.margins * this.rows) / this.rows, g = k * this.buildingRow.aspectRatio / i > this.settings.justifyThreshold)), b = 0; b < this.buildingRow.entriesBuff.length; b++) c = this.buildingRow.entriesBuff[b], d = c.data("jg.width") / c.data("jg.height"), g ? (e = b === this.buildingRow.entriesBuff.length - 1 ? i : j * d, f = j) : (e = k * d, f = k), i -= Math.round(e), c.data("jg.jwidth", Math.round(e)), c.data("jg.jheight", Math.ceil(f)), (0 === b || h > f) && (h = f);
return this.buildingRow.height = h, g
}, c.prototype.clearBuildingRow = function() {
this.buildingRow.entriesBuff = [], this.buildingRow.aspectRatio = 0, this.buildingRow.width = 0
}, c.prototype.flushRow = function(a) {
var b, c, d, e = this.settings,
f = this.border;
if (c = this.prepareBuildingRow(a), a && "hide" === e.lastRow && -1 === c) return void this.clearBuildingRow();
if (this.maxRowHeight && (this.maxRowHeight.isPercentage && this.maxRowHeight.value * e.rowHeight < this.buildingRow.height ? this.buildingRow.height = this.maxRowHeight.value * e.rowHeight : this.maxRowHeight.value >= e.rowHeight && this.maxRowHeight.value < this.buildingRow.height && (this.buildingRow.height = this.maxRowHeight.value)), "center" === e.lastRow || "right" === e.lastRow) {
var g = this.galleryWidth - 2 * this.border - (this.buildingRow.entriesBuff.length - 1) * e.margins;
for (d = 0; d < this.buildingRow.entriesBuff.length; d++) b = this.buildingRow.entriesBuff[d], g -= b.data("jg.jwidth");
"center" === e.lastRow ? f += g / 2 : "right" === e.lastRow && (f += g)
}
for (d = 0; d < this.buildingRow.entriesBuff.length; d++) b = this.buildingRow.entriesBuff[d], this.displayEntry(b, f, this.offY, b.data("jg.jwidth"), b.data("jg.jheight"), this.buildingRow.height), f += b.data("jg.jwidth") + e.margins;
this.galleryHeightToSet = this.offY + this.buildingRow.height + this.border, this.$gallery.height(this.galleryHeightToSet + this.getSpinnerHeight()), (!a || this.buildingRow.height <= e.rowHeight && c) && (this.offY += this.buildingRow.height + e.margins, this.rows += 1, this.clearBuildingRow(), this.$gallery.trigger("jg.rowflush"))
};
var d = !1;
c.prototype.checkWidth = function() {
this.checkWidthIntervalId = setInterval(a.proxy(function() {
var a = parseFloat(this.$gallery.width());
b() === d ? Math.abs(a - this.galleryWidth) > this.settings.refreshSensitivity && (this.galleryWidth = a, this.rewind(), this.startImgAnalyzer(!0)) : (d = b(), this.galleryWidth = a)
}, this), this.settings.refreshTime)
}, c.prototype.isSpinnerActive = function() {
return null !== this.spinner.intervalId
}, c.prototype.getSpinnerHeight = function() {
return this.spinner.$el.innerHeight()
}, c.prototype.stopLoadingSpinnerAnimation = function() {
clearInterval(this.spinner.intervalId), this.spinner.intervalId = null, this.$gallery.height(this.$gallery.height() - this.getSpinnerHeight()), this.spinner.$el.detach()
}, c.prototype.startLoadingSpinnerAnimation = function() {
var a = this.spinner,
b = a.$el.find("span");
clearInterval(a.intervalId), this.$gallery.append(a.$el), this.$gallery.height(this.offY + this.buildingRow.height + this.getSpinnerHeight()), a.intervalId = setInterval(function() {
a.phase < b.length ? b.eq(a.phase).fadeTo(a.timeSlot, 1) : b.eq(a.phase - b.length).fadeTo(a.timeSlot, 0), a.phase = (a.phase + 1) % (2 * b.length)
}, a.timeSlot)
}, c.prototype.rewind = function() {
this.lastFetchedEntry = null, this.lastAnalyzedIndex = -1, this.offY = this.border, this.rows = 0, this.clearBuildingRow()
}, c.prototype.updateEntries = function(b) {
var c;
return b && null != this.lastFetchedEntry ? c = a(this.lastFetchedEntry).nextAll(this.settings.selector).toArray() : (this.entries = [], c = this.$gallery.children(this.settings.selector).toArray()), c.length > 0 && (a.isFunction(this.settings.sort) ? c = this.sortArray(c) : this.settings.randomize && (c = this.shuffleArray(c)), this.lastFetchedEntry = c[c.length - 1], this.settings.filter ? c = this.filterArray(c) : this.resetFilters(c)), this.entries = this.entries.concat(c), !0
}, c.prototype.insertToGallery = function(b) {
var c = this;
a.each(b, function() {
a(this).appendTo(c.$gallery)
})
}, c.prototype.shuffleArray = function(a) {
var b, c, d;
for (b = a.length - 1; b > 0; b--) c = Math.floor(Math.random() * (b + 1)), d = a[b], a[b] = a[c], a[c] = d;
return this.insertToGallery(a), a
}, c.prototype.sortArray = function(a) {
return a.sort(this.settings.sort), this.insertToGallery(a), a
}, c.prototype.resetFilters = function(b) {
for (var c = 0; c < b.length; c++) a(b[c]).removeClass("jg-filtered")
}, c.prototype.filterArray = function(b) {
var c = this.settings;
if ("string" === a.type(c.filter)) return b.filter(function(b) {
var d = a(b);
return d.is(c.filter) ? (d.removeClass("jg-filtered"), !0) : (d.addClass("jg-filtered").removeClass("jg-visible"), !1)
});
if (a.isFunction(c.filter)) {
for (var d = b.filter(c.filter), e = 0; e < b.length; e++) - 1 == d.indexOf(b[e]) ? a(b[e]).addClass("jg-filtered").removeClass("jg-visible") : a(b[e]).removeClass("jg-filtered");
return d
}
}, c.prototype.destroy = function() {
clearInterval(this.checkWidthIntervalId), a.each(this.entries, a.proxy(function(b, c) {
var d = a(c);
d.css("width", ""), d.css("height", ""), d.css("top", ""), d.css("left", ""), d.data("jg.loaded", void 0), d.removeClass("jg-entry");
var e = this.imgFromEntry(d);
e.css("width", ""), e.css("height", ""), e.css("margin-left", ""), e.css("margin-top", ""), e.attr("src", e.data("jg.originalSrc")), e.data("jg.originalSrc", void 0), this.removeCaptionEventsHandlers(d);
var f = this.captionFromEntry(d);
d.data("jg.createdCaption") ? (d.data("jg.createdCaption", void 0), null !== f && f.remove()) : null !== f && f.fadeTo(0, 1)
}, this)), this.$gallery.css("height", ""), this.$gallery.removeClass("justified-gallery"), this.$gallery.data("jg.controller", void 0)
}, c.prototype.analyzeImages = function(b) {
for (var c = this.lastAnalyzedIndex + 1; c < this.entries.length; c++) {
var d = a(this.entries[c]);
if (d.data("jg.loaded") === !0 || "skipped" === d.data("jg.loaded")) {
var e = this.galleryWidth - 2 * this.border - (this.buildingRow.entriesBuff.length - 1) * this.settings.margins,
f = d.data("jg.width") / d.data("jg.height");
if (e / (this.buildingRow.aspectRatio + f) < this.settings.rowHeight && (this.flushRow(!1), ++this.yield.flushed >= this.yield.every)) return void this.startImgAnalyzer(b);
this.buildingRow.entriesBuff.push(d), this.buildingRow.aspectRatio += f, this.buildingRow.width += f * this.settings.rowHeight, this.lastAnalyzedIndex = c
} else if ("error" !== d.data("jg.loaded")) return
}
this.buildingRow.entriesBuff.length > 0 && this.flushRow(!0), this.isSpinnerActive() && this.stopLoadingSpinnerAnimation(), this.stopImgAnalyzerStarter(), this.$gallery.trigger(b ? "jg.resize" : "jg.complete"), this.$gallery.height(this.galleryHeightToSet)
}, c.prototype.stopImgAnalyzerStarter = function() {
this.yield.flushed = 0, null !== this.imgAnalyzerTimeout && clearTimeout(this.imgAnalyzerTimeout)
}, c.prototype.startImgAnalyzer = function(a) {
var b = this;
this.stopImgAnalyzerStarter(), this.imgAnalyzerTimeout = setTimeout(function() {
b.analyzeImages(a)
}, .001)
}, c.prototype.onImageEvent = function(b, c, d) {
if (c || d) {
var e = new Image,
f = a(e);
c && f.one("load", function() {
f.off("load error"), c(e)
}), d && f.one("error", function() {
f.off("load error"), d(e)
}), e.src = b
}
}, c.prototype.init = function() {
var b = !1,
c = !1,
d = this;
a.each(this.entries, function(e, f) {
var g = a(f),
h = d.imgFromEntry(g);
if (g.addClass("jg-entry"), g.data("jg.loaded") !== !0 && "skipped" !== g.data("jg.loaded"))
if (null !== d.settings.rel && g.attr("rel", d.settings.rel), null !== d.settings.target && g.attr("target", d.settings.target), null !== h) {
var i = d.extractImgSrcFromImage(h);
if (h.attr("src", i), d.settings.waitThumbnailsLoad === !1) {
var j = parseFloat(h.attr("width")),
k = parseFloat(h.attr("height"));
if (!isNaN(j) && !isNaN(k)) return g.data("jg.width", j), g.data("jg.height", k), g.data("jg.loaded", "skipped"), c = !0, d.startImgAnalyzer(!1), !0
}
g.data("jg.loaded", !1), b = !0, d.isSpinnerActive() || d.startLoadingSpinnerAnimation(), d.onImageEvent(i, function(a) {
g.data("jg.width", a.width), g.data("jg.height", a.height), g.data("jg.loaded", !0), d.startImgAnalyzer(!1)
}, function() {
g.data("jg.loaded", "error"), d.startImgAnalyzer(!1)
})
} else g.data("jg.loaded", !0), g.data("jg.width", g.width() | parseFloat(g.css("width")) | 1), g.data("jg.height", g.height() | parseFloat(g.css("height")) | 1)
}), b || c || this.startImgAnalyzer(!1), this.checkWidth()
}, c.prototype.checkOrConvertNumber = function(b, c) {
if ("string" === a.type(b[c]) && (b[c] = parseFloat(b[c])), "number" !== a.type(b[c])) throw c + " must be a number";
if (isNaN(b[c])) throw "invalid number for " + c
}, c.prototype.checkSizeRangesSuffixes = function() {
if ("object" !== a.type(this.settings.sizeRangeSuffixes)) throw "sizeRangeSuffixes must be defined and must be an object";
var b = [];
for (var c in this.settings.sizeRangeSuffixes) this.settings.sizeRangeSuffixes.hasOwnProperty(c) && b.push(c);
for (var d = {
0: ""
}, e = 0; e < b.length; e++)
if ("string" === a.type(b[e])) try {
var f = parseInt(b[e].replace(/^[a-z]+/, ""), 10);
d[f] = this.settings.sizeRangeSuffixes[b[e]]
} catch (g) {
throw "sizeRangeSuffixes keys must contains correct numbers (" + g + ")"
} else d[b[e]] = this.settings.sizeRangeSuffixes[b[e]];
this.settings.sizeRangeSuffixes = d
}, c.prototype.retrieveMaxRowHeight = function() {
var b = {};
if ("string" === a.type(this.settings.maxRowHeight)) this.settings.maxRowHeight.match(/^[0-9]+%$/) ? (b.value = parseFloat(this.settings.maxRowHeight.match(/^([0-9]+)%$/)[1]) / 100, b.isPercentage = !1) : (b.value = parseFloat(this.settings.maxRowHeight), b.isPercentage = !0);
else {
if ("number" !== a.type(this.settings.maxRowHeight)) {
if (this.settings.maxRowHeight === !1 || null === this.settings.maxRowHeight || "undefined" == typeof this.settings.maxRowHeight) return null;
throw "maxRowHeight must be a number or a percentage"
}
b.value = this.settings.maxRowHeight, b.isPercentage = !1
}
if (isNaN(b.value)) throw "invalid number for maxRowHeight";
return b.isPercentage && b.value < 100 && (b.value = 100), b
}, c.prototype.checkSettings = function() {
this.checkSizeRangesSuffixes(), this.checkOrConvertNumber(this.settings, "rowHeight"), this.checkOrConvertNumber(this.settings, "margins"), this.checkOrConvertNumber(this.settings, "border");
var b = ["justify", "nojustify", "left", "center", "right", "hide"];
if (-1 === b.indexOf(this.settings.lastRow)) throw "lastRow must be one of: " + b.join(", ");
if (this.checkOrConvertNumber(this.settings, "justifyThreshold"), this.settings.justifyThreshold < 0 || this.settings.justifyThreshold > 1) throw "justifyThreshold must be in the interval [0,1]";
if ("boolean" !== a.type(this.settings.cssAnimation)) throw "cssAnimation must be a boolean";
if ("boolean" !== a.type(this.settings.captions)) throw "captions must be a boolean";
if (this.checkOrConvertNumber(this.settings.captionSettings, "animationDuration"), this.checkOrConvertNumber(this.settings.captionSettings, "visibleOpacity"), this.settings.captionSettings.visibleOpacity < 0 || this.settings.captionSettings.visibleOpacity > 1) throw "captionSettings.visibleOpacity must be in the interval [0, 1]";
if (this.checkOrConvertNumber(this.settings.captionSettings, "nonVisibleOpacity"), this.settings.captionSettings.nonVisibleOpacity < 0 || this.settings.captionSettings.nonVisibleOpacity > 1) throw "captionSettings.nonVisibleOpacity must be in the interval [0, 1]";
if (this.checkOrConvertNumber(this.settings, "imagesAnimationDuration"), this.checkOrConvertNumber(this.settings, "refreshTime"), this.checkOrConvertNumber(this.settings, "refreshSensitivity"), "boolean" !== a.type(this.settings.randomize)) throw "randomize must be a boolean";
if ("string" !== a.type(this.settings.selector)) throw "selector must be a string";
if (this.settings.sort !== !1 && !a.isFunction(this.settings.sort)) throw "sort must be false or a comparison function";
if (this.settings.filter !== !1 && !a.isFunction(this.settings.filter) && "string" !== a.type(this.settings.filter)) throw "filter must be false, a string or a filter function"
}, c.prototype.retrieveSuffixRanges = function() {
var a = [];
for (var b in this.settings.sizeRangeSuffixes) this.settings.sizeRangeSuffixes.hasOwnProperty(b) && a.push(parseInt(b, 10));
return a.sort(function(a, b) {
return a > b ? 1 : b > a ? -1 : 0
}), a
}, c.prototype.updateSettings = function(b) {
this.settings = a.extend({}, this.settings, b), this.checkSettings(), this.border = this.settings.border >= 0 ? this.settings.border : this.settings.margins, this.maxRowHeight = this.retrieveMaxRowHeight(), this.suffixRanges = this.retrieveSuffixRanges()
}, a.fn.justifiedGallery = function(b) {
return this.each(function(d, e) {
var f = a(e);
f.addClass("justified-gallery");
var g = f.data("jg.controller");
if ("undefined" == typeof g) {
if ("undefined" != typeof b && null !== b && "object" !== a.type(b)) {
if ("destroy" === b) return;
throw "The argument must be an object"
}
g = new c(f, a.extend({}, a.fn.justifiedGallery.defaults, b)), f.data("jg.controller", g)
} else if ("norewind" === b);
else {
if ("destroy" === b) return void g.destroy();
g.updateSettings(b), g.rewind()
}
g.updateEntries("norewind" === b) && g.init()
})
}, a.fn.justifiedGallery.defaults = {
sizeRangeSuffixes: {},
thumbnailPath: void 0,
rowHeight: 120,
maxRowHeight: !1,
margins: 1,
border: -1,
lastRow: "nojustify",
justifyThreshold: .9,
waitThumbnailsLoad: !0,
captions: !0,
cssAnimation: !0,
imagesAnimationDuration: 500,
captionSettings: {
animationDuration: 500,
visibleOpacity: .7,
nonVisibleOpacity: 0
},
rel: null,
target: null,
extension: /\.[^.\\/]+$/,
refreshTime: 200,
refreshSensitivity: 0,
randomize: !1,
sort: !1,
filter: !1,
selector: "a, div:not(.spinner)"
}
}(jQuery);
/*! Magnific Popup - v1.1.0 - 2016-02-20
* http://dimsemenov.com/plugins/magnific-popup/
* Copyright (c) 2016 Dmitry Semenov; */
;(function (factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(['jquery'], factory);
} else if (typeof exports === 'object') {
// Node/CommonJS
factory(require('jquery'));
} else {
// Browser globals
factory(window.jQuery || window.Zepto);
}
}(function($) {
/*>>core*/
/**
*
* Magnific Popup Core JS file
*
*/
/**
* Private static constants
*/
var CLOSE_EVENT = 'Close',
BEFORE_CLOSE_EVENT = 'BeforeClose',
AFTER_CLOSE_EVENT = 'AfterClose',
BEFORE_APPEND_EVENT = 'BeforeAppend',
MARKUP_PARSE_EVENT = 'MarkupParse',
OPEN_EVENT = 'Open',
CHANGE_EVENT = 'Change',
NS = 'mfp',
EVENT_NS = '.' + NS,
READY_CLASS = 'mfp-ready',
REMOVING_CLASS = 'mfp-removing',
PREVENT_CLOSE_CLASS = 'mfp-prevent-close';
/**
* Private vars
*/
/*jshint -W079 */
var mfp, // As we have only one instance of MagnificPopup object, we define it locally to not to use 'this'
MagnificPopup = function(){},
_isJQ = !!(window.jQuery),
_prevStatus,
_window = $(window),
_document,
_prevContentType,
_wrapClasses,
_currPopupType;
/**
* Private functions
*/
var _mfpOn = function(name, f) {
mfp.ev.on(NS + name + EVENT_NS, f);
},
_getEl = function(className, appendTo, html, raw) {
var el = document.createElement('div');
el.className = 'mfp-'+className;
if(html) {
el.innerHTML = html;
}
if(!raw) {
el = $(el);
if(appendTo) {
el.appendTo(appendTo);
}
} else if(appendTo) {
appendTo.appendChild(el);
}
return el;
},
_mfpTrigger = function(e, data) {
mfp.ev.triggerHandler(NS + e, data);
if(mfp.st.callbacks) {
// converts "mfpEventName" to "eventName" callback and triggers it if it's present
e = e.charAt(0).toLowerCase() + e.slice(1);
if(mfp.st.callbacks[e]) {
mfp.st.callbacks[e].apply(mfp, $.isArray(data) ? data : [data]);
}
}
},
_getCloseBtn = function(type) {
if(type !== _currPopupType || !mfp.currTemplate.closeBtn) {
mfp.currTemplate.closeBtn = $( mfp.st.closeMarkup.replace('%title%', mfp.st.tClose ) );
_currPopupType = type;
}
return mfp.currTemplate.closeBtn;
},
// Initialize Magnific Popup only when called at least once
_checkInstance = function() {
if(!$.magnificPopup.instance) {
/*jshint -W020 */
mfp = new MagnificPopup();
mfp.init();
$.magnificPopup.instance = mfp;
}
},
// CSS transition detection, http://stackoverflow.com/questions/7264899/detect-css-transitions-using-javascript-and-without-modernizr
supportsTransitions = function() {
var s = document.createElement('p').style, // 's' for style. better to create an element if body yet to exist
v = ['ms','O','Moz','Webkit']; // 'v' for vendor
if( s['transition'] !== undefined ) {
return true;
}
while( v.length ) {
if( v.pop() + 'Transition' in s ) {
return true;
}
}
return false;
};
/**
* Public functions
*/
MagnificPopup.prototype = {
constructor: MagnificPopup,
/**
* Initializes Magnific Popup plugin.
* This function is triggered only once when $.fn.magnificPopup or $.magnificPopup is executed
*/
init: function() {
var appVersion = navigator.appVersion;
mfp.isLowIE = mfp.isIE8 = document.all && !document.addEventListener;
mfp.isAndroid = (/android/gi).test(appVersion);
mfp.isIOS = (/iphone|ipad|ipod/gi).test(appVersion);
mfp.supportsTransition = supportsTransitions();
// We disable fixed positioned lightbox on devices that don't handle it nicely.
// If you know a better way of detecting this - let me know.
mfp.probablyMobile = (mfp.isAndroid || mfp.isIOS || /(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent) );
_document = $(document);
mfp.popupsCache = {};
},
/**
* Opens popup
* @param data [description]
*/
open: function(data) {
var i;
if(data.isObj === false) {
// convert jQuery collection to array to avoid conflicts later
mfp.items = data.items.toArray();
mfp.index = 0;
var items = data.items,
item;
for(i = 0; i < items.length; i++) {
item = items[i];
if(item.parsed) {
item = item.el[0];
}
if(item === data.el[0]) {
mfp.index = i;
break;
}
}
} else {
mfp.items = $.isArray(data.items) ? data.items : [data.items];
mfp.index = data.index || 0;
}
// if popup is already opened - we just update the content
if(mfp.isOpen) {
mfp.updateItemHTML();
return;
}
mfp.types = [];
_wrapClasses = '';
if(data.mainEl && data.mainEl.length) {
mfp.ev = data.mainEl.eq(0);
} else {
mfp.ev = _document;
}
if(data.key) {
if(!mfp.popupsCache[data.key]) {
mfp.popupsCache[data.key] = {};
}
mfp.currTemplate = mfp.popupsCache[data.key];
} else {
mfp.currTemplate = {};
}
mfp.st = $.extend(true, {}, $.magnificPopup.defaults, data );
mfp.fixedContentPos = mfp.st.fixedContentPos === 'auto' ? !mfp.probablyMobile : mfp.st.fixedContentPos;
if(mfp.st.modal) {
mfp.st.closeOnContentClick = false;
mfp.st.closeOnBgClick = false;
mfp.st.showCloseBtn = false;
mfp.st.enableEscapeKey = false;
}
// Building markup
// main containers are created only once
if(!mfp.bgOverlay) {
// Dark overlay
mfp.bgOverlay = _getEl('bg').on('click'+EVENT_NS, function() {
mfp.close();
});
mfp.wrap = _getEl('wrap').attr('tabindex', -1).on('click'+EVENT_NS, function(e) {
if(mfp._checkIfClose(e.target)) {
mfp.close();
}
});
mfp.container = _getEl('container', mfp.wrap);
}
mfp.contentContainer = _getEl('content');
if(mfp.st.preloader) {
mfp.preloader = _getEl('preloader', mfp.container, mfp.st.tLoading);
}
// Initializing modules
var modules = $.magnificPopup.modules;
for(i = 0; i < modules.length; i++) {
var n = modules[i];
n = n.charAt(0).toUpperCase() + n.slice(1);
mfp['init'+n].call(mfp);
}
_mfpTrigger('BeforeOpen');
if(mfp.st.showCloseBtn) {
// Close button
if(!mfp.st.closeBtnInside) {
mfp.wrap.append( _getCloseBtn() );
} else {
_mfpOn(MARKUP_PARSE_EVENT, function(e, template, values, item) {
values.close_replaceWith = _getCloseBtn(item.type);
});
_wrapClasses += ' mfp-close-btn-in';
}
}
if(mfp.st.alignTop) {
_wrapClasses += ' mfp-align-top';
}
if(mfp.fixedContentPos) {
mfp.wrap.css({
overflow: mfp.st.overflowY,
overflowX: 'hidden',
overflowY: mfp.st.overflowY
});
} else {
mfp.wrap.css({
top: _window.scrollTop(),
position: 'absolute'
});
}
if( mfp.st.fixedBgPos === false || (mfp.st.fixedBgPos === 'auto' && !mfp.fixedContentPos) ) {
mfp.bgOverlay.css({
height: _document.height(),
position: 'absolute'
});
}
if(mfp.st.enableEscapeKey) {
// Close on ESC key
_document.on('keyup' + EVENT_NS, function(e) {
if(e.keyCode === 27) {
mfp.close();
}
});
}
_window.on('resize' + EVENT_NS, function() {
mfp.updateSize();
});
if(!mfp.st.closeOnContentClick) {
_wrapClasses += ' mfp-auto-cursor';
}
if(_wrapClasses)
mfp.wrap.addClass(_wrapClasses);
// this triggers recalculation of layout, so we get it once to not to trigger twice
var windowHeight = mfp.wH = _window.height();
var windowStyles = {};
if( mfp.fixedContentPos ) {
if(mfp._hasScrollBar(windowHeight)){
var s = mfp._getScrollbarSize();
if(s) {
windowStyles.marginRight = s;
}
}
}
if(mfp.fixedContentPos) {
if(!mfp.isIE7) {
windowStyles.overflow = 'hidden';
} else {
// ie7 double-scroll bug
$('body, html').css('overflow', 'hidden');
}
}
var classesToadd = mfp.st.mainClass;
if(mfp.isIE7) {
classesToadd += ' mfp-ie7';
}
if(classesToadd) {
mfp._addClassToMFP( classesToadd );
}
// add content
mfp.updateItemHTML();
_mfpTrigger('BuildControls');
// remove scrollbar, add margin e.t.c
$('html').css(windowStyles);
// add everything to DOM
mfp.bgOverlay.add(mfp.wrap).prependTo( mfp.st.prependTo || $(document.body) );
// Save last focused element
mfp._lastFocusedEl = document.activeElement;
// Wait for next cycle to allow CSS transition
setTimeout(function() {
if(mfp.content) {
mfp._addClassToMFP(READY_CLASS);
mfp._setFocus();
} else {
// if content is not defined (not loaded e.t.c) we add class only for BG
mfp.bgOverlay.addClass(READY_CLASS);
}
// Trap the focus in popup
_document.on('focusin' + EVENT_NS, mfp._onFocusIn);
}, 16);
mfp.isOpen = true;
mfp.updateSize(windowHeight);
_mfpTrigger(OPEN_EVENT);
return data;
},
/**
* Closes the popup
*/
close: function() {
if(!mfp.isOpen) return;
_mfpTrigger(BEFORE_CLOSE_EVENT);
mfp.isOpen = false;
// for CSS3 animation
if(mfp.st.removalDelay && !mfp.isLowIE && mfp.supportsTransition ) {
mfp._addClassToMFP(REMOVING_CLASS);
setTimeout(function() {
mfp._close();
}, mfp.st.removalDelay);
} else {
mfp._close();
}
},
/**
* Helper for close() function
*/
_close: function() {
_mfpTrigger(CLOSE_EVENT);
var classesToRemove = REMOVING_CLASS + ' ' + READY_CLASS + ' ';
mfp.bgOverlay.detach();
mfp.wrap.detach();
mfp.container.empty();
if(mfp.st.mainClass) {
classesToRemove += mfp.st.mainClass + ' ';
}
mfp._removeClassFromMFP(classesToRemove);
if(mfp.fixedContentPos) {
var windowStyles = {marginRight: ''};
if(mfp.isIE7) {
$('body, html').css('overflow', '');
} else {
windowStyles.overflow = '';
}
$('html').css(windowStyles);
}
_document.off('keyup' + EVENT_NS + ' focusin' + EVENT_NS);
mfp.ev.off(EVENT_NS);
// clean up DOM elements that aren't removed
mfp.wrap.attr('class', 'mfp-wrap').removeAttr('style');
mfp.bgOverlay.attr('class', 'mfp-bg');
mfp.container.attr('class', 'mfp-container');
// remove close button from target element
if(mfp.st.showCloseBtn &&
(!mfp.st.closeBtnInside || mfp.currTemplate[mfp.currItem.type] === true)) {
if(mfp.currTemplate.closeBtn)
mfp.currTemplate.closeBtn.detach();
}
if(mfp.st.autoFocusLast && mfp._lastFocusedEl) {
$(mfp._lastFocusedEl).focus(); // put tab focus back
}
mfp.currItem = null;
mfp.content = null;
mfp.currTemplate = null;
mfp.prevHeight = 0;
_mfpTrigger(AFTER_CLOSE_EVENT);
},
updateSize: function(winHeight) {
if(mfp.isIOS) {
// fixes iOS nav bars https://github.com/dimsemenov/Magnific-Popup/issues/2
var zoomLevel = document.documentElement.clientWidth / window.innerWidth;
var height = window.innerHeight * zoomLevel;
mfp.wrap.css('height', height);
mfp.wH = height;
} else {
mfp.wH = winHeight || _window.height();
}
// Fixes #84: popup incorrectly positioned with position:relative on body
if(!mfp.fixedContentPos) {
mfp.wrap.css('height', mfp.wH);
}
_mfpTrigger('Resize');
},
/**
* Set content of popup based on current index
*/
updateItemHTML: function() {
var item = mfp.items[mfp.index];
// Detach and perform modifications
mfp.contentContainer.detach();
if(mfp.content)
mfp.content.detach();
if(!item.parsed) {
item = mfp.parseEl( mfp.index );
}
var type = item.type;
_mfpTrigger('BeforeChange', [mfp.currItem ? mfp.currItem.type : '', type]);
// BeforeChange event works like so:
// _mfpOn('BeforeChange', function(e, prevType, newType) { });
mfp.currItem = item;
if(!mfp.currTemplate[type]) {
var markup = mfp.st[type] ? mfp.st[type].markup : false;
// allows to modify markup
_mfpTrigger('FirstMarkupParse', markup);
if(markup) {
mfp.currTemplate[type] = $(markup);
} else {
// if there is no markup found we just define that template is parsed
mfp.currTemplate[type] = true;
}
}
if(_prevContentType && _prevContentType !== item.type) {
mfp.container.removeClass('mfp-'+_prevContentType+'-holder');
}
var newContent = mfp['get' + type.charAt(0).toUpperCase() + type.slice(1)](item, mfp.currTemplate[type]);
mfp.appendContent(newContent, type);
item.preloaded = true;
_mfpTrigger(CHANGE_EVENT, item);
_prevContentType = item.type;
// Append container back after its content changed
mfp.container.prepend(mfp.contentContainer);
_mfpTrigger('AfterChange');
},
/**
* Set HTML content of popup
*/
appendContent: function(newContent, type) {
mfp.content = newContent;
if(newContent) {
if(mfp.st.showCloseBtn && mfp.st.closeBtnInside &&
mfp.currTemplate[type] === true) {
// if there is no markup, we just append close button element inside
if(!mfp.content.find('.mfp-close').length) {
mfp.content.append(_getCloseBtn());
}
} else {
mfp.content = newContent;
}
} else {
mfp.content = '';
}
_mfpTrigger(BEFORE_APPEND_EVENT);
mfp.container.addClass('mfp-'+type+'-holder');
mfp.contentContainer.append(mfp.content);
},
/**
* Creates Magnific Popup data object based on given data
* @param {int} index Index of item to parse
*/
parseEl: function(index) {
var item = mfp.items[index],
type;
if(item.tagName) {
item = { el: $(item) };
} else {
type = item.type;
item = { data: item, src: item.src };
}
if(item.el) {
var types = mfp.types;
// check for 'mfp-TYPE' class
for(var i = 0; i < types.length; i++) {
if( item.el.hasClass('mfp-'+types[i]) ) {
type = types[i];
break;
}
}
item.src = item.el.attr('data-mfp-src');
if(!item.src) {
item.src = item.el.attr('href');
}
}
item.type = type || mfp.st.type || 'inline';
item.index = index;
item.parsed = true;
mfp.items[index] = item;
_mfpTrigger('ElementParse', item);
return mfp.items[index];
},
/**
* Initializes single popup or a group of popups
*/
addGroup: function(el, options) {
var eHandler = function(e) {
e.mfpEl = this;
mfp._openClick(e, el, options);
};
if(!options) {
options = {};
}
var eName = 'click.magnificPopup';
options.mainEl = el;
if(options.items) {
options.isObj = true;
el.off(eName).on(eName, eHandler);
} else {
options.isObj = false;
if(options.delegate) {
el.off(eName).on(eName, options.delegate , eHandler);
} else {
options.items = el;
el.off(eName).on(eName, eHandler);
}
}
},
_openClick: function(e, el, options) {
var midClick = options.midClick !== undefined ? options.midClick : $.magnificPopup.defaults.midClick;
if(!midClick && ( e.which === 2 || e.ctrlKey || e.metaKey || e.altKey || e.shiftKey ) ) {
return;
}
var disableOn = options.disableOn !== undefined ? options.disableOn : $.magnificPopup.defaults.disableOn;
if(disableOn) {
if($.isFunction(disableOn)) {
if( !disableOn.call(mfp) ) {
return true;
}
} else { // else it's number
if( _window.width() < disableOn ) {
return true;
}
}
}
if(e.type) {
e.preventDefault();
// This will prevent popup from closing if element is inside and popup is already opened
if(mfp.isOpen) {
e.stopPropagation();
}
}
options.el = $(e.mfpEl);
if(options.delegate) {
options.items = el.find(options.delegate);
}
mfp.open(options);
},
/**
* Updates text on preloader
*/
updateStatus: function(status, text) {
if(mfp.preloader) {
if(_prevStatus !== status) {
mfp.container.removeClass('mfp-s-'+_prevStatus);
}
if(!text && status === 'loading') {
text = mfp.st.tLoading;
}
var data = {
status: status,
text: text
};
// allows to modify status
_mfpTrigger('UpdateStatus', data);
status = data.status;
text = data.text;
mfp.preloader.html(text);
mfp.preloader.find('a').on('click', function(e) {
e.stopImmediatePropagation();
});
mfp.container.addClass('mfp-s-'+status);
_prevStatus = status;
}
},
/*
"Private" helpers that aren't private at all
*/
// Check to close popup or not
// "target" is an element that was clicked
_checkIfClose: function(target) {
if($(target).hasClass(PREVENT_CLOSE_CLASS)) {
return;
}
var closeOnContent = mfp.st.closeOnContentClick;
var closeOnBg = mfp.st.closeOnBgClick;
if(closeOnContent && closeOnBg) {
return true;
} else {
// We close the popup if click is on close button or on preloader. Or if there is no content.
if(!mfp.content || $(target).hasClass('mfp-close') || (mfp.preloader && target === mfp.preloader[0]) ) {
return true;
}
// if click is outside the content
if( (target !== mfp.content[0] && !$.contains(mfp.content[0], target)) ) {
if(closeOnBg) {
// last check, if the clicked element is in DOM, (in case it's removed onclick)
if( $.contains(document, target) ) {
return true;
}
}
} else if(closeOnContent) {
return true;
}
}
return false;
},
_addClassToMFP: function(cName) {
mfp.bgOverlay.addClass(cName);
mfp.wrap.addClass(cName);
},
_removeClassFromMFP: function(cName) {
this.bgOverlay.removeClass(cName);
mfp.wrap.removeClass(cName);
},
_hasScrollBar: function(winHeight) {
return ( (mfp.isIE7 ? _document.height() : document.body.scrollHeight) > (winHeight || _window.height()) );
},
_setFocus: function() {
(mfp.st.focus ? mfp.content.find(mfp.st.focus).eq(0) : mfp.wrap).focus();
},
_onFocusIn: function(e) {
if( e.target !== mfp.wrap[0] && !$.contains(mfp.wrap[0], e.target) ) {
mfp._setFocus();
return false;
}
},
_parseMarkup: function(template, values, item) {
var arr;
if(item.data) {
values = $.extend(item.data, values);
}
_mfpTrigger(MARKUP_PARSE_EVENT, [template, values, item] );
$.each(values, function(key, value) {
if(value === undefined || value === false) {
return true;
}
arr = key.split('_');
if(arr.length > 1) {
var el = template.find(EVENT_NS + '-'+arr[0]);
if(el.length > 0) {
var attr = arr[1];
if(attr === 'replaceWith') {
if(el[0] !== value[0]) {
el.replaceWith(value);
}
} else if(attr === 'img') {
if(el.is('img')) {
el.attr('src', value);
} else {
el.replaceWith( $('<img>').attr('src', value).attr('class', el.attr('class')) );
}
} else {
el.attr(arr[1], value);
}
}
} else {
template.find(EVENT_NS + '-'+key).html(value);
}
});
},
_getScrollbarSize: function() {
// thx David
if(mfp.scrollbarSize === undefined) {
var scrollDiv = document.createElement("div");
scrollDiv.style.cssText = 'width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;';
document.body.appendChild(scrollDiv);
mfp.scrollbarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth;
document.body.removeChild(scrollDiv);
}
return mfp.scrollbarSize;
}
}; /* MagnificPopup core prototype end */
/**
* Public static functions
*/
$.magnificPopup = {
instance: null,
proto: MagnificPopup.prototype,
modules: [],
open: function(options, index) {
_checkInstance();
if(!options) {
options = {};
} else {
options = $.extend(true, {}, options);
}
options.isObj = true;
options.index = index || 0;
return this.instance.open(options);
},
close: function() {
return $.magnificPopup.instance && $.magnificPopup.instance.close();
},
registerModule: function(name, module) {
if(module.options) {
$.magnificPopup.defaults[name] = module.options;
}
$.extend(this.proto, module.proto);
this.modules.push(name);
},
defaults: {
// Info about options is in docs:
// http://dimsemenov.com/plugins/magnific-popup/documentation.html#options
disableOn: 0,
key: null,
midClick: false,
mainClass: '',
preloader: true,
focus: '', // CSS selector of input to focus after popup is opened
closeOnContentClick: false,
closeOnBgClick: true,
closeBtnInside: true,
showCloseBtn: true,
enableEscapeKey: true,
modal: false,
alignTop: false,
removalDelay: 0,
prependTo: null,
fixedContentPos: 'auto',
fixedBgPos: 'auto',
overflowY: 'auto',
closeMarkup: '<button title="%title%" type="button" class="mfp-close">×</button>',
tClose: 'Close (Esc)',
tLoading: 'Loading...',
autoFocusLast: true
}
};
$.fn.magnificPopup = function(options) {
_checkInstance();
var jqEl = $(this);
// We call some API method of first param is a string
if (typeof options === "string" ) {
if(options === 'open') {
var items,
itemOpts = _isJQ ? jqEl.data('magnificPopup') : jqEl[0].magnificPopup,
index = parseInt(arguments[1], 10) || 0;
if(itemOpts.items) {
items = itemOpts.items[index];
} else {
items = jqEl;
if(itemOpts.delegate) {
items = items.find(itemOpts.delegate);
}
items = items.eq( index );
}
mfp._openClick({mfpEl:items}, jqEl, itemOpts);
} else {
if(mfp.isOpen)
mfp[options].apply(mfp, Array.prototype.slice.call(arguments, 1));
}
} else {
// clone options obj
options = $.extend(true, {}, options);
/*
* As Zepto doesn't support .data() method for objects
* and it works only in normal browsers
* we assign "options" object directly to the DOM element. FTW!
*/
if(_isJQ) {
jqEl.data('magnificPopup', options);
} else {
jqEl[0].magnificPopup = options;
}
mfp.addGroup(jqEl, options);
}
return jqEl;
};
/*>>core*/
/*>>inline*/
var INLINE_NS = 'inline',
_hiddenClass,
_inlinePlaceholder,
_lastInlineElement,
_putInlineElementsBack = function() {
if(_lastInlineElement) {
_inlinePlaceholder.after( _lastInlineElement.addClass(_hiddenClass) ).detach();
_lastInlineElement = null;
}
};
$.magnificPopup.registerModule(INLINE_NS, {
options: {
hiddenClass: 'hide', // will be appended with `mfp-` prefix
markup: '',
tNotFound: 'Content not found'
},
proto: {
initInline: function() {
mfp.types.push(INLINE_NS);
_mfpOn(CLOSE_EVENT+'.'+INLINE_NS, function() {
_putInlineElementsBack();
});
},
getInline: function(item, template) {
_putInlineElementsBack();
if(item.src) {
var inlineSt = mfp.st.inline,
el = $(item.src);
if(el.length) {
// If target element has parent - we replace it with placeholder and put it back after popup is closed
var parent = el[0].parentNode;
if(parent && parent.tagName) {
if(!_inlinePlaceholder) {
_hiddenClass = inlineSt.hiddenClass;
_inlinePlaceholder = _getEl(_hiddenClass);
_hiddenClass = 'mfp-'+_hiddenClass;
}
// replace target inline element with placeholder
_lastInlineElement = el.after(_inlinePlaceholder).detach().removeClass(_hiddenClass);
}
mfp.updateStatus('ready');
} else {
mfp.updateStatus('error', inlineSt.tNotFound);
el = $('<div>');
}
item.inlineElement = el;
return el;
}
mfp.updateStatus('ready');
mfp._parseMarkup(template, {}, item);
return template;
}
}
});
/*>>inline*/
/*>>ajax*/
var AJAX_NS = 'ajax',
_ajaxCur,
_removeAjaxCursor = function() {
if(_ajaxCur) {
$(document.body).removeClass(_ajaxCur);
}
},
_destroyAjaxRequest = function() {
_removeAjaxCursor();
if(mfp.req) {
mfp.req.abort();
}
};
$.magnificPopup.registerModule(AJAX_NS, {
options: {
settings: null,
cursor: 'mfp-ajax-cur',
tError: '<a href="%url%">The content</a> could not be loaded.'
},
proto: {
initAjax: function() {
mfp.types.push(AJAX_NS);
_ajaxCur = mfp.st.ajax.cursor;
_mfpOn(CLOSE_EVENT+'.'+AJAX_NS, _destroyAjaxRequest);
_mfpOn('BeforeChange.' + AJAX_NS, _destroyAjaxRequest);
},
getAjax: function(item) {
if(_ajaxCur) {
$(document.body).addClass(_ajaxCur);
}
mfp.updateStatus('loading');
var opts = $.extend({
url: item.src,
success: function(data, textStatus, jqXHR) {
var temp = {
data:data,
xhr:jqXHR
};
_mfpTrigger('ParseAjax', temp);
mfp.appendContent( $(temp.data), AJAX_NS );
item.finished = true;
_removeAjaxCursor();
mfp._setFocus();
setTimeout(function() {
mfp.wrap.addClass(READY_CLASS);
}, 16);
mfp.updateStatus('ready');
_mfpTrigger('AjaxContentAdded');
},
error: function() {
_removeAjaxCursor();
item.finished = item.loadError = true;
mfp.updateStatus('error', mfp.st.ajax.tError.replace('%url%', item.src));
}
}, mfp.st.ajax.settings);
mfp.req = $.ajax(opts);
return '';
}
}
});
/*>>ajax*/
/*>>image*/
var _imgInterval,
_getTitle = function(item) {
if(item.data && item.data.title !== undefined)
return item.data.title;
var src = mfp.st.image.titleSrc;
if(src) {
if($.isFunction(src)) {
return src.call(mfp, item);
} else if(item.el) {
return item.el.attr(src) || '';
}
}
return '';
};
$.magnificPopup.registerModule('image', {
options: {
markup: '<div class="mfp-figure">'+
'<div class="mfp-close"></div>'+
'<figure>'+
'<div class="mfp-img"></div>'+
'<figcaption>'+
'<div class="mfp-bottom-bar">'+
'<div class="mfp-title"></div>'+
'<div class="mfp-counter"></div>'+
'</div>'+
'</figcaption>'+
'</figure>'+
'</div>',
cursor: 'mfp-zoom-out-cur',
titleSrc: 'title',
verticalFit: true,
tError: '<a href="%url%">The image</a> could not be loaded.'
},
proto: {
initImage: function() {
var imgSt = mfp.st.image,
ns = '.image';
mfp.types.push('image');
_mfpOn(OPEN_EVENT+ns, function() {
if(mfp.currItem.type === 'image' && imgSt.cursor) {
$(document.body).addClass(imgSt.cursor);
}
});
_mfpOn(CLOSE_EVENT+ns, function() {
if(imgSt.cursor) {
$(document.body).removeClass(imgSt.cursor);
}
_window.off('resize' + EVENT_NS);
});
_mfpOn('Resize'+ns, mfp.resizeImage);
if(mfp.isLowIE) {
_mfpOn('AfterChange', mfp.resizeImage);
}
},
resizeImage: function() {
var item = mfp.currItem;
if(!item || !item.img) return;
if(mfp.st.image.verticalFit) {
var decr = 0;
// fix box-sizing in ie7/8
if(mfp.isLowIE) {
decr = parseInt(item.img.css('padding-top'), 10) + parseInt(item.img.css('padding-bottom'),10);
}
item.img.css('max-height', mfp.wH-decr);
}
},
_onImageHasSize: function(item) {
if(item.img) {
item.hasSize = true;
if(_imgInterval) {
clearInterval(_imgInterval);
}
item.isCheckingImgSize = false;
_mfpTrigger('ImageHasSize', item);
if(item.imgHidden) {
if(mfp.content)
mfp.content.removeClass('mfp-loading');
item.imgHidden = false;
}
}
},
/**
* Function that loops until the image has size to display elements that rely on it asap
*/
findImageSize: function(item) {
var counter = 0,
img = item.img[0],
mfpSetInterval = function(delay) {
if(_imgInterval) {
clearInterval(_imgInterval);
}
// decelerating interval that checks for size of an image
_imgInterval = setInterval(function() {
if(img.naturalWidth > 0) {
mfp._onImageHasSize(item);
return;
}
if(counter > 200) {
clearInterval(_imgInterval);
}
counter++;
if(counter === 3) {
mfpSetInterval(10);
} else if(counter === 40) {
mfpSetInterval(50);
} else if(counter === 100) {
mfpSetInterval(500);
}
}, delay);
};
mfpSetInterval(1);
},
getImage: function(item, template) {
var guard = 0,
// image load complete handler
onLoadComplete = function() {
if(item) {
if (item.img[0].complete) {
item.img.off('.mfploader');
if(item === mfp.currItem){
mfp._onImageHasSize(item);
mfp.updateStatus('ready');
}
item.hasSize = true;
item.loaded = true;
_mfpTrigger('ImageLoadComplete');
}
else {
// if image complete check fails 200 times (20 sec), we assume that there was an error.
guard++;
if(guard < 200) {
setTimeout(onLoadComplete,100);
} else {
onLoadError();
}
}
}
},
// image error handler
onLoadError = function() {
if(item) {
item.img.off('.mfploader');
if(item === mfp.currItem){
mfp._onImageHasSize(item);
mfp.updateStatus('error', imgSt.tError.replace('%url%', item.src) );
}
item.hasSize = true;
item.loaded = true;
item.loadError = true;
}
},
imgSt = mfp.st.image;
var el = template.find('.mfp-img');
if(el.length) {
var img = document.createElement('img');
img.className = 'mfp-img';
if(item.el && item.el.find('img').length) {
img.alt = item.el.find('img').attr('alt');
}
item.img = $(img).on('load.mfploader', onLoadComplete).on('error.mfploader', onLoadError);
img.src = item.src;
// without clone() "error" event is not firing when IMG is replaced by new IMG
// TODO: find a way to avoid such cloning
if(el.is('img')) {
item.img = item.img.clone();
}
img = item.img[0];
if(img.naturalWidth > 0) {
item.hasSize = true;
} else if(!img.width) {
item.hasSize = false;
}
}
mfp._parseMarkup(template, {
title: _getTitle(item),
img_replaceWith: item.img
}, item);
mfp.resizeImage();
if(item.hasSize) {
if(_imgInterval) clearInterval(_imgInterval);
if(item.loadError) {
template.addClass('mfp-loading');
mfp.updateStatus('error', imgSt.tError.replace('%url%', item.src) );
} else {
template.removeClass('mfp-loading');
mfp.updateStatus('ready');
}
return template;
}
mfp.updateStatus('loading');
item.loading = true;
if(!item.hasSize) {
item.imgHidden = true;
template.addClass('mfp-loading');
mfp.findImageSize(item);
}
return template;
}
}
});
/*>>image*/
/*>>zoom*/
var hasMozTransform,
getHasMozTransform = function() {
if(hasMozTransform === undefined) {
hasMozTransform = document.createElement('p').style.MozTransform !== undefined;
}
return hasMozTransform;
};
$.magnificPopup.registerModule('zoom', {
options: {
enabled: false,
easing: 'ease-in-out',
duration: 300,
opener: function(element) {
return element.is('img') ? element : element.find('img');
}
},
proto: {
initZoom: function() {
var zoomSt = mfp.st.zoom,
ns = '.zoom',
image;
if(!zoomSt.enabled || !mfp.supportsTransition) {
return;
}
var duration = zoomSt.duration,
getElToAnimate = function(image) {
var newImg = image.clone().removeAttr('style').removeAttr('class').addClass('mfp-animated-image'),
transition = 'all '+(zoomSt.duration/1000)+'s ' + zoomSt.easing,
cssObj = {
position: 'fixed',
zIndex: 9999,
left: 0,
top: 0,
'-webkit-backface-visibility': 'hidden'
},
t = 'transition';
cssObj['-webkit-'+t] = cssObj['-moz-'+t] = cssObj['-o-'+t] = cssObj[t] = transition;
newImg.css(cssObj);
return newImg;
},
showMainContent = function() {
mfp.content.css('visibility', 'visible');
},
openTimeout,
animatedImg;
_mfpOn('BuildControls'+ns, function() {
if(mfp._allowZoom()) {
clearTimeout(openTimeout);
mfp.content.css('visibility', 'hidden');
// Basically, all code below does is clones existing image, puts in on top of the current one and animated it
image = mfp._getItemToZoom();
if(!image) {
showMainContent();
return;
}
animatedImg = getElToAnimate(image);
animatedImg.css( mfp._getOffset() );
mfp.wrap.append(animatedImg);
openTimeout = setTimeout(function() {
animatedImg.css( mfp._getOffset( true ) );
openTimeout = setTimeout(function() {
showMainContent();
setTimeout(function() {
animatedImg.remove();
image = animatedImg = null;
_mfpTrigger('ZoomAnimationEnded');
}, 16); // avoid blink when switching images
}, duration); // this timeout equals animation duration
}, 16); // by adding this timeout we avoid short glitch at the beginning of animation
// Lots of timeouts...
}
});
_mfpOn(BEFORE_CLOSE_EVENT+ns, function() {
if(mfp._allowZoom()) {
clearTimeout(openTimeout);
mfp.st.removalDelay = duration;
if(!image) {
image = mfp._getItemToZoom();
if(!image) {
return;
}
animatedImg = getElToAnimate(image);
}
animatedImg.css( mfp._getOffset(true) );
mfp.wrap.append(animatedImg);
mfp.content.css('visibility', 'hidden');
setTimeout(function() {
animatedImg.css( mfp._getOffset() );
}, 16);
}
});
_mfpOn(CLOSE_EVENT+ns, function() {
if(mfp._allowZoom()) {
showMainContent();
if(animatedImg) {
animatedImg.remove();
}
image = null;
}
});
},
_allowZoom: function() {
return mfp.currItem.type === 'image';
},
_getItemToZoom: function() {
if(mfp.currItem.hasSize) {
return mfp.currItem.img;
} else {
return false;
}
},
// Get element postion relative to viewport
_getOffset: function(isLarge) {
var el;
if(isLarge) {
el = mfp.currItem.img;
} else {
el = mfp.st.zoom.opener(mfp.currItem.el || mfp.currItem);
}
var offset = el.offset();
var paddingTop = parseInt(el.css('padding-top'),10);
var paddingBottom = parseInt(el.css('padding-bottom'),10);
offset.top -= ( $(window).scrollTop() - paddingTop );
/*
Animating left + top + width/height looks glitchy in Firefox, but perfect in Chrome. And vice-versa.
*/
var obj = {
width: el.width(),
// fix Zepto height+padding issue
height: (_isJQ ? el.innerHeight() : el[0].offsetHeight) - paddingBottom - paddingTop
};
// I hate to do this, but there is no another option
if( getHasMozTransform() ) {
obj['-moz-transform'] = obj['transform'] = 'translate(' + offset.left + 'px,' + offset.top + 'px)';
} else {
obj.left = offset.left;
obj.top = offset.top;
}
return obj;
}
}
});
/*>>zoom*/
/*>>iframe*/
var IFRAME_NS = 'iframe',
_emptyPage = '//about:blank',
_fixIframeBugs = function(isShowing) {
if(mfp.currTemplate[IFRAME_NS]) {
var el = mfp.currTemplate[IFRAME_NS].find('iframe');
if(el.length) {
// reset src after the popup is closed to avoid "video keeps playing after popup is closed" bug
if(!isShowing) {
el[0].src = _emptyPage;
}
// IE8 black screen bug fix
if(mfp.isIE8) {
el.css('display', isShowing ? 'block' : 'none');
}
}
}
};
$.magnificPopup.registerModule(IFRAME_NS, {
options: {
markup: '<div class="mfp-iframe-scaler">'+
'<div class="mfp-close"></div>'+
'<iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe>'+
'</div>',
srcAction: 'iframe_src',
// we don't care and support only one default type of URL by default
patterns: {
youtube: {
index: 'youtube.com',
id: 'v=',
src: '//www.youtube.com/embed/%id%?autoplay=1'
},
vimeo: {
index: 'vimeo.com/',
id: '/',
src: '//player.vimeo.com/video/%id%?autoplay=1'
},
gmaps: {
index: '//maps.google.',
src: '%id%&output=embed'
}
}
},
proto: {
initIframe: function() {
mfp.types.push(IFRAME_NS);
_mfpOn('BeforeChange', function(e, prevType, newType) {
if(prevType !== newType) {
if(prevType === IFRAME_NS) {
_fixIframeBugs(); // iframe if removed
} else if(newType === IFRAME_NS) {
_fixIframeBugs(true); // iframe is showing
}
}// else {
// iframe source is switched, don't do anything
//}
});
_mfpOn(CLOSE_EVENT + '.' + IFRAME_NS, function() {
_fixIframeBugs();
});
},
getIframe: function(item, template) {
var embedSrc = item.src;
var iframeSt = mfp.st.iframe;
$.each(iframeSt.patterns, function() {
if(embedSrc.indexOf( this.index ) > -1) {
if(this.id) {
if(typeof this.id === 'string') {
embedSrc = embedSrc.substr(embedSrc.lastIndexOf(this.id)+this.id.length, embedSrc.length);
} else {
embedSrc = this.id.call( this, embedSrc );
}
}
embedSrc = this.src.replace('%id%', embedSrc );
return false; // break;
}
});
var dataObj = {};
if(iframeSt.srcAction) {
dataObj[iframeSt.srcAction] = embedSrc;
}
mfp._parseMarkup(template, dataObj, item);
mfp.updateStatus('ready');
return template;
}
}
});
/*>>iframe*/
/*>>gallery*/
/**
* Get looped index depending on number of slides
*/
var _getLoopedId = function(index) {
var numSlides = mfp.items.length;
if(index > numSlides - 1) {
return index - numSlides;
} else if(index < 0) {
return numSlides + index;
}
return index;
},
_replaceCurrTotal = function(text, curr, total) {
return text.replace(/%curr%/gi, curr + 1).replace(/%total%/gi, total);
};
$.magnificPopup.registerModule('gallery', {
options: {
enabled: false,
arrowMarkup: '<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>',
preload: [0,2],
navigateByImgClick: true,
arrows: true,
tPrev: 'Previous (Left arrow key)',
tNext: 'Next (Right arrow key)',
tCounter: '%curr% of %total%'
},
proto: {
initGallery: function() {
var gSt = mfp.st.gallery,
ns = '.mfp-gallery';
mfp.direction = true; // true - next, false - prev
if(!gSt || !gSt.enabled ) return false;
_wrapClasses += ' mfp-gallery';
_mfpOn(OPEN_EVENT+ns, function() {
if(gSt.navigateByImgClick) {
mfp.wrap.on('click'+ns, '.mfp-img', function() {
if(mfp.items.length > 1) {
mfp.next();
return false;
}
});
}
_document.on('keydown'+ns, function(e) {
if (e.keyCode === 37) {
mfp.prev();
} else if (e.keyCode === 39) {
mfp.next();
}
});
});
_mfpOn('UpdateStatus'+ns, function(e, data) {
if(data.text) {
data.text = _replaceCurrTotal(data.text, mfp.currItem.index, mfp.items.length);
}
});
_mfpOn(MARKUP_PARSE_EVENT+ns, function(e, element, values, item) {
var l = mfp.items.length;
values.counter = l > 1 ? _replaceCurrTotal(gSt.tCounter, item.index, l) : '';
});
_mfpOn('BuildControls' + ns, function() {
if(mfp.items.length > 1 && gSt.arrows && !mfp.arrowLeft) {
var markup = gSt.arrowMarkup,
arrowLeft = mfp.arrowLeft = $( markup.replace(/%title%/gi, gSt.tPrev).replace(/%dir%/gi, 'left') ).addClass(PREVENT_CLOSE_CLASS),
arrowRight = mfp.arrowRight = $( markup.replace(/%title%/gi, gSt.tNext).replace(/%dir%/gi, 'right') ).addClass(PREVENT_CLOSE_CLASS);
arrowLeft.click(function() {
mfp.prev();
});
arrowRight.click(function() {
mfp.next();
});
mfp.container.append(arrowLeft.add(arrowRight));
}
});
_mfpOn(CHANGE_EVENT+ns, function() {
if(mfp._preloadTimeout) clearTimeout(mfp._preloadTimeout);
mfp._preloadTimeout = setTimeout(function() {
mfp.preloadNearbyImages();
mfp._preloadTimeout = null;
}, 16);
});
_mfpOn(CLOSE_EVENT+ns, function() {
_document.off(ns);
mfp.wrap.off('click'+ns);
mfp.arrowRight = mfp.arrowLeft = null;
});
},
next: function() {
mfp.direction = true;
mfp.index = _getLoopedId(mfp.index + 1);
mfp.updateItemHTML();
},
prev: function() {
mfp.direction = false;
mfp.index = _getLoopedId(mfp.index - 1);
mfp.updateItemHTML();
},
goTo: function(newIndex) {
mfp.direction = (newIndex >= mfp.index);
mfp.index = newIndex;
mfp.updateItemHTML();
},
preloadNearbyImages: function() {
var p = mfp.st.gallery.preload,
preloadBefore = Math.min(p[0], mfp.items.length),
preloadAfter = Math.min(p[1], mfp.items.length),
i;
for(i = 1; i <= (mfp.direction ? preloadAfter : preloadBefore); i++) {
mfp._preloadItem(mfp.index+i);
}
for(i = 1; i <= (mfp.direction ? preloadBefore : preloadAfter); i++) {
mfp._preloadItem(mfp.index-i);
}
},
_preloadItem: function(index) {
index = _getLoopedId(index);
if(mfp.items[index].preloaded) {
return;
}
var item = mfp.items[index];
if(!item.parsed) {
item = mfp.parseEl( index );
}
_mfpTrigger('LazyLoad', item);
if(item.type === 'image') {
item.img = $('<img class="mfp-img" />').on('load.mfploader', function() {
item.hasSize = true;
}).on('error.mfploader', function() {
item.hasSize = true;
item.loadError = true;
_mfpTrigger('LazyLoadError', item);
}).attr('src', item.src);
}
item.preloaded = true;
}
}
});
/*>>gallery*/
_checkInstance(); }));
/**
* Owl Carousel v2.1.0
* Copyright 2013-2016 David Deutsch
* Licensed under MIT (https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE)
*/
! function(a, b, c, d) {
function e(b, c) {
this.settings = null, this.options = a.extend({}, e.Defaults, c), this.$element = a(b), this._handlers = {}, this._plugins = {}, this._supress = {}, this._current = null, this._speed = null, this._coordinates = [], this._breakpoint = null, this._width = null, this._items = [], this._clones = [], this._mergers = [], this._widths = [], this._invalidated = {}, this._pipe = [], this._drag = {
time: null,
target: null,
pointer: null,
stage: {
start: null,
current: null
},
direction: null
}, this._states = {
current: {},
tags: {
initializing: ["busy"],
animating: ["busy"],
dragging: ["interacting"]
}
}, a.each(["onResize", "onThrottledResize"], a.proxy(function(b, c) {
this._handlers[c] = a.proxy(this[c], this)
}, this)), a.each(e.Plugins, a.proxy(function(a, b) {
this._plugins[a.charAt(0).toLowerCase() + a.slice(1)] = new b(this)
}, this)), a.each(e.Workers, a.proxy(function(b, c) {
this._pipe.push({
filter: c.filter,
run: a.proxy(c.run, this)
})
}, this)), this.setup(), this.initialize()
}
e.Defaults = {
items: 3,
loop: !1,
center: !1,
rewind: !1,
mouseDrag: !0,
touchDrag: !0,
pullDrag: !0,
freeDrag: !1,
margin: 0,
stagePadding: 0,
merge: !1,
mergeFit: !0,
autoWidth: !1,
startPosition: 0,
rtl: !1,
smartSpeed: 250,
fluidSpeed: !1,
dragEndSpeed: !1,
responsive: {},
responsiveRefreshRate: 200,
responsiveBaseElement: b,
fallbackEasing: "swing",
info: !1,
nestedItemSelector: !1,
itemElement: "div",
stageElement: "div",
refreshClass: "owl-refresh",
loadedClass: "owl-loaded",
loadingClass: "owl-loading",
rtlClass: "owl-rtl",
responsiveClass: "owl-responsive",
dragClass: "owl-drag",
itemClass: "owl-item",
stageClass: "owl-stage",
stageOuterClass: "owl-stage-outer",
grabClass: "owl-grab"
}, e.Width = {
Default: "default",
Inner: "inner",
Outer: "outer"
}, e.Type = {
Event: "event",
State: "state"
}, e.Plugins = {}, e.Workers = [{
filter: ["width", "settings"],
run: function() {
this._width = this.$element.width()
}
}, {
filter: ["width", "items", "settings"],
run: function(a) {
a.current = this._items && this._items[this.relative(this._current)]
}
}, {
filter: ["items", "settings"],
run: function() {
this.$stage.children(".cloned").remove()
}
}, {
filter: ["width", "items", "settings"],
run: function(a) {
var b = this.settings.margin || "",
c = !this.settings.autoWidth,
d = this.settings.rtl,
e = {
width: "auto",
"margin-left": d ? b : "",
"margin-right": d ? "" : b
};
!c && this.$stage.children().css(e), a.css = e
}
}, {
filter: ["width", "items", "settings"],
run: function(a) {
var b = (this.width() / this.settings.items).toFixed(3) - this.settings.margin,
c = null,
d = this._items.length,
e = !this.settings.autoWidth,
f = [];
for (a.items = {
merge: !1,
width: b
}; d--;) c = this._mergers[d], c = this.settings.mergeFit && Math.min(c, this.settings.items) || c, a.items.merge = c > 1 || a.items.merge, f[d] = e ? b * c : this._items[d].width();
this._widths = f
}
}, {
filter: ["items", "settings"],
run: function() {
var b = [],
c = this._items,
d = this.settings,
e = Math.max(2 * d.items, 4),
f = 2 * Math.ceil(c.length / 2),
g = d.loop && c.length ? d.rewind ? e : Math.max(e, f) : 0,
h = "",
i = "";
for (g /= 2; g--;) b.push(this.normalize(b.length / 2, !0)), h += c[b[b.length - 1]][0].outerHTML, b.push(this.normalize(c.length - 1 - (b.length - 1) / 2, !0)), i = c[b[b.length - 1]][0].outerHTML + i;
this._clones = b, a(h).addClass("cloned").appendTo(this.$stage), a(i).addClass("cloned").prependTo(this.$stage)
}
}, {
filter: ["width", "items", "settings"],
run: function() {
for (var a = this.settings.rtl ? 1 : -1, b = this._clones.length + this._items.length, c = -1, d = 0, e = 0, f = []; ++c < b;) d = f[c - 1] || 0, e = this._widths[this.relative(c)] + this.settings.margin, f.push(d + e * a);
this._coordinates = f
}
}, {
filter: ["width", "items", "settings"],
run: function() {
var a = this.settings.stagePadding,
b = this._coordinates,
c = {
width: Math.ceil(Math.abs(b[b.length - 1])) + 2 * a,
"padding-left": a || "",
"padding-right": a || ""
};
this.$stage.css(c)
}
}, {
filter: ["width", "items", "settings"],
run: function(a) {
var b = this._coordinates.length,
c = !this.settings.autoWidth,
d = this.$stage.children();
if (c && a.items.merge)
for (; b--;) a.css.width = this._widths[this.relative(b)], d.eq(b).css(a.css);
else c && (a.css.width = a.items.width, d.css(a.css))
}
}, {
filter: ["items"],
run: function() {
this._coordinates.length < 1 && this.$stage.removeAttr("style")
}
}, {
filter: ["width", "items", "settings"],
run: function(a) {
a.current = a.current ? this.$stage.children().index(a.current) : 0, a.current = Math.max(this.minimum(), Math.min(this.maximum(), a.current)), this.reset(a.current)
}
}, {
filter: ["position"],
run: function() {
this.animate(this.coordinates(this._current))
}
}, {
filter: ["width", "position", "items", "settings"],
run: function() {
var a, b, c, d, e = this.settings.rtl ? 1 : -1,
f = 2 * this.settings.stagePadding,
g = this.coordinates(this.current()) + f,
h = g + this.width() * e,
i = [];
for (c = 0, d = this._coordinates.length; d > c; c++) a = this._coordinates[c - 1] || 0, b = Math.abs(this._coordinates[c]) + f * e, (this.op(a, "<=", g) && this.op(a, ">", h) || this.op(b, "<", g) && this.op(b, ">", h)) && i.push(c);
this.$stage.children(".active").removeClass("active"), this.$stage.children(":eq(" + i.join("), :eq(") + ")").addClass("active"), this.settings.center && (this.$stage.children(".center").removeClass("center"), this.$stage.children().eq(this.current()).addClass("center"))
}
}], e.prototype.initialize = function() {
if (this.enter("initializing"), this.trigger("initialize"), this.$element.toggleClass(this.settings.rtlClass, this.settings.rtl), this.settings.autoWidth && !this.is("pre-loading")) {
var b, c, e;
b = this.$element.find("img"), c = this.settings.nestedItemSelector ? "." + this.settings.nestedItemSelector : d, e = this.$element.children(c).width(), b.length && 0 >= e && this.preloadAutoWidthImages(b)
}
this.$element.addClass(this.options.loadingClass), this.$stage = a("<" + this.settings.stageElement + ' class="' + this.settings.stageClass + '"/>').wrap('<div class="' + this.settings.stageOuterClass + '"/>'), this.$element.append(this.$stage.parent()), this.replace(this.$element.children().not(this.$stage.parent())), this.$element.is(":visible") ? this.refresh() : this.invalidate("width"), this.$element.removeClass(this.options.loadingClass).addClass(this.options.loadedClass), this.registerEventHandlers(), this.leave("initializing"), this.trigger("initialized")
}, e.prototype.setup = function() {
var b = this.viewport(),
c = this.options.responsive,
d = -1,
e = null;
c ? (a.each(c, function(a) {
b >= a && a > d && (d = Number(a))
}), e = a.extend({}, this.options, c[d]), delete e.responsive, e.responsiveClass && this.$element.attr("class", this.$element.attr("class").replace(new RegExp("(" + this.options.responsiveClass + "-)\\S+\\s", "g"), "$1" + d))) : e = a.extend({}, this.options), null !== this.settings && this._breakpoint === d || (this.trigger("change", {
property: {
name: "settings",
value: e
}
}), this._breakpoint = d, this.settings = e, this.invalidate("settings"), this.trigger("changed", {
property: {
name: "settings",
value: this.settings
}
}))
}, e.prototype.optionsLogic = function() {
this.settings.autoWidth && (this.settings.stagePadding = !1, this.settings.merge = !1)
}, e.prototype.prepare = function(b) {
var c = this.trigger("prepare", {
content: b
});
return c.data || (c.data = a("<" + this.settings.itemElement + "/>").addClass(this.options.itemClass).append(b)), this.trigger("prepared", {
content: c.data
}), c.data
}, e.prototype.update = function() {
for (var b = 0, c = this._pipe.length, d = a.proxy(function(a) {
return this[a]
}, this._invalidated), e = {}; c > b;)(this._invalidated.all || a.grep(this._pipe[b].filter, d).length > 0) && this._pipe[b].run(e), b++;
this._invalidated = {}, !this.is("valid") && this.enter("valid")
}, e.prototype.width = function(a) {
switch (a = a || e.Width.Default) {
case e.Width.Inner:
case e.Width.Outer:
return this._width;
default:
return this._width - 2 * this.settings.stagePadding + this.settings.margin
}
}, e.prototype.refresh = function() {
this.enter("refreshing"), this.trigger("refresh"), this.setup(), this.optionsLogic(), this.$element.addClass(this.options.refreshClass), this.update(), this.$element.removeClass(this.options.refreshClass), this.leave("refreshing"), this.trigger("refreshed")
}, e.prototype.onThrottledResize = function() {
b.clearTimeout(this.resizeTimer), this.resizeTimer = b.setTimeout(this._handlers.onResize, this.settings.responsiveRefreshRate)
}, e.prototype.onResize = function() {
return this._items.length ? this._width === this.$element.width() ? !1 : this.$element.is(":visible") ? (this.enter("resizing"), this.trigger("resize").isDefaultPrevented() ? (this.leave("resizing"), !1) : (this.invalidate("width"), this.refresh(), this.leave("resizing"), void this.trigger("resized"))) : !1 : !1
}, e.prototype.registerEventHandlers = function() {
a.support.transition && this.$stage.on(a.support.transition.end + ".owl.core", a.proxy(this.onTransitionEnd, this)), this.settings.responsive !== !1 && this.on(b, "resize", this._handlers.onThrottledResize), this.settings.mouseDrag && (this.$element.addClass(this.options.dragClass), this.$stage.on("mousedown.owl.core", a.proxy(this.onDragStart, this)), this.$stage.on("dragstart.owl.core selectstart.owl.core", function() {
return !1
})), this.settings.touchDrag && (this.$stage.on("touchstart.owl.core", a.proxy(this.onDragStart, this)), this.$stage.on("touchcancel.owl.core", a.proxy(this.onDragEnd, this)))
}, e.prototype.onDragStart = function(b) {
var d = null;
3 !== b.which && (a.support.transform ? (d = this.$stage.css("transform").replace(/.*\(|\)| /g, "").split(","), d = {
x: d[16 === d.length ? 12 : 4],
y: d[16 === d.length ? 13 : 5]
}) : (d = this.$stage.position(), d = {
x: this.settings.rtl ? d.left + this.$stage.width() - this.width() + this.settings.margin : d.left,
y: d.top
}), this.is("animating") && (a.support.transform ? this.animate(d.x) : this.$stage.stop(), this.invalidate("position")), this.$element.toggleClass(this.options.grabClass, "mousedown" === b.type), this.speed(0), this._drag.time = (new Date).getTime(), this._drag.target = a(b.target), this._drag.stage.start = d, this._drag.stage.current = d, this._drag.pointer = this.pointer(b), a(c).on("mouseup.owl.core touchend.owl.core", a.proxy(this.onDragEnd, this)), a(c).one("mousemove.owl.core touchmove.owl.core", a.proxy(function(b) {
var d = this.difference(this._drag.pointer, this.pointer(b));
a(c).on("mousemove.owl.core touchmove.owl.core", a.proxy(this.onDragMove, this)), Math.abs(d.x) < Math.abs(d.y) && this.is("valid") || (b.preventDefault(), this.enter("dragging"), this.trigger("drag"))
}, this)))
}, e.prototype.onDragMove = function(a) {
var b = null,
c = null,
d = null,
e = this.difference(this._drag.pointer, this.pointer(a)),
f = this.difference(this._drag.stage.start, e);
this.is("dragging") && (a.preventDefault(), this.settings.loop ? (b = this.coordinates(this.minimum()), c = this.coordinates(this.maximum() + 1) - b, f.x = ((f.x - b) % c + c) % c + b) : (b = this.settings.rtl ? this.coordinates(this.maximum()) : this.coordinates(this.minimum()), c = this.settings.rtl ? this.coordinates(this.minimum()) : this.coordinates(this.maximum()), d = this.settings.pullDrag ? -1 * e.x / 5 : 0, f.x = Math.max(Math.min(f.x, b + d), c + d)), this._drag.stage.current = f, this.animate(f.x))
}, e.prototype.onDragEnd = function(b) {
var d = this.difference(this._drag.pointer, this.pointer(b)),
e = this._drag.stage.current,
f = d.x > 0 ^ this.settings.rtl ? "left" : "right";
a(c).off(".owl.core"), this.$element.removeClass(this.options.grabClass), (0 !== d.x && this.is("dragging") || !this.is("valid")) && (this.speed(this.settings.dragEndSpeed || this.settings.smartSpeed), this.current(this.closest(e.x, 0 !== d.x ? f : this._drag.direction)), this.invalidate("position"), this.update(), this._drag.direction = f, (Math.abs(d.x) > 3 || (new Date).getTime() - this._drag.time > 300) && this._drag.target.one("click.owl.core", function() {
return !1
})), this.is("dragging") && (this.leave("dragging"), this.trigger("dragged"))
}, e.prototype.closest = function(b, c) {
var d = -1,
e = 30,
f = this.width(),
g = this.coordinates();
return this.settings.freeDrag || a.each(g, a.proxy(function(a, h) {
return "left" === c && b > h - e && h + e > b ? d = a : "right" === c && b > h - f - e && h - f + e > b ? d = a + 1 : this.op(b, "<", h) && this.op(b, ">", g[a + 1] || h - f) && (d = "left" === c ? a + 1 : a), -1 === d
}, this)), this.settings.loop || (this.op(b, ">", g[this.minimum()]) ? d = b = this.minimum() : this.op(b, "<", g[this.maximum()]) && (d = b = this.maximum())), d
}, e.prototype.animate = function(b) {
var c = this.speed() > 0;
this.is("animating") && this.onTransitionEnd(), c && (this.enter("animating"), this.trigger("translate")), a.support.transform3d && a.support.transition ? this.$stage.css({
transform: "translate3d(" + b + "px,0px,0px)",
transition: this.speed() / 1e3 + "s"
}) : c ? this.$stage.animate({
left: b + "px"
}, this.speed(), this.settings.fallbackEasing, a.proxy(this.onTransitionEnd, this)) : this.$stage.css({
left: b + "px"
})
}, e.prototype.is = function(a) {
return this._states.current[a] && this._states.current[a] > 0
}, e.prototype.current = function(a) {
if (a === d) return this._current;
if (0 === this._items.length) return d;
if (a = this.normalize(a), this._current !== a) {
var b = this.trigger("change", {
property: {
name: "position",
value: a
}
});
b.data !== d && (a = this.normalize(b.data)), this._current = a, this.invalidate("position"), this.trigger("changed", {
property: {
name: "position",
value: this._current
}
})
}
return this._current
}, e.prototype.invalidate = function(b) {
return "string" === a.type(b) && (this._invalidated[b] = !0, this.is("valid") && this.leave("valid")), a.map(this._invalidated, function(a, b) {
return b
})
}, e.prototype.reset = function(a) {
a = this.normalize(a), a !== d && (this._speed = 0, this._current = a, this.suppress(["translate", "translated"]), this.animate(this.coordinates(a)), this.release(["translate", "translated"]))
}, e.prototype.normalize = function(a, b) {
var c = this._items.length,
e = b ? 0 : this._clones.length;
return !this.isNumeric(a) || 1 > c ? a = d : (0 > a || a >= c + e) && (a = ((a - e / 2) % c + c) % c + e / 2), a
}, e.prototype.relative = function(a) {
return a -= this._clones.length / 2, this.normalize(a, !0)
}, e.prototype.maximum = function(a) {
var b, c = this.settings,
d = this._coordinates.length,
e = Math.abs(this._coordinates[d - 1]) - this._width,
f = -1;
if (c.loop) d = this._clones.length / 2 + this._items.length - 1;
else if (c.autoWidth || c.merge)
for (; d - f > 1;) Math.abs(this._coordinates[b = d + f >> 1]) < e ? f = b : d = b;
else d = c.center ? this._items.length - 1 : this._items.length - c.items;
return a && (d -= this._clones.length / 2), Math.max(d, 0)
}, e.prototype.minimum = function(a) {
return a ? 0 : this._clones.length / 2
}, e.prototype.items = function(a) {
return a === d ? this._items.slice() : (a = this.normalize(a, !0), this._items[a])
}, e.prototype.mergers = function(a) {
return a === d ? this._mergers.slice() : (a = this.normalize(a, !0), this._mergers[a])
}, e.prototype.clones = function(b) {
var c = this._clones.length / 2,
e = c + this._items.length,
f = function(a) {
return a % 2 === 0 ? e + a / 2 : c - (a + 1) / 2
};
return b === d ? a.map(this._clones, function(a, b) {
return f(b)
}) : a.map(this._clones, function(a, c) {
return a === b ? f(c) : null
})
}, e.prototype.speed = function(a) {
return a !== d && (this._speed = a), this._speed
}, e.prototype.coordinates = function(b) {
var c, e = 1,
f = b - 1;
return b === d ? a.map(this._coordinates, a.proxy(function(a, b) {
return this.coordinates(b)
}, this)) : (this.settings.center ? (this.settings.rtl && (e = -1, f = b + 1), c = this._coordinates[b], c += (this.width() - c + (this._coordinates[f] || 0)) / 2 * e) : c = this._coordinates[f] || 0, c = Math.ceil(c))
}, e.prototype.duration = function(a, b, c) {
return 0 === c ? 0 : Math.min(Math.max(Math.abs(b - a), 1), 6) * Math.abs(c || this.settings.smartSpeed)
}, e.prototype.to = function(a, b) {
var c = this.current(),
d = null,
e = a - this.relative(c),
f = (e > 0) - (0 > e),
g = this._items.length,
h = this.minimum(),
i = this.maximum();
this.settings.loop ? (!this.settings.rewind && Math.abs(e) > g / 2 && (e += -1 * f * g), a = c + e, d = ((a - h) % g + g) % g + h, d !== a && i >= d - e && d - e > 0 && (c = d - e, a = d, this.reset(c))) : this.settings.rewind ? (i += 1, a = (a % i + i) % i) : a = Math.max(h, Math.min(i, a)), this.speed(this.duration(c, a, b)), this.current(a), this.$element.is(":visible") && this.update()
}, e.prototype.next = function(a) {
a = a || !1, this.to(this.relative(this.current()) + 1, a)
}, e.prototype.prev = function(a) {
a = a || !1, this.to(this.relative(this.current()) - 1, a)
}, e.prototype.onTransitionEnd = function(a) {
return a !== d && (a.stopPropagation(), (a.target || a.srcElement || a.originalTarget) !== this.$stage.get(0)) ? !1 : (this.leave("animating"), void this.trigger("translated"))
}, e.prototype.viewport = function() {
var d;
if (this.options.responsiveBaseElement !== b) d = a(this.options.responsiveBaseElement).width();
else if (b.innerWidth) d = b.innerWidth;
else {
if (!c.documentElement || !c.documentElement.clientWidth) throw "Can not detect viewport width.";
d = c.documentElement.clientWidth
}
return d
}, e.prototype.replace = function(b) {
this.$stage.empty(), this._items = [], b && (b = b instanceof jQuery ? b : a(b)), this.settings.nestedItemSelector && (b = b.find("." + this.settings.nestedItemSelector)), b.filter(function() {
return 1 === this.nodeType
}).each(a.proxy(function(a, b) {
b = this.prepare(b), this.$stage.append(b), this._items.push(b), this._mergers.push(1 * b.find("[data-merge]").andSelf("[data-merge]").attr("data-merge") || 1)
}, this)), this.reset(this.isNumeric(this.settings.startPosition) ? this.settings.startPosition : 0), this.invalidate("items")
}, e.prototype.add = function(b, c) {
var e = this.relative(this._current);
c = c === d ? this._items.length : this.normalize(c, !0), b = b instanceof jQuery ? b : a(b), this.trigger("add", {
content: b,
position: c
}), b = this.prepare(b), 0 === this._items.length || c === this._items.length ? (0 === this._items.length && this.$stage.append(b), 0 !== this._items.length && this._items[c - 1].after(b), this._items.push(b), this._mergers.push(1 * b.find("[data-merge]").andSelf("[data-merge]").attr("data-merge") || 1)) : (this._items[c].before(b), this._items.splice(c, 0, b), this._mergers.splice(c, 0, 1 * b.find("[data-merge]").andSelf("[data-merge]").attr("data-merge") || 1)), this._items[e] && this.reset(this._items[e].index()), this.invalidate("items"), this.trigger("added", {
content: b,
position: c
})
}, e.prototype.remove = function(a) {
a = this.normalize(a, !0), a !== d && (this.trigger("remove", {
content: this._items[a],
position: a
}), this._items[a].remove(), this._items.splice(a, 1), this._mergers.splice(a, 1), this.invalidate("items"), this.trigger("removed", {
content: null,
position: a
}))
}, e.prototype.preloadAutoWidthImages = function(b) {
b.each(a.proxy(function(b, c) {
this.enter("pre-loading"), c = a(c), a(new Image).one("load", a.proxy(function(a) {
c.attr("src", a.target.src), c.css("opacity", 1), this.leave("pre-loading"), !this.is("pre-loading") && !this.is("initializing") && this.refresh()
}, this)).attr("src", c.attr("src") || c.attr("data-src") || c.attr("data-src-retina"))
}, this))
}, e.prototype.destroy = function() {
this.$element.off(".owl.core"), this.$stage.off(".owl.core"), a(c).off(".owl.core"), this.settings.responsive !== !1 && (b.clearTimeout(this.resizeTimer), this.off(b, "resize", this._handlers.onThrottledResize));
for (var d in this._plugins) this._plugins[d].destroy();
this.$stage.children(".cloned").remove(), this.$stage.unwrap(), this.$stage.children().contents().unwrap(), this.$stage.children().unwrap(), this.$element.removeClass(this.options.refreshClass).removeClass(this.options.loadingClass).removeClass(this.options.loadedClass).removeClass(this.options.rtlClass).removeClass(this.options.dragClass).removeClass(this.options.grabClass).attr("class", this.$element.attr("class").replace(new RegExp(this.options.responsiveClass + "-\\S+\\s", "g"), "")).removeData("owl.carousel")
}, e.prototype.op = function(a, b, c) {
var d = this.settings.rtl;
switch (b) {
case "<":
return d ? a > c : c > a;
case ">":
return d ? c > a : a > c;
case ">=":
return d ? c >= a : a >= c;
case "<=":
return d ? a >= c : c >= a
}
}, e.prototype.on = function(a, b, c, d) {
a.addEventListener ? a.addEventListener(b, c, d) : a.attachEvent && a.attachEvent("on" + b, c)
}, e.prototype.off = function(a, b, c, d) {
a.removeEventListener ? a.removeEventListener(b, c, d) : a.detachEvent && a.detachEvent("on" + b, c)
}, e.prototype.trigger = function(b, c, d, f, g) {
var h = {
item: {
count: this._items.length,
index: this.current()
}
},
i = a.camelCase(a.grep(["on", b, d], function(a) {
return a
}).join("-").toLowerCase()),
j = a.Event([b, "owl", d || "carousel"].join(".").toLowerCase(), a.extend({
relatedTarget: this
}, h, c));
return this._supress[b] || (a.each(this._plugins, function(a, b) {
b.onTrigger && b.onTrigger(j)
}), this.register({
type: e.Type.Event,
name: b
}), this.$element.trigger(j), this.settings && "function" == typeof this.settings[i] && this.settings[i].call(this, j)), j
}, e.prototype.enter = function(b) {
a.each([b].concat(this._states.tags[b] || []), a.proxy(function(a, b) {
this._states.current[b] === d && (this._states.current[b] = 0), this._states.current[b]++
}, this))
}, e.prototype.leave = function(b) {
a.each([b].concat(this._states.tags[b] || []), a.proxy(function(a, b) {
this._states.current[b]--
}, this))
}, e.prototype.register = function(b) {
if (b.type === e.Type.Event) {
if (a.event.special[b.name] || (a.event.special[b.name] = {}), !a.event.special[b.name].owl) {
var c = a.event.special[b.name]._default;
a.event.special[b.name]._default = function(a) {
return !c || !c.apply || a.namespace && -1 !== a.namespace.indexOf("owl") ? a.namespace && a.namespace.indexOf("owl") > -1 : c.apply(this, arguments)
}, a.event.special[b.name].owl = !0
}
} else b.type === e.Type.State && (this._states.tags[b.name] ? this._states.tags[b.name] = this._states.tags[b.name].concat(b.tags) : this._states.tags[b.name] = b.tags, this._states.tags[b.name] = a.grep(this._states.tags[b.name], a.proxy(function(c, d) {
return a.inArray(c, this._states.tags[b.name]) === d
}, this)))
}, e.prototype.suppress = function(b) {
a.each(b, a.proxy(function(a, b) {
this._supress[b] = !0
}, this))
}, e.prototype.release = function(b) {
a.each(b, a.proxy(function(a, b) {
delete this._supress[b]
}, this))
}, e.prototype.pointer = function(a) {
var c = {
x: null,
y: null
};
return a = a.originalEvent || a || b.event, a = a.touches && a.touches.length ? a.touches[0] : a.changedTouches && a.changedTouches.length ? a.changedTouches[0] : a, a.pageX ? (c.x = a.pageX, c.y = a.pageY) : (c.x = a.clientX, c.y = a.clientY), c
}, e.prototype.isNumeric = function(a) {
return !isNaN(parseFloat(a))
}, e.prototype.difference = function(a, b) {
return {
x: a.x - b.x,
y: a.y - b.y
}
}, a.fn.owlCarousel = function(b) {
var c = Array.prototype.slice.call(arguments, 1);
return this.each(function() {
var d = a(this),
f = d.data("owl.carousel");
f || (f = new e(this, "object" == typeof b && b), d.data("owl.carousel", f), a.each(["next", "prev", "to", "destroy", "refresh", "replace", "add", "remove"], function(b, c) {
f.register({
type: e.Type.Event,
name: c
}), f.$element.on(c + ".owl.carousel.core", a.proxy(function(a) {
a.namespace && a.relatedTarget !== this && (this.suppress([c]), f[c].apply(this, [].slice.call(arguments, 1)), this.release([c]))
}, f))
})), "string" == typeof b && "_" !== b.charAt(0) && f[b].apply(f, c)
})
}, a.fn.owlCarousel.Constructor = e
}(window.Zepto || window.jQuery, window, document),
function(a, b, c, d) {
var e = function(b) {
this._core = b, this._interval = null, this._visible = null, this._handlers = {
"initialized.owl.carousel": a.proxy(function(a) {
a.namespace && this._core.settings.autoRefresh && this.watch()
}, this)
}, this._core.options = a.extend({}, e.Defaults, this._core.options), this._core.$element.on(this._handlers)
};
e.Defaults = {
autoRefresh: !0,
autoRefreshInterval: 500
}, e.prototype.watch = function() {
this._interval || (this._visible = this._core.$element.is(":visible"), this._interval = b.setInterval(a.proxy(this.refresh, this), this._core.settings.autoRefreshInterval))
}, e.prototype.refresh = function() {
this._core.$element.is(":visible") !== this._visible && (this._visible = !this._visible, this._core.$element.toggleClass("owl-hidden", !this._visible), this._visible && this._core.invalidate("width") && this._core.refresh())
}, e.prototype.destroy = function() {
var a, c;
b.clearInterval(this._interval);
for (a in this._handlers) this._core.$element.off(a, this._handlers[a]);
for (c in Object.getOwnPropertyNames(this)) "function" != typeof this[c] && (this[c] = null)
}, a.fn.owlCarousel.Constructor.Plugins.AutoRefresh = e
}(window.Zepto || window.jQuery, window, document),
function(a, b, c, d) {
var e = function(b) {
this._core = b, this._loaded = [], this._handlers = {
"initialized.owl.carousel change.owl.carousel resized.owl.carousel": a.proxy(function(b) {
if (b.namespace && this._core.settings && this._core.settings.lazyLoad && (b.property && "position" == b.property.name || "initialized" == b.type))
for (var c = this._core.settings, e = c.center && Math.ceil(c.items / 2) || c.items, f = c.center && -1 * e || 0, g = (b.property && b.property.value !== d ? b.property.value : this._core.current()) + f, h = this._core.clones().length, i = a.proxy(function(a, b) {
this.load(b)
}, this); f++ < e;) this.load(h / 2 + this._core.relative(g)), h && a.each(this._core.clones(this._core.relative(g)), i), g++
}, this)
}, this._core.options = a.extend({}, e.Defaults, this._core.options), this._core.$element.on(this._handlers)
};
e.Defaults = {
lazyLoad: !1
}, e.prototype.load = function(c) {
var d = this._core.$stage.children().eq(c),
e = d && d.find(".owl-lazy");
!e || a.inArray(d.get(0), this._loaded) > -1 || (e.each(a.proxy(function(c, d) {
var e, f = a(d),
g = b.devicePixelRatio > 1 && f.attr("data-src-retina") || f.attr("data-src");
this._core.trigger("load", {
element: f,
url: g
}, "lazy"), f.is("img") ? f.one("load.owl.lazy", a.proxy(function() {
f.css("opacity", 1), this._core.trigger("loaded", {
element: f,
url: g
}, "lazy")
}, this)).attr("src", g) : (e = new Image, e.onload = a.proxy(function() {
f.css({
"background-image": "url(" + g + ")",
opacity: "1"
}), this._core.trigger("loaded", {
element: f,
url: g
}, "lazy")
}, this), e.src = g)
}, this)), this._loaded.push(d.get(0)))
}, e.prototype.destroy = function() {
var a, b;
for (a in this.handlers) this._core.$element.off(a, this.handlers[a]);
for (b in Object.getOwnPropertyNames(this)) "function" != typeof this[b] && (this[b] = null)
}, a.fn.owlCarousel.Constructor.Plugins.Lazy = e
}(window.Zepto || window.jQuery, window, document),
function(a, b, c, d) {
var e = function(b) {
this._core = b, this._handlers = {
"initialized.owl.carousel refreshed.owl.carousel": a.proxy(function(a) {
a.namespace && this._core.settings.autoHeight && this.update()
}, this),
"changed.owl.carousel": a.proxy(function(a) {
a.namespace && this._core.settings.autoHeight && "position" == a.property.name && this.update()
}, this),
"loaded.owl.lazy": a.proxy(function(a) {
a.namespace && this._core.settings.autoHeight && a.element.closest("." + this._core.settings.itemClass).index() === this._core.current() && this.update()
}, this)
}, this._core.options = a.extend({}, e.Defaults, this._core.options), this._core.$element.on(this._handlers)
};
e.Defaults = {
autoHeight: !1,
autoHeightClass: "owl-height"
}, e.prototype.update = function() {
var b = this._core._current,
c = b + this._core.settings.items,
d = this._core.$stage.children().toArray().slice(b, c),
e = [],
f = 0;
a.each(d, function(b, c) {
e.push(a(c).height())
}), f = Math.max.apply(null, e), this._core.$stage.parent().height(f).addClass(this._core.settings.autoHeightClass)
}, e.prototype.destroy = function() {
var a, b;
for (a in this._handlers) this._core.$element.off(a, this._handlers[a]);
for (b in Object.getOwnPropertyNames(this)) "function" != typeof this[b] && (this[b] = null)
}, a.fn.owlCarousel.Constructor.Plugins.AutoHeight = e
}(window.Zepto || window.jQuery, window, document),
function(a, b, c, d) {
var e = function(b) {
this._core = b, this._videos = {}, this._playing = null, this._handlers = {
"initialized.owl.carousel": a.proxy(function(a) {
a.namespace && this._core.register({
type: "state",
name: "playing",
tags: ["interacting"]
})
}, this),
"resize.owl.carousel": a.proxy(function(a) {
a.namespace && this._core.settings.video && this.isInFullScreen() && a.preventDefault()
}, this),
"refreshed.owl.carousel": a.proxy(function(a) {
a.namespace && this._core.is("resizing") && this._core.$stage.find(".cloned .owl-video-frame").remove()
}, this),
"changed.owl.carousel": a.proxy(function(a) {
a.namespace && "position" === a.property.name && this._playing && this.stop()
}, this),
"prepared.owl.carousel": a.proxy(function(b) {
if (b.namespace) {
var c = a(b.content).find(".owl-video");
c.length && (c.css("display", "none"), this.fetch(c, a(b.content)))
}
}, this)
}, this._core.options = a.extend({}, e.Defaults, this._core.options), this._core.$element.on(this._handlers), this._core.$element.on("click.owl.video", ".owl-video-play-icon", a.proxy(function(a) {
this.play(a)
}, this))
};
e.Defaults = {
video: !1,
videoHeight: !1,
videoWidth: !1
}, e.prototype.fetch = function(a, b) {
var c = function() {
return a.attr("data-vimeo-id") ? "vimeo" : a.attr("data-vzaar-id") ? "vzaar" : "youtube"
}(),
d = a.attr("data-vimeo-id") || a.attr("data-youtube-id") || a.attr("data-vzaar-id"),
e = a.attr("data-width") || this._core.settings.videoWidth,
f = a.attr("data-height") || this._core.settings.videoHeight,
g = a.attr("href");
if (!g) throw new Error("Missing video URL.");
if (d = g.match(/(http:|https:|)\/\/(player.|www.|app.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com)|vzaar\.com)\/(video\/|videos\/|embed\/|channels\/.+\/|groups\/.+\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/), d[3].indexOf("youtu") > -1) c = "youtube";
else if (d[3].indexOf("vimeo") > -1) c = "vimeo";
else {
if (!(d[3].indexOf("vzaar") > -1)) throw new Error("Video URL not supported.");
c = "vzaar"
}
d = d[6], this._videos[g] = {
type: c,
id: d,
width: e,
height: f
}, b.attr("data-video", g), this.thumbnail(a, this._videos[g])
}, e.prototype.thumbnail = function(b, c) {
var d, e, f, g = c.width && c.height ? 'style="width:' + c.width + "px;height:" + c.height + 'px;"' : "",
h = b.find("img"),
i = "src",
j = "",
k = this._core.settings,
l = function(a) {
e = '<div class="owl-video-play-icon"></div>', d = k.lazyLoad ? '<div class="owl-video-tn ' + j + '" ' + i + '="' + a + '"></div>' : '<div class="owl-video-tn" style="opacity:1;background-image:url(' + a + ')"></div>', b.after(d), b.after(e)
};
return b.wrap('<div class="owl-video-wrapper"' + g + "></div>"), this._core.settings.lazyLoad && (i = "data-src", j = "owl-lazy"), h.length ? (l(h.attr(i)), h.remove(), !1) : void("youtube" === c.type ? (f = "//img.youtube.com/vi/" + c.id + "/hqdefault.jpg", l(f)) : "vimeo" === c.type ? a.ajax({
type: "GET",
url: "//vimeo.com/api/v2/video/" + c.id + ".json",
jsonp: "callback",
dataType: "jsonp",
success: function(a) {
f = a[0].thumbnail_large, l(f)
}
}) : "vzaar" === c.type && a.ajax({
type: "GET",
url: "//vzaar.com/api/videos/" + c.id + ".json",
jsonp: "callback",
dataType: "jsonp",
success: function(a) {
f = a.framegrab_url, l(f)
}
}))
}, e.prototype.stop = function() {
this._core.trigger("stop", null, "video"), this._playing.find(".owl-video-frame").remove(), this._playing.removeClass("owl-video-playing"), this._playing = null, this._core.leave("playing"), this._core.trigger("stopped", null, "video")
}, e.prototype.play = function(b) {
var c, d = a(b.target),
e = d.closest("." + this._core.settings.itemClass),
f = this._videos[e.attr("data-video")],
g = f.width || "100%",
h = f.height || this._core.$stage.height();
this._playing || (this._core.enter("playing"), this._core.trigger("play", null, "video"), e = this._core.items(this._core.relative(e.index())), this._core.reset(e.index()), "youtube" === f.type ? c = '<iframe width="' + g + '" height="' + h + '" src="//www.youtube.com/embed/' + f.id + "?autoplay=1&v=" + f.id + '" frameborder="0" allowfullscreen></iframe>' : "vimeo" === f.type ? c = '<iframe src="//player.vimeo.com/video/' + f.id + '?autoplay=1" width="' + g + '" height="' + h + '" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>' : "vzaar" === f.type && (c = '<iframe frameborder="0"height="' + h + '"width="' + g + '" allowfullscreen mozallowfullscreen webkitAllowFullScreen src="//view.vzaar.com/' + f.id + '/player?autoplay=true"></iframe>'), a('<div class="owl-video-frame">' + c + "</div>").insertAfter(e.find(".owl-video")), this._playing = e.addClass("owl-video-playing"))
}, e.prototype.isInFullScreen = function() {
var b = c.fullscreenElement || c.mozFullScreenElement || c.webkitFullscreenElement;
return b && a(b).parent().hasClass("owl-video-frame")
}, e.prototype.destroy = function() {
var a, b;
this._core.$element.off("click.owl.video");
for (a in this._handlers) this._core.$element.off(a, this._handlers[a]);
for (b in Object.getOwnPropertyNames(this)) "function" != typeof this[b] && (this[b] = null)
}, a.fn.owlCarousel.Constructor.Plugins.Video = e
}(window.Zepto || window.jQuery, window, document),
function(a, b, c, d) {
var e = function(b) {
this.core = b, this.core.options = a.extend({}, e.Defaults, this.core.options), this.swapping = !0, this.previous = d, this.next = d, this.handlers = {
"change.owl.carousel": a.proxy(function(a) {
a.namespace && "position" == a.property.name && (this.previous = this.core.current(), this.next = a.property.value)
}, this),
"drag.owl.carousel dragged.owl.carousel translated.owl.carousel": a.proxy(function(a) {
a.namespace && (this.swapping = "translated" == a.type)
}, this),
"translate.owl.carousel": a.proxy(function(a) {
a.namespace && this.swapping && (this.core.options.animateOut || this.core.options.animateIn) && this.swap()
}, this)
}, this.core.$element.on(this.handlers)
};
e.Defaults = {
animateOut: !1,
animateIn: !1
}, e.prototype.swap = function() {
if (1 === this.core.settings.items && a.support.animation && a.support.transition) {
this.core.speed(0);
var b, c = a.proxy(this.clear, this),
d = this.core.$stage.children().eq(this.previous),
e = this.core.$stage.children().eq(this.next),
f = this.core.settings.animateIn,
g = this.core.settings.animateOut;
this.core.current() !== this.previous && (g && (b = this.core.coordinates(this.previous) - this.core.coordinates(this.next), d.one(a.support.animation.end, c).css({
left: b + "px"
}).addClass("animated owl-animated-out").addClass(g)), f && e.one(a.support.animation.end, c).addClass("animated owl-animated-in").addClass(f))
}
}, e.prototype.clear = function(b) {
a(b.target).css({
left: ""
}).removeClass("animated owl-animated-out owl-animated-in").removeClass(this.core.settings.animateIn).removeClass(this.core.settings.animateOut), this.core.onTransitionEnd()
}, e.prototype.destroy = function() {
var a, b;
for (a in this.handlers) this.core.$element.off(a, this.handlers[a]);
for (b in Object.getOwnPropertyNames(this)) "function" != typeof this[b] && (this[b] = null)
}, a.fn.owlCarousel.Constructor.Plugins.Animate = e
}(window.Zepto || window.jQuery, window, document),
function(a, b, c, d) {
var e = function(b) {
this._core = b, this._timeout = null, this._paused = !1, this._handlers = {
"changed.owl.carousel": a.proxy(function(a) {
a.namespace && "settings" === a.property.name ? this._core.settings.autoplay ? this.play() : this.stop() : a.namespace && "position" === a.property.name && this._core.settings.autoplay && this._setAutoPlayInterval()
}, this),
"initialized.owl.carousel": a.proxy(function(a) {
a.namespace && this._core.settings.autoplay && this.play()
}, this),
"play.owl.autoplay": a.proxy(function(a, b, c) {
a.namespace && this.play(b, c)
}, this),
"stop.owl.autoplay": a.proxy(function(a) {
a.namespace && this.stop()
}, this),
"mouseover.owl.autoplay": a.proxy(function() {
this._core.settings.autoplayHoverPause && this._core.is("rotating") && this.pause()
}, this),
"mouseleave.owl.autoplay": a.proxy(function() {
this._core.settings.autoplayHoverPause && this._core.is("rotating") && this.play()
}, this),
"touchstart.owl.core": a.proxy(function() {
this._core.settings.autoplayHoverPause && this._core.is("rotating") && this.pause()
}, this),
"touchend.owl.core": a.proxy(function() {
this._core.settings.autoplayHoverPause && this.play()
}, this)
}, this._core.$element.on(this._handlers), this._core.options = a.extend({}, e.Defaults, this._core.options)
};
e.Defaults = {
autoplay: !1,
autoplayTimeout: 5e3,
autoplayHoverPause: !1,
autoplaySpeed: !1
}, e.prototype.play = function(a, b) {
this._paused = !1, this._core.is("rotating") || (this._core.enter("rotating"), this._setAutoPlayInterval())
}, e.prototype._getNextTimeout = function(d, e) {
return this._timeout && b.clearTimeout(this._timeout), b.setTimeout(a.proxy(function() {
this._paused || this._core.is("busy") || this._core.is("interacting") || c.hidden || this._core.next(e || this._core.settings.autoplaySpeed)
}, this), d || this._core.settings.autoplayTimeout)
}, e.prototype._setAutoPlayInterval = function() {
this._timeout = this._getNextTimeout()
}, e.prototype.stop = function() {
this._core.is("rotating") && (b.clearTimeout(this._timeout), this._core.leave("rotating"))
}, e.prototype.pause = function() {
this._core.is("rotating") && (this._paused = !0)
}, e.prototype.destroy = function() {
var a, b;
this.stop();
for (a in this._handlers) this._core.$element.off(a, this._handlers[a]);
for (b in Object.getOwnPropertyNames(this)) "function" != typeof this[b] && (this[b] = null)
}, a.fn.owlCarousel.Constructor.Plugins.autoplay = e
}(window.Zepto || window.jQuery, window, document),
function(a, b, c, d) {
"use strict";
var e = function(b) {
this._core = b, this._initialized = !1, this._pages = [], this._controls = {}, this._templates = [], this.$element = this._core.$element, this._overrides = {
next: this._core.next,
prev: this._core.prev,
to: this._core.to
}, this._handlers = {
"prepared.owl.carousel": a.proxy(function(b) {
b.namespace && this._core.settings.dotsData && this._templates.push('<div class="' + this._core.settings.dotClass + '">' + a(b.content).find("[data-dot]").addBack("[data-dot]").attr("data-dot") + "</div>")
}, this),
"added.owl.carousel": a.proxy(function(a) {
a.namespace && this._core.settings.dotsData && this._templates.splice(a.position, 0, this._templates.pop())
}, this),
"remove.owl.carousel": a.proxy(function(a) {
a.namespace && this._core.settings.dotsData && this._templates.splice(a.position, 1)
}, this),
"changed.owl.carousel": a.proxy(function(a) {
a.namespace && "position" == a.property.name && this.draw()
}, this),
"initialized.owl.carousel": a.proxy(function(a) {
a.namespace && !this._initialized && (this._core.trigger("initialize", null, "navigation"), this.initialize(), this.update(), this.draw(), this._initialized = !0, this._core.trigger("initialized", null, "navigation"))
}, this),
"refreshed.owl.carousel": a.proxy(function(a) {
a.namespace && this._initialized && (this._core.trigger("refresh", null, "navigation"), this.update(), this.draw(), this._core.trigger("refreshed", null, "navigation"))
}, this)
}, this._core.options = a.extend({}, e.Defaults, this._core.options), this.$element.on(this._handlers)
};
e.Defaults = {
nav: !1,
navText: ["prev", "next"],
navSpeed: !1,
navElement: "div",
navContainer: !1,
navContainerClass: "owl-nav",
navClass: ["owl-prev", "owl-next"],
slideBy: 1,
dotClass: "owl-dot",
dotsClass: "owl-dots",
dots: !0,
dotsEach: !1,
dotsData: !1,
dotsSpeed: !1,
dotsContainer: !1
}, e.prototype.initialize = function() {
var b, c = this._core.settings;
this._controls.$relative = (c.navContainer ? a(c.navContainer) : a("<div>").addClass(c.navContainerClass).appendTo(this.$element)).addClass("disabled"), this._controls.$previous = a("<" + c.navElement + ">").addClass(c.navClass[0]).html(c.navText[0]).prependTo(this._controls.$relative).on("click", a.proxy(function(a) {
this.prev(c.navSpeed)
}, this)), this._controls.$next = a("<" + c.navElement + ">").addClass(c.navClass[1]).html(c.navText[1]).appendTo(this._controls.$relative).on("click", a.proxy(function(a) {
this.next(c.navSpeed)
}, this)), c.dotsData || (this._templates = [a("<div>").addClass(c.dotClass).append(a("<span>")).prop("outerHTML")]), this._controls.$absolute = (c.dotsContainer ? a(c.dotsContainer) : a("<div>").addClass(c.dotsClass).appendTo(this.$element)).addClass("disabled"), this._controls.$absolute.on("click", "div", a.proxy(function(b) {
var d = a(b.target).parent().is(this._controls.$absolute) ? a(b.target).index() : a(b.target).parent().index();
b.preventDefault(), this.to(d, c.dotsSpeed)
}, this));
for (b in this._overrides) this._core[b] = a.proxy(this[b], this)
}, e.prototype.destroy = function() {
var a, b, c, d;
for (a in this._handlers) this.$element.off(a, this._handlers[a]);
for (b in this._controls) this._controls[b].remove();
for (d in this.overides) this._core[d] = this._overrides[d];
for (c in Object.getOwnPropertyNames(this)) "function" != typeof this[c] && (this[c] = null)
}, e.prototype.update = function() {
var a, b, c, d = this._core.clones().length / 2,
e = d + this._core.items().length,
f = this._core.maximum(!0),
g = this._core.settings,
h = g.center || g.autoWidth || g.dotsData ? 1 : g.dotsEach || g.items;
if ("page" !== g.slideBy && (g.slideBy = Math.min(g.slideBy, g.items)), g.dots || "page" == g.slideBy)
for (this._pages = [], a = d, b = 0, c = 0; e > a; a++) {
if (b >= h || 0 === b) {
if (this._pages.push({
start: Math.min(f, a - d),
end: a - d + h - 1
}), Math.min(f, a - d) === f) break;
b = 0, ++c
}
b += this._core.mergers(this._core.relative(a))
}
}, e.prototype.draw = function() {
var b, c = this._core.settings,
d = this._core.items().length <= c.items,
e = this._core.relative(this._core.current()),
f = c.loop || c.rewind;
this._controls.$relative.toggleClass("disabled", !c.nav || d), c.nav && (this._controls.$previous.toggleClass("disabled", !f && e <= this._core.minimum(!0)), this._controls.$next.toggleClass("disabled", !f && e >= this._core.maximum(!0))), this._controls.$absolute.toggleClass("disabled", !c.dots || d), c.dots && (b = this._pages.length - this._controls.$absolute.children().length, c.dotsData && 0 !== b ? this._controls.$absolute.html(this._templates.join("")) : b > 0 ? this._controls.$absolute.append(new Array(b + 1).join(this._templates[0])) : 0 > b && this._controls.$absolute.children().slice(b).remove(), this._controls.$absolute.find(".active").removeClass("active"), this._controls.$absolute.children().eq(a.inArray(this.current(), this._pages)).addClass("active"))
}, e.prototype.onTrigger = function(b) {
var c = this._core.settings;
b.page = {
index: a.inArray(this.current(), this._pages),
count: this._pages.length,
size: c && (c.center || c.autoWidth || c.dotsData ? 1 : c.dotsEach || c.items)
}
}, e.prototype.current = function() {
var b = this._core.relative(this._core.current());
return a.grep(this._pages, a.proxy(function(a, c) {
return a.start <= b && a.end >= b
}, this)).pop()
}, e.prototype.getPosition = function(b) {
var c, d, e = this._core.settings;
return "page" == e.slideBy ? (c = a.inArray(this.current(), this._pages), d = this._pages.length, b ? ++c : --c, c = this._pages[(c % d + d) % d].start) : (c = this._core.relative(this._core.current()), d = this._core.items().length, b ? c += e.slideBy : c -= e.slideBy), c
}, e.prototype.next = function(b) {
a.proxy(this._overrides.to, this._core)(this.getPosition(!0), b)
}, e.prototype.prev = function(b) {
a.proxy(this._overrides.to, this._core)(this.getPosition(!1), b)
}, e.prototype.to = function(b, c, d) {
var e;
!d && this._pages.length ? (e = this._pages.length, a.proxy(this._overrides.to, this._core)(this._pages[(b % e + e) % e].start, c)) : a.proxy(this._overrides.to, this._core)(b, c)
}, a.fn.owlCarousel.Constructor.Plugins.Navigation = e
}(window.Zepto || window.jQuery, window, document),
function(a, b, c, d) {
"use strict";
var e = function(c) {
this._core = c, this._hashes = {}, this.$element = this._core.$element, this._handlers = {
"initialized.owl.carousel": a.proxy(function(c) {
c.namespace && "URLHash" === this._core.settings.startPosition && a(b).trigger("hashchange.owl.navigation")
}, this),
"prepared.owl.carousel": a.proxy(function(b) {
if (b.namespace) {
var c = a(b.content).find("[data-hash]").addBack("[data-hash]").attr("data-hash");
if (!c) return;
this._hashes[c] = b.content
}
}, this),
"changed.owl.carousel": a.proxy(function(c) {
if (c.namespace && "position" === c.property.name) {
var d = this._core.items(this._core.relative(this._core.current())),
e = a.map(this._hashes, function(a, b) {
return a === d ? b : null
}).join();
if (!e || b.location.hash.slice(1) === e) return;
b.location.hash = e
}
}, this)
}, this._core.options = a.extend({}, e.Defaults, this._core.options), this.$element.on(this._handlers), a(b).on("hashchange.owl.navigation", a.proxy(function(a) {
var c = b.location.hash.substring(1),
e = this._core.$stage.children(),
f = this._hashes[c] && e.index(this._hashes[c]);
f !== d && f !== this._core.current() && this._core.to(this._core.relative(f), !1, !0)
}, this))
};
e.Defaults = {
URLhashListener: !1
}, e.prototype.destroy = function() {
var c, d;
a(b).off("hashchange.owl.navigation");
for (c in this._handlers) this._core.$element.off(c, this._handlers[c]);
for (d in Object.getOwnPropertyNames(this)) "function" != typeof this[d] && (this[d] = null)
}, a.fn.owlCarousel.Constructor.Plugins.Hash = e
}(window.Zepto || window.jQuery, window, document),
function(a, b, c, d) {
function e(b, c) {
var e = !1,
f = b.charAt(0).toUpperCase() + b.slice(1);
return a.each((b + " " + h.join(f + " ") + f).split(" "), function(a, b) {
return g[b] !== d ? (e = c ? b : !0, !1) : void 0
}), e
}
function f(a) {
return e(a, !0)
}
var g = a("<support>").get(0).style,
h = "Webkit Moz O ms".split(" "),
i = {
transition: {
end: {
WebkitTransition: "webkitTransitionEnd",
MozTransition: "transitionend",
OTransition: "oTransitionEnd",
transition: "transitionend"
}
},
animation: {
end: {
WebkitAnimation: "webkitAnimationEnd",
MozAnimation: "animationend",
OAnimation: "oAnimationEnd",
animation: "animationend"
}
}
},
j = {
csstransforms: function() {
return !!e("transform")
},
csstransforms3d: function() {
return !!e("perspective")
},
csstransitions: function() {
return !!e("transition")
},
cssanimations: function() {
return !!e("animation")
}
};
j.csstransitions() && (a.support.transition = new String(f("transition")), a.support.transition.end = i.transition.end[a.support.transition]), j.cssanimations() && (a.support.animation = new String(f("animation")), a.support.animation.end = i.animation.end[a.support.animation]), j.csstransforms() && (a.support.transform = new String(f("transform")), a.support.transform3d = j.csstransforms3d())
}(window.Zepto || window.jQuery, window, document);
/**
* sidebarEffects.js
*/
var SidebarMenuEffects = (function() {
function hasParentClass(e, classname) {
if (e === document) return false;
if (classie.has(e, classname)) {
return true;
}
return e.parentNode && hasParentClass(e.parentNode, classname);
}
function mobilecheck() {
var check = false;
(function(a) {
if (/(android|ipad|playbook|silk|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4))) check = true
})(navigator.userAgent || navigator.vendor || window.opera);
return check;
}
function init() {
var container = document.getElementById('st-container'),
buttons = Array.prototype.slice.call(document.querySelectorAll('.st-trigger-effects > a.nav-icon4')),
butclose = document.querySelector('.icon-menu a.nav-icon4'),
butclosee = document.querySelector('.mobile-icons a.nav-icon4'),
eventtype = mobilecheck() ? 'touchstart' : 'click',
resetMenu = function() {
classie.remove(container, 'st-menu-open');
if(butclose) {classie.remove(butclose, 'open') };
if(butclosee) {classie.remove(butclosee, 'open') };
},
bodyClickFn = function(evt) {
if (!hasParentClass(evt.target, 'st-menu')) {
resetMenu();
document.removeEventListener(eventtype, bodyClickFn);
}
};
buttons.forEach(function(el, i) {
var effect = 'st-effect-4';
el.addEventListener(eventtype, function(ev) {
el.classList.toggle('open');
ev.stopPropagation();
ev.preventDefault();
classie.add(container, effect);
container.classList.toggle('st-menu-open');
document.addEventListener(eventtype, bodyClickFn);
});
});
}
init();
})();
/***********************************
Nav Accordion Plugin v1.1.2
************************************/
(function($) {
$.fn.navAccordion = function(options, callback) {
this.each(function() {
var settings = $.extend({
expandButtonText: "+",
collapseButtonText: "-",
selectedExpand: "true",
selectedClass: "selected",
multipleLevels: "true",
buttonWidth: "20%",
buttonPosition: "right",
slideSpeed: "fast",
parentElement: "li",
childElement: "ul",
headersOnly: false,
headersOnlyCheck: false,
delayLink: false,
delayAmount: null
}, options);
var container = this,
multi = settings.multipleLevels ? '' : ' > ' + settings.childElement + ' > ';
$(container).addClass('accordion-nav');
$(multi + settings.parentElement, container).each(function() {
if (($(this).contents(settings.childElement).length > 0 && settings.headersOnlyCheck == false) || (!($('> a', this).attr('href')) && settings.headersOnlyCheck == true)) {
$(this).addClass('has-subnav').css('position', 'relative').find('>a').css('margin-' + settings.buttonPosition, settings.buttonWidth);
$(' > ' + settings.childElement, this).before('<span class="accordion-btn-wrap"><span class="accordion-btn accordion-collapsed">' + settings.expandButtonText + '</span><span class="accordion-btn accordion-expanded">' + settings.collapseButtonText + '</span></span>');
$('.accordion-btn-wrap', this).css({
'width': settings.buttonWidth,
'position': 'absolute',
'top': 0,
'text-align': 'center',
'cursor': 'pointer',
'display': 'inline-block'
}).css(settings.buttonPosition, 0);
$('.accordion-btn ', this).css({
'display': 'inline-block',
'width': '100%'
});
$('.accordion-expanded', this).css('display', 'none');
}
if (!($('> a', this).attr('href')) || settings.headersOnly) {
$(this).addClass('accordion-header-only').find('.accordion-btn-wrap').css({
'width': '100%',
'text-align': settings.buttonPosition
}).find('.accordion-btn ').css({
'width': settings.buttonWidth,
'text-align': 'center'
});
}
if (settings.delayLink && !settings.headersOnly) {
var currentThis = this,
speed = settings.delayAmount != null ? settings.delayAmount : settings.slideSpeed;
if (speed == "fast") {
speed = 200;
} else if (speed == "slow") {
speed = 600;
}
$('> a', currentThis).on('click', function(e) {
if (!$('> .accordion-btn-wrap', currentThis).hasClass("accordion-active")) {
e.preventDefault();
var href = $(this).attr('href');
clickToggle($('> .accordion-btn-wrap', currentThis));
setTimeout(function() {
window.location = href;
}, speed)
}
})
}
});
var selectedNavAccordion = $(settings.parentElement + '.' + settings.selectedClass + ' > .accordion-btn-wrap', container);
var buttonheightResize = debounce(function() {
buttonheight();
expandSelected();
}, 250);
$(window).on('resize', buttonheightResize);
buttonheight();
expandSelected();
$(container).on('click', '.accordion-btn-wrap', function(e) {
e.preventDefault();
clickToggle(this);
});
if (typeof callback == "function") {
callback();
}
function clickToggle(element) {
var nextChild = $(element).next(settings.childElement),
currentExpandBtn = $('.accordion-expanded', element),
currentCollapseBtn = $('.accordion-collapsed', element),
parentObj = $(element).closest(settings.parentElement);
if (nextChild.is(':visible')) {
nextChild.slideUp(settings.slideSpeed);
$(element).removeClass('accordion-active');
currentExpandBtn.css('display', 'none');
currentCollapseBtn.css('display', 'inline-block');
parentObj.add(parentObj.siblings('.active')).add(parentObj.find('.active')).removeClass('active');
} else {
$(element).closest(settings.childElement).find('.accordion-active').removeClass('accordion-active').next(settings.childElement).slideUp(settings.slideSpeed).prev().find('.accordion-expanded').css('display', 'none').parent().find('.accordion-collapsed').css('display', 'inline-block');
parentObj.add(parentObj.siblings('.active')).add(parentObj.find('.active')).removeClass('active');
$(element).addClass('accordion-active');
nextChild.slideToggle(settings.slideSpeed);
currentExpandBtn.css('display', 'inline-block');
currentCollapseBtn.css('display', 'none');
parentObj.addClass('active');
}
}
function expandSelected() {
if (settings.selectedExpand) {
if (!settings.headersOnlyCheck) {
selectedNavAccordion.find('.accordion-expanded').css('display', 'inline-block');
selectedNavAccordion.find('.accordion-collapsed').css('display', 'none');
selectedNavAccordion.addClass('accordion-active').next(settings.childElement).css('display', 'block');
selectedNavAccordion.closest(settings.parentElement).addClass('active');
} else {
$(settings.parentElement + '.' + settings.selectedClass + ' > ' + settings.childElement, container).css('display', 'block');
$(settings.parentElement + '.' + settings.selectedClass).addClass('active');
}
}
}
function buttonheight() {
$('.accordion-btn', container).each(function() {
$(settings.parentElement + '.has-subnav > ' + settings.childElement, container).css('display', 'block');
var parentItem = $(this).closest(settings.parentElement),
lineheight = $('> a', parentItem).innerHeight();
$(this).css({
'line-height': lineheight + 'px',
'height': lineheight
});
$(settings.parentElement + ((settings.headersOnlyCheck) ? ' ' : '.has-subnav > ') + settings.childElement, container).css('display', 'none');
$('.accordion-expanded').css('display', 'none');
$('.accordion-collapsed').css('display', 'inline-block');
})
}
function debounce(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);
};
};
});
}
})(jQuery);
/***********************************
DOUBLE TAP to GO
************************************/
! function(t, n, o) {
"use strict";
t.fn.doubleTouchToGo = function() {
return "ontouchstart" in n || navigator.msMaxTouchPoints || navigator.userAgent.toLowerCase().match(/windows phone os 7/i) ? (this.each(function() {
var n = !1;
t(this).on("click", function(o) {
var i = t(this);
i[0] != n[0] && (o.preventDefault(), n = i)
}), t(o).on("click touchstart MSPointerDown", function(o) {
for (var i = !0, e = t(o.target).parents(), r = 0; r < e.length; r++) e[r] == n[0] && (i = !1);
i && (n = !1)
})
}), this) : !1
}
}(jQuery, window, document);
/***********************************
AUDIO PLAYER
************************************/
! function(a, b, c, d) {
var e = "ontouchstart" in b,
f = e ? "touchstart" : "mousedown",
g = e ? "touchmove" : "mousemove",
i = e ? "touchcancel" : "mouseup",
j = function(a) {
var b = Math.floor(a / 3600),
c = Math.floor(a % 3600 / 60),
d = Math.ceil(a % 3600 % 60);
return (0 == b ? "" : b > 0 && b.toString().length < 2 ? "0" + b + ":" : b + ":") + (c.toString().length < 2 ? "0" + c : c) + ":" + (d.toString().length < 2 ? "0" + d : d)
},
k = function(a) {
var b = c.createElement("audio");
return !(!b.canPlayType || !b.canPlayType("audio/" + a.split(".").pop().toLowerCase() + ";").replace(/no/, ""))
};
a.fn.audioPlayer = function(b) {
var b = a.extend({
classPrefix: "audioplayer",
strPlay: "Play",
strPause: "Pause",
strVolume: "Volume"
}, b),
c = {},
d = {
playPause: "playpause",
playing: "playing",
time: "time",
timeCurrent: "time-current",
timeDuration: "time-duration",
bar: "bar",
barLoaded: "bar-loaded",
barPlayed: "bar-played",
volume: "volume",
volumeButton: "volume-button",
volumeAdjust: "volume-adjust",
noVolume: "novolume",
mute: "mute",
mini: "mini"
};
for (var h in d) c[h] = b.classPrefix + "-" + d[h];
return this.each(function() {
if ("audio" != a(this).prop("tagName").toLowerCase()) return !1;
var d = a(this),
h = d.attr("src"),
l = d.get(0).getAttribute("autoplay"),
l = "" === l || "autoplay" === l,
m = d.get(0).getAttribute("loop"),
m = "" === m || "loop" === m,
n = !1;
"undefined" == typeof h ? d.find("source").each(function() {
if (h = a(this).attr("src"), "undefined" != typeof h && k(h)) return n = !0, !1
}) : k(h) && (n = !0);
var o = a('<div class="' + b.classPrefix + '">' + (n ? a("<div>").append(d.eq(0).clone()).html() : '<embed src="' + h + '" width="0" height="0" volume="100" autostart="' + l.toString() + '" loop="' + m.toString() + '" />') + '<div class="' + c.playPause + '" title="' + b.strPlay + '"><a href="#">' + b.strPlay + "</a></div></div>"),
p = n ? o.find("audio") : o.find("embed"),
p = p.get(0);
if (n) {
o.find("audio").css({
width: 0,
height: 0,
visibility: "hidden"
}), o.append('<div class="' + c.time + " " + c.timeCurrent + '"></div><div class="' + c.bar + '"><div class="' + c.barLoaded + '"></div><div class="' + c.barPlayed + '"></div></div><div class="' + c.time + " " + c.timeDuration + '"></div><div class="' + c.volume + '"><div class="' + c.volumeButton + '" title="' + b.strVolume + '"><a href="#">' + b.strVolume + '</a></div><div class="' + c.volumeAdjust + '"><div><div></div></div></div></div>');
var q = o.find("." + c.bar),
r = o.find("." + c.barPlayed),
t = (o.find("." + c.barLoaded), o.find("." + c.timeCurrent)),
u = o.find("." + c.timeDuration),
v = o.find("." + c.volumeButton),
w = o.find("." + c.volumeAdjust + " > div"),
x = 0,
y = function(a) {
theRealEvent = e ? a.originalEvent.touches[0] : a, p.currentTime = Math.round(p.duration * (theRealEvent.pageX - q.offset().left) / q.width())
},
z = function(a) {
theRealEvent = e ? a.originalEvent.touches[0] : a, p.volume = Math.abs((theRealEvent.pageY - (w.offset().top + w.height())) / w.height())
},
B = (setInterval(function() {}, 100), p.volume),
C = p.volume = .111;
Math.round(1e3 * p.volume) / 1e3 == C ? p.volume = B : o.addClass(c.noVolume), u.html("…"), t.text(j(0)), p.addEventListener("loadeddata", function() {
u.text(j(p.duration)), w.find("div").height(100 * p.volume + "%"), x = p.volume
}), p.addEventListener("timeupdate", function() {
t.text(j(p.currentTime)), r.width(p.currentTime / p.duration * 100 + "%")
}), p.addEventListener("volumechange", function() {
w.find("div").height(100 * p.volume + "%"), p.volume > 0 && o.hasClass(c.mute) && o.removeClass(c.mute), p.volume <= 0 && !o.hasClass(c.mute) && o.addClass(c.mute)
}), p.addEventListener("ended", function() {
o.removeClass(c.playing)
}), q.on(f, function(a) {
y(a), q.on(g, function(a) {
y(a)
})
}).on(i, function() {
q.unbind(g)
}), v.on("click", function() {
return o.hasClass(c.mute) ? (o.removeClass(c.mute), p.volume = x) : (o.addClass(c.mute), x = p.volume, p.volume = 0), !1
}), w.on(f, function(a) {
z(a), w.on(g, function(a) {
z(a)
})
}).on(i, function() {
w.unbind(g)
})
} else o.addClass(c.mini);
l && o.addClass(c.playing), o.find("." + c.playPause).on("click", function() {
return o.hasClass(c.playing) ? (a(this).attr("title", b.strPlay).find("a").html(b.strPlay), o.removeClass(c.playing), n ? p.pause() : p.Stop()) : (a(this).attr("title", b.strPause).find("a").html(b.strPause), o.addClass(c.playing), n ? p.play() : p.Play()), !1
}), d.replaceWith(o)
}), this
}
}(jQuery, window, document);
/**
* Infinite Ajax Scroll
*/
! function(a) {
"use strict";
var b = -1,
c = function(c, e) {
return this.itemsContainerSelector = e.container, this.itemSelector = e.item, this.nextSelector = e.next, this.paginationSelector = e.pagination, this.$scrollContainer = c, this.$container = window === c.get(0) ? a(document) : c, this.defaultDelay = e.delay, this.negativeMargin = e.negativeMargin, this.nextUrl = null, this.isBound = !1, this.isPaused = !1, this.isInitialized = !1, this.jsXhr = !1, this.listeners = {
next: new d(a),
load: new d(a),
loaded: new d(a),
render: new d(a),
rendered: new d(a),
scroll: new d(a),
noneLeft: new d(a),
ready: new d(a)
}, this.extensions = [], this.scrollHandler = function() {
if (this.isBound && !this.isPaused) {
var a = this.getCurrentScrollOffset(this.$scrollContainer),
c = this.getScrollThreshold();
b != c && (this.fire("scroll", [a, c]), a >= c && this.next())
}
}, this.getItemsContainer = function() {
return a(this.itemsContainerSelector, this.$container)
}, this.getLastItem = function() {
return a(this.itemSelector, this.getItemsContainer().get(0)).last()
}, this.getFirstItem = function() {
return a(this.itemSelector, this.getItemsContainer().get(0)).first()
}, this.getScrollThreshold = function(a) {
var c;
return a = a || this.negativeMargin, a = a >= 0 ? a * -1 : a, c = this.getLastItem(), 0 === c.length ? b : c.offset().top + c.height() + a
}, this.getCurrentScrollOffset = function(a) {
var b = 0,
c = a.height();
return b = window === a.get(0) ? a.scrollTop() : a.offset().top, navigator.platform.indexOf("iPhone") == -1 && navigator.platform.indexOf("iPod") == -1 || (c += 80), b + c
}, this.getNextUrl = function(b) {
return b = b || this.$container, a(this.nextSelector, b).last().attr("href")
}, this.load = function(b, c, d) {
var f, i, e = this,
g = [],
h = +new Date;
d = d || this.defaultDelay;
var j = {
url: b
};
return e.fire("load", [j]), this.jsXhr = a.get(j.url, null, a.proxy(function(b) {
f = a(this.itemsContainerSelector, b).eq(0), 0 === f.length && (f = a(b).filter(this.itemsContainerSelector).eq(0)), f && f.find(this.itemSelector).each(function() {
g.push(this)
}), e.fire("loaded", [b, g]), c && (i = +new Date - h, i < d ? setTimeout(function() {
c.call(e, b, g)
}, d - i) : c.call(e, b, g))
}, e), "html"), this.jsXhr
}, this.render = function(b, c) {
var d = this,
e = this.getLastItem(),
f = 0,
g = this.fire("render", [b]);
g.done(function() {
a(b).hide(), e.after(b), a(b).fadeIn(400, function() {
++f < b.length || (d.fire("rendered", [b]), c && c())
})
}), g.fail(function() {
c && c()
})
}, this.hidePagination = function() {
this.paginationSelector && a(this.paginationSelector, this.$container).hide()
}, this.restorePagination = function() {
this.paginationSelector && a(this.paginationSelector, this.$container).show()
}, this.throttle = function(b, c) {
var e, f, d = 0;
return e = function() {
function h() {
d = +new Date, b.apply(a, e)
}
var a = this,
e = arguments,
g = +new Date - d;
f ? clearTimeout(f) : h(), g > c ? h() : f = setTimeout(h, c)
}, a.guid && (e.guid = b.guid = b.guid || a.guid++), e
}, this.fire = function(a, b) {
return this.listeners[a].fireWith(this, b)
}, this.pause = function() {
this.isPaused = !0
}, this.resume = function() {
this.isPaused = !1
}, this
};
c.prototype.initialize = function() {
if (this.isInitialized) return !1;
var a = !!("onscroll" in this.$scrollContainer.get(0)),
b = this.getCurrentScrollOffset(this.$scrollContainer),
c = this.getScrollThreshold();
return !!a && (this.hidePagination(), this.bind(), this.fire("ready"), this.nextUrl = this.getNextUrl(), b >= c ? (this.next(), this.one("rendered", function() {
this.isInitialized = !0
})) : this.isInitialized = !0, this)
}, c.prototype.reinitialize = function() {
this.isInitialized = !1, this.unbind(), this.initialize()
}, c.prototype.bind = function() {
if (!this.isBound) {
this.$scrollContainer.on("scroll", a.proxy(this.throttle(this.scrollHandler, 150), this));
for (var b = 0, c = this.extensions.length; b < c; b++) this.extensions[b].bind(this);
this.isBound = !0, this.resume()
}
}, c.prototype.unbind = function() {
if (this.isBound) {
this.$scrollContainer.off("scroll", this.scrollHandler);
for (var a = 0, b = this.extensions.length; a < b; a++) "undefined" != typeof this.extensions[a].unbind && this.extensions[a].unbind(this);
this.isBound = !1
}
}, c.prototype.destroy = function() {
try {
this.jsXhr.abort()
} catch (a) {}
this.unbind(), this.$scrollContainer.data("hrs", null)
}, c.prototype.on = function(b, c, d) {
if ("undefined" == typeof this.listeners[b]) throw new Error('There is no event called "' + b + '"');
return d = d || 0, this.listeners[b].add(a.proxy(c, this), d), this
}, c.prototype.one = function(a, b) {
var c = this,
d = function() {
c.off(a, b), c.off(a, d)
};
return this.on(a, b), this.on(a, d), this
}, c.prototype.off = function(a, b) {
if ("undefined" == typeof this.listeners[a]) throw new Error('There is no event called "' + a + '"');
return this.listeners[a].remove(b), this
}, c.prototype.next = function() {
var a = this.nextUrl,
b = this;
if (this.pause(), !a) return this.fire("noneLeft", [this.getLastItem()]), this.listeners.noneLeft.disable(), b.resume(), !1;
var c = this.fire("next", [a]);
return c.done(function() {
b.load(a, function(a, c) {
b.render(c, function() {
b.nextUrl = b.getNextUrl(a), b.resume()
})
})
}), c.fail(function() {
b.resume()
}), !0
}, c.prototype.extension = function(a) {
if ("undefined" == typeof a.bind) throw new Error('Extension doesn\'t have required method "bind"');
return "undefined" != typeof a.initialize && a.initialize(this), this.extensions.push(a), this.isInitialized && this.reinitialize(), this
}, a.hrs = function(b) {
var c = a(window);
return c.hrs.apply(c, arguments)
}, a.fn.hrs = function(b) {
var d = Array.prototype.slice.call(arguments),
e = this;
return this.each(function() {
var f = a(this),
g = f.data("hrs"),
h = a.extend({}, a.fn.hrs.defaults, f.data(), "object" == typeof b && b);
if (g || (f.data("hrs", g = new c(f, h)), a(document).ready(a.proxy(g.initialize, g))), "string" == typeof b) {
if ("function" != typeof g[b]) throw new Error('There is no method called "' + b + '"');
d.shift(), g[b].apply(g, d)
}
e = g
}), e
}, a.fn.hrs.defaults = {
item: ".item",
container: ".listing",
next: ".next",
pagination: !1,
delay: 100,
negativeMargin: 10
};
var d = function(a) {
return this.list = [], this.fireStack = [], this.isFiring = !1, this.isDisabled = !1, this.fire = function(a) {
var b = a[0],
c = a[1],
d = a[2];
this.isFiring = !0;
for (var e = 0, f = this.list.length; e < f; e++)
if (void 0 != this.list[e] && !1 === this.list[e].fn.apply(b, d)) {
c.reject();
break
}
this.isFiring = !1, c.resolve(), this.fireStack.length && this.fire(this.fireStack.shift())
}, this.inList = function(a, b) {
b = b || 0;
for (var c = b, d = this.list.length; c < d; c++)
if (this.list[c].fn === a || a.guid && this.list[c].fn.guid && a.guid === this.list[c].fn.guid) return c;
return -1
}, this
};
d.prototype = {
add: function(a, b) {
var c = {
fn: a,
priority: b
};
b = b || 0;
for (var d = 0, e = this.list.length; d < e; d++)
if (b > this.list[d].priority) return this.list.splice(d, 0, c), this;
return this.list.push(c), this
},
remove: function(a) {
for (var b = 0;
(b = this.inList(a, b)) > -1;) this.list.splice(b, 1);
return this
},
has: function(a) {
return this.inList(a) > -1
},
fireWith: function(b, c) {
var d = a.Deferred();
return this.isDisabled ? d.reject() : (c = c || [], c = [b, d, c.slice ? c.slice() : c], this.isFiring ? this.fireStack.push(c) : this.fire(c), d)
},
disable: function() {
this.isDisabled = !0
},
enable: function() {
this.isDisabled = !1
}
}
}(jQuery);
var HRSSpinnerExtension = function(a) {
return a = jQuery.extend({}, this.defaults, a), this.hrs = null, this.uid = (new Date).getTime(), this.src = a.src, this.html = a.html.replace("{src}", this.src), this.showSpinner = function() {
var a = this.getSpinner() || this.createSpinner(),
b = this.hrs.getItemsContainer();
b.after(a), a.fadeIn()
}, this.showSpinnerBefore = function() {
var a = this.getSpinner() || this.createSpinner(),
b = this.hrs.getFirstItem();
b.before(a), a.fadeIn()
}, this.removeSpinner = function() {
this.hasSpinner() && this.getSpinner().remove()
}, this.getSpinner = function() {
var a = jQuery("#hrs_spinner_" + this.uid);
return a.length > 0 && a
}, this.hasSpinner = function() {
var a = jQuery("#hrs_spinner_" + this.uid);
return a.length > 0
}, this.createSpinner = function() {
var a = jQuery(this.html).attr("id", "hrs_spinner_" + this.uid);
return a.hide(), a
}, this
};
HRSSpinnerExtension.prototype.bind = function(a) {
this.hrs = a, a.on("next", jQuery.proxy(this.showSpinner, this)), a.on("render", jQuery.proxy(this.removeSpinner, this));
try {
a.on("prev", jQuery.proxy(this.showSpinnerBefore, this))
} catch (a) {}
}, HRSSpinnerExtension.prototype.unbind = function(a) {
a.off("next", this.showSpinner), a.off("render", this.removeSpinner);
try {
a.off("prev", this.showSpinnerBefore)
} catch (a) {}
}, HRSSpinnerExtension.prototype.defaults = {
src: "data:image/gif;base64,R0lGODlhEAAQAPQAAP///wAAAPDw8IqKiuDg4EZGRnp6egAAAFhYWCQkJKysrL6+vhQUFJycnAQEBDY2NmhoaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAAFdyAgAgIJIeWoAkRCCMdBkKtIHIngyMKsErPBYbADpkSCwhDmQCBethRB6Vj4kFCkQPG4IlWDgrNRIwnO4UKBXDufzQvDMaoSDBgFb886MiQadgNABAokfCwzBA8LCg0Egl8jAggGAA1kBIA1BAYzlyILczULC2UhACH5BAkKAAAALAAAAAAQABAAAAV2ICACAmlAZTmOREEIyUEQjLKKxPHADhEvqxlgcGgkGI1DYSVAIAWMx+lwSKkICJ0QsHi9RgKBwnVTiRQQgwF4I4UFDQQEwi6/3YSGWRRmjhEETAJfIgMFCnAKM0KDV4EEEAQLiF18TAYNXDaSe3x6mjidN1s3IQAh+QQJCgAAACwAAAAAEAAQAAAFeCAgAgLZDGU5jgRECEUiCI+yioSDwDJyLKsXoHFQxBSHAoAAFBhqtMJg8DgQBgfrEsJAEAg4YhZIEiwgKtHiMBgtpg3wbUZXGO7kOb1MUKRFMysCChAoggJCIg0GC2aNe4gqQldfL4l/Ag1AXySJgn5LcoE3QXI3IQAh+QQJCgAAACwAAAAAEAAQAAAFdiAgAgLZNGU5joQhCEjxIssqEo8bC9BRjy9Ag7GILQ4QEoE0gBAEBcOpcBA0DoxSK/e8LRIHn+i1cK0IyKdg0VAoljYIg+GgnRrwVS/8IAkICyosBIQpBAMoKy9dImxPhS+GKkFrkX+TigtLlIyKXUF+NjagNiEAIfkECQoAAAAsAAAAABAAEAAABWwgIAICaRhlOY4EIgjH8R7LKhKHGwsMvb4AAy3WODBIBBKCsYA9TjuhDNDKEVSERezQEL0WrhXucRUQGuik7bFlngzqVW9LMl9XWvLdjFaJtDFqZ1cEZUB0dUgvL3dgP4WJZn4jkomWNpSTIyEAIfkECQoAAAAsAAAAABAAEAAABX4gIAICuSxlOY6CIgiD8RrEKgqGOwxwUrMlAoSwIzAGpJpgoSDAGifDY5kopBYDlEpAQBwevxfBtRIUGi8xwWkDNBCIwmC9Vq0aiQQDQuK+VgQPDXV9hCJjBwcFYU5pLwwHXQcMKSmNLQcIAExlbH8JBwttaX0ABAcNbWVbKyEAIfkECQoAAAAsAAAAABAAEAAABXkgIAICSRBlOY7CIghN8zbEKsKoIjdFzZaEgUBHKChMJtRwcWpAWoWnifm6ESAMhO8lQK0EEAV3rFopIBCEcGwDKAqPh4HUrY4ICHH1dSoTFgcHUiZjBhAJB2AHDykpKAwHAwdzf19KkASIPl9cDgcnDkdtNwiMJCshACH5BAkKAAAALAAAAAAQABAAAAV3ICACAkkQZTmOAiosiyAoxCq+KPxCNVsSMRgBsiClWrLTSWFoIQZHl6pleBh6suxKMIhlvzbAwkBWfFWrBQTxNLq2RG2yhSUkDs2b63AYDAoJXAcFRwADeAkJDX0AQCsEfAQMDAIPBz0rCgcxky0JRWE1AmwpKyEAIfkECQoAAAAsAAAAABAAEAAABXkgIAICKZzkqJ4nQZxLqZKv4NqNLKK2/Q4Ek4lFXChsg5ypJjs1II3gEDUSRInEGYAw6B6zM4JhrDAtEosVkLUtHA7RHaHAGJQEjsODcEg0FBAFVgkQJQ1pAwcDDw8KcFtSInwJAowCCA6RIwqZAgkPNgVpWndjdyohACH5BAkKAAAALAAAAAAQABAAAAV5ICACAimc5KieLEuUKvm2xAKLqDCfC2GaO9eL0LABWTiBYmA06W6kHgvCqEJiAIJiu3gcvgUsscHUERm+kaCxyxa+zRPk0SgJEgfIvbAdIAQLCAYlCj4DBw0IBQsMCjIqBAcPAooCBg9pKgsJLwUFOhCZKyQDA3YqIQAh+QQJCgAAACwAAAAAEAAQAAAFdSAgAgIpnOSonmxbqiThCrJKEHFbo8JxDDOZYFFb+A41E4H4OhkOipXwBElYITDAckFEOBgMQ3arkMkUBdxIUGZpEb7kaQBRlASPg0FQQHAbEEMGDSVEAA1QBhAED1E0NgwFAooCDWljaQIQCE5qMHcNhCkjIQAh+QQJCgAAACwAAAAAEAAQAAAFeSAgAgIpnOSoLgxxvqgKLEcCC65KEAByKK8cSpA4DAiHQ/DkKhGKh4ZCtCyZGo6F6iYYPAqFgYy02xkSaLEMV34tELyRYNEsCQyHlvWkGCzsPgMCEAY7Cg04Uk48LAsDhRA8MVQPEF0GAgqYYwSRlycNcWskCkApIyEAOwAAAAAAAAAAAA==",
html: '<div class="hrs-spinner" style="text-align: center;"><img src="{src}"/></div>'
};
var HRSTriggerExtension = function(a) {
return a = jQuery.extend({}, this.defaults, a), this.hrs = null, this.html = a.html.replace("{text}", a.text), this.htmlPrev = a.htmlPrev.replace("{text}", a.textPrev), this.enabled = !0, this.count = 0, this.offset = a.offset, this.$triggerNext = null, this.$triggerPrev = null, this.showTriggerNext = function() {
if (!this.enabled) return !0;
if (!1 === this.offset || ++this.count < this.offset) return !0;
var a = this.$triggerNext || (this.$triggerNext = this.createTrigger(this.next, this.html)),
b = this.hrs.getItemsContainer();
return b.after(a), a.fadeIn(), !1
}, this.showTriggerPrev = function() {
if (!this.enabled) return !0;
var a = this.$triggerPrev || (this.$triggerPrev = this.createTrigger(this.prev, this.htmlPrev)),
b = this.hrs.getFirstItem();
return b.before(a), a.fadeIn(), !1
}, this.onRendered = function() {
this.enabled = !0
}, this.createTrigger = function(a, b) {
var d, c = (new Date).getTime();
return b = b || this.html, d = jQuery(b).attr("id", "hrs_trigger_" + c), d.hide(), d.on("click", jQuery.proxy(a, this)), d
}, this
};
HRSTriggerExtension.prototype.bind = function(a) {
this.hrs = a, a.on("next", jQuery.proxy(this.showTriggerNext, this), this.priority), a.on("rendered", jQuery.proxy(this.onRendered, this), this.priority);
try {
a.on("prev", jQuery.proxy(this.showTriggerPrev, this), this.priority)
} catch (a) {}
}, HRSTriggerExtension.prototype.unbind = function(a) {
a.off("next", this.showTriggerNext), a.off("rendered", this.onRendered);
try {
a.off("prev", this.showTriggerPrev)
} catch (a) {}
}, HRSTriggerExtension.prototype.next = function() {
this.enabled = !1, this.hrs.pause(), this.$triggerNext && (this.$triggerNext.remove(), this.$triggerNext = null), this.hrs.next()
}, HRSTriggerExtension.prototype.prev = function() {
this.enabled = !1, this.hrs.pause(), this.$triggerPrev && (this.$triggerPrev.remove(), this.$triggerPrev = null), this.hrs.prev()
}, HRSTriggerExtension.prototype.defaults = {
text: "Load more items",
html: '<div class="hrs-trigger hrs-trigger-next" style="text-align: center; cursor: pointer;"><a>{text}</a></div>',
textPrev: "Load previous items",
htmlPrev: '<div class="hrs-trigger hrs-trigger-prev" style="text-align: center; cursor: pointer;"><a>{text}</a></div>',
offset: 0
}, HRSTriggerExtension.prototype.priority = 1e3;
var HRSNoneLeftExtension = function(a) {
return a = jQuery.extend({}, this.defaults, a), this.hrs = null, this.uid = (new Date).getTime(), this.html = a.html.replace("{text}", a.text), this.showNoneLeft = function() {
var a = jQuery(this.html).attr("id", "hrs_noneleft_" + this.uid),
b = this.hrs.getItemsContainer();
b.after(a), a.fadeIn().delay(1400).animate({
opacity: 0
});
}, this
};
HRSNoneLeftExtension.prototype.bind = function(a) {
this.hrs = a, a.on("noneLeft", jQuery.proxy(this.showNoneLeft, this))
}, HRSNoneLeftExtension.prototype.unbind = function(a) {
a.off("noneLeft", this.showNoneLeft)
}, HRSNoneLeftExtension.prototype.defaults = {
text: "You reached the end.",
html: '<div class="hrs-noneleft" style="text-align: center;">{text}</div>'
};
/***********************************
APPEAR
************************************/
(function(e) {
e.fn.disappear = function(t, n) {
var r = e.extend({
data: undefined
}, n);
this.each(function() {
var n = e(this);
n.bind("disappear", t, r.data);
if (!t) {
n.trigger("disappear", r.data);
return
}
})
};
e.fn.appear = function(t, n) {
var r = e.extend({
data: undefined,
one: true
}, n);
return this.each(function() {
var n = e(this);
n.appeared = false;
if (!t) {
n.trigger("appear", r.data);
return
}
var i = e(window);
var s = function() {
if (!n.is(":visible")) {
n.appeared = false;
return
}
var e = i.scrollLeft();
var t = i.scrollTop();
var s = n.offset();
var o = s.left;
var u = s.top;
if (u + n.height() >= t && u <= t + i.height() && o + n.width() >= e && o <= e + i.width()) {
if (!n.appeared) n.trigger("appear", r.data)
} else {
if (n.appeared) n.trigger("disappear", r.data);
n.appeared = false
}
};
var o = function() {
n.appeared = true;
if (r.one) {
i.unbind("scroll", s);
var o = e.inArray(s, e.fn.appear.checks);
if (o >= 0) e.fn.appear.checks.splice(o, 1)
}
t.apply(this, arguments)
};
if (r.one) n.one("appear", r.data, o);
else n.bind("appear", r.data, o);
i.scroll(s);
e.fn.appear.checks.push(s);
s()
})
};
e.extend(e.fn.appear, {
checks: [],
timeout: null,
checkAll: function() {
var t = e.fn.appear.checks.length;
if (t > 0)
while (t--) e.fn.appear.checks[t]()
},
run: function() {
if (e.fn.appear.timeout) clearTimeout(e.fn.appear.timeout);
e.fn.appear.timeout = setTimeout(e.fn.appear.checkAll, 20)
}
});
e.each(["append", "prepend", "after", "before", "attr", "removeAttr", "addClass", "removeClass", "toggleClass", "remove", "css", "show", "hide"], function(t, n) {
var r = e.fn[n];
if (r) {
e.fn[n] = function() {
var t = r.apply(this, arguments);
e.fn.appear.run();
return t
}
}
})
})(jQuery)
/*!
* classie - class helper functions
* from bonzo https://github.com/ded/bonzo
*
* classie.has( elem, 'my-class' ) -> true/false
* classie.add( elem, 'my-new-class' )
* classie.remove( elem, 'my-unwanted-class' )
* classie.toggle( elem, 'my-class' )
*/
! function(s) {
"use strict";
function e(s) {
return new RegExp("(^|\\s+)" + s + "(\\s+|$)")
}
function n(s, e) {
var n = a(s, e) ? c : t;
n(s, e)
}
var a, t, c;
"classList" in document.documentElement ? (a = function(s, e) {
return s.classList.contains(e)
}, t = function(s, e) {
s.classList.add(e)
}, c = function(s, e) {
s.classList.remove(e)
}) : (a = function(s, n) {
return e(n).test(s.className)
}, t = function(s, e) {
a(s, e) || (s.className = s.className + " " + e)
}, c = function(s, n) {
s.className = s.className.replace(e(n), " ")
});
var i = {
hasClass: a,
addClass: t,
removeClass: c,
toggleClass: n,
has: a,
add: t,
remove: c,
toggle: n
};
"function" == typeof define && define.amd ? define(i) : s.classie = i
}(window);
/*! FitText.js 1.1 */
(function($) {
$.fn.fitText = function(kompressor, options) {
var compressor = kompressor || 1,
settings = $.extend({
'minFontSize': Number.NEGATIVE_INFINITY,
'maxFontSize': Number.POSITIVE_INFINITY
}, options);
return this.each(function() {
var $this = $(this);
var resizer = function() {
$this.css('font-size', Math.max(Math.min($this.width() / (compressor * 10), parseFloat(settings.maxFontSize)), parseFloat(settings.minFontSize)));
$this.css('line-height', Math.max(Math.min($this.width() / (compressor * 10), parseFloat(settings.maxFontSize)), parseFloat(settings.minFontSize)) + "px")
};
resizer();
$(window).on('resize.fittext orientationchange.fittext', resizer)
})
}
})(jQuery)
/*!
*
* Glues your website's sidebars, making them permanently visible while scrolling.
*
* Copyright 2013-2016 WeCodePixels and other contributors
* Released under the MIT license
* modded o.container
*/
! function(a) {
a.fn.theiaStickySidebar = function(b) {
function d(b, c) {
var d = e(b, c);
d || (console.log("TSS: Body width smaller than options.minWidth. Init is delayed."), a(document).scroll(function(b, c) {
return function(d) {
var f = e(b, c);
f && a(this).unbind(d)
}
}(b, c)), a(window).resize(function(b, c) {
return function(d) {
var f = e(b, c);
f && a(this).unbind(d)
}
}(b, c)))
}
function e(b, c) {
return b.initialized === !0 || !(a("body").width() < b.minWidth) && (f(b, c), !0)
}
function f(b, c) {
b.initialized = !0, a("head").append(a('<style>.theiaStickySidebar:after {content: ""; display: table; clear: both;}</style>')), c.each(function() {
function h() {
c.fixedScrollTop = 0, c.sidebar.css({
"min-height": "1px"
}), c.stickySidebar.css({
position: "static",
width: "",
transform: "none"
})
}
function i(b) {
var c = b.height();
return b.children().each(function() {
c = Math.max(c, a(this).height())
}), c
}
var c = {};
if (c.sidebar = a(this), c.options = b || {}, c.container = c.sidebar.closest(c.options.containerSelector), 0 == c.container.length && (c.container = c.sidebar.parent()), c.sidebar.parents().css("-webkit-transform", "none"), c.sidebar.css({
position: "relative",
overflow: "visible",
"-webkit-box-sizing": "border-box",
"-moz-box-sizing": "border-box",
"box-sizing": "border-box"
}), c.stickySidebar = c.sidebar.find(".theiaStickySidebar"), 0 == c.stickySidebar.length) {
var d = /(?:text|application)\/(?:x-)?(?:javascript|ecmascript)/i;
c.sidebar.find("script").filter(function(a, b) {
return 0 === b.type.length || b.type.match(d)
}).remove(), c.stickySidebar = a("<div>").addClass("theiaStickySidebar").append(c.sidebar.children()), c.sidebar.append(c.stickySidebar)
}
c.marginBottom = parseInt(c.sidebar.css("margin-bottom")), c.paddingTop = parseInt(c.sidebar.css("padding-top")), c.paddingBottom = parseInt(c.sidebar.css("padding-bottom"));
var e = c.stickySidebar.offset().top,
f = c.stickySidebar.outerHeight();
c.stickySidebar.css("padding-top", 1), c.stickySidebar.css("padding-bottom", 1), e -= c.stickySidebar.offset().top, f = c.stickySidebar.outerHeight() - f - e, 0 == e ? (c.stickySidebar.css("padding-top", 0), c.stickySidebarPaddingTop = 0) : c.stickySidebarPaddingTop = 1, 0 == f ? (c.stickySidebar.css("padding-bottom", 0), c.stickySidebarPaddingBottom = 0) : c.stickySidebarPaddingBottom = 1, c.previousScrollTop = null, c.fixedScrollTop = 0, h(), c.onScroll = function(c) {
if (c.stickySidebar.is(":visible")) {
if (a("body").width() < c.options.minWidth) return void h();
if (c.options.disableOnResponsiveLayouts) {
var d = c.sidebar.outerWidth("none" == c.sidebar.css("float"));
if (d + 50 > c.container.width()) return void h()
}
var e = a(document).scrollTop(),
f = "static";
if (e >= c.sidebar.offset().top + (c.paddingTop - c.options.additionalMarginTop)) {
var o, j = c.paddingTop + b.additionalMarginTop,
k = c.paddingBottom + c.marginBottom + b.additionalMarginBottom,
l = c.sidebar.offset().top,
m = c.sidebar.offset().top + i(c.container),
n = 0 + b.additionalMarginTop,
p = c.stickySidebar.outerHeight() + j + k < a(window).height();
o = p ? n + c.stickySidebar.outerHeight() : a(window).height() - c.marginBottom - c.paddingBottom - b.additionalMarginBottom;
var q = l - e + c.paddingTop,
r = m - e - c.paddingBottom - c.marginBottom,
s = c.stickySidebar.offset().top - e,
t = c.previousScrollTop - e;
"fixed" == c.stickySidebar.css("position") && "modern" == c.options.sidebarBehavior && (s += t), "stick-to-top" == c.options.sidebarBehavior && (s = b.additionalMarginTop), "stick-to-bottom" == c.options.sidebarBehavior && (s = o - c.stickySidebar.outerHeight()), s = t > 0 ? Math.min(s, n) : Math.max(s, o - c.stickySidebar.outerHeight()), s = Math.max(s, q), s = Math.min(s, r - c.stickySidebar.outerHeight());
var u = c.container.height() == c.stickySidebar.outerHeight();
f = (u || s != n) && (u || s != o - c.stickySidebar.outerHeight()) ? e + s - c.sidebar.offset().top - c.paddingTop <= b.additionalMarginTop ? "static" : "absolute" : "fixed"
}
if ("fixed" == f) c.stickySidebar.css({
position: "fixed",
width: g(c.stickySidebar) + "px",
transform: "translateY(" + s + "px)",
left: c.sidebar.offset().left + parseInt(c.sidebar.css("padding-left")) + "px",
top: "0px"
});
else if ("absolute" == f) {
var v = {};
"absolute" != c.stickySidebar.css("position") && (v.position = "absolute", v.transform = "translateY(" + (e + s - c.sidebar.offset().top - c.stickySidebarPaddingTop - c.stickySidebarPaddingBottom) + "px)", v.top = "0px"), v.width = g(c.stickySidebar) + "px", v.left = "", c.stickySidebar.css(v)
} else "static" == f && h();
"static" != f && 1 == c.options.updateSidebarHeight && c.sidebar.css({
"min-height": c.stickySidebar.outerHeight() + c.stickySidebar.offset().top - c.sidebar.offset().top + c.paddingBottom
}), c.previousScrollTop = e
}
}, c.onScroll(c), a(document).scroll(function(a) {
return function() {
a.onScroll(a)
}
}(c)), a(window).resize(function(a) {
return function() {
a.stickySidebar.css({
position: "static"
}), a.onScroll(a)
}
}(c))
})
}
function g(a) {
var b;
try {
b = a[0].getBoundingClientRect().width
} catch (a) {}
return "undefined" == typeof b && (b = a.width()), b
}
var c = {
containerSelector: "",
additionalMarginTop: 0,
additionalMarginBottom: 0,
updateSidebarHeight: !0,
minWidth: 0,
disableOnResponsiveLayouts: !0,
sidebarBehavior: "modern"
};
b = a.extend(c, b), b.additionalMarginTop = parseInt(b.additionalMarginTop) || 0, b.additionalMarginBottom = parseInt(b.additionalMarginBottom) || 0, d(b, this)
}
}(jQuery);
/*!
* Name : Just Another Parallax [Jarallax]
* Version : 1.7.2
* Author : _nK https://nkdev.info
* GitHub : https://github.com/nk-o/jarallax
*/
! function(e) {
"use strict";
function t() {
i = e.innerWidth || document.documentElement.clientWidth, a = e.innerHeight || document.documentElement.clientHeight
}
function n(e, t, n) {
e.addEventListener ? e.addEventListener(t, n) : e.attachEvent("on" + t, function() {
n.call(e)
})
}
function o(n) {
e.requestAnimationFrame(function() {
"scroll" !== n.type && t();
for (var e = 0, o = g.length; e < o; e++) "scroll" !== n.type && (g[e].coverImage(), g[e].clipContainer()), g[e].onScroll()
})
}
Date.now || (Date.now = function() {
return (new Date).getTime()
}), e.requestAnimationFrame || ! function() {
for (var t = ["webkit", "moz"], n = 0; n < t.length && !e.requestAnimationFrame; ++n) {
var o = t[n];
e.requestAnimationFrame = e[o + "RequestAnimationFrame"], e.cancelAnimationFrame = e[o + "CancelAnimationFrame"] || e[o + "CancelRequestAnimationFrame"]
}
if (/iP(ad|hone|od).*OS 6/.test(e.navigator.userAgent) || !e.requestAnimationFrame || !e.cancelAnimationFrame) {
var i = 0;
e.requestAnimationFrame = function(e) {
var t = Date.now(),
n = Math.max(i + 16, t);
return setTimeout(function() {
e(i = n)
}, n - t)
}, e.cancelAnimationFrame = clearTimeout
}
}();
var i, a, r = function() {
if (!e.getComputedStyle) return !1;
var t, n = document.createElement("p"),
o = {
webkitTransform: "-webkit-transform",
OTransform: "-o-transform",
msTransform: "-ms-transform",
MozTransform: "-moz-transform",
transform: "transform"
};
(document.body || document.documentElement).insertBefore(n, null);
for (var i in o) "undefined" != typeof n.style[i] && (n.style[i] = "translate3d(1px,1px,1px)", t = e.getComputedStyle(n).getPropertyValue(o[i]));
return (document.body || document.documentElement).removeChild(n), "undefined" != typeof t && t.length > 0 && "none" !== t
}(),
l = navigator.userAgent.toLowerCase().indexOf("android") > -1,
s = /iPad|iPhone|iPod/.test(navigator.userAgent) && !e.MSStream,
m = !!e.opera,
c = /Edge\/\d+/.test(navigator.userAgent),
p = /Trident.*rv[ :]*11\./.test(navigator.userAgent),
u = !!Function("/*@cc_on return document.documentMode===10@*/")(),
d = document.all && !e.atob;
t();
var g = [],
f = function() {
function e(e, n) {
var o, i = this;
if (i.$item = e, i.defaults = {
type: "scroll",
speed: .5,
imgSrc: null,
imgWidth: null,
imgHeight: null,
enableTransform: !0,
elementInViewport: null,
zIndex: -100,
noAndroid: !1,
noIos: !0,
onScroll: null,
onInit: null,
onDestroy: null,
onCoverImage: null
}, o = JSON.parse(i.$item.getAttribute("data-jarallax") || "{}"), i.options = i.extend({}, i.defaults, o, n), !(l && i.options.noAndroid || s && i.options.noIos)) {
i.options.speed = Math.min(2, Math.max(-1, parseFloat(i.options.speed)));
var a = i.options.elementInViewport;
a && "object" == typeof a && "undefined" != typeof a.length && (a = a[0]), !a instanceof Element && (a = null), i.options.elementInViewport = a, i.instanceID = t++, i.image = {
src: i.options.imgSrc || null,
$container: null,
$item: null,
width: i.options.imgWidth || null,
height: i.options.imgHeight || null,
useImgTag: s || l || m || p || u || c
}, i.initImg() && i.init()
}
}
var t = 0;
return e
}();
f.prototype.css = function(t, n) {
if ("string" == typeof n) return e.getComputedStyle ? e.getComputedStyle(t).getPropertyValue(n) : t.style[n];
n.transform && (n.WebkitTransform = n.MozTransform = n.transform);
for (var o in n) t.style[o] = n[o];
return t
}, f.prototype.extend = function(e) {
e = e || {};
for (var t = 1; t < arguments.length; t++)
if (arguments[t])
for (var n in arguments[t]) arguments[t].hasOwnProperty(n) && (e[n] = arguments[t][n]);
return e
}, f.prototype.initImg = function() {
var e = this;
return null === e.image.src && (e.image.src = e.css(e.$item, "background-image").replace(/^url\(['"]?/g, "").replace(/['"]?\)$/g, "")), !(!e.image.src || "none" === e.image.src)
}, f.prototype.init = function() {
function e() {
t.coverImage(), t.clipContainer(), t.onScroll(!0), t.$item.setAttribute("data-jarallax-original-styles", t.$item.getAttribute("style")), t.options.onInit && t.options.onInit.call(t), setTimeout(function() {
t.$item && t.css(t.$item, {
"background-image": "none",
"background-attachment": "scroll",
"background-size": "auto"
})
}, 0)
}
var t = this,
n = {
position: "absolute",
top: 0,
left: 0,
width: "100%",
height: "100%",
overflow: "hidden",
pointerEvents: "none"
},
o = {
position: "fixed"
};
t.image.$container = document.createElement("div"), t.css(t.image.$container, n), t.css(t.image.$container, {
visibility: "hidden",
"z-index": t.options.zIndex
}), t.image.$container.setAttribute("id", "jarallax-container-" + t.instanceID), t.$item.appendChild(t.image.$container), t.image.useImgTag && r && t.options.enableTransform ? (t.image.$item = document.createElement("img"), t.image.$item.setAttribute("src", t.image.src), o = t.extend({
"max-width": "none"
}, n, o)) : (t.image.$item = document.createElement("div"), o = t.extend({
"background-position": "50% 50%",
"background-size": "100% auto",
"background-repeat": "no-repeat no-repeat",
"background-image": 'url("' + t.image.src + '")'
}, n, o)), d && (o.backgroundAttachment = "fixed"), t.parentWithTransform = 0;
for (var i = t.$item; null !== i && i !== document && 0 === t.parentWithTransform;) {
var a = t.css(i, "-webkit-transform") || t.css(i, "-moz-transform") || t.css(i, "transform");
a && "none" !== a && (t.parentWithTransform = 1, t.css(t.image.$container, {
transform: "translateX(0) translateY(0)"
})), i = i.parentNode
}
t.css(t.image.$item, o), t.image.$container.appendChild(t.image.$item), t.image.width && t.image.height ? e() : t.getImageSize(t.image.src, function(n, o) {
t.image.width = n, t.image.height = o, e()
}), g.push(t)
}, f.prototype.destroy = function() {
for (var e = this, t = 0, n = g.length; t < n; t++)
if (g[t].instanceID === e.instanceID) {
g.splice(t, 1);
break
}
var o = e.$item.getAttribute("data-jarallax-original-styles");
e.$item.removeAttribute("data-jarallax-original-styles"), "null" === o ? e.$item.removeAttribute("style") : e.$item.setAttribute("style", o), e.$clipStyles && e.$clipStyles.parentNode.removeChild(e.$clipStyles), e.image.$container.parentNode.removeChild(e.image.$container), e.options.onDestroy && e.options.onDestroy.call(e), delete e.$item.jarallax;
for (var i in e) delete e[i]
}, f.prototype.getImageSize = function(e, t) {
if (e && t) {
var n = new Image;
n.onload = function() {
t(n.width, n.height)
}, n.src = e
}
}, f.prototype.clipContainer = function() {
if (!d) {
var e = this,
t = e.image.$container.getBoundingClientRect(),
n = t.width,
o = t.height;
if (!e.$clipStyles) {
e.$clipStyles = document.createElement("style"), e.$clipStyles.setAttribute("type", "text/css"), e.$clipStyles.setAttribute("id", "#jarallax-clip-" + e.instanceID);
var i = document.head || document.getElementsByTagName("head")[0];
i.appendChild(e.$clipStyles)
}
var a = ["#jarallax-container-" + e.instanceID + " {", " clip: rect(0 " + n + "px " + o + "px 0);", " clip: rect(0, " + n + "px, " + o + "px, 0);", "}"].join("\n");
e.$clipStyles.styleSheet ? e.$clipStyles.styleSheet.cssText = a : e.$clipStyles.innerHTML = a
}
}, f.prototype.coverImage = function() {
var e = this;
if (e.image.width && e.image.height) {
var t = e.image.$container.getBoundingClientRect(),
n = t.width,
o = t.height,
i = t.left,
l = e.image.width,
s = e.image.height,
m = e.options.speed,
c = "scroll" === e.options.type || "scroll-opacity" === e.options.type,
p = 0,
u = 0,
d = o,
g = 0,
f = 0;
c && (p = m * (o + a) / 2, (m < 0 || m > 1) && (p = m * Math.max(o, a) / 2), m < 0 || m > 1 ? d = Math.max(o, a) + 2 * Math.abs(p) : d += Math.abs(a - o) * (1 - m)), u = d * l / s, u < n && (u = n, d = u * s / l), e.bgPosVerticalCenter = 0, !(c && d < a) || r && e.options.enableTransform || (e.bgPosVerticalCenter = (a - d) / 2, d = a), c ? (g = i + (n - u) / 2, f = (a - d) / 2) : (g = (n - u) / 2, f = (o - d) / 2), r && e.options.enableTransform && e.parentWithTransform && (g -= i), e.parallaxScrollDistance = p, e.css(e.image.$item, {
width: u + "px",
height: d + "px",
marginLeft: g + "px",
marginTop: f + "px"
}), e.options.onCoverImage && e.options.onCoverImage.call(e)
}
}, f.prototype.isVisible = function() {
return this.isElementInViewport || !1
}, f.prototype.onScroll = function(e) {
var t = this;
if (t.image.width && t.image.height) {
var n = t.$item.getBoundingClientRect(),
o = n.top,
l = n.height,
s = {
position: "absolute",
visibility: "visible",
backgroundPosition: "50% 50%"
},
m = n;
if (t.options.elementInViewport && (m = t.options.elementInViewport.getBoundingClientRect()), t.isElementInViewport = m.bottom >= 0 && m.right >= 0 && m.top <= a && m.left <= i, e || t.isElementInViewport) {
var c = Math.max(0, o),
p = Math.max(0, l + o),
u = Math.max(0, -o),
g = Math.max(0, o + l - a),
f = Math.max(0, l - (o + l - a)),
h = Math.max(0, -o + a - l),
y = 1 - 2 * (a - o) / (a + l),
v = 1;
if (l < a ? v = 1 - (u || g) / l : p <= a ? v = p / a : f <= a && (v = f / a), "opacity" !== t.options.type && "scale-opacity" !== t.options.type && "scroll-opacity" !== t.options.type || (s.transform = "translate3d(0, 0, 0)", s.opacity = v), "scale" === t.options.type || "scale-opacity" === t.options.type) {
var x = 1;
t.options.speed < 0 ? x -= t.options.speed * v : x += t.options.speed * (1 - v), s.transform = "scale(" + x + ") translate3d(0, 0, 0)"
}
if ("scroll" === t.options.type || "scroll-opacity" === t.options.type) {
var b = t.parallaxScrollDistance * y;
r && t.options.enableTransform ? (t.parentWithTransform && (b -= o), s.transform = "translate3d(0, " + b + "px, 0)") : t.image.useImgTag ? s.top = b + "px" : (t.bgPosVerticalCenter && (b += t.bgPosVerticalCenter), s.backgroundPosition = "50% " + b + "px"), s.position = d ? "absolute" : "fixed"
}
t.css(t.image.$item, s), t.options.onScroll && t.options.onScroll.call(t, {
section: n,
beforeTop: c,
beforeTopEnd: p,
afterTop: u,
beforeBottom: g,
beforeBottomEnd: f,
afterBottom: h,
visiblePercent: v,
fromViewportCenter: y
})
}
}
}, n(e, "scroll", o), n(e, "resize", o), n(e, "orientationchange", o), n(e, "load", o);
var h = function(e) {
("object" == typeof HTMLElement ? e instanceof HTMLElement : e && "object" == typeof e && null !== e && 1 === e.nodeType && "string" == typeof e.nodeName) && (e = [e]);
var t, n = arguments[1],
o = Array.prototype.slice.call(arguments, 2),
i = e.length,
a = 0;
for (a; a < i; a++)
if ("object" == typeof n || "undefined" == typeof n ? e[a].jarallax || (e[a].jarallax = new f(e[a], n)) : e[a].jarallax && (t = e[a].jarallax[n].apply(e[a].jarallax, o)), "undefined" != typeof t) return t;
return e
};
h.constructor = f;
var y = e.jarallax;
if (e.jarallax = h, e.jarallax.noConflict = function() {
return e.jarallax = y, this
}, "undefined" != typeof jQuery) {
var v = function() {
var t = arguments || [];
Array.prototype.unshift.call(t, this);
var n = h.apply(e, t);
return "object" != typeof n ? n : this
};
v.constructor = f;
var x = jQuery.fn.jarallax;
jQuery.fn.jarallax = v, jQuery.fn.jarallax.noConflict = function() {
return jQuery.fn.jarallax = x, this
}
}
n(e, "DOMContentLoaded", function() {
h(document.querySelectorAll("[data-jarallax], [data-jarallax-video]"))
})
}(window);
/*!
* Name : Video Worker (wrapper for Youtube, Vimeo and Local videos)
* Version : 1.2.1
* Author : _nK https://nkdev.info
* GitHub : https://github.com/nk-o/jarallax
*/
! function(e) {
"use strict";
function t(e) {
e = e || {};
for (var t = 1; t < arguments.length; t++)
if (arguments[t])
for (var i in arguments[t]) arguments[t].hasOwnProperty(i) && (e[i] = arguments[t][i]);
return e
}
function i() {
this._done = [], this._fail = []
}
function o(e, t, i) {
e.addEventListener ? e.addEventListener(t, i) : e.attachEvent("on" + t, function() {
i.call(e)
})
}
i.prototype = {
execute: function(e, t) {
var i = e.length;
for (t = Array.prototype.slice.call(t); i--;) e[i].apply(null, t)
},
resolve: function() {
this.execute(this._done, arguments)
},
reject: function() {
this.execute(this._fail, arguments)
},
done: function(e) {
this._done.push(e)
},
fail: function(e) {
this._fail.push(e)
}
};
var a = function() {
function e(e, o) {
var a = this;
a.url = e, a.options_default = {
autoplay: 1,
loop: 1,
mute: 1,
controls: 0,
startTime: 0,
endTime: 0
}, a.options = t({}, a.options_default, o), a.videoID = a.parseURL(e), a.videoID && (a.ID = i++, a.loadAPI(), a.init())
}
var i = 0;
return e
}();
a.prototype.parseURL = function(e) {
function t(e) {
var t = /.*(?:youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=)([^#\&\?]*).*/,
i = e.match(t);
return !(!i || 11 !== i[1].length) && i[1]
}
function i(e) {
var t = /https?:\/\/(?:www\.|player\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|video\/|)(\d+)(?:$|\/|\?)/,
i = e.match(t);
return !(!i || !i[3]) && i[3]
}
function o(e) {
for (var t = e.split(/,(?=mp4\:|webm\:|ogv\:|ogg\:)/), i = {}, o = 0, a = 0; a < t.length; a++) {
var n = t[a].match(/^(mp4|webm|ogv|ogg)\:(.*)/);
n && n[1] && n[2] && (i["ogv" === n[1] ? "ogg" : n[1]] = n[2], o = 1)
}
return !!o && i
}
var a = t(e),
n = i(e),
r = o(e);
return a ? (this.type = "youtube", a) : n ? (this.type = "vimeo", n) : !!r && (this.type = "local", r)
}, a.prototype.isValid = function() {
return !!this.videoID
}, a.prototype.on = function(e, t) {
this.userEventsList = this.userEventsList || [], (this.userEventsList[e] || (this.userEventsList[e] = [])).push(t)
}, a.prototype.off = function(e, t) {
if (this.userEventsList && this.userEventsList[e])
if (t)
for (var i = 0; i < this.userEventsList[e].length; i++) this.userEventsList[e][i] === t && (this.userEventsList[e][i] = !1);
else delete this.userEventsList[e]
}, a.prototype.fire = function(e) {
var t = [].slice.call(arguments, 1);
if (this.userEventsList && "undefined" != typeof this.userEventsList[e])
for (var i in this.userEventsList[e]) this.userEventsList[e][i] && this.userEventsList[e][i].apply(this, t)
};
var n = 0;
a.prototype.play = function(e) {
var t = this;
t.player && ("youtube" === t.type && t.player.playVideo && ("undefined" != typeof e && t.player.seekTo(e || 0), t.player.playVideo()), "vimeo" !== t.type || n || ("undefined" != typeof e ? (n = 1, t.player.setCurrentTime(e || 0).then(function() {
t.player.play(), n = 0
})) : t.player.play()), "local" === t.type && ("undefined" != typeof e && (t.player.currentTime = e), t.player.play()))
}, a.prototype.pause = function() {
this.player && ("youtube" === this.type && this.player.pauseVideo && this.player.pauseVideo(), "vimeo" === this.type && this.player.pause(), "local" === this.type && this.player.pause())
}, a.prototype.getImageURL = function(e) {
var t = this;
if (t.videoImage) return void e(t.videoImage);
if ("youtube" === t.type) {
var i = ["maxresdefault", "sddefault", "hqdefault", "0"],
o = 0,
a = new Image;
a.onload = function() {
120 !== (this.naturalWidth || this.width) || o === i.length - 1 ? (t.videoImage = "https://img.youtube.com/vi/" + t.videoID + "/" + i[o] + ".jpg", e(t.videoImage)) : (o++, this.src = "https://img.youtube.com/vi/" + t.videoID + "/" + i[o] + ".jpg")
}, a.src = "https://img.youtube.com/vi/" + t.videoID + "/" + i[o] + ".jpg"
}
if ("vimeo" === t.type) {
var n = new XMLHttpRequest;
n.open("GET", "https://vimeo.com/api/v2/video/" + t.videoID + ".json", !0), n.onreadystatechange = function() {
if (4 === this.readyState && this.status >= 200 && this.status < 400) {
var i = JSON.parse(this.responseText);
t.videoImage = i[0].thumbnail_large, e(t.videoImage)
}
}, n.send(), n = null
}
}, a.prototype.getIframe = function(t) {
var i = this;
return i.$iframe ? void t(i.$iframe) : void i.onAPIready(function() {
function a(e, t, i) {
var o = document.createElement("source");
o.src = t, o.type = i, e.appendChild(o)
}
var n;
if (i.$iframe || (n = document.createElement("div"), n.style.display = "none"), "youtube" === i.type) {
i.playerOptions = {}, i.playerOptions.videoId = i.videoID, i.playerOptions.width = e.innerWidth || document.documentElement.clientWidth, i.playerOptions.playerVars = {
autohide: 1,
rel: 0,
autoplay: 0
}, i.options.controls || (i.playerOptions.playerVars.iv_load_policy = 3, i.playerOptions.playerVars.modestbranding = 1, i.playerOptions.playerVars.controls = 0, i.playerOptions.playerVars.showinfo = 0, i.playerOptions.playerVars.disablekb = 1);
var r, p;
i.playerOptions.events = {
onReady: function(e) {
i.options.mute && e.target.mute(), i.options.autoplay && i.play(i.options.startTime), i.fire("ready", e)
},
onStateChange: function(e) {
i.options.loop && e.data === YT.PlayerState.ENDED && i.play(i.options.startTime), r || e.data !== YT.PlayerState.PLAYING || (r = 1, i.fire("started", e)), e.data === YT.PlayerState.PLAYING && i.fire("play", e), e.data === YT.PlayerState.PAUSED && i.fire("pause", e), e.data === YT.PlayerState.ENDED && i.fire("end", e), i.options.endTime && (e.data === YT.PlayerState.PLAYING ? p = setInterval(function() {
i.options.endTime && i.player.getCurrentTime() >= i.options.endTime && (i.options.loop ? i.play(i.options.startTime) : i.pause())
}, 150) : clearInterval(p))
}
};
var s = !i.$iframe;
if (s) {
var l = document.createElement("div");
l.setAttribute("id", i.playerID), n.appendChild(l), document.body.appendChild(n)
}
i.player = i.player || new e.YT.Player(i.playerID, i.playerOptions), s && (i.$iframe = document.getElementById(i.playerID))
}
if ("vimeo" === i.type) {
i.playerOptions = "", i.playerOptions += "player_id=" + i.playerID, i.playerOptions += "&autopause=0", i.options.controls || (i.playerOptions += "&badge=0&byline=0&portrait=0&title=0"), i.playerOptions += "&autoplay=0", i.playerOptions += "&loop=" + (i.options.loop ? 1 : 0), i.$iframe || (i.$iframe = document.createElement("iframe"), i.$iframe.setAttribute("id", i.playerID), i.$iframe.setAttribute("src", "https://player.vimeo.com/video/" + i.videoID + "?" + i.playerOptions), i.$iframe.setAttribute("frameborder", "0"), n.appendChild(i.$iframe), document.body.appendChild(n)), i.player = i.player || new Vimeo.Player(i.$iframe), i.player.setVolume(i.options.mute ? 0 : 100), i.options.autoplay && i.play(i.options.startTime);
var d;
i.player.on("timeupdate", function(e) {
d || i.fire("started", e), d = 1, i.options.endTime && i.options.endTime && e.seconds >= i.options.endTime && (i.options.loop ? i.play(i.options.startTime) : i.pause())
}), i.player.on("play", function(e) {
i.fire("play", e)
}), i.player.on("pause", function(e) {
i.fire("pause", e)
}), i.player.on("ended", function(e) {
i.fire("end", e)
}), i.player.on("loaded", function(e) {
i.fire("ready", e)
})
}
if ("local" === i.type) {
if (!i.$iframe) {
i.$iframe = document.createElement("video"), i.options.mute && i.$iframe.setAttribute("muted", "on"), i.options.loop && i.$iframe.setAttribute("loop", "on"), i.$iframe.setAttribute("id", i.playerID), n.appendChild(i.$iframe), document.body.appendChild(n);
for (var u in i.videoID) a(i.$iframe, i.videoID[u], "video/" + u)
}
i.player = i.player || i.$iframe;
var y;
o(i.player, "playing", function(e) {
y || i.fire("started", e), y = 1
}), o(i.player, "timeupdate", function() {
i.options.endTime && i.options.endTime && this.currentTime >= i.options.endTime && (i.options.loop ? i.play(i.options.startTime) : i.pause())
}), o(i.player, "play", function(e) {
i.fire("play", e)
}), o(i.player, "pause", function(e) {
i.fire("pause", e)
}), o(i.player, "ended", function(e) {
i.fire("end", e)
}), o(i.player, "loadedmetadata", function() {
i.fire("ready"), i.options.autoplay && i.play(i.options.startTime)
})
}
t(i.$iframe)
})
}, a.prototype.init = function() {
var e = this;
e.playerID = "VideoWorker-" + e.ID
};
var r = 0,
p = 0;
a.prototype.loadAPI = function() {
var t = this;
if (!r || !p) {
var i = "";
if ("youtube" !== t.type || r || (r = 1, i = "//www.youtube.com/iframe_api"), "vimeo" !== t.type || p || (p = 1, i = "//player.vimeo.com/api/player.js"), i) {
"file://" === e.location.origin && (i = "http:" + i);
var o = document.createElement("script"),
a = document.getElementsByTagName("head")[0];
o.src = i, a.appendChild(o), a = null, o = null
}
}
};
var s = 0,
l = 0,
d = new i,
u = new i;
a.prototype.onAPIready = function(t) {
var i = this;
if ("youtube" === i.type && ("undefined" != typeof YT && 0 !== YT.loaded || s ? "object" == typeof YT && 1 === YT.loaded ? t() : d.done(function() {
t()
}) : (s = 1, e.onYouTubeIframeAPIReady = function() {
e.onYouTubeIframeAPIReady = null, d.resolve("done"), t()
})), "vimeo" === i.type)
if ("undefined" != typeof Vimeo || l) "undefined" != typeof Vimeo ? t() : u.done(function() {
t()
});
else {
l = 1;
var o = setInterval(function() {
"undefined" != typeof Vimeo && (clearInterval(o), u.resolve("done"), t())
}, 20)
}
"local" === i.type && t()
}, e.VideoWorker = a
}(window),
/*!
* Name : Video Background Extension for Jarallax
* Version : 1.0.0
* Author : _nK http://nkdev.info
* GitHub : https://github.com/nk-o/jarallax
*/
function() {
"use strict";
if ("undefined" != typeof jarallax) {
var e = jarallax.constructor,
t = e.prototype.init;
e.prototype.init = function() {
var e = this;
t.apply(e), e.video && e.video.getIframe(function(t) {
var i = t.parentNode;
e.css(t, {
position: "fixed",
top: "0px",
left: "0px",
right: "0px",
bottom: "0px",
width: "100%",
height: "100%",
visibility: "visible",
zIndex: -1
}), e.$video = t, e.image.$container.appendChild(t), i.parentNode.removeChild(i)
})
};
var i = e.prototype.coverImage;
e.prototype.coverImage = function() {
var e = this;
i.apply(e), e.video && "IFRAME" === e.image.$item.nodeName && e.css(e.image.$item, {
height: e.image.$item.getBoundingClientRect().height + 400 + "px",
marginTop: -200 + parseFloat(e.css(e.image.$item, "margin-top")) + "px"
})
};
var o = e.prototype.initImg;
e.prototype.initImg = function() {
var e = this;
if (e.options.videoSrc || (e.options.videoSrc = e.$item.getAttribute("data-jarallax-video") || !1), e.options.videoSrc) {
var t = new VideoWorker(e.options.videoSrc, {
startTime: e.options.videoStartTime || 0,
endTime: e.options.videoEndTime || 0
});
if (t.isValid() && (e.image.useImgTag = !0, t.on("ready", function() {
var i = e.onScroll;
e.onScroll = function() {
i.apply(e), e.isVisible() ? t.play() : t.pause()
}
}), t.on("started", function() {
e.image.$default_item = e.image.$item, e.image.$item = e.$video, e.image.width = e.options.imgWidth = e.image.width || 1280, e.image.height = e.options.imgHeight = e.image.height || 720, e.coverImage(), e.clipContainer(), e.onScroll(), e.image.$default_item && (e.image.$default_item.style.display = "none")
}), e.video = t, "local" !== t.type && t.getImageURL(function(t) {
e.image.src = t, e.init()
})), "local" !== t.type) return !1
}
return o.apply(e)
};
var a = e.prototype.destroy;
e.prototype.destroy = function() {
var e = this;
a.apply(e)
}
}
}();
(function($,sr){
// debouncing function from John Hann
// http://unscriptable.com/index.php/2009/03/20/debouncing-javascript-methods/
var debounce = function (func, threshold, execAsap) {
var timeout;
return function debounced () {
var obj = this, args = arguments;
function delayed () {
if (!execAsap)
func.apply(obj, args);
timeout = null;
};
if (timeout)
clearTimeout(timeout);
else if (execAsap)
func.apply(obj, args);
timeout = setTimeout(delayed, threshold || 100);
};
}
// smartresize
jQuery.fn[sr] = function(fn){ return fn ? this.bind('resize', debounce(fn)) : this.trigger(sr); };
})(jQuery,'smartresize');
//custom
(function($) {
'use strict';
$.fn.pinIt = function() {
this.each(function() {
$(this).width() > 120 && $(this).height() > 120 && $(this).hover(function() {
var b = $(location).attr("href");
b = encodeURIComponent(b);
var c = $(this).find("img").attr("src");
if ($("> a", this).length > 0) {
var d = $("> a", this).attr("href");
d.match(/\.(gif|jpeg|jpg|png)/) && (c = d)
}
c = encodeURIComponent(c), $('<a class="hs hs-pinterest pinterest-share-icon" href="http://www.pinterest.com/pin/create/bookmarklet/?url=' + b + "&media=" + c + '&is_video=false" target="_blank"></a>').appendTo(this).addClass("pin-it-visible")
}, function() {
$(this).children(".pinterest-share-icon").remove()
})
})
}
function audioPlayerInit() {
$('.audio-wraper').each(function() {
if($(this).hasClass('active')) {
$(this).find('audio').audioPlayer();
}
$(this).removeClass("active");
});
}
function justifiedgalleryInit() {
//justified gallery
$('div[id^="justifiedgall_"]').each(function() {
var captions_data = $(this).attr('data-captions') == 'true' ? true : false,
margins_data = $(this).attr('data-margins'),
randomize_data = $(this).attr('data-randomize') == 'true' ? true : false,
rowheight_data = $(this).attr('data-rowheight');
$(this).justifiedGallery({
rowHeight: rowheight_data,
maxRowHeight: null,
margins: margins_data,
selector: "div, div:not(.spinner)",
border: 0,
lastRow: 'justify',
captions: captions_data,
randomize: randomize_data,
}).on('jg.complete', function() {
$(".justified-gallery").find($("div", this)).pinIt();
if ($('.grid')[0]) {
$(".grid").masonry();
}
$(this).magnificPopup({
delegate: '.jg-entry a:not(.pinterest-share-icon)',
type: 'image',
closeOnContentClick: false,
closeBtnInside: false,
mainClass: 'mfp-with-zoom mfp-img-mobile',
image: {
verticalFit: true,
titleSrc: function(item) {
var caption = item.el.find('img').attr('alt');
var pinItURL = "http://pinterest.com/pin/create/button/";
pinItURL += '?url=';
pinItURL += '&media=' + item.el.attr('href');
pinItURL += '&description=' + caption;
return caption + ' · <a class="pin-it" href="' + pinItURL + '" target="_blank"><img src="http://assets.pinterest.com/images/pidgets/pin_it_button.png" /></a>';
}
},
gallery: {
enabled: true
},
zoom: {
enabled: true,
duration: 500, // don't foget to change the duration also in CSS
opener: function(element) {
return element.find('img');
}
},
callbacks: {
afterClose: function() {
}
}
});
});
});
}
// Set the Cookie
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
var expires = "expires=" + d.toUTCString();
document.cookie = cname + "=" + cvalue + "; " + expires;
}
// Get the Cookie
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
// Check if Cookie exists
function checkCookie() {
// Get the cookie called "visited"
var visited = getCookie("visited");
// If it exists, print the Cookie to the Console
if (visited == "true") {
console.log(document.cookie);
} else {
$.magnificPopup.open({
items: {
src: '#hs_signup'
},
type: 'inline',
tClose: '',
fixedContentPos: true,
fixedBgPos: true,
overflowY: 'auto',
closeBtnInside: true,
preloader: false,
midClick: true,
removalDelay: 300,
mainClass: 'my-mfp-zoom-in newsletter-ajax'
});
setCookie("visited", "true", 15);
}
}
function masonryStart() {
if ($('.grid')[0]) {
$(".responsive").fitText(1.1);
var $container = $(".grid");
$container.imagesLoaded(function() {
$container.masonry({
itemsSelector: ".block",
columnWidth: ".block",
isAnimated: false
});
});
}
}
var isMobile = {
Android: function() {
return navigator.userAgent.match(/Android/i);
},
BlackBerry: function() {
return navigator.userAgent.match(/BlackBerry/i);
},
iOS: function() {
return navigator.userAgent.match(/iPhone|iPad|iPod/i);
},
Opera: function() {
return navigator.userAgent.match(/Opera Mini/i);
},
Windows: function() {
return navigator.userAgent.match(/IEMobile/i);
},
any: function() {
return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows());
}
};
function jarallaxResize() {
if ($('.normal-slideshow')[0]) {
$(".parallax-enabled.top-slideshow .owl-slide").each(function() {
$(this).jarallax("clipContainer").jarallax("coverImage").jarallax("onScroll");
})
}
if ($('.grid-slideshow')[0]) {
$(".parallax-enabled.top-slideshow .owl-slide .cover-wrapper").each(function() {
$(this).jarallax("clipContainer").jarallax("coverImage").jarallax("onScroll");
})
}
}
function jarallaxInit() {
$(".parallax-enabled.top-slideshow .owl-slide:not(.slide-video), .parallax-enabled.top-slideshow .cover-wrapper:not(.slide-video)").each(function() {
var $container = $(this).parents('.parallax-enabled.top-slideshow:eq(0)');
$(this).jarallax({
speed: 0.7,
elementInViewport: $(this)
})
}), $(".parallax-enabled.top-slideshow .cover-wrapper.slide-video, .parallax-enabled.top-slideshow .slide-video" ).each(function() {
var $container = $(this).parents('.parallax-enabled.top-slideshow:eq(0)');
$(this).jarallax({
videoSrc: $(this).data("video"),
videoStartTime: 3,
videoEndTime: 26,
elementInViewport: $container,
autoplay: 1,
loop: 1,
speed: 0.8
})
});
}
function owlCarouselRefresh() {
$('div[id^="owl-carousel-"]').each(function() {
$(this).trigger("refresh.owl.carousel");
});
}
function owlCarousel() {
$('div[id^="owl-carousel-"]').each(function() {
var carousel = $(this),
auto_play = carousel.attr('data-auto-play') == 'true' ? true : false,
center_mode = carousel.attr('data-center') == 'true' ? true : false,
auto_play_timeout = parseInt(carousel.attr('data-auto-play-timeout')),
items_desktop = parseInt(carousel.attr('data-items')),
data_howmany = parseInt(carousel.attr('data-howmany')),
items_tablet = parseInt(carousel.attr('data-tablet')),
items_mobile = parseInt(carousel.attr('data-mobile')),
margin_val = parseInt(carousel.attr('data-margin')),
display_navs = carousel.attr('data-nav') == 'true' ? true : false,
rtl_mode = carousel.attr('data-rtl') == 'true' ? true : false,
display_pagination = carousel.attr('data-pagination') == 'true' ? true : false,
auto_height = items_desktop <= 1 ? true : false,
data_howmany_count = data_howmany <= 1 ? false : true;
$(carousel).owlCarousel({
autoplay: auto_play,
autoplayTimeout: auto_play_timeout,
loop: data_howmany_count,
margin: margin_val,
smartSpeed: 600,
responsiveRefreshRate: 10,
responsiveClass: true,
nav: display_navs,
rtl: rtl_mode,
autoplayHoverPause: true,
dots: display_pagination,
navText: ['<i class="fa fa-angle-left"></i>', '<i class="fa fa-angle-right"></i>'],
items: false,
center: center_mode,
responsive: {
0: {
items: items_mobile
},
992: {
items: items_tablet
},
1200: {
items: items_desktop
}
},
onInitialized: jarallaxInit,
onResized: jarallaxResize
});
});
$('.owl-prev').addClass('icon-chevron-left');
$('.owl-next').addClass('icon-chevron-right');
}
$(window).smartresize(function(){
owlCarouselRefresh();
jarallaxResize();
});
$(document).ready(function() {
$(".search-icon, .closeit").click(function() {
$(".top-panel22").slideToggle("600", "easeInOutCirc", function() {
if ($(this).is(':visible')) {
$(".sb-search-input").focus();
}
});
});
$('.parallax-enabled.headerstyler').jarallax({
speed: 0.7,
type: 'scroll',
zIndex: 0
});
$(".parallax-enabled.parallax-image").each(function() {
$(this).jarallax({
speed: 0.7,
type: 'scroll',
zIndex: -1
})
});
if ($('.sidebar.sticky-sidebar').length) {
$('.sidebar.sticky-sidebar').theiaStickySidebar({
containerSelector: '.main-blog',
additionalMarginTop: 0,
minWidth: 961,
});
}
if ($('.sticky-share').length) {
$('.sticky-share').theiaStickySidebar({
containerSelector: '.isopad',
additionalMarginTop: 40,
minWidth: 961,
});
}
justifiedgalleryInit();
owlCarousel();
audioPlayerInit();
if (inf_var.pagination_type === "loadmore" || inf_var.pagination_type === "infinite") {
ajaxLoadMoreButton();
}
magnificPopupLoad();
$('.sticky-wrapper .social__list').css("line-height", $('.sticky-wrapper').outerHeight() + 'px');
var newsletter = $('#hs_signup'),
newsletterload = newsletter.attr('data-showonload');
if (newsletterload == 'true') {
setTimeout(checkCookie, 5000);
}
if ($().doubleTouchToGo) {
$('#primary-menu li.menu-item-has-children, #primary-menu li.has-mega-sub-menu, #top-menu li.menu-item-has-children').doubleTouchToGo();
} // doubleTouchToGo
if ($('.menu-mobile').length) {
$('.menu-mobile').navAccordion({
expandButtonText: '<i class="fa fa-angle-right"></i>',
collapseButtonText: '<i class="fa fa-angle-down"></i>'
});
}
if ($('.widget_nav_menu').length) {
$(".widget_nav_menu").each(function() {
$(this).navAccordion({
expandButtonText: '<i class="fa fa-angle-right"></i>',
collapseButtonText: '<i class="fa fa-angle-up"></i>'
})
});
}
masonryStart();
//Zoom fix
// IPad/IPhone
var viewportmeta = document.querySelector && document.querySelector('meta[name="viewport"]'),
ua = navigator.userAgent,
gestureStart = function() {
viewportmeta.content = "width=device-width, minimum-scale=0.25, maximum-scale=1.6";
},
scaleFix = function() {
if (viewportmeta && /iPhone|iPad/.test(ua) && !/Opera Mini/.test(ua)) {
viewportmeta.content = "width=device-width, minimum-scale=1.0, maximum-scale=1.0";
document.addEventListener("gesturestart", gestureStart, false);
}
};
scaleFix();
// ---------------------------------------------------------
// Tooltip
// ---------------------------------------------------------
$("[data-rel='tooltip']").tooltip();
// ---------------------------------------------------------
// Back to Top
// ---------------------------------------------------------
$(window).scroll(function() {
if ($(this).scrollTop() > 300) {
$('#back-top').fadeIn();
} else {
$('#back-top').fadeOut();
}
if ($(this).scrollTop() > 50) {
$('.fixed-post-nav').fadeIn();
} else {
$('.fixed-post-nav').fadeOut();
}
});
$('#back-top a').click(function() {
$('body,html').stop(false, false).animate({
scrollTop: 0
}, 800);
return false;
});
$('.skills').appear(function() {
$(".chart").each(function() {
var size = $(this).attr('data-size');
var fgcolor = $(this).attr('data-fgcolor');
var bgcolor = $(this).attr('data-bgcolor');
var donutwidth = $(this).attr('data-donutwidth');
$(this).easyPieChart({
easing: 'easeInOutQuad',
barColor: fgcolor,
animate: 2000,
trackColor: bgcolor,
lineWidth: donutwidth,
lineCap: 'round',
size: size,
scaleColor: false,
onStep: function(from, to, percent) {
$(this.el).find('.percent').text(Math.round(percent));
}
});
});
});
$('.bars').appear(function() {
$('.progress').each(function() {
var percentage = $(this).find('.bar').attr('data-progress');
$(this).find('.bar').css('width', '0%');
$(this).find('.bar').animate({
width: percentage + '%'
}, {
duration: 3000,
easing: 'easeInOutQuart'
});
});
});
// ---------------------------------------------------------
// placeholder fix
$('[placeholder]').focus(function() {
var input = $(this);
if (input.val() == input.attr('placeholder')) {
input.val('');
input.removeClass('placeholder');
}
}).blur(function() {
var input = $(this);
if (input.val() == '' || input.val() == input.attr('placeholder')) {
input.addClass('placeholder');
input.val(input.attr('placeholder'));
}
}).blur().parents('form').submit(function() {
$(this).find('[placeholder]').each(function() {
var input = $(this);
if (input.val() == input.attr('placeholder')) {
input.val('');
}
})
});
});
$(window).load(function() {
if ($('.grid')[0]) {
var n = 0;
$(".block").each(function() {
$(this).find(".hider-posts").delay(n).animate({
width: 0 + "%"
}, {
duration: 1e3,
easing: "easeInOutCirc"
});
n += 300
})
}
$(".responsive").fitText(1.3);
});
function magnificPopupLoad() {
$('.popup-youtube, .popup-vimeo, .popup-gmaps').each(function() { // the containers for all your galleries
$(this).magnificPopup({
disableOn: 320,
type: 'iframe',
mainClass: 'mfp-fade',
removalDelay: 300,
preloader: false,
fixedContentPos: true,
fixedBgPos: true,
iframe: {
patterns: {
youtube: {
index: 'youtube.com/',
id: null,
src: '%id%?autoplay=1'
},
vimeo: {
index: 'vimeo.com/',
id: function(url) {
var m = url.match(/(https?:\/\/)?(www.)?(player.)?vimeo.com\/([a-z]*\/)*([0-9]{6,11})[?]?.*/);
if (!m || !m[5]) return null;
return m[5];
},
src: '//player.vimeo.com/video/%id%?autoplay=1'
}
}
}
});
});
$('.newsletter-ajax-popup').magnificPopup({
type: 'inline',
tClose: '',
fixedContentPos: true,
fixedBgPos: true,
overflowY: 'auto',
closeBtnInside: true,
preloader: false,
midClick: true,
removalDelay: 300,
mainClass: 'my-mfp-zoom-in newsletter-ajax'
});
$('.image-popup-no-margins').magnificPopup({
tClose: '',
type: 'image',
closeOnContentClick: true,
closeBtnInside: false,
fixedContentPos: true,
mainClass: 'mfp-no-margins mfp-with-zoom', // class to remove default margin from left and right side
image: {
verticalFit: true
},
zoom: {
enabled: true,
duration: 300 // don't foget to change the duration also in CSS
},
callbacks: {
afterClose: function() {
}
}
});
$('.zoom-gallery').each(function() { // the containers for all your galleries
$(this).magnificPopup({
tClose: '',
delegate: 'a.zoomer',
type: 'image',
closeOnContentClick: false,
closeBtnInside: false,
mainClass: 'mfp-with-zoom mfp-img-mobile',
image: {
verticalFit: true,
titleSrc: function(item) {
var caption = item.el.attr('title');
var pinItURL = "http://pinterest.com/pin/create/button/";
pinItURL += '?url=';
pinItURL += '&media=' + item.el.attr('href');
pinItURL += '&description=' + caption;
return caption + ' · <a class="pin-it" href="' + pinItURL + '" target="_blank"><img src="http://assets.pinterest.com/images/pidgets/pin_it_button.png" /></a>';
//return item.el.attr('title') + ' · <a class="image-source-link" href="'+item.el.attr('data-source')+'" target="_blank">image source</a>';
}
},
gallery: {
enabled: true
},
zoom: {
enabled: true,
duration: 300, // don't foget to change the duration also in CSS
opener: function(element) {
return element.find('img');
}
},
callbacks: {
afterClose: function() {
}
}
});
});
$('.popup-with-zoom-anim').magnificPopup({
tClose: '',
type: 'inline',
fixedContentPos: false,
fixedBgPos: true,
overflowY: 'auto',
closeBtnInside: true,
preloader: false,
midClick: true,
removalDelay: 300,
mainClass: 'my-mfp-zoom-in',
focus: '.sb-search-input',
// When elemened is focused, some mobile browsers in some cases zoom in
// It looks not nice, so we disable it:
callbacks: {
beforeOpen: function() {
if ($(window).width() < 700) {
this.st.focus = false;
} else {
this.st.focus = '.sb-search-input';
}
},
afterClose: function() {
}
}
});
}
function ajaxLoadMoreButton() {
var hrs = $.hrs({
container: ".ajax-container",
item: ".ajax-post-wrapper",
pagination: ".ajax-pagination-container",
next: "#ajax-load-more-posts-button",
});
if ($('.grid')[0]) {
hrs.on('render', function(items) {
$(items).css({
opacity: 0
});
});
}
hrs.on('rendered', function(items) {
magnificPopupLoad();
justifiedgalleryInit();
owlCarousel();
audioPlayerInit();
$(".responsive").fitText(2);
if ($('.grid')[0]) {
var n = 0;
$(".block").each(function() {
$(this).find(".hider-posts").delay(n).animate({
width: 0 + "%"
}, {
duration: 1e3,
easing: "easeInOutCirc"
});
n += 300
})
$(".grid").masonry('appended', items, true);
$(".grid").imagesLoaded().progress(function() {
$(".grid").masonry('layout');
});
}
});
hrs.extension(new HRSNoneLeftExtension({
text: inf_var.you_reached_the_end,
}));
if (inf_var.pagination_type === "loadmore") {
hrs.extension(new HRSTriggerExtension({
text: inf_var.load_more,
offset: inf_var.offset,
html: '<div class="row pagination-below"><div class="col-md-12"><div class="ajax-pagination"><div class="ajax-loader"></div><a id="ajax-load-more-posts" class="btn btn-default btn-normal">{text}</a></div></div></div>'
}));
}
hrs.extension(new HRSSpinnerExtension({
html: '<div class="row pagination-below"><div class="col-md-12"><div class="ajax-pagination"><div class="ajax-loader loading"><i class="fa fa-circle-o-notch fa-spin fa-2x fa-fw"></i></div></div></div></div>'
}));
}
}(jQuery));