/*! Lity - v2.2.2 - 2017-07-17 * http://sorgalla.com/lity/ * Copyright (c) 2015-2017 Jan Sorgalla; Licensed MIT */ (function (window, factory) { if (typeof define === 'function' && define.amd) { define(['jquery'], function ($) { return factory(window, $); }); } else if (typeof module === 'object' && typeof module.exports === 'object') { module.exports = factory(window, require('jquery')); } else { window.lity = factory(window, window.jQuery || window.Zepto); } }(typeof window !== "undefined" ? window : this, function (window, $) { 'use strict'; var document = window.document; var _win = $(window); var _deferred = $.Deferred; var _html = $('html'); var _instances = []; var _attrAriaHidden = 'aria-hidden'; var _dataAriaHidden = 'lity-' + _attrAriaHidden; var _focusableElementsSelector = 'a[href],area[href],input:not([disabled]),select:not([disabled]),textarea:not([disabled]),button:not([disabled]),iframe,object,embed,[contenteditable],[tabindex]:not([tabindex^="-"])'; var _defaultOptions = { esc: true, handler: null, handlers: { image: imageHandler, inline: inlineHandler, youtube: youtubeHandler, vimeo: vimeoHandler, googlemaps: googlemapsHandler, facebookvideo: facebookvideoHandler, iframe: iframeHandler }, template: '' }; var _imageRegexp = /(^data:image\/)|(\.(png|jpe?g|gif|svg|webp|bmp|ico|tiff?)(\?\S*)?$)/i; var _youtubeRegex = /(youtube(-nocookie)?\.com|youtu\.be)\/(watch\?v=|v\/|u\/|embed\/?)?([\w-]{11})(.*)?/i; var _vimeoRegex = /(vimeo(pro)?.com)\/(?:[^\d]+)?(\d+)\??(.*)?$/; var _googlemapsRegex = /((maps|www)\.)?google\.([^\/\?]+)\/?((maps\/?)?\?)(.*)/i; var _facebookvideoRegex = /(facebook\.com)\/([a-z0-9_-]*)\/videos\/([0-9]*)(.*)?$/i; var _transitionEndEvent = (function () { var el = document.createElement('div'); var transEndEventNames = { WebkitTransition: 'webkitTransitionEnd', MozTransition: 'transitionend', OTransition: 'oTransitionEnd otransitionend', transition: 'transitionend' }; for (var name in transEndEventNames) { if (el.style[name] !== undefined) { return transEndEventNames[name]; } } return false; })(); function transitionEnd(element) { var deferred = _deferred(); if (!_transitionEndEvent || !element.length) { deferred.resolve(); } else { element.one(_transitionEndEvent, deferred.resolve); setTimeout(deferred.resolve, 500); } return deferred.promise(); } function settings(currSettings, key, value) { if (arguments.length === 1) { return $.extend({}, currSettings); } if (typeof key === 'string') { if (typeof value === 'undefined') { return typeof currSettings[key] === 'undefined' ? null : currSettings[key]; } currSettings[key] = value; } else { $.extend(currSettings, key); } return this; } function parseQueryParams(params) { var pairs = decodeURI(params.split('#')[0]).split('&'); var obj = {}, p; for (var i = 0, n = pairs.length; i < n; i++) { if (!pairs[i]) { continue; } p = pairs[i].split('='); obj[p[0]] = p[1]; } return obj; } function appendQueryParams(url, params) { return url + (url.indexOf('?') > -1 ? '&' : '?') + $.param(params); } function transferHash(originalUrl, newUrl) { var pos = originalUrl.indexOf('#'); if (-1 === pos) { return newUrl; } if (pos > 0) { originalUrl = originalUrl.substr(pos); } return newUrl + originalUrl; } function error(msg) { return $('').append(msg); } function imageHandler(target, instance) { var desc = (instance.opener() && instance.opener().data('lity-desc')) || 'Image with no description'; var img = $('' + desc + ''); var deferred = _deferred(); var failed = function () { deferred.reject(error('Failed loading image')); }; img .on('load', function () { if (this.naturalWidth === 0) { return failed(); } deferred.resolve(img); }) .on('error', failed) ; return deferred.promise(); } imageHandler.test = function (target) { return _imageRegexp.test(target); }; function inlineHandler(target, instance) { var el, placeholder, hasHideClass; try { el = $(target); } catch (e) { return false; } if (!el.length) { return false; } placeholder = $(''); hasHideClass = el.hasClass('lity-hide'); instance .element() .one('lity:remove', function () { placeholder .before(el) .remove() ; if (hasHideClass && !el.closest('.lity-content').length) { el.addClass('lity-hide'); } }) ; return el .removeClass('lity-hide') .after(placeholder) ; } function youtubeHandler(target) { var matches = _youtubeRegex.exec(target); if (!matches) { return false; } return iframeHandler( transferHash( target, appendQueryParams( 'https://www.youtube' + (matches[2] || '') + '.com/embed/' + matches[4], $.extend( { autoplay: 1 }, parseQueryParams(matches[5] || '') ) ) ) ); } function vimeoHandler(target) { var matches = _vimeoRegex.exec(target); if (!matches) { return false; } return iframeHandler( transferHash( target, appendQueryParams( 'https://player.vimeo.com/video/' + matches[3], $.extend( { autoplay: 1 }, parseQueryParams(matches[4] || '') ) ) ) ); } function facebookvideoHandler(target) { var matches = _facebookvideoRegex.exec(target); if (!matches) { return false; } if (0 !== target.indexOf('http')) { target = 'https:' + target; } return iframeHandler( transferHash( target, appendQueryParams( 'https://www.facebook.com/plugins/video.php?href=' + target, $.extend( { autoplay: 1 }, parseQueryParams(matches[4] || '') ) ) ) ); } function googlemapsHandler(target) { var matches = _googlemapsRegex.exec(target); if (!matches) { return false; } return iframeHandler( transferHash( target, appendQueryParams( 'https://www.google.' + matches[3] + '/maps?' + matches[6], { output: matches[6].indexOf('layer=c') > 0 ? 'svembed' : 'embed' } ) ) ); } function iframeHandler(target) { return '