PageSourceSearch

https://purechocoa.be/files/stacks_page_page10.js?rwcache=622382181

js purechocoa.be collected 2026-10-08 08:48:07 UTC 99,757 bytes, 1,415 lines download raw bytes

vendor: 7,199 bytes, lines 1-2
1/*! jQuery Migrate v1.2.1 | (c) 2005, 2013 jQuery Foundation, Inc. and other contributors | jquery.org/license */
2jQuery.migrateMute===void 0&&(jQuery.migrateMute=!0),function(e,t,n){function r(n){var r=t.console;i[n]||(i[n]=!0,e.migrateWarnings.push(n),r&&r.warn&&!e.migrateMute&&(r.warn("JQMIGRATE: "+n),e.migrateTrace&&r.trace&&r.trace()))}function a(t,a,i,o){if(Object.defineProperty)try{return Object.defineProperty(t,a,{configurable:!0,enumerable:!0,get:function(){return r(o),i},set:function(e){r(o),i=e}}),n}catch(s){}e._definePropertyBroken=!0,t[a]=i}var i={};e.migrateWarnings=[],!e.migrateMute&&t.console&&t.console.log&&t.console.log("JQMIGRATE: Logging is active"),e.migrateTrace===n&&(e.migrateTrace=!0),e.migrateReset=function(){i={},e.migrateWarnings.length=0},"BackCompat"===document.compatMode&&r("jQuery is not compatible with Quirks Mode");var o=e("<input/>",{size:1}).attr("size")&&e.attrFn,s=e.attr,u=e.attrHooks.value&&e.attrHooks.value.get||function(){return null},c=e.attrHooks.value&&e.attrHooks.value.set||function(){return n},l=/^(?:input|button)$/i,d=/^[238]$/,p=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,f=/^(?:checked|selected)$/i;a(e,"attrFn",o||{},"jQuery.attrFn is deprecated"),e.attr=function(t,a,i,u){var c=a.toLowerCase(),g=t&&t.nodeType;return u&&(4>s.length&&r("jQuery.fn.attr( props, pass ) is deprecated"),t&&!d.test(g)&&(o?a in o:e.isFunction(e.fn[a])))?e(t)[a](i):("type"===a&&i!==n&&l.test(t.nodeName)&&t.parentNode&&r("Can't change the 'type' of an input or button in IE 6/7/8"),!e.attrHooks[c]&&p.test(c)&&(e.attrHooks[c]={get:function(t,r){var a,i=e.prop(t,r);return i===!0||"boolean"!=typeof i&&(a=t.getAttributeNode(r))&&a.nodeValue!==!1?r.toLowerCase():n},set:function(t,n,r){var a;return n===!1?e.removeAttr(t,r):(a=e.propFix[r]||r,a in t&&(t[a]=!0),t.setAttribute(r,r.toLowerCase())),r}},f.test(c)&&r("jQuery.fn.attr('"+c+"') may use property instead of attribute")),s.call(e,t,a,i))},e.attrHooks.value={get:function(e,t){var n=(e.nodeName||"").toLowerCase();return"button"===n?u.apply(this,arguments):("input"!==n&&"option"!==n&&r("jQuery.fn.attr('value') no longer gets properties"),t in e?e.value:null)},set:function(e,t){var a=(e.nodeName||"").toLowerCase();return"button"===a?c.apply(this,arguments):("input"!==a&&"option"!==a&&r("jQuery.fn.attr('value', val) no longer sets properties"),e.value=t,n)}};var g,h,v=e.fn.init,m=e.parseJSON,y=/^([^<]*)(<[\w\W]+>)([^>]*)$/;e.fn.init=function(t,n,a){var i;return t&&"string"==typeof t&&!e.isPlainObject(n)&&(i=y.exec(e.trim(t)))&&i[0]&&("<"!==t.charAt(0)&&r("$(html) HTML strings must start with '<' character"),i[3]&&r("$(html) HTML text after last tag is ignored"),"#"===i[0].charAt(0)&&(r("HTML string cannot start with a '#' character"),e.error("JQMIGRATE: Invalid selector string (XSS)")),n&&n.context&&(n=n.context),e.parseHTML)?v.call(this,e.parseHTML(i[2],n,!0),n,a):v.apply(this,arguments)},e.fn.init.prototype=e.fn,e.parseJSON=function(e){return e||null===e?m.apply(this,arguments):(r("jQuery.parseJSON requires a valid JSON string"),null)},e.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||0>e.indexOf("compatible")&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e.browser||(g=e.uaMatch(navigator.userAgent),h={},g.browser&&(h[g.browser]=!0,h.version=g.version),h.chrome?h.webkit=!0:h.webkit&&(h.safari=!0),e.browser=h),a(e,"browser",e.browser,"jQuery.browser is deprecated"),e.sub=function(){function t(e,n){return new t.fn.init(e,n)}e.extend(!0,t,this),t.superclass=this,t.fn=t.prototype=this(),t.fn.constructor=t,t.sub=this.sub,t.fn.init=function(r,a){return a&&a instanceof e&&!(a instanceof t)&&(a=t(a)),e.fn.init.call(this,r,a,n)},t.fn.init.prototype=t.fn;var n=t(document);return r("jQuery.sub() is deprecated"),t},e.ajaxSetup({converters:{"text json":e.parseJSON}});var b=e.fn.data;e.fn.data=function(t){var a,i,o=this[0];return!o||"events"!==t||1!==arguments.length||(a=e.data(o,t),i=e._data(o,t),a!==n&&a!==i||i===n)?b.apply(this,arguments):(r("Use of jQuery.fn.data('events') is deprecated"),i)};var j=/\/(java|ecma)script/i,w=e.fn.andSelf||e.fn.addBack;e.fn.andSelf=function(){return r("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()"),w.apply(this,arguments)},e.clean||(e.clean=function(t,a,i,o){a=a||document,a=!a.nodeType&&a[0]||a,a=a.ownerDocument||a,r("jQuery.clean() is deprecated");var s,u,c,l,d=[];if(e.merge(d,e.buildFragment(t,a).childNodes),i)for(c=function(e){return!e.type||j.test(e.type)?o?o.push(e.parentNode?e.parentNode.removeChild(e):e):i.appendChild(e):n},s=0;null!=(u=d[s]);s++)e.nodeName(u,"script")&&c(u)||(i.appendChild(u),u.getElementsByTagName!==n&&(l=e.grep(e.merge([],u.getElementsByTagName("script")),c),d.splice.apply(d,[s+1,0].concat(l)),s+=l.length));return d});var Q=e.event.add,x=e.event.remove,k=e.event.trigger,N=e.fn.toggle,T=e.fn.live,M=e.fn.die,S="ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess",C=RegExp("\\b(?:"+S+")\\b"),H=/(?:^|\s)hover(\.\S+|)\b/,A=function(t){return"string"!=typeof t||e.event.special.hover?t:(H.test(t)&&r("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'"),t&&t.replace(H,"mouseenter$1 mouseleave$1"))};e.event.props&&"attrChange"!==e.event.props[0]&&e.event.props.unshift("attrChange","attrName","relatedNode","srcElement"),e.event.dispatch&&a(e.event,"handle",e.event.dispatch,"jQuery.event.handle is undocumented and deprecated"),e.event.add=function(e,t,n,a,i){e!==document&&C.test(t)&&r("AJAX events should be attached to document: "+t),Q.call(this,e,A(t||""),n,a,i)},e.event.remove=function(e,t,n,r,a){x.call(this,e,A(t)||"",n,r,a)},e.fn.error=function(){var e=Array.prototype.slice.call(arguments,0);return r("jQuery.fn.error() is deprecated"),e.splice(0,0,"error"),arguments.length?this.bind.apply(this,e):(this.triggerHandler.apply(this,e),this)},e.fn.toggle=function(t,n){if(!e.isFunction(t)||!e.isFunction(n))return N.apply(this,arguments);r("jQuery.fn.toggle(handler, handler...) is deprecated");var a=arguments,i=t.guid||e.guid++,o=0,s=function(n){var r=(e._data(this,"lastToggle"+t.guid)||0)%o;return e._data(this,"lastToggle"+t.guid,r+1),n.preventDefault(),a[r].apply(this,arguments)||!1};for(s.guid=i;a.length>o;)a[o++].guid=i;return this.click(s)},e.fn.live=function(t,n,a){return r("jQuery.fn.live() is deprecated"),T?T.apply(this,arguments):(e(this.context).on(t,this.selector,n,a),this)},e.fn.die=function(t,n){return r("jQuery.fn.die() is deprecated"),M?M.apply(this,arguments):(e(this.context).off(t,this.selector||"**",n),this)},e.event.trigger=function(e,t,n,a){return n||C.test(e)||r("Global events are undocumented and deprecated"),k.call(this,e,t,n||document,a)},e.each(S.split("|"),function(t,n){e.event.special[n]={setup:function(){var t=this;return t!==document&&(e.event.add(document,n+"."+e.guid,function(){e.event.trigger(n,null,t,!0)}),e._data(this,n,e.guid++)),!1},teardown:function(){return this!==document&&e.event.remove(document,n+"."+e._data(this,n)),!1}}})}(jQuery,window);
2
3var stacks = {};
4stacks.jQuery = jQuery.noConflict(true);
5stacks.uk_co_doobox_doomontage2 = {};
6stacks.uk_co_doobox_doomontage2 = (function(stack) {
7var jQuery = stacks.jQuery;var $ = jQuery;// Start dooMontage 2 stack page Javascript code
8
9
10/*!
11 * Justified Gallery - v3.6.1
12 * http://miromannino.github.io/Justified-Gallery/
13 * Copyright (c) 2015 Miro Mannino
14 * Licensed under the MIT license.
15 */
16!function(a){var b=function(b,c){this.settings=c,this.checkSettings(),this.imgAnalyzerTimeout=null,this.entries=null,this.buildingRow={entriesBuff:[],width:0,aspectRatio:0},this.lastAnalyzedIndex=-1,this["yield"]={every:2,flushed:0},this.border=c.border>=0?c.border:c.margins,this.maxRowHeight=this.retrieveMaxRowHeight(),this.suffixRanges=this.retrieveSuffixRanges(),this.offY=this.border,this.spinner={phase:0,timeSlot:150,$el:a('<div class="spinner"><span></span><span></span><span></span></div>'),intervalId:null},this.checkWidthIntervalId=null,this.galleryWidth=b.width(),this.$gallery=b};b.prototype.getSuffix=function(a,b){var c,d;for(c=a>b?a:b,d=0;d<this.suffixRanges.length;d++)if(c<=this.suffixRanges[d])return this.settings.sizeRangeSuffixes[this.suffixRanges[d]];return this.settings.sizeRangeSuffixes[this.suffixRanges[d-1]]},b.prototype.removeSuffix=function(a,b){return a.substring(0,a.length-b.length)},b.prototype.endsWith=function(a,b){return-1!==a.indexOf(b,a.length-b.length)},b.prototype.getUsedSuffix=function(a){for(var b in this.settings.sizeRangeSuffixes)if(this.settings.sizeRangeSuffixes.hasOwnProperty(b)){if(0===this.settings.sizeRangeSuffixes[b].length)continue;if(this.endsWith(a,this.settings.sizeRangeSuffixes[b]))return this.settings.sizeRangeSuffixes[b]}return""},b.prototype.newSrc=function(a,b,c){var d=a.match(this.settings.extension),e=null!=d?d[0]:"",f=a.replace(this.settings.extension,"");return f=this.removeSuffix(f,this.getUsedSuffix(f)),f+=this.getSuffix(b,c)+e},b.prototype.showImg=function(a,b){this.settings.cssAnimation?(a.addClass("entry-visible"),b&&b()):a.stop().fadeTo(this.settings.imagesAnimationDuration,1,b)},b.prototype.extractImgSrcFromImage=function(a){var b="undefined"!=typeof a.data("safe-src")?a.data("safe-src"):a.attr("src");return a.data("jg.originalSrc",b),b},b.prototype.imgFromEntry=function(a){var b=a.find("> img");return 0===b.length&&(b=a.find("> a > img")),0===b.length?null:b},b.prototype.doocaptionFromEntry=function(a){var b=a.find("> .doocaption");return 0===b.length?null:b},b.prototype.displayEntry=function(b,c,d,e,f,g){b.width(e),b.height(g),b.css("top",d),b.css("left",c);var h=this.imgFromEntry(b);if(null!==h){h.css("width",e),h.css("height",f),h.css("margin-left",-e/2),h.css("margin-top",-f/2);var i=h.attr("src"),j=this.newSrc(i,e,f);h.one("error",function(){h.attr("src",h.data("jg.originalSrc"))});var k=function(){i!==j&&h.attr("src",j)};"skipped"===b.data("jg.loaded")?this.onImageEvent(i,a.proxy(function(){this.showImg(b,k),b.data("jg.loaded",!0)},this)):this.showImg(b,k)}else this.showImg(b);this.displayEntrydoocaption(b)},b.prototype.displayEntrydoocaption=function(b){var c=this.imgFromEntry(b);if(null!==c&&this.settings.doocaptions){var d=this.doocaptionFromEntry(b);if(null==d){var e=c.attr("alt");this.isValiddoocaption(e)||(e=b.attr("data-title")),this.isValiddoocaption(e)&&(d=a('<div class="doocaption">'+e+"</div>"),b.append(d),b.data("jg.createddoocaption",!0))}null!==d&&(this.settings.cssAnimation||d.stop().fadeTo(0,this.settings.doocaptionSettings.nonVisibleOpacity),this.adddoocaptionEventsHandlers(b))}else this.removedoocaptionEventsHandlers(b)},b.prototype.isValiddoocaption=function(a){return"undefined"!=typeof a&&a.length>0},b.prototype.onEntryMouseEnterFordoocaption=function(b){var c=this.doocaptionFromEntry(a(b.currentTarget));this.settings.cssAnimation?c.addClass("doocaption-visible").removeClass("doocaption-hidden"):c.stop().fadeTo(this.settings.doocaptionSettings.animationDuration,this.settings.doocaptionSettings.visibleOpacity)},b.prototype.onEntryMouseLeaveFordoocaption=function(b){var c=this.doocaptionFromEntry(a(b.currentTarget));this.settings.cssAnimation?c.removeClass("doocaption-visible").removeClass("doocaption-hidden"):c.stop().fadeTo(this.settings.doocaptionSettings.animationDuration,this.settings.doocaptionSettings.nonVisibleOpacity)},b.prototype.adddoocaptionEventsHandlers=function(b){var c=b.data("jg.doocaptionMouseEvents");"undefined"==typeof c&&(c={mouseenter:a.proxy(this.onEntryMouseEnterFordoocaption,this),mouseleave:a.proxy(this.onEntryMouseLeaveFordoocaption,this)},b.on("mouseenter",void 0,void 0,c.mouseenter),b.on("mouseleave",void 0,void 0,c.mouseleave),b.data("jg.doocaptionMouseEvents",c))},b.prototype.removedoocaptionEventsHandlers=function(a){var b=a.data("jg.doocaptionMouseEvents");"undefined"!=typeof b&&(a.off("mouseenter",void 0,b.mouseenter),a.off("mouseleave",void 0,b.mouseleave),a.removeData("jg.doocaptionMouseEvents"))},b.prototype.prepareBuildingRow=function(a){var b,c,d,e,f,g=!0,h=0,i=this.galleryWidth-2*this.border-(this.buildingRow.entriesBuff.length-1)*this.settings.margins,j=i/this.buildingRow.aspectRatio,k=this.buildingRow.width/i>this.settings.justifyThreshold;if(a&&"hide"===this.settings.lastRow&&!k){for(b=0;b<this.buildingRow.entriesBuff.length;b++)c=this.buildingRow.entriesBuff[b],this.settings.cssAnimation?c.removeClass("entry-visible"):c.stop().fadeTo(0,0);return-1}for(a&&!k&&"nojustify"===this.settings.lastRow&&(g=!1),b=0;b<this.buildingRow.entriesBuff.length;b++)c=this.buildingRow.entriesBuff[b],d=c.data("jg.width")/c.data("jg.height"),g?(e=b===this.buildingRow.entriesBuff.length-1?i:j*d,f=j):(e=this.settings.rowHeight*d,f=this.settings.rowHeight),i-=Math.round(e),c.data("jg.jwidth",Math.round(e)),c.data("jg.jheight",Math.
16ceil(f)),(0===b||h>f)&&(h=f);return this.settings.fixedHeight&&h>this.settings.rowHeight&&(h=this.settings.rowHeight),{minHeight:h,justify:g}},b.prototype.clearBuildingRow=function(){this.buildingRow.entriesBuff=[],this.buildingRow.aspectRatio=0,this.buildingRow.width=0},b.prototype.flushRow=function(a){var b,c,d,e=this.settings,f=this.border;if(d=this.prepareBuildingRow(a),c=d.minHeight,a&&"hide"===e.lastRow&&-1===c)return void this.clearBuildingRow();this.maxRowHeight.percentage?this.maxRowHeight.value*e.rowHeight<c&&(c=this.maxRowHeight.value*e.rowHeight):this.maxRowHeight.value>0&&this.maxRowHeight.value<c&&(c=this.maxRowHeight.value);for(var g=0;g<this.buildingRow.entriesBuff.length;g++)b=this.buildingRow.entriesBuff[g],this.displayEntry(b,f,this.offY,b.data("jg.jwidth"),b.data("jg.jheight"),c),f+=b.data("jg.jwidth")+e.margins;this.$gallery.height(this.offY+c+this.border+(this.isSpinnerActive()?this.getSpinnerHeight():0)),(!a||c<=this.settings.rowHeight&&d.justify)&&(this.offY+=c+this.settings.margins,this.clearBuildingRow(),this.$gallery.trigger("jg.rowflush"))},b.prototype.checkWidth=function(){this.checkWidthIntervalId=setInterval(a.proxy(function(){var a=parseFloat(this.$gallery.width());this.galleryWidth!==a&&(this.galleryWidth=a,this.rewind(),this.startImgAnalyzer(!0))},this),this.settings.refreshTime)},b.prototype.isSpinnerActive=function(){return null!=this.spinner.intervalId},b.prototype.getSpinnerHeight=function(){return this.spinner.$el.innerHeight()},b.prototype.stopLoadingSpinnerAnimation=function(){clearInterval(this.spinner.intervalId),this.spinner.intervalId=null,this.$gallery.height(this.$gallery.height()-this.getSpinnerHeight()),this.spinner.$el.detach()},b.prototype.startLoadingSpinnerAnimation=function(){var a=this.spinner,b=a.$el.find("span");clearInterval(a.intervalId),this.$gallery.append(a.$el),this.$gallery.height(this.offY+this.getSpinnerHeight()),a.intervalId=setInterval(function(){a.phase<b.length?b.eq(a.phase).fadeTo(a.timeSlot,1):b.eq(a.phase-b.length).fadeTo(a.timeSlot,0),a.phase=(a.phase+1)%(2*b.length)},a.timeSlot)},b.prototype.rewind=function(){this.lastAnalyzedIndex=-1,this.offY=this.border,this.clearBuildingRow()},b.prototype.hideBuildingRowImages=function(){for(var a=0;a<this.buildingRow.entriesBuff.length;a++)this.settings.cssAnimation?this.buildingRow.entriesBuff[a].removeClass("entry-visible"):this.buildingRow.entriesBuff[a].stop().fadeTo(0,0)},b.prototype.updateEntries=function(b){return this.entries=this.$gallery.find(this.settings.selector).toArray(),0===this.entries.length?!1:(this.settings.filter?this.modifyEntries(this.filterArray,b):this.modifyEntries(this.resetFilters,b),a.isFunction(this.settings.sort)?this.modifyEntries(this.sortArray,b):this.settings.randomize&&this.modifyEntries(this.shuffleArray,b),!0)},b.prototype.insertToGallery=function(b){var c=this;a.each(b,function(){a(this).appendTo(c.$gallery)})},b.prototype.shuffleArray=function(a){var b,c,d;for(b=a.length-1;b>0;b--)c=Math.floor(Math.random()*(b+1)),d=a[b],a[b]=a[c],a[c]=d;return this.insertToGallery(a),a},b.prototype.sortArray=function(a){return a.sort(this.settings.sort),this.insertToGallery(a),a},b.prototype.resetFilters=function(b){for(var c=0;c<b.length;c++)a(b[c]).removeClass("jg-filtered");return b},b.prototype.filterArray=function(b){var c=this.settings;return"string"===a.type(c.filter)?b.filter(function(b){var d=a(b);return d.is(c.filter)?(d.removeClass("jg-filtered"),!0):(d.addClass("jg-filtered"),!1)}):a.isFunction(c.filter)?b.filter(c.filter):void 0},b.prototype.modifyEntries=function(a,b){var c=b?this.entries.splice(this.lastAnalyzedIndex+1,this.entries.length-this.lastAnalyzedIndex-1):this.entries;c=a.call(this,c),this.entries=b?this.entries.concat(c):c},b.prototype.destroy=function(){clearInterval(this.checkWidthIntervalId),a.each(this.entries,a.proxy(function(b,c){var d=a(c);d.css("width",""),d.css("height",""),d.css("top",""),d.css("left",""),d.data("jg.loaded",void 0),d.removeClass("jg-entry");var e=this.imgFromEntry(d);e.css("width",""),e.css("height",""),e.css("margin-left",""),e.css("margin-top",""),e.attr("src",e.data("jg.originalSrc")),e.data("jg.originalSrc",void 0),this.removedoocaptionEventsHandlers(d);var f=this.doocaptionFromEntry(d);d.data("jg.createddoocaption")?(d.data("jg.createddoocaption",void 0),null!=f&&f.remove()):null!=f&&f.fadeTo(0,1)},this)),this.$gallery.css("height",""),this.$gallery.removeClass("justified-gallery"),this.$gallery.data("jg.controller",void 0)}
16,b.prototype.analyzeImages=function(b){for(var c=this.lastAnalyzedIndex+1;c<this.entries.length;c++){var d=a(this.entries[c]);if(d.data("jg.loaded")===!0||"skipped"===d.data("jg.loaded")){var e=this.galleryWidth-2*this.border-(this.buildingRow.entriesBuff.length-1)*this.settings.margins,f=d.data("jg.width")/d.data("jg.height");if(e/(this.buildingRow.aspectRatio+f)<this.settings.rowHeight&&(this.flushRow(!1),++this["yield"].flushed>=this["yield"].every))return void this.startImgAnalyzer(b);this.buildingRow.entriesBuff.push(d),this.buildingRow.aspectRatio+=f,this.buildingRow.width+=f*this.settings.rowHeight,this.lastAnalyzedIndex=c}else if("error"!==d.data("jg.loaded"))return}this.buildingRow.entriesBuff.length>0&&this.flushRow(!0),this.isSpinnerActive()&&this.stopLoadingSpinnerAnimation(),this.stopImgAnalyzerStarter(),this.$gallery.trigger(b?"jg.resize":"jg.complete")},b.prototype.stopImgAnalyzerStarter=function(){this["yield"].flushed=0,null!==this.imgAnalyzerTimeout&&clearTimeout(this.imgAnalyzerTimeout)},b.prototype.startImgAnalyzer=function(a){var b=this;this.stopImgAnalyzerStarter(),this.imgAnalyzerTimeout=setTimeout(function(){b.analyzeImages(a)},.001)},b.prototype.onImageEvent=function(b,c,d){if(c||d){var e=new Image,f=a(e);c&&f.one("load",function(){f.off("load error"),c(e)}),d&&f.one("error",function(){f.off("load error"),d(e)}),e.src=b}},b.prototype.init=function(){var b=!1,c=!1,d=this;a.each(this.entries,function(e,f){var g=a(f),h=d.imgFromEntry(g);if(g.addClass("jg-entry"),g.data("jg.loaded")!==!0&&"skipped"!==g.data("jg.loaded"))if(null!==d.settings.rel&&g.attr("rel",d.settings.rel),null!==d.settings.target&&g.attr("target",d.settings.target),null!==h){var i=d.extractImgSrcFromImage(h);if(h.attr("src",i),d.settings.waitThumbnailsLoad===!1){var j=parseFloat(h.attr("width")),k=parseFloat(h.attr("height"));if(!isNaN(j)&&!isNaN(k))return g.data("jg.width",j),g.data("jg.height",k),g.data("jg.loaded","skipped"),c=!0,d.startImgAnalyzer(!1),!0}g.data("jg.loaded",!1),b=!0,d.isSpinnerActive()||d.startLoadingSpinnerAnimation(),d.onImageEvent(i,function(a){g.data("jg.width",a.width),g.data("jg.height",a.height),g.data("jg.loaded",!0),d.startImgAnalyzer(!1)},function(){g.data("jg.loaded","error"),d.startImgAnalyzer(!1)})}else g.data("jg.loaded",!0),g.data("jg.width",g.width()|parseFloat(g.css("width"))|1),g.data("jg.height",g.height()|parseFloat(g.css("height"))|1)}),b||c||this.startImgAnalyzer(!1),this.checkWidth()},b.prototype.checkOrConvertNumber=function(b,c){if("string"===a.type(b[c])&&(b[c]=parseFloat(b[c])),"number"!==a.type(b[c]))throw c+" must be a number";if(isNaN(b[c]))throw"invalid number for "+c},b.prototype.checkSizeRangesSuffixes=function(){if("object"!==a.type(this.settings.sizeRangeSuffixes))throw"sizeRangeSuffixes must be defined and must be an object";var b=[];for(var c in this.settings.sizeRangeSuffixes)this.settings.sizeRangeSuffixes.hasOwnProperty(c)&&b.push(c);for(var d={0:""},e=0;e<b.length;e++)if("string"===a.type(b[e]))try{var f=parseInt(b[e].replace(/^[a-z]+/,""),10);d[f]=this.settings.sizeRangeSuffixes[b[e]]}catch(g){throw"sizeRangeSuffixes keys must contains correct numbers ("+g+")"}else d[b[e]]=this.settings.sizeRangeSuffixes[b[e]];this.settings.sizeRangeSuffixes=d},b.prototype.retrieveMaxRowHeight=function(){var b={};if("string"===a.type(this.settings.maxRowHeight))this.settings.maxRowHeight.match(/^[0-9]+%$/)?(b.value=parseFloat(this.settings.maxRowHeight.match(/^([0-9])+%$/)[1])/100,b.percentage=!1):(b.value=parseFloat(this.settings.maxRowHeight),b.percentage=!0);else{if("number"!==a.type(this.settings.maxRowHeight))throw"maxRowHeight must be a number or a percentage";b.value=this.settings.maxRowHeight,b.percentage=!1}if(isNaN(b.value))throw"invalid number for maxRowHeight";return b.percentage?b.value<100&&(b.value=100):b.value>0&&b.value<this.settings.rowHeight&&(b.value=this.settings.rowHeight),b},b.prototype.checkSettings=function(){if(this.checkSizeRangesSuffixes(),this.checkOrConvertNumber(this.settings,"rowHeight"),this.checkOrConvertNumber(this.settings,"margins"),this.checkOrConvertNumber(this.settings,"border"),"nojustify"!==this.settings.lastRow&&"justify"!==this.settings.lastRow&&"hide"!==this.settings.lastRow)throw'lastRow must be "nojustify", "justify" or "hide"';if(this.checkOrConvertNumber(this.settings,"justifyThreshold"),this.settings.justifyThreshold<0||this.settings.justifyThreshold>1)throw"justifyThreshold must be in the interval [0,1]";if("boolean"!==a.type(this.settings.cssAnimation))throw"cssAnimation must be a boolean";if("boolean"!==a.type(this.settings.doocaptions))throw"doocaptions must be a boolean";if(this.checkOrConvertNumber(this.settings.doocaptionSettings,"animationDuration"),this.checkOrConvertNumber(this.settings.doocaptionSettings,"visibleOpacity"),this.settings.doocaptionSettings.visibleOpacity<0||this.settings.doocaptionSettings.visibleOpacity>1)throw"doocaptionSettings.visibleOpacity must be in the interval [0, 1]";if(this.checkOrConvertNumber(this.settings.doocaptionSettings,"nonVisibleOpacity"),this.settings.doocaptionSettings.nonVisibleOpacity<0||this.settings.doocaptionSettings.nonVisibleOpacity>1)throw"doocaptionSettings.nonVisibleOpacity must be in the interval [0, 1]";if("boolean"!==a.type(this.settings.fixedHeight))throw"fixedHeight must be a boolean";if(this.checkOrConvertNumber(this.settings,"imagesAnimationDuration"),this.checkOrConvertNumber(this.settings,"refreshTime"),"boolean"!==a.type(this.settings.randomize))throw"randomize must be a boolean";if("string"!==a.type(this.settings.selector))throw"selector must be a string";if(this.settings.sort!==!1&&!a.isFunction(this.settings.sort))throw"sort must be false or a comparison function";if(this.settings.filter!==!1&&!a.isFunction(this.settings.filter)&&"string"!==a.type(this.settings.filter))throw"filter must be false, a string or a filter function"},b.prototype.retrieveSuffixRanges=function(){var a=[];for(var b in this.settings.sizeRangeSuffixes)this.settings.sizeRangeSuffixes.hasOwnProperty(b)&&a.push(parseInt(b,10));return a.sort(function(a,b){return a>b?1:b>a?-1:0}),a},b.prototype.updateSettings=function(b){this.settings=a.extend({},this.settings,b),this.checkSettings(),this.border=this.settings.border>=0?this.settings.border:this.settings.margins,this.maxRowHeight=this.retrieveMaxRowHeight(),this.suffixRanges=this.retrieveSuffixRanges()},a.fn.doojustifiedGallery=function(c){return this.each(function(d,e){var f=a(e);f.addClass("justified-gallery");var g=f.data("jg.controller");if("undefined"==typeof g){if("undefined"!=typeof c&&null!==c&&"object"!==a.type(c))throw"The argument must be an object";g=new b(f,a.extend({},a.fn.doojustifiedGallery.defaults,c)),f.data("jg.controller",g)}else if("norewind"===c)g.hideBuildingRowImages();else{if("destroy"===c)return void g.destroy();g.updateSettings(c),g.rewind()}g.updateEntries("norewind"===c)&&g.init()})},a.fn.doojustifiedGallery.defaults={sizeRangeSuffixes:{},rowHeight:120,maxRowHeight:"200%",margins:1,border:-1,lastRow:"nojustify",justifyThreshold:.75,fixedHeight:!1,waitThumbnailsLoad:!0,doocaptions:!0,cssAnimation:!1,imagesAnimationDuration:500,doocaptionSettings:{animationDuration:300,visibleOpacity:.7,nonVisibleOpacity:0},rel:null,target:null,extension:/\.[^.\\/]+$/,refreshTime:100,randomize:!1,sort:!1,filter:!1,selector:"> a, > div:not(.spinner)"}}(jQuery);
17
18
19// End dooMontage 2 stack page Javascript code
20return stack;})(stacks.uk_co_doobox_doomontage2);
21stacks.stacks_in_1283_page10 = {};
22stacks.stacks_in_1283_page10 = (function(stack) {
23var jQuery = stacks.jQuery;var $ = jQuery;/*
24 * jQuery appear plugin
25 * Copyright (c) 2012 Andrey Sidorov
26 * licensed under MIT license.
27 * https://github.com/morr/jquery.appear/
28 * Version: 0.3.6
29 */
30 (function($){var selectors=[];var check_binded=false;var check_lock=false;var defaults={interval:250,force_process:false};var $window=$(window);var $prior_appeared=[];function process(){check_lock=false;for(var index=0,selectorsLength=selectors.length;index<selectorsLength;index++){var $appeared=$(selectors[index]).filter(function(){return $(this).is(':appeared');});$appeared.trigger('appear',[$appeared]);if($prior_appeared[index]){var $disappeared=$prior_appeared[index].not($appeared);$disappeared.trigger('disappear',[$disappeared]);}
31$prior_appeared[index]=$appeared;}};function add_selector(selector){selectors.push(selector);$prior_appeared.push();}
32$.expr[':']['appeared']=function(element){var $element=$(element);if(!$element.is(':visible')){return false;}
33var window_left=$window.scrollLeft();var window_top=$window.scrollTop();var offset=$element.offset();var left=offset.left;var top=offset.top;if(top+$element.height()>=window_top&&top-($element.data('appear-top-offset')||0)<=window_top+$window.height()&&left+$element.width()>
33=window_left&&left-($element.data('appear-left-offset')||0)<=window_left+$window.width()){return true;}else{return false;}};$.fn.extend({appear:function(options){var opts=$.extend({},defaults,options||{});var selector=this.selector||this;if(!check_binded){var on_check=function(){if(check_lock){return;}
34check_lock=true;setTimeout(process,opts.interval);};$(window).scroll(on_check).resize(on_check);check_binded=true;}
35if(opts.force_process){setTimeout(process,opts.interval);}
36add_selector(selector);return $(selector);}});$.extend({force_appear:function(){if(check_binded){process();return true;}
37return false;}});})(function(){if(typeof module!=='undefined'){return require('jquery');}else{return jQuery;}}());/*! waitForImages jQuery Plugin 2015-06-02 */
38!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a(jQuery)}(function(a){var b="waitForImages";a.waitForImages={hasImageProperties:["backgroundImage","listStyleImage","borderImage","borderCornerImage","cursor"],hasImageAttributes:["srcset"]},a.expr[":"]["has-src"]=function(b){return a(b).is('img[src][src!=""]')},a.expr[":"].uncached=function(b){return a(b).is(":has-src")?!b.complete:!1},a.fn.waitForImages=function(){var c,d,e,f=0,g=0,h=a.Deferred();if(a.isPlainObject(arguments[0])?(e=arguments[0].waitForAll,d=arguments[0].each,c=arguments[0].finished):1===arguments.length&&"boolean"===a.type(arguments[0])?e=arguments[0]:(c=arguments[0],d=arguments[1],e=arguments[2]),c=c||a.noop,d=d||a.noop,e=!!e,!a.isFunction(c)||!a.isFunction(d))throw new TypeError("An invalid callback was supplied.");return this.each(function(){var i=a(this),j=[],k=a.waitForImages.hasImageProperties||[],l=a.waitForImages.hasImageAttributes||[],m=/url\(\s*(['"]?)(.*?)\1\s*\)/g;e?i.find("*").addBack().each(function(){var b=a(this);b.is("img:has-src")&&j.push({src:b.attr("src"),element:b[0]}),a.each(k,function(a,c){var d,e=b.css(c);if(!e)return!0;for(;d=m.exec(e);)j.push({src:d[2],element:b[0]})}),a.each(l,function(c,d){var e,f=b.attr(d);return f?(e=f.split(","),void a.each(e,function(c,d){d=a.trim(d).split(" ")[0],j.push({src:d,element:b[0]})})):!0})}):i.find("img:has-src").each(function(){j.push({src:this.src,element:this})}),f=j.length,g=0,0===f&&(c.call(i[0]),h.resolveWith(i[0])),a.each(j,function(e,j){var k=new Image,l="load."+b+" error."+b;a(k).one(l,function m(b){var e=[g,f,"load"==b.type];return g++,d.apply(j.element,e),h.notifyWith(j.element,e),a(this).off(l,m),g==f?(c.call(i[0]),h.resolveWith(i[0]),!1):void 0}),k.src=j.src})}),h.promise()}});
39/*
40 * jQuery FlexSlider v2.5.0
41 * Copyright 2012 WooThemes
42 * Contributing Author: Tyler Smith
43 */
44;
45(function ($) {
46
47  //FlexSlider: Object Instance
48  $.flexslider = function(el, options) {
49    var slider = $(el);
50
51    // making variables public
52    slider.vars = $.extend({}, $.flexslider.defaults, options);
53
54    var namespace = slider.vars.namespace,
55        msGesture = window.navigator && window.navigator.msPointerEnabled && window.MSGesture,
56        touch = (( "ontouchstart" in window ) || msGesture || window.DocumentTouch && document instanceof DocumentTouch) && slider.vars.touch,
57        // depricating this idea, as devices are being released with both of these events
58        //eventType = (touch) ? "touchend" : "click",
59        eventType = "click touchend MSPointerUp keyup",
60        watchedEvent = "",
61        watchedEventClearTimer,
62        vertical = slider.vars.direction === "vertical",
63        reverse = slider.vars.reverse,
64        carousel = (slider.vars.itemWidth > 0),
65        fade = slider.vars.animation === "fade",
66        asNav = slider.vars.asNavFor !== "",
67        methods = {},
68        focused = true;
69
70    // Store a reference to the slider object
71    $.data(el, "flexslider", slider);
72
73    // Private slider methods
74    methods = {
75      init: function() {
76        slider.animating = false;
77        // Get current slide and make sure it is a number
78        slider.currentSlide = parseInt( ( slider.vars.startAt ? slider.vars.startAt : 0), 10 );
79        if ( isNaN( slider.currentSlide ) ) { slider.currentSlide = 0; }
80        slider.animatingTo = slider.currentSlide;
81        slider.atEnd = (slider.currentSlide === 0 || slider.currentSlide === slider.last);
82        slider.containerSelector = slider.vars.selector.substr(0,slider.vars.selector.search(' '));
83        slider.slides = $(slider.vars.selector, slider);
84        slider.container = $(slider.containerSelector, slider);
85        slider.count = slider.slides.length;
86        // SYNC:
87        slider.syncExists = $(slider.vars.sync).length > 0;
88        // SLIDE:
89        if (slider.vars.animation === "slide") { slider.vars.animation = "swing"; }
90        slider.prop = (vertical) ? "top" : "marginLeft";
91        slider.args = {};
92        // SLIDESHOW:
93        slider.manualPause = false;
vendor: 44,750 bytes, lines 94-1127
94        slider.stopped = false;
95        //PAUSE WHEN INVISIBLE
96        slider.started = false;
97        slider.startTimeout = null;
98        // TOUCH/USECSS:
99        slider.transitions = !slider.vars.video && !fade && slider.vars.useCSS && (function() {
100          var obj = document.createElement('div'),
101              props = ['perspectiveProperty', 'WebkitPerspective', 'MozPerspective', 'OPerspective', 'msPerspective'];
102          for (var i in props) {
103            if ( obj.style[ props[i] ] !== undefined ) {
104              slider.pfx = props[i].replace('Perspective','').toLowerCase();
105              slider.prop = "-" + slider.pfx + "-transform";
106              return true;
107            }
108          }
109          return false;
110        }());
111        slider.ensureAnimationEnd = '';
112        // CONTROLSCONTAINER:
113        if (slider.vars.controlsContainer !== "") slider.controlsContainer = $(slider.vars.controlsContainer).length > 0 && $(slider.vars.controlsContainer);
114        // MANUAL:
115        if (slider.vars.manualControls !== "") slider.manualControls = $(slider.vars.manualControls).length > 0 && $(slider.vars.manualControls);
116
117        // CUSTOM DIRECTION NAV:
118        if (slider.vars.customDirectionNav !== "") slider.customDirectionNav = $(slider.vars.customDirectionNav).length === 2 && $(slider.vars.customDirectionNav);
119
120        // RANDOMIZE:
121        if (slider.vars.randomize) {
122          slider.slides.sort(function() { return (Math.round(Math.random())-0.5); });
123          slider.container.empty().append(slider.slides);
124        }
125
126        slider.doMath();
127
128        // INIT
129        slider.setup("init");
130
131        // CONTROLNAV:
132        if (slider.vars.controlNav) { methods.controlNav.setup(); }
133
134        // DIRECTIONNAV:
135        if (slider.vars.directionNav) { methods.directionNav.setup(); }
136
137        // KEYBOARD:
138        if (slider.vars.keyboard && ($(slider.containerSelector).length === 1 || slider.vars.multipleKeyboard)) {
139          $(document).bind('keyup', function(event) {
140            var keycode = event.keyCode;
141            if (!slider.animating && (keycode === 39 || keycode === 37)) {
142              var target = (keycode === 39) ? slider.getTarget('next') :
143                           (keycode === 37) ? slider.getTarget('prev') : false;
144              slider.flexAnimate(target, slider.vars.pauseOnAction);
145            }
146          });
147        }
148        // MOUSEWHEEL:
149        if (slider.vars.mousewheel) {
150          slider.bind('mousewheel', function(event, delta, deltaX, deltaY) {
151            event.preventDefault();
152            var target = (delta < 0) ? slider.getTarget('next') : slider.getTarget('prev');
153            slider.flexAnimate(target, slider.vars.pauseOnAction);
154          });
155        }
156
157        // PAUSEPLAY
158        if (slider.vars.pausePlay) { methods.pausePlay.setup(); }
159
160        //PAUSE WHEN INVISIBLE
161        if (slider.vars.slideshow && slider.vars.pauseInvisible) { methods.pauseInvisible.init(); }
162
163        // SLIDSESHOW
164        if (slider.vars.slideshow) {
165          if (slider.vars.pauseOnHover) {
166            slider.hover(function() {
167              if (!slider.manualPlay && !slider.manualPause) { slider.pause(); }
168            }, function() {
169              if (!slider.manualPause && !slider.manualPlay && !slider.stopped) { slider.play(); }
170            });
171          }
172          // initialize animation
173          //If we're visible, or we don't use PageVisibility API
174          if(!slider.vars.pauseInvisible || !methods.pauseInvisible.isHidden()) {
175            (slider.vars.initDelay > 0) ? slider.startTimeout = setTimeout(slider.play, slider.vars.initDelay) : slider.play();
176          }
177        }
178
179        // ASNAV:
180        if (asNav) { methods.asNav.setup(); }
181
182        // TOUCH
183        if (touch && slider.vars.touch) { methods.touch(); }
184
185        // FADE&&SMOOTHHEIGHT || SLIDE:
186        if (!fade || (fade && slider.vars.smoothHeight)) { $(window).bind("resize orientationchange focus", methods.resize); }
187
188        slider.find("img").attr("draggable", "false");
189
190        // API: start() Callback
191        setTimeout(function(){
192          slider.vars.start(slider);
193        }, 200);
194      },
195      asNav: {
196        setup: function() {
197          slider.asNav = true;
198          slider.animatingTo = Math.floor(slider.currentSlide/slider.move);
199          slider.currentItem = slider.currentSlide;
200          slider.slides.removeClass(namespace + "active-slide").eq(slider.currentItem).addClass(namespace + "active-slide");
201          if(!msGesture){
202              slider.slides.on(eventType, function(e){
203                e.preventDefault();
204                var $slide = $(this),
205                    target = $slide.index();
206                var posFromLeft = $slide.offset().left - $(slider).scrollLeft(); // Find position of slide relative to left of slider container
207                if( posFromLeft <= 0 && $slide.hasClass( namespace + 'active-slide' ) ) {
208                  slider.flexAnimate(slider.getTarget("prev"), true);
209                } else if (!$(slider.vars.asNavFor).data('flexslider').animating && !$slide.hasClass(namespace + "active-slide")) {
210                  slider.direction = (slider.currentItem < target) ? "next" : "prev";
211                  slider.flexAnimate(target, slider.vars.pauseOnAction, false, true, true);
212                }
213              });
214          }else{
215              el._slider = slider;
216              slider.slides.each(function (){
217                  var that = this;
218                  that._gesture = new MSGesture();
219                  that._gesture.target = that;
220                  that.addEventListener("MSPointerDown", function (e){
221                      e.preventDefault();
222                      if(e.currentTarget._gesture) {
223                        e.currentTarget._gesture.addPointer(e.pointerId);
224                      }
225                  }, false);
226                  that.addEventListener("MSGestureTap", function (e){
227                      e.preventDefault();
228                      var $slide = $(this),
229                          target = $slide.index();
230                      if (!$(slider.vars.asNavFor).data('flexslider').animating && !$slide.hasClass('active')) {
231                          slider.direction = (slider.currentItem < target) ? "next" : "prev";
232                          slider.flexAnimate(target, slider.vars.pauseOnAction, false, true, true);
233                      }
234                  });
235              });
236          }
237        }
238      },
239      controlNav: {
240        setup: function() {
241          if (!slider.manualControls) {
242            methods.controlNav.setupPaging();
243          } else { // MANUALCONTROLS:
244            methods.controlNav.setupManual();
245          }
246        },
247        setupPaging: function() {
248          var type = (slider.vars.controlNav === "thumbnails") ? 'control-thumbs' : 'control-paging',
249              j = 1,
250              item,
251              slide;
252
253          slider.controlNavScaffold = $('<ol class="'+ namespace + 'control-nav ' + namespace + type + '"></ol>');
254
255          if (slider.pagingCount > 1) {
256            for (var i = 0; i < slider.pagingCount; i++) {
257              slide = slider.slides.eq(i);
258              item = (slider.vars.controlNav === "thumbnails") ? '<img src="' + slide.attr( 'data-thumb' ) + '"/>' : '<a>' + j + '</a>';
259              if ( 'thumbnails' === slider.vars.controlNav && true === slider.vars.thumbCaptions ) {
260                var captn = slide.attr( 'data-thumbcaption' );
261                if ( '' !== captn && undefined !== captn ) { item += '<span class="' + namespace + 'caption">' + captn + '</span>'; }
262              }
263              slider.controlNavScaffold.append('<li>' + item + '</li>');
264              j++;
265            }
266          }
267
268          // CONTROLSCONTAINER:
269          (slider.controlsContainer) ? $(slider.controlsContainer).append(slider.controlNavScaffold) : slider.append(slider.controlNavScaffold);
270          methods.controlNav.set();
271
272          methods.controlNav.active();
273
274          slider.controlNavScaffold.delegate('a, img', eventType, function(event) {
275            event.preventDefault();
276
277            if (watchedEvent === "" || watchedEvent === event.type) {
278              var $this = $(this),
279                  target = slider.controlNav.index($this);
280
281              if (!$this.hasClass(namespace + 'active')) {
282                slider.direction = (target > slider.currentSlide) ? "next" : "prev";
283                slider.flexAnimate(target, slider.vars.pauseOnAction);
284              }
285            }
286
287            // setup flags to prevent event duplication
288            if (watchedEvent === "") {
289              watchedEvent = event.type;
290            }
291            methods.setToClearWatchedEvent();
292
293          });
294        },
295        setupManual: function() {
296          slider.controlNav = slider.manualControls;
297          methods.controlNav.active();
298
299          slider.controlNav.bind(eventType, function(event) {
300            event.preventDefault();
301
302            if (watchedEvent === "" || watchedEvent === event.type) {
303              var $this = $(this),
304                  target = slider.controlNav.index($this);
305
306              if (!$this.hasClass(namespace + 'active')) {
307                (target > slider.currentSlide) ? slider.direction = "next" : slider.direction = "prev";
308                slider.flexAnimate(target, slider.vars.pauseOnAction);
309              }
310            }
311
312            // setup flags to prevent event duplication
313            if (watchedEvent === "") {
314              watchedEvent = event.type;
315            }
316            methods.setToClearWatchedEvent();
317          });
318        },
319        set: function() {
320          var selector = (slider.vars.controlNav === "thumbnails") ? 'img' : 'a';
321          slider.controlNav = $('.' + namespace + 'control-nav li ' + selector, (slider.controlsContainer) ? slider.controlsContainer : slider);
322        },
323        active: function() {
324          slider.controlNav.removeClass(namespace + "active").eq(slider.animatingTo).addClass(namespace + "active");
325        },
326        update: function(action, pos) {
327          if (slider.pagingCount > 1 && action === "add") {
328            slider.controlNavScaffold.append($('<li><a>' + slider.count + '</a></li>'));
329          } else if (slider.pagingCount === 1) {
330            slider.controlNavScaffold.find('li').remove();
331          } else {
332            slider.controlNav.eq(pos).closest('li').remove();
333          }
334          methods.controlNav.set();
335          (slider.pagingCount > 1 && slider.pagingCount !== slider.controlNav.length) ? slider.update(pos, action) : methods.controlNav.active();
336        }
337      },
338      directionNav: {
339        setup: function() {
340          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>');
341
342          // CUSTOM DIRECTION NAV:
343          if (slider.customDirectionNav) {
344            slider.directionNav = slider.customDirectionNav;
345          // CONTROLSCONTAINER:
346          } else if (slider.controlsContainer) {
347            $(slider.controlsContainer).append(directionNavScaffold);
348            slider.directionNav = $('.' + namespace + 'direction-nav li a', slider.controlsContainer);
349          } else {
350            slider.append(directionNavScaffold);
351            slider.directionNav = $('.' + namespace + 'direction-nav li a', slider);
352          }
353
354          methods.directionNav.update();
355
356          slider.directionNav.bind(eventType, function(event) {
357            event.preventDefault();
358            var target;
359
360            if (watchedEvent === "" || watchedEvent === event.type) {
361              target = ($(this).hasClass(namespace + 'next')) ? slider.getTarget('next') : slider.getTarget('prev');
362              slider.flexAnimate(target, slider.vars.pauseOnAction);
363            }
364
365            // setup flags to prevent event duplication
366            if (watchedEvent === "") {
367              watchedEvent = event.type;
368            }
369            methods.setToClearWatchedEvent();
370          });
371        },
372        update: function() {
373          var disabledClass = namespace + 'disabled';
374          if (slider.pagingCount === 1) {
375            slider.directionNav.addClass(disabledClass).attr('tabindex', '-1');
376          } else if (!slider.vars.animationLoop) {
377            if (slider.animatingTo === 0) {
378              slider.directionNav.removeClass(disabledClass).filter('.' + namespace + "prev").addClass(disabledClass).attr('tabindex', '-1');
379            } else if (slider.animatingTo === slider.last) {
380              slider.directionNav.removeClass(disabledClass).filter('.' + namespace + "next").addClass(disabledClass).attr('tabindex', '-1');
381            } else {
382              slider.directionNav.removeClass(disabledClass).removeAttr('tabindex');
383            }
384          } else {
385            slider.directionNav.removeClass(disabledClass).removeAttr('tabindex');
386          }
387        }
388      },
389      pausePlay: {
390        setup: function() {
391          var pausePlayScaffold = $('<div class="' + namespace + 'pauseplay"><a></a></div>');
392
393          // CONTROLSCONTAINER:
394          if (slider.controlsContainer) {
395            slider.controlsContainer.append(pausePlayScaffold);
396            slider.pausePlay = $('.' + namespace + 'pauseplay a', slider.controlsContainer);
397          } else {
398            slider.append(pausePlayScaffold);
399            slider.pausePlay = $('.' + namespace + 'pauseplay a', slider);
400          }
401
402          methods.pausePlay.update((slider.vars.slideshow) ? namespace + 'pause' : namespace + 'play');
403
404          slider.pausePlay.bind(eventType, function(event) {
405            event.preventDefault();
406
407            if (watchedEvent === "" || watchedEvent === event.type) {
408              if ($(this).hasClass(namespace + 'pause')) {
409                slider.manualPause = true;
410                slider.manualPlay = false;
411                slider.pause();
412              } else {
413                slider.manualPause = false;
414                slider.manualPlay = true;
415                slider.play();
416              }
417            }
418
419            // setup flags to prevent event duplication
420            if (watchedEvent === "") {
421              watchedEvent = event.type;
422            }
423            methods.setToClearWatchedEvent();
424          });
425        },
426        update: function(state) {
427          (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);
428        }
429      },
430      touch: function() {
431        var startX,
432          startY,
433          offset,
434          cwidth,
435          dx,
436          startT,
437          onTouchStart,
438          onTouchMove,
439          onTouchEnd,
440          scrolling = false,
441          localX = 0,
442          localY = 0,
443          accDx = 0;
444
445        if(!msGesture){
446            onTouchStart = function(e) {
447              if (slider.animating) {
448                e.preventDefault();
449              } else if ( ( window.navigator.msPointerEnabled ) || e.touches.length === 1 ) {
450                slider.pause();
451                // CAROUSEL:
452                cwidth = (vertical) ? slider.h : slider. w;
453                startT = Number(new Date());
454                // CAROUSEL:
455
456                // Local vars for X and Y points.
457                localX = e.touches[0].pageX;
458                localY = e.touches[0].pageY;
459
460                offset = (carousel && reverse && slider.animatingTo === slider.last) ? 0 :
461                         (carousel && reverse) ? slider.limit - (((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo) :
462                         (carousel && slider.currentSlide === slider.last) ? slider.limit :
463                         (carousel) ? ((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.currentSlide :
464                         (reverse) ? (slider.last - slider.currentSlide + slider.cloneOffset) * cwidth : (slider.currentSlide + slider.cloneOffset) * cwidth;
465                startX = (vertical) ? localY : localX;
466                startY = (vertical) ? localX : localY;
467
468                el.addEventListener('touchmove', onTouchMove, false);
469                el.addEventListener('touchend', onTouchEnd, false);
470              }
471            };
472
473            onTouchMove = function(e) {
474              // Local vars for X and Y points.
475
476              localX = e.touches[0].pageX;
477              localY = e.touches[0].pageY;
478
479              dx = (vertical) ? startX - localY : startX - localX;
480              scrolling = (vertical) ? (Math.abs(dx) < Math.abs(localX - startY)) : (Math.abs(dx) < Math.abs(localY - startY));
481
482              var fxms = 500;
483
484              if ( ! scrolling || Number( new Date() ) - startT > fxms ) {
485                e.preventDefault();
486                if (!fade && slider.transitions) {
487                  if (!slider.vars.animationLoop) {
488                    dx = dx/((slider.currentSlide === 0 && dx < 0 || slider.currentSlide === slider.last && dx > 0) ? (Math.abs(dx)/cwidth+2) : 1);
489                  }
490                  slider.setProps(offset + dx, "setTouch");
491                }
492              }
493            };
494
495            onTouchEnd = function(e) {
496              // finish the touch by undoing the touch session
497              el.removeEventListener('touchmove', onTouchMove, false);
498
499              if (slider.animatingTo === slider.currentSlide && !scrolling && !(dx === null)) {
500                var updateDx = (reverse) ? -dx : dx,
501                    target = (updateDx > 0) ? slider.getTarget('next') : slider.getTarget('prev');
502
503                if (slider.canAdvance(target) && (Number(new Date()) - startT < 550 && Math.abs(updateDx) > 50 || Math.abs(updateDx) > cwidth/2)) {
504                  slider.flexAnimate(target, slider.vars.pauseOnAction);
505                } else {
506                  if (!fade) { slider.flexAnimate(slider.currentSlide, slider.vars.pauseOnAction, true); }
507                }
508              }
509              el.removeEventListener('touchend', onTouchEnd, false);
510
511              startX = null;
512              startY = null;
513              dx = null;
514              offset = null;
515            };
516
517            el.addEventListener('touchstart', onTouchStart, false);
518        }else{
519            el.style.msTouchAction = "none";
520            el._gesture = new MSGesture();
521            el._gesture.target = el;
522            el.addEventListener("MSPointerDown", onMSPointerDown, false);
523            el._slider = slider;
524            el.addEventListener("MSGestureChange", onMSGestureChange, false);
525            el.addEventListener("MSGestureEnd", onMSGestureEnd, false);
526
527            function onMSPointerDown(e){
528                e.stopPropagation();
529                if (slider.animating) {
530                    e.preventDefault();
531                }else{
532                    slider.pause();
533                    el._gesture.addPointer(e.pointerId);
534                    accDx = 0;
535                    cwidth = (vertical) ? slider.h : slider. w;
536                    startT = Number(new Date());
537                    // CAROUSEL:
538
539                    offset = (carousel && reverse && slider.animatingTo === slider.last) ? 0 :
540                        (carousel && reverse) ? slider.limit - (((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo) :
541                            (carousel && slider.currentSlide === slider.last) ? slider.limit :
542                                (carousel) ? ((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.currentSlide :
543                                    (reverse) ? (slider.last - slider.currentSlide + slider.cloneOffset) * cwidth : (slider.currentSlide + slider.cloneOffset) * cwidth;
544                }
545            }
546
547            function onMSGestureChange(e) {
548                e.stopPropagation();
549                var slider = e.target._slider;
550                if(!slider){
551                    return;
552                }
553                var transX = -e.translationX,
554                    transY = -e.translationY;
555
556                //Accumulate translations.
557                accDx = accDx + ((vertical) ? transY : transX);
558                dx = accDx;
559                scrolling = (vertical) ? (Math.abs(accDx) < Math.abs(-transX)) : (Math.abs(accDx) < Math.abs(-transY));
560
561                if(e.detail === e.MSGESTURE_FLAG_INERTIA){
562                    setImmediate(function (){
563                        el._gesture.stop();
564                    });
565
566                    return;
567                }
568
569                if (!scrolling || Number(new Date()) - startT > 500) {
570                    e.preventDefault();
571                    if (!fade && slider.transitions) {
572                        if (!slider.vars.animationLoop) {
573                            dx = accDx / ((slider.currentSlide === 0 && accDx < 0 || slider.currentSlide === slider.last && accDx > 0) ? (Math.abs(accDx) / cwidth + 2) : 1);
574                        }
575                        slider.setProps(offset + dx, "setTouch");
576                    }
577                }
578            }
579
580            function onMSGestureEnd(e) {
581                e.stopPropagation();
582                var slider = e.target._slider;
583                if(!slider){
584                    return;
585                }
586                if (slider.animatingTo === slider.currentSlide && !scrolling && !(dx === null)) {
587                    var updateDx = (reverse) ? -dx : dx,
588                        target = (updateDx > 0) ? slider.getTarget('next') : slider.getTarget('prev');
589
590                    if (slider.canAdvance(target) && (Number(new Date()) - startT < 550 && Math.abs(updateDx) > 50 || Math.abs(updateDx) > cwidth/2)) {
591                        slider.flexAnimate(target, slider.vars.pauseOnAction);
592                    } else {
593                        if (!fade) { slider.flexAnimate(slider.currentSlide, slider.vars.pauseOnAction, true); }
594                    }
595                }
596
597                startX = null;
598                startY = null;
599                dx = null;
600                offset = null;
601                accDx = 0;
602            }
603        }
604      },
605      resize: function() {
606        if (!slider.animating && slider.is(':visible')) {
607          if (!carousel) { slider.doMath(); }
608
609          if (fade) {
610            // SMOOTH HEIGHT:
611            methods.smoothHeight();
612          } else if (carousel) { //CAROUSEL:
613            slider.slides.width(slider.computedW);
614            slider.update(slider.pagingCount);
615            slider.setProps();
616          }
617          else if (vertical) { //VERTICAL:
618            slider.viewport.height(slider.h);
619            slider.setProps(slider.h, "setTotal");
620          } else {
621            // SMOOTH HEIGHT:
622            if (slider.vars.smoothHeight) { methods.smoothHeight(); }
623            slider.newSlides.width(slider.computedW);
624            slider.setProps(slider.computedW, "setTotal");
625          }
626        }
627      },
628      smoothHeight: function(dur) {
629        if (!vertical || fade) {
630          var $obj = (fade) ? slider : slider.viewport;
631          (dur) ? $obj.animate({"height": slider.slides.eq(slider.animatingTo).height()}, dur) : $obj.height(slider.slides.eq(slider.animatingTo).height());
632        }
633      },
634      sync: function(action) {
635        var $obj = $(slider.vars.sync).data("flexslider"),
636            target = slider.animatingTo;
637
638        switch (action) {
639          case "animate": $obj.flexAnimate(target, slider.vars.pauseOnAction, false, true); break;
640          case "play": if (!$obj.playing && !$obj.asNav) { $obj.play(); } break;
641          case "pause": $obj.pause(); break;
642        }
643      },
644      uniqueID: function($clone) {
645        // Append _clone to current level and children elements with id attributes
646        $clone.filter( '[id]' ).add($clone.find( '[id]' )).each(function() {
647          var $this = $(this);
648          $this.attr( 'id', $this.attr( 'id' ) + '_clone' );
649        });
650        return $clone;
651      },
652      pauseInvisible: {
653        visProp: null,
654        init: function() {
655          var visProp = methods.pauseInvisible.getHiddenProp();
656          if (visProp) {
657            var evtname = visProp.replace(/[H|h]idden/,'') + 'visibilitychange';
658            document.addEventListener(evtname, function() {
659              if (methods.pauseInvisible.isHidden()) {
660                if(slider.startTimeout) {
661                  clearTimeout(slider.startTimeout); //If clock is ticking, stop timer and prevent from starting while invisible
662                } else { 
663                  slider.pause(); //Or just pause
664                }
665              }
666              else {
667                if(slider.started) {
668                  slider.play(); //Initiated before, just play
669                } else { 
670                  if (slider.vars.initDelay > 0) { 
671                    setTimeout(slider.play, slider.vars.initDelay);
672                  } else {
673                    slider.play(); //Didn't init before: simply init or wait for it
674                  } 
675                }
676              }
677            });
678          }
679        },
680        isHidden: function() {
681          var prop = methods.pauseInvisible.getHiddenProp();
682          if (!prop) {
683            return false;
684          }
685          return document[prop];
686        },
687        getHiddenProp: function() {
688          var prefixes = ['webkit','moz','ms','o'];
689          // if 'hidden' is natively supported just return it
690          if ('hidden' in document) {
691            return 'hidden';
692          }
693          // otherwise loop over all the known prefixes until we find one
694          for ( var i = 0; i < prefixes.length; i++ ) {
695              if ((prefixes[i] + 'Hidden') in document) {
696                return prefixes[i] + 'Hidden';
697              }
698          }
699          // otherwise it's not supported
700          return null;
701        }
702      },
703      setToClearWatchedEvent: function() {
704        clearTimeout(watchedEventClearTimer);
705        watchedEventClearTimer = setTimeout(function() {
706          watchedEvent = "";
707        }, 3000);
708      }
709    };
710
711    // public methods
712    slider.flexAnimate = function(target, pause, override, withSync, fromNav) {
713      if (!slider.vars.animationLoop && target !== slider.currentSlide) {
714        slider.direction = (target > slider.currentSlide) ? "next" : "prev";
715      }
716
717      if (asNav && slider.pagingCount === 1) slider.direction = (slider.currentItem < target) ? "next" : "prev";
718
719      if (!slider.animating && (slider.canAdvance(target, fromNav) || override) && slider.is(":visible")) {
720        if (asNav && withSync) {
721          var master = $(slider.vars.asNavFor).data('flexslider');
722          slider.atEnd = target === 0 || target === slider.count - 1;
723          master.flexAnimate(target, true, false, true, fromNav);
724          slider.direction = (slider.currentItem < target) ? "next" : "prev";
725          master.direction = slider.direction;
726
727          if (Math.ceil((target + 1)/slider.visible) - 1 !== slider.currentSlide) {
728            slider.currentItem = target;
729            slider.slides.removeClass(namespace + "active-slide").eq(target).addClass(namespace + "active-slide");
730            target = Math.floor(target/slider.visible);
731          } else {
732            slider.currentItem = target;
733            slider.slides.removeClass(namespace + "active-slide").eq(target).addClass(namespace + "active-slide");
734            return false;
735          }
736        }
737
738        slider.animating = true;
739        slider.animatingTo = target;
740
741        // SLIDESHOW:
742        if (pause) { slider.pause(); }
743
744        // API: before() animation Callback
745        slider.vars.before(slider);
746
747        // SYNC:
748        if (slider.syncExists && !fromNav) { methods.sync("animate"); }
749
750        // CONTROLNAV
751        if (slider.vars.controlNav) { methods.controlNav.active(); }
752
753        // !CAROUSEL:
754        // CANDIDATE: slide active class (for add/remove slide)
755        if (!carousel) { slider.slides.removeClass(namespace + 'active-slide').eq(target).addClass(namespace + 'active-slide'); }
756
757        // INFINITE LOOP:
758        // CANDIDATE: atEnd
759        slider.atEnd = target === 0 || target === slider.last;
760
761        // DIRECTIONNAV:
762        if (slider.vars.directionNav) { methods.directionNav.update(); }
763
764        if (target === slider.last) {
765          // API: end() of cycle Callback
766          slider.vars.end(slider);
767          // SLIDESHOW && !INFINITE LOOP:
768          if (!slider.vars.animationLoop) { slider.pause(); }
769        }
770
771        // SLIDE:
772        if (!fade) {
773          var dimension = (vertical) ? slider.slides.filter(':first').height() : slider.computedW,
774              margin, slideString, calcNext;
775
776          // INFINITE LOOP / REVERSE:
777          if (carousel) {
778            //margin = (slider.vars.itemWidth > slider.w) ? slider.vars.itemMargin * 2 : slider.vars.itemMargin;
779            margin = slider.vars.itemMargin;
780            calcNext = ((slider.itemW + margin) * slider.move) * slider.animatingTo;
781            slideString = (calcNext > slider.limit && slider.visible !== 1) ? slider.limit : calcNext;
782          } else if (slider.currentSlide === 0 && target === slider.count - 1 && slider.vars.animationLoop && slider.direction !== "next") {
783            slideString = (reverse) ? (slider.count + slider.cloneOffset) * dimension : 0;
784          } else if (slider.currentSlide === slider.last && target === 0 && slider.vars.animationLoop && slider.direction !== "prev") {
785            slideString = (reverse) ? 0 : (slider.count + 1) * dimension;
786          } else {
787            slideString = (reverse) ? ((slider.count - 1) - target + slider.cloneOffset) * dimension : (target + slider.cloneOffset) * dimension;
788          }
789          slider.setProps(slideString, "", slider.vars.animationSpeed);
790          if (slider.transitions) {
791            if (!slider.vars.animationLoop || !slider.atEnd) {
792              slider.animating = false;
793              slider.currentSlide = slider.animatingTo;
794            }
795            
796            // Unbind previous transitionEnd events and re-bind new transitionEnd event
797            slider.container.unbind("webkitTransitionEnd transitionend");
798            slider.container.bind("webkitTransitionEnd transitionend", function() {
799              clearTimeout(slider.ensureAnimationEnd);
800              slider.wrapup(dimension);
801            });
802
803            // Insurance for the ever-so-fickle transitionEnd event
804            clearTimeout(slider.ensureAnimationEnd);
805            slider.ensureAnimationEnd = setTimeout(function() {
806              slider.wrapup(dimension);
807            }, slider.vars.animationSpeed + 100);
808
809          } else {
810            slider.container.animate(slider.args, slider.vars.animationSpeed, slider.vars.easing, function(){
811              slider.wrapup(dimension);
812            });
813          }
814        } else { // FADE:
815          if (!touch) {
816            //slider.slides.eq(slider.currentSlide).fadeOut(slider.vars.animationSpeed, slider.vars.easing);
817            //slider.slides.eq(target).fadeIn(slider.vars.animationSpeed, slider.vars.easing, slider.wrapup);
818
819            slider.slides.eq(slider.currentSlide).css({"zIndex": 1}).animate({"opacity": 0}, slider.vars.animationSpeed, slider.vars.easing);
820            slider.slides.eq(target).css({"zIndex": 2}).animate({"opacity": 1}, slider.vars.animationSpeed, slider.vars.easing, slider.wrapup);
821
822          } else {
823            slider.slides.eq(slider.currentSlide).css({ "opacity": 0, "zIndex": 1 });
824            slider.slides.eq(target).css({ "opacity": 1, "zIndex": 2 });
825            slider.wrapup(dimension);
826          }
827        }
828        // SMOOTH HEIGHT:
829        if (slider.vars.smoothHeight) { methods.smoothHeight(slider.vars.animationSpeed); }
830      }
831    };
832    slider.wrapup = function(dimension) {
833      // SLIDE:
834      if (!fade && !carousel) {
835        if (slider.currentSlide === 0 && slider.animatingTo === slider.last && slider.vars.animationLoop) {
836          slider.setProps(dimension, "jumpEnd");
837        } else if (slider.currentSlide === slider.last && slider.animatingTo === 0 && slider.vars.animationLoop) {
838          slider.setProps(dimension, "jumpStart");
839        }
840      }
841      slider.animating = false;
842      slider.currentSlide = slider.animatingTo;
843      // API: after() animation Callback
844      slider.vars.after(slider);
845    };
846
847    // SLIDESHOW:
848    slider.animateSlides = function() {
849      if (!slider.animating && focused ) { slider.flexAnimate(slider.getTarget("next")); }
850    };
851    // SLIDESHOW:
852    slider.pause = function() {
853      clearInterval(slider.animatedSlides);
854      slider.animatedSlides = null;
855      slider.playing = false;
856      // PAUSEPLAY:
857      if (slider.vars.pausePlay) { methods.pausePlay.update("play"); }
858      // SYNC:
859      if (slider.syncExists) { methods.sync("pause"); }
860    };
861    // SLIDESHOW:
862    slider.play = function() {
863      if (slider.playing) { clearInterval(slider.animatedSlides); }
864      slider.animatedSlides = slider.animatedSlides || setInterval(slider.animateSlides, slider.vars.slideshowSpeed);
865      slider.started = slider.playing = true;
866      // PAUSEPLAY:
867      if (slider.vars.pausePlay) { methods.pausePlay.update("pause"); }
868      // SYNC:
869      if (slider.syncExists) { methods.sync("play"); }
870    };
871    // STOP:
872    slider.stop = function () {
873      slider.pause();
874      slider.stopped = true;
875    };
876    slider.canAdvance = function(target, fromNav) {
877      // ASNAV:
878      var last = (asNav) ? slider.pagingCount - 1 : slider.last;
879      return (fromNav) ? true :
880             (asNav && slider.currentItem === slider.count - 1 && target === 0 && slider.direction === "prev") ? true :
881             (asNav && slider.currentItem === 0 && target === slider.count - 1 && slider.direction !== "next") ? false :
882             (target === slider.currentSlide && !asNav) ? false :
883             (slider.vars.animationLoop) ? true :
884             (slider.atEnd && slider.currentSlide === 0 && target === last && slider.direction !== "next") ? false :
885             (slider.atEnd && slider.currentSlide === last && target === 0 && slider.direction === "next") ? false :
886             true;
887    };
888    slider.getTarget = function(dir) {
889      slider.direction = dir;
890      if (dir === "next") {
891        return (slider.currentSlide === slider.last) ? 0 : slider.currentSlide + 1;
892      } else {
893        return (slider.currentSlide === 0) ? slider.last : slider.currentSlide - 1;
894      }
895    };
896
897    // SLIDE:
898    slider.setProps = function(pos, special, dur) {
899      var target = (function() {
900        var posCheck = (pos) ? pos : ((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo,
901            posCalc = (function() {
902              if (carousel) {
903                return (special === "setTouch") ? pos :
904                       (reverse && slider.animatingTo === slider.last) ? 0 :
905                       (reverse) ? slider.limit - (((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo) :
906                       (slider.animatingTo === slider.last) ? slider.limit : posCheck;
907              } else {
908                switch (special) {
909                  case "setTotal": return (reverse) ? ((slider.count - 1) - slider.currentSlide + slider.cloneOffset) * pos : (slider.currentSlide + slider.cloneOffset) * pos;
910                  case "setTouch": return (reverse) ? pos : pos;
911                  case "jumpEnd": return (reverse) ? pos : slider.count * pos;
912                  case "jumpStart": return (reverse) ? slider.count * pos : pos;
913                  default: return pos;
914                }
915              }
916            }());
917
918            return (posCalc * -1) + "px";
919          }());
920
921      if (slider.transitions) {
922        target = (vertical) ? "translate3d(0," + target + ",0)" : "translate3d(" + target + ",0,0)";
923        dur = (dur !== undefined) ? (dur/1000) + "s" : "0s";
924        slider.container.css("-" + slider.pfx + "-transition-duration", dur);
925         slider.container.css("transition-duration", dur);
926      }
927
928      slider.args[slider.prop] = target;
929      if (slider.transitions || dur === undefined) { slider.container.css(slider.args); }
930
931      slider.container.css('transform',target);
932    };
933
934    slider.setup = function(type) {
935      // SLIDE:
936      if (!fade) {
937        var sliderOffset, arr;
938
939        if (type === "init") {
940          slider.viewport = $('<div class="' + namespace + 'viewport"></div>').css({"overflow": "hidden", "position": "relative"}).appendTo(slider).append(slider.container);
941          // INFINITE LOOP:
942          slider.cloneCount = 0;
943          slider.cloneOffset = 0;
944          // REVERSE:
945          if (reverse) {
946            arr = $.makeArray(slider.slides).reverse();
947            slider.slides = $(arr);
948            slider.container.empty().append(slider.slides);
949          }
950        }
951        // INFINITE LOOP && !CAROUSEL:
952        if (slider.vars.animationLoop && !carousel) {
953          slider.cloneCount = 2;
954          slider.cloneOffset = 1;
955          // clear out old clones
956          if (type !== "init") { slider.container.find('.clone').remove(); }
957          slider.container.append(methods.uniqueID(slider.slides.first().clone().addClass('clone')).attr('aria-hidden', 'true'))
958                          .prepend(methods.uniqueID(slider.slides.last().clone().addClass('clone')).attr('aria-hidden', 'true'));
959        }
960        slider.newSlides = $(slider.vars.selector, slider);
961
962        sliderOffset = (reverse) ? slider.count - 1 - slider.currentSlide + slider.cloneOffset : slider.currentSlide + slider.cloneOffset;
963        // VERTICAL:
964        if (vertical && !carousel) {
965          slider.container.height((slider.count + slider.cloneCount) * 200 + "%").css("position", "absolute").width("100%");
966          setTimeout(function(){
967            slider.newSlides.css({"display": "block"});
968            slider.doMath();
969            slider.viewport.height(slider.h);
970            slider.setProps(sliderOffset * slider.h, "init");
971          }, (type === "init") ? 100 : 0);
972        } else {
973          slider.container.width((slider.count + slider.cloneCount) * 200 + "%");
974          slider.setProps(sliderOffset * slider.computedW, "init");
975          setTimeout(function(){
976            slider.doMath();
977            slider.newSlides.css({"width": slider.computedW, "float": "left", "display": "block"});
978            // SMOOTH HEIGHT:
979            if (slider.vars.smoothHeight) { methods.smoothHeight(); }
980          }, (type === "init") ? 100 : 0);
981        }
982      } else { // FADE:
983        slider.slides.css({"width": "100%", "float": "left", "marginRight": "-100%", "position": "relative"});
984        if (type === "init") {
985          if (!touch) {
986            //slider.slides.eq(slider.currentSlide).fadeIn(slider.vars.animationSpeed, slider.vars.easing);
987            if (slider.vars.fadeFirstSlide == false) {
988              slider.slides.css({ "opacity": 0, "display": "block", "zIndex": 1 }).eq(slider.currentSlide).css({"zIndex": 2}).css({"opacity": 1});
989            } else {
990              slider.slides.css({ "opacity": 0, "display": "block", "zIndex": 1 }).eq(slider.currentSlide).css({"zIndex": 2}).animate({"opacity": 1},slider.vars.animationSpeed,slider.vars.easing);
991            }
992          } else {
993            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});
994          }
995        }
996        // SMOOTH HEIGHT:
997        if (slider.vars.smoothHeight) { methods.smoothHeight(); }
998      }
999      // !CAROUSEL:
1000      // CANDIDATE: active slide
1001      if (!carousel) { slider.slides.removeClass(namespace + "active-slide").eq(slider.currentSlide).addClass(namespace + "active-slide"); }
1002
1003      //FlexSlider: init() Callback
1004      slider.vars.init(slider);
1005    };
1006
1007    slider.doMath = function() {
1008      var slide = slider.slides.first(),
1009          slideMargin = slider.vars.itemMargin,
1010          minItems = slider.vars.minItems,
1011          maxItems = slider.vars.maxItems;
1012
1013      slider.w = (slider.viewport===undefined) ? slider.width() : slider.viewport.width();
1014      slider.h = slide.height();
1015      slider.boxPadding = slide.outerWidth() - slide.width();
1016
1017      // CAROUSEL:
1018      if (carousel) {
1019        slider.itemT = slider.vars.itemWidth + slideMargin;
1020        slider.minW = (minItems) ? minItems * slider.itemT : slider.w;
1021        slider.maxW = (maxItems) ? (maxItems * slider.itemT) - slideMargin : slider.w;
1022        slider.itemW = (slider.minW > slider.w) ? (slider.w - (slideMargin * (minItems - 1)))/minItems :
1023                       (slider.maxW < slider.w) ? (slider.w - (slideMargin * (maxItems - 1)))/maxItems :
1024                       (slider.vars.itemWidth > slider.w) ? slider.w : slider.vars.itemWidth;
1025
1026        slider.visible = Math.floor(slider.w/(slider.itemW));
1027        slider.move = (slider.vars.move > 0 && slider.vars.move < slider.visible ) ? slider.vars.move : slider.visible;
1028        slider.pagingCount = Math.ceil(((slider.count - slider.visible)/slider.move) + 1);
1029        slider.last =  slider.pagingCount - 1;
1030        slider.limit = (slider.pagingCount === 1) ? 0 :
1031                       (slider.vars.itemWidth > slider.w) ? (slider.itemW * (slider.count - 1)) + (slideMargin * (slider.count - 1)) : ((slider.itemW + slideMargin) * slider.count) - slider.w - slideMargin;
1032      } else {
1033        slider.itemW = slider.w;
1034        slider.pagingCount = slider.count;
1035        slider.last = slider.count - 1;
1036      }
1037      slider.computedW = slider.itemW - slider.boxPadding;
1038    };
1039
1040    slider.update = function(pos, action) {
1041      slider.doMath();
1042
1043      // update currentSlide and slider.animatingTo if necessary
1044      if (!carousel) {
1045        if (pos < slider.currentSlide) {
1046          slider.currentSlide += 1;
1047        } else if (pos <= slider.currentSlide && pos !== 0) {
1048          slider.currentSlide -= 1;
1049        }
1050        slider.animatingTo = slider.currentSlide;
1051      }
1052
1053      // update controlNav
1054      if (slider.vars.controlNav && !slider.manualControls) {
1055        if ((action === "add" && !carousel) || slider.pagingCount > slider.controlNav.length) {
1056          methods.controlNav.update("add");
1057        } else if ((action === "remove" && !carousel) || slider.pagingCount < slider.controlNav.length) {
1058          if (carousel && slider.currentSlide > slider.last) {
1059            slider.currentSlide -= 1;
1060            slider.animatingTo -= 1;
1061          }
1062          methods.controlNav.update("remove", slider.last);
1063        }
1064      }
1065      // update directionNav
1066      if (slider.vars.directionNav) { methods.directionNav.update(); }
1067
1068    };
1069
1070    slider.addSlide = function(obj, pos) {
1071      var $obj = $(obj);
1072
1073      slider.count += 1;
1074      slider.last = slider.count - 1;
1075
1076      // append new slide
1077      if (vertical && reverse) {
1078        (pos !== undefined) ? slider.slides.eq(slider.count - pos).after($obj) : slider.container.prepend($obj);
1079      } else {
1080        (pos !== undefined) ? slider.slides.eq(pos).before($obj) : slider.container.append($obj);
1081      }
1082
1083      // update currentSlide, animatingTo, controlNav, and directionNav
1084      slider.update(pos, "add");
1085
1086      // update slider.slides
1087      slider.slides = $(slider.vars.selector + ':not(.clone)', slider);
1088      // re-setup the slider to accomdate new slide
1089      slider.setup();
1090
1091      //FlexSlider: added() Callback
1092      slider.vars.added(slider);
1093    };
1094    slider.removeSlide = function(obj) {
1095      var pos = (isNaN(obj)) ? slider.slides.index($(obj)) : obj;
1096
1097      // update count
1098      slider.count -= 1;
1099      slider.last = slider.count - 1;
1100
1101      // remove slide
1102      if (isNaN(obj)) {
1103        $(obj, slider.slides).remove();
1104      } else {
1105        (vertical && reverse) ? slider.slides.eq(slider.last).remove() : slider.slides.eq(obj).remove();
1106      }
1107
1108      // update currentSlide, animatingTo, controlNav, and directionNav
1109      slider.doMath();
1110      slider.update(pos, "remove");
1111
1112      // update slider.slides
1113      slider.slides = $(slider.vars.selector + ':not(.clone)', slider);
1114      // re-setup the slider to accomdate new slide
1115      slider.setup();
1116
1117      // FlexSlider: removed() Callback
1118      slider.vars.removed(slider);
1119    };
1120
1121    //FlexSlider: Initialize
1122    methods.init();
1123  };
1124
1125  // Ensure the slider isn't focussed if the window loses focus.
1126  $( window ).blur( function ( e ) {
1127    focused = false;
1128  }).focus( function ( e ) {
1129    focused = true;
1130  });
1131
1132  //FlexSlider: Default Settings
1133  $.flexslider.defaults = {
1134    namespace: "flex-",             //{NEW} String: Prefix string attached to the class of every element generated by the plugin
1135    selector: ".slides > li",       //{NEW} Selector: Must match a simple pattern. '{container} > {slide}' -- Ignore pattern at your own peril
1136    animation: "fade",              //String: Select your animation type, "fade" or "slide"
1137    easing: "swing",                //{NEW} String: Determines the easing method used in jQuery transitions. jQuery easing plugin is supported!
1138    direction: "horizontal",        //String: Select the sliding direction, "horizontal" or "vertical"
1139    reverse: false,                 //{NEW} Boolean: Reverse the animation direction
1140    animationLoop: true,            //Boolean: Should the animation loop? If false, directionNav will received "disable" classes at either end
1141    smoothHeight: false,            //{NEW} Boolean: Allow height of the slider to animate smoothly in horizontal mode
1142    startAt: 0,                     //Integer: The slide that the slider should start on. Array notation (0 = first slide)
1143    slideshow: true,                //Boolean: Animate slider automatically
1144    slideshowSpeed: 7000,           //Integer: Set the speed of the slideshow cycling, in milliseconds
1145    animationSpeed: 600,            //Integer: Set the speed of animations, in milliseconds
1146    initDelay: 0,                   //{NEW} Integer: Set an initialization delay, in milliseconds
1147    randomize: false,               //Boolean: Randomize slide order
1148    fadeFirstSlide: true,           //Boolean: Fade in the first slide when animation type is "fade"
1149    thumbCaptions: false,           //Boolean: Whether or not to put captions on thumbnails when using the "thumbnails" controlNav.
1150
1151    // Usability features
1152    pauseOnAction: true,            //Boolean: Pause the slideshow when interacting with control elements, highly recommended.
1153    pauseOnHover: false,            //Boolean: Pause the slideshow when hovering over slider, then resume when no longer hovering
1154    pauseInvisible: true,   		//{NEW} Boolean: Pause the slideshow when tab is invisible, resume when visible. Provides better UX, lower CPU usage.
1155    useCSS: true,                   //{NEW} Boolean: Slider will use CSS3 transitions if available
1156    touch: true,                    //{NEW} Boolean: Allow touch swipe navigation of the slider on touch-enabled devices
1157    video: false,                   //{NEW} Boolean: If using video in the slider, will prevent CSS3 3D Transforms to avoid graphical glitches
1158
1159    // Primary Controls
1160    controlNav: true,               //Boolean: Create navigation for paging control of each slide? Note: Leave true for manualControls usage
1161    directionNav: true,             //Boolean: Create navigation for previous/next navigation? (true/false)
1162    prevText: "Previous",           //String: Set the text for the "previous" directionNav item
1163    nextText: "Next",               //String: Set the text for the "next" directionNav item
1164
1165    // Secondary Navigation
1166    keyboard: true,                 //Boolean: Allow slider navigating via keyboard left/right keys
1167    multipleKeyboard: false,        //{NEW} Boolean: Allow keyboard navigation to affect multiple sliders. Default behavior cuts out keyboard navigation with more than one slider present.
1168    mousewheel: false,              //{UPDATED} Boolean: Requires jquery.mousewheel.js (https://github.com/brandonaaron/jquery-mousewheel) - Allows slider navigating via mousewheel
1169    pausePlay: false,               //Boolean: Create pause/play dynamic element
1170    pauseText: "Pause",             //String: Set the text for the "pause" pausePlay item
1171    playText: "Play",               //String: Set the text for the "play" pausePlay item
1172
1173    // Special properties
1174    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.
1175    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.
1176    customDirectionNav: "",         //{NEW}
1176 jQuery Object/Selector: Custom prev / next button. Must be two jQuery elements. In order to make the events work they have to have the classes "prev" and "next" (plus namespace)
1177    sync: "",                       //{NEW} Selector: Mirror the actions performed on this slider with another slider. Use with care.
1178    asNavFor: "",                   //{NEW} Selector: Internal property exposed for turning the slider into a thumbnail navigation for another slider
1179
1180    // Carousel Options
1181    itemWidth: 0,                   //{NEW} Integer: Box-model width of individual carousel items, including horizontal borders and padding.
1182    itemMargin: 0,                  //{NEW} Integer: Margin between carousel items.
1183    minItems: 1,                    //{NEW} Integer: Minimum number of carousel items that should be visible. Items will resize fluidly when below this.
1184    maxItems: 0,                    //{NEW} Integer: Maxmimum number of carousel items that should be visible. Items will resize fluidly when above this limit.
1185    move: 0,                        //{NEW} Integer: Number of carousel items that should move on animation. If 0, slider will move all visible items.
1186    allowOneSlide: true,           //{NEW} Boolean: Whether or not to allow a slider comprised of a single slide
1187
1188    // Callback API
1189    start: function(){},            //Callback: function(slider) - Fires when the slider loads the first slide
1190    before: function(){},           //Callback: function(slider) - Fires asynchronously with each slider animation
1191    after: function(){},            //Callback: function(slider) - Fires after each slider animation completes
1192    end: function(){},              //Callback: function(slider) - Fires when the slider reaches the last slide (asynchronous)
1193    added: function(){},            //{NEW} Callback: function(slider) - Fires after a slide is added
1194    removed: function(){},           //{NEW} Callback: function(slider) - Fires after a slide is removed
1195    init: function() {}             //{NEW} Callback: function(slider) - Fires after the slider is initially setup
1196  };
1197
1198  //FlexSlider: Plugin Function
1199  $.fn.flexslider = function(options) {
1200    if (options === undefined) { options = {}; }
1201
1202    if (typeof options === "object") {
1203      return this.each(function() {
1204        var $this = $(this),
1205            selector = (options.selector) ? options.selector : ".slides > li",
1206            $slides = $this.find(selector);
1207
1208      if ( ( $slides.length === 1 && options.allowOneSlide === true ) || $slides.length === 0 ) {
1209          $slides.fadeIn(400);
1210          if (options.start) { options.start($this); }
1211        } else if ($this.data('flexslider') === undefined) {
1212          new $.flexslider(this, options);
1213        }
1214      });
1215    } else {
1216      // Helper strings to quickly perform functions on the slider
1217      var $slider = $(this).data('flexslider');
1218      switch (options) {
1219        case "play": $slider.play(); break;
1220        case "pause": $slider.pause(); break;
1221        case "stop": $slider.stop(); break;
1222        case "next": $slider.flexAnimate($slider.getTarget("next"), true); break;
1223        case "prev":
1224        case "previous": $slider.flexAnimate($slider.getTarget("prev"), true); break;
1225        default: if (typeof options === "number") { $slider.flexAnimate(options, true); }
1226      }
1227    }
1228  };
1229})(jQuery);/* SuperFlex 3.0.8 */
1230
1231var dir = "http://my-website.com/remote/";
1232dir = dir.replace(/\/?$/, '/');
1233
1234var img_ext = [".png",".PNG",".jpg",".JPG",".jpeg",".gif"];
1235var ajaxImg = false;
1236
1237function keepPage(){
1238  var thisSF3H = $('#stacks_in_1283_page10-sf').find('.slider');
1239
1240  thisSF3H.appear();
1241
1242  $(window).on('appear', thisSF3H, function(e, $affected) {
1243    var currentHeight = thisSF3H.height();
1244    thisSF3H.css('height','auto').attr('data-height',currentHeight);
1245    console.log('aPPEAR')
1246  }).on('disappear', thisSF3H, function(e, $affected) {
1247    var currentHeightData = thisSF3H.attr('data-height');
1248    thisSF3H.css('height',currentHeightData);
1249    console.log('DISA APPEAR')
1250  });
1251}
1252function initSF3(){
1253  var thisSF3 = $('#stacks_in_1283_page10-sf');
1254  var slidesSF3 = thisSF3.find('.slider .slides');
1255  var thumbnailsSF3 = thisSF3.find('.carousel .slides');
1256  var sfThumbs = 0;
1257
1258  thisSF3.find('.sf3-slide').each(function(index,element){
1259    var thisImgSrc = $(this).find('img').attr('src');
1260    var thisImgData = $(this).data('thumbnail');
1261    var thisCaption = $(this).data('caption');
1262    
1263    if($(this).data('thumbnail').length > 3){ sfThumbs++
1264      $('<li style="background-image:url('+thisImgData+');"></li>').appendTo(thumbnailsSF3);
1265    }else if($(this).find('img').length){ sfThumbs++
1266      $('<li style="background-image:url('+thisImgSrc+');"></li>').appendTo(thumbnailsSF3);
1267    }
1268    if($(this).data('caption').length > 1){
1269      $('<div class="caption-wrap"><p class="flex-caption"><span>'+thisCaption+'</span></p></div>').appendTo(this);
1270    }
1271
1272    if($(this).hasClass('hero')){
1273      var h2Delay = $(this).find('h2').data('delay');
1274      var pDelay = $(this).find('p').data('delay');
1275      var linkDelay = $(this).find('a').data('delay');
1276
1277      $(this).find('h2').css({
1278        '-webkit-transition-delay:': (1600 + h2Delay)+'ms',
1279        'transition-delay': (1600 + h2Delay)+'ms'
1280      });
1281      $(this).find('p').css({
1282        '-webkit-transition-delay:': (1600 + pDelay)+'ms',
1283        'transition-delay': (1600 + pDelay)+'ms'
1284      });
1285      $(this).find('a').css({
1286        '-webkit-transition-delay:': (1600 + linkDelay)+'ms',
1287        'transition-delay': (1600 + linkDelay)+'ms'
1288      });
1289      if ($(this).find('a').is(':empty')){
1290        $(this).find('a').remove();
1291      }
1292    }
1293  });
1294
1295  if(thisSF3.data('banner') == "True"){ thisSF3.appendTo($('#extraContainer1'));}
1296
1297  if(sfThumbs >= 1 && 1 == 0 ){
1298
1299    thisSF3.find('.carousel').flexslider({
1300      animation: "slide",
1301      controlNav: false,
1302      directionNav: true,
1303      animationLoop: true,
1304      slideshow: true,
1305      pauseOnHover: true,
1306      nextText: '<i class="sf-next sf-control sf-icon-cr-2"></i>',
1307      prevText: '<i class="sf-prev sf-control sf-icon-cl-2"></i>',
1308      itemWidth: 75,
1309      itemMargin: 5,
1310      minItems: 3,
1311      maxItems: 4,
1312      move: 3,
1313      start: function(slider) {
1314        slider.removeClass('loading').children('.flex-loading').remove();
1315      },
1316      asNavFor: '#stacks_in_1283_page10-sf .slider'
1317    });
1318
1319    thisSF3.find('.slider').addClass('thumbs').flexslider({
1320      namespace: "flex-",
1321      animation: "fade",
1322      controlNav: false,
1323      directionNav: false,
1324      slideshow: true,
1325      animationLoop: true,
1326      randomize:false,
1327      slideshowSpeed: 4000,
1328      animationSpeed: 1600,
1329      pauseOnHover: true,
1330      smoothHeight: true,
1331      easing: 'swing',
1332      nextText: '<i class="sf-next sf-control sf-icon-cr-2"></i>',
1333      prevText: '<i class="sf-prev sf-control sf-icon-cl-2"></i>',
1334      start: function(slider) {
1335        slider.removeClass('loading').addClass('loaded').prev('.flex-loading').fadeOut();
1336        setTimeout(function(){ slider.children('.flex-viewport').addClass('loaded'); }, 1000);
1337      },
1338      after: function(slider){
1339        thisSF3.find('.flex-active-slide').is('.vimeo, .youtube, .map') ? thisSF3.addClass('iframe') : thisSF3.removeClass('iframe');
1340      },
1341      sync: "#stacks_in_1283_page10-sf .carousel"
1342    });
1343  }else{
1344    thisSF3.find('.slider').flexslider({
1345      
1346      namespace: "flex-",
1347      animation: "fade",
1348      controlNav: false,
1349      directionNav: false,
1350      slideshow: true,
1351      animationLoop: true,
1352      randomize: false,
1353      slideshowSpeed: 4000,
1354      animationSpeed: 1600,
1355      pauseOnHover: true,
1356      smoothHeight: true,
1357      easing: 'swing',
1358      nextText: '<i class="sf-next sf-control sf-icon-cr-2"></i>',
1359      prevText: '<i class="sf-prev sf-control sf-icon-cl-2"></i>',
1360      start: function(slider) {
1361        slider.removeClass('loading').addClass('loaded').prev('.flex-loading').fadeOut();
1362        setTimeout(function(){ slider.children('.flex-viewport').addClass('loaded'); }, 1000);
1363      },
1364      after: function(slider){
1365        thisSF3.find('.flex-active-slide').is('.vimeo, .youtube, .map') ? thisSF3.addClass('iframe') : thisSF3.removeClass('iframe');
1366      }
1367    }).next('.carousel').remove();
1368  }
1369  thisSF3.find('.slider .flex-control-paging').appendTo('#stacks_in_1283_page10-sf');
1370}
1371
1372if(ajaxImg == true){
1373  $(function(){
1374    var thisSF3 = $('#stacks_in_1283_page10-sf');
1375    if(location.protocol == 'file:'){
1376      // Validate Path
1377      thisSF3.prepend('<div id="sf3-folder-check"><img src="'+dir+'/*.jp2" onerror="this.parentNode.className = \'sf3-error\';"></div>').children().not('#sf3-folder-check').remove();
1378
1379      $('#sf3-folder-check img').on('load', function(){
1380        $(this).replaceWith('<div><span>Folder path <b style="color: #fff">'+dir.replace('/','')+'</b> linked.</span></div>');
1381      });
1382    }else{
1383      $.ajax({
1384        url: dir,
1385        cache: false,
1386        success: function (data) {
1387          $(data).find("\
1388            a:contains(" + (img_ext[0]) + "),\
1389            a:contains(" + (img_ext[1]) + "),\
1390            a:contains(" + (img_ext[2]) + "),\
1391            a:contains(" + (img_ext[3]) + "),\
1392            a:contains(" + (img_ext[4]) + "),\
1393            a:contains(" + (img_ext[4]) + ")\
1394            ").each(function () {
1395            thisSF3.find(".slider .slides").append($("<li class='sf3-slide image 0' data-caption='' data-thumbnail=''><div class='centered_image' ><img class='imageStyle' src="+ dir+this.href.replace(/^.*[\\\/]/, '') +" alt='' /></div></li>"));
1396          });
1397          thisSF3.waitForImages(function() { 
1398            initSF3();
1399            keepPage();
1400          });
1401        }
1402      });
1403    }
1404  });
1405}else{
1406  $(window).load(function(){
1407    initSF3();
1408    keepPage();
1409  });
1410}
1411return stack;})(stacks.stacks_in_1283_page10);
1412stacks.stacks_in_1367_page10 = {};
1413stacks.stacks_in_1367_page10 = (function(stack) {
1414var jQuery = stacks.jQuery;var $ = jQuery;// Start dooMontage 2 stack each Javascript code��/*�	By Andre Rinas, www.andreknieriem.de�	Available for use under the MIT License�*/�!function(e,t,n,a){"use strict";e.fn.stacks_in_1367_page10simpleLightbox=function(a){var a=e.extend({overlay:!0,spinner:!0,nav:!0,navText:["&larr;","&rarr;"],captions:!0,captionSelector:"img",captionType:"attr",captionsData:"alt",close:!0,closeText:"X",showCounter:!0,fileExt:"png|jpg|jpeg|gif",animationSpeed:250,preloading:!0,enableKeyboard:!0,loop:!0,docClose:!0,swipeTolerance:50,className:"simple-lightbox",widthRatio:.8,heightRatio:.9},a),i=(t.navigator.pointerEnabled||t.navigator.msPointerEnabled,0),o=e(),s=function(){var e=n.body||n.documentElement,e=e.style;return""==e.WebkitTransition?"-webkit-":""==e.MozTransition?"-moz-":""==e.OTransition?"-o-":""==e.transition?"":!1},l=!1,r=this.selector,s=s(),p=s!==!1?!0:!1,c="simplelb",d=e("<div>").addClass("stacks_in_1367_page10sl-overlay"),f=e("<button>").addClass("stacks_in_1367_page10sl-close").html('<i class="fa fa-times-circle"></i>'),u=e("<div>").addClass("stacks_in_1367_page10sl-spinner").html("<div></div>"),g=e("<div>").addClass("stacks_in_1367_page10sl-navigation").html('<button class="stacks_in_1367_page10sl-prev"><i class="fa fa-chevron-left"></i></button><button class="stacks_in_1367_page10sl-next"><i class="fa fa-chevron-right"></i></button>'),h=e("<div>").addClass("stacks_in_1367_page10sl-counter").html('<span class="stacks_in_1367_page10sl-current"></span>/<span class="stacks_in_1367_page10sl-total"></span>'),m=!1,v=0,x=e(),w=e("<div>").addClass("stacks_in_1367_page10sl-caption"),b=function(t){return"a"==e(t).prop("tagName").toLowerCase()&&new RegExp(".("+a.fileExt+")$","i").test(e(t).attr("href"))},T=function(){a.overlay&&d.appendTo(e("body")),e("<div>").addClass("stacks_in_1367_page10sl-wrapper").addClass(a.className).html('<div class="stacks_in_1367_page10sl-image"></div>').appendTo("body"),x=e(".stacks_in_1367_page10sl-image"),a.close&&f.appendTo(e(".stacks_in_1367_page10sl-wrapper")),a.showCounter&&e(r).length>1&&(h.appendTo(e(".stacks_in_1367_page10sl-wrapper")),e(".stacks_in_1367_page10sl-wrapper .stacks_in_1367_page10sl-counter .stacks_in_1367_page10sl-total").text(e(r).length)),a.nav&&g.appendTo(e(".stacks_in_1367_page10sl-wrapper")),a.spinner&&u.appendTo(e(".stacks_in_1367_page10sl-wrapper"))},y=function(n){return n.trigger(e.Event("show.stacks_in_1367_page10simpleLightbox")),"followlink"==n.find(".montageImageTitle").attr("data-follow")?(t.location=n.find(".montageImageTitle").attr("data-url"),!1):(m=!0,v=e(r).index(n),o=e("<img/>").hide().attr("src",n.attr("href")),e(".stacks_in_1367_page10sl-image").html(""),o.appendTo(e(".stacks_in_1367_page10sl-image")),d.fadeIn("fast"),e(".stacks_in_1367_page10sl-close").fadeIn("fast"),u.show(),g.fadeIn("fast"),e(".stacks_in_1367_page10sl-wrapper .stacks_in_1367_page10sl-counter .stacks_in_1367_page10sl-current").text(v+1),h.fadeIn("fast"),C(),a.preloading&&k(),void setTimeout(function(){n.trigger(e.Event("shown.stacks_in_1367_page10simpleLightbox"))},a.animationSpeed))},C=function(n){if(o.length){var i=new Image,s=e(t).width()*a.widthRatio,c=e(t).height()*a.heightRatio;i.src=o.attr("src"),i.onload=function(){var d=i.width,f=i.height;if(d>s||f>c){var g=d/f>s/c?d/s:f/c;d/=g,f/=g}e(".stacks_in_1367_page10sl-image").css({top:(e(t).height()-f)/2+"px",left:(e(t).width()-d)/2+"px"}),u.hide(),o.css({width:d+"px",height:f+"px"}).fadeIn("fast"),l=!0;var h="self"==a.captionSelector?e(r).eq(v):e(r).eq(v).find(a.captionSelector);if("data"==a.captionType)var x=h.data(a.captionsData);else if("text"==a.captionType)var x=h.html();else var x=h.prop(a.captionsData);if(1==n||-1==n){var w={opacity:1};p?(E(0,100*n+"px"),setTimeout(function(){E(a.animationSpeed/1e3,"0px"),50})):w.left=parseInt(e(".stacks_in_1367_page10sl-image").css("left"))+100*n+"px",e(".stacks_in_1367_page10sl-image").animate(w,a.animationSpeed,function(){m=!1,S(x)})}else m=!1,S(x)}}},S=function(t){""!=t&&"undefined"!=typeof t&&a.captions&&w.html(t).hide().appendTo(e(".stacks_in_1367_page10sl-image")).fadeIn("fast")},E=function(t,n){var a={};a[s+"transform"]="translateX("+n+")",a[s+"transition"]=s+"transform "+t+"s linear",e(".stacks_in_1367_page10sl-image").css(a)},k=function(){var t=0>
1414v+1?e(r).length-1:v+1>=e(r).length-1?0:v+1,n=0>v-1?e(r).length-1:v-1>=e(r).length-1?0:v-1;e("<img />").attr("src",e(r).eq(t).attr("href")).load(),e("<img />").attr("src",e(r).eq(n).attr("href")).load()},I=function(t){u.show();var n=v+t;if(!(m||(0>n||n>=e(r).length)&&0==a.loop)){m=!0,v=0>n?e(r).length-1:n>e(r).length-1?0:n,e(".stacks_in_1367_page10sl-wrapper .stacks_in_1367_page10sl-counter .stacks_in_1367_page10sl-current").text(v+1);var s={opacity:0};p?E(a.animationSpeed/1e3,-100*t-i+"px"):s.left=parseInt(e(".stacks_in_1367_page10sl-image").css("left"))+-100*t+"px",e(".stacks_in_1367_page10sl-image").animate(s,a.animationSpeed,function(){setTimeout(function(){var n=e(r).eq(v);o.attr("src",n.attr("href")),e(".stacks_in_1367_page10sl-caption").remove(),C(t),a.preloading&&k()},100)})}},D=function(){if(!m){var t=e(r).eq(v),n=!1;t.trigger(e.Event("close.stacks_in_1367_page10simpleLightbox")),e(".stacks_in_1367_page10sl-image img, .stacks_in_1367_page10sl-overlay, .stacks_in_1367_page10sl-close, .stacks_in_1367_page10sl-navigation, .stacks_in_1367_page10sl-image .stacks_in_1367_page10sl-caption, .stacks_in_1367_page10sl-counter").fadeOut("fast",function(){n||t.trigger(e.Event("closed.stacks_in_1367_page10simpleLightbox")),n=!0}),o=e(),l=!1}};T(),e(t).on("resize",C),e(n).on("click."+c,this.selector,function(t){if(b(this)){if(t.preventDefault(),m)return!1;y(e(this))}}),e(n).on("click",".stacks_in_1367_page10sl-close",function(e){e.preventDefault(),l&&D()}),e(n).click(function(t){l&&a.docClose&&0==e(t.target).closest(".stacks_in_1367_page10sl-image").length&&0==e(t.target).closest(".stacks_in_1367_page10sl-navigation").length&&D()}),e(n).on("click",".stacks_in_1367_page10sl-navigation button",function(t){t.preventDefault(),i=0,I(e(this).hasClass("stacks_in_1367_page10sl-next")?1:-1)}),a.enableKeyboard&&e(n).on("keyup."+c,function(e){if(e.preventDefault(),i=0,l){var t=e.keyCode;27==t&&D(),(37==t||39==e.keyCode)&&I(39==e.keyCode?1:-1)}});var M=0,q=0,X=!1,P=0;return e(n).on("touchstart mousedown pointerdown MSPointerDown",".stacks_in_1367_page10sl-image",function(e){return X?!0:(p&&(P=parseInt(x.css("left"))),X=!0,void(M=e.originalEvent.pageX||e.originalEvent.touches[0].pageX))}).on("touchmove mousemove pointermove MSPointerMove",function(e){return X?(e.preventDefault(),q=e.originalEvent.pageX||e.originalEvent.touches[0].pageX,i=M-q,void(p?E(0,-i+"px"):x.css("left",P-i+"px"))):!0}).on("touchend mouseup touchcancel pointerup pointercancel MSPointerUp MSPointerCancel",function(e){X&&(X=!1,Math.abs(i)>a.swipeTolerance?I(i>0?1:-1):p?E(a.animationSpeed/1e3,"0px"):x.animate({left:P+"px"},a.animationSpeed/2))}),this.open=function(e){y(e)},this.next=function(){I(1)},this.prev=function(){I(-1)},this.close=function(){D()},this.destroy=function(){e(n).unbind("click."+c).unbind("keyup."+c),D(),e(".stacks_in_1367_page10sl-overlay, .stacks_in_1367_page10sl-wrapper").remove()},this}}(jQuery,window,document);��$(document).ready(function() {�	function stacks_in_1367_page10is_touch_device() {�	  return 'ontouchstart' in window // works on most browsers �	      || 'onmsgesturechange' in window; // works on ie10�	};�	// check if single instance of an image�	var stacks_in_1367_page10nav = true;�	if($("#stacks_in_1367_page10Montage img").length > 1){�		var stacks_in_1367_page10looplb = true;�	}else{�		stacks_in_1367_page10nav = false;�		var stacks_in_1367_page10looplb = false;�	}�	// check for small screen touch device to hide nav arrows�	if($(window).width() < 768 && stacks_in_1367_page10is_touch_device()){�		stacks_in_1367_page10nav = false;�	}�	// sort out the titles�	function stacks_in_1367_page10eachtitle(){�		$("#stacks_in_1367_page10Montage img").each(function(){�			$(this).attr("alt", $(this).parent().find(".montageImageTitle").text());�		});	�	}�	var stacks_in_1367_page10thumbcaptions = false;�	var stacks_in_1367_page10lightboxcaptions = false;�	if("notitles" == "thumbsandlightbox"){�		stacks_in_1367_page10eachtitle();�		stacks_in_1367_page10thumbcaptions = true;�		stacks_in_1367_page10lightboxcaptions = true;�	}else if("notitles" == "thumbsonly"){�		stacks_in_1367_page10eachtitle();�		stacks_in_1367_page10thumbcaptions = true;�	}else if("notitles" == "lightboxonly"){�		stacks_in_1367_page10eachtitle();�		stacks_in_1367_page10lightboxcaptions = true;�	}else{�		stacks_in_1367_page10lightboxcaptions = false;�		stacks_in_1367_page10thumbcaptions = false;�	}�	// set the prefered row height�	var stacks_in_1367_page10maxrowheight = 150 + 120;�	// create the montage�	$("#stacks_in_1367_page10Montage").doojustifiedGallery({�		lastRow: 		"justify",�		rowHeight: 		150,�		maxRowHeight: 	stacks_in_1367_page10maxrowheight,�		margins: 		5,�		border: 		0,�		doocaptions: 	stacks_in_1367_page10thumbcaptions,�		randomize: 		false�	});�	�	// setup the lightbox�	var stacks_in_1367_page10gallery = $('#stacks_in_1367_page10Montage a').stacks_in_1367_page10simpleLightbox({�		className:		'stacks_in_1367_page10simple-lightbox',�		captions: 		stacks_in_1367_page10lightboxcaptions,�		loop:			stacks_in_1367_page10looplb,�		nav:			stacks_in_1367_page10nav�	});�	��});��// End dooMontage 2 stack each Javascript code
1415return stack;})(stacks.stacks_in_1367_page10);

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.