{"mappings":"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","sources":["","wwwroot/Content/Scripts/index.js","node_modules/bxslider-clean/src/js/jquery.bxslider.js","node_modules/historyjs/scripts/bundled-uncompressed/html5/jquery.history.js","node_modules/sharer.js/sharer.js","node_modules/glightbox/dist/js/glightbox.min.js","wwwroot/Content/Scripts/recaptcha.js","wwwroot/Content/Scripts/am_theme.js"],"sourcesContent":["(function () {\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n//Bootstrap JS\n\n(function($) {\n var defaults = {\n // GENERAL\n mode: \"horizontal\",\n slideSelector: \"\",\n infiniteLoop: true,\n hideControlOnEnd: false,\n speed: 500,\n easing: null,\n slideMargin: 0,\n startSlide: 0,\n randomStart: false,\n captions: false,\n ticker: false,\n tickerHover: false,\n adaptiveHeight: false,\n adaptiveHeightSpeed: 500,\n video: false,\n useCSS: true,\n preloadImages: \"visible\",\n responsive: true,\n slideZIndex: 50,\n wrapperClass: \"bx-wrapper\",\n // TOUCH\n touchEnabled: true,\n swipeThreshold: 50,\n oneToOneTouch: true,\n preventDefaultSwipeX: true,\n preventDefaultSwipeY: false,\n // ACCESSIBILITY\n ariaLive: true,\n ariaHidden: true,\n // KEYBOARD\n keyboardEnabled: false,\n // PAGER\n pager: true,\n pagerType: \"full\",\n pagerShortSeparator: \" / \",\n pagerSelector: null,\n buildPager: null,\n pagerCustom: null,\n // CONTROLS\n controls: true,\n nextText: \"Next\",\n prevText: \"Prev\",\n nextSelector: null,\n prevSelector: null,\n autoControls: false,\n startText: \"Start\",\n stopText: \"Stop\",\n autoControlsCombine: false,\n autoControlsSelector: null,\n // AUTO\n auto: false,\n pause: 4000,\n autoStart: true,\n autoDirection: \"next\",\n stopAutoOnClick: false,\n autoHover: false,\n autoDelay: 0,\n autoSlideForOnePage: false,\n // CAROUSEL\n minSlides: 1,\n maxSlides: 1,\n moveSlides: 0,\n slideWidth: 0,\n shrinkItems: false,\n // CALLBACKS\n onSliderLoad: function() {\n return true;\n },\n onSlideBefore: function() {\n return true;\n },\n onSlideAfter: function() {\n return true;\n },\n onSlideNext: function() {\n return true;\n },\n onSlidePrev: function() {\n return true;\n },\n onSliderResize: function() {\n return true;\n }\n };\n $.fn.bxSlider = function(options) {\n if (this.length === 0) return this;\n // support multiple elements\n if (this.length > 1) {\n this.each(function() {\n $(this).bxSlider(options);\n });\n return this;\n }\n // create a namespace to be used throughout the plugin\n var slider = {}, // set a reference to our slider element\n el = this, // get the original window dimens (thanks a lot IE)\n windowWidth = $(window).width(), windowHeight = $(window).height();\n // Return if slider is already initialized\n if ($(el).data(\"bxSlider\")) return;\n /**\r\n * ===================================================================================\r\n * = PRIVATE FUNCTIONS\r\n * ===================================================================================\r\n */ /**\r\n * Initializes namespace settings to be used throughout plugin\r\n */ var init = function() {\n // Return if slider is already initialized\n if ($(el).data(\"bxSlider\")) return;\n // merge user-supplied options with the defaults\n slider.settings = $.extend({}, defaults, options);\n // parse slideWidth setting\n slider.settings.slideWidth = parseInt(slider.settings.slideWidth);\n // store the original children\n slider.children = el.children(slider.settings.slideSelector);\n // check if actual number of slides is less than minSlides / maxSlides\n if (slider.children.length < slider.settings.minSlides) slider.settings.minSlides = slider.children.length;\n if (slider.children.length < slider.settings.maxSlides) slider.settings.maxSlides = slider.children.length;\n // if random start, set the startSlide setting to random number\n if (slider.settings.randomStart) slider.settings.startSlide = Math.floor(Math.random() * slider.children.length);\n // store active slide information\n slider.active = {\n index: slider.settings.startSlide\n };\n // store if the slider is in carousel mode (displaying / moving multiple slides)\n slider.carousel = slider.settings.minSlides > 1 || slider.settings.maxSlides > 1 ? true : false;\n // if carousel, force preloadImages = 'all'\n if (slider.carousel) slider.settings.preloadImages = \"all\";\n // calculate the min / max width thresholds based on min / max number of slides\n // used to setup and update carousel slides dimensions\n slider.minThreshold = slider.settings.minSlides * slider.settings.slideWidth + (slider.settings.minSlides - 1) * slider.settings.slideMargin;\n slider.maxThreshold = slider.settings.maxSlides * slider.settings.slideWidth + (slider.settings.maxSlides - 1) * slider.settings.slideMargin;\n // store the current state of the slider (if currently animating, working is true)\n slider.working = false;\n // initialize the controls object\n slider.controls = {};\n // initialize an auto interval\n slider.interval = null;\n // determine which property to use for transitions\n slider.animProp = slider.settings.mode === \"vertical\" ? \"top\" : \"left\";\n // determine if hardware acceleration can be used\n slider.usingCSS = slider.settings.useCSS && slider.settings.mode !== \"fade\" && function() {\n // create our test div element\n var div = document.createElement(\"div\"), // css transition properties\n props = [\n \"WebkitPerspective\",\n \"MozPerspective\",\n \"OPerspective\",\n \"msPerspective\"\n ];\n // test for each property\n for(i = 0; i < props.length; i++)if (div.style[props[i]] !== undefined) {\n slider.cssPrefix = props[i].replace(\"Perspective\", \"\").toLowerCase();\n slider.animProp = \"-\" + slider.cssPrefix + \"-transform\";\n return true;\n }\n return false;\n }();\n // if vertical mode always make maxSlides and minSlides equal\n if (slider.settings.mode === \"vertical\") slider.settings.maxSlides = slider.settings.minSlides;\n // save original style data\n el.data(\"origStyle\", el.attr(\"style\"));\n el.children(slider.settings.slideSelector).each(function() {\n $(this).data(\"origStyle\", $(this).attr(\"style\"));\n });\n // perform all DOM / CSS modifications\n setup();\n };\n /**\r\n * Performs all DOM and CSS modifications\r\n */ var setup = function() {\n var preloadSelector = slider.children.eq(slider.settings.startSlide); // set the default preload selector (visible)\n // wrap el in a wrapper\n el.wrap('
');\n // store a namespace reference to .bx-viewport\n slider.viewport = el.parent();\n // add aria-live if the setting is enabled and ticker mode is disabled\n if (slider.settings.ariaLive && !slider.settings.ticker) slider.viewport.attr(\"aria-live\", \"polite\");\n // add a loading div to display while images are loading\n slider.loader = $('
');\n slider.viewport.prepend(slider.loader);\n // set el to a massive width, to hold any needed slides\n // also strip any margin and padding from el\n el.css({\n width: slider.settings.mode === \"horizontal\" ? slider.children.length * 1000 + 215 + \"%\" : \"auto\",\n position: \"relative\"\n });\n // if using CSS, add the easing property\n if (slider.usingCSS && slider.settings.easing) el.css(\"-\" + slider.cssPrefix + \"-transition-timing-function\", slider.settings.easing);\n else if (!slider.settings.easing) slider.settings.easing = \"swing\";\n // make modifications to the viewport (.bx-viewport)\n slider.viewport.css({\n width: \"100%\",\n overflow: \"hidden\",\n position: \"relative\"\n });\n slider.viewport.parent().css({\n maxWidth: getViewportMaxWidth()\n });\n // make modification to the wrapper (.bx-wrapper)\n if (!slider.settings.pager && !slider.settings.controls) slider.viewport.parent().css({\n margin: \"0 auto 0px\"\n });\n // apply css to all slider children\n slider.children.css({\n float: slider.settings.mode === \"horizontal\" ? \"left\" : \"none\",\n listStyle: \"none\",\n position: \"relative\"\n });\n // apply the calculated width after the float is applied to prevent scrollbar interference\n slider.children.css(\"width\", getSlideWidth());\n // if slideMargin is supplied, add the css\n if (slider.settings.mode === \"horizontal\" && slider.settings.slideMargin > 0) slider.children.css(\"marginRight\", slider.settings.slideMargin);\n if (slider.settings.mode === \"vertical\" && slider.settings.slideMargin > 0) slider.children.css(\"marginBottom\", slider.settings.slideMargin);\n // if \"fade\" mode, add positioning and z-index CSS\n if (slider.settings.mode === \"fade\") {\n slider.children.css({\n position: \"absolute\",\n zIndex: 0,\n display: \"none\"\n });\n // prepare the z-index on the showing element\n slider.children.eq(slider.settings.startSlide).css({\n zIndex: slider.settings.slideZIndex,\n display: \"block\"\n });\n }\n // create an element to contain all slider controls (pager, start / stop, etc)\n slider.controls.el = $('
');\n // if captions are requested, add them\n if (slider.settings.captions) appendCaptions();\n // check if startSlide is last slide\n slider.active.last = slider.settings.startSlide === getPagerQty() - 1;\n // if video is true, set up the fitVids plugin\n if (slider.settings.video) el.fitVids();\n if (slider.settings.preloadImages === \"all\" || slider.settings.ticker) preloadSelector = slider.children;\n // only check for control addition if not in \"ticker\" mode\n if (!slider.settings.ticker) {\n // if controls are requested, add them\n if (slider.settings.controls) appendControls();\n // if auto is true, and auto controls are requested, add them\n if (slider.settings.auto && slider.settings.autoControls) appendControlsAuto();\n // if pager is requested, add it\n if (slider.settings.pager) appendPager();\n // if any control option is requested, add the controls wrapper\n if (slider.settings.controls || slider.settings.autoControls || slider.settings.pager) slider.viewport.after(slider.controls.el);\n // if ticker mode, do not allow a pager\n } else slider.settings.pager = false;\n loadElements(preloadSelector, start);\n };\n var loadElements = function(selector, callback) {\n var total = selector.find('img:not([src=\"\"]), iframe').length, count = 0;\n if (total === 0) {\n callback();\n return;\n }\n selector.find('img:not([src=\"\"]), iframe').each(function() {\n $(this).one(\"load error\", function() {\n if (++count === total) callback();\n }).each(function() {\n if (this.complete) $(this).load();\n });\n });\n };\n /**\r\n * Start the slider\r\n */ var start = function() {\n // if infinite loop, prepare additional slides\n if (slider.settings.infiniteLoop && slider.settings.mode !== \"fade\" && !slider.settings.ticker) {\n var slice = slider.settings.mode === \"vertical\" ? slider.settings.minSlides : slider.settings.maxSlides, sliceAppend = slider.children.slice(0, slice).clone(true).addClass(\"bx-clone\"), slicePrepend = slider.children.slice(-slice).clone(true).addClass(\"bx-clone\");\n if (slider.settings.ariaHidden) {\n sliceAppend.attr(\"aria-hidden\", true);\n slicePrepend.attr(\"aria-hidden\", true);\n }\n el.append(sliceAppend).prepend(slicePrepend);\n }\n // remove the loading DOM element\n slider.loader.remove();\n // set the left / top position of \"el\"\n setSlidePosition();\n // if \"vertical\" mode, always use adaptiveHeight to prevent odd behavior\n if (slider.settings.mode === \"vertical\") slider.settings.adaptiveHeight = true;\n // set the viewport height\n slider.viewport.height(getViewportHeight());\n // make sure everything is positioned just right (same as a window resize)\n el.redrawSlider();\n // onSliderLoad callback\n slider.settings.onSliderLoad.call(el, slider.active.index);\n // slider has been fully initialized\n slider.initialized = true;\n // bind the resize call to the window\n if (slider.settings.responsive) $(window).bind(\"resize\", resizeWindow);\n // if auto is true and has more than 1 page, start the show\n if (slider.settings.auto && slider.settings.autoStart && (getPagerQty() > 1 || slider.settings.autoSlideForOnePage)) initAuto();\n // if ticker is true, start the ticker\n if (slider.settings.ticker) initTicker();\n // if pager is requested, make the appropriate pager link active\n if (slider.settings.pager) updatePagerActive(slider.settings.startSlide);\n // check for any updates to the controls (like hideControlOnEnd updates)\n if (slider.settings.controls) updateDirectionControls();\n // if touchEnabled is true, setup the touch events\n if (slider.settings.touchEnabled && !slider.settings.ticker) initTouch();\n // if keyboardEnabled is true, setup the keyboard events\n if (slider.settings.keyboardEnabled && !slider.settings.ticker) $(document).keydown(keyPress);\n };\n /**\r\n * Returns the calculated height of the viewport, used to determine either adaptiveHeight or the maxHeight value\r\n */ var getViewportHeight = function() {\n var height = el.outerHeight(), currentIndex = null, // first determine which children (slides) should be used in our height calculation\n children = $();\n // if mode is not \"vertical\" and adaptiveHeight is false, include all children\n if (slider.settings.mode !== \"vertical\" && !slider.settings.adaptiveHeight) children = slider.children;\n else // if not carousel, return the single active child\n if (!slider.carousel) children = slider.children.eq(slider.active.index);\n else {\n // get the individual slide index\n currentIndex = slider.settings.moveSlides === 1 ? slider.active.index : slider.active.index * getMoveBy();\n // add the current slide to the children\n children = slider.children.eq(currentIndex);\n // cycle through the remaining \"showing\" slides\n for(i = 1; i <= slider.settings.maxSlides - 1; i++)// if looped back to the start\n if (currentIndex + i >= slider.children.length) children = children.add(slider.children.eq(currentIndex + i - slider.children.length));\n else children = children.add(slider.children.eq(currentIndex + i));\n }\n // if \"vertical\" mode, calculate the sum of the heights of the children\n if (slider.settings.mode === \"vertical\") {\n children.each(function(index) {\n height += $(this).outerHeight();\n });\n // add user-supplied margins\n if (slider.settings.slideMargin > 0) height += slider.settings.slideMargin * (slider.settings.minSlides - 1);\n // if not \"vertical\" mode, calculate the max height of the children\n } else height = Math.max.apply(Math, children.map(function() {\n return $(this).outerHeight(false);\n }).get());\n if (slider.viewport.css(\"box-sizing\") === \"border-box\") height += parseFloat(slider.viewport.css(\"padding-top\")) + parseFloat(slider.viewport.css(\"padding-bottom\")) + parseFloat(slider.viewport.css(\"border-top-width\")) + parseFloat(slider.viewport.css(\"border-bottom-width\"));\n else if (slider.viewport.css(\"box-sizing\") === \"padding-box\") height += parseFloat(slider.viewport.css(\"padding-top\")) + parseFloat(slider.viewport.css(\"padding-bottom\"));\n return height;\n };\n /**\r\n * Returns the calculated width to be used for the outer wrapper / viewport\r\n */ var getViewportMaxWidth = function() {\n var width = \"100%\";\n if (slider.settings.slideWidth > 0) {\n if (slider.settings.mode === \"horizontal\") width = slider.settings.maxSlides * slider.settings.slideWidth + (slider.settings.maxSlides - 1) * slider.settings.slideMargin;\n else width = slider.settings.slideWidth;\n }\n return width;\n };\n /**\r\n * Returns the calculated width to be applied to each slide\r\n */ var getSlideWidth = function() {\n var newElWidth = slider.settings.slideWidth, wrapWidth = slider.viewport.width(); // get the current viewport width\n // if slide width was not supplied, or is larger than the viewport use the viewport width\n if (slider.settings.slideWidth === 0 || slider.settings.slideWidth > wrapWidth && !slider.carousel || slider.settings.mode === \"vertical\") newElWidth = wrapWidth;\n else if (slider.settings.maxSlides > 1 && slider.settings.mode === \"horizontal\") {\n if (wrapWidth > slider.maxThreshold) return newElWidth;\n else if (wrapWidth < slider.minThreshold) newElWidth = (wrapWidth - slider.settings.slideMargin * (slider.settings.minSlides - 1)) / slider.settings.minSlides;\n else if (slider.settings.shrinkItems) newElWidth = Math.floor((wrapWidth + slider.settings.slideMargin) / Math.ceil((wrapWidth + slider.settings.slideMargin) / (newElWidth + slider.settings.slideMargin)) - slider.settings.slideMargin);\n }\n return newElWidth;\n };\n /**\r\n * Returns the number of slides currently visible in the viewport (includes partially visible slides)\r\n */ var getNumberSlidesShowing = function() {\n var slidesShowing = 1, childWidth = null;\n if (slider.settings.mode === \"horizontal\" && slider.settings.slideWidth > 0) {\n // if viewport is smaller than minThreshold, return minSlides\n if (slider.viewport.width() < slider.minThreshold) slidesShowing = slider.settings.minSlides;\n else if (slider.viewport.width() > slider.maxThreshold) slidesShowing = slider.settings.maxSlides;\n else {\n childWidth = slider.children.first().width() + slider.settings.slideMargin;\n slidesShowing = Math.floor((slider.viewport.width() + slider.settings.slideMargin) / childWidth);\n }\n // if \"vertical\" mode, slides showing will always be minSlides\n } else if (slider.settings.mode === \"vertical\") slidesShowing = slider.settings.minSlides;\n return slidesShowing;\n };\n /**\r\n * Returns the number of pages (one full viewport of slides is one \"page\")\r\n */ var getPagerQty = function() {\n var pagerQty = 0, breakPoint = 0, counter = 0;\n // if moveSlides is specified by the user\n if (slider.settings.moveSlides > 0) {\n if (slider.settings.infiniteLoop) pagerQty = Math.ceil(slider.children.length / getMoveBy());\n else // when breakpoint goes above children length, counter is the number of pages\n while(breakPoint < slider.children.length){\n ++pagerQty;\n breakPoint = counter + getNumberSlidesShowing();\n counter += slider.settings.moveSlides <= getNumberSlidesShowing() ? slider.settings.moveSlides : getNumberSlidesShowing();\n }\n // if moveSlides is 0 (auto) divide children length by sides showing, then round up\n } else pagerQty = Math.ceil(slider.children.length / getNumberSlidesShowing());\n return pagerQty;\n };\n /**\r\n * Returns the number of individual slides by which to shift the slider\r\n */ var getMoveBy = function() {\n // if moveSlides was set by the user and moveSlides is less than number of slides showing\n if (slider.settings.moveSlides > 0 && slider.settings.moveSlides <= getNumberSlidesShowing()) return slider.settings.moveSlides;\n // if moveSlides is 0 (auto)\n return getNumberSlidesShowing();\n };\n /**\r\n * Sets the slider's (el) left or top position\r\n */ var setSlidePosition = function() {\n var position, lastChild, lastShowingIndex;\n // if last slide, not infinite loop, and number of children is larger than specified maxSlides\n if (slider.children.length > slider.settings.maxSlides && slider.active.last && !slider.settings.infiniteLoop) {\n if (slider.settings.mode === \"horizontal\") {\n // get the last child's position\n lastChild = slider.children.last();\n position = lastChild.position();\n // set the left position\n setPositionProperty(-(position.left - (slider.viewport.width() - lastChild.outerWidth())), \"reset\", 0);\n } else if (slider.settings.mode === \"vertical\") {\n // get the last showing index's position\n lastShowingIndex = slider.children.length - slider.settings.minSlides;\n position = slider.children.eq(lastShowingIndex).position();\n // set the top position\n setPositionProperty(-position.top, \"reset\", 0);\n }\n // if not last slide\n } else {\n // get the position of the first showing slide\n position = slider.children.eq(slider.active.index * getMoveBy()).position();\n // check for last slide\n if (slider.active.index === getPagerQty() - 1) slider.active.last = true;\n // set the respective position\n if (position !== undefined) {\n if (slider.settings.mode === \"horizontal\") setPositionProperty(-position.left, \"reset\", 0);\n else if (slider.settings.mode === \"vertical\") setPositionProperty(-position.top, \"reset\", 0);\n }\n }\n };\n /**\r\n * Sets the el's animating property position (which in turn will sometimes animate el).\r\n * If using CSS, sets the transform property. If not using CSS, sets the top / left property.\r\n *\r\n * @param value (int)\r\n * - the animating property's value\r\n *\r\n * @param type (string) 'slide', 'reset', 'ticker'\r\n * - the type of instance for which the function is being\r\n *\r\n * @param duration (int)\r\n * - the amount of time (in ms) the transition should occupy\r\n *\r\n * @param params (array) optional\r\n * - an optional parameter containing any variables that need to be passed in\r\n */ var setPositionProperty = function(value, type, duration, params) {\n var animateObj, propValue;\n // use CSS transform\n if (slider.usingCSS) {\n // determine the translate3d value\n propValue = slider.settings.mode === \"vertical\" ? \"translate3d(0, \" + value + \"px, 0)\" : \"translate3d(\" + value + \"px, 0, 0)\";\n // add the CSS transition-duration\n el.css(\"-\" + slider.cssPrefix + \"-transition-duration\", duration / 1000 + \"s\");\n if (type === \"slide\") {\n // set the property value\n el.css(slider.animProp, propValue);\n // bind a callback method - executes when CSS transition completes\n el.bind(\"transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd\", function(e) {\n //make sure it's the correct one\n if (!$(e.target).is(el)) return;\n // unbind the callback\n el.unbind(\"transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd\");\n updateAfterSlideTransition();\n });\n } else if (type === \"reset\") el.css(slider.animProp, propValue);\n else if (type === \"ticker\") {\n // make the transition use 'linear'\n el.css(\"-\" + slider.cssPrefix + \"-transition-timing-function\", \"linear\");\n el.css(slider.animProp, propValue);\n // bind a callback method - executes when CSS transition completes\n el.bind(\"transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd\", function(e) {\n //make sure it's the correct one\n if (!$(e.target).is(el)) return;\n // unbind the callback\n el.unbind(\"transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd\");\n // reset the position\n setPositionProperty(params.resetValue, \"reset\", 0);\n // start the loop again\n tickerLoop();\n });\n }\n // use JS animate\n } else {\n animateObj = {};\n animateObj[slider.animProp] = value;\n if (type === \"slide\") el.animate(animateObj, duration, slider.settings.easing, function() {\n updateAfterSlideTransition();\n });\n else if (type === \"reset\") el.css(slider.animProp, value);\n else if (type === \"ticker\") el.animate(animateObj, duration, \"linear\", function() {\n setPositionProperty(params.resetValue, \"reset\", 0);\n // run the recursive loop after animation\n tickerLoop();\n });\n }\n };\n /**\r\n * Populates the pager with proper amount of pages\r\n */ var populatePager = function() {\n var pagerHtml = \"\", linkContent = \"\", pagerQty = getPagerQty();\n // loop through each pager item\n for(i = 0; i < pagerQty; i++){\n linkContent = \"\";\n // if a buildPager function is supplied, use it to get pager link value, else use index + 1\n if (slider.settings.buildPager && $.isFunction(slider.settings.buildPager) || slider.settings.pagerCustom) {\n linkContent = slider.settings.buildPager(i);\n slider.pagerEl.addClass(\"bx-custom-pager\");\n } else {\n linkContent = i + 1;\n slider.pagerEl.addClass(\"bx-default-pager\");\n }\n // var linkContent = slider.settings.buildPager && $.isFunction(slider.settings.buildPager) ? slider.settings.buildPager(i) : i + 1;\n // add the markup to the string\n pagerHtml += '\";\n }\n // populate the pager element with pager links\n slider.pagerEl.html(pagerHtml);\n };\n /**\r\n * Appends the pager to the controls element\r\n */ var appendPager = function() {\n if (!slider.settings.pagerCustom) {\n // create the pager DOM element\n slider.pagerEl = $('
');\n // if a pager selector was supplied, populate it with the pager\n if (slider.settings.pagerSelector) $(slider.settings.pagerSelector).html(slider.pagerEl);\n else slider.controls.el.addClass(\"bx-has-pager\").append(slider.pagerEl);\n // populate the pager\n populatePager();\n } else slider.pagerEl = $(slider.settings.pagerCustom);\n // assign the pager click binding\n slider.pagerEl.on(\"click touchend\", \"a\", clickPagerBind);\n };\n /**\r\n * Appends prev / next controls to the controls element\r\n */ var appendControls = function() {\n slider.controls.next = $('' + slider.settings.nextText + \"\");\n slider.controls.prev = $('' + slider.settings.prevText + \"\");\n // bind click actions to the controls\n slider.controls.next.bind(\"click touchend\", clickNextBind);\n slider.controls.prev.bind(\"click touchend\", clickPrevBind);\n // if nextSelector was supplied, populate it\n if (slider.settings.nextSelector) $(slider.settings.nextSelector).append(slider.controls.next);\n // if prevSelector was supplied, populate it\n if (slider.settings.prevSelector) $(slider.settings.prevSelector).append(slider.controls.prev);\n // if no custom selectors were supplied\n if (!slider.settings.nextSelector && !slider.settings.prevSelector) {\n // add the controls to the DOM\n slider.controls.directionEl = $('
');\n // add the control elements to the directionEl\n slider.controls.directionEl.append(slider.controls.prev).append(slider.controls.next);\n // slider.viewport.append(slider.controls.directionEl);\n slider.controls.el.addClass(\"bx-has-controls-direction\").append(slider.controls.directionEl);\n }\n };\n /**\r\n * Appends start / stop auto controls to the controls element\r\n */ var appendControlsAuto = function() {\n slider.controls.start = $('\");\n slider.controls.stop = $('\");\n // add the controls to the DOM\n slider.controls.autoEl = $('
');\n // bind click actions to the controls\n slider.controls.autoEl.on(\"click\", \".bx-start\", clickStartBind);\n slider.controls.autoEl.on(\"click\", \".bx-stop\", clickStopBind);\n // if autoControlsCombine, insert only the \"start\" control\n if (slider.settings.autoControlsCombine) slider.controls.autoEl.append(slider.controls.start);\n else slider.controls.autoEl.append(slider.controls.start).append(slider.controls.stop);\n // if auto controls selector was supplied, populate it with the controls\n if (slider.settings.autoControlsSelector) $(slider.settings.autoControlsSelector).html(slider.controls.autoEl);\n else slider.controls.el.addClass(\"bx-has-controls-auto\").append(slider.controls.autoEl);\n // update the auto controls\n updateAutoControls(slider.settings.autoStart ? \"stop\" : \"start\");\n };\n /**\r\n * Appends image captions to the DOM\r\n */ var appendCaptions = function() {\n // cycle through each child\n slider.children.each(function(index) {\n // get the image title attribute\n var title = $(this).find(\"img:first\").attr(\"title\");\n // append the caption\n if (title !== undefined && (\"\" + title).length) $(this).append('
' + title + \"
\");\n });\n };\n /**\r\n * Click next binding\r\n *\r\n * @param e (event)\r\n * - DOM event object\r\n */ var clickNextBind = function(e) {\n e.preventDefault();\n if (slider.controls.el.hasClass(\"disabled\")) return;\n // if auto show is running, stop it\n if (slider.settings.auto && slider.settings.stopAutoOnClick) el.stopAuto();\n el.goToNextSlide();\n };\n /**\r\n * Click prev binding\r\n *\r\n * @param e (event)\r\n * - DOM event object\r\n */ var clickPrevBind = function(e) {\n e.preventDefault();\n if (slider.controls.el.hasClass(\"disabled\")) return;\n // if auto show is running, stop it\n if (slider.settings.auto && slider.settings.stopAutoOnClick) el.stopAuto();\n el.goToPrevSlide();\n };\n /**\r\n * Click start binding\r\n *\r\n * @param e (event)\r\n * - DOM event object\r\n */ var clickStartBind = function(e) {\n el.startAuto();\n e.preventDefault();\n };\n /**\r\n * Click stop binding\r\n *\r\n * @param e (event)\r\n * - DOM event object\r\n */ var clickStopBind = function(e) {\n el.stopAuto();\n e.preventDefault();\n };\n /**\r\n * Click pager binding\r\n *\r\n * @param e (event)\r\n * - DOM event object\r\n */ var clickPagerBind = function(e) {\n var pagerLink, pagerIndex;\n e.preventDefault();\n if (slider.controls.el.hasClass(\"disabled\")) return;\n // if auto show is running, stop it\n if (slider.settings.auto && slider.settings.stopAutoOnClick) el.stopAuto();\n pagerLink = $(e.currentTarget);\n if (pagerLink.attr(\"data-slide-index\") !== undefined) {\n pagerIndex = parseInt(pagerLink.attr(\"data-slide-index\"));\n // if clicked pager link is not active, continue with the goToSlide call\n if (pagerIndex !== slider.active.index) el.goToSlide(pagerIndex);\n }\n };\n /**\r\n * Updates the pager links with an active class\r\n *\r\n * @param slideIndex (int)\r\n * - index of slide to make active\r\n */ var updatePagerActive = function(slideIndex) {\n // if \"short\" pager type\n var len = slider.children.length; // nb of children\n if (slider.settings.pagerType === \"short\") {\n if (slider.settings.maxSlides > 1) len = Math.ceil(slider.children.length / slider.settings.maxSlides);\n slider.pagerEl.html(slideIndex + 1 + slider.settings.pagerShortSeparator + len);\n return;\n }\n // remove all pager active classes\n slider.pagerEl.find(\"a\").removeClass(\"active\");\n // apply the active class for all pagers\n slider.pagerEl.each(function(i1, el) {\n $(el).find(\"a\").eq(slideIndex).addClass(\"active\");\n });\n };\n /**\r\n * Performs needed actions after a slide transition\r\n */ var updateAfterSlideTransition = function() {\n // if infinite loop is true\n if (slider.settings.infiniteLoop) {\n var position = \"\";\n // first slide\n if (slider.active.index === 0) // set the new position\n position = slider.children.eq(0).position();\n else if (slider.active.index === getPagerQty() - 1 && slider.carousel) position = slider.children.eq((getPagerQty() - 1) * getMoveBy()).position();\n else if (slider.active.index === slider.children.length - 1) position = slider.children.eq(slider.children.length - 1).position();\n if (position) {\n if (slider.settings.mode === \"horizontal\") setPositionProperty(-position.left, \"reset\", 0.01);\n else if (slider.settings.mode === \"vertical\") setPositionProperty(-position.top, \"reset\", 0.01);\n }\n }\n // declare that the transition is complete\n slider.working = false;\n // onSlideAfter callback\n slider.settings.onSlideAfter.call(el, slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index);\n };\n /**\r\n * Updates the auto controls state (either active, or combined switch)\r\n *\r\n * @param state (string) \"start\", \"stop\"\r\n * - the new state of the auto show\r\n */ var updateAutoControls = function(state) {\n // if autoControlsCombine is true, replace the current control with the new state\n if (slider.settings.autoControlsCombine) slider.controls.autoEl.html(slider.controls[state]);\n else {\n slider.controls.autoEl.find(\"a\").removeClass(\"active\");\n slider.controls.autoEl.find(\"a:not(.bx-\" + state + \")\").addClass(\"active\");\n }\n };\n /**\r\n * Updates the direction controls (checks if either should be hidden)\r\n */ var updateDirectionControls = function() {\n if (getPagerQty() === 1) {\n slider.controls.prev.addClass(\"disabled\");\n slider.controls.next.addClass(\"disabled\");\n } else if (!slider.settings.infiniteLoop && slider.settings.hideControlOnEnd) {\n // if first slide\n if (slider.active.index === 0) {\n slider.controls.prev.addClass(\"disabled\");\n slider.controls.next.removeClass(\"disabled\");\n // if last slide\n } else if (slider.active.index === getPagerQty() - 1) {\n slider.controls.next.addClass(\"disabled\");\n slider.controls.prev.removeClass(\"disabled\");\n // if any slide in the middle\n } else {\n slider.controls.prev.removeClass(\"disabled\");\n slider.controls.next.removeClass(\"disabled\");\n }\n }\n };\n /**\r\n * Initializes the auto process\r\n */ var initAuto = function() {\n // if autoDelay was supplied, launch the auto show using a setTimeout() call\n if (slider.settings.autoDelay > 0) var timeout = setTimeout(el.startAuto, slider.settings.autoDelay);\n else {\n el.startAuto();\n //add focus and blur events to ensure its running if timeout gets paused\n $(window).focus(function() {\n el.startAuto();\n }).blur(function() {\n el.stopAuto();\n });\n }\n // if autoHover is requested\n if (slider.settings.autoHover) // on el hover\n el.hover(function() {\n // if the auto show is currently playing (has an active interval)\n if (slider.interval) {\n // stop the auto show and pass true argument which will prevent control update\n el.stopAuto(true);\n // create a new autoPaused value which will be used by the relative \"mouseout\" event\n slider.autoPaused = true;\n }\n }, function() {\n // if the autoPaused value was created be the prior \"mouseover\" event\n if (slider.autoPaused) {\n // start the auto show and pass true argument which will prevent control update\n el.startAuto(true);\n // reset the autoPaused value\n slider.autoPaused = null;\n }\n });\n };\n /**\r\n * Initializes the ticker process\r\n */ var initTicker = function() {\n var startPosition = 0, position, transform, value, idx, ratio, property, newSpeed, totalDimens;\n // if autoDirection is \"next\", append a clone of the entire slider\n if (slider.settings.autoDirection === \"next\") el.append(slider.children.clone().addClass(\"bx-clone\"));\n else {\n el.prepend(slider.children.clone().addClass(\"bx-clone\"));\n position = slider.children.first().position();\n startPosition = slider.settings.mode === \"horizontal\" ? -position.left : -position.top;\n }\n setPositionProperty(startPosition, \"reset\", 0);\n // do not allow controls in ticker mode\n slider.settings.pager = false;\n slider.settings.controls = false;\n slider.settings.autoControls = false;\n // if autoHover is requested\n if (slider.settings.tickerHover) {\n if (slider.usingCSS) {\n idx = slider.settings.mode === \"horizontal\" ? 4 : 5;\n slider.viewport.hover(function() {\n transform = el.css(\"-\" + slider.cssPrefix + \"-transform\");\n value = parseFloat(transform.split(\",\")[idx]);\n setPositionProperty(value, \"reset\", 0);\n }, function() {\n totalDimens = 0;\n slider.children.each(function(index) {\n totalDimens += slider.settings.mode === \"horizontal\" ? $(this).outerWidth(true) : $(this).outerHeight(true);\n });\n // calculate the speed ratio (used to determine the new speed to finish the paused animation)\n ratio = slider.settings.speed / totalDimens;\n // determine which property to use\n property = slider.settings.mode === \"horizontal\" ? \"left\" : \"top\";\n // calculate the new speed\n newSpeed = ratio * (totalDimens - Math.abs(parseInt(value)));\n tickerLoop(newSpeed);\n });\n } else // on el hover\n slider.viewport.hover(function() {\n el.stop();\n }, function() {\n // calculate the total width of children (used to calculate the speed ratio)\n totalDimens = 0;\n slider.children.each(function(index) {\n totalDimens += slider.settings.mode === \"horizontal\" ? $(this).outerWidth(true) : $(this).outerHeight(true);\n });\n // calculate the speed ratio (used to determine the new speed to finish the paused animation)\n ratio = slider.settings.speed / totalDimens;\n // determine which property to use\n property = slider.settings.mode === \"horizontal\" ? \"left\" : \"top\";\n // calculate the new speed\n newSpeed = ratio * (totalDimens - Math.abs(parseInt(el.css(property))));\n tickerLoop(newSpeed);\n });\n }\n // start the ticker loop\n tickerLoop();\n };\n /**\r\n * Runs a continuous loop, news ticker-style\r\n */ var tickerLoop = function(resumeSpeed) {\n var speed = resumeSpeed ? resumeSpeed : slider.settings.speed, position = {\n left: 0,\n top: 0\n }, reset = {\n left: 0,\n top: 0\n }, animateProperty, resetValue, params;\n // if \"next\" animate left position to last child, then reset left to 0\n if (slider.settings.autoDirection === \"next\") position = el.find(\".bx-clone\").first().position();\n else reset = slider.children.first().position();\n animateProperty = slider.settings.mode === \"horizontal\" ? -position.left : -position.top;\n resetValue = slider.settings.mode === \"horizontal\" ? -reset.left : -reset.top;\n params = {\n resetValue: resetValue\n };\n setPositionProperty(animateProperty, \"ticker\", speed, params);\n };\n /**\r\n * Check if el is on screen\r\n */ var isOnScreen = function(el) {\n var win = $(window), viewport = {\n top: win.scrollTop(),\n left: win.scrollLeft()\n }, bounds = el.offset();\n viewport.right = viewport.left + win.width();\n viewport.bottom = viewport.top + win.height();\n bounds.right = bounds.left + el.outerWidth();\n bounds.bottom = bounds.top + el.outerHeight();\n return !(viewport.right < bounds.left || viewport.left > bounds.right || viewport.bottom < bounds.top || viewport.top > bounds.bottom);\n };\n /**\r\n * Initializes keyboard events\r\n */ var keyPress = function(e) {\n var activeElementTag = document.activeElement.tagName.toLowerCase(), tagFilters = \"input|textarea\", p = new RegExp(activeElementTag, [\n \"i\"\n ]), result = p.exec(tagFilters);\n if (result == null && isOnScreen(el)) {\n if (e.keyCode === 39) {\n clickNextBind(e);\n return false;\n } else if (e.keyCode === 37) {\n clickPrevBind(e);\n return false;\n }\n }\n };\n /**\r\n * Initializes touch events\r\n */ var initTouch = function() {\n // initialize object to contain all touch values\n slider.touch = {\n start: {\n x: 0,\n y: 0\n },\n end: {\n x: 0,\n y: 0\n }\n };\n slider.viewport.bind(\"touchstart MSPointerDown pointerdown\", onTouchStart);\n //for browsers that have implemented pointer events and fire a click after\n //every pointerup regardless of whether pointerup is on same screen location as pointerdown or not\n slider.viewport.on(\"click\", \".bxslider a\", function(e) {\n if (slider.viewport.hasClass(\"click-disabled\")) {\n e.preventDefault();\n slider.viewport.removeClass(\"click-disabled\");\n }\n });\n };\n /**\r\n * Event handler for \"touchstart\"\r\n *\r\n * @param e (event)\r\n * - DOM event object\r\n */ var onTouchStart = function(e) {\n //disable slider controls while user is interacting with slides to avoid slider freeze that happens on touch devices when a slide swipe happens immediately after interacting with slider controls\n slider.controls.el.addClass(\"disabled\");\n if (slider.working) {\n e.preventDefault();\n slider.controls.el.removeClass(\"disabled\");\n } else {\n // record the original position when touch starts\n slider.touch.originalPos = el.position();\n var orig = e.originalEvent, touchPoints = typeof orig.changedTouches !== \"undefined\" ? orig.changedTouches : [\n orig\n ];\n // record the starting touch x, y coordinates\n slider.touch.start.x = touchPoints[0].pageX;\n slider.touch.start.y = touchPoints[0].pageY;\n if (slider.viewport.get(0).setPointerCapture) {\n slider.pointerId = orig.pointerId;\n slider.viewport.get(0).setPointerCapture(slider.pointerId);\n }\n // bind a \"touchmove\" event to the viewport\n slider.viewport.bind(\"touchmove MSPointerMove pointermove\", onTouchMove);\n // bind a \"touchend\" event to the viewport\n slider.viewport.bind(\"touchend MSPointerUp pointerup\", onTouchEnd);\n slider.viewport.bind(\"MSPointerCancel pointercancel\", onPointerCancel);\n }\n };\n /**\r\n * Cancel Pointer for Windows Phone\r\n *\r\n * @param e (event)\r\n * - DOM event object\r\n */ var onPointerCancel = function(e) {\n /* onPointerCancel handler is needed to deal with situations when a touchend\r\n doesn't fire after a touchstart (this happens on windows phones only) */ setPositionProperty(slider.touch.originalPos.left, \"reset\", 0);\n //remove handlers\n slider.controls.el.removeClass(\"disabled\");\n slider.viewport.unbind(\"MSPointerCancel pointercancel\", onPointerCancel);\n slider.viewport.unbind(\"touchmove MSPointerMove pointermove\", onTouchMove);\n slider.viewport.unbind(\"touchend MSPointerUp pointerup\", onTouchEnd);\n if (slider.viewport.get(0).releasePointerCapture) slider.viewport.get(0).releasePointerCapture(slider.pointerId);\n };\n /**\r\n * Event handler for \"touchmove\"\r\n *\r\n * @param e (event)\r\n * - DOM event object\r\n */ var onTouchMove = function(e) {\n var orig = e.originalEvent, touchPoints = typeof orig.changedTouches !== \"undefined\" ? orig.changedTouches : [\n orig\n ], // if scrolling on y axis, do not prevent default\n xMovement = Math.abs(touchPoints[0].pageX - slider.touch.start.x), yMovement = Math.abs(touchPoints[0].pageY - slider.touch.start.y), value = 0, change = 0;\n // x axis swipe\n if (xMovement * 3 > yMovement && slider.settings.preventDefaultSwipeX) e.preventDefault();\n else if (yMovement * 3 > xMovement && slider.settings.preventDefaultSwipeY) e.preventDefault();\n if (slider.settings.mode !== \"fade\" && slider.settings.oneToOneTouch) {\n // if horizontal, drag along x axis\n if (slider.settings.mode === \"horizontal\") {\n change = touchPoints[0].pageX - slider.touch.start.x;\n value = slider.touch.originalPos.left + change;\n // if vertical, drag along y axis\n } else {\n change = touchPoints[0].pageY - slider.touch.start.y;\n value = slider.touch.originalPos.top + change;\n }\n setPositionProperty(value, \"reset\", 0);\n }\n };\n /**\r\n * Event handler for \"touchend\"\r\n *\r\n * @param e (event)\r\n * - DOM event object\r\n */ var onTouchEnd = function(e) {\n slider.viewport.unbind(\"touchmove MSPointerMove pointermove\", onTouchMove);\n //enable slider controls as soon as user stops interacing with slides\n slider.controls.el.removeClass(\"disabled\");\n var orig = e.originalEvent, touchPoints = typeof orig.changedTouches !== \"undefined\" ? orig.changedTouches : [\n orig\n ], value = 0, distance = 0;\n // record end x, y positions\n slider.touch.end.x = touchPoints[0].pageX;\n slider.touch.end.y = touchPoints[0].pageY;\n // if fade mode, check if absolute x distance clears the threshold\n if (slider.settings.mode === \"fade\") {\n distance = Math.abs(slider.touch.start.x - slider.touch.end.x);\n if (distance >= slider.settings.swipeThreshold) {\n if (slider.touch.start.x > slider.touch.end.x) el.goToNextSlide();\n else el.goToPrevSlide();\n el.stopAuto();\n }\n // not fade mode\n } else {\n // calculate distance and el's animate property\n if (slider.settings.mode === \"horizontal\") {\n distance = slider.touch.end.x - slider.touch.start.x;\n value = slider.touch.originalPos.left;\n } else {\n distance = slider.touch.end.y - slider.touch.start.y;\n value = slider.touch.originalPos.top;\n }\n // if not infinite loop and first / last slide, do not attempt a slide transition\n if (!slider.settings.infiniteLoop && (slider.active.index === 0 && distance > 0 || slider.active.last && distance < 0)) setPositionProperty(value, \"reset\", 200);\n else // check if distance clears threshold\n if (Math.abs(distance) >= slider.settings.swipeThreshold) {\n if (distance < 0) el.goToNextSlide();\n else el.goToPrevSlide();\n el.stopAuto();\n } else // el.animate(property, 200);\n setPositionProperty(value, \"reset\", 200);\n }\n slider.viewport.unbind(\"touchend MSPointerUp pointerup\", onTouchEnd);\n if (slider.viewport.get(0).releasePointerCapture) slider.viewport.get(0).releasePointerCapture(slider.pointerId);\n };\n /**\r\n * Window resize event callback\r\n */ var resizeWindow = function(e) {\n // don't do anything if slider isn't initialized.\n if (!slider.initialized) return;\n // Delay if slider working.\n if (slider.working) window.setTimeout(resizeWindow, 10);\n else {\n // get the new window dimens (again, thank you IE)\n var windowWidthNew = $(window).width(), windowHeightNew = $(window).height();\n // make sure that it is a true window resize\n // *we must check this because our dinosaur friend IE fires a window resize event when certain DOM elements\n // are resized. Can you just die already?*\n if (windowWidth !== windowWidthNew || windowHeight !== windowHeightNew) {\n // set the new window dimens\n windowWidth = windowWidthNew;\n windowHeight = windowHeightNew;\n // update all dynamic elements\n el.redrawSlider();\n // Call user resize handler\n slider.settings.onSliderResize.call(el, slider.active.index);\n }\n }\n };\n /**\r\n * Adds an aria-hidden=true attribute to each element\r\n *\r\n * @param startVisibleIndex (int)\r\n * - the first visible element's index\r\n */ var applyAriaHiddenAttributes = function(startVisibleIndex) {\n var numberOfSlidesShowing = getNumberSlidesShowing();\n // only apply attributes if the setting is enabled and not in ticker mode\n if (slider.settings.ariaHidden && !slider.settings.ticker) {\n // add aria-hidden=true to all elements\n slider.children.attr(\"aria-hidden\", \"true\");\n // get the visible elements and change to aria-hidden=false\n slider.children.slice(startVisibleIndex, startVisibleIndex + numberOfSlidesShowing).attr(\"aria-hidden\", \"false\");\n }\n };\n /**\r\n * ===================================================================================\r\n * = PUBLIC FUNCTIONS\r\n * ===================================================================================\r\n */ /**\r\n * Performs slide transition to the specified slide\r\n *\r\n * @param slideIndex (int)\r\n * - the destination slide's index (zero-based)\r\n *\r\n * @param direction (string)\r\n * - INTERNAL USE ONLY - the direction of travel (\"prev\" / \"next\")\r\n */ el.goToSlide = function(slideIndex, direction) {\n // onSlideBefore, onSlideNext, onSlidePrev callbacks\n // Allow transition canceling based on returned value\n var performTransition = true, moveBy = 0, position = {\n left: 0,\n top: 0\n }, lastChild = null, lastShowingIndex, eq, value, requestEl;\n // if plugin is currently in motion, ignore request\n if (slider.working || slider.active.index === slideIndex) return;\n // declare that plugin is in motion\n slider.working = true;\n // store the old index\n slider.oldIndex = slider.active.index;\n // if slideIndex is less than zero, set active index to last child (this happens during infinite loop)\n if (slideIndex < 0) slider.active.index = getPagerQty() - 1;\n else if (slideIndex >= getPagerQty()) slider.active.index = 0;\n else slider.active.index = slideIndex;\n performTransition = slider.settings.onSlideBefore.call(el, slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index);\n if (typeof performTransition !== \"undefined\" && !performTransition) {\n slider.active.index = slider.oldIndex; // restore old index\n slider.working = false; // is not in motion\n return;\n }\n if (direction === \"next\") // Prevent canceling in future functions or lack there-of from negating previous commands to cancel\n {\n if (!slider.settings.onSlideNext.call(el, slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index)) performTransition = false;\n } else if (direction === \"prev\") // Prevent canceling in future functions or lack there-of from negating previous commands to cancel\n {\n if (!slider.settings.onSlidePrev.call(el, slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index)) performTransition = false;\n }\n // If transitions canceled, reset and return\n if (typeof performTransition !== \"undefined\" && !performTransition) {\n slider.active.index = slider.oldIndex; // restore old index\n slider.working = false; // is not in motion\n return;\n }\n // check if last slide\n slider.active.last = slider.active.index >= getPagerQty() - 1;\n // update the pager with active class\n if (slider.settings.pager || slider.settings.pagerCustom) updatePagerActive(slider.active.index);\n // // check for direction control update\n if (slider.settings.controls) updateDirectionControls();\n // if slider is set to mode: \"fade\"\n if (slider.settings.mode === \"fade\") {\n // if adaptiveHeight is true and next height is different from current height, animate to the new height\n if (slider.settings.adaptiveHeight && slider.viewport.height() !== getViewportHeight()) slider.viewport.animate({\n height: getViewportHeight()\n }, slider.settings.adaptiveHeightSpeed);\n // fade out the visible child and reset its z-index value\n slider.children.filter(\":visible\").fadeOut(slider.settings.speed).css({\n zIndex: 0\n });\n // fade in the newly requested slide\n slider.children.eq(slider.active.index).css(\"zIndex\", slider.settings.slideZIndex + 1).fadeIn(slider.settings.speed, function() {\n $(this).css(\"zIndex\", slider.settings.slideZIndex);\n updateAfterSlideTransition();\n });\n // slider mode is not \"fade\"\n } else {\n // if adaptiveHeight is true and next height is different from current height, animate to the new height\n if (slider.settings.adaptiveHeight && slider.viewport.height() !== getViewportHeight()) slider.viewport.animate({\n height: getViewportHeight()\n }, slider.settings.adaptiveHeightSpeed);\n // if carousel and not infinite loop\n if (!slider.settings.infiniteLoop && slider.carousel && slider.active.last) {\n if (slider.settings.mode === \"horizontal\") {\n // get the last child position\n lastChild = slider.children.eq(slider.children.length - 1);\n position = lastChild.position();\n // calculate the position of the last slide\n moveBy = slider.viewport.width() - lastChild.outerWidth();\n } else {\n // get last showing index position\n lastShowingIndex = slider.children.length - slider.settings.minSlides;\n position = slider.children.eq(lastShowingIndex).position();\n }\n } else if (slider.carousel && slider.active.last && direction === \"prev\") {\n // get the last child position\n eq = slider.settings.moveSlides === 1 ? slider.settings.maxSlides - getMoveBy() : (getPagerQty() - 1) * getMoveBy() - (slider.children.length - slider.settings.maxSlides);\n lastChild = el.children(\".bx-clone\").eq(eq);\n position = lastChild.position();\n // if infinite loop and \"Next\" is clicked on the last slide\n } else if (direction === \"next\" && slider.active.index === 0) {\n // get the last clone position\n position = el.find(\"> .bx-clone\").eq(slider.settings.maxSlides).position();\n slider.active.last = false;\n // normal non-zero requests\n } else if (slideIndex >= 0) {\n requestEl = slideIndex * getMoveBy();\n position = slider.children.eq(requestEl).position();\n }\n value = slider.settings.mode === \"horizontal\" ? -(position.left - moveBy) : -position.top;\n // plugin values to be animated\n setPositionProperty(value, \"slide\", slider.settings.speed);\n }\n if (slider.settings.ariaHidden) applyAriaHiddenAttributes(slider.active.index * getMoveBy());\n };\n /**\r\n * Transitions to the next slide in the show\r\n */ el.goToNextSlide = function() {\n // if infiniteLoop is false and last page is showing, disregard call\n if (!slider.settings.infiniteLoop && slider.active.last) return;\n var pagerIndex = parseInt(slider.active.index) + 1;\n el.goToSlide(pagerIndex, \"next\");\n };\n /**\r\n * Transitions to the prev slide in the show\r\n */ el.goToPrevSlide = function() {\n // if infiniteLoop is false and last page is showing, disregard call\n if (!slider.settings.infiniteLoop && slider.active.index === 0) return;\n var pagerIndex = parseInt(slider.active.index) - 1;\n el.goToSlide(pagerIndex, \"prev\");\n };\n /**\r\n * Starts the auto show\r\n *\r\n * @param preventControlUpdate (boolean)\r\n * - if true, auto controls state will not be updated\r\n */ el.startAuto = function(preventControlUpdate) {\n // if an interval already exists, disregard call\n if (slider.interval) return;\n // create an interval\n slider.interval = setInterval(function() {\n if (slider.settings.autoDirection === \"next\") el.goToNextSlide();\n else el.goToPrevSlide();\n }, slider.settings.pause);\n // if auto controls are displayed and preventControlUpdate is not true\n if (slider.settings.autoControls && preventControlUpdate !== true) updateAutoControls(\"stop\");\n };\n /**\r\n * Stops the auto show\r\n *\r\n * @param preventControlUpdate (boolean)\r\n * - if true, auto controls state will not be updated\r\n */ el.stopAuto = function(preventControlUpdate) {\n // if no interval exists, disregard call\n if (!slider.interval) return;\n // clear the interval\n clearInterval(slider.interval);\n slider.interval = null;\n // if auto controls are displayed and preventControlUpdate is not true\n if (slider.settings.autoControls && preventControlUpdate !== true) updateAutoControls(\"start\");\n };\n /**\r\n * Returns current slide index (zero-based)\r\n */ el.getCurrentSlide = function() {\n return slider.active.index;\n };\n /**\r\n * Returns current slide element\r\n */ el.getCurrentSlideElement = function() {\n return slider.children.eq(slider.active.index);\n };\n /**\r\n * Returns a slide element\r\n * @param index (int)\r\n * - The index (zero-based) of the element you want returned.\r\n */ el.getSlideElement = function(index) {\n return slider.children.eq(index);\n };\n /**\r\n * Returns number of slides in show\r\n */ el.getSlideCount = function() {\n return slider.children.length;\n };\n /**\r\n * Return slider.working variable\r\n */ el.isWorking = function() {\n return slider.working;\n };\n /**\r\n * Update all dynamic slider elements\r\n */ el.redrawSlider = function() {\n // resize all children in ratio to new screen size\n slider.children.add(el.find(\".bx-clone\")).outerWidth(getSlideWidth());\n // adjust the height\n slider.viewport.css(\"height\", getViewportHeight());\n // update the slide position\n if (!slider.settings.ticker) setSlidePosition();\n // if active.last was true before the screen resize, we want\n // to keep it last no matter what screen size we end on\n if (slider.active.last) slider.active.index = getPagerQty() - 1;\n // if the active index (page) no longer exists due to the resize, simply set the index as last\n if (slider.active.index >= getPagerQty()) slider.active.last = true;\n // if a pager is being displayed and a custom pager is not being used, update it\n if (slider.settings.pager && !slider.settings.pagerCustom) {\n populatePager();\n updatePagerActive(slider.active.index);\n }\n if (slider.settings.ariaHidden) applyAriaHiddenAttributes(slider.active.index * getMoveBy());\n };\n /**\r\n * Destroy the current instance of the slider (revert everything back to original state)\r\n */ el.destroySlider = function() {\n // don't do anything if slider has already been destroyed\n if (!slider.initialized) return;\n slider.initialized = false;\n $(\".bx-clone\", this).remove();\n slider.children.each(function() {\n if ($(this).data(\"origStyle\") !== undefined) $(this).attr(\"style\", $(this).data(\"origStyle\"));\n else $(this).removeAttr(\"style\");\n });\n if ($(this).data(\"origStyle\") !== undefined) this.attr(\"style\", $(this).data(\"origStyle\"));\n else $(this).removeAttr(\"style\");\n $(this).unwrap().unwrap();\n if (slider.controls.el) slider.controls.el.remove();\n if (slider.controls.next) slider.controls.next.remove();\n if (slider.controls.prev) slider.controls.prev.remove();\n if (slider.pagerEl && slider.settings.controls && !slider.settings.pagerCustom) slider.pagerEl.remove();\n $(\".bx-caption\", this).remove();\n if (slider.controls.autoEl) slider.controls.autoEl.remove();\n clearInterval(slider.interval);\n if (slider.settings.responsive) $(window).unbind(\"resize\", resizeWindow);\n if (slider.settings.keyboardEnabled) $(document).unbind(\"keydown\", keyPress);\n //remove self reference in data\n $(this).removeData(\"bxSlider\");\n };\n /**\r\n * Reload the slider (revert all DOM changes, and re-initialize)\r\n */ el.reloadSlider = function(settings) {\n if (settings !== undefined) options = settings;\n el.destroySlider();\n init();\n //store reference to self in order to access public functions later\n $(el).data(\"bxSlider\", this);\n };\n init();\n $(el).data(\"bxSlider\", this);\n // returns the current jQuery object\n return this;\n };\n})(jQuery);\n\n\n/**\n * History.js jQuery Adapter\n * @author Benjamin Arthur Lupton \n * @copyright 2010-2011 Benjamin Arthur Lupton \n * @license New BSD License \n */ // Closure\n(function(window1, undefined) {\n \"use strict\";\n // Localise Globals\n var History = window1.History = window1.History || {}, jQuery = window1.jQuery;\n // Check Existence\n if (typeof History.Adapter !== \"undefined\") throw new Error(\"History.js Adapter has already been loaded...\");\n // Add the Adapter\n History.Adapter = {\n /**\n\t\t * History.Adapter.bind(el,event,callback)\n\t\t * @param {Element|string} el\n\t\t * @param {string} event - custom and standard events\n\t\t * @param {function} callback\n\t\t * @return {void}\n\t\t */ bind: function(el, event, callback) {\n jQuery(el).bind(event, callback);\n },\n /**\n\t\t * History.Adapter.trigger(el,event)\n\t\t * @param {Element|string} el\n\t\t * @param {string} event - custom and standard events\n\t\t * @param {Object=} extra - a object of extra event data (optional)\n\t\t * @return {void}\n\t\t */ trigger: function(el, event, extra) {\n jQuery(el).trigger(event, extra);\n },\n /**\n\t\t * History.Adapter.extractEventData(key,event,extra)\n\t\t * @param {string} key - key for the event data to extract\n\t\t * @param {string} event - custom and standard events\n\t\t * @param {Object=} extra - a object of extra event data (optional)\n\t\t * @return {mixed}\n\t\t */ extractEventData: function(key, event, extra) {\n // jQuery Native then jQuery Custom\n var result = event && event.originalEvent && event.originalEvent[key] || extra && extra[key] || undefined;\n // Return\n return result;\n },\n /**\n\t\t * History.Adapter.onDomLoad(callback)\n\t\t * @param {function} callback\n\t\t * @return {void}\n\t\t */ onDomLoad: function(callback) {\n jQuery(callback);\n }\n };\n // Try and Initialise History\n if (typeof History.init !== \"undefined\") History.init();\n})(window);\n/**\n * History.js Core\n * @author Benjamin Arthur Lupton \n * @copyright 2010-2011 Benjamin Arthur Lupton \n * @license New BSD License \n */ (function(window1, undefined) {\n \"use strict\";\n // ========================================================================\n // Initialise\n // Localise Globals\n var console = window1.console || undefined, document = window1.document, navigator = window1.navigator, sessionStorage = false, setTimeout = window1.setTimeout, clearTimeout = window1.clearTimeout, setInterval = window1.setInterval, clearInterval = window1.clearInterval, JSON = window1.JSON, alert = window1.alert, History = window1.History = window1.History || {}, history = window1.history; // Old History Object\n try {\n sessionStorage = window1.sessionStorage; // This will throw an exception in some browsers when cookies/localStorage are explicitly disabled (i.e. Chrome)\n sessionStorage.setItem(\"TEST\", \"1\");\n sessionStorage.removeItem(\"TEST\");\n } catch (e) {\n sessionStorage = false;\n }\n // MooTools Compatibility\n JSON.stringify = JSON.stringify || JSON.encode;\n JSON.parse = JSON.parse || JSON.decode;\n // Check Existence\n if (typeof History.init !== \"undefined\") throw new Error(\"History.js Core has already been loaded...\");\n // Initialise History\n History.init = function(options) {\n // Check Load Status of Adapter\n if (typeof History.Adapter === \"undefined\") return false;\n // Check Load Status of Core\n if (typeof History.initCore !== \"undefined\") History.initCore();\n // Check Load Status of HTML4 Support\n if (typeof History.initHtml4 !== \"undefined\") History.initHtml4();\n // Return true\n return true;\n };\n // ========================================================================\n // Initialise Core\n // Initialise Core\n History.initCore = function(options) {\n // Initialise\n if (typeof History.initCore.initialized !== \"undefined\") // Already Loaded\n return false;\n else History.initCore.initialized = true;\n // ====================================================================\n // Options\n /**\n\t\t * History.options\n\t\t * Configurable options\n\t\t */ History.options = History.options || {};\n /**\n\t\t * History.options.hashChangeInterval\n\t\t * How long should the interval be before hashchange checks\n\t\t */ History.options.hashChangeInterval = History.options.hashChangeInterval || 100;\n /**\n\t\t * History.options.safariPollInterval\n\t\t * How long should the interval be before safari poll checks\n\t\t */ History.options.safariPollInterval = History.options.safariPollInterval || 500;\n /**\n\t\t * History.options.doubleCheckInterval\n\t\t * How long should the interval be before we perform a double check\n\t\t */ History.options.doubleCheckInterval = History.options.doubleCheckInterval || 500;\n /**\n\t\t * History.options.disableSuid\n\t\t * Force History not to append suid\n\t\t */ History.options.disableSuid = History.options.disableSuid || false;\n /**\n\t\t * History.options.storeInterval\n\t\t * How long should we wait between store calls\n\t\t */ History.options.storeInterval = History.options.storeInterval || 1000;\n /**\n\t\t * History.options.busyDelay\n\t\t * How long should we wait between busy events\n\t\t */ History.options.busyDelay = History.options.busyDelay || 250;\n /**\n\t\t * History.options.debug\n\t\t * If true will enable debug messages to be logged\n\t\t */ History.options.debug = History.options.debug || false;\n /**\n\t\t * History.options.initialTitle\n\t\t * What is the title of the initial state\n\t\t */ History.options.initialTitle = History.options.initialTitle || document.title;\n /**\n\t\t * History.options.html4Mode\n\t\t * If true, will force HTMl4 mode (hashtags)\n\t\t */ History.options.html4Mode = History.options.html4Mode || false;\n /**\n\t\t * History.options.delayInit\n\t\t * Want to override default options and call init manually.\n\t\t */ History.options.delayInit = History.options.delayInit || false;\n // ====================================================================\n // Interval record\n /**\n\t\t * History.intervalList\n\t\t * List of intervals set, to be cleared when document is unloaded.\n\t\t */ History.intervalList = [];\n /**\n\t\t * History.clearAllIntervals\n\t\t * Clears all setInterval instances.\n\t\t */ History.clearAllIntervals = function() {\n var i, il = History.intervalList;\n if (typeof il !== \"undefined\" && il !== null) {\n for(i = 0; i < il.length; i++)clearInterval(il[i]);\n History.intervalList = null;\n }\n };\n // ====================================================================\n // Debug\n /**\n\t\t * History.debug(message,...)\n\t\t * Logs the passed arguments if debug enabled\n\t\t */ History.debug = function() {\n if (History.options.debug || false) History.log.apply(History, arguments);\n };\n /**\n\t\t * History.log(message,...)\n\t\t * Logs the passed arguments\n\t\t */ History.log = function() {\n // Prepare\n var consoleExists = !(typeof console === \"undefined\" || typeof console.log === \"undefined\" || typeof console.log.apply === \"undefined\"), textarea = document.getElementById(\"log\"), message, i, n, args, arg;\n // Write to Console\n if (consoleExists) {\n args = Array.prototype.slice.call(arguments);\n message = args.shift();\n if (typeof console.debug !== \"undefined\") console.debug.apply(console, [\n message,\n args\n ]);\n else console.log.apply(console, [\n message,\n args\n ]);\n } else message = \"\\n\" + arguments[0] + \"\\n\";\n // Write to log\n for(i = 1, n = arguments.length; i < n; ++i){\n arg = arguments[i];\n if (typeof arg === \"object\" && typeof JSON !== \"undefined\") try {\n arg = JSON.stringify(arg);\n } catch (Exception) {\n // Recursive Object\n }\n message += \"\\n\" + arg + \"\\n\";\n }\n // Textarea\n if (textarea) {\n textarea.value += message + \"\\n-----\\n\";\n textarea.scrollTop = textarea.scrollHeight - textarea.clientHeight;\n } else if (!consoleExists) alert(message);\n // Return true\n return true;\n };\n // ====================================================================\n // Emulated Status\n /**\n\t\t * History.getInternetExplorerMajorVersion()\n\t\t * Get's the major version of Internet Explorer\n\t\t * @return {integer}\n\t\t * @license Public Domain\n\t\t * @author Benjamin Arthur Lupton \n\t\t * @author James Padolsey \n\t\t */ History.getInternetExplorerMajorVersion = function() {\n var result = History.getInternetExplorerMajorVersion.cached = typeof History.getInternetExplorerMajorVersion.cached !== \"undefined\" ? History.getInternetExplorerMajorVersion.cached : function() {\n var v = 3, div = document.createElement(\"div\"), all = div.getElementsByTagName(\"i\");\n while(div.innerHTML = \"\", all[0]);\n return v > 4 ? v : false;\n }();\n return result;\n };\n /**\n\t\t * History.isInternetExplorer()\n\t\t * Are we using Internet Explorer?\n\t\t * @return {boolean}\n\t\t * @license Public Domain\n\t\t * @author Benjamin Arthur Lupton \n\t\t */ History.isInternetExplorer = function() {\n var result = History.isInternetExplorer.cached = typeof History.isInternetExplorer.cached !== \"undefined\" ? History.isInternetExplorer.cached : Boolean(History.getInternetExplorerMajorVersion());\n return result;\n };\n /**\n\t\t * History.emulated\n\t\t * Which features require emulating?\n\t\t */ if (History.options.html4Mode) History.emulated = {\n pushState: true,\n hashChange: true\n };\n else History.emulated = {\n pushState: !Boolean(window1.history && window1.history.pushState && window1.history.replaceState && !(/ Mobile\\/([1-7][a-z]|(8([abcde]|f(1[0-8]))))/i.test(navigator.userAgent) || /AppleWebKit\\/5([0-2]|3[0-2])/i.test(navigator.userAgent))),\n hashChange: Boolean(!(\"onhashchange\" in window1 || \"onhashchange\" in document) || History.isInternetExplorer() && History.getInternetExplorerMajorVersion() < 8)\n };\n /**\n\t\t * History.enabled\n\t\t * Is History enabled?\n\t\t */ History.enabled = !History.emulated.pushState;\n /**\n\t\t * History.bugs\n\t\t * Which bugs are present\n\t\t */ History.bugs = {\n /**\n\t\t\t * Safari 5 and Safari iOS 4 fail to return to the correct state once a hash is replaced by a `replaceState` call\n\t\t\t * https://bugs.webkit.org/show_bug.cgi?id=56249\n\t\t\t */ setHash: Boolean(!History.emulated.pushState && navigator.vendor === \"Apple Computer, Inc.\" && /AppleWebKit\\/5([0-2]|3[0-3])/.test(navigator.userAgent)),\n /**\n\t\t\t * Safari 5 and Safari iOS 4 sometimes fail to apply the state change under busy conditions\n\t\t\t * https://bugs.webkit.org/show_bug.cgi?id=42940\n\t\t\t */ safariPoll: Boolean(!History.emulated.pushState && navigator.vendor === \"Apple Computer, Inc.\" && /AppleWebKit\\/5([0-2]|3[0-3])/.test(navigator.userAgent)),\n /**\n\t\t\t * MSIE 6 and 7 sometimes do not apply a hash even it was told to (requiring a second call to the apply function)\n\t\t\t */ ieDoubleCheck: Boolean(History.isInternetExplorer() && History.getInternetExplorerMajorVersion() < 8),\n /**\n\t\t\t * MSIE 6 requires the entire hash to be encoded for the hashes to trigger the onHashChange event\n\t\t\t */ hashEscape: Boolean(History.isInternetExplorer() && History.getInternetExplorerMajorVersion() < 7)\n };\n /**\n\t\t * History.isEmptyObject(obj)\n\t\t * Checks to see if the Object is Empty\n\t\t * @param {Object} obj\n\t\t * @return {boolean}\n\t\t */ History.isEmptyObject = function(obj) {\n for(var name in obj){\n if (obj.hasOwnProperty(name)) return false;\n }\n return true;\n };\n /**\n\t\t * History.cloneObject(obj)\n\t\t * Clones a object and eliminate all references to the original contexts\n\t\t * @param {Object} obj\n\t\t * @return {Object}\n\t\t */ History.cloneObject = function(obj) {\n var hash, newObj;\n if (obj) {\n hash = JSON.stringify(obj);\n newObj = JSON.parse(hash);\n } else newObj = {};\n return newObj;\n };\n // ====================================================================\n // URL Helpers\n /**\n\t\t * History.getRootUrl()\n\t\t * Turns \"http://mysite.com/dir/page.html?asd\" into \"http://mysite.com\"\n\t\t * @return {String} rootUrl\n\t\t */ History.getRootUrl = function() {\n // Create\n var rootUrl = document.location.protocol + \"//\" + (document.location.hostname || document.location.host);\n if (document.location.port || false) rootUrl += \":\" + document.location.port;\n rootUrl += \"/\";\n // Return\n return rootUrl;\n };\n /**\n\t\t * History.getBaseHref()\n\t\t * Fetches the `href` attribute of the `` element if it exists\n\t\t * @return {String} baseHref\n\t\t */ History.getBaseHref = function() {\n // Create\n var baseElements = document.getElementsByTagName(\"base\"), baseElement = null, baseHref = \"\";\n // Test for Base Element\n if (baseElements.length === 1) {\n // Prepare for Base Element\n baseElement = baseElements[0];\n baseHref = baseElement.href.replace(/[^\\/]+$/, \"\");\n }\n // Adjust trailing slash\n baseHref = baseHref.replace(/\\/+$/, \"\");\n if (baseHref) baseHref += \"/\";\n // Return\n return baseHref;\n };\n /**\n\t\t * History.getBaseUrl()\n\t\t * Fetches the baseHref or basePageUrl or rootUrl (whichever one exists first)\n\t\t * @return {String} baseUrl\n\t\t */ History.getBaseUrl = function() {\n // Create\n var baseUrl = History.getBaseHref() || History.getBasePageUrl() || History.getRootUrl();\n // Return\n return baseUrl;\n };\n /**\n\t\t * History.getPageUrl()\n\t\t * Fetches the URL of the current page\n\t\t * @return {String} pageUrl\n\t\t */ History.getPageUrl = function() {\n // Fetch\n var State = History.getState(false, false), stateUrl = (State || {}).url || History.getLocationHref(), pageUrl;\n // Create\n pageUrl = stateUrl.replace(/\\/+$/, \"\").replace(/[^\\/]+$/, function(part, index, string) {\n return /\\./.test(part) ? part : part + \"/\";\n });\n // Return\n return pageUrl;\n };\n /**\n\t\t * History.getBasePageUrl()\n\t\t * Fetches the Url of the directory of the current page\n\t\t * @return {String} basePageUrl\n\t\t */ History.getBasePageUrl = function() {\n // Create\n var basePageUrl = History.getLocationHref().replace(/[#\\?].*/, \"\").replace(/[^\\/]+$/, function(part, index, string) {\n return /[^\\/]$/.test(part) ? \"\" : part;\n }).replace(/\\/+$/, \"\") + \"/\";\n // Return\n return basePageUrl;\n };\n /**\n\t\t * History.getFullUrl(url)\n\t\t * Ensures that we have an absolute URL and not a relative URL\n\t\t * @param {string} url\n\t\t * @param {Boolean} allowBaseHref\n\t\t * @return {string} fullUrl\n\t\t */ History.getFullUrl = function(url, allowBaseHref) {\n // Prepare\n var fullUrl = url, firstChar = url.substring(0, 1);\n allowBaseHref = typeof allowBaseHref === \"undefined\" ? true : allowBaseHref;\n // Check\n if (/[a-z]+\\:\\/\\//.test(url)) ;\n else if (firstChar === \"/\") // Root URL\n fullUrl = History.getRootUrl() + url.replace(/^\\/+/, \"\");\n else if (firstChar === \"#\") // Anchor URL\n fullUrl = History.getPageUrl().replace(/#.*/, \"\") + url;\n else if (firstChar === \"?\") // Query URL\n fullUrl = History.getPageUrl().replace(/[\\?#].*/, \"\") + url;\n else // Relative URL\n if (allowBaseHref) fullUrl = History.getBaseUrl() + url.replace(/^(\\.\\/)+/, \"\");\n else fullUrl = History.getBasePageUrl() + url.replace(/^(\\.\\/)+/, \"\");\n // Return\n return fullUrl.replace(/\\#$/, \"\");\n };\n /**\n\t\t * History.getShortUrl(url)\n\t\t * Ensures that we have a relative URL and not a absolute URL\n\t\t * @param {string} url\n\t\t * @return {string} url\n\t\t */ History.getShortUrl = function(url) {\n // Prepare\n var shortUrl = url, baseUrl = History.getBaseUrl(), rootUrl = History.getRootUrl();\n // Trim baseUrl\n if (History.emulated.pushState) // We are in a if statement as when pushState is not emulated\n // The actual url these short urls are relative to can change\n // So within the same session, we the url may end up somewhere different\n shortUrl = shortUrl.replace(baseUrl, \"\");\n // Trim rootUrl\n shortUrl = shortUrl.replace(rootUrl, \"/\");\n // Ensure we can still detect it as a state\n if (History.isTraditionalAnchor(shortUrl)) shortUrl = \"./\" + shortUrl;\n // Clean It\n shortUrl = shortUrl.replace(/^(\\.\\/)+/g, \"./\").replace(/\\#$/, \"\");\n // Return\n return shortUrl;\n };\n /**\n\t\t * History.getLocationHref(document)\n\t\t * Returns a normalized version of document.location.href\n\t\t * accounting for browser inconsistencies, etc.\n\t\t *\n\t\t * This URL will be URI-encoded and will include the hash\n\t\t *\n\t\t * @param {object} document\n\t\t * @return {string} url\n\t\t */ History.getLocationHref = function(doc) {\n doc = doc || document;\n // most of the time, this will be true\n if (doc.URL === doc.location.href) return doc.location.href;\n // some versions of webkit URI-decode document.location.href\n // but they leave document.URL in an encoded state\n if (doc.location.href === decodeURIComponent(doc.URL)) return doc.URL;\n // FF 3.6 only updates document.URL when a page is reloaded\n // document.location.href is updated correctly\n if (doc.location.hash && decodeURIComponent(doc.location.href.replace(/^[^#]+/, \"\")) === doc.location.hash) return doc.location.href;\n if (doc.URL.indexOf(\"#\") == -1 && doc.location.href.indexOf(\"#\") != -1) return doc.location.href;\n return doc.URL || doc.location.href;\n };\n // ====================================================================\n // State Storage\n /**\n\t\t * History.store\n\t\t * The store for all session specific data\n\t\t */ History.store = {};\n /**\n\t\t * History.idToState\n\t\t * 1-1: State ID to State Object\n\t\t */ History.idToState = History.idToState || {};\n /**\n\t\t * History.stateToId\n\t\t * 1-1: State String to State ID\n\t\t */ History.stateToId = History.stateToId || {};\n /**\n\t\t * History.urlToId\n\t\t * 1-1: State URL to State ID\n\t\t */ History.urlToId = History.urlToId || {};\n /**\n\t\t * History.storedStates\n\t\t * Store the states in an array\n\t\t */ History.storedStates = History.storedStates || [];\n /**\n\t\t * History.savedStates\n\t\t * Saved the states in an array\n\t\t */ History.savedStates = History.savedStates || [];\n /**\n\t\t * History.noramlizeStore()\n\t\t * Noramlize the store by adding necessary values\n\t\t */ History.normalizeStore = function() {\n History.store.idToState = History.store.idToState || {};\n History.store.urlToId = History.store.urlToId || {};\n History.store.stateToId = History.store.stateToId || {};\n };\n /**\n\t\t * History.getState()\n\t\t * Get an object containing the data, title and url of the current state\n\t\t * @param {Boolean} friendly\n\t\t * @param {Boolean} create\n\t\t * @return {Object} State\n\t\t */ History.getState = function(friendly, create) {\n // Prepare\n if (typeof friendly === \"undefined\") friendly = true;\n if (typeof create === \"undefined\") create = true;\n // Fetch\n var State = History.getLastSavedState();\n // Create\n if (!State && create) State = History.createStateObject();\n // Adjust\n if (friendly) {\n State = History.cloneObject(State);\n State.url = State.cleanUrl || State.url;\n }\n // Return\n return State;\n };\n /**\n\t\t * History.getIdByState(State)\n\t\t * Gets a ID for a State\n\t\t * @param {State} newState\n\t\t * @return {String} id\n\t\t */ History.getIdByState = function(newState) {\n // Fetch ID\n var id = History.extractId(newState.url), str;\n if (!id) {\n // Find ID via State String\n str = History.getStateString(newState);\n if (typeof History.stateToId[str] !== \"undefined\") id = History.stateToId[str];\n else if (typeof History.store.stateToId[str] !== \"undefined\") id = History.store.stateToId[str];\n else {\n // Generate a new ID\n while(true){\n id = new Date().getTime() + String(Math.random()).replace(/\\D/g, \"\");\n if (typeof History.idToState[id] === \"undefined\" && typeof History.store.idToState[id] === \"undefined\") break;\n }\n // Apply the new State to the ID\n History.stateToId[str] = id;\n History.idToState[id] = newState;\n }\n }\n // Return ID\n return id;\n };\n /**\n\t\t * History.normalizeState(State)\n\t\t * Expands a State Object\n\t\t * @param {object} State\n\t\t * @return {object}\n\t\t */ History.normalizeState = function(oldState) {\n // Variables\n var newState, dataNotEmpty;\n // Prepare\n if (!oldState || typeof oldState !== \"object\") oldState = {};\n // Check\n if (typeof oldState.normalized !== \"undefined\") return oldState;\n // Adjust\n if (!oldState.data || typeof oldState.data !== \"object\") oldState.data = {};\n // ----------------------------------------------------------------\n // Create\n newState = {};\n newState.normalized = true;\n newState.title = oldState.title || \"\";\n newState.url = History.getFullUrl(oldState.url ? oldState.url : History.getLocationHref());\n newState.hash = History.getShortUrl(newState.url);\n newState.data = History.cloneObject(oldState.data);\n // Fetch ID\n newState.id = History.getIdByState(newState);\n // ----------------------------------------------------------------\n // Clean the URL\n newState.cleanUrl = newState.url.replace(/\\??\\&_suid.*/, \"\");\n newState.url = newState.cleanUrl;\n // Check to see if we have more than just a url\n dataNotEmpty = !History.isEmptyObject(newState.data);\n // Apply\n if ((newState.title || dataNotEmpty) && History.options.disableSuid !== true) {\n // Add ID to Hash\n newState.hash = History.getShortUrl(newState.url).replace(/\\??\\&_suid.*/, \"\");\n if (!/\\?/.test(newState.hash)) newState.hash += \"?\";\n newState.hash += \"&_suid=\" + newState.id;\n }\n // Create the Hashed URL\n newState.hashedUrl = History.getFullUrl(newState.hash);\n // ----------------------------------------------------------------\n // Update the URL if we have a duplicate\n if ((History.emulated.pushState || History.bugs.safariPoll) && History.hasUrlDuplicate(newState)) newState.url = newState.hashedUrl;\n // ----------------------------------------------------------------\n // Return\n return newState;\n };\n /**\n\t\t * History.createStateObject(data,title,url)\n\t\t * Creates a object based on the data, title and url state params\n\t\t * @param {object} data\n\t\t * @param {string} title\n\t\t * @param {string} url\n\t\t * @return {object}\n\t\t */ History.createStateObject = function(data, title, url) {\n // Hashify\n var State = {\n \"data\": data,\n \"title\": title,\n \"url\": url\n };\n // Expand the State\n State = History.normalizeState(State);\n // Return object\n return State;\n };\n /**\n\t\t * History.getStateById(id)\n\t\t * Get a state by it's UID\n\t\t * @param {String} id\n\t\t */ History.getStateById = function(id) {\n // Prepare\n id = String(id);\n // Retrieve\n var State = History.idToState[id] || History.store.idToState[id] || undefined;\n // Return State\n return State;\n };\n /**\n\t\t * Get a State's String\n\t\t * @param {State} passedState\n\t\t */ History.getStateString = function(passedState) {\n // Prepare\n var State, cleanedState, str;\n // Fetch\n State = History.normalizeState(passedState);\n // Clean\n cleanedState = {\n data: State.data,\n title: passedState.title,\n url: passedState.url\n };\n // Fetch\n str = JSON.stringify(cleanedState);\n // Return\n return str;\n };\n /**\n\t\t * Get a State's ID\n\t\t * @param {State} passedState\n\t\t * @return {String} id\n\t\t */ History.getStateId = function(passedState) {\n // Prepare\n var State, id;\n // Fetch\n State = History.normalizeState(passedState);\n // Fetch\n id = State.id;\n // Return\n return id;\n };\n /**\n\t\t * History.getHashByState(State)\n\t\t * Creates a Hash for the State Object\n\t\t * @param {State} passedState\n\t\t * @return {String} hash\n\t\t */ History.getHashByState = function(passedState) {\n // Prepare\n var State, hash;\n // Fetch\n State = History.normalizeState(passedState);\n // Hash\n hash = State.hash;\n // Return\n return hash;\n };\n /**\n\t\t * History.extractId(url_or_hash)\n\t\t * Get a State ID by it's URL or Hash\n\t\t * @param {string} url_or_hash\n\t\t * @return {string} id\n\t\t */ History.extractId = function(url_or_hash) {\n // Prepare\n var id, parts, url, tmp;\n // Extract\n // If the URL has a #, use the id from before the #\n if (url_or_hash.indexOf(\"#\") != -1) tmp = url_or_hash.split(\"#\")[0];\n else tmp = url_or_hash;\n parts = /(.*)\\&_suid=([0-9]+)$/.exec(tmp);\n url = parts ? parts[1] || url_or_hash : url_or_hash;\n id = parts ? String(parts[2] || \"\") : \"\";\n // Return\n return id || false;\n };\n /**\n\t\t * History.isTraditionalAnchor\n\t\t * Checks to see if the url is a traditional anchor or not\n\t\t * @param {String} url_or_hash\n\t\t * @return {Boolean}\n\t\t */ History.isTraditionalAnchor = function(url_or_hash) {\n // Check\n var isTraditional = !/[\\/\\?\\.]/.test(url_or_hash);\n // Return\n return isTraditional;\n };\n /**\n\t\t * History.extractState\n\t\t * Get a State by it's URL or Hash\n\t\t * @param {String} url_or_hash\n\t\t * @return {State|null}\n\t\t */ History.extractState = function(url_or_hash, create) {\n // Prepare\n var State = null, id, url;\n create = create || false;\n // Fetch SUID\n id = History.extractId(url_or_hash);\n if (id) State = History.getStateById(id);\n // Fetch SUID returned no State\n if (!State) {\n // Fetch URL\n url = History.getFullUrl(url_or_hash);\n // Check URL\n id = History.getIdByUrl(url) || false;\n if (id) State = History.getStateById(id);\n // Create State\n if (!State && create && !History.isTraditionalAnchor(url_or_hash)) State = History.createStateObject(null, null, url);\n }\n // Return\n return State;\n };\n /**\n\t\t * History.getIdByUrl()\n\t\t * Get a State ID by a State URL\n\t\t */ History.getIdByUrl = function(url) {\n // Fetch\n var id = History.urlToId[url] || History.store.urlToId[url] || undefined;\n // Return\n return id;\n };\n /**\n\t\t * History.getLastSavedState()\n\t\t * Get an object containing the data, title and url of the current state\n\t\t * @return {Object} State\n\t\t */ History.getLastSavedState = function() {\n return History.savedStates[History.savedStates.length - 1] || undefined;\n };\n /**\n\t\t * History.getLastStoredState()\n\t\t * Get an object containing the data, title and url of the current state\n\t\t * @return {Object} State\n\t\t */ History.getLastStoredState = function() {\n return History.storedStates[History.storedStates.length - 1] || undefined;\n };\n /**\n\t\t * History.hasUrlDuplicate\n\t\t * Checks if a Url will have a url conflict\n\t\t * @param {Object} newState\n\t\t * @return {Boolean} hasDuplicate\n\t\t */ History.hasUrlDuplicate = function(newState) {\n // Prepare\n var hasDuplicate = false, oldState;\n // Fetch\n oldState = History.extractState(newState.url);\n // Check\n hasDuplicate = oldState && oldState.id !== newState.id;\n // Return\n return hasDuplicate;\n };\n /**\n\t\t * History.storeState\n\t\t * Store a State\n\t\t * @param {Object} newState\n\t\t * @return {Object} newState\n\t\t */ History.storeState = function(newState) {\n // Store the State\n History.urlToId[newState.url] = newState.id;\n // Push the State\n History.storedStates.push(History.cloneObject(newState));\n // Return newState\n return newState;\n };\n /**\n\t\t * History.isLastSavedState(newState)\n\t\t * Tests to see if the state is the last state\n\t\t * @param {Object} newState\n\t\t * @return {boolean} isLast\n\t\t */ History.isLastSavedState = function(newState) {\n // Prepare\n var isLast = false, newId, oldState, oldId;\n // Check\n if (History.savedStates.length) {\n newId = newState.id;\n oldState = History.getLastSavedState();\n oldId = oldState.id;\n // Check\n isLast = newId === oldId;\n }\n // Return\n return isLast;\n };\n /**\n\t\t * History.saveState\n\t\t * Push a State\n\t\t * @param {Object} newState\n\t\t * @return {boolean} changed\n\t\t */ History.saveState = function(newState) {\n // Check Hash\n if (History.isLastSavedState(newState)) return false;\n // Push the State\n History.savedStates.push(History.cloneObject(newState));\n // Return true\n return true;\n };\n /**\n\t\t * History.getStateByIndex()\n\t\t * Gets a state by the index\n\t\t * @param {integer} index\n\t\t * @return {Object}\n\t\t */ History.getStateByIndex = function(index) {\n // Prepare\n var State = null;\n // Handle\n if (typeof index === \"undefined\") // Get the last inserted\n State = History.savedStates[History.savedStates.length - 1];\n else if (index < 0) // Get from the end\n State = History.savedStates[History.savedStates.length + index];\n else // Get from the beginning\n State = History.savedStates[index];\n // Return State\n return State;\n };\n /**\n\t\t * History.getCurrentIndex()\n\t\t * Gets the current index\n\t\t * @return (integer)\n\t\t*/ History.getCurrentIndex = function() {\n // Prepare\n var index = null;\n // No states saved\n if (History.savedStates.length < 1) index = 0;\n else index = History.savedStates.length - 1;\n return index;\n };\n // ====================================================================\n // Hash Helpers\n /**\n\t\t * History.getHash()\n\t\t * @param {Location=} location\n\t\t * Gets the current document hash\n\t\t * Note: unlike location.hash, this is guaranteed to return the escaped hash in all browsers\n\t\t * @return {string}\n\t\t */ History.getHash = function(doc) {\n var url = History.getLocationHref(doc), hash;\n hash = History.getHashByUrl(url);\n return hash;\n };\n /**\n\t\t * History.unescapeHash()\n\t\t * normalize and Unescape a Hash\n\t\t * @param {String} hash\n\t\t * @return {string}\n\t\t */ History.unescapeHash = function(hash) {\n // Prepare\n var result = History.normalizeHash(hash);\n // Unescape hash\n result = decodeURIComponent(result);\n // Return result\n return result;\n };\n /**\n\t\t * History.normalizeHash()\n\t\t * normalize a hash across browsers\n\t\t * @return {string}\n\t\t */ History.normalizeHash = function(hash) {\n // Prepare\n var result = hash.replace(/[^#]*#/, \"\").replace(/#.*/, \"\");\n // Return result\n return result;\n };\n /**\n\t\t * History.setHash(hash)\n\t\t * Sets the document hash\n\t\t * @param {string} hash\n\t\t * @return {History}\n\t\t */ History.setHash = function(hash, queue) {\n // Prepare\n var State, pageUrl;\n // Handle Queueing\n if (queue !== false && History.busy()) {\n // Wait + Push to Queue\n //History.debug('History.setHash: we must wait', arguments);\n History.pushQueue({\n scope: History,\n callback: History.setHash,\n args: arguments,\n queue: queue\n });\n return false;\n }\n // Log\n //History.debug('History.setHash: called',hash);\n // Make Busy + Continue\n History.busy(true);\n // Check if hash is a state\n State = History.extractState(hash, true);\n if (State && !History.emulated.pushState) // Hash is a state so skip the setHash\n //History.debug('History.setHash: Hash is a state so skipping the hash set with a direct pushState call',arguments);\n // PushState\n History.pushState(State.data, State.title, State.url, false);\n else if (History.getHash() !== hash) {\n // Hash is a proper hash, so apply it\n // Handle browser bugs\n if (History.bugs.setHash) {\n // Fix Safari Bug https://bugs.webkit.org/show_bug.cgi?id=56249\n // Fetch the base page\n pageUrl = History.getPageUrl();\n // Safari hash apply\n History.pushState(null, null, pageUrl + \"#\" + hash, false);\n } else // Normal hash apply\n document.location.hash = hash;\n }\n // Chain\n return History;\n };\n /**\n\t\t * History.escape()\n\t\t * normalize and Escape a Hash\n\t\t * @return {string}\n\t\t */ History.escapeHash = function(hash) {\n // Prepare\n var result = History.normalizeHash(hash);\n // Escape hash\n result = window1.encodeURIComponent(result);\n // IE6 Escape Bug\n if (!History.bugs.hashEscape) // Restore common parts\n result = result.replace(/\\%21/g, \"!\").replace(/\\%26/g, \"&\").replace(/\\%3D/g, \"=\").replace(/\\%3F/g, \"?\");\n // Return result\n return result;\n };\n /**\n\t\t * History.getHashByUrl(url)\n\t\t * Extracts the Hash from a URL\n\t\t * @param {string} url\n\t\t * @return {string} url\n\t\t */ History.getHashByUrl = function(url) {\n // Extract the hash\n var hash = String(url).replace(/([^#]*)#?([^#]*)#?(.*)/, \"$2\");\n // Unescape hash\n hash = History.unescapeHash(hash);\n // Return hash\n return hash;\n };\n /**\n\t\t * History.setTitle(title)\n\t\t * Applies the title to the document\n\t\t * @param {State} newState\n\t\t * @return {Boolean}\n\t\t */ History.setTitle = function(newState) {\n // Prepare\n var title = newState.title, firstState;\n // Initial\n if (!title) {\n firstState = History.getStateByIndex(0);\n if (firstState && firstState.url === newState.url) title = firstState.title || History.options.initialTitle;\n }\n // Apply\n try {\n document.getElementsByTagName(\"title\")[0].innerHTML = title.replace(\"<\", \"<\").replace(\">\", \">\").replace(\" & \", \" & \");\n } catch (Exception) {}\n document.title = title;\n // Chain\n return History;\n };\n // ====================================================================\n // Queueing\n /**\n\t\t * History.queues\n\t\t * The list of queues to use\n\t\t * First In, First Out\n\t\t */ History.queues = [];\n /**\n\t\t * History.busy(value)\n\t\t * @param {boolean} value [optional]\n\t\t * @return {boolean} busy\n\t\t */ History.busy = function(value) {\n // Apply\n if (typeof value !== \"undefined\") //History.debug('History.busy: changing ['+(History.busy.flag||false)+'] to ['+(value||false)+']', History.queues.length);\n History.busy.flag = value;\n else if (typeof History.busy.flag === \"undefined\") History.busy.flag = false;\n // Queue\n if (!History.busy.flag) {\n // Execute the next item in the queue\n clearTimeout(History.busy.timeout);\n var fireNext = function() {\n var i, queue, item;\n if (History.busy.flag) return;\n for(i = History.queues.length - 1; i >= 0; --i){\n queue = History.queues[i];\n if (queue.length === 0) continue;\n item = queue.shift();\n History.fireQueueItem(item);\n History.busy.timeout = setTimeout(fireNext, History.options.busyDelay);\n }\n };\n History.busy.timeout = setTimeout(fireNext, History.options.busyDelay);\n }\n // Return\n return History.busy.flag;\n };\n /**\n\t\t * History.busy.flag\n\t\t */ History.busy.flag = false;\n /**\n\t\t * History.fireQueueItem(item)\n\t\t * Fire a Queue Item\n\t\t * @param {Object} item\n\t\t * @return {Mixed} result\n\t\t */ History.fireQueueItem = function(item) {\n return item.callback.apply(item.scope || History, item.args || []);\n };\n /**\n\t\t * History.pushQueue(callback,args)\n\t\t * Add an item to the queue\n\t\t * @param {Object} item [scope,callback,args,queue]\n\t\t */ History.pushQueue = function(item) {\n // Prepare the queue\n History.queues[item.queue || 0] = History.queues[item.queue || 0] || [];\n // Add to the queue\n History.queues[item.queue || 0].push(item);\n // Chain\n return History;\n };\n /**\n\t\t * History.queue (item,queue), (func,queue), (func), (item)\n\t\t * Either firs the item now if not busy, or adds it to the queue\n\t\t */ History.queue = function(item, queue) {\n // Prepare\n if (typeof item === \"function\") item = {\n callback: item\n };\n if (typeof queue !== \"undefined\") item.queue = queue;\n // Handle\n if (History.busy()) History.pushQueue(item);\n else History.fireQueueItem(item);\n // Chain\n return History;\n };\n /**\n\t\t * History.clearQueue()\n\t\t * Clears the Queue\n\t\t */ History.clearQueue = function() {\n History.busy.flag = false;\n History.queues = [];\n return History;\n };\n // ====================================================================\n // IE Bug Fix\n /**\n\t\t * History.stateChanged\n\t\t * States whether or not the state has changed since the last double check was initialised\n\t\t */ History.stateChanged = false;\n /**\n\t\t * History.doubleChecker\n\t\t * Contains the timeout used for the double checks\n\t\t */ History.doubleChecker = false;\n /**\n\t\t * History.doubleCheckComplete()\n\t\t * Complete a double check\n\t\t * @return {History}\n\t\t */ History.doubleCheckComplete = function() {\n // Update\n History.stateChanged = true;\n // Clear\n History.doubleCheckClear();\n // Chain\n return History;\n };\n /**\n\t\t * History.doubleCheckClear()\n\t\t * Clear a double check\n\t\t * @return {History}\n\t\t */ History.doubleCheckClear = function() {\n // Clear\n if (History.doubleChecker) {\n clearTimeout(History.doubleChecker);\n History.doubleChecker = false;\n }\n // Chain\n return History;\n };\n /**\n\t\t * History.doubleCheck()\n\t\t * Create a double check\n\t\t * @return {History}\n\t\t */ History.doubleCheck = function(tryAgain) {\n // Reset\n History.stateChanged = false;\n History.doubleCheckClear();\n // Fix IE6,IE7 bug where calling history.back or history.forward does not actually change the hash (whereas doing it manually does)\n // Fix Safari 5 bug where sometimes the state does not change: https://bugs.webkit.org/show_bug.cgi?id=42940\n if (History.bugs.ieDoubleCheck) // Apply Check\n History.doubleChecker = setTimeout(function() {\n History.doubleCheckClear();\n if (!History.stateChanged) //History.debug('History.doubleCheck: State has not yet changed, trying again', arguments);\n // Re-Attempt\n tryAgain();\n return true;\n }, History.options.doubleCheckInterval);\n // Chain\n return History;\n };\n // ====================================================================\n // Safari Bug Fix\n /**\n\t\t * History.safariStatePoll()\n\t\t * Poll the current state\n\t\t * @return {History}\n\t\t */ History.safariStatePoll = function() {\n // Poll the URL\n // Get the Last State which has the new URL\n var urlState = History.extractState(History.getLocationHref()), newState;\n // Check for a difference\n if (!History.isLastSavedState(urlState)) newState = urlState;\n else return;\n // Check if we have a state with that url\n // If not create it\n if (!newState) //History.debug('History.safariStatePoll: new');\n newState = History.createStateObject();\n // Apply the New State\n //History.debug('History.safariStatePoll: trigger');\n History.Adapter.trigger(window1, \"popstate\");\n // Chain\n return History;\n };\n // ====================================================================\n // State Aliases\n /**\n\t\t * History.back(queue)\n\t\t * Send the browser history back one item\n\t\t * @param {Integer} queue [optional]\n\t\t */ History.back = function(queue) {\n //History.debug('History.back: called', arguments);\n // Handle Queueing\n if (queue !== false && History.busy()) {\n // Wait + Push to Queue\n //History.debug('History.back: we must wait', arguments);\n History.pushQueue({\n scope: History,\n callback: History.back,\n args: arguments,\n queue: queue\n });\n return false;\n }\n // Make Busy + Continue\n History.busy(true);\n // Fix certain browser bugs that prevent the state from changing\n History.doubleCheck(function() {\n History.back(false);\n });\n // Go back\n history.go(-1);\n // End back closure\n return true;\n };\n /**\n\t\t * History.forward(queue)\n\t\t * Send the browser history forward one item\n\t\t * @param {Integer} queue [optional]\n\t\t */ History.forward = function(queue) {\n //History.debug('History.forward: called', arguments);\n // Handle Queueing\n if (queue !== false && History.busy()) {\n // Wait + Push to Queue\n //History.debug('History.forward: we must wait', arguments);\n History.pushQueue({\n scope: History,\n callback: History.forward,\n args: arguments,\n queue: queue\n });\n return false;\n }\n // Make Busy + Continue\n History.busy(true);\n // Fix certain browser bugs that prevent the state from changing\n History.doubleCheck(function() {\n History.forward(false);\n });\n // Go forward\n history.go(1);\n // End forward closure\n return true;\n };\n /**\n\t\t * History.go(index,queue)\n\t\t * Send the browser history back or forward index times\n\t\t * @param {Integer} queue [optional]\n\t\t */ History.go = function(index, queue) {\n //History.debug('History.go: called', arguments);\n // Prepare\n var i;\n // Handle\n if (index > 0) // Forward\n for(i = 1; i <= index; ++i)History.forward(queue);\n else if (index < 0) // Backward\n for(i = -1; i >= index; --i)History.back(queue);\n else throw new Error(\"History.go: History.go requires a positive or negative integer passed.\");\n // Chain\n return History;\n };\n // ====================================================================\n // HTML5 State Support\n // Non-Native pushState Implementation\n if (History.emulated.pushState) {\n /*\n\t\t\t * Provide Skeleton for HTML4 Browsers\n\t\t\t */ // Prepare\n var emptyFunction = function() {};\n History.pushState = History.pushState || emptyFunction;\n History.replaceState = History.replaceState || emptyFunction;\n } else {\n /*\n\t\t\t * Use native HTML5 History API Implementation\n\t\t\t */ /**\n\t\t\t * History.onPopState(event,extra)\n\t\t\t * Refresh the Current State\n\t\t\t */ History.onPopState = function(event, extra) {\n // Prepare\n var stateId = false, newState = false, currentHash, currentState;\n // Reset the double check\n History.doubleCheckComplete();\n // Check for a Hash, and handle apporiatly\n currentHash = History.getHash();\n if (currentHash) {\n // Expand Hash\n currentState = History.extractState(currentHash || History.getLocationHref(), true);\n if (currentState) // We were able to parse it, it must be a State!\n // Let's forward to replaceState\n //History.debug('History.onPopState: state anchor', currentHash, currentState);\n History.replaceState(currentState.data, currentState.title, currentState.url, false);\n else {\n // Traditional Anchor\n //History.debug('History.onPopState: traditional anchor', currentHash);\n History.Adapter.trigger(window1, \"anchorchange\");\n History.busy(false);\n }\n // We don't care for hashes\n History.expectedStateId = false;\n return false;\n }\n // Ensure\n stateId = History.Adapter.extractEventData(\"state\", event, extra) || false;\n // Fetch State\n if (stateId) // Vanilla: Back/forward button was used\n newState = History.getStateById(stateId);\n else if (History.expectedStateId) // Vanilla: A new state was pushed, and popstate was called manually\n newState = History.getStateById(History.expectedStateId);\n else // Initial State\n newState = History.extractState(History.getLocationHref());\n // The State did not exist in our store\n if (!newState) // Regenerate the State\n newState = History.createStateObject(null, null, History.getLocationHref());\n // Clean\n History.expectedStateId = false;\n // Check if we are the same state\n if (History.isLastSavedState(newState)) {\n // There has been no change (just the page's hash has finally propagated)\n //History.debug('History.onPopState: no change', newState, History.savedStates);\n History.busy(false);\n return false;\n }\n // Store the State\n History.storeState(newState);\n History.saveState(newState);\n // Force update of the title\n History.setTitle(newState);\n // Fire Our Event\n History.Adapter.trigger(window1, \"statechange\");\n History.busy(false);\n // Return true\n return true;\n };\n History.Adapter.bind(window1, \"popstate\", History.onPopState);\n /**\n\t\t\t * History.pushState(data,title,url)\n\t\t\t * Add a new State to the history object, become it, and trigger onpopstate\n\t\t\t * We have to trigger for HTML4 compatibility\n\t\t\t * @param {object} data\n\t\t\t * @param {string} title\n\t\t\t * @param {string} url\n\t\t\t * @return {true}\n\t\t\t */ History.pushState = function(data, title, url, queue) {\n //History.debug('History.pushState: called', arguments);\n // Check the State\n if (History.getHashByUrl(url) && History.emulated.pushState) throw new Error(\"History.js does not support states with fragement-identifiers (hashes/anchors).\");\n // Handle Queueing\n if (queue !== false && History.busy()) {\n // Wait + Push to Queue\n //History.debug('History.pushState: we must wait', arguments);\n History.pushQueue({\n scope: History,\n callback: History.pushState,\n args: arguments,\n queue: queue\n });\n return false;\n }\n // Make Busy + Continue\n History.busy(true);\n // Create the newState\n var newState = History.createStateObject(data, title, url);\n // Check it\n if (History.isLastSavedState(newState)) // Won't be a change\n History.busy(false);\n else {\n // Store the newState\n History.storeState(newState);\n History.expectedStateId = newState.id;\n // Push the newState\n history.pushState(newState.id, newState.title, newState.url);\n // Fire HTML5 Event\n History.Adapter.trigger(window1, \"popstate\");\n }\n // End pushState closure\n return true;\n };\n /**\n\t\t\t * History.replaceState(data,title,url)\n\t\t\t * Replace the State and trigger onpopstate\n\t\t\t * We have to trigger for HTML4 compatibility\n\t\t\t * @param {object} data\n\t\t\t * @param {string} title\n\t\t\t * @param {string} url\n\t\t\t * @return {true}\n\t\t\t */ History.replaceState = function(data, title, url, queue) {\n //History.debug('History.replaceState: called', arguments);\n // Check the State\n if (History.getHashByUrl(url) && History.emulated.pushState) throw new Error(\"History.js does not support states with fragement-identifiers (hashes/anchors).\");\n // Handle Queueing\n if (queue !== false && History.busy()) {\n // Wait + Push to Queue\n //History.debug('History.replaceState: we must wait', arguments);\n History.pushQueue({\n scope: History,\n callback: History.replaceState,\n args: arguments,\n queue: queue\n });\n return false;\n }\n // Make Busy + Continue\n History.busy(true);\n // Create the newState\n var newState = History.createStateObject(data, title, url);\n // Check it\n if (History.isLastSavedState(newState)) // Won't be a change\n History.busy(false);\n else {\n // Store the newState\n History.storeState(newState);\n History.expectedStateId = newState.id;\n // Push the newState\n history.replaceState(newState.id, newState.title, newState.url);\n // Fire HTML5 Event\n History.Adapter.trigger(window1, \"popstate\");\n }\n // End replaceState closure\n return true;\n };\n } // !History.emulated.pushState\n // ====================================================================\n // Initialise\n /**\n\t\t * Load the Store\n\t\t */ if (sessionStorage) {\n // Fetch\n try {\n History.store = JSON.parse(sessionStorage.getItem(\"History.store\")) || {};\n } catch (err) {\n History.store = {};\n }\n // Normalize\n History.normalizeStore();\n } else {\n // Default Load\n History.store = {};\n History.normalizeStore();\n }\n /**\n\t\t * Clear Intervals on exit to prevent memory leaks\n\t\t */ History.Adapter.bind(window1, \"unload\", History.clearAllIntervals);\n /**\n\t\t * Create the initial State\n\t\t */ History.saveState(History.storeState(History.extractState(History.getLocationHref(), true)));\n /**\n\t\t * Bind for Saving Store\n\t\t */ if (sessionStorage) {\n // When the page is closed\n History.onUnload = function() {\n // Prepare\n var currentStore, item, currentStoreString;\n // Fetch\n try {\n currentStore = JSON.parse(sessionStorage.getItem(\"History.store\")) || {};\n } catch (err) {\n currentStore = {};\n }\n // Ensure\n currentStore.idToState = currentStore.idToState || {};\n currentStore.urlToId = currentStore.urlToId || {};\n currentStore.stateToId = currentStore.stateToId || {};\n // Sync\n for(item in History.idToState){\n if (!History.idToState.hasOwnProperty(item)) continue;\n currentStore.idToState[item] = History.idToState[item];\n }\n for(item in History.urlToId){\n if (!History.urlToId.hasOwnProperty(item)) continue;\n currentStore.urlToId[item] = History.urlToId[item];\n }\n for(item in History.stateToId){\n if (!History.stateToId.hasOwnProperty(item)) continue;\n currentStore.stateToId[item] = History.stateToId[item];\n }\n // Update\n History.store = currentStore;\n History.normalizeStore();\n // In Safari, going into Private Browsing mode causes the\n // Session Storage object to still exist but if you try and use\n // or set any property/function of it it throws the exception\n // \"QUOTA_EXCEEDED_ERR: DOM Exception 22: An attempt was made to\n // add something to storage that exceeded the quota.\" infinitely\n // every second.\n currentStoreString = JSON.stringify(currentStore);\n try {\n // Store\n sessionStorage.setItem(\"History.store\", currentStoreString);\n } catch (e) {\n if (e.code === DOMException.QUOTA_EXCEEDED_ERR) {\n if (sessionStorage.length) {\n // Workaround for a bug seen on iPads. Sometimes the quota exceeded error comes up and simply\n // removing/resetting the storage can work.\n sessionStorage.removeItem(\"History.store\");\n sessionStorage.setItem(\"History.store\", currentStoreString);\n }\n // Otherwise, we're probably private browsing in Safari, so we'll ignore the exception.\n } else throw e;\n }\n };\n // For Internet Explorer\n History.intervalList.push(setInterval(History.onUnload, History.options.storeInterval));\n // For Other Browsers\n History.Adapter.bind(window1, \"beforeunload\", History.onUnload);\n History.Adapter.bind(window1, \"unload\", History.onUnload);\n // Both are enabled for consistency\n }\n // Non-Native pushState Implementation\n if (!History.emulated.pushState) {\n // Be aware, the following is only for native pushState implementations\n // If you are wanting to include something for all browsers\n // Then include it above this if block\n /**\n\t\t\t * Setup Safari Fix\n\t\t\t */ if (History.bugs.safariPoll) History.intervalList.push(setInterval(History.safariStatePoll, History.options.safariPollInterval));\n /**\n\t\t\t * Ensure Cross Browser Compatibility\n\t\t\t */ if (navigator.vendor === \"Apple Computer, Inc.\" || (navigator.appCodeName || \"\") === \"Mozilla\") {\n /**\n\t\t\t\t * Fix Safari HashChange Issue\n\t\t\t\t */ // Setup Alias\n History.Adapter.bind(window1, \"hashchange\", function() {\n History.Adapter.trigger(window1, \"popstate\");\n });\n // Initialise Alias\n if (History.getHash()) History.Adapter.onDomLoad(function() {\n History.Adapter.trigger(window1, \"hashchange\");\n });\n }\n } // !History.emulated.pushState\n }; // History.initCore\n // Try to Initialise History\n if (!History.options || !History.options.delayInit) History.init();\n})(window);\n\n\n/**\n * @preserve\n * Sharer.js\n *\n * @description Create your own social share buttons\n * @version 0.5.1\n * @author Ellison Leao \n * @license MIT\n *\n */ (function(window1, document1) {\n \"use strict\";\n /**\n * @constructor\n */ var Sharer = function(elem) {\n this.elem = elem;\n };\n /**\n * @function init\n * @description bind the events for multiple sharer elements\n * @returns {Empty}\n */ Sharer.init = function() {\n var elems = document1.querySelectorAll(\"[data-sharer]\"), i, l = elems.length;\n for(i = 0; i < l; i++)elems[i].addEventListener(\"click\", Sharer.add);\n };\n /**\n * @function add\n * @description bind the share event for a single dom element\n * @returns {Empty}\n */ Sharer.add = function(elem) {\n var target = elem.currentTarget || elem.srcElement;\n var sharer = new Sharer(target);\n sharer.share();\n };\n // instance methods\n Sharer.prototype = {\n constructor: Sharer,\n /**\n * @function getValue\n * @description Helper to get the attribute of a DOM element\n * @param {String} attr DOM element attribute\n * @returns {String|Empty} returns the attr value or empty string\n */ getValue: function(attr) {\n var val = this.elem.getAttribute(\"data-\" + attr);\n // handing facebook hashtag attribute\n if (val && attr === \"hashtag\") {\n if (!val.startsWith(\"#\")) val = \"#\" + val;\n }\n return val === null ? \"\" : val;\n },\n /**\n * @event share\n * @description Main share event. Will pop a window or redirect to a link\n * based on the data-sharer attribute.\n */ share: function() {\n var sharer = this.getValue(\"sharer\").toLowerCase(), sharers = {\n facebook: {\n shareUrl: \"https://www.facebook.com/sharer/sharer.php\",\n params: {\n u: this.getValue(\"url\"),\n hashtag: this.getValue(\"hashtag\"),\n quote: this.getValue(\"quote\")\n }\n },\n linkedin: {\n shareUrl: \"https://www.linkedin.com/shareArticle\",\n params: {\n url: this.getValue(\"url\"),\n mini: true\n }\n },\n twitter: {\n shareUrl: \"https://twitter.com/intent/tweet/\",\n params: {\n text: this.getValue(\"title\"),\n url: this.getValue(\"url\"),\n hashtags: this.getValue(\"hashtags\"),\n via: this.getValue(\"via\")\n }\n },\n email: {\n shareUrl: \"mailto:\" + this.getValue(\"to\"),\n params: {\n subject: this.getValue(\"subject\"),\n body: this.getValue(\"title\") + \"\\n\" + this.getValue(\"url\")\n }\n },\n whatsapp: {\n shareUrl: this.getValue(\"web\") === \"true\" ? \"https://web.whatsapp.com/send\" : \"https://wa.me/\",\n params: {\n phone: this.getValue(\"to\"),\n text: this.getValue(\"title\") + \" \" + this.getValue(\"url\")\n }\n },\n telegram: {\n shareUrl: \"https://t.me/share\",\n params: {\n text: this.getValue(\"title\"),\n url: this.getValue(\"url\")\n }\n },\n viber: {\n shareUrl: \"viber://forward\",\n params: {\n text: this.getValue(\"title\") + \" \" + this.getValue(\"url\")\n }\n },\n line: {\n shareUrl: \"http://line.me/R/msg/text/?\" + encodeURIComponent(this.getValue(\"title\") + \" \" + this.getValue(\"url\"))\n },\n pinterest: {\n shareUrl: \"https://www.pinterest.com/pin/create/button/\",\n params: {\n url: this.getValue(\"url\"),\n media: this.getValue(\"image\"),\n description: this.getValue(\"description\")\n }\n },\n tumblr: {\n shareUrl: \"http://tumblr.com/widgets/share/tool\",\n params: {\n canonicalUrl: this.getValue(\"url\"),\n content: this.getValue(\"url\"),\n posttype: \"link\",\n title: this.getValue(\"title\"),\n caption: this.getValue(\"caption\"),\n tags: this.getValue(\"tags\")\n }\n },\n hackernews: {\n shareUrl: \"https://news.ycombinator.com/submitlink\",\n params: {\n u: this.getValue(\"url\"),\n t: this.getValue(\"title\")\n }\n },\n reddit: {\n shareUrl: \"https://www.reddit.com/submit\",\n params: {\n url: this.getValue(\"url\"),\n title: this.getValue(\"title\")\n }\n },\n vk: {\n shareUrl: \"http://vk.com/share.php\",\n params: {\n url: this.getValue(\"url\"),\n title: this.getValue(\"title\"),\n description: this.getValue(\"caption\"),\n image: this.getValue(\"image\")\n }\n },\n xing: {\n shareUrl: \"https://www.xing.com/social/share/spi\",\n params: {\n url: this.getValue(\"url\")\n }\n },\n buffer: {\n shareUrl: \"https://buffer.com/add\",\n params: {\n url: this.getValue(\"url\"),\n title: this.getValue(\"title\"),\n via: this.getValue(\"via\"),\n picture: this.getValue(\"picture\")\n }\n },\n instapaper: {\n shareUrl: \"http://www.instapaper.com/edit\",\n params: {\n url: this.getValue(\"url\"),\n title: this.getValue(\"title\"),\n description: this.getValue(\"description\")\n }\n },\n pocket: {\n shareUrl: \"https://getpocket.com/save\",\n params: {\n url: this.getValue(\"url\")\n }\n },\n mashable: {\n shareUrl: \"https://mashable.com/submit\",\n params: {\n url: this.getValue(\"url\"),\n title: this.getValue(\"title\")\n }\n },\n mix: {\n shareUrl: \"https://mix.com/add\",\n params: {\n url: this.getValue(\"url\")\n }\n },\n flipboard: {\n shareUrl: \"https://share.flipboard.com/bookmarklet/popout\",\n params: {\n v: 2,\n title: this.getValue(\"title\"),\n url: this.getValue(\"url\"),\n t: Date.now()\n }\n },\n weibo: {\n shareUrl: \"http://service.weibo.com/share/share.php\",\n params: {\n url: this.getValue(\"url\"),\n title: this.getValue(\"title\"),\n pic: this.getValue(\"image\"),\n appkey: this.getValue(\"appkey\"),\n ralateUid: this.getValue(\"ralateuid\"),\n language: \"zh_cn\"\n }\n },\n blogger: {\n shareUrl: \"https://www.blogger.com/blog-this.g\",\n params: {\n u: this.getValue(\"url\"),\n n: this.getValue(\"title\"),\n t: this.getValue(\"description\")\n }\n },\n baidu: {\n shareUrl: \"http://cang.baidu.com/do/add\",\n params: {\n it: this.getValue(\"title\"),\n iu: this.getValue(\"url\")\n }\n },\n douban: {\n shareUrl: \"https://www.douban.com/share/service\",\n params: {\n name: this.getValue(\"name\"),\n href: this.getValue(\"url\"),\n image: this.getValue(\"image\"),\n comment: this.getValue(\"description\")\n }\n },\n okru: {\n shareUrl: \"https://connect.ok.ru/dk\",\n params: {\n \"st.cmd\": \"WidgetSharePreview\",\n \"st.shareUrl\": this.getValue(\"url\"),\n title: this.getValue(\"title\")\n }\n },\n mailru: {\n shareUrl: \"http://connect.mail.ru/share\",\n params: {\n share_url: this.getValue(\"url\"),\n linkname: this.getValue(\"title\"),\n linknote: this.getValue(\"description\"),\n type: \"page\"\n }\n },\n evernote: {\n shareUrl: \"https://www.evernote.com/clip.action\",\n params: {\n url: this.getValue(\"url\"),\n title: this.getValue(\"title\")\n }\n },\n skype: {\n shareUrl: \"https://web.skype.com/share\",\n params: {\n url: this.getValue(\"url\"),\n title: this.getValue(\"title\")\n }\n },\n delicious: {\n shareUrl: \"https://del.icio.us/post\",\n params: {\n url: this.getValue(\"url\"),\n title: this.getValue(\"title\")\n }\n },\n sms: {\n shareUrl: \"sms://\",\n params: {\n body: this.getValue(\"body\")\n }\n },\n trello: {\n shareUrl: \"https://trello.com/add-card\",\n params: {\n url: this.getValue(\"url\"),\n name: this.getValue(\"title\"),\n desc: this.getValue(\"description\"),\n mode: \"popup\"\n }\n },\n messenger: {\n shareUrl: \"fb-messenger://share\",\n params: {\n link: this.getValue(\"url\")\n }\n },\n odnoklassniki: {\n shareUrl: \"https://connect.ok.ru/dk\",\n params: {\n st: {\n cmd: \"WidgetSharePreview\",\n deprecated: 1,\n shareUrl: this.getValue(\"url\")\n }\n }\n },\n meneame: {\n shareUrl: \"https://www.meneame.net/submit\",\n params: {\n url: this.getValue(\"url\")\n }\n },\n diaspora: {\n shareUrl: \"https://share.diasporafoundation.org\",\n params: {\n title: this.getValue(\"title\"),\n url: this.getValue(\"url\")\n }\n },\n googlebookmarks: {\n shareUrl: \"https://www.google.com/bookmarks/mark\",\n params: {\n op: \"edit\",\n bkmk: this.getValue(\"url\"),\n title: this.getValue(\"title\")\n }\n },\n qzone: {\n shareUrl: \"https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey\",\n params: {\n url: this.getValue(\"url\")\n }\n },\n refind: {\n shareUrl: \"https://refind.com\",\n params: {\n url: this.getValue(\"url\")\n }\n },\n surfingbird: {\n shareUrl: \"https://surfingbird.ru/share\",\n params: {\n url: this.getValue(\"url\"),\n title: this.getValue(\"title\"),\n description: this.getValue(\"description\")\n }\n },\n yahoomail: {\n shareUrl: \"http://compose.mail.yahoo.com\",\n params: {\n to: this.getValue(\"to\"),\n subject: this.getValue(\"subject\"),\n body: this.getValue(\"body\")\n }\n },\n wordpress: {\n shareUrl: \"https://wordpress.com/wp-admin/press-this.php\",\n params: {\n u: this.getValue(\"url\"),\n t: this.getValue(\"title\"),\n s: this.getValue(\"title\")\n }\n },\n amazon: {\n shareUrl: \"https://www.amazon.com/gp/wishlist/static-add\",\n params: {\n u: this.getValue(\"url\"),\n t: this.getValue(\"title\")\n }\n },\n pinboard: {\n shareUrl: \"https://pinboard.in/add\",\n params: {\n url: this.getValue(\"url\"),\n title: this.getValue(\"title\"),\n description: this.getValue(\"description\")\n }\n },\n threema: {\n shareUrl: \"threema://compose\",\n params: {\n text: this.getValue(\"text\"),\n id: this.getValue(\"id\")\n }\n },\n kakaostory: {\n shareUrl: \"https://story.kakao.com/share\",\n params: {\n url: this.getValue(\"url\")\n }\n },\n yummly: {\n shareUrl: \"http://www.yummly.com/urb/verify\",\n params: {\n url: this.getValue(\"url\"),\n title: this.getValue(\"title\"),\n yumtype: \"button\"\n }\n }\n }, s = sharers[sharer];\n // custom popups sizes\n if (s) {\n s.width = this.getValue(\"width\");\n s.height = this.getValue(\"height\");\n }\n return s !== undefined ? this.urlSharer(s) : false;\n },\n /**\n * @event urlSharer\n * @param {Object} sharer\n */ urlSharer: function(sharer) {\n var p = sharer.params || {}, keys = Object.keys(p), i, str = keys.length > 0 ? \"?\" : \"\";\n for(i = 0; i < keys.length; i++){\n if (str !== \"?\") str += \"&\";\n if (p[keys[i]]) str += keys[i] + \"=\" + encodeURIComponent(p[keys[i]]);\n }\n sharer.shareUrl += str;\n var isLink = this.getValue(\"link\") === \"true\";\n var isBlank = this.getValue(\"blank\") === \"true\";\n if (isLink) {\n if (isBlank) window1.open(sharer.shareUrl, \"_blank\");\n else window1.location.href = sharer.shareUrl;\n } else {\n console.log(sharer.shareUrl);\n // defaults to popup if no data-link is provided\n var popWidth = sharer.width || 600, popHeight = sharer.height || 480, left = window1.innerWidth / 2 - popWidth / 2 + window1.screenX, top = window1.innerHeight / 2 - popHeight / 2 + window1.screenY, popParams = \"scrollbars=no, width=\" + popWidth + \", height=\" + popHeight + \", top=\" + top + \", left=\" + left, newWindow = window1.open(sharer.shareUrl, \"\", popParams);\n if (window1.focus) newWindow.focus();\n }\n }\n };\n // adding sharer events on domcontentload\n if (document1.readyState === \"complete\" || document1.readyState !== \"loading\") Sharer.init();\n else document1.addEventListener(\"DOMContentLoaded\", Sharer.init);\n // exporting sharer for external usage\n window1.Sharer = Sharer;\n})(window, document);\n\n\nvar $7b22250fbed98fb8$exports = {};\n!function(e, t) {\n $7b22250fbed98fb8$exports = t();\n}($7b22250fbed98fb8$exports, function() {\n \"use strict\";\n function e(t) {\n return (e = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n return typeof e;\n } : function(e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n })(t);\n }\n function t(e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n }\n function i(e, t) {\n for(var i = 0; i < t.length; i++){\n var n = t[i];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(e, n.key, n);\n }\n }\n function n(e, t, n) {\n return t && i(e.prototype, t), n && i(e, n), e;\n }\n var s = Date.now();\n function l() {\n var e = {}, t = !0, i = 0, n = arguments.length;\n \"[object Boolean]\" === Object.prototype.toString.call(arguments[0]) && (t = arguments[0], i++);\n for(var s = function(i) {\n for(var n in i)Object.prototype.hasOwnProperty.call(i, n) && (t && \"[object Object]\" === Object.prototype.toString.call(i[n]) ? e[n] = l(!0, e[n], i[n]) : e[n] = i[n]);\n }; i < n; i++){\n var o = arguments[i];\n s(o);\n }\n return e;\n }\n function o(e, t) {\n if ((k(e) || e === window || e === document) && (e = [\n e\n ]), A(e) || L(e) || (e = [\n e\n ]), 0 != P(e)) {\n if (A(e) && !L(e)) for(var i = e.length, n = 0; n < i && !1 !== t.call(e[n], e[n], n, e); n++);\n else if (L(e)) {\n for(var s in e)if (O(e, s) && !1 === t.call(e[s], e[s], s, e)) break;\n }\n }\n }\n function r(e) {\n var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null, i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null, n = e[s] = e[s] || [], l = {\n all: n,\n evt: null,\n found: null\n };\n return t && i && P(n) > 0 && o(n, function(e, n) {\n if (e.eventName == t && e.fn.toString() == i.toString()) return l.found = !0, l.evt = n, !1;\n }), l;\n }\n function a(e) {\n var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, i = t.onElement, n = t.withCallback, s = t.avoidDuplicate, l = void 0 === s || s, a = t.once, h = void 0 !== a && a, d = t.useCapture, c = void 0 !== d && d, u = arguments.length > 2 ? arguments[2] : void 0, g = i || [];\n function v(e) {\n T(n) && n.call(u, e, this), h && v.destroy();\n }\n return C(g) && (g = document.querySelectorAll(g)), v.destroy = function() {\n o(g, function(t) {\n var i = r(t, e, v);\n i.found && i.all.splice(i.evt, 1), t.removeEventListener && t.removeEventListener(e, v, c);\n });\n }, o(g, function(t) {\n var i = r(t, e, v);\n (t.addEventListener && l && !i.found || !l) && (t.addEventListener(e, v, c), i.all.push({\n eventName: e,\n fn: v\n }));\n }), v;\n }\n function h(e, t) {\n o(t.split(\" \"), function(t) {\n return e.classList.add(t);\n });\n }\n function d(e, t) {\n o(t.split(\" \"), function(t) {\n return e.classList.remove(t);\n });\n }\n function c(e, t) {\n return e.classList.contains(t);\n }\n function u(e, t) {\n for(; e !== document.body;){\n if (!(e = e.parentElement)) return !1;\n if (\"function\" == typeof e.matches ? e.matches(t) : e.msMatchesSelector(t)) return e;\n }\n }\n function g(e) {\n var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : \"\", i = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];\n if (!e || \"\" === t) return !1;\n if (\"none\" === t) return T(i) && i(), !1;\n var n = x(), s = t.split(\" \");\n o(s, function(t) {\n h(e, \"g\" + t);\n }), a(n, {\n onElement: e,\n avoidDuplicate: !1,\n once: !0,\n withCallback: function(e, t) {\n o(s, function(e) {\n d(t, \"g\" + e);\n }), T(i) && i();\n }\n });\n }\n function v(e) {\n var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : \"\";\n if (\"\" === t) return e.style.webkitTransform = \"\", e.style.MozTransform = \"\", e.style.msTransform = \"\", e.style.OTransform = \"\", e.style.transform = \"\", !1;\n e.style.webkitTransform = t, e.style.MozTransform = t, e.style.msTransform = t, e.style.OTransform = t, e.style.transform = t;\n }\n function f(e) {\n e.style.display = \"block\";\n }\n function p(e) {\n e.style.display = \"none\";\n }\n function m(e) {\n var t = document.createDocumentFragment(), i = document.createElement(\"div\");\n for(i.innerHTML = e; i.firstChild;)t.appendChild(i.firstChild);\n return t;\n }\n function y() {\n return {\n width: window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth,\n height: window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight\n };\n }\n function x() {\n var e, t = document.createElement(\"fakeelement\"), i = {\n animation: \"animationend\",\n OAnimation: \"oAnimationEnd\",\n MozAnimation: \"animationend\",\n WebkitAnimation: \"webkitAnimationEnd\"\n };\n for(e in i)if (void 0 !== t.style[e]) return i[e];\n }\n function b(e, t, i, n) {\n if (e()) t();\n else {\n var s;\n i || (i = 100);\n var l = setInterval(function() {\n e() && (clearInterval(l), s && clearTimeout(s), t());\n }, i);\n n && (s = setTimeout(function() {\n clearInterval(l);\n }, n));\n }\n }\n function S(e, t, i) {\n if (I(e)) console.error(\"Inject assets error\");\n else if (T(t) && (i = t, t = !1), C(t) && t in window) T(i) && i();\n else {\n var n;\n if (-1 !== e.indexOf(\".css\")) {\n if ((n = document.querySelectorAll('link[href=\"' + e + '\"]')) && n.length > 0) return void (T(i) && i());\n var s = document.getElementsByTagName(\"head\")[0], l = s.querySelectorAll('link[rel=\"stylesheet\"]'), o = document.createElement(\"link\");\n return o.rel = \"stylesheet\", o.type = \"text/css\", o.href = e, o.media = \"all\", l ? s.insertBefore(o, l[0]) : s.appendChild(o), void (T(i) && i());\n }\n if ((n = document.querySelectorAll('script[src=\"' + e + '\"]')) && n.length > 0) {\n if (T(i)) {\n if (C(t)) return b(function() {\n return void 0 !== window[t];\n }, function() {\n i();\n }), !1;\n i();\n }\n } else {\n var r = document.createElement(\"script\");\n r.type = \"text/javascript\", r.src = e, r.onload = function() {\n if (T(i)) {\n if (C(t)) return b(function() {\n return void 0 !== window[t];\n }, function() {\n i();\n }), !1;\n i();\n }\n }, document.body.appendChild(r);\n }\n }\n }\n function w() {\n return \"navigator\" in window && window.navigator.userAgent.match(/(iPad)|(iPhone)|(iPod)|(Android)|(PlayBook)|(BB10)|(BlackBerry)|(Opera Mini)|(IEMobile)|(webOS)|(MeeGo)/i);\n }\n function T(e) {\n return \"function\" == typeof e;\n }\n function C(e) {\n return \"string\" == typeof e;\n }\n function k(e) {\n return !(!e || !e.nodeType || 1 != e.nodeType);\n }\n function E(e) {\n return Array.isArray(e);\n }\n function A(e) {\n return e && e.length && isFinite(e.length);\n }\n function L(t) {\n return \"object\" === e(t) && null != t && !T(t) && !E(t);\n }\n function I(e) {\n return null == e;\n }\n function O(e, t) {\n return null !== e && hasOwnProperty.call(e, t);\n }\n function P(e) {\n if (L(e)) {\n if (e.keys) return e.keys().length;\n var t = 0;\n for(var i in e)O(e, i) && t++;\n return t;\n }\n return e.length;\n }\n function M(e) {\n return !isNaN(parseFloat(e)) && isFinite(e);\n }\n function z() {\n var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : -1, t = document.querySelectorAll(\".gbtn[data-taborder]:not(.disabled)\");\n if (!t.length) return !1;\n if (1 == t.length) return t[0];\n \"string\" == typeof e && (e = parseInt(e));\n var i = [];\n o(t, function(e) {\n i.push(e.getAttribute(\"data-taborder\"));\n });\n var n = Math.max.apply(Math, i.map(function(e) {\n return parseInt(e);\n })), s = e < 0 ? 1 : e + 1;\n s > n && (s = \"1\");\n var l = i.filter(function(e) {\n return e >= parseInt(s);\n }), r = l.sort()[0];\n return document.querySelector('.gbtn[data-taborder=\"'.concat(r, '\"]'));\n }\n function X(e) {\n if (e.events.hasOwnProperty(\"keyboard\")) return !1;\n e.events.keyboard = a(\"keydown\", {\n onElement: window,\n withCallback: function(t, i) {\n var n = (t = t || window.event).keyCode;\n if (9 == n) {\n var s = document.querySelector(\".gbtn.focused\");\n if (!s) {\n var l = !(!document.activeElement || !document.activeElement.nodeName) && document.activeElement.nodeName.toLocaleLowerCase();\n if (\"input\" == l || \"textarea\" == l || \"button\" == l) return;\n }\n t.preventDefault();\n var o = document.querySelectorAll(\".gbtn[data-taborder]\");\n if (!o || o.length <= 0) return;\n if (!s) {\n var r = z();\n return void (r && (r.focus(), h(r, \"focused\")));\n }\n var a = z(s.getAttribute(\"data-taborder\"));\n d(s, \"focused\"), a && (a.focus(), h(a, \"focused\"));\n }\n 39 == n && e.nextSlide(), 37 == n && e.prevSlide(), 27 == n && e.close();\n }\n });\n }\n function Y(e) {\n return Math.sqrt(e.x * e.x + e.y * e.y);\n }\n function q(e, t) {\n var i = function(e, t) {\n var i = Y(e) * Y(t);\n if (0 === i) return 0;\n var n = function(e, t) {\n return e.x * t.x + e.y * t.y;\n }(e, t) / i;\n return n > 1 && (n = 1), Math.acos(n);\n }(e, t);\n return function(e, t) {\n return e.x * t.y - t.x * e.y;\n }(e, t) > 0 && (i *= -1), 180 * i / Math.PI;\n }\n var N = function() {\n function e(i) {\n t(this, e), this.handlers = [], this.el = i;\n }\n return n(e, [\n {\n key: \"add\",\n value: function(e) {\n this.handlers.push(e);\n }\n },\n {\n key: \"del\",\n value: function(e) {\n e || (this.handlers = []);\n for(var t = this.handlers.length; t >= 0; t--)this.handlers[t] === e && this.handlers.splice(t, 1);\n }\n },\n {\n key: \"dispatch\",\n value: function() {\n for(var e = 0, t = this.handlers.length; e < t; e++){\n var i = this.handlers[e];\n \"function\" == typeof i && i.apply(this.el, arguments);\n }\n }\n }\n ]), e;\n }();\n function D(e, t) {\n var i = new N(e);\n return i.add(t), i;\n }\n var _ = function() {\n function e(i, n) {\n t(this, e), this.element = \"string\" == typeof i ? document.querySelector(i) : i, this.start = this.start.bind(this), this.move = this.move.bind(this), this.end = this.end.bind(this), this.cancel = this.cancel.bind(this), this.element.addEventListener(\"touchstart\", this.start, !1), this.element.addEventListener(\"touchmove\", this.move, !1), this.element.addEventListener(\"touchend\", this.end, !1), this.element.addEventListener(\"touchcancel\", this.cancel, !1), this.preV = {\n x: null,\n y: null\n }, this.pinchStartLen = null, this.zoom = 1, this.isDoubleTap = !1;\n var s = function() {};\n this.rotate = D(this.element, n.rotate || s), this.touchStart = D(this.element, n.touchStart || s), this.multipointStart = D(this.element, n.multipointStart || s), this.multipointEnd = D(this.element, n.multipointEnd || s), this.pinch = D(this.element, n.pinch || s), this.swipe = D(this.element, n.swipe || s), this.tap = D(this.element, n.tap || s), this.doubleTap = D(this.element, n.doubleTap || s), this.longTap = D(this.element, n.longTap || s), this.singleTap = D(this.element, n.singleTap || s), this.pressMove = D(this.element, n.pressMove || s), this.twoFingerPressMove = D(this.element, n.twoFingerPressMove || s), this.touchMove = D(this.element, n.touchMove || s), this.touchEnd = D(this.element, n.touchEnd || s), this.touchCancel = D(this.element, n.touchCancel || s), this.translateContainer = this.element, this._cancelAllHandler = this.cancelAll.bind(this), window.addEventListener(\"scroll\", this._cancelAllHandler), this.delta = null, this.last = null, this.now = null, this.tapTimeout = null, this.singleTapTimeout = null, this.longTapTimeout = null, this.swipeTimeout = null, this.x1 = this.x2 = this.y1 = this.y2 = null, this.preTapPosition = {\n x: null,\n y: null\n };\n }\n return n(e, [\n {\n key: \"start\",\n value: function(e) {\n if (e.touches) {\n if (e.target && e.target.nodeName && [\n \"a\",\n \"button\",\n \"input\"\n ].indexOf(e.target.nodeName.toLowerCase()) >= 0) console.log(\"ignore drag for this touched element\", e.target.nodeName.toLowerCase());\n else {\n this.now = Date.now(), this.x1 = e.touches[0].pageX, this.y1 = e.touches[0].pageY, this.delta = this.now - (this.last || this.now), this.touchStart.dispatch(e, this.element), null !== this.preTapPosition.x && (this.isDoubleTap = this.delta > 0 && this.delta <= 250 && Math.abs(this.preTapPosition.x - this.x1) < 30 && Math.abs(this.preTapPosition.y - this.y1) < 30, this.isDoubleTap && clearTimeout(this.singleTapTimeout)), this.preTapPosition.x = this.x1, this.preTapPosition.y = this.y1, this.last = this.now;\n var t = this.preV;\n if (e.touches.length > 1) {\n this._cancelLongTap(), this._cancelSingleTap();\n var i = {\n x: e.touches[1].pageX - this.x1,\n y: e.touches[1].pageY - this.y1\n };\n t.x = i.x, t.y = i.y, this.pinchStartLen = Y(t), this.multipointStart.dispatch(e, this.element);\n }\n this._preventTap = !1, this.longTapTimeout = setTimeout((function() {\n this.longTap.dispatch(e, this.element), this._preventTap = !0;\n }).bind(this), 750);\n }\n }\n }\n },\n {\n key: \"move\",\n value: function(e) {\n if (e.touches) {\n var t = this.preV, i = e.touches.length, n = e.touches[0].pageX, s = e.touches[0].pageY;\n if (this.isDoubleTap = !1, i > 1) {\n var l = e.touches[1].pageX, o = e.touches[1].pageY, r = {\n x: e.touches[1].pageX - n,\n y: e.touches[1].pageY - s\n };\n null !== t.x && (this.pinchStartLen > 0 && (e.zoom = Y(r) / this.pinchStartLen, this.pinch.dispatch(e, this.element)), e.angle = q(r, t), this.rotate.dispatch(e, this.element)), t.x = r.x, t.y = r.y, null !== this.x2 && null !== this.sx2 ? (e.deltaX = (n - this.x2 + l - this.sx2) / 2, e.deltaY = (s - this.y2 + o - this.sy2) / 2) : (e.deltaX = 0, e.deltaY = 0), this.twoFingerPressMove.dispatch(e, this.element), this.sx2 = l, this.sy2 = o;\n } else {\n if (null !== this.x2) {\n e.deltaX = n - this.x2, e.deltaY = s - this.y2;\n var a = Math.abs(this.x1 - this.x2), h = Math.abs(this.y1 - this.y2);\n (a > 10 || h > 10) && (this._preventTap = !0);\n } else e.deltaX = 0, e.deltaY = 0;\n this.pressMove.dispatch(e, this.element);\n }\n this.touchMove.dispatch(e, this.element), this._cancelLongTap(), this.x2 = n, this.y2 = s, i > 1 && e.preventDefault();\n }\n }\n },\n {\n key: \"end\",\n value: function(e) {\n if (e.changedTouches) {\n this._cancelLongTap();\n var t = this;\n e.touches.length < 2 && (this.multipointEnd.dispatch(e, this.element), this.sx2 = this.sy2 = null), this.x2 && Math.abs(this.x1 - this.x2) > 30 || this.y2 && Math.abs(this.y1 - this.y2) > 30 ? (e.direction = this._swipeDirection(this.x1, this.x2, this.y1, this.y2), this.swipeTimeout = setTimeout(function() {\n t.swipe.dispatch(e, t.element);\n }, 0)) : (this.tapTimeout = setTimeout(function() {\n t._preventTap || t.tap.dispatch(e, t.element), t.isDoubleTap && (t.doubleTap.dispatch(e, t.element), t.isDoubleTap = !1);\n }, 0), t.isDoubleTap || (t.singleTapTimeout = setTimeout(function() {\n t.singleTap.dispatch(e, t.element);\n }, 250))), this.touchEnd.dispatch(e, this.element), this.preV.x = 0, this.preV.y = 0, this.zoom = 1, this.pinchStartLen = null, this.x1 = this.x2 = this.y1 = this.y2 = null;\n }\n }\n },\n {\n key: \"cancelAll\",\n value: function() {\n this._preventTap = !0, clearTimeout(this.singleTapTimeout), clearTimeout(this.tapTimeout), clearTimeout(this.longTapTimeout), clearTimeout(this.swipeTimeout);\n }\n },\n {\n key: \"cancel\",\n value: function(e) {\n this.cancelAll(), this.touchCancel.dispatch(e, this.element);\n }\n },\n {\n key: \"_cancelLongTap\",\n value: function() {\n clearTimeout(this.longTapTimeout);\n }\n },\n {\n key: \"_cancelSingleTap\",\n value: function() {\n clearTimeout(this.singleTapTimeout);\n }\n },\n {\n key: \"_swipeDirection\",\n value: function(e, t, i, n) {\n return Math.abs(e - t) >= Math.abs(i - n) ? e - t > 0 ? \"Left\" : \"Right\" : i - n > 0 ? \"Up\" : \"Down\";\n }\n },\n {\n key: \"on\",\n value: function(e, t) {\n this[e] && this[e].add(t);\n }\n },\n {\n key: \"off\",\n value: function(e, t) {\n this[e] && this[e].del(t);\n }\n },\n {\n key: \"destroy\",\n value: function() {\n return this.singleTapTimeout && clearTimeout(this.singleTapTimeout), this.tapTimeout && clearTimeout(this.tapTimeout), this.longTapTimeout && clearTimeout(this.longTapTimeout), this.swipeTimeout && clearTimeout(this.swipeTimeout), this.element.removeEventListener(\"touchstart\", this.start), this.element.removeEventListener(\"touchmove\", this.move), this.element.removeEventListener(\"touchend\", this.end), this.element.removeEventListener(\"touchcancel\", this.cancel), this.rotate.del(), this.touchStart.del(), this.multipointStart.del(), this.multipointEnd.del(), this.pinch.del(), this.swipe.del(), this.tap.del(), this.doubleTap.del(), this.longTap.del(), this.singleTap.del(), this.pressMove.del(), this.twoFingerPressMove.del(), this.touchMove.del(), this.touchEnd.del(), this.touchCancel.del(), this.preV = this.pinchStartLen = this.zoom = this.isDoubleTap = this.delta = this.last = this.now = this.tapTimeout = this.singleTapTimeout = this.longTapTimeout = this.swipeTimeout = this.x1 = this.x2 = this.y1 = this.y2 = this.preTapPosition = this.rotate = this.touchStart = this.multipointStart = this.multipointEnd = this.pinch = this.swipe = this.tap = this.doubleTap = this.longTap = this.singleTap = this.pressMove = this.touchMove = this.touchEnd = this.touchCancel = this.twoFingerPressMove = null, window.removeEventListener(\"scroll\", this._cancelAllHandler), null;\n }\n }\n ]), e;\n }();\n function W(e) {\n var t = function() {\n var e, t = document.createElement(\"fakeelement\"), i = {\n transition: \"transitionend\",\n OTransition: \"oTransitionEnd\",\n MozTransition: \"transitionend\",\n WebkitTransition: \"webkitTransitionEnd\"\n };\n for(e in i)if (void 0 !== t.style[e]) return i[e];\n }(), i = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth, n = c(e, \"gslide-media\") ? e : e.querySelector(\".gslide-media\"), s = u(n, \".ginner-container\"), l = e.querySelector(\".gslide-description\");\n i > 769 && (n = s), h(n, \"greset\"), v(n, \"translate3d(0, 0, 0)\"), a(t, {\n onElement: n,\n once: !0,\n withCallback: function(e, t) {\n d(n, \"greset\");\n }\n }), n.style.opacity = \"\", l && (l.style.opacity = \"\");\n }\n function B(e) {\n if (e.events.hasOwnProperty(\"touch\")) return !1;\n var t, i, n, s = y(), l = s.width, o = s.height, r = !1, a = null, g = null, f = null, p = !1, m = 1, x = 1, b = !1, S = !1, w = null, T = null, C = null, k = null, E = 0, A = 0, L = !1, I = !1, O = {}, P = {}, M = 0, z = 0, X = document.getElementById(\"glightbox-slider\"), Y = document.querySelector(\".goverlay\"), q = new _(X, {\n touchStart: function(t) {\n if (r = !0, (c(t.targetTouches[0].target, \"ginner-container\") || u(t.targetTouches[0].target, \".gslide-desc\") || \"a\" == t.targetTouches[0].target.nodeName.toLowerCase()) && (r = !1), u(t.targetTouches[0].target, \".gslide-inline\") && !c(t.targetTouches[0].target.parentNode, \"gslide-inline\") && (r = !1), r) {\n if (P = t.targetTouches[0], O.pageX = t.targetTouches[0].pageX, O.pageY = t.targetTouches[0].pageY, M = t.targetTouches[0].clientX, z = t.targetTouches[0].clientY, a = e.activeSlide, g = a.querySelector(\".gslide-media\"), n = a.querySelector(\".gslide-inline\"), f = null, c(g, \"gslide-image\") && (f = g.querySelector(\"img\")), (window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth) > 769 && (g = a.querySelector(\".ginner-container\")), d(Y, \"greset\"), t.pageX > 20 && t.pageX < window.innerWidth - 20) return;\n t.preventDefault();\n }\n },\n touchMove: function(s) {\n if (r && (P = s.targetTouches[0], !b && !S)) {\n if (n && n.offsetHeight > o) {\n var a = O.pageX - P.pageX;\n if (Math.abs(a) <= 13) return !1;\n }\n p = !0;\n var h, d = s.targetTouches[0].clientX, c = s.targetTouches[0].clientY, u = M - d, m = z - c;\n if (Math.abs(u) > Math.abs(m) ? (L = !1, I = !0) : (I = !1, L = !0), t = P.pageX - O.pageX, E = 100 * t / l, i = P.pageY - O.pageY, A = 100 * i / o, L && f && (h = 1 - Math.abs(i) / o, Y.style.opacity = h, e.settings.touchFollowAxis && (E = 0)), I && (h = 1 - Math.abs(t) / l, g.style.opacity = h, e.settings.touchFollowAxis && (A = 0)), !f) return v(g, \"translate3d(\".concat(E, \"%, 0, 0)\"));\n v(g, \"translate3d(\".concat(E, \"%, \").concat(A, \"%, 0)\"));\n }\n },\n touchEnd: function() {\n if (r) {\n if (p = !1, S || b) return C = w, void (k = T);\n var t = Math.abs(parseInt(A)), i = Math.abs(parseInt(E));\n if (!(t > 29 && f)) return t < 29 && i < 25 ? (h(Y, \"greset\"), Y.style.opacity = 1, W(g)) : void 0;\n e.close();\n }\n },\n multipointEnd: function() {\n setTimeout(function() {\n b = !1;\n }, 50);\n },\n multipointStart: function() {\n b = !0, m = x || 1;\n },\n pinch: function(e) {\n if (!f || p) return !1;\n b = !0, f.scaleX = f.scaleY = m * e.zoom;\n var t = m * e.zoom;\n if (S = !0, t <= 1) return S = !1, t = 1, k = null, C = null, w = null, T = null, void f.setAttribute(\"style\", \"\");\n t > 4.5 && (t = 4.5), f.style.transform = \"scale3d(\".concat(t, \", \").concat(t, \", 1)\"), x = t;\n },\n pressMove: function(e) {\n if (S && !b) {\n var t = P.pageX - O.pageX, i = P.pageY - O.pageY;\n C && (t += C), k && (i += k), w = t, T = i;\n var n = \"translate3d(\".concat(t, \"px, \").concat(i, \"px, 0)\");\n x && (n += \" scale3d(\".concat(x, \", \").concat(x, \", 1)\")), v(f, n);\n }\n },\n swipe: function(t) {\n if (!S) {\n if (b) b = !1;\n else {\n if (\"Left\" == t.direction) {\n if (e.index == e.elements.length - 1) return W(g);\n e.nextSlide();\n }\n if (\"Right\" == t.direction) {\n if (0 == e.index) return W(g);\n e.prevSlide();\n }\n }\n }\n }\n });\n e.events.touch = q;\n }\n var H = function() {\n function e(i, n) {\n var s = this, l = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null;\n if (t(this, e), this.img = i, this.slide = n, this.onclose = l, this.img.setZoomEvents) return !1;\n this.active = !1, this.zoomedIn = !1, this.dragging = !1, this.currentX = null, this.currentY = null, this.initialX = null, this.initialY = null, this.xOffset = 0, this.yOffset = 0, this.img.addEventListener(\"mousedown\", function(e) {\n return s.dragStart(e);\n }, !1), this.img.addEventListener(\"mouseup\", function(e) {\n return s.dragEnd(e);\n }, !1), this.img.addEventListener(\"mousemove\", function(e) {\n return s.drag(e);\n }, !1), this.img.addEventListener(\"click\", function(e) {\n return s.slide.classList.contains(\"dragging-nav\") ? (s.zoomOut(), !1) : s.zoomedIn ? void (s.zoomedIn && !s.dragging && s.zoomOut()) : s.zoomIn();\n }, !1), this.img.setZoomEvents = !0;\n }\n return n(e, [\n {\n key: \"zoomIn\",\n value: function() {\n var e = this.widowWidth();\n if (!(this.zoomedIn || e <= 768)) {\n var t = this.img;\n if (t.setAttribute(\"data-style\", t.getAttribute(\"style\")), t.style.maxWidth = t.naturalWidth + \"px\", t.style.maxHeight = t.naturalHeight + \"px\", t.naturalWidth > e) {\n var i = e / 2 - t.naturalWidth / 2;\n this.setTranslate(this.img.parentNode, i, 0);\n }\n this.slide.classList.add(\"zoomed\"), this.zoomedIn = !0;\n }\n }\n },\n {\n key: \"zoomOut\",\n value: function() {\n this.img.parentNode.setAttribute(\"style\", \"\"), this.img.setAttribute(\"style\", this.img.getAttribute(\"data-style\")), this.slide.classList.remove(\"zoomed\"), this.zoomedIn = !1, this.currentX = null, this.currentY = null, this.initialX = null, this.initialY = null, this.xOffset = 0, this.yOffset = 0, this.onclose && \"function\" == typeof this.onclose && this.onclose();\n }\n },\n {\n key: \"dragStart\",\n value: function(e) {\n e.preventDefault(), this.zoomedIn ? (\"touchstart\" === e.type ? (this.initialX = e.touches[0].clientX - this.xOffset, this.initialY = e.touches[0].clientY - this.yOffset) : (this.initialX = e.clientX - this.xOffset, this.initialY = e.clientY - this.yOffset), e.target === this.img && (this.active = !0, this.img.classList.add(\"dragging\"))) : this.active = !1;\n }\n },\n {\n key: \"dragEnd\",\n value: function(e) {\n var t = this;\n e.preventDefault(), this.initialX = this.currentX, this.initialY = this.currentY, this.active = !1, setTimeout(function() {\n t.dragging = !1, t.img.isDragging = !1, t.img.classList.remove(\"dragging\");\n }, 100);\n }\n },\n {\n key: \"drag\",\n value: function(e) {\n this.active && (e.preventDefault(), \"touchmove\" === e.type ? (this.currentX = e.touches[0].clientX - this.initialX, this.currentY = e.touches[0].clientY - this.initialY) : (this.currentX = e.clientX - this.initialX, this.currentY = e.clientY - this.initialY), this.xOffset = this.currentX, this.yOffset = this.currentY, this.img.isDragging = !0, this.dragging = !0, this.setTranslate(this.img, this.currentX, this.currentY));\n }\n },\n {\n key: \"onMove\",\n value: function(e) {\n if (this.zoomedIn) {\n var t = e.clientX - this.img.naturalWidth / 2, i = e.clientY - this.img.naturalHeight / 2;\n this.setTranslate(this.img, t, i);\n }\n }\n },\n {\n key: \"setTranslate\",\n value: function(e, t, i) {\n e.style.transform = \"translate3d(\" + t + \"px, \" + i + \"px, 0)\";\n }\n },\n {\n key: \"widowWidth\",\n value: function() {\n return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\n }\n }\n ]), e;\n }(), V = function() {\n function e() {\n var i = this, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n t(this, e);\n var s = n.dragEl, l = n.toleranceX, o = void 0 === l ? 40 : l, r = n.toleranceY, a = void 0 === r ? 65 : r, h = n.slide, d = void 0 === h ? null : h, c = n.instance, u = void 0 === c ? null : c;\n this.el = s, this.active = !1, this.dragging = !1, this.currentX = null, this.currentY = null, this.initialX = null, this.initialY = null, this.xOffset = 0, this.yOffset = 0, this.direction = null, this.lastDirection = null, this.toleranceX = o, this.toleranceY = a, this.toleranceReached = !1, this.dragContainer = this.el, this.slide = d, this.instance = u, this.el.addEventListener(\"mousedown\", function(e) {\n return i.dragStart(e);\n }, !1), this.el.addEventListener(\"mouseup\", function(e) {\n return i.dragEnd(e);\n }, !1), this.el.addEventListener(\"mousemove\", function(e) {\n return i.drag(e);\n }, !1);\n }\n return n(e, [\n {\n key: \"dragStart\",\n value: function(e) {\n if (this.slide.classList.contains(\"zoomed\")) this.active = !1;\n else {\n \"touchstart\" === e.type ? (this.initialX = e.touches[0].clientX - this.xOffset, this.initialY = e.touches[0].clientY - this.yOffset) : (this.initialX = e.clientX - this.xOffset, this.initialY = e.clientY - this.yOffset);\n var t = e.target.nodeName.toLowerCase();\n e.target.classList.contains(\"nodrag\") || u(e.target, \".nodrag\") || -1 !== [\n \"input\",\n \"select\",\n \"textarea\",\n \"button\",\n \"a\"\n ].indexOf(t) ? this.active = !1 : (e.preventDefault(), (e.target === this.el || \"img\" !== t && u(e.target, \".gslide-inline\")) && (this.active = !0, this.el.classList.add(\"dragging\"), this.dragContainer = u(e.target, \".ginner-container\")));\n }\n }\n },\n {\n key: \"dragEnd\",\n value: function(e) {\n var t = this;\n e && e.preventDefault(), this.initialX = 0, this.initialY = 0, this.currentX = null, this.currentY = null, this.initialX = null, this.initialY = null, this.xOffset = 0, this.yOffset = 0, this.active = !1, this.doSlideChange && (this.instance.preventOutsideClick = !0, \"right\" == this.doSlideChange && this.instance.prevSlide(), \"left\" == this.doSlideChange && this.instance.nextSlide()), this.doSlideClose && this.instance.close(), this.toleranceReached || this.setTranslate(this.dragContainer, 0, 0, !0), setTimeout(function() {\n t.instance.preventOutsideClick = !1, t.toleranceReached = !1, t.lastDirection = null, t.dragging = !1, t.el.isDragging = !1, t.el.classList.remove(\"dragging\"), t.slide.classList.remove(\"dragging-nav\"), t.dragContainer.style.transform = \"\", t.dragContainer.style.transition = \"\";\n }, 100);\n }\n },\n {\n key: \"drag\",\n value: function(e) {\n if (this.active) {\n e.preventDefault(), this.slide.classList.add(\"dragging-nav\"), \"touchmove\" === e.type ? (this.currentX = e.touches[0].clientX - this.initialX, this.currentY = e.touches[0].clientY - this.initialY) : (this.currentX = e.clientX - this.initialX, this.currentY = e.clientY - this.initialY), this.xOffset = this.currentX, this.yOffset = this.currentY, this.el.isDragging = !0, this.dragging = !0, this.doSlideChange = !1, this.doSlideClose = !1;\n var t = Math.abs(this.currentX), i = Math.abs(this.currentY);\n if (t > 0 && t >= Math.abs(this.currentY) && (!this.lastDirection || \"x\" == this.lastDirection)) {\n this.yOffset = 0, this.lastDirection = \"x\", this.setTranslate(this.dragContainer, this.currentX, 0);\n var n = this.shouldChange();\n if (!this.instance.settings.dragAutoSnap && n && (this.doSlideChange = n), this.instance.settings.dragAutoSnap && n) return this.instance.preventOutsideClick = !0, this.toleranceReached = !0, this.active = !1, this.instance.preventOutsideClick = !0, this.dragEnd(null), \"right\" == n && this.instance.prevSlide(), void (\"left\" == n && this.instance.nextSlide());\n }\n if (this.toleranceY > 0 && i > 0 && i >= t && (!this.lastDirection || \"y\" == this.lastDirection)) {\n this.xOffset = 0, this.lastDirection = \"y\", this.setTranslate(this.dragContainer, 0, this.currentY);\n var s = this.shouldClose();\n return !this.instance.settings.dragAutoSnap && s && (this.doSlideClose = !0), void (this.instance.settings.dragAutoSnap && s && this.instance.close());\n }\n }\n }\n },\n {\n key: \"shouldChange\",\n value: function() {\n var e = !1;\n if (Math.abs(this.currentX) >= this.toleranceX) {\n var t = this.currentX > 0 ? \"right\" : \"left\";\n (\"left\" == t && this.slide !== this.slide.parentNode.lastChild || \"right\" == t && this.slide !== this.slide.parentNode.firstChild) && (e = t);\n }\n return e;\n }\n },\n {\n key: \"shouldClose\",\n value: function() {\n var e = !1;\n return Math.abs(this.currentY) >= this.toleranceY && (e = !0), e;\n }\n },\n {\n key: \"setTranslate\",\n value: function(e, t, i) {\n var n = arguments.length > 3 && void 0 !== arguments[3] && arguments[3];\n e.style.transition = n ? \"all .2s ease\" : \"\", e.style.transform = \"translate3d(\".concat(t, \"px, \").concat(i, \"px, 0)\");\n }\n }\n ]), e;\n }();\n function j(e, t, i, n) {\n var s = e.querySelector(\".gslide-media\"), l = new Image, o = \"gSlideTitle_\" + i, r = \"gSlideDesc_\" + i;\n l.addEventListener(\"load\", function() {\n T(n) && n();\n }, !1), l.src = t.href, \"\" != t.sizes && \"\" != t.srcset && (l.sizes = t.sizes, l.srcset = t.srcset), l.alt = \"\", I(t.alt) || \"\" === t.alt || (l.alt = t.alt), \"\" !== t.title && l.setAttribute(\"aria-labelledby\", o), \"\" !== t.description && l.setAttribute(\"aria-describedby\", r), t.hasOwnProperty(\"_hasCustomWidth\") && t._hasCustomWidth && (l.style.width = t.width), t.hasOwnProperty(\"_hasCustomHeight\") && t._hasCustomHeight && (l.style.height = t.height), s.insertBefore(l, s.firstChild);\n }\n function F(e, t, i, n) {\n var s = this, l = e.querySelector(\".ginner-container\"), o = \"gvideo\" + i, r = e.querySelector(\".gslide-media\"), a = this.getAllPlayers();\n h(l, \"gvideo-container\"), r.insertBefore(m('
'), r.firstChild);\n var d = e.querySelector(\".gvideo-wrapper\");\n S(this.settings.plyr.css, \"Plyr\");\n var c = t.href, u = null == t ? void 0 : t.videoProvider, g = !1;\n r.style.maxWidth = t.width, S(this.settings.plyr.js, \"Plyr\", function() {\n if (!u && c.match(/vimeo\\.com\\/([0-9]*)/) && (u = \"vimeo\"), !u && (c.match(/(youtube\\.com|youtube-nocookie\\.com)\\/watch\\?v=([a-zA-Z0-9\\-_]+)/) || c.match(/youtu\\.be\\/([a-zA-Z0-9\\-_]+)/) || c.match(/(youtube\\.com|youtube-nocookie\\.com)\\/embed\\/([a-zA-Z0-9\\-_]+)/)) && (u = \"youtube\"), \"local\" === u || !u) {\n u = \"local\";\n var l = '\");\n }\n var r = g || m('
'));\n h(d, \"\".concat(u, \"-video gvideo\")), d.appendChild(r), d.setAttribute(\"data-id\", o), d.setAttribute(\"data-index\", i);\n var v = O(s.settings.plyr, \"config\") ? s.settings.plyr.config : {}, f = new Plyr(\"#\" + o, v);\n f.on(\"ready\", function(e) {\n a[o] = e.detail.plyr, T(n) && n();\n }), b(function() {\n return e.querySelector(\"iframe\") && \"true\" == e.querySelector(\"iframe\").dataset.ready;\n }, function() {\n s.resize(e);\n }), f.on(\"enterfullscreen\", R), f.on(\"exitfullscreen\", R);\n });\n }\n function R(e) {\n var t = u(e.target, \".gslide-media\");\n \"enterfullscreen\" === e.type && h(t, \"fullscreen\"), \"exitfullscreen\" === e.type && d(t, \"fullscreen\");\n }\n function G(e, t, i, n) {\n var s, l = this, o = e.querySelector(\".gslide-media\"), r = !(!O(t, \"href\") || !t.href) && t.href.split(\"#\").pop().trim(), d = !(!O(t, \"content\") || !t.content) && t.content;\n if (d && (C(d) && (s = m('
'.concat(d, \"
\"))), k(d))) {\n \"none\" == d.style.display && (d.style.display = \"block\");\n var c = document.createElement(\"div\");\n c.className = \"ginlined-content\", c.appendChild(d), s = c;\n }\n if (r) {\n var u = document.getElementById(r);\n if (!u) return !1;\n var g = u.cloneNode(!0);\n g.style.height = t.height, g.style.maxWidth = t.width, h(g, \"ginlined-content\"), s = g;\n }\n if (!s) return console.error(\"Unable to append inline slide content\", t), !1;\n o.style.height = t.height, o.style.width = t.width, o.appendChild(s), this.events[\"inlineclose\" + r] = a(\"click\", {\n onElement: o.querySelectorAll(\".gtrigger-close\"),\n withCallback: function(e) {\n e.preventDefault(), l.close();\n }\n }), T(n) && n();\n }\n function Z(e, t, i, n) {\n var s = e.querySelector(\".gslide-media\"), l = function(e) {\n var t = e.url, i = e.allow, n = e.callback, s = e.appendTo, l = document.createElement(\"iframe\");\n return l.className = \"vimeo-video gvideo\", l.src = t, l.style.width = \"100%\", l.style.height = \"100%\", i && l.setAttribute(\"allow\", i), l.onload = function() {\n l.onload = null, h(l, \"node-ready\"), T(n) && n();\n }, s && s.appendChild(l), l;\n }({\n url: t.href,\n callback: n\n });\n s.parentNode.style.maxWidth = t.width, s.parentNode.style.height = t.height, s.appendChild(l);\n }\n var U = function() {\n function e() {\n var i = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n t(this, e), this.defaults = {\n href: \"\",\n sizes: \"\",\n srcset: \"\",\n title: \"\",\n type: \"\",\n videoProvider: \"\",\n description: \"\",\n alt: \"\",\n descPosition: \"bottom\",\n effect: \"\",\n width: \"\",\n height: \"\",\n content: !1,\n zoomable: !0,\n draggable: !0\n }, L(i) && (this.defaults = l(this.defaults, i));\n }\n return n(e, [\n {\n key: \"sourceType\",\n value: function(e) {\n var t = e;\n if (null !== (e = e.toLowerCase()).match(/\\.(jpeg|jpg|jpe|gif|png|apn|webp|avif|svg)/)) return \"image\";\n if (e.match(/(youtube\\.com|youtube-nocookie\\.com)\\/watch\\?v=([a-zA-Z0-9\\-_]+)/) || e.match(/youtu\\.be\\/([a-zA-Z0-9\\-_]+)/) || e.match(/(youtube\\.com|youtube-nocookie\\.com)\\/embed\\/([a-zA-Z0-9\\-_]+)/)) return \"video\";\n if (e.match(/vimeo\\.com\\/([0-9]*)/)) return \"video\";\n if (null !== e.match(/\\.(mp4|ogg|webm|mov)/)) return \"video\";\n if (null !== e.match(/\\.(mp3|wav|wma|aac|ogg)/)) return \"audio\";\n if (e.indexOf(\"#\") > -1 && \"\" !== t.split(\"#\").pop().trim()) return \"inline\";\n return e.indexOf(\"goajax=true\") > -1 ? \"ajax\" : \"external\";\n }\n },\n {\n key: \"parseConfig\",\n value: function(e, t) {\n var i = this, n = l({\n descPosition: t.descPosition\n }, this.defaults);\n if (L(e) && !k(e)) {\n O(e, \"type\") || (O(e, \"content\") && e.content ? e.type = \"inline\" : O(e, \"href\") && (e.type = this.sourceType(e.href)));\n var s = l(n, e);\n return this.setSize(s, t), s;\n }\n var r = \"\", a = e.getAttribute(\"data-glightbox\"), h = e.nodeName.toLowerCase();\n if (\"a\" === h && (r = e.href), \"img\" === h && (r = e.src, n.alt = e.alt), n.href = r, o(n, function(s, l) {\n O(t, l) && \"width\" !== l && (n[l] = t[l]);\n var o = e.dataset[l];\n I(o) || (n[l] = i.sanitizeValue(o));\n }), n.content && (n.type = \"inline\"), !n.type && r && (n.type = this.sourceType(r)), I(a)) {\n if (!n.title && \"a\" == h) {\n var d = e.title;\n I(d) || \"\" === d || (n.title = d);\n }\n if (!n.title && \"img\" == h) {\n var c = e.alt;\n I(c) || \"\" === c || (n.title = c);\n }\n } else {\n var u = [];\n o(n, function(e, t) {\n u.push(\";\\\\s?\" + t);\n }), u = u.join(\"\\\\s?:|\"), \"\" !== a.trim() && o(n, function(e, t) {\n var s = a, l = new RegExp(\"s?\" + t + \"s?:s?(.*?)(\" + u + \"s?:|$)\"), o = s.match(l);\n if (o && o.length && o[1]) {\n var r = o[1].trim().replace(/;\\s*$/, \"\");\n n[t] = i.sanitizeValue(r);\n }\n });\n }\n if (n.description && \".\" === n.description.substring(0, 1)) {\n var g;\n try {\n g = document.querySelector(n.description).innerHTML;\n } catch (e) {\n if (!(e instanceof DOMException)) throw e;\n }\n g && (n.description = g);\n }\n if (!n.description) {\n var v = e.querySelector(\".glightbox-desc\");\n v && (n.description = v.innerHTML);\n }\n return this.setSize(n, t, e), this.slideConfig = n, n;\n }\n },\n {\n key: \"setSize\",\n value: function(e, t) {\n var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null, n = \"video\" == e.type ? this.checkSize(t.videosWidth) : this.checkSize(t.width), s = this.checkSize(t.height);\n return e.width = O(e, \"width\") && \"\" !== e.width ? this.checkSize(e.width) : n, e.height = O(e, \"height\") && \"\" !== e.height ? this.checkSize(e.height) : s, i && \"image\" == e.type && (e._hasCustomWidth = !!i.dataset.width, e._hasCustomHeight = !!i.dataset.height), e;\n }\n },\n {\n key: \"checkSize\",\n value: function(e) {\n return M(e) ? \"\".concat(e, \"px\") : e;\n }\n },\n {\n key: \"sanitizeValue\",\n value: function(e) {\n return \"true\" !== e && \"false\" !== e ? e : \"true\" === e;\n }\n }\n ]), e;\n }(), $ = function() {\n function e(i, n, s) {\n t(this, e), this.element = i, this.instance = n, this.index = s;\n }\n return n(e, [\n {\n key: \"setContent\",\n value: function() {\n var e = this, t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null, i = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];\n if (c(t, \"loaded\")) return !1;\n var n = this.instance.settings, s = this.slideConfig, l = w();\n T(n.beforeSlideLoad) && n.beforeSlideLoad({\n index: this.index,\n slide: t,\n player: !1\n });\n var o = s.type, r = s.descPosition, a = t.querySelector(\".gslide-media\"), d = t.querySelector(\".gslide-title\"), u = t.querySelector(\".gslide-desc\"), g = t.querySelector(\".gdesc-inner\"), v = i, f = \"gSlideTitle_\" + this.index, p = \"gSlideDesc_\" + this.index;\n if (T(n.afterSlideLoad) && (v = function() {\n T(i) && i(), n.afterSlideLoad({\n index: e.index,\n slide: t,\n player: e.instance.getSlidePlayerInstance(e.index)\n });\n }), \"\" == s.title && \"\" == s.description ? g && g.parentNode.parentNode.removeChild(g.parentNode) : (d && \"\" !== s.title ? (d.id = f, d.innerHTML = s.title) : d.parentNode.removeChild(d), u && \"\" !== s.description ? (u.id = p, l && n.moreLength > 0 ? (s.smallDescription = this.slideShortDesc(s.description, n.moreLength, n.moreText), u.innerHTML = s.smallDescription, this.descriptionEvents(u, s)) : u.innerHTML = s.description) : u.parentNode.removeChild(u), h(a.parentNode, \"desc-\".concat(r)), h(g.parentNode, \"description-\".concat(r))), h(a, \"gslide-\".concat(o)), h(t, \"loaded\"), \"video\" !== o) {\n if (\"external\" !== o) return \"inline\" === o ? (G.apply(this.instance, [\n t,\n s,\n this.index,\n v\n ]), void (s.draggable && new V({\n dragEl: t.querySelector(\".gslide-inline\"),\n toleranceX: n.dragToleranceX,\n toleranceY: n.dragToleranceY,\n slide: t,\n instance: this.instance\n }))) : void (\"image\" !== o ? T(v) && v() : j(t, s, this.index, function() {\n var i = t.querySelector(\"img\");\n s.draggable && new V({\n dragEl: i,\n toleranceX: n.dragToleranceX,\n toleranceY: n.dragToleranceY,\n slide: t,\n instance: e.instance\n }), s.zoomable && i.naturalWidth > i.offsetWidth && (h(i, \"zoomable\"), new H(i, t, function() {\n e.instance.resize();\n })), T(v) && v();\n }));\n Z.apply(this, [\n t,\n s,\n this.index,\n v\n ]);\n } else F.apply(this.instance, [\n t,\n s,\n this.index,\n v\n ]);\n }\n },\n {\n key: \"slideShortDesc\",\n value: function(e) {\n var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 50, i = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], n = document.createElement(\"div\");\n n.innerHTML = e;\n var s = n.innerText, l = i;\n if ((e = s.trim()).length <= t) return e;\n var o = e.substr(0, t - 1);\n return l ? (n = null, o + '... ' + i + \"\") : o;\n }\n },\n {\n key: \"descriptionEvents\",\n value: function(e, t) {\n var i = this, n = e.querySelector(\".desc-more\");\n if (!n) return !1;\n a(\"click\", {\n onElement: n,\n withCallback: function(e, n) {\n e.preventDefault();\n var s = document.body, l = u(n, \".gslide-desc\");\n if (!l) return !1;\n l.innerHTML = t.description, h(s, \"gdesc-open\");\n var o = a(\"click\", {\n onElement: [\n s,\n u(l, \".gslide-description\")\n ],\n withCallback: function(e, n) {\n \"a\" !== e.target.nodeName.toLowerCase() && (d(s, \"gdesc-open\"), h(s, \"gdesc-closed\"), l.innerHTML = t.smallDescription, i.descriptionEvents(l, t), setTimeout(function() {\n d(s, \"gdesc-closed\");\n }, 400), o.destroy());\n }\n });\n }\n });\n }\n },\n {\n key: \"create\",\n value: function() {\n return m(this.instance.settings.slideHTML);\n }\n },\n {\n key: \"getConfig\",\n value: function() {\n k(this.element) || this.element.hasOwnProperty(\"draggable\") || (this.element.draggable = this.instance.settings.draggable);\n var e = new U(this.instance.settings.slideExtraAttributes);\n return this.slideConfig = e.parseConfig(this.element, this.instance.settings), this.slideConfig;\n }\n }\n ]), e;\n }(), J = w(), K = null !== w() || void 0 !== document.createTouch || \"ontouchstart\" in window || \"onmsgesturechange\" in window || navigator.msMaxTouchPoints, Q = document.getElementsByTagName(\"html\")[0], ee = {\n selector: \".glightbox\",\n elements: null,\n skin: \"clean\",\n theme: \"clean\",\n closeButton: !0,\n startAt: null,\n autoplayVideos: !0,\n autofocusVideos: !0,\n descPosition: \"bottom\",\n width: \"900px\",\n height: \"506px\",\n videosWidth: \"960px\",\n beforeSlideChange: null,\n afterSlideChange: null,\n beforeSlideLoad: null,\n afterSlideLoad: null,\n slideInserted: null,\n slideRemoved: null,\n slideExtraAttributes: null,\n onOpen: null,\n onClose: null,\n loop: !1,\n zoomable: !0,\n draggable: !0,\n dragAutoSnap: !1,\n dragToleranceX: 40,\n dragToleranceY: 65,\n preload: !0,\n oneSlidePerOpen: !1,\n touchNavigation: !0,\n touchFollowAxis: !0,\n keyboardNavigation: !0,\n closeOnOutsideClick: !0,\n plugins: !1,\n plyr: {\n css: \"https://cdn.plyr.io/3.6.12/plyr.css\",\n js: \"https://cdn.plyr.io/3.6.12/plyr.js\",\n config: {\n ratio: \"16:9\",\n fullscreen: {\n enabled: !0,\n iosNative: !0\n },\n youtube: {\n noCookie: !0,\n rel: 0,\n showinfo: 0,\n iv_load_policy: 3\n },\n vimeo: {\n byline: !1,\n portrait: !1,\n title: !1,\n transparent: !1\n }\n }\n },\n openEffect: \"zoom\",\n closeEffect: \"zoom\",\n slideEffect: \"slide\",\n moreText: \"See more\",\n moreLength: 60,\n cssEfects: {\n fade: {\n in: \"fadeIn\",\n out: \"fadeOut\"\n },\n zoom: {\n in: \"zoomIn\",\n out: \"zoomOut\"\n },\n slide: {\n in: \"slideInRight\",\n out: \"slideOutLeft\"\n },\n slideBack: {\n in: \"slideInLeft\",\n out: \"slideOutRight\"\n },\n none: {\n in: \"none\",\n out: \"none\"\n }\n },\n svg: {\n close: '',\n next: ' ',\n prev: ''\n },\n slideHTML: '
\\n
\\n
\\n
\\n
\\n
\\n
\\n

\\n
\\n
\\n
\\n
\\n
\\n
',\n lightboxHTML: '
\\n
\\n
\\n
\\n
\\n \\n \\n \\n
\\n
'\n }, te = function() {\n function e() {\n var i = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n t(this, e), this.customOptions = i, this.settings = l(ee, i), this.effectsClasses = this.getAnimationClasses(), this.videoPlayers = {}, this.apiEvents = [], this.fullElementsList = !1;\n }\n return n(e, [\n {\n key: \"init\",\n value: function() {\n var e = this, t = this.getSelector();\n t && (this.baseEvents = a(\"click\", {\n onElement: t,\n withCallback: function(t, i) {\n t.preventDefault(), e.open(i);\n }\n })), this.elements = this.getElements();\n }\n },\n {\n key: \"open\",\n value: function() {\n var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null, t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\n if (0 === this.elements.length) return !1;\n this.activeSlide = null, this.prevActiveSlideIndex = null, this.prevActiveSlide = null;\n var i = M(t) ? t : this.settings.startAt;\n if (k(e)) {\n var n = e.getAttribute(\"data-gallery\");\n n && (this.fullElementsList = this.elements, this.elements = this.getGalleryElements(this.elements, n)), I(i) && (i = this.getElementIndex(e)) < 0 && (i = 0);\n }\n M(i) || (i = 0), this.build(), g(this.overlay, \"none\" === this.settings.openEffect ? \"none\" : this.settings.cssEfects.fade.in);\n var s = document.body, l = window.innerWidth - document.documentElement.clientWidth;\n if (l > 0) {\n var o = document.createElement(\"style\");\n o.type = \"text/css\", o.className = \"gcss-styles\", o.innerText = \".gscrollbar-fixer {margin-right: \".concat(l, \"px}\"), document.head.appendChild(o), h(s, \"gscrollbar-fixer\");\n }\n h(s, \"glightbox-open\"), h(Q, \"glightbox-open\"), J && (h(document.body, \"glightbox-mobile\"), this.settings.slideEffect = \"slide\"), this.showSlide(i, !0), 1 === this.elements.length ? (h(this.prevButton, \"glightbox-button-hidden\"), h(this.nextButton, \"glightbox-button-hidden\")) : (d(this.prevButton, \"glightbox-button-hidden\"), d(this.nextButton, \"glightbox-button-hidden\")), this.lightboxOpen = !0, this.trigger(\"open\"), T(this.settings.onOpen) && this.settings.onOpen(), K && this.settings.touchNavigation && B(this), this.settings.keyboardNavigation && X(this);\n }\n },\n {\n key: \"openAt\",\n value: function() {\n var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0;\n this.open(null, e);\n }\n },\n {\n key: \"showSlide\",\n value: function() {\n var e = this, t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0, i = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];\n f(this.loader), this.index = parseInt(t);\n var n = this.slidesContainer.querySelector(\".current\");\n n && d(n, \"current\"), this.slideAnimateOut();\n var s = this.slidesContainer.querySelectorAll(\".gslide\")[t];\n if (c(s, \"loaded\")) this.slideAnimateIn(s, i), p(this.loader);\n else {\n f(this.loader);\n var l = this.elements[t], o = {\n index: this.index,\n slide: s,\n slideNode: s,\n slideConfig: l.slideConfig,\n slideIndex: this.index,\n trigger: l.node,\n player: null\n };\n this.trigger(\"slide_before_load\", o), l.instance.setContent(s, function() {\n p(e.loader), e.resize(), e.slideAnimateIn(s, i), e.trigger(\"slide_after_load\", o);\n });\n }\n this.slideDescription = s.querySelector(\".gslide-description\"), this.slideDescriptionContained = this.slideDescription && c(this.slideDescription.parentNode, \"gslide-media\"), this.settings.preload && (this.preloadSlide(t + 1), this.preloadSlide(t - 1)), this.updateNavigationClasses(), this.activeSlide = s;\n }\n },\n {\n key: \"preloadSlide\",\n value: function(e) {\n var t = this;\n if (e < 0 || e > this.elements.length - 1) return !1;\n if (I(this.elements[e])) return !1;\n var i = this.slidesContainer.querySelectorAll(\".gslide\")[e];\n if (c(i, \"loaded\")) return !1;\n var n = this.elements[e], s = n.type, l = {\n index: e,\n slide: i,\n slideNode: i,\n slideConfig: n.slideConfig,\n slideIndex: e,\n trigger: n.node,\n player: null\n };\n this.trigger(\"slide_before_load\", l), \"video\" === s || \"external\" === s ? setTimeout(function() {\n n.instance.setContent(i, function() {\n t.trigger(\"slide_after_load\", l);\n });\n }, 200) : n.instance.setContent(i, function() {\n t.trigger(\"slide_after_load\", l);\n });\n }\n },\n {\n key: \"prevSlide\",\n value: function() {\n this.goToSlide(this.index - 1);\n }\n },\n {\n key: \"nextSlide\",\n value: function() {\n this.goToSlide(this.index + 1);\n }\n },\n {\n key: \"goToSlide\",\n value: function() {\n var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\n if (this.prevActiveSlide = this.activeSlide, this.prevActiveSlideIndex = this.index, !this.loop() && (e < 0 || e > this.elements.length - 1)) return !1;\n e < 0 ? e = this.elements.length - 1 : e >= this.elements.length && (e = 0), this.showSlide(e);\n }\n },\n {\n key: \"insertSlide\",\n value: function() {\n var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : -1;\n t < 0 && (t = this.elements.length);\n var i = new $(e, this, t), n = i.getConfig(), s = l({}, n), o = i.create(), r = this.elements.length - 1;\n s.index = t, s.node = !1, s.instance = i, s.slideConfig = n, this.elements.splice(t, 0, s);\n var a = null, h = null;\n if (this.slidesContainer) {\n if (t > r) this.slidesContainer.appendChild(o);\n else {\n var d = this.slidesContainer.querySelectorAll(\".gslide\")[t];\n this.slidesContainer.insertBefore(o, d);\n }\n (this.settings.preload && 0 == this.index && 0 == t || this.index - 1 == t || this.index + 1 == t) && this.preloadSlide(t), 0 === this.index && 0 === t && (this.index = 1), this.updateNavigationClasses(), a = this.slidesContainer.querySelectorAll(\".gslide\")[t], h = this.getSlidePlayerInstance(t), s.slideNode = a;\n }\n this.trigger(\"slide_inserted\", {\n index: t,\n slide: a,\n slideNode: a,\n slideConfig: n,\n slideIndex: t,\n trigger: null,\n player: h\n }), T(this.settings.slideInserted) && this.settings.slideInserted({\n index: t,\n slide: a,\n player: h\n });\n }\n },\n {\n key: \"removeSlide\",\n value: function() {\n var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : -1;\n if (e < 0 || e > this.elements.length - 1) return !1;\n var t = this.slidesContainer && this.slidesContainer.querySelectorAll(\".gslide\")[e];\n t && (this.getActiveSlideIndex() == e && (e == this.elements.length - 1 ? this.prevSlide() : this.nextSlide()), t.parentNode.removeChild(t)), this.elements.splice(e, 1), this.trigger(\"slide_removed\", e), T(this.settings.slideRemoved) && this.settings.slideRemoved(e);\n }\n },\n {\n key: \"slideAnimateIn\",\n value: function(e, t) {\n var i = this, n = e.querySelector(\".gslide-media\"), s = e.querySelector(\".gslide-description\"), l = {\n index: this.prevActiveSlideIndex,\n slide: this.prevActiveSlide,\n slideNode: this.prevActiveSlide,\n slideIndex: this.prevActiveSlide,\n slideConfig: I(this.prevActiveSlideIndex) ? null : this.elements[this.prevActiveSlideIndex].slideConfig,\n trigger: I(this.prevActiveSlideIndex) ? null : this.elements[this.prevActiveSlideIndex].node,\n player: this.getSlidePlayerInstance(this.prevActiveSlideIndex)\n }, o = {\n index: this.index,\n slide: this.activeSlide,\n slideNode: this.activeSlide,\n slideConfig: this.elements[this.index].slideConfig,\n slideIndex: this.index,\n trigger: this.elements[this.index].node,\n player: this.getSlidePlayerInstance(this.index)\n };\n if (n.offsetWidth > 0 && s && (p(s), s.style.display = \"\"), d(e, this.effectsClasses), t) g(e, this.settings.cssEfects[this.settings.openEffect].in, function() {\n i.settings.autoplayVideos && i.slidePlayerPlay(e), i.trigger(\"slide_changed\", {\n prev: l,\n current: o\n }), T(i.settings.afterSlideChange) && i.settings.afterSlideChange.apply(i, [\n l,\n o\n ]);\n });\n else {\n var r = this.settings.slideEffect, a = \"none\" !== r ? this.settings.cssEfects[r].in : r;\n this.prevActiveSlideIndex > this.index && \"slide\" == this.settings.slideEffect && (a = this.settings.cssEfects.slideBack.in), g(e, a, function() {\n i.settings.autoplayVideos && i.slidePlayerPlay(e), i.trigger(\"slide_changed\", {\n prev: l,\n current: o\n }), T(i.settings.afterSlideChange) && i.settings.afterSlideChange.apply(i, [\n l,\n o\n ]);\n });\n }\n setTimeout(function() {\n i.resize(e);\n }, 100), h(e, \"current\");\n }\n },\n {\n key: \"slideAnimateOut\",\n value: function() {\n if (!this.prevActiveSlide) return !1;\n var e = this.prevActiveSlide;\n d(e, this.effectsClasses), h(e, \"prev\");\n var t = this.settings.slideEffect, i = \"none\" !== t ? this.settings.cssEfects[t].out : t;\n this.slidePlayerPause(e), this.trigger(\"slide_before_change\", {\n prev: {\n index: this.prevActiveSlideIndex,\n slide: this.prevActiveSlide,\n slideNode: this.prevActiveSlide,\n slideIndex: this.prevActiveSlideIndex,\n slideConfig: I(this.prevActiveSlideIndex) ? null : this.elements[this.prevActiveSlideIndex].slideConfig,\n trigger: I(this.prevActiveSlideIndex) ? null : this.elements[this.prevActiveSlideIndex].node,\n player: this.getSlidePlayerInstance(this.prevActiveSlideIndex)\n },\n current: {\n index: this.index,\n slide: this.activeSlide,\n slideNode: this.activeSlide,\n slideIndex: this.index,\n slideConfig: this.elements[this.index].slideConfig,\n trigger: this.elements[this.index].node,\n player: this.getSlidePlayerInstance(this.index)\n }\n }), T(this.settings.beforeSlideChange) && this.settings.beforeSlideChange.apply(this, [\n {\n index: this.prevActiveSlideIndex,\n slide: this.prevActiveSlide,\n player: this.getSlidePlayerInstance(this.prevActiveSlideIndex)\n },\n {\n index: this.index,\n slide: this.activeSlide,\n player: this.getSlidePlayerInstance(this.index)\n }\n ]), this.prevActiveSlideIndex > this.index && \"slide\" == this.settings.slideEffect && (i = this.settings.cssEfects.slideBack.out), g(e, i, function() {\n var t = e.querySelector(\".ginner-container\"), i = e.querySelector(\".gslide-media\"), n = e.querySelector(\".gslide-description\");\n t.style.transform = \"\", i.style.transform = \"\", d(i, \"greset\"), i.style.opacity = \"\", n && (n.style.opacity = \"\"), d(e, \"prev\");\n });\n }\n },\n {\n key: \"getAllPlayers\",\n value: function() {\n return this.videoPlayers;\n }\n },\n {\n key: \"getSlidePlayerInstance\",\n value: function(e) {\n var t = \"gvideo\" + e, i = this.getAllPlayers();\n return !(!O(i, t) || !i[t]) && i[t];\n }\n },\n {\n key: \"stopSlideVideo\",\n value: function(e) {\n if (k(e)) {\n var t = e.querySelector(\".gvideo-wrapper\");\n t && (e = t.getAttribute(\"data-index\"));\n }\n console.log(\"stopSlideVideo is deprecated, use slidePlayerPause\");\n var i = this.getSlidePlayerInstance(e);\n i && i.playing && i.pause();\n }\n },\n {\n key: \"slidePlayerPause\",\n value: function(e) {\n if (k(e)) {\n var t = e.querySelector(\".gvideo-wrapper\");\n t && (e = t.getAttribute(\"data-index\"));\n }\n var i = this.getSlidePlayerInstance(e);\n i && i.playing && i.pause();\n }\n },\n {\n key: \"playSlideVideo\",\n value: function(e) {\n if (k(e)) {\n var t = e.querySelector(\".gvideo-wrapper\");\n t && (e = t.getAttribute(\"data-index\"));\n }\n console.log(\"playSlideVideo is deprecated, use slidePlayerPlay\");\n var i = this.getSlidePlayerInstance(e);\n i && !i.playing && i.play();\n }\n },\n {\n key: \"slidePlayerPlay\",\n value: function(e) {\n var t;\n if (!J || null !== (t = this.settings.plyr.config) && void 0 !== t && t.muted) {\n if (k(e)) {\n var i = e.querySelector(\".gvideo-wrapper\");\n i && (e = i.getAttribute(\"data-index\"));\n }\n var n = this.getSlidePlayerInstance(e);\n n && !n.playing && (n.play(), this.settings.autofocusVideos && n.elements.container.focus());\n }\n }\n },\n {\n key: \"setElements\",\n value: function(e) {\n var t = this;\n this.settings.elements = !1;\n var i = [];\n e && e.length && o(e, function(e, n) {\n var s = new $(e, t, n), o = s.getConfig(), r = l({}, o);\n r.slideConfig = o, r.instance = s, r.index = n, i.push(r);\n }), this.elements = i, this.lightboxOpen && (this.slidesContainer.innerHTML = \"\", this.elements.length && (o(this.elements, function() {\n var e = m(t.settings.slideHTML);\n t.slidesContainer.appendChild(e);\n }), this.showSlide(0, !0)));\n }\n },\n {\n key: \"getElementIndex\",\n value: function(e) {\n var t = !1;\n return o(this.elements, function(i, n) {\n if (O(i, \"node\") && i.node == e) return t = n, !0;\n }), t;\n }\n },\n {\n key: \"getElements\",\n value: function() {\n var e = this, t = [];\n this.elements = this.elements ? this.elements : [], !I(this.settings.elements) && E(this.settings.elements) && this.settings.elements.length && o(this.settings.elements, function(i, n) {\n var s = new $(i, e, n), o = s.getConfig(), r = l({}, o);\n r.node = !1, r.index = n, r.instance = s, r.slideConfig = o, t.push(r);\n });\n var i = !1;\n return this.getSelector() && (i = document.querySelectorAll(this.getSelector())), i ? (o(i, function(i, n) {\n var s = new $(i, e, n), o = s.getConfig(), r = l({}, o);\n r.node = i, r.index = n, r.instance = s, r.slideConfig = o, r.gallery = i.getAttribute(\"data-gallery\"), t.push(r);\n }), t) : t;\n }\n },\n {\n key: \"getGalleryElements\",\n value: function(e, t) {\n return e.filter(function(e) {\n return e.gallery == t;\n });\n }\n },\n {\n key: \"getSelector\",\n value: function() {\n return !this.settings.elements && (this.settings.selector && \"data-\" == this.settings.selector.substring(0, 5) ? \"*[\".concat(this.settings.selector, \"]\") : this.settings.selector);\n }\n },\n {\n key: \"getActiveSlide\",\n value: function() {\n return this.slidesContainer.querySelectorAll(\".gslide\")[this.index];\n }\n },\n {\n key: \"getActiveSlideIndex\",\n value: function() {\n return this.index;\n }\n },\n {\n key: \"getAnimationClasses\",\n value: function() {\n var e = [];\n for(var t in this.settings.cssEfects)if (this.settings.cssEfects.hasOwnProperty(t)) {\n var i = this.settings.cssEfects[t];\n e.push(\"g\".concat(i.in)), e.push(\"g\".concat(i.out));\n }\n return e.join(\" \");\n }\n },\n {\n key: \"build\",\n value: function() {\n var e = this;\n if (this.built) return !1;\n var t = document.body.childNodes, i = [];\n o(t, function(e) {\n e.parentNode == document.body && \"#\" !== e.nodeName.charAt(0) && e.hasAttribute && !e.hasAttribute(\"aria-hidden\") && (i.push(e), e.setAttribute(\"aria-hidden\", \"true\"));\n });\n var n = O(this.settings.svg, \"next\") ? this.settings.svg.next : \"\", s = O(this.settings.svg, \"prev\") ? this.settings.svg.prev : \"\", l = O(this.settings.svg, \"close\") ? this.settings.svg.close : \"\", r = this.settings.lightboxHTML;\n r = m(r = (r = (r = r.replace(/{nextSVG}/g, n)).replace(/{prevSVG}/g, s)).replace(/{closeSVG}/g, l)), document.body.appendChild(r);\n var d = document.getElementById(\"glightbox-body\");\n this.modal = d;\n var g = d.querySelector(\".gclose\");\n this.prevButton = d.querySelector(\".gprev\"), this.nextButton = d.querySelector(\".gnext\"), this.overlay = d.querySelector(\".goverlay\"), this.loader = d.querySelector(\".gloader\"), this.slidesContainer = document.getElementById(\"glightbox-slider\"), this.bodyHiddenChildElms = i, this.events = {}, h(this.modal, \"glightbox-\" + this.settings.skin), this.settings.closeButton && g && (this.events.close = a(\"click\", {\n onElement: g,\n withCallback: function(t, i) {\n t.preventDefault(), e.close();\n }\n })), g && !this.settings.closeButton && g.parentNode.removeChild(g), this.nextButton && (this.events.next = a(\"click\", {\n onElement: this.nextButton,\n withCallback: function(t, i) {\n t.preventDefault(), e.nextSlide();\n }\n })), this.prevButton && (this.events.prev = a(\"click\", {\n onElement: this.prevButton,\n withCallback: function(t, i) {\n t.preventDefault(), e.prevSlide();\n }\n })), this.settings.closeOnOutsideClick && (this.events.outClose = a(\"click\", {\n onElement: d,\n withCallback: function(t, i) {\n e.preventOutsideClick || c(document.body, \"glightbox-mobile\") || u(t.target, \".ginner-container\") || u(t.target, \".gbtn\") || c(t.target, \"gnext\") || c(t.target, \"gprev\") || e.close();\n }\n })), o(this.elements, function(t, i) {\n e.slidesContainer.appendChild(t.instance.create()), t.slideNode = e.slidesContainer.querySelectorAll(\".gslide\")[i];\n }), K && h(document.body, \"glightbox-touch\"), this.events.resize = a(\"resize\", {\n onElement: window,\n withCallback: function() {\n e.resize();\n }\n }), this.built = !0;\n }\n },\n {\n key: \"resize\",\n value: function() {\n var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null;\n if ((e = e || this.activeSlide) && !c(e, \"zoomed\")) {\n var t = y(), i = e.querySelector(\".gvideo-wrapper\"), n = e.querySelector(\".gslide-image\"), s = this.slideDescription, l = t.width, o = t.height;\n if (l <= 768 ? h(document.body, \"glightbox-mobile\") : d(document.body, \"glightbox-mobile\"), i || n) {\n var r = !1;\n if (s && (c(s, \"description-bottom\") || c(s, \"description-top\")) && !c(s, \"gabsolute\") && (r = !0), n) {\n if (l <= 768) n.querySelector(\"img\");\n else if (r) {\n var a = s.offsetHeight, u = n.querySelector(\"img\");\n u.setAttribute(\"style\", \"max-height: calc(100vh - \".concat(a, \"px)\")), s.setAttribute(\"style\", \"max-width: \".concat(u.offsetWidth, \"px;\"));\n }\n }\n if (i) {\n var g = O(this.settings.plyr.config, \"ratio\") ? this.settings.plyr.config.ratio : \"\";\n if (!g) {\n var v = i.clientWidth, f = i.clientHeight, p = v / f;\n g = \"\".concat(v / p, \":\").concat(f / p);\n }\n var m = g.split(\":\"), x = this.settings.videosWidth, b = this.settings.videosWidth, S = (b = M(x) || -1 !== x.indexOf(\"px\") ? parseInt(x) : -1 !== x.indexOf(\"vw\") ? l * parseInt(x) / 100 : -1 !== x.indexOf(\"vh\") ? o * parseInt(x) / 100 : -1 !== x.indexOf(\"%\") ? l * parseInt(x) / 100 : parseInt(i.clientWidth)) / (parseInt(m[0]) / parseInt(m[1]));\n if (S = Math.floor(S), r && (o -= s.offsetHeight), b > l || S > o || o < S && l > b) {\n var w = i.offsetWidth, T = i.offsetHeight, C = o / T, k = {\n width: w * C,\n height: T * C\n };\n i.parentNode.setAttribute(\"style\", \"max-width: \".concat(k.width, \"px\")), r && s.setAttribute(\"style\", \"max-width: \".concat(k.width, \"px;\"));\n } else i.parentNode.style.maxWidth = \"\".concat(x), r && s.setAttribute(\"style\", \"max-width: \".concat(x, \";\"));\n }\n }\n }\n }\n },\n {\n key: \"reload\",\n value: function() {\n this.init();\n }\n },\n {\n key: \"updateNavigationClasses\",\n value: function() {\n var e = this.loop();\n d(this.nextButton, \"disabled\"), d(this.prevButton, \"disabled\"), 0 == this.index && this.elements.length - 1 == 0 ? (h(this.prevButton, \"disabled\"), h(this.nextButton, \"disabled\")) : 0 !== this.index || e ? this.index !== this.elements.length - 1 || e || h(this.nextButton, \"disabled\") : h(this.prevButton, \"disabled\");\n }\n },\n {\n key: \"loop\",\n value: function() {\n var e = O(this.settings, \"loopAtEnd\") ? this.settings.loopAtEnd : null;\n return e = O(this.settings, \"loop\") ? this.settings.loop : e, e;\n }\n },\n {\n key: \"close\",\n value: function() {\n var e = this;\n if (!this.lightboxOpen) {\n if (this.events) {\n for(var t in this.events)this.events.hasOwnProperty(t) && this.events[t].destroy();\n this.events = null;\n }\n return !1;\n }\n if (this.closing) return !1;\n this.closing = !0, this.slidePlayerPause(this.activeSlide), this.fullElementsList && (this.elements = this.fullElementsList), this.bodyHiddenChildElms.length && o(this.bodyHiddenChildElms, function(e) {\n e.removeAttribute(\"aria-hidden\");\n }), h(this.modal, \"glightbox-closing\"), g(this.overlay, \"none\" == this.settings.openEffect ? \"none\" : this.settings.cssEfects.fade.out), g(this.activeSlide, this.settings.cssEfects[this.settings.closeEffect].out, function() {\n if (e.activeSlide = null, e.prevActiveSlideIndex = null, e.prevActiveSlide = null, e.built = !1, e.events) {\n for(var t in e.events)e.events.hasOwnProperty(t) && e.events[t].destroy();\n e.events = null;\n }\n var i = document.body;\n d(Q, \"glightbox-open\"), d(i, \"glightbox-open touching gdesc-open glightbox-touch glightbox-mobile gscrollbar-fixer\"), e.modal.parentNode.removeChild(e.modal), e.trigger(\"close\"), T(e.settings.onClose) && e.settings.onClose();\n var n = document.querySelector(\".gcss-styles\");\n n && n.parentNode.removeChild(n), e.lightboxOpen = !1, e.closing = null;\n });\n }\n },\n {\n key: \"destroy\",\n value: function() {\n this.close(), this.clearAllEvents(), this.baseEvents && this.baseEvents.destroy();\n }\n },\n {\n key: \"on\",\n value: function(e, t) {\n var i = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];\n if (!e || !T(t)) throw new TypeError(\"Event name and callback must be defined\");\n this.apiEvents.push({\n evt: e,\n once: i,\n callback: t\n });\n }\n },\n {\n key: \"once\",\n value: function(e, t) {\n this.on(e, t, !0);\n }\n },\n {\n key: \"trigger\",\n value: function(e) {\n var t = this, i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null, n = [];\n o(this.apiEvents, function(t, s) {\n var l = t.evt, o = t.once, r = t.callback;\n l == e && (r(i), o && n.push(s));\n }), n.length && o(n, function(e) {\n return t.apiEvents.splice(e, 1);\n });\n }\n },\n {\n key: \"clearAllEvents\",\n value: function() {\n this.apiEvents.splice(0, this.apiEvents.length);\n }\n },\n {\n key: \"version\",\n value: function() {\n return \"3.1.0\";\n }\n }\n ]), e;\n }();\n return function() {\n var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, t = new te(e);\n return t.init(), t;\n };\n});\n\n\nfunction $e784210fef036a05$export$9477d5792fdd966f() {\n window.recaptchaOnLoad = function() {\n grecaptcha.enterprise.ready(function() {\n document.querySelectorAll(\"[data-recaptcha-holder]\").forEach(function(element) {\n let form = element.closest(\"form\");\n let isCheckboxType = element.dataset.ischeckbox;\n if (isCheckboxType == \"False\") grecaptcha.enterprise.execute(element.dataset.sitekey).then(function(token) {\n element.innerHTML = element.innerHTML + '';\n });\n else {\n form.dataset.noRecaptcha = true;\n form.addEventListener(\"submit\", function(event) {\n if (form.dataset.noRecaptcha) {\n event.preventDefault();\n alert(\"Please submit Recaptcha\");\n }\n });\n let button = form.querySelector('button[type=\"submit\"], input[type=\"submit\"]');\n button.setAttribute(\"disabled\", \"disabled\");\n grecaptcha.enterprise.render(element.id, {\n \"sitekey\": element.dataset.sitekey,\n callback: function() {\n button.removeAttribute(\"disabled\");\n form.removeAttribute(\"data-no-recaptcha\");\n }\n });\n }\n });\n });\n };\n}\n\n\nfunction $2acb526bbfd6495c$var$correctHiddenFields() {\n const partnerByEmail = document.querySelector(\"[data-partner-by-email]\")?.innerHTML;\n const partnerByPhone = document.querySelector(\"[data-partner-by-phone]\")?.innerHTML;\n const amOnlineByPhone = document.querySelector(\"[data-am-online-by-phone]\")?.innerHTML;\n if (partnerByEmail === \"True\") document.querySelector(\"input[name=PartnerByEmail]\").value = \"true\";\n if (partnerByPhone === \"True\") document.querySelector(\"input[name=PartnerByPhone]\").value = \"true\";\n if (amOnlineByPhone === \"True\") document.querySelector(\"input[name=AMOnlineByPhone]\").value = \"true\";\n}\nfunction $2acb526bbfd6495c$var$checkPhoneRequirement() {\n const partnerByPhone = document.querySelector(\"input[name=PartnerByPhone]\")?.value;\n const amOnlineByPhone = document.querySelector(\"input[name=AMOnlineByPhone]\")?.value;\n const phoneNumber = document.querySelector(\"#PhoneNumber\")?.value ?? \"\";\n const phoneValidationElement = document.querySelector(\"[data-phone-validation]\");\n if (partnerByPhone === \"true\" || amOnlineByPhone === \"false\") {\n if (phoneNumber !== \"\") phoneValidationElement.classList.add(\"d-none\");\n else phoneValidationElement.classList.remove(\"d-none\");\n } else phoneValidationElement.classList.add(\"d-none\");\n}\nfunction $2acb526bbfd6495c$var$onRegisterClick(e) {\n $2acb526bbfd6495c$var$checkPhoneRequirement();\n const form = document.querySelector(\"[data-registration-form]\");\n if (!form?.checkValidity()) return;\n e.preventDefault();\n const button = form.querySelector('button[type=\"submit\"], input[type=\"submit\"]');\n const partnerByPhone = document.querySelector(\"input[name=PartnerByPhone]\").value;\n const bauerByPhone = document.querySelector(\"input[name=BauerByPhone]\").value;\n const phoneNumber = document.querySelector(\"#PhoneNumber\")?.value ?? \"\";\n if (partnerByPhone === \"true\" || bauerByPhone === \"false\") {\n if (phoneNumber !== \"\") {\n button.setAttribute(\"disabled\", \"disabled\");\n form.submit();\n } else document.querySelector(\"[data-phone-validation]\").classList.remove(\"d-none\");\n } else {\n button.setAttribute(\"disabled\", \"disabled\");\n form.submit();\n }\n}\nfunction $2acb526bbfd6495c$export$b612431b20616c48() {\n const phoneNumberElement = document.querySelector(\"#PhoneNumber\");\n phoneNumberElement?.addEventListener(\"keypress\", ()=>{\n document.querySelector(\"[data-phone-validation]\").classList.add(\"d-none\");\n });\n let registerButton = document.querySelector(\"[data-btn-register]\");\n if (registerButton) registerButton.addEventListener(\"click\", $2acb526bbfd6495c$var$onRegisterClick);\n let permutiveId = window.localStorage.getItem(\"permutive-id\");\n let permutiveIdEl = document.querySelector(\"#PermutiveId\");\n if (permutiveIdEl) permutiveIdEl.value = permutiveId;\n document.querySelector(\"#PartnerByPhone\")?.addEventListener(\"change\", function() {\n document.querySelector(\"input[name=PartnerByPhone]\").value = this.checked ? \"true\" : \"false\";\n $2acb526bbfd6495c$var$checkPhoneRequirement();\n });\n document.querySelector(\"#BauerByPhone\")?.addEventListener(\"change\", function() {\n document.querySelector(\"input[name=BauerByPhone]\").value = this.checked ? \"true\" : \"false\";\n $2acb526bbfd6495c$var$checkPhoneRequirement();\n });\n $(\"nav.navbar .collapse\").on(\"show.bs.collapse\", $2acb526bbfd6495c$var$onShowNavbar);\n $(\"nav.navbar .collapse\").on(\"hide.bs.collapse\", $2acb526bbfd6495c$var$onHideNavbar);\n document.querySelector(\".reveal\")?.addEventListener(\"click\", function() {\n let pwd = document.querySelector(\".pwd\");\n if (pwd.getAttribute(\"type\") === \"password\") {\n pwd.setAttribute(\"type\", \"text\");\n this.innerHTML = '';\n } else {\n pwd.setAttribute(\"type\", \"password\");\n this.innerHTML = '';\n }\n });\n let industrySector = document.querySelector(\"#Input_IndustrySector\")?.value;\n if (industrySector === \"PrivateSectorOther\" || industrySector === \"PublicSectorOther\" || industrySector === \"15\" || industrySector === \"25\") document.querySelector(\"[data-other-industry-sector]\").classList.remove(\"d-none\");\n document.querySelector(\"[data-industry-sector]\")?.addEventListener(\"change\", function() {\n if (this.value === \"PrivateSectorOther\" || this.value === \"PublicSectorOther\" || this.value === \"15\" || this.value === \"25\") document.querySelector(\"[data-other-industry-sector]\")?.classList.remove(\"d-none\");\n else document.querySelector(\"[data-other-industry-sector]\")?.classList.add(\"d-none\");\n });\n let jobFunction = document.querySelector(\"#Input_JobFunction\")?.value;\n if (jobFunction === \"Other\" || jobFunction === \"18\") document.querySelector(\"[data-other-job-function]\")?.classList.remove(\"d-none\");\n document.querySelector(\"#Input_JobFunction\")?.addEventListener(\"change\", function() {\n if (this.value === \"Other\" || this.value === \"18\") document.querySelector(\"[data-other-job-function]\")?.classList.remove(\"d-none\");\n else document.querySelector(\"[data-other-job-function]\")?.classList.add(\"d-none\");\n });\n if ($(\"#decision-making-Other\").is(\":checked\")) document.querySelector(\"[data-other-decision-making-process]\")?.classList.remove(\"d-none\");\n $(document).on(\"change\", \"#decision-making-Other\", function() {\n if ($(this).is(\":checked\")) document.querySelector(\"[data-other-decision-making-process]\")?.classList.remove(\"d-none\");\n else document.querySelector(\"[data-other-decision-making-process]\")?.classList.add(\"d-none\");\n });\n if ($(\"#how-is-your-fleet-funded-Other\").is(\":checked\")) document.querySelector(\"[data-other-how-is-your-fleet-funded]\")?.classList.remove(\"d-none\");\n $(document).on(\"change\", \"#how-is-your-fleet-funded-Other\", function() {\n if ($(this).is(\":checked\")) document.querySelector(\"[data-other-how-is-your-fleet-funded]\")?.classList.remove(\"d-none\");\n else document.querySelector(\"[data-other-how-is-your-fleet-funded]\")?.classList.add(\"d-none\");\n });\n //let decision = document.querySelector('#decision-making-Other')?.value;\n //if (decision === \"21\") {\n // document.querySelector('[data-other-decision-making-process]')?.classList.remove('d-none');\n //}\n //document.querySelector('#Input_DecisionMakingProcess')?.addEventListener('change', function () {\n // if (this.value === \"Other\" || this.value === \"21\") {\n // document.querySelector('[data-other-decision-making-process]')?.classList.remove('d-none');\n // } else {\n // document.querySelector('[data-other-decision-making-process]')?.classList.add('d-none');\n // }\n //});\n //let funded = document.querySelector('#Input_HowIsYourFleetFunded')?.value;\n //if (funded === \"8\") {\n // document.querySelector('[data-other-how-is-your-fleet-funded]')?.classList.remove('d-none');\n //}\n //document.querySelector('#Input_HowIsYourFleetFunded')?.addEventListener('change', function () {\n // if (this.value === \"Other\" || this.value === \"8\") {\n // document.querySelector('[data-other-how-is-your-fleet-funded]')?.classList.remove('d-none');\n // } else {\n // document.querySelector('[data-other-how-is-your-fleet-funded]')?.classList.add('d-none');\n // }\n //});\n var $checkbox = $(\"#Input_UnSubscribeFromAll\");\n $checkbox.on(\"change\", function() {\n // Check if the checkbox is checked\n if ($checkbox.is(\":checked\")) $(\".checkbox-group\").prop(\"checked\", false);\n });\n $(\".checkbox-group\").on(\"change\", function() {\n $checkbox.prop(\"checked\", false);\n });\n $2acb526bbfd6495c$var$correctHiddenFields();\n}\nfunction $2acb526bbfd6495c$var$onShowNavbar(e) {\n let minusHeight = 85;\n if ($(\"html\").hasClass(\"scrolled-past-header\")) {\n minusHeight = 35;\n if ($(\"body\").hasClass(\"mrcms-admin-bar-on\")) minusHeight = 65;\n } else if ($(\"body\").hasClass(\"mrcms-admin-bar-on\")) minusHeight = 115;\n const windowHeight = $(window).innerHeight() - minusHeight;\n $(\".navbar-collapse .nav.navbar-nav \").css({\n height: windowHeight\n });\n $(\"body\").attr(\"style\", \"margin: 0; height: 0; overflow: hidden;\");\n $(\"#main-content\").attr(\"style\", \"visibility:hidden\");\n//$(\".ad-scroll-fix\").hide();\n}\nfunction $2acb526bbfd6495c$var$onHideNavbar(e) {\n $(\"body\").attr(\"style\", \"\");\n $(\"#main-content\").attr(\"style\", \"\");\n//$(\".ad-scroll-fix\").show();\n}\n\n\n(0, $e784210fef036a05$export$9477d5792fdd966f)();\n(0, (/*@__PURE__*/$parcel$interopDefault($7b22250fbed98fb8$exports)))({\n selector: \".glightbox\"\n});\n//let sliderSwiper = new Swiper(\".swiper-slider\", {\n// slidesPerView: \"auto\",\n// navigation: {\n// nextEl: \".carousel-control-next\",\n// prevEl: \".carousel-control-prev\",\n// },\n//});\n(0, $2acb526bbfd6495c$export$b612431b20616c48)();\nlet $7d0af377de65fca7$var$lgMaxWidth = window.matchMedia(\"(max-width: 991.9px)\");\n$7d0af377de65fca7$var$matchMediaHandler($7d0af377de65fca7$var$lgMaxWidth, \"[data-move][data-media-lg]\");\n$7d0af377de65fca7$var$lgMaxWidth.addEventListener(\"change\", function(e) {\n $7d0af377de65fca7$var$matchMediaHandler(e, \"[data-move][data-media-lg]\");\n});\nlet $7d0af377de65fca7$var$mdMaxWidth = window.matchMedia(\"(max-width: 767.9px)\");\n$7d0af377de65fca7$var$matchMediaHandler($7d0af377de65fca7$var$mdMaxWidth, \"[data-move][data-media-md]\");\n$7d0af377de65fca7$var$mdMaxWidth.addEventListener(\"change\", function(e) {\n $7d0af377de65fca7$var$matchMediaHandler(e, \"[data-move][data-media-md]\");\n});\nlet $7d0af377de65fca7$var$smMaxWidth = window.matchMedia(\"(max-width: 575.9px)\");\n$7d0af377de65fca7$var$matchMediaHandler($7d0af377de65fca7$var$smMaxWidth, \"[data-move][data-media-sm]\");\n$7d0af377de65fca7$var$smMaxWidth.addEventListener(\"change\", function(e) {\n $7d0af377de65fca7$var$matchMediaHandler(e, \"[data-move][data-media-sm]\");\n});\nfunction $7d0af377de65fca7$var$matchMediaHandler(e, selector) {\n if (e.matches) $7d0af377de65fca7$var$dataMove(selector);\n else $7d0af377de65fca7$var$dataMove(selector, true);\n}\n// Function to activate tab based on hash after Bootstrap initialization\nfunction $7d0af377de65fca7$var$activateTabFromHash() {\n const hash = window.location.hash;\n if (hash) {\n const tabLink = document.querySelector(`a[data-bs-toggle=\"pill\"][href=\"${hash}\"]`);\n if (tabLink) new bootstrap.Tab(tabLink).show();\n }\n}\n// Attach the function to the onload event and hash change event\nwindow.onload = window.onhashchange = function() {\n // Delay activating the tab based on the hash tag in the URL\n setTimeout($7d0af377de65fca7$var$activateTabFromHash, 0);\n};\n// Update the hash tag when a tab is shown\nconst $7d0af377de65fca7$var$tabElements = document.querySelectorAll('[data-bs-toggle=\"pill\"]');\n$7d0af377de65fca7$var$tabElements.forEach((tabElement)=>{\n tabElement.addEventListener(\"shown.bs.tab\", (event)=>{\n const tabTarget = event.target.getAttribute(\"href\");\n if (tabTarget) window.location.hash = tabTarget;\n });\n});\n//swiper\n//let carReviewSwiper = new Swiper(\".carreview\", {\n// loop: true,\n// spaceBetween: 30,\n// slidesPerView: 3,\n// freeMode: true,\n// watchSlidesProgress: true,\n// breakpoints: {\n// // mobile\n// 0: {\n// spaceBetween: 10,\n// },\n// // small\n// 576: {\n// spaceBetween: 10,\n// },\n// // medium\n// 768: {\n// spaceBetween: 10,\n// },\n// // large\n// 992: {\n// spaceBetween: 20,\n// },\n// // x-large\n// 1200: {\n// spaceBetween: 25,\n// }\n// }\n//});\n//let mainSliderSwiper = new Swiper(\".main-slider\", {\n// loop: true,\n// spaceBetween: 30,\n// navigation: {\n// nextEl: \".swiper-button-next\",\n// prevEl: \".swiper-button-prev\",\n// },\n// thumbs: {\n// swiper: carReviewSwiper,\n// },\n//});\n//end swiper\n//set focus on search input after click on search button (mobile)\nlet $7d0af377de65fca7$var$mobileSearchCollapse = document.getElementById(\"searchOffcanvasTop\");\nif ($7d0af377de65fca7$var$mobileSearchCollapse) $7d0af377de65fca7$var$mobileSearchCollapse.addEventListener(\"shown.bs.offcanvas\", function() {\n $(this).find('input[name=\"term\"]')[0].focus();\n});\n// Fix table responsiveness ***********************************************\n// Select all tables in the document\nlet $7d0af377de65fca7$var$tables = document.getElementsByTagName(\"table\");\n// Loop through each table\nfor(let i = 0; i < $7d0af377de65fca7$var$tables.length; i++){\n let table = $7d0af377de65fca7$var$tables[i];\n // Check if the parent of the table has the 'table-responsive' class\n if (!table.parentNode.classList.contains(\"table-responsive\")) {\n // If it doesn't, create a new div with the class 'table-responsive'\n var $7d0af377de65fca7$var$wrapper = document.createElement(\"div\");\n $7d0af377de65fca7$var$wrapper.className = \"table-responsive\";\n // Insert the div before the table in the DOM\n table.parentNode.insertBefore($7d0af377de65fca7$var$wrapper, table);\n // Move the table into the div\n $7d0af377de65fca7$var$wrapper.appendChild(table);\n }\n}\n// End fix table responsiveness *******************************************\nfunction $7d0af377de65fca7$var$dataMove(selector, moveBack = false) {\n const elements = document.querySelectorAll(selector);\n elements.forEach((sourceElement)=>{\n const target = sourceElement.getAttribute(\"data-move\");\n const targetElement = document.querySelector(target);\n if (targetElement) {\n if (moveBack) $7d0af377de65fca7$var$moveChildElements(targetElement, sourceElement);\n else $7d0af377de65fca7$var$moveChildElements(sourceElement, targetElement);\n }\n });\n}\nfunction $7d0af377de65fca7$var$moveChildElements(sourceElement, destinationElement) {\n while(sourceElement.firstChild)destinationElement.appendChild(sourceElement.firstChild);\n}\nfunction $7d0af377de65fca7$var$handleBodyCopyToggle() {\n var textDiv = document.getElementById(\"text\");\n if (textDiv !== null && typeof textDiv !== \"undefined\") {\n // Get the height of the 'textDiv' in pixels\n var textDivHeight = textDiv.offsetHeight;\n // If 'textDiv' height is more than the height of 2 lines of text, add the toggle functionality\n if (textDivHeight > 50) {\n // Dynamically create \"Show More\" button\n var toggleBtn = document.createElement(\"a\");\n toggleBtn.id = \"body-copy-toggle\";\n toggleBtn.className = \"text-left mt-3 mb-3 d-block\";\n toggleBtn.href = \"#\";\n toggleBtn.innerHTML = \"Show more +\";\n textDiv.parentNode.appendChild(toggleBtn);\n toggleBtn.addEventListener(\"click\", function(e) {\n e.preventDefault();\n if (textDiv.style.maxHeight.replace(\"px\", \"\") > 19.2) {\n // If block is expanded \n textDiv.style.maxHeight = \"3.2em\"; // Collapse it\n this.innerHTML = \"Show more +\";\n } else {\n textDiv.style.maxHeight = textDiv.scrollHeight + \"px\"; // Expand it to its full height\n this.innerHTML = \"Show less\";\n }\n });\n }\n }\n}\n// Example starter JavaScript for disabling form submissions if there are invalid fields\n(function() {\n \"use strict\";\n $('section[id^=\"group-section-\"]').on(\"inview\", function(event, isInView) {\n if (isInView) {\n // Get the id of the section\n var sectionName = $(this).attr(\"id\");\n console.log(\"section name: \" + sectionName);\n // Push an event to the dataLayer with the section name\n dataLayer.push({\n \"event\": \"virtualPageView\",\n \"virtualPageURL\": window.location.pathname + \"#\" + sectionName,\n \"virtualPageTitle\": sectionName // or any other title you want to give\n });\n }\n });\n $7d0af377de65fca7$var$handleBodyCopyToggle();\n // Fetch all the forms we want to apply custom Bootstrap validation styles to\n var forms = document.querySelectorAll(\".needs-validation\");\n // Loop over them and prevent submission\n Array.prototype.slice.call(forms).forEach(function(form) {\n form.addEventListener(\"submit\", function(event) {\n if (!form.checkValidity()) {\n event.preventDefault();\n event.stopPropagation();\n }\n form.classList.add(\"was-validated\");\n }, false);\n });\n})();\n\n})();\n//# sourceMappingURL=am-online.js.map\n","//Bootstrap JS\nimport 'bootstrap/dist/css/bootstrap.min.css';\nimport 'bxslider-clean/src/js/jquery.bxslider'\nimport 'historyjs/scripts/bundled-uncompressed/html5/jquery.history'\nimport 'sharer.js'\n\n//glightbox\nimport GLightbox from 'glightbox';\n\nimport {setupRecaptcha} from \"./recaptcha\";\n\n// swiper\n//import Swiper from 'swiper/swiper-bundle.min.js';\nimport {setupAmTheme} from \"./am_theme\";\n\nsetupRecaptcha();\n\nGLightbox({\n selector: '.glightbox'\n});\n\n//let sliderSwiper = new Swiper(\".swiper-slider\", {\n// slidesPerView: \"auto\",\n// navigation: {\n// nextEl: \".carousel-control-next\",\n// prevEl: \".carousel-control-prev\",\n// },\n//});\n\nsetupAmTheme();\n\nlet lgMaxWidth = window.matchMedia(\"(max-width: 991.9px)\");\n\nmatchMediaHandler(lgMaxWidth, '[data-move][data-media-lg]');\nlgMaxWidth.addEventListener(\"change\", function (e) {\n matchMediaHandler(e, '[data-move][data-media-lg]');\n});\n\nlet mdMaxWidth = window.matchMedia(\"(max-width: 767.9px)\");\n\nmatchMediaHandler(mdMaxWidth, '[data-move][data-media-md]');\nmdMaxWidth.addEventListener(\"change\", function (e) {\n matchMediaHandler(e, '[data-move][data-media-md]');\n});\n\nlet smMaxWidth = window.matchMedia(\"(max-width: 575.9px)\");\n\nmatchMediaHandler(smMaxWidth, '[data-move][data-media-sm]');\nsmMaxWidth.addEventListener(\"change\", function (e) {\n matchMediaHandler(e, '[data-move][data-media-sm]');\n});\n\nfunction matchMediaHandler(e, selector) {\n if (e.matches) {\n dataMove(selector);\n } else {\n dataMove(selector, true);\n }\n}\n\n// Function to activate tab based on hash after Bootstrap initialization\nfunction activateTabFromHash() {\n const hash = window.location.hash;\n if (hash) {\n const tabLink = document.querySelector(`a[data-bs-toggle=\"pill\"][href=\"${hash}\"]`);\n if (tabLink) {\n new bootstrap.Tab(tabLink).show();\n }\n }\n}\n\n// Attach the function to the onload event and hash change event\nwindow.onload = window.onhashchange = function () {\n // Delay activating the tab based on the hash tag in the URL\n setTimeout(activateTabFromHash, 0);\n};\n\n// Update the hash tag when a tab is shown\nconst tabElements = document.querySelectorAll('[data-bs-toggle=\"pill\"]');\ntabElements.forEach(tabElement => {\n tabElement.addEventListener('shown.bs.tab', event => {\n const tabTarget = event.target.getAttribute('href');\n if (tabTarget) {\n window.location.hash = tabTarget;\n }\n });\n});\n\n//swiper\n//let carReviewSwiper = new Swiper(\".carreview\", {\n// loop: true,\n// spaceBetween: 30,\n// slidesPerView: 3,\n// freeMode: true,\n// watchSlidesProgress: true,\n// breakpoints: {\n// // mobile\n// 0: {\n// spaceBetween: 10,\n// },\n// // small\n// 576: {\n// spaceBetween: 10,\n// },\n// // medium\n// 768: {\n// spaceBetween: 10,\n// },\n// // large\n// 992: {\n// spaceBetween: 20,\n// },\n// // x-large\n// 1200: {\n// spaceBetween: 25,\n// }\n// }\n//});\n\n//let mainSliderSwiper = new Swiper(\".main-slider\", {\n// loop: true,\n// spaceBetween: 30,\n// navigation: {\n// nextEl: \".swiper-button-next\",\n// prevEl: \".swiper-button-prev\",\n// },\n// thumbs: {\n// swiper: carReviewSwiper,\n// },\n\n\n//});\n\n//end swiper\n\n//set focus on search input after click on search button (mobile)\nlet mobileSearchCollapse = document.getElementById('searchOffcanvasTop')\nif (mobileSearchCollapse) {\n mobileSearchCollapse.addEventListener('shown.bs.offcanvas', function () {\n $(this).find('input[name=\"term\"]')[0].focus();\n });\n}\n\n\n// Fix table responsiveness ***********************************************\n\n// Select all tables in the document\nlet tables = document.getElementsByTagName('table');\n\n// Loop through each table\nfor(let i = 0; i < tables.length; i++) {\n let table = tables[i];\n\n // Check if the parent of the table has the 'table-responsive' class\n if (!table.parentNode.classList.contains('table-responsive')) {\n // If it doesn't, create a new div with the class 'table-responsive'\n var wrapper = document.createElement('div');\n wrapper.className = 'table-responsive';\n\n // Insert the div before the table in the DOM\n table.parentNode.insertBefore(wrapper, table);\n\n // Move the table into the div\n wrapper.appendChild(table);\n }\n}\n\n// End fix table responsiveness *******************************************\n\nfunction dataMove(selector, moveBack = false) {\n const elements = document.querySelectorAll(selector);\n\n elements.forEach(sourceElement => {\n const target = sourceElement.getAttribute('data-move');\n const targetElement = document.querySelector(target);\n\n if (targetElement) {\n if (moveBack) {\n moveChildElements(targetElement, sourceElement);\n } else {\n moveChildElements(sourceElement, targetElement);\n }\n }\n });\n}\n\nfunction moveChildElements(sourceElement, destinationElement) {\n while (sourceElement.firstChild) {\n destinationElement.appendChild(sourceElement.firstChild);\n }\n}\n\nfunction handleBodyCopyToggle() {\n var textDiv = document.getElementById(\"text\");\n if (textDiv !== null && typeof textDiv !== 'undefined') {\n // Get the height of the 'textDiv' in pixels\n var textDivHeight = textDiv.offsetHeight;\n\n // If 'textDiv' height is more than the height of 2 lines of text, add the toggle functionality\n if (textDivHeight > 50) {\n // Dynamically create \"Show More\" button\n var toggleBtn = document.createElement(\"a\");\n toggleBtn.id = \"body-copy-toggle\";\n toggleBtn.className = \"text-left mt-3 mb-3 d-block\";\n toggleBtn.href = \"#\";\n toggleBtn.innerHTML = \"Show more +\";\n textDiv.parentNode.appendChild(toggleBtn);\n\n toggleBtn.addEventListener(\"click\", function (e) {\n e.preventDefault();\n if (textDiv.style.maxHeight.replace(\"px\", \"\") > 1.2 * 16) {\n // If block is expanded \n textDiv.style.maxHeight = \"3.2em\"; // Collapse it\n this.innerHTML = \"Show more +\";\n } else {\n textDiv.style.maxHeight = textDiv.scrollHeight + \"px\"; // Expand it to its full height\n this.innerHTML = \"Show less\";\n }\n });\n }\n }\n}\n\n// Example starter JavaScript for disabling form submissions if there are invalid fields\n(function () {\n 'use strict'\n\n $('section[id^=\"group-section-\"]').on('inview', function (event, isInView) {\n if (isInView) {\n // Get the id of the section\n var sectionName = $(this).attr('id');\n console.log(\"section name: \" + sectionName);\n // Push an event to the dataLayer with the section name\n dataLayer.push({\n 'event': 'virtualPageView',\n 'virtualPageURL': window.location.pathname + '#' + sectionName,\n 'virtualPageTitle': sectionName // or any other title you want to give\n });\n }\n });\n handleBodyCopyToggle();\n // Fetch all the forms we want to apply custom Bootstrap validation styles to\n var forms = document.querySelectorAll('.needs-validation')\n\n // Loop over them and prevent submission\n Array.prototype.slice.call(forms)\n .forEach(function (form) {\n form.addEventListener('submit', function (event) {\n if (!form.checkValidity()) {\n event.preventDefault()\n event.stopPropagation()\n }\n\n form.classList.add('was-validated')\n }, false)\n })\n})()",";(function($) {\r\n\r\n var defaults = {\r\n\r\n // GENERAL\r\n mode: 'horizontal',\r\n slideSelector: '',\r\n infiniteLoop: true,\r\n hideControlOnEnd: false,\r\n speed: 500,\r\n easing: null,\r\n slideMargin: 0,\r\n startSlide: 0,\r\n randomStart: false,\r\n captions: false,\r\n ticker: false,\r\n tickerHover: false,\r\n adaptiveHeight: false,\r\n adaptiveHeightSpeed: 500,\r\n video: false,\r\n useCSS: true,\r\n preloadImages: 'visible',\r\n responsive: true,\r\n slideZIndex: 50,\r\n wrapperClass: 'bx-wrapper',\r\n\r\n // TOUCH\r\n touchEnabled: true,\r\n swipeThreshold: 50,\r\n oneToOneTouch: true,\r\n preventDefaultSwipeX: true,\r\n preventDefaultSwipeY: false,\r\n\r\n // ACCESSIBILITY\r\n ariaLive: true,\r\n ariaHidden: true,\r\n\r\n // KEYBOARD\r\n keyboardEnabled: false,\r\n\r\n // PAGER\r\n pager: true,\r\n pagerType: 'full',\r\n pagerShortSeparator: ' / ',\r\n pagerSelector: null,\r\n buildPager: null,\r\n pagerCustom: null,\r\n\r\n // CONTROLS\r\n controls: true,\r\n nextText: 'Next',\r\n prevText: 'Prev',\r\n nextSelector: null,\r\n prevSelector: null,\r\n autoControls: false,\r\n startText: 'Start',\r\n stopText: 'Stop',\r\n autoControlsCombine: false,\r\n autoControlsSelector: null,\r\n\r\n // AUTO\r\n auto: false,\r\n pause: 4000,\r\n autoStart: true,\r\n autoDirection: 'next',\r\n stopAutoOnClick: false,\r\n autoHover: false,\r\n autoDelay: 0,\r\n autoSlideForOnePage: false,\r\n\r\n // CAROUSEL\r\n minSlides: 1,\r\n maxSlides: 1,\r\n moveSlides: 0,\r\n slideWidth: 0,\r\n shrinkItems: false,\r\n\r\n // CALLBACKS\r\n onSliderLoad: function() { return true; },\r\n onSlideBefore: function() { return true; },\r\n onSlideAfter: function() { return true; },\r\n onSlideNext: function() { return true; },\r\n onSlidePrev: function() { return true; },\r\n onSliderResize: function() { return true; }\r\n };\r\n\r\n $.fn.bxSlider = function(options) {\r\n\r\n if (this.length === 0) {\r\n return this;\r\n }\r\n\r\n // support multiple elements\r\n if (this.length > 1) {\r\n this.each(function() {\r\n $(this).bxSlider(options);\r\n });\r\n return this;\r\n }\r\n\r\n // create a namespace to be used throughout the plugin\r\n var slider = {},\r\n // set a reference to our slider element\r\n el = this,\r\n // get the original window dimens (thanks a lot IE)\r\n windowWidth = $(window).width(),\r\n windowHeight = $(window).height();\r\n\r\n // Return if slider is already initialized\r\n if ($(el).data('bxSlider')) { return; }\r\n\r\n /**\r\n * ===================================================================================\r\n * = PRIVATE FUNCTIONS\r\n * ===================================================================================\r\n */\r\n\r\n /**\r\n * Initializes namespace settings to be used throughout plugin\r\n */\r\n var init = function() {\r\n // Return if slider is already initialized\r\n if ($(el).data('bxSlider')) { return; }\r\n // merge user-supplied options with the defaults\r\n slider.settings = $.extend({}, defaults, options);\r\n // parse slideWidth setting\r\n slider.settings.slideWidth = parseInt(slider.settings.slideWidth);\r\n // store the original children\r\n slider.children = el.children(slider.settings.slideSelector);\r\n // check if actual number of slides is less than minSlides / maxSlides\r\n if (slider.children.length < slider.settings.minSlides) { slider.settings.minSlides = slider.children.length; }\r\n if (slider.children.length < slider.settings.maxSlides) { slider.settings.maxSlides = slider.children.length; }\r\n // if random start, set the startSlide setting to random number\r\n if (slider.settings.randomStart) { slider.settings.startSlide = Math.floor(Math.random() * slider.children.length); }\r\n // store active slide information\r\n slider.active = { index: slider.settings.startSlide };\r\n // store if the slider is in carousel mode (displaying / moving multiple slides)\r\n slider.carousel = slider.settings.minSlides > 1 || slider.settings.maxSlides > 1 ? true : false;\r\n // if carousel, force preloadImages = 'all'\r\n if (slider.carousel) { slider.settings.preloadImages = 'all'; }\r\n // calculate the min / max width thresholds based on min / max number of slides\r\n // used to setup and update carousel slides dimensions\r\n slider.minThreshold = (slider.settings.minSlides * slider.settings.slideWidth) + ((slider.settings.minSlides - 1) * slider.settings.slideMargin);\r\n slider.maxThreshold = (slider.settings.maxSlides * slider.settings.slideWidth) + ((slider.settings.maxSlides - 1) * slider.settings.slideMargin);\r\n // store the current state of the slider (if currently animating, working is true)\r\n slider.working = false;\r\n // initialize the controls object\r\n slider.controls = {};\r\n // initialize an auto interval\r\n slider.interval = null;\r\n // determine which property to use for transitions\r\n slider.animProp = slider.settings.mode === 'vertical' ? 'top' : 'left';\r\n // determine if hardware acceleration can be used\r\n slider.usingCSS = slider.settings.useCSS && slider.settings.mode !== 'fade' && (function() {\r\n // create our test div element\r\n var div = document.createElement('div'),\r\n // css transition properties\r\n props = ['WebkitPerspective', 'MozPerspective', 'OPerspective', 'msPerspective'];\r\n // test for each property\r\n for (i = 0; i < props.length; i++) {\r\n if (div.style[props[i]] !== undefined) {\r\n slider.cssPrefix = props[i].replace('Perspective', '').toLowerCase();\r\n slider.animProp = '-' + slider.cssPrefix + '-transform';\r\n return true;\r\n }\r\n }\r\n return false;\r\n }());\r\n // if vertical mode always make maxSlides and minSlides equal\r\n if (slider.settings.mode === 'vertical') { slider.settings.maxSlides = slider.settings.minSlides; }\r\n // save original style data\r\n el.data('origStyle', el.attr('style'));\r\n el.children(slider.settings.slideSelector).each(function() {\r\n $(this).data('origStyle', $(this).attr('style'));\r\n });\r\n\r\n // perform all DOM / CSS modifications\r\n setup();\r\n };\r\n\r\n /**\r\n * Performs all DOM and CSS modifications\r\n */\r\n var setup = function() {\r\n var preloadSelector = slider.children.eq(slider.settings.startSlide); // set the default preload selector (visible)\r\n\r\n // wrap el in a wrapper\r\n el.wrap('
');\r\n // store a namespace reference to .bx-viewport\r\n slider.viewport = el.parent();\r\n\r\n // add aria-live if the setting is enabled and ticker mode is disabled\r\n if (slider.settings.ariaLive && !slider.settings.ticker) {\r\n slider.viewport.attr('aria-live', 'polite');\r\n }\r\n // add a loading div to display while images are loading\r\n slider.loader = $('
');\r\n slider.viewport.prepend(slider.loader);\r\n // set el to a massive width, to hold any needed slides\r\n // also strip any margin and padding from el\r\n el.css({\r\n width: slider.settings.mode === 'horizontal' ? (slider.children.length * 1000 + 215) + '%' : 'auto',\r\n position: 'relative'\r\n });\r\n // if using CSS, add the easing property\r\n if (slider.usingCSS && slider.settings.easing) {\r\n el.css('-' + slider.cssPrefix + '-transition-timing-function', slider.settings.easing);\r\n // if not using CSS and no easing value was supplied, use the default JS animation easing (swing)\r\n } else if (!slider.settings.easing) {\r\n slider.settings.easing = 'swing';\r\n }\r\n // make modifications to the viewport (.bx-viewport)\r\n slider.viewport.css({\r\n width: '100%',\r\n overflow: 'hidden',\r\n position: 'relative'\r\n });\r\n slider.viewport.parent().css({\r\n maxWidth: getViewportMaxWidth()\r\n });\r\n // make modification to the wrapper (.bx-wrapper)\r\n if (!slider.settings.pager && !slider.settings.controls) {\r\n slider.viewport.parent().css({\r\n margin: '0 auto 0px'\r\n });\r\n }\r\n // apply css to all slider children\r\n slider.children.css({\r\n float: slider.settings.mode === 'horizontal' ? 'left' : 'none',\r\n listStyle: 'none',\r\n position: 'relative'\r\n });\r\n // apply the calculated width after the float is applied to prevent scrollbar interference\r\n slider.children.css('width', getSlideWidth());\r\n // if slideMargin is supplied, add the css\r\n if (slider.settings.mode === 'horizontal' && slider.settings.slideMargin > 0) { slider.children.css('marginRight', slider.settings.slideMargin); }\r\n if (slider.settings.mode === 'vertical' && slider.settings.slideMargin > 0) { slider.children.css('marginBottom', slider.settings.slideMargin); }\r\n // if \"fade\" mode, add positioning and z-index CSS\r\n if (slider.settings.mode === 'fade') {\r\n slider.children.css({\r\n position: 'absolute',\r\n zIndex: 0,\r\n display: 'none'\r\n });\r\n // prepare the z-index on the showing element\r\n slider.children.eq(slider.settings.startSlide).css({zIndex: slider.settings.slideZIndex, display: 'block'});\r\n }\r\n // create an element to contain all slider controls (pager, start / stop, etc)\r\n slider.controls.el = $('
');\r\n // if captions are requested, add them\r\n if (slider.settings.captions) { appendCaptions(); }\r\n // check if startSlide is last slide\r\n slider.active.last = slider.settings.startSlide === getPagerQty() - 1;\r\n // if video is true, set up the fitVids plugin\r\n if (slider.settings.video) { el.fitVids(); }\r\n if (slider.settings.preloadImages === 'all' || slider.settings.ticker) { preloadSelector = slider.children; }\r\n // only check for control addition if not in \"ticker\" mode\r\n if (!slider.settings.ticker) {\r\n // if controls are requested, add them\r\n if (slider.settings.controls) { appendControls(); }\r\n // if auto is true, and auto controls are requested, add them\r\n if (slider.settings.auto && slider.settings.autoControls) { appendControlsAuto(); }\r\n // if pager is requested, add it\r\n if (slider.settings.pager) { appendPager(); }\r\n // if any control option is requested, add the controls wrapper\r\n if (slider.settings.controls || slider.settings.autoControls || slider.settings.pager) { slider.viewport.after(slider.controls.el); }\r\n // if ticker mode, do not allow a pager\r\n } else {\r\n slider.settings.pager = false;\r\n }\r\n loadElements(preloadSelector, start);\r\n };\r\n\r\n var loadElements = function(selector, callback) {\r\n var total = selector.find('img:not([src=\"\"]), iframe').length,\r\n count = 0;\r\n if (total === 0) {\r\n callback();\r\n return;\r\n }\r\n selector.find('img:not([src=\"\"]), iframe').each(function() {\r\n $(this).one('load error', function() {\r\n if (++count === total) { callback(); }\r\n }).each(function() {\r\n if (this.complete) { $(this).load(); }\r\n });\r\n });\r\n };\r\n\r\n /**\r\n * Start the slider\r\n */\r\n var start = function() {\r\n // if infinite loop, prepare additional slides\r\n if (slider.settings.infiniteLoop && slider.settings.mode !== 'fade' && !slider.settings.ticker) {\r\n var slice = slider.settings.mode === 'vertical' ? slider.settings.minSlides : slider.settings.maxSlides,\r\n sliceAppend = slider.children.slice(0, slice).clone(true).addClass('bx-clone'),\r\n slicePrepend = slider.children.slice(-slice).clone(true).addClass('bx-clone');\r\n if (slider.settings.ariaHidden) {\r\n sliceAppend.attr('aria-hidden', true);\r\n slicePrepend.attr('aria-hidden', true);\r\n }\r\n el.append(sliceAppend).prepend(slicePrepend);\r\n }\r\n // remove the loading DOM element\r\n slider.loader.remove();\r\n // set the left / top position of \"el\"\r\n setSlidePosition();\r\n // if \"vertical\" mode, always use adaptiveHeight to prevent odd behavior\r\n if (slider.settings.mode === 'vertical') { slider.settings.adaptiveHeight = true; }\r\n // set the viewport height\r\n slider.viewport.height(getViewportHeight());\r\n // make sure everything is positioned just right (same as a window resize)\r\n el.redrawSlider();\r\n // onSliderLoad callback\r\n slider.settings.onSliderLoad.call(el, slider.active.index);\r\n // slider has been fully initialized\r\n slider.initialized = true;\r\n // bind the resize call to the window\r\n if (slider.settings.responsive) { $(window).bind('resize', resizeWindow); }\r\n // if auto is true and has more than 1 page, start the show\r\n if (slider.settings.auto && slider.settings.autoStart && (getPagerQty() > 1 || slider.settings.autoSlideForOnePage)) { initAuto(); }\r\n // if ticker is true, start the ticker\r\n if (slider.settings.ticker) { initTicker(); }\r\n // if pager is requested, make the appropriate pager link active\r\n if (slider.settings.pager) { updatePagerActive(slider.settings.startSlide); }\r\n // check for any updates to the controls (like hideControlOnEnd updates)\r\n if (slider.settings.controls) { updateDirectionControls(); }\r\n // if touchEnabled is true, setup the touch events\r\n if (slider.settings.touchEnabled && !slider.settings.ticker) { initTouch(); }\r\n // if keyboardEnabled is true, setup the keyboard events\r\n if (slider.settings.keyboardEnabled && !slider.settings.ticker) {\r\n $(document).keydown(keyPress);\r\n }\r\n };\r\n\r\n /**\r\n * Returns the calculated height of the viewport, used to determine either adaptiveHeight or the maxHeight value\r\n */\r\n var getViewportHeight = function() {\r\n var height = el.outerHeight(),\r\n currentIndex = null,\r\n // first determine which children (slides) should be used in our height calculation\r\n children = $();\r\n // if mode is not \"vertical\" and adaptiveHeight is false, include all children\r\n if (slider.settings.mode !== 'vertical' && !slider.settings.adaptiveHeight) {\r\n children = slider.children;\r\n } else {\r\n // if not carousel, return the single active child\r\n if (!slider.carousel) {\r\n children = slider.children.eq(slider.active.index);\r\n // if carousel, return a slice of children\r\n } else {\r\n // get the individual slide index\r\n currentIndex = slider.settings.moveSlides === 1 ? slider.active.index : slider.active.index * getMoveBy();\r\n // add the current slide to the children\r\n children = slider.children.eq(currentIndex);\r\n // cycle through the remaining \"showing\" slides\r\n for (i = 1; i <= slider.settings.maxSlides - 1; i++) {\r\n // if looped back to the start\r\n if (currentIndex + i >= slider.children.length) {\r\n children = children.add(slider.children.eq(currentIndex + i - slider.children.length));\r\n } else {\r\n children = children.add(slider.children.eq(currentIndex + i));\r\n }\r\n }\r\n }\r\n }\r\n // if \"vertical\" mode, calculate the sum of the heights of the children\r\n if (slider.settings.mode === 'vertical') {\r\n children.each(function(index) {\r\n height += $(this).outerHeight();\r\n });\r\n // add user-supplied margins\r\n if (slider.settings.slideMargin > 0) {\r\n height += slider.settings.slideMargin * (slider.settings.minSlides - 1);\r\n }\r\n // if not \"vertical\" mode, calculate the max height of the children\r\n } else {\r\n height = Math.max.apply(Math, children.map(function() {\r\n return $(this).outerHeight(false);\r\n }).get());\r\n }\r\n\r\n if (slider.viewport.css('box-sizing') === 'border-box') {\r\n height += parseFloat(slider.viewport.css('padding-top')) + parseFloat(slider.viewport.css('padding-bottom')) +\r\n parseFloat(slider.viewport.css('border-top-width')) + parseFloat(slider.viewport.css('border-bottom-width'));\r\n } else if (slider.viewport.css('box-sizing') === 'padding-box') {\r\n height += parseFloat(slider.viewport.css('padding-top')) + parseFloat(slider.viewport.css('padding-bottom'));\r\n }\r\n\r\n return height;\r\n };\r\n\r\n /**\r\n * Returns the calculated width to be used for the outer wrapper / viewport\r\n */\r\n var getViewportMaxWidth = function() {\r\n var width = '100%';\r\n if (slider.settings.slideWidth > 0) {\r\n if (slider.settings.mode === 'horizontal') {\r\n width = (slider.settings.maxSlides * slider.settings.slideWidth) + ((slider.settings.maxSlides - 1) * slider.settings.slideMargin);\r\n } else {\r\n width = slider.settings.slideWidth;\r\n }\r\n }\r\n return width;\r\n };\r\n\r\n /**\r\n * Returns the calculated width to be applied to each slide\r\n */\r\n var getSlideWidth = function() {\r\n var newElWidth = slider.settings.slideWidth, // start with any user-supplied slide width\r\n wrapWidth = slider.viewport.width(); // get the current viewport width\r\n // if slide width was not supplied, or is larger than the viewport use the viewport width\r\n if (slider.settings.slideWidth === 0 ||\r\n (slider.settings.slideWidth > wrapWidth && !slider.carousel) ||\r\n slider.settings.mode === 'vertical') {\r\n newElWidth = wrapWidth;\r\n // if carousel, use the thresholds to determine the width\r\n } else if (slider.settings.maxSlides > 1 && slider.settings.mode === 'horizontal') {\r\n if (wrapWidth > slider.maxThreshold) {\r\n return newElWidth;\r\n } else if (wrapWidth < slider.minThreshold) {\r\n newElWidth = (wrapWidth - (slider.settings.slideMargin * (slider.settings.minSlides - 1))) / slider.settings.minSlides;\r\n } else if (slider.settings.shrinkItems) {\r\n newElWidth = Math.floor((wrapWidth + slider.settings.slideMargin) / (Math.ceil((wrapWidth + slider.settings.slideMargin) / (newElWidth + slider.settings.slideMargin))) - slider.settings.slideMargin);\r\n }\r\n }\r\n return newElWidth;\r\n };\r\n\r\n /**\r\n * Returns the number of slides currently visible in the viewport (includes partially visible slides)\r\n */\r\n var getNumberSlidesShowing = function() {\r\n var slidesShowing = 1,\r\n childWidth = null;\r\n if (slider.settings.mode === 'horizontal' && slider.settings.slideWidth > 0) {\r\n // if viewport is smaller than minThreshold, return minSlides\r\n if (slider.viewport.width() < slider.minThreshold) {\r\n slidesShowing = slider.settings.minSlides;\r\n // if viewport is larger than maxThreshold, return maxSlides\r\n } else if (slider.viewport.width() > slider.maxThreshold) {\r\n slidesShowing = slider.settings.maxSlides;\r\n // if viewport is between min / max thresholds, divide viewport width by first child width\r\n } else {\r\n childWidth = slider.children.first().width() + slider.settings.slideMargin;\r\n slidesShowing = Math.floor((slider.viewport.width() +\r\n slider.settings.slideMargin) / childWidth);\r\n }\r\n // if \"vertical\" mode, slides showing will always be minSlides\r\n } else if (slider.settings.mode === 'vertical') {\r\n slidesShowing = slider.settings.minSlides;\r\n }\r\n return slidesShowing;\r\n };\r\n\r\n /**\r\n * Returns the number of pages (one full viewport of slides is one \"page\")\r\n */\r\n var getPagerQty = function() {\r\n var pagerQty = 0,\r\n breakPoint = 0,\r\n counter = 0;\r\n // if moveSlides is specified by the user\r\n if (slider.settings.moveSlides > 0) {\r\n if (slider.settings.infiniteLoop) {\r\n pagerQty = Math.ceil(slider.children.length / getMoveBy());\r\n } else {\r\n // when breakpoint goes above children length, counter is the number of pages\r\n while (breakPoint < slider.children.length) {\r\n ++pagerQty;\r\n breakPoint = counter + getNumberSlidesShowing();\r\n counter += slider.settings.moveSlides <= getNumberSlidesShowing() ? slider.settings.moveSlides : getNumberSlidesShowing();\r\n }\r\n }\r\n // if moveSlides is 0 (auto) divide children length by sides showing, then round up\r\n } else {\r\n pagerQty = Math.ceil(slider.children.length / getNumberSlidesShowing());\r\n }\r\n return pagerQty;\r\n };\r\n\r\n /**\r\n * Returns the number of individual slides by which to shift the slider\r\n */\r\n var getMoveBy = function() {\r\n // if moveSlides was set by the user and moveSlides is less than number of slides showing\r\n if (slider.settings.moveSlides > 0 && slider.settings.moveSlides <= getNumberSlidesShowing()) {\r\n return slider.settings.moveSlides;\r\n }\r\n // if moveSlides is 0 (auto)\r\n return getNumberSlidesShowing();\r\n };\r\n\r\n /**\r\n * Sets the slider's (el) left or top position\r\n */\r\n var setSlidePosition = function() {\r\n var position, lastChild, lastShowingIndex;\r\n // if last slide, not infinite loop, and number of children is larger than specified maxSlides\r\n if (slider.children.length > slider.settings.maxSlides && slider.active.last && !slider.settings.infiniteLoop) {\r\n if (slider.settings.mode === 'horizontal') {\r\n // get the last child's position\r\n lastChild = slider.children.last();\r\n position = lastChild.position();\r\n // set the left position\r\n setPositionProperty(-(position.left - (slider.viewport.width() - lastChild.outerWidth())), 'reset', 0);\r\n } else if (slider.settings.mode === 'vertical') {\r\n // get the last showing index's position\r\n lastShowingIndex = slider.children.length - slider.settings.minSlides;\r\n position = slider.children.eq(lastShowingIndex).position();\r\n // set the top position\r\n setPositionProperty(-position.top, 'reset', 0);\r\n }\r\n // if not last slide\r\n } else {\r\n // get the position of the first showing slide\r\n position = slider.children.eq(slider.active.index * getMoveBy()).position();\r\n // check for last slide\r\n if (slider.active.index === getPagerQty() - 1) { slider.active.last = true; }\r\n // set the respective position\r\n if (position !== undefined) {\r\n if (slider.settings.mode === 'horizontal') { setPositionProperty(-position.left, 'reset', 0); }\r\n else if (slider.settings.mode === 'vertical') { setPositionProperty(-position.top, 'reset', 0); }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Sets the el's animating property position (which in turn will sometimes animate el).\r\n * If using CSS, sets the transform property. If not using CSS, sets the top / left property.\r\n *\r\n * @param value (int)\r\n * - the animating property's value\r\n *\r\n * @param type (string) 'slide', 'reset', 'ticker'\r\n * - the type of instance for which the function is being\r\n *\r\n * @param duration (int)\r\n * - the amount of time (in ms) the transition should occupy\r\n *\r\n * @param params (array) optional\r\n * - an optional parameter containing any variables that need to be passed in\r\n */\r\n var setPositionProperty = function(value, type, duration, params) {\r\n var animateObj, propValue;\r\n // use CSS transform\r\n if (slider.usingCSS) {\r\n // determine the translate3d value\r\n propValue = slider.settings.mode === 'vertical' ? 'translate3d(0, ' + value + 'px, 0)' : 'translate3d(' + value + 'px, 0, 0)';\r\n // add the CSS transition-duration\r\n el.css('-' + slider.cssPrefix + '-transition-duration', duration / 1000 + 's');\r\n if (type === 'slide') {\r\n // set the property value\r\n el.css(slider.animProp, propValue);\r\n // bind a callback method - executes when CSS transition completes\r\n el.bind('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd', function(e) {\r\n //make sure it's the correct one\r\n if (!$(e.target).is(el)) { return; }\r\n // unbind the callback\r\n el.unbind('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd');\r\n updateAfterSlideTransition();\r\n });\r\n } else if (type === 'reset') {\r\n el.css(slider.animProp, propValue);\r\n } else if (type === 'ticker') {\r\n // make the transition use 'linear'\r\n el.css('-' + slider.cssPrefix + '-transition-timing-function', 'linear');\r\n el.css(slider.animProp, propValue);\r\n // bind a callback method - executes when CSS transition completes\r\n el.bind('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd', function(e) {\r\n //make sure it's the correct one\r\n if (!$(e.target).is(el)) { return; }\r\n // unbind the callback\r\n el.unbind('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd');\r\n // reset the position\r\n setPositionProperty(params.resetValue, 'reset', 0);\r\n // start the loop again\r\n tickerLoop();\r\n });\r\n }\r\n // use JS animate\r\n } else {\r\n animateObj = {};\r\n animateObj[slider.animProp] = value;\r\n if (type === 'slide') {\r\n el.animate(animateObj, duration, slider.settings.easing, function() {\r\n updateAfterSlideTransition();\r\n });\r\n } else if (type === 'reset') {\r\n el.css(slider.animProp, value);\r\n } else if (type === 'ticker') {\r\n el.animate(animateObj, duration, 'linear', function() {\r\n setPositionProperty(params.resetValue, 'reset', 0);\r\n // run the recursive loop after animation\r\n tickerLoop();\r\n });\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Populates the pager with proper amount of pages\r\n */\r\n var populatePager = function() {\r\n var pagerHtml = '',\r\n linkContent = '',\r\n pagerQty = getPagerQty();\r\n // loop through each pager item\r\n for (i = 0; i < pagerQty; i++) {\r\n linkContent = '';\r\n // if a buildPager function is supplied, use it to get pager link value, else use index + 1\r\n if (slider.settings.buildPager && $.isFunction(slider.settings.buildPager) || slider.settings.pagerCustom) {\r\n linkContent = slider.settings.buildPager(i);\r\n slider.pagerEl.addClass('bx-custom-pager');\r\n } else {\r\n linkContent = i + 1;\r\n slider.pagerEl.addClass('bx-default-pager');\r\n }\r\n // var linkContent = slider.settings.buildPager && $.isFunction(slider.settings.buildPager) ? slider.settings.buildPager(i) : i + 1;\r\n // add the markup to the string\r\n pagerHtml += '';\r\n }\r\n // populate the pager element with pager links\r\n slider.pagerEl.html(pagerHtml);\r\n };\r\n\r\n /**\r\n * Appends the pager to the controls element\r\n */\r\n var appendPager = function() {\r\n if (!slider.settings.pagerCustom) {\r\n // create the pager DOM element\r\n slider.pagerEl = $('
');\r\n // if a pager selector was supplied, populate it with the pager\r\n if (slider.settings.pagerSelector) {\r\n $(slider.settings.pagerSelector).html(slider.pagerEl);\r\n // if no pager selector was supplied, add it after the wrapper\r\n } else {\r\n slider.controls.el.addClass('bx-has-pager').append(slider.pagerEl);\r\n }\r\n // populate the pager\r\n populatePager();\r\n } else {\r\n slider.pagerEl = $(slider.settings.pagerCustom);\r\n }\r\n // assign the pager click binding\r\n slider.pagerEl.on('click touchend', 'a', clickPagerBind);\r\n };\r\n\r\n /**\r\n * Appends prev / next controls to the controls element\r\n */\r\n var appendControls = function() {\r\n slider.controls.next = $('' + slider.settings.nextText + '');\r\n slider.controls.prev = $('' + slider.settings.prevText + '');\r\n // bind click actions to the controls\r\n slider.controls.next.bind('click touchend', clickNextBind);\r\n slider.controls.prev.bind('click touchend', clickPrevBind);\r\n // if nextSelector was supplied, populate it\r\n if (slider.settings.nextSelector) {\r\n $(slider.settings.nextSelector).append(slider.controls.next);\r\n }\r\n // if prevSelector was supplied, populate it\r\n if (slider.settings.prevSelector) {\r\n $(slider.settings.prevSelector).append(slider.controls.prev);\r\n }\r\n // if no custom selectors were supplied\r\n if (!slider.settings.nextSelector && !slider.settings.prevSelector) {\r\n // add the controls to the DOM\r\n slider.controls.directionEl = $('
');\r\n // add the control elements to the directionEl\r\n slider.controls.directionEl.append(slider.controls.prev).append(slider.controls.next);\r\n // slider.viewport.append(slider.controls.directionEl);\r\n slider.controls.el.addClass('bx-has-controls-direction').append(slider.controls.directionEl);\r\n }\r\n };\r\n\r\n /**\r\n * Appends start / stop auto controls to the controls element\r\n */\r\n var appendControlsAuto = function() {\r\n slider.controls.start = $('');\r\n slider.controls.stop = $('');\r\n // add the controls to the DOM\r\n slider.controls.autoEl = $('
');\r\n // bind click actions to the controls\r\n slider.controls.autoEl.on('click', '.bx-start', clickStartBind);\r\n slider.controls.autoEl.on('click', '.bx-stop', clickStopBind);\r\n // if autoControlsCombine, insert only the \"start\" control\r\n if (slider.settings.autoControlsCombine) {\r\n slider.controls.autoEl.append(slider.controls.start);\r\n // if autoControlsCombine is false, insert both controls\r\n } else {\r\n slider.controls.autoEl.append(slider.controls.start).append(slider.controls.stop);\r\n }\r\n // if auto controls selector was supplied, populate it with the controls\r\n if (slider.settings.autoControlsSelector) {\r\n $(slider.settings.autoControlsSelector).html(slider.controls.autoEl);\r\n // if auto controls selector was not supplied, add it after the wrapper\r\n } else {\r\n slider.controls.el.addClass('bx-has-controls-auto').append(slider.controls.autoEl);\r\n }\r\n // update the auto controls\r\n updateAutoControls(slider.settings.autoStart ? 'stop' : 'start');\r\n };\r\n\r\n /**\r\n * Appends image captions to the DOM\r\n */\r\n var appendCaptions = function() {\r\n // cycle through each child\r\n slider.children.each(function(index) {\r\n // get the image title attribute\r\n var title = $(this).find('img:first').attr('title');\r\n // append the caption\r\n if (title !== undefined && ('' + title).length) {\r\n $(this).append('
' + title + '
');\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Click next binding\r\n *\r\n * @param e (event)\r\n * - DOM event object\r\n */\r\n var clickNextBind = function(e) {\r\n e.preventDefault();\r\n if (slider.controls.el.hasClass('disabled')) { return; }\r\n // if auto show is running, stop it\r\n if (slider.settings.auto && slider.settings.stopAutoOnClick) { el.stopAuto(); }\r\n el.goToNextSlide();\r\n };\r\n\r\n /**\r\n * Click prev binding\r\n *\r\n * @param e (event)\r\n * - DOM event object\r\n */\r\n var clickPrevBind = function(e) {\r\n e.preventDefault();\r\n if (slider.controls.el.hasClass('disabled')) { return; }\r\n // if auto show is running, stop it\r\n if (slider.settings.auto && slider.settings.stopAutoOnClick) { el.stopAuto(); }\r\n el.goToPrevSlide();\r\n };\r\n\r\n /**\r\n * Click start binding\r\n *\r\n * @param e (event)\r\n * - DOM event object\r\n */\r\n var clickStartBind = function(e) {\r\n el.startAuto();\r\n e.preventDefault();\r\n };\r\n\r\n /**\r\n * Click stop binding\r\n *\r\n * @param e (event)\r\n * - DOM event object\r\n */\r\n var clickStopBind = function(e) {\r\n el.stopAuto();\r\n e.preventDefault();\r\n };\r\n\r\n /**\r\n * Click pager binding\r\n *\r\n * @param e (event)\r\n * - DOM event object\r\n */\r\n var clickPagerBind = function(e) {\r\n var pagerLink, pagerIndex;\r\n e.preventDefault();\r\n if (slider.controls.el.hasClass('disabled')) {\r\n return;\r\n }\r\n // if auto show is running, stop it\r\n if (slider.settings.auto && slider.settings.stopAutoOnClick) { el.stopAuto(); }\r\n pagerLink = $(e.currentTarget);\r\n if (pagerLink.attr('data-slide-index') !== undefined) {\r\n pagerIndex = parseInt(pagerLink.attr('data-slide-index'));\r\n // if clicked pager link is not active, continue with the goToSlide call\r\n if (pagerIndex !== slider.active.index) { el.goToSlide(pagerIndex); }\r\n }\r\n };\r\n\r\n /**\r\n * Updates the pager links with an active class\r\n *\r\n * @param slideIndex (int)\r\n * - index of slide to make active\r\n */\r\n var updatePagerActive = function(slideIndex) {\r\n // if \"short\" pager type\r\n var len = slider.children.length; // nb of children\r\n if (slider.settings.pagerType === 'short') {\r\n if (slider.settings.maxSlides > 1) {\r\n len = Math.ceil(slider.children.length / slider.settings.maxSlides);\r\n }\r\n slider.pagerEl.html((slideIndex + 1) + slider.settings.pagerShortSeparator + len);\r\n return;\r\n }\r\n // remove all pager active classes\r\n slider.pagerEl.find('a').removeClass('active');\r\n // apply the active class for all pagers\r\n slider.pagerEl.each(function(i, el) { $(el).find('a').eq(slideIndex).addClass('active'); });\r\n };\r\n\r\n /**\r\n * Performs needed actions after a slide transition\r\n */\r\n var updateAfterSlideTransition = function() {\r\n // if infinite loop is true\r\n if (slider.settings.infiniteLoop) {\r\n var position = '';\r\n // first slide\r\n if (slider.active.index === 0) {\r\n // set the new position\r\n position = slider.children.eq(0).position();\r\n // carousel, last slide\r\n } else if (slider.active.index === getPagerQty() - 1 && slider.carousel) {\r\n position = slider.children.eq((getPagerQty() - 1) * getMoveBy()).position();\r\n // last slide\r\n } else if (slider.active.index === slider.children.length - 1) {\r\n position = slider.children.eq(slider.children.length - 1).position();\r\n }\r\n if (position) {\r\n if (slider.settings.mode === 'horizontal') { setPositionProperty(-position.left, 'reset', 0.01); } // .01 to prevent flash on repositioning of slider when cycling through infinite\r\n else if (slider.settings.mode === 'vertical') { setPositionProperty(-position.top, 'reset', 0.01); }\r\n }\r\n }\r\n // declare that the transition is complete\r\n slider.working = false;\r\n // onSlideAfter callback\r\n slider.settings.onSlideAfter.call(el, slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index);\r\n };\r\n\r\n /**\r\n * Updates the auto controls state (either active, or combined switch)\r\n *\r\n * @param state (string) \"start\", \"stop\"\r\n * - the new state of the auto show\r\n */\r\n var updateAutoControls = function(state) {\r\n // if autoControlsCombine is true, replace the current control with the new state\r\n if (slider.settings.autoControlsCombine) {\r\n slider.controls.autoEl.html(slider.controls[state]);\r\n // if autoControlsCombine is false, apply the \"active\" class to the appropriate control\r\n } else {\r\n slider.controls.autoEl.find('a').removeClass('active');\r\n slider.controls.autoEl.find('a:not(.bx-' + state + ')').addClass('active');\r\n }\r\n };\r\n\r\n /**\r\n * Updates the direction controls (checks if either should be hidden)\r\n */\r\n var updateDirectionControls = function() {\r\n if (getPagerQty() === 1) {\r\n slider.controls.prev.addClass('disabled');\r\n slider.controls.next.addClass('disabled');\r\n } else if (!slider.settings.infiniteLoop && slider.settings.hideControlOnEnd) {\r\n // if first slide\r\n if (slider.active.index === 0) {\r\n slider.controls.prev.addClass('disabled');\r\n slider.controls.next.removeClass('disabled');\r\n // if last slide\r\n } else if (slider.active.index === getPagerQty() - 1) {\r\n slider.controls.next.addClass('disabled');\r\n slider.controls.prev.removeClass('disabled');\r\n // if any slide in the middle\r\n } else {\r\n slider.controls.prev.removeClass('disabled');\r\n slider.controls.next.removeClass('disabled');\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Initializes the auto process\r\n */\r\n var initAuto = function() {\r\n // if autoDelay was supplied, launch the auto show using a setTimeout() call\r\n if (slider.settings.autoDelay > 0) {\r\n var timeout = setTimeout(el.startAuto, slider.settings.autoDelay);\r\n // if autoDelay was not supplied, start the auto show normally\r\n } else {\r\n el.startAuto();\r\n\r\n //add focus and blur events to ensure its running if timeout gets paused\r\n $(window).focus(function() {\r\n el.startAuto();\r\n }).blur(function() {\r\n el.stopAuto();\r\n });\r\n }\r\n // if autoHover is requested\r\n if (slider.settings.autoHover) {\r\n // on el hover\r\n el.hover(function() {\r\n // if the auto show is currently playing (has an active interval)\r\n if (slider.interval) {\r\n // stop the auto show and pass true argument which will prevent control update\r\n el.stopAuto(true);\r\n // create a new autoPaused value which will be used by the relative \"mouseout\" event\r\n slider.autoPaused = true;\r\n }\r\n }, function() {\r\n // if the autoPaused value was created be the prior \"mouseover\" event\r\n if (slider.autoPaused) {\r\n // start the auto show and pass true argument which will prevent control update\r\n el.startAuto(true);\r\n // reset the autoPaused value\r\n slider.autoPaused = null;\r\n }\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Initializes the ticker process\r\n */\r\n var initTicker = function() {\r\n var startPosition = 0,\r\n position, transform, value, idx, ratio, property, newSpeed, totalDimens;\r\n // if autoDirection is \"next\", append a clone of the entire slider\r\n if (slider.settings.autoDirection === 'next') {\r\n el.append(slider.children.clone().addClass('bx-clone'));\r\n // if autoDirection is \"prev\", prepend a clone of the entire slider, and set the left position\r\n } else {\r\n el.prepend(slider.children.clone().addClass('bx-clone'));\r\n position = slider.children.first().position();\r\n startPosition = slider.settings.mode === 'horizontal' ? -position.left : -position.top;\r\n }\r\n setPositionProperty(startPosition, 'reset', 0);\r\n // do not allow controls in ticker mode\r\n slider.settings.pager = false;\r\n slider.settings.controls = false;\r\n slider.settings.autoControls = false;\r\n // if autoHover is requested\r\n if (slider.settings.tickerHover) {\r\n if (slider.usingCSS) {\r\n idx = slider.settings.mode === 'horizontal' ? 4 : 5;\r\n slider.viewport.hover(function() {\r\n transform = el.css('-' + slider.cssPrefix + '-transform');\r\n value = parseFloat(transform.split(',')[idx]);\r\n setPositionProperty(value, 'reset', 0);\r\n }, function() {\r\n totalDimens = 0;\r\n slider.children.each(function(index) {\r\n totalDimens += slider.settings.mode === 'horizontal' ? $(this).outerWidth(true) : $(this).outerHeight(true);\r\n });\r\n // calculate the speed ratio (used to determine the new speed to finish the paused animation)\r\n ratio = slider.settings.speed / totalDimens;\r\n // determine which property to use\r\n property = slider.settings.mode === 'horizontal' ? 'left' : 'top';\r\n // calculate the new speed\r\n newSpeed = ratio * (totalDimens - (Math.abs(parseInt(value))));\r\n tickerLoop(newSpeed);\r\n });\r\n } else {\r\n // on el hover\r\n slider.viewport.hover(function() {\r\n el.stop();\r\n }, function() {\r\n // calculate the total width of children (used to calculate the speed ratio)\r\n totalDimens = 0;\r\n slider.children.each(function(index) {\r\n totalDimens += slider.settings.mode === 'horizontal' ? $(this).outerWidth(true) : $(this).outerHeight(true);\r\n });\r\n // calculate the speed ratio (used to determine the new speed to finish the paused animation)\r\n ratio = slider.settings.speed / totalDimens;\r\n // determine which property to use\r\n property = slider.settings.mode === 'horizontal' ? 'left' : 'top';\r\n // calculate the new speed\r\n newSpeed = ratio * (totalDimens - (Math.abs(parseInt(el.css(property)))));\r\n tickerLoop(newSpeed);\r\n });\r\n }\r\n }\r\n // start the ticker loop\r\n tickerLoop();\r\n };\r\n\r\n /**\r\n * Runs a continuous loop, news ticker-style\r\n */\r\n var tickerLoop = function(resumeSpeed) {\r\n var speed = resumeSpeed ? resumeSpeed : slider.settings.speed,\r\n position = {left: 0, top: 0},\r\n reset = {left: 0, top: 0},\r\n animateProperty, resetValue, params;\r\n\r\n // if \"next\" animate left position to last child, then reset left to 0\r\n if (slider.settings.autoDirection === 'next') {\r\n position = el.find('.bx-clone').first().position();\r\n // if \"prev\" animate left position to 0, then reset left to first non-clone child\r\n } else {\r\n reset = slider.children.first().position();\r\n }\r\n animateProperty = slider.settings.mode === 'horizontal' ? -position.left : -position.top;\r\n resetValue = slider.settings.mode === 'horizontal' ? -reset.left : -reset.top;\r\n params = {resetValue: resetValue};\r\n setPositionProperty(animateProperty, 'ticker', speed, params);\r\n };\r\n\r\n /**\r\n * Check if el is on screen\r\n */\r\n var isOnScreen = function(el) {\r\n var win = $(window),\r\n viewport = {\r\n top: win.scrollTop(),\r\n left: win.scrollLeft()\r\n },\r\n bounds = el.offset();\r\n\r\n viewport.right = viewport.left + win.width();\r\n viewport.bottom = viewport.top + win.height();\r\n bounds.right = bounds.left + el.outerWidth();\r\n bounds.bottom = bounds.top + el.outerHeight();\r\n\r\n return (!(viewport.right < bounds.left || viewport.left > bounds.right || viewport.bottom < bounds.top || viewport.top > bounds.bottom));\r\n };\r\n\r\n /**\r\n * Initializes keyboard events\r\n */\r\n var keyPress = function(e) {\r\n var activeElementTag = document.activeElement.tagName.toLowerCase(),\r\n tagFilters = 'input|textarea',\r\n p = new RegExp(activeElementTag,['i']),\r\n result = p.exec(tagFilters);\r\n\r\n if (result == null && isOnScreen(el)) {\r\n if (e.keyCode === 39) {\r\n clickNextBind(e);\r\n return false;\r\n } else if (e.keyCode === 37) {\r\n clickPrevBind(e);\r\n return false;\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Initializes touch events\r\n */\r\n var initTouch = function() {\r\n // initialize object to contain all touch values\r\n slider.touch = {\r\n start: {x: 0, y: 0},\r\n end: {x: 0, y: 0}\r\n };\r\n slider.viewport.bind('touchstart MSPointerDown pointerdown', onTouchStart);\r\n\r\n //for browsers that have implemented pointer events and fire a click after\r\n //every pointerup regardless of whether pointerup is on same screen location as pointerdown or not\r\n slider.viewport.on('click', '.bxslider a', function(e) {\r\n if (slider.viewport.hasClass('click-disabled')) {\r\n e.preventDefault();\r\n slider.viewport.removeClass('click-disabled');\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Event handler for \"touchstart\"\r\n *\r\n * @param e (event)\r\n * - DOM event object\r\n */\r\n var onTouchStart = function(e) {\r\n //disable slider controls while user is interacting with slides to avoid slider freeze that happens on touch devices when a slide swipe happens immediately after interacting with slider controls\r\n slider.controls.el.addClass('disabled');\r\n\r\n if (slider.working) {\r\n e.preventDefault();\r\n slider.controls.el.removeClass('disabled');\r\n } else {\r\n // record the original position when touch starts\r\n slider.touch.originalPos = el.position();\r\n var orig = e.originalEvent,\r\n touchPoints = (typeof orig.changedTouches !== 'undefined') ? orig.changedTouches : [orig];\r\n // record the starting touch x, y coordinates\r\n slider.touch.start.x = touchPoints[0].pageX;\r\n slider.touch.start.y = touchPoints[0].pageY;\r\n\r\n if (slider.viewport.get(0).setPointerCapture) {\r\n slider.pointerId = orig.pointerId;\r\n slider.viewport.get(0).setPointerCapture(slider.pointerId);\r\n }\r\n // bind a \"touchmove\" event to the viewport\r\n slider.viewport.bind('touchmove MSPointerMove pointermove', onTouchMove);\r\n // bind a \"touchend\" event to the viewport\r\n slider.viewport.bind('touchend MSPointerUp pointerup', onTouchEnd);\r\n slider.viewport.bind('MSPointerCancel pointercancel', onPointerCancel);\r\n }\r\n };\r\n\r\n /**\r\n * Cancel Pointer for Windows Phone\r\n *\r\n * @param e (event)\r\n * - DOM event object\r\n */\r\n var onPointerCancel = function(e) {\r\n /* onPointerCancel handler is needed to deal with situations when a touchend\r\n doesn't fire after a touchstart (this happens on windows phones only) */\r\n setPositionProperty(slider.touch.originalPos.left, 'reset', 0);\r\n\r\n //remove handlers\r\n slider.controls.el.removeClass('disabled');\r\n slider.viewport.unbind('MSPointerCancel pointercancel', onPointerCancel);\r\n slider.viewport.unbind('touchmove MSPointerMove pointermove', onTouchMove);\r\n slider.viewport.unbind('touchend MSPointerUp pointerup', onTouchEnd);\r\n if (slider.viewport.get(0).releasePointerCapture) {\r\n slider.viewport.get(0).releasePointerCapture(slider.pointerId);\r\n }\r\n };\r\n\r\n /**\r\n * Event handler for \"touchmove\"\r\n *\r\n * @param e (event)\r\n * - DOM event object\r\n */\r\n var onTouchMove = function(e) {\r\n var orig = e.originalEvent,\r\n touchPoints = (typeof orig.changedTouches !== 'undefined') ? orig.changedTouches : [orig],\r\n // if scrolling on y axis, do not prevent default\r\n xMovement = Math.abs(touchPoints[0].pageX - slider.touch.start.x),\r\n yMovement = Math.abs(touchPoints[0].pageY - slider.touch.start.y),\r\n value = 0,\r\n change = 0;\r\n\r\n // x axis swipe\r\n if ((xMovement * 3) > yMovement && slider.settings.preventDefaultSwipeX) {\r\n e.preventDefault();\r\n // y axis swipe\r\n } else if ((yMovement * 3) > xMovement && slider.settings.preventDefaultSwipeY) {\r\n e.preventDefault();\r\n }\r\n if (slider.settings.mode !== 'fade' && slider.settings.oneToOneTouch) {\r\n // if horizontal, drag along x axis\r\n if (slider.settings.mode === 'horizontal') {\r\n change = touchPoints[0].pageX - slider.touch.start.x;\r\n value = slider.touch.originalPos.left + change;\r\n // if vertical, drag along y axis\r\n } else {\r\n change = touchPoints[0].pageY - slider.touch.start.y;\r\n value = slider.touch.originalPos.top + change;\r\n }\r\n setPositionProperty(value, 'reset', 0);\r\n }\r\n };\r\n\r\n /**\r\n * Event handler for \"touchend\"\r\n *\r\n * @param e (event)\r\n * - DOM event object\r\n */\r\n var onTouchEnd = function(e) {\r\n slider.viewport.unbind('touchmove MSPointerMove pointermove', onTouchMove);\r\n //enable slider controls as soon as user stops interacing with slides\r\n slider.controls.el.removeClass('disabled');\r\n var orig = e.originalEvent,\r\n touchPoints = (typeof orig.changedTouches !== 'undefined') ? orig.changedTouches : [orig],\r\n value = 0,\r\n distance = 0;\r\n // record end x, y positions\r\n slider.touch.end.x = touchPoints[0].pageX;\r\n slider.touch.end.y = touchPoints[0].pageY;\r\n // if fade mode, check if absolute x distance clears the threshold\r\n if (slider.settings.mode === 'fade') {\r\n distance = Math.abs(slider.touch.start.x - slider.touch.end.x);\r\n if (distance >= slider.settings.swipeThreshold) {\r\n if (slider.touch.start.x > slider.touch.end.x) {\r\n el.goToNextSlide();\r\n } else {\r\n el.goToPrevSlide();\r\n }\r\n el.stopAuto();\r\n }\r\n // not fade mode\r\n } else {\r\n // calculate distance and el's animate property\r\n if (slider.settings.mode === 'horizontal') {\r\n distance = slider.touch.end.x - slider.touch.start.x;\r\n value = slider.touch.originalPos.left;\r\n } else {\r\n distance = slider.touch.end.y - slider.touch.start.y;\r\n value = slider.touch.originalPos.top;\r\n }\r\n // if not infinite loop and first / last slide, do not attempt a slide transition\r\n if (!slider.settings.infiniteLoop && ((slider.active.index === 0 && distance > 0) || (slider.active.last && distance < 0))) {\r\n setPositionProperty(value, 'reset', 200);\r\n } else {\r\n // check if distance clears threshold\r\n if (Math.abs(distance) >= slider.settings.swipeThreshold) {\r\n if (distance < 0) {\r\n el.goToNextSlide();\r\n } else {\r\n el.goToPrevSlide();\r\n }\r\n el.stopAuto();\r\n } else {\r\n // el.animate(property, 200);\r\n setPositionProperty(value, 'reset', 200);\r\n }\r\n }\r\n }\r\n slider.viewport.unbind('touchend MSPointerUp pointerup', onTouchEnd);\r\n if (slider.viewport.get(0).releasePointerCapture) {\r\n slider.viewport.get(0).releasePointerCapture(slider.pointerId);\r\n }\r\n };\r\n\r\n /**\r\n * Window resize event callback\r\n */\r\n var resizeWindow = function(e) {\r\n // don't do anything if slider isn't initialized.\r\n if (!slider.initialized) { return; }\r\n // Delay if slider working.\r\n if (slider.working) {\r\n window.setTimeout(resizeWindow, 10);\r\n } else {\r\n // get the new window dimens (again, thank you IE)\r\n var windowWidthNew = $(window).width(),\r\n windowHeightNew = $(window).height();\r\n // make sure that it is a true window resize\r\n // *we must check this because our dinosaur friend IE fires a window resize event when certain DOM elements\r\n // are resized. Can you just die already?*\r\n if (windowWidth !== windowWidthNew || windowHeight !== windowHeightNew) {\r\n // set the new window dimens\r\n windowWidth = windowWidthNew;\r\n windowHeight = windowHeightNew;\r\n // update all dynamic elements\r\n el.redrawSlider();\r\n // Call user resize handler\r\n slider.settings.onSliderResize.call(el, slider.active.index);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Adds an aria-hidden=true attribute to each element\r\n *\r\n * @param startVisibleIndex (int)\r\n * - the first visible element's index\r\n */\r\n var applyAriaHiddenAttributes = function(startVisibleIndex) {\r\n var numberOfSlidesShowing = getNumberSlidesShowing();\r\n // only apply attributes if the setting is enabled and not in ticker mode\r\n if (slider.settings.ariaHidden && !slider.settings.ticker) {\r\n // add aria-hidden=true to all elements\r\n slider.children.attr('aria-hidden', 'true');\r\n // get the visible elements and change to aria-hidden=false\r\n slider.children.slice(startVisibleIndex, startVisibleIndex + numberOfSlidesShowing).attr('aria-hidden', 'false');\r\n }\r\n };\r\n\r\n /**\r\n * ===================================================================================\r\n * = PUBLIC FUNCTIONS\r\n * ===================================================================================\r\n */\r\n\r\n /**\r\n * Performs slide transition to the specified slide\r\n *\r\n * @param slideIndex (int)\r\n * - the destination slide's index (zero-based)\r\n *\r\n * @param direction (string)\r\n * - INTERNAL USE ONLY - the direction of travel (\"prev\" / \"next\")\r\n */\r\n el.goToSlide = function(slideIndex, direction) {\r\n // onSlideBefore, onSlideNext, onSlidePrev callbacks\r\n // Allow transition canceling based on returned value\r\n var performTransition = true,\r\n moveBy = 0,\r\n position = {left: 0, top: 0},\r\n lastChild = null,\r\n lastShowingIndex, eq, value, requestEl;\r\n\r\n // if plugin is currently in motion, ignore request\r\n if (slider.working || slider.active.index === slideIndex) { return; }\r\n // declare that plugin is in motion\r\n slider.working = true;\r\n // store the old index\r\n slider.oldIndex = slider.active.index;\r\n // if slideIndex is less than zero, set active index to last child (this happens during infinite loop)\r\n if (slideIndex < 0) {\r\n slider.active.index = getPagerQty() - 1;\r\n // if slideIndex is greater than children length, set active index to 0 (this happens during infinite loop)\r\n } else if (slideIndex >= getPagerQty()) {\r\n slider.active.index = 0;\r\n // set active index to requested slide\r\n } else {\r\n slider.active.index = slideIndex;\r\n }\r\n\r\n performTransition = slider.settings.onSlideBefore.call(el, slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index);\r\n\r\n if (typeof (performTransition) !== 'undefined' && !performTransition) {\r\n slider.active.index = slider.oldIndex; // restore old index\r\n slider.working = false; // is not in motion\r\n return;\r\n }\r\n if (direction === 'next') {\r\n // Prevent canceling in future functions or lack there-of from negating previous commands to cancel\r\n if (!slider.settings.onSlideNext.call(el, slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index)) {\r\n performTransition = false;\r\n }\r\n } else if (direction === 'prev') {\r\n // Prevent canceling in future functions or lack there-of from negating previous commands to cancel\r\n if (!slider.settings.onSlidePrev.call(el, slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index)) {\r\n performTransition = false;\r\n }\r\n }\r\n\r\n // If transitions canceled, reset and return\r\n if (typeof (performTransition) !== 'undefined' && !performTransition) {\r\n slider.active.index = slider.oldIndex; // restore old index\r\n slider.working = false; // is not in motion\r\n return;\r\n }\r\n\r\n // check if last slide\r\n slider.active.last = slider.active.index >= getPagerQty() - 1;\r\n // update the pager with active class\r\n if (slider.settings.pager || slider.settings.pagerCustom) { updatePagerActive(slider.active.index); }\r\n // // check for direction control update\r\n if (slider.settings.controls) { updateDirectionControls(); }\r\n // if slider is set to mode: \"fade\"\r\n if (slider.settings.mode === 'fade') {\r\n // if adaptiveHeight is true and next height is different from current height, animate to the new height\r\n if (slider.settings.adaptiveHeight && slider.viewport.height() !== getViewportHeight()) {\r\n slider.viewport.animate({height: getViewportHeight()}, slider.settings.adaptiveHeightSpeed);\r\n }\r\n // fade out the visible child and reset its z-index value\r\n slider.children.filter(':visible').fadeOut(slider.settings.speed).css({zIndex: 0});\r\n // fade in the newly requested slide\r\n slider.children.eq(slider.active.index).css('zIndex', slider.settings.slideZIndex + 1).fadeIn(slider.settings.speed, function() {\r\n $(this).css('zIndex', slider.settings.slideZIndex);\r\n updateAfterSlideTransition();\r\n });\r\n // slider mode is not \"fade\"\r\n } else {\r\n // if adaptiveHeight is true and next height is different from current height, animate to the new height\r\n if (slider.settings.adaptiveHeight && slider.viewport.height() !== getViewportHeight()) {\r\n slider.viewport.animate({height: getViewportHeight()}, slider.settings.adaptiveHeightSpeed);\r\n }\r\n // if carousel and not infinite loop\r\n if (!slider.settings.infiniteLoop && slider.carousel && slider.active.last) {\r\n if (slider.settings.mode === 'horizontal') {\r\n // get the last child position\r\n lastChild = slider.children.eq(slider.children.length - 1);\r\n position = lastChild.position();\r\n // calculate the position of the last slide\r\n moveBy = slider.viewport.width() - lastChild.outerWidth();\r\n } else {\r\n // get last showing index position\r\n lastShowingIndex = slider.children.length - slider.settings.minSlides;\r\n position = slider.children.eq(lastShowingIndex).position();\r\n }\r\n // horizontal carousel, going previous while on first slide (infiniteLoop mode)\r\n } else if (slider.carousel && slider.active.last && direction === 'prev') {\r\n // get the last child position\r\n eq = slider.settings.moveSlides === 1 ? slider.settings.maxSlides - getMoveBy() : ((getPagerQty() - 1) * getMoveBy()) - (slider.children.length - slider.settings.maxSlides);\r\n lastChild = el.children('.bx-clone').eq(eq);\r\n position = lastChild.position();\r\n // if infinite loop and \"Next\" is clicked on the last slide\r\n } else if (direction === 'next' && slider.active.index === 0) {\r\n // get the last clone position\r\n position = el.find('> .bx-clone').eq(slider.settings.maxSlides).position();\r\n slider.active.last = false;\r\n // normal non-zero requests\r\n } else if (slideIndex >= 0) {\r\n requestEl = slideIndex * getMoveBy();\r\n position = slider.children.eq(requestEl).position();\r\n }\r\n\r\n /* If the position doesn't exist\r\n * (e.g. if you destroy the slider on a next click),\r\n * it doesn't throw an error.\r\n */\r\n if (typeof (position) !== undefined) {\r\n value = slider.settings.mode === 'horizontal' ? -(position.left - moveBy) : -position.top;\r\n // plugin values to be animated\r\n setPositionProperty(value, 'slide', slider.settings.speed);\r\n }\r\n }\r\n if (slider.settings.ariaHidden) { applyAriaHiddenAttributes(slider.active.index * getMoveBy()); }\r\n };\r\n\r\n /**\r\n * Transitions to the next slide in the show\r\n */\r\n el.goToNextSlide = function() {\r\n // if infiniteLoop is false and last page is showing, disregard call\r\n if (!slider.settings.infiniteLoop && slider.active.last) { return; }\r\n var pagerIndex = parseInt(slider.active.index) + 1;\r\n el.goToSlide(pagerIndex, 'next');\r\n };\r\n\r\n /**\r\n * Transitions to the prev slide in the show\r\n */\r\n el.goToPrevSlide = function() {\r\n // if infiniteLoop is false and last page is showing, disregard call\r\n if (!slider.settings.infiniteLoop && slider.active.index === 0) { return; }\r\n var pagerIndex = parseInt(slider.active.index) - 1;\r\n el.goToSlide(pagerIndex, 'prev');\r\n };\r\n\r\n /**\r\n * Starts the auto show\r\n *\r\n * @param preventControlUpdate (boolean)\r\n * - if true, auto controls state will not be updated\r\n */\r\n el.startAuto = function(preventControlUpdate) {\r\n // if an interval already exists, disregard call\r\n if (slider.interval) { return; }\r\n // create an interval\r\n slider.interval = setInterval(function() {\r\n if (slider.settings.autoDirection === 'next') {\r\n el.goToNextSlide();\r\n } else {\r\n el.goToPrevSlide();\r\n }\r\n }, slider.settings.pause);\r\n // if auto controls are displayed and preventControlUpdate is not true\r\n if (slider.settings.autoControls && preventControlUpdate !== true) { updateAutoControls('stop'); }\r\n };\r\n\r\n /**\r\n * Stops the auto show\r\n *\r\n * @param preventControlUpdate (boolean)\r\n * - if true, auto controls state will not be updated\r\n */\r\n el.stopAuto = function(preventControlUpdate) {\r\n // if no interval exists, disregard call\r\n if (!slider.interval) { return; }\r\n // clear the interval\r\n clearInterval(slider.interval);\r\n slider.interval = null;\r\n // if auto controls are displayed and preventControlUpdate is not true\r\n if (slider.settings.autoControls && preventControlUpdate !== true) { updateAutoControls('start'); }\r\n };\r\n\r\n /**\r\n * Returns current slide index (zero-based)\r\n */\r\n el.getCurrentSlide = function() {\r\n return slider.active.index;\r\n };\r\n\r\n /**\r\n * Returns current slide element\r\n */\r\n el.getCurrentSlideElement = function() {\r\n return slider.children.eq(slider.active.index);\r\n };\r\n\r\n /**\r\n * Returns a slide element\r\n * @param index (int)\r\n * - The index (zero-based) of the element you want returned.\r\n */\r\n el.getSlideElement = function(index) {\r\n return slider.children.eq(index);\r\n };\r\n\r\n /**\r\n * Returns number of slides in show\r\n */\r\n el.getSlideCount = function() {\r\n return slider.children.length;\r\n };\r\n\r\n /**\r\n * Return slider.working variable\r\n */\r\n el.isWorking = function() {\r\n return slider.working;\r\n };\r\n\r\n /**\r\n * Update all dynamic slider elements\r\n */\r\n el.redrawSlider = function() {\r\n // resize all children in ratio to new screen size\r\n slider.children.add(el.find('.bx-clone')).outerWidth(getSlideWidth());\r\n // adjust the height\r\n slider.viewport.css('height', getViewportHeight());\r\n // update the slide position\r\n if (!slider.settings.ticker) { setSlidePosition(); }\r\n // if active.last was true before the screen resize, we want\r\n // to keep it last no matter what screen size we end on\r\n if (slider.active.last) { slider.active.index = getPagerQty() - 1; }\r\n // if the active index (page) no longer exists due to the resize, simply set the index as last\r\n if (slider.active.index >= getPagerQty()) { slider.active.last = true; }\r\n // if a pager is being displayed and a custom pager is not being used, update it\r\n if (slider.settings.pager && !slider.settings.pagerCustom) {\r\n populatePager();\r\n updatePagerActive(slider.active.index);\r\n }\r\n if (slider.settings.ariaHidden) { applyAriaHiddenAttributes(slider.active.index * getMoveBy()); }\r\n };\r\n\r\n /**\r\n * Destroy the current instance of the slider (revert everything back to original state)\r\n */\r\n el.destroySlider = function() {\r\n // don't do anything if slider has already been destroyed\r\n if (!slider.initialized) { return; }\r\n slider.initialized = false;\r\n $('.bx-clone', this).remove();\r\n slider.children.each(function() {\r\n if ($(this).data('origStyle') !== undefined) {\r\n $(this).attr('style', $(this).data('origStyle'));\r\n } else {\r\n $(this).removeAttr('style');\r\n }\r\n });\r\n if ($(this).data('origStyle') !== undefined) {\r\n this.attr('style', $(this).data('origStyle'));\r\n } else {\r\n $(this).removeAttr('style');\r\n }\r\n $(this).unwrap().unwrap();\r\n if (slider.controls.el) { slider.controls.el.remove(); }\r\n if (slider.controls.next) { slider.controls.next.remove(); }\r\n if (slider.controls.prev) { slider.controls.prev.remove(); }\r\n if (slider.pagerEl && slider.settings.controls && !slider.settings.pagerCustom) { slider.pagerEl.remove(); }\r\n $('.bx-caption', this).remove();\r\n if (slider.controls.autoEl) { slider.controls.autoEl.remove(); }\r\n clearInterval(slider.interval);\r\n if (slider.settings.responsive) { $(window).unbind('resize', resizeWindow); }\r\n if (slider.settings.keyboardEnabled) { $(document).unbind('keydown', keyPress); }\r\n //remove self reference in data\r\n $(this).removeData('bxSlider');\r\n };\r\n\r\n /**\r\n * Reload the slider (revert all DOM changes, and re-initialize)\r\n */\r\n el.reloadSlider = function(settings) {\r\n if (settings !== undefined) { options = settings; }\r\n el.destroySlider();\r\n init();\r\n //store reference to self in order to access public functions later\r\n $(el).data('bxSlider', this);\r\n };\r\n\r\n init();\r\n\r\n $(el).data('bxSlider', this);\r\n\r\n // returns the current jQuery object\r\n return this;\r\n };\r\n\r\n})(jQuery);\r\n","/**\n * History.js jQuery Adapter\n * @author Benjamin Arthur Lupton \n * @copyright 2010-2011 Benjamin Arthur Lupton \n * @license New BSD License \n */\n\n// Closure\n(function(window,undefined){\n\t\"use strict\";\n\n\t// Localise Globals\n\tvar\n\t\tHistory = window.History = window.History||{},\n\t\tjQuery = window.jQuery;\n\n\t// Check Existence\n\tif ( typeof History.Adapter !== 'undefined' ) {\n\t\tthrow new Error('History.js Adapter has already been loaded...');\n\t}\n\n\t// Add the Adapter\n\tHistory.Adapter = {\n\t\t/**\n\t\t * History.Adapter.bind(el,event,callback)\n\t\t * @param {Element|string} el\n\t\t * @param {string} event - custom and standard events\n\t\t * @param {function} callback\n\t\t * @return {void}\n\t\t */\n\t\tbind: function(el,event,callback){\n\t\t\tjQuery(el).bind(event,callback);\n\t\t},\n\n\t\t/**\n\t\t * History.Adapter.trigger(el,event)\n\t\t * @param {Element|string} el\n\t\t * @param {string} event - custom and standard events\n\t\t * @param {Object=} extra - a object of extra event data (optional)\n\t\t * @return {void}\n\t\t */\n\t\ttrigger: function(el,event,extra){\n\t\t\tjQuery(el).trigger(event,extra);\n\t\t},\n\n\t\t/**\n\t\t * History.Adapter.extractEventData(key,event,extra)\n\t\t * @param {string} key - key for the event data to extract\n\t\t * @param {string} event - custom and standard events\n\t\t * @param {Object=} extra - a object of extra event data (optional)\n\t\t * @return {mixed}\n\t\t */\n\t\textractEventData: function(key,event,extra){\n\t\t\t// jQuery Native then jQuery Custom\n\t\t\tvar result = (event && event.originalEvent && event.originalEvent[key]) || (extra && extra[key]) || undefined;\n\n\t\t\t// Return\n\t\t\treturn result;\n\t\t},\n\n\t\t/**\n\t\t * History.Adapter.onDomLoad(callback)\n\t\t * @param {function} callback\n\t\t * @return {void}\n\t\t */\n\t\tonDomLoad: function(callback) {\n\t\t\tjQuery(callback);\n\t\t}\n\t};\n\n\t// Try and Initialise History\n\tif ( typeof History.init !== 'undefined' ) {\n\t\tHistory.init();\n\t}\n\n})(window);\n\n/**\n * History.js Core\n * @author Benjamin Arthur Lupton \n * @copyright 2010-2011 Benjamin Arthur Lupton \n * @license New BSD License \n */\n\n(function(window,undefined){\n\t\"use strict\";\n\n\t// ========================================================================\n\t// Initialise\n\n\t// Localise Globals\n\tvar\n\t\tconsole = window.console||undefined, // Prevent a JSLint complain\n\t\tdocument = window.document, // Make sure we are using the correct document\n\t\tnavigator = window.navigator, // Make sure we are using the correct navigator\n\t\tsessionStorage = false, // sessionStorage\n\t\tsetTimeout = window.setTimeout,\n\t\tclearTimeout = window.clearTimeout,\n\t\tsetInterval = window.setInterval,\n\t\tclearInterval = window.clearInterval,\n\t\tJSON = window.JSON,\n\t\talert = window.alert,\n\t\tHistory = window.History = window.History||{}, // Public History Object\n\t\thistory = window.history; // Old History Object\n\n\ttry {\n\t\tsessionStorage = window.sessionStorage; // This will throw an exception in some browsers when cookies/localStorage are explicitly disabled (i.e. Chrome)\n\t\tsessionStorage.setItem('TEST', '1');\n\t\tsessionStorage.removeItem('TEST');\n\t} catch(e) {\n\t\tsessionStorage = false;\n\t}\n\n\t// MooTools Compatibility\n\tJSON.stringify = JSON.stringify||JSON.encode;\n\tJSON.parse = JSON.parse||JSON.decode;\n\n\t// Check Existence\n\tif ( typeof History.init !== 'undefined' ) {\n\t\tthrow new Error('History.js Core has already been loaded...');\n\t}\n\n\t// Initialise History\n\tHistory.init = function(options){\n\t\t// Check Load Status of Adapter\n\t\tif ( typeof History.Adapter === 'undefined' ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check Load Status of Core\n\t\tif ( typeof History.initCore !== 'undefined' ) {\n\t\t\tHistory.initCore();\n\t\t}\n\n\t\t// Check Load Status of HTML4 Support\n\t\tif ( typeof History.initHtml4 !== 'undefined' ) {\n\t\t\tHistory.initHtml4();\n\t\t}\n\n\t\t// Return true\n\t\treturn true;\n\t};\n\n\n\t// ========================================================================\n\t// Initialise Core\n\n\t// Initialise Core\n\tHistory.initCore = function(options){\n\t\t// Initialise\n\t\tif ( typeof History.initCore.initialized !== 'undefined' ) {\n\t\t\t// Already Loaded\n\t\t\treturn false;\n\t\t}\n\t\telse {\n\t\t\tHistory.initCore.initialized = true;\n\t\t}\n\n\n\t\t// ====================================================================\n\t\t// Options\n\n\t\t/**\n\t\t * History.options\n\t\t * Configurable options\n\t\t */\n\t\tHistory.options = History.options||{};\n\n\t\t/**\n\t\t * History.options.hashChangeInterval\n\t\t * How long should the interval be before hashchange checks\n\t\t */\n\t\tHistory.options.hashChangeInterval = History.options.hashChangeInterval || 100;\n\n\t\t/**\n\t\t * History.options.safariPollInterval\n\t\t * How long should the interval be before safari poll checks\n\t\t */\n\t\tHistory.options.safariPollInterval = History.options.safariPollInterval || 500;\n\n\t\t/**\n\t\t * History.options.doubleCheckInterval\n\t\t * How long should the interval be before we perform a double check\n\t\t */\n\t\tHistory.options.doubleCheckInterval = History.options.doubleCheckInterval || 500;\n\n\t\t/**\n\t\t * History.options.disableSuid\n\t\t * Force History not to append suid\n\t\t */\n\t\tHistory.options.disableSuid = History.options.disableSuid || false;\n\n\t\t/**\n\t\t * History.options.storeInterval\n\t\t * How long should we wait between store calls\n\t\t */\n\t\tHistory.options.storeInterval = History.options.storeInterval || 1000;\n\n\t\t/**\n\t\t * History.options.busyDelay\n\t\t * How long should we wait between busy events\n\t\t */\n\t\tHistory.options.busyDelay = History.options.busyDelay || 250;\n\n\t\t/**\n\t\t * History.options.debug\n\t\t * If true will enable debug messages to be logged\n\t\t */\n\t\tHistory.options.debug = History.options.debug || false;\n\n\t\t/**\n\t\t * History.options.initialTitle\n\t\t * What is the title of the initial state\n\t\t */\n\t\tHistory.options.initialTitle = History.options.initialTitle || document.title;\n\n\t\t/**\n\t\t * History.options.html4Mode\n\t\t * If true, will force HTMl4 mode (hashtags)\n\t\t */\n\t\tHistory.options.html4Mode = History.options.html4Mode || false;\n\n\t\t/**\n\t\t * History.options.delayInit\n\t\t * Want to override default options and call init manually.\n\t\t */\n\t\tHistory.options.delayInit = History.options.delayInit || false;\n\n\n\t\t// ====================================================================\n\t\t// Interval record\n\n\t\t/**\n\t\t * History.intervalList\n\t\t * List of intervals set, to be cleared when document is unloaded.\n\t\t */\n\t\tHistory.intervalList = [];\n\n\t\t/**\n\t\t * History.clearAllIntervals\n\t\t * Clears all setInterval instances.\n\t\t */\n\t\tHistory.clearAllIntervals = function(){\n\t\t\tvar i, il = History.intervalList;\n\t\t\tif (typeof il !== \"undefined\" && il !== null) {\n\t\t\t\tfor (i = 0; i < il.length; i++) {\n\t\t\t\t\tclearInterval(il[i]);\n\t\t\t\t}\n\t\t\t\tHistory.intervalList = null;\n\t\t\t}\n\t\t};\n\n\n\t\t// ====================================================================\n\t\t// Debug\n\n\t\t/**\n\t\t * History.debug(message,...)\n\t\t * Logs the passed arguments if debug enabled\n\t\t */\n\t\tHistory.debug = function(){\n\t\t\tif ( (History.options.debug||false) ) {\n\t\t\t\tHistory.log.apply(History,arguments);\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * History.log(message,...)\n\t\t * Logs the passed arguments\n\t\t */\n\t\tHistory.log = function(){\n\t\t\t// Prepare\n\t\t\tvar\n\t\t\t\tconsoleExists = !(typeof console === 'undefined' || typeof console.log === 'undefined' || typeof console.log.apply === 'undefined'),\n\t\t\t\ttextarea = document.getElementById('log'),\n\t\t\t\tmessage,\n\t\t\t\ti,n,\n\t\t\t\targs,arg\n\t\t\t\t;\n\n\t\t\t// Write to Console\n\t\t\tif ( consoleExists ) {\n\t\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t\t\tmessage = args.shift();\n\t\t\t\tif ( typeof console.debug !== 'undefined' ) {\n\t\t\t\t\tconsole.debug.apply(console,[message,args]);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tconsole.log.apply(console,[message,args]);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tmessage = (\"\\n\"+arguments[0]+\"\\n\");\n\t\t\t}\n\n\t\t\t// Write to log\n\t\t\tfor ( i=1,n=arguments.length; i\n\t\t * @author James Padolsey \n\t\t */\n\t\tHistory.getInternetExplorerMajorVersion = function(){\n\t\t\tvar result = History.getInternetExplorerMajorVersion.cached =\n\t\t\t\t\t(typeof History.getInternetExplorerMajorVersion.cached !== 'undefined')\n\t\t\t\t?\tHistory.getInternetExplorerMajorVersion.cached\n\t\t\t\t:\t(function(){\n\t\t\t\t\t\tvar v = 3,\n\t\t\t\t\t\t\t\tdiv = document.createElement('div'),\n\t\t\t\t\t\t\t\tall = div.getElementsByTagName('i');\n\t\t\t\t\t\twhile ( (div.innerHTML = '') && all[0] ) {}\n\t\t\t\t\t\treturn (v > 4) ? v : false;\n\t\t\t\t\t})()\n\t\t\t\t;\n\t\t\treturn result;\n\t\t};\n\n\t\t/**\n\t\t * History.isInternetExplorer()\n\t\t * Are we using Internet Explorer?\n\t\t * @return {boolean}\n\t\t * @license Public Domain\n\t\t * @author Benjamin Arthur Lupton \n\t\t */\n\t\tHistory.isInternetExplorer = function(){\n\t\t\tvar result =\n\t\t\t\tHistory.isInternetExplorer.cached =\n\t\t\t\t(typeof History.isInternetExplorer.cached !== 'undefined')\n\t\t\t\t\t?\tHistory.isInternetExplorer.cached\n\t\t\t\t\t:\tBoolean(History.getInternetExplorerMajorVersion())\n\t\t\t\t;\n\t\t\treturn result;\n\t\t};\n\n\t\t/**\n\t\t * History.emulated\n\t\t * Which features require emulating?\n\t\t */\n\n\t\tif (History.options.html4Mode) {\n\t\t\tHistory.emulated = {\n\t\t\t\tpushState : true,\n\t\t\t\thashChange: true\n\t\t\t};\n\t\t}\n\n\t\telse {\n\n\t\t\tHistory.emulated = {\n\t\t\t\tpushState: !Boolean(\n\t\t\t\t\twindow.history && window.history.pushState && window.history.replaceState\n\t\t\t\t\t&& !(\n\t\t\t\t\t\t(/ Mobile\\/([1-7][a-z]|(8([abcde]|f(1[0-8]))))/i).test(navigator.userAgent) /* disable for versions of iOS before version 4.3 (8F190) */\n\t\t\t\t\t\t|| (/AppleWebKit\\/5([0-2]|3[0-2])/i).test(navigator.userAgent) /* disable for the mercury iOS browser, or at least older versions of the webkit engine */\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t\thashChange: Boolean(\n\t\t\t\t\t!(('onhashchange' in window) || ('onhashchange' in document))\n\t\t\t\t\t||\n\t\t\t\t\t(History.isInternetExplorer() && History.getInternetExplorerMajorVersion() < 8)\n\t\t\t\t)\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * History.enabled\n\t\t * Is History enabled?\n\t\t */\n\t\tHistory.enabled = !History.emulated.pushState;\n\n\t\t/**\n\t\t * History.bugs\n\t\t * Which bugs are present\n\t\t */\n\t\tHistory.bugs = {\n\t\t\t/**\n\t\t\t * Safari 5 and Safari iOS 4 fail to return to the correct state once a hash is replaced by a `replaceState` call\n\t\t\t * https://bugs.webkit.org/show_bug.cgi?id=56249\n\t\t\t */\n\t\t\tsetHash: Boolean(!History.emulated.pushState && navigator.vendor === 'Apple Computer, Inc.' && /AppleWebKit\\/5([0-2]|3[0-3])/.test(navigator.userAgent)),\n\n\t\t\t/**\n\t\t\t * Safari 5 and Safari iOS 4 sometimes fail to apply the state change under busy conditions\n\t\t\t * https://bugs.webkit.org/show_bug.cgi?id=42940\n\t\t\t */\n\t\t\tsafariPoll: Boolean(!History.emulated.pushState && navigator.vendor === 'Apple Computer, Inc.' && /AppleWebKit\\/5([0-2]|3[0-3])/.test(navigator.userAgent)),\n\n\t\t\t/**\n\t\t\t * MSIE 6 and 7 sometimes do not apply a hash even it was told to (requiring a second call to the apply function)\n\t\t\t */\n\t\t\tieDoubleCheck: Boolean(History.isInternetExplorer() && History.getInternetExplorerMajorVersion() < 8),\n\n\t\t\t/**\n\t\t\t * MSIE 6 requires the entire hash to be encoded for the hashes to trigger the onHashChange event\n\t\t\t */\n\t\t\thashEscape: Boolean(History.isInternetExplorer() && History.getInternetExplorerMajorVersion() < 7)\n\t\t};\n\n\t\t/**\n\t\t * History.isEmptyObject(obj)\n\t\t * Checks to see if the Object is Empty\n\t\t * @param {Object} obj\n\t\t * @return {boolean}\n\t\t */\n\t\tHistory.isEmptyObject = function(obj) {\n\t\t\tfor ( var name in obj ) {\n\t\t\t\tif ( obj.hasOwnProperty(name) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t};\n\n\t\t/**\n\t\t * History.cloneObject(obj)\n\t\t * Clones a object and eliminate all references to the original contexts\n\t\t * @param {Object} obj\n\t\t * @return {Object}\n\t\t */\n\t\tHistory.cloneObject = function(obj) {\n\t\t\tvar hash,newObj;\n\t\t\tif ( obj ) {\n\t\t\t\thash = JSON.stringify(obj);\n\t\t\t\tnewObj = JSON.parse(hash);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tnewObj = {};\n\t\t\t}\n\t\t\treturn newObj;\n\t\t};\n\n\n\t\t// ====================================================================\n\t\t// URL Helpers\n\n\t\t/**\n\t\t * History.getRootUrl()\n\t\t * Turns \"http://mysite.com/dir/page.html?asd\" into \"http://mysite.com\"\n\t\t * @return {String} rootUrl\n\t\t */\n\t\tHistory.getRootUrl = function(){\n\t\t\t// Create\n\t\t\tvar rootUrl = document.location.protocol+'//'+(document.location.hostname||document.location.host);\n\t\t\tif ( document.location.port||false ) {\n\t\t\t\trootUrl += ':'+document.location.port;\n\t\t\t}\n\t\t\trootUrl += '/';\n\n\t\t\t// Return\n\t\t\treturn rootUrl;\n\t\t};\n\n\t\t/**\n\t\t * History.getBaseHref()\n\t\t * Fetches the `href` attribute of the `` element if it exists\n\t\t * @return {String} baseHref\n\t\t */\n\t\tHistory.getBaseHref = function(){\n\t\t\t// Create\n\t\t\tvar\n\t\t\t\tbaseElements = document.getElementsByTagName('base'),\n\t\t\t\tbaseElement = null,\n\t\t\t\tbaseHref = '';\n\n\t\t\t// Test for Base Element\n\t\t\tif ( baseElements.length === 1 ) {\n\t\t\t\t// Prepare for Base Element\n\t\t\t\tbaseElement = baseElements[0];\n\t\t\t\tbaseHref = baseElement.href.replace(/[^\\/]+$/,'');\n\t\t\t}\n\n\t\t\t// Adjust trailing slash\n\t\t\tbaseHref = baseHref.replace(/\\/+$/,'');\n\t\t\tif ( baseHref ) baseHref += '/';\n\n\t\t\t// Return\n\t\t\treturn baseHref;\n\t\t};\n\n\t\t/**\n\t\t * History.getBaseUrl()\n\t\t * Fetches the baseHref or basePageUrl or rootUrl (whichever one exists first)\n\t\t * @return {String} baseUrl\n\t\t */\n\t\tHistory.getBaseUrl = function(){\n\t\t\t// Create\n\t\t\tvar baseUrl = History.getBaseHref()||History.getBasePageUrl()||History.getRootUrl();\n\n\t\t\t// Return\n\t\t\treturn baseUrl;\n\t\t};\n\n\t\t/**\n\t\t * History.getPageUrl()\n\t\t * Fetches the URL of the current page\n\t\t * @return {String} pageUrl\n\t\t */\n\t\tHistory.getPageUrl = function(){\n\t\t\t// Fetch\n\t\t\tvar\n\t\t\t\tState = History.getState(false,false),\n\t\t\t\tstateUrl = (State||{}).url||History.getLocationHref(),\n\t\t\t\tpageUrl;\n\n\t\t\t// Create\n\t\t\tpageUrl = stateUrl.replace(/\\/+$/,'').replace(/[^\\/]+$/,function(part,index,string){\n\t\t\t\treturn (/\\./).test(part) ? part : part+'/';\n\t\t\t});\n\n\t\t\t// Return\n\t\t\treturn pageUrl;\n\t\t};\n\n\t\t/**\n\t\t * History.getBasePageUrl()\n\t\t * Fetches the Url of the directory of the current page\n\t\t * @return {String} basePageUrl\n\t\t */\n\t\tHistory.getBasePageUrl = function(){\n\t\t\t// Create\n\t\t\tvar basePageUrl = (History.getLocationHref()).replace(/[#\\?].*/,'').replace(/[^\\/]+$/,function(part,index,string){\n\t\t\t\treturn (/[^\\/]$/).test(part) ? '' : part;\n\t\t\t}).replace(/\\/+$/,'')+'/';\n\n\t\t\t// Return\n\t\t\treturn basePageUrl;\n\t\t};\n\n\t\t/**\n\t\t * History.getFullUrl(url)\n\t\t * Ensures that we have an absolute URL and not a relative URL\n\t\t * @param {string} url\n\t\t * @param {Boolean} allowBaseHref\n\t\t * @return {string} fullUrl\n\t\t */\n\t\tHistory.getFullUrl = function(url,allowBaseHref){\n\t\t\t// Prepare\n\t\t\tvar fullUrl = url, firstChar = url.substring(0,1);\n\t\t\tallowBaseHref = (typeof allowBaseHref === 'undefined') ? true : allowBaseHref;\n\n\t\t\t// Check\n\t\t\tif ( /[a-z]+\\:\\/\\//.test(url) ) {\n\t\t\t\t// Full URL\n\t\t\t}\n\t\t\telse if ( firstChar === '/' ) {\n\t\t\t\t// Root URL\n\t\t\t\tfullUrl = History.getRootUrl()+url.replace(/^\\/+/,'');\n\t\t\t}\n\t\t\telse if ( firstChar === '#' ) {\n\t\t\t\t// Anchor URL\n\t\t\t\tfullUrl = History.getPageUrl().replace(/#.*/,'')+url;\n\t\t\t}\n\t\t\telse if ( firstChar === '?' ) {\n\t\t\t\t// Query URL\n\t\t\t\tfullUrl = History.getPageUrl().replace(/[\\?#].*/,'')+url;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Relative URL\n\t\t\t\tif ( allowBaseHref ) {\n\t\t\t\t\tfullUrl = History.getBaseUrl()+url.replace(/^(\\.\\/)+/,'');\n\t\t\t\t} else {\n\t\t\t\t\tfullUrl = History.getBasePageUrl()+url.replace(/^(\\.\\/)+/,'');\n\t\t\t\t}\n\t\t\t\t// We have an if condition above as we do not want hashes\n\t\t\t\t// which are relative to the baseHref in our URLs\n\t\t\t\t// as if the baseHref changes, then all our bookmarks\n\t\t\t\t// would now point to different locations\n\t\t\t\t// whereas the basePageUrl will always stay the same\n\t\t\t}\n\n\t\t\t// Return\n\t\t\treturn fullUrl.replace(/\\#$/,'');\n\t\t};\n\n\t\t/**\n\t\t * History.getShortUrl(url)\n\t\t * Ensures that we have a relative URL and not a absolute URL\n\t\t * @param {string} url\n\t\t * @return {string} url\n\t\t */\n\t\tHistory.getShortUrl = function(url){\n\t\t\t// Prepare\n\t\t\tvar shortUrl = url, baseUrl = History.getBaseUrl(), rootUrl = History.getRootUrl();\n\n\t\t\t// Trim baseUrl\n\t\t\tif ( History.emulated.pushState ) {\n\t\t\t\t// We are in a if statement as when pushState is not emulated\n\t\t\t\t// The actual url these short urls are relative to can change\n\t\t\t\t// So within the same session, we the url may end up somewhere different\n\t\t\t\tshortUrl = shortUrl.replace(baseUrl,'');\n\t\t\t}\n\n\t\t\t// Trim rootUrl\n\t\t\tshortUrl = shortUrl.replace(rootUrl,'/');\n\n\t\t\t// Ensure we can still detect it as a state\n\t\t\tif ( History.isTraditionalAnchor(shortUrl) ) {\n\t\t\t\tshortUrl = './'+shortUrl;\n\t\t\t}\n\n\t\t\t// Clean It\n\t\t\tshortUrl = shortUrl.replace(/^(\\.\\/)+/g,'./').replace(/\\#$/,'');\n\n\t\t\t// Return\n\t\t\treturn shortUrl;\n\t\t};\n\n\t\t/**\n\t\t * History.getLocationHref(document)\n\t\t * Returns a normalized version of document.location.href\n\t\t * accounting for browser inconsistencies, etc.\n\t\t *\n\t\t * This URL will be URI-encoded and will include the hash\n\t\t *\n\t\t * @param {object} document\n\t\t * @return {string} url\n\t\t */\n\t\tHistory.getLocationHref = function(doc) {\n\t\t\tdoc = doc || document;\n\n\t\t\t// most of the time, this will be true\n\t\t\tif (doc.URL === doc.location.href)\n\t\t\t\treturn doc.location.href;\n\n\t\t\t// some versions of webkit URI-decode document.location.href\n\t\t\t// but they leave document.URL in an encoded state\n\t\t\tif (doc.location.href === decodeURIComponent(doc.URL))\n\t\t\t\treturn doc.URL;\n\n\t\t\t// FF 3.6 only updates document.URL when a page is reloaded\n\t\t\t// document.location.href is updated correctly\n\t\t\tif (doc.location.hash && decodeURIComponent(doc.location.href.replace(/^[^#]+/, \"\")) === doc.location.hash)\n\t\t\t\treturn doc.location.href;\n\n\t\t\tif (doc.URL.indexOf('#') == -1 && doc.location.href.indexOf('#') != -1)\n\t\t\t\treturn doc.location.href;\n\t\t\t\n\t\t\treturn doc.URL || doc.location.href;\n\t\t};\n\n\n\t\t// ====================================================================\n\t\t// State Storage\n\n\t\t/**\n\t\t * History.store\n\t\t * The store for all session specific data\n\t\t */\n\t\tHistory.store = {};\n\n\t\t/**\n\t\t * History.idToState\n\t\t * 1-1: State ID to State Object\n\t\t */\n\t\tHistory.idToState = History.idToState||{};\n\n\t\t/**\n\t\t * History.stateToId\n\t\t * 1-1: State String to State ID\n\t\t */\n\t\tHistory.stateToId = History.stateToId||{};\n\n\t\t/**\n\t\t * History.urlToId\n\t\t * 1-1: State URL to State ID\n\t\t */\n\t\tHistory.urlToId = History.urlToId||{};\n\n\t\t/**\n\t\t * History.storedStates\n\t\t * Store the states in an array\n\t\t */\n\t\tHistory.storedStates = History.storedStates||[];\n\n\t\t/**\n\t\t * History.savedStates\n\t\t * Saved the states in an array\n\t\t */\n\t\tHistory.savedStates = History.savedStates||[];\n\n\t\t/**\n\t\t * History.noramlizeStore()\n\t\t * Noramlize the store by adding necessary values\n\t\t */\n\t\tHistory.normalizeStore = function(){\n\t\t\tHistory.store.idToState = History.store.idToState||{};\n\t\t\tHistory.store.urlToId = History.store.urlToId||{};\n\t\t\tHistory.store.stateToId = History.store.stateToId||{};\n\t\t};\n\n\t\t/**\n\t\t * History.getState()\n\t\t * Get an object containing the data, title and url of the current state\n\t\t * @param {Boolean} friendly\n\t\t * @param {Boolean} create\n\t\t * @return {Object} State\n\t\t */\n\t\tHistory.getState = function(friendly,create){\n\t\t\t// Prepare\n\t\t\tif ( typeof friendly === 'undefined' ) { friendly = true; }\n\t\t\tif ( typeof create === 'undefined' ) { create = true; }\n\n\t\t\t// Fetch\n\t\t\tvar State = History.getLastSavedState();\n\n\t\t\t// Create\n\t\t\tif ( !State && create ) {\n\t\t\t\tState = History.createStateObject();\n\t\t\t}\n\n\t\t\t// Adjust\n\t\t\tif ( friendly ) {\n\t\t\t\tState = History.cloneObject(State);\n\t\t\t\tState.url = State.cleanUrl||State.url;\n\t\t\t}\n\n\t\t\t// Return\n\t\t\treturn State;\n\t\t};\n\n\t\t/**\n\t\t * History.getIdByState(State)\n\t\t * Gets a ID for a State\n\t\t * @param {State} newState\n\t\t * @return {String} id\n\t\t */\n\t\tHistory.getIdByState = function(newState){\n\n\t\t\t// Fetch ID\n\t\t\tvar id = History.extractId(newState.url),\n\t\t\t\tstr;\n\n\t\t\tif ( !id ) {\n\t\t\t\t// Find ID via State String\n\t\t\t\tstr = History.getStateString(newState);\n\t\t\t\tif ( typeof History.stateToId[str] !== 'undefined' ) {\n\t\t\t\t\tid = History.stateToId[str];\n\t\t\t\t}\n\t\t\t\telse if ( typeof History.store.stateToId[str] !== 'undefined' ) {\n\t\t\t\t\tid = History.store.stateToId[str];\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// Generate a new ID\n\t\t\t\t\twhile ( true ) {\n\t\t\t\t\t\tid = (new Date()).getTime() + String(Math.random()).replace(/\\D/g,'');\n\t\t\t\t\t\tif ( typeof History.idToState[id] === 'undefined' && typeof History.store.idToState[id] === 'undefined' ) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply the new State to the ID\n\t\t\t\t\tHistory.stateToId[str] = id;\n\t\t\t\t\tHistory.idToState[id] = newState;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Return ID\n\t\t\treturn id;\n\t\t};\n\n\t\t/**\n\t\t * History.normalizeState(State)\n\t\t * Expands a State Object\n\t\t * @param {object} State\n\t\t * @return {object}\n\t\t */\n\t\tHistory.normalizeState = function(oldState){\n\t\t\t// Variables\n\t\t\tvar newState, dataNotEmpty;\n\n\t\t\t// Prepare\n\t\t\tif ( !oldState || (typeof oldState !== 'object') ) {\n\t\t\t\toldState = {};\n\t\t\t}\n\n\t\t\t// Check\n\t\t\tif ( typeof oldState.normalized !== 'undefined' ) {\n\t\t\t\treturn oldState;\n\t\t\t}\n\n\t\t\t// Adjust\n\t\t\tif ( !oldState.data || (typeof oldState.data !== 'object') ) {\n\t\t\t\toldState.data = {};\n\t\t\t}\n\n\t\t\t// ----------------------------------------------------------------\n\n\t\t\t// Create\n\t\t\tnewState = {};\n\t\t\tnewState.normalized = true;\n\t\t\tnewState.title = oldState.title||'';\n\t\t\tnewState.url = History.getFullUrl(oldState.url?oldState.url:(History.getLocationHref()));\n\t\t\tnewState.hash = History.getShortUrl(newState.url);\n\t\t\tnewState.data = History.cloneObject(oldState.data);\n\n\t\t\t// Fetch ID\n\t\t\tnewState.id = History.getIdByState(newState);\n\n\t\t\t// ----------------------------------------------------------------\n\n\t\t\t// Clean the URL\n\t\t\tnewState.cleanUrl = newState.url.replace(/\\??\\&_suid.*/,'');\n\t\t\tnewState.url = newState.cleanUrl;\n\n\t\t\t// Check to see if we have more than just a url\n\t\t\tdataNotEmpty = !History.isEmptyObject(newState.data);\n\n\t\t\t// Apply\n\t\t\tif ( (newState.title || dataNotEmpty) && History.options.disableSuid !== true ) {\n\t\t\t\t// Add ID to Hash\n\t\t\t\tnewState.hash = History.getShortUrl(newState.url).replace(/\\??\\&_suid.*/,'');\n\t\t\t\tif ( !/\\?/.test(newState.hash) ) {\n\t\t\t\t\tnewState.hash += '?';\n\t\t\t\t}\n\t\t\t\tnewState.hash += '&_suid='+newState.id;\n\t\t\t}\n\n\t\t\t// Create the Hashed URL\n\t\t\tnewState.hashedUrl = History.getFullUrl(newState.hash);\n\n\t\t\t// ----------------------------------------------------------------\n\n\t\t\t// Update the URL if we have a duplicate\n\t\t\tif ( (History.emulated.pushState || History.bugs.safariPoll) && History.hasUrlDuplicate(newState) ) {\n\t\t\t\tnewState.url = newState.hashedUrl;\n\t\t\t}\n\n\t\t\t// ----------------------------------------------------------------\n\n\t\t\t// Return\n\t\t\treturn newState;\n\t\t};\n\n\t\t/**\n\t\t * History.createStateObject(data,title,url)\n\t\t * Creates a object based on the data, title and url state params\n\t\t * @param {object} data\n\t\t * @param {string} title\n\t\t * @param {string} url\n\t\t * @return {object}\n\t\t */\n\t\tHistory.createStateObject = function(data,title,url){\n\t\t\t// Hashify\n\t\t\tvar State = {\n\t\t\t\t'data': data,\n\t\t\t\t'title': title,\n\t\t\t\t'url': url\n\t\t\t};\n\n\t\t\t// Expand the State\n\t\t\tState = History.normalizeState(State);\n\n\t\t\t// Return object\n\t\t\treturn State;\n\t\t};\n\n\t\t/**\n\t\t * History.getStateById(id)\n\t\t * Get a state by it's UID\n\t\t * @param {String} id\n\t\t */\n\t\tHistory.getStateById = function(id){\n\t\t\t// Prepare\n\t\t\tid = String(id);\n\n\t\t\t// Retrieve\n\t\t\tvar State = History.idToState[id] || History.store.idToState[id] || undefined;\n\n\t\t\t// Return State\n\t\t\treturn State;\n\t\t};\n\n\t\t/**\n\t\t * Get a State's String\n\t\t * @param {State} passedState\n\t\t */\n\t\tHistory.getStateString = function(passedState){\n\t\t\t// Prepare\n\t\t\tvar State, cleanedState, str;\n\n\t\t\t// Fetch\n\t\t\tState = History.normalizeState(passedState);\n\n\t\t\t// Clean\n\t\t\tcleanedState = {\n\t\t\t\tdata: State.data,\n\t\t\t\ttitle: passedState.title,\n\t\t\t\turl: passedState.url\n\t\t\t};\n\n\t\t\t// Fetch\n\t\t\tstr = JSON.stringify(cleanedState);\n\n\t\t\t// Return\n\t\t\treturn str;\n\t\t};\n\n\t\t/**\n\t\t * Get a State's ID\n\t\t * @param {State} passedState\n\t\t * @return {String} id\n\t\t */\n\t\tHistory.getStateId = function(passedState){\n\t\t\t// Prepare\n\t\t\tvar State, id;\n\n\t\t\t// Fetch\n\t\t\tState = History.normalizeState(passedState);\n\n\t\t\t// Fetch\n\t\t\tid = State.id;\n\n\t\t\t// Return\n\t\t\treturn id;\n\t\t};\n\n\t\t/**\n\t\t * History.getHashByState(State)\n\t\t * Creates a Hash for the State Object\n\t\t * @param {State} passedState\n\t\t * @return {String} hash\n\t\t */\n\t\tHistory.getHashByState = function(passedState){\n\t\t\t// Prepare\n\t\t\tvar State, hash;\n\n\t\t\t// Fetch\n\t\t\tState = History.normalizeState(passedState);\n\n\t\t\t// Hash\n\t\t\thash = State.hash;\n\n\t\t\t// Return\n\t\t\treturn hash;\n\t\t};\n\n\t\t/**\n\t\t * History.extractId(url_or_hash)\n\t\t * Get a State ID by it's URL or Hash\n\t\t * @param {string} url_or_hash\n\t\t * @return {string} id\n\t\t */\n\t\tHistory.extractId = function ( url_or_hash ) {\n\t\t\t// Prepare\n\t\t\tvar id,parts,url, tmp;\n\n\t\t\t// Extract\n\t\t\t\n\t\t\t// If the URL has a #, use the id from before the #\n\t\t\tif (url_or_hash.indexOf('#') != -1)\n\t\t\t{\n\t\t\t\ttmp = url_or_hash.split(\"#\")[0];\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\ttmp = url_or_hash;\n\t\t\t}\n\t\t\t\n\t\t\tparts = /(.*)\\&_suid=([0-9]+)$/.exec(tmp);\n\t\t\turl = parts ? (parts[1]||url_or_hash) : url_or_hash;\n\t\t\tid = parts ? String(parts[2]||'') : '';\n\n\t\t\t// Return\n\t\t\treturn id||false;\n\t\t};\n\n\t\t/**\n\t\t * History.isTraditionalAnchor\n\t\t * Checks to see if the url is a traditional anchor or not\n\t\t * @param {String} url_or_hash\n\t\t * @return {Boolean}\n\t\t */\n\t\tHistory.isTraditionalAnchor = function(url_or_hash){\n\t\t\t// Check\n\t\t\tvar isTraditional = !(/[\\/\\?\\.]/.test(url_or_hash));\n\n\t\t\t// Return\n\t\t\treturn isTraditional;\n\t\t};\n\n\t\t/**\n\t\t * History.extractState\n\t\t * Get a State by it's URL or Hash\n\t\t * @param {String} url_or_hash\n\t\t * @return {State|null}\n\t\t */\n\t\tHistory.extractState = function(url_or_hash,create){\n\t\t\t// Prepare\n\t\t\tvar State = null, id, url;\n\t\t\tcreate = create||false;\n\n\t\t\t// Fetch SUID\n\t\t\tid = History.extractId(url_or_hash);\n\t\t\tif ( id ) {\n\t\t\t\tState = History.getStateById(id);\n\t\t\t}\n\n\t\t\t// Fetch SUID returned no State\n\t\t\tif ( !State ) {\n\t\t\t\t// Fetch URL\n\t\t\t\turl = History.getFullUrl(url_or_hash);\n\n\t\t\t\t// Check URL\n\t\t\t\tid = History.getIdByUrl(url)||false;\n\t\t\t\tif ( id ) {\n\t\t\t\t\tState = History.getStateById(id);\n\t\t\t\t}\n\n\t\t\t\t// Create State\n\t\t\t\tif ( !State && create && !History.isTraditionalAnchor(url_or_hash) ) {\n\t\t\t\t\tState = History.createStateObject(null,null,url);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Return\n\t\t\treturn State;\n\t\t};\n\n\t\t/**\n\t\t * History.getIdByUrl()\n\t\t * Get a State ID by a State URL\n\t\t */\n\t\tHistory.getIdByUrl = function(url){\n\t\t\t// Fetch\n\t\t\tvar id = History.urlToId[url] || History.store.urlToId[url] || undefined;\n\n\t\t\t// Return\n\t\t\treturn id;\n\t\t};\n\n\t\t/**\n\t\t * History.getLastSavedState()\n\t\t * Get an object containing the data, title and url of the current state\n\t\t * @return {Object} State\n\t\t */\n\t\tHistory.getLastSavedState = function(){\n\t\t\treturn History.savedStates[History.savedStates.length-1]||undefined;\n\t\t};\n\n\t\t/**\n\t\t * History.getLastStoredState()\n\t\t * Get an object containing the data, title and url of the current state\n\t\t * @return {Object} State\n\t\t */\n\t\tHistory.getLastStoredState = function(){\n\t\t\treturn History.storedStates[History.storedStates.length-1]||undefined;\n\t\t};\n\n\t\t/**\n\t\t * History.hasUrlDuplicate\n\t\t * Checks if a Url will have a url conflict\n\t\t * @param {Object} newState\n\t\t * @return {Boolean} hasDuplicate\n\t\t */\n\t\tHistory.hasUrlDuplicate = function(newState) {\n\t\t\t// Prepare\n\t\t\tvar hasDuplicate = false,\n\t\t\t\toldState;\n\n\t\t\t// Fetch\n\t\t\toldState = History.extractState(newState.url);\n\n\t\t\t// Check\n\t\t\thasDuplicate = oldState && oldState.id !== newState.id;\n\n\t\t\t// Return\n\t\t\treturn hasDuplicate;\n\t\t};\n\n\t\t/**\n\t\t * History.storeState\n\t\t * Store a State\n\t\t * @param {Object} newState\n\t\t * @return {Object} newState\n\t\t */\n\t\tHistory.storeState = function(newState){\n\t\t\t// Store the State\n\t\t\tHistory.urlToId[newState.url] = newState.id;\n\n\t\t\t// Push the State\n\t\t\tHistory.storedStates.push(History.cloneObject(newState));\n\n\t\t\t// Return newState\n\t\t\treturn newState;\n\t\t};\n\n\t\t/**\n\t\t * History.isLastSavedState(newState)\n\t\t * Tests to see if the state is the last state\n\t\t * @param {Object} newState\n\t\t * @return {boolean} isLast\n\t\t */\n\t\tHistory.isLastSavedState = function(newState){\n\t\t\t// Prepare\n\t\t\tvar isLast = false,\n\t\t\t\tnewId, oldState, oldId;\n\n\t\t\t// Check\n\t\t\tif ( History.savedStates.length ) {\n\t\t\t\tnewId = newState.id;\n\t\t\t\toldState = History.getLastSavedState();\n\t\t\t\toldId = oldState.id;\n\n\t\t\t\t// Check\n\t\t\t\tisLast = (newId === oldId);\n\t\t\t}\n\n\t\t\t// Return\n\t\t\treturn isLast;\n\t\t};\n\n\t\t/**\n\t\t * History.saveState\n\t\t * Push a State\n\t\t * @param {Object} newState\n\t\t * @return {boolean} changed\n\t\t */\n\t\tHistory.saveState = function(newState){\n\t\t\t// Check Hash\n\t\t\tif ( History.isLastSavedState(newState) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Push the State\n\t\t\tHistory.savedStates.push(History.cloneObject(newState));\n\n\t\t\t// Return true\n\t\t\treturn true;\n\t\t};\n\n\t\t/**\n\t\t * History.getStateByIndex()\n\t\t * Gets a state by the index\n\t\t * @param {integer} index\n\t\t * @return {Object}\n\t\t */\n\t\tHistory.getStateByIndex = function(index){\n\t\t\t// Prepare\n\t\t\tvar State = null;\n\n\t\t\t// Handle\n\t\t\tif ( typeof index === 'undefined' ) {\n\t\t\t\t// Get the last inserted\n\t\t\t\tState = History.savedStates[History.savedStates.length-1];\n\t\t\t}\n\t\t\telse if ( index < 0 ) {\n\t\t\t\t// Get from the end\n\t\t\t\tState = History.savedStates[History.savedStates.length+index];\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Get from the beginning\n\t\t\t\tState = History.savedStates[index];\n\t\t\t}\n\n\t\t\t// Return State\n\t\t\treturn State;\n\t\t};\n\t\t\n\t\t/**\n\t\t * History.getCurrentIndex()\n\t\t * Gets the current index\n\t\t * @return (integer)\n\t\t*/\n\t\tHistory.getCurrentIndex = function(){\n\t\t\t// Prepare\n\t\t\tvar index = null;\n\t\t\t\n\t\t\t// No states saved\n\t\t\tif(History.savedStates.length < 1) {\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tindex = History.savedStates.length-1;\n\t\t\t}\n\t\t\treturn index;\n\t\t};\n\n\t\t// ====================================================================\n\t\t// Hash Helpers\n\n\t\t/**\n\t\t * History.getHash()\n\t\t * @param {Location=} location\n\t\t * Gets the current document hash\n\t\t * Note: unlike location.hash, this is guaranteed to return the escaped hash in all browsers\n\t\t * @return {string}\n\t\t */\n\t\tHistory.getHash = function(doc){\n\t\t\tvar url = History.getLocationHref(doc),\n\t\t\t\thash;\n\t\t\thash = History.getHashByUrl(url);\n\t\t\treturn hash;\n\t\t};\n\n\t\t/**\n\t\t * History.unescapeHash()\n\t\t * normalize and Unescape a Hash\n\t\t * @param {String} hash\n\t\t * @return {string}\n\t\t */\n\t\tHistory.unescapeHash = function(hash){\n\t\t\t// Prepare\n\t\t\tvar result = History.normalizeHash(hash);\n\n\t\t\t// Unescape hash\n\t\t\tresult = decodeURIComponent(result);\n\n\t\t\t// Return result\n\t\t\treturn result;\n\t\t};\n\n\t\t/**\n\t\t * History.normalizeHash()\n\t\t * normalize a hash across browsers\n\t\t * @return {string}\n\t\t */\n\t\tHistory.normalizeHash = function(hash){\n\t\t\t// Prepare\n\t\t\tvar result = hash.replace(/[^#]*#/,'').replace(/#.*/, '');\n\n\t\t\t// Return result\n\t\t\treturn result;\n\t\t};\n\n\t\t/**\n\t\t * History.setHash(hash)\n\t\t * Sets the document hash\n\t\t * @param {string} hash\n\t\t * @return {History}\n\t\t */\n\t\tHistory.setHash = function(hash,queue){\n\t\t\t// Prepare\n\t\t\tvar State, pageUrl;\n\n\t\t\t// Handle Queueing\n\t\t\tif ( queue !== false && History.busy() ) {\n\t\t\t\t// Wait + Push to Queue\n\t\t\t\t//History.debug('History.setHash: we must wait', arguments);\n\t\t\t\tHistory.pushQueue({\n\t\t\t\t\tscope: History,\n\t\t\t\t\tcallback: History.setHash,\n\t\t\t\t\targs: arguments,\n\t\t\t\t\tqueue: queue\n\t\t\t\t});\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Log\n\t\t\t//History.debug('History.setHash: called',hash);\n\n\t\t\t// Make Busy + Continue\n\t\t\tHistory.busy(true);\n\n\t\t\t// Check if hash is a state\n\t\t\tState = History.extractState(hash,true);\n\t\t\tif ( State && !History.emulated.pushState ) {\n\t\t\t\t// Hash is a state so skip the setHash\n\t\t\t\t//History.debug('History.setHash: Hash is a state so skipping the hash set with a direct pushState call',arguments);\n\n\t\t\t\t// PushState\n\t\t\t\tHistory.pushState(State.data,State.title,State.url,false);\n\t\t\t}\n\t\t\telse if ( History.getHash() !== hash ) {\n\t\t\t\t// Hash is a proper hash, so apply it\n\n\t\t\t\t// Handle browser bugs\n\t\t\t\tif ( History.bugs.setHash ) {\n\t\t\t\t\t// Fix Safari Bug https://bugs.webkit.org/show_bug.cgi?id=56249\n\n\t\t\t\t\t// Fetch the base page\n\t\t\t\t\tpageUrl = History.getPageUrl();\n\n\t\t\t\t\t// Safari hash apply\n\t\t\t\t\tHistory.pushState(null,null,pageUrl+'#'+hash,false);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// Normal hash apply\n\t\t\t\t\tdocument.location.hash = hash;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Chain\n\t\t\treturn History;\n\t\t};\n\n\t\t/**\n\t\t * History.escape()\n\t\t * normalize and Escape a Hash\n\t\t * @return {string}\n\t\t */\n\t\tHistory.escapeHash = function(hash){\n\t\t\t// Prepare\n\t\t\tvar result = History.normalizeHash(hash);\n\n\t\t\t// Escape hash\n\t\t\tresult = window.encodeURIComponent(result);\n\n\t\t\t// IE6 Escape Bug\n\t\t\tif ( !History.bugs.hashEscape ) {\n\t\t\t\t// Restore common parts\n\t\t\t\tresult = result\n\t\t\t\t\t.replace(/\\%21/g,'!')\n\t\t\t\t\t.replace(/\\%26/g,'&')\n\t\t\t\t\t.replace(/\\%3D/g,'=')\n\t\t\t\t\t.replace(/\\%3F/g,'?');\n\t\t\t}\n\n\t\t\t// Return result\n\t\t\treturn result;\n\t\t};\n\n\t\t/**\n\t\t * History.getHashByUrl(url)\n\t\t * Extracts the Hash from a URL\n\t\t * @param {string} url\n\t\t * @return {string} url\n\t\t */\n\t\tHistory.getHashByUrl = function(url){\n\t\t\t// Extract the hash\n\t\t\tvar hash = String(url)\n\t\t\t\t.replace(/([^#]*)#?([^#]*)#?(.*)/, '$2')\n\t\t\t\t;\n\n\t\t\t// Unescape hash\n\t\t\thash = History.unescapeHash(hash);\n\n\t\t\t// Return hash\n\t\t\treturn hash;\n\t\t};\n\n\t\t/**\n\t\t * History.setTitle(title)\n\t\t * Applies the title to the document\n\t\t * @param {State} newState\n\t\t * @return {Boolean}\n\t\t */\n\t\tHistory.setTitle = function(newState){\n\t\t\t// Prepare\n\t\t\tvar title = newState.title,\n\t\t\t\tfirstState;\n\n\t\t\t// Initial\n\t\t\tif ( !title ) {\n\t\t\t\tfirstState = History.getStateByIndex(0);\n\t\t\t\tif ( firstState && firstState.url === newState.url ) {\n\t\t\t\t\ttitle = firstState.title||History.options.initialTitle;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Apply\n\t\t\ttry {\n\t\t\t\tdocument.getElementsByTagName('title')[0].innerHTML = title.replace('<','<').replace('>','>').replace(' & ',' & ');\n\t\t\t}\n\t\t\tcatch ( Exception ) { }\n\t\t\tdocument.title = title;\n\n\t\t\t// Chain\n\t\t\treturn History;\n\t\t};\n\n\n\t\t// ====================================================================\n\t\t// Queueing\n\n\t\t/**\n\t\t * History.queues\n\t\t * The list of queues to use\n\t\t * First In, First Out\n\t\t */\n\t\tHistory.queues = [];\n\n\t\t/**\n\t\t * History.busy(value)\n\t\t * @param {boolean} value [optional]\n\t\t * @return {boolean} busy\n\t\t */\n\t\tHistory.busy = function(value){\n\t\t\t// Apply\n\t\t\tif ( typeof value !== 'undefined' ) {\n\t\t\t\t//History.debug('History.busy: changing ['+(History.busy.flag||false)+'] to ['+(value||false)+']', History.queues.length);\n\t\t\t\tHistory.busy.flag = value;\n\t\t\t}\n\t\t\t// Default\n\t\t\telse if ( typeof History.busy.flag === 'undefined' ) {\n\t\t\t\tHistory.busy.flag = false;\n\t\t\t}\n\n\t\t\t// Queue\n\t\t\tif ( !History.busy.flag ) {\n\t\t\t\t// Execute the next item in the queue\n\t\t\t\tclearTimeout(History.busy.timeout);\n\t\t\t\tvar fireNext = function(){\n\t\t\t\t\tvar i, queue, item;\n\t\t\t\t\tif ( History.busy.flag ) return;\n\t\t\t\t\tfor ( i=History.queues.length-1; i >= 0; --i ) {\n\t\t\t\t\t\tqueue = History.queues[i];\n\t\t\t\t\t\tif ( queue.length === 0 ) continue;\n\t\t\t\t\t\titem = queue.shift();\n\t\t\t\t\t\tHistory.fireQueueItem(item);\n\t\t\t\t\t\tHistory.busy.timeout = setTimeout(fireNext,History.options.busyDelay);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tHistory.busy.timeout = setTimeout(fireNext,History.options.busyDelay);\n\t\t\t}\n\n\t\t\t// Return\n\t\t\treturn History.busy.flag;\n\t\t};\n\n\t\t/**\n\t\t * History.busy.flag\n\t\t */\n\t\tHistory.busy.flag = false;\n\n\t\t/**\n\t\t * History.fireQueueItem(item)\n\t\t * Fire a Queue Item\n\t\t * @param {Object} item\n\t\t * @return {Mixed} result\n\t\t */\n\t\tHistory.fireQueueItem = function(item){\n\t\t\treturn item.callback.apply(item.scope||History,item.args||[]);\n\t\t};\n\n\t\t/**\n\t\t * History.pushQueue(callback,args)\n\t\t * Add an item to the queue\n\t\t * @param {Object} item [scope,callback,args,queue]\n\t\t */\n\t\tHistory.pushQueue = function(item){\n\t\t\t// Prepare the queue\n\t\t\tHistory.queues[item.queue||0] = History.queues[item.queue||0]||[];\n\n\t\t\t// Add to the queue\n\t\t\tHistory.queues[item.queue||0].push(item);\n\n\t\t\t// Chain\n\t\t\treturn History;\n\t\t};\n\n\t\t/**\n\t\t * History.queue (item,queue), (func,queue), (func), (item)\n\t\t * Either firs the item now if not busy, or adds it to the queue\n\t\t */\n\t\tHistory.queue = function(item,queue){\n\t\t\t// Prepare\n\t\t\tif ( typeof item === 'function' ) {\n\t\t\t\titem = {\n\t\t\t\t\tcallback: item\n\t\t\t\t};\n\t\t\t}\n\t\t\tif ( typeof queue !== 'undefined' ) {\n\t\t\t\titem.queue = queue;\n\t\t\t}\n\n\t\t\t// Handle\n\t\t\tif ( History.busy() ) {\n\t\t\t\tHistory.pushQueue(item);\n\t\t\t} else {\n\t\t\t\tHistory.fireQueueItem(item);\n\t\t\t}\n\n\t\t\t// Chain\n\t\t\treturn History;\n\t\t};\n\n\t\t/**\n\t\t * History.clearQueue()\n\t\t * Clears the Queue\n\t\t */\n\t\tHistory.clearQueue = function(){\n\t\t\tHistory.busy.flag = false;\n\t\t\tHistory.queues = [];\n\t\t\treturn History;\n\t\t};\n\n\n\t\t// ====================================================================\n\t\t// IE Bug Fix\n\n\t\t/**\n\t\t * History.stateChanged\n\t\t * States whether or not the state has changed since the last double check was initialised\n\t\t */\n\t\tHistory.stateChanged = false;\n\n\t\t/**\n\t\t * History.doubleChecker\n\t\t * Contains the timeout used for the double checks\n\t\t */\n\t\tHistory.doubleChecker = false;\n\n\t\t/**\n\t\t * History.doubleCheckComplete()\n\t\t * Complete a double check\n\t\t * @return {History}\n\t\t */\n\t\tHistory.doubleCheckComplete = function(){\n\t\t\t// Update\n\t\t\tHistory.stateChanged = true;\n\n\t\t\t// Clear\n\t\t\tHistory.doubleCheckClear();\n\n\t\t\t// Chain\n\t\t\treturn History;\n\t\t};\n\n\t\t/**\n\t\t * History.doubleCheckClear()\n\t\t * Clear a double check\n\t\t * @return {History}\n\t\t */\n\t\tHistory.doubleCheckClear = function(){\n\t\t\t// Clear\n\t\t\tif ( History.doubleChecker ) {\n\t\t\t\tclearTimeout(History.doubleChecker);\n\t\t\t\tHistory.doubleChecker = false;\n\t\t\t}\n\n\t\t\t// Chain\n\t\t\treturn History;\n\t\t};\n\n\t\t/**\n\t\t * History.doubleCheck()\n\t\t * Create a double check\n\t\t * @return {History}\n\t\t */\n\t\tHistory.doubleCheck = function(tryAgain){\n\t\t\t// Reset\n\t\t\tHistory.stateChanged = false;\n\t\t\tHistory.doubleCheckClear();\n\n\t\t\t// Fix IE6,IE7 bug where calling history.back or history.forward does not actually change the hash (whereas doing it manually does)\n\t\t\t// Fix Safari 5 bug where sometimes the state does not change: https://bugs.webkit.org/show_bug.cgi?id=42940\n\t\t\tif ( History.bugs.ieDoubleCheck ) {\n\t\t\t\t// Apply Check\n\t\t\t\tHistory.doubleChecker = setTimeout(\n\t\t\t\t\tfunction(){\n\t\t\t\t\t\tHistory.doubleCheckClear();\n\t\t\t\t\t\tif ( !History.stateChanged ) {\n\t\t\t\t\t\t\t//History.debug('History.doubleCheck: State has not yet changed, trying again', arguments);\n\t\t\t\t\t\t\t// Re-Attempt\n\t\t\t\t\t\t\ttryAgain();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t},\n\t\t\t\t\tHistory.options.doubleCheckInterval\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Chain\n\t\t\treturn History;\n\t\t};\n\n\n\t\t// ====================================================================\n\t\t// Safari Bug Fix\n\n\t\t/**\n\t\t * History.safariStatePoll()\n\t\t * Poll the current state\n\t\t * @return {History}\n\t\t */\n\t\tHistory.safariStatePoll = function(){\n\t\t\t// Poll the URL\n\n\t\t\t// Get the Last State which has the new URL\n\t\t\tvar\n\t\t\t\turlState = History.extractState(History.getLocationHref()),\n\t\t\t\tnewState;\n\n\t\t\t// Check for a difference\n\t\t\tif ( !History.isLastSavedState(urlState) ) {\n\t\t\t\tnewState = urlState;\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Check if we have a state with that url\n\t\t\t// If not create it\n\t\t\tif ( !newState ) {\n\t\t\t\t//History.debug('History.safariStatePoll: new');\n\t\t\t\tnewState = History.createStateObject();\n\t\t\t}\n\n\t\t\t// Apply the New State\n\t\t\t//History.debug('History.safariStatePoll: trigger');\n\t\t\tHistory.Adapter.trigger(window,'popstate');\n\n\t\t\t// Chain\n\t\t\treturn History;\n\t\t};\n\n\n\t\t// ====================================================================\n\t\t// State Aliases\n\n\t\t/**\n\t\t * History.back(queue)\n\t\t * Send the browser history back one item\n\t\t * @param {Integer} queue [optional]\n\t\t */\n\t\tHistory.back = function(queue){\n\t\t\t//History.debug('History.back: called', arguments);\n\n\t\t\t// Handle Queueing\n\t\t\tif ( queue !== false && History.busy() ) {\n\t\t\t\t// Wait + Push to Queue\n\t\t\t\t//History.debug('History.back: we must wait', arguments);\n\t\t\t\tHistory.pushQueue({\n\t\t\t\t\tscope: History,\n\t\t\t\t\tcallback: History.back,\n\t\t\t\t\targs: arguments,\n\t\t\t\t\tqueue: queue\n\t\t\t\t});\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Make Busy + Continue\n\t\t\tHistory.busy(true);\n\n\t\t\t// Fix certain browser bugs that prevent the state from changing\n\t\t\tHistory.doubleCheck(function(){\n\t\t\t\tHistory.back(false);\n\t\t\t});\n\n\t\t\t// Go back\n\t\t\thistory.go(-1);\n\n\t\t\t// End back closure\n\t\t\treturn true;\n\t\t};\n\n\t\t/**\n\t\t * History.forward(queue)\n\t\t * Send the browser history forward one item\n\t\t * @param {Integer} queue [optional]\n\t\t */\n\t\tHistory.forward = function(queue){\n\t\t\t//History.debug('History.forward: called', arguments);\n\n\t\t\t// Handle Queueing\n\t\t\tif ( queue !== false && History.busy() ) {\n\t\t\t\t// Wait + Push to Queue\n\t\t\t\t//History.debug('History.forward: we must wait', arguments);\n\t\t\t\tHistory.pushQueue({\n\t\t\t\t\tscope: History,\n\t\t\t\t\tcallback: History.forward,\n\t\t\t\t\targs: arguments,\n\t\t\t\t\tqueue: queue\n\t\t\t\t});\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Make Busy + Continue\n\t\t\tHistory.busy(true);\n\n\t\t\t// Fix certain browser bugs that prevent the state from changing\n\t\t\tHistory.doubleCheck(function(){\n\t\t\t\tHistory.forward(false);\n\t\t\t});\n\n\t\t\t// Go forward\n\t\t\thistory.go(1);\n\n\t\t\t// End forward closure\n\t\t\treturn true;\n\t\t};\n\n\t\t/**\n\t\t * History.go(index,queue)\n\t\t * Send the browser history back or forward index times\n\t\t * @param {Integer} queue [optional]\n\t\t */\n\t\tHistory.go = function(index,queue){\n\t\t\t//History.debug('History.go: called', arguments);\n\n\t\t\t// Prepare\n\t\t\tvar i;\n\n\t\t\t// Handle\n\t\t\tif ( index > 0 ) {\n\t\t\t\t// Forward\n\t\t\t\tfor ( i=1; i<=index; ++i ) {\n\t\t\t\t\tHistory.forward(queue);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( index < 0 ) {\n\t\t\t\t// Backward\n\t\t\t\tfor ( i=-1; i>=index; --i ) {\n\t\t\t\t\tHistory.back(queue);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error('History.go: History.go requires a positive or negative integer passed.');\n\t\t\t}\n\n\t\t\t// Chain\n\t\t\treturn History;\n\t\t};\n\n\n\t\t// ====================================================================\n\t\t// HTML5 State Support\n\n\t\t// Non-Native pushState Implementation\n\t\tif ( History.emulated.pushState ) {\n\t\t\t/*\n\t\t\t * Provide Skeleton for HTML4 Browsers\n\t\t\t */\n\n\t\t\t// Prepare\n\t\t\tvar emptyFunction = function(){};\n\t\t\tHistory.pushState = History.pushState||emptyFunction;\n\t\t\tHistory.replaceState = History.replaceState||emptyFunction;\n\t\t} // History.emulated.pushState\n\n\t\t// Native pushState Implementation\n\t\telse {\n\t\t\t/*\n\t\t\t * Use native HTML5 History API Implementation\n\t\t\t */\n\n\t\t\t/**\n\t\t\t * History.onPopState(event,extra)\n\t\t\t * Refresh the Current State\n\t\t\t */\n\t\t\tHistory.onPopState = function(event,extra){\n\t\t\t\t// Prepare\n\t\t\t\tvar stateId = false, newState = false, currentHash, currentState;\n\n\t\t\t\t// Reset the double check\n\t\t\t\tHistory.doubleCheckComplete();\n\n\t\t\t\t// Check for a Hash, and handle apporiatly\n\t\t\t\tcurrentHash = History.getHash();\n\t\t\t\tif ( currentHash ) {\n\t\t\t\t\t// Expand Hash\n\t\t\t\t\tcurrentState = History.extractState(currentHash||History.getLocationHref(),true);\n\t\t\t\t\tif ( currentState ) {\n\t\t\t\t\t\t// We were able to parse it, it must be a State!\n\t\t\t\t\t\t// Let's forward to replaceState\n\t\t\t\t\t\t//History.debug('History.onPopState: state anchor', currentHash, currentState);\n\t\t\t\t\t\tHistory.replaceState(currentState.data, currentState.title, currentState.url, false);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t// Traditional Anchor\n\t\t\t\t\t\t//History.debug('History.onPopState: traditional anchor', currentHash);\n\t\t\t\t\t\tHistory.Adapter.trigger(window,'anchorchange');\n\t\t\t\t\t\tHistory.busy(false);\n\t\t\t\t\t}\n\n\t\t\t\t\t// We don't care for hashes\n\t\t\t\t\tHistory.expectedStateId = false;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Ensure\n\t\t\t\tstateId = History.Adapter.extractEventData('state',event,extra) || false;\n\n\t\t\t\t// Fetch State\n\t\t\t\tif ( stateId ) {\n\t\t\t\t\t// Vanilla: Back/forward button was used\n\t\t\t\t\tnewState = History.getStateById(stateId);\n\t\t\t\t}\n\t\t\t\telse if ( History.expectedStateId ) {\n\t\t\t\t\t// Vanilla: A new state was pushed, and popstate was called manually\n\t\t\t\t\tnewState = History.getStateById(History.expectedStateId);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// Initial State\n\t\t\t\t\tnewState = History.extractState(History.getLocationHref());\n\t\t\t\t}\n\n\t\t\t\t// The State did not exist in our store\n\t\t\t\tif ( !newState ) {\n\t\t\t\t\t// Regenerate the State\n\t\t\t\t\tnewState = History.createStateObject(null,null,History.getLocationHref());\n\t\t\t\t}\n\n\t\t\t\t// Clean\n\t\t\t\tHistory.expectedStateId = false;\n\n\t\t\t\t// Check if we are the same state\n\t\t\t\tif ( History.isLastSavedState(newState) ) {\n\t\t\t\t\t// There has been no change (just the page's hash has finally propagated)\n\t\t\t\t\t//History.debug('History.onPopState: no change', newState, History.savedStates);\n\t\t\t\t\tHistory.busy(false);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Store the State\n\t\t\t\tHistory.storeState(newState);\n\t\t\t\tHistory.saveState(newState);\n\n\t\t\t\t// Force update of the title\n\t\t\t\tHistory.setTitle(newState);\n\n\t\t\t\t// Fire Our Event\n\t\t\t\tHistory.Adapter.trigger(window,'statechange');\n\t\t\t\tHistory.busy(false);\n\n\t\t\t\t// Return true\n\t\t\t\treturn true;\n\t\t\t};\n\t\t\tHistory.Adapter.bind(window,'popstate',History.onPopState);\n\n\t\t\t/**\n\t\t\t * History.pushState(data,title,url)\n\t\t\t * Add a new State to the history object, become it, and trigger onpopstate\n\t\t\t * We have to trigger for HTML4 compatibility\n\t\t\t * @param {object} data\n\t\t\t * @param {string} title\n\t\t\t * @param {string} url\n\t\t\t * @return {true}\n\t\t\t */\n\t\t\tHistory.pushState = function(data,title,url,queue){\n\t\t\t\t//History.debug('History.pushState: called', arguments);\n\n\t\t\t\t// Check the State\n\t\t\t\tif ( History.getHashByUrl(url) && History.emulated.pushState ) {\n\t\t\t\t\tthrow new Error('History.js does not support states with fragement-identifiers (hashes/anchors).');\n\t\t\t\t}\n\n\t\t\t\t// Handle Queueing\n\t\t\t\tif ( queue !== false && History.busy() ) {\n\t\t\t\t\t// Wait + Push to Queue\n\t\t\t\t\t//History.debug('History.pushState: we must wait', arguments);\n\t\t\t\t\tHistory.pushQueue({\n\t\t\t\t\t\tscope: History,\n\t\t\t\t\t\tcallback: History.pushState,\n\t\t\t\t\t\targs: arguments,\n\t\t\t\t\t\tqueue: queue\n\t\t\t\t\t});\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Make Busy + Continue\n\t\t\t\tHistory.busy(true);\n\n\t\t\t\t// Create the newState\n\t\t\t\tvar newState = History.createStateObject(data,title,url);\n\n\t\t\t\t// Check it\n\t\t\t\tif ( History.isLastSavedState(newState) ) {\n\t\t\t\t\t// Won't be a change\n\t\t\t\t\tHistory.busy(false);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// Store the newState\n\t\t\t\t\tHistory.storeState(newState);\n\t\t\t\t\tHistory.expectedStateId = newState.id;\n\n\t\t\t\t\t// Push the newState\n\t\t\t\t\thistory.pushState(newState.id,newState.title,newState.url);\n\n\t\t\t\t\t// Fire HTML5 Event\n\t\t\t\t\tHistory.Adapter.trigger(window,'popstate');\n\t\t\t\t}\n\n\t\t\t\t// End pushState closure\n\t\t\t\treturn true;\n\t\t\t};\n\n\t\t\t/**\n\t\t\t * History.replaceState(data,title,url)\n\t\t\t * Replace the State and trigger onpopstate\n\t\t\t * We have to trigger for HTML4 compatibility\n\t\t\t * @param {object} data\n\t\t\t * @param {string} title\n\t\t\t * @param {string} url\n\t\t\t * @return {true}\n\t\t\t */\n\t\t\tHistory.replaceState = function(data,title,url,queue){\n\t\t\t\t//History.debug('History.replaceState: called', arguments);\n\n\t\t\t\t// Check the State\n\t\t\t\tif ( History.getHashByUrl(url) && History.emulated.pushState ) {\n\t\t\t\t\tthrow new Error('History.js does not support states with fragement-identifiers (hashes/anchors).');\n\t\t\t\t}\n\n\t\t\t\t// Handle Queueing\n\t\t\t\tif ( queue !== false && History.busy() ) {\n\t\t\t\t\t// Wait + Push to Queue\n\t\t\t\t\t//History.debug('History.replaceState: we must wait', arguments);\n\t\t\t\t\tHistory.pushQueue({\n\t\t\t\t\t\tscope: History,\n\t\t\t\t\t\tcallback: History.replaceState,\n\t\t\t\t\t\targs: arguments,\n\t\t\t\t\t\tqueue: queue\n\t\t\t\t\t});\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Make Busy + Continue\n\t\t\t\tHistory.busy(true);\n\n\t\t\t\t// Create the newState\n\t\t\t\tvar newState = History.createStateObject(data,title,url);\n\n\t\t\t\t// Check it\n\t\t\t\tif ( History.isLastSavedState(newState) ) {\n\t\t\t\t\t// Won't be a change\n\t\t\t\t\tHistory.busy(false);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// Store the newState\n\t\t\t\t\tHistory.storeState(newState);\n\t\t\t\t\tHistory.expectedStateId = newState.id;\n\n\t\t\t\t\t// Push the newState\n\t\t\t\t\thistory.replaceState(newState.id,newState.title,newState.url);\n\n\t\t\t\t\t// Fire HTML5 Event\n\t\t\t\t\tHistory.Adapter.trigger(window,'popstate');\n\t\t\t\t}\n\n\t\t\t\t// End replaceState closure\n\t\t\t\treturn true;\n\t\t\t};\n\n\t\t} // !History.emulated.pushState\n\n\n\t\t// ====================================================================\n\t\t// Initialise\n\n\t\t/**\n\t\t * Load the Store\n\t\t */\n\t\tif ( sessionStorage ) {\n\t\t\t// Fetch\n\t\t\ttry {\n\t\t\t\tHistory.store = JSON.parse(sessionStorage.getItem('History.store'))||{};\n\t\t\t}\n\t\t\tcatch ( err ) {\n\t\t\t\tHistory.store = {};\n\t\t\t}\n\n\t\t\t// Normalize\n\t\t\tHistory.normalizeStore();\n\t\t}\n\t\telse {\n\t\t\t// Default Load\n\t\t\tHistory.store = {};\n\t\t\tHistory.normalizeStore();\n\t\t}\n\n\t\t/**\n\t\t * Clear Intervals on exit to prevent memory leaks\n\t\t */\n\t\tHistory.Adapter.bind(window,\"unload\",History.clearAllIntervals);\n\n\t\t/**\n\t\t * Create the initial State\n\t\t */\n\t\tHistory.saveState(History.storeState(History.extractState(History.getLocationHref(),true)));\n\n\t\t/**\n\t\t * Bind for Saving Store\n\t\t */\n\t\tif ( sessionStorage ) {\n\t\t\t// When the page is closed\n\t\t\tHistory.onUnload = function(){\n\t\t\t\t// Prepare\n\t\t\t\tvar\tcurrentStore, item, currentStoreString;\n\n\t\t\t\t// Fetch\n\t\t\t\ttry {\n\t\t\t\t\tcurrentStore = JSON.parse(sessionStorage.getItem('History.store'))||{};\n\t\t\t\t}\n\t\t\t\tcatch ( err ) {\n\t\t\t\t\tcurrentStore = {};\n\t\t\t\t}\n\n\t\t\t\t// Ensure\n\t\t\t\tcurrentStore.idToState = currentStore.idToState || {};\n\t\t\t\tcurrentStore.urlToId = currentStore.urlToId || {};\n\t\t\t\tcurrentStore.stateToId = currentStore.stateToId || {};\n\n\t\t\t\t// Sync\n\t\t\t\tfor ( item in History.idToState ) {\n\t\t\t\t\tif ( !History.idToState.hasOwnProperty(item) ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tcurrentStore.idToState[item] = History.idToState[item];\n\t\t\t\t}\n\t\t\t\tfor ( item in History.urlToId ) {\n\t\t\t\t\tif ( !History.urlToId.hasOwnProperty(item) ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tcurrentStore.urlToId[item] = History.urlToId[item];\n\t\t\t\t}\n\t\t\t\tfor ( item in History.stateToId ) {\n\t\t\t\t\tif ( !History.stateToId.hasOwnProperty(item) ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tcurrentStore.stateToId[item] = History.stateToId[item];\n\t\t\t\t}\n\n\t\t\t\t// Update\n\t\t\t\tHistory.store = currentStore;\n\t\t\t\tHistory.normalizeStore();\n\n\t\t\t\t// In Safari, going into Private Browsing mode causes the\n\t\t\t\t// Session Storage object to still exist but if you try and use\n\t\t\t\t// or set any property/function of it it throws the exception\n\t\t\t\t// \"QUOTA_EXCEEDED_ERR: DOM Exception 22: An attempt was made to\n\t\t\t\t// add something to storage that exceeded the quota.\" infinitely\n\t\t\t\t// every second.\n\t\t\t\tcurrentStoreString = JSON.stringify(currentStore);\n\t\t\t\ttry {\n\t\t\t\t\t// Store\n\t\t\t\t\tsessionStorage.setItem('History.store', currentStoreString);\n\t\t\t\t}\n\t\t\t\tcatch (e) {\n\t\t\t\t\tif (e.code === DOMException.QUOTA_EXCEEDED_ERR) {\n\t\t\t\t\t\tif (sessionStorage.length) {\n\t\t\t\t\t\t\t// Workaround for a bug seen on iPads. Sometimes the quota exceeded error comes up and simply\n\t\t\t\t\t\t\t// removing/resetting the storage can work.\n\t\t\t\t\t\t\tsessionStorage.removeItem('History.store');\n\t\t\t\t\t\t\tsessionStorage.setItem('History.store', currentStoreString);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Otherwise, we're probably private browsing in Safari, so we'll ignore the exception.\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// For Internet Explorer\n\t\t\tHistory.intervalList.push(setInterval(History.onUnload,History.options.storeInterval));\n\n\t\t\t// For Other Browsers\n\t\t\tHistory.Adapter.bind(window,'beforeunload',History.onUnload);\n\t\t\tHistory.Adapter.bind(window,'unload',History.onUnload);\n\n\t\t\t// Both are enabled for consistency\n\t\t}\n\n\t\t// Non-Native pushState Implementation\n\t\tif ( !History.emulated.pushState ) {\n\t\t\t// Be aware, the following is only for native pushState implementations\n\t\t\t// If you are wanting to include something for all browsers\n\t\t\t// Then include it above this if block\n\n\t\t\t/**\n\t\t\t * Setup Safari Fix\n\t\t\t */\n\t\t\tif ( History.bugs.safariPoll ) {\n\t\t\t\tHistory.intervalList.push(setInterval(History.safariStatePoll, History.options.safariPollInterval));\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Ensure Cross Browser Compatibility\n\t\t\t */\n\t\t\tif ( navigator.vendor === 'Apple Computer, Inc.' || (navigator.appCodeName||'') === 'Mozilla' ) {\n\t\t\t\t/**\n\t\t\t\t * Fix Safari HashChange Issue\n\t\t\t\t */\n\n\t\t\t\t// Setup Alias\n\t\t\t\tHistory.Adapter.bind(window,'hashchange',function(){\n\t\t\t\t\tHistory.Adapter.trigger(window,'popstate');\n\t\t\t\t});\n\n\t\t\t\t// Initialise Alias\n\t\t\t\tif ( History.getHash() ) {\n\t\t\t\t\tHistory.Adapter.onDomLoad(function(){\n\t\t\t\t\t\tHistory.Adapter.trigger(window,'hashchange');\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t} // !History.emulated.pushState\n\n\n\t}; // History.initCore\n\n\t// Try to Initialise History\n\tif (!History.options || !History.options.delayInit) {\n\t\tHistory.init();\n\t}\n\n})(window);\n","/**\n * @preserve\n * Sharer.js\n *\n * @description Create your own social share buttons\n * @version 0.5.1\n * @author Ellison Leao \n * @license MIT\n *\n */\n\n(function (window, document) {\n 'use strict';\n /**\n * @constructor\n */\n var Sharer = function (elem) {\n this.elem = elem;\n };\n\n /**\n * @function init\n * @description bind the events for multiple sharer elements\n * @returns {Empty}\n */\n Sharer.init = function () {\n var elems = document.querySelectorAll('[data-sharer]'),\n i,\n l = elems.length;\n\n for (i = 0; i < l; i++) {\n elems[i].addEventListener('click', Sharer.add);\n }\n };\n\n /**\n * @function add\n * @description bind the share event for a single dom element\n * @returns {Empty}\n */\n Sharer.add = function (elem) {\n var target = elem.currentTarget || elem.srcElement;\n var sharer = new Sharer(target);\n sharer.share();\n };\n\n // instance methods\n Sharer.prototype = {\n constructor: Sharer,\n /**\n * @function getValue\n * @description Helper to get the attribute of a DOM element\n * @param {String} attr DOM element attribute\n * @returns {String|Empty} returns the attr value or empty string\n */\n getValue: function (attr) {\n var val = this.elem.getAttribute('data-' + attr);\n // handing facebook hashtag attribute\n if (val && attr === 'hashtag') {\n if (!val.startsWith('#')) {\n val = '#' + val;\n }\n }\n return val === null ? '' : val;\n },\n\n /**\n * @event share\n * @description Main share event. Will pop a window or redirect to a link\n * based on the data-sharer attribute.\n */\n share: function () {\n var sharer = this.getValue('sharer').toLowerCase(),\n sharers = {\n facebook: {\n shareUrl: 'https://www.facebook.com/sharer/sharer.php',\n params: {\n u: this.getValue('url'),\n hashtag: this.getValue('hashtag'),\n quote: this.getValue('quote'),\n },\n },\n linkedin: {\n shareUrl: 'https://www.linkedin.com/shareArticle',\n params: {\n url: this.getValue('url'),\n mini: true,\n },\n },\n twitter: {\n shareUrl: 'https://twitter.com/intent/tweet/',\n params: {\n text: this.getValue('title'),\n url: this.getValue('url'),\n hashtags: this.getValue('hashtags'),\n via: this.getValue('via'),\n },\n },\n email: {\n shareUrl: 'mailto:' + this.getValue('to'),\n params: {\n subject: this.getValue('subject'),\n body: this.getValue('title') + '\\n' + this.getValue('url'),\n },\n },\n whatsapp: {\n shareUrl: this.getValue('web') === 'true' ? 'https://web.whatsapp.com/send' : 'https://wa.me/',\n params: {\n phone: this.getValue('to'),\n text: this.getValue('title') + ' ' + this.getValue('url'),\n },\n },\n telegram: {\n shareUrl: 'https://t.me/share',\n params: {\n text: this.getValue('title'),\n url: this.getValue('url'),\n },\n },\n viber: {\n shareUrl: 'viber://forward',\n params: {\n text: this.getValue('title') + ' ' + this.getValue('url'),\n },\n },\n line: {\n shareUrl:\n 'http://line.me/R/msg/text/?' + encodeURIComponent(this.getValue('title') + ' ' + this.getValue('url')),\n },\n pinterest: {\n shareUrl: 'https://www.pinterest.com/pin/create/button/',\n params: {\n url: this.getValue('url'),\n media: this.getValue('image'),\n description: this.getValue('description'),\n },\n },\n tumblr: {\n shareUrl: 'http://tumblr.com/widgets/share/tool',\n params: {\n canonicalUrl: this.getValue('url'),\n content: this.getValue('url'),\n posttype: 'link',\n title: this.getValue('title'),\n caption: this.getValue('caption'),\n tags: this.getValue('tags'),\n },\n },\n hackernews: {\n shareUrl: 'https://news.ycombinator.com/submitlink',\n params: {\n u: this.getValue('url'),\n t: this.getValue('title'),\n },\n },\n reddit: {\n shareUrl: 'https://www.reddit.com/submit',\n params: { url: this.getValue('url'), title: this.getValue('title') },\n },\n vk: {\n shareUrl: 'http://vk.com/share.php',\n params: {\n url: this.getValue('url'),\n title: this.getValue('title'),\n description: this.getValue('caption'),\n image: this.getValue('image'),\n },\n },\n xing: {\n shareUrl: 'https://www.xing.com/social/share/spi',\n params: {\n url: this.getValue('url'),\n },\n },\n buffer: {\n shareUrl: 'https://buffer.com/add',\n params: {\n url: this.getValue('url'),\n title: this.getValue('title'),\n via: this.getValue('via'),\n picture: this.getValue('picture'),\n },\n },\n instapaper: {\n shareUrl: 'http://www.instapaper.com/edit',\n params: {\n url: this.getValue('url'),\n title: this.getValue('title'),\n description: this.getValue('description'),\n },\n },\n pocket: {\n shareUrl: 'https://getpocket.com/save',\n params: {\n url: this.getValue('url'),\n },\n },\n mashable: {\n shareUrl: 'https://mashable.com/submit',\n params: {\n url: this.getValue('url'),\n title: this.getValue('title'),\n },\n },\n mix: {\n shareUrl: 'https://mix.com/add',\n params: {\n url: this.getValue('url'),\n },\n },\n flipboard: {\n shareUrl: 'https://share.flipboard.com/bookmarklet/popout',\n params: {\n v: 2,\n title: this.getValue('title'),\n url: this.getValue('url'),\n t: Date.now(),\n },\n },\n weibo: {\n shareUrl: 'http://service.weibo.com/share/share.php',\n params: {\n url: this.getValue('url'),\n title: this.getValue('title'),\n pic: this.getValue('image'),\n appkey: this.getValue('appkey'),\n ralateUid: this.getValue('ralateuid'),\n language: 'zh_cn',\n },\n },\n blogger: {\n shareUrl: 'https://www.blogger.com/blog-this.g',\n params: {\n u: this.getValue('url'),\n n: this.getValue('title'),\n t: this.getValue('description'),\n },\n },\n baidu: {\n shareUrl: 'http://cang.baidu.com/do/add',\n params: {\n it: this.getValue('title'),\n iu: this.getValue('url'),\n },\n },\n douban: {\n shareUrl: 'https://www.douban.com/share/service',\n params: {\n name: this.getValue('name'),\n href: this.getValue('url'),\n image: this.getValue('image'),\n comment: this.getValue('description'),\n },\n },\n okru: {\n shareUrl: 'https://connect.ok.ru/dk',\n params: {\n 'st.cmd': 'WidgetSharePreview',\n 'st.shareUrl': this.getValue('url'),\n title: this.getValue('title'),\n },\n },\n mailru: {\n shareUrl: 'http://connect.mail.ru/share',\n params: {\n share_url: this.getValue('url'),\n linkname: this.getValue('title'),\n linknote: this.getValue('description'),\n type: 'page',\n },\n },\n evernote: {\n shareUrl: 'https://www.evernote.com/clip.action',\n params: {\n url: this.getValue('url'),\n title: this.getValue('title'),\n },\n },\n skype: {\n shareUrl: 'https://web.skype.com/share',\n params: {\n url: this.getValue('url'),\n title: this.getValue('title'),\n },\n },\n delicious: {\n shareUrl: 'https://del.icio.us/post',\n params: {\n url: this.getValue('url'),\n title: this.getValue('title'),\n },\n },\n sms: {\n shareUrl: 'sms://',\n params: {\n body: this.getValue('body'),\n },\n },\n trello: {\n shareUrl: 'https://trello.com/add-card',\n params: {\n url: this.getValue('url'),\n name: this.getValue('title'),\n desc: this.getValue('description'),\n mode: 'popup',\n },\n },\n messenger: {\n shareUrl: 'fb-messenger://share',\n params: {\n link: this.getValue('url'),\n },\n },\n odnoklassniki: {\n shareUrl: 'https://connect.ok.ru/dk',\n params: {\n st: {\n cmd: 'WidgetSharePreview',\n deprecated: 1,\n shareUrl: this.getValue('url'),\n },\n },\n },\n meneame: {\n shareUrl: 'https://www.meneame.net/submit',\n params: {\n url: this.getValue('url'),\n },\n },\n diaspora: {\n shareUrl: 'https://share.diasporafoundation.org',\n params: {\n title: this.getValue('title'),\n url: this.getValue('url'),\n },\n },\n googlebookmarks: {\n shareUrl: 'https://www.google.com/bookmarks/mark',\n params: {\n op: 'edit',\n bkmk: this.getValue('url'),\n title: this.getValue('title'),\n },\n },\n qzone: {\n shareUrl: 'https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey',\n params: {\n url: this.getValue('url'),\n },\n },\n refind: {\n shareUrl: 'https://refind.com',\n params: {\n url: this.getValue('url'),\n },\n },\n surfingbird: {\n shareUrl: 'https://surfingbird.ru/share',\n params: {\n url: this.getValue('url'),\n title: this.getValue('title'),\n description: this.getValue('description'),\n },\n },\n yahoomail: {\n shareUrl: 'http://compose.mail.yahoo.com',\n params: {\n to: this.getValue('to'),\n subject: this.getValue('subject'),\n body: this.getValue('body'),\n },\n },\n wordpress: {\n shareUrl: 'https://wordpress.com/wp-admin/press-this.php',\n params: {\n u: this.getValue('url'),\n t: this.getValue('title'),\n s: this.getValue('title'),\n },\n },\n amazon: {\n shareUrl: 'https://www.amazon.com/gp/wishlist/static-add',\n params: {\n u: this.getValue('url'),\n t: this.getValue('title'),\n },\n },\n pinboard: {\n shareUrl: 'https://pinboard.in/add',\n params: {\n url: this.getValue('url'),\n title: this.getValue('title'),\n description: this.getValue('description'),\n },\n },\n threema: {\n shareUrl: 'threema://compose',\n params: {\n text: this.getValue('text'),\n id: this.getValue('id'),\n },\n },\n kakaostory: {\n shareUrl: 'https://story.kakao.com/share',\n params: {\n url: this.getValue('url'),\n },\n },\n yummly: {\n shareUrl: 'http://www.yummly.com/urb/verify',\n params: {\n url: this.getValue('url'),\n title: this.getValue('title'),\n yumtype: 'button',\n },\n },\n },\n s = sharers[sharer];\n\n // custom popups sizes\n if (s) {\n s.width = this.getValue('width');\n s.height = this.getValue('height');\n }\n return s !== undefined ? this.urlSharer(s) : false;\n },\n /**\n * @event urlSharer\n * @param {Object} sharer\n */\n urlSharer: function (sharer) {\n var p = sharer.params || {},\n keys = Object.keys(p),\n i,\n str = keys.length > 0 ? '?' : '';\n for (i = 0; i < keys.length; i++) {\n if (str !== '?') {\n str += '&';\n }\n if (p[keys[i]]) {\n str += keys[i] + '=' + encodeURIComponent(p[keys[i]]);\n }\n }\n sharer.shareUrl += str;\n\n var isLink = this.getValue('link') === 'true';\n var isBlank = this.getValue('blank') === 'true';\n\n if (isLink) {\n if (isBlank) {\n window.open(sharer.shareUrl, '_blank');\n } else {\n window.location.href = sharer.shareUrl;\n }\n } else {\n console.log(sharer.shareUrl);\n // defaults to popup if no data-link is provided\n var popWidth = sharer.width || 600,\n popHeight = sharer.height || 480,\n left = window.innerWidth / 2 - popWidth / 2 + window.screenX,\n top = window.innerHeight / 2 - popHeight / 2 + window.screenY,\n popParams = 'scrollbars=no, width=' + popWidth + ', height=' + popHeight + ', top=' + top + ', left=' + left,\n newWindow = window.open(sharer.shareUrl, '', popParams);\n\n if (window.focus) {\n newWindow.focus();\n }\n }\n },\n };\n\n // adding sharer events on domcontentload\n if (document.readyState === 'complete' || document.readyState !== 'loading') {\n Sharer.init();\n } else {\n document.addEventListener('DOMContentLoaded', Sharer.init);\n }\n\n // exporting sharer for external usage\n window.Sharer = Sharer;\n})(window, document);\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=e||self).GLightbox=t()}(this,(function(){\"use strict\";function e(t){return(e=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(t)}function t(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function i(e,t){for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:null,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=e[s]=e[s]||[],l={all:n,evt:null,found:null};return t&&i&&P(n)>0&&o(n,(function(e,n){if(e.eventName==t&&e.fn.toString()==i.toString())return l.found=!0,l.evt=n,!1})),l}function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=t.onElement,n=t.withCallback,s=t.avoidDuplicate,l=void 0===s||s,a=t.once,h=void 0!==a&&a,d=t.useCapture,c=void 0!==d&&d,u=arguments.length>2?arguments[2]:void 0,g=i||[];function v(e){T(n)&&n.call(u,e,this),h&&v.destroy()}return C(g)&&(g=document.querySelectorAll(g)),v.destroy=function(){o(g,(function(t){var i=r(t,e,v);i.found&&i.all.splice(i.evt,1),t.removeEventListener&&t.removeEventListener(e,v,c)}))},o(g,(function(t){var i=r(t,e,v);(t.addEventListener&&l&&!i.found||!l)&&(t.addEventListener(e,v,c),i.all.push({eventName:e,fn:v}))})),v}function h(e,t){o(t.split(\" \"),(function(t){return e.classList.add(t)}))}function d(e,t){o(t.split(\" \"),(function(t){return e.classList.remove(t)}))}function c(e,t){return e.classList.contains(t)}function u(e,t){for(;e!==document.body;){if(!(e=e.parentElement))return!1;if(\"function\"==typeof e.matches?e.matches(t):e.msMatchesSelector(t))return e}}function g(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"\",i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!e||\"\"===t)return!1;if(\"none\"===t)return T(i)&&i(),!1;var n=x(),s=t.split(\" \");o(s,(function(t){h(e,\"g\"+t)})),a(n,{onElement:e,avoidDuplicate:!1,once:!0,withCallback:function(e,t){o(s,(function(e){d(t,\"g\"+e)})),T(i)&&i()}})}function v(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"\";if(\"\"===t)return e.style.webkitTransform=\"\",e.style.MozTransform=\"\",e.style.msTransform=\"\",e.style.OTransform=\"\",e.style.transform=\"\",!1;e.style.webkitTransform=t,e.style.MozTransform=t,e.style.msTransform=t,e.style.OTransform=t,e.style.transform=t}function f(e){e.style.display=\"block\"}function p(e){e.style.display=\"none\"}function m(e){var t=document.createDocumentFragment(),i=document.createElement(\"div\");for(i.innerHTML=e;i.firstChild;)t.appendChild(i.firstChild);return t}function y(){return{width:window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,height:window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight}}function x(){var e,t=document.createElement(\"fakeelement\"),i={animation:\"animationend\",OAnimation:\"oAnimationEnd\",MozAnimation:\"animationend\",WebkitAnimation:\"webkitAnimationEnd\"};for(e in i)if(void 0!==t.style[e])return i[e]}function b(e,t,i,n){if(e())t();else{var s;i||(i=100);var l=setInterval((function(){e()&&(clearInterval(l),s&&clearTimeout(s),t())}),i);n&&(s=setTimeout((function(){clearInterval(l)}),n))}}function S(e,t,i){if(I(e))console.error(\"Inject assets error\");else if(T(t)&&(i=t,t=!1),C(t)&&t in window)T(i)&&i();else{var n;if(-1!==e.indexOf(\".css\")){if((n=document.querySelectorAll('link[href=\"'+e+'\"]'))&&n.length>0)return void(T(i)&&i());var s=document.getElementsByTagName(\"head\")[0],l=s.querySelectorAll('link[rel=\"stylesheet\"]'),o=document.createElement(\"link\");return o.rel=\"stylesheet\",o.type=\"text/css\",o.href=e,o.media=\"all\",l?s.insertBefore(o,l[0]):s.appendChild(o),void(T(i)&&i())}if((n=document.querySelectorAll('script[src=\"'+e+'\"]'))&&n.length>0){if(T(i)){if(C(t))return b((function(){return void 0!==window[t]}),(function(){i()})),!1;i()}}else{var r=document.createElement(\"script\");r.type=\"text/javascript\",r.src=e,r.onload=function(){if(T(i)){if(C(t))return b((function(){return void 0!==window[t]}),(function(){i()})),!1;i()}},document.body.appendChild(r)}}}function w(){return\"navigator\"in window&&window.navigator.userAgent.match(/(iPad)|(iPhone)|(iPod)|(Android)|(PlayBook)|(BB10)|(BlackBerry)|(Opera Mini)|(IEMobile)|(webOS)|(MeeGo)/i)}function T(e){return\"function\"==typeof e}function C(e){return\"string\"==typeof e}function k(e){return!(!e||!e.nodeType||1!=e.nodeType)}function E(e){return Array.isArray(e)}function A(e){return e&&e.length&&isFinite(e.length)}function L(t){return\"object\"===e(t)&&null!=t&&!T(t)&&!E(t)}function I(e){return null==e}function O(e,t){return null!==e&&hasOwnProperty.call(e,t)}function P(e){if(L(e)){if(e.keys)return e.keys().length;var t=0;for(var i in e)O(e,i)&&t++;return t}return e.length}function M(e){return!isNaN(parseFloat(e))&&isFinite(e)}function z(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1,t=document.querySelectorAll(\".gbtn[data-taborder]:not(.disabled)\");if(!t.length)return!1;if(1==t.length)return t[0];\"string\"==typeof e&&(e=parseInt(e));var i=[];o(t,(function(e){i.push(e.getAttribute(\"data-taborder\"))}));var n=Math.max.apply(Math,i.map((function(e){return parseInt(e)}))),s=e<0?1:e+1;s>n&&(s=\"1\");var l=i.filter((function(e){return e>=parseInt(s)})),r=l.sort()[0];return document.querySelector('.gbtn[data-taborder=\"'.concat(r,'\"]'))}function X(e){if(e.events.hasOwnProperty(\"keyboard\"))return!1;e.events.keyboard=a(\"keydown\",{onElement:window,withCallback:function(t,i){var n=(t=t||window.event).keyCode;if(9==n){var s=document.querySelector(\".gbtn.focused\");if(!s){var l=!(!document.activeElement||!document.activeElement.nodeName)&&document.activeElement.nodeName.toLocaleLowerCase();if(\"input\"==l||\"textarea\"==l||\"button\"==l)return}t.preventDefault();var o=document.querySelectorAll(\".gbtn[data-taborder]\");if(!o||o.length<=0)return;if(!s){var r=z();return void(r&&(r.focus(),h(r,\"focused\")))}var a=z(s.getAttribute(\"data-taborder\"));d(s,\"focused\"),a&&(a.focus(),h(a,\"focused\"))}39==n&&e.nextSlide(),37==n&&e.prevSlide(),27==n&&e.close()}})}function Y(e){return Math.sqrt(e.x*e.x+e.y*e.y)}function q(e,t){var i=function(e,t){var i=Y(e)*Y(t);if(0===i)return 0;var n=function(e,t){return e.x*t.x+e.y*t.y}(e,t)/i;return n>1&&(n=1),Math.acos(n)}(e,t);return function(e,t){return e.x*t.y-t.x*e.y}(e,t)>0&&(i*=-1),180*i/Math.PI}var N=function(){function e(i){t(this,e),this.handlers=[],this.el=i}return n(e,[{key:\"add\",value:function(e){this.handlers.push(e)}},{key:\"del\",value:function(e){e||(this.handlers=[]);for(var t=this.handlers.length;t>=0;t--)this.handlers[t]===e&&this.handlers.splice(t,1)}},{key:\"dispatch\",value:function(){for(var e=0,t=this.handlers.length;e=0)console.log(\"ignore drag for this touched element\",e.target.nodeName.toLowerCase());else{this.now=Date.now(),this.x1=e.touches[0].pageX,this.y1=e.touches[0].pageY,this.delta=this.now-(this.last||this.now),this.touchStart.dispatch(e,this.element),null!==this.preTapPosition.x&&(this.isDoubleTap=this.delta>0&&this.delta<=250&&Math.abs(this.preTapPosition.x-this.x1)<30&&Math.abs(this.preTapPosition.y-this.y1)<30,this.isDoubleTap&&clearTimeout(this.singleTapTimeout)),this.preTapPosition.x=this.x1,this.preTapPosition.y=this.y1,this.last=this.now;var t=this.preV;if(e.touches.length>1){this._cancelLongTap(),this._cancelSingleTap();var i={x:e.touches[1].pageX-this.x1,y:e.touches[1].pageY-this.y1};t.x=i.x,t.y=i.y,this.pinchStartLen=Y(t),this.multipointStart.dispatch(e,this.element)}this._preventTap=!1,this.longTapTimeout=setTimeout(function(){this.longTap.dispatch(e,this.element),this._preventTap=!0}.bind(this),750)}}}},{key:\"move\",value:function(e){if(e.touches){var t=this.preV,i=e.touches.length,n=e.touches[0].pageX,s=e.touches[0].pageY;if(this.isDoubleTap=!1,i>1){var l=e.touches[1].pageX,o=e.touches[1].pageY,r={x:e.touches[1].pageX-n,y:e.touches[1].pageY-s};null!==t.x&&(this.pinchStartLen>0&&(e.zoom=Y(r)/this.pinchStartLen,this.pinch.dispatch(e,this.element)),e.angle=q(r,t),this.rotate.dispatch(e,this.element)),t.x=r.x,t.y=r.y,null!==this.x2&&null!==this.sx2?(e.deltaX=(n-this.x2+l-this.sx2)/2,e.deltaY=(s-this.y2+o-this.sy2)/2):(e.deltaX=0,e.deltaY=0),this.twoFingerPressMove.dispatch(e,this.element),this.sx2=l,this.sy2=o}else{if(null!==this.x2){e.deltaX=n-this.x2,e.deltaY=s-this.y2;var a=Math.abs(this.x1-this.x2),h=Math.abs(this.y1-this.y2);(a>10||h>10)&&(this._preventTap=!0)}else e.deltaX=0,e.deltaY=0;this.pressMove.dispatch(e,this.element)}this.touchMove.dispatch(e,this.element),this._cancelLongTap(),this.x2=n,this.y2=s,i>1&&e.preventDefault()}}},{key:\"end\",value:function(e){if(e.changedTouches){this._cancelLongTap();var t=this;e.touches.length<2&&(this.multipointEnd.dispatch(e,this.element),this.sx2=this.sy2=null),this.x2&&Math.abs(this.x1-this.x2)>30||this.y2&&Math.abs(this.y1-this.y2)>30?(e.direction=this._swipeDirection(this.x1,this.x2,this.y1,this.y2),this.swipeTimeout=setTimeout((function(){t.swipe.dispatch(e,t.element)}),0)):(this.tapTimeout=setTimeout((function(){t._preventTap||t.tap.dispatch(e,t.element),t.isDoubleTap&&(t.doubleTap.dispatch(e,t.element),t.isDoubleTap=!1)}),0),t.isDoubleTap||(t.singleTapTimeout=setTimeout((function(){t.singleTap.dispatch(e,t.element)}),250))),this.touchEnd.dispatch(e,this.element),this.preV.x=0,this.preV.y=0,this.zoom=1,this.pinchStartLen=null,this.x1=this.x2=this.y1=this.y2=null}}},{key:\"cancelAll\",value:function(){this._preventTap=!0,clearTimeout(this.singleTapTimeout),clearTimeout(this.tapTimeout),clearTimeout(this.longTapTimeout),clearTimeout(this.swipeTimeout)}},{key:\"cancel\",value:function(e){this.cancelAll(),this.touchCancel.dispatch(e,this.element)}},{key:\"_cancelLongTap\",value:function(){clearTimeout(this.longTapTimeout)}},{key:\"_cancelSingleTap\",value:function(){clearTimeout(this.singleTapTimeout)}},{key:\"_swipeDirection\",value:function(e,t,i,n){return Math.abs(e-t)>=Math.abs(i-n)?e-t>0?\"Left\":\"Right\":i-n>0?\"Up\":\"Down\"}},{key:\"on\",value:function(e,t){this[e]&&this[e].add(t)}},{key:\"off\",value:function(e,t){this[e]&&this[e].del(t)}},{key:\"destroy\",value:function(){return this.singleTapTimeout&&clearTimeout(this.singleTapTimeout),this.tapTimeout&&clearTimeout(this.tapTimeout),this.longTapTimeout&&clearTimeout(this.longTapTimeout),this.swipeTimeout&&clearTimeout(this.swipeTimeout),this.element.removeEventListener(\"touchstart\",this.start),this.element.removeEventListener(\"touchmove\",this.move),this.element.removeEventListener(\"touchend\",this.end),this.element.removeEventListener(\"touchcancel\",this.cancel),this.rotate.del(),this.touchStart.del(),this.multipointStart.del(),this.multipointEnd.del(),this.pinch.del(),this.swipe.del(),this.tap.del(),this.doubleTap.del(),this.longTap.del(),this.singleTap.del(),this.pressMove.del(),this.twoFingerPressMove.del(),this.touchMove.del(),this.touchEnd.del(),this.touchCancel.del(),this.preV=this.pinchStartLen=this.zoom=this.isDoubleTap=this.delta=this.last=this.now=this.tapTimeout=this.singleTapTimeout=this.longTapTimeout=this.swipeTimeout=this.x1=this.x2=this.y1=this.y2=this.preTapPosition=this.rotate=this.touchStart=this.multipointStart=this.multipointEnd=this.pinch=this.swipe=this.tap=this.doubleTap=this.longTap=this.singleTap=this.pressMove=this.touchMove=this.touchEnd=this.touchCancel=this.twoFingerPressMove=null,window.removeEventListener(\"scroll\",this._cancelAllHandler),null}}]),e}();function W(e){var t=function(){var e,t=document.createElement(\"fakeelement\"),i={transition:\"transitionend\",OTransition:\"oTransitionEnd\",MozTransition:\"transitionend\",WebkitTransition:\"webkitTransitionEnd\"};for(e in i)if(void 0!==t.style[e])return i[e]}(),i=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,n=c(e,\"gslide-media\")?e:e.querySelector(\".gslide-media\"),s=u(n,\".ginner-container\"),l=e.querySelector(\".gslide-description\");i>769&&(n=s),h(n,\"greset\"),v(n,\"translate3d(0, 0, 0)\"),a(t,{onElement:n,once:!0,withCallback:function(e,t){d(n,\"greset\")}}),n.style.opacity=\"\",l&&(l.style.opacity=\"\")}function B(e){if(e.events.hasOwnProperty(\"touch\"))return!1;var t,i,n,s=y(),l=s.width,o=s.height,r=!1,a=null,g=null,f=null,p=!1,m=1,x=1,b=!1,S=!1,w=null,T=null,C=null,k=null,E=0,A=0,L=!1,I=!1,O={},P={},M=0,z=0,X=document.getElementById(\"glightbox-slider\"),Y=document.querySelector(\".goverlay\"),q=new _(X,{touchStart:function(t){if(r=!0,(c(t.targetTouches[0].target,\"ginner-container\")||u(t.targetTouches[0].target,\".gslide-desc\")||\"a\"==t.targetTouches[0].target.nodeName.toLowerCase())&&(r=!1),u(t.targetTouches[0].target,\".gslide-inline\")&&!c(t.targetTouches[0].target.parentNode,\"gslide-inline\")&&(r=!1),r){if(P=t.targetTouches[0],O.pageX=t.targetTouches[0].pageX,O.pageY=t.targetTouches[0].pageY,M=t.targetTouches[0].clientX,z=t.targetTouches[0].clientY,a=e.activeSlide,g=a.querySelector(\".gslide-media\"),n=a.querySelector(\".gslide-inline\"),f=null,c(g,\"gslide-image\")&&(f=g.querySelector(\"img\")),(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)>769&&(g=a.querySelector(\".ginner-container\")),d(Y,\"greset\"),t.pageX>20&&t.pageXo){var a=O.pageX-P.pageX;if(Math.abs(a)<=13)return!1}p=!0;var h,d=s.targetTouches[0].clientX,c=s.targetTouches[0].clientY,u=M-d,m=z-c;if(Math.abs(u)>Math.abs(m)?(L=!1,I=!0):(I=!1,L=!0),t=P.pageX-O.pageX,E=100*t/l,i=P.pageY-O.pageY,A=100*i/o,L&&f&&(h=1-Math.abs(i)/o,Y.style.opacity=h,e.settings.touchFollowAxis&&(E=0)),I&&(h=1-Math.abs(t)/l,g.style.opacity=h,e.settings.touchFollowAxis&&(A=0)),!f)return v(g,\"translate3d(\".concat(E,\"%, 0, 0)\"));v(g,\"translate3d(\".concat(E,\"%, \").concat(A,\"%, 0)\"))}},touchEnd:function(){if(r){if(p=!1,S||b)return C=w,void(k=T);var t=Math.abs(parseInt(A)),i=Math.abs(parseInt(E));if(!(t>29&&f))return t<29&&i<25?(h(Y,\"greset\"),Y.style.opacity=1,W(g)):void 0;e.close()}},multipointEnd:function(){setTimeout((function(){b=!1}),50)},multipointStart:function(){b=!0,m=x||1},pinch:function(e){if(!f||p)return!1;b=!0,f.scaleX=f.scaleY=m*e.zoom;var t=m*e.zoom;if(S=!0,t<=1)return S=!1,t=1,k=null,C=null,w=null,T=null,void f.setAttribute(\"style\",\"\");t>4.5&&(t=4.5),f.style.transform=\"scale3d(\".concat(t,\", \").concat(t,\", 1)\"),x=t},pressMove:function(e){if(S&&!b){var t=P.pageX-O.pageX,i=P.pageY-O.pageY;C&&(t+=C),k&&(i+=k),w=t,T=i;var n=\"translate3d(\".concat(t,\"px, \").concat(i,\"px, 0)\");x&&(n+=\" scale3d(\".concat(x,\", \").concat(x,\", 1)\")),v(f,n)}},swipe:function(t){if(!S)if(b)b=!1;else{if(\"Left\"==t.direction){if(e.index==e.elements.length-1)return W(g);e.nextSlide()}if(\"Right\"==t.direction){if(0==e.index)return W(g);e.prevSlide()}}}});e.events.touch=q}var H=function(){function e(i,n){var s=this,l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(t(this,e),this.img=i,this.slide=n,this.onclose=l,this.img.setZoomEvents)return!1;this.active=!1,this.zoomedIn=!1,this.dragging=!1,this.currentX=null,this.currentY=null,this.initialX=null,this.initialY=null,this.xOffset=0,this.yOffset=0,this.img.addEventListener(\"mousedown\",(function(e){return s.dragStart(e)}),!1),this.img.addEventListener(\"mouseup\",(function(e){return s.dragEnd(e)}),!1),this.img.addEventListener(\"mousemove\",(function(e){return s.drag(e)}),!1),this.img.addEventListener(\"click\",(function(e){return s.slide.classList.contains(\"dragging-nav\")?(s.zoomOut(),!1):s.zoomedIn?void(s.zoomedIn&&!s.dragging&&s.zoomOut()):s.zoomIn()}),!1),this.img.setZoomEvents=!0}return n(e,[{key:\"zoomIn\",value:function(){var e=this.widowWidth();if(!(this.zoomedIn||e<=768)){var t=this.img;if(t.setAttribute(\"data-style\",t.getAttribute(\"style\")),t.style.maxWidth=t.naturalWidth+\"px\",t.style.maxHeight=t.naturalHeight+\"px\",t.naturalWidth>e){var i=e/2-t.naturalWidth/2;this.setTranslate(this.img.parentNode,i,0)}this.slide.classList.add(\"zoomed\"),this.zoomedIn=!0}}},{key:\"zoomOut\",value:function(){this.img.parentNode.setAttribute(\"style\",\"\"),this.img.setAttribute(\"style\",this.img.getAttribute(\"data-style\")),this.slide.classList.remove(\"zoomed\"),this.zoomedIn=!1,this.currentX=null,this.currentY=null,this.initialX=null,this.initialY=null,this.xOffset=0,this.yOffset=0,this.onclose&&\"function\"==typeof this.onclose&&this.onclose()}},{key:\"dragStart\",value:function(e){e.preventDefault(),this.zoomedIn?(\"touchstart\"===e.type?(this.initialX=e.touches[0].clientX-this.xOffset,this.initialY=e.touches[0].clientY-this.yOffset):(this.initialX=e.clientX-this.xOffset,this.initialY=e.clientY-this.yOffset),e.target===this.img&&(this.active=!0,this.img.classList.add(\"dragging\"))):this.active=!1}},{key:\"dragEnd\",value:function(e){var t=this;e.preventDefault(),this.initialX=this.currentX,this.initialY=this.currentY,this.active=!1,setTimeout((function(){t.dragging=!1,t.img.isDragging=!1,t.img.classList.remove(\"dragging\")}),100)}},{key:\"drag\",value:function(e){this.active&&(e.preventDefault(),\"touchmove\"===e.type?(this.currentX=e.touches[0].clientX-this.initialX,this.currentY=e.touches[0].clientY-this.initialY):(this.currentX=e.clientX-this.initialX,this.currentY=e.clientY-this.initialY),this.xOffset=this.currentX,this.yOffset=this.currentY,this.img.isDragging=!0,this.dragging=!0,this.setTranslate(this.img,this.currentX,this.currentY))}},{key:\"onMove\",value:function(e){if(this.zoomedIn){var t=e.clientX-this.img.naturalWidth/2,i=e.clientY-this.img.naturalHeight/2;this.setTranslate(this.img,t,i)}}},{key:\"setTranslate\",value:function(e,t,i){e.style.transform=\"translate3d(\"+t+\"px, \"+i+\"px, 0)\"}},{key:\"widowWidth\",value:function(){return window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth}}]),e}(),V=function(){function e(){var i=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t(this,e);var s=n.dragEl,l=n.toleranceX,o=void 0===l?40:l,r=n.toleranceY,a=void 0===r?65:r,h=n.slide,d=void 0===h?null:h,c=n.instance,u=void 0===c?null:c;this.el=s,this.active=!1,this.dragging=!1,this.currentX=null,this.currentY=null,this.initialX=null,this.initialY=null,this.xOffset=0,this.yOffset=0,this.direction=null,this.lastDirection=null,this.toleranceX=o,this.toleranceY=a,this.toleranceReached=!1,this.dragContainer=this.el,this.slide=d,this.instance=u,this.el.addEventListener(\"mousedown\",(function(e){return i.dragStart(e)}),!1),this.el.addEventListener(\"mouseup\",(function(e){return i.dragEnd(e)}),!1),this.el.addEventListener(\"mousemove\",(function(e){return i.drag(e)}),!1)}return n(e,[{key:\"dragStart\",value:function(e){if(this.slide.classList.contains(\"zoomed\"))this.active=!1;else{\"touchstart\"===e.type?(this.initialX=e.touches[0].clientX-this.xOffset,this.initialY=e.touches[0].clientY-this.yOffset):(this.initialX=e.clientX-this.xOffset,this.initialY=e.clientY-this.yOffset);var t=e.target.nodeName.toLowerCase();e.target.classList.contains(\"nodrag\")||u(e.target,\".nodrag\")||-1!==[\"input\",\"select\",\"textarea\",\"button\",\"a\"].indexOf(t)?this.active=!1:(e.preventDefault(),(e.target===this.el||\"img\"!==t&&u(e.target,\".gslide-inline\"))&&(this.active=!0,this.el.classList.add(\"dragging\"),this.dragContainer=u(e.target,\".ginner-container\")))}}},{key:\"dragEnd\",value:function(e){var t=this;e&&e.preventDefault(),this.initialX=0,this.initialY=0,this.currentX=null,this.currentY=null,this.initialX=null,this.initialY=null,this.xOffset=0,this.yOffset=0,this.active=!1,this.doSlideChange&&(this.instance.preventOutsideClick=!0,\"right\"==this.doSlideChange&&this.instance.prevSlide(),\"left\"==this.doSlideChange&&this.instance.nextSlide()),this.doSlideClose&&this.instance.close(),this.toleranceReached||this.setTranslate(this.dragContainer,0,0,!0),setTimeout((function(){t.instance.preventOutsideClick=!1,t.toleranceReached=!1,t.lastDirection=null,t.dragging=!1,t.el.isDragging=!1,t.el.classList.remove(\"dragging\"),t.slide.classList.remove(\"dragging-nav\"),t.dragContainer.style.transform=\"\",t.dragContainer.style.transition=\"\"}),100)}},{key:\"drag\",value:function(e){if(this.active){e.preventDefault(),this.slide.classList.add(\"dragging-nav\"),\"touchmove\"===e.type?(this.currentX=e.touches[0].clientX-this.initialX,this.currentY=e.touches[0].clientY-this.initialY):(this.currentX=e.clientX-this.initialX,this.currentY=e.clientY-this.initialY),this.xOffset=this.currentX,this.yOffset=this.currentY,this.el.isDragging=!0,this.dragging=!0,this.doSlideChange=!1,this.doSlideClose=!1;var t=Math.abs(this.currentX),i=Math.abs(this.currentY);if(t>0&&t>=Math.abs(this.currentY)&&(!this.lastDirection||\"x\"==this.lastDirection)){this.yOffset=0,this.lastDirection=\"x\",this.setTranslate(this.dragContainer,this.currentX,0);var n=this.shouldChange();if(!this.instance.settings.dragAutoSnap&&n&&(this.doSlideChange=n),this.instance.settings.dragAutoSnap&&n)return this.instance.preventOutsideClick=!0,this.toleranceReached=!0,this.active=!1,this.instance.preventOutsideClick=!0,this.dragEnd(null),\"right\"==n&&this.instance.prevSlide(),void(\"left\"==n&&this.instance.nextSlide())}if(this.toleranceY>0&&i>0&&i>=t&&(!this.lastDirection||\"y\"==this.lastDirection)){this.xOffset=0,this.lastDirection=\"y\",this.setTranslate(this.dragContainer,0,this.currentY);var s=this.shouldClose();return!this.instance.settings.dragAutoSnap&&s&&(this.doSlideClose=!0),void(this.instance.settings.dragAutoSnap&&s&&this.instance.close())}}}},{key:\"shouldChange\",value:function(){var e=!1;if(Math.abs(this.currentX)>=this.toleranceX){var t=this.currentX>0?\"right\":\"left\";(\"left\"==t&&this.slide!==this.slide.parentNode.lastChild||\"right\"==t&&this.slide!==this.slide.parentNode.firstChild)&&(e=t)}return e}},{key:\"shouldClose\",value:function(){var e=!1;return Math.abs(this.currentY)>=this.toleranceY&&(e=!0),e}},{key:\"setTranslate\",value:function(e,t,i){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];e.style.transition=n?\"all .2s ease\":\"\",e.style.transform=\"translate3d(\".concat(t,\"px, \").concat(i,\"px, 0)\")}}]),e}();function j(e,t,i,n){var s=e.querySelector(\".gslide-media\"),l=new Image,o=\"gSlideTitle_\"+i,r=\"gSlideDesc_\"+i;l.addEventListener(\"load\",(function(){T(n)&&n()}),!1),l.src=t.href,\"\"!=t.sizes&&\"\"!=t.srcset&&(l.sizes=t.sizes,l.srcset=t.srcset),l.alt=\"\",I(t.alt)||\"\"===t.alt||(l.alt=t.alt),\"\"!==t.title&&l.setAttribute(\"aria-labelledby\",o),\"\"!==t.description&&l.setAttribute(\"aria-describedby\",r),t.hasOwnProperty(\"_hasCustomWidth\")&&t._hasCustomWidth&&(l.style.width=t.width),t.hasOwnProperty(\"_hasCustomHeight\")&&t._hasCustomHeight&&(l.style.height=t.height),s.insertBefore(l,s.firstChild)}function F(e,t,i,n){var s=this,l=e.querySelector(\".ginner-container\"),o=\"gvideo\"+i,r=e.querySelector(\".gslide-media\"),a=this.getAllPlayers();h(l,\"gvideo-container\"),r.insertBefore(m('
'),r.firstChild);var d=e.querySelector(\".gvideo-wrapper\");S(this.settings.plyr.css,\"Plyr\");var c=t.href,u=null==t?void 0:t.videoProvider,g=!1;r.style.maxWidth=t.width,S(this.settings.plyr.js,\"Plyr\",(function(){if(!u&&c.match(/vimeo\\.com\\/([0-9]*)/)&&(u=\"vimeo\"),!u&&(c.match(/(youtube\\.com|youtube-nocookie\\.com)\\/watch\\?v=([a-zA-Z0-9\\-_]+)/)||c.match(/youtu\\.be\\/([a-zA-Z0-9\\-_]+)/)||c.match(/(youtube\\.com|youtube-nocookie\\.com)\\/embed\\/([a-zA-Z0-9\\-_]+)/))&&(u=\"youtube\"),\"local\"===u||!u){u=\"local\";var l='\")}var r=g||m('
'));h(d,\"\".concat(u,\"-video gvideo\")),d.appendChild(r),d.setAttribute(\"data-id\",o),d.setAttribute(\"data-index\",i);var v=O(s.settings.plyr,\"config\")?s.settings.plyr.config:{},f=new Plyr(\"#\"+o,v);f.on(\"ready\",(function(e){a[o]=e.detail.plyr,T(n)&&n()})),b((function(){return e.querySelector(\"iframe\")&&\"true\"==e.querySelector(\"iframe\").dataset.ready}),(function(){s.resize(e)})),f.on(\"enterfullscreen\",R),f.on(\"exitfullscreen\",R)}))}function R(e){var t=u(e.target,\".gslide-media\");\"enterfullscreen\"===e.type&&h(t,\"fullscreen\"),\"exitfullscreen\"===e.type&&d(t,\"fullscreen\")}function G(e,t,i,n){var s,l=this,o=e.querySelector(\".gslide-media\"),r=!(!O(t,\"href\")||!t.href)&&t.href.split(\"#\").pop().trim(),d=!(!O(t,\"content\")||!t.content)&&t.content;if(d&&(C(d)&&(s=m('
'.concat(d,\"
\"))),k(d))){\"none\"==d.style.display&&(d.style.display=\"block\");var c=document.createElement(\"div\");c.className=\"ginlined-content\",c.appendChild(d),s=c}if(r){var u=document.getElementById(r);if(!u)return!1;var g=u.cloneNode(!0);g.style.height=t.height,g.style.maxWidth=t.width,h(g,\"ginlined-content\"),s=g}if(!s)return console.error(\"Unable to append inline slide content\",t),!1;o.style.height=t.height,o.style.width=t.width,o.appendChild(s),this.events[\"inlineclose\"+r]=a(\"click\",{onElement:o.querySelectorAll(\".gtrigger-close\"),withCallback:function(e){e.preventDefault(),l.close()}}),T(n)&&n()}function Z(e,t,i,n){var s=e.querySelector(\".gslide-media\"),l=function(e){var t=e.url,i=e.allow,n=e.callback,s=e.appendTo,l=document.createElement(\"iframe\");return l.className=\"vimeo-video gvideo\",l.src=t,l.style.width=\"100%\",l.style.height=\"100%\",i&&l.setAttribute(\"allow\",i),l.onload=function(){l.onload=null,h(l,\"node-ready\"),T(n)&&n()},s&&s.appendChild(l),l}({url:t.href,callback:n});s.parentNode.style.maxWidth=t.width,s.parentNode.style.height=t.height,s.appendChild(l)}var U=function(){function e(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t(this,e),this.defaults={href:\"\",sizes:\"\",srcset:\"\",title:\"\",type:\"\",videoProvider:\"\",description:\"\",alt:\"\",descPosition:\"bottom\",effect:\"\",width:\"\",height:\"\",content:!1,zoomable:!0,draggable:!0},L(i)&&(this.defaults=l(this.defaults,i))}return n(e,[{key:\"sourceType\",value:function(e){var t=e;if(null!==(e=e.toLowerCase()).match(/\\.(jpeg|jpg|jpe|gif|png|apn|webp|avif|svg)/))return\"image\";if(e.match(/(youtube\\.com|youtube-nocookie\\.com)\\/watch\\?v=([a-zA-Z0-9\\-_]+)/)||e.match(/youtu\\.be\\/([a-zA-Z0-9\\-_]+)/)||e.match(/(youtube\\.com|youtube-nocookie\\.com)\\/embed\\/([a-zA-Z0-9\\-_]+)/))return\"video\";if(e.match(/vimeo\\.com\\/([0-9]*)/))return\"video\";if(null!==e.match(/\\.(mp4|ogg|webm|mov)/))return\"video\";if(null!==e.match(/\\.(mp3|wav|wma|aac|ogg)/))return\"audio\";if(e.indexOf(\"#\")>-1&&\"\"!==t.split(\"#\").pop().trim())return\"inline\";return e.indexOf(\"goajax=true\")>-1?\"ajax\":\"external\"}},{key:\"parseConfig\",value:function(e,t){var i=this,n=l({descPosition:t.descPosition},this.defaults);if(L(e)&&!k(e)){O(e,\"type\")||(O(e,\"content\")&&e.content?e.type=\"inline\":O(e,\"href\")&&(e.type=this.sourceType(e.href)));var s=l(n,e);return this.setSize(s,t),s}var r=\"\",a=e.getAttribute(\"data-glightbox\"),h=e.nodeName.toLowerCase();if(\"a\"===h&&(r=e.href),\"img\"===h&&(r=e.src,n.alt=e.alt),n.href=r,o(n,(function(s,l){O(t,l)&&\"width\"!==l&&(n[l]=t[l]);var o=e.dataset[l];I(o)||(n[l]=i.sanitizeValue(o))})),n.content&&(n.type=\"inline\"),!n.type&&r&&(n.type=this.sourceType(r)),I(a)){if(!n.title&&\"a\"==h){var d=e.title;I(d)||\"\"===d||(n.title=d)}if(!n.title&&\"img\"==h){var c=e.alt;I(c)||\"\"===c||(n.title=c)}}else{var u=[];o(n,(function(e,t){u.push(\";\\\\s?\"+t)})),u=u.join(\"\\\\s?:|\"),\"\"!==a.trim()&&o(n,(function(e,t){var s=a,l=new RegExp(\"s?\"+t+\"s?:s?(.*?)(\"+u+\"s?:|$)\"),o=s.match(l);if(o&&o.length&&o[1]){var r=o[1].trim().replace(/;\\s*$/,\"\");n[t]=i.sanitizeValue(r)}}))}if(n.description&&\".\"===n.description.substring(0,1)){var g;try{g=document.querySelector(n.description).innerHTML}catch(e){if(!(e instanceof DOMException))throw e}g&&(n.description=g)}if(!n.description){var v=e.querySelector(\".glightbox-desc\");v&&(n.description=v.innerHTML)}return this.setSize(n,t,e),this.slideConfig=n,n}},{key:\"setSize\",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=\"video\"==e.type?this.checkSize(t.videosWidth):this.checkSize(t.width),s=this.checkSize(t.height);return e.width=O(e,\"width\")&&\"\"!==e.width?this.checkSize(e.width):n,e.height=O(e,\"height\")&&\"\"!==e.height?this.checkSize(e.height):s,i&&\"image\"==e.type&&(e._hasCustomWidth=!!i.dataset.width,e._hasCustomHeight=!!i.dataset.height),e}},{key:\"checkSize\",value:function(e){return M(e)?\"\".concat(e,\"px\"):e}},{key:\"sanitizeValue\",value:function(e){return\"true\"!==e&&\"false\"!==e?e:\"true\"===e}}]),e}(),$=function(){function e(i,n,s){t(this,e),this.element=i,this.instance=n,this.index=s}return n(e,[{key:\"setContent\",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(c(t,\"loaded\"))return!1;var n=this.instance.settings,s=this.slideConfig,l=w();T(n.beforeSlideLoad)&&n.beforeSlideLoad({index:this.index,slide:t,player:!1});var o=s.type,r=s.descPosition,a=t.querySelector(\".gslide-media\"),d=t.querySelector(\".gslide-title\"),u=t.querySelector(\".gslide-desc\"),g=t.querySelector(\".gdesc-inner\"),v=i,f=\"gSlideTitle_\"+this.index,p=\"gSlideDesc_\"+this.index;if(T(n.afterSlideLoad)&&(v=function(){T(i)&&i(),n.afterSlideLoad({index:e.index,slide:t,player:e.instance.getSlidePlayerInstance(e.index)})}),\"\"==s.title&&\"\"==s.description?g&&g.parentNode.parentNode.removeChild(g.parentNode):(d&&\"\"!==s.title?(d.id=f,d.innerHTML=s.title):d.parentNode.removeChild(d),u&&\"\"!==s.description?(u.id=p,l&&n.moreLength>0?(s.smallDescription=this.slideShortDesc(s.description,n.moreLength,n.moreText),u.innerHTML=s.smallDescription,this.descriptionEvents(u,s)):u.innerHTML=s.description):u.parentNode.removeChild(u),h(a.parentNode,\"desc-\".concat(r)),h(g.parentNode,\"description-\".concat(r))),h(a,\"gslide-\".concat(o)),h(t,\"loaded\"),\"video\"!==o){if(\"external\"!==o)return\"inline\"===o?(G.apply(this.instance,[t,s,this.index,v]),void(s.draggable&&new V({dragEl:t.querySelector(\".gslide-inline\"),toleranceX:n.dragToleranceX,toleranceY:n.dragToleranceY,slide:t,instance:this.instance}))):void(\"image\"!==o?T(v)&&v():j(t,s,this.index,(function(){var i=t.querySelector(\"img\");s.draggable&&new V({dragEl:i,toleranceX:n.dragToleranceX,toleranceY:n.dragToleranceY,slide:t,instance:e.instance}),s.zoomable&&i.naturalWidth>i.offsetWidth&&(h(i,\"zoomable\"),new H(i,t,(function(){e.instance.resize()}))),T(v)&&v()})));Z.apply(this,[t,s,this.index,v])}else F.apply(this.instance,[t,s,this.index,v])}},{key:\"slideShortDesc\",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:50,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=document.createElement(\"div\");n.innerHTML=e;var s=n.innerText,l=i;if((e=s.trim()).length<=t)return e;var o=e.substr(0,t-1);return l?(n=null,o+'... '+i+\"\"):o}},{key:\"descriptionEvents\",value:function(e,t){var i=this,n=e.querySelector(\".desc-more\");if(!n)return!1;a(\"click\",{onElement:n,withCallback:function(e,n){e.preventDefault();var s=document.body,l=u(n,\".gslide-desc\");if(!l)return!1;l.innerHTML=t.description,h(s,\"gdesc-open\");var o=a(\"click\",{onElement:[s,u(l,\".gslide-description\")],withCallback:function(e,n){\"a\"!==e.target.nodeName.toLowerCase()&&(d(s,\"gdesc-open\"),h(s,\"gdesc-closed\"),l.innerHTML=t.smallDescription,i.descriptionEvents(l,t),setTimeout((function(){d(s,\"gdesc-closed\")}),400),o.destroy())}})}})}},{key:\"create\",value:function(){return m(this.instance.settings.slideHTML)}},{key:\"getConfig\",value:function(){k(this.element)||this.element.hasOwnProperty(\"draggable\")||(this.element.draggable=this.instance.settings.draggable);var e=new U(this.instance.settings.slideExtraAttributes);return this.slideConfig=e.parseConfig(this.element,this.instance.settings),this.slideConfig}}]),e}(),J=w(),K=null!==w()||void 0!==document.createTouch||\"ontouchstart\"in window||\"onmsgesturechange\"in window||navigator.msMaxTouchPoints,Q=document.getElementsByTagName(\"html\")[0],ee={selector:\".glightbox\",elements:null,skin:\"clean\",theme:\"clean\",closeButton:!0,startAt:null,autoplayVideos:!0,autofocusVideos:!0,descPosition:\"bottom\",width:\"900px\",height:\"506px\",videosWidth:\"960px\",beforeSlideChange:null,afterSlideChange:null,beforeSlideLoad:null,afterSlideLoad:null,slideInserted:null,slideRemoved:null,slideExtraAttributes:null,onOpen:null,onClose:null,loop:!1,zoomable:!0,draggable:!0,dragAutoSnap:!1,dragToleranceX:40,dragToleranceY:65,preload:!0,oneSlidePerOpen:!1,touchNavigation:!0,touchFollowAxis:!0,keyboardNavigation:!0,closeOnOutsideClick:!0,plugins:!1,plyr:{css:\"https://cdn.plyr.io/3.6.12/plyr.css\",js:\"https://cdn.plyr.io/3.6.12/plyr.js\",config:{ratio:\"16:9\",fullscreen:{enabled:!0,iosNative:!0},youtube:{noCookie:!0,rel:0,showinfo:0,iv_load_policy:3},vimeo:{byline:!1,portrait:!1,title:!1,transparent:!1}}},openEffect:\"zoom\",closeEffect:\"zoom\",slideEffect:\"slide\",moreText:\"See more\",moreLength:60,cssEfects:{fade:{in:\"fadeIn\",out:\"fadeOut\"},zoom:{in:\"zoomIn\",out:\"zoomOut\"},slide:{in:\"slideInRight\",out:\"slideOutLeft\"},slideBack:{in:\"slideInLeft\",out:\"slideOutRight\"},none:{in:\"none\",out:\"none\"}},svg:{close:'',next:' ',prev:''},slideHTML:'
\\n
\\n
\\n
\\n
\\n
\\n
\\n

\\n
\\n
\\n
\\n
\\n
\\n
',lightboxHTML:'
\\n
\\n
\\n
\\n
\\n \\n \\n \\n
\\n
'},te=function(){function e(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t(this,e),this.customOptions=i,this.settings=l(ee,i),this.effectsClasses=this.getAnimationClasses(),this.videoPlayers={},this.apiEvents=[],this.fullElementsList=!1}return n(e,[{key:\"init\",value:function(){var e=this,t=this.getSelector();t&&(this.baseEvents=a(\"click\",{onElement:t,withCallback:function(t,i){t.preventDefault(),e.open(i)}})),this.elements=this.getElements()}},{key:\"open\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(0===this.elements.length)return!1;this.activeSlide=null,this.prevActiveSlideIndex=null,this.prevActiveSlide=null;var i=M(t)?t:this.settings.startAt;if(k(e)){var n=e.getAttribute(\"data-gallery\");n&&(this.fullElementsList=this.elements,this.elements=this.getGalleryElements(this.elements,n)),I(i)&&(i=this.getElementIndex(e))<0&&(i=0)}M(i)||(i=0),this.build(),g(this.overlay,\"none\"===this.settings.openEffect?\"none\":this.settings.cssEfects.fade.in);var s=document.body,l=window.innerWidth-document.documentElement.clientWidth;if(l>0){var o=document.createElement(\"style\");o.type=\"text/css\",o.className=\"gcss-styles\",o.innerText=\".gscrollbar-fixer {margin-right: \".concat(l,\"px}\"),document.head.appendChild(o),h(s,\"gscrollbar-fixer\")}h(s,\"glightbox-open\"),h(Q,\"glightbox-open\"),J&&(h(document.body,\"glightbox-mobile\"),this.settings.slideEffect=\"slide\"),this.showSlide(i,!0),1===this.elements.length?(h(this.prevButton,\"glightbox-button-hidden\"),h(this.nextButton,\"glightbox-button-hidden\")):(d(this.prevButton,\"glightbox-button-hidden\"),d(this.nextButton,\"glightbox-button-hidden\")),this.lightboxOpen=!0,this.trigger(\"open\"),T(this.settings.onOpen)&&this.settings.onOpen(),K&&this.settings.touchNavigation&&B(this),this.settings.keyboardNavigation&&X(this)}},{key:\"openAt\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.open(null,e)}},{key:\"showSlide\",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];f(this.loader),this.index=parseInt(t);var n=this.slidesContainer.querySelector(\".current\");n&&d(n,\"current\"),this.slideAnimateOut();var s=this.slidesContainer.querySelectorAll(\".gslide\")[t];if(c(s,\"loaded\"))this.slideAnimateIn(s,i),p(this.loader);else{f(this.loader);var l=this.elements[t],o={index:this.index,slide:s,slideNode:s,slideConfig:l.slideConfig,slideIndex:this.index,trigger:l.node,player:null};this.trigger(\"slide_before_load\",o),l.instance.setContent(s,(function(){p(e.loader),e.resize(),e.slideAnimateIn(s,i),e.trigger(\"slide_after_load\",o)}))}this.slideDescription=s.querySelector(\".gslide-description\"),this.slideDescriptionContained=this.slideDescription&&c(this.slideDescription.parentNode,\"gslide-media\"),this.settings.preload&&(this.preloadSlide(t+1),this.preloadSlide(t-1)),this.updateNavigationClasses(),this.activeSlide=s}},{key:\"preloadSlide\",value:function(e){var t=this;if(e<0||e>this.elements.length-1)return!1;if(I(this.elements[e]))return!1;var i=this.slidesContainer.querySelectorAll(\".gslide\")[e];if(c(i,\"loaded\"))return!1;var n=this.elements[e],s=n.type,l={index:e,slide:i,slideNode:i,slideConfig:n.slideConfig,slideIndex:e,trigger:n.node,player:null};this.trigger(\"slide_before_load\",l),\"video\"===s||\"external\"===s?setTimeout((function(){n.instance.setContent(i,(function(){t.trigger(\"slide_after_load\",l)}))}),200):n.instance.setContent(i,(function(){t.trigger(\"slide_after_load\",l)}))}},{key:\"prevSlide\",value:function(){this.goToSlide(this.index-1)}},{key:\"nextSlide\",value:function(){this.goToSlide(this.index+1)}},{key:\"goToSlide\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.prevActiveSlide=this.activeSlide,this.prevActiveSlideIndex=this.index,!this.loop()&&(e<0||e>this.elements.length-1))return!1;e<0?e=this.elements.length-1:e>=this.elements.length&&(e=0),this.showSlide(e)}},{key:\"insertSlide\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;t<0&&(t=this.elements.length);var i=new $(e,this,t),n=i.getConfig(),s=l({},n),o=i.create(),r=this.elements.length-1;s.index=t,s.node=!1,s.instance=i,s.slideConfig=n,this.elements.splice(t,0,s);var a=null,h=null;if(this.slidesContainer){if(t>r)this.slidesContainer.appendChild(o);else{var d=this.slidesContainer.querySelectorAll(\".gslide\")[t];this.slidesContainer.insertBefore(o,d)}(this.settings.preload&&0==this.index&&0==t||this.index-1==t||this.index+1==t)&&this.preloadSlide(t),0===this.index&&0===t&&(this.index=1),this.updateNavigationClasses(),a=this.slidesContainer.querySelectorAll(\".gslide\")[t],h=this.getSlidePlayerInstance(t),s.slideNode=a}this.trigger(\"slide_inserted\",{index:t,slide:a,slideNode:a,slideConfig:n,slideIndex:t,trigger:null,player:h}),T(this.settings.slideInserted)&&this.settings.slideInserted({index:t,slide:a,player:h})}},{key:\"removeSlide\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1;if(e<0||e>this.elements.length-1)return!1;var t=this.slidesContainer&&this.slidesContainer.querySelectorAll(\".gslide\")[e];t&&(this.getActiveSlideIndex()==e&&(e==this.elements.length-1?this.prevSlide():this.nextSlide()),t.parentNode.removeChild(t)),this.elements.splice(e,1),this.trigger(\"slide_removed\",e),T(this.settings.slideRemoved)&&this.settings.slideRemoved(e)}},{key:\"slideAnimateIn\",value:function(e,t){var i=this,n=e.querySelector(\".gslide-media\"),s=e.querySelector(\".gslide-description\"),l={index:this.prevActiveSlideIndex,slide:this.prevActiveSlide,slideNode:this.prevActiveSlide,slideIndex:this.prevActiveSlide,slideConfig:I(this.prevActiveSlideIndex)?null:this.elements[this.prevActiveSlideIndex].slideConfig,trigger:I(this.prevActiveSlideIndex)?null:this.elements[this.prevActiveSlideIndex].node,player:this.getSlidePlayerInstance(this.prevActiveSlideIndex)},o={index:this.index,slide:this.activeSlide,slideNode:this.activeSlide,slideConfig:this.elements[this.index].slideConfig,slideIndex:this.index,trigger:this.elements[this.index].node,player:this.getSlidePlayerInstance(this.index)};if(n.offsetWidth>0&&s&&(p(s),s.style.display=\"\"),d(e,this.effectsClasses),t)g(e,this.settings.cssEfects[this.settings.openEffect].in,(function(){i.settings.autoplayVideos&&i.slidePlayerPlay(e),i.trigger(\"slide_changed\",{prev:l,current:o}),T(i.settings.afterSlideChange)&&i.settings.afterSlideChange.apply(i,[l,o])}));else{var r=this.settings.slideEffect,a=\"none\"!==r?this.settings.cssEfects[r].in:r;this.prevActiveSlideIndex>this.index&&\"slide\"==this.settings.slideEffect&&(a=this.settings.cssEfects.slideBack.in),g(e,a,(function(){i.settings.autoplayVideos&&i.slidePlayerPlay(e),i.trigger(\"slide_changed\",{prev:l,current:o}),T(i.settings.afterSlideChange)&&i.settings.afterSlideChange.apply(i,[l,o])}))}setTimeout((function(){i.resize(e)}),100),h(e,\"current\")}},{key:\"slideAnimateOut\",value:function(){if(!this.prevActiveSlide)return!1;var e=this.prevActiveSlide;d(e,this.effectsClasses),h(e,\"prev\");var t=this.settings.slideEffect,i=\"none\"!==t?this.settings.cssEfects[t].out:t;this.slidePlayerPause(e),this.trigger(\"slide_before_change\",{prev:{index:this.prevActiveSlideIndex,slide:this.prevActiveSlide,slideNode:this.prevActiveSlide,slideIndex:this.prevActiveSlideIndex,slideConfig:I(this.prevActiveSlideIndex)?null:this.elements[this.prevActiveSlideIndex].slideConfig,trigger:I(this.prevActiveSlideIndex)?null:this.elements[this.prevActiveSlideIndex].node,player:this.getSlidePlayerInstance(this.prevActiveSlideIndex)},current:{index:this.index,slide:this.activeSlide,slideNode:this.activeSlide,slideIndex:this.index,slideConfig:this.elements[this.index].slideConfig,trigger:this.elements[this.index].node,player:this.getSlidePlayerInstance(this.index)}}),T(this.settings.beforeSlideChange)&&this.settings.beforeSlideChange.apply(this,[{index:this.prevActiveSlideIndex,slide:this.prevActiveSlide,player:this.getSlidePlayerInstance(this.prevActiveSlideIndex)},{index:this.index,slide:this.activeSlide,player:this.getSlidePlayerInstance(this.index)}]),this.prevActiveSlideIndex>this.index&&\"slide\"==this.settings.slideEffect&&(i=this.settings.cssEfects.slideBack.out),g(e,i,(function(){var t=e.querySelector(\".ginner-container\"),i=e.querySelector(\".gslide-media\"),n=e.querySelector(\".gslide-description\");t.style.transform=\"\",i.style.transform=\"\",d(i,\"greset\"),i.style.opacity=\"\",n&&(n.style.opacity=\"\"),d(e,\"prev\")}))}},{key:\"getAllPlayers\",value:function(){return this.videoPlayers}},{key:\"getSlidePlayerInstance\",value:function(e){var t=\"gvideo\"+e,i=this.getAllPlayers();return!(!O(i,t)||!i[t])&&i[t]}},{key:\"stopSlideVideo\",value:function(e){if(k(e)){var t=e.querySelector(\".gvideo-wrapper\");t&&(e=t.getAttribute(\"data-index\"))}console.log(\"stopSlideVideo is deprecated, use slidePlayerPause\");var i=this.getSlidePlayerInstance(e);i&&i.playing&&i.pause()}},{key:\"slidePlayerPause\",value:function(e){if(k(e)){var t=e.querySelector(\".gvideo-wrapper\");t&&(e=t.getAttribute(\"data-index\"))}var i=this.getSlidePlayerInstance(e);i&&i.playing&&i.pause()}},{key:\"playSlideVideo\",value:function(e){if(k(e)){var t=e.querySelector(\".gvideo-wrapper\");t&&(e=t.getAttribute(\"data-index\"))}console.log(\"playSlideVideo is deprecated, use slidePlayerPlay\");var i=this.getSlidePlayerInstance(e);i&&!i.playing&&i.play()}},{key:\"slidePlayerPlay\",value:function(e){var t;if(!J||null!==(t=this.settings.plyr.config)&&void 0!==t&&t.muted){if(k(e)){var i=e.querySelector(\".gvideo-wrapper\");i&&(e=i.getAttribute(\"data-index\"))}var n=this.getSlidePlayerInstance(e);n&&!n.playing&&(n.play(),this.settings.autofocusVideos&&n.elements.container.focus())}}},{key:\"setElements\",value:function(e){var t=this;this.settings.elements=!1;var i=[];e&&e.length&&o(e,(function(e,n){var s=new $(e,t,n),o=s.getConfig(),r=l({},o);r.slideConfig=o,r.instance=s,r.index=n,i.push(r)})),this.elements=i,this.lightboxOpen&&(this.slidesContainer.innerHTML=\"\",this.elements.length&&(o(this.elements,(function(){var e=m(t.settings.slideHTML);t.slidesContainer.appendChild(e)})),this.showSlide(0,!0)))}},{key:\"getElementIndex\",value:function(e){var t=!1;return o(this.elements,(function(i,n){if(O(i,\"node\")&&i.node==e)return t=n,!0})),t}},{key:\"getElements\",value:function(){var e=this,t=[];this.elements=this.elements?this.elements:[],!I(this.settings.elements)&&E(this.settings.elements)&&this.settings.elements.length&&o(this.settings.elements,(function(i,n){var s=new $(i,e,n),o=s.getConfig(),r=l({},o);r.node=!1,r.index=n,r.instance=s,r.slideConfig=o,t.push(r)}));var i=!1;return this.getSelector()&&(i=document.querySelectorAll(this.getSelector())),i?(o(i,(function(i,n){var s=new $(i,e,n),o=s.getConfig(),r=l({},o);r.node=i,r.index=n,r.instance=s,r.slideConfig=o,r.gallery=i.getAttribute(\"data-gallery\"),t.push(r)})),t):t}},{key:\"getGalleryElements\",value:function(e,t){return e.filter((function(e){return e.gallery==t}))}},{key:\"getSelector\",value:function(){return!this.settings.elements&&(this.settings.selector&&\"data-\"==this.settings.selector.substring(0,5)?\"*[\".concat(this.settings.selector,\"]\"):this.settings.selector)}},{key:\"getActiveSlide\",value:function(){return this.slidesContainer.querySelectorAll(\".gslide\")[this.index]}},{key:\"getActiveSlideIndex\",value:function(){return this.index}},{key:\"getAnimationClasses\",value:function(){var e=[];for(var t in this.settings.cssEfects)if(this.settings.cssEfects.hasOwnProperty(t)){var i=this.settings.cssEfects[t];e.push(\"g\".concat(i.in)),e.push(\"g\".concat(i.out))}return e.join(\" \")}},{key:\"build\",value:function(){var e=this;if(this.built)return!1;var t=document.body.childNodes,i=[];o(t,(function(e){e.parentNode==document.body&&\"#\"!==e.nodeName.charAt(0)&&e.hasAttribute&&!e.hasAttribute(\"aria-hidden\")&&(i.push(e),e.setAttribute(\"aria-hidden\",\"true\"))}));var n=O(this.settings.svg,\"next\")?this.settings.svg.next:\"\",s=O(this.settings.svg,\"prev\")?this.settings.svg.prev:\"\",l=O(this.settings.svg,\"close\")?this.settings.svg.close:\"\",r=this.settings.lightboxHTML;r=m(r=(r=(r=r.replace(/{nextSVG}/g,n)).replace(/{prevSVG}/g,s)).replace(/{closeSVG}/g,l)),document.body.appendChild(r);var d=document.getElementById(\"glightbox-body\");this.modal=d;var g=d.querySelector(\".gclose\");this.prevButton=d.querySelector(\".gprev\"),this.nextButton=d.querySelector(\".gnext\"),this.overlay=d.querySelector(\".goverlay\"),this.loader=d.querySelector(\".gloader\"),this.slidesContainer=document.getElementById(\"glightbox-slider\"),this.bodyHiddenChildElms=i,this.events={},h(this.modal,\"glightbox-\"+this.settings.skin),this.settings.closeButton&&g&&(this.events.close=a(\"click\",{onElement:g,withCallback:function(t,i){t.preventDefault(),e.close()}})),g&&!this.settings.closeButton&&g.parentNode.removeChild(g),this.nextButton&&(this.events.next=a(\"click\",{onElement:this.nextButton,withCallback:function(t,i){t.preventDefault(),e.nextSlide()}})),this.prevButton&&(this.events.prev=a(\"click\",{onElement:this.prevButton,withCallback:function(t,i){t.preventDefault(),e.prevSlide()}})),this.settings.closeOnOutsideClick&&(this.events.outClose=a(\"click\",{onElement:d,withCallback:function(t,i){e.preventOutsideClick||c(document.body,\"glightbox-mobile\")||u(t.target,\".ginner-container\")||u(t.target,\".gbtn\")||c(t.target,\"gnext\")||c(t.target,\"gprev\")||e.close()}})),o(this.elements,(function(t,i){e.slidesContainer.appendChild(t.instance.create()),t.slideNode=e.slidesContainer.querySelectorAll(\".gslide\")[i]})),K&&h(document.body,\"glightbox-touch\"),this.events.resize=a(\"resize\",{onElement:window,withCallback:function(){e.resize()}}),this.built=!0}},{key:\"resize\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if((e=e||this.activeSlide)&&!c(e,\"zoomed\")){var t=y(),i=e.querySelector(\".gvideo-wrapper\"),n=e.querySelector(\".gslide-image\"),s=this.slideDescription,l=t.width,o=t.height;if(l<=768?h(document.body,\"glightbox-mobile\"):d(document.body,\"glightbox-mobile\"),i||n){var r=!1;if(s&&(c(s,\"description-bottom\")||c(s,\"description-top\"))&&!c(s,\"gabsolute\")&&(r=!0),n)if(l<=768)n.querySelector(\"img\");else if(r){var a=s.offsetHeight,u=n.querySelector(\"img\");u.setAttribute(\"style\",\"max-height: calc(100vh - \".concat(a,\"px)\")),s.setAttribute(\"style\",\"max-width: \".concat(u.offsetWidth,\"px;\"))}if(i){var g=O(this.settings.plyr.config,\"ratio\")?this.settings.plyr.config.ratio:\"\";if(!g){var v=i.clientWidth,f=i.clientHeight,p=v/f;g=\"\".concat(v/p,\":\").concat(f/p)}var m=g.split(\":\"),x=this.settings.videosWidth,b=this.settings.videosWidth,S=(b=M(x)||-1!==x.indexOf(\"px\")?parseInt(x):-1!==x.indexOf(\"vw\")?l*parseInt(x)/100:-1!==x.indexOf(\"vh\")?o*parseInt(x)/100:-1!==x.indexOf(\"%\")?l*parseInt(x)/100:parseInt(i.clientWidth))/(parseInt(m[0])/parseInt(m[1]));if(S=Math.floor(S),r&&(o-=s.offsetHeight),b>l||S>o||ob){var w=i.offsetWidth,T=i.offsetHeight,C=o/T,k={width:w*C,height:T*C};i.parentNode.setAttribute(\"style\",\"max-width: \".concat(k.width,\"px\")),r&&s.setAttribute(\"style\",\"max-width: \".concat(k.width,\"px;\"))}else i.parentNode.style.maxWidth=\"\".concat(x),r&&s.setAttribute(\"style\",\"max-width: \".concat(x,\";\"))}}}}},{key:\"reload\",value:function(){this.init()}},{key:\"updateNavigationClasses\",value:function(){var e=this.loop();d(this.nextButton,\"disabled\"),d(this.prevButton,\"disabled\"),0==this.index&&this.elements.length-1==0?(h(this.prevButton,\"disabled\"),h(this.nextButton,\"disabled\")):0!==this.index||e?this.index!==this.elements.length-1||e||h(this.nextButton,\"disabled\"):h(this.prevButton,\"disabled\")}},{key:\"loop\",value:function(){var e=O(this.settings,\"loopAtEnd\")?this.settings.loopAtEnd:null;return e=O(this.settings,\"loop\")?this.settings.loop:e,e}},{key:\"close\",value:function(){var e=this;if(!this.lightboxOpen){if(this.events){for(var t in this.events)this.events.hasOwnProperty(t)&&this.events[t].destroy();this.events=null}return!1}if(this.closing)return!1;this.closing=!0,this.slidePlayerPause(this.activeSlide),this.fullElementsList&&(this.elements=this.fullElementsList),this.bodyHiddenChildElms.length&&o(this.bodyHiddenChildElms,(function(e){e.removeAttribute(\"aria-hidden\")})),h(this.modal,\"glightbox-closing\"),g(this.overlay,\"none\"==this.settings.openEffect?\"none\":this.settings.cssEfects.fade.out),g(this.activeSlide,this.settings.cssEfects[this.settings.closeEffect].out,(function(){if(e.activeSlide=null,e.prevActiveSlideIndex=null,e.prevActiveSlide=null,e.built=!1,e.events){for(var t in e.events)e.events.hasOwnProperty(t)&&e.events[t].destroy();e.events=null}var i=document.body;d(Q,\"glightbox-open\"),d(i,\"glightbox-open touching gdesc-open glightbox-touch glightbox-mobile gscrollbar-fixer\"),e.modal.parentNode.removeChild(e.modal),e.trigger(\"close\"),T(e.settings.onClose)&&e.settings.onClose();var n=document.querySelector(\".gcss-styles\");n&&n.parentNode.removeChild(n),e.lightboxOpen=!1,e.closing=null}))}},{key:\"destroy\",value:function(){this.close(),this.clearAllEvents(),this.baseEvents&&this.baseEvents.destroy()}},{key:\"on\",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!e||!T(t))throw new TypeError(\"Event name and callback must be defined\");this.apiEvents.push({evt:e,once:i,callback:t})}},{key:\"once\",value:function(e,t){this.on(e,t,!0)}},{key:\"trigger\",value:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=[];o(this.apiEvents,(function(t,s){var l=t.evt,o=t.once,r=t.callback;l==e&&(r(i),o&&n.push(s))})),n.length&&o(n,(function(e){return t.apiEvents.splice(e,1)}))}},{key:\"clearAllEvents\",value:function(){this.apiEvents.splice(0,this.apiEvents.length)}},{key:\"version\",value:function(){return\"3.1.0\"}}]),e}();return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=new te(e);return t.init(),t}}));","export function setupRecaptcha() {\n window.recaptchaOnLoad = function () {\n grecaptcha.enterprise.ready(function () {\n document.querySelectorAll('[data-recaptcha-holder]').forEach(function (element) {\n let form = element.closest('form');\n let isCheckboxType = element.dataset.ischeckbox;\n if (isCheckboxType == \"False\") {\n grecaptcha.enterprise.execute(element.dataset.sitekey).then(function (token) {\n element.innerHTML = element.innerHTML + '';\n });\n }\n else{\n form.dataset.noRecaptcha = true;\n form.addEventListener('submit', function (event) {\n if (form.dataset.noRecaptcha) {\n event.preventDefault();\n alert('Please submit Recaptcha');\n }\n });\n let button = form.querySelector('button[type=\"submit\"], input[type=\"submit\"]');\n button.setAttribute('disabled', 'disabled');\n\n grecaptcha.enterprise.render(element.id,\n {\n 'sitekey': element.dataset.sitekey,\n callback: function () {\n button.removeAttribute('disabled');\n form.removeAttribute('data-no-recaptcha');\n }\n });\n }\n });\n });\n }\n}","function correctHiddenFields() {\n const partnerByEmail = document.querySelector('[data-partner-by-email]')?.innerHTML;\n const partnerByPhone = document.querySelector('[data-partner-by-phone]')?.innerHTML;\n const amOnlineByPhone = document.querySelector('[data-am-online-by-phone]')?.innerHTML;\n\n if (partnerByEmail === 'True') {\n document.querySelector('input[name=PartnerByEmail]').value = 'true';\n }\n if (partnerByPhone === 'True') {\n document.querySelector('input[name=PartnerByPhone]').value = 'true';\n }\n if (amOnlineByPhone === 'True') {\n document.querySelector('input[name=AMOnlineByPhone]').value = 'true';\n }\n}\n\nfunction checkPhoneRequirement() {\n const partnerByPhone = document.querySelector('input[name=PartnerByPhone]')?.value;\n const amOnlineByPhone = document.querySelector('input[name=AMOnlineByPhone]')?.value;\n const phoneNumber = document.querySelector(\"#PhoneNumber\")?.value ?? '';\n const phoneValidationElement = document.querySelector(\"[data-phone-validation]\");\n\n if (partnerByPhone === 'true' || amOnlineByPhone === 'false') {\n if (phoneNumber !== '') {\n phoneValidationElement.classList.add('d-none');\n } else {\n phoneValidationElement.classList.remove('d-none');\n }\n } else {\n phoneValidationElement.classList.add('d-none');\n }\n}\n\nfunction onRegisterClick(e) {\n checkPhoneRequirement();\n const form = document.querySelector(\"[data-registration-form]\");\n if (!form?.checkValidity())\n return;\n e.preventDefault();\n const button = form.querySelector('button[type=\"submit\"], input[type=\"submit\"]');\n const partnerByPhone = document.querySelector('input[name=PartnerByPhone]').value;\n const bauerByPhone = document.querySelector('input[name=BauerByPhone]').value;\n const phoneNumber = document.querySelector(\"#PhoneNumber\")?.value ?? '';\n if (partnerByPhone === 'true' || bauerByPhone === 'false') {\n if (phoneNumber !== '') {\n button.setAttribute('disabled', 'disabled');\n form.submit();\n } else {\n document.querySelector(\"[data-phone-validation]\").classList.remove('d-none');\n }\n } else {\n button.setAttribute('disabled', 'disabled');\n form.submit();\n }\n}\n\nexport function setupAmTheme() {\n const phoneNumberElement = document.querySelector(\"#PhoneNumber\");\n phoneNumberElement?.addEventListener('keypress', () => {\n document.querySelector(\"[data-phone-validation]\").classList.add('d-none');\n });\n let registerButton = document.querySelector(\"[data-btn-register]\");\n if (registerButton) {\n registerButton.addEventListener('click', onRegisterClick);\n }\n let permutiveId = window.localStorage.getItem(\"permutive-id\");\n let permutiveIdEl = document.querySelector(\"#PermutiveId\")\n if (permutiveIdEl) {\n permutiveIdEl.value = permutiveId;\n }\n document.querySelector(\"#PartnerByPhone\")?.addEventListener('change', function () {\n document.querySelector('input[name=PartnerByPhone]').value = this.checked ? 'true' : 'false';\n checkPhoneRequirement();\n });\n document.querySelector(\"#BauerByPhone\")?.addEventListener('change', function () {\n document.querySelector('input[name=BauerByPhone]').value = this.checked ? 'true' : 'false';\n checkPhoneRequirement();\n });\n\n $('nav.navbar .collapse').on('show.bs.collapse', onShowNavbar);\n\n\n $('nav.navbar .collapse').on('hide.bs.collapse', onHideNavbar);\n\n document.querySelector(\".reveal\")?.addEventListener('click', function () {\n let pwd = document.querySelector(\".pwd\");\n if (pwd.getAttribute('type') === 'password') {\n pwd.setAttribute('type', 'text');\n this.innerHTML = '';\n } else {\n pwd.setAttribute('type', 'password');\n this.innerHTML = '';\n }\n });\n let industrySector = document.querySelector(\"#Input_IndustrySector\")?.value;\n if (industrySector === \"PrivateSectorOther\" || industrySector === \"PublicSectorOther\" || industrySector === \"15\" || industrySector === \"25\") {\n document.querySelector('[data-other-industry-sector]').classList.remove('d-none');\n }\n document.querySelector('[data-industry-sector]')?.addEventListener('change', function () {\n if (this.value === \"PrivateSectorOther\" || this.value === \"PublicSectorOther\" || this.value === \"15\" || this.value === \"25\") {\n document.querySelector('[data-other-industry-sector]')?.classList.remove('d-none');\n } else {\n document.querySelector('[data-other-industry-sector]')?.classList.add('d-none');\n }\n });\n let jobFunction = document.querySelector('#Input_JobFunction')?.value;\n if (jobFunction === \"Other\" || jobFunction === \"18\") {\n document.querySelector('[data-other-job-function]')?.classList.remove('d-none');\n }\n document.querySelector('#Input_JobFunction')?.addEventListener('change', function () {\n if (this.value === \"Other\" || this.value === \"18\") {\n document.querySelector('[data-other-job-function]')?.classList.remove('d-none');\n } else {\n document.querySelector('[data-other-job-function]')?.classList.add('d-none');\n }\n });\n\n if ($(\"#decision-making-Other\").is(\":checked\")) {\n document.querySelector('[data-other-decision-making-process]')?.classList.remove('d-none');\n }\n $(document).on('change', '#decision-making-Other', function () {\n if ($(this).is(':checked')) {\n document.querySelector('[data-other-decision-making-process]')?.classList.remove('d-none');\n }\n else {\n document.querySelector('[data-other-decision-making-process]')?.classList.add('d-none');\n }\n });\n if ($(\"#how-is-your-fleet-funded-Other\").is(\":checked\")) {\n document.querySelector('[data-other-how-is-your-fleet-funded]')?.classList.remove('d-none');\n }\n $(document).on('change', '#how-is-your-fleet-funded-Other', function () {\n if ($(this).is(':checked')) {\n document.querySelector('[data-other-how-is-your-fleet-funded]')?.classList.remove('d-none');\n }\n else {\n document.querySelector('[data-other-how-is-your-fleet-funded]')?.classList.add('d-none');\n }\n });\n\n //let decision = document.querySelector('#decision-making-Other')?.value;\n //if (decision === \"21\") {\n // document.querySelector('[data-other-decision-making-process]')?.classList.remove('d-none');\n //}\n //document.querySelector('#Input_DecisionMakingProcess')?.addEventListener('change', function () {\n // if (this.value === \"Other\" || this.value === \"21\") {\n // document.querySelector('[data-other-decision-making-process]')?.classList.remove('d-none');\n // } else {\n // document.querySelector('[data-other-decision-making-process]')?.classList.add('d-none');\n // }\n //});\n //let funded = document.querySelector('#Input_HowIsYourFleetFunded')?.value;\n //if (funded === \"8\") {\n // document.querySelector('[data-other-how-is-your-fleet-funded]')?.classList.remove('d-none');\n //}\n //document.querySelector('#Input_HowIsYourFleetFunded')?.addEventListener('change', function () {\n // if (this.value === \"Other\" || this.value === \"8\") {\n // document.querySelector('[data-other-how-is-your-fleet-funded]')?.classList.remove('d-none');\n // } else {\n // document.querySelector('[data-other-how-is-your-fleet-funded]')?.classList.add('d-none');\n // }\n //});\n var $checkbox = $(\"#Input_UnSubscribeFromAll\");\n $checkbox.on(\"change\", function () {\n // Check if the checkbox is checked\n if ($checkbox.is(\":checked\")) {\n $(\".checkbox-group\").prop(\"checked\", false);\n }\n });\n $('.checkbox-group').on(\"change\", function () {\n $checkbox.prop(\"checked\", false);\n });\n correctHiddenFields();\n}\n\nfunction onShowNavbar(e) {\n let minusHeight = 85;\n if ($('html').hasClass('scrolled-past-header')) {\n minusHeight = 35;\n if ($('body').hasClass('mrcms-admin-bar-on')) {\n minusHeight = 65;\n }\n } else {\n if ($('body').hasClass('mrcms-admin-bar-on')) {\n minusHeight = 115;\n }\n }\n\n const windowHeight = $(window).innerHeight() - minusHeight;\n $(\".navbar-collapse .nav.navbar-nav \").css({height: windowHeight});\n $(\"body\").attr(\"style\", \"margin: 0; height: 0; overflow: hidden;\");\n $(\"#main-content\").attr(\"style\", \"visibility:hidden\");\n //$(\".ad-scroll-fix\").hide();\n}\n\nfunction onHideNavbar(e) {\n $(\"body\").attr(\"style\", \"\");\n $(\"#main-content\").attr(\"style\", \"\");\n //$(\".ad-scroll-fix\").show();\n}\n"],"names":["$","jQuery","defaults","mode","slideSelector","infiniteLoop","hideControlOnEnd","speed","easing","slideMargin","startSlide","randomStart","captions","ticker","tickerHover","adaptiveHeight","adaptiveHeightSpeed","video","useCSS","preloadImages","responsive","slideZIndex","wrapperClass","touchEnabled","swipeThreshold","oneToOneTouch","preventDefaultSwipeX","preventDefaultSwipeY","ariaLive","ariaHidden","keyboardEnabled","pager","pagerType","pagerShortSeparator","pagerSelector","buildPager","pagerCustom","controls","nextText","prevText","nextSelector","prevSelector","autoControls","startText","stopText","autoControlsCombine","autoControlsSelector","auto","pause","autoStart","autoDirection","stopAutoOnClick","autoHover","autoDelay","autoSlideForOnePage","minSlides","maxSlides","moveSlides","slideWidth","shrinkItems","onSliderLoad","onSlideBefore","onSlideAfter","onSlideNext","onSlidePrev","onSliderResize","fn","bxSlider","options","length","each","slider","el","windowWidth","window","width","windowHeight","height","data","init","settings","extend","parseInt","children","Math","floor","random","active","index","carousel","minThreshold","maxThreshold","working","interval","animProp","usingCSS","div","document","createElement","props","i","undefined","style","cssPrefix","replace","toLowerCase","attr","setup","preloadSelector","eq","wrap","viewport","parent","loader","prepend","css","position","overflow","maxWidth","getViewportMaxWidth","margin","float","listStyle","getSlideWidth","zIndex","display","appendCaptions","last","getPagerQty","fitVids","appendControls","appendControlsAuto","appendPager","after","loadElements","start","selector","callback","total","find","count","one","complete","load","slice","sliceAppend","clone","addClass","slicePrepend","append","remove","setSlidePosition","getViewportHeight","redrawSlider","call","initialized","bind","resizeWindow","initAuto","initTicker","updatePagerActive","updateDirectionControls","initTouch","keydown","keyPress","outerHeight","currentIndex","getMoveBy","add","max","apply","map","get","parseFloat","newElWidth","wrapWidth","ceil","getNumberSlidesShowing","slidesShowing","childWidth","first","pagerQty","breakPoint","counter","lastChild","lastShowingIndex","setPositionProperty","left","outerWidth","top","value","type","duration","params","animateObj","propValue","e","target","is","unbind","updateAfterSlideTransition","resetValue","tickerLoop","animate","populatePager","pagerHtml","linkContent","isFunction","pagerEl","html","on","clickPagerBind","next","prev","clickNextBind","clickPrevBind","directionEl","stop","autoEl","clickStartBind","clickStopBind","updateAutoControls","title","preventDefault","hasClass","stopAuto","goToNextSlide","goToPrevSlide","startAuto","pagerLink","pagerIndex","currentTarget","goToSlide","slideIndex","len","removeClass","i1","oldIndex","state","setTimeout","focus","blur","hover","autoPaused","idx","ratio","property","newSpeed","totalDimens","startPosition","transform","split","abs","resumeSpeed","reset","isOnScreen","win","scrollTop","scrollLeft","bounds","offset","right","bottom","activeElementTag","activeElement","tagName","result","p","RegExp","exec","keyCode","touch","x","y","end","onTouchStart","originalPos","orig","originalEvent","touchPoints","changedTouches","pageX","pageY","setPointerCapture","pointerId","onTouchMove","onTouchEnd","onPointerCancel","releasePointerCapture","xMovement","yMovement","change","distance","windowWidthNew","windowHeightNew","applyAriaHiddenAttributes","startVisibleIndex","numberOfSlidesShowing","direction","requestEl","performTransition","moveBy","filter","fadeOut","fadeIn","preventControlUpdate","setInterval","clearInterval","getCurrentSlide","getCurrentSlideElement","getSlideElement","getSlideCount","isWorking","destroySlider","removeAttr","unwrap","removeData","reloadSlider","window1","History","Adapter","Error","event","trigger","extra","extractEventData","key","onDomLoad","console","navigator","sessionStorage","clearTimeout","JSON","alert","history","setItem","removeItem","stringify","encode","parse","decode","initCore","initHtml4","hashChangeInterval","safariPollInterval","doubleCheckInterval","disableSuid","storeInterval","busyDelay","debug","initialTitle","html4Mode","delayInit","intervalList","clearAllIntervals","il","log","arguments","message","n","args","arg","consoleExists","textarea","getElementById","Array","prototype","shift","Exception","scrollHeight","clientHeight","getInternetExplorerMajorVersion","cached","v","all","getElementsByTagName","innerHTML","isInternetExplorer","Boolean","emulated","pushState","hashChange","replaceState","test","userAgent","enabled","bugs","setHash","vendor","safariPoll","ieDoubleCheck","hashEscape","isEmptyObject","obj","name","hasOwnProperty","cloneObject","hash","newObj","getRootUrl","rootUrl","location","protocol","hostname","host","port","getBaseHref","baseElements","baseElement","baseHref","href","getBaseUrl","getBasePageUrl","getPageUrl","stateUrl","State","getState","url","getLocationHref","part","string","getFullUrl","allowBaseHref","fullUrl","firstChar","substring","getShortUrl","shortUrl","baseUrl","isTraditionalAnchor","doc","URL","decodeURIComponent","indexOf","store","idToState","stateToId","urlToId","storedStates","savedStates","normalizeStore","friendly","create","getLastSavedState","createStateObject","cleanUrl","getIdByState","newState","str","id","extractId","getStateString","Date","getTime","String","normalizeState","oldState","dataNotEmpty","normalized","hashedUrl","hasUrlDuplicate","getStateById","passedState","cleanedState","getStateId","getHashByState","url_or_hash","parts","tmp","extractState","getIdByUrl","getLastStoredState","storeState","push","isLastSavedState","isLast","newId","saveState","getStateByIndex","getCurrentIndex","getHash","getHashByUrl","unescapeHash","normalizeHash","queue","pageUrl","busy","pushQueue","scope","escapeHash","encodeURIComponent","setTitle","firstState","queues","flag","timeout","fireNext","item","fireQueueItem","clearQueue","stateChanged","doubleChecker","doubleCheckComplete","doubleCheckClear","doubleCheck","tryAgain","safariStatePoll","urlState","back","go","forward","emptyFunction","onPopState","currentHash","currentState","stateId","expectedStateId","getItem","err","onUnload","currentStore","currentStoreString","code","DOMException","QUOTA_EXCEEDED_ERR","appCodeName","document1","Sharer","elem","elems","querySelectorAll","l","addEventListener","srcElement","sharer","share","constructor","getValue","val","getAttribute","startsWith","s","sharers","facebook","shareUrl","u","hashtag","quote","linkedin","mini","twitter","text","hashtags","via","email","subject","body","whatsapp","phone","telegram","viber","line","pinterest","media","description","tumblr","canonicalUrl","content","posttype","caption","tags","hackernews","t","reddit","vk","image","xing","buffer","picture","instapaper","pocket","mashable","mix","flipboard","now","weibo","pic","appkey","ralateUid","language","blogger","baidu","it","iu","douban","comment","okru","mailru","share_url","linkname","linknote","evernote","skype","delicious","sms","trello","desc","messenger","link","odnoklassniki","st","cmd","deprecated","meneame","diaspora","googlebookmarks","op","bkmk","qzone","refind","surfingbird","yahoomail","to","wordpress","amazon","pinboard","threema","kakaostory","yummly","yumtype","urlSharer","keys","Object","isLink","isBlank","open","popWidth","popHeight","innerWidth","screenX","innerHeight","screenY","newWindow","readyState","a","forms","$7b22250fbed98fb8$exports","$2acb526bbfd6495c$var$checkPhoneRequirement","partnerByPhone","querySelector","amOnlineByPhone","phoneNumber","phoneValidationElement","classList","$2acb526bbfd6495c$var$onRegisterClick","form","checkValidity","button","bauerByPhone","setAttribute","submit","$2acb526bbfd6495c$var$onShowNavbar","minusHeight","$2acb526bbfd6495c$var$onHideNavbar","Symbol","iterator","TypeError","enumerable","configurable","writable","defineProperty","toString","o","k","A","L","P","O","r","evt","found","eventName","onElement","withCallback","avoidDuplicate","once","h","d","useCapture","c","g","T","destroy","C","splice","removeEventListener","contains","parentElement","matches","msMatchesSelector","animation","OAnimation","MozAnimation","WebkitAnimation","webkitTransform","MozTransform","msTransform","OTransform","f","m","createDocumentFragment","firstChild","appendChild","documentElement","clientWidth","b","S","I","error","rel","insertBefore","src","onload","w","match","nodeType","E","isArray","isFinite","M","isNaN","z","sort","concat","Y","sqrt","N","handlers","D","_","element","move","cancel","preV","pinchStartLen","zoom","isDoubleTap","rotate","touchStart","multipointStart","multipointEnd","pinch","swipe","tap","doubleTap","longTap","singleTap","pressMove","twoFingerPressMove","touchMove","touchEnd","touchCancel","translateContainer","_cancelAllHandler","cancelAll","delta","tapTimeout","singleTapTimeout","longTapTimeout","swipeTimeout","x1","x2","y1","y2","preTapPosition","touches","nodeName","dispatch","_cancelLongTap","_cancelSingleTap","_preventTap","angle","acos","PI","sx2","deltaX","deltaY","sy2","_swipeDirection","del","W","transition","OTransition","MozTransition","WebkitTransition","opacity","H","img","slide","onclose","setZoomEvents","zoomedIn","dragging","currentX","currentY","initialX","initialY","xOffset","yOffset","dragStart","dragEnd","drag","zoomOut","zoomIn","widowWidth","naturalWidth","maxHeight","naturalHeight","setTranslate","parentNode","clientX","clientY","isDragging","V","dragEl","toleranceX","toleranceY","instance","lastDirection","toleranceReached","dragContainer","doSlideChange","preventOutsideClick","prevSlide","nextSlide","doSlideClose","close","shouldChange","dragAutoSnap","shouldClose","F","getAllPlayers","plyr","videoProvider","js","config","Plyr","detail","dataset","ready","resize","R","G","pop","trim","className","cloneNode","events","Z","allow","appendTo","U","sizes","srcset","alt","descPosition","effect","zoomable","draggable","sourceType","setSize","sanitizeValue","join","slideConfig","checkSize","videosWidth","_hasCustomWidth","_hasCustomHeight","beforeSlideLoad","player","afterSlideLoad","getSlidePlayerInstance","removeChild","moreLength","smallDescription","slideShortDesc","moreText","descriptionEvents","dragToleranceX","dragToleranceY","offsetWidth","Image","innerText","substr","slideHTML","slideExtraAttributes","parseConfig","J","K","createTouch","msMaxTouchPoints","Q","ee","elements","skin","theme","closeButton","startAt","autoplayVideos","autofocusVideos","beforeSlideChange","afterSlideChange","slideInserted","slideRemoved","onOpen","onClose","loop","preload","oneSlidePerOpen","touchNavigation","touchFollowAxis","keyboardNavigation","closeOnOutsideClick","plugins","fullscreen","iosNative","youtube","noCookie","showinfo","iv_load_policy","vimeo","byline","portrait","transparent","openEffect","closeEffect","slideEffect","cssEfects","fade","in","out","slideBack","none","svg","lightboxHTML","te","customOptions","effectsClasses","getAnimationClasses","videoPlayers","apiEvents","fullElementsList","getSelector","baseEvents","getElements","activeSlide","prevActiveSlideIndex","prevActiveSlide","getGalleryElements","getElementIndex","build","overlay","head","showSlide","prevButton","nextButton","lightboxOpen","B","X","q","targetTouches","offsetHeight","scaleX","scaleY","keyboard","toLocaleLowerCase","slidesContainer","slideAnimateOut","slideAnimateIn","slideNode","node","setContent","slideDescription","slideDescriptionContained","preloadSlide","updateNavigationClasses","getConfig","getActiveSlideIndex","slidePlayerPlay","current","slidePlayerPause","playing","play","muted","container","gallery","built","childNodes","charAt","hasAttribute","modal","bodyHiddenChildElms","outClose","loopAtEnd","closing","removeAttribute","clearAllEvents","recaptchaOnLoad","grecaptcha","enterprise","forEach","closest","isCheckboxType","ischeckbox","execute","sitekey","then","token","noRecaptcha","render","__esModule","default","phoneNumberElement","registerButton","permutiveId","localStorage","permutiveIdEl","checked","pwd","industrySector","jobFunction","$checkbox","prop","$2acb526bbfd6495c$var$correctHiddenFields","partnerByEmail","$7d0af377de65fca7$var$lgMaxWidth","matchMedia","$7d0af377de65fca7$var$matchMediaHandler","$7d0af377de65fca7$var$mdMaxWidth","$7d0af377de65fca7$var$smMaxWidth","$7d0af377de65fca7$var$dataMove","$7d0af377de65fca7$var$activateTabFromHash","tabLink","bootstrap","Tab","show","onhashchange","$7d0af377de65fca7$var$tabElements","tabElement","tabTarget","$7d0af377de65fca7$var$mobileSearchCollapse","$7d0af377de65fca7$var$tables","table","$7d0af377de65fca7$var$wrapper","moveBack","sourceElement","targetElement","$7d0af377de65fca7$var$moveChildElements","destinationElement","isInView","sectionName","dataLayer","pathname","$7d0af377de65fca7$var$handleBodyCopyToggle","textDiv","textDivHeight","toggleBtn","stopPropagation"],"version":3,"file":"am-online.js.map"}