/**
* @license
Magnific Popup - v1.1.0 - 2016-02-20
http://dimsemenov.com/plugins/magnific-popup/
Copyright (c) 2016 Dmitry Semenov; */
'use strict';
!function(race) {
if ("function" == typeof define && define.amd) {
define(["jquery"], race);
} else {
race("object" == typeof exports ? require("jquery") : window.jQuery || window.Zepto);
}
}(function($) {
var mfp;
var _prevStatus;
var _document;
var _prevContentType;
var val;
var resType;
/** @type {string} */
var CLOSE_EVENT = "Close";
/** @type {string} */
var BEFORE_CLOSE_EVENT = "BeforeClose";
/** @type {string} */
var AFTER_CLOSE_EVENT = "AfterClose";
/** @type {string} */
var BEFORE_APPEND_EVENT = "BeforeAppend";
/** @type {string} */
var MARKUP_PARSE_EVENT = "MarkupParse";
/** @type {string} */
var OPEN_EVENT = "Open";
/** @type {string} */
var CHANGE_EVENT = "Change";
/** @type {string} */
var NS = "mfp";
/** @type {string} */
var EVENT_NS = "." + NS;
/** @type {string} */
var READY_CLASS = "mfp-ready";
/** @type {string} */
var REMOVING_CLASS = "mfp-removing";
/** @type {string} */
var PREVENT_CLOSE_CLASS = "mfp-prevent-close";
/**
* @return {undefined}
*/
var MagnificPopup = function() {
};
/** @type {boolean} */
var _isJQ = !!window.jQuery;
var _window = $(window);
/**
* @param {string} name
* @param {!Function} f
* @return {undefined}
*/
var _mfpOn = function(name, f) {
mfp.ev.on(NS + name + EVENT_NS, f);
};
/**
* @param {string} className
* @param {!Object} html
* @param {string} raw
* @param {(!Function|boolean)} bbox_is_required
* @return {?}
*/
var _getEl = function(className, html, raw, bbox_is_required) {
/** @type {!Element} */
var el = document.createElement("div");
return el.className = "mfp-" + className, raw && (el.innerHTML = raw), bbox_is_required ? html && html.appendChild(el) : (el = $(el), html && el.appendTo(html)), el;
};
/**
* @param {string} e
* @param {!Object} data
* @return {undefined}
*/
var _mfpTrigger = function(e, data) {
mfp.ev.triggerHandler(NS + e, data);
if (mfp.st.callbacks) {
e = e.charAt(0).toLowerCase() + e.slice(1);
if (mfp.st.callbacks[e]) {
mfp.st.callbacks[e].apply(mfp, $.isArray(data) ? data : [data]);
}
}
};
/**
* @param {?} type
* @return {?}
*/
var _getCloseBtn = function(type) {
return type === resType && mfp.currTemplate.closeBtn || (mfp.currTemplate.closeBtn = $(mfp.st.closeMarkup.replace("%title%", mfp.st.tClose)), resType = type), mfp.currTemplate.closeBtn;
};
/**
* @return {undefined}
*/
var _checkInstance = function() {
if (!$.magnificPopup.instance) {
mfp = new MagnificPopup;
mfp.init();
$.magnificPopup.instance = mfp;
}
};
/**
* @return {?}
*/
var supportsTransitions = function() {
/** @type {!CSSStyleDeclaration} */
var s = document.createElement("p").style;
/** @type {!Array} */
var v = ["ms", "O", "Moz", "Webkit"];
if (void 0 !== s.transition) {
return true;
}
for (; v.length;) {
if (v.pop() + "Transition" in s) {
return true;
}
}
return false;
};
MagnificPopup.prototype = {
constructor : MagnificPopup,
init : function() {
/** @type {string} */
var appVersion = navigator.appVersion;
mfp.isLowIE = mfp.isIE8 = document.all && !document.addEventListener;
/** @type {boolean} */
mfp.isAndroid = /android/gi.test(appVersion);
/** @type {boolean} */
mfp.isIOS = /iphone|ipad|ipod/gi.test(appVersion);
mfp.supportsTransition = supportsTransitions();
/** @type {boolean} */
mfp.probablyMobile = mfp.isAndroid || mfp.isIOS || /(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent);
_document = $(document);
mfp.popupsCache = {};
},
open : function(data) {
var i;
if (data.isObj === false) {
mfp.items = data.items.toArray();
/** @type {number} */
mfp.index = 0;
var node;
var tree = data.items;
/** @type {number} */
i = 0;
for (; i < tree.length; i++) {
if (node = tree[i], node.parsed && (node = node.el[0]), node === data.el[0]) {
/** @type {number} */
mfp.index = i;
break;
}
}
} else {
mfp.items = $.isArray(data.items) ? data.items : [data.items];
mfp.index = data.index || 0;
}
if (mfp.isOpen) {
return void mfp.updateItemHTML();
}
/** @type {!Array} */
mfp.types = [];
/** @type {string} */
val = "";
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 = "auto" === mfp.st.fixedContentPos ? !mfp.probablyMobile : mfp.st.fixedContentPos;
if (mfp.st.modal) {
/** @type {boolean} */
mfp.st.closeOnContentClick = false;
/** @type {boolean} */
mfp.st.closeOnBgClick = false;
/** @type {boolean} */
mfp.st.showCloseBtn = false;
/** @type {boolean} */
mfp.st.enableEscapeKey = false;
}
if (!mfp.bgOverlay) {
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);
}
var modules = $.magnificPopup.modules;
/** @type {number} */
i = 0;
for (; 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) {
if (mfp.st.closeBtnInside) {
_mfpOn(MARKUP_PARSE_EVENT, function(a, b, values, item) {
values.close_replaceWith = _getCloseBtn(item.type);
});
/** @type {string} */
val = val + " mfp-close-btn-in";
} else {
mfp.wrap.append(_getCloseBtn());
}
}
if (mfp.st.alignTop) {
/** @type {string} */
val = val + " 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 || "auto" === mfp.st.fixedBgPos && !mfp.fixedContentPos) {
mfp.bgOverlay.css({
height : _document.height(),
position : "absolute"
});
}
if (mfp.st.enableEscapeKey) {
_document.on("keyup" + EVENT_NS, function(event) {
if (27 === event.keyCode) {
mfp.close();
}
});
}
_window.on("resize" + EVENT_NS, function() {
mfp.updateSize();
});
if (!mfp.st.closeOnContentClick) {
/** @type {string} */
val = val + " mfp-auto-cursor";
}
if (val) {
mfp.wrap.addClass(val);
}
var windowHeight = mfp.wH = _window.height();
var windowStyles = {};
if (mfp.fixedContentPos && mfp._hasScrollBar(windowHeight)) {
var s = mfp._getScrollbarSize();
if (s) {
windowStyles.marginRight = s;
}
}
if (mfp.fixedContentPos) {
if (mfp.isIE7) {
$("body, html").css("overflow", "hidden");
} else {
/** @type {string} */
windowStyles.overflow = "hidden";
}
}
var classesToadd = mfp.st.mainClass;
return mfp.isIE7 && (classesToadd = classesToadd + " mfp-ie7"), classesToadd && mfp._addClassToMFP(classesToadd), mfp.updateItemHTML(), _mfpTrigger("BuildControls"), $("html").css(windowStyles), mfp.bgOverlay.add(mfp.wrap).prependTo(mfp.st.prependTo || $(document.body)), mfp._lastFocusedEl = document.activeElement, setTimeout(function() {
if (mfp.content) {
mfp._addClassToMFP(READY_CLASS);
mfp._setFocus();
} else {
mfp.bgOverlay.addClass(READY_CLASS);
}
_document.on("focusin" + EVENT_NS, mfp._onFocusIn);
}, 16), mfp.isOpen = true, mfp.updateSize(windowHeight), _mfpTrigger(OPEN_EVENT), data;
},
close : function() {
if (mfp.isOpen) {
_mfpTrigger(BEFORE_CLOSE_EVENT);
/** @type {boolean} */
mfp.isOpen = false;
if (mfp.st.removalDelay && !mfp.isLowIE && mfp.supportsTransition) {
mfp._addClassToMFP(REMOVING_CLASS);
setTimeout(function() {
mfp._close();
}, mfp.st.removalDelay);
} else {
mfp._close();
}
}
},
_close : function() {
_mfpTrigger(CLOSE_EVENT);
/** @type {string} */
var classesToRemove = REMOVING_CLASS + " " + READY_CLASS + " ";
if (mfp.bgOverlay.detach(), mfp.wrap.detach(), mfp.container.empty(), mfp.st.mainClass && (classesToRemove = classesToRemove + (mfp.st.mainClass + " ")), mfp._removeClassFromMFP(classesToRemove), mfp.fixedContentPos) {
var windowStyles = {
marginRight : ""
};
if (mfp.isIE7) {
$("body, html").css("overflow", "");
} else {
/** @type {string} */
windowStyles.overflow = "";
}
$("html").css(windowStyles);
}
_document.off("keyup" + EVENT_NS + " focusin" + EVENT_NS);
mfp.ev.off(EVENT_NS);
mfp.wrap.attr("class", "mfp-wrap").removeAttr("style");
mfp.bgOverlay.attr("class", "mfp-bg");
mfp.container.attr("class", "mfp-container");
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();
}
/** @type {null} */
mfp.currItem = null;
/** @type {null} */
mfp.content = null;
/** @type {null} */
mfp.currTemplate = null;
/** @type {number} */
mfp.prevHeight = 0;
_mfpTrigger(AFTER_CLOSE_EVENT);
},
updateSize : function(winHeight) {
if (mfp.isIOS) {
/** @type {number} */
var zoomLevel = document.documentElement.clientWidth / window.innerWidth;
/** @type {number} */
var height = window.innerHeight * zoomLevel;
mfp.wrap.css("height", height);
/** @type {number} */
mfp.wH = height;
} else {
mfp.wH = winHeight || _window.height();
}
if (!mfp.fixedContentPos) {
mfp.wrap.css("height", mfp.wH);
}
_mfpTrigger("Resize");
},
updateItemHTML : function() {
var item = mfp.items[mfp.index];
mfp.contentContainer.detach();
if (mfp.content) {
mfp.content.detach();
}
if (!item.parsed) {
item = mfp.parseEl(mfp.index);
}
var type = item.type;
if (_mfpTrigger("BeforeChange", [mfp.currItem ? mfp.currItem.type : "", type]), mfp.currItem = item, !mfp.currTemplate[type]) {
var markup = mfp.st[type] ? mfp.st[type].markup : false;
_mfpTrigger("FirstMarkupParse", markup);
if (markup) {
mfp.currTemplate[type] = $(markup);
} else {
/** @type {boolean} */
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);
/** @type {boolean} */
item.preloaded = true;
_mfpTrigger(CHANGE_EVENT, item);
_prevContentType = item.type;
mfp.container.prepend(mfp.contentContainer);
_mfpTrigger("AfterChange");
},
appendContent : function(newContent, type) {
/** @type {string} */
mfp.content = newContent;
if (newContent) {
if (mfp.st.showCloseBtn && mfp.st.closeBtnInside && mfp.currTemplate[type] === true) {
if (!mfp.content.find(".mfp-close").length) {
mfp.content.append(_getCloseBtn());
}
} else {
/** @type {string} */
mfp.content = newContent;
}
} else {
/** @type {string} */
mfp.content = "";
}
_mfpTrigger(BEFORE_APPEND_EVENT);
mfp.container.addClass("mfp-" + type + "-holder");
mfp.contentContainer.append(mfp.content);
},
parseEl : function(index) {
var type;
var item = mfp.items[index];
if (item.tagName ? item = {
el : $(item)
} : (type = item.type, item = {
data : item,
src : item.src
}), item.el) {
var types = mfp.types;
/** @type {number} */
var i = 0;
for (; 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");
}
}
return item.type = type || mfp.st.type || "inline", item.index = index, item.parsed = true, mfp.items[index] = item, _mfpTrigger("ElementParse", item), mfp.items[index];
},
addGroup : function(el, options) {
/**
* @param {!Event} e
* @return {undefined}
*/
var eHandler = function(e) {
e.mfpEl = this;
mfp._openClick(e, el, options);
};
if (!options) {
options = {};
}
/** @type {string} */
var mousemoveEvent = "click.magnificPopup";
/** @type {!Object} */
options.mainEl = el;
if (options.items) {
/** @type {boolean} */
options.isObj = true;
el.off(mousemoveEvent).on(mousemoveEvent, eHandler);
} else {
/** @type {boolean} */
options.isObj = false;
if (options.delegate) {
el.off(mousemoveEvent).on(mousemoveEvent, options.delegate, eHandler);
} else {
/** @type {!Object} */
options.items = el;
el.off(mousemoveEvent).on(mousemoveEvent, eHandler);
}
}
},
_openClick : function(e, el, options) {
var f = void 0 !== options.midClick ? options.midClick : $.magnificPopup.defaults.midClick;
if (f || !(2 === e.which || e.ctrlKey || e.metaKey || e.altKey || e.shiftKey)) {
var disableOn = void 0 !== options.disableOn ? options.disableOn : $.magnificPopup.defaults.disableOn;
if (disableOn) {
if ($.isFunction(disableOn)) {
if (!disableOn.call(mfp)) {
return true;
}
} else {
if (_window.width() < disableOn) {
return true;
}
}
}
if (e.type) {
e.preventDefault();
if (mfp.isOpen) {
e.stopPropagation();
}
}
options.el = $(e.mfpEl);
if (options.delegate) {
options.items = el.find(options.delegate);
}
mfp.open(options);
}
},
updateStatus : function(status, text) {
if (mfp.preloader) {
if (_prevStatus !== status) {
mfp.container.removeClass("mfp-s-" + _prevStatus);
}
if (!(text || "loading" !== status)) {
text = mfp.st.tLoading;
}
var data = {
status : status,
text : text
};
_mfpTrigger("UpdateStatus", data);
status = data.status;
text = data.text;
mfp.preloader.html(text);
mfp.preloader.find("a").on("click", function(event) {
event.stopImmediatePropagation();
});
mfp.container.addClass("mfp-s-" + status);
/** @type {string} */
_prevStatus = status;
}
},
_checkIfClose : function(target) {
if (!$(target).hasClass(PREVENT_CLOSE_CLASS)) {
var valueLength = mfp.st.closeOnContentClick;
var hint = mfp.st.closeOnBgClick;
if (valueLength && hint) {
return true;
}
if (!mfp.content || $(target).hasClass("mfp-close") || mfp.preloader && target === mfp.preloader[0]) {
return true;
}
if (target === mfp.content[0] || $.contains(mfp.content[0], target)) {
if (valueLength) {
return true;
}
} else {
if (hint && $.contains(document, target)) {
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) {
return e.target === mfp.wrap[0] || $.contains(mfp.wrap[0], e.target) ? void 0 : (mfp._setFocus(), 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, a) {
if (void 0 === a || a === false) {
return true;
}
if (arr = key.split("_"), arr.length > 1) {
var t = template.find(EVENT_NS + "-" + arr[0]);
if (t.length > 0) {
var type = arr[1];
if ("replaceWith" === type) {
if (t[0] !== a[0]) {
t.replaceWith(a);
}
} else {
if ("img" === type) {
if (t.is("img")) {
t.attr("src", a);
} else {
t.replaceWith($("").attr("src", a).attr("class", t.attr("class")));
}
} else {
t.attr(arr[1], a);
}
}
}
} else {
template.find(EVENT_NS + "-" + key).html(a);
}
});
},
_getScrollbarSize : function() {
if (void 0 === mfp.scrollbarSize) {
/** @type {!Element} */
var div = document.createElement("div");
/** @type {string} */
div.style.cssText = "width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;";
document.body.appendChild(div);
/** @type {number} */
mfp.scrollbarSize = div.offsetWidth - div.clientWidth;
document.body.removeChild(div);
}
return mfp.scrollbarSize;
}
};
$.magnificPopup = {
instance : null,
proto : MagnificPopup.prototype,
modules : [],
open : function(options, index) {
return _checkInstance(), options = options ? $.extend(true, {}, options) : {}, options.isObj = true, options.index = index || 0, 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 : {
disableOn : 0,
key : null,
midClick : false,
mainClass : "",
preloader : true,
focus : "",
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 : '',
tClose : "Close (Esc)",
tLoading : "Loading...",
autoFocusLast : true
}
};
/**
* @param {string} options
* @return {?}
*/
$.fn.magnificPopup = function(options) {
_checkInstance();
var jqEl = $(this);
if ("string" == typeof options) {
if ("open" === options) {
var items;
var itemOpts = _isJQ ? jqEl.data("magnificPopup") : jqEl[0].magnificPopup;
/** @type {number} */
var 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 {
options = $.extend(true, {}, options);
if (_isJQ) {
jqEl.data("magnificPopup", options);
} else {
/** @type {string} */
jqEl[0].magnificPopup = options;
}
mfp.addGroup(jqEl, options);
}
return jqEl;
};
var _hiddenClass;
var _inlinePlaceholder;
var _lastInlineElement;
/** @type {string} */
var INLINE_NS = "inline";
/**
* @return {undefined}
*/
var _putInlineElementsBack = function() {
if (_lastInlineElement) {
_inlinePlaceholder.after(_lastInlineElement.addClass(_hiddenClass)).detach();
/** @type {null} */
_lastInlineElement = null;
}
};
$.magnificPopup.registerModule(INLINE_NS, {
options : {
hiddenClass : "hide",
markup : "",
tNotFound : "Content not found"
},
proto : {
initInline : function() {
mfp.types.push(INLINE_NS);
_mfpOn(CLOSE_EVENT + "." + INLINE_NS, function() {
_putInlineElementsBack();
});
},
getInline : function(item, template) {
if (_putInlineElementsBack(), item.src) {
var inlineSt = mfp.st.inline;
var el = $(item.src);
if (el.length) {
var tmpNode = el[0].parentNode;
if (tmpNode && tmpNode.tagName) {
if (!_inlinePlaceholder) {
_hiddenClass = inlineSt.hiddenClass;
_inlinePlaceholder = _getEl(_hiddenClass);
/** @type {string} */
_hiddenClass = "mfp-" + _hiddenClass;
}
_lastInlineElement = el.after(_inlinePlaceholder).detach().removeClass(_hiddenClass);
}
mfp.updateStatus("ready");
} else {
mfp.updateStatus("error", inlineSt.tNotFound);
el = $("