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,"’").replace(/'/g,"’")).replace(/"/g,"”").replace(/"/g,"”").replace(/"/g,"”").replace(/[\u201D]/g,"”")).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.