PageSourceSearch

https://filmpluskritik.com/_static/??-eJyFkNsKwkAMRH/Idavg7UH8FNlu…/+2CyGQbICTTc3Ga/RTv1xtTsU202xLvZ3FWmUJQ==

js filmpluskritik.com collected 2026-10-02 10:30:55 UTC 99,815 bytes, 1,397 lines download raw bytes

1(()=>{(function(){var Scroller,stats,type,text,totop,loading_text,isIE=-1!==navigator.userAgent.search("MSIE");if(isIE){var IEVersion=navigator.userAgent.match(/MSIE\s?(\d+)\.?\d*;/);IEVersion=parseInt(IEVersion[1])}function fullscreenState(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement?1:0}"https:"===document.location.protocol&&(infiniteScroll.settings.ajaxurl=infiniteScroll.settings.ajaxurl.replace("http://","https://")),Scroller=function(e){var t=this;this.id=e.id,this.body=document.body,this.window=window,this.element=document.getElementById(e.id),this.wrapperClass=e.wrapper_class,this.ready=!0,this.disabled=!1,this.page=1,this.offset=e.offset,this.currentday=e.currentday,this.order=e.order,this.throttle=!1,this.click_handle=e.click_handle,this.google_analytics=e.google_analytics,this.history=e.history,this.origURL=window.location.href,this.handle=document.createElement("div"),this.handle.setAttribute("id","infinite-handle");var n=document.createElement("span"),i=document.createElement("button");i.textContent=text,n.appendChild(i),this.handle.appendChild(n),this.footer={el:document.getElementById("infinite-footer"),wrap:e.footer},this.checkViewportOnLoadBound=t.checkViewportOnLoad.bind(this),this.wpMediaelement=null,"scroll"===type?(this.window.addEventListener("scroll",function(){t.throttle=!0}),t.gotop(),setInterval(function(){t.throttle&&(t.throttle=!1,t.thefooter(),t.refresh(),t.determineURL())},250),t.ensureFilledViewport(),this.body.addEventListener("is.post-load",t.checkViewportOnLoadBound)):"click"===type&&(this.click_handle&&this.element.appendChild(this.handle),this.handle.addEventListener("click",function(){t.click_handle&&t.handle.parentNode.removeChild(t.handle),t.refresh()})),this.body.addEventListener("is.post-load",t.initializeMejs)},Scroller.prototype.getScrollTop=function(){return window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0},Scroller.prototype.extend=function(e){e=e||{};for(var t=1;t<arguments.length;t++)if(arguments[t])for(var n in arguments[t])Object.hasOwn(arguments[t],n)&&(e[n]=arguments[t][n]);return e},Scroller.prototype.check=function(){return this.measure(this.element,[this.wrapperClass]).bottom<2*this.window.innerHeight},Scroller.prototype.render=function(e){var t=Array.prototype.slice.call(e.fragment.childNodes);for(this.body.classList.add("infinity-success");t.length>0;){var n=t.shift();this.element.appendChild(n)}this.trigger(this.body,"is.post-load",{jqueryEventName:"post-load",data:e}),this.ready=!0},Scroller.prototype.query=function(){return{page:this.page+this.offset,currentday:this.currentday,order:this.order,scripts:window.infiniteScroll.settings.scripts,styles:window.infiniteScroll.settings.styles,query_args:window.infiniteScroll.settings.query_args,query_before:window.infiniteScroll.settings.query_before,last_post_date:window.infiniteScroll.settings.last_post_date}},Scroller.prototype.animate=function(e,t){var n=performance.now();requestAnimationFrame(function i(o){var r=Math.min(1,(o-n)/t);e(r),r<1&&requestAnimationFrame(i)})},Scroller.prototype.gotop=function(){var e=document.getElementById("infinity-blog-title"),t=this;e&&(e.setAttribute("title",totop),e.addEventListener("click",function(e){var n=t.window.pageYOffset;e.preventDefault(),t.animate(function(e){var t=n-n*e;document.documentElement.scrollTop=document.body.scrollTop=t},200)}))},Scroller.prototype.thefooter=function(){var e,t,n,i,o=this;if(this.footer&&this.footer.el){if("string"==typeof this.footer.wrap){try{t=(t=document.getElementById(this.footer.wrap).getBoundingClientRect()).width}catch{t=0}t>479&&(e=this.footer.el.querySelector(".container"))&&(e.style.width=t+"px")}n=parseInt(o.footer.el.style.bottom||-50,10),i=this.window.pageYOffset>=350?0:-50,n!==i&&o.animate(function(e){var t=n+(i-n)*e;o.footer.el.style.bottom=t+"px",1===e&&(n=i)},200)}},Scroller.prototype.urlEncodeJSON=function(e,t){var n,i,o=[];for(var r in e)n=encodeURIComponent(r),i=t?t+"["+n+"]":n,"object"==typeof e[r]?!Array.isArray(e[r])||e[r].length>0?o.push(this.urlEncodeJSON(e[r],i)):o.push(i+"[]="):o.push(i+"="+encodeURIComponent(e[r]));return o.join("&")},Scroller.prototype.refresh=function(){var self=this,query,xhr,loader,customized;if(!this.disabled&&this.ready&&this.check())return this.ready=!1,this.click_handle&&(loader||(document.getElementById("infinite-aria").textContent=loading_text,loader=document.createElement("div"),loader.classList.add("infinite-loader"),loader.setAttribute("role","progress"),loader.innerHTML='<svg class="jetpack-spinner infinite-loader-spinner spinner" width="28" height="28" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><circle cx="50" cy="50" r="46" fill="none" stroke="#ddd" stroke-width="8"/><path d="M 50 4 A 46 46 0 0 1 96 50" fill="none" stroke="currentColor" stroke-width="8" stroke-linecap="round"><animateTransform attributeName="transform" type="rotate" dur="1.4s" from="0 50 50" to="360 50 50" repeatCount="indef
1inite"/></path></svg>'),this.element.appendChild(loader)),query=self.extend({action:"infinite_scroll"},this.query()),"undefined"!=typeof wp&&wp.customize&&wp.customize.settings.theme&&(customized={},query.wp_customize="on",query.theme=wp.customize.settings.theme.stylesheet,wp.customize.each(function(e){e._dirty&&(customized[e.id]=e())}),query.customized=JSON.stringify(customized),query.nonce=wp.customize.settings.nonce.preview),xhr=new XMLHttpRequest,xhr.open("POST",infiniteScroll.settings.ajaxurl,!0),xhr.setRequestHeader("X-Requested-With","XMLHttpRequest"),xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8"),xhr.send(self.urlEncodeJSON(query)),xhr.onerror=function(){self.click_handle&&loader.parentNode&&loader.parentNode.removeChild(loader),self.ready=!0},xhr.onload=function(){var response=JSON.parse(xhr.responseText),httpCheck=xhr.status>=200&&xhr.status<300,responseCheck=void 0!==response.html;if(response&&httpCheck&&responseCheck){if(self.click_handle&&loader.parentNode&&loader.parentNode.removeChild(loader),response.scripts&&Array.isArray(response.scripts)&&response.scripts.forEach(function(e){var t=e.footer?"body":"head";window.infiniteScroll.settings.scripts.push(e.handle),e.extra_data&&self.appendInlineScript(e.extra_data,t),e.before_handle&&self.appendInlineScript(e.before_handle,t);var n=document.createElement("script");n.type="text/javascript",n.src=e.src,n.id=e.handle,n.async=!1,e.after_handle&&(n.onload=function(){self.appendInlineScript(e.after_handle,t)}),"wp-mediaelement"===e.handle&&self.body.removeEventListener("is.post-load",self.initializeMejs),"wp-mediaelement"===e.handle&&"undefined"==typeof mejs?(self.wpMediaelement={},self.wpMediaelement.tag=n,self.wpMediaelement.element=t,setTimeout(self.maybeLoadMejs.bind(self),250)):document.getElementsByTagName(t)[0].appendChild(n)}),response.styles&&Array.isArray(response.styles)&&response.styles.forEach(function(item){window.infiniteScroll.settings.styles.push(item.handle);var style=document.createElement("link");style.rel="stylesheet",style.href=item.src,style.id=item.handle+"-css",!item.conditional||isIE&&eval(item.conditional.replace(/%ver/g,IEVersion))||(style=!1),style&&document.getElementsByTagName("head")[0].appendChild(style)}),response.fragment=document.createElement("div"),response.fragment.innerHTML=response.html,self.page++,stats&&((new Image).src=document.location.protocol+"//pixel.wp.com/g.gif?"+stats+"&post=0&baba="+Math.random()),"object"==typeof response.postflair&&"object"==typeof WPCOM_sharing_counts&&(WPCOM_sharing_counts=self.extend(WPCOM_sharing_counts,response.postflair)),self.render.call(self,response),"click"===type?(infiniteScroll.settings.wrapper&&document.querySelector("#infinite-view-"+(self.page+self.offset-1)+" a:first-of-type").focus({preventScroll:!0}),response.lastbatch?self.click_handle?(self.body.classList.add("infinity-end"),self.body.classList.remove("infinity-success")):self.trigger(this.body,"infinite-scroll-posts-end"):self.click_handle?self.element.appendChild(self.handle):self.trigger(this.body,"infinite-scroll-posts-more")):response.lastbatch&&(self.disabled=!0,self.body.classList.add("infinity-end"),self.body.classList.remove("infinity-success")),response.currentday&&(self.currentday=response.currentday),self.google_analytics){var ga_url=self.history.path.replace(/%d/,self.page);"object"==typeof _gaq&&_gaq.push(["_trackPageview",ga_url]),"function"==typeof ga&&ga("send","pageview",ga_url)}}else self.click_handle&&loader.parentNode&&loader.parentNode.removeChild(loader)},xhr},Scroller.prototype.appendInlineScript=function(e,t){var n=document.createElement("script"),i=document.createTextNode("//<![CDATA[ \n"+e+"\n//]]>");n.type="text/javascript",n.appendChild(i),document.getElementsByTagName(t)[0].appendChild(n)},Scroller.prototype.maybeLoadMejs=function(){null!==this.wpMediaelement&&("undefined"==typeof mejs?setTimeout(this.maybeLoadMejs.bind(this),250):(document.getElementsByTagName(this.wpMediaelement.element)[0].appendChild(this.wpMediaelement.tag),this.wpMediaelement=null,this.body.addEventListener("is.post-load",this.initializeMejs)))},Scroller.prototype.initializeMejs=function(e){if(e.detail&&e.detail.html&&(-1!==e.detail.html.indexOf("wp-audio-shortcode")||-1!==e.detail.html.indexOf("wp-video-shortcode"))&&"undefined"!=typeof mejs){var t,n={};"undefined"!=typeof _wpmejsSettings&&(n.pluginPath=_wpmejsSettings.pluginPath),n.success=function(e){var t=e.attributes.autoplay&&"false"!==e.attributes.autoplay;"flash"===e.pluginType&&t&&e.addEventListener("canplay",function(){e.play()},!1)},t=document.querySelectorAll(".wp-audio-shortcode, .wp-video-shortcode"),t=(t=Array.prototype.slice.call(t)).filter(function(e){for(;e.parentNode;){if(e.classList.contains("mejs-container"))return!1;e=e.parentNode}return!0});for(var i=0;i<t.length;i++)new MediaElementPlayer(t[i],n)}},Scroller.prototype.measure=function(e,t){t=t||[];for(var n,i,o,r=Array.prototype.slice.call(e.children),s=Number.MAX_VALUE,l=0;r.length>0;){for(n=r.shift(),o=0;o<t.length;o++)if(n.classList.contains(t[o])){r=r.concat(Array.prototype.slice.call(n.children));break}i=n.getBoundingClientRect(),s=Math.min(s,i.top),l=Math.max(l,i.bottom)}var a=Math.round(window.innerHeight/2),d=s<=a&&l>=a;return{top:s,bottom:l,height:l-s,factor:(Math.min(l,a)-Math.max(s,0))/a,isActive:d}},Scroller.prototype.ensureFilledViewport=function(){var e=this,t=e.window.innerHeight,n=e.measure(e.element,[e.wrapperClass]);e.body.removeEventListener("is.post-load",e.checkViewportOnLoadBound),0!==n.bottom&&n.bottom<t&&(e.ready=!0,e.refresh())},Scroller.prototype.checkViewportOnLoad=function(){this.ensureFilledViewport()};var previousFullScrenState=fullscreenState();Scroller.prototype.determineURL=function(){var e,t=this,n=-1,i=fullscreenState(),o=0;if(previousFullScrenState^i)previousFullScrenState=i;else{previousFullScrenState=i,e=document.querySelectorAll("."+t.wrapperClass);for(var r=0;r<e.length;r++){var s=t.measure(e[r]);if(s.isActive){n=parseInt(e[r].dataset.pageNum,10);break}s.factor>o&&(n=parseInt(e[r].dataset.pageNum,10),o=s.factor)}t.updateURL(n)}},Scroller.prototype.updateURL=function(e){if(window.history.pushState){var t=this,n=t.origURL;-1!==e&&(n=window.location.protocol+"//"+t.history.host+t.history.path.replace(/%d/,e)+t.history.parameters),window.location.href!==n&&history.pushState(null,null,n)}},Scroller.prototype.pause=function(){this.disabled=!0},Scroller.prototype.resume=function(){this.disabled=!1},Scroller.prototype.trigger=function(e,t,n){var i;(n=n||{}).jqueryEventName&&"undefined"!=typeof jQuery&&jQuery(e).trigger(n.jqueryEventName,n.data||null);try{i=new CustomEvent(t,{bubbles:!0,cancelable:!0,detail:n.data||null})}catch{(i=document.createEvent("CustomEvent")).initCustomEvent(t,!0,!0,n.data||null)}e.dispatchEvent(i)};var jetpackInfinityModule=function(){if("object"==typeof infiniteScroll&&(infiniteScroll.
1settings.body_class.split(" ").forEach(function(e){e&&document.body.classList.add(e)}),stats=infiniteScroll.settings.stats,type=infiniteScroll.settings.type,text=infiniteScroll.settings.text,totop=infiniteScroll.settings.totop,loading_text=infiniteScroll.settings.loading_text,infiniteScroll.scroller=new Scroller(infiniteScroll.settings),"click"===type)){var e=null;window.addEventListener("scroll",function(){e||(e=setTimeout(function(){infiniteScroll.scroller.determineURL(),e=null},250))})}};"interactive"===document.readyState||"complete"===document.readyState?jetpackInfinityModule():document.addEventListener("DOMContentLoaded",jetpackInfinityModule)})()})();;
2(()=>{const e=document.querySelectorAll(".coblocks-animate");if("IntersectionObserver"in window){const t=new IntersectionObserver((e=>{e.forEach((e=>{e.isIntersecting&&(e.target.classList.add(e.target.dataset.coblocksAnimation),t.unobserve(e.target))}))}),{threshold:[.15]});e.forEach((e=>{t.observe(e)}))}else e.forEach((e=>{e.classList.remove("coblocks-animate"),delete e.dataset.coblocksAnimation}))})();;
3/**
4 * File skip-link-focus-fix.js.
5 *
6 * Helps with accessibility for keyboard only users.
7 *
8 * Learn more: https://git.io/vWdr2
9 */
10( function() {
11	var isWebkit = navigator.userAgent.toLowerCase().indexOf( 'webkit' ) > -1,
12	    isOpera  = navigator.userAgent.toLowerCase().indexOf( 'opera' )  > -1,
13	    isIe     = navigator.userAgent.toLowerCase().indexOf( 'msie' )   > -1;
14
15	if ( ( isWebkit || isOpera || isIe ) && document.getElementById && window.addEventListener ) {
16		window.addEventListener( 'hashchange', function() {
17			var id = location.hash.substring( 1 ),
18				element;
19
20			if ( ! ( /^[A-z0-9_-]+$/.test( id ) ) ) {
21				return;
22			}
23
24			element = document.getElementById( id );
25
26			if ( element ) {
27				if ( ! ( /^(?:a|select|input|button|textarea)$/i.test( element.tagName ) ) ) {
28					element.tabIndex = -1;
29				}
30
31				element.focus();
32			}
33		}, false );
34	}
35})();;
36/*
37 * jQuery FlexSlider v2.4.0
38 * Copyright 2012 WooThemes
39 * Contributing Author: Tyler Smith
40 */
41;
42(function ($) {
43
44  //FlexSlider: Object Instance
45  $.flexslider = function(el, options) {
46    var slider = $(el);
47
48    // making variables public
49    slider.vars = $.extend({}, $.flexslider.defaults, options);
50
51    var namespace = slider.vars.namespace,
52        msGesture = window.navigator && window.navigator.msPointerEnabled && window.MSGesture,
53        touch = (( "ontouchstart" in window ) || msGesture || window.DocumentTouch && document instanceof DocumentTouch) && slider.vars.touch,
54        // depricating this idea, as devices are being released with both of these events
55        //eventType = (touch) ? "touchend" : "click",
56        eventType = "click touchend MSPointerUp keyup",
57        watchedEvent = "",
58        watchedEventClearTimer,
59        vertical = slider.vars.direction === "vertical",
60        reverse = slider.vars.reverse,
61        carousel = (slider.vars.itemWidth > 0),
62        fade = slider.vars.animation === "fade",
63        asNav = slider.vars.asNavFor !== "",
64        methods = {},
65        focused = true;
66
67    // Store a reference to the slider object
68    $.data(el, "flexslider", slider);
69
70    // Private slider methods
71    methods = {
72      init: function() {
73        slider.animating = false;
74        // Get current slide and make sure it is a number
75        slider.currentSlide = parseInt( ( slider.vars.startAt ? slider.vars.startAt : 0), 10 );
76        if ( isNaN( slider.currentSlide ) ) { slider.currentSlide = 0; }
77        slider.animatingTo = slider.currentSlide;
78        slider.atEnd = (slider.currentSlide === 0 || slider.currentSlide === slider.last);
79        slider.containerSelector = slider.vars.selector.substr(0,slider.vars.selector.search(' '));
80        slider.slides = $(slider.vars.selector, slider);
81        slider.container = $(slider.containerSelector, slider);
82        slider.count = slider.slides.length;
83        // SYNC:
84        slider.syncExists = $(slider.vars.sync).length > 0;
85        // SLIDE:
86        if (slider.vars.animation === "slide") { slider.vars.animation = "swing"; }
87        slider.prop = (vertical) ? "top" : "marginLeft";
88        slider.args = {};
89        // SLIDESHOW:
90        slider.manualPause = false;
vendor: 44,973 bytes, lines 91-1136
91        slider.stopped = false;
92        //PAUSE WHEN INVISIBLE
93        slider.started = false;
94        slider.startTimeout = null;
95        // TOUCH/USECSS:
96        slider.transitions = !slider.vars.video && !fade && slider.vars.useCSS && (function() {
97          var obj = document.createElement('div'),
98              props = ['perspectiveProperty', 'WebkitPerspective', 'MozPerspective', 'OPerspective', 'msPerspective'];
99          for (var i in props) {
100            if ( obj.style[ props[i] ] !== undefined ) {
101              slider.pfx = props[i].replace('Perspective','').toLowerCase();
102              slider.prop = "-" + slider.pfx + "-transform";
103              return true;
104            }
105          }
106          return false;
107        }());
108        slider.ensureAnimationEnd = '';
109        // CONTROLSCONTAINER:
110        if (slider.vars.controlsContainer !== "") slider.controlsContainer = $(slider.vars.controlsContainer).length > 0 && $(slider.vars.controlsContainer);
111        // MANUAL:
112        if (slider.vars.manualControls !== "") slider.manualControls = $(slider.vars.manualControls).length > 0 && $(slider.vars.manualControls);
113
114        // RANDOMIZE:
115        if (slider.vars.randomize) {
116          slider.slides.sort(function() { return (Math.round(Math.random())-0.5); });
117          slider.container.empty().append(slider.slides);
118        }
119
120        slider.doMath();
121
122        // INIT
123        slider.setup("init");
124
125        // CONTROLNAV:
126        if (slider.vars.controlNav) { methods.controlNav.setup(); }
127
128        // DIRECTIONNAV:
129        if (slider.vars.directionNav) { methods.directionNav.setup(); }
130
131        // KEYBOARD:
132        if (slider.vars.keyboard && ($(slider.containerSelector).length === 1 || slider.vars.multipleKeyboard)) {
133          $(document).bind('keyup', function(event) {
134            var keycode = event.keyCode;
135            if (!slider.animating && (keycode === 39 || keycode === 37)) {
136              var target = (keycode === 39) ? slider.getTarget('next') :
137                           (keycode === 37) ? slider.getTarget('prev') : false;
138              slider.flexAnimate(target, slider.vars.pauseOnAction);
139            }
140          });
141        }
142        // MOUSEWHEEL:
143        if (slider.vars.mousewheel) {
144          slider.bind('mousewheel', function(event, delta, deltaX, deltaY) {
145            event.preventDefault();
146            var target = (delta < 0) ? slider.getTarget('next') : slider.getTarget('prev');
147            slider.flexAnimate(target, slider.vars.pauseOnAction);
148          });
149        }
150
151        // PAUSEPLAY
152        if (slider.vars.pausePlay) { methods.pausePlay.setup(); }
153
154        //PAUSE WHEN INVISIBLE
155        if (slider.vars.slideshow && slider.vars.pauseInvisible) { methods.pauseInvisible.init(); }
156
157        // SLIDSESHOW
158        if (slider.vars.slideshow) {
159          if (slider.vars.pauseOnHover) {
160            slider.hover(function() {
161              if (!slider.manualPlay && !slider.manualPause) { slider.pause(); }
162            }, function() {
163              if (!slider.manualPause && !slider.manualPlay && !slider.stopped) { slider.play(); }
164            });
165          }
166          // initialize animation
167          //If we're visible, or we don't use PageVisibility API
168          if(!slider.vars.pauseInvisible || !methods.pauseInvisible.isHidden()) {
169            (slider.vars.initDelay > 0) ? slider.startTimeout = setTimeout(slider.play, slider.vars.initDelay) : slider.play();
170          }
171        }
172
173        // ASNAV:
174        if (asNav) { methods.asNav.setup(); }
175
176        // TOUCH
177        if (touch && slider.vars.touch) { methods.touch(); }
178
179        // FADE&&SMOOTHHEIGHT || SLIDE:
180        if (!fade || (fade && slider.vars.smoothHeight)) { $(window).bind("resize orientationchange focus", methods.resize); }
181
182        slider.find("img").attr("draggable", "false");
183
184        // API: start() Callback
185        setTimeout(function(){
186          slider.vars.start(slider);
187        }, 200);
188      },
189      asNav: {
190        setup: function() {
191          slider.asNav = true;
192          slider.animatingTo = Math.floor(slider.currentSlide/slider.move);
193          slider.currentItem = slider.currentSlide;
194          slider.slides.removeClass(namespace + "active-slide").eq(slider.currentItem).addClass(namespace + "active-slide");
195          if(!msGesture){
196              slider.slides.on(eventType, function(e){
197                e.preventDefault();
198                var $slide = $(this),
199                    target = $slide.index();
200                var posFromLeft = $slide.offset().left - $(slider).scrollLeft(); // Find position of slide relative to left of slider container
201                if( posFromLeft <= 0 && $slide.hasClass( namespace + 'active-slide' ) ) {
202                  slider.flexAnimate(slider.getTarget("prev"), true);
203                } else if (!$(slider.vars.asNavFor).data('flexslider').animating && !$slide.hasClass(namespace + "active-slide")) {
204                  slider.direction = (slider.currentItem < target) ? "next" : "prev";
205                  slider.flexAnimate(target, slider.vars.pauseOnAction, false, true, true);
206                }
207              });
208          }else{
209              el._slider = slider;
210              slider.slides.each(function (){
211                  var that = this;
212                  that._gesture = new MSGesture();
213                  that._gesture.target = that;
214                  that.addEventListener("MSPointerDown", function (e){
215                      e.preventDefault();
216                      if(e.currentTarget._gesture) {
217                        e.currentTarget._gesture.addPointer(e.pointerId);
218                      }
219                  }, false);
220                  that.addEventListener("MSGestureTap", function (e){
221                      e.preventDefault();
222                      var $slide = $(this),
223                          target = $slide.index();
224                      if (!$(slider.vars.asNavFor).data('flexslider').animating && !$slide.hasClass('active')) {
225                          slider.direction = (slider.currentItem < target) ? "next" : "prev";
226                          slider.flexAnimate(target, slider.vars.pauseOnAction, false, true, true);
227                      }
228                  });
229              });
230          }
231        }
232      },
233      controlNav: {
234        setup: function() {
235          if (!slider.manualControls) {
236            methods.controlNav.setupPaging();
237          } else { // MANUALCONTROLS:
238            methods.controlNav.setupManual();
239          }
240        },
241        setupPaging: function() {
242          var type = (slider.vars.controlNav === "thumbnails") ? 'control-thumbs' : 'control-paging',
243              j = 1,
244              item,
245              slide;
246
247          slider.controlNavScaffold = $('<ol class="'+ namespace + 'control-nav ' + namespace + type + '"></ol>');
248
249          if (slider.pagingCount > 1) {
250            for (var i = 0; i < slider.pagingCount; i++) {
251              slide = slider.slides.eq(i);
252
253              if ( undefined === slide.attr( 'data-thumb-alt' ) ) { 
254                slide.attr( 'data-thumb-alt', '' ); 
255              }
256              
257              item = $( '<a></a>' ).attr( 'href', '#' ).text( j );
258              if ( slider.vars.controlNav === "thumbnails" ) {
259                item = $( '<img/>' ).attr( 'src', slide.attr( 'data-thumb' ) );
260              }
261              
262              if ( '' !== slide.attr( 'data-thumb-alt' ) ) {
263                item.attr( 'alt', slide.attr( 'data-thumb-alt' ) );
264              }
265
266              if ( 'thumbnails' === slider.vars.controlNav && true === slider.vars.thumbCaptions ) {
267                var captn = slide.attr( 'data-thumbcaption' );
268                if ( '' !== captn && undefined !== captn ) { 
269                  var caption = $('<span></span>' ).addClass( namespace + 'caption' ).text( captn );
270                  item.append( caption );
271                }
272              }
273              
274              var liElement = $( '<li>' );
275              item.appendTo( liElement );
276              liElement.append( '</li>' );
277
278              slider.controlNavScaffold.append(liElement);
279              j++;
280            }
281          }
282
283          // CONTROLSCONTAINER:
284          (slider.controlsContainer) ? $(slider.controlsContainer).append(slider.controlNavScaffold) : slider.append(slider.controlNavScaffold);
285          methods.controlNav.set();
286
287          methods.controlNav.active();
288
289          slider.controlNavScaffold.delegate('a, img', eventType, function(event) {
290            event.preventDefault();
291
292            if (watchedEvent === "" || watchedEvent === event.type) {
293              var $this = $(this),
294                  target = slider.controlNav.index($this);
295
296              if (!$this.hasClass(namespace + 'active')) {
297                slider.direction = (target > slider.currentSlide) ? "next" : "prev";
298                slider.flexAnimate(target, slider.vars.pauseOnAction);
299              }
300            }
301
302            // setup flags to prevent event duplication
303            if (watchedEvent === "") {
304              watchedEvent = event.type;
305            }
306            methods.setToClearWatchedEvent();
307
308          });
309        },
310        setupManual: function() {
311          slider.controlNav = slider.manualControls;
312          methods.controlNav.active();
313
314          slider.controlNav.bind(eventType, function(event) {
315            event.preventDefault();
316
317            if (watchedEvent === "" || watchedEvent === event.type) {
318              var $this = $(this),
319                  target = slider.controlNav.index($this);
320
321              if (!$this.hasClass(namespace + 'active')) {
322                (target > slider.currentSlide) ? slider.direction = "next" : slider.direction = "prev";
323                slider.flexAnimate(target, slider.vars.pauseOnAction);
324              }
325            }
326
327            // setup flags to prevent event duplication
328            if (watchedEvent === "") {
329              watchedEvent = event.type;
330            }
331            methods.setToClearWatchedEvent();
332          });
333        },
334        set: function() {
335          var selector = (slider.vars.controlNav === "thumbnails") ? 'img' : 'a';
336          slider.controlNav = $('.' + namespace + 'control-nav li ' + selector, (slider.controlsContainer) ? slider.controlsContainer : slider);
337        },
338        active: function() {
339          slider.controlNav.removeClass(namespace + "active").eq(slider.animatingTo).addClass(namespace + "active");
340        },
341        update: function(action, pos) {
342          if (slider.pagingCount > 1 && action === "add") {
343            slider.controlNavScaffold.append($('<li><a>' + slider.count + '</a></li>'));
344          } else if (slider.pagingCount === 1) {
345            slider.controlNavScaffold.find('li').remove();
346          } else {
347            slider.controlNav.eq(pos).closest('li').remove();
348          }
349          methods.controlNav.set();
350          (slider.pagingCount > 1 && slider.pagingCount !== slider.controlNav.length) ? slider.update(pos, action) : methods.controlNav.active();
351        }
352      },
353      directionNav: {
354        setup: function() {
355          var directionNavScaffold = $('<ul class="' + namespace + 'direction-nav"><li class="' + namespace + 'nav-prev"><a class="' + namespace + 'prev" href="#">' + slider.vars.prevText + '</a></li><li class="' + namespace + 'nav-next"><a class="' + namespace + 'next" href="#">' + slider.vars.nextText + '</a></li></ul>');
356
357          // CONTROLSCONTAINER:
358          if (slider.controlsContainer) {
359            $(slider.controlsContainer).append(directionNavScaffold);
360            slider.directionNav = $('.' + namespace + 'direction-nav li a', slider.controlsContainer);
361          } else {
362            slider.append(directionNavScaffold);
363            slider.directionNav = $('.' + namespace + 'direction-nav li a', slider);
364          }
365
366          methods.directionNav.update();
367
368          slider.directionNav.bind(eventType, function(event) {
369            event.preventDefault();
370            var target;
371
372            if (watchedEvent === "" || watchedEvent === event.type) {
373              target = ($(this).hasClass(namespace + 'next')) ? slider.getTarget('next') : slider.getTarget('prev');
374              slider.flexAnimate(target, slider.vars.pauseOnAction);
375            }
376
377            // setup flags to prevent event duplication
378            if (watchedEvent === "") {
379              watchedEvent = event.type;
380            }
381            methods.setToClearWatchedEvent();
382          });
383        },
384        update: function() {
385          var disabledClass = namespace + 'disabled';
386          if (slider.pagingCount === 1) {
387            slider.directionNav.addClass(disabledClass).attr('tabindex', '-1');
388          } else if (!slider.vars.animationLoop) {
389            if (slider.animatingTo === 0) {
390              slider.directionNav.removeClass(disabledClass).filter('.' + namespace + "prev").addClass(disabledClass).attr('tabindex', '-1');
391            } else if (slider.animatingTo === slider.last) {
392              slider.directionNav.removeClass(disabledClass).filter('.' + namespace + "next").addClass(disabledClass).attr('tabindex', '-1');
393            } else {
394              slider.directionNav.removeClass(disabledClass).removeAttr('tabindex');
395            }
396          } else {
397            slider.directionNav.removeClass(disabledClass).removeAttr('tabindex');
398          }
399        }
400      },
401      pausePlay: {
402        setup: function() {
403          var pausePlayScaffold = $('<div class="' + namespace + 'pauseplay"><a></a></div>');
404
405          // CONTROLSCONTAINER:
406          if (slider.controlsContainer) {
407            slider.controlsContainer.append(pausePlayScaffold);
408            slider.pausePlay = $('.' + namespace + 'pauseplay a', slider.controlsContainer);
409          } else {
410            slider.append(pausePlayScaffold);
411            slider.pausePlay = $('.' + namespace + 'pauseplay a', slider);
412          }
413
414          methods.pausePlay.update((slider.vars.slideshow) ? namespace + 'pause' : namespace + 'play');
415
416          slider.pausePlay.bind(eventType, function(event) {
417            event.preventDefault();
418
419            if (watchedEvent === "" || watchedEvent === event.type) {
420              if ($(this).hasClass(namespace + 'pause')) {
421                slider.manualPause = true;
422                slider.manualPlay = false;
423                slider.pause();
424              } else {
425                slider.manualPause = false;
426                slider.manualPlay = true;
427                slider.play();
428              }
429            }
430
431            // setup flags to prevent event duplication
432            if (watchedEvent === "") {
433              watchedEvent = event.type;
434            }
435            methods.setToClearWatchedEvent();
436          });
437        },
438        update: function(state) {
439          (state === "play") ? slider.pausePlay.removeClass(namespace + 'pause').addClass(namespace + 'play').html(slider.vars.playText) : slider.pausePlay.removeClass(namespace + 'play').addClass(namespace + 'pause').html(slider.vars.pauseText);
440        }
441      },
442      touch: function() {
443        var startX,
444          startY,
445          offset,
446          cwidth,
447          dx,
448          startT,
449          scrolling = false,
450          localX = 0,
451          localY = 0,
452          accDx = 0;
453
454        if(!msGesture){
455            el.addEventListener('touchstart', onTouchStart, false);
456
457            function onTouchStart(e) {
458              if (slider.animating) {
459                e.preventDefault();
460              } else if ( ( window.navigator.msPointerEnabled ) || e.touches.length === 1 ) {
461                slider.pause();
462                // CAROUSEL:
463                cwidth = (vertical) ? slider.h : slider. w;
464                startT = Number(new Date());
465                // CAROUSEL:
466
467                // Local vars for X and Y points.
468                localX = e.touches[0].pageX;
469                localY = e.touches[0].pageY;
470
471                offset = (carousel && reverse && slider.animatingTo === slider.last) ? 0 :
472                         (carousel && reverse) ? slider.limit - (((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo) :
473                         (carousel && slider.currentSlide === slider.last) ? slider.limit :
474                         (carousel) ? ((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.currentSlide :
475                         (reverse) ? (slider.last - slider.currentSlide + slider.cloneOffset) * cwidth : (slider.currentSlide + slider.cloneOffset) * cwidth;
476                startX = (vertical) ? localY : localX;
477                startY = (vertical) ? localX : localY;
478
479                el.addEventListener('touchmove', onTouchMove, false);
480                el.addEventListener('touchend', onTouchEnd, false);
481              }
482            }
483
484            function onTouchMove(e) {
485              // Local vars for X and Y points.
486
487              localX = e.touches[0].pageX;
488              localY = e.touches[0].pageY;
489
490              dx = (vertical) ? startX - localY : startX - localX;
491              scrolling = (vertical) ? (Math.abs(dx) < Math.abs(localX - startY)) : (Math.abs(dx) < Math.abs(localY - startY));
492
493              var fxms = 500;
494
495              if ( ! scrolling || Number( new Date() ) - startT > fxms ) {
496                e.preventDefault();
497                if (!fade && slider.transitions) {
498                  if (!slider.vars.animationLoop) {
499                    dx = dx/((slider.currentSlide === 0 && dx < 0 || slider.currentSlide === slider.last && dx > 0) ? (Math.abs(dx)/cwidth+2) : 1);
500                  }
501                  slider.setProps(offset + dx, "setTouch");
502                }
503              }
504            }
505
506            function onTouchEnd(e) {
507              // finish the touch by undoing the touch session
508              el.removeEventListener('touchmove', onTouchMove, false);
509
510              if (slider.animatingTo === slider.currentSlide && !scrolling && !(dx === null)) {
511                var updateDx = (reverse) ? -dx : dx,
512                    target = (updateDx > 0) ? slider.getTarget('next') : slider.getTarget('prev');
513
514                if (slider.canAdvance(target) && (Number(new Date()) - startT < 550 && Math.abs(updateDx) > 50 || Math.abs(updateDx) > cwidth/2)) {
515                  slider.flexAnimate(target, slider.vars.pauseOnAction);
516                } else {
517                  if (!fade) { slider.flexAnimate(slider.currentSlide, slider.vars.pauseOnAction, true); }
518                }
519              }
520              el.removeEventListener('touchend', onTouchEnd, false);
521
522              startX = null;
523              startY = null;
524              dx = null;
525              offset = null;
526            }
527        }else{
528            el.style.msTouchAction = "none";
529            el._gesture = new MSGesture();
530            el._gesture.target = el;
531            el.addEventListener("MSPointerDown", onMSPointerDown, false);
532            el._slider = slider;
533            el.addEventListener("MSGestureChange", onMSGestureChange, false);
534            el.addEventListener("MSGestureEnd", onMSGestureEnd, false);
535
536            function onMSPointerDown(e){
537                e.stopPropagation();
538                if (slider.animating) {
539                    e.preventDefault();
540                }else{
541                    slider.pause();
542                    el._gesture.addPointer(e.pointerId);
543                    accDx = 0;
544                    cwidth = (vertical) ? slider.h : slider. w;
545                    startT = Number(new Date());
546                    // CAROUSEL:
547
548                    offset = (carousel && reverse && slider.animatingTo === slider.last) ? 0 :
549                        (carousel && reverse) ? slider.limit - (((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo) :
550                            (carousel && slider.currentSlide === slider.last) ? slider.limit :
551                                (carousel) ? ((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.currentSlide :
552                                    (reverse) ? (slider.last - slider.currentSlide + slider.cloneOffset) * cwidth : (slider.currentSlide + slider.cloneOffset) * cwidth;
553                }
554            }
555
556            function onMSGestureChange(e) {
557                e.stopPropagation();
558                var slider = e.target._slider;
559                if(!slider){
560                    return;
561                }
562                var transX = -e.translationX,
563                    transY = -e.translationY;
564
565                //Accumulate translations.
566                accDx = accDx + ((vertical) ? transY : transX);
567                dx = accDx;
568                scrolling = (vertical) ? (Math.abs(accDx) < Math.abs(-transX)) : (Math.abs(accDx) < Math.abs(-transY));
569
570                if(e.detail === e.MSGESTURE_FLAG_INERTIA){
571                    setImmediate(function (){
572                        el._gesture.stop();
573                    });
574
575                    return;
576                }
577
578                if (!scrolling || Number(new Date()) - startT > 500) {
579                    e.preventDefault();
580                    if (!fade && slider.transitions) {
581                        if (!slider.vars.animationLoop) {
582                            dx = accDx / ((slider.currentSlide === 0 && accDx < 0 || slider.currentSlide === slider.last && accDx > 0) ? (Math.abs(accDx) / cwidth + 2) : 1);
583                        }
584                        slider.setProps(offset + dx, "setTouch");
585                    }
586                }
587            }
588
589            function onMSGestureEnd(e) {
590                e.stopPropagation();
591                var slider = e.target._slider;
592                if(!slider){
593                    return;
594                }
595                if (slider.animatingTo === slider.currentSlide && !scrolling && !(dx === null)) {
596                    var updateDx = (reverse) ? -dx : dx,
597                        target = (updateDx > 0) ? slider.getTarget('next') : slider.getTarget('prev');
598
599                    if (slider.canAdvance(target) && (Number(new Date()) - startT < 550 && Math.abs(updateDx) > 50 || Math.abs(updateDx) > cwidth/2)) {
600                        slider.flexAnimate(target, slider.vars.pauseOnAction);
601                    } else {
602                        if (!fade) { slider.flexAnimate(slider.currentSlide, slider.vars.pauseOnAction, true); }
603                    }
604                }
605
606                startX = null;
607                startY = null;
608                dx = null;
609                offset = null;
610                accDx = 0;
611            }
612        }
613      },
614      resize: function() {
615        if (!slider.animating && slider.is(':visible')) {
616          if (!carousel) { slider.doMath(); }
617
618          if (fade) {
619            // SMOOTH HEIGHT:
620            methods.smoothHeight();
621          } else if (carousel) { //CAROUSEL:
622            slider.slides.width(slider.computedW);
623            slider.update(slider.pagingCount);
624            slider.setProps();
625          }
626          else if (vertical) { //VERTICAL:
627            slider.viewport.height(slider.h);
628            slider.setProps(slider.h, "setTotal");
629          } else {
630            // SMOOTH HEIGHT:
631            if (slider.vars.smoothHeight) { methods.smoothHeight(); }
632            slider.newSlides.width(slider.computedW);
633            slider.setProps(slider.computedW, "setTotal");
634          }
635        }
636      },
637      smoothHeight: function(dur) {
638        if (!vertical || fade) {
639          var $obj = (fade) ? slider : slider.viewport;
640          (dur) ? $obj.animate({"height": slider.slides.eq(slider.animatingTo).height()}, dur) : $obj.height(slider.slides.eq(slider.animatingTo).height());
641        }
642      },
643      sync: function(action) {
644        var $obj = $(slider.vars.sync).data("flexslider"),
645            target = slider.animatingTo;
646
647        switch (action) {
648          case "animate": $obj.flexAnimate(target, slider.vars.pauseOnAction, false, true); break;
649          case "play": if (!$obj.playing && !$obj.asNav) { $obj.play(); } break;
650          case "pause": $obj.pause(); break;
651        }
652      },
653      uniqueID: function($clone) {
654        // Append _clone to current level and children elements with id attributes
655        $clone.filter( '[id]' ).add($clone.find( '[id]' )).each(function() {
656          var $this = $(this);
657          $this.attr( 'id', $this.attr( 'id' ) + '_clone' );
658        });
659        return $clone;
660      },
661      pauseInvisible: {
662        visProp: null,
663        init: function() {
664          var visProp = methods.pauseInvisible.getHiddenProp();
665          if (visProp) {
666            var evtname = visProp.replace(/[H|h]idden/,'') + 'visibilitychange';
667            document.addEventListener(evtname, function() {
668              if (methods.pauseInvisible.isHidden()) {
669                if(slider.startTimeout) {
670                  clearTimeout(slider.startTimeout); //If clock is ticking, stop timer and prevent from starting while invisible
671                } else { 
672                  slider.pause(); //Or just pause
673                }
674              }
675              else {
676                if(slider.started) {
677                  slider.play(); //Initiated before, just play
678                } else { 
679                  if (slider.vars.initDelay > 0) { 
680                    setTimeout(slider.play, slider.vars.initDelay);
681                  } else {
682                    slider.play(); //Didn't init before: simply init or wait for it
683                  } 
684                }
685              }
686            });
687          }
688        },
689        isHidden: function() {
690          var prop = methods.pauseInvisible.getHiddenProp();
691          if (!prop) {
692            return false;
693          }
694          return document[prop];
695        },
696        getHiddenProp: function() {
697          var prefixes = ['webkit','moz','ms','o'];
698          // if 'hidden' is natively supported just return it
699          if ('hidden' in document) {
700            return 'hidden';
701          }
702          // otherwise loop over all the known prefixes until we find one
703          for ( var i = 0; i < prefixes.length; i++ ) {
704              if ((prefixes[i] + 'Hidden') in document) {
705                return prefixes[i] + 'Hidden';
706              }
707          }
708          // otherwise it's not supported
709          return null;
710        }
711      },
712      setToClearWatchedEvent: function() {
713        clearTimeout(watchedEventClearTimer);
714        watchedEventClearTimer = setTimeout(function() {
715          watchedEvent = "";
716        }, 3000);
717      }
718    };
719
720    // public methods
721    slider.flexAnimate = function(target, pause, override, withSync, fromNav) {
722      if (!slider.vars.animationLoop && target !== slider.currentSlide) {
723        slider.direction = (target > slider.currentSlide) ? "next" : "prev";
724      }
725
726      if (asNav && slider.pagingCount === 1) slider.direction = (slider.currentItem < target) ? "next" : "prev";
727
728      if (!slider.animating && (slider.canAdvance(target, fromNav) || override) && slider.is(":visible")) {
729        if (asNav && withSync) {
730          var master = $(slider.vars.asNavFor).data('flexslider');
731          slider.atEnd = target === 0 || target === slider.count - 1;
732          master.flexAnimate(target, true, false, true, fromNav);
733          slider.direction = (slider.currentItem < target) ? "next" : "prev";
734          master.direction = slider.direction;
735
736          if (Math.ceil((target + 1)/slider.visible) - 1 !== slider.currentSlide && target !== 0) {
737            slider.currentItem = target;
738            slider.slides.removeClass(namespace + "active-slide").eq(target).addClass(namespace + "active-slide");
739            target = Math.floor(target/slider.visible);
740          } else {
741            slider.currentItem = target;
742            slider.slides.removeClass(namespace + "active-slide").eq(target).addClass(namespace + "active-slide");
743            return false;
744          }
745        }
746
747        slider.animating = true;
748        slider.animatingTo = target;
749
750        // SLIDESHOW:
751        if (pause) { slider.pause(); }
752
753        // API: before() animation Callback
754        slider.vars.before(slider);
755
756        // SYNC:
757        if (slider.syncExists && !fromNav) { methods.sync("animate"); }
758
759        // CONTROLNAV
760        if (slider.vars.controlNav) { methods.controlNav.active(); }
761
762        // !CAROUSEL:
763        // CANDIDATE: slide active class (for add/remove slide)
764        if (!carousel) { slider.slides.removeClass(namespace + 'active-slide').eq(target).addClass(namespace + 'active-slide'); }
765
766        // INFINITE LOOP:
767        // CANDIDATE: atEnd
768        slider.atEnd = target === 0 || target === slider.last;
769
770        // DIRECTIONNAV:
771        if (slider.vars.directionNav) { methods.directionNav.update(); }
772
773        if (target === slider.last) {
774          // API: end() of cycle Callback
775          slider.vars.end(slider);
776          // SLIDESHOW && !INFINITE LOOP:
777          if (!slider.vars.animationLoop) { slider.pause(); }
778        }
779
780        // SLIDE:
781        if (!fade) {
782          var dimension = (vertical) ? slider.slides.filter(':first').height() : slider.computedW,
783              margin, slideString, calcNext;
784
785          // INFINITE LOOP / REVERSE:
786          if (carousel) {
787            //margin = (slider.vars.itemWidth > slider.w) ? slider.vars.itemMargin * 2 : slider.vars.itemMargin;
788            margin = slider.vars.itemMargin;
789            calcNext = ((slider.itemW + margin) * slider.move) * slider.animatingTo;
790            slideString = (calcNext > slider.limit && slider.visible !== 1) ? slider.limit : calcNext;
791          } else if (slider.currentSlide === 0 && target === slider.count - 1 && slider.vars.animationLoop && slider.direction !== "next") {
792            slideString = (reverse) ? (slider.count + slider.cloneOffset) * dimension : 0;
793          } else if (slider.currentSlide === slider.last && target === 0 && slider.vars.animationLoop && slider.direction !== "prev") {
794            slideString = (reverse) ? 0 : (slider.count + 1) * dimension;
795          } else {
796            slideString = (reverse) ? ((slider.count - 1) - target + slider.cloneOffset) * dimension : (target + slider.cloneOffset) * dimension;
797          }
798          slider.setProps(slideString, "", slider.vars.animationSpeed);
799          if (slider.transitions) {
800            if (!slider.vars.animationLoop || !slider.atEnd) {
801              slider.animating = false;
802              slider.currentSlide = slider.animatingTo;
803            }
804            
805            // Unbind previous transitionEnd events and re-bind new transitionEnd event
806            slider.container.unbind("webkitTransitionEnd transitionend");
807            slider.container.bind("webkitTransitionEnd transitionend", function() {
808              clearTimeout(slider.ensureAnimationEnd);
809              slider.wrapup(dimension);
810            });
811
812            // Insurance for the ever-so-fickle transitionEnd event
813            clearTimeout(slider.ensureAnimationEnd);
814            slider.ensureAnimationEnd = setTimeout(function() {
815              slider.wrapup(dimension);
816            }, slider.vars.animationSpeed + 100);
817
818          } else {
819            slider.container.animate(slider.args, slider.vars.animationSpeed, slider.vars.easing, function(){
820              slider.wrapup(dimension);
821            });
822          }
823        } else { // FADE:
824          if (!touch) {
825            //slider.slides.eq(slider.currentSlide).fadeOut(slider.vars.animationSpeed, slider.vars.easing);
826            //slider.slides.eq(target).fadeIn(slider.vars.animationSpeed, slider.vars.easing, slider.wrapup);
827
828            slider.slides.eq(slider.currentSlide).css({"zIndex": 1}).animate({"opacity": 0}, slider.vars.animationSpeed, slider.vars.easing);
829            slider.slides.eq(target).css({"zIndex": 2}).animate({"opacity": 1}, slider.vars.animationSpeed, slider.vars.easing, slider.wrapup);
830
831          } else {
832            slider.slides.eq(slider.currentSlide).css({ "opacity": 0, "zIndex": 1 });
833            slider.slides.eq(target).css({ "opacity": 1, "zIndex": 2 });
834            slider.wrapup(dimension);
835          }
836        }
837        // SMOOTH HEIGHT:
838        if (slider.vars.smoothHeight) { methods.smoothHeight(slider.vars.animationSpeed); }
839      }
840    };
841    slider.wrapup = function(dimension) {
842      // SLIDE:
843      if (!fade && !carousel) {
844        if (slider.currentSlide === 0 && slider.animatingTo === slider.last && slider.vars.animationLoop) {
845          slider.setProps(dimension, "jumpEnd");
846        } else if (slider.currentSlide === slider.last && slider.animatingTo === 0 && slider.vars.animationLoop) {
847          slider.setProps(dimension, "jumpStart");
848        }
849      }
850      slider.animating = false;
851      slider.currentSlide = slider.animatingTo;
852      // API: after() animation Callback
853      slider.vars.after(slider);
854    };
855
856    // SLIDESHOW:
857    slider.animateSlides = function() {
858      if (!slider.animating && focused ) { slider.flexAnimate(slider.getTarget("next")); }
859    };
860    // SLIDESHOW:
861    slider.pause = function() {
862      clearInterval(slider.animatedSlides);
863      slider.animatedSlides = null;
864      slider.playing = false;
865      // PAUSEPLAY:
866      if (slider.vars.pausePlay) { methods.pausePlay.update("play"); }
867      // SYNC:
868      if (slider.syncExists) { methods.sync("pause"); }
869    };
870    // SLIDESHOW:
871    slider.play = function() {
872      if (slider.playing) { clearInterval(slider.animatedSlides); }
873      slider.animatedSlides = slider.animatedSlides || setInterval(slider.animateSlides, slider.vars.slideshowSpeed);
874      slider.started = slider.playing = true;
875      // PAUSEPLAY:
876      if (slider.vars.pausePlay) { methods.pausePlay.update("pause"); }
877      // SYNC:
878      if (slider.syncExists) { methods.sync("play"); }
879    };
880    // STOP:
881    slider.stop = function () {
882      slider.pause();
883      slider.stopped = true;
884    };
885    slider.canAdvance = function(target, fromNav) {
886      // ASNAV:
887      var last = (asNav) ? slider.pagingCount - 1 : slider.last;
888      return (fromNav) ? true :
889             (asNav && slider.currentItem === slider.count - 1 && target === 0 && slider.direction === "prev") ? true :
890             (asNav && slider.currentItem === 0 && target === slider.pagingCount - 1 && slider.direction !== "next") ? false :
891             (target === slider.currentSlide && !asNav) ? false :
892             (slider.vars.animationLoop) ? true :
893             (slider.atEnd && slider.currentSlide === 0 && target === last && slider.direction !== "next") ? false :
894             (slider.atEnd && slider.currentSlide === last && target === 0 && slider.direction === "next") ? false :
895             true;
896    };
897    slider.getTarget = function(dir) {
898      slider.direction = dir;
899      if (dir === "next") {
900        return (slider.currentSlide === slider.last) ? 0 : slider.currentSlide + 1;
901      } else {
902        return (slider.currentSlide === 0) ? slider.last : slider.currentSlide - 1;
903      }
904    };
905
906    // SLIDE:
907    slider.setProps = function(pos, special, dur) {
908      var target = (function() {
909        var posCheck = (pos) ? pos : ((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo,
910            posCalc = (function() {
911              if (carousel) {
912                return (special === "setTouch") ? pos :
913                       (reverse && slider.animatingTo === slider.last) ? 0 :
914                       (reverse) ? slider.limit - (((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo) :
915                       (slider.animatingTo === slider.last) ? slider.limit : posCheck;
916              } else {
917                switch (special) {
918                  case "setTotal": return (reverse) ? ((slider.count - 1) - slider.currentSlide + slider.cloneOffset) * pos : (slider.currentSlide + slider.cloneOffset) * pos;
919                  case "setTouch": return (reverse) ? pos : pos;
920                  case "jumpEnd": return (reverse) ? pos : slider.count * pos;
921                  case "jumpStart": return (reverse) ? slider.count * pos : pos;
922                  default: return pos;
923                }
924              }
925            }());
926
927            return (posCalc * -1) + "px";
928          }());
929
930      if (slider.transitions) {
931        target = (vertical) ? "translate3d(0," + target + ",0)" : "translate3d(" + target + ",0,0)";
932        dur = (dur !== undefined) ? (dur/1000) + "s" : "0s";
933        slider.container.css("-" + slider.pfx + "-transition-duration", dur);
934         slider.container.css("transition-duration", dur);
935      }
936
937      slider.args[slider.prop] = target;
938      if (slider.transitions || dur === undefined) { slider.container.css(slider.args); }
939
940      slider.container.css('transform',target);
941    };
942
943    slider.setup = function(type) {
944      // SLIDE:
945      if (!fade) {
946        var sliderOffset, arr;
947
948        if (type === "init") {
949          slider.viewport = $('<div class="' + namespace + 'viewport"></div>').css({"overflow": "hidden", "position": "relative"}).appendTo(slider).append(slider.container);
950          // INFINITE LOOP:
951          slider.cloneCount = 0;
952          slider.cloneOffset = 0;
953          // REVERSE:
954          if (reverse) {
955            arr = $.makeArray(slider.slides).reverse();
956            slider.slides = $(arr);
957            slider.container.empty().append(slider.slides);
958          }
959        }
960        // INFINITE LOOP && !CAROUSEL:
961        if (slider.vars.animationLoop && !carousel) {
962          slider.cloneCount = 2;
963          slider.cloneOffset = 1;
964          // clear out old clones
965          if (type !== "init") { slider.container.find('.clone').remove(); }
966          slider.container.append(methods.uniqueID(slider.slides.first().clone().addClass('clone')).attr('aria-hidden', 'true'))
967                          .prepend(methods.uniqueID(slider.slides.last().clone().addClass('clone')).attr('aria-hidden', 'true'));
968        }
969        slider.newSlides = $(slider.vars.selector, slider);
970
971        sliderOffset = (reverse) ? slider.count - 1 - slider.currentSlide + slider.cloneOffset : slider.currentSlide + slider.cloneOffset;
972        // VERTICAL:
973        if (vertical && !carousel) {
974          slider.container.height((slider.count + slider.cloneCount) * 200 + "%").css("position", "absolute").width("100%");
975          setTimeout(function(){
976            slider.newSlides.css({"display": "block"});
977            slider.doMath();
978            slider.viewport.height(slider.h);
979            slider.setProps(sliderOffset * slider.h, "init");
980          }, (type === "init") ? 100 : 0);
981        } else {
982          slider.container.width((slider.count + slider.cloneCount) * 200 + "%");
983          slider.setProps(sliderOffset * slider.computedW, "init");
984          setTimeout(function(){
985            slider.doMath();
986            slider.newSlides.css({"width": slider.computedW, "float": "left", "display": "block"});
987            // SMOOTH HEIGHT:
988            if (slider.vars.smoothHeight) { methods.smoothHeight(); }
989          }, (type === "init") ? 100 : 0);
990        }
991      } else { // FADE:
992        slider.slides.css({"width": "100%", "float": "left", "marginRight": "-100%", "position": "relative"});
993        if (type === "init") {
994          if (!touch) {
995            //slider.slides.eq(slider.currentSlide).fadeIn(slider.vars.animationSpeed, slider.vars.easing);
996            if (slider.vars.fadeFirstSlide == false) {
997              slider.slides.css({ "opacity": 0, "display": "block", "zIndex": 1 }).eq(slider.currentSlide).css({"zIndex": 2}).css({"opacity": 1});
998            } else {
999              slider.slides.css({ "opacity": 0, "display": "block", "zIndex": 1 }).eq(slider.currentSlide).css({"zIndex": 2}).animate({"opacity": 1},slider.vars.animationSpeed,slider.vars.easing);
1000            }
1001          } else {
1002            slider.slides.css({ "opacity": 0, "display": "block", "webkitTransition": "opacity " + slider.vars.animationSpeed / 1000 + "s ease", "zIndex": 1 }).eq(slider.currentSlide).css({ "opacity": 1, "zIndex": 2});
1003          }
1004        }
1005        // SMOOTH HEIGHT:
1006        if (slider.vars.smoothHeight) { methods.smoothHeight(); }
1007      }
1008      // !CAROUSEL:
1009      // CANDIDATE: active slide
1010      if (!carousel) { slider.slides.removeClass(namespace + "active-slide").eq(slider.currentSlide).addClass(namespace + "active-slide"); }
1011
1012      //FlexSlider: init() Callback
1013      slider.vars.init(slider);
1014    };
1015
1016    slider.doMath = function() {
1017      var slide = slider.slides.first(),
1018          slideMargin = slider.vars.itemMargin,
1019          minItems = slider.vars.minItems,
1020          maxItems = slider.vars.maxItems;
1021
1022      slider.w = (slider.viewport===undefined) ? slider.width() : slider.viewport.width();
1023      slider.h = slide.height();
1024      slider.boxPadding = slide.outerWidth() - slide.width();
1025
1026      // CAROUSEL:
1027      if (carousel) {
1028        slider.itemT = slider.vars.itemWidth + slideMargin;
1029        slider.minW = (minItems) ? minItems * slider.itemT : slider.w;
1030        slider.maxW = (maxItems) ? (maxItems * slider.itemT) - slideMargin : slider.w;
1031        slider.itemW = (slider.minW > slider.w) ? (slider.w - (slideMargin * (minItems - 1)))/minItems :
1032                       (slider.maxW < slider.w) ? (slider.w - (slideMargin * (maxItems - 1)))/maxItems :
1033                       (slider.vars.itemWidth > slider.w) ? slider.w : slider.vars.itemWidth;
1034
1035        slider.visible = Math.floor(slider.w/(slider.itemW));
1036        slider.move = (slider.vars.move > 0 && slider.vars.move < slider.visible ) ? slider.vars.move : slider.visible;
1037        slider.pagingCount = Math.ceil(((slider.count - slider.visible)/slider.move) + 1);
1038        slider.last =  slider.pagingCount - 1;
1039        slider.limit = (slider.pagingCount === 1) ? 0 :
1040                       (slider.vars.itemWidth > slider.w) ? (slider.itemW * (slider.count - 1)) + (slideMargin * (slider.count - 1)) : ((slider.itemW + slideMargin) * slider.count) - slider.w - slideMargin;
1041      } else {
1042        slider.itemW = slider.w;
1043        slider.pagingCount = slider.count;
1044        slider.last = slider.count - 1;
1045      }
1046      slider.computedW = slider.itemW - slider.boxPadding;
1047    };
1048
1049    slider.update = function(pos, action) {
1050      slider.doMath();
1051
1052      // update currentSlide and slider.animatingTo if necessary
1053      if (!carousel) {
1054        if (pos < slider.currentSlide) {
1055          slider.currentSlide += 1;
1056        } else if (pos <= slider.currentSlide && pos !== 0) {
1057          slider.currentSlide -= 1;
1058        }
1059        slider.animatingTo = slider.currentSlide;
1060      }
1061
1062      // update controlNav
1063      if (slider.vars.controlNav && !slider.manualControls) {
1064        if ((action === "add" && !carousel) || slider.pagingCount > slider.controlNav.length) {
1065          methods.controlNav.update("add");
1066        } else if ((action === "remove" && !carousel) || slider.pagingCount < slider.controlNav.length) {
1067          if (carousel && slider.currentSlide > slider.last) {
1068            slider.currentSlide -= 1;
1069            slider.animatingTo -= 1;
1070          }
1071          methods.controlNav.update("remove", slider.last);
1072        }
1073      }
1074      // update directionNav
1075      if (slider.vars.directionNav) { methods.directionNav.update(); }
1076
1077    };
1078
1079    slider.addSlide = function(obj, pos) {
1080      var $obj = $(obj);
1081
1082      slider.count += 1;
1083      slider.last = slider.count - 1;
1084
1085      // append new slide
1086      if (vertical && reverse) {
1087        (pos !== undefined) ? slider.slides.eq(slider.count - pos).after($obj) : slider.container.prepend($obj);
1088      } else {
1089        (pos !== undefined) ? slider.slides.eq(pos).before($obj) : slider.container.append($obj);
1090      }
1091
1092      // update currentSlide, animatingTo, controlNav, and directionNav
1093      slider.update(pos, "add");
1094
1095      // update slider.slides
1096      slider.slides = $(slider.vars.selector + ':not(.clone)', slider);
1097      // re-setup the slider to accomdate new slide
1098      slider.setup();
1099
1100      //FlexSlider: added() Callback
1101      slider.vars.added(slider);
1102    };
1103    slider.removeSlide = function(obj) {
1104      var pos = (isNaN(obj)) ? slider.slides.index($(obj)) : obj;
1105
1106      // update count
1107      slider.count -= 1;
1108      slider.last = slider.count - 1;
1109
1110      // remove slide
1111      if (isNaN(obj)) {
1112        $(obj, slider.slides).remove();
1113      } else {
1114        (vertical && reverse) ? slider.slides.eq(slider.last).remove() : slider.slides.eq(obj).remove();
1115      }
1116
1117      // update currentSlide, animatingTo, controlNav, and directionNav
1118      slider.doMath();
1119      slider.update(pos, "remove");
1120
1121      // update slider.slides
1122      slider.slides = $(slider.vars.selector + ':not(.clone)', slider);
1123      // re-setup the slider to accomdate new slide
1124      slider.setup();
1125
1126      // FlexSlider: removed() Callback
1127      slider.vars.removed(slider);
1128    };
1129
1130    //FlexSlider: Initialize
1131    methods.init();
1132  };
1133
1134  // Ensure the slider isn't focussed if the window loses focus.
1135  $( window ).blur( function ( e ) {
1136    focused = false;
1137  }).focus( function ( e ) {
1138    focused = true;
1139  });
1140
1141  //FlexSlider: Default Settings
1142  $.flexslider.defaults = {
1143    namespace: "flex-",             //{NEW} String: Prefix string attached to the class of every element generated by the plugin
1144    selector: ".slides > li",       //{NEW} Selector: Must match a simple pattern. '{container} > {slide}' -- Ignore pattern at your own peril
1145    animation: "fade",              //String: Select your animation type, "fade" or "slide"
1146    easing: "swing",                //{NEW} String: Determines the easing method used in jQuery transitions. jQuery easing plugin is supported!
1147    direction: "horizontal",        //String: Select the sliding direction, "horizontal" or "vertical"
1148    reverse: false,                 //{NEW} Boolean: Reverse the animation direction
1149    animationLoop: true,            //Boolean: Should the animation loop? If false, directionNav will received "disable" classes at either end
1150    smoothHeight: false,            //{NEW} Boolean: Allow height of the slider to animate smoothly in horizontal mode
1151    startAt: 0,                     //Integer: The slide that the slider should start on. Array notation (0 = first slide)
1152    slideshow: true,                //Boolean: Animate slider automatically
1153    slideshowSpeed: 7000,           //Integer: Set the speed of the slideshow cycling, in milliseconds
1154    animationSpeed: 600,            //Integer: Set the speed of animations, in milliseconds
1155    initDelay: 0,                   //{NEW} Integer: Set an initialization delay, in milliseconds
1156    randomize: false,               //Boolean: Randomize slide order
1157    fadeFirstSlide: true,           //Boolean: Fade in the first slide when animation type is "fade"
1158    thumbCaptions: false,           //Boolean: Whether or not to put captions on thumbnails when using the "thumbnails" controlNav.
1159
1160    // Usability features
1161    pauseOnAction: true,            //Boolean: Pause the slideshow when interacting with control elements, highly recommended.
1162    pauseOnHover: false,            //Boolean: Pause the slideshow when hovering over slider, then resume when no longer hovering
1163    pauseInvisible: true,   		//{NEW} Boolean: Pause the slideshow when tab is invisible, resume when visible. Provides better UX, lower CPU usage.
1164    useCSS: true,                   //{NEW} Boolean: Slider will use CSS3 transitions if available
1165    touch: true,                    //{NEW} Boolean: Allow touch swipe navigation of the slider on touch-enabled devices
1166    video: false,                   //{NEW} Boolean: If using video in the slider, will prevent CSS3 3D Transforms to avoid graphical glitches
1167
1168    // Primary Controls
1169    controlNav: true,               //Boolean: Create navigation for paging control of each slide? Note: Leave true for manualControls usage
1170    directionNav: true,             //Boolean: Create navigation for previous/next navigation? (true/false)
1171    prevText: "Previous",           //String: Set the text for the "previous" directionNav item
1172    nextText: "Next",               //String: Set the text for the "next" directionNav item
1173
1174    // Secondary Navigation
1175    keyboard: true,                 //Boolean: Allow slider navigating via keyboard left/right keys
1176    multipleKeyboard: false,        //{NEW} Boolean: Allow keyboard navigation to affect multiple sliders. Default behavior cuts out keyboard navigation with more than one slider present.
1177    mousewheel: false,              //{UPDATED} Boolean: Requires jquery.mousewheel.js (https://github.com/brandonaaron/jquery-mousewheel) - Allows slider navigating via mousewheel
1178    pausePlay: false,               //Boolean: Create pause/play dynamic element
1179    pauseText: "Pause",             //String: Set the text for the "pause" pausePlay item
1180    playText: "Play",               //String: Set the text for the "play" pausePlay item
1181
1182    // Special properties
1183    controlsContainer: "",          //{UPDATED} jQuery Object/Selector: Declare which container the navigation elements should be appended too. Default container is the FlexSlider element. Example use would be $(".flexslider-container"). Property is ignored if given element is not found.
1184    manualControls: "",             //{UPDATED} jQuery Object/Selector: Declare custom control navigation. Examples would be $(".flex-control-nav li") or "#tabs-nav li img", etc. The number of elements in your controlNav should match the number of slides/tabs.
1185    sync: "",                       //{NEW} Selector: Mirror the actions performed on this slider with another slider. Use with care.
1186    asNavFor: "",                   //{NEW} Selector: Internal property exposed for turning the slider into a thumbnail navigation for another slider
1187
1188    // Carousel Options
1189    itemWidth: 0,                   //{NEW} Integer: Box-model width of individual carousel items, including horizontal borders and padding.
1190    itemMargin: 0,                  //{NEW} Integer: Margin between carousel items.
1191    minItems: 1,                    //{NEW} Integer: Minimum number of carousel items that should be visible. Items will resize fluidly when below this.
1192    maxItems: 0,                    //{NEW} Integer: Maxmimum number of carousel items that should be visible. Items will resize fluidly when above this limit.
1193    move: 0,                        //{NEW} Integer: Number of carousel items that should move on animation. If 0, slider will move all visible items.
1194    allowOneSlide: true,           //{NEW} Boolean: Whether or not to allow a slider comprised of a single slide
1195
1196    // Callback API
1197    start: function(){},            //Callback: function(slider) - Fires when the slider loads the first slide
1198    before: function(){},           //Callback: function(slider) - Fires asynchronously with each slider animation
1199    after: function(){},            //Callback: function(slider) - Fires after each slider animation completes
1200    end: function(){},              //Callback: function(slider) - Fires when the slider reaches the last slide (asynchronous)
1201    added: function(){},            //{NEW} Callback: function(slider) - Fires after a slide is added
1202    removed: function(){},           //{NEW} Callback: function(slider) - Fires after a slide is removed
1203    init: function() {}             //{NEW}
1203 Callback: function(slider) - Fires after the slider is initially setup
1204  };
1205
1206  //FlexSlider: Plugin Function
1207  $.fn.flexslider = function(options) {
1208    if (options === undefined) { options = {}; }
1209
1210    if (typeof options === "object") {
1211      return this.each(function() {
1212        var $this = $(this),
1213            selector = (options.selector) ? options.selector : ".slides > li",
1214            $slides = $this.find(selector);
1215
1216      if ( ( $slides.length === 1 && options.allowOneSlide === true ) || $slides.length === 0 ) {
1217          $slides.fadeIn(400);
1218          if (options.start) { options.start($this); }
1219        } else if ($this.data('flexslider') === undefined) {
1220          new $.flexslider(this, options);
1221        }
1222      });
1223    } else {
1224      // Helper strings to quickly perform functions on the slider
1225      var $slider = $(this).data('flexslider');
1226      switch (options) {
1227        case "play": $slider.play(); break;
1228        case "pause": $slider.pause(); break;
1229        case "stop": $slider.stop(); break;
1230        case "next": $slider.flexAnimate($slider.getTarget("next"), true); break;
1231        case "prev":
1232        case "previous": $slider.flexAnimate($slider.getTarget("prev"), true); break;
1233        default: if (typeof options === "number") { $slider.flexAnimate(options, true); }
1234      }
1235    }
1236  };
1237})(jQuery);
1238;
1239/*
1240	By Osvaldas Valutis, www.osvaldas.info
1241	Available for use under the MIT License
1242*/
1243
1244
1245
1246;(function( $, window, document, undefined )
1247{
1248	$.fn.doubleTapToGo = function( params )
1249	{
1250		if( !( 'ontouchstart' in window ) &&
1251			!navigator.msMaxTouchPoints &&
1252			!navigator.userAgent.toLowerCase().match( /windows phone os 7/i ) ) return false;
1253
1254		this.each( function()
1255		{
1256			var curItem = false;
1257
1258			$( this ).on( 'click', function( e )
1259			{
1260				var item = $( this );
1261				if( item[ 0 ] != curItem[ 0 ] )
1262				{
1263					e.preventDefault();
1264					curItem = item;
1265				}
1266			});
1267
1268			$( document ).on( 'click touchstart MSPointerDown', function( e )
1269			{
1270				var resetItem = true,
1271					parents	= $( e.target ).parents();
1272
1273				for( var i = 0; i < parents.length; i++ )
1274					if( parents[ i ] == curItem[ 0 ] )
1275						resetItem = false;
1276
1277				if( resetItem )
1278					curItem = false;
1279			});
1280		});
1281		return this;
1282	};
1283})( jQuery, window, document );;
1284/**
1285 * global.js
1286 *
1287 * Handles various UI actions
1288 * - Mobile menu
1289 * - Search form show/hide
1290 * - Touch device dropdowns (requires: doubletaptogo.js)
1291 * - Flexslider (requires: flexslider.js)
1292 * - Scroll to top
1293 * - Smooth page load
1294 *
1295 * @package Rowling
1296 */
1297( function( $ ) {
1298
1299/**
1300 * On ready
1301 */
1302	$( document ).ready( function() {
1303		var windowWidth = $( window ).width();
1304
1305
1306		// Toggle mobile menu
1307		$( ".nav-toggle" ).on( "click", function() {
1308			$( this ).toggleClass( "active" );
1309			$( ".header-bottom-menu" ).slideToggle();
1310			if ( $( ".search-toggle" ).hasClass( "active" ) ) {
1311				$( ".search-toggle" ).removeClass( "active" );
1312				$( ".search-container" ).slideToggle();
1313			}
1314			return false;
1315		});
1316
1317
1318		// Toggle search container
1319		$( ".search-toggle" ).on( "click", function() {
1320			$( this ).toggleClass( "active" );
1321			$( ".search-container" ).slideToggle();
1322			if ( $( ".nav-toggle" ).hasClass( "active" ) ) {
1323				$( ".nav-toggle" ).removeClass( "active" );
1324				$( ".header-bottom-menu" ).slideToggle();
1325			}
1326			return false;
1327		});
1328
1329		$( window ).resize( function() {
1330
1331			// Prevent the Android keyboard from triggering the following code
1332			if ( windowWidth !== $( window ).width() ) {
1333
1334				// Hide mobile menu/search container at resize
1335				if ( $(window).width() >= 851 ) {
1336					$( ".nav-toggle" ).removeClass( "active" );
1337					$( ".header-bottom-menu" ).show();
1338				}
1339
1340				if ( $(window).width() <= 850 ) {
1341					$( ".search-toggle" ).removeClass( "active" );
1342					$( ".search-container" ).hide();
1343				}
1344
1345				// Dropdown menus on touch devices, excluding mobile menu
1346				if ( $(window).width() <= 851 ) {
1347					$( ".header-bottom-menu li:has(ul)" ).doubleTapToGo();
1348					$( ".header-top-menu li:has(ul)" ).doubleTapToGo();
1349				}
1350
1351				if ( $(window).width() >= 850 ) {
1352					$( ".header-bottom-menu li:has(ul)" ).unbind();
1353					$( ".header-top-menu li:has(ul)" ).unbind();
1354				}
1355			}
1356
1357			windowWidth = $( window ).width();
1358
1359		}).resize();
1360
1361		// Load Flexslider
1362		$( ".flexslider" ).flexslider( {
1363			animation: "slide",
1364			controlNav: false,
1365			prevText: "",
1366			nextText: "",
1367			smoothHeight: true
1368		});
1369
1370		// smooth scroll to the top
1371		$( ".to-the-top" ).click( function() {
1372			$( "html, body" ).animate( { scrollTop: 0 }, 500 );
1373				return false;
1374		});
1375
1376	});
1377
1378
1379	/**
1380	 * On load
1381	 */
1382	$( document.body ).on( 'post-load', function () {
1383
1384		// Load Flexslider after new posts have been added to the page.
1385		$( ".flexslider" ).flexslider( {
1386			animation: "slide",
1387			controlNav: false,
1388			prevText: "",
1389			nextText: "",
1390			smoothHeight: true
1391		});
1392
1393	});
1394
1395} ) ( jQuery );
1396;
1397!function(){"use strict";var e,t={noop:function(){},texturize:function(e){return(e=(e=(e=(e+="").replace(/'/g,"&#8217;").replace(/&#039;/g,"&#8217;")).replace(/"/g,"&#8221;").replace(/&#034;/g,"&#8221;").replace(/&quot;/g,"&#8221;").replace(/[\u201D]/g,"&#8221;")).replace(/([\w]+)=&#[\d]+;(.+?)&#[\d]+;/g,'$1="$2"')).trim()},applyReplacements:function(e,t){if(e)return t?e.replace(/{(\d+)}/g,function(e,r){return void 0!==t[r]?t[r]:e}):e},getBackgroundImage:function(e){var t=document.createElement("canvas"),r=t.getContext&&t.getContext("2d");if(e){r.filter="blur(20px) ",r.drawImage(e,0,0);var o=t.toDataURL("image/png");return t=null,o}}},r=function(){function e(e,t){return Element.prototype.matches?e.matches(t):Element.prototype.msMatchesSelector?e.msMatchesSelector(t):void 0}function r(e,t,r,o){if(!e)return o();e.jpCarouselCancelFade&&e.jpCarouselCancelFade(),e.classList.remove("jp-carousel-fade"),e.style.removeProperty("display"),e.style.opacity=t,e.style.pointerEvents="none",e.offsetWidth,e.classList.add("jp-carousel-fade"),e.style.opacity=r;var a=1e3*parseFloat(getComputedStyle(e).transitionDuration)||0,n=setTimeout(function(){e.jpCarouselCancelFade=null,e.style.removeProperty("pointer-events"),o()},a+50);e.jpCarouselCancelFade=function(){clearTimeout(n),e.jpCarouselCancelFade=null}}return{closest:function(t,r){if(t.closest)return t.closest(r);var o=t;do{if(e(o,r))return o;o=o.parentElement||o.parentNode}while(null!==o&&1===o.nodeType);return null},matches:e,hide:function(e){e&&(e.style.display="none")},show:function(e){e&&(e.style.display="block")},fadeIn:function(e,o){r(e,0,1,o=o||t.noop)},fadeOut:function(e,o){o=o||t.noop,r(e,1,0,function(){e&&(e.style.display="none"),o()})},scrollToElement:function(e,t,r){if(!e||!t)return r?r():void 0;var o=t.querySelector(".jp-carousel-info-extra");o&&(o.style.minHeight=window.innerHeight-64+"px");var a=!0,n=Date.now(),i=t.scrollTop,l=Math.max(0,e.offsetTop-Math.max(0,window.innerHeight-function(e){var t=e.querySelector(".jp-carousel-info-footer"),r=e.querySelector(".jp-carousel-info-extra"),o=e.querySelector(".jp-carousel-info-content-wrapper");if(t&&r&&o){var a=window.getComputedStyle(r),n=parseInt(a.paddingTop,10)+parseInt(a.paddingBottom,10);return n=isNaN(n)?0:n,o.offsetHeight+t.offsetHeight+n}return 0}(t)))-t.scrollTop;function s(){a=!1}l=Math.min(l,t.scrollHeight-window.innerHeight),t.addEventListener("wheel",s),function e(){var c,u=Date.now(),d=(c=(u-n)/300)<.5?2*c*c:1-Math.pow(-2*c+2,2)/2,m=(d=d>1?1:d)*l;if(t.scrollTop=i+m,u<=n+300&&a)return requestAnimationFrame(e);r&&r(),o&&(o.style.minHeight=""),a=!1,t.removeEventListener("wheel",s)}()},getJSONAttribute:function(e,t){if(e&&e.hasAttribute(t))try{return JSON.parse(e.getAttribute(t))}catch{return}},convertToPlainText:function(e){var t=document.createElement("div");return t.textContent=e,t.innerHTML},stripHTML:function(e){var t=document.createElement("div");return t.innerHTML=e.replace(/<[^>]*>?/gm,""),t.textContent},emitEvent:function(e,t,r){var o;try{o=new CustomEvent(t,{bubbles:!0,cancelable:!0,detail:r||null})}catch{(o=document.createEvent("CustomEvent")).initCustomEvent(t,!0,!0,r||null)}e.dispatchEvent(o)},isTouch:function(){return"ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch},prefersReducedMotion:function(){return!!window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}}}();function o(){var o,a,n,i,l={},s={},c="",u=!1,d="div.gallery, div.tiled-gallery, ul.wp-block-gallery, ul.blocks-gallery-grid, figure.wp-block-gallery.has-nested-images, div.wp-block-jetpack-tiled-gallery, a.single-image-gallery",m=".gallery-item, .tiled-gallery-item, .blocks-gallery-item,  .tiled-gallery__item",p=m+", .wp-block-image",g={},h="undefined"!=typeof wpcom&&wpcom.carousel&&wpcom.carousel.stat?wpcom.carousel.stat:t.noop,f="undefined"!=typeof wpcom&&wpcom.carousel&&wpcom.carousel.pageview?wpcom.carousel.pageview:t.noop;function v(t){if(!u)switch(t.which){case 38:t.preventDefault(),g.overlay.scrollTop-=100;break;case 40:t.preventDefault(),g.overlay.scrollTop+=100;break;case 39:t.preventDefault(),e.slideNext();break;case 37:case 8:t.preventDefault(),e.slidePrev();break;case 27:t.preventDefault(),k()}}function y(){u=!0}function w(){u=!1}function S(e){e.role="button",e.tabIndex=0,e.ariaLabel=jetpackCarouselStrings.image_label}function j(){g.overlay||(g.overlay=document.querySelector(".jp-carousel-overlay"),g.container=g.overlay.querySelector(".jp-carousel-wrap"),g.gallery=g.container.querySelector(".jp-carousel"),g.info=g.overlay.querySelector(".jp-carousel-info"),g.caption=g.
1397info.querySelector(".jp-carousel-caption"),g.commentField=g.overlay.querySelector("#jp-carousel-comment-form-comment-field"),g.emailField=g.overlay.querySelector("#jp-carousel-comment-form-email-field"),g.authorField=g.overlay.querySelector("#jp-carousel-comment-form-author-field"),g.urlField=g.overlay.querySelector("#jp-carousel-comment-form-url-field"),window.innerWidth<=760&&Math.round(window.innerWidth/760*110)<40&&r.isTouch(),[g.commentField,g.emailField,g.authorField,g.urlField].forEach(function(e){e&&(e.addEventListener("focus",y),e.addEventListener("blur",w))}),g.overlay.addEventListener("click",function(e){var t,o,a=e.target,n=!!r.closest(a,".jp-carousel-close-hint"),i=!!window.matchMedia("(max-device-width: 760px)").matches;a===g.overlay?i||k():n?k():a.classList.contains("jp-carousel-image-download")?h("download_original_click"):a.classList.contains("jp-carousel-comment-login")?(t=g.currentSlide,o=t?t.attrs.attachmentId:"0",window.location.href=jetpackCarouselStrings.login_url+"%23jp-carousel-"+o):r.closest(a,"#jp-carousel-comment-form-container")?function(e){var t=e.target,o=r.getJSONAttribute(g.container,"data-carousel-extra")||{},a=g.currentSlide.attrs.attachmentId,n=document.querySelector("#jp-carousel-comment-form-submit-and-info-wrapper"),i=document.querySelector("#jp-carousel-comment-form-spinner"),s=document.querySelector("#jp-carousel-comment-form-button-submit"),c=document.querySelector("#jp-carousel-comment-form");if(g.commentField&&g.commentField.getAttribute("id")===t.getAttribute("id"))y(),r.show(n);else if(r.matches(t,'input[type="submit"]')){e.preventDefault(),e.stopPropagation(),r.show(i),c.classList.add("jp-carousel-is-disabled");var u={action:"post_attachment_comment",nonce:jetpackCarouselStrings.nonce,blog_id:o.blog_id,id:a,comment:g.commentField.value};if(!u.comment.length)return void b(jetpackCarouselStrings.no_comment_text,!1);if(1!==Number(jetpackCarouselStrings.is_logged_in)&&(u.email=g.emailField.value,u.author=g.authorField.value,u.url=g.urlField.value,1===Number(jetpackCarouselStrings.require_name_email))){if(!u.email.length||!u.email.match("@"))return void b(jetpackCarouselStrings.no_comment_email,!1);if(!u.author.length)return void b(jetpackCarouselStrings.no_comment_author,!1)}var d=new XMLHttpRequest;d.open("POST",jetpackCarouselStrings.ajaxurl,!0),d.setRequestHeader("X-Requested-With","XMLHttpRequest"),d.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8"),d.onreadystatechange=function(){if(this.readyState===XMLHttpRequest.DONE&&this.status>=200&&this.status<300){var e;try{e=JSON.parse(this.response)}catch{return void b(jetpackCarouselStrings.comment_post_error,!1)}if("approved"===e.comment_status){b(jetpackCarouselStrings.comment_approved,!0);var t=function(e){for(var t=0;t<g.slides.length;t++)if(g.slides[t].attrs.attachmentId===e)return g.slides[t];return null}(a);t&&(t.attrs.commentsCount=(parseInt(t.attrs.commentsCount,10)||0)+1)}else"unapproved"===e.comment_status?b(jetpackCarouselStrings.comment_unapproved,!0):b(jetpackCarouselStrings.comment_post_error,!1);W(),delete l[a],_(a,void 0,!0),s.value=jetpackCarouselStrings.post_comment,r.hide(i),c.classList.remove("jp-carousel-is-disabled")}else b(jetpackCarouselStrings.comment_post_error,!1)};var m=[];for(var p in u)if(p){var h=encodeURIComponent(p)+"="+encodeURIComponent(u[p]);m.push(h.replace(/%20/g,"+"))}var f=m.join("&");d.send(f)}}(e):(r.closest(a,".jp-carousel-photo-icons-container")||a.classList.contains("jp-carousel-photo-title"))&&function(e){e.preventDefault();var t=e.target,o=g.info.querySelector(".jp-carousel-info-extra"),a=g.info.querySelector(".jp-carousel-image-meta"),n=g.info.querySelector(".jp-carousel-comments-wrapper"),i=g.info.querySelector(".jp-carousel-icon-info"),s=g.info.querySelector(".jp-carousel-icon-comments");function c(){s&&s.classList.remove("jp-carousel-selected"),i.classList.toggle("jp-carousel-selected"),n&&n.classList.remove("jp-carousel-show"),a&&(a.classList.toggle("jp-carousel-show"),a.classList.contains("jp-carousel-show")?o.classList.add("jp-carousel-show"):o.classList.remove("jp-carousel-show"))}function u(){if(i&&i.classList.remove("jp-carousel-selected"),s.classList.toggle("jp-carousel-selected"),a&&a.classList.remove("jp-carousel-show"),n)if(n.classList.toggle("jp-carousel-show"),n.classList.contains("jp-carousel-show")){o.classList.add("jp-carousel-show");var e=g.currentSlide;if(e){var t=l[e.attrs.attachmentId];t?t.hasMore&&T(e.attrs.attachmentId,t.nextOffset):_(e.attrs.attachmentId)}}else o.classList.remove("jp-carousel-show")}(r.closest(t,".jp-carousel-icon-info")||t.classList.contains("jp-carousel-photo-title"))&&(a&&a.classList.contains("jp-carousel-show")?r.scrollToElement(g.overlay,g.overlay,c):(c(),r.scrollToElement(g.info,g.overlay))),r.closest(t,".jp-carousel-icon-comments")&&(n&&n.classList.contains("jp-carousel-show")?r.scrollToElement(g.overlay,g.overlay,u):(u(),r.scrollToElement(g.info,g.overlay)))}(e)}),window.addEventListener("keydown",v),g.overlay.addEventListener("jp_carousel.afterOpen",function(){w(),g.slides.length<=1||(g.slides.length<=5?r.show(g.info.querySelector(".jp-swiper-pagination")):r.show(g.info.querySelector(".jp-carousel-pagination")))}),g.overlay.addEventListener("jp_carousel.beforeClose",function(){y(),document.documentElement.style.removeProperty("height"),e&&e.enable(),r.hide(g.info.querySelector(".jp-swiper-pagination")),r.hide(g.info.querySelector(".jp-carousel-pagination"))}),g.overlay.addEventListener("jp_carousel.afterClose",function(){window.history.pushState?history.pushState("",document.title,window.location.pathname+window.location.search):window.location.href="",c="",g.isOpen=!1}),g.overlay.addEventListener("touchstart",function(e){e.touches.length>1&&e.preventDefault()}))}function b(e,t){var o=g.overlay.querySelector("#jp-carousel-comment-post-results"),a="jp-carousel-comment-post-"+(t?"success":"error");o.innerHTML='<span class="'+a+'">'+e+"</span>",r.hide(g.overlay.querySelector("#jp-carousel-comment-form-spinner")),g.overlay.querySelector("#jp-carousel-comment-form").classList.remove("jp-carousel-is-disabled"),r.show(o)}function L(){var e=document.querySelectorAll("a img[data-attachment-id]");Array.prototype.forEach.call(e,function(e){var t=e.parentElement,o=t.parentElement;if(!o.classList.contains("gallery-icon")&&!r.closest(o,m)&&t.hasAttribute("href")){var a=!1;t.getAttribute("href").split("?")[0]===e.getAttribute("data-orig-file").split("?")[0]&&1===Number(jetpackCarouselStrings.single_image_gallery_media_file)&&(a=!0),t.getAttribute("href")===e.getAttribute("data-permalink")&&(a=!0),a&&(S(e),t.classList.add("single-image-gallery"),t.setAttribute("data-carousel-extra",JSON.stringify({blog_id:Number(jetpackCarouselStrings.blog_id)})))}})}function x(t,r){g.isOpen?(C(r),e.slideTo(r+1)):z(t,{startIndex:r})}function C(e){(!e||e<0||e>g.slides.length)&&(e=0),g.currentSlide=g.slides[e];var a,n,i=g.currentSlide,s=i.attrs.attachmentId;M(g.slides[e]),function(e){var t=[],r=g.slides.length;if(r>1){var o=e>0?e-1:r-1;t.push(o);var a=e<r-1?e+1:0;t.push(a)}t.forEach(function(e){var t=g.slides[e];t&&(M(t),1!==Number(jetpackCarouselStrings.display_background_image)||t.backgroundImage||F(t))})}(e),1!==Number(jetpackCarouselStrings.display_background_image)||g.slides[e].backgroundImage||F(g.slides[e]),r.hide(g.caption),function(e){var t,o,a,n,i,l,s;if(n=g.overlay.querySelector(".jp-carousel-photo-caption"),i=g.overlay.querySelector(".jp-carousel-caption"),l=g.overlay.querySelector(".jp-carousel-photo-title"),s=g.overlay.querySelector(".jp-carousel-photo-description"),r.hide(n),r.hide(i),r.hide(l),r.hide(s),t=A(e.caption)||"",o=A(e.title)||"",a=A(e.desc)||"",(t||o||a)&&(t&&(n.innerHTML=t,i.innerHTML=t,r.show(n),r.show(i)),r.stripHTML(t)===r.stripHTML(o)&&(o=""),r.stripHTML(t)===r.stripHTML(a)&&(a=""),r.stripHTML(o)===r.stripHTML(a)&&(a=""),a&&(s.innerHTML=a,r.show(s),o||t||(n.textContent=r.stripHTML(a),r.show(n))),o)){var c=r.stripHTML(o);l.textContent=c,t||(n.textContent=c,i.textContent=c,r.show(n)),r.show(l)}}
1397({caption:i.attrs.caption,title:i.attrs.title,desc:i.attrs.desc}),function(e){if(!e||1!==Number(jetpackCarouselStrings.display_exif))return!1;var t=g.info.querySelector(".jp-carousel-image-meta");if(!t)return!1;var r="";for(var o in e){var a=e[o],n=jetpackCarouselStrings.meta_data||[];if(0!==parseFloat(a)&&a.length&&-1!==n.indexOf(o)){switch(o){case"focal_length":a+="mm";break;case"shutter_speed":a=E(a);break;case"aperture":a="f/"+a}r+="<li><h5>"+jetpackCarouselStrings[o]+"</h5>"+a+"</li>"}}var i=t.querySelector("ul.jp-carousel-image-exif");if(""!==r){if(!i){(i=document.createElement("ul")).className="jp-carousel-image-exif";var l=t.querySelector(".jp-carousel-title-and-caption");l&&l.nextSibling?t.insertBefore(i,l.nextSibling):t.insertBefore(i,t.firstChild)}i.innerHTML=r,i.style.removeProperty("display")}else i&&i.parentNode.removeChild(i)}(g.slides[e].attrs.imageMeta),function(e){if(!e)return!1;var r,o=[e.attrs.origWidth,e.attrs.origHeight],a=document.createElement("a");a.href=e.attrs.src.replace(/\?.+$/,""),r=null!==a.hostname.match(/^i[\d]{1}\.wp\.com$/i)?a.href:e.attrs.origFile.replace(/\?.+$/,"");var n=g.info.querySelector(".jp-carousel-download-text"),i=g.info.querySelector(".jp-carousel-image-download");n.innerHTML=t.applyReplacements(jetpackCarouselStrings.download_original,o),i.setAttribute("href",r),i.style.removeProperty("display")}(i),1===Number(jetpackCarouselStrings.display_comments)&&(a=g.slides[e].attrs.commentsOpened,n=g.info.querySelector("#jp-carousel-comment-form-container"),1===parseInt(a,10)?r.fadeIn(n):r.fadeOut(n),function(e){var t=e.attrs.attachmentId,a=g.info.querySelector(".jp-carousel-comments"),n=l[t];if(clearInterval(o),r.hide(g.info.querySelector("#jp-carousel-comments-loading")),n)return a.innerHTML=n.html,H(n.count),r.show(a),void(n.hasMore&&I()&&T(t,n.nextOffset));a.innerHTML="",r.hide(a),H(parseInt(e.attrs.commentsCount,10)||0),I()&&_(t)}(i),r.hide(g.info.querySelector("#jp-carousel-comment-post-results")));var u=g.info.querySelector(".jp-carousel-pagination");if(u&&g.slides.length>5){var d=e+1;u.innerHTML="<span>"+d+" / "+g.slides.length+"</span>"}jetpackCarouselStrings.stats&&g.isOpen&&((new Image).src=document.location.protocol+"//pixel.wp.com/g.gif?"+jetpackCarouselStrings.stats+"&post="+encodeURIComponent(s)+"&rand="+Math.random()),g.isOpen&&f(s),c="#jp-carousel-"+s,window.location.hash=c}function k(){document.body.style.overflow=a,document.documentElement.style.overflow=n,W(),y(),r.emitEvent(g.overlay,"jp_carousel.beforeClose"),window.scrollTo(window.scrollX||window.pageXOffset||0,i||0),g.isOpen=!1,e.destroy(),g.slides=[],l={},s={},g.currentSlide=void 0,g.gallery.innerHTML="",r.fadeOut(g.overlay,function(){r.emitEvent(g.overlay,"jp_carousel.afterClose")})}function q(e){if("object"!=typeof e&&(e={}),void 0===e.origFile)return"";if(void 0===e.origWidth||void 0===e.maxWidth)return e.origFile;if(!e.largeFile)return e.origFile;var t=document.createElement("a");t.href=e.largeFile;var r=/^i[0-2]\.wp\.com$/i.test(t.hostname),o=function(e,t,r){var o,a=r?e.replace(/.*=([\d]+%2C[\d]+).*$/,"$1"):e.replace(/.*-([\d]+x[\d]+)\..+$/,"$1");return"9999"===(o=a!==e?r?a.split("%2C"):a.split("x"):[t,0])[0]&&(o[0]="0"),"9999"===o[1]&&(o[1]="0"),o}(e.largeFile,e.origWidth,r),a=parseInt(o[0],10),n=parseInt(o[1],10);e.origMaxWidth=e.maxWidth,e.origMaxHeight=e.maxHeight,void 0!==window.devicePixelRatio&&window.devicePixelRatio>1&&(e.maxWidth=e.maxWidth*window.devicePixelRatio,e.maxHeight=e.maxHeight*window.devicePixelRatio);var i=e.zoomHeadroom||1;if(i>1&&(e.maxWidth=e.maxWidth*i,e.maxHeight=e.maxHeight*i),a>=e.maxWidth||n>=e.maxHeight)return e.largeFile;if(r){if(-1===e.largeFile.lastIndexOf("?"))return e.largeFile;var l=function(e){var t;try{t=new URL(e)}catch(t){return e}var r=["quality","ssl","filter","brightness","contrast","colorize","smooth"],o=Array.from(t.searchParams.entries());return t.search="",o.forEach(([e,o])=>{r.includes(e)&&t.searchParams.append(e,o)}),t}(e.largeFile);return(e.origWidth>e.maxWidth||e.origHeight>e.maxHeight)&&(e.origMaxWidth=e.maxWidth,e.origMaxHeight=e.maxHeight,l.searchParams.set("fit",e.origMaxWidth+","+e.origMaxHeight)),l.toString()}return e.origFile}function E(e){return e>=1?Math.round(10*e)/10+"s":"1/"+Math.round(1/e)+"s"}
1397function A(e){return!e.match(" ")&&e.match("_")?"":e}function I(){var e=g.info.querySelector(".jp-carousel-comments-wrapper");return!!e&&e.classList.contains("jp-carousel-show")}function H(e){var t=g.info.querySelector(".jp-carousel-icon-comments .jp-carousel-has-comments-indicator");t&&(e>0?(t.innerText=e,t.classList.add("jp-carousel-show")):t.classList.remove("jp-carousel-show"))}function T(e,t){clearInterval(o),o=setInterval(function(){g.container.scrollTop+150>window.innerHeight&&(clearInterval(o),_(e,t))},300)}function _(e,t,a){var n=void 0===t;if(clearInterval(o),e&&g.currentSlide&&g.currentSlide.attrs.attachmentId===e&&(!s[e]||a)){(!t||t<1)&&(t=0);var i=g.info.querySelector(".jp-carousel-comments"),c=g.info.querySelector("#jp-carousel-comments-loading");r.show(c),n&&(r.hide(i),i.innerHTML="");var u=new XMLHttpRequest;s[e]=u;var d=function(){return s[e]===u},m=jetpackCarouselStrings.ajaxurl+"?action=get_attachment_comments&nonce="+jetpackCarouselStrings.nonce+"&id="+e+"&offset="+t;u.open("GET",m),u.setRequestHeader("X-Requested-With","XMLHttpRequest");var p=function(){r.fadeIn(i),r.fadeOut(c)};u.onload=function(){if(d()&&(delete s[e],g.currentSlide&&g.currentSlide.attrs.attachmentId===e)){var o,a=u.status>=200&&u.status<300;try{o=JSON.parse(u.responseText)}catch{}if(a&&o&&Array.isArray(o)){n&&(i.innerHTML="");for(var m=0;m<o.length;m++){var h=o[m];if(!i.querySelector("#jp-carousel-comment-"+h.id)){var f=document.createElement("div");f.classList.add("jp-carousel-comment"),f.setAttribute("id","jp-carousel-comment-"+h.id),f.innerHTML='<div class="comment-gravatar">'+h.gravatar_markup+'</div><div class="comment-content"><div class="comment-author">'+h.author_markup+'</div><div class="comment-date">'+h.date_gmt+"</div>"+h.content+"</div>",i.appendChild(f)}}var v=o.length>=10,y=t+10;v&&T(e,y);var w=i.querySelectorAll(".jp-carousel-comment").length,S=Math.max(parseInt(g.currentSlide.attrs.commentsCount,10)||0,w);o.length>0&&(r.show(i),H(S)),l[e]={html:i.innerHTML,count:S,hasMore:v,nextOffset:y},r.hide(c)}else p()}},u.onerror=function(){d()&&(delete s[e],g.currentSlide&&g.currentSlide.attrs.attachmentId===e&&p())},u.send()}}function M(e){var t=e.attrs,r=e.el.querySelector("img");if(!r.hasAttribute("data-loaded"))if(r.setAttribute("itemprop","image"),r.setAttribute("data-loaded",1),t.previewImage&&t.previewImage!==t.src){r.src=t.previewImage,r.style.filter="blur(8px)";var o=new window.Image;o.addEventListener("load",function(){r.hasAttribute("data-zoom-loaded")||(r.src=t.src),r.style.filter=""},{once:!0}),o.addEventListener("error",function(){r.style.filter=""},{once:!0}),o.src=t.src}else r.src=t.src}function F(e){var t=e.attrs.originalElement;if(t)if(t.complete&&0!==t.naturalHeight)O(e,t);else{var r=function(){t.removeEventListener("error",o),O(e,t)},o=function(){t.removeEventListener("load",r)};t.addEventListener("load",r,{once:!0}),t.addEventListener("error",o,{once:!0})}}function O(e,r){var o=t.getBackgroundImage(r);o&&(e.backgroundImage=o,e.el.style.backgroundImage="url("+o+")",e.el.style.backgroundSize="cover",e.el.style.backgroundPosition="center")}function W(){g.commentField&&(g.commentField.value="")}function N(e,o){g.slides=[];var a={width:window.innerWidth,height:window.innerHeight-64};0!==o&&null!==e[o].getAttribute("data-gallery-src")&&((new Image).src=e[o].getAttribute("data-gallery-src")),Array.prototype.forEach.call(e,function(e,o){var n=r.closest(e,"a"),i=e.getAttribute("data-orig-file")||e.getAttribute("src-orig"),l=e.getAttribute("data-attachment-id")||e.getAttribute("data-id")||"0",s=document.querySelector('img[data-attachment-id="'+l+'"] + figcaption');s=s?s.innerHTML:e.getAttribute("data-image-caption");var c={originalElement:e,attachmentId:l,commentsOpened:e.getAttribute("data-comments-opened")||"0",commentsCount:e.getAttribute("data-comments-count")||"0",imageMeta:r.getJSONAttribute(e,"data-image-meta")||{},title:e.getAttribute("data-image-title")||"",desc:e.getAttribute("data-image-description")||"",largeFile:e.getAttribute("data-large-file")||"",origFile:i||"",thumbSize:{width:e.naturalWidth,height:e.naturalHeight},caption:s||"",permalink:n&&n.getAttribute("href"),src:i||e.getAttribute("src")||""},u=r.closest(e,".tiled-gallery-item"),d=u&&u.querySelector(".tiled-gallery-caption"),m=d&&d.innerHTML;m&&(c.caption=m);var p=function(e){var t=e.getAttribute("data-orig-size")||"";if(t){var r=t.split(",");return{width:parseInt(r[0],10),height:parseInt(r[1],10)}}return{width:e.getAttribute("data-original-width")||e.getAttribute("width")||void 0,height:e.getAttribute("data-original-height")||e.getAttribute("height")||void 0}}(e);if(c.origWidth=p.width||c.thumbSize.width,c.origHeight=p.height||c.thumbSize.height,"undefined"!=typeof wpcom&&wpcom.carousel&&wpcom.carousel.generateImgSrc)c.src=wpcom.carousel.generateImgSrc(e,a);else{var h=function(e){return{origFile:c.src,origWidth:c.origWidth,origHeight:c.origHeight,maxWidth:a.width,maxHeight:a.height,largeFile:c.largeFile,zoomHeadroom:e}};c.zoomSrc=q(h(2)),c.src=q(h(1))}if(e.setAttribute("data-gallery-src",c.src),"0"!==c.attachmentId){c.title=t.texturize(c.title),c.desc=t.texturize(c.desc),c.caption=t.texturize(c.caption);var f=new Image,v=document.createElement("div");v.classList.add("swiper-slide"),v.setAttribute("itemprop","associatedMedia"),v.setAttribute("itemscope",""),v.setAttribute("itemtype","https://schema.org/ImageObject");var y=document.createElement("div");y.classList.add("swiper-zoom-container"),g.gallery.appendChild(v),v.appendChild(y),y.appendChild(f),v.setAttribute("data-attachment-id",c.attachmentId),v.setAttribute("data-permalink",c.permalink),v.setAttribute("data-orig-file",c.origFile),c.previewImage=e.currentSrc||e.getAttribute("src")||"";var w={el:v,attrs:c,index:o};g.slides.push(w)}})}function z(e,t){if(!window.JetpackSwiper){var o=document.querySelector("#jp-carousel-loading-overlay");r.show(o);var a=document.createElement("script");return a.id="jetpack-carousel-swiper-js",a.src=window.jetpackSwiperLibraryPath.url,a.async=!0,a.onload=function(){r.hide(o),R(e,t)},a.onerror=function(){r.hide(o)},void document.head.appendChild(a)}R(e,t)}function R(t,o){var c,u={imgSelector:".gallery-item [data-attachment-id], .tiled-gallery-item [data-attachment-id], img[data-attachment-id], img[data-id]",startIndex:0},d=r.getJSONAttribute(t,"data-carousel-extra");if(!d)return;const m=t.querySelectorAll(u.imgSelector);if(m.length&&(j(),!g.isOpen)){for(var p in g.isOpen=!0,a=getComputedStyle(document.body).overflow,document.body.style.overflow="hidden",n=getComputedStyle(document.documentElement).overflow,document.documentElement.style.overflow="hidden",i=window.scrollY||window.pageYOffset||0,g.container.setAttribute("data-carousel-extra",JSON.stringify(d)),h(["open","view_image"]),o||{})u[p]=o[p];-1===u.startIndex&&(u.startIndex=0),r.emitEvent(g.overlay,"jp_carousel.beforeOpen"),g.gallery.innerHTML="",l={},s={},g.overlay.style.opacity=1,g.overlay.style.display="block",N(m,u.startIndex),(e=new window.JetpackSwiper(".jp-carousel-swiper-container",{centeredSlides:!0,speed:r.prefersReducedMotion()?0:250,zoom:!0,loop:g.slides.length>1,enabled:g.slides.length>1,pagination:{el:".jp-swiper-pagination",clickable:!0},navigation:{nextEl:".jp-swiper-button-next",prevEl:".jp-swiper-button-prev"},initialSlide:u.startIndex,on:{init:function(){C(u.startIndex)}},preventClicks:!1,preventClicksPropagation:!1,preventInteractionOnTransition:!r.isTouch(),threshold:5})).on("slideChange",function(e){g.isOpen&&(C(e.realIndex),g.overlay.classList.remove("jp-carousel-hide-control
1397s"))}),e.on("zoomChange",function(e,t){t>1&&(function(e){if(e&&e.attrs.zoomSrc&&e.attrs.zoomSrc!==e.attrs.src){var t=e.el.querySelector("img");t&&!t.hasAttribute("data-zoom-loaded")&&(t.setAttribute("data-zoom-loaded",1),t.src=e.attrs.zoomSrc)}}(g.currentSlide),g.overlay.classList.add("jp-carousel-hide-controls")),1===t&&g.overlay.classList.remove("jp-carousel-hide-controls")}),e.on("doubleTap",function(e){if(clearTimeout(c),1===e.zoom.scale)var t=setTimeout(function(){g.overlay.classList.remove("jp-carousel-hide-controls"),clearTimeout(t)},150)}),e.on("tap",function(){e.zoom.scale>1&&(c=setTimeout(function(){g.overlay.classList.toggle("jp-carousel-hide-controls")},150))}),r.fadeIn(g.overlay,function(){r.emitEvent(g.overlay,"jp_carousel.afterOpen")})}}function P(e){if("click"!==e.type){if("keydown"===e.type){const t=document.activeElement.parentElement,r=t&&t.classList.contains("tiled-gallery__item");" "!==e.key&&"Enter"!==e.key||!r||$(e)}}else $(e)}function D(e){return(e||"").split("?")[0].replace(/\/$/,"")}function J(e){"A"===e.tagName&&(e=e.querySelector("img")||e);var t=e.parentElement,o=t?t.parentElement:null,a=null;if(o&&o.classList.contains("wp-block-image")?a=t.getAttribute("href"):t&&t.classList.contains("wp-block-image")&&t.querySelector(":scope > a")&&(a=t.querySelector(":scope > a").getAttribute("href")),a){var n=D(a),i=D(e.getAttribute("data-orig-file")),l=D(e.getAttribute("data-permalink"));if(n!==i&&n!==l)return!1}return!(t&&t.classList.contains("gallery-caption")||r.matches(t,"figcaption"))}function $(e){if(window.CSS&&window.CSS.supports&&window.CSS.supports("display","grid")){var t,o=e.target,a=r.closest(o,d);if(a){if(!(t=a)||!t.getAttribute("data-carousel-extra"))return;if(!J(o))return;document.documentElement.style.height="auto",e.preventDefault(),e.stopPropagation();var n=r.closest(o,p),i=Array.prototype.indexOf.call(a.querySelectorAll(p),n);z(a,{startIndex:i})}}}document.body.addEventListener("click",P),document.body.addEventListener("keydown",P),document.querySelectorAll(m+"img").forEach(function(e){J(e)&&S(e)}),1===Number(jetpackCarouselStrings.single_image_gallery)&&(L(),document.body.addEventListener("is.post-load",function(){L()})),window.addEventListener("hashchange",function(){var e=/jp-carousel-(\d+)/;if(window.location.hash&&e.test(window.location.hash)){if(window.location.hash!==c||!g.isOpen)if(window.location.hash&&g.gallery&&!g.isOpen&&history.back)history.back();else{c=window.location.hash;for(var t=window.location.hash.match(e),r=parseInt(t[1],10),o=document.querySelectorAll(d),a=0;a<o.length;a++){for(var n,i=o[a],l=i.querySelectorAll("img"),s=0;s<l.length;s++)if(parseInt(l[s].getAttribute("data-attachment-id"),10)===r||parseInt(l[s].getAttribute("data-id"),10)===r){n=s;break}if(void 0!==n){x(i,n);break}}}}else g.isOpen&&k()}),window.location.hash&&r.emitEvent(window,"hashchange")}"loading"!==document.readyState?o():document.addEventListener("DOMContentLoaded",o)}();;

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.