{"version":3,"file":"CHAL-b6514dc6.min.js","sources":["../scripts/jquery.magnific-popup.js","../scripts/javascript-main.js","../scripts/simplebar.js","../scripts/jquery.validate.min.js","../scripts/jquery.validate.unobtrusive.min.js","../scripts/news-newsletter-signup.js","../scripts/jquery.flexslider.js"],"sourcesContent":["/*! Magnific Popup - v1.1.0 - 2016-02-20\n* http://dimsemenov.com/plugins/magnific-popup/\n* Copyright (c) 2016 Dmitry Semenov; */\n; (function (factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module. \n define(['jquery'], factory);\n } else if (typeof exports === 'object') {\n // Node/CommonJS \n factory(require('jquery'));\n } else {\n // Browser globals \n factory(window.jQuery || window.Zepto);\n }\n}(function ($) {\n\n /*>>core*/\n /**\n * \n * Magnific Popup Core JS file\n * \n */\n\n\n /**\n * Private static constants\n */\n var CLOSE_EVENT = 'Close',\n BEFORE_CLOSE_EVENT = 'BeforeClose',\n AFTER_CLOSE_EVENT = 'AfterClose',\n BEFORE_APPEND_EVENT = 'BeforeAppend',\n MARKUP_PARSE_EVENT = 'MarkupParse',\n OPEN_EVENT = 'Open',\n CHANGE_EVENT = 'Change',\n NS = 'mfp',\n EVENT_NS = '.' + NS,\n READY_CLASS = 'mfp-ready',\n REMOVING_CLASS = 'mfp-removing',\n PREVENT_CLOSE_CLASS = 'mfp-prevent-close';\n\n\n /**\n * Private vars \n */\n /*jshint -W079 */\n var mfp, // As we have only one instance of MagnificPopup object, we define it locally to not to use 'this'\n MagnificPopup = function () { },\n _isJQ = !!(window.jQuery),\n _prevStatus,\n _window = $(window),\n _document,\n _prevContentType,\n _wrapClasses,\n _currPopupType;\n\n\n /*\n * Private functions\n */\n var _mfpOn = function (name, f) {\n mfp.ev.on(NS + name + EVENT_NS, f);\n },\n _getEl = function (className, appendTo, html, raw) {\n var el = document.createElement('div');\n el.className = 'mfp-' + className;\n if (html) {\n el.innerHTML = html;\n }\n if (!raw) {\n el = $(el);\n if (appendTo) {\n el.appendTo(appendTo);\n }\n } else if (appendTo) {\n appendTo.appendChild(el);\n }\n return el;\n },\n _mfpTrigger = function (e, data) {\n mfp.ev.triggerHandler(NS + e, data);\n\n if (mfp.st.callbacks) {\n // converts \"mfpEventName\" to \"eventName\" callback and triggers it if it's present\n e = e.charAt(0).toLowerCase() + e.slice(1);\n if (mfp.st.callbacks[e]) {\n mfp.st.callbacks[e].apply(mfp, $.isArray(data) ? data : [data]);\n }\n }\n },\n _getCloseBtn = function (type) {\n if (type !== _currPopupType || !mfp.currTemplate.closeBtn) {\n mfp.currTemplate.closeBtn = $(mfp.st.closeMarkup.replace('%title%', mfp.st.tClose));\n _currPopupType = type;\n }\n return mfp.currTemplate.closeBtn;\n },\n // Initialize Magnific Popup only when called at least once\n _checkInstance = function () {\n if (!$.magnificPopup.instance) {\n /*jshint -W020 */\n mfp = new MagnificPopup();\n mfp.init();\n $.magnificPopup.instance = mfp;\n }\n },\n // CSS transition detection, http://stackoverflow.com/questions/7264899/detect-css-transitions-using-javascript-and-without-modernizr\n supportsTransitions = function () {\n var s = document.createElement('p').style, // 's' for style. better to create an element if body yet to exist\n v = ['ms', 'O', 'Moz', 'Webkit']; // 'v' for vendor\n\n if (s['transition'] !== undefined) {\n return true;\n }\n\n while (v.length) {\n if (v.pop() + 'Transition' in s) {\n return true;\n }\n }\n\n return false;\n };\n\n\n\n /**\n * Public functions\n */\n MagnificPopup.prototype = {\n\n constructor: MagnificPopup,\n\n /**\n * Initializes Magnific Popup plugin. \n * This function is triggered only once when $.fn.magnificPopup or $.magnificPopup is executed\n */\n init: function () {\n var appVersion = navigator.appVersion;\n mfp.isAndroid = (/android/gi).test(appVersion);\n mfp.isIOS = (/iphone|ipad|ipod/gi).test(appVersion);\n mfp.supportsTransition = supportsTransitions();\n\n // We disable fixed positioned lightbox on devices that don't handle it nicely.\n // If you know a better way of detecting this - let me know.\n mfp.probablyMobile = (mfp.isAndroid || mfp.isIOS || /(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent));\n _document = $(document);\n\n mfp.popupsCache = {};\n },\n\n /*\n * Opens popup\n * @param data [description]\n */\n open: function (data) {\n\n var i;\n\n if (data.isObj === false) {\n // convert jQuery collection to array to avoid conflicts later\n mfp.items = data.items.toArray();\n\n mfp.index = 0;\n var items = data.items,\n item;\n for (i = 0; i < items.length; i++) {\n item = items[i];\n if (item.parsed) {\n item = item.el[0];\n }\n if (item === data.el[0]) {\n mfp.index = i;\n break;\n }\n }\n } else {\n mfp.items = $.isArray(data.items) ? data.items : [data.items];\n mfp.index = data.index || 0;\n }\n\n // if popup is already opened - we just update the content\n if (mfp.isOpen) {\n mfp.updateItemHTML();\n return;\n }\n\n mfp.types = [];\n _wrapClasses = '';\n if (data.mainEl && data.mainEl.length) {\n mfp.ev = data.mainEl.eq(0);\n } else {\n mfp.ev = _document;\n }\n\n if (data.key) {\n if (!mfp.popupsCache[data.key]) {\n mfp.popupsCache[data.key] = {};\n }\n mfp.currTemplate = mfp.popupsCache[data.key];\n } else {\n mfp.currTemplate = {};\n }\n\n\n\n mfp.st = $.extend(true, {}, $.magnificPopup.defaults, data);\n mfp.fixedContentPos = mfp.st.fixedContentPos === 'auto' ? !mfp.probablyMobile : mfp.st.fixedContentPos;\n\n if (mfp.st.modal) {\n mfp.st.closeOnContentClick = false;\n mfp.st.closeOnBgClick = false;\n mfp.st.showCloseBtn = false;\n mfp.st.enableEscapeKey = false;\n }\n\n\n // Building markup\n // main containers are created only once\n if (!mfp.bgOverlay) {\n\n // Dark overlay\n mfp.bgOverlay = _getEl('bg').on('click' + EVENT_NS, function () {\n mfp.close();\n });\n\n mfp.wrap = _getEl('wrap').attr('tabindex', -1).on('click' + EVENT_NS, function (e) {\n if (mfp._checkIfClose(e.target)) {\n mfp.close();\n }\n });\n\n mfp.container = _getEl('container', mfp.wrap);\n }\n\n mfp.contentContainer = _getEl('content');\n if (mfp.st.preloader) {\n mfp.preloader = _getEl('preloader', mfp.container, mfp.st.tLoading);\n }\n\n\n // Initializing modules\n var modules = $.magnificPopup.modules;\n for (i = 0; i < modules.length; i++) {\n var n = modules[i];\n n = n.charAt(0).toUpperCase() + n.slice(1);\n mfp['init' + n].call(mfp);\n }\n _mfpTrigger('BeforeOpen');\n\n\n if (mfp.st.showCloseBtn) {\n // Close button\n if (!mfp.st.closeBtnInside) {\n mfp.wrap.append(_getCloseBtn());\n } else {\n _mfpOn(MARKUP_PARSE_EVENT, function (e, template, values, item) {\n values.close_replaceWith = _getCloseBtn(item.type);\n });\n _wrapClasses += ' mfp-close-btn-in';\n }\n }\n\n if (mfp.st.alignTop) {\n _wrapClasses += ' mfp-align-top';\n }\n\n\n\n if (mfp.fixedContentPos) {\n mfp.wrap.css({\n overflow: mfp.st.overflowY,\n overflowX: 'hidden',\n overflowY: mfp.st.overflowY\n });\n } else {\n mfp.wrap.css({\n top: _window.scrollTop(),\n position: 'absolute'\n });\n }\n if (mfp.st.fixedBgPos === false || (mfp.st.fixedBgPos === 'auto' && !mfp.fixedContentPos)) {\n mfp.bgOverlay.css({\n height: _document.height(),\n position: 'absolute'\n });\n }\n\n\n\n if (mfp.st.enableEscapeKey) {\n // Close on ESC key\n _document.on('keyup' + EVENT_NS, function (e) {\n if (e.keyCode === 27) {\n mfp.close();\n }\n });\n }\n\n _window.on('resize' + EVENT_NS, function () {\n mfp.updateSize();\n });\n\n\n if (!mfp.st.closeOnContentClick) {\n _wrapClasses += ' mfp-auto-cursor';\n }\n\n if (_wrapClasses)\n mfp.wrap.addClass(_wrapClasses);\n\n\n // this triggers recalculation of layout, so we get it once to not to trigger twice\n var windowHeight = mfp.wH = _window.height();\n\n\n var windowStyles = {};\n\n if (mfp.fixedContentPos) {\n if (mfp._hasScrollBar(windowHeight)) {\n var s = mfp._getScrollbarSize();\n if (s) {\n windowStyles.marginRight = s;\n }\n }\n }\n\n if (mfp.fixedContentPos) {\n windowStyles.overflow = 'hidden';\n }\n\n var classesToadd = mfp.st.mainClass;\n\n if (classesToadd) {\n mfp._addClassToMFP(classesToadd);\n }\n\n // add content\n mfp.updateItemHTML();\n\n _mfpTrigger('BuildControls');\n\n // remove scrollbar, add margin e.t.c\n $('html').css(windowStyles);\n\n // add everything to DOM\n mfp.bgOverlay.add(mfp.wrap).prependTo(mfp.st.prependTo || $(document.body));\n\n // Save last focused element\n mfp._lastFocusedEl = document.activeElement;\n\n // Wait for next cycle to allow CSS transition\n setTimeout(function () {\n\n if (mfp.content) {\n mfp._addClassToMFP(READY_CLASS);\n mfp._setFocus();\n } else {\n // if content is not defined (not loaded e.t.c) we add class only for BG\n mfp.bgOverlay.addClass(READY_CLASS);\n }\n\n // Trap the focus in popup\n _document.on('focusin' + EVENT_NS, mfp._onFocusIn);\n\n }, 16);\n\n mfp.isOpen = true;\n mfp.updateSize(windowHeight);\n _mfpTrigger(OPEN_EVENT);\n\n return data;\n },\n\n /**\n * Closes the popup\n */\n close: function () {\n if (!mfp.isOpen) return;\n _mfpTrigger(BEFORE_CLOSE_EVENT);\n\n mfp.isOpen = false;\n // for CSS3 animation\n if (mfp.st.removalDelay && mfp.supportsTransition) {\n mfp._addClassToMFP(REMOVING_CLASS);\n setTimeout(function () {\n mfp._close();\n }, mfp.st.removalDelay);\n } else {\n mfp._close();\n }\n },\n\n /**\n * Helper for close() function\n */\n _close: function () {\n _mfpTrigger(CLOSE_EVENT);\n\n var classesToRemove = REMOVING_CLASS + ' ' + READY_CLASS + ' ';\n\n mfp.bgOverlay.detach();\n mfp.wrap.detach();\n mfp.container.empty();\n\n if (mfp.st.mainClass) {\n classesToRemove += mfp.st.mainClass + ' ';\n }\n\n mfp._removeClassFromMFP(classesToRemove);\n\n if (mfp.fixedContentPos) {\n var windowStyles = { marginRight: '' };\n windowStyles.overflow = '';\n $('html').css(windowStyles);\n }\n\n _document.off('keyup' + EVENT_NS + ' focusin' + EVENT_NS);\n mfp.ev.off(EVENT_NS);\n\n // clean up DOM elements that aren't removed\n mfp.wrap.attr('class', 'mfp-wrap').removeAttr('style');\n mfp.bgOverlay.attr('class', 'mfp-bg');\n mfp.container.attr('class', 'mfp-container');\n\n // remove close button from target element\n if (mfp.st.showCloseBtn &&\n (!mfp.st.closeBtnInside || mfp.currTemplate[mfp.currItem.type] === true)) {\n if (mfp.currTemplate.closeBtn)\n mfp.currTemplate.closeBtn.detach();\n }\n\n\n if (mfp.st.autoFocusLast && mfp._lastFocusedEl) {\n $(mfp._lastFocusedEl).focus(); // put tab focus back\n }\n mfp.currItem = null;\n mfp.content = null;\n mfp.currTemplate = null;\n mfp.prevHeight = 0;\n\n _mfpTrigger(AFTER_CLOSE_EVENT);\n },\n\n updateSize: function (winHeight) {\n\n if (mfp.isIOS) {\n // fixes iOS nav bars https://github.com/dimsemenov/Magnific-Popup/issues/2\n var zoomLevel = document.documentElement.clientWidth / window.innerWidth;\n var height = window.innerHeight * zoomLevel;\n mfp.wrap.css('height', height);\n mfp.wH = height;\n } else {\n mfp.wH = winHeight || _window.height();\n }\n // Fixes #84: popup incorrectly positioned with position:relative on body\n if (!mfp.fixedContentPos) {\n mfp.wrap.css('height', mfp.wH);\n }\n\n _mfpTrigger('Resize');\n\n },\n\n /**\n * Set content of popup based on current index\n */\n updateItemHTML: function () {\n var item = mfp.items[mfp.index];\n\n // Detach and perform modifications\n mfp.contentContainer.detach();\n\n if (mfp.content)\n mfp.content.detach();\n\n if (!item.parsed) {\n item = mfp.parseEl(mfp.index);\n }\n\n var type = item.type;\n\n _mfpTrigger('BeforeChange', [mfp.currItem ? mfp.currItem.type : '', type]);\n // BeforeChange event works like so:\n // _mfpOn('BeforeChange', function(e, prevType, newType) { });\n\n mfp.currItem = item;\n\n if (!mfp.currTemplate[type]) {\n var markup = mfp.st[type] ? mfp.st[type].markup : false;\n\n // allows to modify markup\n _mfpTrigger('FirstMarkupParse', markup);\n\n if (markup) {\n mfp.currTemplate[type] = $(markup);\n } else {\n // if there is no markup found we just define that template is parsed\n mfp.currTemplate[type] = true;\n }\n }\n\n if (_prevContentType && _prevContentType !== item.type) {\n mfp.container.removeClass('mfp-' + _prevContentType + '-holder');\n }\n\n var newContent = mfp['get' + type.charAt(0).toUpperCase() + type.slice(1)](item, mfp.currTemplate[type]);\n mfp.appendContent(newContent, type);\n\n item.preloaded = true;\n\n _mfpTrigger(CHANGE_EVENT, item);\n _prevContentType = item.type;\n\n // Append container back after its content changed\n mfp.container.prepend(mfp.contentContainer);\n\n _mfpTrigger('AfterChange');\n },\n\n\n /*\n * Set HTML content of popup\n */\n appendContent: function (newContent, type) {\n mfp.content = newContent;\n\n if (newContent) {\n if (mfp.st.showCloseBtn && mfp.st.closeBtnInside &&\n mfp.currTemplate[type] === true) {\n // if there is no markup, we just append close button element inside\n if (!mfp.content.find('.mfp-close').length) {\n mfp.content.append(_getCloseBtn());\n }\n } else {\n mfp.content = newContent;\n }\n } else {\n mfp.content = '';\n }\n\n _mfpTrigger(BEFORE_APPEND_EVENT);\n mfp.container.addClass('mfp-' + type + '-holder');\n\n mfp.contentContainer.append(mfp.content);\n },\n\n\n /*\n * Creates Magnific Popup data object based on given data\n * @param {int} index Index of item to parse\n */\n parseEl: function (index) {\n var item = mfp.items[index],\n type;\n\n if (item.tagName) {\n item = { el: $(item) };\n } else {\n type = item.type;\n item = { data: item, src: item.src };\n }\n\n if (item.el) {\n var types = mfp.types;\n\n // check for 'mfp-TYPE' class\n for (var i = 0; i < types.length; i++) {\n if (item.el.hasClass('mfp-' + types[i])) {\n type = types[i];\n break;\n }\n }\n\n item.src = item.el.attr('data-mfp-src');\n if (!item.src) {\n item.src = item.el.attr('href');\n }\n }\n\n item.type = type || mfp.st.type || 'inline';\n item.index = index;\n item.parsed = true;\n mfp.items[index] = item;\n _mfpTrigger('ElementParse', item);\n\n return mfp.items[index];\n },\n\n\n /*\n * Initializes single popup or a group of popups\n */\n addGroup: function (el, options) {\n var eHandler = function (e) {\n e.mfpEl = this;\n mfp._openClick(e, el, options);\n };\n\n if (!options) {\n options = {};\n }\n\n var eName = 'click.magnificPopup';\n options.mainEl = el;\n\n if (options.items) {\n options.isObj = true;\n el.off(eName).on(eName, eHandler);\n } else {\n options.isObj = false;\n if (options.delegate) {\n el.off(eName).on(eName, options.delegate, eHandler);\n } else {\n options.items = el;\n el.off(eName).on(eName, eHandler);\n }\n }\n },\n _openClick: function (e, el, options) {\n var midClick = options.midClick !== undefined ? options.midClick : $.magnificPopup.defaults.midClick;\n\n\n if (!midClick && (e.which === 2 || e.ctrlKey || e.metaKey || e.altKey || e.shiftKey)) {\n return;\n }\n\n var disableOn = options.disableOn !== undefined ? options.disableOn : $.magnificPopup.defaults.disableOn;\n\n if (disableOn) {\n if ($.isFunction(disableOn)) {\n if (!disableOn.call(mfp)) {\n return true;\n }\n } else { // else it's number\n if (_window.width() < disableOn) {\n return true;\n }\n }\n }\n\n if (e.type) {\n e.preventDefault();\n\n // This will prevent popup from closing if element is inside and popup is already opened\n if (mfp.isOpen) {\n e.stopPropagation();\n }\n }\n\n options.el = $(e.mfpEl);\n if (options.delegate) {\n options.items = el.find(options.delegate);\n }\n mfp.open(options);\n },\n\n\n /*\n * Updates text on preloader\n */\n updateStatus: function (status, text) {\n\n if (mfp.preloader) {\n if (_prevStatus !== status) {\n mfp.container.removeClass('mfp-s-' + _prevStatus);\n }\n\n if (!text && status === 'loading') {\n text = mfp.st.tLoading;\n }\n\n var data = {\n status: status,\n text: text\n };\n // allows to modify status\n _mfpTrigger('UpdateStatus', data);\n\n status = data.status;\n text = data.text;\n\n mfp.preloader.html(text);\n\n mfp.preloader.find('a').on('click', function (e) {\n e.stopImmediatePropagation();\n });\n\n mfp.container.addClass('mfp-s-' + status);\n _prevStatus = status;\n }\n },\n\n\n /*\n \"Private\" helpers that aren't private at all\n */\n // Check to close popup or not\n // \"target\" is an element that was clicked\n _checkIfClose: function (target) {\n\n if ($(target).hasClass(PREVENT_CLOSE_CLASS)) {\n return;\n }\n\n var closeOnContent = mfp.st.closeOnContentClick;\n var closeOnBg = mfp.st.closeOnBgClick;\n\n if (closeOnContent && closeOnBg) {\n return true;\n } else {\n\n // We close the popup if click is on close button or on preloader. Or if there is no content.\n if (!mfp.content || $(target).hasClass('mfp-close') || (mfp.preloader && target === mfp.preloader[0])) {\n return true;\n }\n\n // if click is outside the content\n if ((target !== mfp.content[0] && !$.contains(mfp.content[0], target))) {\n if (closeOnBg) {\n // last check, if the clicked element is in DOM, (in case it's removed onclick)\n if ($.contains(document, target)) {\n return true;\n }\n }\n } else if (closeOnContent) {\n return true;\n }\n\n }\n return false;\n },\n _addClassToMFP: function (cName) {\n mfp.bgOverlay.addClass(cName);\n mfp.wrap.addClass(cName);\n },\n _removeClassFromMFP: function (cName) {\n this.bgOverlay.removeClass(cName);\n mfp.wrap.removeClass(cName);\n },\n _hasScrollBar: function (winHeight) {\n return ((document.body.scrollHeight) > (winHeight || _window.height()));\n },\n _setFocus: function () {\n (mfp.st.focus ? mfp.content.find(mfp.st.focus).eq(0) : mfp.wrap).focus();\n },\n _onFocusIn: function (e) {\n if (e.target !== mfp.wrap[0] && !$.contains(mfp.wrap[0], e.target)) {\n mfp._setFocus();\n return false;\n }\n },\n _parseMarkup: function (template, values, item) {\n var arr;\n if (item.data) {\n values = $.extend(item.data, values);\n }\n _mfpTrigger(MARKUP_PARSE_EVENT, [template, values, item]);\n\n $.each(values, function (key, value) {\n if (value === undefined || value === false) {\n return true;\n }\n arr = key.split('_');\n if (arr.length > 1) {\n var el = template.find(EVENT_NS + '-' + arr[0]);\n\n if (el.length > 0) {\n var attr = arr[1];\n if (attr === 'replaceWith') {\n if (el[0] !== value[0]) {\n el.replaceWith(value);\n }\n } else if (attr === 'img') {\n if (el.is('img')) {\n el.attr('src', value);\n } else {\n el.replaceWith($('').attr('src', value).attr('class', el.attr('class')));\n }\n } else {\n el.attr(arr[1], value);\n }\n }\n\n } else {\n template.find(EVENT_NS + '-' + key).html(value);\n }\n });\n },\n\n _getScrollbarSize: function () {\n // thx David\n if (mfp.scrollbarSize === undefined) {\n var scrollDiv = document.createElement(\"div\");\n scrollDiv.style.cssText = 'width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;';\n document.body.appendChild(scrollDiv);\n mfp.scrollbarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n }\n return mfp.scrollbarSize;\n }\n\n }; /* MagnificPopup core prototype end */\n\n\n\n\n /**\n * Public static functions\n */\n $.magnificPopup = {\n instance: null,\n proto: MagnificPopup.prototype,\n modules: [],\n\n open: function (options, index) {\n _checkInstance();\n\n if (!options) {\n options = {};\n } else {\n options = $.extend(true, {}, options);\n }\n\n options.isObj = true;\n options.index = index || 0;\n return this.instance.open(options);\n },\n\n close: function () {\n return $.magnificPopup.instance && $.magnificPopup.instance.close();\n },\n\n registerModule: function (name, module) {\n if (module.options) {\n $.magnificPopup.defaults[name] = module.options;\n }\n $.extend(this.proto, module.proto);\n this.modules.push(name);\n },\n\n defaults: {\n\n // Info about options is in docs:\n // http://dimsemenov.com/plugins/magnific-popup/documentation.html#options\n\n disableOn: 0,\n\n key: null,\n\n midClick: false,\n\n mainClass: '',\n\n preloader: true,\n\n focus: '', // CSS selector of input to focus after popup is opened\n\n closeOnContentClick: false,\n\n closeOnBgClick: true,\n\n closeBtnInside: true,\n\n showCloseBtn: true,\n\n enableEscapeKey: true,\n\n modal: false,\n\n alignTop: false,\n\n removalDelay: 0,\n\n prependTo: null,\n\n fixedContentPos: 'auto',\n\n fixedBgPos: 'auto',\n\n overflowY: 'auto',\n\n closeMarkup: '',\n\n tClose: 'Close (Esc)',\n\n tLoading: 'Loading...',\n\n autoFocusLast: true\n\n }\n };\n\n\n\n $.fn.magnificPopup = function (options) {\n _checkInstance();\n\n var jqEl = $(this);\n\n // We call some API method of first param is a string\n if (typeof options === \"string\") {\n\n if (options === 'open') {\n var items,\n itemOpts = _isJQ ? jqEl.data('magnificPopup') : jqEl[0].magnificPopup,\n index = parseInt(arguments[1], 10) || 0;\n\n if (itemOpts.items) {\n items = itemOpts.items[index];\n } else {\n items = jqEl;\n if (itemOpts.delegate) {\n items = items.find(itemOpts.delegate);\n }\n items = items.eq(index);\n }\n mfp._openClick({ mfpEl: items }, jqEl, itemOpts);\n } else {\n if (mfp.isOpen)\n mfp[options].apply(mfp, Array.prototype.slice.call(arguments, 1));\n }\n\n } else {\n // clone options obj\n options = $.extend(true, {}, options);\n\n /*\n * As Zepto doesn't support .data() method for objects\n * and it works only in normal browsers\n * we assign \"options\" object directly to the DOM element. FTW!\n */\n if (_isJQ) {\n jqEl.data('magnificPopup', options);\n } else {\n jqEl[0].magnificPopup = options;\n }\n\n mfp.addGroup(jqEl, options);\n\n }\n return jqEl;\n };\n\n /*>>core*/\n\n /*>>inline*/\n\n var INLINE_NS = 'inline',\n _hiddenClass,\n _inlinePlaceholder,\n _lastInlineElement,\n _putInlineElementsBack = function () {\n if (_lastInlineElement) {\n _inlinePlaceholder.after(_lastInlineElement.addClass(_hiddenClass)).detach();\n _lastInlineElement = null;\n }\n };\n\n $.magnificPopup.registerModule(INLINE_NS, {\n options: {\n hiddenClass: 'hide', // will be appended with `mfp-` prefix\n markup: '',\n tNotFound: 'Content not found'\n },\n proto: {\n\n initInline: function () {\n mfp.types.push(INLINE_NS);\n\n _mfpOn(CLOSE_EVENT + '.' + INLINE_NS, function () {\n _putInlineElementsBack();\n });\n },\n\n getInline: function (item, template) {\n\n _putInlineElementsBack();\n\n if (item.src) {\n var inlineSt = mfp.st.inline,\n el = $(item.src);\n\n if (el.length) {\n\n // If target element has parent - we replace it with placeholder and put it back after popup is closed\n var parent = el[0].parentNode;\n if (parent && parent.tagName) {\n if (!_inlinePlaceholder) {\n _hiddenClass = inlineSt.hiddenClass;\n _inlinePlaceholder = _getEl(_hiddenClass);\n _hiddenClass = 'mfp-' + _hiddenClass;\n }\n // replace target inline element with placeholder\n _lastInlineElement = el.after(_inlinePlaceholder).detach().removeClass(_hiddenClass);\n }\n\n mfp.updateStatus('ready');\n } else {\n mfp.updateStatus('error', inlineSt.tNotFound);\n el = $('