| Server IP : 66.29.153.156 / Your IP : 216.73.216.70 Web Server : LiteSpeed System : Linux premium322.web-hosting.com 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64 User : lastyfjz ( 1521) PHP Version : 8.1.34 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/lastyfjz/dermalaserclinic.co.uk/wp-content/themes/cherie/assets/js/vendors-libs/ |
Upload File : |
/**
* Fresco - A Beautiful Responsive Lightbox - v2.3.0
* (c) 2012-2019 Nick Stakenburg
*
* https://www.frescojs.com
*
* @license: https://creativecommons.org/licenses/by/4.0
*/
!(function (i, e) {
"function" == typeof define && define.amd ? define(["jquery"], e) : "object" == typeof module && module.exports ? (module.exports = e(require("jquery"))) : (i.Fresco = e(jQuery));
})(this, function ($) {
var Fresco = {};
$.extend(Fresco, { version: "2.3.0" }), (Fresco.Skins = { fresco: {} });
var Bounds = {
viewport: function () {
var i = { width: $(window).width() };
if (Browser.MobileSafari || (Browser.Android && Browser.Gecko)) {
var e = document.documentElement.clientWidth / window.innerWidth;
i.height = window.innerHeight * e;
} else i.height = $(window).height();
return i;
},
},
Browser =
((e = navigator.userAgent),
{
IE: !(!window.attachEvent || -1 !== e.indexOf("Opera")) && f("MSIE "),
Opera: -1 < e.indexOf("Opera") && ((!!window.opera && opera.version && parseFloat(opera.version())) || 7.55),
WebKit: -1 < e.indexOf("AppleWebKit/") && f("AppleWebKit/"),
Gecko: -1 < e.indexOf("Gecko") && -1 === e.indexOf("KHTML") && f("rv:"),
MobileSafari: !!e.match(/Apple.*Mobile.*Safari/),
Chrome: -1 < e.indexOf("Chrome") && f("Chrome/"),
ChromeMobile: -1 < e.indexOf("CrMo") && f("CrMo/"),
Android: -1 < e.indexOf("Android") && f("Android "),
IEMobile: -1 < e.indexOf("IEMobile") && f("IEMobile/"),
}),
e;
function f(i) {
var t = new RegExp(i + "([\\d.]+)").exec(e);
return !t || parseFloat(t[1]);
}
var _slice = Array.prototype.slice;
function baseToString(i) {
return "string" == typeof i ? i : null == i ? "" : i + "";
}
var _ = {
isElement: function (i) {
return i && 1 === i.nodeType;
},
String: {
capitalize: function (i) {
return (i = baseToString(i)) && i.charAt(0).toUpperCase() + i.slice(1);
},
},
};
$(document.documentElement).on("mousewheel DOMMouseScroll", function (i) {
var e;
if ((i.originalEvent.wheelDelta ? (e = i.originalEvent.wheelDelta / 120) : i.originalEvent.detail && (e = -i.originalEvent.detail / 3), e)) {
var t = $.Event("fresco:mousewheel");
$(i.target).trigger(t, e), t.isPropagationStopped() && i.stopPropagation(), t.isDefaultPrevented() && i.preventDefault();
}
});
var Fit = {
within: function (i, e) {
for (var t = $.extend({ height: !0, width: !0 }, arguments[2] || {}), s = $.extend({}, e), n = 1, o = 5, a = t.width, h = t.height; 0 < o && ((a && s.width > i.width) || (h && s.height > i.height)); ) {
var r = 1,
d = 1;
a && s.width > i.width && (r = i.width / s.width), h && s.height > i.height && (d = i.height / s.height), (n = Math.min(r, d)), (s = { width: e.width * n, height: e.height * n }), o--;
}
return (s.width = Math.max(s.width, 0)), (s.height = Math.max(s.height, 0)), s;
},
};
$.extend($.easing, {
frescoEaseInCubic: function (i, e, t, s, n) {
return s * (e /= n) * e * e + t;
},
frescoEaseInSine: function (i, e, t, s, n) {
return -s * Math.cos((e / n) * (Math.PI / 2)) + s + t;
},
frescoEaseOutSine: function (i, e, t, s, n) {
return s * Math.sin((e / n) * (Math.PI / 2)) + t;
},
});
var Support =
((O = document.createElement("div")),
(P = "Webkit Moz O ms Khtml".split(" ")),
{
canvas: ((ba = document.createElement("canvas")), !(!ba.getContext || !ba.getContext("2d"))),
css: {
animation: S("animation"),
transform: S("transform"),
prefixed: function (i) {
return S(i, "prefix");
},
},
svg: !!document.createElementNS && !!document.createElementNS("http://www.w3.org/2000/svg", "svg").createSVGRect,
touch: (function () {
try {
return !!("ontouchstart" in window || (window.DocumentTouch && document instanceof DocumentTouch));
} catch (i) {
return !1;
}
})(),
}),
ba,
O,
P;
function S(i, e) {
var t = i.charAt(0).toUpperCase() + i.substr(1);
return (function (i, e) {
for (var t in i) if (void 0 !== O.style[i[t]]) return "prefix" !== e || i[t];
return !1;
})((i + " " + P.join(t + " ") + t).split(" "), e);
}
(Support.detectMobileTouch = function () {
Support.mobileTouch = Support.touch && (Browser.MobileSafari || Browser.Android || Browser.IEMobile || Browser.ChromeMobile || !/^(Win|Mac|Linux)/.test(navigator.platform));
}),
Support.detectMobileTouch();
var ImageReady = function () {
return this.initialize.apply(this, Array.prototype.slice.call(arguments));
};
function Timers() {
return this.initialize.apply(this, _slice.call(arguments));
}
function getURIData(s) {
var n = { type: "image" };
return (
$.each(Types, function (i, e) {
var t = e.data(s);
t && (((n = t).type = i), (n.url = s));
}),
n
);
}
function detectExtension(i) {
var e = (i || "").replace(/\?.*/g, "").match(/\.([^.]{3,4})$/);
return e ? e[1].toLowerCase() : null;
}
$.extend(ImageReady.prototype, {
supports: { naturalWidth: "naturalWidth" in new Image() },
initialize: function (i, e, t) {
(this.img = $(i)[0]),
(this.successCallback = e),
(this.errorCallback = t),
(this.isLoaded = !1),
(this.options = $.extend({ method: "naturalWidth", pollFallbackAfter: 1e3 }, arguments[3] || {})),
this.supports.naturalWidth && "onload" !== this.options.method
? this.img.complete && "undefined" !== $.type(this.img.naturalWidth)
? setTimeout(
$.proxy(function () {
0 < this.img.naturalWidth ? this.success() : this.error();
}, this)
)
: ($(this.img).bind(
"error",
$.proxy(function () {
setTimeout(
$.proxy(function () {
this.error();
}, this)
);
}, this)
),
(this.intervals = [
[1e3, 10],
[2e3, 50],
[4e3, 100],
[2e4, 500],
]),
(this._ipos = 0),
(this._time = 0),
(this._delay = this.intervals[this._ipos][1]),
this.poll())
: setTimeout($.proxy(this.fallback, this));
},
poll: function () {
this._polling = setTimeout(
$.proxy(function () {
if (0 < this.img.naturalWidth) this.success();
else {
if (
((this._time += this._delay),
this.options.pollFallbackAfter && this._time >= this.options.pollFallbackAfter && !this._usedPollFallback && ((this._usedPollFallback = !0), this.fallback()),
this._time > this.intervals[this._ipos][0])
) {
if (!this.intervals[this._ipos + 1]) return void this.error();
this._ipos++, (this._delay = this.intervals[this._ipos][1]);
}
this.poll();
}
}, this),
this._delay
);
},
fallback: function () {
var i = new Image();
((this._fallbackImg = i).onload = $.proxy(function () {
(i.onload = function () {}), this.supports.naturalWidth || ((this.img.naturalWidth = i.width), (this.img.naturalHeight = i.height)), this.success();
}, this)),
(i.onerror = $.proxy(this.error, this)),
(i.src = this.img.src);
},
abort: function () {
this._fallbackImg && (this._fallbackImg.onload = function () {}), this._polling && (clearTimeout(this._polling), (this._polling = null));
},
success: function () {
this._calledSuccess || ((this._calledSuccess = !0), (this.isLoaded = !0), this.successCallback(this));
},
error: function () {
this._calledError || ((this._calledError = !0), this.abort(), this.errorCallback && this.errorCallback(this));
},
}),
$.extend(Timers.prototype, {
initialize: function () {
this._timers = {};
},
set: function (i, e, t) {
this._timers[i] = setTimeout(e, t);
},
get: function (i) {
return this._timers[i];
},
clear: function (i) {
i ? this._timers[i] && (clearTimeout(this._timers[i]), delete this._timers[i]) : this.clearAll();
},
clearAll: function () {
$.each(this._timers, function (i, e) {
clearTimeout(e);
}),
(this._timers = {});
},
});
var Type = {
isVideo: function (i) {
return /^(youtube|vimeo)$/.test(i);
},
},
Types = {
image: {
extensions: "bmp gif jpeg jpg png webp",
detect: function (i) {
return -1 < $.inArray(detectExtension(i), this.extensions.split(" "));
},
data: function (i) {
return !!this.detect() && { extension: detectExtension(i) };
},
},
vimeo: {
detect: function (i) {
var e = /(vimeo\.com)\/([a-zA-Z0-9-_]+)(?:\S+)?$/i.exec(i);
return !(!e || !e[2]) && e[2];
},
data: function (i) {
var e = this.detect(i);
return !!e && { id: e };
},
},
youtube: {
detect: function (i) {
var e = /(youtube\.com|youtu\.be)\/watch\?(?=.*vi?=([a-zA-Z0-9-_]+))(?:\S+)?$/.exec(i);
return e && e[2] ? e[2] : !(!(e = /(youtube\.com|youtu\.be)\/(vi?\/|u\/|embed\/)?([a-zA-Z0-9-_]+)(?:\S+)?$/i.exec(i)) || !e[3]) && e[3];
},
data: function (i) {
var e = this.detect(i);
return !!e && { id: e };
},
},
},
VimeoThumbnail = (function () {
function i() {
return this.initialize.apply(this, _slice.call(arguments));
}
$.extend(i.prototype, {
initialize: function (i, e, t) {
(this.url = i), (this.successCallback = e), (this.errorCallback = t), this.load();
},
load: function () {
var i = s.get(this.url);
if (i) return this.successCallback(i.data.url);
var e = "http" + (window.location && "https:" === window.location.protocol ? "s" : "") + ":",
t = getURIData(this.url).id;
this._xhr = $.getJSON(
e + "//vimeo.com/api/oembed.json?url=" + e + "//vimeo.com/" + t + "&callback=?",
$.proxy(function (i) {
if (i && i.thumbnail_url) {
var e = { url: i.thumbnail_url };
s.set(this.url, e), this.successCallback(e.url);
} else this.errorCallback();
}, this)
);
},
abort: function () {
this._xhr && (this._xhr.abort(), (this._xhr = null));
},
});
var s = {
cache: [],
get: function (i) {
for (var e = null, t = 0; t < this.cache.length; t++) this.cache[t] && this.cache[t].url === i && (e = this.cache[t]);
return e;
},
set: function (i, e) {
this.remove(i), this.cache.push({ url: i, data: e });
},
remove: function (i) {
for (var e = 0; e < this.cache.length; e++) this.cache[e] && this.cache[e].url === i && delete this.cache[e];
},
};
return i;
})(),
VimeoReady = (function () {
function i() {
return this.initialize.apply(this, _slice.call(arguments));
}
$.extend(i.prototype, {
initialize: function (i, e) {
(this.url = i), (this.callback = e), this.load();
},
load: function () {
var i = s.get(this.url);
if (i) return this.callback(i.data);
var e = "http" + (window.location && "https:" === window.location.protocol ? "s" : "") + ":",
t = getURIData(this.url).id;
this._xhr = $.getJSON(
e + "//vimeo.com/api/oembed.json?url=" + e + "//vimeo.com/" + t + "&maxwidth=9999999&maxheight=9999999&callback=?",
$.proxy(function (i) {
var e = { dimensions: { width: i.width, height: i.height } };
s.set(this.url, e), this.callback && this.callback(e);
}, this)
);
},
abort: function () {
this._xhr && (this._xhr.abort(), (this._xhr = null));
},
});
var s = {
cache: [],
get: function (i) {
for (var e = null, t = 0; t < this.cache.length; t++) this.cache[t] && this.cache[t].url === i && (e = this.cache[t]);
return e;
},
set: function (i, e) {
this.remove(i), this.cache.push({ url: i, data: e });
},
remove: function (i) {
for (var e = 0; e < this.cache.length; e++) this.cache[e] && this.cache[e].url === i && delete this.cache[e];
},
};
return i;
})(),
Options = {
defaults: {
effects: { content: { show: 0, hide: 0 }, spinner: { show: 150, hide: 150 }, window: { show: 440, hide: 300 }, thumbnail: { show: 300, delay: 150 }, thumbnails: { slide: 0 } },
keyboard: { left: !0, right: !0, esc: !0 },
loadedMethod: "naturalWidth",
loop: !1,
onClick: "previous-next",
overflow: !1,
overlay: { close: !0 },
preload: [1, 2],
position: !0,
skin: "fresco",
spinner: !0,
spinnerDelay: 300,
sync: !0,
thumbnails: "horizontal",
ui: "outside",
uiDelay: 3e3,
vimeo: { autoplay: 1, api: 1, title: 1, byline: 1, portrait: 0, loop: 0 },
youtube: { autoplay: 1, controls: 1, enablejsapi: 1, hd: 1, iv_load_policy: 3, loop: 0, modestbranding: 1, rel: 0, vq: "hd1080" },
initialTypeOptions: { image: {}, vimeo: { width: 1280 }, youtube: { width: 1280, height: 720 } },
},
create: function (i, e, t) {
(t = t || {}), ((i = i || {}).skin = i.skin || this.defaults.skin);
var s = i.skin ? $.extend({}, Fresco.Skins[i.skin] || Fresco.Skins[this.defaults.skin]) : {},
n = $.extend(!0, {}, this.defaults, s);
n.initialTypeOptions && (e && n.initialTypeOptions[e] && (n = $.extend(!0, {}, n.initialTypeOptions[e], n)), delete n.initialTypeOptions);
var o = $.extend(!0, {}, n, i);
if (
(Support.mobileTouch && "inside" === o.ui && (o.ui = "outside"),
(!o.effects || (Browser.IE && Browser.IE < 9)) &&
((o.effects = {}),
$.each(this.defaults.effects, function (e, i) {
$.each((o.effects[e] = $.extend({}, i)), function (i) {
o.effects[e][i] = 0;
});
}),
(o.spinner = !1)),
o.keyboard &&
("boolean" === $.type(o.keyboard) &&
((o.keyboard = {}),
$.each(this.defaults.keyboard, function (i, e) {
o.keyboard[i] = !0;
})),
("vimeo" !== e && "youtube" !== e) || $.extend(o.keyboard, { left: !1, right: !1 })),
!o.overflow || Support.mobileTouch ? (o.overflow = { x: !1, y: !1 }) : "boolean" === $.type(o.overflow) && (o.overflow = { x: !1, y: !0 }),
("vimeo" !== e && "youtube" !== e) || (o.overlap = !1),
((Browser.IE && Browser.IE < 9) || Support.mobileTouch) && ((o.thumbnail = !1), (o.thumbnails = !1)),
"youtube" !== e && (o.width && !o.maxWidth && (o.maxWidth = o.width), o.height && !o.maxHeight && (o.maxHeight = o.height)),
!o.thumbnail && "boolean" !== $.type(o.thumbnail))
) {
var a = !1;
switch (e) {
case "youtube":
a = "http" + (window.location && "https:" === window.location.protocol ? "s" : "") + ":" + "//img.youtube.com/vi/" + t.id + "/0.jpg";
break;
case "image":
case "vimeo":
a = !0;
}
o.thumbnail = a;
}
return o;
},
},
Overlay = {
initialize: function () {
this.build(), (this.visible = !1);
},
build: function () {
(this.element = $("<div>").addClass("fr-overlay").hide().append($("<div>").addClass("fr-overlay-background"))),
this.element.on(
"click",
$.proxy(function () {
var i = Pages.page;
(i && i.view && i.view.options.overlay && !i.view.options.overlay.close) || Window.hide();
}, this)
),
Support.mobileTouch && this.element.addClass("fr-mobile-touch"),
this.element.on("fresco:mousewheel", function (i) {
i.preventDefault();
});
},
setSkin: function (i) {
this.skin && this.element.removeClass("fr-overlay-skin-" + this.skin), this.element.addClass("fr-overlay-skin-" + i), (this.skin = i);
},
attach: function () {
$(document.body).append(this.element);
},
detach: function () {
this.element.detach();
},
show: function (i, e) {
if (this.visible) i && i();
else {
(this.visible = !0), this.attach(), this.max();
var t = (Pages.page && Pages.page.view.options.effects.window.show) || 0,
s = ("number" === $.type(e) ? e : t) || 0;
this.element.stop(!0).fadeTo(s, 1, i);
}
},
hide: function (i, e) {
if (this.visible) {
var t = (Pages.page && Pages.page.view.options.effects.window.hide) || 0,
s = ("number" === $.type(e) ? e : t) || 0;
this.element.stop(!0).fadeOut(
s || 0,
$.proxy(function () {
this.detach(), (this.visible = !1), i && i();
}, this)
);
} else i && i();
},
getScrollDimensions: function () {
var n = {};
return (
$.each(["width", "height"], function (i, e) {
var t = e.substr(0, 1).toUpperCase() + e.substr(1),
s = document.documentElement;
n[e] = (Browser.IE ? Math.max(s["offset" + t], s["scroll" + t]) : Browser.WebKit ? document.body["scroll" + t] : s["scroll" + t]) || 0;
}),
n
);
},
max: function () {
var i;
if ((Browser.MobileSafari && Browser.WebKit && Browser.WebKit < 533.18 && ((i = this.getScrollDimensions()), this.element.css(i)), Browser.IE && Browser.IE < 9)) {
var e = Bounds.viewport();
this.element.css({ height: e.height, width: e.width });
}
Support.mobileTouch && !i && this.element.css({ height: this.getScrollDimensions().height });
},
},
Window = {
initialize: function () {
(this.queues = []), (this.queues.hide = $({})), (this.pages = []), (this._tracking = []), (this._first = !0), (this.timers = new Timers()), this.build(), this.setSkin(Options.defaults.skin);
},
build: function () {
if (
((this.element = $("<div>")
.addClass("fr-window fr-measured")
.hide()
.append(
(this._box = $("<div>")
.addClass("fr-box")
.append((this._pages = $("<div>").addClass("fr-pages"))))
)
.append((this._thumbnails = $("<div>").addClass("fr-thumbnails")))),
Overlay.initialize(),
Pages.initialize(this._pages),
Thumbnails.initialize(this._thumbnails),
Spinner.initialize(),
UI.initialize(),
this.element.addClass("fr" + (Support.mobileTouch ? "" : "-no") + "-mobile-touch"),
this.element.addClass("fr" + (Support.svg ? "" : "-no") + "-svg"),
Browser.IE)
)
for (var i = 7; i <= 9; i++) Browser.IE < i && this.element.addClass("fr-ltIE" + i);
this.element.on("fresco:mousewheel", function (i) {
i.preventDefault();
});
},
attach: function () {
this._attached || ($(document.body).append(this.element), (this._attached = !0));
},
detach: function () {
this._attached && (this.element.detach(), (this._attached = !1));
},
setSkin: function (i) {
this._skin && this.element.removeClass("fr-window-skin-" + this._skin), this.element.addClass("fr-window-skin-" + i), Overlay.setSkin(i), (this._skin = i);
},
setShowingType: function (i) {
this._showingType !== i &&
(this._showingType && (this.element.removeClass("fr-showing-type-" + this._showingType), Type.isVideo(this._showingType) && this.element.removeClass("fr-showing-type-video")),
this.element.addClass("fr-showing-type-" + i),
Type.isVideo(i) && this.element.addClass("fr-showing-type-video"),
(this._showingType = i));
},
startObservingResize: function () {
this._onWindowResizeHandler || $(window).on("resize orientationchange", (this._onWindowResizeHandler = $.proxy(this._onWindowResize, this)));
},
stopObservingResize: function () {
this._onWindowResizeHandler && ($(window).off("resize orientationchange", this._onWindowResizeHandler), (this._onWindowResizeHandler = null));
},
_onScroll: function () {
Support.mobileTouch && this.timers.set("scroll", $.proxy(this.adjustToScroll, this), 0);
},
_onWindowResize: function () {
var i;
(i = Pages.page) && (Thumbnails.fitToViewport(), this.updateBoxDimensions(), i.fitToBox(), UI.update(), UI.adjustPrevNext(null, 0), Spinner.center(), Overlay.max(), UI._onWindowResize(), this._onScroll());
},
adjustToScroll: function () {
Support.mobileTouch && this.element.css({ top: $(window).scrollTop() });
},
getBoxDimensions: function () {
return this._boxDimensions;
},
updateBoxDimensions: function () {
if (Pages.page) {
var i = Bounds.viewport(),
e = Thumbnails.getDimensions(),
t = "horizontal" === Thumbnails._orientation;
(this._boxDimensions = { width: t ? i.width : i.width - e.width, height: t ? i.height - e.height : i.height }),
(this._boxPosition = { top: 0, left: t ? 0 : e.width }),
this._box.css($.extend({}, this._boxDimensions, this._boxPosition));
}
},
show: function (i, e) {
if (this.visible) i && i();
else {
(this.visible = !0), (this.opening = !0), this.attach(), this.timers.clear("show-window"), this.timers.clear("hide-overlay"), this.adjustToScroll();
var t = ("number" === $.type(e) ? e : Pages.page && Pages.page.view.options.effects.window.show) || 0,
s = 2;
Overlay[Pages.page && Pages.page.view.options.overlay ? "show" : "hide"](function () {
i && --s < 1 && i();
}, t),
this.timers.set(
"show-window",
$.proxy(function () {
this._show(
$.proxy(function () {
(this.opening = !1), i && --s < 1 && i();
}, this),
t
);
}, this),
1 < t ? Math.min(0.5 * t, 50) : 1
);
}
},
_show: function (i, e) {
var t = ("number" === $.type(e) ? e : Pages.page && Pages.page.view.options.effects.window.show) || 0;
this.element.stop(!0).fadeTo(t, 1, i);
},
hide: function (e) {
if (this.view) {
var i = this.queues.hide;
i.queue([]), this.timers.clear("show-window"), this.timers.clear("hide-overlay");
var t = Pages.page ? Pages.page.view.options.effects.window.hide : 0;
i.queue(
$.proxy(function (i) {
Pages.stop(), Spinner.hide(), i();
}, this)
),
i.queue(
$.proxy(function (i) {
UI.disable(), UI.hide(null, t), Keyboard.disable(), i();
}, this)
),
i.queue(
$.proxy(function (i) {
var e = 2;
this._hide(function () {
--e < 1 && i();
}, t),
this.timers.set(
"hide-overlay",
$.proxy(function () {
Overlay.hide(function () {
--e < 1 && i();
}, t);
}, this),
1 < t ? Math.min(0.5 * t, 150) : 1
),
(this._first = !0);
}, this)
),
i.queue(
$.proxy(function (i) {
this._reset(), this.stopObservingResize(), Pages.removeAll(), Thumbnails.clear(), this.timers.clear(), (this._position = -1);
var e = Pages.page && Pages.page.view.options.afterHide;
"function" === $.type(e) && e.call(Fresco), (this.view = null), (this.opening = !1), (this.closing = !1), this.detach(), i();
}, this)
),
"function" === $.type(e) &&
i.queue(
$.proxy(function (i) {
e(), i();
}, this)
);
}
},
_hide: function (i, e) {
var t = ("number" === $.type(e) ? e : Pages.page && Pages.page.view.options.effects.window.hide) || 0;
this.element.stop(!0).fadeOut(t, i);
},
load: function (i, e) {
(this.views = i), this.attach(), Thumbnails.load(i), Pages.load(i), this.startObservingResize(), e && this.setPosition(e);
},
setPosition: function (i, e) {
(this._position = i),
(this.view = this.views[i - 1]),
this.stopHideQueue(),
(this.page = Pages.show(
i,
$.proxy(function () {
e && e();
}, this)
));
},
stopHideQueue: function () {
this.queues.hide.queue([]);
},
_reset: function () {
(this.visible = !1), UI.hide(null, 0), UI.reset();
},
mayPrevious: function () {
return (this.view && this.view.options.loop && this.views && 1 < this.views.length) || 1 !== this._position;
},
previous: function (i) {
var e = this.mayPrevious();
(i || e) && this.setPosition(this.getSurroundingIndexes().previous);
},
mayNext: function () {
var i = this.views && 1 < this.views.length;
return (this.view && this.view.options.loop && i) || (i && 1 !== this.getSurroundingIndexes().next);
},
next: function (i) {
var e = this.mayNext();
(i || e) && this.setPosition(this.getSurroundingIndexes().next);
},
getSurroundingIndexes: function () {
if (!this.views) return {};
var i = this._position,
e = this.views.length;
return { previous: i <= 1 ? e : i - 1, next: e <= i ? 1 : i + 1 };
},
},
Keyboard = {
enabled: !1,
keyCode: { left: 37, right: 39, esc: 27 },
enable: function (i) {
this.disable(),
i &&
($(document)
.on("keydown", (this._onKeyDownHandler = $.proxy(this.onKeyDown, this)))
.on("keyup", (this._onKeyUpHandler = $.proxy(this.onKeyUp, this))),
(this.enabled = i));
},
disable: function () {
(this.enabled = !1), this._onKeyUpHandler && ($(document).off("keyup", this._onKeyUpHandler).off("keydown", this._onKeyDownHandler), (this._onKeyUpHandler = this._onKeyDownHandler = null));
},
onKeyDown: function (i) {
if (this.enabled) {
var e = this.getKeyByKeyCode(i.keyCode);
if (e && (!e || !this.enabled || this.enabled[e]))
switch ((i.preventDefault(), i.stopPropagation(), e)) {
case "left":
Window.previous();
break;
case "right":
Window.next();
}
}
},
onKeyUp: function (i) {
if (this.enabled) {
var e = this.getKeyByKeyCode(i.keyCode);
if (e && (!e || !this.enabled || this.enabled[e]))
switch (e) {
case "esc":
Window.hide();
}
}
},
getKeyByKeyCode: function (i) {
for (var e in this.keyCode) if (this.keyCode[e] === i) return e;
return null;
},
},
Page =
((Lc = 0),
(Mc = {}),
(Nc = $("<div>")
.addClass("fr-stroke fr-stroke-top fr-stroke-horizontal")
.append($("<div>").addClass("fr-stroke-color"))
.add($("<div>").addClass("fr-stroke fr-stroke-bottom fr-stroke-horizontal").append($("<div>").addClass("fr-stroke-color")))
.add($("<div>").addClass("fr-stroke fr-stroke-left fr-stroke-vertical").append($("<div>").addClass("fr-stroke-color")))
.add($("<div>").addClass("fr-stroke fr-stroke-right fr-stroke-vertical").append($("<div>").addClass("fr-stroke-color")))),
$.extend(Oc.prototype, {
initialize: function (i, e, t) {
(this.view = i), (this.dimensions = { width: 0, height: 0 }), (this.uid = Lc++), (this._position = e), (this._total = t), (this._fullClick = !1), (this._visible = !1), (this.queues = {}), (this.queues.showhide = $({}));
},
create: function () {
if (!this._created) {
Pages.element.append(
(this.element = $("<div>")
.addClass("fr-page")
.append((this.container = $("<div>").addClass("fr-container")))
.css({ opacity: 0 })
.hide())
);
var i = this.view.options.position && 1 < this._total;
if (
(i && this.element.addClass("fr-has-position"),
(this.view.caption || i) &&
(this.element.append(
(this.info = $("<div>")
.addClass("fr-info")
.append($("<div>").addClass("fr-info-background"))
.append(Nc.clone(!0))
.append((this.infoPadder = $("<div>").addClass("fr-info-padder"))))
),
i &&
(this.element.addClass("fr-has-position"),
this.infoPadder.append(
(this.pos = $("<div>")
.addClass("fr-position")
.append(
$("<span>")
.addClass("fr-position-text")
.html(this._position + " / " + this._total)
))
)),
this.view.caption && this.infoPadder.append((this.caption = $("<div>").addClass("fr-caption").html(this.view.caption)))),
this.container.append((this.background = $("<div>").addClass("fr-content-background"))).append((this.content = $("<div>").addClass("fr-content"))),
"image" == this.view.type && (this.content.append((this.image = $("<img>").addClass("fr-content-element").attr({ src: this.view.url }))), this.content.append(Nc.clone(!0))),
i &&
"outside" == this.view.options.ui &&
this.container.append(
(this.positionOutside = $("<div>")
.addClass("fr-position-outside")
.append($("<div>").addClass("fr-position-background"))
.append(
$("<span>")
.addClass("fr-position-text")
.html(this._position + " / " + this._total)
))
),
"inside" == this.view.options.ui)
) {
this.content
.append(
(this.previousInside = $("<div>")
.addClass("fr-side fr-side-previous fr-toggle-ui")
.append($("<div>").addClass("fr-side-button").append($("<div>").addClass("fr-side-button-background")).append($("<div>").addClass("fr-side-button-icon"))))
)
.append(
(this.nextInside = $("<div>")
.addClass("fr-side fr-side-next fr-toggle-ui")
.append($("<div>").addClass("fr-side-button").append($("<div>").addClass("fr-side-button-background")).append($("<div>").addClass("fr-side-button-icon"))))
)
.append((this.closeInside = $("<div>").addClass("fr-close fr-toggle-ui").append($("<div>").addClass("fr-close-background")).append($("<div>").addClass("fr-close-icon")))),
(this.view.caption || (i && this.view.grouped.caption)) &&
(this.content.append(
(this.infoInside = $("<div>")
.addClass("fr-info fr-toggle-ui")
.append($("<div>").addClass("fr-info-background"))
.append(Nc.clone(!0))
.append((this.infoPadderInside = $("<div>").addClass("fr-info-padder"))))
),
i &&
this.infoPadderInside.append(
(this.posInside = $("<div>")
.addClass("fr-position")
.append(
$("<span>")
.addClass("fr-position-text")
.html(this._position + " / " + this._total)
))
),
this.view.caption && this.infoPadderInside.append((this.captionInside = $("<div>").addClass("fr-caption").html(this.view.caption)))),
this.view.caption ||
!i ||
this.view.grouped.caption ||
this.content.append(
(this.positionInside = $("<div>")
.addClass("fr-position-inside fr-toggle-ui")
.append($("<div>").addClass("fr-position-background"))
.append(
$("<span>")
.addClass("fr-position-text")
.html(this._position + " / " + this._total)
))
);
var e = (this.view.options.loop && 1 < this._total) || 1 != this._position,
t = (this.view.options.loop && 1 < this._total) || this._position < this._total;
this.previousInside[(e ? "remove" : "add") + "Class"]("fr-side-disabled"), this.nextInside[(t ? "remove" : "add") + "Class"]("fr-side-disabled");
}
$.each(
["x", "y"],
$.proxy(function (i, e) {
this.view.options.overflow[e] && this.element.addClass("fr-overflow-" + e);
}, this)
),
this.element.addClass("fr-type-" + this.view.type),
Type.isVideo(this.view.type) && this.element.addClass("fr-type-video"),
this._total < 2 && this.element.addClass("fr-no-sides"),
(this._created = !0);
}
},
_getSurroundingPages: function () {
var i;
if (!(i = this.view.options.preload)) return [];
for (var e = [], t = Math.max(1, this._position - i[0]), s = Math.min(this._position + i[1], this._total), n = this._position, o = n; o <= s; o++) (a = Pages.pages[o - 1])._position != n && e.push(a);
for (o = n; t <= o; o--) {
var a;
(a = Pages.pages[o - 1])._position != n && e.push(a);
}
return e;
},
preloadSurroundingImages: function () {
var i = this._getSurroundingPages();
$.each(
i,
$.proxy(function (i, e) {
e.preload();
}, this)
);
},
preload: function () {
this.preloading ||
this.preloaded ||
"image" != this.view.type ||
!this.view.options.preload ||
this.loaded ||
(this.create(),
(this.preloading = !0),
(this.preloadReady = new ImageReady(
this.image[0],
$.proxy(function (i) {
(this.loaded = !0), (Mc[this.view.url] = !0), (this.preloading = !1), (this.preloaded = !0), (this.dimensions = { width: i.img.naturalWidth, height: i.img.naturalHeight });
}, this),
null,
{ method: "naturalWidth" }
)));
},
load: function (e, i) {
if ((this.create(), this.loaded)) e && e();
else
switch (
(this.abort(),
(this.loading = !0),
this.view.options.spinner &&
(this._spinnerDelay = setTimeout(
$.proxy(function () {
Spinner.show();
}, this),
this.view.options.spinnerDelay || 0
)),
this.view.type)
) {
case "image":
if (this.error) return void (e && e());
this.imageReady = new ImageReady(
this.image[0],
$.proxy(function (i) {
this._markAsLoaded(), this.setDimensions({ width: i.img.naturalWidth, height: i.img.naturalHeight }), e && e();
}, this),
$.proxy(function () {
this._markAsLoaded(),
this.image.hide(),
this.content.prepend((this.error = $("<div>").addClass("fr-error fr-content-element").append($("<div>").addClass("fr-error-icon")))),
this.element.addClass("fr-has-error"),
this.setDimensions({ width: this.error.outerWidth(), height: this.error.outerHeight() }),
this.error.css({ width: "100%", height: "100%" }),
e && e();
}, this),
{ method: this.view.options.loadedMethod }
);
break;
case "vimeo":
this.vimeoReady = new VimeoReady(
this.view.url,
$.proxy(function (i) {
this._markAsLoaded(), this.setDimensions({ width: i.dimensions.width, height: i.dimensions.height }), e && e();
}, this)
);
break;
case "youtube":
this._markAsLoaded(), this.setDimensions({ width: this.view.options.width, height: this.view.options.height }), e && e();
}
},
setDimensions: function (i) {
if (((this.dimensions = i), this.view.options.maxWidth || this.view.options.maxHeight)) {
var e = this.view.options,
t = { width: e.maxWidth ? e.maxWidth : this.dimensions.width, height: e.maxHeight ? e.maxHeight : this.dimensions.height };
this.dimensions = Fit.within(t, this.dimensions);
}
},
_markAsLoaded: function () {
this._abortSpinnerDelay(), (this.loading = !1), (this.loaded = !0), (Mc[this.view.url] = !0), Spinner.hide(null, null, this._position);
},
isVideo: function () {
return Type.isVideo(this.view.type);
},
insertVideo: function (i) {
if (!this.playerIframe && this.isVideo()) {
var e = "http" + (window.location && "https:" === window.location.protocol ? "s" : "") + ":",
t = $.extend({}, this.view.options[this.view.type] || {}),
s = $.param(t),
n = { vimeo: e + "//player.vimeo.com/video/{id}?{queryString}", youtube: e + "//www.youtube.com/embed/{id}?{queryString}" }[this.view.type].replace("{id}", this.view._data.id).replace("{queryString}", s);
this.content.prepend(
(this.playerIframe = $("<iframe webkitAllowFullScreen mozallowfullscreen allowFullScreen>")
.addClass("fr-content-element")
.attr({ src: n, height: this._contentDimensions.height, width: this._contentDimensions.width, frameborder: 0 }))
),
i && i();
} else i && i();
},
raise: function () {
var i = Pages.element[0].lastChild;
(i && i === this.element[0]) || Pages.element.append(this.element);
},
show: function (e) {
var i = this.queues.showhide;
i.queue([]),
i.queue(
$.proxy(function (i) {
var e = this.view.options.spinner && !Mc[this.view.url];
Spinner._visible && !e && Spinner.hide(), Pages.stopInactive(), i();
}, this)
),
i.queue(
$.proxy(function (i) {
this.updateUI(), UI.set(this._ui), i();
}, this)
),
i.queue(
$.proxy(function (i) {
Keyboard.enable(this.view.options.keyboard), i();
}, this)
),
i.queue(
$.proxy(function (i) {
Spinner.setSkin(this.view.options.skin),
this.load(
$.proxy(function () {
this.preloadSurroundingImages(), i();
}, this)
);
}, this)
),
i.queue(
$.proxy(function (i) {
this.raise(), Window.setSkin(this.view.options.skin), UI.enable(), this.fitToBox(), Window.adjustToScroll(), i();
}, this)
),
this.isVideo() &&
i.queue(
$.proxy(function (i) {
this.insertVideo(
$.proxy(function () {
i();
})
);
}, this)
),
this.view.options.sync ||
i.queue(
$.proxy(function (i) {
Pages.hideInactive(i);
}, this)
),
i.queue(
$.proxy(function (i) {
var e = 3,
t = this.view.options.effects.content.show;
Window.setShowingType(this.view.type),
Window.visible || ((t = this.view.options.effects.window.show), "function" === $.type(this.view.options.onShow) && this.view.options.onShow.call(Fresco)),
this.view.options.sync &&
(e++,
Pages.hideInactive(function () {
--e < 1 && i();
})),
Window.show(function () {
--e < 1 && i();
}, this.view.options.effects.window.show),
this._show(function () {
--e < 1 && i();
}, t),
UI.adjustPrevNext(
function () {
--e < 1 && i();
},
Window._first ? 0 : t
),
Window._first ? (UI.show(null, 0), (Window._first = !1)) : UI.show(null, 0);
var s = this.view.options.afterPosition;
"function" === $.type(s) && s.call(Fresco, this._position);
}, this)
),
i.queue(
$.proxy(function (i) {
(this._visible = !0), e && e(), i();
}, this)
);
},
_show: function (i, e) {
var t = Window.visible ? ("number" === $.type(e) ? e : this.view.options.effects.content.show) : 0;
this.element
.stop(!0)
.show()
.fadeTo(t || 0, 1, i);
},
hide: function (i, e) {
if (this.element) {
this.removeVideo(), this.abort();
var t = "number" === $.type(e) ? e : this.view.options.effects.content.hide;
this.isVideo() && (t = 0),
this.element.stop(!0).fadeTo(
t,
0,
"frescoEaseInCubic",
$.proxy(function () {
this.element.hide(), (this._visible = !1), Pages.removeTracking(this._position), i && i();
}, this)
);
} else i && i();
},
stop: function () {
this.queues.showhide.queue([]), this.element && this.element.stop(!0), this.abort();
},
removeVideo: function () {
this.playerIframe && ((this.playerIframe[0].src = "//about:blank"), this.playerIframe.remove(), (this.playerIframe = null));
},
remove: function () {
this.stop(),
this.removeVideo(),
this.element && this.element.remove(),
this._track && (Pages.removeTracking(this._position), (this._track = !1)),
this.preloadReady && (this.preloadReady.abort(), (this.preloadReady = null), (this.preloading = null), (this.preloaded = null)),
(this._visible = !1),
(this.removed = !0);
},
abort: function () {
this.imageReady && (this.imageReady.abort(), (this.imageReady = null)), this.vimeoReady && (this.vimeoReady.abort(), (this.vimeoReady = null)), this._abortSpinnerDelay(), (this.loading = !1);
},
_abortSpinnerDelay: function () {
this._spinnerDelay && (clearTimeout(this._spinnerDelay), (this._spinnerDelay = null));
},
_getInfoHeight: function (i) {
var e = this.view.options.position && 1 < this._total;
switch (this._ui) {
case "fullclick":
case "inside":
if (!this.view.caption && !e) return 0;
break;
case "outside":
if (!this.view.caption) return 0;
}
var t = "inside" === this._ui ? this.infoInside : this.info;
"outside" === this._ui && (i = Math.min(i, Window._boxDimensions.width));
var s,
n = t[0].style.width;
return ("inside" !== this._ui && "fullclick" !== this._ui) || (n = "100%"), t.css({ width: i + "px" }), (s = parseFloat(t.outerHeight())), t.css({ width: n }), s;
},
_whileVisible: function (i, e) {
var t = [],
s = Window.element.add(this.element);
e && (s = s.add(e)),
$.each(s, function (i, e) {
$(e).is(":visible") || t.push($(e).show());
});
var n = this.element.hasClass("fr-no-caption");
this.element.removeClass("fr-no-caption");
var o = this.element.hasClass("fr-has-caption");
this.element.addClass("fr-has-caption"),
Window.element.css({ visibility: "hidden" }),
i(),
Window.element.css({ visibility: "visible" }),
n && this.element.addClass("fr-no-caption"),
o || this.element.removeClass("fr-has-caption"),
$.each(t, function (i, e) {
e.hide();
});
},
updateForced: function () {
this.create(),
(this._fullClick = this.view.options.fullClick),
(this._noOverflow = !1),
0 < parseInt(this.element.css("min-width")) && (this._fullClick = !0),
0 < parseInt(this.element.css("min-height")) && (this._noOverflow = !0);
},
updateUI: function () {
this.updateForced();
var i = this._fullClick ? "fullclick" : this.view.options.ui;
this._ui && this.element.removeClass("fr-ui-" + this._ui), this.element.addClass("fr-ui-" + i), (this._ui = i);
},
fitToBox: function () {
if (this.content) {
this.element;
var t = $.extend({}, Window.getBoxDimensions()),
i = $.extend({}, this.dimensions),
e = this.container;
this.updateUI();
var s = { left: parseInt(e.css("padding-left")), top: parseInt(e.css("padding-top")) };
if ("outside" === this._ui && this._positionOutside) {
var n = 0;
this._whileVisible(
$.proxy(function () {
this._positionOutside.is(":visible") && (n = this._positionOutside.outerWidth(!0));
}, this)
),
n > s.left && (s.left = n);
}
(t.width -= 2 * s.left), (t.height -= 2 * s.top);
var o,
a,
h = { width: !0, height: !!this._noOverflow || !this.view.options.overflow.y },
r = Fit.within(t, i, h),
d = $.extend({}, r),
l = (this.content, 0),
u = "inside" === this._ui,
c = u ? this.infoInside : this.info,
p = u ? this.captionInside : this.caption,
f = u ? this.posInside : this.pos,
m = !!p;
switch (this._ui) {
case "outside":
var v = $.extend({}, d);
this.caption &&
((a = this.caption),
this._whileVisible(
$.proxy(function () {
for (var i = 0; i < 2; ) {
l = this._getInfoHeight(d.width);
var e = t.height - d.height;
e < l && (d = Fit.within({ width: d.width, height: Math.max(d.height - (l - e), 0) }, d, h)), i++;
}
(l = this._getInfoHeight(d.width)), ((!this.view.options.overflow.y && l + d.height > t.height) || (c && "none" === c.css("display")) || l >= 0.5 * d.height) && ((m = !1), (l = 0), (d = v));
}, this),
a
)),
c && c.css({ width: d.width + "px" }),
(o = { width: d.width, height: d.height + l });
break;
case "inside":
this.caption &&
((a = p),
this._whileVisible(
$.proxy(function () {
(l = this._getInfoHeight(d.width)) >= 0.45 * d.height && ((m = !1), (l = 0));
}, this),
a
)),
(o = d);
break;
case "fullclick":
var g = [];
p && g.push(p),
this._whileVisible(
$.proxy(function () {
if (((p || f) && c.css({ width: "100%" }), (l = this._getInfoHeight(Window._boxDimensions.width)), p && l > 0.5 * t.height))
if (((m = !1), f)) {
var i = this.caption.is(":visible");
this.caption.hide(), (l = this._getInfoHeight(Window._boxDimensions.width)), i && this.caption.show();
} else l = 0;
(d = Fit.within({ width: t.width, height: Math.max(0, t.height - l) }, d, h)), (o = d);
}, this),
g
),
this.content.css({ "padding-bottom": 0 });
}
p && p[m ? "show" : "hide"](),
this.element[(m ? "remove" : "add") + "Class"]("fr-no-caption"),
this.element[(m ? "add" : "remove") + "Class"]("fr-has-caption"),
this.content.css(d),
this.background.css(o),
this.playerIframe && this.playerIframe.attr(d),
(this.overlap = { y: o.height + ("fullclick" === this._ui ? l : 0) - Window._boxDimensions.height, x: 0 }),
(this._track = !this._noOverflow && this.view.options.overflow.y && 0 < this.overlap.y),
(this._infoHeight = l),
(this._padding = s),
(this._contentDimensions = d),
(this._backgroundDimensions = o),
Pages[(this._track ? "set" : "remove") + "Tracking"](this._position),
this.position();
}
},
position: function () {
if (this.content) {
var i = this._contentDimensions,
e = this._backgroundDimensions,
t = { top: 0.5 * Window._boxDimensions.height - 0.5 * e.height, left: 0.5 * Window._boxDimensions.width - 0.5 * e.width },
s = { top: t.top + i.height, left: t.left },
n = 0,
o = "inside" === this._ui ? this.infoInside : this.info;
switch (this._ui) {
case "fullclick":
(t.top = 0.5 * (Window._boxDimensions.height - this._infoHeight) - 0.5 * e.height), (s = { top: Window._boxDimensions.height - this._infoHeight, left: 0, bottom: "auto" }), (n = this._infoHeight);
break;
case "inside":
s = { top: "auto", left: 0, bottom: 0 };
}
if (0 < this.overlap.y) {
var a = Pages.getXYP();
switch (((t.top = 0 - a.y * this.overlap.y), this._ui)) {
case "outside":
case "fullclick":
s.top = Window._boxDimensions.height - this._infoHeight;
break;
case "inside":
var h = t.top + i.height - Window._boxDimensions.height,
r = -1 * t.top;
if (((s.bottom = h), this.closeInside.css({ top: r }), 1 < this._total)) {
var d = Window.element.is(":visible");
d || Window.element.show();
var l = this.previousInside.attr("style");
this.previousInside.removeAttr("style");
var u = parseInt(this.previousInside.css("margin-top"));
this.previousInside.attr({ style: l }), d || Window.element.hide();
var c = this.previousInside.add(this.nextInside),
p = 0.5 * this.overlap.y;
c.css({ "margin-top": u + (r - p) }), this.positionInside && this.positionInside.css({ bottom: h });
}
}
} else "inside" === this._ui && this.element.find(".fr-info, .fr-side, .fr-close, .fr-position-inside").removeAttr("style");
o && o.css(s), this.container.css({ bottom: n }), this.content.css(t), this.background.css(t);
}
},
}),
Oc),
Lc,
Mc,
Nc;
function Oc() {
return this.initialize.apply(this, _slice.call(arguments));
}
var Pages = {
initialize: function (i) {
(this.element = i), (this.pages = []), (this.uid = 1), (this._tracking = []);
},
load: function (i) {
(this.views = i),
this.removeAll(),
$.each(
i,
$.proxy(function (i, e) {
this.pages.push(new Page(e, i + 1, this.views.length));
}, this)
);
},
show: function (i, e) {
var t = this.pages[i - 1];
(this.page && this.page.uid === t.uid) ||
((this.page = t),
Thumbnails.show(i),
Window.updateBoxDimensions(),
t.show(
$.proxy(function () {
e && e();
}, this)
));
},
getPositionInActivePageGroup: function (t) {
var s = 0;
return (
$.each(this.pages, function (i, e) {
e.view.element && e.view.element === t && (s = i + 1);
}),
s
);
},
getLoadingCount: function () {
var t = 0;
return (
$.each(this.pages, function (i, e) {
e.loading && t++;
}),
t
);
},
removeAll: function () {
$.each(this.pages, function (i, e) {
e.remove();
}),
(this.pages = []);
},
hideInactive: function (t, s) {
var n = [];
$.each(
this.pages,
$.proxy(function (i, e) {
e.uid !== this.page.uid && n.push(e);
}, this)
);
var o = 0 + n.length;
return (
o < 1
? t && t()
: $.each(n, function (i, e) {
e.hide(function () {
t && --o < 1 && t();
}, s);
}),
n.length
);
},
stopInactive: function () {
$.each(
this.pages,
$.proxy(function (i, e) {
e.uid !== this.page.uid && e.stop();
}, this)
);
},
stop: function () {
$.each(this.pages, function (i, e) {
e.stop();
});
},
handleTracking: function (i) {
Browser.IE && Browser.IE < 9
? (this.setXY({ x: i.pageX, y: i.pageY }), this.updatePositions())
: (this._tracking_timer = setTimeout(
$.proxy(function () {
this.setXY({ x: i.pageX, y: i.pageY }), this.updatePositions();
}, this),
30
));
},
clearTrackingTimer: function () {
this._tracking_timer && (clearTimeout(this._tracking_timer), (this._tracking_timer = null));
},
startTracking: function () {
Support.mobileTouch || this._handleTracking || $(document.documentElement).on("mousemove", (this._handleTracking = $.proxy(this.handleTracking, this)));
},
stopTracking: function () {
!Support.mobileTouch && this._handleTracking && ($(document.documentElement).off("mousemove", this._handleTracking), (this._handleTracking = null), this.clearTrackingTimer());
},
setTracking: function (i) {
this.isTracking(i) || (this._tracking.push(this.pages[i - 1]), 1 === this._tracking.length && this.startTracking());
},
clearTracking: function () {
this._tracking = [];
},
removeTracking: function (e) {
(this._tracking = $.grep(this._tracking, function (i) {
return i._position !== e;
})),
this._tracking.length < 1 && this.stopTracking();
},
isTracking: function (t) {
var s = !1;
return (
$.each(this._tracking, function (i, e) {
if (e._position === t) return !(s = !0);
}),
s
);
},
setXY: function (i) {
this._xy = i;
},
getXYP: function () {
var i = Pages.page,
t = $.extend({}, Window._boxDimensions),
e = $.extend({}, this._xy);
(e.y -= $(window).scrollTop()), i && ("outside" === i._ui || "fullclick" === i._ui) && 0 < i._infoHeight && (t.height -= i._infoHeight), (e.y -= Window._boxPosition.top);
var s = { x: 0, y: Math.min(Math.max(e.y / t.height, 0), 1) },
n = { x: "width", y: "height" },
o = {};
return (
$.each(
"y".split(" "),
$.proxy(function (i, e) {
(o[e] = Math.min(Math.max(20 / t[n[e]], 0), 1)), (s[e] *= 1 + 2 * o[e]), (s[e] -= o[e]), (s[e] = Math.min(Math.max(s[e], 0), 1));
}, this)
),
this.setXYP(s),
this._xyp
);
},
setXYP: function (i) {
this._xyp = i;
},
updatePositions: function () {
this._tracking.length < 1 ||
$.each(this._tracking, function (i, e) {
e.position();
});
},
};
function View() {
this.initialize.apply(this, _slice.call(arguments));
}
$.extend(View.prototype, {
initialize: function (object) {
var options = arguments[1] || {},
data = {};
if ("string" === $.type(object)) object = { url: object };
else if (object && 1 === object.nodeType) {
var element = $(object);
object = {
element: element[0],
url: element.attr("href"),
caption: element.attr("data-fresco-caption"),
group: element.attr("data-fresco-group"),
extension: element.attr("data-fresco-extension"),
type: element.attr("data-fresco-type"),
options: (element.attr("data-fresco-options") && eval("({" + element.attr("data-fresco-options") + "})")) || {},
};
}
return (
object && (object.extension || (object.extension = detectExtension(object.url)), object.type || ((data = getURIData(object.url)), (object._data = data), (object.type = data.type))),
object._data || (object._data = getURIData(object.url)),
object && object.options ? (object.options = $.extend(!0, $.extend({}, options), $.extend({}, object.options))) : (object.options = $.extend({}, options)),
(object.options = Options.create(object.options, object.type, object._data)),
$.extend(this, object),
this
);
},
});
var Spinner = {
supported: Support.css.transform && Support.css.animation,
initialize: function (i) {
this.element = $("<div>").addClass("fr-spinner").hide();
for (var e = 1; e <= 12; e++) this.element.append($("<div>").addClass("fr-spin-" + e));
this.element.on(
"click",
$.proxy(function () {
Window.hide();
}, this)
),
this.element.on("fresco:mousewheel", function (i) {
i.preventDefault();
});
},
setSkin: function (i) {
this.supported && (this._skin && this.element.removeClass("fr-spinner-skin-" + this._skin), this.updateDimensions(), this.element.addClass("fr-spinner-skin-" + i), (this._skin = i));
},
updateDimensions: function () {
var i = this._attached;
i || this.attach(), (this._dimensions = { width: this.element.outerWidth(), height: this.element.outerHeight() }), i || this.detach();
},
attach: function () {
this._attached || ($(document.body).append(this.element), (this._attached = !0));
},
detach: function () {
this._attached && (this.element.detach(), (this._attached = !1));
},
show: function (i, e) {
(this._visible = !0), this.attach(), this.center();
var t = (Pages.page && Pages.page.view.options.effects.spinner.show) || 0,
s = ("number" === $.type(e) ? e : t) || 0;
this.element.stop(!0).fadeTo(s, 1, i);
},
hide: function (i, e, t) {
this._visible = !1;
var s = (Pages.page && Pages.page.view.options.effects.spinner.hide) || 0,
n = ("number" === $.type(e) ? e : s) || 0;
this.element.stop(!0).fadeOut(
n || 0,
$.proxy(function () {
this.detach(), i && i();
}, this)
);
},
center: function () {
if (this.supported) {
this._dimensions || this.updateDimensions();
var i = Pages.page,
e = 0;
i &&
"fullclick" === i._ui &&
i._whileVisible(function () {
e = i._getInfoHeight(Window._boxDimensions.width);
}),
this.element.css({
top: Window._boxPosition.top + 0.5 * Window._boxDimensions.height - 0.5 * this._dimensions.height - 0.5 * e,
left: Window._boxPosition.left + 0.5 * Window._boxDimensions.width - 0.5 * this._dimensions.width,
});
}
},
},
_Fresco = {
_disabled: !1,
_fallback: !0,
initialize: function () {
Window.initialize(), this._disabled || this.startDelegating();
},
startDelegating: function () {
this._delegateHandler ||
$(document.documentElement)
.on("click", ".fresco[href]", (this._delegateHandler = $.proxy(this.delegate, this)))
.on("click", (this._setClickXYHandler = $.proxy(this.setClickXY, this)));
},
stopDelegating: function () {
this._delegateHandler && ($(document.documentElement).off("click", ".fresco[href]", this._delegateHandler).off("click", this._setClickXYHandler), (this._setClickXYHandler = null), (this._delegateHandler = null));
},
setClickXY: function (i) {
Pages.setXY({ x: i.pageX, y: i.pageY });
},
delegate: function (i) {
if (!this._disabled) {
i.stopPropagation(), i.preventDefault();
var e = i.currentTarget;
this.setClickXY(i), _Fresco.show(e);
}
},
show: function (object) {
if (this._disabled) this.showFallback.apply(_Fresco, _slice.call(arguments));
else {
var options = arguments[1] || {},
position = arguments[2];
arguments[1] && "number" === $.type(arguments[1]) && ((position = arguments[1]), (options = {}));
var views = [],
object_type,
isElement = _.isElement(object);
switch ((object_type = $.type(object))) {
case "string":
case "object":
var view = new View(object, options),
_dgo = "data-fresco-group-options",
groupOptions = {};
if (view.group) {
if (isElement) {
var elements = $('.fresco[data-fresco-group="' + $(object).attr("data-fresco-group") + '"]');
elements.filter("[" + _dgo + "]").each(function (i, element) {
$.extend(groupOptions, eval("({" + ($(element).attr(_dgo) || "") + "})"));
}),
elements.each(function (i, e) {
position || e !== object || (position = i + 1), views.push(new View(e, $.extend({}, groupOptions, options)));
});
}
} else isElement && $(object).is("[" + _dgo + "]") && ($.extend(groupOptions, eval("({" + ($(object).attr(_dgo) || "") + "})")), (view = new View(object, $.extend({}, groupOptions, options)))), views.push(view);
break;
case "array":
$.each(object, function (i, e) {
var t = new View(e, options);
views.push(t);
});
}
var groupExtend = { grouped: { caption: !1 } },
firstUI = views[0].options.ui,
positionInAPG;
$.each(views, function (i, e) {
e.caption && (groupExtend.grouped.caption = !0), 0 < i && e.options.ui !== firstUI && (e.options.ui = firstUI);
}),
$.each(views, function (i, e) {
e = $.extend(e, groupExtend);
}),
(!position || position < 1) && (position = 1),
position > views.length && (position = views.length),
isElement && (positionInAPG = Pages.getPositionInActivePageGroup(object)) ? Window.setPosition(positionInAPG) : Window.load(views, position);
}
},
showFallback: function (i) {
if (this._fallback) {
var e = (function i(e) {
var t = $.type(e);
return "string" === t ? e : "array" === t && e[0] ? i(e[0]) : _.isElement(e) && $(e).attr("href") ? $(e).attr("href") : !!e.url && e.url;
})(i);
e && (window.location.href = e);
}
},
};
$.extend(Fresco, {
show: function (i) {
return _Fresco.show.apply(_Fresco, _slice.call(arguments)), this;
},
hide: function () {
return Window.hide(), this;
},
disable: function () {
return _Fresco.stopDelegating(), (_Fresco._disabled = !0), this;
},
enable: function () {
return (_Fresco._disabled = !1), _Fresco.startDelegating(), this;
},
fallback: function (i) {
return (_Fresco._fallback = i), this;
},
setDefaultSkin: function (i) {
return (Options.defaults.skin = i), this;
},
}),
((Browser.IE && Browser.IE < 7) || ("number" === $.type(Browser.Android) && Browser.Android < 3) || (Browser.MobileSafari && "number" === $.type(Browser.WebKit) && Browser.WebKit < 533.18)) && (_Fresco.show = _Fresco.showFallback);
var Thumbnails = {
initialize: function (i) {
(this.element = i), (this._thumbnails = []), (this._orientation = "vertical"), (this._vars = { thumbnail: {}, thumbnailFrame: {}, thumbnails: {} }), this.build(), this.startObserving();
},
build: function () {
this.element.append(
(this.wrapper = $("<div>")
.addClass("fr-thumbnails-wrapper")
.append(
(this._slider = $("<div>")
.addClass("fr-thumbnails-slider")
.append(
(this._previous = $("<div>")
.addClass("fr-thumbnails-side fr-thumbnails-side-previous")
.append(
(this._previous_button = $("<div>")
.addClass("fr-thumbnails-side-button")
.append($("<div>").addClass("fr-thumbnails-side-button-background"))
.append($("<div>").addClass("fr-thumbnails-side-button-icon")))
))
)
.append(
(this._thumbs = $("<div>")
.addClass("fr-thumbnails-thumbs")
.append((this._slide = $("<div>").addClass("fr-thumbnails-slide"))))
)
.append(
(this._next = $("<div>")
.addClass("fr-thumbnails-side fr-thumbnails-side-next")
.append(
(this._next_button = $("<div>").addClass("fr-thumbnails-side-button").append($("<div>").addClass("fr-thumbnails-side-button-background")).append($("<div>").addClass("fr-thumbnails-side-button-icon")))
))
))
))
);
},
startObserving: function () {
this._slider.delegate(
".fr-thumbnail",
"click",
$.proxy(function (i) {
i.stopPropagation();
var e = $(i.target).closest(".fr-thumbnail")[0],
t = e && $(e).data("fr-position");
t && (this.setActive(t), Window.setPosition(t));
}, this)
),
this._slider.bind("click", function (i) {
i.stopPropagation();
}),
this._previous.bind("click", $.proxy(this.previousPage, this)),
this._next.bind("click", $.proxy(this.nextPage, this));
},
load: function (i) {
this.clear();
var t = "horizontal",
s = !1;
$.each(
i,
$.proxy(function (i, e) {
"vertical" === e.options.thumbnails && (t = "vertical"), e.options.thumbnails || (s = !0);
}, this)
),
this.setOrientation(t),
(this._disabledGroup = s),
$.each(
i,
$.proxy(function (i, e) {
this._thumbnails.push(new Thumbnail(e, i + 1));
}, this)
),
this.fitToViewport();
},
clear: function () {
$.each(this._thumbnails, function (i, e) {
e.remove();
}),
(this._thumbnails = []),
(this._position = -1),
(this._page = -1);
},
setOrientation: function (i) {
this._orientation && Window.element.removeClass("fr-thumbnails-" + this._orientation), Window.element.addClass("fr-thumbnails-" + i), (this._orientation = i);
},
disable: function () {
Window.element.removeClass("fr-thumbnails-enabled").addClass("fr-thumbnails-disabled"), (this._disabled = !0);
},
enable: function () {
Window.element.removeClass("fr-thumbnails-disabled").addClass("fr-thumbnails-enabled"), (this._disabled = !1);
},
enabled: function () {
return !this._disabled;
},
disabled: function () {
return this._disabled;
},
updateVars: function () {
var i = Window.element,
e = this._vars,
t = "horizontal" === this._orientation,
s = t ? "top" : "left",
n = t ? "left" : "top",
o = t ? "bottom" : "left",
a = t ? "top" : "right",
h = t ? "width" : "height",
r = t ? "height" : "width",
d = { left: "right", right: "left", top: "bottom", bottom: "top" };
this.element.removeClass("fr-thumbnails-measured");
var l = i.is(":visible");
if ((l || i.show(), this.disabled() && this.enable(), !this.element.is(":visible") || this._thumbnails.length < 2 || this._disabledGroup))
return this.disable(), $.extend(this._vars.thumbnails, { width: 0, height: 0 }), l || i.hide(), void this.element.addClass("fr-thumbnails-measured");
this.enable();
var u = this._previous,
c = this._next,
p = Bounds.viewport(),
f = this.element["inner" + _.String.capitalize(r)](),
m = parseInt(this._thumbs.css("padding-" + s)) || 0,
//v = Math.max(f - 2 * m, 0),
v = Math.max(140),
g = parseInt(this._thumbs.css("padding-" + n)) || 0,
w = (parseInt(this.element.css("margin-" + o)) || 0) + (parseInt(this.element.css("margin-" + a)) || 0);
$.extend(e.thumbnails, { height: f + w, width: p[t ? "width" : "height"], paddingTop: m }),
//$.extend(e.thumbnail, { height: v, width: v }),
//$.extend(e.thumbnailFrame, { width: v + 2 * g, height: f }),
$.extend(e.thumbnail, { height: 160, width: 120 }),
$.extend(e.thumbnailFrame, { width: 200 + 2 * g, height: 160 }),
(e.sides = {
previous: { width: c["inner" + _.String.capitalize(h)](), marginLeft: parseInt(u.css("margin-" + n)) || 0, marginRight: parseInt(u.css("margin-" + d[n])) || 0 },
next: { width: c["inner" + _.String.capitalize(h)](), marginLeft: parseInt(c.css("margin-" + n)) || 0, marginRight: parseInt(c.css("margin-" + d[n])) || 0 },
});
var b = p[h],
y = e.thumbnailFrame.width,
x = this._thumbnails.length;
(e.thumbnails.width = b), (e.sides.enabled = 1 < (x * y) / b);
var k = b,
C = e.sides,
S = C.previous,
W = C.next,
M = S.marginLeft + S.width + S.marginRight + W.marginLeft + W.width + W.marginRight;
e.sides.enabled && (k -= M);
var T = x * y;
T < (k = Math.floor(k / y) * y) && (k = T);
var I = k + (e.sides.enabled ? M : 0);
(e.ipp = Math.round(k / y)),
(this._mode = "page"),
e.ipp <= 1 && ((I = k = b), (e.sides.enabled = !1), (this._mode = "center")),
(e.pages = Math.ceil((x * y) / k)),
(e.wrapper = { width: I + 1, height: f }),
(e.thumbs = { width: k, height: f }),
(e.slide = { width: x * y + 1, height: f }),
l || i.hide(),
this.element.addClass("fr-thumbnails-measured");
},
hide: function () {
this.disable(), this.thumbnails.hide(), (this._visible = !1);
},
getDimensions: function () {
var i = "horizontal" === this._orientation;
return { width: i ? this._vars.thumbnails.width : this._vars.thumbnails.height, height: i ? this._vars.thumbnails.height : this._vars.thumbnails.width };
},
fitToViewport: function () {
if ((this.updateVars(), !this.disabled())) {
var i = $.extend({}, this._vars),
e = "horizontal" === this._orientation;
$.each(this._thumbnails, function (i, e) {
e.resize();
}),
this._previous[i.sides.enabled ? "show" : "hide"](),
this._next[i.sides.enabled ? "show" : "hide"](),
this._thumbs.css({ width: i.thumbs[e ? "width" : "height"], height: i.thumbs[e ? "height" : "width"] }),
this._slide.css({ width: i.slide[e ? "width" : "height"], height: i.slide[e ? "height" : "width"] });
var t = { width: i.wrapper[e ? "width" : "height"], height: i.wrapper[e ? "height" : "width"] };
(t["margin-" + (e ? "left" : "top")] = Math.round(-0.5 * i.wrapper.width) + "px"), (t["margin-" + (e ? "top" : "left")] = 0), this.wrapper.css(t), this._position && this.moveTo(this._position, !0);
}
},
moveToPage: function (i) {
if (!(i < 1 || i > this._vars.pages || i === this._page)) {
var e = this._vars.ipp * (i - 1) + 1;
this.moveTo(e);
}
},
previousPage: function () {
this.moveToPage(this._page - 1);
},
nextPage: function () {
this.moveToPage(this._page + 1);
},
show: function (i) {
var e = this._position < 0;
i < 1 && (i = 1);
var t = this._thumbnails.length;
t < i && (i = t), (this._position = i), this.setActive(i), ("page" === this._mode && this._page === Math.ceil(i / this._vars.ipp)) || this.moveTo(i, e);
},
moveTo: function (i, e) {
if ((this.updateVars(), !this.disabled())) {
var t,
s,
n = "horizontal" === this._orientation,
o = 0.5 * Bounds.viewport()[n ? "width" : "height"],
a = this._vars.thumbnailFrame.width;
if ("page" === this._mode) {
(s = Math.ceil(i / this._vars.ipp)), (this._page = s), (t = a * (this._page - 1) * this._vars.ipp * -1);
var h = "fr-thumbnails-side-button-disabled";
this._previous_button[(s < 2 ? "add" : "remove") + "Class"](h), this._next_button[(s >= this._vars.pages ? "add" : "remove") + "Class"](h);
} else t = o + -1 * (a * (i - 1) + 0.5 * a);
s = Pages.page;
var r = {},
d = {};
(r[n ? "top" : "left"] = 0),
(d[n ? "left" : "top"] = t + "px"),
this._slide
.stop(!0)
.css(r)
.animate(
d,
e ? 0 : (s && s.view.options.effects.thumbnails.slide) || 0,
$.proxy(function () {
this.loadCurrentPage();
}, this)
);
}
},
loadCurrentPage: function () {
var i, e;
if (this._position && this._vars.thumbnailFrame.width && !(this._thumbnails.length < 1)) {
if ("page" === this._mode) {
if (this._page < 1) return;
(i = (this._page - 1) * this._vars.ipp + 1), (e = Math.min(i - 1 + this._vars.ipp, this._thumbnails.length));
} else {
var t = Math.ceil(this._vars.thumbnails.width / this._vars.thumbnailFrame.width);
(i = Math.max(Math.floor(Math.max(this._position - 0.5 * t, 0)), 1)), (e = Math.ceil(Math.min(this._position + 0.5 * t))), this._thumbnails.length < e && (e = this._thumbnails.length);
}
for (var s = i; s <= e; s++) this._thumbnails[s - 1].load();
}
},
setActive: function (i) {
this._slide.find(".fr-thumbnail-active").removeClass("fr-thumbnail-active");
var e = i && this._thumbnails[i - 1];
e && e.activate();
},
refresh: function () {
this._position && this.setPosition(this._position);
},
};
function Thumbnail() {
this.initialize.apply(this, _slice.call(arguments));
}
$.extend(Thumbnail.prototype, {
initialize: function (i, e) {
(this.view = i), (this._position = e), this.preBuild();
},
preBuild: function () {
this.thumbnail = $("<div>").addClass("fr-thumbnail").data("fr-position", this._position);
},
build: function () {
if (!this.thumbnailFrame) {
var i = this.view.options;
Thumbnails._slide.append(
(this.thumbnailFrame = $("<div>")
.addClass("fr-thumbnail-frame")
.append(this.thumbnail.append((this.thumbnailWrapper = $("<div>").addClass("fr-thumbnail-wrapper")))))
),
"image" === this.view.type && this.thumbnail.addClass("fr-load-thumbnail").data("thumbnail", { view: this.view, src: i.thumbnail || this.view.url });
var e = i.thumbnail && i.thumbnail.icon;
e && this.thumbnail.append($("<div>").addClass("fr-thumbnail-icon fr-thumbnail-icon-" + e)),
this.thumbnail.append(
$("<div>")
.addClass("fr-thumbnail-overlay")
.append($("<div>").addClass("fr-thumbnail-overlay-background"))
.append(
(this.loading = $("<div>")
.addClass("fr-thumbnail-loading")
.append($("<div>").addClass("fr-thumbnail-loading-background"))
.append((this.spinner = $("<div>").addClass("fr-thumbnail-spinner").hide().append($("<div>").addClass("fr-thumbnail-spinner-spin")))))
)
.append($("<div>").addClass("fr-thumbnail-overlay-border"))
),
this.thumbnail.append($("<div>").addClass("fr-thumbnail-state")),
this.resize();
}
},
remove: function () {
this.thumbnailFrame && (this.thumbnailFrame.remove(), (this.thumbnailFrame = null), (this.image = null)),
this.ready && (this.ready.abort(), (this.ready = null)),
this.vimeoThumbnail && (this.vimeoThumbnail.abort(), (this.vimeoThumbnail = null)),
(this._loading = !1),
(this._removed = !0),
(this.view = null),
this._clearDelay();
},
load: function () {
if (!(this._loaded || this._loading || this._removed)) {
this.thumbnailWrapper || this.build(), (this._loading = !0);
var i = this.view.options.thumbnail,
e = i && "boolean" === $.type(i) ? this.view.url : i || this.view.url;
if ((this._url = e))
if ("vimeo" === this.view.type)
if (e === i) (this._url = e), this._load(this._url);
else
switch (this.view.type) {
case "vimeo":
this.vimeoThumbnail = new VimeoThumbnail(
this.view.url,
$.proxy(function (i) {
(this._url = i), this._load(i);
}, this),
$.proxy(function () {
this._error();
}, this)
);
}
else this._load(this._url);
}
},
activate: function () {
this.thumbnail.addClass("fr-thumbnail-active");
},
_load: function (i) {
this.thumbnailWrapper.prepend((this.image = $("<img>").addClass("fr-thumbnail-image").attr({ src: i }).css({ opacity: 1e-4 }))),
this.fadeInSpinner(),
(this.ready = new ImageReady(
this.image[0],
$.proxy(function (i) {
var e = i.img;
this.thumbnailFrame && this._loading && ((this._loaded = !0), (this._loading = !1), (this._dimensions = { width: e.naturalWidth, height: e.naturalHeight }), this.resize(), this.show());
}, this),
$.proxy(function () {
this._error();
}, this),
{ method: this.view.options.loadedMethod }
));
},
_error: function () {
(this._loaded = !0), (this._loading = !1), this.thumbnail.addClass("fr-thumbnail-error"), this.image && this.image.hide(), this.thumbnailWrapper.append($("<div>").addClass("fr-thumbnail-image")), this.show();
},
fadeInSpinner: function () {
if (Spinner.supported && this.view.options.spinner) {
this._clearDelay();
var i = this.view.options.effects.thumbnail;
this._delay = setTimeout(
$.proxy(function () {
this.spinner.stop(!0).fadeTo(i.show || 0, 1);
}, this),
this.view.options.spinnerDelay || 0
);
}
},
show: function () {
this._clearDelay();
var i = this.view.options.effects.thumbnail;
this.loading.stop(!0).delay(i.delay).fadeTo(i.show, 0);
},
_clearDelay: function () {
this._delay && (clearTimeout(this._delay), (this._delay = null));
},
resize: function () {
if (this.thumbnailFrame) {
var i = "horizontal" === Thumbnails._orientation;
if (
(this.thumbnailFrame.css({ width: Thumbnails._vars.thumbnailFrame[i ? "width" : "height"], height: Thumbnails._vars.thumbnailFrame[i ? "height" : "width"] }),
this.thumbnailFrame.css({ top: i ? 0 : Thumbnails._vars.thumbnailFrame.width * (this._position - 1), left: i ? Thumbnails._vars.thumbnailFrame.width * (this._position - 1) : 0 }),
this.thumbnailWrapper)
) {
var e = Thumbnails._vars.thumbnail;
// if ((this.thumbnail.css({ width: e.width, height: e.height, "margin-top": Math.round(-0.5 * e.height), "margin-left": Math.round(-0.5 * e.width), "margin-bottom": 0, "margin-right": 0 }), this._dimensions)) {
if ((this.thumbnail.css({ width: e.width, height: 160, "margin-top": Math.round(-0.5 * e.height), "margin-left": Math.round(-0.5 * e.width), "margin-bottom": 0, "margin-right": 0 }), this._dimensions)) {
var t,
s = { width: e.width, height: e.height },
n = Math.max(s.width, s.height),
o = $.extend({}, this._dimensions);
if (o.width > s.width && o.height > s.height) {
var a = 1,
h = 1;
(t = Fit.within(s, o)).width < s.width && (a = s.width / t.width), t.height < s.height && (h = s.height / t.height);
var r = Math.max(a, h);
1 < r && ((t.width *= r), (t.height *= r)),
$.each("width height".split(" "), function (i, e) {
t[e] = Math.round(t[e]);
});
} else t = Fit.within(this._dimensions, o.width < s.width || o.height < s.height ? { width: n, height: n } : s);
var d = Math.round(0.5 * s.width - 0.5 * t.width),
l = Math.round(0.5 * s.height - 0.5 * t.height);
this.image.removeAttr("style").css($.extend({}, t, { top: l, left: d }));
}
}
}
},
});
var UI = {
_modes: ["fullclick", "outside", "inside"],
_ui: !1,
_validClickTargetSelector: [".fr-content-element", ".fr-content", ".fr-content > .fr-stroke", ".fr-content > .fr-stroke .fr-stroke-color"].join(", "),
initialize: function (i) {
$.each(
this._modes,
$.proxy(function (i, e) {
this[e].initialize();
}, this)
),
Window.element.addClass("fr-ui-inside-hidden fr-ui-fullclick-hidden");
},
set: function (i) {
this._ui && (Window.element.removeClass("fr-window-ui-" + this._ui), Overlay.element.removeClass("fr-overlay-ui-" + this._ui)),
Window.element.addClass("fr-window-ui-" + i),
Overlay.element.addClass("fr-overlay-ui-" + i),
this._enabled && this._ui && this._ui !== i && (this[this._ui].disable(), this[i].enable(), UI[i].show()),
(this._ui = i);
},
_onWindowResize: function () {
Support.mobileTouch && this.show();
},
enable: function () {
$.each(
this._modes,
$.proxy(function (i, e) {
UI[e][e === this._ui ? "enable" : "disable"]();
}, this)
),
(this._enabled = !0);
},
disable: function () {
$.each(
this._modes,
$.proxy(function (i, e) {
UI[e].disable();
}, this)
),
(this._enabled = !1);
},
adjustPrevNext: function (i, e) {
UI[this._ui].adjustPrevNext(i, e);
},
show: function (i, e) {
UI[this._ui].show(i, e);
},
hide: function (i, e) {
UI[this._ui].hide(i, e);
},
reset: function () {
$.each(
this._modes,
$.proxy(function (i, e) {
UI[e].reset();
}, this)
);
},
update: function () {
var i = Pages.page;
i && this.set(i._ui);
},
};
return (
(UI.fullclick = {
initialize: function () {
this.build(), (this._scrollLeft = -1);
},
build: function () {
Window._box
.append(
(this._previous = $("<div>")
.addClass("fr-side fr-side-previous fr-side-previous-fullclick fr-toggle-ui")
.append($("<div>").addClass("fr-side-button").append($("<div>").addClass("fr-side-button-background")).append($("<div>").addClass("fr-side-button-icon"))))
)
.append(
(this._next = $("<div>")
.addClass("fr-side fr-side-next fr-side-next-fullclick fr-toggle-ui")
.append($("<div>").addClass("fr-side-button").append($("<div>").addClass("fr-side-button-background")).append($("<div>").addClass("fr-side-button-icon"))))
)
.append((this._close = $("<div>").addClass("fr-close fr-close-fullclick").append($("<div>").addClass("fr-close-background")).append($("<div>").addClass("fr-close-icon")))),
Browser.IE && Browser.IE <= 7 && this._previous.add(this._next).add(this._close).hide(),
this._close.on(
"click",
$.proxy(function (i) {
i.preventDefault(), Window.hide();
}, this)
),
this._previous.on(
"click",
$.proxy(function (i) {
Window.previous(), this._onMouseMove(i);
}, this)
),
this._next.on(
"click",
$.proxy(function (i) {
Window.next(), this._onMouseMove(i);
}, this)
);
},
enable: function () {
this.bind();
},
disable: function () {
this.unbind();
},
reset: function () {
Window.timers.clear("ui-fullclick"), (this._x = -1), (this._y = -1), (this._scrollLeft = -1), this.resetPrevNext(), this._onMouseLeave();
},
resetPrevNext: function () {
this._previous.add(this._next).stop(!0).removeAttr("style");
},
bind: function () {
this._onMouseUpHandler ||
(this.unbind(),
Window._pages.on("mouseup", ".fr-container", (this._onMouseUpHandler = $.proxy(this._onMouseUp, this))),
Support.mobileTouch ||
(Window.element.on("mouseenter", (this._showHandler = $.proxy(this.show, this))).on("mouseleave", (this._hideHandler = $.proxy(this.hide, this))),
Window.element.on(
"mousemove",
(this._mousemoveHandler = $.proxy(function (i) {
var e = i.pageX,
t = i.pageY;
this._hoveringSideButton || (t === this._y && e === this._x) || ((this._x = e), (this._y = t), this.show(), this.startTimer());
}, this))
),
Window._pages
.on("mousemove", ".fr-container", (this._onMouseMoveHandler = $.proxy(this._onMouseMove, this)))
.on("mouseleave", ".fr-container", (this._onMouseLeaveHandler = $.proxy(this._onMouseLeave, this)))
.on("mouseenter", ".fr-container", (this._onMouseEnterHandler = $.proxy(this._onMouseEnter, this))),
Window.element
.on("mouseenter", ".fr-side", (this._onSideMouseEnterHandler = $.proxy(this._onSideMouseEnter, this)))
.on("mouseleave", ".fr-side", (this._onSideMouseLeaveHandler = $.proxy(this._onSideMouseLeave, this))),
$(window).on("scroll", (this._onScrollHandler = $.proxy(this._onScroll, this)))));
},
unbind: function () {
this._onMouseUpHandler &&
(Window._pages.off("mouseup", ".fr-container", this._onMouseUpHandler),
(this._onMouseUpHandler = null),
this._showHandler &&
(Window.element.off("mouseenter", this._showHandler).off("mouseleave", this._hideHandler).off("mousemove", this._mousemoveHandler),
Window._pages.off("mousemove", ".fr-container", this._onMouseMoveHandler).off("mouseleave", ".fr-container", this._onMouseLeaveHandler).off("mouseenter", ".fr-container", this._onMouseEnterHandler),
Window.element.off("mouseenter", ".fr-side", this._onSideMouseEnterHandler).off("mouseleave", ".fr-side", this._onSideMouseLeaveHandler),
$(window).off("scroll", this._onScrollHandler),
(this._showHandler = null)));
},
adjustPrevNext: function (i, e) {
var t = Pages.page;
if (t) {
var s = Window.element.is(":visible");
s || Window.element.show();
var n = this._previous.attr("style");
this._previous.removeAttr("style");
var o = parseInt(this._previous.css("margin-top"));
this._previous.attr({ style: n }), s || Window.element.hide();
var a = t._infoHeight || 0,
h = this._previous.add(this._next),
r = { "margin-top": o - 0.5 * a },
d = "number" === $.type(e) ? e : (Pages.page && Pages.page.view.options.effects.content.show) || 0;
this.opening && (d = 0),
h.stop(!0).animate(r, d, i),
this._previous[(Window.mayPrevious() ? "remove" : "add") + "Class"]("fr-side-disabled"),
this._next[(Window.mayNext() ? "remove" : "add") + "Class"]("fr-side-disabled"),
h[(t._total < 2 ? "add" : "remove") + "Class"]("fr-side-hidden"),
i && i();
} else i && i();
},
_onScroll: function () {
this._scrollLeft = $(window).scrollLeft();
},
_onMouseMove: function (i) {
if (!Support.mobileTouch) {
var e = this._getEventSide(i),
t = _.String.capitalize(e),
s = !!e && Window["may" + t]();
if (e !== this._hoveringSide || s !== this._mayClickHoveringSide)
switch (((this._hoveringSide = e), (this._mayClickHoveringSide = s), Window._box[(s ? "add" : "remove") + "Class"]("fr-hovering-clickable"), e)) {
case "previous":
Window._box.addClass("fr-hovering-previous").removeClass("fr-hovering-next");
break;
case "next":
Window._box.addClass("fr-hovering-next").removeClass("fr-hovering-previous");
}
}
},
_onMouseLeave: function (i) {
Window._box.removeClass("fr-hovering-clickable fr-hovering-previous fr-hovering-next"), (this._hoveringSide = !1);
},
_onMouseUp: function (i) {
if (!(1 < i.which))
if (1 !== Pages.pages.length) {
var e = this._getEventSide(i);
Window[e](), this._onMouseMove(i);
} else Window.hide();
},
_onMouseEnter: function (i) {
this._onMouseMove(i);
},
_getEventSide: function (i) {
-1 < this._scrollLeft ? this._scrollLeft : (this._scrollLeft = $(window).scrollLeft());
return i.pageX - Window._boxPosition.left - this._scrollLeft < 0.5 * Window._boxDimensions.width ? "previous" : "next";
},
_onSideMouseEnter: function (i) {
(this._hoveringSideButton = !0), (this._hoveringSide = this._getEventSide(i)), (this._mayClickHoveringSide = Window["may" + _.String.capitalize(this._hoveringSide)]()), this.clearTimer();
},
_onSideMouseLeave: function (i) {
(this._hoveringSideButton = !1), (this._hoveringSide = !1), (this._mayClickHoveringSide = !1), this.startTimer();
},
show: function (i) {
if (this._visible) return this.startTimer(), void ("function" === $.type(i) && i());
(this._visible = !0),
this.startTimer(),
Window.element.addClass("fr-visible-fullclick-ui").removeClass("fr-hidden-fullclick-ui"),
Browser.IE && Browser.IE <= 7 && this._previous.add(this._next).add(this._close).show(),
"function" === $.type(i) && i();
},
hide: function (i) {
var e = Pages.page && Pages.page.view.type;
this._visible && (!e || ("youtube" !== e && "vimeo" !== e)) && ((this._visible = !1), Window.element.removeClass("fr-visible-fullclick-ui").addClass("fr-hidden-fullclick-ui")), "function" === $.type(i) && i();
},
clearTimer: function () {
Support.mobileTouch || Window.timers.clear("ui-fullclick");
},
startTimer: function () {
Support.mobileTouch ||
(this.clearTimer(),
Window.timers.set(
"ui-fullclick",
$.proxy(function () {
this.hide();
}, this),
Window.view ? Window.view.options.uiDelay : 0
));
},
}),
(UI.inside = {
initialize: function () {},
enable: function () {
this.bind();
},
disable: function () {
this.unbind();
},
bind: function () {
this._onMouseUpHandler ||
(this.unbind(),
Window._pages.on("mouseup", ".fr-content", (this._onMouseUpHandler = $.proxy(this._onMouseUp, this))),
Window._pages
.on(
"click",
".fr-content .fr-close",
$.proxy(function (i) {
i.preventDefault(), Window.hide();
}, this)
)
.on(
"click",
".fr-content .fr-side-previous",
$.proxy(function (i) {
Window.previous(), this._onMouseMove(i);
}, this)
)
.on(
"click",
".fr-content .fr-side-next",
$.proxy(function (i) {
Window.next(), this._onMouseMove(i);
}, this)
),
Window.element.on("click", ".fr-container, .fr-thumbnails, .fr-thumbnails-wrapper", (this._delegateOverlayCloseHandler = $.proxy(this._delegateOverlayClose, this))),
Support.mobileTouch ||
(Window.element.on("mouseenter", ".fr-content", (this._showHandler = $.proxy(this.show, this))).on("mouseleave", ".fr-content", (this._hideHandler = $.proxy(this.hide, this))),
Window.element.on(
"mousemove",
".fr-content",
(this._mousemoveHandler = $.proxy(function (i) {
var e = i.pageX,
t = i.pageY;
this._hoveringSideButton || (t === this._y && e === this._x) || ((this._x = e), (this._y = t), this.show(), this.startTimer());
}, this))
),
Window._pages.on(
"mousemove",
".fr-info, .fr-close",
$.proxy(function (i) {
i.stopPropagation(), this._onMouseLeave(i);
}, this)
),
Window._pages.on(
"mousemove",
".fr-info",
$.proxy(function () {
this.clearTimer();
}, this)
),
Window._pages
.on("mousemove", ".fr-content", (this._onMouseMoveHandler = $.proxy(this._onMouseMove, this)))
.on("mouseleave", ".fr-content", (this._onMouseLeaveHandler = $.proxy(this._onMouseLeave, this)))
.on("mouseenter", ".fr-content", (this._onMouseEnterHandler = $.proxy(this._onMouseEnter, this))),
Window.element
.on("mouseenter", ".fr-side", (this._onSideMouseEnterHandler = $.proxy(this._onSideMouseEnter, this)))
.on("mouseleave", ".fr-side", (this._onSideMouseLeaveHandler = $.proxy(this._onSideMouseLeave, this))),
$(window).on("scroll", (this._onScrollHandler = $.proxy(this._onScroll, this)))));
},
unbind: function () {
this._onMouseUpHandler &&
(Window._pages.off("mouseup", ".fr-content", this._onMouseUpHandler),
(this._onMouseUpHandler = null),
Window._pages.off("click", ".fr-content .fr-close").off("click", ".fr-content .fr-side-previous").off("click", ".fr-content .fr-side-next"),
Window.element.off("click", ".fr-container, .fr-thumbnails, .fr-thumbnails-wrapper", this._delegateOverlayCloseHandler),
this._showHandler &&
(Window.element.off("mouseenter", ".fr-content", this._showHandler).off("mouseleave", ".fr-content", this._hideHandler).off("mousemove", ".fr-content", this._mousemoveHandler),
Window._pages.off("mousemove", ".fr-info, .fr-close"),
Window._pages.off("mousemove", ".fr-info"),
Window._pages.off("mousemove", ".fr-content-element", this._onMouseMoveHandler).off("mouseleave", ".fr-content", this._onMouseLeaveHandler).off("mouseenter", ".fr-content", this._onMouseEnterHandler),
Window.element.off("mouseenter", ".fr-side", this._onSideMouseEnterHandler).off("mouseleave", ".fr-side", this._onSideMouseLeaveHandler),
$(window).off("scroll", this._onScrollHandler),
(this._showHandler = null)));
},
reset: function () {
Window.timers.clear("ui-fullclick"), (this._x = -1), (this._y = -1), (this._scrollLeft = -1), (this._hoveringSide = !1), this._onMouseLeave();
},
adjustPrevNext: function (i) {
i && i();
},
_onScroll: function () {
this._scrollLeft = $(window).scrollLeft();
},
_delegateOverlayClose: function (i) {
var e = Pages.page;
(e && e.view.options.overlay && !e.view.options.overlay.close) || ($(i.target).is(".fr-container, .fr-thumbnails, .fr-thumbnails-wrapper") && (i.preventDefault(), i.stopPropagation(), Window.hide()));
},
_onMouseMove: function (i) {
if (!Support.mobileTouch) {
var e = this._getEventSide(i),
t = _.String.capitalize(e),
s = !!e && Window["may" + t]();
if (((1 === Pages.pages.length || (Pages.page && "close" === Pages.page.view.options.onClick)) && (e = !1), e !== this._hoveringSide || s !== this._mayClickHoveringSide))
if (((this._hoveringSide = e), (this._mayClickHoveringSide = s), e))
switch ((Window._box[(s ? "add" : "remove") + "Class"]("fr-hovering-clickable"), e)) {
case "previous":
Window._box.addClass("fr-hovering-previous").removeClass("fr-hovering-next");
break;
case "next":
Window._box.addClass("fr-hovering-next").removeClass("fr-hovering-previous");
}
else Window._box.removeClass("fr-hovering-clickable fr-hovering-previous fr-hovering-next");
}
},
_onMouseLeave: function (i) {
Window._box.removeClass("fr-hovering-clickable fr-hovering-previous fr-hovering-next"), (this._hoveringSide = !1);
},
_onMouseUp: function (i) {
if (!(1 < i.which) && $(i.target).is(UI._validClickTargetSelector))
if (1 === Pages.pages.length || (Pages.page && "close" === Pages.page.view.options.onClick)) Window.hide();
else {
var e = this._getEventSide(i);
Window[e](), this._onMouseMove(i);
}
},
_onMouseEnter: function (i) {
this._onMouseMove(i);
},
_getEventSide: function (i) {
-1 < this._scrollLeft ? this._scrollLeft : (this._scrollLeft = $(window).scrollLeft());
return i.pageX - Window._boxPosition.left - this._scrollLeft < 0.5 * Window._boxDimensions.width ? "previous" : "next";
},
_onSideMouseEnter: function (i) {
(this._hoveringSideButton = !0), (this._hoveringSide = this._getEventSide(i)), (this._mayClickHoveringSide = Window["may" + _.String.capitalize(this._hoveringSide)]()), this.clearTimer();
},
_onSideMouseLeave: function (i) {
(this._hoveringSideButton = !1), (this._hoveringSide = !1), (this._mayClickHoveringSide = !1), this.startTimer();
},
show: function (i) {
if (this._visible) return this.startTimer(), void ("function" === $.type(i) && i());
(this._visible = !0), this.startTimer(), Window.element.addClass("fr-visible-inside-ui").removeClass("fr-hidden-inside-ui"), "function" === $.type(i) && i();
},
hide: function (i) {
this._visible && ((this._visible = !1), Window.element.removeClass("fr-visible-inside-ui").addClass("fr-hidden-inside-ui")), "function" === $.type(i) && i();
},
clearTimer: function () {
Support.mobileTouch || Window.timers.clear("ui-inside");
},
startTimer: function () {
Support.mobileTouch ||
(this.clearTimer(),
Window.timers.set(
"ui-inside",
$.proxy(function () {
this.hide();
}, this),
Window.view ? Window.view.options.uiDelay : 0
));
},
}),
(UI.outside = {
initialize: function () {
this.build(), (this._scrollLeft = -1);
},
build: function () {
Window._box
.append(
(this._previous = $("<div>")
.addClass("fr-side fr-side-previous fr-side-previous-outside")
.append($("<div>").addClass("fr-side-button").append($("<div>").addClass("fr-side-button-background")).append($("<div>").addClass("fr-side-button-icon"))))
)
.append(
(this._next = $("<div>")
.addClass("fr-side fr-side-next fr-side-next-outside")
.append($("<div>").addClass("fr-side-button").append($("<div>").addClass("fr-side-button-background")).append($("<div>").addClass("fr-side-button-icon"))))
)
.append((this._close = $("<div>").addClass("fr-close fr-close-outside").append($("<div>").addClass("fr-close-background")).append($("<div>").addClass("fr-close-icon")))),
Browser.IE && Browser.IE <= 7 && this._previous.add(this._next).add(this._close).hide(),
this._close.on(
"click",
$.proxy(function (i) {
i.preventDefault(), Window.hide();
}, this)
),
this._previous.on(
"click",
$.proxy(function (i) {
Window.previous(), this._onMouseMove(i);
}, this)
),
this._next.on(
"click",
$.proxy(function (i) {
Window.next(), this._onMouseMove(i);
}, this)
);
},
enable: function () {
this.bind();
},
disable: function () {
this.unbind();
},
reset: function () {
Window.timers.clear("ui-outside"), (this._x = -1), (this._y = -1), (this._scrollLeft = -1), this._onMouseLeave();
},
bind: function () {
this._onMouseUpHandler ||
(this.unbind(),
Window.element.on("mouseup", ".fr-content", (this._onMouseUpHandler = $.proxy(this._onMouseUp, this))),
Window.element.on("click", ".fr-container, .fr-thumbnails, .fr-thumbnails-wrapper", (this._delegateOverlayCloseHandler = $.proxy(this._delegateOverlayClose, this))),
Support.mobileTouch ||
(Window._pages
.on("mousemove", ".fr-content", (this._onMouseMoveHandler = $.proxy(this._onMouseMove, this)))
.on("mouseleave", ".fr-content", (this._onMouseLeaveHandler = $.proxy(this._onMouseLeave, this)))
.on("mouseenter", ".fr-content", (this._onMouseEnterHandler = $.proxy(this._onMouseEnter, this))),
Window.element
.on("mouseenter", ".fr-side", (this._onSideMouseEnterHandler = $.proxy(this._onSideMouseEnter, this)))
.on("mouseleave", ".fr-side", (this._onSideMouseLeaveHandler = $.proxy(this._onSideMouseLeave, this))),
$(window).on("scroll", (this._onScrollHandler = $.proxy(this._onScroll, this)))));
},
unbind: function () {
this._onMouseUpHandler &&
(Window.element.off("mouseup", ".fr-content", this._onMouseUpHandler),
(this._onMouseUpHandler = null),
Window.element.off("click", ".fr-container, .fr-thumbnails, .fr-thumbnails-wrapper", this._delegateOverlayCloseHandler),
this._onMouseMoveHandler &&
(Window._pages.off("mousemove", ".fr-content", this._onMouseMoveHandler).off("mouseleave", ".fr-content", this._onMouseLeaveHandler).off("mouseenter", ".fr-content", this._onMouseEnterHandler),
Window.element.off("mouseenter", ".fr-side", this._onSideMouseEnterHandler).off("mouseleave", ".fr-side", this._onSideMouseLeaveHandler),
$(window).off("scroll", this._onScrollHandler),
(this._onMouseMoveHandler = null)));
},
adjustPrevNext: function (i, e) {
var t = Pages.page;
if (t) {
var s = this._previous.add(this._next);
this._previous[(Window.mayPrevious() ? "remove" : "add") + "Class"]("fr-side-disabled"),
this._next[(Window.mayNext() ? "remove" : "add") + "Class"]("fr-side-disabled"),
s[(t._total < 2 ? "add" : "remove") + "Class"]("fr-side-hidden"),
i && i();
} else i && i();
},
_onScroll: function () {
this._scrollLeft = $(window).scrollLeft();
},
_delegateOverlayClose: function (i) {
var e = Pages.page;
(e && e.view.options.overlay && !e.view.options.overlay.close) || ($(i.target).is(".fr-container, .fr-thumbnails, .fr-thumbnails-wrapper") && (i.preventDefault(), i.stopPropagation(), Window.hide()));
},
_onMouseMove: function (i) {
if (!Support.mobileTouch) {
var e = this._getEventSide(i),
t = _.String.capitalize(e),
s = !!e && Window["may" + t]();
if (((1 === Pages.pages.length || (Pages.page && "close" === Pages.page.view.options.onClick)) && (e = !1), e !== this._hoveringSide || s !== this._mayClickHoveringSide))
if (((this._hoveringSide = e), (this._mayClickHoveringSide = s), e))
switch ((Window._box[(s ? "add" : "remove") + "Class"]("fr-hovering-clickable"), e)) {
case "previous":
Window._box.addClass("fr-hovering-previous").removeClass("fr-hovering-next");
break;
case "next":
Window._box.addClass("fr-hovering-next").removeClass("fr-hovering-previous");
}
else Window._box.removeClass("fr-hovering-clickable fr-hovering-previous fr-hovering-next");
}
},
_onMouseLeave: function (i) {
Window._box.removeClass("fr-hovering-clickable fr-hovering-previous fr-hovering-next"), (this._hoveringSide = !1);
},
_onMouseUp: function (i) {
if (!(1 < i.which) && $(i.target).is(UI._validClickTargetSelector))
if (1 === Pages.pages.length || (Pages.page && "close" === Pages.page.view.options.onClick)) Window.hide();
else {
var e = this._getEventSide(i);
Window[e](), this._onMouseMove(i);
}
},
_onMouseEnter: function (i) {
this._onMouseMove(i);
},
_getEventSide: function (i) {
-1 < this._scrollLeft ? this._scrollLeft : (this._scrollLeft = $(window).scrollLeft());
return i.pageX - Window._boxPosition.left - this._scrollLeft < 0.5 * Window._boxDimensions.width ? "previous" : "next";
},
show: function () {
Browser.IE && Browser.IE <= 7 && this._previous.add(this._next).add(this._close).show();
},
hide: function () {},
_onSideMouseEnter: function (i) {
(this._hoveringSideButton = !0), (this._hoveringSide = this._getEventSide(i)), (this._mayClickHoveringSide = Window["may" + _.String.capitalize(this._hoveringSide)]());
},
_onSideMouseLeave: function (i) {
(this._hoveringSideButton = !1), (this._hoveringSide = !1), (this._mayClickHoveringSide = !1);
},
clearTimer: function () {},
}),
$(document).ready(function (i) {
_Fresco.initialize();
}),
Fresco
);
});