{"version":3,"sources":["libs/baguetteBox.js"],"names":["root","factory","define","amd","exports","module","baguetteBox","this","run","selector","userOptions","supports","transforms","testTransformsSupport","svg","testSVGSupport","buildOverlay","removeFromCache","bindImageClickListeners","galleryNodeList","document","querySelectorAll","selectorData","galleries","nodeList","data","forEach","call","galleryElement","filter","regex","tagsNodeList","tagName","getElementsByTagName","element","test","href","length","gallery","imageElement","imageIndex","imageElementClickHandler","event","preventDefault","returnValue","prepareOverlay","showOverlay","imageItem","eventHandler","bind","push","clearCachedData","hasOwnProperty","unbind","currentGallery","overlay","getByID","slider","previousButton","nextButton","closeButton","create","setAttribute","id","appendChild","innerHTML","leftArrow","rightArrow","closeX","className","bindEvents","keyDownHandler","keyCode","showPreviousImage","showNextImage","hideOverlay","overlayClickHandler","previousButtonClickHandler","nextButtonClickHandler","closeButtonClickHandler","touchstartHandler","touchmoveHandler","touchendHandler","trapFocusInsideOverlay","unbindEvents","setOptions","firstChild","removeChild","imagesElements","fullImage","imagesFiguresIds","imagesCaptionsIds","i","join","newOptions","item","defaults","options","style","transition","webkitTransition","animation","buttons","window","display","backgroundColor","overlayBackgroundColor","e","chosenImageIndex","noScrollbars","documentElement","overflowY","body","currentIndex","touch","count","startX","startY","loadImage","preloadNext","preloadPrev","updateOffset","fullScreen","enterFullScreen","setTimeout","afterShow","onChange","documentLastFocus","activeElement","initFocus","focus","requestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","exitFullscreen","mozCancelFullScreen","webkitExitFullscreen","afterHide","index","callback","imageContainer","thumbnailElement","imageCaption","captions","getAttribute","title","imageSrc","getImageSrc","figure","figcaption","image","onload","spinner","querySelector","async","alt","titleTag","result","dataset","srcs","substring","isNaN","replace","keys","Object","sort","a","b","parseInt","width","innerWidth","devicePixelRatio","offset","opacity","transform","webkitTransform","left","div","perspective","webkitPerspective","namespaceURI","preload","useCapture","addEventListener","attachEvent","removeEventListener","detachEvent","getElementById","createElement","destroyPlugin","touchFlag","target","indexOf","stopPropagation","cancelBubble","multitouch","changedTouches","pageX","pageY","touchEvent","touches","contains","Array","prototype","thisArg","c","d","destroy","showNext","showPrevious"],"mappings":"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","file":"libs/baguetteBox.min.js","sourcesContent":["/*!\r\n * baguetteBox.js\r\n * @author feimosi\r\n * @version %%INJECT_VERSION%%\r\n * @url https://github.com/feimosi/baguetteBox.js\r\n */\r\n\r\n/* global define, module */\r\n\r\n(function (root, factory) {\r\n 'use strict';\r\n if (typeof define === 'function' && define.amd) {\r\n define(factory);\r\n } else if (typeof exports === 'object') {\r\n module.exports = factory();\r\n } else {\r\n root.baguetteBox = factory();\r\n }\r\n}(this, function () {\r\n 'use strict';\r\n\r\n // SVG shapes used on the buttons\r\n var leftArrow = '' +\r\n '' +\r\n '',\r\n rightArrow = '' +\r\n '' +\r\n '',\r\n closeX = '' +\r\n '' +\r\n '' +\r\n '' +\r\n '';\r\n // Global options and their defaults\r\n var options = {},\r\n defaults = {\r\n captions: true,\r\n fullScreen: false,\r\n noScrollbars: false,\r\n titleTag: false,\r\n buttons: 'auto',\r\n async: false,\r\n preload: 2,\r\n animation: 'slideIn',\r\n afterShow: null,\r\n afterHide: null,\r\n // callback when image changes with `currentIndex` and `imagesElements.length` as parameters\r\n onChange: null,\r\n overlayBackgroundColor: 'rgba(0,0,0,.8)'\r\n };\r\n // Object containing information about features compatibility\r\n var supports = {};\r\n // DOM Elements references\r\n var overlay, slider, previousButton, nextButton, closeButton;\r\n // An array with all images in the current gallery\r\n var currentGallery = [];\r\n // Current image index inside the slider\r\n var currentIndex = 0;\r\n // Touch event start position (for slide gesture)\r\n var touch = {};\r\n // If set to true ignore touch events because animation was already fired\r\n var touchFlag = false;\r\n // Regex pattern to match image files\r\n var regex = /.+\\.(gif|jpe?g|png|webp)/i;\r\n // Object of all used galleries\r\n var data = {};\r\n // Array containing temporary images DOM elements\r\n var imagesElements = [];\r\n // The last focused element before opening the overlay\r\n var documentLastFocus = null;\r\n var overlayClickHandler = function(event) {\r\n // Close the overlay when user clicks directly on the background\r\n if (event.target.id.indexOf('baguette-img') !== -1) {\r\n hideOverlay();\r\n }\r\n };\r\n var previousButtonClickHandler = function(event) {\r\n event.stopPropagation ? event.stopPropagation() : event.cancelBubble = true; // jshint ignore:line\r\n showPreviousImage();\r\n };\r\n var nextButtonClickHandler = function(event) {\r\n event.stopPropagation ? event.stopPropagation() : event.cancelBubble = true; // jshint ignore:line\r\n showNextImage();\r\n };\r\n var closeButtonClickHandler = function(event) {\r\n event.stopPropagation ? event.stopPropagation() : event.cancelBubble = true; // jshint ignore:line\r\n hideOverlay();\r\n };\r\n var touchstartHandler = function(event) {\r\n touch.count++;\r\n if (touch.count > 1) {\r\n touch.multitouch = true;\r\n }\r\n // Save x and y axis position\r\n touch.startX = event.changedTouches[0].pageX;\r\n touch.startY = event.changedTouches[0].pageY;\r\n };\r\n var touchmoveHandler = function(event) {\r\n // If action was already triggered or multitouch return\r\n if (touchFlag || touch.multitouch) {\r\n return;\r\n }\r\n event.preventDefault ? event.preventDefault() : event.returnValue = false; // jshint ignore:line\r\n var touchEvent = event.touches[0] || event.changedTouches[0];\r\n // Move at least 40 pixels to trigger the action\r\n if (touchEvent.pageX - touch.startX > 40) {\r\n touchFlag = true;\r\n showPreviousImage();\r\n } else if (touchEvent.pageX - touch.startX < -40) {\r\n touchFlag = true;\r\n showNextImage();\r\n // Move 100 pixels up to close the overlay\r\n } else if (touch.startY - touchEvent.pageY > 100) {\r\n hideOverlay();\r\n }\r\n };\r\n var touchendHandler = function() {\r\n touch.count--;\r\n if (touch.count <= 0) {\r\n touch.multitouch = false;\r\n }\r\n touchFlag = false;\r\n };\r\n\r\n var trapFocusInsideOverlay = function(event) {\r\n if (overlay.style.display === 'block' && !overlay.contains(event.target)) {\r\n event.stopPropagation();\r\n initFocus();\r\n }\r\n };\r\n\r\n // forEach polyfill for IE8\r\n // http://stackoverflow.com/a/14827443/1077846\r\n /* jshint ignore:start */\r\n if (![].forEach) {\r\n Array.prototype.forEach = function(callback, thisArg) {\r\n for (var i = 0; i < this.length; i++) {\r\n callback.call(thisArg, this[i], i, this);\r\n }\r\n };\r\n }\r\n\r\n // filter polyfill for IE8\r\n // https://gist.github.com/eliperelman/1031656\r\n if (![].filter) {\r\n Array.prototype.filter = function(a, b, c, d, e) {\r\n c = this;\r\n d = [];\r\n for (e = 0; e < c.length; e++)\r\n a.call(b, c[e], e, c) && d.push(c[e]);\r\n return d;\r\n };\r\n }\r\n /* jshint ignore:end */\r\n\r\n // Script entry point\r\n function run(selector, userOptions) {\r\n // Fill supports object\r\n supports.transforms = testTransformsSupport();\r\n supports.svg = testSVGSupport();\r\n\r\n buildOverlay();\r\n removeFromCache(selector);\r\n bindImageClickListeners(selector, userOptions);\r\n }\r\n\r\n function bindImageClickListeners(selector, userOptions) {\r\n // For each gallery bind a click event to every image inside it\r\n var galleryNodeList = document.querySelectorAll(selector);\r\n var selectorData = {\r\n galleries: [],\r\n nodeList: galleryNodeList\r\n };\r\n data[selector] = selectorData;\r\n\r\n [].forEach.call(galleryNodeList, function(galleryElement) {\r\n if (userOptions && userOptions.filter) {\r\n regex = userOptions.filter;\r\n }\r\n\r\n // Get nodes from gallery elements or single-element galleries\r\n var tagsNodeList = [];\r\n if (galleryElement.tagName === 'A') {\r\n tagsNodeList = [galleryElement];\r\n } else {\r\n tagsNodeList = galleryElement.getElementsByTagName('a');\r\n }\r\n\r\n // Filter 'a' elements from those not linking to images\r\n tagsNodeList = [].filter.call(tagsNodeList, function(element) {\r\n return regex.test(element.href);\r\n });\r\n if (tagsNodeList.length === 0) {\r\n return;\r\n }\r\n\r\n var gallery = [];\r\n [].forEach.call(tagsNodeList, function(imageElement, imageIndex) {\r\n var imageElementClickHandler = function(event) {\r\n event.preventDefault ? event.preventDefault() : event.returnValue = false; // jshint ignore:line\r\n prepareOverlay(gallery, userOptions);\r\n showOverlay(imageIndex);\r\n };\r\n var imageItem = {\r\n eventHandler: imageElementClickHandler,\r\n imageElement: imageElement\r\n };\r\n bind(imageElement, 'click', imageElementClickHandler);\r\n gallery.push(imageItem);\r\n });\r\n selectorData.galleries.push(gallery);\r\n });\r\n }\r\n\r\n function clearCachedData() {\r\n for (var selector in data) {\r\n if (data.hasOwnProperty(selector)) {\r\n removeFromCache(selector);\r\n }\r\n }\r\n }\r\n\r\n function removeFromCache(selector) {\r\n if (!data.hasOwnProperty(selector)) {\r\n return;\r\n }\r\n var galleries = data[selector].galleries;\r\n [].forEach.call(galleries, function(gallery) {\r\n [].forEach.call(gallery, function(imageItem) {\r\n unbind(imageItem.imageElement, 'click', imageItem.eventHandler);\r\n });\r\n\r\n if (currentGallery === gallery) {\r\n currentGallery = [];\r\n }\r\n });\r\n\r\n delete data[selector];\r\n }\r\n\r\n function buildOverlay() {\r\n overlay = getByID('baguetteBox-overlay');\r\n // Check if the overlay already exists\r\n if (overlay) {\r\n slider = getByID('baguetteBox-slider');\r\n previousButton = getByID('previous-button');\r\n nextButton = getByID('next-button');\r\n closeButton = getByID('close-button');\r\n return;\r\n }\r\n // Create overlay element\r\n overlay = create('div');\r\n overlay.setAttribute('role', 'dialog');\r\n overlay.id = 'baguetteBox-overlay';\r\n document.getElementsByTagName('body')[0].appendChild(overlay);\r\n // Create gallery slider element\r\n slider = create('div');\r\n slider.id = 'baguetteBox-slider';\r\n overlay.appendChild(slider);\r\n // Create all necessary buttons\r\n previousButton = create('button');\r\n previousButton.setAttribute('type', 'button');\r\n previousButton.id = 'previous-button';\r\n previousButton.setAttribute('aria-label', 'Previous');\r\n previousButton.innerHTML = supports.svg ? leftArrow : '<';\r\n overlay.appendChild(previousButton);\r\n\r\n nextButton = create('button');\r\n nextButton.setAttribute('type', 'button');\r\n nextButton.id = 'next-button';\r\n nextButton.setAttribute('aria-label', 'Next');\r\n nextButton.innerHTML = supports.svg ? rightArrow : '>';\r\n overlay.appendChild(nextButton);\r\n\r\n closeButton = create('button');\r\n closeButton.setAttribute('type', 'button');\r\n closeButton.id = 'close-button';\r\n closeButton.setAttribute('aria-label', 'Close');\r\n closeButton.innerHTML = supports.svg ? closeX : '×';\r\n overlay.appendChild(closeButton);\r\n\r\n previousButton.className = nextButton.className = closeButton.className = 'baguetteBox-button';\r\n\r\n bindEvents();\r\n }\r\n\r\n function keyDownHandler(event) {\r\n switch (event.keyCode) {\r\n case 37: // Left arrow\r\n showPreviousImage();\r\n break;\r\n case 39: // Right arrow\r\n showNextImage();\r\n break;\r\n case 27: // Esc\r\n hideOverlay();\r\n break;\r\n }\r\n }\r\n\r\n function bindEvents() {\r\n bind(overlay, 'click', overlayClickHandler);\r\n bind(previousButton, 'click', previousButtonClickHandler);\r\n bind(nextButton, 'click', nextButtonClickHandler);\r\n bind(closeButton, 'click', closeButtonClickHandler);\r\n bind(overlay, 'touchstart', touchstartHandler);\r\n bind(overlay, 'touchmove', touchmoveHandler);\r\n bind(overlay, 'touchend', touchendHandler);\r\n bind(document, 'focus', trapFocusInsideOverlay, true);\r\n }\r\n\r\n function unbindEvents() {\r\n unbind(overlay, 'click', overlayClickHandler);\r\n unbind(previousButton, 'click', previousButtonClickHandler);\r\n unbind(nextButton, 'click', nextButtonClickHandler);\r\n unbind(closeButton, 'click', closeButtonClickHandler);\r\n unbind(overlay, 'touchstart', touchstartHandler);\r\n unbind(overlay, 'touchmove', touchmoveHandler);\r\n unbind(overlay, 'touchend', touchendHandler);\r\n unbind(document, 'focus', trapFocusInsideOverlay, true);\r\n }\r\n\r\n function prepareOverlay(gallery, userOptions) {\r\n // If the same gallery is being opened prevent from loading it once again\r\n if (currentGallery === gallery) {\r\n return;\r\n }\r\n currentGallery = gallery;\r\n // Update gallery specific options\r\n setOptions(userOptions);\r\n // Empty slider of previous contents (more effective than .innerHTML = \"\")\r\n while (slider.firstChild) {\r\n slider.removeChild(slider.firstChild);\r\n }\r\n imagesElements.length = 0;\r\n\r\n var imagesFiguresIds = [];\r\n var imagesCaptionsIds = [];\r\n // Prepare and append images containers and populate figure and captions IDs arrays\r\n for (var i = 0, fullImage; i < gallery.length; i++) {\r\n fullImage = create('div');\r\n fullImage.className = 'full-image';\r\n fullImage.id = 'baguette-img-' + i;\r\n imagesElements.push(fullImage);\r\n\r\n imagesFiguresIds.push('baguetteBox-figure-' + i);\r\n imagesCaptionsIds.push('baguetteBox-figcaption-' + i);\r\n slider.appendChild(imagesElements[i]);\r\n }\r\n overlay.setAttribute('aria-labelledby', imagesFiguresIds.join(' '));\r\n overlay.setAttribute('aria-describedby', imagesCaptionsIds.join(' '));\r\n }\r\n\r\n function setOptions(newOptions) {\r\n if (!newOptions) {\r\n newOptions = {};\r\n }\r\n // Fill options object\r\n for (var item in defaults) {\r\n options[item] = defaults[item];\r\n if (typeof newOptions[item] !== 'undefined') {\r\n options[item] = newOptions[item];\r\n }\r\n }\r\n /* Apply new options */\r\n // Change transition for proper animation\r\n slider.style.transition = slider.style.webkitTransition = (options.animation === 'fadeIn' ? 'opacity .4s ease' :\r\n options.animation === 'slideIn' ? '' : 'none');\r\n // Hide buttons if necessary\r\n if (options.buttons === 'auto' && ('ontouchstart' in window || currentGallery.length === 1)) {\r\n options.buttons = false;\r\n }\r\n // Set buttons style to hide or display them\r\n previousButton.style.display = nextButton.style.display = (options.buttons ? '' : 'none');\r\n // Set overlay color\r\n try {\r\n overlay.style.backgroundColor = options.overlayBackgroundColor;\r\n } catch (e) {}\r\n }\r\n\r\n function showOverlay(chosenImageIndex) {\r\n if (options.noScrollbars) {\r\n document.documentElement.style.overflowY = 'hidden';\r\n document.body.style.overflowY = 'scroll';\r\n }\r\n if (overlay.style.display === 'block') {\r\n return;\r\n }\r\n\r\n bind(document, 'keydown', keyDownHandler);\r\n currentIndex = chosenImageIndex;\r\n touch = {\r\n count: 0,\r\n startX: null,\r\n startY: null\r\n };\r\n loadImage(currentIndex, function() {\r\n preloadNext(currentIndex);\r\n preloadPrev(currentIndex);\r\n });\r\n\r\n updateOffset();\r\n overlay.style.display = 'block';\r\n if (options.fullScreen) {\r\n enterFullScreen();\r\n }\r\n // Fade in overlay\r\n setTimeout(function() {\r\n overlay.className = 'visible';\r\n if (options.afterShow) {\r\n options.afterShow();\r\n }\r\n }, 50);\r\n if (options.onChange) {\r\n options.onChange(currentIndex, imagesElements.length);\r\n }\r\n documentLastFocus = document.activeElement;\r\n initFocus();\r\n }\r\n\r\n function initFocus() {\r\n if (options.buttons) {\r\n previousButton.focus();\r\n } else {\r\n closeButton.focus();\r\n }\r\n }\r\n\r\n function enterFullScreen() {\r\n if (overlay.requestFullscreen) {\r\n overlay.requestFullscreen();\r\n } else if (overlay.webkitRequestFullscreen) {\r\n overlay.webkitRequestFullscreen();\r\n } else if (overlay.mozRequestFullScreen) {\r\n overlay.mozRequestFullScreen();\r\n }\r\n }\r\n\r\n function exitFullscreen() {\r\n if (document.exitFullscreen) {\r\n document.exitFullscreen();\r\n } else if (document.mozCancelFullScreen) {\r\n document.mozCancelFullScreen();\r\n } else if (document.webkitExitFullscreen) {\r\n document.webkitExitFullscreen();\r\n }\r\n }\r\n\r\n function hideOverlay() {\r\n if (options.noScrollbars) {\r\n document.documentElement.style.overflowY = 'auto';\r\n document.body.style.overflowY = 'auto';\r\n }\r\n if (overlay.style.display === 'none') {\r\n return;\r\n }\r\n\r\n unbind(document, 'keydown', keyDownHandler);\r\n // Fade out and hide the overlay\r\n overlay.className = '';\r\n setTimeout(function() {\r\n overlay.style.display = 'none';\r\n exitFullscreen();\r\n if (options.afterHide) {\r\n options.afterHide();\r\n }\r\n }, 500);\r\n documentLastFocus.focus();\r\n }\r\n\r\n function loadImage(index, callback) {\r\n var imageContainer = imagesElements[index];\r\n if (typeof imageContainer === 'undefined') {\r\n return;\r\n }\r\n\r\n // If image is already loaded run callback and return\r\n if (imageContainer.getElementsByTagName('img')[0]) {\r\n if (callback) {\r\n callback();\r\n }\r\n return;\r\n }\r\n\r\n // Get element reference, optional caption and source path\r\n var imageElement = currentGallery[index].imageElement;\r\n var thumbnailElement = imageElement.getElementsByTagName('img')[0];\r\n var imageCaption = typeof options.captions === 'function' ?\r\n options.captions.call(currentGallery, imageElement) :\r\n imageElement.getAttribute('data-caption') || imageElement.title;\r\n var imageSrc = getImageSrc(imageElement);\r\n\r\n // Prepare figure element\r\n var figure = create('figure');\r\n figure.id = 'baguetteBox-figure-' + index;\r\n figure.innerHTML = '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n // Insert caption if available\r\n if (options.captions && imageCaption) {\r\n var figcaption = create('figcaption');\r\n figcaption.id = 'baguetteBox-figcaption-' + index;\r\n figcaption.innerHTML = imageCaption;\r\n figure.appendChild(figcaption);\r\n }\r\n imageContainer.appendChild(figure);\r\n\r\n // Prepare gallery img element\r\n var image = create('img');\r\n image.onload = function() {\r\n // Remove loader element\r\n var spinner = document.querySelector('#baguette-img-' + index + ' .baguetteBox-spinner');\r\n figure.removeChild(spinner);\r\n if (!options.async && callback) {\r\n callback();\r\n }\r\n };\r\n image.setAttribute('src', imageSrc);\r\n image.alt = thumbnailElement ? thumbnailElement.alt || '' : '';\r\n if (options.titleTag && imageCaption) {\r\n image.title = imageCaption;\r\n }\r\n figure.appendChild(image);\r\n\r\n // Run callback\r\n if (options.async && callback) {\r\n callback();\r\n }\r\n }\r\n\r\n // Get image source location, mostly used for responsive images\r\n function getImageSrc(image) {\r\n // Set default image path from href\r\n var result = image.href;\r\n // If dataset is supported find the most suitable image\r\n if (image.dataset) {\r\n var srcs = [];\r\n // Get all possible image versions depending on the resolution\r\n for (var item in image.dataset) {\r\n if (item.substring(0, 3) === 'at-' && !isNaN(item.substring(3))) {\r\n srcs[item.replace('at-', '')] = image.dataset[item];\r\n }\r\n }\r\n // Sort resolutions ascending\r\n var keys = Object.keys(srcs).sort(function(a, b) {\r\n return parseInt(a, 10) < parseInt(b, 10) ? -1 : 1;\r\n });\r\n // Get real screen resolution\r\n var width = window.innerWidth * window.devicePixelRatio;\r\n // Find the first image bigger than or equal to the current width\r\n var i = 0;\r\n while (i < keys.length - 1 && keys[i] < width) {\r\n i++;\r\n }\r\n result = srcs[keys[i]] || result;\r\n }\r\n return result;\r\n }\r\n\r\n // Return false at the right end of the gallery\r\n function showNextImage() {\r\n var returnValue;\r\n // Check if next image exists\r\n if (currentIndex <= imagesElements.length - 2) {\r\n currentIndex++;\r\n updateOffset();\r\n preloadNext(currentIndex);\r\n returnValue = true;\r\n } else if (options.animation) {\r\n slider.className = 'bounce-from-right';\r\n setTimeout(function() {\r\n slider.className = '';\r\n }, 400);\r\n returnValue = false;\r\n }\r\n if (options.onChange) {\r\n options.onChange(currentIndex, imagesElements.length);\r\n }\r\n return returnValue;\r\n }\r\n\r\n // Return false at the left end of the gallery\r\n function showPreviousImage() {\r\n var returnValue;\r\n // Check if previous image exists\r\n if (currentIndex >= 1) {\r\n currentIndex--;\r\n updateOffset();\r\n preloadPrev(currentIndex);\r\n returnValue = true;\r\n } else if (options.animation) {\r\n slider.className = 'bounce-from-left';\r\n setTimeout(function() {\r\n slider.className = '';\r\n }, 400);\r\n returnValue = false;\r\n }\r\n if (options.onChange) {\r\n options.onChange(currentIndex, imagesElements.length);\r\n }\r\n return returnValue;\r\n }\r\n\r\n function updateOffset() {\r\n var offset = -currentIndex * 100 + '%';\r\n if (options.animation === 'fadeIn') {\r\n slider.style.opacity = 0;\r\n setTimeout(function() {\r\n /* jshint -W030 */\r\n supports.transforms ?\r\n slider.style.transform = slider.style.webkitTransform = 'translate3d(' + offset + ',0,0)'\r\n : slider.style.left = offset;\r\n slider.style.opacity = 1;\r\n }, 400);\r\n } else {\r\n /* jshint -W030 */\r\n supports.transforms ?\r\n slider.style.transform = slider.style.webkitTransform = 'translate3d(' + offset + ',0,0)'\r\n : slider.style.left = offset;\r\n }\r\n }\r\n\r\n // CSS 3D Transforms test\r\n function testTransformsSupport() {\r\n var div = create('div');\r\n return typeof div.style.perspective !== 'undefined' || typeof div.style.webkitPerspective !== 'undefined';\r\n }\r\n\r\n // Inline SVG test\r\n function testSVGSupport() {\r\n var div = create('div');\r\n div.innerHTML = '';\r\n return (div.firstChild && div.firstChild.namespaceURI) === 'http://www.w3.org/2000/svg';\r\n }\r\n\r\n function preloadNext(index) {\r\n if (index - currentIndex >= options.preload) {\r\n return;\r\n }\r\n loadImage(index + 1, function() {\r\n preloadNext(index + 1);\r\n });\r\n }\r\n\r\n function preloadPrev(index) {\r\n if (currentIndex - index >= options.preload) {\r\n return;\r\n }\r\n loadImage(index - 1, function() {\r\n preloadPrev(index - 1);\r\n });\r\n }\r\n\r\n function bind(element, event, callback, useCapture) {\r\n if (element.addEventListener) {\r\n element.addEventListener(event, callback, useCapture);\r\n } else {\r\n // IE8 fallback\r\n element.attachEvent('on' + event, callback);\r\n }\r\n }\r\n\r\n function unbind(element, event, callback, useCapture) {\r\n if (element.removeEventListener) {\r\n element.removeEventListener(event, callback, useCapture);\r\n } else {\r\n // IE8 fallback\r\n element.detachEvent('on' + event, callback);\r\n }\r\n }\r\n\r\n function getByID(id) {\r\n return document.getElementById(id);\r\n }\r\n\r\n function create(element) {\r\n return document.createElement(element);\r\n }\r\n\r\n function destroyPlugin() {\r\n unbindEvents();\r\n clearCachedData();\r\n unbind(document, 'keydown', keyDownHandler);\r\n document.getElementsByTagName('body')[0].removeChild(document.getElementById('baguetteBox-overlay'));\r\n data = {};\r\n currentGallery = [];\r\n currentIndex = 0;\r\n }\r\n\r\n return {\r\n run: run,\r\n destroy: destroyPlugin,\r\n showNext: showNextImage,\r\n showPrevious: showPreviousImage\r\n };\r\n\r\n}));\r\n"],"sourceRoot":"/source/"}