1 2; /* Start:"a:4:{s:4:"full";s:56:"/local/templates/aspro_max/js/observer.js?16523557146745";s:6:"source";s:41:"/local/templates/aspro_max/js/observer.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 3if( 4 typeof AMutationObserver === 'undefined' && 5 typeof MutationObserver === 'function' 6){ 7 (function(w, d){ 8 "use strict"; 9 10 /* ES6 class definition */ 11 /* 12 class AMutationObserver extends MutationObserver{ 13 constructor(callback){ 14 super(function(mutationsList, observer){ 15 if( 16 AMutationObserver.ignore || 17 observer.paused 18 ){ 19 // ignore mutations without disconnect() 20 //console.log('ignore observer callback', observer.id); 21 } 22 else{ 23 callback(mutationsList, observer); 24 } 25 }); 26 27 this.paused = true; 28 this.id = Math.floor(Math.random() * Math.floor(1000)); 29 30 // define parent script 31 try{ 32 eval('@'); 33 } 34 catch(e){ 35 // define parent script 36 if(typeof e.stack === 'string'){ 37 this.stack = e.stack.match(/[^\s]*:[\d]+:[\d]+[^\s]/g); 38 this.stack.splice(0, 1); 39 var script = this.stack[0]; 40 41 if(script.indexOf('yandex.ru/metrika') !== -1){ 42 this.id = 'ym'; 43 } 44 else{ 45 script = script.replace(/^(.*[/])?(.*\.js)(.*)$/ig, '$2'); 46 this.id = script.replace(/(\.min)?\.js$/i, ''); 47 } 48 } 49 } 50 finally{ 51 //console.log('new observer', this.id); 52 } 53 } 54 55 observe(target, options){ 56 this.target = target; 57 this.options = options; 58 this.paused = false; 59 if(typeof AMutationObserver.observers[this.id] === 'undefined'){ 60 AMutationObserver.observers[this.id] = this; 61 } 62 super.observe(target, options); 63 } 64 65 disconnect(){ 66 this.paused = true; 67 super.disconnect(); 68 } 69 70 takeRecords(){ 71 if( 72 AMutationObserver.ignore || 73 this.paused 74 ){ 75 // ignore mutations without disconnect() 76 //console.log('ignore observer takeRecords', this.id); 77 return []; 78 } 79 else{ 80 return super.takeRecords(); 81 } 82 } 83 84 pause(){ 85 this.paused = true; 86 } 87 88 resume(){ 89 if(typeof this.options !== 'false'){ 90 this.paused = false; 91 } 92 } 93 } 94 */ 95 96 /* ES5 class definition */ 97 var _AMutationObserver = /*#__PURE__*/function (_MutationObserver) { 98 "use strict"; 99 100 _inheritsLoose(_AMutationObserver, _MutationObserver); 101 102 function _AMutationObserver(callback) { 103 var _this; 104 105 _this = _MutationObserver.call(this, function (mutationsList, observer) { 106 if (_AMutationObserver.ignore || observer.paused) {// ignore mutations without disconnect() 107 //console.log('ignore observer callback', observer.id); 108 } 109 else { 110 callback(mutationsList, observer); 111 } 112 }) || this; 113 114 _this.paused = true; 115 _this.id = Math.floor(Math.random() * Math.floor(1000)); 116 117 try { 118 eval('@'); 119 } 120 catch (e) { 121 // define parent script 122 if(typeof e.stack === 'string'){ 123 _this.stack = e.stack.match(/[^\s]*:[\d]+:[\d]+[^\s]/g); 124 _this.stack.splice(0, 1); 125 var script = _this.stack[0]; 126 if (script){ 127 if (script.indexOf('yandex.ru/metrika') !== -1) { 128 _this.id = 'ym'; 129 } 130 else { 131 script = script.replace(/^(.*[/])?(.*\.js)(.*)$/ig, '$2'); 132 _this.id = script.replace(/(\.min)?\.js$/i, ''); 133 } 134 } 135 } 136 } 137 finally { 138 //console.log('new observer', _this.id); 139 } 140 141 return _this; 142 } 143 144 var _proto = _AMutationObserver.prototype; 145 146 _proto.observe = function observe(target, options) { 147 this.target = target; 148 this.options = options; 149 this.paused = false; 150 151 if (typeof _AMutationObserver.observers[this.id] === 'undefined') { 152 _AMutationObserver.observers[this.id] = this; 153 } 154 155 _MutationObserver.prototype.observe.call(this, target, options); 156 }; 157 158 _proto.disconnect = function disconnect() { 159 this.paused = true; 160 161 _MutationObserver.prototype.disconnect.call(this); 162 }; 163 164 _proto.takeRecords = function takeRecords() { 165 if (_AMutationObserver.ignore || this.paused) { 166 // ignore mutations without disconnect() 167 //console.log('ignore observer takeRecords', this.id); 168 return []; 169 } 170 else { 171 return _MutationObserver.prototype.takeRecords.call(this); 172 } 173 }; 174 175 _proto.pause = function pause() { 176 this.paused = true; 177 }; 178 179 _proto.resume = function resume() { 180 if (typeof this.options !== 'false') { 181 this.paused = false;
182 } 183 }; 184 185 return _AMutationObserver; 186 }( /*#__PURE__*/_wrapNativeSuper(MutationObserver)); 187 188 _AMutationObserver.ignore = false; 189 _AMutationObserver.observers = []; 190 _AMutationObserver.parent = MutationObserver; 191 MutationObserver = _AMutationObserver; 192 193 /* ES2015 Babel functions (loose) */ 194 function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } 195 196 function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); } 197 198 function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); } 199 200 function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } 201 202 function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } 203 204 function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } 205 206 function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } 207 })(window, document); 208} 209/* End */ 210; 211; /* Start:"a:4:{s:4:"full";s:61:"/local/templates/aspro_max/js/lazysizes.min.js?16523557027057";s:6:"source";s:46:"/local/templates/aspro_max/js/lazysizes.min.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 212/*! lazysizes - v5.1.1 */ 213!function(a,b){var c=b(a,a.document);a.lazySizes=c,"object"==typeof module&&module.exports&&(module.exports=c)}("undefined"!=typeof window?window:{},function(a,b){"use strict";var c,d;if(function(){var b,c={lazyClass:"lazyload",loadedClass:"lazyloaded",loadingClass:"lazyloading",preloadClass:"lazypreload",errorClass:"lazyerror",autosizesClass:"lazyautosizes",srcAttr:"data-src",srcsetAttr:"data-srcset",sizesAttr:"data-sizes",minSize:40,customMedia:{},init:!0,expFactor:1.5,hFac:.8,loadMode:2,loadHidden:!0,ricTimeout:0,throttleDelay:125};d=a.lazySizesConfig||a.lazysizesConfig||{};for(b in c)b in d||(d[b]=c[b])}(),!b||!b.getElementsByClassName)return{init:function(){},cfg:d,noSupport:!0};var e=b.documentElement,f=a.Date,g=a.HTMLPictureElement,h="addEventListener",i="getAttribute",j=a[h],k=a.setTimeout,l=a.requestAnimationFrame||k,m=a.requestIdleCallback,n=/^picture$/i,o=["load","error","lazyincluded","_lazyloaded"],p={},q=Array.prototype.forEach,r=function(a,b){return p[b]||(p[b]=new RegExp("(\\s|^)"+b+"(\\s|$)")),p[b].test(a[i]("class")||"")&&p[b]},s=function(a,b){r(a,b)||a.setAttribute("class",(a[i]("class")||"").trim()+" "+b)},t=function(a,b){var c;(c=r(a,b))&&a.setAttribute("class",(a[i]("class")||"").replace(c," "))},u=function(a,b,c){var d=c?h:"removeEventListener";c&&u(a,b),o.forEach(function(c){a[d](c,b)})},v=function(a,d,e,f,g){var h=b.createEvent("Event");return e||(e={}),e.instance=c,h.initEvent(d,!f,!g),h.detail=e,a.dispatchEvent(h),h},w=function(b,c){var e;
213!g&&(e=a.picturefill||d.pf)?(c&&c.src&&!b[i]("srcset")&&b.setAttribute("srcset",c.src),e({reevaluate:!0,elements:[b]})):c&&c.src&&(b.src=c.src)},x=function(a,b){return(getComputedStyle(a,null)||{})[b]},y=function(a,b,c){for(c=c||a.offsetWidth;c<d.minSize&&b&&!a._lazysizesWidth;)c=b.offsetWidth,b=b.parentNode;return c},z=function(){var a,c,d=[],e=[],f=d,g=function(){var b=f;for(f=d.length?e:d,a=!0,c=!1;b.length;)b.shift()();a=!1},h=function(d,e){a&&!e?d.apply(this,arguments):(f.push(d),c||(c=!0,(b.hidden?k:l)(g)))};return h._lsFlush=g,h}(),A=function(a,b){return b?function(){z(a)}:function(){var b=this,c=arguments;z(function(){a.apply(b,c)})}},B=function(a){var b,c=0,e=d.throttleDelay,g=d.ricTimeout,h=function(){b=!1,c=f.now(),a()},i=m&&g>49?function(){m(h,{timeout:g}),g!==d.ricTimeout&&(g=d.ricTimeout)}:A(function(){k(h)},!0);return function(a){var d;(a=!0===a)&&(g=33),b||(b=!0,d=e-(f.now()-c),d<0&&(d=0),a||d<9?i():k(i,d))}},C=function(a){var b,c,d=99,e=function(){b=null,a()},g=function(){var a=f.now()-c;a<d?k(g,d-a):(m||e)(e)};return function(){c=f.now(),b||(b=k(g,d))}},D=function(){var g,l,m,o,p,y,D,F,G,H,I,J,K=/^img$/i,L=/^iframe$/i,M="onscroll"in a&&!/(gle|ing)bot/.test(navigator.userAgent),N=0,O=0,P=0,Q=-1,R=function(a){P--,(!a||P<0||!a.target)&&(P=0)},S=function(a){return null==J&&(J="hidden"==x(b.body,"visibility")),J||"hidden"!=x(a.parentNode,"visibility")&&"hidden"!=x(a,"visibility")},T=function(a,c){var d,f=a,g=S(a);for(F-=c,I+=c,G-=c,H+=c;g&&(f=f.offsetParent)&&f!=b.body&&f!=e;)(g=(x(f,"opacity")||1)>0)&&"visible"!=x(f,"overflow")&&(d=f.getBoundingClientRect(),g=H>d.left&&G<d.right&&I>d.top-1&&F<d.bottom+1);return g},U=function(){var a,f,h,j,k,m,n,p,q,r,s,t,u=c.elements;if((o=d.loadMode)&&P<8&&(a=u.length)){for(f=0,Q++;f<a;f++)if(u[f]&&!u[f]._lazyRace)if(!M||c.prematureUnveil&&c.prematureUnveil(u[f]))aa(u[f]);else if((p=u[f][i]("data-expand"))&&(m=1*p)||(m=O),r||(r=!d.expand||d.expand<1?e.clientHeight>500&&e.clientWidth>500?500:370:d.expand,c._defEx=r,s=r*d.expFactor,t=d.hFac,J=null,O<s&&P<1&&Q>2&&o>2&&!b.hidden?(O=s,Q=0):O=o>1&&Q>1&&P<6?r:N),q!==m&&(y=innerWidth+m*t,D=innerHeight+m,n=-1*m,q=m),h=u[f].getBoundingClientRect(),(I=h.bottom)>=n&&(F=h.top)<=D&&(H=h.right)>=n*t&&(G=h.left)<=y&&(I||H||G||F)&&(d.loadHidden||S(u[f]))&&(l&&P<3&&!p&&(o<3||Q<4)||T(u[f],m))){if(aa(u[f]),k=!0,P>9)break}else!k&&l&&!j&&P<4&&Q<4&&o>2&&(g[0]||d.preloadAfterLoad)&&(g[0]||!p&&(I||H||G||F||"auto"!=u[f][i](d.sizesAttr)))&&(j=g[0]||u[f]);j&&!k&&aa(j)}},V=B(U),W=function(a){var b=a.target;if(b._lazyCache)return void delete b._lazyCache;R(a),s(b,d.loadedClass),t(b,d.loadingClass),u(b,Y),v(b,"lazyloaded")},X=A(W),Y=function(a){X({target:a.target})},Z=function(a,b){try{a.contentWindow.location.replace(b)}catch(c){a.src=b}},$=function(a){var b,c=a[i](d.srcsetAttr);(b=d.customMedia[a[i]("data-media")||a[i]("media")])&&a.setAttribute("media",b),c&&a.setAttribute("srcset",c)},_=A(function(a,b,c,e,f){var g,h,j,l,o,p;(o=v(a,"lazybeforeunveil",b)).defaultPrevented||(e&&(c?s(a,d.autosizesClass):a.setAttribute("sizes",e)),h=a[i](d.srcsetAttr),g=a[i](d.srcAttr),f&&(j=a.parentNode,l=j&&n.test(j.nodeName||"")),p=b.firesLoad||"src"in a&&(h||g||l),o={target:a},s(a,d.loadingClass),p&&(clearTimeout(m),m=k(R,2500),u(a,Y,!0)),l&&q.call(j.getElementsByTagName("source"),$),h?a.setAttribute("srcset",h):g&&!l&&(L.test(a.nodeName)?Z(a,g):a.src=g),f&&(h||l)&&w(a,{src:g})),a._lazyRace&&delete a._lazyRace,t(a,d.lazyClass),z(function(){var b=a.complete&&a.naturalWidth>1;p&&!b||(b&&s(a,"ls-is-cached"),W(o),a._lazyCache=!0,k(function(){"_lazyCache"in a&&delete a._lazyCache},9)),"lazy"==a.loading&&P--},!0)}),aa=function(a){if(!a._lazyRace){var b,c=K.test(a.nodeName),e=c&&(a[i](d.sizesAttr)||a[i]("sizes")),f="auto"==e;(!f&&l||!c||!a[i]("src")&&!a.srcset||a.complete||r(a,d.errorClass)||!r(a,d.lazyClass))&&(b=v(a,"lazyunveilread").detail,f&&E.updateElem(a,!0,a.offsetWidth),a._lazyRace=!0,P++,_(a,b,f,e,c))}},ba=C(function(){d.loadMode=3,V()}),ca=function(){3==d.loadMode&&(d.loadMode=2),ba()},da=function(){if(!l){if(f.now()-p<999)return void k(da,999);l=!0,d.loadMode=3,V(),j("scroll",ca,!0)}};return{_:function(){p=f.now(),c.elements=b.getElementsByClassName(
213d.lazyClass),g=b.getElementsByClassName(d.lazyClass+" "+d.preloadClass),j("scroll",V,!0),j("resize",V,!0),a.MutationObserver?new MutationObserver(V).observe(e,{childList:!0,subtree:!0,attributes:!0}):(e[h]("DOMNodeInserted",V,!0),e[h]("DOMAttrModified",V,!0),setInterval(V,999)),j("hashchange",V,!0),["focus","mouseover","click","load","transitionend","animationend"].forEach(function(a){b[h](a,V,!0)}),/d$|^c/.test(b.readyState)?da():(j("load",da),b[h]("DOMContentLoaded",V),k(da,2e4)),c.elements.length?(U(),z._lsFlush()):V()},checkElems:V,unveil:aa,_aLSL:ca}}(),E=function(){var a,c=A(function(a,b,c,d){var e,f,g;if(a._lazysizesWidth=d,d+="px",a.setAttribute("sizes",d),n.test(b.nodeName||""))for(e=b.getElementsByTagName("source"),f=0,g=e.length;f<g;f++)e[f].setAttribute("sizes",d);c.detail.dataAttr||w(a,c.detail)}),e=function(a,b,d){var e,f=a.parentNode;f&&(d=y(a,f,d),e=v(a,"lazybeforesizes",{width:d,dataAttr:!!b}),e.defaultPrevented||(d=e.detail.width)&&d!==a._lazysizesWidth&&c(a,f,e,d))},f=function(){var b,c=a.length;if(c)for(b=0;b<c;b++)e(a[b])},g=C(f);return{_:function(){a=b.getElementsByClassName(d.autosizesClass),j("resize",g)},checkElems:g,updateElem:e}}(),F=function(){!F.i&&b.getElementsByClassName&&(F.i=!0,E._(),D._())};return k(function(){d.init&&F()}),c={cfg:d,autoSizer:E,loader:D,init:F,uP:w,aC:s,rC:t,hC:r,fire:v,gW:y,rAF:z}}); 214/* End */ 215; 216; /* Start:"a:4:{s:4:"full";s:66:"/local/templates/aspro_max/js/ls.unveilhooks.min.js?16523557011466";s:6:"source";s:51:"/local/templates/aspro_max/js/ls.unveilhooks.min.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 217/*! lazysizes - v4.0.3 */ 218!function(a,b){var c=function(){b(a.lazySizes),a.removeEventListener("lazyunveilread",c,!0)};b=b.bind(null,a,a.document),"object"==typeof module&&module.exports?b(require("lazysizes")):a.lazySizes?c():a.addEventListener("lazyunveilread",c,!0)}(window,function(a,b,c){"use strict";function d(a,c){if(!g[a]){var d=b.createElement(c?"link":"script"),e=b.getElementsByTagName("script")[0];c?(d.rel="stylesheet",d.href=a):d.src=a,g[a]=!0,g[d.src||d.href]=!0,e.parentNode.insertBefore(d,e)}}var e,f,g={};b.addEventListener&&(f=/\(|\)|\s|'/,e=function(a,c){var d=b.createElement("img");d.onload=function(){d.onload=null,d.onerror=null,d=null,c()},d.onerror=d.onload,d.src=a,d&&d.complete&&d.onload&&d.onload()},addEventListener("lazybeforeunveil",function(a){if(a.detail.instance==c){var b,g,h,i;a.defaultPrevented||("none"==a.target.preload&&(a.target.preload="auto"),b=a.target.getAttribute("data-link"),b&&d(b,!0),b=a.target.getAttribute("data-script"),b&&d(b),b=a.target.getAttribute("data-require"),b&&(c.cfg.requireJs?c.cfg.requireJs([b]):d(b)),h=a.target.getAttribute("data-bg"),h&&(a.detail.firesLoad=!0,g=function(){a.target.style.backgroundImage="url("+(f.test(h)?JSON.stringify(h):h)+")",a.detail.firesLoad=!1,c.fire(a.target,"_lazyloaded",{},!0,!0)},e(h,g)),i=a.target.getAttribute("data-poster"),i&&(a.detail.firesLoad=!0,g=function(){a.target.poster=i,a.detail.firesLoad=!1,c.fire(a.target,"_lazyloaded",{},!0,!0)},e(i,g)))}},!1))}); 219/* End */ 220; 221; /* Start:"a:4:{s:4:"full";s:65:"/local/templates/aspro_max/js/jquery.actual.min.js?16523557071238";s:6:"source";s:50:"/local/templates/aspro_max/js/jquery.actual.min.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 222/*! Copyright 2012, Ben Lin (http://dreamerslab.com/) 223 * Licensed under the MIT License (LICENSE.txt). 224 * 225 * Version: 1.0.18 226 * 227 * Requires: jQuery >= 1.2.3 228 */ 229(function(a){if(typeof define==="function"&&define.amd){define(["jquery"],a); 230}else{a(jQuery);}}(function(a){a.fn.addBack=a.fn.addBack||a.fn.andSelf;a.fn.extend({actual:function(b,l){if(!this[b]){throw'$.actual => The jQuery method "'+b+'" you called does not exist'; 231}var f={absolute:false,clone:false,includeMargin:false,display:"block"};var i=a.extend(f,l);var e=this.eq(0);var h,j;if(i.clone===true){h=function(){var m="position: absolute !important; top: -1000 !important; "; 232e=e.clone().attr("style",m).appendTo("body");};j=function(){e.remove();};}else{var g=[];var d="";var c;h=function(){c=e.parents().addBack().filter(":hidden"); 233d+="visibility: hidden !important; display: "+i.display+" !important; ";if(i.absolute===true){d+="position: absolute !important; ";}c.each(function(){var m=a(this); 234var n=m.attr("style");g.push(n);m.attr("style",n?n+";"+d:d);});};j=function(){c.each(function(m){var o=a(this);var n=g[m];if(n===undefined){o.removeAttr("style"); 235}else{o.attr("style",n);}});};}h();var k=/(outer)/.test(b)?e[b](i.includeMargin):e[b]();j();return k;}});})); 236/* End */ 237; 238; /* Start:"a:4:{s:4:"full";s:56:"/local/templates/aspro_max/js/jqModal.js?165235570211178";s:6:"source";s:40:"/local/templates/aspro_max/js/jqModal.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 239/* 240 * jqModal - Minimalist Modaling with jQuery 241 * 242 * Copyright (c) 2007-2014 Brice Burgess @iceburg_net 243 * Dual licensed under the MIT and GPL licenses: 244 * http://www.opensource.org/licenses/mit-license.php 245 * http://www.gnu.org/licenses/gpl.html 246 * 247 * $Version: 1.0.2 (2014.04.10 +r19) 248 * Requires: jQuery 1.2.3+ 249 */ 250 251(function($) { 252 253 /**
254 * Initialize a set of elements as "modals". Modals typically are popup dialogs, 255 * notices, modal windows, &c. 256 * 257 * @name jqm 258 * @param options user defined options, augments defaults. 259 * @type jQuery 260 * @cat Plugins/jqModal 261 */ 262 263 $.fn.jqm=function(options){ 264 265 var o = $.extend({}, $.jqm.params, options); 266 267 return this.each(function(){ 268 var e = $(this), 269 jqm = $(this).data('jqm'); 270 271 if(!jqm) jqm = {ID: I++}; 272 273 // add/extend options to modal and mark as initialized 274 e.data('jqm',$.extend(o,jqm)).addClass('jqm-init'); 275 276 // ... Attach events to trigger showing of this modal 277 o.trigger&&$(this).jqmAddTrigger(o.trigger); 278 }); 279 }; 280 281 282 /** 283 * Matching modals will have their jqmShow() method fired by attaching a 284 * onClick event to elements matching `trigger`. 285 * 286 * @name jqmAddTrigger 287 * @param trigger a selector String, jQuery collection of elements, or a DOM element. 288 */ 289 $.fn.jqmAddTrigger=function(trigger){ 290 return this.each(function(){ 291 if(!addTrigger($(this), 'jqmShow', trigger)) 292 err("jqmAddTrigger must be called on initialized modals") 293 }); 294 }; 295 296 297 /** 298 * Matching modals will have their jqmHide() method fired by attaching an 299 * onClick event to elements matching `trigger`. 300 * 301 * @name jqmAddClose 302 * @param trigger a selector String, jQuery collection of elements, or a DOM element. 303 */ 304 $.fn.jqmAddClose=function(trigger){ 305 return this.each(function(){ 306 if(!addTrigger($(this), 'jqmHide', trigger)) 307 err("jqmAddClose must be called on initialized modals") 308 }); 309 }; 310 311 312 /** 313 * Open matching modals (if not shown) 314 */ 315 $.fn.jqmShow=function(trigger){ 316 return this.each(function(){ !this._jqmShown&&show($(this), trigger); }); 317 }; 318 319 /** 320 * Close matching modals 321 */ 322 $.fn.jqmHide=function(trigger){ 323 return this.each(function(){ this._jqmShown&&hide($(this), trigger); }); 324 }; 325 326 327 // utility functions 328 329 var 330 err = function(msg){ 331 if(window.console && window.console.error) window.console.error(msg); 332 333 334 }, show = function(e, t){ 335 /** 336 * e = modal element (as jQuery object) 337 * t = triggering element 338 * 339 * o = options 340 * z = z-index of modal 341 * v = overlay element (as jQuery object) 342 * h = hash (for jqModal <= r15 compatibility) 343 */ 344 345 var o = e.data('jqm'), 346 t = t || window.event, 347 z = (parseInt(e.css('z-index'))); 348 349 if(o.noOverlay === undefined || (o.noOverlay !== undefined && !o.noOverlay) ) { 350 if( isNaN(z) ) { 351 if( window['lastJqmZindex'] ) { 352 window['lastJqmZindex'] = z = window['lastJqmZindex'] + 2; 353 } else { 354 z = 3000; 355 } 356 } 357 window['lastJqmZindex'] = z; 358 var v = $('<div></div>').addClass(o.overlayClass).css({height:'100%',width:'100%',position:'fixed',left:0,top:0,'z-index':z-1,opacity:o.overlay/100}); 359 e.css('z-index',z); 360 } else { 361 var v = $(''); 362 e.css('z-index',2999); 363 } 364 365 // maintain legacy "hash" construct 366 h = {w: e, c: o, o: v, t: t}; 367 368 369 if(o.ajax){ 370 var target = o.target || e, 371 url = o.ajax; 372 373 target = (typeof target == 'string') ? $(target,e) : $(target); 374 if(url.substr(0,1) == '@') url = $(t).attr(url.substring(1)); 375 376 // Load the Ajax Content (and once loaded); 377 // Fire the onLoad callback (if exists), 378 // Attach closing events to elements inside the modal that match the closingClass, 379 // and Execute the jqModal default Open Callback 380 target.html(o.ajaxText).load(url,function(){ 381 o.onLoad && o.onLoad.call(this,h); 382 open(h); 383 }); 384 } 385 else { open(h); } 386 387 }, hide = function(e, t){ 388 /** 389 * e = modal element (as jQuery object) 390 * t = triggering element 391 * 392 * o = options 393 * h = hash (for jqModal <= r15 compatibility) 394 */ 395 396 var o = e.data('jqm'), 397 t = t || window.event, 398 399 // maintain legacy "hash" construct 400 h = {w: e, c: o, o: e.data('jqmv'), t: t}; 401 402 close(h); 403 404 }, onShow = function(hash){ 405 // onShow callback. Responsible for showing a modal and overlay. 406 // return false to stop opening modal. 407 408 // hash object; 409 // w: (jQuery object) The modal element 410 // c: (object) The modal's options object 411 // o: (jQuery object) The overlay element 412 // t: (DOM object) The triggering element 413 414 // display the overlay (prepend to body) if not disabled 415 416 // prevent double click 417 if( hash.w[0]._jqmShown ) 418 return false;
419 420 if(hash.c.overlay > 0) 421 hash.o.prependTo('#popup_iframe_wrapper'); 422 423 // make modal visible 424 hash.w.show(); 425 426 // call focusFunc (attempts to focus on first input in modal) 427 $.jqm.focusFunc(hash.w); 428 429 return true; 430 431 432 }, onHide = function(hash){ 433 // onHide callback. Responsible for hiding a modal and overlay. 434 // return false to stop closing modal. 435 436 // hash object; 437 // w: (jQuery object) The modal element 438 // c: (object) The modal's options object 439 // o: (jQuery object) The overlay element 440 // t: (DOM object) The triggering element 441 442 // hide modal and if overlay, remove overlay. 443 hash.w.hide() && hash.o && hash.o.remove(); 444 445 return true; 446 447 448 }, addTrigger = function(e, key, trigger){ 449 // addTrigger: Adds a jqmShow or jqmHide (key) for a modal (e) 450 // all elements that match trigger string (trigger)\ 451 452 // return false if e is not an initialized modal element 453 if(!e.data('jqm')) return false; 454 455 return $(trigger).each(function(){ 456 // register modal to trigger elements 457 this[key] = this[key] || []; 458 this[key].push(e); 459 460 }).click(function(){ 461 462 var trigger = this; 463 464 // foreadh modal registered to this trigger, call jqmShow || 465 // jqmHide (key) on modal passing trigger element (e) 466 $.each(this[key], function(i, e){ e[key](trigger); }); 467 468 // stop trigger click event from bubbling 469 return false; 470 }); 471 472 473 }, open = function(h){ 474 // open: executes the onOpen callback + performs common tasks if successful 475 476 // transform legacy hash into new var shortcuts 477 var e = h.w, 478 v = h.o, 479 o = h.c; 480 481 // execute onShow callback 482 if(o.onShow(h) !== false){ 483 // mark modal as shown 484 e[0]._jqmShown = true; 485 486 // if modal dialog 487 // 488 // Bind the Keep Focus Function [F] if no other Modals are open (!A[0]) + 489 // Add this modal to the opened modals stack (A) for nested modal support 490 // 491 // else, close dialog when overlay is clicked 492 if(o.modal){ !A[0]&&F('bind'); A.push(e); } 493 else e.jqmAddClose(v); 494 495 // Attach closing events to elements inside the modal that match the closingClass 496 o.closeClass&&e.jqmAddClose($('.' + o.closeClass,e)); 497 498 // IF toTop is true and overlay exists; 499 // Add placeholder element <span id="jqmP#ID_of_modal"/> before modal to 500 // remember it's position in the DOM and move it to a child of the body tag (after overlay) 501 o.toTop&&v&&e.before('<span id="jqmP'+o.ID+'"></span>').insertAfter(v); 502 503 // remember overlay (for closing function) 504 e.data('jqmv',v); 505 } 506 507 508 }, close = function(h){ 509 // close: executes the onHide callback + performs common tasks if successful 510 511 // transform legacy hash into new var shortcuts 512 var e = h.w, 513 v = h.o, 514 o = h.c; 515 516 // execute onShow callback 517 if(o.onHide(h) !== false){ 518 // mark modal as !shown 519 e[0]._jqmShown = false; 520 521 // If modal, remove from modal stack. 522 // If no modals in modal stack, unbind the Keep Focus Function 523 if(o.modal){A.pop();!A[0]&&F('unbind');} 524 525 // IF toTop was passed and an overlay exists; 526 // Move modal back to its "remembered" position. 527 o.toTop&&v&&$('#jqmP'+o.ID).after(e).remove(); 528 } 529 530 531 }, F = function(t){ 532 // F: The Keep Focus Function (for modal: true dialos) 533 // Binds or Unbinds (t) the Focus Examination Function (X) to keypresses and clicks 534 535 $(document)[t]("keypress keydown mousedown",X); 536 537 538 }, X = function(e){ 539 // X: The Focus Examination Function (for modal: true dialogs) 540 541 var modal = $(e.target).data('jqm') || $(e.target).parents('.jqm-init:first').data('jqm'), 542 activeModal = A[A.length-1].data('jqm'); 543 544 // allow bubbling if event target is within active modal dialog 545 if(modal && modal.ID == activeModal.ID) return true; 546 547 // else, trigger focusFunc (focus on first input element and halt bubbling) 548 return $.jqm.focusFunc(activeModal); 549 }, 550 551 I = 0, // modal ID increment (for nested modals) 552 A = []; // array of active modals (used to lock interactivity to appropriate modal) 553 554 555 // $.jqm, overridable defaults 556 $.jqm = { 557 /** 558 * default options 559 * 560 * (Integer) overlay - [0-100] Translucency percentage (opacity) of the body covering overlay. Set to 0 for NO overlay, and up to 100 for a 100% opaque overlay. 561 * (String) overlayClass - Applied to the body covering overlay. Useful for controlling overlay look (tint, background-image, &c) with CSS. 562 * (String) closeClass - Children of the modal element matching `closeClass` will fire the onHide event (to close the modal). 563 * (Mixed) trigger - Matching elements will fire the onShow event (to display the modal). Trigger can be a selector String, a jQuery collection of elements, a DOM element, or a False boolean. 564 * (String) ajax - URL to load content from via an AJAX request. False to disable ajax. If ajax begins with a "@", the URL is extracted from the attribute of the triggering element (e.g. use '@data-url' for; <a href="#" class="jqModal" data-url="modal.html">...) 565 * (Mixed) target - Children of the modal element to load the aja
565x response into. If false, modal content will be overwritten by ajax response. Useful for retaining modal design. 566 * Target may be a selector string, jQuery collection of elements, or a DOM element -- and MUST exist as a child of the modal element. 567 * (String) ajaxText - Text shown while waiting for ajax return. Replaces HTML content of `target` element. 568 * (Boolean) modal - If true, user interactivity will be locked to the modal window until closed. 569 * (Boolean) toTop - If true, modal will be posistioned as a first child of the BODY element when opened, and its DOM posistion restored when closed. Useful for overcoming z-Index container issues. 570 * (Function) onShow - User defined callback function fired when modal opened. 571 * (Function) onHide - User defined callback function fired when modal closed. 572 * (Function) onLoad - User defined callback function fired when ajax content loads. 573 */ 574 params: { 575 overlay: 50, 576 overlayClass: 'jqmOverlay', 577 closeClass: 'jqmClose', 578 trigger: '.jqModal', 579 ajax: false, 580 target: false, 581 ajaxText: '', 582 modal: false, 583 toTop: false, 584 onShow: onShow, 585 onHide: onHide, 586 onLoad: false 587 }, 588 589 // focusFunc is fired when a modal is shown, or when interaction occurs outside 590 // a modal enabled dialog. Passed the modal element. 591 focusFunc: function(e) { $(':input:visible:first',e).focus(); return false; } 592 }; 593 594})( jQuery ); 595/* End */ 596; 597; /* Start:"a:4:{s:4:"full";s:65:"/local/templates/aspro_max/vendor/js/bootstrap.js?165235583927908";s:6:"source";s:49:"/local/templates/aspro_max/vendor/js/bootstrap.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 598/*! 599 * Bootstrap v3.0.0 600 * 601 * Copyright 2013 Twitter, Inc 602 * Licensed under the Apache License v2.0 603 * http://www.apache.org/licenses/LICENSE-2.0 604 * 605 * Designed and built with all the love in the world @twitter by @mdo and @fat. 606 */ 607 608+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function f(){e.trigger("closed.bs.alert").remove()}var c=a(this),d=c.attr("data-target");d||(d=c.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,""));var e=a(d);b&&b.preventDefault(),e.length||(e=c.hasClass("alert")?c:c.parent()),e.trigger(b=a.Event("close.bs.alert"));if(b.isDefaultPrevented())return;e.removeClass("in"),a.support.transition&&e.hasClass("fade")?e.one(a.support.transition.end,f).emulateTransitionEnd(150):f()};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d)};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(a){var b="disabled",c=this.$element,d=c.is("input")?"val":"html",e=c.data();a+="Text",e.resetText||c.data("resetText",c[d]()),c[d](e[a]||this.options[a]),setTimeout(function(){a=="loadingText"?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},b.prototype.toggle=function(){var a=this.$element.closest('[data-toggle="buttons"]');if(a.length){var b=this.$element.find("input").prop("checked",!this.$element.hasClass("active")).trigger("change");b.prop("type")==="radio"&&a.find(".active").removeClass("active")}this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f=typeof c=="object"&&c;e||d.data("bs.button",e=new b(this,f)),c=="toggle"?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(window.jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,this.options.pause=="hover"&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".
608item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();if(b>this.$items.length-1||b<0)return;return this.sliding?this.$element.one("slid",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition.end&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){if(this.sliding)return;return this.slide("next")},b.prototype.prev=function(){if(this.sliding)return;return this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g=b=="next"?"left":"right",h=b=="next"?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}this.sliding=!0,f&&this.pause();var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});if(e.hasClass("active"))return;this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")}));if(a.support.transition&&this.$element.hasClass("slide")){this.$element.trigger(j);if(j.isDefaultPrevented())return;e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid")},0)}).emulateTransitionEnd(600)}else{this.$element.trigger(j);if(j.isDefaultPrevented())return;d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return f&&this.cycle(),this};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),typeof c=="object"&&c),g=typeof c=="string"?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),typeof c=="number"?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c=a(this),d,e=a(c.attr("data-target")||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),c.data()),g=c.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=c.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(window.jQuery),+function(a){function e(){a(b).remove(),a(c).each(function(b){var c=f(a(this));if(!c.hasClass("open"))return;c.trigger(b=a.Event("hide.bs.dropdown"));if(b.isDefaultPrevented())return;c.removeClass("open").trigger("hidden.bs.dropdown")})}function f(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}"use strict";var b=".dropdown-backdrop",c="[data-toggle=dropdown]",d=function(b){var c=a(b).on("click.bs.dropdown",this.toggle)};d.prototype.toggle=function(b){var c=a(this);if(c.is(".disabled, :disabled"))return;var d=f(c),g=d.hasClass("open");e();if(!g){"ontouchstart"in document.documentElement&&!d.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",e),d.trigger(b=a.Event("show.bs.dropdown"));if(b.isDefaultPrevented())return;d.toggleClass("open").trigger("shown.bs.dropdown"),c.focus()}return!1},d.prototype.keydown=function(b){if(!/(38|40|27)/.test(b.keyCode))return;var d=a(this);b.preventDefault(),b.stopPropagation();if(d.is(".disabled, :disabled"))return;var e=f(d),g=e.hasClass("open");if(!g||g&&b.keyCode==27)return b.which==27&&e.find(c).focus(),d.click();var h=a("[role=menu] li:not(.divider):visible a",e);if(!h.length)return;var i=h.index(h.filter(":focus"));b.keyCode==38&&i>0&&i--,b.keyCode==40&&i<h.length-1&&i++,~i||(i=0),h.eq(i).focus()};var g=a.fn.dropdown;a.fn.dropdown=function(b){return this.each(function(){var c=a(this),e=c.data("dropdown");e||c.data("dropdown",e=new d(this)),typeof b=="string"&&e[b].call(c)})},a.fn.dropdown.Constructor=d,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=g,this},a(document).on("click.bs.dropdown.data-api",e).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",c,d.prototype.toggle).on("keydown.bs.dropdown.data-api",c+", [role=menu]",d.prototype.keydown)}(window.jQuery),+function(a){"use strict";var b=function(b,c){this.options=c,this.$element=a(b),this.$backdrop=this.isShown=null,this.options.remote&&this.$element.load(this.options.remote)};b.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},b.prototype.toggle=function(a){return this[this.isShown?"hide":"show"](a)},b.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d);if(this.isShown||d.isDefaultPrevented())return;this.isShown=!0,this.escape(),this.$element.on("click.dismiss.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(document.body),c.$element.show(),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});
608d?c.$element.find(".modal-dialog").one(a.support.transition.end,function(){c.$element.focus().trigger(e)}).emulateTransitionEnd(300):c.$element.focus().trigger(e)})},b.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b);if(!this.isShown||b.isDefaultPrevented())return;this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one(a.support.transition.end,a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal()},b.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]!==a.target&&!this.$element.has(a.target).length&&this.$element.focus()},this))},b.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){a.which==27&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},b.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden.bs.modal")})},b.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},b.prototype.backdrop=function(b){var c=this,d=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&&d;this.$backdrop=a('<div class="modal-backdrop '+d+'" />').appendTo(document.body),this.$element.on("click.dismiss.modal",a.proxy(function(a){if(a.target!==a.currentTarget)return;this.options.backdrop=="static"?this.$element[0].focus.call(this.$element[0]):this.hide.call(this)},this)),e&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in");if(!b)return;e?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.modal;a.fn.modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),typeof c=="object"&&c);f||e.data("bs.modal",f=new b(this,g)),typeof c=="string"?f[c](d):g.show&&f.show(d)})},a.fn.modal.Constructor=b,a.fn.modal.noConflict=function(){return a.fn.modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());b.preventDefault(),e.modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(window.jQuery),+function(a){"use strict";var b=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};b.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},b.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d);var e=this.options.trigger.split(" ");for(var f=e.length;f--;){var g=e[f];if(g=="click")this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if(g!="manual"){var h=g=="hover"?"mouseenter":"focus",i=g=="hover"?"mouseleave":"blur";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&typeof b.delay=="number"&&(b.delay={show:b.delay,hide:b.delay}),b},b.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},b.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);clearTimeout(c.timeout),c.hoverState="in";if(!c.options.delay||!c.options.delay.show)return c.show();c.timeout=setTimeout(function(){c.hoverState=="in"&&c.show()},c.options.delay.show)},b.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);clearTimeout(c.timeout),c.hoverState="out";if(!c.options.delay||!c.options.delay.hide)return c.hide();c.timeout=setTimeout(function(){c.hoverState=="out"&&c.hide()},c.options.delay.hide)},b.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);if(b.isDefaultPrevented())return;var c=this.tip();this.setContent(),this.options.animation&&c.addClass("fade");var d=typeof this.options.placement=="function"?this.options.placement.call(this,c[
6080],this.$element[0]):this.options.placement,e=/\s?auto?\s?/i,f=e.test(d);f&&(d=d.replace(e,"")||"top"),c.detach().css({top:0,left:0,display:"block"}).addClass(d),this.options.container?c.appendTo(this.options.container):c.insertAfter(this.$element);var g=this.getPosition(),h=c[0].offsetWidth,i=c[0].offsetHeight;if(f){var j=this.$element.parent(),k=d,l=document.documentElement.scrollTop||document.body.scrollTop,m=this.options.container=="body"?window.innerWidth:j.outerWidth(),n=this.options.container=="body"?window.innerHeight:j.outerHeight(),o=this.options.container=="body"?0:j.offset().left;d=d=="bottom"&&g.top+g.height+i-l>n?"top":d=="top"&&g.top-l-i<0?"bottom":d=="right"&&g.right+h>m?"left":d=="left"&&g.left-h<o?"right":d,c.removeClass(k).addClass(d)}var p=this.getCalculatedOffset(d,g,h,i);this.applyPlacement(p,d),this.$element.trigger("shown.bs."+this.type)}},b.prototype.applyPlacement=function(a,b){var c,d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),a.top=a.top+g,a.left=a.left+h,d.offset(a).addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;b=="top"&&j!=f&&(c=!0,a.top=a.top+f-j);if(/bottom|top/.test(b)){var k=0;a.left<0&&(k=a.left*-2,a.left=0,d.offset(a),i=d[0].offsetWidth,j=d[0].offsetHeight),this.replaceArrow(k-e+i,i,"left")}else this.replaceArrow(j-f,j,"top");c&&d.offset(a)},b.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},b.prototype.hide=function(){function e(){b.hoverState!="in"&&c.detach()}var b=this,c=this.tip(),d=a.Event("hide.bs."+this.type);this.$element.trigger(d);if(d.isDefaultPrevented())return;return c.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?c.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),this.$element.trigger("hidden.bs."+this.type),this},b.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||typeof a.attr("data-original-title")!="string")&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},b.prototype.hasContent=function(){return this.getTitle()},b.prototype.getPosition=function(){var b=this.$element[0];return a.extend({},typeof b.getBoundingClientRect=="function"?b.getBoundingClientRect():{width:b.offsetWidth,height:b.offsetHeight},this.$element.offset())},b.prototype.getCalculatedOffset=function(a,b,c,d){return a=="bottom"?{top:b.top+b.height,left:b.left+b.width/2-c/2}:a=="top"?{top:b.top-d,left:b.left+b.width/2-c/2}:a=="left"?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},b.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||(typeof c.title=="function"?c.title.call(b[0]):c.title),a},b.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},b.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},b.prototype.enable=function(){this.enabled=!0},b.prototype.disable=function(){this.enabled=!1},b.prototype.toggleEnabled=function(){this.enabled=!this.enabled},b.prototype.toggle=function(b){var c=b?a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type):this;c.tip().hasClass("in")?c.leave(c):c.enter(c)},b.prototype.destroy=function(){this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var c=a.fn.tooltip;a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f=typeof c=="object"&&c;e||d.data("bs.tooltip",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=c,this}}(window.jQuery),+function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");b.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||(typeof b.content=="function"?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f=typeof c=="object"&&c;e||d.data("bs.popover",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(window.jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,""));if(b.parent("li").hasClass("active"))return;var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});b.trigger(f);if(f.isDefaultPrevented())return;var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})},b.prototype.activate=function(b,c,d){function g(){e.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),f?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var e=c.find("> .active"),f=d&&a.support.transition&&e.hasClass("fade");f?e.one(a.support.transition.end,g).emulateTransitionEnd(150):g(),e.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),typeof c=="string"&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(!this.$element.is(":visible"))return;var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;typeof f!="object"&&(h=g=f),typeof g=="function"&&(g=f.top()),typeof h=="function"&&(h=f.bottom());var i=this.unpin!=null&&d+this.unpin<=e.top?!1:h!=null&&e.top+this.$element.height()>=c-h?"bottom":g!=null&&d<=g?"top":!1;if(this.affixed===i)return;this.unpin&&this.$element.css("top",""),this.affixed=i,this.unpin=i=="bottom"?e.top-d:null,this.$element.removeClass(b.RESET).addClass("affix"+(i?"-"+i:"")),i=="bottom"&&this.$element.offset({top:document.body.offsetHeight-h-this.$element.height()})};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f=typeof c=="object"&&c;
608e||d.data("bs.affix",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(this.transitioning||this.$element.hasClass("in"))return;var b=a.Event("show.bs.collapse");this.$element.trigger(b);if(b.isDefaultPrevented())return;var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])},b.prototype.hide=function(){if(this.transitioning||!this.$element.hasClass("in"))return;var b=a.Event("hide.bs.collapse");this.$element.trigger(b);if(b.isDefaultPrevented())return;var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};if(!a.support.transition)return d.call(this);this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350)},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),typeof c=="object"&&c);e||d.data("bs.collapse",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c=a(this),d,e=c.attr("data-target")||b.preventDefault()||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":c.data(),i=c.attr("data-parent"),j=i&&a(i);if(!g||!g.transitioning)j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(c).addClass("collapsed"),c[f.hasClass("in")?"addClass":"removeClass"]("collapsed");f.collapse(h)})}(window.jQuery),+function(a){function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(c).is("body")?a(window):a(c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}"use strict",b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);var c=this,d=this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#\w/.test(e)&&a(e);return f&&f.length&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})},b.prototype.process=function(){var a=this.$scrollElement.scrollTop()+this.options.offset,b=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,c=b-this.$scrollElement.height(),d=this.offsets,e=this.targets,f=this.activeTarget,g;if(a>=c)return f!=(g=e.last()[0])&&this.activate(g);for(g=d.length;g--;)f!=e[g]&&a>=d[g]&&(!d[g+1]||a<=d[g+1])&&this.activate(e[g])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parents(".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f=typeof c=="object"&&c;e||d.data("bs.scrollspy",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),+function(a){function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(a.style[c]!==undefined)return{end:b[c]}}"use strict",a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(window.jQuery) 609/* End */ 610; 611; /* Start:"a:4:{s:4:"full";s:68:"/local/templates/aspro_max/vendor/js/jquery.appear.js?16523558373188";s:6:"source";s:53:"/local/templates/aspro_max/vendor/js/jquery.appear.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 612/* 613 * jQuery.appear 614 * https://github.com/bas2k/jquery.appear/ 615 * http://code.google.com/p/jquery-appear/ 616 * 617 * Copyright (c) 2009 Michael Hixson 618 * Copyright (c) 2012 Alexander Brovikov
619 * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) 620 */ 621(function($) { 622 $.fn.appear = function(fn, options) { 623 624 var settings = $.extend({ 625 626 //arbitrary data to pass to fn 627 data: undefined, 628 629 //call fn only on the first appear? 630 one: true, 631 632 // X & Y accuracy 633 accX: 0, 634 accY: 0 635 636 }, options); 637 638 return this.each(function() { 639 640 var t = $(this); 641 642 //whether the element is currently visible 643 t.appeared = false; 644 645 if (!fn) { 646 647 //trigger the custom event 648 t.trigger('appear', settings.data); 649 return; 650 } 651 652 var w = $(window); 653 654 //fires the appear event when appropriate 655 var check = function() { 656 657 //is the element hidden? 658 if (!t.is(':visible')) { 659 660 //it became hidden 661 t.appeared = false; 662 return; 663 } 664 665 //is the element inside the visible window? 666 var a = w.scrollLeft(); 667 var b = w.scrollTop(); 668 var o = t.offset(); 669 var x = o.left; 670 var y = o.top; 671 672 var ax = settings.accX; 673 var ay = settings.accY; 674 var th = t.height(); 675 var wh = w.height(); 676 var tw = t.width(); 677 var ww = w.width(); 678 679 if (y + th + ay >= b && 680 y <= b + wh + ay && 681 x + tw + ax >= a && 682 x <= a + ww + ax) { 683 684 //trigger the custom event 685 if (!t.appeared) t.trigger('appear', settings.data); 686 687 } else { 688 689 //it scrolled out of view 690 t.appeared = false; 691 } 692 }; 693 694 //create a modified fn with some additional logic 695 var modifiedFn = function() { 696 697 //mark the element as visible 698 t.appeared = true; 699 700 //is this supposed to happen only once? 701 if (settings.one) { 702 703 //remove the check 704 w.unbind('scroll', check); 705 var i = $.inArray(check, $.fn.appear.checks); 706 if (i >= 0) $.fn.appear.checks.splice(i, 1); 707 } 708 709 //trigger the original fn 710 fn.apply(this, arguments); 711 }; 712 713 //bind the modified fn to the element 714 if (settings.one) t.one('appear', settings.data, modifiedFn); 715 else t.bind('appear', settings.data, modifiedFn); 716 717 //check whenever the window scrolls 718 w.scroll(check); 719 720 //check whenever the dom changes 721 $.fn.appear.checks.push(check); 722 723 //check now 724 (check)(); 725 }); 726 }; 727 728 //keep a queue of appearance checks 729 $.extend($.fn.appear, { 730 731 checks: [], 732 timeout: null, 733 734 //process the queue 735 checkAll: function() { 736 var length = $.fn.appear.checks.length; 737 if (length > 0) while (length--) ($.fn.appear.checks[length])(); 738 }, 739 740 //check the queue asynchronously 741 run: function() { 742 if ($.fn.appear.timeout) clearTimeout($.fn.appear.timeout); 743 $.fn.appear.timeout = setTimeout($.fn.appear.checkAll, 20); 744 } 745 }); 746 747 //run checks when these methods are called 748 $.each(['append', 'prepend', 'after', 'before', 'attr', 749 'removeAttr', 'addClass', 'removeClass', 'toggleClass', 750 'remove', 'css', 'show', 'hide'], function(i, n) { 751 var old = $.fn[n]; 752 if (old) { 753 $.fn[n] = function() { 754 var r = old.apply(this, arguments); 755 $.fn.appear.run(); 756 return r; 757 } 758 } 759 }); 760 761})(jQuery); 762/* End */ 763; 764; /* Start:"a:4:{s:4:"full";s:61:"/local/templates/aspro_max/vendor/js/ripple.js?16523558404702";s:6:"source";s:46:"/local/templates/aspro_max/vendor/js/ripple.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 765;(function($, document, Math){ 766 $.ripple = function(selector, options) { 767 768 var self = this; 769 770 var _log = self.log = function() { 771 if(self.defaults.debug && console && console.log) { 772 console.log.apply(console, arguments); 773 } 774 }; 775 776 self.selector = selector; 777 self.defaults = { 778 debug: false, 779 on: 'mousedown', 780 781 opacity: 0.4, 782 color: "auto", 783 multi: false, 784 785 duration: 0.7, 786 rate: function(pxPerSecond) { 787 return pxPerSecond; 788 }, 789 790 easing: 'linear' 791 }; 792 793 self.defaults = $.extend({}, self.defaults, options); 794 795 var Trigger = function(e) { 796 797 var $this = $(this); 798 var $ripple; 799 var settings; 800 801 $this.addClass('has-ripple'); 802 803 // This instances settings 804 settings = $.extend({}, self.defaults, $this.data()); 805 806 // Create the ripple element 807 if ( settings.multi || (!settings.multi && $this.find(".ripple").length === 0) ) { 808 $ripple = $("<span></span>").addClass("ripple"); 809 $ripple.appendTo($this); 810
811 _log('Create: Ripple'); 812 813 // Set ripple size 814 if (!$ripple.height() && !$ripple.width()) { 815 var size = Math.max($this.outerWidth(), $this.outerHeight()); 816 $ripple.css({ 817 height: size, 818 width: size 819 }); 820 _log('Set: Ripple size'); 821 } 822 823 // Give the user the ability to change the rate of the animation 824 // based on element width 825 if(settings.rate && typeof settings.rate == "function") { 826 827 // rate = pixels per second 828 var rate = Math.round( $ripple.width() / settings.duration ); 829 830 // new amount of pixels per second 831 var filteredRate = settings.rate(rate); 832 833 // Determine the new duration for the animation 834 var newDuration = ( $ripple.width() / filteredRate); 835 836 // Set the new duration if it has not changed 837 if(settings.duration.toFixed(2) !== newDuration.toFixed(2)) { 838 _log('Update: Ripple Duration', { 839 from: settings.duration, 840 to: newDuration 841 }); 842 settings.duration = newDuration; 843 } 844 } 845 846 // Set the color and opacity 847 var color = (settings.color == "auto") ? $this.css('color') : settings.color; 848 var css = { 849 animationDuration: (settings.duration).toString() + 's', 850 animationTimingFunction: settings.easing, 851 background: color, 852 opacity: settings.opacity 853 }; 854 855 _log('Set: Ripple CSS', css); 856 $ripple.css(css); 857 } 858 859 // Ensure we always have the ripple element 860 if(!settings.multi) { 861 _log('Set: Ripple Element'); 862 $ripple = $this.find(".ripple"); 863 } 864 865 // Kill animation 866 _log('Destroy: Ripple Animation'); 867 $ripple.removeClass("ripple-animate"); 868 869 870 // Retrieve coordinates 871 var x = e.pageX - $this.offset().left - $ripple.width() / 2; 872 var y = e.pageY - $this.offset().top - $ripple.height() / 2; 873 874 /** 875 * We want to delete the ripple elements if we allow multiple so we dont sacrifice any page 876 * performance. We don't do this on single ripples because once it has rendered, we only 877 * need to trigger paints thereafter. 878 */ 879 if(settings.multi) { 880 _log('Set: Ripple animationend event'); 881 $ripple.one('animationend webkitAnimationEnd oanimationend MSAnimationEnd', function() { 882 _log('Note: Ripple animation ended'); 883 _log('Destroy: Ripple'); 884 $(this).remove(); 885 }); 886 } 887 888 // Set position and animate 889 _log('Set: Ripple location'); 890 _log('Set: Ripple animation'); 891 $ripple.css({ 892 top: y + 'px', 893 left: x + 'px' 894 }).addClass("ripple-animate"); 895 }; 896 897 $(document).on(self.defaults.on, self.selector, Trigger); 898 }; 899})(jQuery, document, Math); 900 901/* End */ 902; 903; /* Start:"a:4:{s:4:"full";s:73:"/local/templates/aspro_max/vendor/js/velocity/velocity.js?165235587544791";s:6:"source";s:57:"/local/templates/aspro_max/vendor/js/velocity/velocity.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 904/*! VelocityJS.org (1.5.0). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License */ 905/*! VelocityJS.org jQuery Shim (1.0.1). (C) 2014 The jQuery Foundation. MIT @license: en.wikipedia.org/wiki/MIT_License. */ 906!function(a){"use strict";function b(a){var b=a.length,d=c.type(a);return"function"!==d&&!c.isWindow(a)&&(!(1!==a.nodeType||!b)||("array"===d||0===b||"number"==typeof b&&b>0&&b-1 in a))}if(!a.jQuery){var c=function(a,b){return new c.fn.init(a,b)};c.isWindow=function(a){return a&&a===a.window},c.type=function(a){return a?"object"==typeof a||"function"==typeof a?e[g.call(a)]||"object":typeof a:a+""},c.isArray=Array.isArray||function(a){return"array"===c.type(a)},c.isPlainObject=function(a){var b;if(!a||"object"!==c.type(a)||a.nodeType||c.isWindow(a))return!1;try{if(a.constructor&&!f.call(a,"constructor")&&!f.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(d){return!1}for(b in a);return b===undefined||f.call(a,b)},c.each=function(a,c,d){var e=0,f=a.length,g=b(a);if(d){if(g)for(;e<f&&c.apply(a[e],d)!==!1;e++);else for(e in a)if(a.hasOwnProperty(e)&&c.apply(a[e],d)===!1)break}else if(g)for(;e<f&&c.call(a[e],e,a[e])!==!1;e++);else for(e in a)if(a.hasOwnProperty(e)&&c.call(a[e],e,a[e])===!1)break;return a},c.data=function(a,b,e){if(e===undefined){var f=a[c.expando],g=f&&d[f];if(b===undefined)return g;if(g&&b in g)return g[b]}else if(b!==undefined){var h=a[c.expando]||(a[c.expando]=++c.uuid);return d[h]=d[h]||{},d[h][b]=e,e}},c.removeData=function(a,b){var e=a[c.expando],f=e&&d[e];f&&(b?c.each(b,function(a,b){delete f[b]}):delete d[e])},c.extend=function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[i]||{},i++),"object"!=typeof h&&"function"!==c.type(h)&&(h={}),i===j&&(h=this,i--);i<j;i++)if(f=arguments[i])for(e in f)f.hasOwnProperty(e)&&(a=h[e],d=f[e],h!==d&&(k&&d&&(c.isPlainObject(d)||(b=c.isArray(d)))?(b?(b=!1,g=a&&c.isArray(a)?a:[]):g=a&&c.isPlainObject(a)?a:{}
vendor: 30,293 bytes, lines 906-907
906,h[e]=c.extend(k,g,d)):d!==undefined&&(h[e]=d)));return h},c.queue=function(a,d,e){if(a){d=(d||"fx")+"queue";var f=c.data(a,d);return e?(!f||c.isArray(e)?f=c.data(a,d,function(a,c){var d=c||[];return a&&(b(Object(a))?function(a,b){for(var c=+b.length,d=0,e=a.length;d<c;)a[e++]=b[d++];if(c!==c)for(;b[d]!==undefined;)a[e++]=b[d++];a.length=e,a}(d,"string"==typeof a?[a]:a):[].push.call(d,a)),d}(e)):f.push(e),f):f||[]}},c.dequeue=function(a,b){c.each(a.nodeType?[a]:a,function(a,d){b=b||"fx";var e=c.queue(d,b),f=e.shift();"inprogress"===f&&(f=e.shift()),f&&("fx"===b&&e.unshift("inprogress"),f.call(d,function(){c.dequeue(d,b)}))})},c.fn=c.prototype={init:function(a){if(a.nodeType)return this[0]=a,this;throw new Error("Not a DOM node.")},offset:function(){var b=this[0].getBoundingClientRect?this[0].getBoundingClientRect():{top:0,left:0};return{top:b.top+(a.pageYOffset||document.scrollTop||0)-(document.clientTop||0),left:b.left+(a.pageXOffset||document.scrollLeft||0)-(document.clientLeft||0)}},position:function(){var a=this[0],b=function(a){for(var b=a.offsetParent;b&&"html"!==b.nodeName.toLowerCase()&&b.style&&"static"===b.style.position;)b=b.offsetParent;return b||document}(a),d=this.offset(),e=/^(?:body|html)$/i.test(b.nodeName)?{top:0,left:0}:c(b).offset();return d.top-=parseFloat(a.style.marginTop)||0,d.left-=parseFloat(a.style.marginLeft)||0,b.style&&(e.top+=parseFloat(b.style.borderTopWidth)||0,e.left+=parseFloat(b.style.borderLeftWidth)||0),{top:d.top-e.top,left:d.left-e.left}}};var d={};c.expando="velocity"+(new Date).getTime(),c.uuid=0;for(var e={},f=e.hasOwnProperty,g=e.toString,h="Boolean Number String Function Array Date RegExp Object Error".split(" "),i=0;i<h.length;i++)e["[object "+h[i]+"]"]=h[i].toLowerCase();c.fn.init.prototype=c.fn,a.Velocity={Utilities:c}}}(window),function(a){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a():"function"==typeof define&&define.amd?define(a):a()}(function(){"use strict";return function(a,b,c,d){function e(a){for(var b=-1,c=a?a.length:0,d=[];++b<c;){var e=a[b];e&&d.push(e)}return d}function f(a){return u.isWrapped(a)?a=s.call(a):u.isNode(a)&&(a=[a]),a}function g(a){var b=o.data(a,"velocity");return null===b?d:b}function h(a,b){var c=g(a);c&&c.delayTimer&&!c.delayPaused&&(c.delayRemaining=c.delay-b+c.delayBegin,c.delayPaused=!0,clearTimeout(c.delayTimer.setTimeout))}function i(a,b){var c=g(a);c&&c.delayTimer&&c.delayPaused&&(c.delayPaused=!1,c.delayTimer.setTimeout=setTimeout(c.delayTimer.next,c.delayRemaining))}function j(a){return function(b){return Math.round(b*a)*(1/a)}}function k(a,c,d,e){function f(a,b){return 1-3*b+3*a}function g(a,b){return 3*b-6*a}function h(a){return 3*a}function i(a,b,c){return((f(b,c)*a+g(b,c))*a+h(b))*a}function j(a,b,c){return 3*f(b,c)*a*a+2*g(b,c)*a+h(b)}function k(b,c){for(var e=0;e<p;++e){var f=j(c,a,d);if(0===f)return c;c-=(i(c,a,d)-b)/f}return c}function l(){for(var b=0;b<t;++b)x[b]=i(b*u,a,d)}function m(b,c,e){var f,g,h=0;do{g=c+(e-c)/2,f=i(g,a,d)-b,f>0?e=g:c=g}while(Math.abs(f)>r&&++h<s);return g}function n(b){for(var c=0,e=1,f=t-1;e!==f&&x[e]<=b;++e)c+=u;--e;var g=(b-x[e])/(x[e+1]-x[e]),h=c+g*u,i=j(h,a,d);return i>=q?k(b,h):0===i?h:m(b,c,c+u)}function o(){y=!0,a===c&&d===e||l()}var p=4,q=.001,r=1e-7,s=10,t=11,u=1/(t-1),v="Float32Array"in b;if(4!==arguments.length)return!1;for(var w=0;w<4;++w)if("number"!=typeof arguments[w]||isNaN(arguments[w])||!isFinite(arguments[w]))return!1;a=Math.min(a,1),d=Math.min(d,1),a=Math.max(a,0),d=Math.max(d,0);var x=v?new Float32Array(t):new Array(t),y=!1,z=function(b){return y||o(),a===c&&d===e?b:0===b?0:1===b?1:i(n(b),c,e)};z.getControlPoints=function(){return[{x:a,y:c},{x:d,y:e}]};var A="generateBezier("+[a,c,d,e]+")";return z.toString=function(){return A},z}function l(a,b){var c=a;return u.isString(a)?y.Easings[a]||(c=!1):c=u.isArray(a)&&1===a.length?j.apply(null,a):u.isArray(a)&&2===a.length?z.apply(null,a.concat([b])):!(!u.isArray(a)||4!==a.length)&&k.apply(null,a),c===!1&&(c=y.Easings[y.defaults.easing]?y.defaults.easing:x),c}function m(a){if(a){var b=y.timestamp&&a!==!0?a:r.now(),c=y.State.calls.length;c>1e4&&(y.State.calls=e(y.State.calls),c=y.State.calls.length);for(var f=0;f<c;f++)if(y.State.calls[f]){var h=y.State.calls[f],i=h[0],j=h[2],k=h[3],l=!!k,q=null,s=h[5],t=h[6];if(k||(k=y.State.calls[f][3]=b-16),s){if(s.resume!==!0)continue;k=h[3]=Math.round(b-t-16),h[5]=null}t=h[6]=b-k;for(var v=Math.min(t/j.duration,1),w=0,x=i.length;w<x;w++){var z=i[w],B=z.element;if(g(B)){var D=!1;if(j.display!==d&&null!==j.display&&"none"!==j.display){if("flex"===j.display){var E=["-webkit-box","-moz-box","-ms-flexbox","-webkit-flex"];o.each(E,function(a,b){A.setPropertyValue(B,"display",b)})}A.setPropertyValue(B,"display",j.display)}j.visibility!==d&&"hidden"!==j.visibility&&A.setPropertyValue(B,"visibility",j.visibility);for(var F in z)if(z.hasOwnProperty(F)&&"element"!==F){var G,H=z[F],I=u.isString(H.easing)?y.Easings[H.easing]:H.easing;if(u.isString(H.pattern)){var J=1===v?function(a,b,c){var d=H.endValue[b];return c?Math.round(d):d}:function(a,b,c){var d=H.startValue[b],e=H.endValue[b]-d,f=d+e*I(v,j,e);return c?Math.round(f):f};G=H.pattern.replace(/{(\d+)(!)?}/g,J)}else if(1===v)G=H.endValue;else{var K=H.endValue-H.startValue;G=H.startValue+K*I(v,j,K)}if(!l&&G===H.currentValue)continue;if(H.currentValue=G,"tween"===F)q=G;else{var L;if(A.Hooks.registered[F]){L=A.Hooks.getRoot(F);var M=g(B).rootPropertyValueCache[L];M&&(H.rootPropertyValue=M)}var N=A.setPropertyValue(B,F,H.currentValue+(p<9&&0===parseFloat(G)?"":H.unitType),H.rootPropertyValue,H.scrollData);A.Hooks.registered[F]&&(A.Normalizations.registered[L]?g(B).rootPropertyValueCache[L]=A.Normalizations.registered[L]("extract",null,N[1]):g(B).rootPropertyValueCache[L]=N[1]),"transform"===N[0]&&(D=!0)}}j.mobileHA&&g(B).transformCache.translate3d===d&&(g(B).transformCache.translate3d="(0px, 0px, 0px)",D=!0),D&&A.flushTransformCache(B)}}j.display!==d&&"none"!==j.display&&(y.State.calls[f][2].display=!1),j.visibility!==d&&"hidden"!==j.visibility&&(y.State.calls[f][2].visibility=!1),j.progress&&j.progress.call(h[1],h[1],v,Math.max(0,k+j.duration-b),k,q),1===v&&n(f)}}y.State.isTicking&&C(m)}function n(a,b){if(!y.State.calls[a])return!1;for(var c=y.State.calls[a][0],e=y.State.calls[a][1],f=y.State.calls[a][2],h=y.State.calls[a][4],i=!1,j=0,k=c.length;j<k;j++){var l=c[j].element;b||f.loop||("none"===f.display&&A.setPropertyValue(l,"display",f.display),"hidden"===f.visibility&&A.setPropertyValue(l,"visibility",f.visibility));var m=g(l);if(f.loop!==!0&&(o.queue(l)[1]===d||!/\.velocityQueueEntryFlag/i.test(o.queue(l)[1]))&&m){m.isAnimating=!1,m.rootPropertyValueCache={};var n=!1;o.each(A.Lists.transforms3D,function(a,b){var c=/^scale/.test(b)?1:0,e=m.transformCache[b];m.transformCache[b]!==d&&new RegExp("^\\("+c+"[^.]").test(e)&&(n=!0,delete m.transformCache[b])}),f.mobileHA&&(n=!0,delete m.transformCache.translate3d),n&&A.flushTransformCache(l),A.Values.removeClass(l,"velocity-animating")}if(!b&&f.complete&&!f.loop&&j===k-1)try{f.complete.call(e,e)}catch(r){setTimeout(function(){throw r},1)}h&&f.loop!==!0&&h(e),m&&f.loop===!0&&!b&&(o.each(m.tweensContainer,function(a,b){if(/^rotate/.test(a)&&(parseFloat(b.startValue)-parseFloat(b.endValue))%360==0){var c=b.startValue;b.startValue=b.endValue,b.endValue=c}/^backgroundPosition/.test(a)&&100===parseFloat(b.endValue)&&"%"===b.unitType&&(b.endValue=0,b.startValue=100)}),y(l,"reverse",{loop:!0,delay:f.delay})),f.queue!==!1&&o.dequeue(l,f.queue)}y.State.calls[a]=!1;for(var p=0,q=y.State.calls.length;p<q;p++)if(y.State.calls[p]!==!1){i=!0;break}i===!1&&(y.State.isTicking=!1,delete y.State.calls,y.State.calls=[])}var o,p=function(){if(c.documentMode)return c.documentMode;for(var a=7;a>4;a--){var b=c.createElement("div");if(b.innerHTML="<!--[if IE "+a+"]><span></span><![endif]-->",b.getElementsByTagName("span").length)return b=null,a}return d}(),q=function(){var a=0;return b.webkitRequestAnimationFrame||b.mozRequestAnimationFrame||function(b){var c,d=(new Date).getTime();return c=Math.max(0,16-(d-a)),a=d+c,setTimeout(function(){b(d+c)},c)}}(),r=function(){var a=b.performance||{};if("function"!=typeof a.now){var c=a.timing&&a.timing.navigationStart?a.timing.navigationStart:(new Date).getTime();a.now=function(){return(new Date).getTime()-c}}return a}(),s=function(){var a=Array.prototype.slice;try{return a.call(c.documentElement),a}catch(b){return function(b,c){var d=this.length;if("number"!=typeof b&&(b=0),"number"!=typeof c&&(c=d),this.slice)return a.call(this,b,c);var e,f=[],g=b>=0?b:Math.max(0,d+b),h=c<0?d+c:Math.min(c,d),i=h-g;if(i>0)if(f=new Array(i),this.charAt)for(e=0;e<i;e++)f[e]=this.charAt(g+e);else for(e=0;e<i;e++)f[e]=this[g+e];return f}}}(),t=function(){return Array.prototype.includes?function(a,b){return a.includes(b)}:Array.prototype.indexOf?function(a,b){return a.indexOf(b)>=0}:function(a,b){for(var c=0;c<a.length;c++)if(a[c]===b)return!0;return!1}},u={isNumber:function(a){return"number"==typeof a},isString:function(a){return"string"==typeof a},isArray:Array.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)},isFunction:function(a){return"[object Function]"===Object.prototype.toString.call(a)},isNode:function(a){return a&&a.nodeType},isWrapped:function(a){return a&&a!==b&&u.isNumber(a.length)&&!u.isString(a)&&!u.isFunction(a)&&!u.isNode(a)&&(0===a.length||u.isNode(a[0]))},isSVG:function(a){return b.SVGElement&&a instanceof b.SVGElement},isEmptyObject:function(a){for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}},v=!1;if(a.fn&&a.fn.jquery?(o=a,v=!0):o=b.Velocity.Utilities,p<=8&&!v)throw new Error("Velocity: IE8 and below require jQuery to be loaded before Velocity.");if(p<=7)return void(jQuery.fn.velocity=jQuery.fn.animate);var w=400,x="swing",y={State:{isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),isAndroid:/Android/i.test(navigator.userAgent),isGingerbread:/Android 2\.3\.[3-7]/i.test(navigator.userAgent),isChrome:b.chrome,isFirefox:/Firefox/i.test(navigator.userAgent),prefixElement:c.createElement("div"),prefixMatches:{},scrollAnchor:null,scrollPropertyLeft:null,scrollPropertyTop:null,isTicking:!1,calls:[],delayedElements:{count:0}},CSS:{},Utilities:o,Redirects:{},Easings:{},Promise:b.Promise,defaults:{queue:"",duration:w,easing:x,begin:d,complete:d,progress:d,display:d,visibility:d,loop:!1,delay:!1,mobileHA:!0,_cacheValues:!0,promiseRejectEmpty:!0},init:function(a){o.data(a,"velocity",{isSVG:u.isSVG(a),isAnimating:!1,computedStyle:null,tweensContainer:null,rootPropertyValueCache:{},transformCache:{}})},hook:null,mock:!1,version:{major:1,minor:5,patch:0},debug:!1,timestamp:!0,pauseAll:function(a){var b=(new Date).getTime();o.each(y.State.calls,function(b,c){if(c){if(a!==d&&(c[2].queue!==a||c[2].queue===!1))return!0;c[5]={resume:!1}}}),o.each(y.State.delayedElements,function(a,c){c&&h(c,b)})},resumeAll:function(a){var b=(new Date).getTime();o.each(y.State.calls,function(b,c){if(c){if(a!==d&&(c[2].queue!==a||c[2].queue===!1))return!0;c[5]&&(c[5].resume=!0)}}),o.each(y.State.delayedElements,function(a,c){c&&i(c,b)})}};b.pageYOffset!==d?(y.State.scrollAnchor=b,y.State.scrollPropertyLeft="pageXOffset",y.State.scrollPropertyTop="pageYOffset"):(y.State.scrollAnchor=c.documentElement||c.body.parentNode||c.body,y.State.scrollPropertyLeft="scrollLeft",y.State.scrollPropertyTop="scrollTop");var z=function(){function a(a){return-a.tension*a.x-a.friction*a.v}function b(b,c,d){var e={x:b.x+d.dx*c,v:b.v+d.dv*c,tension:b.tension,friction:b.friction};return{dx:e.v,dv:a(e)}}function c(c,d){var e={dx:c.v,dv:a(c)},f=b(c,.5*d,e),g=b(c,.5*d,f),h=b(c,d,g),i=1/6*(e.dx+2*(f.dx+g.dx)+h.dx),j=1/6*(e.dv+2*(f.dv+g.dv)+h.dv);return c.x=c.x+i*d,c.v=c.v+j*d,c}return function d(a,b,e){var f,g,h,i={x:-1,v:0,tension:null,friction:null},j=[0],k=0;for(a=parseFloat(a)||500,b=parseFloat(b)||20,e=e||null,i.tension=a,i.friction=b,f=null!==e,f?(k=d(a,b),g=k/e*.016):g=.016;;)if(h=c(h||i,g),j.push(1+h.x),k+=16,!(Math.abs(h.x)>1e-4&&Math.abs(h.v)>1e-4))break;return f?function(a){return j[a*(j.length-1)|0]}:k}}();y.Easings={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},spring:function(a){return 1-Math.cos(4.5*a*Math.PI)*Math.exp(6*-a)}},o.each([["ease",[.25,.1,.25,1]],["ease-in",[.42,0,1,1]],["ease-out",[0,0,.58,1]],["ease-in-out",[.42,0,.58,1]],["easeInSine",[.47,0,.745,.715]],["easeOutSine",[.39,.575,.565,1]],["easeInOutSine",[.445,.05,.55,.95]],["easeInQuad",[.55,.085,.68,.53]],["easeOutQuad",[.25,.46,.45,.94]],["easeInOutQuad",[.455,.03,.515,.955]],["easeInCubic",[.55,.055,.675,.19]],["easeOutCubic",[.215,.61,.355,1]],["easeInOutCubic",[.645,.045,.355,1]],["easeInQuart",[.895,.03,.685,.22]],["easeOutQuart",[.165,.84,.44,1]],["easeInOutQuart",[.77,0,.175,1]],["easeInQuint",[.755,.05,.855,.06]],["easeOutQuint",[.23,1,.32,1]],["easeInOutQuint",[.86,0,.07,1]],["easeInExpo",[.95,.05,.795,.035]],["easeOutExpo",[.19,1,.22,1]],["easeInOutExpo",[1,0,0,1]],["easeInCirc",[.6,.04,.98,.335]],["easeOutCirc",[.075,.82,.165,1]],["easeInOutCirc",[.785,.135,.15,.86]]],function(a,b){y.Easings[b[0]]=k.apply(null,b[1])});var A=y.CSS={RegEx:{isHex:/^#([A-f\d]{3}){1,2}$/i,valueUnwrap:/^[A-z]+\((.*)\)$/i,wrappedValueAlreadyExtracted:/[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,valueSplit:/([A-z]+\(.+\))|(([A-z0-9#-.]+?)(?=\s|$))/gi},Lists:{colors:["fill","stroke","stopColor","color","backgroundColor","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outlineColor"],transformsBase:["translateX","translateY","scale","scaleX","scaleY","skewX","skewY","rotateZ"],transforms3D:["transformPerspective","translateZ","scaleZ","rotateX","rotateY"],units:["%","em","ex","ch","rem","vw","vh","vmin","vmax","cm","mm","Q","in","pc","pt","px","deg","grad","rad","turn","s","ms"],colorNames:{aliceblue:"240,248,255",antiquewhite:"250,235,215",aquamarine:"127,255,212",aqua:"0,255,255",azure:"240,255,255",beige:"245,245,220",bisque:"255,228,196",black:"0,0,0",blanchedalmond:"255,235,205",blueviolet:"138,43,226",blue:"0,0,255",brown:"165,42,42",burlywood:"222,184,135",cadetblue:"95,158,160",chartreuse:"127,255,0",chocolate:"210,105,30",coral:"255,127,80",cornflowerblue:"100,149,237",cornsilk:"255,248,220",crimson:"220,20,60",cyan:"0,255,255",darkblue:"0,0,139",darkcyan:"0,139,139",darkgoldenrod:"184,134,11",darkgray:"169,169,169",darkgrey:"169,169,169",darkgreen:"0,100,0",darkkhaki:"189,183,107",darkmagenta:"139,0,139",darkolivegreen:"85,107,47",darkorange:"255,140,0",darkorchid:"153,50,204",darkred:"139,0,0",darksalmon:"233,150,122",darkseagreen:"143,188,143",darkslateblue:"72,61,139",darkslategray:"47,79,79",darkturquoise:"0,206,209",darkviolet:"148,0,211",deeppink:"255,20,147",deepskyblue:"0,191,255",dimgray:"105,105,105",dimgrey:"105,105,105",dodgerblue:"30,144,255",firebrick:"178,34,34",floralwhite:"255,250,240",forestgreen:"34,139,34",fuchsia:"255,0,255",gainsboro:"220,220,220",ghostwhite:"248,248,255",gold:"255,215,0",goldenrod:"218,165,32",gray:"128,128,128",grey:"128,128,128",greenyellow:"173,255,47",green:"0,128,0",honeydew:"240,255,240",hotpink:"255,105,180",indianred:"205,92,92",indigo:"75,0,130",ivory:"255,255,240",khaki:"240,230,140",lavenderblush:"255,240,245",lavender:"230,230,250",lawngreen:"124,252,0",lemonchiffon:"255,250,205",lightblue:"173,216,230",lightcoral:"240,128,128",lightcyan:"224,255,255",lightgoldenrodyellow:"250,250,210",lightgray:"211,211,211",lightgrey:"211,211,211",lightgreen:"144,238,144",lightpink:"255,182,193",lightsalmon:"255,160,122",lightseagreen:"32,178,170",lightskyblue:"135,206,250",lightslategray:"119,136,153",lightsteelblue:"176,196,222",lightyellow:"255,255,224",limegreen:"50,205,50",lime:"0,255,0",linen:"250,240,230",magenta:"255,0,255",maroon:"128,0,0",mediumaquamarine:"102,205,170",mediumblue:"0,0,205",mediumorchid:"186,85,211",mediumpurple:"147,112,219",mediumseagreen:"60,179,113",mediumslateblue:"123,104,238",mediumspringgreen:"0,250,154",mediumturquoise:"72,209,204",mediumvioletred:"199,21,133",midnightblue:"25,25,112",mintcream:"245,255,250",mistyrose:"255,228,225",moccasin:"255,228,181",navajowhite:"255,222,173",navy:"0,0,128",oldlace:"253,245,230",olivedrab:"107,142,35",olive:"128,128,0",orangered:"255,69,0",orange:"255,165,0",orchid:"218,112,214",palegoldenrod:"238,232,170",palegreen:"152,251,152",paleturquoise:"175,238,238",palevioletred:"219,112,147",papayawhip:"255,239,213",peachpuff:"255,218,185",peru:"205,133,63",pink:"255,192,203",plum:"221,160,221",powderblue:"176,224,230",purple:"128,0,128",red:"255,0,0",rosybrown:"188,143,143",royalblue:"65,105,225",saddlebrown:"139,69,19",salmon:"250,128,114",sandybrown:"244,164,96",seagreen:"46,139,87",seashell:"255,245,238",sienna:"160,82,45",silver:"192,192,192",skyblue:"135,206,235",slateblue:"106,90,205",slategray:"112,128,144",snow:"255,250,250",springgreen:"0,255,127",steelblue:"70,130,180",tan:"210,180,140",teal:"0,128,128",thistle:"216,191,216",tomato:"255,99,71",turquoise:"64,224,208",violet:"238,130,238",wheat:"245,222,179",whitesmoke:"245,245,245",white:"255,255,255",yellowgreen:"154,205,50",yellow:"255,255,0"}},Hooks:{templates:{textShadow:["Color X Y Blur","black 0px 0px 0px"],boxShadow:["Color X Y Blur Spread","black 0px 0px 0px 0px"],clip:["Top Right Bottom Left","0px 0px 0px 0px"],backgroundPosition:["X Y","0% 0%"],transformOrigin:["X Y Z","50% 50% 0px"],perspectiveOrigin:["X Y","50% 50%"]},registered:{},register:function(){for(var a=0;a<A.Lists.colors.length;a++){var b="color"===A.Lists.colors[a]?"0 0 0 1":"255 255 255 1";A.Hooks.templates[A.Lists.colors[a]]=["Red Green Blue Alpha",b]}var c,d,e;if(p)for(c in A.Hooks.templates)if(A.Hooks.templates.hasOwnProperty(c)){d=A.Hooks.templates[c],e=d[0].split(" ");var f=d[1].match(A.RegEx.valueSplit);"Color"===e[0]&&(e.push(e.shift()),f.push(f.shift()),A.Hooks.templates[c]=[e.join(" "),f.join(" ")])}for(c in A.Hooks.templates)if(A.Hooks.templates.hasOwnProperty(c)){d=A.Hooks.templates[c],e=d[0].split(" ");for(var g in e)if(e.hasOwnProperty(g)){var h=c+e[g],i=g;A.Hooks.registered[h]=[c,i]}}},getRoot:function(a){var b=A.Hooks.registered[a];return b?b[0]:a},getUnit:function(a,b){var c=(a.substr(b||0,5).match(/^[a-z%]+/)||[])[0]||"";return c&&t(A.Lists.units,c)?c:""},fixColors:function(a){return a.replace(/(rgba?\(\s*)?(\b[a-z]+\b)/g,function(a,b,c){return A.Lists.colorNames.hasOwnProperty(c)?(b?b:"rgba(")+A.Lists.colorNames[c]+(b?"":",1)"):b+c})},cleanRootPropertyValue:function(a,b){return A.RegEx.valueUnwrap.test(b)&&(b=b.match(A.RegEx.valueUnwrap)[1]),A.Values.isCSSNullValue(b)&&(b=A.Hooks.templates[a][1]),b},extractValue:function(a,b){var c=A.Hooks.registered[a];if(c){var d=c[0],e=c[1];return b=A.Hooks.cleanRootPropertyValue(d,b),b.toString().match(A.RegEx.valueSplit)[e]}return b},injectValue:function(a,b,c){var d=A.Hooks.registered[a];if(d){var e,f=d[0],g=d[1];return c=A.Hooks.cleanRootPropertyValue(f,c),e=c.toString().match(A.RegEx.valueSplit),e[g]=b,e.join(" ")}return c}},Normalizations:{registered:{clip:function(a,b,c){switch(a){case"name":return"clip";case"extract":var d;return A.RegEx.wrappedValueAlreadyExtracted.test(c)?d=c:(d=c.toString().match(A.RegEx.valueUnwrap),d=d?d[1].replace(/,(\s+)?/g," "):c),d;case"inject":return"rect("+c+")"}},blur:function(a,b,c){switch(a){case"name":return y.State.isFirefox?"filter":"-webkit-filter";case"extract":var d=parseFloat(c);if(!d&&0!==d){var e=c.toString().match(/blur\(([0-9]+[A-z]+)\)/i);d=e?e[1]:0}return d;case"inject":return parseFloat(c)?"blur("+c+")":"none"}},opacity:function(a,b,c){if(p<=8)switch(a){case"name":return"filter";case"extract":var d=c.toString().match(/alpha\(opacity=(.*)\)/i);return c=d?d[1]/100:1;case"inject":return b.style.zoom=1,parseFloat(c)>=1?"":"alpha(opacity="+parseInt(100*parseFloat(c),10)+")"}else switch(a){case"name":return"opacity";case"extract":return c;case"inject":return c}}},register:function(){function a(a,b,c){if("border-box"===A.getPropertyValue(b,"boxSizing").toString().toLowerCase()===(c||!1)){var d,e,f=0,g="width"===a?["Left","Right"]:["Top","Bottom"],h=["padding"+g[0],"padding"+g[1],"border"+g[0]+"Width","border"+g[1]+"Width"];for(d=0;d<h.length;d++)e=parseFloat(A.getPropertyValue(b,h[d])),isNaN(e)||(f+=e);return c?-f:f}return 0}function b(b,c){return function(d,e,f){switch(d){case"name":return b;case"extract":return parseFloat(f)+a(b,e,c);case"inject":return parseFloat(f)-a(b,e,c)+"px"}}}p&&!(p>9)||y.State.isGingerbread||(A.Lists.transformsBase=A.Lists.transformsBase.concat(A.Lists.transforms3D));for(var c=0;c<A.Lists.transformsBase.length;c++)!function(){var a=A.Lists.transformsBase[c];A.Normalizations.registered[a]=function(b,c,e){switch(b){case"name":return"transform";case"extract":return g(c)===d||g(c).transformCache[a]===d?/^scale/i.test(a)?1:0:g(c).transformCache[a].replace(/[()]/g,"");case"inject":var f=!1;switch(a.substr(0,a.length-1)){case"translate":f=!/(%|px|em|rem|vw|vh|\d)$/i.test(e);break;case"scal":case"scale":y.State.isAndroid&&g(c).transformCache[a]===d&&e<1&&(e=1),f=!/(\d)$/i.test(e);break;case"skew":f=!/(deg|\d)$/i.test(e);break;case"rotate":f=!/(deg|\d)$/i.test(e)}return f||(g(c).transformCache[a]="("+e+")"),g(c).transformCache[a]}}}();for(var e=0;e<A.Lists.colors.length;e++)!function(){var a=A.Lists.colors[e];A.Normalizations.registered[a]=function(b,c,e){switch(b){case"name":return a;case"extract":var f;if(A.RegEx.wrappedValueAlreadyExtracted.test(e))f=e;else{var g,h={black:"rgb(0, 0, 0)",blue:"rgb(0, 0, 255)",gray:"rgb(128, 128, 128)",green:"rgb(0, 128, 0)",red:"rgb(255, 0, 0)",white:"rgb(255, 255, 255)"};/^[A-z]+$/i.test(e)?g=h[e]!==d?h[e]:h.black:A.RegEx.isHex.test(e)?g="rgb("+A.Values.hexToRgb(e).join(" ")+")":/^rgba?\(/i.test(e)||(g=h.black),f=(g||e).toString().match(A.RegEx.valueUnwrap)[1].replace(/,(\s+)?/g," ")}return(!p||p>8)&&3===f.split(" ").length&&(f+=" 1"),f;case"inject":return/^rgb/.test(e)?e:(p<=8?4===e.split(" ").length&&(e=e.split(/\s+/).slice(0,3).join(" ")):3===e.split(" ").length&&(e+=" 1"),(p<=8?"rgb":"rgba")+"("+e.replace(/\s+/g,",").replace(/\.(\d)+(?=,)/g,"")+")")}}}();A.Normalizations.registered.innerWidth=b("width",!0),A.Normalizations.registered.innerHeight=b("height",!0),A.Normalizations.registered.outerWidth=b("width"),A.Normalizations.registered.outerHeight=b("height")}},Names:{camelCase:function(a){return a.replace(/-(\w)/g,function(a,b){return b.toUpperCase()})},SVGAttribute:function(a){var b="width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2";return(p||y.State.isAndroid&&!y.State.isChrome)&&(b+="|transform"),new RegExp("^("+b+")$","i").test(a)},prefixCheck:function(a){if(y.State.prefixMatches[a])return[y.State.prefixMatches[a],!0];for(var b=["","Webkit","Moz","ms","O"],c=0,d=b.length;c<d;c++){var e;if(e=0===c?a:b[c]+a.replace(/^\w/,function(a){return a.toUpperCase()}),u.isString(y.State.prefixElement.style[e]))return y.State.prefixMatches[a]=e,[e,!0]}return[a,!1]}},Values:{hexToRgb:function(a){var b,c=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i;return a=a.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,b,c,d){return b+b+c+c+d+d}),b=c.exec(a),b?[parseInt(b[1],16),parseInt(b[2],16),parseInt(b[3],16)]:[0,0,0]},isCSSNullValue:function(a){return!a||/^(none|auto|transparent|(rgba\(0, ?0, ?0, ?0\)))$/i.test(a)},getUnitType:function(a){return/^(rotate|skew)/i.test(a)?"deg":/(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(a)?"":"px"},getDisplayType:function(a){var b=a&&a.tagName.toString().toLowerCase();return/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(b)?"inline":/^(li)$/i.test(b)?"list-item":/^(tr)$/i.test(b)?"table-row":/^(table)$/i.test(b)?"table":/^(tbody)$/i.test(b)?"table-row-group":"block"},addClass:function(a,b){if(a)if(a.classList)a.classList.add(b);else if(u.isString(a.className))a.className+=(a.className.length?" ":"")+b;else{var c=a.getAttribute(p<=7?"className":"class")||"";a.setAttribute("class",c+(c?" ":"")+b)}},removeClass:function(a,b){if(a)if(a.classList)a.classList.remove(b);else if(u.isString(a.className))a.className=a.className.toString().replace(new RegExp("(^|\\s)"+b.split(" ").join("|")+"(\\s|$)","gi")," ");else{var c=a.getAttribute(p<=7?"className":"class")||"";a.setAttribute("class",c.replace(new RegExp("(^|s)"+b.split(" ").join("|")+"(s|$)","gi")," "))}}},getPropertyValue:function(a,c,e,f){function h(a,c){var e=0;if(p<=8)e=o.css(a,c);else{var i=!1;/^(width|height)$/.test(c)&&0===A.getPropertyValue(a,"display")&&(i=!0,A.setPropertyValue(a,"display",A.Values.getDisplayType(a)));var j=function(){i&&A.setPropertyValue(a,"display","none")};if(!f){if("height"===c&&"border-box"!==A.getPropertyValue(a,"boxSizing").toString().toLowerCase()){var k=a.offsetHeight-(parseFloat(A.getPropertyValue(a,"borderTopWidth"))||0)-(parseFloat(A.getPropertyValue(a,"borderBottomWidth"))||0)-(parseFloat(A.getPropertyValue(a,"paddingTop"))||0)-(parseFloat(A.getPropertyValue(a,"paddingBottom"))||0);return j(),k}if("width"===c&&"border-box"!==A.getPropertyValue(a,"boxSizing").toString().toLowerCase()){var l=a.offsetWidth-(parseFloat(A.getPropertyValue(a,"borderLeftWidth"))||0)-(parseFloat(A.getPropertyValue(a,"borderRightWidth"))||0)-(parseFloat(A.getPropertyValue(a,"paddingLeft"))||0)-(parseFloat(A.getPropertyValue(a,"paddingRight"))||0);return j(),l}}var m;m=g(a)===d?b.getComputedStyle(a,null):g(a).computedStyle?g(a).computedStyle:g(a).computedStyle=b.getComputedStyle(a,null),"borderColor"===c&&(c="borderTopColor"),e=9===p&&"filter"===c?m.getPropertyValue(c):m[c],""!==e&&null!==e||(e=a.style[c]),j()}if("auto"===e&&/^(top|right|bottom|left)$/i.test(c)){var n=h(a,"position");("fixed"===n||"absolute"===n&&/top|left/i.test(c))&&(e=o(a).position()[c]+"px")}return e}var i;if(A.Hooks.registered[c]){var j=c,k=A.Hooks.getRoot(j);e===d&&(e=A.getPropertyValue(a,A.Names.prefixCheck(k)[0])),A.Normalizations.registered[k]&&(e=A.Normalizations.registered[k]("extract",a,e)),i=A.Hooks.extractValue(j,e)}else if(A.Normalizations.registered[c]){var l,m;l=A.Normalizations.registered[c]("name",a),"transform"!==l&&(m=h(a,A.Names.prefixCheck(l)[0]),A.Values.isCSSNullValue(m)&&A.Hooks.templates[c]&&(m=A.Hooks.templates[c][1])),i=A.Normalizations.registered[c]("extract",a,m)}if(!/^[\d-]/.test(i)){var n=g(a);if(n&&n.isSVG&&A.Names.SVGAttribute(c))if(/^(height|width)$/i.test(c))try{i=a.getBBox()[c]}catch(q){i=0}else i=a.getAttribute(c);else i=h(a,A.Names.prefixCheck(c)[0])}return A.Values.isCSSNullValue(i)&&(i=0),y.debug>=2&&console.log("Get "+c+": "+i),i},setPropertyValue:function(a,c,d,e,f){var h=c;if("scroll"===c)f.container?f.container["scroll"+f.direction]=d:"Left"===f.direction?b.scrollTo(d,f.alternateValue):b.scrollTo(f.alternateValue,d);else if(A.Normalizations.registered[c]&&"transform"===A.Normalizations.registered[c]("name",a))A.Normalizations.registered[c]("inject",a,d),h="transform",d=g(a).transformCache[c];else{if(A.Hooks.registered[c]){var i=c,j=A.Hooks.getRoot(c);e=e||A.getPropertyValue(a,j),d=A.Hooks.injectValue(i,d,e),c=j}if(A.Normalizations.registered[c]&&(d=A.Normalizations.registered[c]("inject",a,d),c=A.Normalizations.registered[c]("name",a)),h=A.Names.prefixCheck(c)[0],p<=8)try{a.style[h]=d}catch(l){y.debug&&console.log("Browser does not support ["+d+"] for ["+h+"]")}else{var k=g(a);k&&k.isSVG&&A.Names.SVGAttribute(c)?a.setAttribute(c,d):a.style[h]=d}y.debug>=2&&console.log("Set "+c+" ("+h+"): "+d)}return[h,d]},flushTransformCache:function(a){var b="",c=g(a);if((p||y.State.isAndroid&&!y.State.isChrome)&&c&&c.isSVG){var d=function(b){return parseFloat(A.getPropertyValue(a,b))},e={translate:[d("translateX"),d("translateY")],skewX:[d("skewX")],skewY:[d("skewY")],scale:1!==d("scale")?[d("scale"),d("scale")]:[d("scaleX"),d("scaleY")],rotate:[d("rotateZ"),0,0]};o.each(g(a).transformCache,function(a){/^translate/i.test(a)?a="translate":/^scale/i.test(a)?a="scale":/^rotate/i.test(a)&&(a="rotate"),e[a]&&(b+=a+"("+e[a].join(" ")+") ",delete e[a])})}else{var f,h;o.each(g(a).transformCache,function(c){if(f=g(a).transformCache[c],"transformPerspective"===c)return h=f,!0;9===p&&"rotateZ"===c&&(c="rotate"),b+=c+f+" "}),h&&(b="perspective"+h+" "+b)}A.setPropertyValue(a,"transform",b)}};A.Hooks.register(),A.Normalizations.register(),y.hook=function(a,b,c){var e;return a=f(a),o.each(a,function(a,f){if(g(f)===d&&y.init(f),c===d)e===d&&(e=A.getPropertyValue(f,b));else{var h=A.setPropertyValue(f,b,c);"transform"===h[0]&&y.CSS.flushTransformCache(f),e=h}}),e};var B=function(){function a(){return k?z.promise||null:p}function e(a,e){function f(f){var k,n;if(i.begin&&0===D)try{i.begin.call(r,r)}catch(V){setTimeout(function(){throw V},1)}if("scroll"===G){var p,q,w,x=/^x$/i.test(i.axis)?"Left":"Top",B=parseFloat(i.offset)||0;i.container?u.isWrapped(i.container)||u.isNode(i.container)?(i.container=i.container[0]||i.container,p=i.container["scroll"+x],w=p+o(a).position()[x.toLowerCase()]+B):i.container=null:(p=y.State.scrollAnchor[y.State["scrollProperty"+x]],q=y.State.scrollAnchor[y.State["scrollProperty"+("Left"===x?"Top":"Left")]],w=o(a).offset()[x.toLowerCase()]+B),j={scroll:{rootPropertyValue:!1,startValue:p,currentValue:p,endValue:w,unitType:"",easing:i.easing,scrollData:{container:i.container,direction:x,alternateValue:q}},element:a},y.debug&&console.log("tweensContainer (scroll): ",j.scroll,a)}else if("reverse"===G){if(!(k=g(a)))return;if(!k.tweensContainer)return void o.dequeue(a,i.queue);"none"===k.opts.display&&(k.opts.display="auto"),"hidden"===k.opts.visibility&&(k.opts.visibility="visible"),k.opts.loop=!1,k.opts.begin=null,k.opts.complete=null,v.easing||delete i.easing,v.duration||delete i.duration,i=o.extend({},k.opts,i),n=o.extend(!0,{},k?k.tweensContainer:null);for(var E in n)if(n.hasOwnProperty(E)&&"element"!==E){var F=n[E].startValue;n[E].startValue=n[E].currentValue=n[E].endValue,n[E].endValue=F,u.isEmptyObject(v)||(n[E].easing=i.easing),y.debug&&console.log("reverse tweensContainer ("+E+"): "+JSON.stringify(n[E]),a)}j=n}else if("start"===G){k=g(a),k&&k.tweensContainer&&k.isAnimating===!0&&(n=k.tweensContainer);var H=function(e,f){var g,l=A.Hooks.getRoot(e),m=!1,p=f[0],q=f[1],r=f[2] 907;if(!(k&&k.isSVG||"tween"===l||A.Names.prefixCheck(l)[1]!==!1
vendor: 5,506 bytes, line 907
907||A.Normalizations.registered[l]!==d))return void(y.debug&&console.log("Skipping ["+l+"] due to a lack of browser support."));(i.display!==d&&null!==i.display&&"none"!==i.display||i.visibility!==d&&"hidden"!==i.visibility)&&/opacity|filter/.test(e)&&!r&&0!==p&&(r=0),i._cacheValues&&n&&n[e]?(r===d&&(r=n[e].endValue+n[e].unitType),m=k.rootPropertyValueCache[l]):A.Hooks.registered[e]?r===d?(m=A.getPropertyValue(a,l),r=A.getPropertyValue(a,e,m)):m=A.Hooks.templates[l][1]:r===d&&(r=A.getPropertyValue(a,e));var s,t,v,w=!1,x=function(a,b){var c,d;return d=(b||"0").toString().toLowerCase().replace(/[%A-z]+$/,function(a){return c=a,""}),c||(c=A.Values.getUnitType(a)),[d,c]};if(r!==p&&u.isString(r)&&u.isString(p)){g="";var z=0,B=0,C=[],D=[],E=0,F=0,G=0;for(r=A.Hooks.fixColors(r),p=A.Hooks.fixColors(p);z<r.length&&B<p.length;){var H=r[z],I=p[B];if(/[\d\.-]/.test(H)&&/[\d\.-]/.test(I)){for(var J=H,K=I,L=".",N=".";++z<r.length;){if((H=r[z])===L)L="..";else if(!/\d/.test(H))break;J+=H}for(;++B<p.length;){if((I=p[B])===N)N="..";else if(!/\d/.test(I))break;K+=I}var O=A.Hooks.getUnit(r,z),P=A.Hooks.getUnit(p,B);if(z+=O.length,B+=P.length,O===P)J===K?g+=J+O:(g+="{"+C.length+(F?"!":"")+"}"+O,C.push(parseFloat(J)),D.push(parseFloat(K)));else{var Q=parseFloat(J),R=parseFloat(K);g+=(E<5?"calc":"")+"("+(Q?"{"+C.length+(F?"!":"")+"}":"0")+O+" + "+(R?"{"+(C.length+(Q?1:0))+(F?"!":"")+"}":"0")+P+")",Q&&(C.push(Q),D.push(0)),R&&(C.push(0),D.push(R))}}else{if(H!==I){E=0;break}g+=H,z++,B++,0===E&&"c"===H||1===E&&"a"===H||2===E&&"l"===H||3===E&&"c"===H||E>=4&&"("===H?E++:(E&&E<5||E>=4&&")"===H&&--E<5)&&(E=0),0===F&&"r"===H||1===F&&"g"===H||2===F&&"b"===H||3===F&&"a"===H||F>=3&&"("===H?(3===F&&"a"===H&&(G=1),F++):G&&","===H?++G>3&&(F=G=0):(G&&F<(G?5:4)||F>=(G?4:3)&&")"===H&&--F<(G?5:4))&&(F=G=0)}}z===r.length&&B===p.length||(y.debug&&console.error('Trying to pattern match mis-matched strings ["'+p+'", "'+r+'"]'),g=d),g&&(C.length?(y.debug&&console.log('Pattern found "'+g+'" -> ',C,D,"["+r+","+p+"]"),r=C,p=D,t=v=""):g=d)}g||(s=x(e,r),r=s[0],v=s[1],s=x(e,p),p=s[0].replace(/^([+-\/*])=/,function(a,b){return w=b,""}),t=s[1],r=parseFloat(r)||0,p=parseFloat(p)||0,"%"===t&&(/^(fontSize|lineHeight)$/.test(e)?(p/=100,t="em"):/^scale/.test(e)?(p/=100,t=""):/(Red|Green|Blue)$/i.test(e)&&(p=p/100*255,t="")));if(/[\/*]/.test(w))t=v;else if(v!==t&&0!==r)if(0===p)t=v;else{h=h||function(){var d={myParent:a.parentNode||c.body,position:A.getPropertyValue(a,"position"),fontSize:A.getPropertyValue(a,"fontSize")},e=d.position===M.lastPosition&&d.myParent===M.lastParent,f=d.fontSize===M.lastFontSize;M.lastParent=d.myParent,M.lastPosition=d.position,M.lastFontSize=d.fontSize;var g={};if(f&&e)g.emToPx=M.lastEmToPx,g.percentToPxWidth=M.lastPercentToPxWidth,g.percentToPxHeight=M.lastPercentToPxHeight;else{var h=k&&k.isSVG?c.createElementNS("http://www.w3.org/2000/svg","rect"):c.createElement("div");y.init(h),d.myParent.appendChild(h),o.each(["overflow","overflowX","overflowY"],function(a,b){y.CSS.setPropertyValue(h,b,"hidden")}),y.CSS.setPropertyValue(h,"position",d.position),y.CSS.setPropertyValue(h,"fontSize",d.fontSize),y.CSS.setPropertyValue(h,"boxSizing","content-box"),o.each(["minWidth","maxWidth","width","minHeight","maxHeight","height"],function(a,b){y.CSS.setPropertyValue(h,b,"100%")}),y.CSS.setPropertyValue(h,"paddingLeft","100em"),g.percentToPxWidth=M.lastPercentToPxWidth=(parseFloat(A.getPropertyValue(h,"width",null,!0))||1)/100,g.percentToPxHeight=M.lastPercentToPxHeight=(parseFloat(A.getPropertyValue(h,"height",null,!0))||1)/100,g.emToPx=M.lastEmToPx=(parseFloat(A.getPropertyValue(h,"paddingLeft"))||1)/100,d.myParent.removeChild(h)}return null===M.remToPx&&(M.remToPx=parseFloat(A.getPropertyValue(c.body,"fontSize"))||16),null===M.vwToPx&&(M.vwToPx=parseFloat(b.innerWidth)/100,M.vhToPx=parseFloat(b.innerHeight)/100),g.remToPx=M.remToPx,g.vwToPx=M.vwToPx,g.vhToPx=M.vhToPx,y.debug>=1&&console.log("Unit ratios: "+JSON.stringify(g),a),g}();var S=/margin|padding|left|right|width|text|word|letter/i.test(e)||/X$/.test(e)||"x"===e?"x":"y";switch(v){case"%":r*="x"===S?h.percentToPxWidth:h.percentToPxHeight;break;case"px":break;default:r*=h[v+"ToPx"]}switch(t){case"%":r*=1/("x"===S?h.percentToPxWidth:h.percentToPxHeight);break;case"px":break;default:r*=1/h[t+"ToPx"]}}switch(w){case"+":p=r+p;break;case"-":p=r-p;break;case"*":p*=r;break;case"/":p=r/p}j[e]={rootPropertyValue:m,startValue:r,currentValue:r,endValue:p,unitType:t,easing:q},g&&(j[e].pattern=g),y.debug&&console.log("tweensContainer ("+e+"): "+JSON.stringify(j[e]),a)};for(var I in s)if(s.hasOwnProperty(I)){var J=A.Names.camelCase(I),K=function(b,c){var d,f,g;return u.isFunction(b)&&(b=b.call(a,e,C)),u.isArray(b)?(d=b[0],!u.isArray(b[1])&&/^[\d-]/.test(b[1])||u.isFunction(b[1])||A.RegEx.isHex.test(b[1])?g=b[1]:u.isString(b[1])&&!A.RegEx.isHex.test(b[1])&&y.Easings[b[1]]||u.isArray(b[1])?(f=c?b[1]:l(b[1],i.duration),g=b[2]):g=b[1]||b[2]):d=b,c||(f=f||i.easing),u.isFunction(d)&&(d=d.call(a,e,C)),u.isFunction(g)&&(g=g.call(a,e,C)),[d||0,f,g]}(s[I]);if(t(A.Lists.colors,J)){var L=K[0],O=K[1],P=K[2];if(A.RegEx.isHex.test(L)){for(var Q=["Red","Green","Blue"],R=A.Values.hexToRgb(L),S=P?A.Values.hexToRgb(P):d,T=0;T<Q.length;T++){var U=[R[T]];O&&U.push(O),S!==d&&U.push(S[T]),H(J+Q[T],U)}continue}}H(J,K)}j.element=a}j.element&&(A.Values.addClass(a,"velocity-animating"),N.push(j),k=g(a),k&&(""===i.queue&&(k.tweensContainer=j,k.opts=i),k.isAnimating=!0),D===C-1?(y.State.calls.push([N,r,i,null,z.resolver,null,0]),
907y.State.isTicking===!1&&(y.State.isTicking=!0,m())):D++)}var h,i=o.extend({},y.defaults,v),j={};switch(g(a)===d&&y.init(a),parseFloat(i.delay)&&i.queue!==!1&&o.queue(a,i.queue,function(b){y.velocityQueueEntryFlag=!0;var c=y.State.delayedElements.count++;y.State.delayedElements[c]=a;var d=function(a){return function(){y.State.delayedElements[a]=!1,b()}}(c);g(a).delayBegin=(new Date).getTime(),g(a).delay=parseFloat(i.delay),g(a).delayTimer={setTimeout:setTimeout(b,parseFloat(i.delay)),next:d}}),i.duration.toString().toLowerCase()){case"fast":i.duration=200;break;case"normal":i.duration=w;break;case"slow":i.duration=600;break;default:i.duration=parseFloat(i.duration)||1}if(y.mock!==!1&&(y.mock===!0?i.duration=i.delay=1:(i.duration*=parseFloat(y.mock)||1,i.delay*=parseFloat(y.mock)||1)),i.easing=l(i.easing,i.duration),i.begin&&!u.isFunction(i.begin)&&(i.begin=null),i.progress&&!u.isFunction(i.progress)&&(i.progress=null),i.complete&&!u.isFunction(i.complete)&&(i.complete=null),i.display!==d&&null!==i.display&&(i.display=i.display.toString().toLowerCase(),"auto"===i.display&&(i.display=y.CSS.Values.getDisplayType(a))),i.visibility!==d&&null!==i.visibility&&(i.visibility=i.visibility.toString().toLowerCase()),i.mobileHA=i.mobileHA&&y.State.isMobile&&!y.State.isGingerbread,i.queue===!1)if(i.delay){var k=y.State.delayedElements.count++;y.State.delayedElements[k]=a;var n=function(a){return function(){y.State.delayedElements[a]=!1,f()}}(k);g(a).delayBegin=(new Date).getTime(),g(a).delay=parseFloat(i.delay),g(a).delayTimer={setTimeout:setTimeout(f,parseFloat(i.delay)),next:n}}else f();else o.queue(a,i.queue,function(a,b){if(b===!0)return z.promise&&z.resolver(r),!0;y.velocityQueueEntryFlag=!0,f(a)});""!==i.queue&&"fx"!==i.queue||"inprogress"===o.queue(a)[0]||o.dequeue(a)}var j,k,p,q,r,s,v,x=arguments[0]&&(arguments[0].p||o.isPlainObject(arguments[0].properties)&&!arguments[0].properties.names||u.isString(arguments[0].properties));u.isWrapped(this)?(k=!1,q=0,r=this,p=this):(k=!0,q=1,r=x?arguments[0].elements||arguments[0].e:arguments[0]);var z={promise:null,resolver:null,rejecter:null};if(k&&y.Promise&&(z.promise=new y.Promise(function(a,b){z.resolver=a,z.rejecter=b})),x?(s=arguments[0].properties||arguments[0].p,v=arguments[0].options||arguments[0].o):(s=arguments[q],v=arguments[q+1]),!(r=f(r)))return void(z.promise&&(s&&v&&v.promiseRejectEmpty===!1?z.resolver():z.rejecter()));var C=r.length,D=0;if(!/^(stop|finish|finishAll|pause|resume)$/i.test(s)&&!o.isPlainObject(v)){var E=q+1;v={};for(var F=E;F<arguments.length;F++)u.isArray(arguments[F])||!/^(fast|normal|slow)$/i.test(arguments[F])&&!/^\d/.test(arguments[F])?u.isString(arguments[F])||u.isArray(arguments[F])?v.easing=arguments[F]:u.isFunction(arguments[F])&&(v.complete=arguments[F]):v.duration=arguments[F]}var G;switch(s){case"scroll":G="scroll";break;case"reverse":G="reverse";break;case"pause":var H=(new Date).getTime();return o.each(r,function(a,b){h(b,H)}),o.each(y.State.calls,function(a,b){var c=!1;b&&o.each(b[1],function(a,e){var f=v===d?"":v;return f!==!0&&b[2].queue!==f&&(v!==d||b[2].queue!==!1)||(o.each(r,function(a,d){if(d===e)return b[5]={resume:!1},c=!0,!1}),!c&&void 0)})}),a();case"resume":return o.each(r,function(a,b){i(b,H)}),o.each(y.State.calls,function(a,b){var c=!1;b&&o.each(b[1],function(a,e){var f=v===d?"":v;return f!==!0&&b[2].queue!==f&&(v!==d||b[2].queue!==!1)||(!b[5]||(o.each(r,function(a,d){if(d===e)return b[5].resume=!0,c=!0,!1}),!c&&void 0))})}),a();case"finish":case"finishAll":case"stop":o.each(r,function(a,b){g(b)&&g(b).delayTimer&&(clearTimeout(g(b).delayTimer.setTimeout),g(b).delayTimer.next&&g(b).delayTimer.next(),delete g(b).delayTimer),"finishAll"!==s||v!==!0&&!u.isString(v)||(o.each(o.queue(b,u.isString(v)?v:""),function(a,b){u.isFunction(b)&&b()}),o.queue(b,u.isString(v)?v:"",[]))});var I=[];return o.each(y.State.calls,function(a,b){b&&o.each(b[1],function(c,e){var f=v===d?"":v;if(f!==!0&&b[2].queue!==f&&(v!==d||b[2].queue!==!1))return!0;o.each(r,function(c,d){if(d===e)if((v===!0||u.isString(v))&&(o.each(o.queue(d,u.isString(v)?v:""),function(a,b){u.is
907Function(b)&&b(null,!0)}),o.queue(d,u.isString(v)?v:"",[])),"stop"===s){var h=g(d);h&&h.tweensContainer&&f!==!1&&o.each(h.tweensContainer,function(a,b){b.endValue=b.currentValue}),I.push(a)}else"finish"!==s&&"finishAll"!==s||(b[2].duration=1)})})}),"stop"===s&&(o.each(I,function(a,b){n(b,!0)}),z.promise&&z.resolver(r)),a();default:if(!o.isPlainObject(s)||u.isEmptyObject(s)){if(u.isString(s)&&y.Redirects[s]){j=o.extend({},v);var J=j.duration,K=j.delay||0;return j.backwards===!0&&(r=o.extend(!0,[],r).reverse()),o.each(r,function(a,b){parseFloat(j.stagger)?j.delay=K+parseFloat(j.stagger)*a:u.isFunction(j.stagger)&&(j.delay=K+j.stagger.call(b,a,C)),j.drag&&(j.duration=parseFloat(J)||(/^(callout|transition)/.test(s)?1e3:w),j.duration=Math.max(j.duration*(j.backwards?1-a/C:(a+1)/C),.75*j.duration,200)),y.Redirects[s].call(b,b,j||{},a,C,r,z.promise?z:d)}),a()}var L="Velocity: First argument ("+s+") was not a property map, a known action, or a registered redirect. Aborting.";return z.promise?z.rejecter(new Error(L)):b.console&&console.log(L),a()}G="start"}var M={lastParent:null,lastPosition:null,lastFontSize:null,lastPercentToPxWidth:null,lastPercentToPxHeight:null,lastEmToPx:null,remToPx:null,vwToPx:null,vhToPx:null},N=[];o.each(r,function(a,b){u.isNode(b)&&e(b,a)}),j=o.extend({},y.defaults,v),j.loop=parseInt(j.loop,10);var O=2*j.loop-1;if(j.loop)for(var P=0;P<O;P++){var Q={delay:j.delay,progress:j.progress};P===O-1&&(Q.display=j.display,Q.visibility=j.visibility,Q.complete=j.complete),B(r,"reverse",Q)}return a()};y=o.extend(B,y),y.animate=B;var C=b.requestAnimationFrame||q;if(!y.State.isMobile&&c.hidden!==d){var D=function(){c.hidden?(C=function(a){return setTimeout(function(){a(!0)},16)},m()):C=b.requestAnimationFrame||q};D(),c.addEventListener("visibilitychange",D)}return a.Velocity=y,a!==b&&(a.fn.velocity=B,a.fn.velocity.defaults=y.defaults),o.each(["Down","Up"],function(a,b){y.Redirects["slide"+b]=function(a,c,e,f,g,h){var i=o.extend({},c),j=i.begin,k=i.complete,l={},m={height:"",marginTop:"",marginBottom:"",paddingTop:"",paddingBottom:""};i.display===d&&(i.display="Down"===b?"inline"===y.CSS.Values.getDisplayType(a)?"inline-block":"block":"none"),i.begin=function(){0===e&&j&&j.call(g,g);for(var c in m)if(m.hasOwnProperty(c)){l[c]=a.style[c];var d=A.getPropertyValue(a,c);m[c]="Down"===b?[d,0]:[0,d]}l.overflow=a.style.overflow,a.style.overflow="hidden"},i.complete=function(){for(var b in l)l.hasOwnProperty(b)&&(a.style[b]=l[b]);e===f-1&&(k&&k.call(g,g),h&&h.resolver(g))},y(a,m,i)}}),o.each(["In","Out"],function(a,b){y.Redirects["fade"+b]=function(a,c,e,f,g,h){var i=o.extend({},c),j=i.complete,k={opacity:"In"===b?1:0};0!==e&&(i.begin=null),i.complete=e!==f-1?null:function(){j&&j.call(g,g),h&&h.resolver(g)},i.display===d&&(i.display="In"===b?"auto":"none"),y(this,k,i)}}),y}(window.jQuery||window.Zepto||window,window,window?window.document:undefined)}); 908/* End */ 909; 910; /* Start:"a:4:{s:4:"full";s:76:"/local/templates/aspro_max/vendor/js/velocity/velocity.ui.js?165235587513257";s:6:"source";s:60:"/local/templates/aspro_max/vendor/js/velocity/velocity.ui.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 911/* VelocityJS.org UI Pack (5.0.4). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License. Portions copyright Daniel Eden, Christian Pucci. */ 912!function(t){"function"==typeof require&&"object"==typeof exports?module.exports=t():"function"==typeof define&&define.amd?define(["velocity"],t):t()}(function(){return function(t,a,e,r){function n(t,a){var e=[];return t&&a?($.each([t,a],function(t,a){var r=[];$.each(a,function(t,a){for(;a.toString().length<5;)a="0"+a;r.push(a)}),e.push(r.join(""))}),parseFloat(e[0])>parseFloat(e[1])):!1}if(!t.Velocity||!t.Velocity.Utilities)return void(a.console&&console.log("Velocity UI Pack: Velocity must be loaded first. Aborting."));var i=t.Velocity,$=i.Utilities,s=i.version,o={major:1,minor:1,patch:0};if(n(o,s)){var l="Velocity UI Pack: You need to update Velocity (jquery.velocity.js) to a newer version. Visit http://github.com/julianshapiro/velocity.";throw alert(l),new Error(l)}i.RegisterEffect=i.RegisterUI=function(t,a){function e(t,a,e,r){var n=0,s;$.each(t.nodeType?[t]:t,function(t,a){r&&(e+=t*r),s=a.parentNode,$.each(["height","paddingTop","paddingBottom","marginTop","marginBottom"],function(t,e){n+=parseFloat(i.CSS.getPropertyValue(a,e))})}),i.animate(s,{height:("In"===a?"+":"-")+"="+n},{queue:!1,easing:"ease-in-out",duration:e*("In"===a?.6:1)})}return i.Redirects[t]=function(n,s,o,l,c,u){function f(){s.display!==r&&"none"!==s.display||!/Out$/.test(t)||$.each(c.nodeType?[c]:c,function(t,a){i.CSS.setPropertyValue(a,"display","none")}),s.complete&&s.complete.call(c,c),u&&u.resolver(c||n)}var p=o===l-1;a.defaultDuration="function"==typeof a.defaultDuration?a.defaultDuration.call(c,c):parseFloat(a.defaultDuration);for(var d=0;d<a.calls.length;d++){var g=a.calls[d],y=g[0],m=s.duration||a.defaultDuration||1e3,X=g[1],Y=g[2]||{},O={};if(O.duration=m*(X||1),O.queue=s.queue||"",O.easing=Y.easing||"ease",O.delay=parseFloat(Y.delay)||0,O._cacheValues=Y._cacheValues||!0,0===d){if(O.delay+=parseFloat(s.delay)||0,0===o&&(O.begin=function(){s.begin&&s.begin.call(c,c);var a=t.match(/(In|Out)$/);a&&"In"===a[0]&&y.opacity!==r&&$.each(c.nodeType?[c]:c,function(t,a){i.CSS.setPropertyValue(a,"opacity",0)}),s.animateParentHeight&&a&&e(c,a[0],m+O.delay,s.stagger)}),null!==s.display)if(s.display!==r&&"none"!==s.display)O.display=s.display;else if(/In$/.test(t)){var v=i.CSS.Values.getDisplayType(n);O.display="inline"===v?"inline-block":v}
vendor: 6,420 bytes, line 912
912s.visibility&&"hidden"!==s.visibility&&(O.visibility=s.visibility)}d===a.calls.length-1&&(O.complete=function(){if(a.reset){for(var t in a.reset){var e=a.reset[t];i.CSS.Hooks.registered[t]!==r||"string"!=typeof e&&"number"!=typeof e||(a.reset[t]=[a.reset[t],a.reset[t]])}var s={duration:0,queue:!1};p&&(s.complete=f),i.animate(n,a.reset,s)}else p&&f()},"hidden"===s.visibility&&(O.visibility=s.visibility)),i.animate(n,y,O)}},i},i.RegisterEffect.packagedEffects={"callout.bounce":{defaultDuration:550,calls:[[{translateY:-30},.25],[{translateY:0},.125],[{translateY:-15},.125],[{translateY:0},.25]]},"callout.shake":{defaultDuration:800,calls:[[{translateX:-11},.125],[{translateX:11},.125],[{translateX:-11},.125],[{translateX:11},.125],[{translateX:-11},.125],[{translateX:11},.125],[{translateX:-11},.125],[{translateX:0},.125]]},"callout.flash":{defaultDuration:1100,calls:[[{opacity:[0,"easeInOutQuad",1]},.25],[{opacity:[1,"easeInOutQuad"]},.25],[{opacity:[0,"easeInOutQuad"]},.25],[{opacity:[1,"easeInOutQuad"]},.25]]},"callout.pulse":{defaultDuration:825,calls:[[{scaleX:1.1,scaleY:1.1},.5,{easing:"easeInExpo"}],[{scaleX:1,scaleY:1},.5]]},"callout.swing":{defaultDuration:950,calls:[[{rotateZ:15},.2],[{rotateZ:-10},.2],[{rotateZ:5},.2],[{rotateZ:-5},.2],[{rotateZ:0},.2]]},"callout.tada":{defaultDuration:1e3,calls:[[{scaleX:.9,scaleY:.9,rotateZ:-3},.1],[{scaleX:1.1,scaleY:1.1,rotateZ:3},.1],[{scaleX:1.1,scaleY:1.1,rotateZ:-3},.1],["reverse",.125],["reverse",.125],["reverse",.125],["reverse",.125],["reverse",.125],[{scaleX:1,scaleY:1,rotateZ:0},.2]]},"transition.fadeIn":{defaultDuration:500,calls:[[{opacity:[1,0]}]]},"transition.fadeOut":{defaultDuration:500,calls:[[{opacity:[0,1]}]]},"transition.flipXIn":{defaultDuration:700,calls:[[{opacity:[1,0],transformPerspective:[800,800],rotateY:[0,-55]}]],reset:{transformPerspective:0}},"transition.flipXOut":{defaultDuration:700,calls:[[{opacity:[0,1],transformPerspective:[800,800],rotateY:55}]],reset:{transformPerspective:0,rotateY:0}},"transition.flipYIn":{defaultDuration:800,calls:[[{opacity:[1,0],transformPerspective:[800,800],rotateX:[0,-45]}]],reset:{transformPerspective:0}},"transition.flipYOut":{defaultDuration:800,calls:[[{opacity:[0,1],transformPerspective:[800,800],rotateX:25}]],reset:{transformPerspective:0,rotateX:0}},"transition.flipBounceXIn":{defaultDuration:900,calls:[[{opacity:[.725,0],transformPerspective:[400,400],rotateY:[-10,90]},.5],[{opacity:.8,rotateY:10},.25],[{opacity:1,rotateY:0},.25]],reset:{transformPerspective:0}},"transition.flipBounceXOut":{defaultDuration:800,calls:[[{opacity:[.9,1],transformPerspective:[400,400],rotateY:-10},.5],[{opacity:0,rotateY:90},.5]],reset:{transformPerspective:0,rotateY:0}},"transition.flipBounceYIn":{defaultDuration:850,calls:[[{opacity:[.725,0],transformPerspective:[400,400],rotateX:[-10,90]},.5],[{opacity:.8,rotateX:10},.25],[{opacity:1,rotateX:0},.25]],reset:{transformPerspective:0}},"transition.flipBounceYOut":{defaultDuration:800,calls:[[{opacity:[.9,1],transformPerspective:[400,400],rotateX:-15},.5],[{opacity:0,rotateX:90},.5]],reset:{transformPerspective:0,rotateX:0}},"transition.swoopIn":{defaultDuration:850,calls:[[{opacity:[1,0],transformOriginX:["100%","50%"],transformOriginY:["100%","100%"],scaleX:[1,0],scaleY:[1,0],translateX:[0,-700],translateZ:0}]],reset:{transformOriginX:"50%",transformOriginY:"50%"}},"transition.swoopOut":{defaultDuration:850,calls:[[{opacity:[0,1],transformOriginX:["50%","100%"],transformOriginY:["100%","100%"],scaleX:0,scaleY:0,translateX:-700,translateZ:0}]],reset:{transformOriginX:"50%",transformOriginY:"50%",scaleX:1,scaleY:1,translateX:0}},"transition.whirlIn":{defaultDuration:850,calls:[[{opacity:[1,0],transformOriginX:["50%","50%"],transformOriginY:["50%","50%"],scaleX:[1,0],scaleY:[1,0],rotateY:[0,160]},1,{easing:"easeInOutSine"}]]},"transition.whirlOut":{defaultDuration:750,calls:[[{opacity:[0,"easeInOutQuint",1],transformOriginX:["50%","50%"],transformOriginY:["50%","50%"],scaleX:0,scaleY:0,rotateY:160},1,{easing:"swing"}]],reset:{scaleX:1,scaleY:1,rotateY:0}},"transition.shrinkIn":{defaultDuration:750,calls:[[{opacity:[1,0],transformOriginX:["50%","50%"],transformOriginY:["50%","50%"],scaleX:[1,1.5],scaleY:[1,1.5],translateZ:0}]]},"transition.shrinkOut":{defaultDuration:600,calls:[[{opacity:[0,1],transformOriginX:["50%","50%"],transformOriginY:["50%","50%"],scaleX:1.3,scaleY:1.3,translateZ:0}]],reset:{scaleX:1,scaleY:1}},"transition.expandIn":{defaultDuration:700,calls:[[{opacity:[1,0],transformOriginX:["50%","50%"],transformOriginY:["50%","50%"],scaleX:[1,.625],scaleY:[1,.625],translateZ:0}]]},"transition.expandOut":{defaultDuration:700,calls:[[{opacity:[0,1],transformOriginX:["50%","50%"],transformOriginY:["50%","50%"],scaleX:.5,scaleY:.5,translateZ:0}]],reset:{scaleX:1,scaleY:1}},"transition.bounceIn":{defaultDuration:800,calls:[[{opacity:[1,0],scaleX:[1.05,.3],scaleY:[1.05,.3]},.4],[{scaleX:.9,scaleY:.9,translateZ:0},.2],[{scaleX:1,scaleY:1},.5]]},"transition.bounceOut":{defaultDuration:800,calls:[[{scaleX:.95,scaleY:.95},.35],[{scaleX:1.1,scaleY:1.1,translateZ:0},.35],[{opacity:[0,1],scaleX:.3,scaleY:.3},.3]],reset:{scaleX:1,scaleY:1}},"transition.bounceUpIn":{defaultDuration:800,calls:[[{opacity:[1,0],translateY:[-30,1e3]},.6,{easing:"easeOutCirc"}],[{translateY:10},.2],[{translateY:0},.2]]},"transition.bounceUpOut":{defaultDuration:1e3,calls:[[{translateY:20},.2],[{opacity:[0,"easeInCirc",1],translateY:-1e3},.8]],reset:{translateY:0}},"transition.bounceDownIn":{defaultDuration:800,calls:[[{opacity:[1,0],translateY:[30,-1e3]},.6,{easing:"easeOutCirc"}],[{translateY:-10},.2],[{translateY:0},.2]]},"transition.bounceDownOut":{defaultDuration:1e3,calls:[[{translateY:-20},.2],[{opacity:[0,"easeInCirc",1],translateY:1e3},.8]],reset:{translateY:0}},"transition.bounceLeftIn":{defaultDuration:750,calls:[[{opacity:[1,0],translateX:[30,-1250]},.6,{easing:"easeOutCirc"}],[{translateX:-10},.2],[{translateX:0},.2]]},"transition.bounceLeftOut":{defaultDuration:750,calls:[[{translateX:30},.2],[{opacity:[0,"easeInCirc",1],translateX:-1250},.8]],reset:{translateX:0}},"transition.bounceRightIn":{defaultDuration:750,calls:[[{opacity:[1,0],translateX:[-30,1250]},.6,{easing:"easeOutCirc"}],[{translateX:10},.2],[{translateX:0},.2]]},"transition.bounceRightOut":{defaultDuration:750,calls:[[{translateX:-30},.2],[{opacity:[0,"easeInCirc",1],translateX:1250},.8]],reset:{translateX:0}}
912,"transition.slideUpIn":{defaultDuration:900,calls:[[{opacity:[1,0],translateY:[0,20],translateZ:0}]]},"transition.slideUpOut":{defaultDuration:900,calls:[[{opacity:[0,1],translateY:-20,translateZ:0}]],reset:{translateY:0}},"transition.slideDownIn":{defaultDuration:900,calls:[[{opacity:[1,0],translateY:[0,-20],translateZ:0}]]},"transition.slideDownOut":{defaultDuration:900,calls:[[{opacity:[0,1],translateY:20,translateZ:0}]],reset:{translateY:0}},"transition.slideLeftIn":{defaultDuration:1e3,calls:[[{opacity:[1,0],translateX:[0,-20],translateZ:0}]]},"transition.slideLeftOut":{defaultDuration:1050,calls:[[{opacity:[0,1],translateX:-20,translateZ:0}]],reset:{translateX:0}},"transition.slideRightIn":{defaultDuration:1e3,calls:[[{opacity:[1,0],translateX:[0,20],translateZ:0}]]},"transition.slideRightOut":{defaultDuration:1050,calls:[[{opacity:[0,1],translateX:20,translateZ:0}]],reset:{translateX:0}},"transition.slideUpBigIn":{defaultDuration:850,calls:[[{opacity:[1,0],translateY:[0,75],translateZ:0}]]},"transition.slideUpBigOut":{defaultDuration:800,calls:[[{opacity:[0,1],translateY:-75,translateZ:0}]],reset:{translateY:0}},"transition.slideDownBigIn":{defaultDuration:850,calls:[[{opacity:[1,0],translateY:[0,-75],translateZ:0}]]},"transition.slideDownBigOut":{defaultDuration:800,calls:[[{opacity:[0,1],translateY:75,translateZ:0}]],reset:{translateY:0}},"transition.slideLeftBigIn":{defaultDuration:800,calls:[[{opacity:[1,0],translateX:[0,-75],translateZ:0}]]},"transition.slideLeftBigOut":{defaultDuration:750,calls:[[{opacity:[0,1],translateX:-75,translateZ:0}]],reset:{translateX:0}},"transition.slideRightBigIn":{defaultDuration:800,calls:[[{opacity:[1,0],translateX:[0,75],translateZ:0}]]},"transition.slideRightBigOut":{defaultDuration:750,calls:[[{opacity:[0,1],translateX:75,translateZ:0}]],reset:{translateX:0}},"transition.perspectiveUpIn":{defaultDuration:800,calls:[[{opacity:[1,0],transformPerspective:[800,800],transformOriginX:[0,0],transformOriginY:["100%","100%"],rotateX:[0,-180]}]],reset:{transformPerspective:0,transformOriginX:"50%",transformOriginY:"50%"}},"transition.perspectiveUpOut":{defaultDuration:850,calls:[[{opacity:[0,1],transformPerspective:[800,800],transformOriginX:[0,0],transformOriginY:["100%","100%"],rotateX:-180}]],reset:{transformPerspective:0,transformOriginX:"50%",transformOriginY:"50%",rotateX:0}},"transition.perspectiveDownIn":{defaultDuration:800,calls:[[{opacity:[1,0],transformPerspective:[800,800],transformOriginX:[0,0],transformOriginY:[0,0],rotateX:[0,180]}]],reset:{transformPerspective:0,transformOriginX:"50%",transformOriginY:"50%"}},"transition.perspectiveDownOut":{defaultDuration:850,calls:[[{opacity:[0,1],transformPerspective:[800,800],transformOriginX:[0,0],transformOriginY:[0,0],rotateX:180}]],reset:{transformPerspective:0,transformOriginX:"50%",transformOriginY:"50%",rotateX:0}},"transition.perspectiveLeftIn":{defaultDuration:950,calls:[[{opacity:[1,0],transformPerspective:[2e3,2e3],transformOriginX:[0,0],transformOriginY:[0,0],rotateY:[0,-180]}]],reset:{transformPerspective:0,transformOriginX:"50%",transformOriginY:"50%"}},"transition.perspectiveLeftOut":{defaultDuration:950,calls:[[{opacity:[0,1],transformPerspective:[2e3,2e3],transformOriginX:[0,0],transformOriginY:[0,0],rotateY:-180}]],reset:{transformPerspective:0,transformOriginX:"50%",transformOriginY:"50%",rotateY:0}},"transition.perspectiveRightIn":{defaultDuration:950,calls:[[{opacity:[1,0],transformPerspective:[2e3,2e3],transformOriginX:["100%","100%"],transformOriginY:[0,0],rotateY:[0,180]}]],reset:{transformPerspective:0,transformOriginX:"50%",transformOriginY:"50%"}},"transition.perspectiveRightOut":{defaultDuration:950,calls:[[{opacity:[0,1],transformPerspective:[2e3,2e3],transformOriginX:["100%","100%"],transformOriginY:[0,0],rotateY:180}]],reset:{transformPerspective:0,transformOriginX:"50%",transformOriginY:"50%",rotateY:0}}};for(var c in i.RegisterEffect.packagedEffects)i.RegisterEffect(c,i.RegisterEffect.packagedEffects[c]);i.RunSequence=function(t){var a=$.extend(!0,[],t);a.length>1&&($.each(a.reverse(),function(t,e){var r=a[t+1];if(r){var n=e.o||e.options,s=r.o||r.options,o=n&&n.sequenceQueue===!1?"begin":"complete",l=s&&s[o],c={};c[o]=function(){var t=r.e||r.elements,a=t.nodeType?[t]:t;l&&l.call(a,a),i(e)},r.o?r.o=$.extend({},s,c):r.options=$.extend({},s,c)}}),a.reverse()),i(a[0])}}(window.jQuery||window.Zepto||window,window,document)}); 913/* End */ 914; 915; /* Start:"a:4:{s:4:"full";s:54:"/local/templates/aspro_max/js/browser.js?1652355709996";s:6:"source";s:40:"/local/templates/aspro_max/js/browser.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 916var matched, browser; 917 918jQuery.uaMatch = function( ua ) { 919 ua = ua.toLowerCase(); 920 921 var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) || 922 /(webkit)[ \/]([\w.]+)/.exec( ua ) || 923 /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) || 924 /(msie)[\s?]([\w.]+)/.exec( ua ) || 925 /(trident)(?:.*? rv:([\w.]+)|)/.exec( ua ) || 926 ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) || 927 []; 928 929 return { 930 browser: match[ 1 ] || "", 931 version: match[ 2 ] || "0" 932 }; 933}; 934 935matched = jQuery.uaMatch( navigator.userAgent ); 936//IE 11+ fix (Trident) 937matched.browser = matched.browser == 'trident' ? 'msie' : matched.browser; 938browser = {}; 939 940if ( matched.browser ) { 941 browser[ matched.browser ] = true; 942 browser.version = matched.version; 943} 944 945// Chrome is Webkit, but Webkit is also Safari. 946if ( browser.chrome ) { 947 browser.webkit = true; 948} else if ( browser.webkit ) { 949 browser.safari = true; 950} 951 952jQuery.browser = browser;
vendor: 161,727 bytes, lines 953-6619
953/* End */ 954; 955; /* Start:"a:4:{s:4:"full";s:65:"/local/templates/aspro_max/js/jquery.fancybox.js?1652355708160667";s:6:"source";s:48:"/local/templates/aspro_max/js/jquery.fancybox.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 956// ================================================== 957// fancyBox v3.5.7 958// 959// Licensed GPLv3 for open source use 960// or fancyBox Commercial License for commercial use 961// 962// http://fancyapps.com/fancybox/ 963// Copyright 2019 fancyApps 964// 965// ================================================== 966(function (window, document, $, undefined) { 967 "use strict"; 968 969 window.console = window.console || { 970 info: function (stuff) {} 971 }; 972 973 // If there's no jQuery, fancyBox can't work 974 // ========================================= 975 976 if (!$) { 977 return; 978 } 979 980 // Check if fancyBox is already initialized 981 // ======================================== 982 983 if ($.fn.fancybox) { 984 console.info("fancyBox already initialized"); 985 986 return; 987 } 988 989 // Private default settings 990 // ======================== 991 992 var defaults = { 993 // Close existing modals 994 // Set this to false if you do not need to stack multiple instances 995 closeExisting: false, 996 997 // Enable infinite gallery navigation 998 loop: false, 999 1000 // Horizontal space between slides 1001 gutter: 50, 1002 1003 // Enable keyboard navigation 1004 keyboard: true, 1005 1006 // Should allow caption to overlap the content 1007 preventCaptionOverlap: true, 1008 1009 // Should display navigation arrows at the screen edges 1010 arrows: true, 1011 1012 // Should display counter at the top left corner 1013 infobar: true, 1014 1015 // Should display close button (using `btnTpl.smallBtn` template) over the content 1016 // Can be true, false, "auto" 1017 // If "auto" - will be automatically enabled for "html", "inline" or "ajax" items 1018 smallBtn: "auto", 1019 1020 // Should display toolbar (buttons at the top) 1021 // Can be true, false, "auto" 1022 // If "auto" - will be automatically hidden if "smallBtn" is enabled 1023 toolbar: "auto", 1024 1025 // What buttons should appear in the top right corner. 1026 // Buttons will be created using templates from `btnTpl` option 1027 // and they will be placed into toolbar (class="fancybox-toolbar"` element) 1028 buttons: [ 1029 "zoom", 1030 //"share", 1031 "slideShow", 1032 //"fullScreen", 1033 //"download", 1034 "thumbs", 1035 "close" 1036 ], 1037 1038 // Detect "idle" time in seconds 1039 idleTime: 3, 1040 1041 // Disable right-click and use simple image protection for images 1042 protect: false, 1043 1044 // Shortcut to make content "modal" - disable keyboard navigtion, hide buttons, etc 1045 modal: false, 1046 1047 image: { 1048 // Wait for images to load before displaying 1049 // true - wait for image to load and then display; 1050 // false - display thumbnail and load the full-sized image over top, 1051 // requires predefined image dimensions (`data-width` and `data-height` attributes) 1052 preload: false 1053 }, 1054 1055 ajax: { 1056 // Object containing settings for ajax request 1057 settings: { 1058 // This helps to indicate that request comes from the modal 1059 // Feel free to change naming 1060 data: { 1061 fancybox: true 1062 } 1063 } 1064 }, 1065 1066 iframe: { 1067 // Iframe template 1068 tpl: '<iframe id="fancybox-frame{rnd}" name="fancybox-frame{rnd}" class="fancybox-iframe" allowfullscreen="allowfullscreen" allow="autoplay; fullscreen" src=""></iframe>', 1069 1070 // Preload iframe before displaying it 1071 // This allows to calculate iframe content width and height 1072 // (note: Due to "Same Origin Policy", you can't get cross domain data). 1073 preload: true, 1074 1075 // Custom CSS styling for iframe wrapping element 1076 // You can use this to set custom iframe dimensions 1077 css: {}, 1078 1079 // Iframe tag attributes 1080 attr: { 1081 scrolling: "auto" 1082 } 1083 }, 1084 1085 // For HTML5 video only 1086 video: { 1087 tpl: '<video class="fancybox-video" controls controlsList="nodownload" poster="{{poster}}">' + 1088 '<source src="{{src}}" type="{{format}}" />' + 1089 'Sorry, your browser doesn\'t support embedded videos, <a href="{{src}}">download</a> and watch with your favorite video player!' + 1090 "</video>", 1091 format: "", // custom video format 1092 autoStart: true 1093 }, 1094 1095 // Default content type if cannot be detected automatically 1096 defaultType: "image", 1097 1098 // Open/close animation type 1099 // Possible values: 1100 // false - disable 1101 // "zoom" - zoom images from/to thumbnail 1102 // "fade" 1103 // "zoom-in-out" 1104 // 1105 animationEffect: "zoom", 1106 1107 // Duration in ms for open/close animation 1108 animationDuration: 366, 1109 1110 // Should image change opacity while zooming 1111 // If opacity is "auto", then opacity will be changed if image and thumbnail have different aspect ratios 1112 zoomOpacity: "auto", 1113 1114 // Transition effect between slides 1115 // 1116 // Possible values: 1117 // false - disable 1118 // "fade' 1119 // "slide' 1120 // "circular' 1121 // "tube' 1122 // "zoom-in-out' 1123 // "rotate' 1124 // 1125 transitionEffect: "fade", 1126 1127 // Duration in ms for transition animation 1128 transitionDuration: 366, 1129 1130 // Custom CSS class for slide element 1131 slideClass: "", 1132 1133 // Custom CSS class for layout 1134 baseClass: "", 1135 1136 // Base template for layout 1137 baseTpl: '<div class="fancybox-container" role="dialog" tabindex="-1">' + 1138 '<div class="fancybox-bg"></div>' + 1139 '<div class="fancybox-inner">' + 1140 '<div class="fancybox-infobar"><span data-fancybox-index></span> / <span data-fancybox-count></span></div>' + 1141 '<div class="fancybox-toolbar">{{buttons}}</div>' + 1142 '<div class="fancybox-navigation">{{arrows}}</div>' + 1143 '<div class="fancybox-stage"></div>' + 1144 '<div class="fancybox-caption"><div class="fancybox-caption__body"></div></div>' + 1145 "</div>" + 1146 "</div>", 1147 1148 // Loading indicator template 1149 spinnerTpl: '<div class="fancybox-loading"></div>', 1150 1151 // Error message template 1152 errorTpl: '<div class="fancybox-error"><p>{{ERROR}}</p></div>', 1153 1154 btnTpl: { 1155 download: '<a download data-fancybox-download class="fancybox-button fancybox-button--download" title="{{DOWNLOAD}}" href="javascript:;">' + 1156 '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18.62 17.09V19H5.38v-1.91zm-2.97-6.96L17 11.45l-5 4.87-5-4.87 1.36-1.32 2.68 2.64V5h1.92v7.77z"/></svg>' + 1157 "</a>", 1158 1159 zoom: '<button data-fancybox-zoom class="fancybox-button fancybox-button--zoom" title="{{ZOOM}}">' + 1160 '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18.7 17.3l-3-3a5.9 5.9 0 0 0-.6-7.6 5.9 5.9 0 0 0-8.4 0 5.9 5.9 0 0 0 0 8.4 5.9 5.9 0 0 0 7.7.7l3 3a1 1 0 0 0 1.3 0c.4-.5.4-1 0-1.5zM8.1 13.8a4 4 0 0 1 0-5.7 4 4 0 0 1 5.7 0 4 4 0 0 1 0 5.7 4 4 0 0 1-5.7 0z"/></svg>' + 1161 "</button>", 1162 1163 close: '<button data-fancybox-close class="fancybox-button fancybox-button--close" title="{{CLOSE}}">' + 1164 '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 10.6L6.6 5.2 5.2 6.6l5.4 5.4-5.4 5.4 1.4 1.4 5.4-5.4 5.4 5.4 1.4-1.4-5.4-5.4 5.4-5.4-1.4-1.4-5.4 5.4z"/></svg>' + 1165 "</button>", 1166 1167 // Arrows 1168 arrowLeft: '<button data-fancybox-prev class="fancybox-button fancybox-button--arrow_left" title="{{PREV}}">' + 1169 '<div><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M11.28 15.7l-1.34 1.37L5 12l4.94-5.07 1.34 1.38-2.68 2.72H19v1.94H8.6z"/></svg></div>' + 1170 "</button>", 1171 1172 arrowRight: '<button data-fancybox-next class="fancybox-button fancybox-button--arrow_right" title="{{NEXT}}">' + 1173 '<div><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M15.4 12.97l-2.68 2.72 1.34 1.38L19 12l-4.94-5.07-1.34 1.38 2.68 2.72H5v1.94z"/></svg></div>' + 1174 "</button>", 1175 1176 // This small close button will be appended to your html/inline/ajax content by default, 1177 // if "smallBtn" option is not set to false 1178 smallBtn: '<button type="button" data-fancybox-close class="fancybox-button fancybox-close-small" title="{{CLOSE}}">' + 1179 '<svg xmlns="http://www.w3.org/2000/svg" version="1" viewBox="0 0 24 24"><path d="M13 12l5-5-1-1-5 5-5-5-1 1 5 5-5 5 1 1 5-5 5 5 1-1z"/></svg>' + 1180 "</button>" 1181 }, 1182 1183 // Container is injected into this element 1184 parentEl: "body", 1185 1186 // Hide browser vertical scrollbars; use at your own risk 1187 hideScrollbar: true, 1188 1189 // Focus handling 1190 // ============== 1191 1192 // Try to focus on the first focusable element after opening 1193 autoFocus: true, 1194 1195 // Put focus back to active element after closing 1196 backFocus: true, 1197 1198 // Do not let user to focus on element outside modal content 1199 trapFocus: true, 1200 1201 // Module specific options 1202 // ======================= 1203 1204 fullScreen: { 1205 autoStart: false 1206 }, 1207 1208 // Set `touch: false` to disable panning/swiping 1209 touch: { 1210 vertical: true, // Allow to drag content vertically 1211 momentum: true // Continue movement after releasing mouse/touch when panning 1212 }, 1213 1214 // Hash value when initializing manually, 1215 // set `false` to disable hash change 1216 hash: null, 1217 1218 // Customize or add new media types 1219 // Example: 1220 /* 1221 media : { 1222 youtube : { 1223 params : { 1224 autoplay : 0 1225 } 1226 } 1227 } 1228 */ 1229 media: {}, 1230 1231 slideShow: { 1232 autoStart: false, 1233 speed: 3000 1234 }, 1235 1236 thumbs: { 1237 autoStart: false, // Display thumbnails on opening 1238 hideOnClose: true, // Hide thumbnail grid when closing animation starts 1239 parentEl: ".fancybox-container", // Container is injected into this element 1240 axis: "y" // Vertical (y) or horizontal (x) scrolling 1241 }, 1242 1243 // Use mousewheel to navigate gallery 1244 // If 'auto' - enabled for images only 1245 wheel: "auto", 1246 1247 // Callbacks 1248 //========== 1249 1250 // See Documentation/API/Events for more information 1251 // Example: 1252 /* 1253 afterShow: function( instance, current ) { 1254 console.info( 'Clicked element:' ); 1255 console.info( current.opts.$orig ); 1256 } 1257 */ 1258 1259 onInit: $.noop, // When instance has been initialized 1260 1261 beforeLoad: $.noop, // Before the content of a slide is being loaded 1262 afterLoad: $.noop, // When the content of a slide is done loading 1263 1264 beforeShow: $.noop, // Before open animation starts 1265 afterShow: $.noop, // When content is done loading and animating 1266 1267 beforeClose: $.noop, // Before the instance attempts to close. Return false to cancel the close. 1268 afterClose: $.noop, // After instance has been closed 1269 1270 onActivate: $.noop, // When instance is brought to front 1271 onDeactivate: $.noop, // When other instance has been activated 1272 1273 // Interaction 1274 // =========== 1275 1276 // Use options below to customize taken action when user clicks or double clicks on the fancyBox area, 1277 // each option can be string or method that returns value. 1278 // 1279 // Possible values: 1280 // "close" - close instance 1281 // "next" - move to next gallery item 1282 // "nextOrClose" - move to next gallery item or close if gallery has only one item 1283 // "toggleControls" - show/hide controls 1284 // "zoom" - zoom image (if loaded) 1285 // false - do nothing 1286 1287 // Clicked on the content 1288 clickContent: function (current, event) { 1289 return current.type === "image" ? "zoom" : false; 1290 }, 1291 1292 // Clicked on the slide 1293 clickSlide: "close", 1294 1295 // Clicked on the background (backdrop) element; 1296 // if you have not changed the layout, then most likely you need to use `clickSlide` option 1297 clickOutside: "close", 1298 1299 // Same as previous two, but for double click 1300 dblclickContent: false, 1301 dblclickSlide: false, 1302 dblclickOutside: false, 1303 1304 // Custom options when mobile device is detected 1305 // ============================================= 1306 1307 mobile: { 1308 preventCaptionOverlap: false, 1309 idleTime: false, 1310 clickContent: function (current, event) { 1311 return current.type === "image" ? "toggleControls" : false; 1312 }, 1313 clickSlide: function (current, event) { 1314 return current.type === "image" ? "toggleControls" : "close"; 1315 }, 1316 dblclickContent: function (current, event) { 1317 return current.type === "image" ? "zoom" : false; 1318 }, 1319 dblclickSlide: function (current, event) { 1320 return current.type === "image" ? "zoom" : false; 1321 } 1322 }, 1323 1324 // Internationalization 1325 // ==================== 1326 1327 lang: "en", 1328 i18n: { 1329 en: { 1330 CLOSE: "Close", 1331 NEXT: "Next", 1332 PREV: "Previous", 1333 ERROR: "The requested content cannot be loaded. <br/> Please try again later.", 1334 PLAY_START: "Start slideshow", 1335 PLAY_STOP: "Pause slideshow", 1336 FULL_SCREEN: "Full screen", 1337 THUMBS: "Thumbnails", 1338 DOWNLOAD: "Download", 1339 SHARE: "Share", 1340 ZOOM: "Zoom" 1341 }, 1342 de: { 1343 CLOSE: "Schließen", 1344 NEXT: "Weiter", 1345 PREV: "Zurück", 1346 ERROR: "Die angeforderten Daten konnten nicht geladen werden. <br/> Bitte versuchen Sie es später nochmal.", 1347 PLAY_START: "Diaschau starten", 1348 PLAY_STOP: "Diaschau beenden", 1349 FULL_SCREEN: "Vollbild", 1350 THUMBS: "Vorschaubilder", 1351 DOWNLOAD: "Herunterladen", 1352 SHARE: "Teilen", 1353 ZOOM: "Vergrößern" 1354 } 1355 } 1356 }; 1357 1358 // Few useful variables and methods 1359 // ================================ 1360 1361 var $W = $(window); 1362 var $D = $(document); 1363 1364 var called = 0; 1365 1366 // Check if an object is a jQuery object and not a native JavaScript object 1367 // ======================================================================== 1368 var isQuery = function (obj) { 1369 return obj && obj.hasOwnProperty && obj instanceof $; 1370 }; 1371 1372 // Handle multiple browsers for "requestAnimationFrame" and "cancelAnimationFrame" 1373 // =============================================================================== 1374 var requestAFrame = (function () { 1375 return ( 1376 window.requestAnimationFrame || 1377 window.webkitRequestAnimationFrame || 1378 window.mozRequestAnimationFrame || 1379 window.oRequestAnimationFrame || 1380 // if all else fails, use setTimeout 1381 function (callback) { 1382 return window.setTimeout(callback, 1000 / 60); 1383 } 1384 ); 1385 })(); 1386 1387 var cancelAFrame = (function () { 1388 return ( 1389 window.cancelAnimationFrame || 1390 window.webkitCancelAnimationFrame || 1391 window.mozCancelAnimationFrame || 1392 window.oCancelAnimationFrame || 1393 function (id) { 1394 window.clearTimeout(id); 1395 } 1396 ); 1397 })(); 1398 1399 // Detect the supported transition-end event property name 1400 // ======================================================= 1401 var transitionEnd = (function () { 1402 var el = document.createElement("fakeelement"), 1403 t; 1404 1405 var transitions = { 1406 transition: "transitionend", 1407 OTransition: "oTransitionEnd", 1408 MozTransition: "transitionend", 1409 WebkitTransition: "webkitTransitionEnd" 1410 }; 1411 1412 for (t in transitions) { 1413 if (el.style[t] !== undefined) { 1414 return transitions[t]; 1415 } 1416 } 1417 1418 return "transitionend"; 1419 })(); 1420 1421 // Force redraw on an element. 1422 // This helps in cases where the browser doesn't redraw an updated element properly 1423 // ================================================================================ 1424 var forceRedraw = function ($el) { 1425 return $el && $el.length && $el[0].offsetHeight; 1426 }; 1427 1428 // Exclude array (`buttons`) options from deep merging 1429 // =================================================== 1430 var mergeOpts = function (opts1, opts2) { 1431 var rez = $.extend(true, {}, opts1, opts2); 1432 1433 $.each(opts2, function (key, value) { 1434 if ($.isArray(value)) { 1435 rez[key] = value; 1436 } 1437 }); 1438 1439 return rez; 1440 }; 1441 1442 // How much of an element is visible in viewport 1443 // ============================================= 1444 1445 var inViewport = function (elem) { 1446 var elemCenter, rez; 1447 1448 if (!elem || elem.ownerDocument !== document) { 1449 return false; 1450 } 1451 1452 $(".fancybox-container").css("pointer-events", "none"); 1453 1454 elemCenter = { 1455 x: elem.getBoundingClientRect().left + elem.offsetWidth / 2, 1456 y: elem.getBoundingClientRect().top + elem.offsetHeight / 2 1457 }; 1458 1459 rez = document.elementFromPoint(elemCenter.x, elemCenter.y) === elem; 1460 1461 $(".fancybox-container").css("pointer-events", ""); 1462 1463 return rez; 1464 }; 1465 1466 // Class definition 1467 // ================ 1468 1469 var FancyBox = function (content, opts, index) { 1470 var self = this; 1471 1472 self.opts = mergeOpts({ 1473 index: index 1474 }, $.fancybox.defaults); 1475 1476 if ($.isPlainObject(opts)) { 1477 self.opts = mergeOpts(self.opts, opts); 1478 } 1479 1480 if ($.fancybox.isMobile) { 1481 self.opts = mergeOpts(self.opts, self.opts.mobile); 1482 } 1483 1484 self.id = self.opts.id || ++called; 1485 1486 self.currIndex = parseInt(self.opts.index, 10) || 0; 1487 self.prevIndex = null; 1488 1489 self.prevPos = null; 1490 self.currPos = 0; 1491 1492 self.firstRun = true; 1493 1494 // All group items 1495 self.group = []; 1496 1497 // Existing slides (for current, next and previous gallery items) 1498 self.slides = {}; 1499 1500 // Create group elements 1501 self.addContent(content); 1502 1503 if (!self.group.length) { 1504 return; 1505 } 1506 1507 self.init(); 1508 }; 1509 1510 $.extend(FancyBox.prototype, { 1511 // Create DOM structure 1512 // ==================== 1513 1514 init: function () { 1515 var self = this, 1516 firstItem = self.group[self.currIndex], 1517 firstItemOpts = firstItem.opts, 1518 $container, 1519 buttonStr; 1520 1521 if (firstItemOpts.closeExisting) { 1522 $.fancybox.close(true); 1523 } 1524 1525 // Hide scrollbars 1526 // =============== 1527 1528 $("body").addClass("fancybox-active"); 1529 1530 if ( 1531 !$.fancybox.getInstance() && 1532 firstItemOpts.hideScrollbar !== false && 1533 !$.fancybox.isMobile && 1534 document.body.scrollHeight > window.innerHeight 1535 ) { 1536 $("head").append( 1537 '<style id="fancybox-style-noscroll" type="text/css">.compensate-for-scrollbar{margin-right:' + 1538 (window.innerWidth - document.documentElement.clientWidth) + 1539 "px;}</style>" 1540 ); 1541 1542 $("body").addClass("compensate-for-scrollbar"); 1543 } 1544 1545 // Build html markup and set references 1546 // ==================================== 1547 1548 // Build html code for buttons and insert into main template 1549 buttonStr = ""; 1550 1551 $.each(firstItemOpts.buttons, function (index, value) { 1552 buttonStr += firstItemOpts.btnTpl[value] || ""; 1553 }); 1554 1555 // Create markup from base template, it will be initially hidden to 1556 // avoid unnecessary work like painting while initializing is not complete 1557 $container = $( 1558 self.translate( 1559 self, 1560 firstItemOpts.baseTpl 1561 .replace("{{buttons}}", buttonStr) 1562 .replace("{{arrows}}", firstItemOpts.btnTpl.arrowLeft + firstItemOpts.btnTpl.arrowRight) 1563 ) 1564 ) 1565 .attr("id", "fancybox-container-" + self.id) 1566 .addClass(firstItemOpts.baseClass) 1567 .data("FancyBox", self) 1568 .appendTo(firstItemOpts.parentEl); 1569 1570 // Create object holding references to jQuery wrapped nodes 1571 self.$refs = { 1572 container: $container 1573 }; 1574 1575 ["bg", "inner", "infobar", "toolbar", "stage", "caption", "navigation"].forEach(function (item) { 1576 self.$refs[item] = $container.find(".fancybox-" + item); 1577 }); 1578 1579 self.trigger("onInit"); 1580 1581 // Enable events, deactive previous instances 1582 self.activate(); 1583 1584 // Build slides, load and reveal content 1585 self.jumpTo(self.currIndex); 1586 }, 1587 1588 // Simple i18n support - replaces object keys found in template 1589 // with corresponding values 1590 // ============================================================ 1591 1592 translate: function (obj, str) { 1593 var arr = obj.opts.i18n[obj.opts.lang] || obj.opts.i18n.en; 1594 1595 return str.replace(/\{\{(\w+)\}\}/g, function (match, n) { 1596 return arr[n] === undefined ? match : arr[n]; 1597 }); 1598 }, 1599 1600 // Populate current group with fresh content 1601 // Check if each object has valid type and content 1602 // =============================================== 1603 1604 addContent: function (content) { 1605 var self = this, 1606 items = $.makeArray(content), 1607 thumbs; 1608 1609 $.each(items, function (i, item) { 1610 var obj = {}, 1611 opts = {}, 1612 $item, 1613 type, 1614 found, 1615 src, 1616 srcParts; 1617 1618 // Step 1 - Make sure we have an object 1619 // ==================================== 1620 1621 if ($.isPlainObject(item)) { 1622 // We probably have manual usage here, something like 1623 // $.fancybox.open( [ { src : "image.jpg", type : "image" } ] ) 1624 1625 obj = item; 1626 opts = item.opts || item; 1627 } else if ($.type(item) === "object" && $(item).length) { 1628 // Here we probably have jQuery collection returned by some selector 1629 $item = $(item); 1630 1631 // Support attributes like `data-options='{"touch" : false}'` and `data-touch='false'` 1632 opts = $item.data() || {}; 1633 opts = $.extend(true, {}, opts, opts.options); 1634 1635 // Here we store clicked element 1636 opts.$orig = $item; 1637 1638 obj.src = self.opts.src || opts.src || $item.attr("href"); 1639 1640 // Assume that simple syntax is used, for example: 1641 // `$.fancybox.open( $("#test"), {} );` 1642 if (!obj.type && !obj.src) { 1643 obj.type = "inline"; 1644 obj.src = item; 1645 } 1646 } else { 1647 // Assume we have a simple html code, for example: 1648 // $.fancybox.open( '<div><h1>Hi!</h1></div>' ); 1649 obj = { 1650 type: "html", 1651 src: item + "" 1652 }; 1653 } 1654 1655 // Each gallery object has full collection of options 1656 obj.opts = $.extend(true, {}, self.opts, opts); 1657 1658 // Do not merge buttons array 1659 if ($.isArray(opts.buttons)) { 1660 obj.opts.buttons = opts.buttons; 1661 } 1662 1663 if ($.fancybox.isMobile && obj.opts.mobile) { 1664 obj.opts = mergeOpts(obj.opts, obj.opts.mobile); 1665 } 1666 1667 // Step 2 - Make sure we have content type, if not - try to guess 1668 // ============================================================== 1669 1670 type = obj.type || obj.opts.type; 1671 src = obj.src || ""; 1672 1673 if (!type && src) { 1674 if ((found = src.match(/\.(mp4|mov|ogv|webm)((\?|#).*)?$/i))) { 1675 type = "video"; 1676 1677 if (!obj.opts.video.format) { 1678 obj.opts.video.format = "video/" + (found[1] === "ogv" ? "ogg" : found[1]); 1679 } 1680 } else if (src.match(/(^data:image\/[a-z0-9+\/=]*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\?|#).*)?$)/i)) { 1681 type = "image"; 1682 } else if (src.match(/\.(pdf)((\?|#).*)?$/i)) { 1683 type = "iframe"; 1684 obj = $.extend(true, obj, { 1685 contentType: "pdf", 1686 opts: { 1687 iframe: { 1688 preload: false 1689 } 1690 } 1691 }); 1692 } else if (src.charAt(0) === "#") { 1693 type = "inline"; 1694 } 1695 } 1696 1697 if (type) { 1698 obj.type = type; 1699 } else { 1700 self.trigger("objectNeedsType", obj); 1701 } 1702 1703 if (!obj.contentType) { 1704 obj.contentType = $.inArray(obj.type, ["html", "inline", "ajax"]) > -1 ? "html" : obj.type; 1705 } 1706 1707 // Step 3 - Some adjustments 1708 // ========================= 1709 1710 obj.index = self.group.length; 1711 1712 if (obj.opts.smallBtn == "auto") { 1713 obj.opts.smallBtn = $.inArray(obj.type, ["html", "inline", "ajax"]) > -1; 1714 } 1715 1716 if (obj.opts.toolbar === "auto") { 1717 obj.opts.toolbar = !obj.opts.smallBtn; 1718 } 1719 1720 // Find thumbnail image, check if exists and if is in the viewport 1721 obj.$thumb = obj.opts.$thumb || null; 1722 1723 if (obj.opts.$trigger && obj.index === self.opts.index) { 1724 obj.$thumb = obj.opts.$trigger.find("img:first"); 1725 1726 if (obj.$thumb.length) { 1727 obj.opts.$orig = obj.opts.$trigger; 1728 } 1729 } 1730 1731 if (!(obj.$thumb && obj.$thumb.length) && obj.opts.$orig) { 1732 obj.$thumb = obj.opts.$orig.find("img:first"); 1733 } 1734 1735 if (obj.$thumb && !obj.$thumb.length) { 1736 obj.$thumb = null; 1737 } 1738 1739 obj.thumb = obj.opts.thumb || (obj.$thumb ? obj.$thumb[0].src : null); 1740 1741 // "caption" is a "special" option, it can be used to customize caption per gallery item 1742 if ($.type(obj.opts.caption) === "function") { 1743 obj.opts.caption = obj.opts.caption.apply(item, [self, obj]); 1744 } 1745 1746 if ($.type(self.opts.caption) === "function") { 1747 obj.opts.caption = self.opts.caption.apply(item, [self, obj]); 1748 } 1749 1750 // Make sure we have caption as a string or jQuery object 1751 if (!(obj.opts.caption instanceof $)) { 1752 obj.opts.caption = obj.opts.caption === undefined ? "" : obj.opts.caption + ""; 1753 } 1754 1755 // Check if url contains "filter" used to filter the content 1756 // Example: "ajax.html #something" 1757 if (obj.type === "ajax") { 1758 srcParts = src.split(/\s+/, 2); 1759 1760 if (srcParts.length > 1) { 1761 obj.src = srcParts.shift(); 1762 1763 obj.opts.filter = srcParts.shift(); 1764 } 1765 } 1766 1767 // Hide all buttons and disable interactivity for modal items 1768 if (obj.opts.modal) { 1769 obj.opts = $.extend(true, obj.opts, { 1770 trapFocus: true, 1771 // Remove buttons 1772 infobar: 0, 1773 toolbar: 0, 1774 1775 smallBtn: 0, 1776 1777 // Disable keyboard navigation 1778 keyboard: 0, 1779 1780 // Disable some modules 1781 slideShow: 0, 1782 fullScreen: 0, 1783 thumbs: 0, 1784 touch: 0, 1785 1786 // Disable click event handlers 1787 clickContent: false, 1788 clickSlide: false, 1789 clickOutside: false, 1790 dblclickContent: false, 1791 dblclickSlide: false, 1792 dblclickOutside: false 1793 }); 1794 } 1795 1796 // Step 4 - Add processed object to group 1797 // ====================================== 1798 1799 self.group.push(obj); 1800 }); 1801 1802 // Update controls if gallery is already opened 1803 if (Object.keys(self.slides).length) { 1804 self.updateControls(); 1805 1806 // Update thumbnails, if needed 1807 thumbs = self.Thumbs; 1808 1809 if (thumbs && thumbs.isActive) { 1810 thumbs.create(); 1811 1812 thumbs.focus(); 1813 } 1814 } 1815 }, 1816 1817 // Attach an event handler functions for: 1818 // - navigation buttons 1819 // - browser scrolling, resizing; 1820 // - focusing 1821 // - keyboard 1822 // - detecting inactivity 1823 // ====================================== 1824 1825 addEvents: function () { 1826 var self = this; 1827 1828 self.removeEvents(); 1829 1830 // Make navigation elements clickable 1831 // ================================== 1832 1833 self.$refs.container 1834 .on("click.fb-close", "[data-fancybox-close]", function (e) { 1835 e.stopPropagation(); 1836 e.preventDefault(); 1837 1838 self.close(e); 1839 }) 1840 .on("touchstart.fb-prev click.fb-prev", "[data-fancybox-prev]", function (e) { 1841 e.stopPropagation(); 1842 e.preventDefault(); 1843 1844 self.previous(); 1845 }) 1846 .on("touchstart.fb-next click.fb-next", "[data-fancybox-next]", function (e) { 1847 e.stopPropagation(); 1848 e.preventDefault(); 1849 1850 self.next(); 1851 }) 1852 .on("click.fb", "[data-fancybox-zoom]", function (e) { 1853 // Click handler for zoom button 1854 self[self.isScaledDown() ? "scaleToActual" : "scaleToFit"](); 1855 }); 1856 1857 // Handle page scrolling and browser resizing 1858 // ========================================== 1859 1860 $W.on("orientationchange.fb resize.fb", function (e) { 1861 if (e && e.originalEvent && e.originalEvent.type === "resize") { 1862 if (self.requestId) { 1863 cancelAFrame(self.requestId); 1864 } 1865 1866 self.requestId = requestAFrame(function () { 1867 self.update(e); 1868 }); 1869 } else { 1870 if (self.current && self.current.type === "iframe") { 1871 self.$refs.stage.hide(); 1872 } 1873 1874 setTimeout( 1875 function () { 1876 self.$refs.stage.show(); 1877 1878 self.update(e); 1879 }, 1880 $.fancybox.isMobile ? 600 : 250 1881 ); 1882 } 1883 }); 1884 1885 $D.on("keydown.fb", function (e) { 1886 var instance = $.fancybox ? $.fancybox.getInstance() : null, 1887 current = instance.current, 1888 keycode = e.keyCode || e.which; 1889 1890 // Trap keyboard focus inside of the modal 1891 // ======================================= 1892 1893 if (keycode == 9) { 1894 if (current.opts.trapFocus) { 1895 self.focus(e); 1896 } 1897 1898 return; 1899 } 1900 1901 // Enable keyboard navigation 1902 // ========================== 1903 1904 if (!current.opts.keyboard || e.ctrlKey || e.altKey || e.shiftKey || $(e.target).is("input,textarea,video,audio,select")) { 1905 return; 1906 } 1907 1908 // Backspace and Esc keys 1909 if (keycode === 8 || keycode === 27) { 1910 e.preventDefault(); 1911 1912 self.close(e); 1913 1914 return; 1915 } 1916 1917 // Left arrow and Up arrow 1918 if (keycode === 37 || keycode === 38) { 1919 e.preventDefault(); 1920 1921 self.previous(); 1922 1923 return; 1924 } 1925 1926 // Righ arrow and Down arrow 1927 if (keycode === 39 || keycode === 40) { 1928 e.preventDefault(); 1929 1930 self.next(); 1931 1932 return; 1933 } 1934 1935 self.trigger("afterKeydown", e, keycode); 1936 }); 1937 1938 // Hide controls after some inactivity period 1939 if (self.group[self.currIndex].opts.idleTime) { 1940 self.idleSecondsCounter = 0; 1941 1942 $D.on( 1943 "mousemove.fb-idle mouseleave.fb-idle mousedown.fb-idle touchstart.fb-idle touchmove.fb-idle scroll.fb-idle keydown.fb-idle", 1944 function (e) { 1945 self.idleSecondsCounter = 0; 1946 1947 if (self.isIdle) { 1948 self.showControls(); 1949 } 1950 1951 self.isIdle = false; 1952 } 1953 ); 1954 1955 self.idleInterval = window.setInterval(function () { 1956 self.idleSecondsCounter++; 1957 1958 if (self.idleSecondsCounter >= self.group[self.currIndex].opts.idleTime && !self.isDragging) { 1959 self.isIdle = true; 1960 self.idleSecondsCounter = 0; 1961 1962 self.hideControls(); 1963 } 1964 }, 1000); 1965 } 1966 }, 1967 1968 // Remove events added by the core 1969 // =============================== 1970 1971 removeEvents: function () { 1972 var self = this; 1973 1974 $W.off("orientationchange.fb resize.fb"); 1975 $D.off("keydown.fb .fb-idle"); 1976 1977 this.$refs.container.off(".fb-close .fb-prev .fb-next"); 1978 1979 if (self.idleInterval) { 1980 window.clearInterval(self.idleInterval); 1981 1982 self.idleInterval = null; 1983 } 1984 }, 1985 1986 // Change to previous gallery item 1987 // =============================== 1988 1989 previous: function (duration) { 1990 return this.jumpTo(this.currPos - 1, duration); 1991 }, 1992 1993 // Change to next gallery item 1994 // =========================== 1995 1996 next: function (duration) { 1997 return this.jumpTo(this.currPos + 1, duration); 1998 }, 1999 2000 // Switch to selected gallery item 2001 // =============================== 2002 2003 jumpTo: function (pos, duration) { 2004 var self = this, 2005 groupLen = self.group.length, 2006 firstRun, 2007 isMoved, 2008 loop, 2009 current, 2010 previous, 2011 slidePos, 2012 stagePos, 2013 prop, 2014 diff; 2015 2016 if (self.isDragging || self.isClosing || (self.isAnimating && self.firstRun)) { 2017 return; 2018 } 2019 2020 // Should loop? 2021 pos = parseInt(pos, 10); 2022 loop = self.current ? self.current.opts.loop : self.opts.loop; 2023 2024 if (!loop && (pos < 0 || pos >= groupLen)) { 2025 return false; 2026 } 2027 2028 // Check if opening for the first time; this helps to speed things up 2029 firstRun = self.firstRun = !Object.keys(self.slides).length; 2030 2031 // Create slides 2032 previous = self.current; 2033 2034 self.prevIndex = self.currIndex; 2035 self.prevPos = self.currPos; 2036 2037 current = self.createSlide(pos); 2038 2039 if (groupLen > 1) { 2040 if (loop || current.index < groupLen - 1) { 2041 self.createSlide(pos + 1); 2042 } 2043 2044 if (loop || current.index > 0) { 2045 self.createSlide(pos - 1); 2046 } 2047 } 2048 2049 self.current = current; 2050 self.currIndex = current.index; 2051 self.currPos = current.pos; 2052 2053 self.trigger("beforeShow", firstRun); 2054 2055 self.updateControls(); 2056 2057 // Validate duration length 2058 current.forcedDuration = undefined; 2059 2060 if ($.isNumeric(duration)) { 2061 current.forcedDuration = duration; 2062 } else { 2063 duration = current.opts[firstRun ? "animationDuration" : "transitionDuration"]; 2064 } 2065 2066 duration = parseInt(duration, 10); 2067 2068 // Check if user has swiped the slides or if still animating 2069 isMoved = self.isMoved(current); 2070 2071 // Make sure current slide is visible 2072 current.$slide.addClass("fancybox-slide--current"); 2073 2074 // Fresh start - reveal container, current slide and start loading content 2075 if (firstRun) { 2076 if (current.opts.animationEffect && duration) { 2077 self.$refs.container.css("transition-duration", duration + "ms"); 2078 } 2079 2080 self.$refs.container.addClass("fancybox-is-open").trigger("focus"); 2081 2082 // Attempt to load content into slide 2083 // This will later call `afterLoad` -> `revealContent` 2084 self.loadSlide(current); 2085 2086 self.preload("image"); 2087 2088 return; 2089 } 2090 2091 // Get actual slide/stage positions (before cleaning up) 2092 slidePos = $.fancybox.getTranslate(previous.$slide); 2093 stagePos = $.fancybox.getTranslate(self.$refs.stage); 2094 2095 // Clean up all slides 2096 $.each(self.slides, function (index, slide) { 2097 $.fancybox.stop(slide.$slide, true); 2098 }); 2099 2100 if (previous.pos !== current.pos) { 2101 previous.isComplete = false; 2102 } 2103 2104 previous.$slide.removeClass("fancybox-slide--complete fancybox-slide--current"); 2105 2106 // If slides are out of place, then animate them to correct position 2107 if (isMoved) { 2108 // Calculate horizontal swipe distance 2109 diff = slidePos.left - (previous.pos * slidePos.width + previous.pos * previous.opts.gutter); 2110 2111 $.each(self.slides, function (index, slide) { 2112 slide.$slide.removeClass("fancybox-animated").removeClass(function (index, className) { 2113 return (className.match(/(^|\s)fancybox-fx-\S+/g) || []).join(" "); 2114 }); 2115 2116 // Make sure that each slide is in equal distance 2117 // This is mostly needed for freshly added slides, because they are not yet positioned 2118 var leftPos = slide.pos * slidePos.width + slide.pos * slide.opts.gutter; 2119 2120 $.fancybox.setTranslate(slide.$slide, { 2121 top: 0, 2122 left: leftPos - stagePos.left + diff 2123 }); 2124 2125 if (slide.pos !== current.pos) { 2126 slide.$slide.addClass("fancybox-slide--" + (slide.pos > current.pos ? "next" : "previous")); 2127 } 2128 2129 // Redraw to make sure that transition will start 2130 forceRedraw(slide.$slide); 2131 2132 // Animate the slide 2133 $.fancybox.animate( 2134 slide.$slide, { 2135 top: 0, 2136 left: (slide.pos - current.pos) * slidePos.width + (slide.pos - current.pos) * slide.opts.gutter 2137 }, 2138 duration, 2139 function () { 2140 slide.$slide 2141 .css({ 2142 transform: "", 2143 opacity: "" 2144 }) 2145 .removeClass("fancybox-slide--next fancybox-slide--previous"); 2146 2147 if (slide.pos === self.currPos) { 2148 self.complete(); 2149 } 2150 } 2151 ); 2152 }); 2153 } else if (duration && current.opts.transitionEffect) { 2154 // Set transition effect for previously active slide 2155 prop = "fancybox-animated fancybox-fx-" + current.opts.transitionEffect; 2156 2157 previous.$slide.addClass("fancybox-slide--" + (previous.pos > current.pos ? "next" : "previous")); 2158 2159 $.fancybox.animate( 2160 previous.$slide, 2161 prop, 2162 duration, 2163 function () { 2164 previous.$slide.removeClass(prop).removeClass("fancybox-slide--next fancybox-slide--previous"); 2165 }, 2166 false 2167 ); 2168 } 2169 2170 if (current.isLoaded) { 2171 self.revealContent(current); 2172 } else { 2173 self.loadSlide(current); 2174 } 2175 2176 self.preload("image"); 2177 }, 2178 2179 // Create new "slide" element 2180 // These are gallery items that are actually added to DOM 2181 // ======================================================= 2182 2183 createSlide: function (pos) { 2184 var self = this, 2185 $slide, 2186 index; 2187 2188 index = pos % self.group.length; 2189 index = index < 0 ? self.group.length + index : index; 2190 2191 if (!self.slides[pos] && self.group[index]) { 2192 $slide = $('<div class="fancybox-slide"></div>').appendTo(self.$refs.stage); 2193 2194 self.slides[pos] = $.extend(true, {}, self.group[index], { 2195 pos: pos, 2196 $slide: $slide, 2197 isLoaded: false 2198 }); 2199 2200 self.updateSlide(self.slides[pos]); 2201 } 2202 2203 return self.slides[pos]; 2204 }, 2205 2206 // Scale image to the actual size of the image; 2207 // x and y values should be relative to the slide 2208 // ============================================== 2209 2210 scaleToActual: function (x, y, duration) { 2211 var self = this, 2212 current = self.current, 2213 $content = current.$content, 2214 canvasWidth = $.fancybox.getTranslate(current.$slide).width, 2215 canvasHeight = $.fancybox.getTranslate(current.$slide).height, 2216 newImgWidth = current.width, 2217 newImgHeight = current.height, 2218 imgPos, 2219 posX, 2220 posY, 2221 scaleX, 2222 scaleY; 2223 2224 if (self.isAnimating || self.isMoved() || !$content || !(current.type == "image" && current.isLoaded && !current.hasError)) { 2225 return; 2226 } 2227 2228 self.isAnimating = true; 2229 2230 $.fancybox.stop($content); 2231 2232 x = x === undefined ? canvasWidth * 0.5 : x; 2233 y = y === undefined ? canvasHeight * 0.5 : y; 2234 2235 imgPos = $.fancybox.getTranslate($content); 2236 2237 imgPos.top -= $.fancybox.getTranslate(current.$slide).top; 2238 imgPos.left -= $.fancybox.getTranslate(current.$slide).left; 2239 2240 scaleX = newImgWidth / imgPos.width; 2241 scaleY = newImgHeight / imgPos.height; 2242 2243 // Get center position for original image 2244 posX = canvasWidth * 0.5 - newImgWidth * 0.5; 2245 posY = canvasHeight * 0.5 - newImgHeight * 0.5; 2246 2247 // Make sure image does not move away from edges 2248 if (newImgWidth > canvasWidth) { 2249 posX = imgPos.left * scaleX - (x * scaleX - x); 2250 2251 if (posX > 0) { 2252 posX = 0; 2253 } 2254 2255 if (posX < canvasWidth - newImgWidth) { 2256 posX = canvasWidth - newImgWidth; 2257 } 2258 } 2259 2260 if (newImgHeight > canvasHeight) { 2261 posY = imgPos.top * scaleY - (y * scaleY - y); 2262 2263 if (posY > 0) { 2264 posY = 0; 2265 } 2266 2267 if (posY < canvasHeight - newImgHeight) { 2268 posY = canvasHeight - newImgHeight; 2269 } 2270 } 2271 2272 self.updateCursor(newImgWidth, newImgHeight); 2273 2274 $.fancybox.animate( 2275 $content, { 2276 top: posY, 2277 left: posX, 2278 scaleX: scaleX, 2279 scaleY: scaleY 2280 }, 2281 duration || 366, 2282 function () { 2283 self.isAnimating = false; 2284 } 2285 ); 2286 2287 // Stop slideshow 2288 if (self.SlideShow && self.SlideShow.isActive) { 2289 self.SlideShow.stop(); 2290 } 2291 }, 2292 2293 // Scale image to fit inside parent element 2294 // ======================================== 2295 2296 scaleToFit: function (duration) { 2297 var self = this, 2298 current = self.current, 2299 $content = current.$content, 2300 end; 2301 2302 if (self.isAnimating || self.isMoved() || !$content || !(current.type == "image" && current.isLoaded && !current.hasError)) { 2303 return; 2304 } 2305 2306 self.isAnimating = true; 2307 2308 $.fancybox.stop($content); 2309 2310 end = self.getFitPos(current); 2311 2312 self.updateCursor(end.width, end.height); 2313 2314 $.fancybox.animate( 2315 $content, { 2316 top: end.top, 2317 left: end.left, 2318 scaleX: end.width / $content.width(), 2319 scaleY: end.height / $content.height() 2320 }, 2321 duration || 366, 2322 function () { 2323 self.isAnimating = false; 2324 } 2325 ); 2326 }, 2327 2328 // Calculate image size to fit inside viewport 2329 // =========================================== 2330 2331 getFitPos: function (slide) { 2332 var self = this, 2333 $content = slide.$content, 2334 $slide = slide.$slide, 2335 width = slide.width || slide.opts.width, 2336 height = slide.height || slide.opts.height, 2337 maxWidth, 2338 maxHeight, 2339 minRatio, 2340 aspectRatio, 2341 rez = {}; 2342 2343 if (!slide.isLoaded || !$content || !$content.length) { 2344 return false; 2345 } 2346 2347 maxWidth = $.fancybox.getTranslate(self.$refs.stage).width; 2348 maxHeight = $.fancybox.getTranslate(self.$refs.stage).height; 2349 2350 maxWidth -= 2351 parseFloat($slide.css("paddingLeft")) + 2352 parseFloat($slide.css("paddingRight")) + 2353 parseFloat($content.css("marginLeft")) + 2354 parseFloat($content.css("marginRight")); 2355 2356 maxHeight -= 2357 parseFloat($slide.css("paddingTop")) + 2358 parseFloat($slide.css("paddingBottom")) + 2359 parseFloat($content.css("marginTop")) + 2360 parseFloat($content.css("marginBottom")); 2361 2362 if (!width || !height) { 2363 width = maxWidth; 2364 height = maxHeight; 2365 } 2366 2367 minRatio = Math.min(1, maxWidth / width, maxHeight / height); 2368 2369 width = minRatio * width; 2370 height = minRatio * height; 2371 2372 // Adjust width/height to precisely fit into container 2373 if (width > maxWidth - 0.5) { 2374 width = maxWidth; 2375 } 2376 2377 if (height > maxHeight - 0.5) { 2378 height = maxHeight; 2379 } 2380 2381 if (slide.type === "image") { 2382 rez.top = Math.floor((maxHeight - height) * 0.5) + parseFloat($slide.css("paddingTop")); 2383 rez.left = Math.floor((maxWidth - width) * 0.5) + parseFloat($slide.css("paddingLeft")); 2384 } else if (slide.contentType === "video") { 2385 // Force aspect ratio for the video 2386 // "I say the whole world must learn of our peaceful ways⦠by force!" 2387 aspectRatio = slide.opts.width && slide.opts.height ? width / height : slide.opts.ratio || 16 / 9; 2388 2389 if (height > width / aspectRatio) { 2390 height = width / aspectRatio; 2391 } else if (width > height * aspectRatio) { 2392 width = height * aspectRatio; 2393 } 2394 } 2395 2396 rez.width = width; 2397 rez.height = height; 2398 2399 return rez; 2400 }, 2401 2402 // Update content size and position for all slides 2403 // ============================================== 2404 2405 update: function (e) { 2406 var self = this; 2407 2408 $.each(self.slides, function (key, slide) { 2409 self.updateSlide(slide, e); 2410 }); 2411 }, 2412 2413 // Update slide content position and size 2414 // ====================================== 2415 2416 updateSlide: function (slide, e) { 2417 var self = this, 2418 $content = slide && slide.$content, 2419 width = slide.width || slide.opts.width, 2420 height = slide.height || slide.opts.height, 2421 $slide = slide.$slide; 2422 2423 // First, prevent caption overlap, if needed 2424 self.adjustCaption(slide); 2425 2426 // Then resize content to fit inside the slide 2427 if ($content && (width || height || slide.contentType === "video") && !slide.hasError) { 2428 $.fancybox.stop($content); 2429 2430 $.fancybox.setTranslate($content, self.getFitPos(slide)); 2431 2432 if (slide.pos === self.currPos) { 2433 self.isAnimating = false; 2434 2435 self.updateCursor(); 2436 } 2437 } 2438 2439 // Then some adjustments 2440 self.adjustLayout(slide); 2441 2442 if ($slide.length) { 2443 $slide.trigger("refresh"); 2444 2445 if (slide.pos === self.currPos) { 2446 self.$refs.toolbar 2447 .add(self.$refs.navigation.find(".fancybox-button--arrow_right")) 2448 .toggleClass("compensate-for-scrollbar", $slide.get(0).scrollHeight > $slide.get(0).clientHeight); 2449 } 2450 } 2451 2452 self.trigger("onUpdate", slide, e); 2453 }, 2454 2455 // Horizontally center slide 2456 // ========================= 2457 2458 centerSlide: function (duration) { 2459 var self = this, 2460 current = self.current, 2461 $slide = current.$slide; 2462 2463 if (self.isClosing || !current) { 2464 return; 2465 } 2466 2467 $slide.siblings().css({ 2468 transform: "", 2469 opacity: "" 2470 }); 2471 2472 $slide 2473 .parent() 2474 .children() 2475 .removeClass("fancybox-slide--previous fancybox-slide--next"); 2476 2477 $.fancybox.animate( 2478 $slide, { 2479 top: 0, 2480 left: 0, 2481 opacity: 1 2482 }, 2483 duration === undefined ? 0 : duration, 2484 function () { 2485 // Clean up 2486 $slide.css({ 2487 transform: "", 2488 opacity: "" 2489 }); 2490 2491 if (!current.isComplete) { 2492 self.complete(); 2493 } 2494 }, 2495 false 2496 ); 2497 }, 2498 2499 // Check if current slide is moved (swiped) 2500 // ======================================== 2501 2502 isMoved: function (slide) { 2503 var current = slide || this.current, 2504 slidePos, 2505 stagePos; 2506 2507 if (!current) { 2508 return false; 2509 } 2510 2511 stagePos = $.fancybox.getTranslate(this.$refs.stage); 2512 slidePos = $.fancybox.getTranslate(current.$slide); 2513 2514 return ( 2515 !current.$slide.hasClass("fancybox-animated") && 2516 (Math.abs(slidePos.top - stagePos.top) > 0.5 || Math.abs(slidePos.left - stagePos.left) > 0.5) 2517 ); 2518 }, 2519 2520 // Update cursor style depending if content can be zoomed 2521 // ====================================================== 2522 2523 updateCursor: function (nextWidth, nextHeight) { 2524 var self = this, 2525 current = self.current, 2526 $container = self.$refs.container, 2527 canPan, 2528 isZoomable; 2529 2530 if (!current || self.isClosing || !self.Guestures) { 2531 return; 2532 } 2533 2534 $container.removeClass("fancybox-is-zoomable fancybox-can-zoomIn fancybox-can-zoomOut fancybox-can-swipe fancybox-can-pan"); 2535 2536 canPan = self.canPan(nextWidth, nextHeight); 2537 2538 isZoomable = canPan ? true : self.isZoomable(); 2539 2540 $container.toggleClass("fancybox-is-zoomable", isZoomable); 2541 2542 $("[data-fancybox-zoom]").prop("disabled", !isZoomable); 2543 2544 if (canPan) { 2545 $container.addClass("fancybox-can-pan"); 2546 } else if ( 2547 isZoomable && 2548 (current.opts.clickContent === "zoom" || ($.isFunction(current.opts.clickContent) && current.opts.clickContent(current) == "zoom")) 2549 ) { 2550 $container.addClass("fancybox-can-zoomIn"); 2551 } else if (current.opts.touch && (current.opts.touch.vertical || self.group.length > 1) && current.contentType !== "video") { 2552 $container.addClass("fancybox-can-swipe"); 2553 } 2554 }, 2555 2556 // Check if current slide is zoomable 2557 // ================================== 2558 2559 isZoomable: function () { 2560 var self = this, 2561 current = self.current, 2562 fitPos; 2563 2564 // Assume that slide is zoomable if: 2565 // - image is still loading 2566 // - actual size of the image is smaller than available area 2567 if (current && !self.isClosing && current.type === "image" && !current.hasError) { 2568 if (!current.isLoaded) { 2569 return true; 2570 } 2571 2572 fitPos = self.getFitPos(current); 2573 2574 if (fitPos && (current.width > fitPos.width || current.height > fitPos.height)) { 2575 return true; 2576 } 2577 } 2578 2579 return false; 2580 }, 2581 2582 // Check if current image dimensions are smaller than actual 2583 // ========================================================= 2584 2585 isScaledDown: function (nextWidth, nextHeight) { 2586 var self = this, 2587 rez = false, 2588 current = self.current, 2589 $content = current.$content; 2590 2591 if (nextWidth !== undefined && nextHeight !== undefined) { 2592 rez = nextWidth < current.width && nextHeight < current.height; 2593 } else if ($content) { 2594 rez = $.fancybox.getTranslate($content); 2595 rez = rez.width < current.width && rez.height < current.height; 2596 } 2597 2598 return rez; 2599 }, 2600 2601 // Check if image dimensions exceed parent element 2602 // =============================================== 2603 2604 canPan: function (nextWidth, nextHeight) { 2605 var self = this, 2606 current = self.current, 2607 pos = null, 2608 rez = false; 2609 2610 if (current.type === "image" && (current.isComplete || (nextWidth && nextHeight)) && !current.hasError) { 2611 rez = self.getFitPos(current); 2612 2613 if (nextWidth !== undefined && nextHeight !== undefined) { 2614 pos = { 2615 width: nextWidth, 2616 height: nextHeight 2617 }; 2618 } else if (current.isComplete) { 2619 pos = $.fancybox.getTranslate(current.$content); 2620 } 2621 2622 if (pos && rez) { 2623 rez = Math.abs(pos.width - rez.width) > 1.5 || Math.abs(pos.height - rez.height) > 1.5; 2624 } 2625 } 2626 2627 return rez; 2628 }, 2629 2630 // Load content into the slide 2631 // =========================== 2632 2633 loadSlide: function (slide) { 2634 var self = this, 2635 type, 2636 $slide, 2637 ajaxLoad; 2638 2639 if (slide.isLoading || slide.isLoaded) { 2640 return; 2641 } 2642 2643 slide.isLoading = true; 2644 2645 if (self.trigger("beforeLoad", slide) === false) { 2646 slide.isLoading = false; 2647 2648 return false; 2649 } 2650 2651 type = slide.type; 2652 $slide = slide.$slide; 2653 2654 $slide 2655 .off("refresh") 2656 .trigger("onReset") 2657 .addClass(slide.opts.slideClass); 2658 2659 // Create content depending on the type 2660 switch (type) { 2661 case "image": 2662 self.setImage(slide); 2663 2664 break; 2665 2666 case "iframe": 2667 self.setIframe(slide); 2668 2669 break; 2670 2671 case "html": 2672 self.setContent(slide, slide.src || slide.content); 2673 2674 break; 2675 2676 case "video": 2677 self.setContent( 2678 slide, 2679 slide.opts.video.tpl 2680 .replace(/\{\{src\}\}/gi, slide.src) 2681 .replace("{{format}}", slide.opts.videoFormat || slide.opts.video.format || "") 2682 .replace("{{poster}}", slide.thumb || "") 2683 ); 2684 2685 break; 2686 2687 case "inline": 2688 if ($(slide.src).length) { 2689 self.setContent(slide, $(slide.src)); 2690 } else { 2691 self.setError(slide); 2692 } 2693 2694 break; 2695 2696 case "ajax": 2697 self.showLoading(slide); 2698 2699 ajaxLoad = $.ajax( 2700 $.extend({}, slide.opts.ajax.settings, { 2701 url: slide.src, 2702 success: function (data, textStatus) { 2703 if (textStatus === "success") { 2704 self.setContent(slide, data); 2705 } 2706 }, 2707 error: function (jqXHR, textStatus) { 2708 if (jqXHR && textStatus !== "abort") { 2709 self.setError(slide); 2710 } 2711 } 2712 }) 2713 ); 2714 2715 $slide.one("onReset", function () { 2716 ajaxLoad.abort(); 2717 }); 2718 2719 break; 2720 2721 default: 2722 self.setError(slide); 2723 2724 break; 2725 } 2726 2727 return true; 2728 }, 2729 2730 // Use thumbnail image, if possible 2731 // ================================ 2732 2733 setImage: function (slide) { 2734 var self = this, 2735 ghost; 2736 2737 // Check if need to show loading icon 2738 setTimeout(function () { 2739 var $img = slide.$image; 2740 2741 if (!self.isClosing && slide.isLoading && (!$img || !$img.length || !$img[0].complete) && !slide.hasError) { 2742 self.showLoading(slide); 2743 } 2744 }, 50); 2745 2746 //Check if image has srcset 2747 self.checkSrcset(slide); 2748 2749 // This will be wrapper containing both ghost and actual image 2750 slide.$content = $('<div class="fancybox-content"></div>') 2751 .addClass("fancybox-is-hidden") 2752 .appendTo(slide.$slide.addClass("fancybox-slide--image")); 2753 2754 // If we have a thumbnail, we can display it while actual image is loading 2755 // Users will not stare at black screen and actual image will appear gradually 2756 if (slide.opts.preload !== false && slide.opts.width && slide.opts.height && slide.thumb) { 2757 slide.width = slide.opts.width; 2758 slide.height = slide.opts.height; 2759 2760 ghost = document.createElement("img"); 2761 2762 ghost.onerror = function () { 2763 $(this).remove(); 2764 2765 slide.$ghost = null; 2766 }; 2767 2768 ghost.onload = function () { 2769 self.afterLoad(slide); 2770 }; 2771 2772 slide.$ghost = $(ghost) 2773 .addClass("fancybox-image") 2774 .appendTo(slide.$content) 2775 .attr("src", slide.thumb); 2776 } 2777 2778 // Start loading actual image 2779 self.setBigImage(slide); 2780 }, 2781 2782 // Check if image has srcset and get the source 2783 // ============================================ 2784 checkSrcset: function (slide) { 2785 var srcset = slide.opts.srcset || slide.opts.image.srcset, 2786 found, 2787 temp, 2788 pxRatio, 2789 windowWidth; 2790 2791 // If we have "srcset", then we need to find first matching "src" value. 2792 // This is necessary, because when you set an src attribute, the browser will preload the image 2793 // before any javascript or even CSS is applied. 2794 if (srcset) { 2795 pxRatio = window.devicePixelRatio || 1; 2796 windowWidth = window.innerWidth * pxRatio; 2797 2798 temp = srcset.split(",").map(function (el) { 2799 var ret = {}; 2800 2801 el.trim() 2802 .split(/\s+/) 2803 .forEach(function (el, i) { 2804 var value = parseInt(el.substring(0, el.length - 1), 10); 2805 2806 if (i === 0) { 2807 return (ret.url = el); 2808 } 2809 2810 if (value) { 2811 ret.value = value; 2812 ret.postfix = el[el.length - 1]; 2813 } 2814 }); 2815 2816 return ret; 2817 }); 2818 2819 // Sort by value 2820 temp.sort(function (a, b) { 2821 return a.value - b.value; 2822 }); 2823 2824 // Ok, now we have an array of all srcset values 2825 for (var j = 0; j < temp.length; j++) { 2826 var el = temp[j]; 2827 2828 if ((el.postfix === "w" && el.value >= windowWidth) || (el.postfix === "x" && el.value >= pxRatio)) { 2829 found = el; 2830 break; 2831 } 2832 } 2833 2834 // If not found, take the last one 2835 if (!found && temp.length) { 2836 found = temp[temp.length - 1]; 2837 } 2838 2839 if (found) { 2840 slide.src = found.url; 2841 2842 // If we have default width/height values, we can calculate height for matching source 2843 if (slide.width && slide.height && found.postfix == "w") { 2844 slide.height = (slide.width / slide.height) * found.value; 2845 slide.width = found.value; 2846 } 2847 2848 slide.opts.srcset = srcset; 2849 } 2850 } 2851 }, 2852 2853 // Create full-size image 2854 // ====================== 2855 2856 setBigImage: function (slide) { 2857 var self = this, 2858 img = document.createElement("img"), 2859 $img = $(img); 2860 2861 slide.$image = $img 2862 .one("error", function () { 2863 self.setError(slide); 2864 }) 2865 .one("load", function () { 2866 var sizes; 2867 2868 if (!slide.$ghost) { 2869 self.resolveImageSlideSize(slide, this.naturalWidth, this.naturalHeight); 2870 2871 self.afterLoad(slide); 2872 } 2873 2874 if (self.isClosing) { 2875 return; 2876 } 2877 2878 if (slide.opts.srcset) { 2879 sizes = slide.opts.sizes; 2880 2881 if (!sizes || sizes === "auto") { 2882 sizes = 2883 (slide.width / slide.height > 1 && $W.width() / $W.height() > 1 ? "100" : Math.round((slide.width / slide.height) * 100)) + 2884 "vw"; 2885 } 2886 2887 $img.attr("sizes", sizes).attr("srcset", slide.opts.srcset); 2888 } 2889 2890 // Hide temporary image after some delay 2891 if (slide.$ghost) { 2892 setTimeout(function () { 2893 if (slide.$ghost && !self.isClosing) { 2894 slide.$ghost.hide(); 2895 } 2896 }, Math.min(300, Math.max(1000, slide.height / 1600))); 2897 } 2898 2899 self.hideLoading(slide); 2900 }) 2901 .addClass("fancybox-image") 2902 .attr("src", slide.src) 2903 .appendTo(slide.$content); 2904 2905 if ((img.complete || img.readyState == "complete") && $img.naturalWidth && $img.naturalHeight) { 2906 $img.trigger("load"); 2907 } else if (img.error) { 2908 $img.trigger("error"); 2909 } 2910 }, 2911 2912 // Computes the slide size from image size and maxWidth/maxHeight 2913 // ============================================================== 2914 2915 resolveImageSlideSize: function (slide, imgWidth, imgHeight) { 2916 var maxWidth = parseInt(slide.opts.width, 10), 2917 maxHeight = parseInt(slide.opts.height, 10); 2918 2919 // Sets the default values from the image 2920 slide.width = imgWidth; 2921 slide.height = imgHeight; 2922 2923 if (maxWidth > 0) { 2924 slide.width = maxWidth; 2925 slide.height = Math.floor((maxWidth * imgHeight) / imgWidth); 2926 } 2927 2928 if (maxHeight > 0) { 2929 slide.width = Math.floor((maxHeight * imgWidth) / imgHeight); 2930 slide.height = maxHeight; 2931 } 2932 }, 2933 2934 // Create iframe wrapper, iframe and bindings 2935 // ========================================== 2936 2937 setIframe: function (slide) { 2938 var self = this, 2939 opts = slide.opts.iframe, 2940 $slide = slide.$slide, 2941 $iframe; 2942 2943 slide.$content = $('<div class="fancybox-content' + (opts.preload ? " fancybox-is-hidden" : "") + '"></div>') 2944 .css(opts.css) 2945 .appendTo($slide); 2946 2947 $slide.addClass("fancybox-slide--" + slide.contentType); 2948 2949 slide.$iframe = $iframe = $(opts.tpl.replace(/\{rnd\}/g, new Date().getTime())) 2950 .attr(opts.attr) 2951 .appendTo(slide.$content); 2952 2953 if (opts.preload) { 2954 self.showLoading(slide); 2955 2956 // Unfortunately, it is not always possible to determine if iframe is successfully loaded 2957 // (due to browser security policy) 2958 2959 $iframe.on("load.fb error.fb", function (e) { 2960 this.isReady = 1; 2961 2962 slide.$slide.trigger("refresh"); 2963 2964 self.afterLoad(slide); 2965 }); 2966 2967 // Recalculate iframe content size 2968 // =============================== 2969 2970 $slide.on("refresh.fb", function () { 2971 var $content = slide.$content, 2972 frameWidth = opts.css.width, 2973 frameHeight = opts.css.height, 2974 $contents, 2975 $body; 2976 2977 if ($iframe[0].isReady !== 1) { 2978 return; 2979 } 2980 2981 try { 2982 $contents = $iframe.contents(); 2983 $body = $contents.find("body"); 2984 } catch (ignore) {} 2985 2986 // Calculate content dimensions, if it is accessible 2987 if ($body && $body.length && $body.children().length) { 2988 // Avoid scrolling to top (if multiple instances) 2989 $slide.css("overflow", "visible"); 2990 2991 $content.css({ 2992 width: "100%", 2993 "max-width": "100%", 2994 height: "9999px" 2995 }); 2996 2997 if (frameWidth === undefined) { 2998 frameWidth = Math.ceil(Math.max($body[0].clientWidth, $body.outerWidth(true))); 2999 } 3000 3001 $content.css("width", frameWidth ? frameWidth : "").css("max-width", ""); 3002 3003 if (frameHeight === undefined) { 3004 frameHeight = Math.ceil(Math.max($body[0].clientHeight, $body.outerHeight(true))); 3005 } 3006 3007 $content.css("height", frameHeight ? frameHeight : ""); 3008 3009 $slide.css("overflow", "auto"); 3010 } 3011 3012 $content.removeClass("fancybox-is-hidden"); 3013 }); 3014 } else { 3015 self.afterLoad(slide); 3016 } 3017 3018 $iframe.attr("src", slide.src); 3019 3020 // Remove iframe if closing or changing gallery item 3021 $slide.one("onReset", function () { 3022 // This helps IE not to throw errors when closing 3023 try { 3024 $(this) 3025 .find("iframe") 3026 .hide() 3027 .unbind() 3028 .attr("src", "//about:blank"); 3029 } catch (ignore) {} 3030 3031 $(this) 3032 .off("refresh.fb") 3033 .empty(); 3034 3035 slide.isLoaded = false; 3036 slide.isRevealed = false; 3037 }); 3038 }, 3039 3040 // Wrap and append content to the slide 3041 // ====================================== 3042 3043 setContent: function (slide, content) { 3044 var self = this; 3045 3046 if (self.isClosing) { 3047 return; 3048 } 3049 3050 self.hideLoading(slide); 3051 3052 if (slide.$content) { 3053 $.fancybox.stop(slide.$content); 3054 } 3055 3056 slide.$slide.empty(); 3057 3058 // If content is a jQuery object, then it will be moved to the slide. 3059 // The placeholder is created so we will know where to put it back. 3060 if (isQuery(content) && content.parent().length) { 3061 // Make sure content is not already moved to fancyBox 3062 if (content.hasClass("fancybox-content") || content.parent().hasClass("fancybox-content")) { 3063 content.parents(".fancybox-slide").trigger("onReset"); 3064 } 3065 3066 // Create temporary element marking original place of the content 3067 slide.$placeholder = $("<div>") 3068 .hide() 3069 .insertAfter(content); 3070 3071 // Make sure content is visible 3072 content.css("display", "inline-block"); 3073 } else if (!slide.hasError) { 3074 // If content is just a plain text, try to convert it to html 3075 if ($.type(content) === "string") { 3076 content = $("<div>") 3077 .append($.trim(content)) 3078 .contents(); 3079 } 3080 3081 // If "filter" option is provided, then filter content 3082 if (slide.opts.filter) { 3083 content = $("<div>") 3084 .html(content) 3085 .find(slide.opts.filter); 3086 } 3087 } 3088 3089 slide.$slide.one("onReset", function () { 3090 // Pause all html5 video/audio 3091 $(this) 3092 .find("video,audio") 3093 .trigger("pause"); 3094 3095 // Put content back 3096 if (slide.$placeholder) { 3097 slide.$placeholder.after(content.removeClass("fancybox-content").hide()).remove(); 3098 3099 slide.$placeholder = null; 3100 } 3101 3102 // Remove custom close button 3103 if (slide.$smallBtn) { 3104 slide.$smallBtn.remove(); 3105 3106 slide.$smallBtn = null; 3107 } 3108 3109 // Remove content and mark slide as not loaded 3110 if (!slide.hasError) { 3111 $(this).empty(); 3112 3113 slide.isLoaded = false; 3114 slide.isRevealed = false; 3115 } 3116 }); 3117 3118 $(content).appendTo(slide.$slide); 3119 3120 if ($(content).is("video,audio")) { 3121 $(content).addClass("fancybox-video"); 3122 3123 $(content).wrap("<div></div>"); 3124 3125 slide.contentType = "video"; 3126 3127 slide.opts.width = slide.opts.width || $(content).attr("width"); 3128 slide.opts.height = slide.opts.height || $(content).attr("height"); 3129 } 3130 3131 slide.$content = slide.$slide 3132 .children() 3133 .filter("div,form,main,video,audio,article,.fancybox-content") 3134 .first(); 3135 3136 slide.$content.siblings().hide(); 3137 3138 // Re-check if there is a valid content 3139 // (in some cases, ajax response can contain various elements or plain text) 3140 if (!slide.$content.length) { 3141 slide.$content = slide.$slide 3142 .wrapInner("<div></div>") 3143 .children() 3144 .first(); 3145 } 3146 3147 slide.$content.addClass("fancybox-content"); 3148 3149 slide.$slide.addClass("fancybox-slide--" + slide.contentType); 3150 3151 self.afterLoad(slide); 3152 }, 3153 3154 // Display error message 3155 // ===================== 3156 3157 setError: function (slide) { 3158 slide.hasError = true; 3159 3160 slide.$slide 3161 .trigger("onReset") 3162 .removeClass("fancybox-slide--" + slide.contentType) 3163 .addClass("fancybox-slide--error"); 3164 3165 slide.contentType = "html"; 3166 3167 this.setContent(slide, this.translate(slide, slide.opts.errorTpl)); 3168 3169 if (slide.pos === this.currPos) { 3170 this.isAnimating = false; 3171 } 3172 }, 3173 3174 // Show loading icon inside the slide 3175 // ================================== 3176 3177 showLoading: function (slide) { 3178 var self = this; 3179 3180 slide = slide || self.current; 3181 3182 if (slide && !slide.$spinner) { 3183 slide.$spinner = $(self.translate(self, self.opts.spinnerTpl)) 3184 .appendTo(slide.$slide) 3185 .hide() 3186 .fadeIn("fast"); 3187 } 3188 }, 3189 3190 // Remove loading icon from the slide 3191 // ================================== 3192 3193 hideLoading: function (slide) { 3194 var self = this; 3195 3196 slide = slide || self.current; 3197 3198 if (slide && slide.$spinner) { 3199 slide.$spinner.stop().remove(); 3200 3201 delete slide.$spinner; 3202 } 3203 }, 3204 3205 // Adjustments after slide content has been loaded 3206 // =============================================== 3207 3208 afterLoad: function (slide) { 3209 var self = this; 3210 3211 if (self.isClosing) { 3212 return; 3213 } 3214 3215 slide.isLoading = false; 3216 slide.isLoaded = true; 3217 3218 self.trigger("afterLoad", slide); 3219 3220 self.hideLoading(slide); 3221 3222 // Add small close button 3223 if (slide.opts.smallBtn && (!slide.$smallBtn || !slide.$smallBtn.length)) { 3224 slide.$smallBtn = $(self.translate(slide, slide.opts.btnTpl.smallBtn)).appendTo(slide.$content); 3225 } 3226 3227 // Disable right click 3228 if (slide.opts.protect && slide.$content && !slide.hasError) { 3229 slide.$content.on("contextmenu.fb", function (e) { 3230 if (e.button == 2) { 3231 e.preventDefault(); 3232 } 3233 3234 return true; 3235 }); 3236 3237 // Add fake element on top of the image 3238 // This makes a bit harder for user to select image 3239 if (slide.type === "image") { 3240 $('<div class="fancybox-spaceball"></div>').appendTo(slide.$content); 3241 } 3242 } 3243 3244 self.adjustCaption(slide); 3245 3246 self.adjustLayout(slide); 3247 3248 if (slide.pos === self.currPos) { 3249 self.updateCursor(); 3250 } 3251 3252 self.revealContent(slide); 3253 }, 3254 3255 // Prevent caption overlap, 3256 // fix css inconsistency across browsers 3257 // ===================================== 3258 3259 adjustCaption: function (slide) { 3260 var self = this, 3261 current = slide || self.current, 3262 caption = current.opts.caption, 3263 preventOverlap = current.opts.preventCaptionOverlap, 3264 $caption = self.$refs.caption, 3265 $clone, 3266 captionH = false; 3267 3268 $caption.toggleClass("fancybox-caption--separate", preventOverlap); 3269 3270 if (preventOverlap && caption && caption.length) { 3271 if (current.pos !== self.currPos) { 3272 $clone = $caption.clone().appendTo($caption.parent()); 3273 3274 $clone 3275 .children() 3276 .eq(0) 3277 .empty() 3278 .html(caption); 3279 3280 captionH = $clone.outerHeight(true); 3281 3282 $clone.empty().remove(); 3283 } else if (self.$caption) { 3284 captionH = self.$caption.outerHeight(true); 3285 } 3286 3287 current.$slide.css("padding-bottom", captionH || ""); 3288 } 3289 }, 3290 3291 // Simple hack to fix inconsistency across browsers, described here (affects Edge, too): 3292 // https://bugzilla.mozilla.org/show_bug.cgi?id=748518 3293 // ==================================================================================== 3294 3295 adjustLayout: function (slide) { 3296 var self = this, 3297 current = slide || self.current, 3298 scrollHeight, 3299 marginBottom, 3300 inlinePadding, 3301 actualPadding; 3302 3303 if (current.isLoaded && current.opts.disableLayoutFix !== true) { 3304 current.$content.css("margin-bottom", ""); 3305 3306 // If we would always set margin-bottom for the content, 3307 // then it would potentially break vertical align 3308 if (current.$content.outerHeight() > current.$slide.height() + 0.5) { 3309 inlinePadding = current.$slide[0].style["padding-bottom"]; 3310 actualPadding = current.$slide.css("padding-bottom"); 3311 3312 if (parseFloat(actualPadding) > 0) { 3313 scrollHeight = current.$slide[0].scrollHeight; 3314 3315 current.$slide.css("padding-bottom", 0); 3316 3317 if (Math.abs(scrollHeight - current.$slide[0].scrollHeight) < 1) { 3318 marginBottom = actualPadding; 3319 } 3320 3321 current.$slide.css("padding-bottom", inlinePadding); 3322 } 3323 } 3324 3325 current.$content.css("margin-bottom", marginBottom); 3326 } 3327 }, 3328 3329 // Make content visible 3330 // This method is called right after content has been loaded or 3331 // user navigates gallery and transition should start 3332 // ============================================================ 3333 3334 revealContent: function (slide) { 3335 var self = this, 3336 $slide = slide.$slide, 3337 end = false, 3338 start = false, 3339 isMoved = self.isMoved(slide), 3340 isRevealed = slide.isRevealed, 3341 effect, 3342 effectClassName, 3343 duration, 3344 opacity; 3345 3346 slide.isRevealed = true; 3347 3348 effect = slide.opts[self.firstRun ? "animationEffect" : "transitionEffect"]; 3349 duration = slide.opts[self.firstRun ? "animationDuration" : "transitionDuration"]; 3350 3351 duration = parseInt(slide.forcedDuration === undefined ? duration : slide.forcedDuration, 10); 3352 3353 if (isMoved || slide.pos !== self.currPos || !duration) { 3354 effect = false; 3355 } 3356 3357 // Check if can zoom 3358 if (effect === "zoom") { 3359 if (slide.pos === self.currPos && duration && slide.type === "image" && !slide.hasError && (start = self.getThumbPos(slide))) { 3360 end = self.getFitPos(slide); 3361 } else { 3362 effect = "fade"; 3363 } 3364 } 3365 3366 // Zoom animation 3367 // ============== 3368 if (effect === "zoom") { 3369 self.isAnimating = true; 3370 3371 end.scaleX = end.width / start.width; 3372 end.scaleY = end.height / start.height; 3373 3374 // Check if we need to animate opacity 3375 opacity = slide.opts.zoomOpacity; 3376 3377 if (opacity == "auto") { 3378 opacity = Math.abs(slide.width / slide.height - start.width / start.height) > 0.1; 3379 } 3380 3381 if (opacity) { 3382 start.opacity = 0.1; 3383 end.opacity = 1; 3384 } 3385 3386 // Draw image at start position 3387 $.fancybox.setTranslate(slide.$content.removeClass("fancybox-is-hidden"), start); 3388 3389 forceRedraw(slide.$content); 3390 3391 // Start animation 3392 $.fancybox.animate(slide.$content, end, duration, function () { 3393 self.isAnimating = false; 3394 3395 self.complete(); 3396 }); 3397 3398 return; 3399 } 3400 3401 self.updateSlide(slide); 3402 3403 // Simply show content if no effect 3404 // ================================ 3405 if (!effect) { 3406 slide.$content.removeClass("fancybox-is-hidden"); 3407 3408 if (!isRevealed && isMoved && slide.type === "image" && !slide.hasError) { 3409 slide.$content.hide().fadeIn("fast"); 3410 } 3411 3412 if (slide.pos === self.currPos) { 3413 self.complete(); 3414 } 3415 3416 return; 3417 } 3418 3419 // Prepare for CSS transiton 3420 // ========================= 3421 $.fancybox.stop($slide); 3422 3423 //effectClassName = "fancybox-animated fancybox-slide--" + (slide.pos >= self.prevPos ? "next" : "previous") + " fancybox-fx-" + effect; 3424 effectClassName = "fancybox-slide--" + (slide.pos >= self.prevPos ? "next" : "previous") + " fancybox-animated fancybox-fx-" + effect; 3425 3426 $slide.addClass(effectClassName).removeClass("fancybox-slide--current"); //.addClass(effectClassName); 3427 3428 slide.$content.removeClass("fancybox-is-hidden"); 3429 3430 // Force reflow 3431 forceRedraw($slide); 3432 3433 if (slide.type !== "image") { 3434 slide.$content.hide().show(0); 3435 } 3436 3437 $.fancybox.animate( 3438 $slide, 3439 "fancybox-slide--current", 3440 duration, 3441 function () { 3442 $slide.removeClass(effectClassName).css({ 3443 transform: "", 3444 opacity: "" 3445 }); 3446 3447 if (slide.pos === self.currPos) { 3448 self.complete(); 3449 } 3450 }, 3451 true 3452 ); 3453 }, 3454 3455 // Check if we can and have to zoom from thumbnail 3456 //================================================ 3457 3458 getThumbPos: function (slide) { 3459 var rez = false, 3460 $thumb = slide.$thumb, 3461 thumbPos, 3462 btw, 3463 brw, 3464 bbw, 3465 blw; 3466 3467 if (!$thumb || !inViewport($thumb[0])) { 3468 return false; 3469 } 3470 3471 thumbPos = $.fancybox.getTranslate($thumb); 3472 3473 btw = parseFloat($thumb.css("border-top-width") || 0); 3474 brw = parseFloat($thumb.css("border-right-width") || 0); 3475 bbw = parseFloat($thumb.css("border-bottom-width") || 0); 3476 blw = parseFloat($thumb.css("border-left-width") || 0); 3477 3478 rez = { 3479 top: thumbPos.top + btw, 3480 left: thumbPos.left + blw, 3481 width: thumbPos.width - brw - blw, 3482 height: thumbPos.height - btw - bbw, 3483 scaleX: 1, 3484 scaleY: 1 3485 }; 3486 3487 return thumbPos.width > 0 && thumbPos.height > 0 ? rez : false; 3488 }, 3489 3490 // Final adjustments after current gallery item is moved to position 3491 // and it`s content is loaded 3492 // ================================================================== 3493 3494 complete: function () { 3495 var self = this, 3496 current = self.current, 3497 slides = {}, 3498 $el; 3499 3500 if (self.isMoved() || !current.isLoaded) { 3501 return; 3502 } 3503 3504 if (!current.isComplete) { 3505 current.isComplete = true; 3506 3507 current.$slide.siblings().trigger("onReset"); 3508 3509 self.preload("inline"); 3510 3511 // Trigger any CSS transiton inside the slide 3512 forceRedraw(current.$slide); 3513 3514 current.$slide.addClass("fancybox-slide--complete"); 3515 3516 // Remove unnecessary slides 3517 $.each(self.slides, function (key, slide) { 3518 if (slide.pos >= self.currPos - 1 && slide.pos <= self.currPos + 1) { 3519 slides[slide.pos] = slide; 3520 } else if (slide) { 3521 $.fancybox.stop(slide.$slide); 3522 3523 slide.$slide.off().remove(); 3524 } 3525 }); 3526 3527 self.slides = slides; 3528 } 3529 3530 self.isAnimating = false; 3531 3532 self.updateCursor(); 3533 3534 self.trigger("afterShow"); 3535 3536 // Autoplay first html5 video/audio 3537 if (!!current.opts.video.autoStart) { 3538 current.$slide 3539 .find("video,audio") 3540 .filter(":visible:first") 3541 .trigger("play") 3542 .one("ended", function () { 3543 if (Document.exitFullscreen) { 3544 Document.exitFullscreen(); 3545 } else if (this.webkitExitFullscreen) { 3546 this.webkitExitFullscreen(); 3547 } 3548 3549 self.next(); 3550 }); 3551 } 3552 3553 // Try to focus on the first focusable element 3554 if (current.opts.autoFocus && current.contentType === "html") { 3555 // Look for the first input with autofocus attribute 3556 $el = current.$content.find("input[autofocus]:enabled:visible:first"); 3557 3558 if ($el.length) { 3559 $el.trigger("focus"); 3560 } else { 3561 self.focus(null, true); 3562 } 3563 } 3564 3565 // Avoid jumping 3566 current.$slide.scrollTop(0).scrollLeft(0); 3567 }, 3568 3569 // Preload next and previous slides 3570 // ================================ 3571 3572 preload: function (type) { 3573 var self = this, 3574 prev, 3575 next; 3576 3577 if (self.group.length < 2) { 3578 return; 3579 } 3580 3581 next = self.slides[self.currPos + 1]; 3582 prev = self.slides[self.currPos - 1]; 3583 3584 if (prev && prev.type === type) { 3585 self.loadSlide(prev); 3586 } 3587 3588 if (next && next.type === type) { 3589 self.loadSlide(next); 3590 } 3591 }, 3592 3593 // Try to find and focus on the first focusable element 3594 // ==================================================== 3595 3596 focus: function (e, firstRun) { 3597 var self = this, 3598 focusableStr = [ 3599 "a[href]", 3600 "area[href]", 3601 'input:not([disabled]):not([type="hidden"]):not([aria-hidden])', 3602 "select:not([disabled]):not([aria-hidden])", 3603 "textarea:not([disabled]):not([aria-hidden])", 3604 "button:not([disabled]):not([aria-hidden])", 3605 "iframe", 3606 "object", 3607 "embed", 3608 "video", 3609 "audio", 3610 "[contenteditable]", 3611 '[tabindex]:not([tabindex^="-"])' 3612 ].join(","), 3613 focusableItems, 3614 focusedItemIndex; 3615 3616 if (self.isClosing) { 3617 return; 3618 } 3619 3620 if (e || !self.current || !self.current.isComplete) { 3621 // Focus on any element inside fancybox 3622 focusableItems = self.$refs.container.find("*:visible"); 3623 } else { 3624 // Focus inside current slide 3625 focusableItems = self.current.$slide.find("*:visible" + (firstRun ? ":not(.fancybox-close-small)" : "")); 3626 } 3627 3628 focusableItems = focusableItems.filter(focusableStr).filter(function () { 3629 return $(this).css("visibility") !== "hidden" && !$(this).hasClass("disabled"); 3630 }); 3631 3632 if (focusableItems.length) { 3633 focusedItemIndex = focusableItems.index(document.activeElement); 3634 3635 if (e && e.shiftKey) { 3636 // Back tab 3637 if (focusedItemIndex < 0 || focusedItemIndex == 0) { 3638 e.preventDefault(); 3639 3640 focusableItems.eq(focusableItems.length - 1).trigger("focus"); 3641 } 3642 } else { 3643 // Outside or Forward tab 3644 if (focusedItemIndex < 0 || focusedItemIndex == focusableItems.length - 1) { 3645 if (e) { 3646 e.preventDefault(); 3647 } 3648 3649 focusableItems.eq(0).trigger("focus"); 3650 } 3651 } 3652 } else { 3653 self.$refs.container.trigger("focus"); 3654 } 3655 }, 3656 3657 // Activates current instance - brings container to the front and enables keyboard, 3658 // notifies other instances about deactivating 3659 // ================================================================================= 3660 3661 activate: function () { 3662 var self = this; 3663 3664 // Deactivate all instances 3665 $(".fancybox-container").each(function () { 3666 var instance = $(this).data("FancyBox"); 3667 3668 // Skip self and closing instances 3669 if (instance && instance.id !== self.id && !instance.isClosing) { 3670 instance.trigger("onDeactivate"); 3671 3672 instance.removeEvents(); 3673 3674 instance.isVisible = false; 3675 } 3676 }); 3677 3678 self.isVisible = true; 3679 3680 if (self.current || self.isIdle) { 3681 self.update(); 3682 3683 self.updateControls(); 3684 } 3685 3686 self.trigger("onActivate"); 3687 3688 self.addEvents(); 3689 }, 3690 3691 // Start closing procedure 3692 // This will start "zoom-out" animation if needed and clean everything up afterwards 3693 // ================================================================================= 3694 3695 close: function (e, d) { 3696 var self = this, 3697 current = self.current, 3698 effect, 3699 duration, 3700 $content, 3701 domRect, 3702 opacity, 3703 start, 3704 end; 3705 3706 var done = function () { 3707 self.cleanUp(e); 3708 }; 3709 3710 if (self.isClosing) { 3711 return false; 3712 } 3713 3714 self.isClosing = true; 3715 3716 // If beforeClose callback prevents closing, make sure content is centered 3717 if (self.trigger("beforeClose", e) === false) { 3718 self.isClosing = false; 3719 3720 requestAFrame(function () { 3721 self.update(); 3722 }); 3723 3724 return false; 3725 } 3726 3727 // Remove all events 3728 // If there are multiple instances, they will be set again by "activate" method 3729 self.removeEvents(); 3730 3731 $content = current.$content; 3732 effect = current.opts.animationEffect; 3733 duration = $.isNumeric(d) ? d : effect ? current.opts.animationDuration : 0; 3734 3735 current.$slide.removeClass("fancybox-slide--complete fancybox-slide--next fancybox-slide--previous fancybox-animated"); 3736 3737 if (e !== true) { 3738 $.fancybox.stop(current.$slide); 3739 } else { 3740 effect = false; 3741 } 3742 3743 // Remove other slides 3744 current.$slide 3745 .siblings() 3746 .trigger("onReset") 3747 .remove(); 3748 3749 // Trigger animations 3750 if (duration) { 3751 self.$refs.container 3752 .removeClass("fancybox-is-open") 3753 .addClass("fancybox-is-closing") 3754 .css("transition-duration", duration + "ms"); 3755 } 3756 3757 // Clean up 3758 self.hideLoading(current); 3759 3760 self.hideControls(true); 3761 3762 self.updateCursor(); 3763 3764 // Check if possible to zoom-out 3765 if ( 3766 effect === "zoom" && 3767 !($content && duration && current.type === "image" && !self.isMoved() && !current.hasError && (end = self.getThumbPos(current))) 3768 ) { 3769 effect = "fade"; 3770 } 3771 3772 if (effect === "zoom") { 3773 $.fancybox.stop($content); 3774 3775 domRect = $.fancybox.getTranslate($content); 3776 3777 start = { 3778 top: domRect.top, 3779 left: domRect.left, 3780 scaleX: domRect.width / end.width, 3781 scaleY: domRect.height / end.height, 3782 width: end.width, 3783 height: end.height 3784 }; 3785 3786 // Check if we need to animate opacity 3787 opacity = current.opts.zoomOpacity; 3788 3789 if (opacity == "auto") { 3790 opacity = Math.abs(current.width / current.height - end.width / end.height) > 0.1; 3791 } 3792 3793 if (opacity) { 3794 end.opacity = 0; 3795 } 3796 3797 $.fancybox.setTranslate($content, start); 3798 3799 forceRedraw($content); 3800 3801 $.fancybox.animate($content, end, duration, done); 3802 3803 return true; 3804 } 3805 3806 if (effect && duration) { 3807 $.fancybox.animate( 3808 current.$slide.addClass("fancybox-slide--previous").removeClass("fancybox-slide--current"), 3809 "fancybox-animated fancybox-fx-" + effect, 3810 duration, 3811 done 3812 ); 3813 } else { 3814 // If skip animation 3815 if (e === true) { 3816 setTimeout(done, duration); 3817 } else { 3818 done(); 3819 } 3820 } 3821 3822 return true; 3823 }, 3824 3825 // Final adjustments after removing the instance 3826 // ============================================= 3827 3828 cleanUp: function (e) { 3829 var self = this, 3830 instance, 3831 $focus = self.current.opts.$orig, 3832 x, 3833 y; 3834 3835 self.current.$slide.trigger("onReset"); 3836 3837 self.$refs.container.empty().remove(); 3838 3839 self.trigger("afterClose", e); 3840 3841 // Place back focus 3842 if (!!self.current.opts.backFocus) { 3843 if (!$focus || !$focus.length || !$focus.is(":visible")) { 3844 $focus = self.$trigger; 3845 } 3846 3847 if ($focus && $focus.length) { 3848 x = window.scrollX; 3849 y = window.scrollY; 3850 3851 $focus.trigger("focus"); 3852 3853 $("html, body") 3854 .scrollTop(y) 3855 .scrollLeft(x); 3856 } 3857 } 3858 3859 self.current = null; 3860 3861 // Check if there are other instances 3862 instance = $.fancybox.getInstance(); 3863 3864 if (instance) { 3865 instance.activate(); 3866 } else { 3867 $("body").removeClass("fancybox-active compensate-for-scrollbar"); 3868 3869 $("#fancybox-style-noscroll").remove(); 3870 } 3871 }, 3872 3873 // Call callback and trigger an event 3874 // ================================== 3875 3876 trigger: function (name, slide) { 3877 var args = Array.prototype.slice.call(arguments, 1), 3878 self = this, 3879 obj = slide && slide.opts ? slide : self.current, 3880 rez; 3881 3882 if (obj) { 3883 args.unshift(obj); 3884 } else { 3885 obj = self; 3886 } 3887 3888 args.unshift(self); 3889 3890 if ($.isFunction(obj.opts[name])) { 3891 rez = obj.opts[name].apply(obj, args); 3892 } 3893 3894 if (rez === false) { 3895 return rez; 3896 } 3897 3898 if (name === "afterClose" || !self.$refs) { 3899 $D.trigger(name + ".fb", args); 3900 } else { 3901 self.$refs.container.trigger(name + ".fb", args); 3902 } 3903 }, 3904 3905 // Update infobar values, navigation button states and reveal caption 3906 // ================================================================== 3907 3908 updateControls: function () { 3909 var self = this, 3910 current = self.current, 3911 index = current.index, 3912 $container = self.$refs.container, 3913 $caption = self.$refs.caption, 3914 caption = current.opts.caption; 3915 3916 // Recalculate content dimensions 3917 current.$slide.trigger("refresh"); 3918 3919 // Set caption 3920 if (caption && caption.length) { 3921 self.$caption = $caption; 3922 3923 $caption 3924 .children() 3925 .eq(0) 3926 .html(caption); 3927 } else { 3928 self.$caption = null; 3929 } 3930 3931 if (!self.hasHiddenControls && !self.isIdle) { 3932 self.showControls(); 3933 } 3934 3935 // Update info and navigation elements 3936 $container.find("[data-fancybox-count]").html(self.group.length); 3937 $container.find("[data-fancybox-index]").html(index + 1); 3938 3939 $container.find("[data-fancybox-prev]").prop("disabled", !current.opts.loop && index <= 0); 3940 $container.find("[data-fancybox-next]").prop("disabled", !current.opts.loop && index >= self.group.length - 1); 3941 3942 if (current.type === "image") { 3943 // Re-enable buttons; update download button source 3944 $container 3945 .find("[data-fancybox-zoom]") 3946 .show() 3947 .end() 3948 .find("[data-fancybox-download]") 3949 .attr("href", current.opts.image.src || current.src) 3950 .show(); 3951 } else if (current.opts.toolbar) { 3952 $container.find("[data-fancybox-download],[data-fancybox-zoom]").hide(); 3953 } 3954 3955 // Make sure focus is not on disabled button/element 3956 if ($(document.activeElement).is(":hidden,[disabled]")) { 3957 self.$refs.container.trigger("focus"); 3958 } 3959 }, 3960 3961 // Hide toolbar and caption 3962 // ======================== 3963 3964 hideControls: function (andCaption) { 3965 var self = this, 3966 arr = ["infobar", "toolbar", "nav"]; 3967 3968 if (andCaption || !self.current.opts.preventCaptionOverlap) { 3969 arr.push("caption"); 3970 } 3971 3972 this.$refs.container.removeClass( 3973 arr 3974 .map(function (i) { 3975 return "fancybox-show-" + i; 3976 }) 3977 .join(" ") 3978 ); 3979 3980 this.hasHiddenControls = true; 3981 }, 3982 3983 showControls: function () { 3984 var self = this, 3985 opts = self.current ? self.current.opts : self.opts, 3986 $container = self.$refs.container; 3987 3988 self.hasHiddenControls = false; 3989 self.idleSecondsCounter = 0; 3990 3991 $container 3992 .toggleClass("fancybox-show-toolbar", !!(opts.toolbar && opts.buttons)) 3993 .toggleClass("fancybox-show-infobar", !!(opts.infobar && self.group.length > 1)) 3994 .toggleClass("fancybox-show-caption", !!self.$caption) 3995 .toggleClass("fancybox-show-nav", !!(opts.arrows && self.group.length > 1)) 3996 .toggleClass("fancybox-is-modal", !!opts.modal); 3997 }, 3998 3999 // Toggle toolbar and caption 4000 // ========================== 4001 4002 toggleControls: function () { 4003 if (this.hasHiddenControls) { 4004 this.showControls(); 4005 } else { 4006 this.hideControls(); 4007 } 4008 } 4009 }); 4010 4011 $.fancybox = { 4012 version: "3.5.7", 4013 defaults: defaults, 4014 4015 // Get current instance and execute a command. 4016 // 4017 // Examples of usage: 4018 // 4019 // $instance = $.fancybox.getInstance(); 4020 // $.fancybox.getInstance().jumpTo( 1 ); 4021 // $.fancybox.getInstance( 'jumpTo', 1 ); 4022 // $.fancybox.getInstance( function() { 4023 // console.info( this.currIndex ); 4024 // }); 4025 // ====================================================== 4026 4027 getInstance: function (command) { 4028 var instance = $('.fancybox-container:not(".fancybox-is-closing"):last').data("FancyBox"), 4029 args = Array.prototype.slice.call(arguments, 1); 4030 4031 if (instance instanceof FancyBox) { 4032 if ($.type(command) === "string") { 4033 instance[command].apply(instance, args); 4034 } else if ($.type(command) === "function") { 4035 command.apply(instance, args); 4036 } 4037 4038 return instance; 4039 } 4040 4041 return false; 4042 }, 4043 4044 // Create new instance 4045 // =================== 4046 4047 open: function (items, opts, index) { 4048 return new FancyBox(items, opts, index); 4049 }, 4050 4051 // Close current or all instances 4052 // ============================== 4053 4054 close: function (all) { 4055 var instance = this.getInstance(); 4056 4057 if (instance) { 4058 instance.close(); 4059 4060 // Try to find and close next instance 4061 if (all === true) { 4062 this.close(all); 4063 } 4064 } 4065 }, 4066 4067 // Close all instances and unbind all events 4068 // ========================================= 4069 4070 destroy: function () { 4071 this.close(true); 4072 4073 $D.add("body").off("click.fb-start", "**"); 4074 }, 4075 4076 // Try to detect mobile devices 4077 // ============================ 4078 4079 isMobile: /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent), 4080 4081 // Detect if 'translate3d' support is available 4082 // ============================================ 4083 4084 use3d: (function () { 4085 var div = document.createElement("div"); 4086 4087 return ( 4088 window.getComputedStyle && 4089 window.getComputedStyle(div) && 4090 window.getComputedStyle(div).getPropertyValue("transform") && 4091 !(document.documentMode && document.documentMode < 11) 4092 ); 4093 })(), 4094 4095 // Helper function to get current visual state of an element 4096 // returns array[ top, left, horizontal-scale, vertical-scale, opacity ] 4097 // ===================================================================== 4098 4099 getTranslate: function ($el) { 4100 var domRect; 4101 4102 if (!$el || !$el.length) { 4103 return false; 4104 } 4105 4106 domRect = $el[0].getBoundingClientRect(); 4107 4108 return { 4109 top: domRect.top || 0, 4110 left: domRect.left || 0, 4111 width: domRect.width, 4112 height: domRect.height, 4113 opacity: parseFloat($el.css("opacity")) 4114 }; 4115 }, 4116 4117 // Shortcut for setting "translate3d" properties for element 4118 // Can set be used to set opacity, too 4119 // ======================================================== 4120 4121 setTranslate: function ($el, props) { 4122 var str = "", 4123 css = {}; 4124 4125 if (!$el || !props) { 4126 return; 4127 } 4128 4129 if (props.left !== undefined || props.top !== undefined) { 4130 str = 4131 (props.left === undefined ? $el.position().left : props.left) + 4132 "px, " + 4133 (props.top === undefined ? $el.position().top : props.top) + 4134 "px"; 4135 4136 if (this.use3d) { 4137 str = "translate3d(" + str + ", 0px)"; 4138 } else { 4139 str = "translate(" + str + ")"; 4140 } 4141 } 4142 4143 if (props.scaleX !== undefined && props.scaleY !== undefined) { 4144 str += " scale(" + props.scaleX + ", " + props.scaleY + ")"; 4145 } else if (props.scaleX !== undefined) { 4146 str += " scaleX(" + props.scaleX + ")"; 4147 } 4148 4149 if (str.length) { 4150 css.transform = str; 4151 } 4152 4153 if (props.opacity !== undefined) { 4154 css.opacity = props.opacity; 4155 } 4156 4157 if (props.width !== undefined) { 4158 css.width = props.width; 4159 } 4160 4161 if (props.height !== undefined) { 4162 css.height = props.height; 4163 } 4164 4165 return $el.css(css); 4166 }, 4167 4168 // Simple CSS transition handler 4169 // ============================= 4170 4171 animate: function ($el, to, duration, callback, leaveAnimationName) { 4172 var self = this, 4173 from; 4174 4175 if ($.isFunction(duration)) { 4176 callback = duration; 4177 duration = null; 4178 } 4179 4180 self.stop($el); 4181 4182 from = self.getTranslate($el); 4183 4184 $el.on(transitionEnd, function (e) { 4185 // Skip events from child elements and z-index change 4186 if (e && e.originalEvent && (!$el.is(e.originalEvent.target) || e.originalEvent.propertyName == "z-index")) { 4187 return; 4188 } 4189 4190 self.stop($el); 4191 4192 if ($.isNumeric(duration)) { 4193 $el.css("transition-duration", ""); 4194 } 4195 4196 if ($.isPlainObject(to)) { 4197 if (to.scaleX !== undefined && to.scaleY !== undefined) { 4198 self.setTranslate($el, { 4199 top: to.top, 4200 left: to.left, 4201 width: from.width * to.scaleX, 4202 height: from.height * to.scaleY, 4203 scaleX: 1, 4204 scaleY: 1 4205 }); 4206 } 4207 } else if (leaveAnimationName !== true) { 4208 $el.removeClass(to); 4209 } 4210 4211 if ($.isFunction(callback)) { 4212 callback(e); 4213 } 4214 }); 4215 4216 if ($.isNumeric(duration)) { 4217 $el.css("transition-duration", duration + "ms"); 4218 } 4219 4220 // Start animation by changing CSS properties or class name 4221 if ($.isPlainObject(to)) { 4222 if (to.scaleX !== undefined && to.scaleY !== undefined) { 4223 delete to.width; 4224 delete to.height; 4225 4226 if ($el.parent().hasClass("fancybox-slide--image")) { 4227 $el.parent().addClass("fancybox-is-scaling"); 4228 } 4229 } 4230 4231 $.fancybox.setTranslate($el, to); 4232 } else { 4233 $el.addClass(to); 4234 } 4235 4236 // Make sure that `transitionend` callback gets fired 4237 $el.data( 4238 "timer", 4239 setTimeout(function () { 4240 $el.trigger(transitionEnd); 4241 }, duration + 33) 4242 ); 4243 }, 4244 4245 stop: function ($el, callCallback) { 4246 if ($el && $el.length) { 4247 clearTimeout($el.data("timer")); 4248 4249 if (callCallback) { 4250 $el.trigger(transitionEnd); 4251 } 4252 4253 $el.off(transitionEnd).css("transition-duration", ""); 4254 4255 $el.parent().removeClass("fancybox-is-scaling"); 4256 } 4257 } 4258 }; 4259 4260 // Default click handler for "fancyboxed" links 4261 // ============================================ 4262 4263 function _run(e, opts) { 4264 var items = [], 4265 index = 0, 4266 $target, 4267 value, 4268 instance; 4269 4270 // Avoid opening multiple times 4271 if (e && e.isDefaultPrevented()) { 4272 return; 4273 } 4274 4275 e.preventDefault(); 4276 4277 opts = opts || {}; 4278 4279 if (e && e.data) { 4280 opts = mergeOpts(e.data.options, opts); 4281 } 4282 4283 $target = opts.$target || $(e.currentTarget).trigger("blur"); 4284 instance = $.fancybox.getInstance(); 4285 4286 if (instance && instance.$trigger && instance.$trigger.is($target)) { 4287 return; 4288 } 4289 4290 if (opts.selector) { 4291 items = $(opts.selector); 4292 } else { 4293 // Get all related items and find index for clicked one 4294 value = $target.attr("data-fancybox") || ""; 4295 4296 if (value) { 4297 items = e.data ? e.data.items : []; 4298 items = items.length ? items.filter('[data-fancybox="' + value + '"]') : $('[data-fancybox="' + value + '"]'); 4299 } else { 4300 items = [$target]; 4301 } 4302 } 4303 4304 index = $(items).index($target); 4305 4306 // Sometimes current item can not be found 4307 if (index < 0) { 4308 index = 0; 4309 } 4310 4311 instance = $.fancybox.open(items, opts, index); 4312 4313 // Save last active element 4314 instance.$trigger = $target; 4315 } 4316 4317 // Create a jQuery plugin 4318 // ====================== 4319 4320 $.fn.fancybox = function (options) { 4321 var selector; 4322 4323 options = options || {}; 4324 selector = options.selector || false; 4325 4326 if (selector) { 4327 // Use body element instead of document so it executes first 4328 $("body") 4329 .off("click.fb-start", selector) 4330 .on("click.fb-start", selector, { 4331 options: options 4332 }, _run); 4333 } else { 4334 this.off("click.fb-start").on( 4335 "click.fb-start", { 4336 items: this, 4337 options: options 4338 }, 4339 _run 4340 ); 4341 } 4342 4343 return this; 4344 }; 4345 4346 // Self initializing plugin for all elements having `data-fancybox` attribute 4347 // ========================================================================== 4348 4349 $D.on("click.fb-start", "[data-fancybox]", _run); 4350 4351 // Enable "trigger elements" 4352 // ========================= 4353 4354 $D.on("click.fb-start", "[data-fancybox-trigger]", function (e) { 4355 $('[data-fancybox="' + $(this).attr("data-fancybox-trigger") + '"]') 4356 .eq($(this).attr("data-fancybox-index") || 0) 4357 .trigger("click.fb-start", { 4358 $trigger: $(this) 4359 }); 4360 }); 4361 4362 // Track focus event for better accessibility styling 4363 // ================================================== 4364 (function () { 4365 var buttonStr = ".fancybox-button", 4366 focusStr = "fancybox-focus", 4367 $pressed = null; 4368 4369 $D.on("mousedown mouseup focus blur", buttonStr, function (e) { 4370 switch (e.type) { 4371 case "mousedown": 4372 $pressed = $(this); 4373 break; 4374 case "mouseup": 4375 $pressed = null; 4376 break; 4377 case "focusin": 4378 $(buttonStr).removeClass(focusStr); 4379 4380 if (!$(this).is($pressed) && !$(this).is("[disabled]")) { 4381 $(this).addClass(focusStr); 4382 } 4383 break; 4384 case "focusout": 4385 $(buttonStr).removeClass(focusStr); 4386 break; 4387 } 4388 }); 4389 })(); 4390})(window, document, jQuery); 4391// ========================================================================== 4392// 4393// Media 4394// Adds additional media type support 4395// 4396// ========================================================================== 4397(function ($) { 4398 "use strict"; 4399 4400 // Object containing properties for each media type 4401 var defaults = { 4402 youtube: { 4403 matcher: /(youtube\.com|youtu\.be|youtube\-nocookie\.com)\/(watch\?(.*&)?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*))(.*)/i, 4404 params: { 4405 autoplay: 1, 4406 autohide: 1, 4407 fs: 1, 4408 rel: 0, 4409 hd: 1, 4410 wmode: "transparent", 4411 enablejsapi: 1, 4412 html5: 1 4413 }, 4414 paramPlace: 8, 4415 type: "iframe", 4416 url: "https://www.youtube-nocookie.com/embed/$4", 4417 thumb: "https://img.youtube.com/vi/$4/hqdefault.jpg" 4418 }, 4419 4420 vimeo: { 4421 matcher: /^.+vimeo.com\/(.*\/)?([\d]+)(.*)?/, 4422 params: { 4423 autoplay: 1, 4424 hd: 1, 4425 show_title: 1, 4426 show_byline: 1, 4427 show_portrait: 0, 4428 fullscreen: 1 4429 }, 4430 paramPlace: 3, 4431 type: "iframe", 4432 url: "//player.vimeo.com/video/$2" 4433 }, 4434 4435 instagram: { 4436 matcher: /(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i, 4437 type: "image", 4438 url: "//$1/p/$2/media/?size=l" 4439 }, 4440 4441 // Examples: 4442 // http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16 4443 // https://www.google.com/maps/@37.7852006,-122.4146355,14.65z 4444 // https://www.google.com/maps/@52.2111123,2.9237542,6.61z?hl=en 4445 // https://www.google.com/maps/place/Googleplex/@37.4220041,-122.0833494,17z/data=!4m5!3m4!1s0x0:0x6c296c66619367e0!8m2!3d37.4219998!4d-122.0840572 4446 gmap_place: { 4447 matcher: /(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(((maps\/(place\/(.*)\/)?\@(.*),(\d+.?\d+?)z))|(\?ll=))(.*)?/i, 4448 type: "iframe", 4449 url: function (rez) { 4450 return ( 4451 "//maps.google." + 4452 rez[2] + 4453 "/?ll=" + 4454 (rez[9] ? rez[9] + "&z=" + Math.floor(rez[10]) + (rez[12] ? rez[12].replace(/^\//, "&") : "") : rez[12] + "").replace(/\?/, "&") + 4455 "&output=" + 4456 (rez[12] && rez[12].indexOf("layer=c") > 0 ? "svembed" : "embed") 4457 ); 4458 } 4459 }, 4460 4461 // Examples: 4462 // https://www.google.com/maps/search/Empire+State+Building/ 4463 // https://www.google.com/maps/search/?api=1&query=centurylink+field 4464 // https://www.google.com/maps/search/?api=1&query=47.5951518,-122.3316393 4465 gmap_search: { 4466 matcher: /(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(maps\/search\/)(.*)/i, 4467 type: "iframe", 4468 url: function (rez) { 4469 return "//maps.google." + rez[2] + "/maps?q=" + rez[5].replace("query=", "q=").replace("api=1", "") + "&output=embed"; 4470 } 4471 } 4472 }; 4473 4474 // Formats matching url to final form 4475 var format = function (url, rez, params) { 4476 if (!url) { 4477 return; 4478 } 4479 4480 params = params || ""; 4481 4482 if ($.type(params) === "object") { 4483 params = $.param(params, true); 4484 } 4485 4486 $.each(rez, function (key, value) { 4487 url = url.replace("$" + key, value || ""); 4488 }); 4489 4490 if (params.length) { 4491 url += (url.indexOf("?") > 0 ? "&" : "?") + params; 4492 } 4493 4494 return url; 4495 }; 4496 4497 $(document).on("objectNeedsType.fb", function (e, instance, item) { 4498 var url = item.src || "", 4499 type = false, 4500 media, 4501 thumb, 4502 rez, 4503 params, 4504 urlParams, 4505 paramObj, 4506 provider; 4507 4508 media = $.extend(true, {}, defaults, item.opts.media); 4509 4510 // Look for any matching media type 4511 $.each(media, function (providerName, providerOpts) { 4512 rez = url.match(providerOpts.matcher); 4513 4514 if (!rez) { 4515 return; 4516 } 4517 4518 type = providerOpts.type; 4519 provider = providerName; 4520 paramObj = {}; 4521 4522 if (providerOpts.paramPlace && rez[providerOpts.paramPlace]) { 4523 urlParams = rez[providerOpts.paramPlace]; 4524 4525 if (urlParams[0] == "?") { 4526 urlParams = urlParams.substring(1); 4527 } 4528 4529 urlParams = urlParams.split("&"); 4530 4531 for (var m = 0; m < urlParams.length; ++m) { 4532 var p = urlParams[m].split("=", 2); 4533 4534 if (p.length == 2) { 4535 paramObj[p[0]] = decodeURIComponent(p[1].replace(/\+/g, " ")); 4536 } 4537 } 4538 } 4539 4540 params = $.extend(true, {}, providerOpts.params, item.opts[providerName], paramObj); 4541 4542 url = 4543 $.type(providerOpts.url) === "function" ? providerOpts.url.call(this, rez, params, item) : format(providerOpts.url, rez, params); 4544 4545 thumb = 4546 $.type(providerOpts.thumb) === "function" ? providerOpts.thumb.call(this, rez, params, item) : format(providerOpts.thumb, rez); 4547 4548 if (providerName === "youtube") { 4549 url = url.replace(/&t=((\d+)m)?(\d+)s/, function (match, p1, m, s) { 4550 return "&start=" + ((m ? parseInt(m, 10) * 60 : 0) + parseInt(s, 10)); 4551 }); 4552 } else if (providerName === "vimeo") { 4553 url = url.replace("&%23", "#"); 4554 } 4555 4556 return false; 4557 }); 4558 4559 // If it is found, then change content type and update the url 4560 4561 if (type) { 4562 if (!item.opts.thumb && !(item.opts.$thumb && item.opts.$thumb.length)) { 4563 item.opts.thumb = thumb; 4564 } 4565 4566 if (type === "iframe") { 4567 item.opts = $.extend(true, item.opts, { 4568 iframe: { 4569 preload: false, 4570 attr: { 4571 scrolling: "no" 4572 } 4573 } 4574 }); 4575 } 4576 4577 $.extend(item, { 4578 type: type, 4579 src: url, 4580 origSrc: item.src, 4581 contentSource: provider, 4582 contentType: type === "image" ? "image" : provider == "gmap_place" || provider == "gmap_search" ? "map" : "video" 4583 }); 4584 } else if (url) { 4585 item.type = item.opts.defaultType; 4586 } 4587 }); 4588 4589 // Load YouTube/Video API on request to detect when video finished playing 4590 var VideoAPILoader = { 4591 youtube: { 4592 src: "https://www.youtube.com/iframe_api", 4593 class: "YT", 4594 loading: false, 4595 loaded: false 4596 }, 4597 4598 vimeo: { 4599 src: "https://player.vimeo.com/api/player.js", 4600 class: "Vimeo", 4601 loading: false, 4602 loaded: false 4603 }, 4604 4605 load: function (vendor) { 4606 var _this = this, 4607 script; 4608 4609 if (this[vendor].loaded) { 4610 setTimeout(function () { 4611 _this.done(vendor); 4612 }); 4613 return; 4614 } 4615 4616 if (this[vendor].loading) { 4617 return; 4618 } 4619 4620 this[vendor].loading = true; 4621 4622 script = document.createElement("script"); 4623 script.type = "text/javascript"; 4624 script.src = this[vendor].src; 4625 4626 if (vendor === "youtube") { 4627 window.onYouTubeIframeAPIReady = function () { 4628 _this[vendor].loaded = true; 4629 _this.done(vendor); 4630 }; 4631 } else { 4632 script.onload = function () { 4633 _this[vendor].loaded = true; 4634 _this.done(vendor); 4635 }; 4636 } 4637 4638 document.body.appendChild(script); 4639 }, 4640 done: function (vendor) { 4641 var instance, $el, player; 4642 4643 if (vendor === "youtube") { 4644 delete window.onYouTubeIframeAPIReady; 4645 } 4646 4647 instance = $.fancybox.getInstance(); 4648 4649 if (instance) { 4650 $el = instance.current.$content.find("iframe"); 4651 4652 if (vendor === "youtube" && YT !== undefined && YT) { 4653 player = new YT.Player($el.attr("id"), { 4654 events: { 4655 onStateChange: function (e) { 4656 if (e.data == 0) { 4657 instance.next(); 4658 } 4659 } 4660 } 4661 }); 4662 } else if (vendor === "vimeo" && Vimeo !== undefined && Vimeo) { 4663 player = new Vimeo.Player($el); 4664 4665 player.on("ended", function () { 4666 instance.next(); 4667 }); 4668 } 4669 } 4670 } 4671 }; 4672 4673 $(document).on({ 4674 "afterShow.fb": function (e, instance, current) { 4675 if (instance.group.length > 1 && (current.contentSource === "youtube" || current.contentSource === "vimeo")) { 4676 VideoAPILoader.load(current.contentSource); 4677 } 4678 } 4679 }); 4680})(jQuery); 4681// ========================================================================== 4682// 4683// Guestures 4684// Adds touch guestures, handles click and tap events 4685// 4686// ========================================================================== 4687(function (window, document, $) { 4688 "use strict"; 4689 4690 var requestAFrame = (function () { 4691 return ( 4692 window.requestAnimationFrame || 4693 window.webkitRequestAnimationFrame || 4694 window.mozRequestAnimationFrame || 4695 window.oRequestAnimationFrame || 4696 // if all else fails, use setTimeout 4697 function (callback) { 4698 return window.setTimeout(callback, 1000 / 60); 4699 } 4700 ); 4701 })(); 4702 4703 var cancelAFrame = (function () { 4704 return ( 4705 window.cancelAnimationFrame || 4706 window.webkitCancelAnimationFrame || 4707 window.mozCancelAnimationFrame || 4708 window.oCancelAnimationFrame || 4709 function (id) { 4710 window.clearTimeout(id); 4711 } 4712 ); 4713 })(); 4714 4715 var getPointerXY = function (e) { 4716 var result = []; 4717 4718 e = e.originalEvent || e || window.e; 4719 e = e.touches && e.touches.length ? e.touches : e.changedTouches && e.changedTouches.length ? e.changedTouches : [e]; 4720 4721 for (var key in e) { 4722 if (e[key].pageX) { 4723 result.push({ 4724 x: e[key].pageX, 4725 y: e[key].pageY 4726 }); 4727 } else if (e[key].clientX) { 4728 result.push({ 4729 x: e[key].clientX, 4730 y: e[key].clientY 4731 }); 4732 } 4733 } 4734 4735 return result; 4736 }; 4737 4738 var distance = function (point2, point1, what) { 4739 if (!point1 || !point2) { 4740 return 0; 4741 } 4742 4743 if (what === "x") { 4744 return point2.x - point1.x; 4745 } else if (what === "y") { 4746 return point2.y - point1.y; 4747 } 4748 4749 return Math.sqrt(Math.pow(point2.x - point1.x, 2) + Math.pow(point2.y - point1.y, 2)); 4750 }; 4751 4752 var isClickable = function ($el) { 4753 if ( 4754 $el.is('a,area,button,[role="button"],input,label,select,summary,textarea,video,audio,iframe') || 4755 $.isFunction($el.get(0).onclick) || 4756 $el.data("selectable") 4757 ) { 4758 return true; 4759 } 4760 4761 // Check for attributes like data-fancybox-next or data-fancybox-close 4762 for (var i = 0, atts = $el[0].attributes, n = atts.length; i < n; i++) { 4763 if (atts[i].nodeName.substr(0, 14) === "data-fancybox-") { 4764 return true; 4765 } 4766 } 4767 4768 return false; 4769 }; 4770 4771 var hasScrollbars = function (el) { 4772 var overflowY = window.getComputedStyle(el)["overflow-y"], 4773 overflowX = window.getComputedStyle(el)["overflow-x"], 4774 vertical = (overflowY === "scroll" || overflowY === "auto") && el.scrollHeight > el.clientHeight, 4775 horizontal = (overflowX === "scroll" || overflowX === "auto") && el.scrollWidth > el.clientWidth; 4776 4777 return vertical || horizontal; 4778 }; 4779 4780 var isScrollable = function ($el) { 4781 var rez = false; 4782 4783 while (true) { 4784 rez = hasScrollbars($el.get(0)); 4785 4786 if (rez) { 4787 break; 4788 } 4789 4790 $el = $el.parent(); 4791 4792 if (!$el.length || $el.hasClass("fancybox-stage") || $el.is("body")) { 4793 break; 4794 } 4795 } 4796 4797 return rez; 4798 }; 4799 4800 var Guestures = function (instance) { 4801 var self = this; 4802 4803 self.instance = instance; 4804 4805 self.$bg = instance.$refs.bg; 4806 self.$stage = instance.$refs.stage; 4807 self.$container = instance.$refs.container; 4808 4809 self.destroy(); 4810 4811 self.$container.on("touchstart.fb.touch mousedown.fb.touch", $.proxy(self, "ontouchstart")); 4812 }; 4813 4814 Guestures.prototype.destroy = function () { 4815 var self = this; 4816 4817 self.$container.off(".fb.touch"); 4818 4819 $(document).off(".fb.touch"); 4820 4821 if (self.requestId) { 4822 cancelAFrame(self.requestId); 4823 self.requestId = null; 4824 } 4825 4826 if (self.tapped) { 4827 clearTimeout(self.tapped); 4828 self.tapped = null; 4829 } 4830 }; 4831 4832 Guestures.prototype.ontouchstart = function (e) { 4833 var self = this, 4834 $target = $(e.target), 4835 instance = self.instance, 4836 current = instance.current, 4837 $slide = current.$slide, 4838 $content = current.$content, 4839 isTouchDevice = e.type == "touchstart"; 4840 4841 // Do not respond to both (touch and mouse) events 4842 if (isTouchDevice) { 4843 self.$container.off("mousedown.fb.touch"); 4844 } 4845 4846 // Ignore right click 4847 if (e.originalEvent && e.originalEvent.button == 2) { 4848 return; 4849 } 4850 4851 // Ignore taping on links, buttons, input elements 4852 if (!$slide.length || !$target.length || isClickable($target) || isClickable($target.parent())) { 4853 return; 4854 } 4855 // Ignore clicks on the scrollbar 4856 if (!$target.is("img") && e.originalEvent.clientX > $target[0].clientWidth + $target.offset().left) { 4857 return; 4858 } 4859 4860 // Ignore clicks while zooming or closing 4861 if (!current || instance.isAnimating || current.$slide.hasClass("fancybox-animated")) { 4862 e.stopPropagation(); 4863 e.preventDefault(); 4864 4865 return; 4866 } 4867 4868 self.realPoints = self.startPoints = getPointerXY(e); 4869 4870 if (!self.startPoints.length) { 4871 return; 4872 } 4873 4874 // Allow other scripts to catch touch event if "touch" is set to false 4875 if (current.touch) { 4876 e.stopPropagation(); 4877 } 4878 4879 self.startEvent = e; 4880 4881 self.canTap = true; 4882 self.$target = $target; 4883 self.$content = $content; 4884 self.opts = current.opts.touch; 4885 4886 self.isPanning = false; 4887 self.isSwiping = false; 4888 self.isZooming = false; 4889 self.isScrolling = false; 4890 self.canPan = instance.canPan(); 4891 4892 self.startTime = new Date().getTime(); 4893 self.distanceX = self.distanceY = self.distance = 0; 4894 4895 self.canvasWidth = Math.round($slide[0].clientWidth); 4896 self.canvasHeight = Math.round($slide[0].clientHeight); 4897 4898 self.contentLastPos = null; 4899 self.contentStartPos = $.fancybox.getTranslate(self.$content) || { 4900 top: 0, 4901 left: 0 4902 }; 4903 self.sliderStartPos = $.fancybox.getTranslate($slide); 4904 4905 // Since position will be absolute, but we need to make it relative to the stage 4906 self.stagePos = $.fancybox.getTranslate(instance.$refs.stage); 4907 4908 self.sliderStartPos.top -= self.stagePos.top; 4909 self.sliderStartPos.left -= self.stagePos.left; 4910 4911 self.contentStartPos.top -= self.stagePos.top; 4912 self.contentStartPos.left -= self.stagePos.left; 4913 4914 $(document) 4915 .off(".fb.touch") 4916 .on(isTouchDevice ? "touchend.fb.touch touchcancel.fb.touch" : "mouseup.fb.touch mouseleave.fb.touch", $.proxy(self, "ontouchend")) 4917 .on(isTouchDevice ? "touchmove.fb.touch" : "mousemove.fb.touch", $.proxy(self, "ontouchmove")); 4918 4919 if ($.fancybox.isMobile) { 4920 document.addEventListener("scroll", self.onscroll, true); 4921 } 4922 4923 // Skip if clicked outside the sliding area 4924 if (!(self.opts || self.canPan) || !($target.is(self.$stage) || self.$stage.find($target).length)) { 4925 if ($target.is(".fancybox-image")) { 4926 e.preventDefault(); 4927 } 4928 4929 if (!($.fancybox.isMobile && $target.parents(".fancybox-caption").length)) { 4930 return; 4931 } 4932 } 4933 4934 self.isScrollable = isScrollable($target) || isScrollable($target.parent()); 4935 4936 // Check if element is scrollable and try to prevent default behavior (scrolling) 4937 if (!($.fancybox.isMobile && self.isScrollable)) { 4938 e.preventDefault(); 4939 } 4940 4941 // One finger or mouse click - swipe or pan an image 4942 if (self.startPoints.length === 1 || current.hasError) { 4943 if (self.canPan) { 4944 $.fancybox.stop(self.$content); 4945 4946 self.isPanning = true; 4947 } else { 4948 self.isSwiping = true; 4949 } 4950 4951 self.$container.addClass("fancybox-is-grabbing"); 4952 } 4953 4954 // Two fingers - zoom image 4955 if (self.startPoints.length === 2 && current.type === "image" && (current.isLoaded || current.$ghost)) { 4956 self.canTap = false; 4957 self.isSwiping = false; 4958 self.isPanning = false; 4959 4960 self.isZooming = true; 4961 4962 $.fancybox.stop(self.$content); 4963 4964 self.centerPointStartX = (self.startPoints[0].x + self.startPoints[1].x) * 0.5 - $(window).scrollLeft(); 4965 self.centerPointStartY = (self.startPoints[0].y + self.startPoints[1].y) * 0.5 - $(window).scrollTop(); 4966 4967 self.percentageOfImageAtPinchPointX = (self.centerPointStartX - self.contentStartPos.left) / self.contentStartPos.width; 4968 self.percentageOfImageAtPinchPointY = (self.centerPointStartY - self.contentStartPos.top) / self.contentStartPos.height; 4969 4970 self.startDistanceBetweenFingers = distance(self.startPoints[0], self.startPoints[1]); 4971 } 4972 }; 4973 4974 Guestures.prototype.onscroll = function (e) { 4975 var self = this; 4976 4977 self.isScrolling = true; 4978 4979 document.removeEventListener("scroll", self.onscroll, true); 4980 }; 4981 4982 Guestures.prototype.ontouchmove = function (e) { 4983 var self = this; 4984 4985 // Make sure user has not released over iframe or disabled element 4986 if (e.originalEvent.buttons !== undefined && e.originalEvent.buttons === 0) { 4987 self.ontouchend(e); 4988 return; 4989 } 4990 4991 if (self.isScrolling) { 4992 self.canTap = false; 4993 return; 4994 } 4995 4996 self.newPoints = getPointerXY(e); 4997 4998 if (!(self.opts || self.canPan) || !self.newPoints.length || !self.newPoints.length) { 4999 return; 5000 } 5001 5002 if (!(self.isSwiping && self.isSwiping === true)) { 5003 e.preventDefault(); 5004 } 5005 5006 self.distanceX = distance(self.newPoints[0], self.startPoints[0], "x"); 5007 self.distanceY = distance(self.newPoints[0], self.startPoints[0], "y"); 5008 5009 self.distance = distance(self.newPoints[0], self.startPoints[0]); 5010 5011 // Skip false ontouchmove events (Chrome) 5012 if (self.distance > 0) { 5013 if (self.isSwiping) { 5014 self.onSwipe(e); 5015 } else if (self.isPanning) { 5016 self.onPan(); 5017 } else if (self.isZooming) { 5018 self.onZoom(); 5019 } 5020 } 5021 }; 5022 5023 Guestures.prototype.onSwipe = function (e) { 5024 var self = this, 5025 instance = self.instance, 5026 swiping = self.isSwiping, 5027 left = self.sliderStartPos.left || 0, 5028 angle; 5029 5030 // If direction is not yet determined 5031 if (swiping === true) { 5032 // We need at least 10px distance to correctly calculate an angle 5033 if (Math.abs(self.distance) > 10) { 5034 self.canTap = false; 5035 5036 if (instance.group.length < 2 && self.opts.vertical) { 5037 self.isSwiping = "y"; 5038 } else if (instance.isDragging || self.opts.vertical === false || (self.opts.vertical === "auto" && $(window).width() > 800)) { 5039 self.isSwiping = "x"; 5040 } else { 5041 angle = Math.abs((Math.atan2(self.distanceY, self.distanceX) * 180) / Math.PI); 5042 5043 self.isSwiping = angle > 45 && angle < 135 ? "y" : "x"; 5044 } 5045 5046 if (self.isSwiping === "y" && $.fancybox.isMobile && self.isScrollable) { 5047 self.isScrolling = true; 5048 5049 return; 5050 } 5051 5052 instance.isDragging = self.isSwiping; 5053 5054 // Reset points to avoid jumping, because we dropped first swipes to calculate the angle 5055 self.startPoints = self.newPoints; 5056 5057 $.each(instance.slides, function (index, slide) { 5058 var slidePos, stagePos; 5059 5060 $.fancybox.stop(slide.$slide); 5061 5062 slidePos = $.fancybox.getTranslate(slide.$slide); 5063 stagePos = $.fancybox.getTranslate(instance.$refs.stage); 5064 5065 slide.$slide 5066 .css({ 5067 transform: "", 5068 opacity: "", 5069 "transition-duration": "" 5070 }) 5071 .removeClass("fancybox-animated") 5072 .removeClass(function (index, className) { 5073 return (className.match(/(^|\s)fancybox-fx-\S+/g) || []).join(" "); 5074 }); 5075 5076 if (slide.pos === instance.current.pos) { 5077 self.sliderStartPos.top = slidePos.top - stagePos.top; 5078 self.sliderStartPos.left = slidePos.left - stagePos.left; 5079 } 5080 5081 $.fancybox.setTranslate(slide.$slide, { 5082 top: slidePos.top - stagePos.top, 5083 left: slidePos.left - stagePos.left 5084 }); 5085 }); 5086 5087 // Stop slideshow 5088 if (instance.SlideShow && instance.SlideShow.isActive) { 5089 instance.SlideShow.stop(); 5090 } 5091 } 5092 5093 return; 5094 } 5095 5096 // Sticky edges 5097 if (swiping == "x") { 5098 if ( 5099 self.distanceX > 0 && 5100 (self.instance.group.length < 2 || (self.instance.current.index === 0 && !self.instance.current.opts.loop)) 5101 ) { 5102 left = left + Math.pow(self.distanceX, 0.8); 5103 } else if ( 5104 self.distanceX < 0 && 5105 (self.instance.group.length < 2 || 5106 (self.instance.current.index === self.instance.group.length - 1 && !self.instance.current.opts.loop)) 5107 ) { 5108 left = left - Math.pow(-self.distanceX, 0.8); 5109 } else { 5110 left = left + self.distanceX; 5111 } 5112 } 5113 5114 self.sliderLastPos = { 5115 top: swiping == "x" ? 0 : self.sliderStartPos.top + self.distanceY, 5116 left: left 5117 }; 5118 5119 if (self.requestId) { 5120 cancelAFrame(self.requestId); 5121 5122 self.requestId = null; 5123 } 5124 5125 self.requestId = requestAFrame(function () { 5126 if (self.sliderLastPos) { 5127 $.each(self.instance.slides, function (index, slide) { 5128 var pos = slide.pos - self.instance.currPos; 5129 5130 $.fancybox.setTranslate(slide.$slide, { 5131 top: self.sliderLastPos.top, 5132 left: self.sliderLastPos.left + pos * self.canvasWidth + pos * slide.opts.gutter 5133 }); 5134 }); 5135 5136 self.$container.addClass("fancybox-is-sliding"); 5137 } 5138 }); 5139 }; 5140 5141 Guestures.prototype.onPan = function () { 5142 var self = this; 5143 5144 // Prevent accidental movement (sometimes, when tapping casually, finger can move a bit) 5145 if (distance(self.newPoints[0], self.realPoints[0]) < ($.fancybox.isMobile ? 10 : 5)) { 5146 self.startPoints = self.newPoints; 5147 return; 5148 } 5149 5150 self.canTap = false; 5151 5152 self.contentLastPos = self.limitMovement(); 5153 5154 if (self.requestId) { 5155 cancelAFrame(self.requestId); 5156 } 5157 5158 self.requestId = requestAFrame(function () { 5159 $.fancybox.setTranslate(self.$content, self.contentLastPos); 5160 }); 5161 }; 5162 5163 // Make panning sticky to the edges 5164 Guestures.prototype.limitMovement = function () { 5165 var self = this; 5166 5167 var canvasWidth = self.canvasWidth; 5168 var canvasHeight = self.canvasHeight; 5169 5170 var distanceX = self.distanceX; 5171 var distanceY = self.distanceY; 5172 5173 var contentStartPos = self.contentStartPos; 5174 5175 var currentOffsetX = contentStartPos.left; 5176 var currentOffsetY = contentStartPos.top; 5177 5178 var currentWidth = contentStartPos.width; 5179 var currentHeight = contentStartPos.height; 5180 5181 var minTranslateX, minTranslateY, maxTranslateX, maxTranslateY, newOffsetX, newOffsetY; 5182 5183 if (currentWidth > canvasWidth) { 5184 newOffsetX = currentOffsetX + distanceX; 5185 } else { 5186 newOffsetX = currentOffsetX; 5187 } 5188 5189 newOffsetY = currentOffsetY + distanceY; 5190 5191 // Slow down proportionally to traveled distance 5192 minTranslateX = Math.max(0, canvasWidth * 0.5 - currentWidth * 0.5); 5193 minTranslateY = Math.max(0, canvasHeight * 0.5 - currentHeight * 0.5); 5194 5195 maxTranslateX = Math.min(canvasWidth - currentWidth, canvasWidth * 0.5 - currentWidth * 0.5); 5196 maxTranslateY = Math.min(canvasHeight - currentHeight, canvasHeight * 0.5 - currentHeight * 0.5); 5197 5198 // -> 5199 if (distanceX > 0 && newOffsetX > minTranslateX) { 5200 newOffsetX = minTranslateX - 1 + Math.pow(-minTranslateX + currentOffsetX + distanceX, 0.8) || 0; 5201 } 5202 5203 // <- 5204 if (distanceX < 0 && newOffsetX < maxTranslateX) { 5205 newOffsetX = maxTranslateX + 1 - Math.pow(maxTranslateX - currentOffsetX - distanceX, 0.8) || 0; 5206 } 5207 5208 // \/ 5209 if (distanceY > 0 && newOffsetY > minTranslateY) { 5210 newOffsetY = minTranslateY - 1 + Math.pow(-minTranslateY + currentOffsetY + distanceY, 0.8) || 0; 5211 } 5212 5213 // /\ 5214 if (distanceY < 0 && newOffsetY < maxTranslateY) { 5215 newOffsetY = maxTranslateY + 1 - Math.pow(maxTranslateY - currentOffsetY - distanceY, 0.8) || 0; 5216 } 5217 5218 return { 5219 top: newOffsetY, 5220 left: newOffsetX 5221 }; 5222 }; 5223 5224 Guestures.prototype.limitPosition = function (newOffsetX, newOffsetY, newWidth, newHeight) { 5225 var self = this; 5226 5227 var canvasWidth = self.canvasWidth; 5228 var canvasHeight = self.canvasHeight; 5229 5230 if (newWidth > canvasWidth) { 5231 newOffsetX = newOffsetX > 0 ? 0 : newOffsetX; 5232 newOffsetX = newOffsetX < canvasWidth - newWidth ? canvasWidth - newWidth : newOffsetX; 5233 } else { 5234 // Center horizontally 5235 newOffsetX = Math.max(0, canvasWidth / 2 - newWidth / 2); 5236 } 5237 5238 if (newHeight > canvasHeight) { 5239 newOffsetY = newOffsetY > 0 ? 0 : newOffsetY; 5240 newOffsetY = newOffsetY < canvasHeight - newHeight ? canvasHeight - newHeight : newOffsetY; 5241 } else { 5242 // Center vertically 5243 newOffsetY = Math.max(0, canvasHeight / 2 - newHeight / 2); 5244 } 5245 5246 return { 5247 top: newOffsetY, 5248 left: newOffsetX 5249 }; 5250 }; 5251 5252 Guestures.prototype.onZoom = function () { 5253 var self = this; 5254 5255 // Calculate current distance between points to get pinch ratio and new width and height 5256 var contentStartPos = self.contentStartPos; 5257 5258 var currentWidth = contentStartPos.width; 5259 var currentHeight = contentStartPos.height; 5260 5261 var currentOffsetX = contentStartPos.left; 5262 var currentOffsetY = contentStartPos.top; 5263 5264 var endDistanceBetweenFingers = distance(self.newPoints[0], self.newPoints[1]); 5265 5266 var pinchRatio = endDistanceBetweenFingers / self.startDistanceBetweenFingers; 5267 5268 var newWidth = Math.floor(currentWidth * pinchRatio); 5269 var newHeight = Math.floor(currentHeight * pinchRatio); 5270 5271 // This is the translation due to pinch-zooming 5272 var translateFromZoomingX = (currentWidth - newWidth) * self.percentageOfImageAtPinchPointX; 5273 var translateFromZoomingY = (currentHeight - newHeight) * self.percentageOfImageAtPinchPointY; 5274 5275 // Point between the two touches 5276 var centerPointEndX = (self.newPoints[0].x + self.newPoints[1].x) / 2 - $(window).scrollLeft(); 5277 var centerPointEndY = (self.newPoints[0].y + self.newPoints[1].y) / 2 - $(window).scrollTop(); 5278 5279 // And this is the translation due to translation of the centerpoint 5280 // between the two fingers 5281 var translateFromTranslatingX = centerPointEndX - self.centerPointStartX; 5282 var translateFromTranslatingY = centerPointEndY - self.centerPointStartY; 5283 5284 // The new offset is the old/current one plus the total translation 5285 var newOffsetX = currentOffsetX + (translateFromZoomingX + translateFromTranslatingX); 5286 var newOffsetY = currentOffsetY + (translateFromZoomingY + translateFromTranslatingY); 5287 5288 var newPos = { 5289 top: newOffsetY, 5290 left: newOffsetX, 5291 scaleX: pinchRatio, 5292 scaleY: pinchRatio 5293 }; 5294 5295 self.canTap = false; 5296 5297 self.newWidth = newWidth; 5298 self.newHeight = newHeight; 5299 5300 self.contentLastPos = newPos; 5301 5302 if (self.requestId) { 5303 cancelAFrame(self.requestId); 5304 } 5305 5306 self.requestId = requestAFrame(function () { 5307 $.fancybox.setTranslate(self.$content, self.contentLastPos); 5308 }); 5309 }; 5310 5311 Guestures.prototype.ontouchend = function (e) { 5312 var self = this; 5313 5314 var swiping = self.isSwiping; 5315 var panning = self.isPanning; 5316 var zooming = self.isZooming; 5317 var scrolling = self.isScrolling; 5318 5319 self.endPoints = getPointerXY(e); 5320 self.dMs = Math.max(new Date().getTime() - self.startTime, 1); 5321 5322 self.$container.removeClass("fancybox-is-grabbing"); 5323 5324 $(document).off(".fb.touch"); 5325 5326 document.removeEventListener("scroll", self.onscroll, true); 5327 5328 if (self.requestId) { 5329 cancelAFrame(self.requestId); 5330 5331 self.requestId = null; 5332 } 5333 5334 self.isSwiping = false; 5335 self.isPanning = false; 5336 self.isZooming = false; 5337 self.isScrolling = false; 5338 5339 self.instance.isDragging = false; 5340 5341 if (self.canTap) { 5342 return self.onTap(e); 5343 } 5344 5345 self.speed = 100; 5346 5347 // Speed in px/ms 5348 self.velocityX = (self.distanceX / self.dMs) * 0.5; 5349 self.velocityY = (self.distanceY / self.dMs) * 0.5; 5350 5351 if (panning) { 5352 self.endPanning(); 5353 } else if (zooming) { 5354 self.endZooming(); 5355 } else { 5356 self.endSwiping(swiping, scrolling); 5357 } 5358 5359 return; 5360 }; 5361 5362 Guestures.prototype.endSwiping = function (swiping, scrolling) { 5363 var self = this, 5364 ret = false, 5365 len = self.instance.group.length, 5366 distanceX = Math.abs(self.distanceX), 5367 canAdvance = swiping == "x" && len > 1 && ((self.dMs > 130 && distanceX > 10) || distanceX > 50), 5368 speedX = 300; 5369 5370 self.sliderLastPos = null; 5371 5372 // Close if swiped vertically / navigate if horizontally 5373 if (swiping == "y" && !scrolling && Math.abs(self.distanceY) > 50) { 5374 // Continue vertical movement 5375 $.fancybox.animate( 5376 self.instance.current.$slide, { 5377 top: self.sliderStartPos.top + self.distanceY + self.velocityY * 150, 5378 opacity: 0 5379 }, 5380 200 5381 ); 5382 ret = self.instance.close(true, 250); 5383 } else if (canAdvance && self.distanceX > 0) { 5384 ret = self.instance.previous(speedX); 5385 } else if (canAdvance && self.distanceX < 0) { 5386 ret = self.instance.next(speedX); 5387 } 5388 5389 if (ret === false && (swiping == "x" || swiping == "y")) { 5390 self.instance.centerSlide(200); 5391 } 5392 5393 self.$container.removeClass("fancybox-is-sliding"); 5394 }; 5395 5396 // Limit panning from edges 5397 // ======================== 5398 Guestures.prototype.endPanning = function () { 5399 var self = this, 5400 newOffsetX, 5401 newOffsetY, 5402 newPos; 5403 5404 if (!self.contentLastPos) { 5405 return; 5406 } 5407 5408 if (self.opts.momentum === false || self.dMs > 350) { 5409 newOffsetX = self.contentLastPos.left; 5410 newOffsetY = self.contentLastPos.top; 5411 } else { 5412 // Continue movement 5413 newOffsetX = self.contentLastPos.left + self.velocityX * 500; 5414 newOffsetY = self.contentLastPos.top + self.velocityY * 500; 5415 } 5416 5417 newPos = self.limitPosition(newOffsetX, newOffsetY, self.contentStartPos.width, self.contentStartPos.height); 5418 5419 newPos.width = self.contentStartPos.width; 5420 newPos.height = self.contentStartPos.height; 5421 5422 $.fancybox.animate(self.$content, newPos, 366); 5423 }; 5424 5425 Guestures.prototype.endZooming = function () { 5426 var self = this; 5427 5428 var current = self.instance.current; 5429 5430 var newOffsetX, newOffsetY, newPos, reset; 5431 5432 var newWidth = self.newWidth; 5433 var newHeight = self.newHeight; 5434 5435 if (!self.contentLastPos) { 5436 return; 5437 } 5438 5439 newOffsetX = self.contentLastPos.left; 5440 newOffsetY = self.contentLastPos.top; 5441 5442 reset = { 5443 top: newOffsetY, 5444 left: newOffsetX, 5445 width: newWidth, 5446 height: newHeight, 5447 scaleX: 1, 5448 scaleY: 1 5449 }; 5450 5451 // Reset scalex/scaleY values; this helps for perfomance and does not break animation 5452 $.fancybox.setTranslate(self.$content, reset); 5453 5454 if (newWidth < self.canvasWidth && newHeight < self.canvasHeight) { 5455 self.instance.scaleToFit(150); 5456 } else if (newWidth > current.width || newHeight > current.height) { 5457 self.instance.scaleToActual(self.centerPointStartX, self.centerPointStartY, 150); 5458 } else { 5459 newPos = self.limitPosition(newOffsetX, newOffsetY, newWidth, newHeight); 5460 5461 $.fancybox.animate(self.$content, newPos, 150); 5462 } 5463 }; 5464 5465 Guestures.prototype.onTap = function (e) { 5466 var self = this; 5467 var $target = $(e.target); 5468 5469 var instance = self.instance; 5470 var current = instance.current; 5471 5472 var endPoints = (e && getPointerXY(e)) || self.startPoints; 5473 5474 var tapX = endPoints[0] ? endPoints[0].x - $(window).scrollLeft() - self.stagePos.left : 0; 5475 var tapY = endPoints[0] ? endPoints[0].y - $(window).scrollTop() - self.stagePos.top : 0; 5476 5477 var where; 5478 5479 var process = function (prefix) { 5480 var action = current.opts[prefix]; 5481 5482 if ($.isFunction(action)) { 5483 action = action.apply(instance, [current, e]); 5484 } 5485 5486 if (!action) { 5487 return; 5488 } 5489 5490 switch (action) { 5491 case "close": 5492 instance.close(self.startEvent); 5493 5494 break; 5495 5496 case "toggleControls": 5497 instance.toggleControls(); 5498 5499 break; 5500 5501 case "next": 5502 instance.next(); 5503 5504 break; 5505 5506 case "nextOrClose": 5507 if (instance.group.length > 1) { 5508 instance.next(); 5509 } else { 5510 instance.close(self.startEvent); 5511 } 5512 5513 break; 5514 5515 case "zoom": 5516 if (current.type == "image" && (current.isLoaded || current.$ghost)) { 5517 if (instance.canPan()) { 5518 instance.scaleToFit(); 5519 } else if (instance.isScaledDown()) { 5520 instance.scaleToActual(tapX, tapY); 5521 } else if (instance.group.length < 2) { 5522 instance.close(self.startEvent); 5523 } 5524 } 5525 5526 break; 5527 } 5528 }; 5529 5530 // Ignore right click 5531 if (e.originalEvent && e.originalEvent.button == 2) { 5532 return; 5533 } 5534 5535 // Skip if clicked on the scrollbar 5536 if (!$target.is("img") && tapX > $target[0].clientWidth + $target.offset().left) { 5537 return; 5538 } 5539 5540 // Check where is clicked 5541 if ($target.is(".fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-container")) { 5542 where = "Outside"; 5543 } else if ($target.is(".fancybox-slide")) { 5544 where = "Slide"; 5545 } else if ( 5546 instance.current.$content && 5547 instance.current.$content 5548 .find($target) 5549 .addBack() 5550 .filter($target).length 5551 ) { 5552 where = "Content"; 5553 } else { 5554 return; 5555 } 5556 5557 // Check if this is a double tap 5558 if (self.tapped) { 5559 // Stop previously created single tap 5560 clearTimeout(self.tapped); 5561 self.tapped = null; 5562 5563 // Skip if distance between taps is too big 5564 if (Math.abs(tapX - self.tapX) > 50 || Math.abs(tapY - self.tapY) > 50) { 5565 return this; 5566 } 5567 5568 // OK, now we assume that this is a double-tap 5569 process("dblclick" + where); 5570 } else { 5571 // Single tap will be processed if user has not clicked second time within 300ms 5572 // or there is no need to wait for double-tap 5573 self.tapX = tapX; 5574 self.tapY = tapY; 5575 5576 if (current.opts["dblclick" + where] && current.opts["dblclick" + where] !== current.opts["click" + where]) { 5577 self.tapped = setTimeout(function () { 5578 self.tapped = null; 5579 5580 if (!instance.isAnimating) { 5581 process("click" + where); 5582 } 5583 }, 500); 5584 } else { 5585 process("click" + where); 5586 } 5587 } 5588 5589 return this; 5590 }; 5591 5592 $(document) 5593 .on("onActivate.fb", function (e, instance) { 5594 if (instance && !instance.Guestures) { 5595 instance.Guestures = new Guestures(instance); 5596 } 5597 }) 5598 .on("beforeClose.fb", function (e, instance) { 5599 if (instance && instance.Guestures) { 5600 instance.Guestures.destroy(); 5601 } 5602 }); 5603})(window, document, jQuery); 5604// ========================================================================== 5605// 5606// SlideShow 5607// Enables slideshow functionality 5608// 5609// Example of usage: 5610// $.fancybox.getInstance().SlideShow.start() 5611// 5612// ========================================================================== 5613(function (document, $) { 5614 "use strict"; 5615 5616 $.extend(true, $.fancybox.defaults, { 5617 btnTpl: { 5618 slideShow: '<button data-fancybox-play class="fancybox-button fancybox-button--play" title="{{PLAY_START}}">' + 5619 '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M6.5 5.4v13.2l11-6.6z"/></svg>' + 5620 '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M8.33 5.75h2.2v12.5h-2.2V5.75zm5.15 0h2.2v12.5h-2.2V5.75z"/></svg>' + 5621 "</button>" 5622 }, 5623 slideShow: { 5624 autoStart: false, 5625 speed: 3000, 5626 progress: true 5627 } 5628 }); 5629 5630 var SlideShow = function (instance) { 5631 this.instance = instance; 5632 this.init(); 5633 }; 5634 5635 $.extend(SlideShow.prototype, { 5636 timer: null, 5637 isActive: false, 5638 $button: null, 5639 5640 init: function () { 5641 var self = this, 5642 instance = self.instance, 5643 opts = instance.group[instance.currIndex].opts.slideShow; 5644 5645 self.$button = instance.$refs.toolbar.find("[data-fancybox-play]").on("click", function () { 5646 self.toggle(); 5647 }); 5648 5649 if (instance.group.length < 2 || !opts) { 5650 self.$button.hide(); 5651 } else if (opts.progress) { 5652 self.$progress = $('<div class="fancybox-progress"></div>').appendTo(instance.$refs.inner); 5653 } 5654 }, 5655 5656 set: function (force) { 5657 var self = this, 5658 instance = self.instance, 5659 current = instance.current; 5660 5661 // Check if reached last element 5662 if (current && (force === true || current.opts.loop || instance.currIndex < instance.group.length - 1)) { 5663 if (self.isActive && current.contentType !== "video") { 5664 if (self.$progress) { 5665 $.fancybox.animate(self.$progress.show(), { 5666 scaleX: 1 5667 }, current.opts.slideShow.speed); 5668 } 5669 5670 self.timer = setTimeout(function () { 5671 if (!instance.current.opts.loop && instance.current.index == instance.group.length - 1) { 5672 instance.jumpTo(0); 5673 } else { 5674 instance.next(); 5675 } 5676 }, current.opts.slideShow.speed); 5677 } 5678 } else { 5679 self.stop(); 5680 instance.idleSecondsCounter = 0; 5681 instance.showControls(); 5682 } 5683 }, 5684 5685 clear: function () { 5686 var self = this; 5687 5688 clearTimeout(self.timer); 5689 5690 self.timer = null; 5691 5692 if (self.$progress) { 5693 self.$progress.removeAttr("style").hide(); 5694 } 5695 }, 5696 5697 start: function () { 5698 var self = this, 5699 current = self.instance.current; 5700 5701 if (current) { 5702 self.$button 5703 .attr("title", (current.opts.i18n[current.opts.lang] || current.opts.i18n.en).PLAY_STOP) 5704 .removeClass("fancybox-button--play") 5705 .addClass("fancybox-button--pause"); 5706 5707 self.isActive = true; 5708 5709 if (current.isComplete) { 5710 self.set(true); 5711 } 5712 5713 self.instance.trigger("onSlideShowChange", true); 5714 } 5715 }, 5716 5717 stop: function () { 5718 var self = this, 5719 current = self.instance.current; 5720 5721 self.clear(); 5722 5723 self.$button 5724 .attr("title", (current.opts.i18n[current.opts.lang] || current.opts.i18n.en).PLAY_START) 5725 .removeClass("fancybox-button--pause") 5726 .addClass("fancybox-button--play"); 5727 5728 self.isActive = false; 5729 5730 self.instance.trigger("onSlideShowChange", false); 5731 5732 if (self.$progress) { 5733 self.$progress.removeAttr("style").hide(); 5734 } 5735 }, 5736 5737 toggle: function () { 5738 var self = this; 5739 5740 if (self.isActive) { 5741 self.stop(); 5742 } else { 5743 self.start(); 5744 } 5745 } 5746 }); 5747 5748 $(document).on({ 5749 "onInit.fb": function (e, instance) { 5750 if (instance && !instance.SlideShow) { 5751 instance.SlideShow = new SlideShow(instance); 5752 } 5753 }, 5754 5755 "beforeShow.fb": function (e, instance, current, firstRun) { 5756 var SlideShow = instance && instance.SlideShow; 5757 5758 if (firstRun) { 5759 if (SlideShow && current.opts.slideShow.autoStart) { 5760 SlideShow.start(); 5761 } 5762 } else if (SlideShow && SlideShow.isActive) { 5763 SlideShow.clear(); 5764 } 5765 }, 5766 5767 "afterShow.fb": function (e, instance, current) { 5768 var SlideShow = instance && instance.SlideShow; 5769 5770 if (SlideShow && SlideShow.isActive) { 5771 SlideShow.set(); 5772 } 5773 }, 5774 5775 "afterKeydown.fb": function (e, instance, current, keypress, keycode) { 5776 var SlideShow = instance && instance.SlideShow; 5777 5778 // "P" or Spacebar 5779 if (SlideShow && current.opts.slideShow && (keycode === 80 || keycode === 32) && !$(document.activeElement).is("button,a,input")) { 5780 keypress.preventDefault(); 5781 5782 SlideShow.toggle(); 5783 } 5784 }, 5785 5786 "beforeClose.fb onDeactivate.fb": function (e, instance) { 5787 var SlideShow = instance && instance.SlideShow; 5788 5789 if (SlideShow) { 5790 SlideShow.stop(); 5791 } 5792 } 5793 }); 5794 5795 // Page Visibility API to pause slideshow when window is not active 5796 $(document).on("visibilitychange", function () { 5797 var instance = $.fancybox.getInstance(), 5798 SlideShow = instance && instance.SlideShow; 5799 5800 if (SlideShow && SlideShow.isActive) { 5801 if (document.hidden) { 5802 SlideShow.clear(); 5803 } else { 5804 SlideShow.set(); 5805 } 5806 } 5807 }); 5808})(document, jQuery); 5809// ========================================================================== 5810// 5811// FullScreen 5812// Adds fullscreen functionality 5813// 5814// ========================================================================== 5815(function (document, $) { 5816 "use strict"; 5817 5818 // Collection of methods supported by user browser 5819 var fn = (function () { 5820 var fnMap = [ 5821 ["requestFullscreen", "exitFullscreen", "fullscreenElement", "fullscreenEnabled", "fullscreenchange", "fullscreenerror"], 5822 // new WebKit 5823 [ 5824 "webkitRequestFullscreen", 5825 "webkitExitFullscreen", 5826 "webkitFullscreenElement", 5827 "webkitFullscreenEnabled", 5828 "webkitfullscreenchange", 5829 "webkitfullscreenerror" 5830 ], 5831 // old WebKit (Safari 5.1) 5832 [ 5833 "webkitRequestFullScreen", 5834 "webkitCancelFullScreen", 5835 "webkitCurrentFullScreenElement", 5836 "webkitCancelFullScreen", 5837 "webkitfullscreenchange", 5838 "webkitfullscreenerror" 5839 ], 5840 [ 5841 "mozRequestFullScreen", 5842 "mozCancelFullScreen", 5843 "mozFullScreenElement", 5844 "mozFullScreenEnabled", 5845 "mozfullscreenchange", 5846 "mozfullscreenerror" 5847 ], 5848 ["msRequestFullscreen", "msExitFullscreen", "msFullscreenElement", "msFullscreenEnabled", "MSFullscreenChange", "MSFullscreenError"] 5849 ]; 5850 5851 var ret = {}; 5852 5853 for (var i = 0; i < fnMap.length; i++) { 5854 var val = fnMap[i]; 5855 5856 if (val && val[1] in document) { 5857 for (var j = 0; j < val.length; j++) { 5858 ret[fnMap[0][j]] = val[j]; 5859 } 5860 5861 return ret; 5862 } 5863 } 5864 5865 return false; 5866 })(); 5867 5868 if (fn) { 5869 var FullScreen = { 5870 request: function (elem) { 5871 elem = elem || document.documentElement; 5872 5873 elem[fn.requestFullscreen](elem.ALLOW_KEYBOARD_INPUT); 5874 }, 5875 exit: function () { 5876 document[fn.exitFullscreen](); 5877 }, 5878 toggle: function (elem) { 5879 elem = elem || document.documentElement; 5880 5881 if (this.isFullscreen()) { 5882 this.exit(); 5883 } else { 5884 this.request(elem); 5885 } 5886 }, 5887 isFullscreen: function () { 5888 return Boolean(document[fn.fullscreenElement]); 5889 }, 5890 enabled: function () { 5891 return Boolean(document[fn.fullscreenEnabled]); 5892 } 5893 }; 5894 5895 $.extend(true, $.fancybox.defaults, { 5896 btnTpl: { 5897 fullScreen: '<button data-fancybox-fullscreen class="fancybox-button fancybox-button--fsenter" title="{{FULL_SCREEN}}">' + 5898 '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"/></svg>' + 5899 '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M5 16h3v3h2v-5H5zm3-8H5v2h5V5H8zm6 11h2v-3h3v-2h-5zm2-11V5h-2v5h5V8z"/></svg>' + 5900 "</button>" 5901 }, 5902 fullScreen: { 5903 autoStart: false 5904 } 5905 }); 5906 5907 $(document).on(fn.fullscreenchange, function () { 5908 var isFullscreen = FullScreen.isFullscreen(), 5909 instance = $.fancybox.getInstance(); 5910 5911 if (instance) { 5912 // If image is zooming, then force to stop and reposition properly 5913 if (instance.current && instance.current.type === "image" && instance.isAnimating) { 5914 instance.isAnimating = false; 5915 5916 instance.update(true, true, 0); 5917 5918 if (!instance.isComplete) { 5919 instance.complete(); 5920 } 5921 } 5922 5923 instance.trigger("onFullscreenChange", isFullscreen); 5924 5925 instance.$refs.container.toggleClass("fancybox-is-fullscreen", isFullscreen); 5926 5927 instance.$refs.toolbar 5928 .find("[data-fancybox-fullscreen]") 5929 .toggleClass("fancybox-button--fsenter", !isFullscreen) 5930 .toggleClass("fancybox-button--fsexit", isFullscreen); 5931 } 5932 }); 5933 } 5934 5935 $(document).on({ 5936 "onInit.fb": function (e, instance) { 5937 var $container; 5938 5939 if (!fn) { 5940 instance.$refs.toolbar.find("[data-fancybox-fullscreen]").remove(); 5941 5942 return; 5943 } 5944 5945 if (instance && instance.group[instance.currIndex].opts.fullScreen) { 5946 $container = instance.$refs.container; 5947 5948 $container.on("click.fb-fullscreen", "[data-fancybox-fullscreen]", function (e) { 5949 e.stopPropagation(); 5950 e.preventDefault(); 5951 5952 FullScreen.toggle(); 5953 }); 5954 5955 if (instance.opts.fullScreen && instance.opts.fullScreen.autoStart === true) { 5956 FullScreen.request(); 5957 } 5958 5959 // Expose API 5960 instance.FullScreen = FullScreen; 5961 } else if (instance) { 5962 instance.$refs.toolbar.find("[data-fancybox-fullscreen]").hide(); 5963 } 5964 }, 5965 5966 "afterKeydown.fb": function (e, instance, current, keypress, keycode) { 5967 // "F" 5968 if (instance && instance.FullScreen && keycode === 70) { 5969 keypress.preventDefault(); 5970 5971 instance.FullScreen.toggle(); 5972 } 5973 }, 5974 5975 "beforeClose.fb": function (e, instance) { 5976 if (instance && instance.FullScreen && instance.$refs.container.hasClass("fancybox-is-fullscreen")) { 5977 FullScreen.exit(); 5978 } 5979 } 5980 }); 5981})(document, jQuery); 5982// ========================================================================== 5983// 5984// Thumbs 5985// Displays thumbnails in a grid 5986// 5987// ========================================================================== 5988(function (document, $) { 5989 "use strict"; 5990 5991 var CLASS = "fancybox-thumbs", 5992 CLASS_ACTIVE = CLASS + "-active"; 5993 5994 // Make sure there are default values 5995 $.fancybox.defaults = $.extend( 5996 true, { 5997 btnTpl: { 5998 thumbs: '<button data-fancybox-thumbs class="fancybox-button fancybox-button--thumbs" title="{{THUMBS}}">' + 5999 '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M14.59 14.59h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76H5.65v-3.76zm8.94-4.47h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76H5.65v-3.76zm8.94-4.47h3.76v3.76h-3.76V5.65zm-4.47 0h3.76v3.76h-3.76V5.65zm-4.47 0h3.76v3.76H5.65V5.65z"/></svg>' + 6000 "</button>" 6001 }, 6002 thumbs: { 6003 autoStart: false, // Display thumbnails on opening 6004 hideOnClose: true, // Hide thumbnail grid when closing animation starts 6005 parentEl: ".fancybox-container", // Container is injected into this element 6006 axis: "y" // Vertical (y) or horizontal (x) scrolling 6007 } 6008 }, 6009 $.fancybox.defaults 6010 ); 6011 6012 var FancyThumbs = function (instance) { 6013 this.init(instance); 6014 }; 6015 6016 $.extend(FancyThumbs.prototype, { 6017 $button: null, 6018 $grid: null, 6019 $list: null, 6020 isVisible: false, 6021 isActive: false, 6022 6023 init: function (instance) { 6024 var self = this, 6025 group = instance.group, 6026 enabled = 0; 6027 6028 self.instance = instance; 6029 self.opts = group[instance.currIndex].opts.thumbs; 6030 6031 instance.Thumbs = self; 6032 6033 self.$button = instance.$refs.toolbar.find("[data-fancybox-thumbs]"); 6034 6035 // Enable thumbs if at least two group items have thumbnails 6036 for (var i = 0, len = group.length; i < len; i++) { 6037 if (group[i].thumb) { 6038 enabled++; 6039 } 6040 6041 if (enabled > 1) { 6042 break; 6043 } 6044 } 6045 6046 if (enabled > 1 && !!self.opts) { 6047 self.$button.removeAttr("style").on("click", function () { 6048 self.toggle(); 6049 }); 6050 6051 self.isActive = true; 6052 } else { 6053 self.$button.hide(); 6054 } 6055 }, 6056 6057 create: function () { 6058 var self = this, 6059 instance = self.instance, 6060 parentEl = self.opts.parentEl, 6061 list = [], 6062 src; 6063 6064 if (!self.$grid) { 6065 // Create main element 6066 self.$grid = $('<div class="' + CLASS + " " + CLASS + "-" + self.opts.axis + '"></div>').appendTo( 6067 instance.$refs.container 6068 .find(parentEl) 6069 .addBack() 6070 .filter(parentEl) 6071 ); 6072 6073 // Add "click" event that performs gallery navigation 6074 self.$grid.on("click", "a", function () { 6075 instance.jumpTo($(this).attr("data-index")); 6076 }); 6077 } 6078 6079 // Build the list 6080 if (!self.$list) { 6081 self.$list = $('<div class="' + CLASS + '__list">').appendTo(self.$grid); 6082 } 6083 6084 $.each(instance.group, function (i, item) { 6085 src = item.thumb; 6086 6087 if (!src && item.type === "image") { 6088 src = item.src; 6089 } 6090 6091 list.push( 6092 '<a href="javascript:;" tabindex="0" data-index="' + 6093 i + 6094 '"' + 6095 (src && src.length ? ' style="background-image:url(' + src + ')"' : 'class="fancybox-thumbs-missing"') + 6096 "></a>" 6097 ); 6098 }); 6099 6100 self.$list[0].innerHTML = list.join(""); 6101 6102 if (self.opts.axis === "x") { 6103 // Set fixed width for list element to enable horizontal scrolling 6104 self.$list.width( 6105 parseInt(self.$grid.css("padding-right"), 10) + 6106 instance.group.length * 6107 self.$list 6108 .children() 6109 .eq(0) 6110 .outerWidth(true) 6111 ); 6112 } 6113 }, 6114 6115 focus: function (duration) { 6116 var self = this, 6117 $list = self.$list, 6118 $grid = self.$grid, 6119 thumb, 6120 thumbPos; 6121 6122 if (!self.instance.current) { 6123 return; 6124 } 6125 6126 thumb = $list 6127 .children() 6128 .removeClass(CLASS_ACTIVE) 6129 .filter('[data-index="' + self.instance.current.index + '"]') 6130 .addClass(CLASS_ACTIVE); 6131 6132 thumbPos = thumb.position(); 6133 6134 // Check if need to scroll to make current thumb visible 6135 if (self.opts.axis === "y" && (thumbPos.top < 0 || thumbPos.top > $list.height() - thumb.outerHeight())) { 6136 $list.stop().animate({ 6137 scrollTop: $list.scrollTop() + thumbPos.top 6138 }, 6139 duration 6140 ); 6141 } else if ( 6142 self.opts.axis === "x" && 6143 (thumbPos.left < $grid.scrollLeft() || thumbPos.left > $grid.scrollLeft() + ($grid.width() - thumb.outerWidth())) 6144 ) { 6145 $list 6146 .parent() 6147 .stop() 6148 .animate({ 6149 scrollLeft: thumbPos.left 6150 }, 6151 duration 6152 ); 6153 } 6154 }, 6155 6156 update: function () { 6157 var that = this; 6158 that.instance.$refs.container.toggleClass("fancybox-show-thumbs", this.isVisible); 6159 6160 if (that.isVisible) { 6161 if (!that.$grid) { 6162 that.create(); 6163 } 6164 6165 that.instance.trigger("onThumbsShow"); 6166 6167 that.focus(0); 6168 } else if (that.$grid) { 6169 that.instance.trigger("onThumbsHide"); 6170 } 6171 6172 // Update content position 6173 that.instance.update(); 6174 }, 6175 6176 hide: function () { 6177 this.isVisible = false; 6178 this.update(); 6179 }, 6180 6181 show: function () { 6182 this.isVisible = true; 6183 this.update(); 6184 }, 6185 6186 toggle: function () { 6187 this.isVisible = !this.isVisible; 6188 this.update(); 6189 } 6190 }); 6191 6192 $(document).on({ 6193 "onInit.fb": function (e, instance) { 6194 var Thumbs; 6195 6196 if (instance && !instance.Thumbs) { 6197 Thumbs = new FancyThumbs(instance); 6198 6199 if (Thumbs.isActive && Thumbs.opts.autoStart === true) { 6200 Thumbs.show(); 6201 } 6202 } 6203 }, 6204 6205 "beforeShow.fb": function (e, instance, item, firstRun) { 6206 var Thumbs = instance && instance.Thumbs; 6207 6208 if (Thumbs && Thumbs.isVisible) { 6209 Thumbs.focus(firstRun ? 0 : 250); 6210 } 6211 }, 6212 6213 "afterKeydown.fb": function (e, instance, current, keypress, keycode) { 6214 var Thumbs = instance && instance.Thumbs; 6215 6216 // "G" 6217 if (Thumbs && Thumbs.isActive && keycode === 71) { 6218 keypress.preventDefault(); 6219 6220 Thumbs.toggle(); 6221 } 6222 }, 6223 6224 "beforeClose.fb": function (e, instance) { 6225 var Thumbs = instance && instance.Thumbs; 6226 6227 if (Thumbs && Thumbs.isVisible && Thumbs.opts.hideOnClose !== false) { 6228 Thumbs.$grid.hide(); 6229 } 6230 } 6231 }); 6232})(document, jQuery); 6233//// ========================================================================== 6234// 6235// Share 6236// Displays simple form for sharing current url 6237// 6238// ========================================================================== 6239(function (document, $) { 6240 "use strict"; 6241 6242 $.extend(true, $.fancybox.defaults, { 6243 btnTpl: { 6244 share: '<button data-fancybox-share class="fancybox-button fancybox-button--share" title="{{SHARE}}">' + 6245 '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M2.55 19c1.4-8.4 9.1-9.8 11.9-9.8V5l7 7-7 6.3v-3.5c-2.8 0-10.5 2.1-11.9 4.2z"/></svg>' + 6246 "</button>" 6247 }, 6248 share: { 6249 url: function (instance, item) { 6250 return ( 6251 (!instance.currentHash && !(item.type === "inline" || item.type === "html") ? item.origSrc || item.src : false) || window.location 6252 ); 6253 }, 6254 tpl: '<div class="fancybox-share">' + 6255 "<h1>{{SHARE}}</h1>" + 6256 "<p>" + 6257 '<a class="fancybox-share__button fancybox-share__button--fb" href="https://www.facebook.com/sharer/sharer.php?u={{url}}">' + 6258 '<svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="m287 456v-299c0-21 6-35 35-35h38v-63c-7-1-29-3-55-3-54 0-91 33-91 94v306m143-254h-205v72h196" /></svg>' + 6259 "<span>Facebook</span>" + 6260 "</a>" + 6261 '<a class="fancybox-share__button fancybox-share__button--tw" href="https://twitter.com/intent/tweet?url={{url}}&text={{descr}}">' + 6262 '<svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="m456 133c-14 7-31 11-47 13 17-10 30-27 37-46-15 10-34 16-52 20-61-62-157-7-141 75-68-3-129-35-169-85-22 37-11 86 26 109-13 0-26-4-37-9 0 39 28 72 65 80-12 3-25 4-37 2 10 33 41 57 77 57-42 30-77 38-122 34 170 111 378-32 359-208 16-11 30-25 41-42z" /></svg>' + 6263 "<span>Twitter</span>" + 6264 "</a>" + 6265 '<a class="fancybox-share__button fancybox-share__button--pt" href="https://www.pinterest.com/pin/create/button/?url={{url}}&description={{descr}}&media={{media}}">' + 6266 '<svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="m265 56c-109 0-164 78-164 144 0 39 15 74 47 87 5 2 10 0 12-5l4-19c2-6 1-8-3-13-9-11-15-25-15-45 0-58 43-110 113-110 62 0 96 38 96 88 0 67-30 122-73 122-24 0-42-19-36-44 6-29 20-60 20-81 0-19-10-35-31-35-25 0-44 26-44 60 0 21 7 36 7 36l-30 125c-8 37-1 83 0 87 0 3 4 4 5 2 2-3 32-39 42-75l16-64c8 16 31 29 56 29 74 0 124-67 124-157 0-69-58-132-146-132z" fill="#fff"/></svg>' + 6267 "<span>Pinterest</span>" + 6268 "</a>" + 6269 "</p>" + 6270 '<p><input class="fancybox-share__input" type="text" value="{{url_raw}}" onclick="select()" /></p>' + 6271 "</div>" 6272 } 6273 }); 6274 6275 function escapeHtml(string) { 6276 var entityMap = { 6277 "&": "&", 6278 "<": "<", 6279 ">": ">", 6280 '"': """, 6281 "'": "'", 6282 "/": "/", 6283 "`": "`", 6284 "=": "=" 6285 }; 6286 6287 return String(string).replace(/[&<>"'`=\/]/g, function (s) { 6288 return entityMap[s]; 6289 }); 6290 } 6291 6292 $(document).on("click", "[data-fancybox-share]", function () { 6293 var instance = $.fancybox.getInstance(), 6294 current = instance.current || null, 6295 url, 6296 tpl; 6297 6298 if (!current) { 6299 return; 6300 } 6301 6302 if ($.type(current.opts.share.url) === "function") { 6303 url = current.opts.share.url.apply(current, [instance, current]); 6304 } 6305 6306 tpl = current.opts.share.tpl 6307 .replace(/\{\{media\}\}/g, current.type === "image" ? encodeURIComponent(current.src) : "") 6308 .replace(/\{\{url\}\}/g, encodeURIComponent(url)) 6309 .replace(/\{\{url_raw\}\}/g, escapeHtml(url)) 6310 .replace(/\{\{descr\}\}/g, instance.$caption ? encodeURIComponent(instance.$caption.text()) : ""); 6311 6312 $.fancybox.open({ 6313 src: instance.translate(instance, tpl), 6314 type: "html", 6315 opts: { 6316 touch: false, 6317 animationEffect: false, 6318 afterLoad: function (shareInstance, shareCurrent) { 6319 // Close self if parent instance is closing 6320 instance.$refs.container.one("beforeClose.fb", function () { 6321 shareInstance.close(null, 0); 6322 }); 6323 6324 // Opening links in a popup window 6325 shareCurrent.$content.find(".fancybox-share__button").click(function () { 6326 window.open(this.href, "Share", "width=550, height=450"); 6327 return false; 6328 }); 6329 }, 6330 mobile: { 6331 autoFocus: false 6332 } 6333 } 6334 }); 6335 }); 6336})(document, jQuery); 6337// ========================================================================== 6338// 6339// Hash 6340// Enables linking to each modal 6341// 6342// ========================================================================== 6343(function (window, document, $) { 6344 "use strict"; 6345 6346 // Simple $.escapeSelector polyfill (for jQuery prior v3) 6347 if (!$.escapeSelector) { 6348 $.escapeSelector = function (sel) { 6349 var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g; 6350 var fcssescape = function (ch, asCodePoint) { 6351 if (asCodePoint) { 6352 // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER 6353 if (ch === "\0") { 6354 return "\uFFFD"; 6355 } 6356 6357 // Control characters and (dependent upon position) numbers get escaped as code points 6358 return ch.slice(0, -1) + "\\" + ch.charCodeAt(ch.length - 1).toString(16) + " "; 6359 } 6360 6361 // Other potentially-special ASCII characters get backslash-escaped 6362 return "\\" + ch; 6363 }; 6364 6365 return (sel + "").replace(rcssescape, fcssescape); 6366 }; 6367 } 6368 6369 // Get info about gallery name and current index from url 6370 function parseUrl() { 6371 var hash = window.location.hash.substr(1), 6372 rez = hash.split("-"), 6373 index = rez.length > 1 && /^\+?\d+$/.test(rez[rez.length - 1]) ? parseInt(rez.pop(-1), 10) || 1 : 1, 6374 gallery = rez.join("-"); 6375 6376 return { 6377 hash: hash, 6378 /* Index is starting from 1 */ 6379 index: index < 1 ? 1 : index, 6380 gallery: gallery 6381 }; 6382 } 6383 6384 // Trigger click evnt on links to open new fancyBox instance 6385 function triggerFromUrl(url) { 6386 if (url.gallery !== "") { 6387 // If we can find element matching 'data-fancybox' atribute, 6388 // then triggering click event should start fancyBox 6389 $("[data-fancybox='" + $.escapeSelector(url.gallery) + "']") 6390 .eq(url.index - 1) 6391 .focus() 6392 .trigger("click.fb-start"); 6393 } 6394 } 6395 6396 // Get gallery name from current instance 6397 function getGalleryID(instance) { 6398 var opts, ret; 6399 6400 if (!instance) { 6401 return false; 6402 } 6403 6404 opts = instance.current ? instance.current.opts : instance.opts; 6405 ret = opts.hash || (opts.$orig ? opts.$orig.data("fancybox") || opts.$orig.data("fancybox-trigger") : ""); 6406 6407 return ret === "" ? false : ret; 6408 } 6409 6410 // Start when DOM becomes ready 6411 $(function () { 6412 // Check if user has disabled this module 6413 if ($.fancybox.defaults.hash === false) { 6414 return; 6415 } 6416 6417 // Update hash when opening/closing fancyBox 6418 $(document).on({ 6419 "onInit.fb": function (e, instance) { 6420 var url, gallery; 6421 6422 if (instance.group[instance.currIndex].opts.hash === false) { 6423 return; 6424 } 6425 6426 url = parseUrl(); 6427 gallery = getGalleryID(instance); 6428 6429 // Make sure gallery start index matches index from hash 6430 if (gallery && url.gallery && gallery == url.gallery) { 6431 instance.currIndex = url.index - 1; 6432 } 6433 }, 6434 6435 "beforeShow.fb": function (e, instance, current, firstRun) { 6436 var gallery; 6437 6438 if (!current || current.opts.hash === false) { 6439 return; 6440 } 6441 6442 // Check if need to update window hash 6443 gallery = getGalleryID(instance); 6444 6445 if (!gallery) { 6446 return; 6447 } 6448 6449 // Variable containing last hash value set by fancyBox 6450 // It will be used to determine if fancyBox needs to close after hash change is detected 6451 instance.currentHash = gallery + (instance.group.length > 1 ? "-" + (current.index + 1) : ""); 6452 6453 // If current hash is the same (this instance most likely is opened by hashchange), then do nothing 6454 if (window.location.hash === "#" + instance.currentHash) { 6455 return; 6456 } 6457 6458 if (firstRun && !instance.origHash) { 6459 instance.origHash = window.location.hash; 6460 } 6461 6462 if (instance.hashTimer) { 6463 clearTimeout(instance.hashTimer); 6464 } 6465 6466 // Update hash 6467 instance.hashTimer = setTimeout(function () { 6468 if ("replaceState" in window.history) { 6469 window.history[firstRun ? "pushState" : "replaceState"]({}, 6470 document.title, 6471 window.location.pathname + window.location.search + "#" + instance.currentHash 6472 ); 6473 6474 if (firstRun) { 6475 instance.hasCreatedHistory = true; 6476 } 6477 } else { 6478 window.location.hash = instance.currentHash; 6479 } 6480 6481 instance.hashTimer = null; 6482 }, 300); 6483 }, 6484 6485 "beforeClose.fb": function (e, instance, current) { 6486 if (!current || current.opts.hash === false) { 6487 return; 6488 } 6489 6490 clearTimeout(instance.hashTimer); 6491 6492 // Goto previous history entry 6493 if (instance.currentHash && instance.hasCreatedHistory) { 6494 window.history.back(); 6495 } else if (instance.currentHash) { 6496 if ("replaceState" in window.history) { 6497 window.history.replaceState({}, document.title, window.location.pathname + window.location.search + (instance.origHash || "")); 6498 } else { 6499 window.location.hash = instance.origHash; 6500 } 6501 } 6502 6503 instance.currentHash = null; 6504 } 6505 }); 6506 6507 // Check if need to start/close after url has changed 6508 $(window).on("hashchange.fb", function () { 6509 var url = parseUrl(), 6510 fb = null; 6511 6512 // Find last fancyBox instance that has "hash" 6513 $.each( 6514 $(".fancybox-container") 6515 .get() 6516 .reverse(), 6517 function (index, value) { 6518 var tmp = $(value).data("FancyBox"); 6519 6520 if (tmp && tmp.currentHash) { 6521 fb = tmp; 6522 return false; 6523 } 6524 } 6525 ); 6526 6527 if (fb) { 6528 // Now, compare hash values 6529 if (fb.currentHash !== url.gallery + "-" + url.index && !(url.index === 1 && fb.currentHash == url.gallery)) { 6530 fb.currentHash = null; 6531 6532 fb.close(); 6533 } 6534 } else if (url.gallery !== "") { 6535 triggerFromUrl(url); 6536 } 6537 }); 6538 6539 // Check current hash and trigger click event on matching element to start fancyBox, if needed 6540 setTimeout(function () { 6541 if (!$.fancybox.getInstance()) { 6542 triggerFromUrl(parseUrl()); 6543 } 6544 }, 50); 6545 }); 6546})(window, document, jQuery); 6547// ========================================================================== 6548// 6549// Wheel 6550// Basic mouse weheel support for gallery navigation 6551// 6552// ========================================================================== 6553(function (document, $) { 6554 "use strict"; 6555 6556 var prevTime = new Date().getTime(); 6557 6558 $(document).on({ 6559 "onInit.fb": function (e, instance, current) { 6560 instance.$refs.stage.on("mousewheel DOMMouseScroll wheel MozMousePixelScroll", function (e) { 6561 var current = instance.current, 6562 currTime = new Date().getTime(); 6563 6564 if (instance.group.length < 2 || current.opts.wheel === false || (current.opts.wheel === "auto" && current.type !== "image")) { 6565 return; 6566 } 6567 6568 e.preventDefault(); 6569 e.stopPropagation(); 6570 6571 if (current.$slide.hasClass("fancybox-animated")) { 6572 return; 6573 } 6574 6575 e = e.originalEvent || e; 6576 6577 if (currTime - prevTime < 250) { 6578 return; 6579 } 6580 6581 prevTime = currTime; 6582 6583 instance[(-e.deltaY || -e.deltaX || e.wheelDelta || -e.detail) < 0 ? "next" : "previous"](); 6584 }); 6585 } 6586 }); 6587})(document, jQuery); 6588/* End */ 6589; 6590; /* Start:"a:4:{s:4:"full";s:66:"/local/templates/aspro_max/js/jquery.flexslider.js?165235572059389";s:6:"source";s:50:"/local/templates/aspro_max/js/jquery.flexslider.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 6591/* 6592 * jQuery FlexSlider v2.6.3 6593 * Copyright 2012 WooThemes 6594 * Contributing Author: Tyler Smith 6595 */ 6596; 6597(function ($) { 6598 6599 var focused = true; 6600 6601 // Turns a mouse event into a touch event 6602 function toTouchEvent(e) { 6603 var touch = { 6604 identifier: 0, 6605 target: e.target, 6606 screenX: e.screenX, 6607 screenY: e.screenY, 6608 clientX: e.clientX, 6609 clientY: e.clientY, 6610 pageX: e.pageX, 6611 pageY: e.pageY 6612 } 6613 var touchEvent = { 6614 touches: [touch], 6615 targetTouches: [touch], 6616 changedTouches: [touch], 6617 altKey: e.altKey, 6618 metaKey: e.metaKey, 6619 ctrlKey: e.ctrlKey,
6620 shiftKey: e.shiftKey, 6621 target: e.target, 6622 preventDefault: e.preventDefault.bind(e), 6623 type: e.type === 'mousedown' ? 'touchstart' : e.type === 'mousemove' ? 'touchmove' : e.type === 'mouseup' ? 'touchend' : e.type, 6624 timeStamp: e.timeStamp || Date.now() 6625 } 6626 return touchEvent 6627 } 6628 6629 //FlexSlider: Object Instance 6630 $.flexslider = function(el, options) { 6631 var slider = $(el); 6632 6633 // making variables public 6634 slider.vars = $.extend({}, $.flexslider.defaults, options); 6635 6636 var namespace = slider.vars.namespace, 6637 msGesture = window.navigator && window.navigator.msPointerEnabled && window.MSGesture, 6638 // touch = (( "ontouchstart" in window ) || msGesture || window.DocumentTouch && document instanceof DocumentTouch) && slider.vars.touch, 6639 touch = /*(( "ontouchstart" in window ) || msGesture || window.DocumentTouch && document instanceof DocumentTouch) &&*/ slider.vars.touch, 6640 // depricating this idea, as devices are being released with both of these events 6641 eventType = "click touchend MSPointerUp keyup", 6642 watchedEvent = "", 6643 watchedEventClearTimer, 6644 vertical = slider.vars.direction === "vertical", 6645 reverse = slider.vars.reverse, 6646 carousel = (slider.vars.itemWidth > 0), 6647 fade = slider.vars.animation === "fade", 6648 asNav = slider.vars.asNavFor !== "", 6649 methods = {}; 6650 6651 // Store a reference to the slider object 6652 $.data(el, "flexslider", slider); 6653 6654 // Private slider methods 6655 methods = { 6656 init: function() { 6657 slider.animating = false; 6658 // Get current slide and make sure it is a number 6659 slider.currentSlide = parseInt( ( slider.vars.startAt ? slider.vars.startAt : 0), 10 ); 6660 if ( isNaN( slider.currentSlide ) ) { slider.currentSlide = 0; } 6661 slider.animatingTo = slider.currentSlide; 6662 slider.atEnd = (slider.currentSlide === 0 || slider.currentSlide === slider.last); 6663 slider.containerSelector = slider.vars.selector.substr(0,slider.vars.selector.search(' ')); 6664 slider.slides = $(slider.vars.selector, slider); 6665 slider.container = $(slider.containerSelector, slider); 6666 slider.count = slider.slides.length; 6667 // SYNC: 6668 slider.syncExists = $(slider.vars.sync).length > 0; 6669 // SLIDE: 6670 if (slider.vars.animation === "slide") { slider.vars.animation = "swing"; } 6671 slider.prop = (vertical) ? "top" : "marginLeft"; 6672 slider.args = {}; 6673 // SLIDESHOW: 6674 slider.manualPause = false; 6675 slider.stopped = false; 6676 //PAUSE WHEN INVISIBLE 6677 slider.started = false; 6678 slider.startTimeout = null; 6679 // TOUCH/USECSS: 6680 slider.transitions = !slider.vars.video && !fade && slider.vars.useCSS && (function() { 6681 var obj = document.createElement('div'), 6682 props = ['perspectiveProperty', 'WebkitPerspective', 'MozPerspective', 'OPerspective', 'msPerspective']; 6683 for (var i in props) { 6684 if ( obj.style[ props[i] ] !== undefined ) { 6685 slider.pfx = props[i].replace('Perspective','').toLowerCase(); 6686 slider.prop = "-" + slider.pfx + "-transform"; 6687 return true; 6688 } 6689 } 6690 return false; 6691 }()); 6692 slider.ensureAnimationEnd = ''; 6693 // CONTROLSCONTAINER: 6694 if (slider.vars.controlsContainer !== "") slider.controlsContainer = $(slider.vars.controlsContainer).length > 0 && $(slider.vars.controlsContainer); 6695 // MANUAL: 6696 if (slider.vars.manualControls !== "") slider.manualControls = $(slider.vars.manualControls).length > 0 && $(slider.vars.manualControls); 6697 6698 // CUSTOM DIRECTION NAV: 6699 if (slider.vars.customDirectionNav !== "") slider.customDirectionNav = $(slider.vars.customDirectionNav).length === 2 && $(slider.vars.customDirectionNav); 6700 6701 // RANDOMIZE: 6702 if (slider.vars.randomize) { 6703 slider.slides.sort(function() { return (Math.round(Math.random())-0.5); }); 6704 slider.container.empty().append(slider.slides); 6705 } 6706 6707 slider.doMath(); 6708 6709 // INIT 6710 slider.setup("init"); 6711 6712 // CONTROLNAV: 6713 if (slider.vars.controlNav) { methods.controlNav.setup(); } 6714 6715 // DIRECTIONNAV: 6716 if (slider.vars.directionNav) { methods.directionNav.setup(); } 6717 6718 // KEYBOARD: 6719 if (slider.vars.keyboard && ($(slider.containerSelector).length === 1 || slider.vars.multipleKeyboard)) { 6720 $(document).bind('keyup', function(event) { 6721 var keycode = event.keyCode; 6722 if (!slider.animating && (keycode === 39 || keycode === 37)) { 6723 var target = (keycode === 39) ? slider.getTarget('next') : 6724 (keycode === 37) ? slider.getTarget('prev') : false;
vendor: 4,279 bytes, lines 6725-6822
6725 slider.flexAnimate(target, slider.vars.pauseOnAction); 6726 } 6727 }); 6728 } 6729 // MOUSEWHEEL: 6730 if (slider.vars.mousewheel) { 6731 slider.bind('mousewheel', function(event, delta, deltaX, deltaY) { 6732 event.preventDefault(); 6733 var target = (delta < 0) ? slider.getTarget('next') : slider.getTarget('prev'); 6734 slider.flexAnimate(target, slider.vars.pauseOnAction); 6735 }); 6736 } 6737 6738 // PAUSEPLAY 6739 if (slider.vars.pausePlay) { methods.pausePlay.setup(); } 6740 6741 //PAUSE WHEN INVISIBLE 6742 if (slider.vars.slideshow && slider.vars.pauseInvisible) { methods.pauseInvisible.init(); } 6743 6744 // SLIDSESHOW 6745 if (slider.vars.slideshow) { 6746 if (slider.vars.pauseOnHover) { 6747 slider.hover(function() { 6748 if (!slider.manualPlay && !slider.manualPause) { slider.pause(); } 6749 }, function() { 6750 if (!slider.manualPause && !slider.manualPlay && !slider.stopped) { slider.play(); } 6751 }); 6752 } 6753 // initialize animation 6754 //If we're visible, or we don't use PageVisibility API 6755 if(!slider.vars.pauseInvisible || !methods.pauseInvisible.isHidden()) { 6756 (slider.vars.initDelay > 0) ? slider.startTimeout = setTimeout(slider.play, slider.vars.initDelay) : slider.play(); 6757 } 6758 } 6759 6760 // ASNAV: 6761 if (asNav) { methods.asNav.setup(); } 6762 6763 // TOUCH 6764 if (touch && slider.vars.touch) { methods.touch(); } 6765 6766 // FADE&&SMOOTHHEIGHT || SLIDE: 6767 if (!fade || (fade && slider.vars.smoothHeight)) { $(window).bind("resize orientationchange", methods.resize); } 6768 6769 slider.find("img").attr("draggable", "false"); 6770 6771 // API: start() Callback 6772 setTimeout(function(){ 6773 slider.vars.start(slider); 6774 }, 200); 6775 }, 6776 asNav: { 6777 setup: function() { 6778 slider.asNav = true; 6779 slider.animatingTo = Math.floor(slider.currentSlide/slider.move); 6780 slider.currentItem = slider.currentSlide; 6781 slider.slides.removeClass(namespace + "active-slide").eq(slider.currentItem).addClass(namespace + "active-slide"); 6782 if(!msGesture){ 6783 slider.slides.on(eventType, function(e){ 6784 e.preventDefault(); 6785 var $slide = $(this), 6786 target = $slide.index(); 6787 var posFromLeft = $slide.offset().left - $(slider).scrollLeft(); // Find position of slide relative to left of slider container 6788 if( posFromLeft <= 0 && $slide.hasClass( namespace + 'active-slide' ) ) { 6789 slider.flexAnimate(slider.getTarget("prev"), true); 6790 } else if (!$(slider.vars.asNavFor).data('flexslider').animating && !$slide.hasClass(namespace + "active-slide")) { 6791 slider.direction = (slider.currentItem < target) ? "next" : "prev"; 6792 slider.flexAnimate(target, slider.vars.pauseOnAction, false, true, true); 6793 } 6794 }); 6795 }else{ 6796 el._slider = slider; 6797 slider.slides.each(function (){ 6798 var that = this; 6799 that._gesture = new MSGesture(); 6800 that._gesture.target = that; 6801 that.addEventListener("MSPointerDown", function (e){ 6802 e.preventDefault(); 6803 if(e.currentTarget._gesture) { 6804 e.currentTarget._gesture.addPointer(e.pointerId); 6805 } 6806 }, false); 6807 that.addEventListener("MSGestureTap", function (e){ 6808 e.preventDefault(); 6809 var $slide = $(this), 6810 target = $slide.index(); 6811 if (!$(slider.vars.asNavFor).data('flexslider').animating && !$slide.hasClass('active')) { 6812 slider.direction = (slider.currentItem < target) ? "next" : "prev"; 6813 slider.flexAnimate(target, slider.vars.pauseOnAction, false, true, true); 6814 } 6815 }); 6816 }); 6817 } 6818 } 6819 }, 6820 controlNav: { 6821 setup: function() { 6822 if (!slider.manualControls) {
6823 methods.controlNav.setupPaging(); 6824 } else { // MANUALCONTROLS: 6825 methods.controlNav.setupManual(); 6826 } 6827 }, 6828 setupPaging: function() { 6829 var type = (slider.vars.controlNav === "thumbnails") ? 'control-thumbs' : 'control-paging', 6830 j = 1, 6831 item, 6832 slide; 6833 6834 slider.controlNavScaffold = $('<ol class="'+ namespace + 'control-nav ' + namespace + type + '"></ol>'); 6835 6836 if (slider.pagingCount > 1) { 6837 for (var i = 0; i < slider.pagingCount; i++) { 6838 slide = slider.slides.eq(i); 6839 if ( undefined === slide.attr( 'data-thumb-alt' ) ) { slide.attr( 'data-thumb-alt', '' ); } 6840 var altText = ( '' !== slide.attr( 'data-thumb-alt' ) ) ? altText = ' alt="' + slide.attr( 'data-thumb-alt' ) + '"' : ''; 6841 item = (slider.vars.controlNav === "thumbnails") ? '<img src="' + slide.attr( 'data-thumb' ) + '"' + altText + '/>' : '<a href="#">' + j + '</a>'; 6842 if ( 'thumbnails' === slider.vars.controlNav && true === slider.vars.thumbCaptions ) { 6843 var captn = slide.attr( 'data-thumbcaption' ); 6844 if ( '' !== captn && undefined !== captn ) { item += '<span class="' + namespace + 'caption">' + captn + '</span>'; } 6845 } 6846 slider.controlNavScaffold.append('<li>' + item + '</li>'); 6847 j++; 6848 } 6849 } 6850 6851 // CONTROLSCONTAINER: 6852 (slider.controlsContainer) ? $(slider.controlsContainer).append(slider.controlNavScaffold) : slider.append(slider.controlNavScaffold); 6853 methods.controlNav.set(); 6854 6855 methods.controlNav.active(); 6856 6857 slider.controlNavScaffold.delegate('a, img', eventType, function(event) { 6858 event.preventDefault(); 6859 6860 if (watchedEvent === "" || watchedEvent === event.type) { 6861 var $this = $(this), 6862 target = slider.controlNav.index($this); 6863 6864 if (!$this.hasClass(namespace + 'active')) { 6865 slider.direction = (target > slider.currentSlide) ? "next" : "prev"; 6866 slider.flexAnimate(target, slider.vars.pauseOnAction); 6867 } 6868 } 6869 6870 // setup flags to prevent event duplication 6871 if (watchedEvent === "") { 6872 watchedEvent = event.type; 6873 } 6874 methods.setToClearWatchedEvent(); 6875 6876 }); 6877 }, 6878 setupManual: function() { 6879 slider.controlNav = slider.manualControls; 6880 methods.controlNav.active(); 6881 6882 slider.controlNav.bind(eventType, function(event) { 6883 event.preventDefault(); 6884 6885 if (watchedEvent === "" || watchedEvent === event.type) { 6886 var $this = $(this), 6887 target = slider.controlNav.index($this); 6888 6889 if (!$this.hasClass(namespace + 'active')) { 6890 (target > slider.currentSlide) ? slider.direction = "next" : slider.direction = "prev"; 6891 slider.flexAnimate(target, slider.vars.pauseOnAction); 6892 } 6893 } 6894 6895 // setup flags to prevent event duplication 6896 if (watchedEvent === "") { 6897 watchedEvent = event.type; 6898 } 6899 methods.setToClearWatchedEvent(); 6900 }); 6901 }, 6902 set: function() { 6903 var selector = (slider.vars.controlNav === "thumbnails") ? 'img' : 'a'; 6904 slider.controlNav = $('.' + namespace + 'control-nav li ' + selector, (slider.controlsContainer) ? slider.controlsContainer : slider); 6905 }, 6906 active: function() { 6907 slider.controlNav.removeClass(namespace + "active").eq(slider.animatingTo).addClass(namespace + "active"); 6908 }, 6909 update: function(action, pos) { 6910 if (slider.pagingCount > 1 && action === "add") { 6911 slider.controlNavScaffold.append($('<li><a href="#">' + slider.count + '</a></li>')); 6912 } else if (slider.pagingCount === 1) { 6913 slider.controlNavScaffold.find('li').remove(); 6914 } else { 6915 slider.controlNav.eq(pos).closest('li').remove(); 6916 } 6917 methods.controlNav.set(); 6918 (slider.pagingCount > 1 && slider.pagingCount !== slider.controlNav.length) ? slider.update(pos, action) : methods.controlNav.active(); 6919 } 6920 }, 6921 directionNav: { 6922 setup: function() { 6923 var directionNavScaffold = $('<ul class="' + namespace + 'direction-nav"><li class="' + namespace + 'nav-prev"><a class="' + namespace + 'prev" href="#">
6923' + slider.vars.prevText + '</a></li><li class="' + namespace + 'nav-next"><a class="' + namespace + 'next" href="#">' + slider.vars.nextText + '</a></li></ul>'); 6924 6925 // CUSTOM DIRECTION NAV: 6926 if (slider.customDirectionNav) { 6927 slider.directionNav = slider.customDirectionNav; 6928 // CONTROLSCONTAINER: 6929 } else if (slider.controlsContainer) { 6930 $(slider.controlsContainer).append(directionNavScaffold); 6931 slider.directionNav = $('.' + namespace + 'direction-nav li a', slider.controlsContainer); 6932 } else { 6933 slider.append(directionNavScaffold); 6934 slider.directionNav = $('.' + namespace + 'direction-nav li a', slider); 6935 } 6936 6937 methods.directionNav.update(); 6938 6939 slider.directionNav.bind(eventType, function(event) { 6940 event.preventDefault(); 6941 var target; 6942 6943 if (watchedEvent === "" || watchedEvent === event.type) { 6944 target = ($(this).hasClass(namespace + 'next')) ? slider.getTarget('next') : slider.getTarget('prev'); 6945 slider.flexAnimate(target, slider.vars.pauseOnAction); 6946 } 6947 6948 // setup flags to prevent event duplication 6949 if (watchedEvent === "") { 6950 watchedEvent = event.type; 6951 } 6952 methods.setToClearWatchedEvent(); 6953 }); 6954 }, 6955 update: function() { 6956 var disabledClass = namespace + 'disabled'; 6957 if (slider.pagingCount === 1 || slider.pagingCount < 1) { 6958 slider.directionNav.addClass(disabledClass).attr('tabindex', '-1'); 6959 slider.directionNav.parent().addClass(disabledClass); 6960 } else if (!slider.vars.animationLoop) { 6961 if (slider.animatingTo === 0) { 6962 slider.directionNav.removeClass(disabledClass).filter('.' + namespace + "prev").addClass(disabledClass).attr('tabindex', '-1'); 6963 slider.directionNav.parent().removeClass(disabledClass); 6964 slider.directionNav.filter('.' + namespace + "prev").parent().addClass(disabledClass); 6965 } else if (slider.animatingTo === slider.last) { 6966 slider.directionNav.removeClass(disabledClass).filter('.' + namespace + "next").addClass(disabledClass).attr('tabindex', '-1'); 6967 slider.directionNav.parent().removeClass(disabledClass); 6968 slider.directionNav.filter('.' + namespace + "next").parent().addClass(disabledClass); 6969 } else { 6970 slider.directionNav.removeClass(disabledClass).removeAttr('tabindex'); 6971 slider.directionNav.parent().removeClass(disabledClass); 6972 } 6973 } else { 6974 slider.directionNav.removeClass(disabledClass).removeAttr('tabindex'); 6975 slider.directionNav.parent().removeClass(disabledClass); 6976 } 6977 } 6978 }, 6979 pausePlay: { 6980 setup: function() { 6981 var pausePlayScaffold = $('<div class="' + namespace + 'pauseplay"><a href="#"></a></div>'); 6982 6983 // CONTROLSCONTAINER: 6984 if (slider.controlsContainer) { 6985 slider.controlsContainer.append(pausePlayScaffold); 6986 slider.pausePlay = $('.' + namespace + 'pauseplay a', slider.controlsContainer); 6987 } else { 6988 slider.append(pausePlayScaffold); 6989 slider.pausePlay = $('.' + namespace + 'pauseplay a', slider); 6990 } 6991 6992 methods.pausePlay.update((slider.vars.slideshow) ? namespace + 'pause' : namespace + 'play'); 6993 6994 slider.pausePlay.bind(eventType, function(event) { 6995 event.preventDefault(); 6996 6997 if (watchedEvent === "" || watchedEvent === event.type) { 6998 if ($(this).hasClass(namespace + 'pause')) { 6999 slider.manualPause = true; 7000 slider.manualPlay = false; 7001 slider.pause(); 7002 } else { 7003 slider.manualPause = false; 7004 slider.manualPlay = true; 7005 slider.play(); 7006 } 7007 } 7008 7009 // setup flags to prevent event duplication 7010 if (watchedEvent === "") { 7011 watchedEvent = event.type; 7012 } 7013 methods.setToClearWatchedEvent(); 7014 }); 7015 }, 7016 update: function(state) { 7017 (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); 7018 } 7019 }, 7020 touch: function() { 7021 var startX, 7022 startY, 7023 offset, 7024 cwidth, 7025 dx, 7026 startT, 7027 onTouchStart, 7028 onTouchMove, 7029 onTouchEnd, 7030 onMouseStart, 7031 onMouseMove, 7032 onMouseEnd, 7033 scrolling = false, 7034 localX = 0, 7035 localY = 0, 7036 accDx = 0, 7037 simulateTouch = slider.vars.simulateTouch; 7038 7039 if(!msGesture){ 7040 onTouchStart = function(e) { 7041 var links = (('touches' in e) && $(e.target)[0].nodeName == "A"); 7042 7043 if (slider.animating) { 7044 e.preventDefault(); 7045 } else if ( ( window.navigator.msPointerEnabled ) || e.touches.length === 1 ) { 7046 slider.pause(); 7047 // CAROUSEL: 7048 cwidth = (vertical) ? slider.h : slider.w; 7049 startT = Number(new Date()); 7050 // CAROUSEL: 7051 7052 // Local vars for X and Y points. 7053 localX = e.touches[0].pageX; 7054 localY = e.touches[0].pageY; 7055 7056 offset = (carousel && reverse && slider.animatingTo === slider.last) ? 0 : 7057 (carousel && reverse) ? slider.limit - (((slider.itemW + slider.vars.itemMargin) *
7057slider.move) * slider.animatingTo) : 7058 (carousel && slider.currentSlide === slider.last) ? slider.limit : 7059 (carousel) ? ((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.currentSlide : 7060 (reverse) ? (slider.last - slider.currentSlide + slider.cloneOffset) * cwidth : (slider.currentSlide + slider.cloneOffset) * cwidth; 7061 startX = (vertical) ? localY : localX; 7062 startY = (vertical) ? localX : localY; 7063 7064 el.addEventListener('touchmove', onTouchMove, false); 7065 el.addEventListener('touchend', onTouchEnd, false); 7066 7067 if (simulateTouch && !links) { 7068 el.addEventListener('mousemove', onMouseMove, false); 7069 el.addEventListener('mouseup', onMouseEnd, false); 7070 } 7071 } 7072 }; 7073 7074 onTouchMove = function(e) { 7075 // Local vars for X and Y points. 7076 7077 localX = e.touches[0].pageX; 7078 localY = e.touches[0].pageY; 7079 7080 dx = (vertical) ? startX - localY : startX - localX; 7081 scrolling = (vertical) ? (Math.abs(dx) < Math.abs(localX - startY)) : (Math.abs(dx) < Math.abs(localY - startY)); 7082 7083 var fxms = 500; 7084 7085 if ( ! scrolling || Number( new Date() ) - startT > fxms ) { 7086 e.preventDefault(); 7087 if (!fade && slider.transitions) { 7088 if (!slider.vars.animationLoop) { 7089 dx = dx/((slider.currentSlide === 0 && dx < 0 || slider.currentSlide === slider.last && dx > 0) ? (Math.abs(dx)/cwidth+2) : 1); 7090 } 7091 slider.setProps(offset + dx, "setTouch"); 7092 } 7093 } 7094 }; 7095 7096 onTouchEnd = function(e) { 7097 var links = (('touches' in e) && $(e.target)[0].nodeName == "A"); 7098 7099 // finish the touch by undoing the touch session 7100 el.removeEventListener('touchmove', onTouchMove, false); 7101 7102 if (simulateTouch && !links) { 7103 el.removeEventListener('mousemove', onMouseMove, false); 7104 } 7105 7106 if (slider.animatingTo === slider.currentSlide && !scrolling && !(dx === null)) { 7107 var updateDx = (reverse) ? -dx : dx, 7108 target = (updateDx > 0) ? slider.getTarget('next') : slider.getTarget('prev'); 7109 7110 if (slider.canAdvance(target) && (Number(new Date()) - startT < 550 && Math.abs(updateDx) > 50 || Math.abs(updateDx) > cwidth/2)) { 7111 slider.flexAnimate(target, slider.vars.pauseOnAction); 7112 } else { 7113 if (!fade) { slider.flexAnimate(slider.currentSlide, slider.vars.pauseOnAction, true); } 7114 } 7115 } 7116 el.removeEventListener('touchend', onTouchEnd, false); 7117 7118 if (simulateTouch && !links) { 7119 el.removeEventListener('mouseup', onMouseEnd, false); 7120 } 7121 7122 startX = null; 7123 startY = null; 7124 dx = null; 7125 offset = null; 7126 }; 7127 7128 onMouseStart = function(e) { 7129 onTouchStart.call(this, toTouchEvent(e)); 7130 }; 7131 7132 onMouseMove = function(e) { 7133 onTouchMove.call(this, toTouchEvent(e)); 7134 }; 7135 7136 onMouseEnd = function(e) { 7137 onTouchEnd.call(this, toTouchEvent(e)); 7138 }; 7139 7140 el.addEventListener('touchstart', onTouchStart, false); 7141 7142 if (simulateTouch) { 7143 el.addEventListener('mousedown', onMouseStart, false); 7144 } 7145 }else{ 7146 el.style.msTouchAction = "none"; 7147 el._gesture = new MSGesture(); 7148 el._gesture.target = el; 7149 el.addEventListener("MSPointerDown", onMSPointerDown, false); 7150 el._slider = slider; 7151 el.addEventListener("MSGestureChange", onMSGestureChange, false); 7152 el.addEventListener("MSGestureEnd", onMSGestureEnd, false); 7153 7154 function onMSPointerDown(e){ 7155 e.stopPropagation(); 7156 if (slider.animating) { 7157 e.preventDefault(); 7158 }else{ 7159 slider.pause(); 7160 el._gesture.addPointer(e.pointerId); 7161 accDx = 0; 7162 cwidth = (vertical) ? slider.h : slider.w; 7163 startT = Number(new Date()); 7164 // CAROUSEL: 7165 7166 offset = (carousel && reverse && slider.animatingTo === slider.last) ? 0 : 7167 (carousel && reverse) ? slider.limit - (((slider.itemW + slider.vars.itemMargin) *
vendor: 6,270 bytes, lines 7167-7319
7167slider.move) * slider.animatingTo) : 7168 (carousel && slider.currentSlide === slider.last) ? slider.limit : 7169 (carousel) ? ((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.currentSlide : 7170 (reverse) ? (slider.last - slider.currentSlide + slider.cloneOffset) * cwidth : (slider.currentSlide + slider.cloneOffset) * cwidth; 7171 } 7172 } 7173 7174 function onMSGestureChange(e) { 7175 e.stopPropagation(); 7176 var slider = e.target._slider; 7177 if(!slider){ 7178 return; 7179 } 7180 var transX = -e.translationX, 7181 transY = -e.translationY; 7182 7183 //Accumulate translations. 7184 accDx = accDx + ((vertical) ? transY : transX); 7185 dx = accDx; 7186 scrolling = (vertical) ? (Math.abs(accDx) < Math.abs(-transX)) : (Math.abs(accDx) < Math.abs(-transY)); 7187 7188 if(e.detail === e.MSGESTURE_FLAG_INERTIA){ 7189 setImmediate(function (){ 7190 el._gesture.stop(); 7191 }); 7192 7193 return; 7194 } 7195 7196 if (!scrolling || Number(new Date()) - startT > 500) { 7197 e.preventDefault(); 7198 if (!fade && slider.transitions) { 7199 if (!slider.vars.animationLoop) { 7200 dx = accDx / ((slider.currentSlide === 0 && accDx < 0 || slider.currentSlide === slider.last && accDx > 0) ? (Math.abs(accDx) / cwidth + 2) : 1); 7201 } 7202 slider.setProps(offset + dx, "setTouch"); 7203 } 7204 } 7205 } 7206 7207 function onMSGestureEnd(e) { 7208 e.stopPropagation(); 7209 var slider = e.target._slider; 7210 if(!slider){ 7211 return; 7212 } 7213 if (slider.animatingTo === slider.currentSlide && !scrolling && !(dx === null)) { 7214 var updateDx = (reverse) ? -dx : dx, 7215 target = (updateDx > 0) ? slider.getTarget('next') : slider.getTarget('prev'); 7216 7217 if (slider.canAdvance(target) && (Number(new Date()) - startT < 550 && Math.abs(updateDx) > 50 || Math.abs(updateDx) > cwidth/2)) { 7218 slider.flexAnimate(target, slider.vars.pauseOnAction); 7219 } else { 7220 if (!fade) { slider.flexAnimate(slider.currentSlide, slider.vars.pauseOnAction, true); } 7221 } 7222 } 7223 7224 startX = null; 7225 startY = null; 7226 dx = null; 7227 offset = null; 7228 accDx = 0; 7229 } 7230 } 7231 }, 7232 resize: function() { 7233 if (!slider.animating && slider.is(':visible')) { 7234 // aspro fix start 7235 if(slider.vars.autoHeight !== undefined && slider.vars.autoHeight) { 7236 slider.viewport.find('li').css('height', ''); 7237 } 7238 // aspro fix end 7239 if (!carousel) { slider.doMath(); } 7240 7241 if (fade) { 7242 // SMOOTH HEIGHT: 7243 methods.smoothHeight(); 7244 } else if (carousel) { //CAROUSEL: 7245 slider.slides.width(slider.computedW); 7246 7247 slider.update(slider.pagingCount); 7248 // slider.setProps(); 7249 } 7250 else if (vertical) { //VERTICAL: 7251 slider.viewport.height(slider.h); 7252 slider.setProps(slider.h, "setTotal"); 7253 // aspro fix start 7254 slider.viewport.find('li').css('height', slider.h); 7255 // aspro fix end 7256 } else { 7257 // SMOOTH HEIGHT: 7258 if (slider.vars.smoothHeight) { methods.smoothHeight(); } 7259 slider.newSlides.width(slider.computedW); 7260 slider.setProps(slider.computedW, "setTotal"); 7261 } 7262 } 7263 }, 7264 smoothHeight: function(dur) { 7265 if (!vertical || fade) { 7266 var $obj = (fade) ? slider : slider.viewport; 7267 (dur) ? $obj.animate({"height": slider.slides.eq(slider.animatingTo).innerHeight()}, dur) : $obj.innerHeight(slider.slides.eq(slider.animatingTo).innerHeight()); 7268 } 7269 }, 7270 sync: function(action) { 7271 var $obj = $(slider.vars.sync).data("flexslider"), 7272 target = slider.animatingTo; 7273 7274 switch (action) { 7275 case "animate": $obj.flexAnimate(target, slider.vars.pauseOnAction, false, true); break; 7276 case "play": if (!$obj.playing && !$obj.asNav) { $obj.play(); } break; 7277 case "pause": $obj.pause(); break; 7278 } 7279 }, 7280 uniqueID: function($clone) { 7281 // Append _clone to current level and children elements with id attributes 7282 $clone.filter( '[id]' ).add($clone.find( '[id]' )).each(function() { 7283 var $this = $(this); 7284 $this.attr( 'id', $this.attr( 'id' ) + '_clone' ); 7285 }); 7286 return $clone; 7287 }, 7288 pauseInvisible: { 7289 visProp: null, 7290 init: function() { 7291 var visProp = methods.pauseInvisible.getHiddenProp(); 7292 if (visProp) { 7293 var evtname = visProp.replace(/[H|h]idden/,'') + 'visibilitychange'; 7294 document.addEventListener(evtname, function() { 7295 if (methods.pauseInvisible.isHidden()) { 7296 if(slider.startTimeout) { 7297 clearTimeout(slider.startTimeout); //If clock is ticking, stop timer and prevent from starting while invisible 7298 } else { 7299 slider.pause(); //Or just pause 7300 } 7301 } 7302 else { 7303 if(slider.started) { 7304 slider.play(); //Initiated before, just play 7305 } else { 7306 if (slider.vars.initDelay > 0) { 7307 setTimeout(slider.play, slider.vars.initDelay); 7308 } else { 7309 slider.play(); //Didn't init before: simply init or wait for it 7310 } 7311 } 7312 } 7313 }); 7314 } 7315 }, 7316 isHidden: function() { 7317 var prop = methods.pauseInvisible.getHiddenProp(); 7318 if (!prop) { 7319 return false;
7320 } 7321 return document[prop]; 7322 }, 7323 getHiddenProp: function() { 7324 var prefixes = ['webkit','moz','ms','o']; 7325 // if 'hidden' is natively supported just return it 7326 if ('hidden' in document) { 7327 return 'hidden'; 7328 } 7329 // otherwise loop over all the known prefixes until we find one 7330 for ( var i = 0; i < prefixes.length; i++ ) { 7331 if ((prefixes[i] + 'Hidden') in document) { 7332 return prefixes[i] + 'Hidden'; 7333 } 7334 } 7335 // otherwise it's not supported 7336 return null; 7337 } 7338 }, 7339 setToClearWatchedEvent: function() { 7340 clearTimeout(watchedEventClearTimer); 7341 watchedEventClearTimer = setTimeout(function() { 7342 watchedEvent = ""; 7343 }, 3000); 7344 } 7345 }; 7346 7347 // public methods 7348 slider.flexAnimate = function(target, pause, override, withSync, fromNav) { 7349 if (!slider.vars.animationLoop && target !== slider.currentSlide) { 7350 slider.direction = (target > slider.currentSlide) ? "next" : "prev"; 7351 } 7352 7353 if (asNav && slider.pagingCount === 1) slider.direction = (slider.currentItem < target) ? "next" : "prev"; 7354 7355 if (!slider.animating && (slider.canAdvance(target, fromNav) || override)/* && slider.is(":visible")*/) { 7356 if (asNav && withSync) { 7357 var master = $(slider.vars.asNavFor).data('flexslider'); 7358 slider.atEnd = target === 0 || target === slider.count - 1; 7359 master.flexAnimate(target, true, false, true, fromNav); 7360 slider.direction = (slider.currentItem < target) ? "next" : "prev"; 7361 master.direction = slider.direction; 7362 7363 // ++ added by kach 7364 slider.currentItem = target; 7365 slider.slides.removeClass(namespace + "active-slide").eq(target).addClass(namespace + "active-slide"); 7366 var newtarget = Math.floor((target + 1)/slider.visible) > 0 ? (Math.floor((target + 1 - slider.visible) / slider.move)) : 0; 7367 if(newtarget != slider.currentSlide){ 7368 target = newtarget; 7369 } 7370 else{ 7371 return false; 7372 } 7373 // ++ 7374 7375 // -- removed by kach 7376 /* 7377 if (Math.ceil((target + 1)/slider.visible) - 1 !== slider.currentSlide && target !== 0) { 7378 slider.currentItem = target; 7379 slider.slides.removeClass(namespace + "active-slide").eq(target).addClass(namespace + "active-slide"); 7380 target = Math.floor(target/slider.visible); 7381 } else { 7382 slider.currentItem = target; 7383 slider.slides.removeClass(namespace + "active-slide").eq(target).addClass(namespace + "active-slide"); 7384 return false; 7385 }*/ 7386 7387 // -- 7388 } 7389 7390 slider.animating = true; 7391 slider.animatingTo = target; 7392 7393 // SLIDESHOW: 7394 if (pause) { slider.pause(); } 7395 7396 // API: before() animation Callback 7397 slider.vars.before(slider); 7398 7399 // SYNC: 7400 if (slider.syncExists && !fromNav) { methods.sync("animate"); } 7401 7402 // CONTROLNAV 7403 if (slider.vars.controlNav) { methods.controlNav.active(); } 7404 7405 // !CAROUSEL: 7406 // CANDIDATE: slide active class (for add/remove slide) 7407 if (!carousel) { slider.slides.removeClass(namespace + 'active-slide').eq(target).addClass(namespace + 'active-slide'); } 7408 7409 // INFINITE LOOP: 7410 // CANDIDATE: atEnd 7411 slider.atEnd = target === 0 || target === slider.last; 7412 7413 // DIRECTIONNAV: 7414 if (slider.vars.directionNav) { methods.directionNav.update(); } 7415 7416 if (target === slider.last) { 7417 // API: end() of cycle Callback 7418 slider.vars.end(slider); 7419 // SLIDESHOW && !INFINITE LOOP: 7420 if (!slider.vars.animationLoop) { slider.pause(); } 7421 } 7422 7423 // SLIDE: 7424 if (!fade) { 7425 var dimension = (vertical) ? slider.slides.filter(':first').height() : slider.computedW, 7426 margin, slideString, calcNext; 7427 7428 // INFINITE LOOP / REVERSE: 7429 if (carousel) { 7430 margin = slider.vars.itemMargin;
vendor: 16,214 bytes, lines 7431-7799
7431 calcNext = ((slider.itemW + margin) * slider.move) * slider.animatingTo; 7432 slideString = (calcNext > slider.limit && slider.visible !== 1) ? slider.limit : calcNext; 7433 } else if (slider.currentSlide === 0 && target === slider.count - 1 && slider.vars.animationLoop && slider.direction !== "next") { 7434 slideString = (reverse) ? (slider.count + slider.cloneOffset) * dimension : 0; 7435 } else if (slider.currentSlide === slider.last && target === 0 && slider.vars.animationLoop && slider.direction !== "prev") { 7436 slideString = (reverse) ? 0 : (slider.count + 1) * dimension; 7437 } else { 7438 slideString = (reverse) ? ((slider.count - 1) - target + slider.cloneOffset) * dimension : (target + slider.cloneOffset) * dimension; 7439 } 7440 slider.setProps(slideString, "", slider.vars.animationSpeed); 7441 if (slider.transitions) { 7442 if (!slider.vars.animationLoop || !slider.atEnd) { 7443 slider.animating = false; 7444 slider.currentSlide = slider.animatingTo; 7445 } 7446 7447 // Unbind previous transitionEnd events and re-bind new transitionEnd event 7448 slider.container.unbind("webkitTransitionEnd transitionend"); 7449 slider.container.bind("webkitTransitionEnd transitionend", function() { 7450 clearTimeout(slider.ensureAnimationEnd); 7451 slider.wrapup(dimension); 7452 }); 7453 7454 // Insurance for the ever-so-fickle transitionEnd event 7455 clearTimeout(slider.ensureAnimationEnd); 7456 slider.ensureAnimationEnd = setTimeout(function() { 7457 slider.wrapup(dimension); 7458 }, slider.vars.animationSpeed + 100); 7459 7460 } else { 7461 slider.container.animate(slider.args, slider.vars.animationSpeed, slider.vars.easing, function(){ 7462 slider.wrapup(dimension); 7463 }); 7464 } 7465 } else { // FADE: 7466 if (!touch) { 7467 slider.slides.eq(slider.currentSlide).css({"zIndex": 1}).animate({"opacity": 0}, slider.vars.animationSpeed, slider.vars.easing); 7468 slider.slides.eq(target).css({"zIndex": 2}).animate({"opacity": 1}, slider.vars.animationSpeed, slider.vars.easing, slider.wrapup); 7469 } else { 7470 slider.slides.eq(slider.currentSlide).css({ "opacity": 0, "zIndex": 1 }); 7471 slider.slides.eq(target).css({ "opacity": 1, "zIndex": 2 }); 7472 slider.wrapup(dimension); 7473 } 7474 } 7475 // SMOOTH HEIGHT: 7476 if (slider.vars.smoothHeight) { methods.smoothHeight(slider.vars.animationSpeed); } 7477 } 7478 }; 7479 slider.wrapup = function(dimension) { 7480 // SLIDE: 7481 if (!fade && !carousel) { 7482 if (slider.currentSlide === 0 && slider.animatingTo === slider.last && slider.vars.animationLoop) { 7483 slider.setProps(dimension, "jumpEnd"); 7484 } else if (slider.currentSlide === slider.last && slider.animatingTo === 0 && slider.vars.animationLoop) { 7485 slider.setProps(dimension, "jumpStart"); 7486 } 7487 } 7488 slider.animating = false; 7489 slider.currentSlide = slider.animatingTo; 7490 // API: after() animation Callback 7491 slider.vars.after(slider); 7492 }; 7493 7494 // SLIDESHOW: 7495 slider.animateSlides = function() { 7496 if (!slider.animating && focused ) { slider.flexAnimate(slider.getTarget("next")); } 7497 }; 7498 // SLIDESHOW: 7499 slider.pause = function() { 7500 clearInterval(slider.animatedSlides); 7501 slider.animatedSlides = null; 7502 slider.playing = false; 7503 // PAUSEPLAY: 7504 if (slider.vars.pausePlay) { methods.pausePlay.update("play"); } 7505 // SYNC: 7506 if (slider.syncExists) { methods.sync("pause"); } 7507 }; 7508 // SLIDESHOW: 7509 slider.play = function() { 7510 if (slider.playing) { clearInterval(slider.animatedSlides); } 7511 slider.animatedSlides = slider.animatedSlides || setInterval(slider.animateSlides, slider.vars.slideshowSpeed); 7512 slider.started = slider.playing = true; 7513 // PAUSEPLAY: 7514 if (slider.vars.pausePlay) { methods.pausePlay.update("pause"); } 7515 // SYNC: 7516 if (slider.syncExists) { methods.sync("play"); } 7517 }; 7518 slider.smoothHeight = function(){ 7519 methods.smoothHeight(); 7520 }; 7521 // STOP: 7522 slider.stop = function () { 7523 slider.pause(); 7524 slider.stopped = true; 7525 }; 7526 slider.canAdvance = function(target, fromNav) { 7527 // ASNAV: 7528 var last = (asNav) ? slider.pagingCount - 1 : slider.last; 7529 return (fromNav) ? true : 7530 (asNav && slider.currentItem === slider.count - 1 && target === 0 && slider.direction === "prev") ? true : 7531 (asNav && slider.currentItem === 0 && target === slider.pagingCount - 1 && slider.direction !== "next") ? false : 7532 (target === slider.currentSlide && !asNav) ? false : 7533 (slider.vars.animationLoop) ? true : 7534 (slider.atEnd && slider.currentSlide === 0 && target === last && slider.direction !== "next") ? false : 7535 (slider.atEnd && slider.currentSlide === last && target === 0 && slider.direction === "next") ? false : 7536 true; 7537 }; 7538 slider.getTarget = function(dir) { 7539 slider.direction = dir; 7540 if (dir === "next") { 7541 return (slider.currentSlide === slider.last) ? 0 : slider.currentSlide + 1; 7542 } else { 7543 return (slider.currentSlide === 0) ? slider.last : slider.currentSlide - 1; 7544 } 7545 }; 7546 7547 // SLIDE: 7548 slider.setProps = function(pos, special, dur) { 7549 var target = (function() { 7550 var posCheck = (pos) ? pos : ((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo, 7551 posCalc = (function() { 7552 if (carousel) { 7553 return (special === "setTouch") ? pos : 7554 (reverse && slider.animatingTo === slider.last) ? 0 : 7555 (reverse) ? slider.limit - (((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo) : 7556 (slider.animatingTo === slider.last) ? slider.limit : posCheck; 7557 } else { 7558 switch (special) { 7559 case "setTotal": return (reverse) ? ((slider.count - 1) - slider.currentSlide + slider.cloneOffset) * pos : (slider.currentSlide + slider.cloneOffset) * pos; 7560 case "setTouch": return (reverse) ? pos : pos; 7561 case "jumpEnd": return (reverse) ? pos : slider.count * pos; 7562 case "jumpStart": return (reverse) ? slider.count * pos : pos; 7563 default: return pos; 7564 } 7565 } 7566 }()); 7567 7568 return (posCalc * -1) + "px"; 7569 }()); 7570 7571 7572 7573 if (slider.transitions) { 7574 target = (vertical) ? "translate3d(0," + target + ",0)" : "translate3d(" + target + ",0,0)"; 7575 dur = (dur !== undefined) ? (dur/1000) + "s" : "0s"; 7576 slider.container.css("-" + slider.pfx + "-transition-duration", dur); 7577 slider.container.css("transition-duration", dur); 7578 } 7579 7580 slider.args[slider.prop] = target; 7581 if (slider.transitions || dur === undefined) { slider.container.css(slider.args); } 7582 7583 slider.container.css('transform',target); 7584 }; 7585 7586 slider.setup = function(type) { 7587 // SLIDE: 7588 if (!fade) { 7589 var sliderOffset, arr; 7590 7591 if (type === "init") { 7592 slider.viewport = $('<div class="' + namespace + 'viewport"></div>').css({"overflow": "hidden", "position": "relative"}).appendTo(slider).append(slider.container); 7593 // INFINITE LOOP: 7594 slider.cloneCount = 0; 7595 slider.cloneOffset = 0; 7596 // REVERSE: 7597 if (reverse) { 7598 arr = $.makeArray(slider.slides).reverse(); 7599 slider.slides = $(arr); 7600 slider.container.empty().append(slider.slides); 7601 } 7602 } 7603 // INFINITE LOOP && !CAROUSEL: 7604 if (slider.vars.animationLoop && !carousel) { 7605 slider.cloneCount = 2; 7606 slider.cloneOffset = 1; 7607 // aspro fix start 7608 slider.viewport.find('li').css('height', slider.h); 7609 // aspro fix end 7610 // clear out old clones 7611 if (type !== "init") { slider.container.find('.clone').remove(); } 7612 slider.container.append(methods.uniqueID(slider.slides.first().clone().addClass('clone')).attr('aria-hidden', 'true')) 7613 .prepend(methods.uniqueID(slider.slides.last().clone().addClass('clone')).attr('aria-hidden', 'true')); 7614 } 7615 slider.newSlides = $(slider.vars.selector, slider); 7616 7617 sliderOffset = (reverse) ? slider.count - 1 - slider.currentSlide + slider.cloneOffset : slider.currentSlide + slider.cloneOffset; 7618 // VERTICAL: 7619 if (vertical && !carousel) { 7620 slider.container.height((slider.count + slider.cloneCount) * 200 + "%").css("position", "absolute").width("100%"); 7621 setTimeout(function(){ 7622 slider.newSlides.css({"display": "block"}); 7623 slider.doMath(); 7624 slider.viewport.height(slider.h); 7625 slider.setProps(sliderOffset * slider.h, "init"); 7626 }, (type === "init") ? 100 : 0); 7627 } else { 7628 slider.container.width((slider.count + slider.cloneCount) * 200 + "%"); 7629 slider.setProps(sliderOffset * slider.computedW, "init"); 7630 setTimeout(function(){ 7631 slider.doMath(); 7632 slider.newSlides.css({"width": slider.computedW, "marginRight" : slider.computedM, "float": "left", "display": "block"}); 7633 // SMOOTH HEIGHT: 7634 if (slider.vars.smoothHeight) { methods.smoothHeight(); } 7635 }, (type === "init") ? 100 : 0); 7636 } 7637 } else { // FADE: 7638 slider.slides.css({"width": "100%", "float": "left", "marginRight": "-100%", "position": "relative"}); 7639 if (type === "init") { 7640 if (!touch) { 7641 //slider.slides.eq(slider.currentSlide).fadeIn(slider.vars.animationSpeed, slider.vars.easing); 7642 if (slider.vars.fadeFirstSlide == false) { 7643 slider.slides.css({ "opacity": 0, "display": "block", "zIndex": 1 }).eq(slider.currentSlide).css({"zIndex": 2}).css({"opacity": 1}); 7644 } else { 7645 slider.slides.css({ "opacity": 0, "display": "block", "zIndex": 1 }).eq(slider.currentSlide).css({"zIndex": 2}).animate({"opacity": 1},slider.vars.animationSpeed,slider.vars.easing); 7646 } 7647 } else { 7648 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}); 7649 } 7650 } 7651 // SMOOTH HEIGHT: 7652 if (slider.vars.smoothHeight) { methods.smoothHeight(); } 7653 } 7654 // !CAROUSEL: 7655 // CANDIDATE: active slide 7656 if (!carousel) { slider.slides.removeClass(namespace + "active-slide").eq(slider.currentSlide).addClass(namespace + "active-slide"); } 7657 7658 //FlexSlider: init() Callback 7659 slider.vars.init(slider); 7660 }; 7661 7662 slider.doMath = function() { 7663 var slide = slider.slides.first(), 7664 slideMargin = slider.vars.itemMargin, 7665 minItems = slider.vars.minItems, 7666 maxItems = slider.vars.maxItems; 7667 7668 slider.w = (slider.viewport===undefined) ? slider.width() : slider.viewport.width(); 7669 slider.h = slide.height(); 7670 // aspro fix start 7671 var height = 0; 7672 if(vertical) { 7673 slider.slides.each(function(i, el) { 7674 var elHeight = $(el).height(); 7675 if(elHeight > height){ 7676 height = elHeight; 7677 } 7678 }); 7679 slider.h = height; 7680 } 7681 // aspro fix end 7682 slider.boxPadding = slide.outerWidth() - slide.width(); 7683 7684 // CAROUSEL: 7685 if (carousel) { 7686 slider.itemT = slider.vars.itemWidth + slideMargin; 7687 slider.itemM = slideMargin; 7688 slider.minW = (minItems) ? minItems * slider.itemT : slider.w; 7689 slider.maxW = (maxItems) ? (maxItems * slider.itemT) - slideMargin : slider.w; 7690 slider.itemW = (slider.minW > slider.w) ? (slider.w - (slideMargin * (minItems - 1)))/minItems : 7691 (slider.maxW < slider.w) ? (slider.w - (slideMargin * (maxItems - 1)))/maxItems : 7692 (slider.vars.itemWidth > slider.w) ? slider.w : slider.vars.itemWidth; 7693 7694 slider.visible = Math.floor(slider.w / slider.itemW); // -- removed by kach 7695 // slider.visible = Math.floor((slider.itemT > slider.itemW ? slider.w + slider.itemM : slider.w)/(slider.itemT > slider.itemW ? slider.itemT : slider.itemW)); // ++ added by kach 7696 slider.move = (slider.vars.move > 0 && slider.vars.move < slider.visible ) ? slider.vars.move : slider.visible; 7697 slider.pagingCount = Math.ceil(((slider.count - slider.visible)/slider.move) + 1); 7698 7699 slider.last = slider.pagingCount - 1; 7700 slider.limit = (slider.pagingCount === 1) ? 0 : 7701 (slider.vars.itemWidth > slider.w) ? (slider.itemW * (slider.count - 1)) + (slideMargin * (slider.count - 1)) : ((slider.itemW + slideMargin) * slider.count) - slider.w - slideMargin; 7702 } else { 7703 slider.itemW = slider.w; 7704 slider.itemM = slideMargin; 7705 slider.pagingCount = slider.count; 7706 slider.last = slider.count - 1; 7707 } 7708 slider.computedW = slider.itemW - slider.boxPadding; 7709 slider.computedM = slider.itemM; 7710 }; 7711 7712 slider.update = function(pos, action) { 7713 slider.doMath(); 7714 7715 // update currentSlide and slider.animatingTo if necessary 7716 if (!carousel) { 7717 if (pos < slider.currentSlide) { 7718 slider.currentSlide += 1; 7719 } else if (pos <= slider.currentSlide && pos !== 0) { 7720 slider.currentSlide -= 1; 7721 } 7722 slider.animatingTo = slider.currentSlide; 7723 } 7724 7725 // update controlNav 7726 if (slider.vars.controlNav && !slider.manualControls) { 7727 if ((action === "add" && !carousel) || slider.pagingCount > slider.controlNav.length) { 7728 methods.controlNav.update("add"); 7729 } else if ((action === "remove" && !carousel) || slider.pagingCount < slider.controlNav.length) { 7730 /*if (carousel && slider.currentSlide > slider.last) { 7731 slider.currentSlide -= 1; 7732 slider.animatingTo -= 1; 7733 }*/ 7734 methods.controlNav.update("remove", slider.last); 7735 } 7736 } 7737 // update directionNav 7738 if (slider.vars.directionNav) { methods.directionNav.update(); } 7739 7740 }; 7741 7742 slider.addSlide = function(obj, pos) { 7743 var $obj = $(obj); 7744 7745 slider.count += 1; 7746 slider.last = slider.count - 1; 7747 7748 // append new slide 7749 if (vertical && reverse) { 7750 (pos !== undefined) ? slider.slides.eq(slider.count - pos).after($obj) : slider.container.prepend($obj); 7751 } else { 7752 (pos !== undefined) ? slider.slides.eq(pos).before($obj) : slider.container.append($obj); 7753 } 7754 7755 // update currentSlide, animatingTo, controlNav, and directionNav 7756 slider.update(pos, "add"); 7757 7758 // update slider.slides 7759 slider.slides = $(slider.vars.selector + ':not(.clone)', slider); 7760 // re-setup the slider to accomdate new slide 7761 slider.setup(); 7762 7763 //FlexSlider: added() Callback 7764 slider.vars.added(slider); 7765 }; 7766 slider.removeSlide = function(obj) { 7767 var pos = (isNaN(obj)) ? slider.slides.index($(obj)) : obj; 7768 7769 // update count 7770 slider.count -= 1; 7771 slider.last = slider.count - 1; 7772 7773 // remove slide 7774 if (isNaN(obj)) { 7775 $(obj, slider.slides).remove(); 7776 } else { 7777 (vertical && reverse) ? slider.slides.eq(slider.last).remove() : slider.slides.eq(obj).remove(); 7778 } 7779 7780 // update currentSlide, animatingTo, controlNav, and directionNav 7781 slider.doMath(); 7782 slider.update(pos, "remove"); 7783 7784 // update slider.slides 7785 slider.slides = $(slider.vars.selector + ':not(.clone)', slider); 7786 // re-setup the slider to accomdate new slide 7787 slider.setup(); 7788 7789 // FlexSlider: removed() Callback 7790 slider.vars.removed(slider); 7791 }; 7792 7793 //FlexSlider: Initialize 7794 methods.init(); 7795 }; 7796 7797 // Ensure the slider isn't focussed if the window loses focus. 7798 $( window ).blur( function ( e ) { 7799 focused = false;
7800 }).focus( function ( e ) { 7801 focused = true; 7802 }); 7803 7804 //FlexSlider: Default Settings 7805 $.flexslider.defaults = { 7806 namespace: "flex-", //{NEW} String: Prefix string attached to the class of every element generated by the plugin 7807 selector: ".slides > li", //{NEW} Selector: Must match a simple pattern. '{container} > {slide}' -- Ignore pattern at your own peril 7808 animation: "fade", //String: Select your animation type, "fade" or "slide" 7809 easing: "swing", //{NEW} String: Determines the easing method used in jQuery transitions. jQuery easing plugin is supported! 7810 direction: "horizontal", //String: Select the sliding direction, "horizontal" or "vertical" 7811 reverse: false, //{NEW} Boolean: Reverse the animation direction 7812 animationLoop: true, //Boolean: Should the animation loop? If false, directionNav will received "disable" classes at either end 7813 smoothHeight: false, //{NEW} Boolean: Allow height of the slider to animate smoothly in horizontal mode 7814 startAt: 0, //Integer: The slide that the slider should start on. Array notation (0 = first slide) 7815 slideshow: true, //Boolean: Animate slider automatically 7816 slideshowSpeed: 7000, //Integer: Set the speed of the slideshow cycling, in milliseconds 7817 animationSpeed: 600, //Integer: Set the speed of animations, in milliseconds 7818 initDelay: 0, //{NEW} Integer: Set an initialization delay, in milliseconds 7819 randomize: false, //Boolean: Randomize slide order 7820 fadeFirstSlide: true, //Boolean: Fade in the first slide when animation type is "fade" 7821 thumbCaptions: false, //Boolean: Whether or not to put captions on thumbnails when using the "thumbnails" controlNav. 7822 7823 // Usability features 7824 pauseOnAction: true, //Boolean: Pause the slideshow when interacting with control elements, highly recommended. 7825 pauseOnHover: false, //Boolean: Pause the slideshow when hovering over slider, then resume when no longer hovering 7826 pauseInvisible: true, //{NEW} Boolean: Pause the slideshow when tab is invisible, resume when visible. Provides better UX, lower CPU usage. 7827 useCSS: true, //{NEW} Boolean: Slider will use CSS3 transitions if available 7828 touch: true, //{NEW} Boolean: Allow touch swipe navigation of the slider on touch-enabled devices 7829 video: false, //{NEW} Boolean: If using video in the slider, will prevent CSS3 3D Transforms to avoid graphical glitches 7830 simulateTouch: false, //{NEW} Boolean: Allow mouse swipe navigation of the slider. Requires touch to be true 7831 7832 // Primary Controls 7833 controlNav: true, //Boolean: Create navigation for paging control of each slide? Note: Leave true for manualControls usage 7834 directionNav: true, //Boolean: Create navigation for previous/next navigation? (true/false) 7835 prevText: "Previous", //String: Set the text for the "previous" directionNav item 7836 nextText: "Next", //String: Set the text for the "next" directionNav item 7837 7838 // Secondary Navigation 7839 keyboard: true, //Boolean: Allow slider navigating via keyboard left/right keys 7840 multipleKeyboard: false, //{NEW} Boolean: Allow keyboard navigation to affect multiple sliders. Default behavior cuts out keyboard navigation with more than one slider present. 7841 mousewheel: false, //{UPDATED} Boolean: Requires jquery.mousewheel.js (https://github.com/brandonaaron/jquery-mousewheel) - Allows slider navigating via mousewheel 7842 pausePlay: false, //Boolean: Create pause/play dynamic element 7843 pauseText: "Pause", //String: Set the text for the "pause" pausePlay item 7844 playText: "Play", //String: Set the text for the "play" pausePlay item 7845 7846 // Special properties 7847 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. 7848 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. 7849 customDirectionNav: "", //{NEW}
7849 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) 7850 sync: "", //{NEW} Selector: Mirror the actions performed on this slider with another slider. Use with care. 7851 asNavFor: "", //{NEW} Selector: Internal property exposed for turning the slider into a thumbnail navigation for another slider 7852 7853 // Carousel Options 7854 itemWidth: 0, //{NEW} Integer: Box-model width of individual carousel items, including horizontal borders and padding. 7855 itemMargin: 0, //{NEW} Integer: Margin between carousel items. 7856 minItems: 1, //{NEW} Integer: Minimum number of carousel items that should be visible. Items will resize fluidly when below this. 7857 maxItems: 0, //{NEW} Integer: Maxmimum number of carousel items that should be visible. Items will resize fluidly when above this limit. 7858 move: 0, //{NEW} Integer: Number of carousel items that should move on animation. If 0, slider will move all visible items. 7859 allowOneSlide: true, //{NEW} Boolean: Whether or not to allow a slider comprised of a single slide 7860 7861 // Callback API 7862 start: function(){}, //Callback: function(slider) - Fires when the slider loads the first slide 7863 before: function(){}, //Callback: function(slider) - Fires asynchronously with each slider animation 7864 after: function(){}, //Callback: function(slider) - Fires after each slider animation completes 7865 end: function(){}, //Callback: function(slider) - Fires when the slider reaches the last slide (asynchronous) 7866 added: function(){}, //{NEW} Callback: function(slider) - Fires after a slide is added 7867 removed: function(){}, //{NEW} Callback: function(slider) - Fires after a slide is removed 7868 init: function() {} //{NEW} Callback: function(slider) - Fires after the slider is initially setup 7869 }; 7870 7871 //FlexSlider: Plugin Function 7872 $.fn.flexslider = function(options) { 7873 if (options === undefined) { options = {}; } 7874 7875 if (typeof options === "object") { 7876 return this.each(function() { 7877 var $this = $(this), 7878 selector = (options.selector) ? options.selector : ".slides > li", 7879 $slides = $this.find(selector); 7880 7881 if ( ( $slides.length === 1 && options.allowOneSlide === false ) || $slides.length === 0 ) { 7882 $slides.fadeIn(400); 7883 if (options.start) { options.start($this); } 7884 } else if ($this.data('flexslider') === undefined) { 7885 new $.flexslider(this, options); 7886 } 7887 }); 7888 } else { 7889 // Helper strings to quickly perform functions on the slider 7890 var $slider = $(this).data('flexslider'); 7891 switch (options) { 7892 case "play": $slider.play(); break; 7893 case "pause": $slider.pause(); break; 7894 case "stop": $slider.stop(); break; 7895 case "next": $slider.flexAnimate($slider.getTarget("next"), true); break; 7896 case "prev": 7897 case "previous": $slider.flexAnimate($slider.getTarget("prev"), true); break; 7898 default: if (typeof options === "number") { $slider.flexAnimate(options, true); } 7899 } 7900 } 7901 }; 7902})(jQuery); 7903 7904/* End */ 7905; 7906; /* Start:"a:4:{s:4:"full";s:66:"/local/templates/aspro_max/js/jquery.uniform.min.js?16523556998308";s:6:"source";s:51:"/local/templates/aspro_max/js/jquery.uniform.min.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 7907(function(e,t){"use strict";function n(e){var t=Array.prototype.slice.call(arguments,1);return e.prop?e.prop.apply(e,t):e.attr.apply(e,t)}function s(e,t,n){var s,a;for(s in n)n.hasOwnProperty(s)&&(a=s.replace(/ |$/g,t.eventNamespace),e.bind(a,n[s]))}function a(e,t,n){s(e,n,{focus:function(){t.addClass(n.focusClass)},blur:function(){t.removeClass(n.focusClass),t.removeClass(n.activeClass)},mouseenter:function(){t.addClass(n.hoverClass)},mouseleave:function(){t.removeClass(n.hoverClass),t.removeClass(n.activeClass)},"mousedown touchbegin":function(){e.is(":disabled")||t.addClass(n.activeClass)},"mouseup touchend":function(){t.removeClass(n.activeClass)}})}function i(e,t){e.removeClass(t.hoverClass+" "+t.focusClass+" "+t.activeClass)}function r(e,t,n){n?e.addClass(t):e.removeClass(t)}function l(e,t,n){var s="checked",a=t.is(":"+s);t.prop?t.prop(s,a):a?t.attr(s,s):t.removeAttr(s),r(e,n.checkedClass,a)}function u(e,t,n){r(e,n.disabledClass,t.is(":disabled"))}function o(e,t,n){switch(n){case"after":return e.after(t),e.next();case"before":return e.before(t),e.prev();case"wrap":return e.wrap(t),e.parent()}return null}function c(t,s,a){var i,r,l;return a||(a={}),a=e.extend({bind:{},divClass:null,divWrap:"wrap",spanClass:null,spanHtml:null,spanWrap:"wrap"},a),i=e("<div />"),r=e("<span />"),s.autoHide&&t.is(":hidden")&&"none"===t.css("display")&&i.hide(),a.divClass&&i.addClass(a.divClass),s.wrapperClass&&i.addClass(s.wrapperClass),a.spanClass&&r.addClass(a.spanClass),l=n(t,"id"),s.useID&&l&&n(i,"id",s.idPrefix+"-"+l),a.spanHtml&&r.html(a.spanHtml),i=o(t,i,a.divWrap),r=o(t,r,a.spanWrap),u(i,t,s),{div:i,span:r}}function d(t,n){var s;return n.wrapperClass?(s=e("<span />").addClass(n.wrapperClass),s=o(t,s,"wrap")):null}function f(){var t,n,s,a;return a="rgb(120,2,153)",n=e('<div style="width:0;height:0;color:'+a+'">'),e("body").append(n),s=n.get(0),t=window.getComputedStyle?window.getComputedStyle(s,"").color:(s.currentStyle||s.style||{}).color,n.remove(),t.replace(/ /g,"")!==a}function p(t){return t?e("<span />").text(t).html():""}function m(){return navigator.cpuClass&&!navigator.product}function v(){return window.XMLHttpRequest!==void 0?!0:!1}function h(e){var t;return e[0].multiple?!0:(t=n(e,"size"),!t||1>=t?!1:!0)}function C(){return!1}function w(e,t){var n="none";s(e,t,{"selectstart dragstart mousedown":C}),e.css({MozUserSelect:n,msUserSelect:n,webkitUserSelect:n,userSelect:n})}function b(e,t,n){var s=e.val();""===s?s=n.fileDefaultHtml:(s=s.split(/[\/\\]+/),s=s[s.length-1]),t.text(s)}function y(e,t,n){var s,a;for(s=[],e.each(function(){var e;
vendor: 4,406 bytes, line 7907
7907for(e in t)Object.prototype.hasOwnProperty.call(t,e)&&(s.push({el:this,name:e,old:this.style[e]}),this.style[e]=t[e])}),n();s.length;)a=s.pop(),a.el.style[a.name]=a.old}function g(e,t){var n;n=e.parents(),n.push(e[0]),n=n.not(":visible"),y(n,{visibility:"hidden",display:"block",position:"absolute"},t)}function k(e,t){return function(){e.unwrap().unwrap().unbind(t.eventNamespace)}}var H=!0,x=!1,A=[{match:function(e){return e.is("a, button, :submit, :reset, input[type='button']")},apply:function(e,t){var r,l,o,d,f;return l=t.submitDefaultHtml,e.is(":reset")&&(l=t.resetDefaultHtml),d=e.is("a, button")?function(){return e.html()||l}:function(){return p(n(e,"value"))||l},o=c(e,t,{divClass:t.buttonClass,spanHtml:d()}),r=o.div,a(e,r,t),f=!1,s(r,t,{"click touchend":function(){var t,s,a,i;f||e.is(":disabled")||(f=!0,e[0].dispatchEvent?(t=document.createEvent("MouseEvents"),t.initEvent("click",!0,!0),s=e[0].dispatchEvent(t),e.is("a")&&s&&(a=n(e,"target"),i=n(e,"href"),a&&"_self"!==a?window.open(i,a):document.location.href=i)):e.click(),f=!1)}}),w(r,t),{remove:function(){return r.after(e),r.remove(),e.unbind(t.eventNamespace),e},update:function(){i(r,t),u(r,e,t),e.detach(),o.span.html(d()).append(e)}}}},{match:function(e){return e.is(":checkbox")},apply:function(e,t){var n,r,o;return n=c(e,t,{divClass:t.checkboxClass}),r=n.div,o=n.span,a(e,r,t),s(e,t,{"click touchend":function(){l(o,e,t)}}),l(o,e,t),{remove:k(e,t),update:function(){i(r,t),o.removeClass(t.checkedClass),l(o,e,t),u(r,e,t)}}}},{match:function(e){return e.is(":file")},apply:function(t,r){function l(){b(t,p,r)}var d,f,p,v;return d=c(t,r,{divClass:r.fileClass,spanClass:r.fileButtonClass,spanHtml:r.fileButtonHtml,spanWrap:"after"}),f=d.div,v=d.span,p=e("<span />").html(r.fileDefaultHtml),p.addClass(r.filenameClass),p=o(t,p,"after"),n(t,"size")||n(t,"size",f.width()/10),a(t,f,r),l(),m()?s(t,r,{click:function(){t.trigger("change"),setTimeout(l,0)}}):s(t,r,{change:l}),w(p,r),w(v,r),{remove:function(){return p.remove(),v.remove(),t.unwrap().unbind(r.eventNamespace)},update:function(){i(f,r),b(t,p,r),u(f,t,r)}}}},{match:function(e){if(e.is("input")){var t=(" "+n(e,"type")+" ").toLowerCase(),s=" color date datetime datetime-local email month number password search tel text time url week ";return s.indexOf(t)>=0}return!1},apply:function(e,t){var s,i;return s=n(e,"type"),e.addClass(t.inputClass),i=d(e,t),a(e,e,t),t.inputAddTypeAsClass&&e.addClass(s),{remove:function(){e.removeClass(t.inputClass),t.inputAddTypeAsClass&&e.removeClass(s),i&&e.unwrap()},update:C}}},{match:function(e){return e.is(":radio")},apply:function(t,r){var o,d,f;return o=c(t,r,{divClass:r.radioClass}),d=o.div,f=o.span,a(t,d,r),s(t,r,{"click touchend":function(){e.uniform.update(e(':radio[name="'+n(t,"name")+'"]'))}}),l(f,t,r),{remove:k(t,r),update:function(){i(d,r),l(f,t,r),u(d,t,r)}}}},{match:function(e){return e.is("select")&&!h(e)?!0:!1},apply:function(t,n){var r,l,o,d;return n.selectAutoWidth&&g(t,function(){d=t.width()}),r=c(t,n,{divClass:n.selectClass,spanHtml:(t.find(":selected:first")||t.find("option:first")).html(),spanWrap:"before"}),l=r.div,o=r.span,n.selectAutoWidth?g(t,function(){y(e([o[0],l[0]]),{display:"block"},function(){var e;e=o.outerWidth()-o.width(),l.width(d+e),o.width(d)})}):l.addClass("fixedWidth"),a(t,l,n),s(t,n,{change:function(){o.html(t.find(":selected").html()),l.removeClass(n.activeClass)},"click touchend":function(){var e=t.find(":selected").html();o.html()!==e&&t.trigger("change")},keyup:function(){o.html(t.find(":selected").html())}}),w(o,n),{remove:function(){return o.remove(),t.unwrap().unbind(n.eventNamespace),t},update:function(){n.selectAutoWidth?(e.uniform.restore(t),t.uniform(n)):(i(l,n),o.html(t.find(":selected").html()),u(l,t,n))}}}},{match:function(e){return e.is("select")&&h(e)?!0:!1},apply:function(e,t){var n;return e.addClass(t.selectMultiClass),n=d(e,t),a(e,e,t),{remove:function(){e.removeClass(t.selectMultiClass),n&&e.unwrap()},update:C}}},{match:function(e){return e.is("textarea")},apply:function(e,t){var n;return e.addClass(t.textareaClass),n=d(e,t),a(e,e,t),{remove:function(){e.removeClass(t.textareaClass),n&&e.unwrap()},update:C}}}];m()&&!v()&&(H=!1),e.uniform={defaults:{activeClass:"active",autoHide:!0,buttonClass:"button",checkboxClass:"checker",checkedClass:"checked",disabledClass:"disabled",eventNamespace:".uniform",fileButtonClass:"action",fileButtonHtml:"Cho
7907ose File",fileClass:"uploader",fileDefaultHtml:"No file selected",filenameClass:"filename",focusClass:"focus",hoverClass:"hover",idPrefix:"uniform",inputAddTypeAsClass:!0,inputClass:"uniform-input",radioClass:"radio",resetDefaultHtml:"Reset",resetSelector:!1,selectAutoWidth:!0,selectClass:"selector",selectMultiClass:"uniform-multiselect",submitDefaultHtml:"Submit",textareaClass:"uniform",useID:!0,wrapperClass:null},elements:[]},e.fn.uniform=function(t){var n=this;return t=e.extend({},e.uniform.defaults,t),x||(x=!0,f()&&(H=!1)),H?(t.resetSelector&&e(t.resetSelector).mouseup(function(){window.setTimeout(function(){e.uniform.update(n)},10)}),this.each(function(){var n,s,a,i=e(this);if(i.data("uniformed"))return e.uniform.update(i),void 0;for(n=0;A.length>n;n+=1)if(s=A[n],s.match(i,t))return a=s.apply(i,t),i.data("uniformed",a),e.uniform.elements.push(i.get(0)),void 0})):this},e.uniform.restore=e.fn.uniform.restore=function(n){n===t&&(n=e.uniform.elements),e(n).each(function(){var t,n,s=e(this);n=s.data("uniformed"),n&&(n.remove(),t=e.inArray(this,e.uniform.elements),t>=0&&e.uniform.elements.splice(t,1),s.removeData("uniformed"))})},e.uniform.update=e.fn.uniform.update=function(n){n===t&&(n=e.uniform.elements),e(n).each(function(){var t,n=e(this);t=n.data("uniformed"),t&&t.update(n,t.options)})}})(jQuery); 7908/* End */ 7909; 7910; /* Start:"a:4:{s:4:"full";s:81:"/local/templates/aspro_max/vendor/js/carousel/owl/owl.carousel.js?165235636591210";s:6:"source";s:65:"/local/templates/aspro_max/vendor/js/carousel/owl/owl.carousel.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 7911/** 7912 * Owl Carousel v2.3.4 7913 * Copyright 2013-2018 David Deutsch 7914 * Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE 7915 */ 7916/** 7917 * Owl carousel
vendor: 24,243 bytes, lines 7918-8899
7918 * @version 2.3.4 7919 * @author Bartosz Wojciechowski 7920 * @author David Deutsch 7921 * @license The MIT License (MIT) 7922 * @todo Lazy Load Icon 7923 * @todo prevent animationend bubling 7924 * @todo itemsScaleUp 7925 * @todo Test Zepto 7926 * @todo stagePadding calculate wrong active classes 7927 */ 7928;(function($, window, document, undefined) { 7929 7930 /** 7931 * Creates a carousel. 7932 * @class The Owl Carousel. 7933 * @public 7934 * @param {HTMLElement|jQuery} element - The element to create the carousel for. 7935 * @param {Object} [options] - The options 7936 */ 7937 function Owl(element, options) { 7938 7939 /** 7940 * Current settings for the carousel. 7941 * @public 7942 */ 7943 this.settings = null; 7944 7945 /** 7946 * Current options set by the caller including defaults. 7947 * @public 7948 */ 7949 this.options = $.extend({}, Owl.Defaults, options); 7950 7951 /** 7952 * Plugin element. 7953 * @public 7954 */ 7955 this.$element = $(element); 7956 7957 /** 7958 * Proxied event handlers. 7959 * @protected 7960 */ 7961 this._handlers = {}; 7962 7963 /** 7964 * References to the running plugins of this carousel. 7965 * @protected 7966 */ 7967 this._plugins = {}; 7968 7969 /** 7970 * Currently suppressed events to prevent them from being retriggered. 7971 * @protected 7972 */ 7973 this._supress = {}; 7974 7975 /** 7976 * Absolute current position. 7977 * @protected 7978 */ 7979 this._current = null; 7980 7981 /** 7982 * Animation speed in milliseconds. 7983 * @protected 7984 */ 7985 this._speed = null; 7986 7987 /** 7988 * Coordinates of all items in pixel. 7989 * @todo The name of this member is missleading. 7990 * @protected 7991 */ 7992 this._coordinates = []; 7993 7994 /** 7995 * Current breakpoint. 7996 * @todo Real media queries would be nice. 7997 * @protected 7998 */ 7999 this._breakpoint = null; 8000 8001 /** 8002 * Current width of the plugin element. 8003 */ 8004 this._width = null; 8005 8006 /** 8007 * All real items. 8008 * @protected 8009 */ 8010 this._items = []; 8011 8012 /** 8013 * All cloned items. 8014 * @protected 8015 */ 8016 this._clones = []; 8017 8018 /** 8019 * Merge values of all items. 8020 * @todo Maybe this could be part of a plugin. 8021 * @protected 8022 */ 8023 this._mergers = []; 8024 8025 /** 8026 * Widths of all items. 8027 */ 8028 this._widths = []; 8029 8030 /** 8031 * Invalidated parts within the update process. 8032 * @protected 8033 */ 8034 this._invalidated = {}; 8035 8036 /** 8037 * Ordered list of workers for the update process. 8038 * @protected 8039 */ 8040 this._pipe = []; 8041 8042 /** 8043 * Current state information for the drag operation. 8044 * @todo #261 8045 * @protected 8046 */ 8047 this._drag = { 8048 time: null, 8049 target: null, 8050 pointer: null, 8051 stage: { 8052 start: null, 8053 current: null 8054 }, 8055 direction: null 8056 }; 8057 8058 /** 8059 * Current state information and their tags. 8060 * @type {Object} 8061 * @protected 8062 */ 8063 this._states = { 8064 current: {}, 8065 tags: { 8066 'initializing': [ 'busy' ], 8067 'animating': [ 'busy' ], 8068 'dragging': [ 'interacting' ] 8069 } 8070 }; 8071 8072 $.each([ 'onResize', 'onThrottledResize' ], $.proxy(function(i, handler) { 8073 this._handlers[handler] = $.proxy(this[handler], this); 8074 }, this)); 8075 8076 $.each(Owl.Plugins, $.proxy(function(key, plugin) { 8077 this._plugins[key.charAt(0).toLowerCase() + key.slice(1)] 8078 = new plugin(this); 8079 }, this)); 8080 8081 $.each(Owl.Workers, $.proxy(function(priority, worker) { 8082 this._pipe.push({ 8083 'filter': worker.filter, 8084 'run': $.proxy(worker.run, this) 8085 }); 8086 }, this)); 8087 8088 this.setup(); 8089 this.initialize(); 8090 } 8091 8092 /** 8093 * Default options for the carousel. 8094 * @public 8095 */ 8096 Owl.Defaults = { 8097 items: 3, 8098 loop: false, 8099 center: false, 8100 rewind: false, 8101 checkVisibility: true, 8102 8103 mouseDrag: true, 8104 touchDrag: true, 8105 pullDrag: true, 8106 freeDrag: false, 8107 8108 margin: 0, 8109 stagePadding: 0, 8110 8111 merge: false, 8112 mergeFit: true, 8113 autoWidth: false, 8114 8115 startPosition: 0, 8116 rtl: false, 8117 8118 smartSpeed: 250, 8119 fluidSpeed: false, 8120 dragEndSpeed: false, 8121 8122 responsive: {}, 8123 responsiveRefreshRate: 200, 8124 responsiveBaseElement: window, 8125 8126 fallbackEasing: 'swing', 8127 slideTransition: '', 8128 8129 info: false, 8130 8131 nestedItemSelector: false, 8132 itemElement: 'div', 8133 stageElement: 'div', 8134 8135 refreshClass: 'owl-refresh', 8136 loadedClass: 'owl-loaded', 8137 loadingClass: 'owl-loading', 8138 rtlClass: 'owl-rtl', 8139 responsiveClass: 'owl-responsive', 8140 dragClass: 'owl-drag', 8141 itemClass: 'owl-item', 8142 stageClass: 'owl-stage', 8143 stageOuterClass: 'owl-stage-outer', 8144 grabClass: 'owl-grab' 8145 }; 8146 8147 /** 8148 * Enumeration for width. 8149 * @public 8150 * @readonly 8151 * @enum {String} 8152 */ 8153 Owl.Width = { 8154 Default: 'default', 8155 Inner: 'inner', 8156 Outer: 'outer' 8157 }; 8158 8159 /** 8160 * Enumeration for types. 8161 * @public 8162 * @readonly 8163 * @enum {String} 8164 */ 8165 Owl.Type = { 8166 Event: 'event', 8167 State: 'state' 8168 }; 8169 8170 /** 8171 * Contains all registered plugins. 8172 * @public 8173 */ 8174 Owl.Plugins = {}; 8175 8176 /** 8177 * List of workers involved in the update process. 8178 */ 8179 Owl.Workers = [ { 8180 filter: [ 'width', 'settings' ], 8181 run: function() { 8182 this._width = this.$element.width(); 8183 } 8184 }, { 8185 filter: [ 'width', 'items', 'settings' ], 8186 run: function(cache) { 8187 cache.current = this._items && this._items[this.relative(this._current)]; 8188 } 8189 }, { 8190 filter: [ 'items', 'settings' ], 8191 run: function() { 8192 this.$stage.children('.cloned').remove(); 8193 } 8194 }, { 8195 filter: [ 'width', 'items', 'settings' ], 8196 run: function(cache) { 8197 var margin = this.settings.margin || '', 8198 grid = !this.settings.autoWidth, 8199 rtl = this.settings.rtl, 8200 css = { 8201 'width': 'auto', 8202 'margin-left': rtl ? margin : '', 8203 'margin-right': rtl ? '' : margin 8204 }; 8205 8206 !grid && this.$stage.children().css(css); 8207 8208 cache.css = css; 8209 } 8210 }, { 8211 filter: [ 'width', 'items', 'settings' ], 8212 run: function(cache) { 8213 var width = (this.width() / this.settings.items).toFixed(3) - this.settings.margin, 8214 merge = null, 8215 iterator = this._items.length, 8216 grid = !this.settings.autoWidth, 8217 widths = []; 8218 8219 cache.items = { 8220 merge: false, 8221 width: width 8222 }; 8223 8224 while (iterator--) { 8225 merge = this._mergers[iterator]; 8226 merge = this.settings.mergeFit && Math.min(merge, this.settings.items) || merge; 8227 8228 cache.items.merge = merge > 1 || cache.items.merge; 8229 8230 widths[iterator] = !grid ? this._items[iterator].width() : width * merge; 8231 } 8232 8233 this._widths = widths; 8234 } 8235 }, { 8236 filter: [ 'items', 'settings' ], 8237 run: function() { 8238 var clones = [], 8239 items = this._items, 8240 settings = this.settings, 8241 // TODO: Should be computed from number of min width items in stage 8242 view = Math.max(settings.items * 2, 4), 8243 size = Math.ceil(items.length / 2) * 2, 8244 repeat = settings.loop && items.length ? settings.rewind ? view : Math.max(view, size) : 0, 8245 append = '', 8246 prepend = ''; 8247 8248 repeat /= 2; 8249 8250 while (repeat > 0) { 8251 // Switch to only using appended clones 8252 clones.push(this.normalize(clones.length / 2, true)); 8253 append = append + items[clones[clones.length - 1]][0].outerHTML; 8254 clones.push(this.normalize(items.length - 1 - (clones.length - 1) / 2, true)); 8255 prepend = items[clones[clones.length - 1]][0].outerHTML + prepend; 8256 repeat -= 1; 8257 } 8258 8259 this._clones = clones; 8260 8261 $(append).addClass('cloned').appendTo(this.$stage); 8262 $(prepend).addClass('cloned').prependTo(this.$stage); 8263 } 8264 }, { 8265 filter: [ 'width', 'items', 'settings' ], 8266 run: function() { 8267 var rtl = this.settings.rtl ? 1 : -1, 8268 size = this._clones.length + this._items.length, 8269 iterator = -1, 8270 previous = 0, 8271 current = 0, 8272 coordinates = []; 8273 8274 /* ASPRO_CUSTOM */ 8275 var pullToEnd = false; 8276 if(this._widths[ this._widths.length - 1 ] < this._width && !this.settings.loop && this.settings.lightDrag) { 8277 pullToEnd = this._width - this._widths[ this._widths.length - 1 ]; 8278 } 8279 /* ASPRO_CUSTOM */ 8280 8281 while (++iterator < size) { 8282 previous = coordinates[iterator - 1] || 0; 8283 current = this._widths[this.relative(iterator)] + this.settings.margin; 8284 /* ASPRO_CUSTOM */ 8285 if(iterator == size - 2 && pullToEnd) { 8286 coordinates.push(previous + current * rtl + pullToEnd + this.settings.margin); 8287 } else { 8288 coordinates.push(previous + current * rtl); 8289 } 8290 /* ASPRO_CUSTOM */ 8291 } 8292 this._coordinates = coordinates; 8293 } 8294 }, { 8295 filter: [ 'width', 'items', 'settings' ], 8296 run: function() { 8297 var padding = this.settings.stagePadding, 8298 coordinates = this._coordinates, 8299 css = { 8300 'width': Math.ceil(Math.abs(coordinates[coordinates.length - 1])) + padding * 2, 8301 'padding-left': padding || '', 8302 'padding-right': padding || '' 8303 }; 8304 8305 this.$stage.css(css); 8306 } 8307 }, { 8308 filter: [ 'width', 'items', 'settings' ], 8309 run: function(cache) { 8310 var iterator = this._coordinates.length, 8311 grid = !this.settings.autoWidth, 8312 items = this.$stage.children(); 8313 8314 if (grid && cache.items.merge) { 8315 while (iterator--) { 8316 cache.css.width = this._widths[this.relative(iterator)]; 8317 items.eq(iterator).css(cache.css); 8318 } 8319 } else if (grid) { 8320 cache.css.width = cache.items.width; 8321 items.css(cache.css); 8322 } 8323 } 8324 }, { 8325 filter: [ 'items' ], 8326 run: function() { 8327 this._coordinates.length < 1 && this.$stage.removeAttr('style'); 8328 } 8329 }, { 8330 filter: [ 'width', 'items', 'settings' ], 8331 run: function(cache) { 8332 cache.current = cache.current ? this.$stage.children().index(cache.current) : 0; 8333 cache.current = Math.max(this.minimum(), Math.min(this.maximum(), cache.current)); 8334 this.reset(cache.current); 8335 } 8336 }, { 8337 filter: [ 'position' ], 8338 run: function() { 8339 this.animate(this.coordinates(this._current)); 8340 } 8341 }, { 8342 filter: [ 'width', 'position', 'items', 'settings' ], 8343 run: function() { 8344 var rtl = this.settings.rtl ? 1 : -1, 8345 padding = this.settings.stagePadding * 2, 8346 begin = this.coordinates(this.current()) + padding, 8347 end = begin + this.width() * rtl, 8348 inner, outer, matches = [], i, n; 8349 8350 for (i = 0, n = this._coordinates.length; i < n; i++) { 8351 inner = this._coordinates[i - 1] || 0; 8352 outer = Math.abs(this._coordinates[i]) + padding * rtl; 8353 8354 if ((this.op(inner, '<=', begin) && (this.op(inner, '>', end))) 8355 || (this.op(outer, '<', begin) && this.op(outer, '>', end))) { 8356 matches.push(i); 8357 } 8358 } 8359 8360 this.$stage.children('.active').removeClass('active'); 8361 this.$stage.children(':eq(' + matches.join('), :eq(') + ')').addClass('active'); 8362 8363 this.$stage.children('.center').removeClass('center'); 8364 if (this.settings.center) { 8365 this.$stage.children().eq(this.current()).addClass('center'); 8366 } 8367 } 8368 } ]; 8369 8370 /** 8371 * Create the stage DOM element 8372 */ 8373 Owl.prototype.initializeStage = function() { 8374 this.$stage = this.$element.find('.' + this.settings.stageClass); 8375 8376 // if the stage is already in the DOM, grab it and skip stage initialization 8377 if (this.$stage.length) { 8378 return; 8379 } 8380 8381 this.$element.addClass(this.options.loadingClass); 8382 8383 // create stage 8384 this.$stage = $('<' + this.settings.stageElement + '>', { 8385 "class": this.settings.stageClass 8386 }).wrap( $( '<div/>', { 8387 "class": this.settings.stageOuterClass 8388 })); 8389 8390 // append stage 8391 this.$element.append(this.$stage.parent()); 8392 }; 8393 8394 /** 8395 * Create item DOM elements 8396 */ 8397 Owl.prototype.initializeItems = function() { 8398 var $items = this.$element.find('.owl-item'); 8399 8400 // if the items are already in the DOM, grab them and skip item initialization 8401 if ($items.length) { 8402 this._items = $items.get().map(function(item) { 8403 return $(item); 8404 }); 8405 8406 this._mergers = this._items.map(function() { 8407 return 1; 8408 }); 8409 8410 this.refresh(); 8411 8412 return; 8413 } 8414 8415 // append content 8416 this.replace(this.$element.children().not(this.$stage.parent())); 8417 8418 // check visibility 8419 if (this.isVisible()) { 8420 // update view 8421 this.refresh(); 8422 } else { 8423 // invalidate width 8424 this.invalidate('width'); 8425 } 8426 8427 this.$element 8428 .removeClass(this.options.loadingClass) 8429 .addClass(this.options.loadedClass); 8430 }; 8431 8432 /** 8433 * Initializes the carousel. 8434 * @protected 8435 */ 8436 Owl.prototype.initialize = function() { 8437 this.enter('initializing'); 8438 this.trigger('initialize'); 8439 8440 this.$element.toggleClass(this.settings.rtlClass, this.settings.rtl); 8441 8442 if (this.settings.autoWidth && !this.is('pre-loading')) { 8443 var imgs, nestedSelector, width; 8444 imgs = this.$element.find('img'); 8445 nestedSelector = this.settings.nestedItemSelector ? '.' + this.settings.nestedItemSelector : undefined; 8446 width = this.$element.children(nestedSelector).width(); 8447 8448 if (imgs.length && width <= 0) { 8449 this.preloadAutoWidthImages(imgs); 8450 } 8451 } 8452 8453 this.initializeStage(); 8454 this.initializeItems(); 8455 8456 // register event handlers 8457 this.registerEventHandlers(); 8458 8459 this.leave('initializing'); 8460 this.trigger('initialized'); 8461 }; 8462 8463 /** 8464 * @returns {Boolean} visibility of $element 8465 * if you know the carousel will always be visible you can set `checkVisibility` to `false` to 8466 * prevent the expensive browser layout forced reflow the $element.is(':visible') does 8467 */ 8468 Owl.prototype.isVisible = function() { 8469 return this.settings.checkVisibility 8470 ? this.$element.is(':visible') 8471 : true; 8472 }; 8473 8474 /** 8475 * Setups the current settings. 8476 * @todo Remove responsive classes. Why should adaptive designs be brought into IE8? 8477 * @todo Support for media queries by using `matchMedia` would be nice. 8478 * @public 8479 */ 8480 Owl.prototype.setup = function() { 8481 var viewport = this.viewport(), 8482 overwrites = this.options.responsive, 8483 match = -1, 8484 settings = null; 8485 8486 if (!overwrites) { 8487 settings = $.extend({}, this.options); 8488 } else { 8489 $.each(overwrites, function(breakpoint) { 8490 if (breakpoint <= viewport && breakpoint > match) { 8491 match = Number(breakpoint); 8492 } 8493 }); 8494 8495 settings = $.extend({}, this.options, overwrites[match]); 8496 if (typeof settings.stagePadding === 'function') { 8497 settings.stagePadding = settings.stagePadding(); 8498 } 8499 delete settings.responsive; 8500 8501 // responsive class 8502 if (settings.responsiveClass) { 8503 this.$element.attr('class', 8504 this.$element.attr('class').replace(new RegExp('(' + this.options.responsiveClass + '-)\\S+\\s', 'g'), '$1' + match) 8505 ); 8506 } 8507 } 8508 8509 this.trigger('change', { property: { name: 'settings', value: settings } }); 8510 this._breakpoint = match; 8511 this.settings = settings; 8512 this.invalidate('settings'); 8513 this.trigger('changed', { property: { name: 'settings', value: this.settings } }); 8514 }; 8515 8516 /** 8517 * Updates option logic if necessery. 8518 * @protected 8519 */ 8520 Owl.prototype.optionsLogic = function() { 8521 if (this.settings.autoWidth) { 8522 this.settings.stagePadding = false; 8523 this.settings.merge = false; 8524 } 8525 }; 8526 8527 /** 8528 * Prepares an item before add. 8529 * @todo Rename event parameter `content` to `item`. 8530 * @protected 8531 * @returns {jQuery|HTMLElement} - The item container. 8532 */ 8533 Owl.prototype.prepare = function(item) { 8534 var event = this.trigger('prepare', { content: item }); 8535 8536 if (!event.data) { 8537 event.data = $('<' + this.settings.itemElement + '/>') 8538 .addClass(this.options.itemClass).append(item) 8539 } 8540 8541 this.trigger('prepared', { content: event.data }); 8542 8543 return event.data; 8544 }; 8545 8546 /** 8547 * Updates the view. 8548 * @public 8549 */ 8550 Owl.prototype.update = function() { 8551 var i = 0, 8552 n = this._pipe.length, 8553 filter = $.proxy(function(p) { return this[p] }, this._invalidated), 8554 cache = {}; 8555 8556 while (i < n) { 8557 if (this._invalidated.all || $.grep(this._pipe[i].filter, filter).length > 0) { 8558 this._pipe[i].run(cache); 8559 } 8560 i++; 8561 } 8562 8563 this._invalidated = {}; 8564 8565 !this.is('valid') && this.enter('valid'); 8566 }; 8567 8568 /** 8569 * Gets the width of the view. 8570 * @public 8571 * @param {Owl.Width} [dimension=Owl.Width.Default] - The dimension to return. 8572 * @returns {Number} - The width of the view in pixel. 8573 */ 8574 Owl.prototype.width = function(dimension) { 8575 dimension = dimension || Owl.Width.Default; 8576 switch (dimension) { 8577 case Owl.Width.Inner: 8578 case Owl.Width.Outer: 8579 return this._width; 8580 default: 8581 return this._width - this.settings.stagePadding * 2 + this.settings.margin; 8582 } 8583 }; 8584 8585 /** 8586 * Refreshes the carousel primarily for adaptive purposes. 8587 * @public 8588 */ 8589 Owl.prototype.refresh = function() { 8590 this.enter('refreshing'); 8591 this.trigger('refresh'); 8592 8593 this.setup(); 8594 8595 this.optionsLogic(); 8596 8597 this.$element.addClass(this.options.refreshClass); 8598 8599 this.update(); 8600 8601 this.$element.removeClass(this.options.refreshClass); 8602 8603 this.leave('refreshing'); 8604 this.trigger('refreshed'); 8605 }; 8606 8607 /** 8608 * Checks window `resize` event. 8609 * @protected 8610 */ 8611 Owl.prototype.onThrottledResize = function() { 8612 window.clearTimeout(this.resizeTimer); 8613 this.resizeTimer = window.setTimeout(this._handlers.onResize, this.settings.responsiveRefreshRate); 8614 }; 8615 8616 /** 8617 * Checks window `resize` event. 8618 * @protected 8619 */ 8620 Owl.prototype.onResize = function() { 8621 if (!this._items.length) { 8622 return false; 8623 } 8624 8625 if (this._width === this.$element.width()) { 8626 return false; 8627 } 8628 8629 if (!this.isVisible()) { 8630 return false; 8631 } 8632 8633 this.enter('resizing'); 8634 8635 if (this.trigger('resize').isDefaultPrevented()) { 8636 this.leave('resizing'); 8637 return false; 8638 } 8639 8640 this.invalidate('width'); 8641 8642 this.refresh(); 8643 8644 this.leave('resizing'); 8645 this.trigger('resized'); 8646 }; 8647 8648 /** 8649 * Registers event handlers. 8650 * @todo Check `msPointerEnabled` 8651 * @todo #261 8652 * @protected 8653 */ 8654 Owl.prototype.registerEventHandlers = function() { 8655 if ($.support.transition) { 8656 this.$stage.on($.support.transition.end + '.owl.core', $.proxy(this.onTransitionEnd, this)); 8657 } 8658 8659 if (this.settings.responsive !== false) { 8660 this.on(window, 'resize', this._handlers.onThrottledResize); 8661 } 8662 8663 if (this.settings.mouseDrag) { 8664 this.$element.addClass(this.options.dragClass); 8665 this.$stage.on('mousedown.owl.core', $.proxy(this.onDragStart, this)); 8666 this.$stage.on('dragstart.owl.core selectstart.owl.core', function() { return false }); 8667 } 8668 8669 if (this.settings.touchDrag){ 8670 this.$stage.on('touchstart.owl.core', $.proxy(this.onDragStart, this)); 8671 this.$stage.on('touchcancel.owl.core', $.proxy(this.onDragEnd, this)); 8672 } 8673 }; 8674 8675 /** 8676 * Handles `touchstart` and `mousedown` events. 8677 * @todo Horizontal swipe threshold as option 8678 * @todo #261 8679 * @protected 8680 * @param {Event} event - The event arguments. 8681 */ 8682 Owl.prototype.onDragStart = function(event) { 8683 var stage = null; 8684 8685 if (event.which === 3) { 8686 return; 8687 } 8688 8689 /* ASPRO CUSTOM */ 8690 if(this.settings.marginMove) { 8691 stage = this.$stage.css('margin-left').replace('px', ''); 8692 stage = { 8693 x: stage, 8694 y: 0 8695 }; 8696 /* ASPRO CUSTOM */ 8697 } else if ($.support.transform) { 8698 stage = this.$stage.css('transform').replace(/.*\(|\)| /g, '').split(','); 8699 stage = { 8700 x: stage[stage.length === 16 ? 12 : 4], 8701 y: stage[stage.length === 16 ? 13 : 5] 8702 }; 8703 } else { 8704 stage = this.$stage.position(); 8705 stage = { 8706 x: this.settings.rtl ? 8707 stage.left + this.$stage.width() - this.width() + this.settings.margin : 8708 stage.left, 8709 y: stage.top 8710 }; 8711 } 8712 8713 if (this.is('animating')) { 8714 $.support.transform ? this.animate(stage.x) : this.$stage.stop() 8715 this.invalidate('position'); 8716 } 8717 8718 this.$element.toggleClass(this.options.grabClass, event.type === 'mousedown'); 8719 8720 this.speed(0); 8721 8722 this._drag.time = new Date().getTime(); 8723 this._drag.target = $(event.target); 8724 this._drag.stage.start = stage; 8725 this._drag.stage.current = stage; 8726 this._drag.pointer = this.pointer(event); 8727 8728 $(document).on('mouseup.owl.core touchend.owl.core', $.proxy(this.onDragEnd, this)); 8729 8730 $(document).one('mousemove.owl.core touchmove.owl.core', $.proxy(function(event) { 8731 var delta = this.difference(this._drag.pointer, this.pointer(event)); 8732 8733 $(document).on('mousemove.owl.core touchmove.owl.core', $.proxy(this.onDragMove, this)); 8734 8735 if (Math.abs(delta.x) < Math.abs(delta.y) && this.is('valid')) { 8736 return; 8737 } 8738 8739 event.preventDefault(); 8740 8741 this.enter('dragging'); 8742 this.trigger('drag'); 8743 }, this)); 8744 }; 8745 8746 /** 8747 * Handles the `touchmove` and `mousemove` events. 8748 * @todo #261 8749 * @protected 8750 * @param {Event} event - The event arguments. 8751 */ 8752 Owl.prototype.onDragMove = function(event) { 8753 var minimum = null, 8754 maximum = null, 8755 pull = null, 8756 delta = this.difference(this._drag.pointer, this.pointer(event)), 8757 stage = this.difference(this._drag.stage.start, delta); 8758 8759 if (!this.is('dragging')) { 8760 return; 8761 } 8762 8763 event.preventDefault(); 8764 8765 if (this.settings.loop) { 8766 minimum = this.coordinates(this.minimum()); 8767 maximum = this.coordinates(this.maximum() + 1) - minimum; 8768 stage.x = (((stage.x - minimum) % maximum + maximum) % maximum) + minimum; 8769 } else { 8770 minimum = this.settings.rtl ? this.coordinates(this.maximum()) : this.coordinates(this.minimum()); 8771 maximum = this.settings.rtl ? this.coordinates(this.minimum()) : this.coordinates(this.maximum()); 8772 pull = this.settings.pullDrag ? -1 * delta.x / 5 : 0; 8773 stage.x = Math.max(Math.min(stage.x, minimum + pull), maximum + pull); 8774 } 8775 8776 this._drag.stage.current = stage; 8777 8778 this.animate(stage.x); 8779 }; 8780 8781 /** 8782 * Handles the `touchend` and `mouseup` events. 8783 * @todo #261 8784 * @todo Threshold for click event 8785 * @protected 8786 * @param {Event} event - The event arguments. 8787 */ 8788 Owl.prototype.onDragEnd = function(event) { 8789 var delta = this.difference(this._drag.pointer, this.pointer(event)), 8790 stage = this._drag.stage.current, 8791 direction = delta.x > 0 ^ this.settings.rtl ? 'left' : 'right'; 8792 8793 $(document).off('.owl.core'); 8794 8795 this.$element.removeClass(this.options.grabClass); 8796 8797 if (delta.x !== 0 && this.is('dragging') || !this.is('valid')) { 8798 this.speed(this.settings.dragEndSpeed || this.settings.smartSpeed); 8799 this.current(this.closest(stage.x, delta.x !== 0 ? direction : this._drag.direction)); 8800 this.invalidate('position'); 8801 /* ASPRO CUSTOM */ 8802 var bUpdate = false; 8803 if(!this.settings.loop) { 8804 if(this.current() === 0) { 8805 bUpdate = stage.x > 0; 8806 } else { 8807 bUpdate = stage.x < this.coordinates()[this._items.length - 1]; 8808 } 8809 } 8810 if(!this.settings.lightDrag || bUpdate) { 8811 this.update(); 8812 } 8813 /* ASPRO CUSTOM */ 8814 8815 this._drag.direction = direction; 8816 8817 if (Math.abs(delta.x) > 3 || new Date().getTime() - this._drag.time > 300) { 8818 this._drag.target.one('click.owl.core', function() { return false; }); 8819 } 8820 } 8821 8822 if (!this.is('dragging')) { 8823 return; 8824 } 8825 8826 this.leave('dragging'); 8827 this.trigger('dragged'); 8828 }; 8829 8830 /** 8831 * Gets absolute position of the closest item for a coordinate. 8832 * @todo Setting `freeDrag` makes `closest` not reusable. See #165. 8833 * @protected 8834 * @param {Number} coordinate - The coordinate in pixel. 8835 * @param {String} direction - The direction to check for the closest item. Ether `left` or `right`. 8836 * @return {Number} - The absolute position of the closest item. 8837 */ 8838 Owl.prototype.closest = function(coordinate, direction) { 8839 var position = -1, 8840 pull = 30, 8841 width = this.width(), 8842 coordinates = this.coordinates(); 8843 8844 if (!this.settings.freeDrag) { 8845 // check closest item 8846 $.each(coordinates, $.proxy(function(index, value) { 8847 // on a left pull, check on current index 8848 if (direction === 'left' && coordinate > value - pull && coordinate < value + pull) { 8849 position = index; 8850 // on a right pull, check on previous index 8851 // to do so, subtract width from value and set position = index + 1 8852 } else if (direction === 'right' && coordinate > value - width - pull && coordinate < value - width + pull) { 8853 position = index + 1; 8854 } else if (this.op(coordinate, '<', value) 8855 && this.op(coordinate, '>', coordinates[index + 1] !== undefined ? coordinates[index + 1] : value - width)) { 8856 position = direction === 'left' ? index + 1 : index; 8857 } 8858 return position === -1; 8859 }, this)); 8860 } 8861 8862 if (!this.settings.loop) { 8863 // non loop boundries 8864 if (this.op(coordinate, '>', coordinates[this.minimum()])) { 8865 position = coordinate = this.minimum(); 8866 } else if (this.op(coordinate, '<', coordinates[this.maximum()])) { 8867 position = coordinate = this.maximum(); 8868 } 8869 } 8870 8871 return position; 8872 }; 8873 8874 /** 8875 * Animates the stage. 8876 * @todo #270 8877 * @public 8878 * @param {Number} coordinate - The coordinate in pixels. 8879 */ 8880 Owl.prototype.animate = function(coordinate) { 8881 var animate = this.speed() > 0; 8882 8883 this.is('animating') && this.onTransitionEnd(); 8884 8885 if (animate) { 8886 this.enter('animating'); 8887 this.trigger('translate'); 8888 } 8889 8890 /* ASPRO CUSTOM */ 8891 if(this.settings.marginMove) { 8892 this.$stage.css({ 8893 'margin-left': coordinate + 'px', 8894 transition: (this.speed() / 1000) + 's' + ( 8895 this.settings.slideTransition ? ' ' + this.settings.slideTransition : '' 8896 ) 8897 }); 8898 /* ASPRO CUSTOM */ 8899 }
8899 else
vendor: 10,522 bytes, lines 8899-9266
8899if ($.support.transform3d && $.support.transition) { 8900 this.$stage.css({ 8901 transform: 'translate3d(' + coordinate + 'px,0px,0px)', 8902 transition: (this.speed() / 1000) + 's' + ( 8903 this.settings.slideTransition ? ' ' + this.settings.slideTransition : '' 8904 ) 8905 }); 8906 } else if (animate) { 8907 this.$stage.animate({ 8908 left: coordinate + 'px' 8909 }, this.speed(), this.settings.fallbackEasing, $.proxy(this.onTransitionEnd, this)); 8910 } else { 8911 this.$stage.css({ 8912 left: coordinate + 'px' 8913 }); 8914 } 8915 }; 8916 8917 /** 8918 * Checks whether the carousel is in a specific state or not. 8919 * @param {String} state - The state to check. 8920 * @returns {Boolean} - The flag which indicates if the carousel is busy. 8921 */ 8922 Owl.prototype.is = function(state) { 8923 return this._states.current[state] && this._states.current[state] > 0; 8924 }; 8925 8926 /** 8927 * Sets the absolute position of the current item. 8928 * @public 8929 * @param {Number} [position] - The new absolute position or nothing to leave it unchanged. 8930 * @returns {Number} - The absolute position of the current item. 8931 */ 8932 Owl.prototype.current = function(position) { 8933 if (position === undefined) { 8934 return this._current; 8935 } 8936 8937 if (this._items.length === 0) { 8938 return undefined; 8939 } 8940 8941 position = this.normalize(position); 8942 8943 if (this._current !== position) { 8944 var event = this.trigger('change', { property: { name: 'position', value: position } }); 8945 8946 if (event.data !== undefined) { 8947 position = this.normalize(event.data); 8948 } 8949 8950 this._current = position; 8951 8952 this.invalidate('position'); 8953 8954 this.trigger('changed', { property: { name: 'position', value: this._current } }); 8955 } 8956 8957 return this._current; 8958 }; 8959 8960 /** 8961 * Invalidates the given part of the update routine. 8962 * @param {String} [part] - The part to invalidate. 8963 * @returns {Array.<String>} - The invalidated parts. 8964 */ 8965 Owl.prototype.invalidate = function(part) { 8966 if ($.type(part) === 'string') { 8967 this._invalidated[part] = true; 8968 this.is('valid') && this.leave('valid'); 8969 } 8970 return $.map(this._invalidated, function(v, i) { return i }); 8971 }; 8972 8973 /** 8974 * Resets the absolute position of the current item. 8975 * @public 8976 * @param {Number} position - The absolute position of the new item. 8977 */ 8978 Owl.prototype.reset = function(position) { 8979 position = this.normalize(position); 8980 8981 if (position === undefined) { 8982 return; 8983 } 8984 8985 this._speed = 0; 8986 this._current = position; 8987 8988 this.suppress([ 'translate', 'translated' ]); 8989 8990 this.animate(this.coordinates(position)); 8991 8992 this.release([ 'translate', 'translated' ]); 8993 }; 8994 8995 /** 8996 * Normalizes an absolute or a relative position of an item. 8997 * @public 8998 * @param {Number} position - The absolute or relative position to normalize. 8999 * @param {Boolean} [relative=false] - Whether the given position is relative or not. 9000 * @returns {Number} - The normalized position. 9001 */ 9002 Owl.prototype.normalize = function(position, relative) { 9003 var n = this._items.length, 9004 m = relative ? 0 : this._clones.length; 9005 9006 if (!this.isNumeric(position) || n < 1) { 9007 position = undefined; 9008 } else if (position < 0 || position >= n + m) { 9009 position = ((position - m / 2) % n + n) % n + m / 2; 9010 } 9011 9012 return position; 9013 }; 9014 9015 /** 9016 * Converts an absolute position of an item into a relative one. 9017 * @public 9018 * @param {Number} position - The absolute position to convert. 9019 * @returns {Number} - The converted position. 9020 */ 9021 Owl.prototype.relative = function(position) { 9022 position -= this._clones.length / 2; 9023 return this.normalize(position, true); 9024 }; 9025 9026 /** 9027 * Gets the maximum position for the current item. 9028 * @public 9029 * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position. 9030 * @returns {Number} 9031 */ 9032 Owl.prototype.maximum = function(relative) { 9033 var settings = this.settings, 9034 maximum = this._coordinates.length, 9035 iterator, 9036 reciprocalItemsWidth, 9037 elementWidth; 9038 9039 if (settings.loop) { 9040 maximum = this._clones.length / 2 + this._items.length - 1; 9041 } else if (settings.autoWidth || settings.merge) { 9042 iterator = this._items.length; 9043 if (iterator) { 9044 reciprocalItemsWidth = this._items[--iterator].width(); 9045 elementWidth = this.$element.width(); 9046 while (iterator--) { 9047 reciprocalItemsWidth += this._items[iterator].width() + this.settings.margin; 9048 if (reciprocalItemsWidth > elementWidth) { 9049 break; 9050 } 9051 } 9052 } 9053 maximum = iterator + 1; 9054 } else if (settings.center) { 9055 maximum = this._items.length - 1; 9056 } else { 9057 maximum = this._items.length - settings.items; 9058 } 9059 9060 if (relative) { 9061 maximum -= this._clones.length / 2; 9062 } 9063 9064 return Math.max(maximum, 0); 9065 }; 9066 9067 /** 9068 * Gets the minimum position for the current item. 9069 * @public 9070 * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position. 9071 * @returns {Number} 9072 */ 9073 Owl.prototype.minimum = function(relative) { 9074 return relative ? 0 : this._clones.length / 2; 9075 }; 9076 9077 /** 9078 * Gets an item at the specified relative position. 9079 * @public 9080 * @param {Number} [position] - The relative position of the item. 9081 * @return {jQuery|Array.<jQuery>} - The item at the given position or all items if no position was given. 9082 */ 9083 Owl.prototype.items = function(position) { 9084 if (position === undefined) { 9085 return this._items.slice(); 9086 } 9087 9088 position = this.normalize(position, true); 9089 return this._items[position]; 9090 }; 9091 9092 /** 9093 * Gets an item at the specified relative position. 9094 * @public 9095 * @param {Number} [position] - The relative position of the item. 9096 * @return {jQuery|Array.<jQuery>} - The item at the given position or all items if no position was given. 9097 */ 9098 Owl.prototype.mergers = function(position) { 9099 if (position === undefined) { 9100 return this._mergers.slice(); 9101 } 9102 9103 position = this.normalize(position, true); 9104 return this._mergers[position]; 9105 }; 9106 9107 /** 9108 * Gets the absolute positions of clones for an item. 9109 * @public 9110 * @param {Number} [position] - The relative position of the item. 9111 * @returns {Array.<Number>} - The absolute positions of clones for the item or all if no position was given. 9112 */ 9113 Owl.prototype.clones = function(position) { 9114 var odd = this._clones.length / 2, 9115 even = odd + this._items.length, 9116 map = function(index) { return index % 2 === 0 ? even + index / 2 : odd - (index + 1) / 2 }; 9117 9118 if (position === undefined) { 9119 return $.map(this._clones, function(v, i) { return map(i) }); 9120 } 9121 9122 return $.map(this._clones, function(v, i) { return v === position ? map(i) : null }); 9123 }; 9124 9125 /** 9126 * Sets the current animation speed. 9127 * @public 9128 * @param {Number} [speed] - The animation speed in milliseconds or nothing to leave it unchanged. 9129 * @returns {Number} - The current animation speed in milliseconds. 9130 */ 9131 Owl.prototype.speed = function(speed) { 9132 if (speed !== undefined) { 9133 this._speed = speed; 9134 } 9135 9136 return this._speed; 9137 }; 9138 9139 /** 9140 * Gets the coordinate of an item. 9141 * @todo The name of this method is missleanding. 9142 * @public 9143 * @param {Number} position - The absolute position of the item within `minimum()` and `maximum()`. 9144 * @returns {Number|Array.<Number>} - The coordinate of the item in pixel or all coordinates. 9145 */ 9146 Owl.prototype.coordinates = function(position) { 9147 var multiplier = 1, 9148 newPosition = position - 1, 9149 coordinate; 9150 9151 if (position === undefined) { 9152 return $.map(this._coordinates, $.proxy(function(coordinate, index) { 9153 return this.coordinates(index); 9154 }, this)); 9155 } 9156 9157 if (this.settings.center) { 9158 if (this.settings.rtl) { 9159 multiplier = -1; 9160 newPosition = position + 1; 9161 } 9162 9163 coordinate = this._coordinates[position]; 9164 coordinate += (this.width() - coordinate + (this._coordinates[newPosition] || 0)) / 2 * multiplier; 9165 } else { 9166 coordinate = this._coordinates[newPosition] || 0; 9167 } 9168 9169 coordinate = Math.ceil(coordinate); 9170 9171 return coordinate; 9172 }; 9173 9174 /** 9175 * Calculates the speed for a translation. 9176 * @protected 9177 * @param {Number} from - The absolute position of the start item. 9178 * @param {Number} to - The absolute position of the target item. 9179 * @param {Number} [factor=undefined] - The time factor in milliseconds. 9180 * @returns {Number} - The time in milliseconds for the translation. 9181 */ 9182 Owl.prototype.duration = function(from, to, factor) { 9183 if (factor === 0) { 9184 return 0; 9185 } 9186 9187 return Math.min(Math.max(Math.abs(to - from), 1), 6) * Math.abs((factor || this.settings.smartSpeed)); 9188 }; 9189 9190 /** 9191 * Slides to the specified item. 9192 * @public 9193 * @param {Number} position - The position of the item. 9194 * @param {Number} [speed] - The time in milliseconds for the transition. 9195 */ 9196 Owl.prototype.to = function(position, speed) { 9197 var current = this.current(), 9198 revert = null, 9199 distance = position - this.relative(current), 9200 direction = (distance > 0) - (distance < 0), 9201 items = this._items.length, 9202 minimum = this.minimum(), 9203 maximum = this.maximum(); 9204 9205 if (this.settings.loop) { 9206 if (!this.settings.rewind && Math.abs(distance) > items / 2) { 9207 distance += direction * -1 * items; 9208 } 9209 9210 position = current + distance; 9211 revert = ((position - minimum) % items + items) % items + minimum; 9212 9213 if (revert !== position && revert - distance <= maximum && revert - distance > 0) { 9214 current = revert - distance; 9215 position = revert; 9216 this.reset(current); 9217 } 9218 } else if (this.settings.rewind) { 9219 maximum += 1; 9220 position = (position % maximum + maximum) % maximum; 9221 } else { 9222 position = Math.max(minimum, Math.min(maximum, position)); 9223 } 9224 9225 this.speed(this.duration(current, position, speed)); 9226 this.current(position); 9227 9228 if (this.isVisible()) { 9229 this.update(); 9230 } 9231 }; 9232 9233 /** 9234 * Slides to the next item. 9235 * @public 9236 * @param {Number} [speed] - The time in milliseconds for the transition. 9237 */ 9238 Owl.prototype.next = function(speed) { 9239 speed = speed || false; 9240 this.to(this.relative(this.current()) + 1, speed); 9241 }; 9242 9243 /** 9244 * Slides to the previous item. 9245 * @public 9246 * @param {Number} [speed] - The time in milliseconds for the transition. 9247 */ 9248 Owl.prototype.prev = function(speed) { 9249 speed = speed || false; 9250 this.to(this.relative(this.current()) - 1, speed); 9251 }; 9252 9253 /** 9254 * Handles the end of an animation. 9255 * @protected 9256 * @param {Event} event - The event arguments. 9257 */ 9258 Owl.prototype.onTransitionEnd = function(event) { 9259 9260 // if css2 animation then event object is undefined 9261 if (event !== undefined) { 9262 event.stopPropagation(); 9263 9264 // Catch only owl-stage transitionEnd event 9265 if ((event.target || event.srcElement || event.originalTarget) !== this.$stage.get(0)) { 9266 return false;
vendor: 22,957 bytes, lines 9267-10115
9267 } 9268 } 9269 9270 this.leave('animating'); 9271 this.trigger('translated'); 9272 }; 9273 9274 /** 9275 * Gets viewport width. 9276 * @protected 9277 * @return {Number} - The width in pixel. 9278 */ 9279 Owl.prototype.viewport = function() { 9280 var width; 9281 if (this.options.responsiveBaseElement !== window) { 9282 width = $(this.options.responsiveBaseElement).width(); 9283 } else if (window.innerWidth) { 9284 width = window.innerWidth; 9285 } else if (document.documentElement && document.documentElement.clientWidth) { 9286 width = document.documentElement.clientWidth; 9287 } else { 9288 console.warn('Can not detect viewport width.'); 9289 } 9290 return width; 9291 }; 9292 9293 /** 9294 * Replaces the current content. 9295 * @public 9296 * @param {HTMLElement|jQuery|String} content - The new content. 9297 */ 9298 Owl.prototype.replace = function(content) { 9299 this.$stage.empty(); 9300 this._items = []; 9301 9302 if (content) { 9303 content = (content instanceof jQuery) ? content : $(content); 9304 } 9305 9306 if (this.settings.nestedItemSelector) { 9307 content = content.find('.' + this.settings.nestedItemSelector); 9308 } 9309 9310 content.filter(function() { 9311 return this.nodeType === 1; 9312 }).each($.proxy(function(index, item) { 9313 item = this.prepare(item); 9314 this.$stage.append(item); 9315 this._items.push(item); 9316 this._mergers.push(item.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1); 9317 }, this)); 9318 9319 this.reset(this.isNumeric(this.settings.startPosition) ? this.settings.startPosition : 0); 9320 9321 this.invalidate('items'); 9322 }; 9323 9324 /** 9325 * Adds an item. 9326 * @todo Use `item` instead of `content` for the event arguments. 9327 * @public 9328 * @param {HTMLElement|jQuery|String} content - The item content to add. 9329 * @param {Number} [position] - The relative position at which to insert the item otherwise the item will be added to the end. 9330 */ 9331 Owl.prototype.add = function(content, position) { 9332 var current = this.relative(this._current); 9333 9334 position = position === undefined ? this._items.length : this.normalize(position, true); 9335 content = content instanceof jQuery ? content : $(content); 9336 9337 this.trigger('add', { content: content, position: position }); 9338 9339 content = this.prepare(content); 9340 9341 if (this._items.length === 0 || position === this._items.length) { 9342 this._items.length === 0 && this.$stage.append(content); 9343 this._items.length !== 0 && this._items[position - 1].after(content); 9344 this._items.push(content); 9345 this._mergers.push(content.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1); 9346 } else { 9347 this._items[position].before(content); 9348 this._items.splice(position, 0, content); 9349 this._mergers.splice(position, 0, content.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1); 9350 } 9351 9352 this._items[current] && this.reset(this._items[current].index()); 9353 9354 this.invalidate('items'); 9355 9356 this.trigger('added', { content: content, position: position }); 9357 }; 9358 9359 /** 9360 * Removes an item by its position. 9361 * @todo Use `item` instead of `content` for the event arguments. 9362 * @public 9363 * @param {Number} position - The relative position of the item to remove. 9364 */ 9365 Owl.prototype.remove = function(position) { 9366 position = this.normalize(position, true); 9367 9368 if (position === undefined) { 9369 return; 9370 } 9371 9372 this.trigger('remove', { content: this._items[position], position: position }); 9373 9374 this._items[position].remove(); 9375 this._items.splice(position, 1); 9376 this._mergers.splice(position, 1); 9377 9378 this.invalidate('items'); 9379 9380 this.trigger('removed', { content: null, position: position }); 9381 }; 9382 9383 /** 9384 * Preloads images with auto width. 9385 * @todo Replace by a more generic approach 9386 * @protected 9387 */ 9388 Owl.prototype.preloadAutoWidthImages = function(images) { 9389 images.each($.proxy(function(i, element) { 9390 this.enter('pre-loading'); 9391 element = $(element); 9392 $(new Image()).one('load', $.proxy(function(e) { 9393 element.attr('src', e.target.src); 9394 element.css('opacity', 1); 9395 this.leave('pre-loading'); 9396 !this.is('pre-loading') && !this.is('initializing') && this.refresh(); 9397 }, this)).attr('src', element.attr('src') || element.attr('data-src') || element.attr('data-src-retina')); 9398 }, this)); 9399 }; 9400 9401 /** 9402 * Destroys the carousel. 9403 * @public 9404 */ 9405 Owl.prototype.destroy = function() { 9406 9407 this.$element.off('.owl.core'); 9408 this.$stage.off('.owl.core'); 9409 $(document).off('.owl.core'); 9410 9411 if (this.settings.responsive !== false) { 9412 window.clearTimeout(this.resizeTimer); 9413 this.off(window, 'resize', this._handlers.onThrottledResize); 9414 } 9415 9416 for (var i in this._plugins) { 9417 this._plugins[i].destroy(); 9418 } 9419 9420 this.$stage.children('.cloned').remove(); 9421 9422 this.$stage.unwrap(); 9423 this.$stage.children().contents().unwrap(); 9424 this.$stage.children().unwrap(); 9425 this.$stage.remove(); 9426 this.$element 9427 .removeClass(this.options.refreshClass) 9428 .removeClass(this.options.loadingClass) 9429 .removeClass(this.options.loadedClass) 9430 .removeClass(this.options.rtlClass) 9431 .removeClass(this.options.dragClass) 9432 .removeClass(this.options.grabClass) 9433 .attr('class', this.$element.attr('class').replace(new RegExp(this.options.responsiveClass + '-\\S+\\s', 'g'), '')) 9434 .removeData('owl.carousel'); 9435 }; 9436 9437 /** 9438 * Operators to calculate right-to-left and left-to-right. 9439 * @protected 9440 * @param {Number} [a] - The left side operand. 9441 * @param {String} [o] - The operator. 9442 * @param {Number} [b] - The right side operand. 9443 */ 9444 Owl.prototype.op = function(a, o, b) { 9445 var rtl = this.settings.rtl; 9446 switch (o) { 9447 case '<': 9448 return rtl ? a > b : a < b; 9449 case '>': 9450 return rtl ? a < b : a > b; 9451 case '>=': 9452 return rtl ? a <= b : a >= b; 9453 case '<=': 9454 return rtl ? a >= b : a <= b; 9455 default: 9456 break; 9457 } 9458 }; 9459 9460 /** 9461 * Attaches to an internal event. 9462 * @protected 9463 * @param {HTMLElement} element - The event source. 9464 * @param {String} event - The event name. 9465 * @param {Function} listener - The event handler to attach. 9466 * @param {Boolean} capture - Wether the event should be handled at the capturing phase or not. 9467 */ 9468 Owl.prototype.on = function(element, event, listener, capture) { 9469 if (element.addEventListener) { 9470 element.addEventListener(event, listener, capture); 9471 } else if (element.attachEvent) { 9472 element.attachEvent('on' + event, listener); 9473 } 9474 }; 9475 9476 /** 9477 * Detaches from an internal event. 9478 * @protected 9479 * @param {HTMLElement} element - The event source. 9480 * @param {String} event - The event name. 9481 * @param {Function} listener - The attached event handler to detach. 9482 * @param {Boolean} capture - Wether the attached event handler was registered as a capturing listener or not. 9483 */ 9484 Owl.prototype.off = function(element, event, listener, capture) { 9485 if (element.removeEventListener) { 9486 element.removeEventListener(event, listener, capture); 9487 } else if (element.detachEvent) { 9488 element.detachEvent('on' + event, listener); 9489 } 9490 }; 9491 9492 /** 9493 * Triggers a public event. 9494 * @todo Remove `status`, `relatedTarget` should be used instead. 9495 * @protected 9496 * @param {String} name - The event name. 9497 * @param {*} [data=null] - The event data. 9498 * @param {String} [namespace=carousel] - The event namespace. 9499 * @param {String} [state] - The state which is associated with the event. 9500 * @param {Boolean} [enter=false] - Indicates if the call enters the specified state or not. 9501 * @returns {Event} - The event arguments. 9502 */ 9503 Owl.prototype.trigger = function(name, data, namespace, state, enter) { 9504 var status = { 9505 item: { count: this._items.length, index: this.current() } 9506 }, handler = $.camelCase( 9507 $.grep([ 'on', name, namespace ], function(v) { return v }) 9508 .join('-').toLowerCase() 9509 ), event = $.Event( 9510 [ name, 'owl', namespace || 'carousel' ].join('.').toLowerCase(), 9511 $.extend({ relatedTarget: this }, status, data) 9512 ); 9513 9514 if (!this._supress[name]) { 9515 $.each(this._plugins, function(name, plugin) { 9516 if (plugin.onTrigger) { 9517 plugin.onTrigger(event); 9518 } 9519 }); 9520 9521 this.register({ type: Owl.Type.Event, name: name }); 9522 this.$element.trigger(event); 9523 9524 if (this.settings && typeof this.settings[handler] === 'function') { 9525 this.settings[handler].call(this, event); 9526 } 9527 } 9528 9529 return event; 9530 }; 9531 9532 /** 9533 * Enters a state. 9534 * @param name - The state name. 9535 */ 9536 Owl.prototype.enter = function(name) { 9537 $.each([ name ].concat(this._states.tags[name] || []), $.proxy(function(i, name) { 9538 if (this._states.current[name] === undefined) { 9539 this._states.current[name] = 0; 9540 } 9541 9542 this._states.current[name]++; 9543 }, this)); 9544 }; 9545 9546 /** 9547 * Leaves a state. 9548 * @param name - The state name. 9549 */ 9550 Owl.prototype.leave = function(name) { 9551 $.each([ name ].concat(this._states.tags[name] || []), $.proxy(function(i, name) { 9552 this._states.current[name]--; 9553 }, this)); 9554 }; 9555 9556 /** 9557 * Registers an event or state. 9558 * @public 9559 * @param {Object} object - The event or state to register. 9560 */ 9561 Owl.prototype.register = function(object) { 9562 if (object.type === Owl.Type.Event) { 9563 if (!$.event.special[object.name]) { 9564 $.event.special[object.name] = {}; 9565 } 9566 9567 if (!$.event.special[object.name].owl) { 9568 var _default = $.event.special[object.name]._default; 9569 $.event.special[object.name]._default = function(e) { 9570 if (_default && _default.apply && (!e.namespace || e.namespace.indexOf('owl') === -1)) { 9571 return _default.apply(this, arguments); 9572 } 9573 return e.namespace && e.namespace.indexOf('owl') > -1; 9574 }; 9575 $.event.special[object.name].owl = true; 9576 } 9577 } else if (object.type === Owl.Type.State) { 9578 if (!this._states.tags[object.name]) { 9579 this._states.tags[object.name] = object.tags; 9580 } else { 9581 this._states.tags[object.name] = this._states.tags[object.name].concat(object.tags); 9582 } 9583 9584 this._states.tags[object.name] = $.grep(this._states.tags[object.name], $.proxy(function(tag, i) { 9585 return $.inArray(tag, this._states.tags[object.name]) === i; 9586 }, this)); 9587 } 9588 }; 9589 9590 /** 9591 * Suppresses events. 9592 * @protected 9593 * @param {Array.<String>} events - The events to suppress. 9594 */ 9595 Owl.prototype.suppress = function(events) { 9596 $.each(events, $.proxy(function(index, event) { 9597 this._supress[event] = true; 9598 }, this)); 9599 }; 9600 9601 /** 9602 * Releases suppressed events. 9603 * @protected 9604 * @param {Array.<String>} events - The events to release. 9605 */ 9606 Owl.prototype.release = function(events) { 9607 $.each(events, $.proxy(function(index, event) { 9608 delete this._supress[event]; 9609 }, this)); 9610 }; 9611 9612 /** 9613 * Gets unified pointer coordinates from event. 9614 * @todo #261 9615 * @protected 9616 * @param {Event} - The `mousedown` or `touchstart` event. 9617 * @returns {Object} - Contains `x` and `y` coordinates of current pointer position. 9618 */ 9619 Owl.prototype.pointer = function(event) { 9620 var result = { x: null, y: null }; 9621 9622 event = event.originalEvent || event || window.event; 9623 9624 event = event.touches && event.touches.length ? 9625 event.touches[0] : event.changedTouches && event.changedTouches.length ? 9626 event.changedTouches[0] : event; 9627 9628 if (event.pageX) { 9629 result.x = event.pageX; 9630 result.y = event.pageY; 9631 } else { 9632 result.x = event.clientX; 9633 result.y = event.clientY; 9634 } 9635 9636 return result; 9637 }; 9638 9639 /** 9640 * Determines if the input is a Number or something that can be coerced to a Number 9641 * @protected 9642 * @param {Number|String|Object|Array|Boolean|RegExp|Function|Symbol} - The input to be tested 9643 * @returns {Boolean} - An indication if the input is a Number or can be coerced to a Number 9644 */ 9645 Owl.prototype.isNumeric = function(number) { 9646 return !isNaN(parseFloat(number)); 9647 }; 9648 9649 /** 9650 * Gets the difference of two vectors. 9651 * @todo #261 9652 * @protected 9653 * @param {Object} - The first vector. 9654 * @param {Object} - The second vector. 9655 * @returns {Object} - The difference. 9656 */ 9657 Owl.prototype.difference = function(first, second) { 9658 return { 9659 x: first.x - second.x, 9660 y: first.y - second.y 9661 }; 9662 }; 9663 9664 /** 9665 * The jQuery Plugin for the Owl Carousel 9666 * @todo Navigation plugin `next` and `prev` 9667 * @public 9668 */ 9669 $.fn.owlCarousel = function(option) { 9670 var args = Array.prototype.slice.call(arguments, 1); 9671 9672 return this.each(function() { 9673 var $this = $(this), 9674 data = $this.data('owl.carousel'); 9675 9676 if (!data) { 9677 data = new Owl(this, typeof option == 'object' && option); 9678 $this.data('owl.carousel', data); 9679 9680 $.each([ 9681 'next', 'prev', 'to', 'destroy', 'refresh', 'replace', 'add', 'remove' 9682 ], function(i, event) { 9683 data.register({ type: Owl.Type.Event, name: event }); 9684 data.$element.on(event + '.owl.carousel.core', $.proxy(function(e) { 9685 if (e.namespace && e.relatedTarget !== this) { 9686 this.suppress([ event ]); 9687 data[event].apply(this, [].slice.call(arguments, 1)); 9688 this.release([ event ]); 9689 } 9690 }, data)); 9691 }); 9692 } 9693 9694 if (typeof option == 'string' && option.charAt(0) !== '_') { 9695 data[option].apply(data, args); 9696 } 9697 }); 9698 }; 9699 9700 /** 9701 * The constructor for the jQuery Plugin 9702 * @public 9703 */ 9704 $.fn.owlCarousel.Constructor = Owl; 9705 9706})(window.Zepto || window.jQuery, window, document); 9707 9708/** 9709 * AutoRefresh Plugin 9710 * @version 2.3.4 9711 * @author Artus Kolanowski 9712 * @author David Deutsch 9713 * @license The MIT License (MIT) 9714 */ 9715;(function($, window, document, undefined) { 9716 9717 /** 9718 * Creates the auto refresh plugin. 9719 * @class The Auto Refresh Plugin 9720 * @param {Owl} carousel - The Owl Carousel 9721 */ 9722 var AutoRefresh = function(carousel) { 9723 /** 9724 * Reference to the core. 9725 * @protected 9726 * @type {Owl} 9727 */ 9728 this._core = carousel; 9729 9730 /** 9731 * Refresh interval. 9732 * @protected 9733 * @type {number} 9734 */ 9735 this._interval = null; 9736 9737 /** 9738 * Whether the element is currently visible or not. 9739 * @protected 9740 * @type {Boolean} 9741 */ 9742 this._visible = null; 9743 9744 /** 9745 * All event handlers. 9746 * @protected 9747 * @type {Object} 9748 */ 9749 this._handlers = { 9750 'initialized.owl.carousel': $.proxy(function(e) { 9751 if (e.namespace && this._core.settings.autoRefresh) { 9752 this.watch(); 9753 } 9754 }, this) 9755 }; 9756 9757 // set default options 9758 this._core.options = $.extend({}, AutoRefresh.Defaults, this._core.options); 9759 9760 // register event handlers 9761 this._core.$element.on(this._handlers); 9762 }; 9763 9764 /** 9765 * Default options. 9766 * @public 9767 */ 9768 AutoRefresh.Defaults = { 9769 autoRefresh: true, 9770 autoRefreshInterval: 500 9771 }; 9772 9773 /** 9774 * Watches the element. 9775 */ 9776 AutoRefresh.prototype.watch = function() { 9777 if (this._interval) { 9778 return; 9779 } 9780 9781 this._visible = this._core.isVisible(); 9782 this._interval = window.setInterval($.proxy(this.refresh, this), this._core.settings.autoRefreshInterval); 9783 }; 9784 9785 /** 9786 * Refreshes the element. 9787 */ 9788 AutoRefresh.prototype.refresh = function() { 9789 if (this._core.isVisible() === this._visible) { 9790 return; 9791 } 9792 9793 this._visible = !this._visible; 9794 9795 this._core.$element.toggleClass('owl-hidden', !this._visible); 9796 9797 this._visible && (this._core.invalidate('width') && this._core.refresh()); 9798 }; 9799 9800 /** 9801 * Destroys the plugin. 9802 */ 9803 AutoRefresh.prototype.destroy = function() { 9804 var handler, property; 9805 9806 window.clearInterval(this._interval); 9807 9808 for (handler in this._handlers) { 9809 this._core.$element.off(handler, this._handlers[handler]); 9810 } 9811 for (property in Object.getOwnPropertyNames(this)) { 9812 typeof this[property] != 'function' && (this[property] = null); 9813 } 9814 }; 9815 9816 $.fn.owlCarousel.Constructor.Plugins.AutoRefresh = AutoRefresh; 9817 9818})(window.Zepto || window.jQuery, window, document); 9819 9820/** 9821 * Lazy Plugin 9822 * @version 2.3.4 9823 * @author Bartosz Wojciechowski 9824 * @author David Deutsch 9825 * @license The MIT License (MIT) 9826 */ 9827;(function($, window, document, undefined) { 9828 9829 /** 9830 * Creates the lazy plugin. 9831 * @class The Lazy Plugin 9832 * @param {Owl} carousel - The Owl Carousel 9833 */ 9834 var Lazy = function(carousel) { 9835 9836 /** 9837 * Reference to the core. 9838 * @protected 9839 * @type {Owl} 9840 */ 9841 this._core = carousel; 9842 9843 /** 9844 * Already loaded items. 9845 * @protected 9846 * @type {Array.<jQuery>} 9847 */ 9848 this._loaded = []; 9849 9850 /** 9851 * Event handlers. 9852 * @protected 9853 * @type {Object} 9854 */ 9855 this._handlers = { 9856 'initialized.owl.carousel change.owl.carousel resized.owl.carousel': $.proxy(function(e) { 9857 if (!e.namespace) { 9858 return; 9859 } 9860 9861 if (!this._core.settings || !this._core.settings.lazyLoad) { 9862 return; 9863 } 9864 9865 if ((e.property && e.property.name == 'position') || e.type == 'initialized') { 9866 var settings = this._core.settings, 9867 n = (settings.center && Math.ceil(settings.items / 2) || settings.items), 9868 i = ((settings.center && n * -1) || 0), 9869 position = (e.property && e.property.value !== undefined ? e.property.value : this._core.current()) + i, 9870 clones = this._core.clones().length, 9871 load = $.proxy(function(i, v) { this.load(v) }, this); 9872 //TODO: Need documentation for this new option 9873 if (settings.lazyLoadEager > 0) { 9874 n += settings.lazyLoadEager; 9875 // If the carousel is looping also preload images that are to the "left" 9876 if (settings.loop) { 9877 position -= settings.lazyLoadEager; 9878 n++; 9879 } 9880 } 9881 9882 while (i++ < n) { 9883 this.load(clones / 2 + this._core.relative(position)); 9884 clones && $.each(this._core.clones(this._core.relative(position)), load); 9885 position++; 9886 } 9887 } 9888 }, this) 9889 }; 9890 9891 // set the default options 9892 this._core.options = $.extend({}, Lazy.Defaults, this._core.options); 9893 9894 // register event handler 9895 this._core.$element.on(this._handlers); 9896 }; 9897 9898 /** 9899 * Default options. 9900 * @public 9901 */ 9902 Lazy.Defaults = { 9903 lazyLoad: false, 9904 lazyLoadEager: 0 9905 }; 9906 9907 /** 9908 * Loads all resources of an item at the specified position. 9909 * @param {Number} position - The absolute position of the item. 9910 * @protected 9911 */ 9912 Lazy.prototype.load = function(position) { 9913 var $item = this._core.$stage.children().eq(position), 9914 $elements = $item && $item.find('.owl-lazy'); 9915 9916 if (!$elements || $.inArray($item.get(0), this._loaded) > -1) { 9917 return; 9918 } 9919 9920 $elements.each($.proxy(function(index, element) { 9921 var $element = $(element), image, 9922 url = (window.devicePixelRatio > 1 && $element.attr('data-src-retina')) || $element.attr('data-src') || $element.attr('data-srcset'); 9923 9924 this._core.trigger('load', { element: $element, url: url }, 'lazy'); 9925 9926 if ($element.is('img')) { 9927 $element.one('load.owl.lazy', $.proxy(function() { 9928 $element.css('opacity', 1); 9929 this._core.trigger('loaded', { element: $element, url: url }, 'lazy'); 9930 }, this)).attr('src', url); 9931 } else if ($element.is('source')) { 9932 $element.one('load.owl.lazy', $.proxy(function() { 9933 this._core.trigger('loaded', { element: $element, url: url }, 'lazy'); 9934 }, this)).attr('srcset', url); 9935 } else { 9936 image = new Image(); 9937 image.onload = $.proxy(function() { 9938 $element.css({ 9939 'background-image': 'url("' + url + '")', 9940 'opacity': '1' 9941 }); 9942 this._core.trigger('loaded', { element: $element, url: url }, 'lazy'); 9943 }, this); 9944 image.src = url; 9945 } 9946 }, this)); 9947 9948 this._loaded.push($item.get(0)); 9949 }; 9950 9951 /** 9952 * Destroys the plugin. 9953 * @public 9954 */ 9955 Lazy.prototype.destroy = function() { 9956 var handler, property; 9957 9958 for (handler in this.handlers) { 9959 this._core.$element.off(handler, this.handlers[handler]); 9960 } 9961 for (property in Object.getOwnPropertyNames(this)) { 9962 typeof this[property] != 'function' && (this[property] = null); 9963 } 9964 }; 9965 9966 $.fn.owlCarousel.Constructor.Plugins.Lazy = Lazy; 9967 9968})(window.Zepto || window.jQuery, window, document); 9969 9970/** 9971 * AutoHeight Plugin 9972 * @version 2.3.4 9973 * @author Bartosz Wojciechowski 9974 * @author David Deutsch 9975 * @license The MIT License (MIT) 9976 */ 9977;(function($, window, document, undefined) { 9978 9979 /** 9980 * Creates the auto height plugin. 9981 * @class The Auto Height Plugin 9982 * @param {Owl} carousel - The Owl Carousel 9983 */ 9984 var AutoHeight = function(carousel) { 9985 /** 9986 * Reference to the core. 9987 * @protected 9988 * @type {Owl} 9989 */ 9990 this._core = carousel; 9991 9992 this._previousHeight = null; 9993 9994 /** 9995 * All event handlers. 9996 * @protected 9997 * @type {Object} 9998 */ 9999 this._handlers = { 10000 'initialized.owl.carousel refreshed.owl.carousel': $.proxy(function(e) { 10001 if (e.namespace && this._core.settings.autoHeight) { 10002 this.update(); 10003 } 10004 }, this), 10005 'changed.owl.carousel': $.proxy(function(e) { 10006 if (e.namespace && this._core.settings.autoHeight && e.property.name === 'position'){ 10007 this.update(); 10008 } 10009 }, this), 10010 'loaded.owl.lazy': $.proxy(function(e) { 10011 if (e.namespace && this._core.settings.autoHeight 10012 && e.element.closest('.' + this._core.settings.itemClass).index() === this._core.current()) { 10013 this.update(); 10014 } 10015 }, this) 10016 }; 10017 10018 // set default options 10019 this._core.options = $.extend({}, AutoHeight.Defaults, this._core.options); 10020 10021 // register event handlers 10022 this._core.$element.on(this._handlers); 10023 this._intervalId = null; 10024 var refThis = this; 10025 10026 // These changes have been taken from a PR by gavrochelegnou proposed in #1575 10027 // and have been made compatible with the latest jQuery version 10028 $(window).on('load', function() { 10029 if (refThis._core.settings.autoHeight) { 10030 refThis.update(); 10031 } 10032 }); 10033 10034 // Autoresize the height of the carousel when window is resized 10035 // When carousel has images, the height is dependent on the width 10036 // and should also change on resize 10037 $(window).resize(function() { 10038 if (refThis._core.settings.autoHeight) { 10039 if (refThis._intervalId != null) { 10040 clearTimeout(refThis._intervalId); 10041 } 10042 10043 refThis._intervalId = setTimeout(function() { 10044 refThis.update(); 10045 }, 250); 10046 } 10047 }); 10048 10049 }; 10050 10051 /** 10052 * Default options. 10053 * @public 10054 */ 10055 AutoHeight.Defaults = { 10056 autoHeight: false, 10057 autoHeightClass: 'owl-height' 10058 }; 10059 10060 /** 10061 * Updates the view. 10062 */ 10063 AutoHeight.prototype.update = function() { 10064 var start = this._core._current, 10065 end = start + this._core.settings.items, 10066 lazyLoadEnabled = this._core.settings.lazyLoad, 10067 visible = this._core.$stage.children().toArray().slice(start, end), 10068 heights = [], 10069 maxheight = 0; 10070 10071 $.each(visible, function(index, item) { 10072 heights.push($(item).height()); 10073 }); 10074 10075 maxheight = Math.max.apply(null, heights); 10076 10077 if (maxheight <= 1 && lazyLoadEnabled && this._previousHeight) { 10078 maxheight = this._previousHeight; 10079 } 10080 10081 this._previousHeight = maxheight; 10082 10083 this._core.$stage.parent() 10084 .height(maxheight) 10085 .addClass(this._core.settings.autoHeightClass); 10086 }; 10087 10088 AutoHeight.prototype.destroy = function() { 10089 var handler, property; 10090 10091 for (handler in this._handlers) { 10092 this._core.$element.off(handler, this._handlers[handler]); 10093 } 10094 for (property in Object.getOwnPropertyNames(this)) { 10095 typeof this[property] !== 'function' && (this[property] = null); 10096 } 10097 }; 10098 10099 $.fn.owlCarousel.Constructor.Plugins.AutoHeight = AutoHeight; 10100 10101})(window.Zepto || window.jQuery, window, document); 10102 10103/** 10104 * Video Plugin 10105 * @version 2.3.4 10106 * @author Bartosz Wojciechowski 10107 * @author David Deutsch 10108 * @license The MIT License (MIT) 10109 */ 10110;(function($, window, document, undefined) { 10111 10112 /** 10113 * Creates the video plugin. 10114 * @class The Video Plugin 10115 * @param {Owl} carousel - The Owl Carousel
vendor: 5,347 bytes, lines 10116-10313
10116 */ 10117 var Video = function(carousel) { 10118 /** 10119 * Reference to the core. 10120 * @protected 10121 * @type {Owl} 10122 */ 10123 this._core = carousel; 10124 10125 /** 10126 * Cache all video URLs. 10127 * @protected 10128 * @type {Object} 10129 */ 10130 this._videos = {}; 10131 10132 /** 10133 * Current playing item. 10134 * @protected 10135 * @type {jQuery} 10136 */ 10137 this._playing = null; 10138 10139 /** 10140 * All event handlers. 10141 * @todo The cloned content removale is too late 10142 * @protected 10143 * @type {Object} 10144 */ 10145 this._handlers = { 10146 'initialized.owl.carousel': $.proxy(function(e) { 10147 if (e.namespace) { 10148 this._core.register({ type: 'state', name: 'playing', tags: [ 'interacting' ] }); 10149 } 10150 }, this), 10151 'resize.owl.carousel': $.proxy(function(e) { 10152 if (e.namespace && this._core.settings.video && this.isInFullScreen()) { 10153 e.preventDefault(); 10154 } 10155 }, this), 10156 'refreshed.owl.carousel': $.proxy(function(e) { 10157 if (e.namespace && this._core.is('resizing')) { 10158 this._core.$stage.find('.cloned .owl-video-frame').remove(); 10159 } 10160 }, this), 10161 'changed.owl.carousel': $.proxy(function(e) { 10162 if (e.namespace && e.property.name === 'position' && this._playing) { 10163 this.stop(); 10164 } 10165 }, this), 10166 'prepared.owl.carousel': $.proxy(function(e) { 10167 if (!e.namespace) { 10168 return; 10169 } 10170 10171 var $element = $(e.content).find('.owl-video'); 10172 10173 if ($element.length) { 10174 $element.css('display', 'none'); 10175 this.fetch($element, $(e.content)); 10176 } 10177 }, this) 10178 }; 10179 10180 // set default options 10181 this._core.options = $.extend({}, Video.Defaults, this._core.options); 10182 10183 // register event handlers 10184 this._core.$element.on(this._handlers); 10185 10186 this._core.$element.on('click.owl.video', '.owl-video-play-icon', $.proxy(function(e) { 10187 this.play(e); 10188 }, this)); 10189 }; 10190 10191 /** 10192 * Default options. 10193 * @public 10194 */ 10195 Video.Defaults = { 10196 video: false, 10197 videoHeight: false, 10198 videoWidth: false 10199 }; 10200 10201 /** 10202 * Gets the video ID and the type (YouTube/Vimeo/vzaar only). 10203 * @protected 10204 * @param {jQuery} target - The target containing the video data. 10205 * @param {jQuery} item - The item containing the video. 10206 */ 10207 Video.prototype.fetch = function(target, item) { 10208 var type = (function() { 10209 if (target.attr('data-vimeo-id')) { 10210 return 'vimeo'; 10211 } else if (target.attr('data-vzaar-id')) { 10212 return 'vzaar' 10213 } else { 10214 return 'youtube'; 10215 } 10216 })(), 10217 id = target.attr('data-vimeo-id') || target.attr('data-youtube-id') || target.attr('data-vzaar-id'), 10218 width = target.attr('data-width') || this._core.settings.videoWidth, 10219 height = target.attr('data-height') || this._core.settings.videoHeight, 10220 url = target.attr('href'); 10221 10222 if (url) { 10223 10224 /* 10225 Parses the id's out of the following urls (and probably more): 10226 https://www.youtube.com/watch?v=:id 10227 https://youtu.be/:id 10228 https://vimeo.com/:id 10229 https://vimeo.com/channels/:channel/:id 10230 https://vimeo.com/groups/:group/videos/:id 10231 https://app.vzaar.com/videos/:id 10232 10233 Visual example: https://regexper.com/#(http%3A%7Chttps%3A%7C)%5C%2F%5C%2F(player.%7Cwww.%7Capp.)%3F(vimeo%5C.com%7Cyoutu(be%5C.com%7C%5C.be%7Cbe%5C.googleapis%5C.com)%7Cvzaar%5C.com)%5C%2F(video%5C%2F%7Cvideos%5C%2F%7Cembed%5C%2F%7Cchannels%5C%2F.%2B%5C%2F%7Cgroups%5C%2F.%2B%5C%2F%7Cwatch%5C%3Fv%3D%7Cv%5C%2F)%3F(%5BA-Za-z0-9._%25-%5D*)(%5C%26%5CS%2B)%3F 10234 */ 10235 10236 id = url.match(/(http:|https:|)\/\/(player.|www.|app.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com|be\-nocookie\.com)|vzaar\.com)\/(video\/|videos\/|embed\/|channels\/.+\/|groups\/.+\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/); 10237 10238 if (id[3].indexOf('youtu') > -1) { 10239 type = 'youtube'; 10240 } else if (id[3].indexOf('vimeo') > -1) { 10241 type = 'vimeo'; 10242 } else if (id[3].indexOf('vzaar') > -1) { 10243 type = 'vzaar'; 10244 } else { 10245 throw new Error('Video URL not supported.'); 10246 } 10247 id = id[6]; 10248 } else { 10249 throw new Error('Missing video URL.'); 10250 } 10251 10252 this._videos[url] = { 10253 type: type, 10254 id: id, 10255 width: width, 10256 height: height 10257 }; 10258 10259 item.attr('data-video', url); 10260 10261 this.thumbnail(target, this._videos[url]); 10262 }; 10263 10264 /** 10265 * Creates video thumbnail. 10266 * @protected 10267 * @param {jQuery} target - The target containing the video data. 10268 * @param {Object} info - The video info object. 10269 * @see `fetch` 10270 */ 10271 Video.prototype.thumbnail = function(target, video) { 10272 var tnLink, 10273 icon, 10274 path, 10275 dimensions = video.width && video.height ? 'width:' + video.width + 'px;height:' + video.height + 'px;' : '', 10276 customTn = target.find('img'), 10277 srcType = 'src', 10278 lazyClass = '', 10279 settings = this._core.settings, 10280 create = function(path) { 10281 icon = '<div class="owl-video-play-icon"></div>'; 10282 10283 if (settings.lazyLoad) { 10284 tnLink = $('<div/>',{ 10285 "class": 'owl-video-tn ' + lazyClass, 10286 "srcType": path 10287 }); 10288 } else { 10289 tnLink = $( '<div/>', { 10290 "class": "owl-video-tn", 10291 "style": 'opacity:1;background-image:url(' + path + ')' 10292 }); 10293 } 10294 target.after(tnLink); 10295 target.after(icon); 10296 }; 10297 10298 // wrap video content into owl-video-wrapper div 10299 target.wrap( $( '<div/>', { 10300 "class": "owl-video-wrapper", 10301 "style": dimensions 10302 })); 10303 10304 if (this._core.settings.lazyLoad) { 10305 srcType = 'data-src'; 10306 lazyClass = 'owl-lazy'; 10307 } 10308 10309 // custom thumbnail 10310 if (customTn.length) { 10311 create(customTn.attr(srcType)); 10312 customTn.remove(); 10313 return false;
vendor: 15,908 bytes, lines 10314-10951
10314 } 10315 10316 if (video.type === 'youtube') { 10317 path = "//img.youtube.com/vi/" + video.id + "/hqdefault.jpg"; 10318 create(path); 10319 } else if (video.type === 'vimeo') { 10320 $.ajax({ 10321 type: 'GET', 10322 url: '//vimeo.com/api/v2/video/' + video.id + '.json', 10323 jsonp: 'callback', 10324 dataType: 'jsonp', 10325 success: function(data) { 10326 path = data[0].thumbnail_large; 10327 create(path); 10328 } 10329 }); 10330 } else if (video.type === 'vzaar') { 10331 $.ajax({ 10332 type: 'GET', 10333 url: '//vzaar.com/api/videos/' + video.id + '.json', 10334 jsonp: 'callback', 10335 dataType: 'jsonp', 10336 success: function(data) { 10337 path = data.framegrab_url; 10338 create(path); 10339 } 10340 }); 10341 } 10342 }; 10343 10344 /** 10345 * Stops the current video. 10346 * @public 10347 */ 10348 Video.prototype.stop = function() { 10349 this._core.trigger('stop', null, 'video'); 10350 this._playing.find('.owl-video-frame').remove(); 10351 this._playing.removeClass('owl-video-playing'); 10352 this._playing = null; 10353 this._core.leave('playing'); 10354 this._core.trigger('stopped', null, 'video'); 10355 }; 10356 10357 /** 10358 * Starts the current video. 10359 * @public 10360 * @param {Event} event - The event arguments. 10361 */ 10362 Video.prototype.play = function(event) { 10363 var target = $(event.target), 10364 item = target.closest('.' + this._core.settings.itemClass), 10365 video = this._videos[item.attr('data-video')], 10366 width = video.width || '100%', 10367 height = video.height || this._core.$stage.height(), 10368 html, 10369 iframe; 10370 10371 if (this._playing) { 10372 return; 10373 } 10374 10375 this._core.enter('playing'); 10376 this._core.trigger('play', null, 'video'); 10377 10378 item = this._core.items(this._core.relative(item.index())); 10379 10380 this._core.reset(item.index()); 10381 10382 html = $( '<iframe frameborder="0" allowfullscreen mozallowfullscreen webkitAllowFullScreen ></iframe>' ); 10383 html.attr( 'height', height ); 10384 html.attr( 'width', width ); 10385 if (video.type === 'youtube') { 10386 html.attr( 'src', '//www.youtube.com/embed/' + video.id + '?autoplay=1&rel=0&v=' + video.id ); 10387 } else if (video.type === 'vimeo') { 10388 html.attr( 'src', '//player.vimeo.com/video/' + video.id + '?autoplay=1' ); 10389 } else if (video.type === 'vzaar') { 10390 html.attr( 'src', '//view.vzaar.com/' + video.id + '/player?autoplay=true' ); 10391 } 10392 10393 iframe = $(html).wrap( '<div class="owl-video-frame" />' ).insertAfter(item.find('.owl-video')); 10394 10395 this._playing = item.addClass('owl-video-playing'); 10396 }; 10397 10398 /** 10399 * Checks whether an video is currently in full screen mode or not. 10400 * @todo Bad style because looks like a readonly method but changes members. 10401 * @protected 10402 * @returns {Boolean} 10403 */ 10404 Video.prototype.isInFullScreen = function() { 10405 var element = document.fullscreenElement || document.mozFullScreenElement || 10406 document.webkitFullscreenElement; 10407 10408 return element && $(element).parent().hasClass('owl-video-frame'); 10409 }; 10410 10411 /** 10412 * Destroys the plugin. 10413 */ 10414 Video.prototype.destroy = function() { 10415 var handler, property; 10416 10417 this._core.$element.off('click.owl.video'); 10418 10419 for (handler in this._handlers) { 10420 this._core.$element.off(handler, this._handlers[handler]); 10421 } 10422 for (property in Object.getOwnPropertyNames(this)) { 10423 typeof this[property] != 'function' && (this[property] = null); 10424 } 10425 }; 10426 10427 $.fn.owlCarousel.Constructor.Plugins.Video = Video; 10428 10429})(window.Zepto || window.jQuery, window, document); 10430 10431/** 10432 * Animate Plugin 10433 * @version 2.3.4 10434 * @author Bartosz Wojciechowski 10435 * @author David Deutsch 10436 * @license The MIT License (MIT) 10437 */ 10438;(function($, window, document, undefined) { 10439 10440 /** 10441 * Creates the animate plugin. 10442 * @class The Navigation Plugin 10443 * @param {Owl} scope - The Owl Carousel 10444 */ 10445 var Animate = function(scope) { 10446 this.core = scope; 10447 this.core.options = $.extend({}, Animate.Defaults, this.core.options); 10448 this.swapping = true; 10449 this.previous = undefined; 10450 this.next = undefined; 10451 10452 this.handlers = { 10453 'change.owl.carousel': $.proxy(function(e) { 10454 if (e.namespace && e.property.name == 'position') { 10455 this.previous = this.core.current(); 10456 this.next = e.property.value; 10457 } 10458 }, this), 10459 'drag.owl.carousel dragged.owl.carousel translated.owl.carousel': $.proxy(function(e) { 10460 if (e.namespace) { 10461 this.swapping = e.type == 'translated'; 10462 } 10463 }, this), 10464 'translate.owl.carousel': $.proxy(function(e) { 10465 if (e.namespace && this.swapping && (this.core.options.animateOut || this.core.options.animateIn)) { 10466 this.swap(); 10467 } 10468 }, this) 10469 }; 10470 10471 this.core.$element.on(this.handlers); 10472 }; 10473 10474 /** 10475 * Default options. 10476 * @public 10477 */ 10478 Animate.Defaults = { 10479 animateOut: false, 10480 animateIn: false 10481 }; 10482 10483 /** 10484 * Toggles the animation classes whenever an translations starts. 10485 * @protected 10486 * @returns {Boolean|undefined} 10487 */ 10488 Animate.prototype.swap = function() { 10489 10490 if (this.core.settings.items !== 1) { 10491 return; 10492 } 10493 10494 if (!$.support.animation || !$.support.transition) { 10495 return; 10496 } 10497 10498 this.core.speed(0); 10499 10500 var left, 10501 clear = $.proxy(this.clear, this), 10502 previous = this.core.$stage.children().eq(this.previous), 10503 next = this.core.$stage.children().eq(this.next), 10504 incoming = this.core.settings.animateIn, 10505 outgoing = this.core.settings.animateOut; 10506 10507 if (this.core.current() === this.previous) { 10508 return; 10509 } 10510 10511 if (outgoing) { 10512 left = this.core.coordinates(this.previous) - this.core.coordinates(this.next); 10513 previous.one($.support.animation.end, clear) 10514 .css( { 'left': left + 'px' } ) 10515 .addClass('animated owl-animated-out') 10516 .addClass(outgoing); 10517 } 10518 10519 if (incoming) { 10520 next.one($.support.animation.end, clear) 10521 .addClass('animated owl-animated-in') 10522 .addClass(incoming); 10523 } 10524 }; 10525 10526 Animate.prototype.clear = function(e) { 10527 $(e.target).css( { 'left': '' } ) 10528 .removeClass('animated owl-animated-out owl-animated-in') 10529 .removeClass(this.core.settings.animateIn) 10530 .removeClass(this.core.settings.animateOut); 10531 this.core.onTransitionEnd(); 10532 }; 10533 10534 /** 10535 * Destroys the plugin. 10536 * @public 10537 */ 10538 Animate.prototype.destroy = function() { 10539 var handler, property; 10540 10541 for (handler in this.handlers) { 10542 this.core.$element.off(handler, this.handlers[handler]); 10543 } 10544 for (property in Object.getOwnPropertyNames(this)) { 10545 typeof this[property] != 'function' && (this[property] = null); 10546 } 10547 }; 10548 10549 $.fn.owlCarousel.Constructor.Plugins.Animate = Animate; 10550 10551})(window.Zepto || window.jQuery, window, document); 10552 10553/** 10554 * Autoplay Plugin 10555 * @version 2.3.4 10556 * @author Bartosz Wojciechowski 10557 * @author Artus Kolanowski 10558 * @author David Deutsch 10559 * @author Tom De Caluwé 10560 * @license The MIT License (MIT) 10561 */ 10562;(function($, window, document, undefined) { 10563 10564 /** 10565 * Creates the autoplay plugin. 10566 * @class The Autoplay Plugin 10567 * @param {Owl} scope - The Owl Carousel 10568 */ 10569 var Autoplay = function(carousel) { 10570 /** 10571 * Reference to the core. 10572 * @protected 10573 * @type {Owl} 10574 */ 10575 this._core = carousel; 10576 10577 /** 10578 * The autoplay timeout id. 10579 * @type {Number} 10580 */ 10581 this._call = null; 10582 10583 /** 10584 * Depending on the state of the plugin, this variable contains either 10585 * the start time of the timer or the current timer value if it's 10586 * paused. Since we start in a paused state we initialize the timer 10587 * value. 10588 * @type {Number} 10589 */ 10590 this._time = 0; 10591 10592 /** 10593 * Stores the timeout currently used. 10594 * @type {Number} 10595 */ 10596 this._timeout = 0; 10597 10598 /** 10599 * Indicates whenever the autoplay is paused. 10600 * @type {Boolean} 10601 */ 10602 this._paused = true; 10603 10604 /** 10605 * All event handlers. 10606 * @protected 10607 * @type {Object} 10608 */ 10609 this._handlers = { 10610 'changed.owl.carousel': $.proxy(function(e) { 10611 if (e.namespace && e.property.name === 'settings') { 10612 if (this._core.settings.autoplay) { 10613 this.play(); 10614 } else { 10615 this.stop(); 10616 } 10617 } else if (e.namespace && e.property.name === 'position' && this._paused) { 10618 // Reset the timer. This code is triggered when the position 10619 // of the carousel was changed through user interaction. 10620 this._time = 0; 10621 } 10622 }, this), 10623 'initialized.owl.carousel': $.proxy(function(e) { 10624 if (e.namespace && this._core.settings.autoplay) { 10625 this.play(); 10626 } 10627 }, this), 10628 'play.owl.autoplay': $.proxy(function(e, t, s) { 10629 if (e.namespace) { 10630 this.play(t, s); 10631 } 10632 }, this), 10633 'stop.owl.autoplay': $.proxy(function(e) { 10634 if (e.namespace) { 10635 this.stop(); 10636 } 10637 }, this), 10638 'mouseover.owl.autoplay': $.proxy(function() { 10639 if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) { 10640 this.pause(); 10641 } 10642 }, this), 10643 'mouseleave.owl.autoplay': $.proxy(function() { 10644 if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) { 10645 this.play(); 10646 } 10647 }, this), 10648 'touchstart.owl.core': $.proxy(function() { 10649 if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) { 10650 this.pause(); 10651 } 10652 }, this), 10653 'touchend.owl.core': $.proxy(function() { 10654 if (this._core.settings.autoplayHoverPause) { 10655 this.play(); 10656 } 10657 }, this) 10658 }; 10659 10660 // register event handlers 10661 this._core.$element.on(this._handlers); 10662 10663 // set default options 10664 this._core.options = $.extend({}, Autoplay.Defaults, this._core.options); 10665 }; 10666 10667 /** 10668 * Default options. 10669 * @public 10670 */ 10671 Autoplay.Defaults = { 10672 autoplay: false, 10673 autoplayTimeout: 5000, 10674 autoplayHoverPause: false, 10675 autoplaySpeed: false 10676 }; 10677 10678 /** 10679 * Transition to the next slide and set a timeout for the next transition. 10680 * @private 10681 * @param {Number} [speed] - The animation speed for the animations. 10682 */ 10683 Autoplay.prototype._next = function(speed) { 10684 this._call = window.setTimeout( 10685 $.proxy(this._next, this, speed), 10686 this._timeout * (Math.round(this.read() / this._timeout) + 1) - this.read() 10687 ); 10688 10689 if (this._core.is('interacting') || document.hidden) { 10690 return; 10691 } 10692 this._core.next(speed || this._core.settings.autoplaySpeed); 10693 } 10694 10695 /** 10696 * Reads the current timer value when the timer is playing. 10697 * @public 10698 */ 10699 Autoplay.prototype.read = function() { 10700 return new Date().getTime() - this._time; 10701 }; 10702 10703 /** 10704 * Starts the autoplay. 10705 * @public 10706 * @param {Number} [timeout] - The interval before the next animation starts. 10707 * @param {Number} [speed] - The animation speed for the animations. 10708 */ 10709 Autoplay.prototype.play = function(timeout, speed) { 10710 var elapsed; 10711 10712 if (!this._core.is('rotating')) { 10713 this._core.enter('rotating'); 10714 } 10715 10716 timeout = timeout || this._core.settings.autoplayTimeout; 10717 10718 // Calculate the elapsed time since the last transition. If the carousel 10719 // wasn't playing this calculation will yield zero. 10720 elapsed = Math.min(this._time % (this._timeout || timeout), timeout); 10721 10722 if (this._paused) { 10723 // Start the clock. 10724 this._time = this.read(); 10725 this._paused = false; 10726 } else { 10727 // Clear the active timeout to allow replacement. 10728 window.clearTimeout(this._call); 10729 } 10730 10731 // Adjust the origin of the timer to match the new timeout value. 10732 this._time += this.read() % timeout - elapsed; 10733 10734 this._timeout = timeout; 10735 this._call = window.setTimeout($.proxy(this._next, this, speed), timeout - elapsed); 10736 }; 10737 10738 /** 10739 * Stops the autoplay. 10740 * @public 10741 */ 10742 Autoplay.prototype.stop = function() { 10743 if (this._core.is('rotating')) { 10744 // Reset the clock. 10745 this._time = 0; 10746 this._paused = true; 10747 10748 window.clearTimeout(this._call); 10749 this._core.leave('rotating'); 10750 } 10751 }; 10752 10753 /** 10754 * Pauses the autoplay. 10755 * @public 10756 */ 10757 Autoplay.prototype.pause = function() { 10758 if (this._core.is('rotating') && !this._paused) { 10759 // Pause the clock. 10760 this._time = this.read(); 10761 this._paused = true; 10762 10763 window.clearTimeout(this._call); 10764 } 10765 }; 10766 10767 /** 10768 * Destroys the plugin. 10769 */ 10770 Autoplay.prototype.destroy = function() { 10771 var handler, property; 10772 10773 this.stop(); 10774 10775 for (handler in this._handlers) { 10776 this._core.$element.off(handler, this._handlers[handler]); 10777 } 10778 for (property in Object.getOwnPropertyNames(this)) { 10779 typeof this[property] != 'function' && (this[property] = null); 10780 } 10781 }; 10782 10783 $.fn.owlCarousel.Constructor.Plugins.autoplay = Autoplay; 10784 10785})(window.Zepto || window.jQuery, window, document); 10786 10787/** 10788 * Navigation Plugin 10789 * @version 2.3.4 10790 * @author Artus Kolanowski 10791 * @author David Deutsch 10792 * @license The MIT License (MIT) 10793 */ 10794;(function($, window, document, undefined) { 10795 'use strict'; 10796 10797 /** 10798 * Creates the navigation plugin. 10799 * @class The Navigation Plugin 10800 * @param {Owl} carousel - The Owl Carousel. 10801 */ 10802 var Navigation = function(carousel) { 10803 /** 10804 * Reference to the core. 10805 * @protected 10806 * @type {Owl} 10807 */ 10808 this._core = carousel; 10809 10810 /** 10811 * Indicates whether the plugin is initialized or not. 10812 * @protected 10813 * @type {Boolean} 10814 */ 10815 this._initialized = false; 10816 10817 /** 10818 * The current paging indexes. 10819 * @protected 10820 * @type {Array} 10821 */ 10822 this._pages = []; 10823 10824 /** 10825 * All DOM elements of the user interface. 10826 * @protected 10827 * @type {Object} 10828 */ 10829 this._controls = {}; 10830 10831 /** 10832 * Markup for an indicator. 10833 * @protected 10834 * @type {Array.<String>} 10835 */ 10836 this._templates = []; 10837 10838 /** 10839 * The carousel element. 10840 * @type {jQuery} 10841 */ 10842 this.$element = this._core.$element; 10843 10844 /** 10845 * Overridden methods of the carousel. 10846 * @protected 10847 * @type {Object} 10848 */ 10849 this._overrides = { 10850 next: this._core.next, 10851 prev: this._core.prev, 10852 to: this._core.to 10853 }; 10854 10855 /** 10856 * All event handlers. 10857 * @protected 10858 * @type {Object} 10859 */ 10860 this._handlers = { 10861 'prepared.owl.carousel': $.proxy(function(e) { 10862 if (e.namespace && this._core.settings.dotsData) { 10863 this._templates.push('<div class="' + this._core.settings.dotClass + '">' + 10864 $(e.content).find('[data-dot]').addBack('[data-dot]').attr('data-dot') + '</div>'); 10865 } 10866 }, this), 10867 'added.owl.carousel': $.proxy(function(e) { 10868 if (e.namespace && this._core.settings.dotsData) { 10869 this._templates.splice(e.position, 0, this._templates.pop()); 10870 } 10871 }, this), 10872 'remove.owl.carousel': $.proxy(function(e) { 10873 if (e.namespace && this._core.settings.dotsData) { 10874 this._templates.splice(e.position, 1); 10875 } 10876 }, this), 10877 'changed.owl.carousel': $.proxy(function(e) { 10878 if (e.namespace && e.property.name == 'position') { 10879 this.draw(); 10880 } 10881 }, this), 10882 'initialized.owl.carousel': $.proxy(function(e) { 10883 if (e.namespace && !this._initialized) { 10884 this._core.trigger('initialize', null, 'navigation'); 10885 this.initialize(); 10886 this.update(); 10887 this.draw(); 10888 this._initialized = true; 10889 this._core.trigger('initialized', null, 'navigation'); 10890 } 10891 }, this), 10892 'refreshed.owl.carousel': $.proxy(function(e) { 10893 if (e.namespace && this._initialized) { 10894 this._core.trigger('refresh', null, 'navigation'); 10895 this.update(); 10896 this.draw(); 10897 this._core.trigger('refreshed', null, 'navigation'); 10898 } 10899 }, this) 10900 }; 10901 10902 // set default options 10903 this._core.options = $.extend({}, Navigation.Defaults, this._core.options); 10904 10905 // register event handlers 10906 this.$element.on(this._handlers); 10907 }; 10908 10909 /** 10910 * Default options. 10911 * @public 10912 * @todo Rename `slideBy` to `navBy` 10913 */ 10914 Navigation.Defaults = { 10915 nav: false, 10916 navText: [ 10917 '<span aria-label="' + 'Previous' + '">‹</span>', 10918 '<span aria-label="' + 'Next' + '">›</span>' 10919 ], 10920 navSpeed: false, 10921 navElement: 'button type="button" role="presentation"', 10922 navContainer: false, 10923 navContainerClass: 'owl-nav', 10924 navClass: [ 10925 'owl-prev', 10926 'owl-next' 10927 ], 10928 slideBy: 1, 10929 dotClass: 'owl-dot', 10930 dotsClass: 'owl-dots', 10931 dots: true, 10932 dotsEach: false, 10933 dotsData: false, 10934 dotsSpeed: false, 10935 dotsContainer: false 10936 }; 10937 10938 /** 10939 * Initializes the layout of the plugin and extends the carousel. 10940 * @protected 10941 */ 10942 Navigation.prototype.initialize = function() { 10943 var override, 10944 settings = this._core.settings; 10945 10946 // create DOM structure for relative navigation 10947 this._controls.$relative = (settings.navContainer ? $(settings.navContainer) 10948 : $('<div>').addClass(settings.navContainerClass).appendTo(this.$element)).addClass('disabled'); 10949 10950 this._controls.$previous = $('<' + settings.navElement + '>') 10951 .addClass(settings.navClass[0])
vendor: 4,756 bytes, lines 10952-11113
10952 .html(settings.navText[0]) 10953 .prependTo(this._controls.$relative) 10954 .on('click', $.proxy(function(e) { 10955 this.prev(settings.navSpeed); 10956 }, this)); 10957 this._controls.$next = $('<' + settings.navElement + '>') 10958 .addClass(settings.navClass[1]) 10959 .html(settings.navText[1]) 10960 .appendTo(this._controls.$relative) 10961 .on('click', $.proxy(function(e) { 10962 this.next(settings.navSpeed); 10963 }, this)); 10964 10965 // create DOM structure for absolute navigation 10966 if (!settings.dotsData) { 10967 this._templates = [ $('<button role="button">') 10968 .addClass(settings.dotClass) 10969 .append($('<span>')) 10970 .prop('outerHTML') ]; 10971 } 10972 10973 this._controls.$absolute = (settings.dotsContainer ? $(settings.dotsContainer) 10974 : $('<div>').addClass(settings.dotsClass).appendTo(this.$element)).addClass('disabled'); 10975 10976 this._controls.$absolute.on('click', 'button', $.proxy(function(e) { 10977 var index = $(e.target).parent().is(this._controls.$absolute) 10978 ? $(e.target).index() : $(e.target).parent().index(); 10979 10980 e.preventDefault(); 10981 10982 this.to(index, settings.dotsSpeed); 10983 }, this)); 10984 10985 /*$el.on('focusin', function() { 10986 $(document).off(".carousel"); 10987 10988 $(document).on('keydown.carousel', function(e) { 10989 if(e.keyCode == 37) { 10990 $el.trigger('prev.owl') 10991 } 10992 if(e.keyCode == 39) { 10993 $el.trigger('next.owl') 10994 } 10995 }); 10996 });*/ 10997 10998 // override public methods of the carousel 10999 for (override in this._overrides) { 11000 this._core[override] = $.proxy(this[override], this); 11001 } 11002 }; 11003 11004 /** 11005 * Destroys the plugin. 11006 * @protected 11007 */ 11008 Navigation.prototype.destroy = function() { 11009 var handler, control, property, override, settings; 11010 settings = this._core.settings; 11011 11012 for (handler in this._handlers) { 11013 this.$element.off(handler, this._handlers[handler]); 11014 } 11015 for (control in this._controls) { 11016 if (control === '$relative' && settings.navContainer) { 11017 this._controls[control].html(''); 11018 } else { 11019 this._controls[control].remove(); 11020 } 11021 } 11022 for (override in this.overides) { 11023 this._core[override] = this._overrides[override]; 11024 } 11025 for (property in Object.getOwnPropertyNames(this)) { 11026 typeof this[property] != 'function' && (this[property] = null); 11027 } 11028 }; 11029 11030 /** 11031 * Updates the internal state. 11032 * @protected 11033 */ 11034 Navigation.prototype.update = function() { 11035 var i, j, k, 11036 lower = this._core.clones().length / 2, 11037 upper = lower + this._core.items().length, 11038 maximum = this._core.maximum(true), 11039 settings = this._core.settings, 11040 size = settings.center || settings.autoWidth || settings.dotsData 11041 ? 1 : settings.dotsEach || settings.items; 11042 11043 if (settings.slideBy !== 'page') { 11044 settings.slideBy = Math.min(settings.slideBy, settings.items); 11045 } 11046 11047 if (settings.dots || settings.slideBy == 'page') { 11048 this._pages = []; 11049 11050 for (i = lower, j = 0, k = 0; i < upper; i++) { 11051 if (j >= size || j === 0) { 11052 this._pages.push({ 11053 start: Math.min(maximum, i - lower), 11054 end: i - lower + size - 1 11055 }); 11056 if (Math.min(maximum, i - lower) === maximum) { 11057 break; 11058 } 11059 j = 0, ++k; 11060 } 11061 j += this._core.mergers(this._core.relative(i)); 11062 } 11063 } 11064 }; 11065 11066 /** 11067 * Draws the user interface. 11068 * @todo The option `dotsData` wont work. 11069 * @protected 11070 */ 11071 Navigation.prototype.draw = function() { 11072 var difference, 11073 settings = this._core.settings, 11074 disabled = this._core.items().length <= settings.items, 11075 index = this._core.relative(this._core.current()), 11076 loop = settings.loop || settings.rewind; 11077 11078 this._controls.$relative.toggleClass('disabled', !settings.nav || disabled); 11079 11080 if (settings.nav) { 11081 this._controls.$previous.toggleClass('disabled', !loop && index <= this._core.minimum(true)); 11082 this._controls.$next.toggleClass('disabled', !loop && index >= this._core.maximum(true)); 11083 } 11084 11085 this._controls.$absolute.toggleClass('disabled', !settings.dots || disabled); 11086 11087 if (settings.dots) { 11088 difference = this._pages.length - this._controls.$absolute.children().length; 11089 11090 if (settings.dotsData && difference !== 0) { 11091 this._controls.$absolute.html(this._templates.join('')); 11092 } else if (difference > 0) { 11093 this._controls.$absolute.append(new Array(difference + 1).join(this._templates[0])); 11094 } else if (difference < 0) { 11095 this._controls.$absolute.children().slice(difference).remove(); 11096 } 11097 11098 this._controls.$absolute.find('.active').removeClass('active'); 11099 this._controls.$absolute.children().eq($.inArray(this.current(), this._pages)).addClass('active'); 11100 } 11101 }; 11102 11103 /** 11104 * Extends event data. 11105 * @protected 11106 * @param {Event} event - The event object which gets thrown. 11107 */ 11108 Navigation.prototype.onTrigger = function(event) { 11109 var settings = this._core.settings; 11110 11111 event.page = { 11112 index: $.inArray(this.current(), this._pages), 11113 count: this._pages.length,
vendor: 7,284 bytes, lines 11114-11399
11114 size: settings && (settings.center || settings.autoWidth || settings.dotsData 11115 ? 1 : settings.dotsEach || settings.items) 11116 }; 11117 }; 11118 11119 /** 11120 * Gets the current page position of the carousel. 11121 * @protected 11122 * @returns {Number} 11123 */ 11124 Navigation.prototype.current = function() { 11125 var current = this._core.relative(this._core.current()); 11126 return $.grep(this._pages, $.proxy(function(page, index) { 11127 return page.start <= current && page.end >= current; 11128 }, this)).pop(); 11129 }; 11130 11131 /** 11132 * Gets the current succesor/predecessor position. 11133 * @protected 11134 * @returns {Number} 11135 */ 11136 Navigation.prototype.getPosition = function(successor) { 11137 var position, length, 11138 settings = this._core.settings; 11139 11140 if (settings.slideBy == 'page') { 11141 position = $.inArray(this.current(), this._pages); 11142 length = this._pages.length; 11143 successor ? ++position : --position; 11144 position = this._pages[((position % length) + length) % length].start; 11145 } else { 11146 position = this._core.relative(this._core.current()); 11147 length = this._core.items().length; 11148 successor ? position += settings.slideBy : position -= settings.slideBy; 11149 } 11150 11151 return position; 11152 }; 11153 11154 /** 11155 * Slides to the next item or page. 11156 * @public 11157 * @param {Number} [speed=false] - The time in milliseconds for the transition. 11158 */ 11159 Navigation.prototype.next = function(speed) { 11160 $.proxy(this._overrides.to, this._core)(this.getPosition(true), speed); 11161 }; 11162 11163 /** 11164 * Slides to the previous item or page. 11165 * @public 11166 * @param {Number} [speed=false] - The time in milliseconds for the transition. 11167 */ 11168 Navigation.prototype.prev = function(speed) { 11169 $.proxy(this._overrides.to, this._core)(this.getPosition(false), speed); 11170 }; 11171 11172 /** 11173 * Slides to the specified item or page. 11174 * @public 11175 * @param {Number} position - The position of the item or page. 11176 * @param {Number} [speed] - The time in milliseconds for the transition. 11177 * @param {Boolean} [standard=false] - Whether to use the standard behaviour or not. 11178 */ 11179 Navigation.prototype.to = function(position, speed, standard) { 11180 var length; 11181 11182 if (!standard && this._pages.length) { 11183 length = this._pages.length; 11184 $.proxy(this._overrides.to, this._core)(this._pages[((position % length) + length) % length].start, speed); 11185 } else { 11186 $.proxy(this._overrides.to, this._core)(position, speed); 11187 } 11188 }; 11189 11190 $.fn.owlCarousel.Constructor.Plugins.Navigation = Navigation; 11191 11192})(window.Zepto || window.jQuery, window, document); 11193 11194/** 11195 * Hash Plugin 11196 * @version 2.3.4 11197 * @author Artus Kolanowski 11198 * @author David Deutsch 11199 * @license The MIT License (MIT) 11200 */ 11201;(function($, window, document, undefined) { 11202 'use strict'; 11203 11204 /** 11205 * Creates the hash plugin. 11206 * @class The Hash Plugin 11207 * @param {Owl} carousel - The Owl Carousel 11208 */ 11209 var Hash = function(carousel) { 11210 /** 11211 * Reference to the core. 11212 * @protected 11213 * @type {Owl} 11214 */ 11215 this._core = carousel; 11216 11217 /** 11218 * Hash index for the items. 11219 * @protected 11220 * @type {Object} 11221 */ 11222 this._hashes = {}; 11223 11224 /** 11225 * The carousel element. 11226 * @type {jQuery} 11227 */ 11228 this.$element = this._core.$element; 11229 11230 /** 11231 * All event handlers. 11232 * @protected 11233 * @type {Object} 11234 */ 11235 this._handlers = { 11236 'initialized.owl.carousel': $.proxy(function(e) { 11237 if (e.namespace && this._core.settings.startPosition === 'URLHash') { 11238 $(window).trigger('hashchange.owl.navigation'); 11239 } 11240 }, this), 11241 'prepared.owl.carousel': $.proxy(function(e) { 11242 if (e.namespace) { 11243 var hash = $(e.content).find('[data-hash]').addBack('[data-hash]').attr('data-hash'); 11244 11245 if (!hash) { 11246 return; 11247 } 11248 11249 this._hashes[hash] = e.content; 11250 } 11251 }, this), 11252 'changed.owl.carousel': $.proxy(function(e) { 11253 if (e.namespace && e.property.name === 'position') { 11254 var current = this._core.items(this._core.relative(this._core.current())), 11255 hash = $.map(this._hashes, function(item, hash) { 11256 return item === current ? hash : null; 11257 }).join(); 11258 11259 if (!hash || window.location.hash.slice(1) === hash) { 11260 return; 11261 } 11262 11263 window.location.hash = hash; 11264 } 11265 }, this) 11266 }; 11267 11268 // set default options 11269 this._core.options = $.extend({}, Hash.Defaults, this._core.options); 11270 11271 // register the event handlers 11272 this.$element.on(this._handlers); 11273 11274 // register event listener for hash navigation 11275 $(window).on('hashchange.owl.navigation', $.proxy(function(e) { 11276 var hash = window.location.hash.substring(1), 11277 items = this._core.$stage.children(), 11278 position = this._hashes[hash] && items.index(this._hashes[hash]); 11279 11280 if (position === undefined || position === this._core.current()) { 11281 return; 11282 } 11283 11284 this._core.to(this._core.relative(position), false, true); 11285 }, this)); 11286 }; 11287 11288 /** 11289 * Default options. 11290 * @public 11291 */ 11292 Hash.Defaults = { 11293 URLhashListener: false 11294 }; 11295 11296 /** 11297 * Destroys the plugin. 11298 * @public 11299 */ 11300 Hash.prototype.destroy = function() { 11301 var handler, property; 11302 11303 $(window).off('hashchange.owl.navigation'); 11304 11305 for (handler in this._handlers) { 11306 this._core.$element.off(handler, this._handlers[handler]); 11307 } 11308 for (property in Object.getOwnPropertyNames(this)) { 11309 typeof this[property] != 'function' && (this[property] = null); 11310 } 11311 }; 11312 11313 $.fn.owlCarousel.Constructor.Plugins.Hash = Hash; 11314 11315})(window.Zepto || window.jQuery, window, document); 11316 11317/** 11318 * Support Plugin 11319 * 11320 * @version 2.3.4 11321 * @author Vivid Planet Software GmbH 11322 * @author Artus Kolanowski 11323 * @author David Deutsch 11324 * @license The MIT License (MIT) 11325 */ 11326;(function($, window, document, undefined) { 11327 11328 var style = $('<support>').get(0).style, 11329 prefixes = 'Webkit Moz O ms'.split(' '), 11330 events = { 11331 transition: { 11332 end: { 11333 WebkitTransition: 'webkitTransitionEnd', 11334 MozTransition: 'transitionend', 11335 OTransition: 'oTransitionEnd', 11336 transition: 'transitionend' 11337 } 11338 }, 11339 animation: { 11340 end: { 11341 WebkitAnimation: 'webkitAnimationEnd', 11342 MozAnimation: 'animationend', 11343 OAnimation: 'oAnimationEnd', 11344 animation: 'animationend' 11345 } 11346 } 11347 }, 11348 tests = { 11349 csstransforms: function() { 11350 return !!test('transform'); 11351 }, 11352 csstransforms3d: function() { 11353 return !!test('perspective'); 11354 }, 11355 csstransitions: function() { 11356 return !!test('transition'); 11357 }, 11358 cssanimations: function() { 11359 return !!test('animation'); 11360 } 11361 }; 11362 11363 function test(property, prefixed) { 11364 var result = false, 11365 upper = property.charAt(0).toUpperCase() + property.slice(1); 11366 11367 $.each((property + ' ' + prefixes.join(upper + ' ') + upper).split(' '), function(i, property) { 11368 if (style[property] !== undefined) { 11369 result = prefixed ? property : true; 11370 return false; 11371 } 11372 }); 11373 11374 return result; 11375 } 11376 11377 function prefixed(property) { 11378 return test(property, true); 11379 } 11380 11381 if (tests.csstransitions()) { 11382 /* jshint -W053 */ 11383 $.support.transition = new String(prefixed('transition')) 11384 $.support.transition.end = events.transition.end[ $.support.transition ]; 11385 } 11386 11387 if (tests.cssanimations()) { 11388 /* jshint -W053 */ 11389 $.support.animation = new String(prefixed('animation')) 11390 $.support.animation.end = events.animation.end[ $.support.animation ]; 11391 } 11392 11393 if (tests.csstransforms()) { 11394 /* jshint -W053 */ 11395 $.support.transform = new String(prefixed('transform')); 11396 $.support.transform3d = tests.csstransforms3d(); 11397 } 11398 11399})(window.Zepto || window.jQuery, window, document);
11400 11401/* End */ 11402; 11403; /* Start:"a:4:{s:4:"full";s:66:"/local/templates/aspro_max/vendor/js/moment.min.js?165235583734436";s:6:"source";s:50:"/local/templates/aspro_max/vendor/js/moment.min.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 11404//! moment.js 11405//! version : 2.10.3 11406//! authors : Tim Wood, Iskren Chernev, Moment.js contributors 11407//! license : MIT 11408//! momentjs.com 11409!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.moment=b()}(this,function(){"use strict";function a(){return Dc.apply(null,arguments)}function b(a){Dc=a}function c(a){return"[object Array]"===Object.prototype.toString.call(a)}function d(a){return a instanceof Date||"[object Date]"===Object.prototype.toString.call(a)}function e(a,b){var c,d=[];for(c=0;c<a.length;++c)d.push(b(a[c],c));return d}function f(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function g(a,b){for(var c in b)f(b,c)&&(a[c]=b[c]);return f(b,"toString")&&(a.toString=b.toString),f(b,"valueOf")&&(a.valueOf=b.valueOf),a}function h(a,b,c,d){return za(a,b,c,d,!0).utc()}function i(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function j(a){return null==a._pf&&(a._pf=i()),a._pf}function k(a){if(null==a._isValid){var b=j(a);a._isValid=!isNaN(a._d.getTime())&&b.overflow<0&&!b.empty&&!b.invalidMonth&&!b.nullInput&&!b.invalidFormat&&!b.userInvalidated,a._strict&&(a._isValid=a._isValid&&0===b.charsLeftOver&&0===b.unusedTokens.length&&void 0===b.bigHour)}return a._isValid}function l(a){var b=h(0/0);return null!=a?g(j(b),a):j(b).userInvalidated=!0,b}function m(a,b){var c,d,e;if("undefined"!=typeof b._isAMomentObject&&(a._isAMomentObject=b._isAMomentObject),"undefined"!=typeof b._i&&(a._i=b._i),"undefined"!=typeof b._f&&(a._f=b._f),"undefined"!=typeof b._l&&(a._l=b._l),"undefined"!=typeof b._strict&&(a._strict=b._strict),"undefined"!=typeof b._tzm&&(a._tzm=b._tzm),"undefined"!=typeof b._isUTC&&(a._isUTC=b._isUTC),"undefined"!=typeof b._offset&&(a._offset=b._offset),"undefined"!=typeof b._pf&&(a._pf=j(b)),"undefined"!=typeof b._locale&&(a._locale=b._locale),Fc.length>0)for(c in Fc)d=Fc[c],e=b[d],"undefined"!=typeof e&&(a[d]=e);return a}function n(b){m(this,b),this._d=new Date(+b._d),Gc===!1&&(Gc=!0,a.updateOffset(this),Gc=!1)}function o(a){return a instanceof n||null!=a&&null!=a._isAMomentObject}function p(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=b>=0?Math.floor(b):Math.ceil(b)),c}function q(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;e>d;d++)(c&&a[d]!==b[d]||!c&&p(a[d])!==p(b[d]))&&g++;return g+f}function r(){}function s(a){return a?a.toLowerCase().replace("_","-"):a}function t(a){for(var b,c,d,e,f=0;f<a.length;){for(e=s(a[f]).split("-"),b=e.length,c=s(a[f+1]),c=c?c.split("-"):null;b>0;){if(d=u(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&q(e,c,!0)>=b-1)break;b--}f++}return null}function u(a){var b=null;if(!Hc[a]&&"undefined"!=typeof module&&module&&module.exports)try{b=Ec._abbr,require("./locale/"+a),v(b)}catch(c){}return Hc[a]}function v(a,b){var c;return a&&(c="undefined"==typeof b?x(a):w(a,b),c&&(Ec=c)),Ec._abbr}function w(a,b){return null!==b?(b.abbr=a,Hc[a]||(Hc[a]=new r),Hc[a].set(b),v(a),Hc[a]):(delete Hc[a],null)}function x(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return Ec;if(!c(a)){if(b=u(a))return b;a=[a]}return t(a)}function y(a,b){var c=a.toLowerCase();Ic[c]=Ic[c+"s"]=Ic[b]=a}function z(a){return"string"==typeof a?Ic[a]||Ic[a.toLowerCase()]:void 0}function A(a){var b,c,d={};for(c in a)f(a,c)&&(b=z(c),b&&(d[b]=a[c]));return d}function B(b,c){return function(d){return null!=d?(D(this,b,d),a.updateOffset(this,c),this):C(this,b)}}function C(a,b){return a._d["get"+(a._isUTC?"UTC":"")+b]()}function D(a,b,c){return a._d["set"+(a._isUTC?"UTC":"")+b](c)}function E(a,b){var c;if("object"==typeof a)for(c in a)this.set(c,a[c]);else if(a=z(a),"function"==typeof this[a])return this[a](b);return this}function F(a,b,c){for(var d=""+Math.abs(a),e=a>=0;d.length<b;)d="0"+d;return(e?c?"+":"":"-")+d}function G(a,b,c,d){var e=d;"string"==typeof d&&(e=function(){return this[d]()}),a&&(Mc[a]=e),b&&(Mc[b[0]]=function(){return F(e.apply(this,arguments),b[1],b[2])}),c&&(Mc[c]=function(){return this.localeData().ordinal(e.apply(this,arguments),a)})}function H(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function I(a){var b,c,d=a.match(Jc);for(b=0,c=d.length;c>b;b++)Mc[d[b]]?d[b]=Mc[d[b]]:d[b]=H(d[b]);return function(e){var f="";for(b=0;c>b;b++)f+=d[b]instanceof Function?d[b].call(e,a):d[b];return f}}function J(a,b){return a.isValid()?(b=K(b,a.localeData()),Lc[b]||(Lc[b]=I(b)),Lc[b](a)):a.localeData().invalidDate()}function K(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(Kc.lastIndex=0;d>=0&&Kc.test(a);)a=a.replace(Kc,c),Kc.lastIndex=0,d-=1;return a}function L(a,b,c){_c[a]="function"==typeof b?b:function(a){return a&&c?c:b}}function M(a,b){return f(_c,a)?_c[a](b._strict,b._locale):new RegExp(N(a))}function N(a){return a.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e}).replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function O(a,b){var c,d=b;
11409for("string"==typeof a&&(a=[a]),"number"==typeof b&&(d=function(a,c){c[b]=p(a)}),c=0;c<a.length;c++)ad[a[c]]=d}function P(a,b){O(a,function(a,c,d,e){d._w=d._w||{},b(a,d._w,d,e)})}function Q(a,b,c){null!=b&&f(ad,a)&&ad[a](b,c._a,c,a)}function R(a,b){return new Date(Date.UTC(a,b+1,0)).getUTCDate()}function S(a){return this._months[a.month()]}function T(a){return this._monthsShort[a.month()]}function U(a,b,c){var d,e,f;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),d=0;12>d;d++){if(e=h([2e3,d]),c&&!this._longMonthsParse[d]&&(this._longMonthsParse[d]=new RegExp("^"+this.months(e,"").replace(".","")+"$","i"),this._shortMonthsParse[d]=new RegExp("^"+this.monthsShort(e,"").replace(".","")+"$","i")),c||this._monthsParse[d]||(f="^"+this.months(e,"")+"|^"+this.monthsShort(e,""),this._monthsParse[d]=new RegExp(f.replace(".",""),"i")),c&&"MMMM"===b&&this._longMonthsParse[d].test(a))return d;if(c&&"MMM"===b&&this._shortMonthsParse[d].test(a))return d;if(!c&&this._monthsParse[d].test(a))return d}}function V(a,b){var c;return"string"==typeof b&&(b=a.localeData().monthsParse(b),"number"!=typeof b)?a:(c=Math.min(a.date(),R(a.year(),b)),a._d["set"+(a._isUTC?"UTC":"")+"Month"](b,c),a)}function W(b){return null!=b?(V(this,b),a.updateOffset(this,!0),this):C(this,"Month")}function X(){return R(this.year(),this.month())}function Y(a){var b,c=a._a;return c&&-2===j(a).overflow&&(b=c[cd]<0||c[cd]>11?cd:c[dd]<1||c[dd]>R(c[bd],c[cd])?dd:c[ed]<0||c[ed]>24||24===c[ed]&&(0!==c[fd]||0!==c[gd]||0!==c[hd])?ed:c[fd]<0||c[fd]>59?fd:c[gd]<0||c[gd]>59?gd:c[hd]<0||c[hd]>999?hd:-1,j(a)._overflowDayOfYear&&(bd>b||b>dd)&&(b=dd),j(a).overflow=b),a}function Z(b){a.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+b)}function $(a,b){var c=!0,d=a+"\n"+(new Error).stack;return g(function(){return c&&(Z(d),c=!1),b.apply(this,arguments)},b)}function _(a,b){kd[a]||(Z(b),kd[a]=!0)}function aa(a){var b,c,d=a._i,e=ld.exec(d);if(e){for(j(a).iso=!0,b=0,c=md.length;c>b;b++)if(md[b][1].exec(d)){a._f=md[b][0]+(e[6]||" ");break}for(b=0,c=nd.length;c>b;b++)if(nd[b][1].exec(d)){a._f+=nd[b][0];break}d.match(Yc)&&(a._f+="Z"),ta(a)}else a._isValid=!1}function ba(b){var c=od.exec(b._i);return null!==c?void(b._d=new Date(+c[1])):(aa(b),void(b._isValid===!1&&(delete b._isValid,a.createFromInputFallback(b))))}function ca(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return 1970>a&&h.setFullYear(a),h}function da(a){var b=new Date(Date.UTC.apply(null,arguments));return 1970>a&&b.setUTCFullYear(a),b}function ea(a){return fa(a)?366:365}function fa(a){return a%4===0&&a%100!==0||a%400===0}function ga(){return fa(this.year())}function ha(a,b,c){var d,e=c-b,f=c-a.day();return f>e&&(f-=7),e-7>f&&(f+=7),d=Aa(a).add(f,"d"),{week:Math.ceil(d.dayOfYear()/7),year:d.year()}}function ia(a){return ha(a,this._week.dow,this._week.doy).week}function ja(){return this._week.dow}function ka(){return this._week.doy}function la(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")}function ma(a){var b=ha(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")}function na(a,b,c,d,e){var f,g,h=da(a,0,1).getUTCDay();return h=0===h?7:h,c=null!=c?c:e,f=e-h+(h>d?7:0)-(e>h?7:0),g=7*(b-1)+(c-e)+f+1,{year:g>0?a:a-1,dayOfYear:g>0?g:ea(a-1)+g}}function oa(a){var b=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")}function pa(a,b,c){return null!=a?a:null!=b?b:c}function qa(a){var b=new Date;return a._useUTC?[b.getUTCFullYear(),b.getUTCMonth(),b.getUTCDate()]:[b.getFullYear(),b.getMonth(),b.getDate()]}function ra(a){var b,c,d,e,f=[];if(!a._d){for(d=qa(a),a._w&&null==a._a[dd]&&null==a._a[cd]&&sa(a),a._dayOfYear&&(e=pa(a._a[bd],d[bd]),a._dayOfYear>ea(e)&&(j(a)._overflowDayOfYear=!0),c=da(e,0,a._dayOfYear),a._a[cd]=c.getUTCMonth(),a._a[dd]=c.getUTCDate()),b=0;3>b&&null==a._a[b];++b)a._a[b]=f[b]=d[b];for(;7>b;b++)a._a[b]=f[b]=null==a._a[b]?2===b?1:0:a._a[b];24===a._a[ed]&&0===a._a[fd]&&0===a._a[gd]&&0===a._a[hd]&&(a._nextDay=!0,a._a[ed]=0),a._d=(a._useUTC?da:ca).apply(null,f),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()-a._tzm),a._nextDay&&(a._a[ed]=24)}}function sa(a){var b,c,d,e,f,g,h;b=a._w,null!=b.GG||null!=b.W||null!=b.E?(f=1,g=4,c=pa(b.GG,a._a[bd],ha(Aa(),1,4).year),d=pa(b.W,1),e=pa(b.E,1)):(f=a._locale._week.dow,g=
11409a._locale._week.doy,c=pa(b.gg,a._a[bd],ha(Aa(),f,g).year),d=pa(b.w,1),null!=b.d?(e=b.d,f>e&&++d):e=null!=b.e?b.e+f:f),h=na(c,d,e,g,f),a._a[bd]=h.year,a._dayOfYear=h.dayOfYear}function ta(b){if(b._f===a.ISO_8601)return void aa(b);b._a=[],j(b).empty=!0;var c,d,e,f,g,h=""+b._i,i=h.length,k=0;for(e=K(b._f,b._locale).match(Jc)||[],c=0;c<e.length;c++)f=e[c],d=(h.match(M(f,b))||[])[0],d&&(g=h.substr(0,h.indexOf(d)),g.length>0&&j(b).unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),k+=d.length),Mc[f]?(d?j(b).empty=!1:j(b).unusedTokens.push(f),Q(f,d,b)):b._strict&&!d&&j(b).unusedTokens.push(f);j(b).charsLeftOver=i-k,h.length>0&&j(b).unusedInput.push(h),j(b).bigHour===!0&&b._a[ed]<=12&&b._a[ed]>0&&(j(b).bigHour=void 0),b._a[ed]=ua(b._locale,b._a[ed],b._meridiem),ra(b),Y(b)}function ua(a,b,c){var d;return null==c?b:null!=a.meridiemHour?a.meridiemHour(b,c):null!=a.isPM?(d=a.isPM(c),d&&12>b&&(b+=12),d||12!==b||(b=0),b):b}function va(a){var b,c,d,e,f;if(0===a._f.length)return j(a).invalidFormat=!0,void(a._d=new Date(0/0));for(e=0;e<a._f.length;e++)f=0,b=m({},a),null!=a._useUTC&&(b._useUTC=a._useUTC),b._f=a._f[e],ta(b),k(b)&&(f+=j(b).charsLeftOver,f+=10*j(b).unusedTokens.length,j(b).score=f,(null==d||d>f)&&(d=f,c=b));g(a,c||b)}function wa(a){if(!a._d){var b=A(a._i);a._a=[b.year,b.month,b.day||b.date,b.hour,b.minute,b.second,b.millisecond],ra(a)}}function xa(a){var b,e=a._i,f=a._f;return a._locale=a._locale||x(a._l),null===e||void 0===f&&""===e?l({nullInput:!0}):("string"==typeof e&&(a._i=e=a._locale.preparse(e)),o(e)?new n(Y(e)):(c(f)?va(a):f?ta(a):d(e)?a._d=e:ya(a),b=new n(Y(a)),b._nextDay&&(b.add(1,"d"),b._nextDay=void 0),b))}function ya(b){var f=b._i;void 0===f?b._d=new Date:d(f)?b._d=new Date(+f):"string"==typeof f?ba(b):c(f)?(b._a=e(f.slice(0),function(a){return parseInt(a,10)}),ra(b)):"object"==typeof f?wa(b):"number"==typeof f?b._d=new Date(f):a.createFromInputFallback(b)}function za(a,b,c,d,e){var f={};return"boolean"==typeof c&&(d=c,c=void 0),f._isAMomentObject=!0,f._useUTC=f._isUTC=e,f._l=c,f._i=a,f._f=b,f._strict=d,xa(f)}function Aa(a,b,c,d){return za(a,b,c,d,!1)}function Ba(a,b){var d,e;if(1===b.length&&c(b[0])&&(b=b[0]),!b.length)return Aa();for(d=b[0],e=1;e<b.length;++e)b[e][a](d)&&(d=b[e]);return d}function Ca(){var a=[].slice.call(arguments,0);return Ba("isBefore",a)}function Da(){var a=[].slice.call(arguments,0);return Ba("isAfter",a)}function Ea(a){var b=A(a),c=b.year||0,d=b.quarter||0,e=b.month||0,f=b.week||0,g=b.day||0,h=b.hour||0,i=b.minute||0,j=b.second||0,k=b.millisecond||0;this._milliseconds=+k+1e3*j+6e4*i+36e5*h,this._days=+g+7*f,this._months=+e+3*d+12*c,this._data={},this._locale=x(),this._bubble()}function Fa(a){return a instanceof Ea}function Ga(a,b){G(a,0,0,function(){var a=this.utcOffset(),c="+";return 0>a&&(a=-a,c="-"),c+F(~~(a/60),2)+b+F(~~a%60,2)})}function Ha(a){var b=(a||"").match(Yc)||[],c=b[b.length-1]||[],d=(c+"").match(td)||["-",0,0],e=+(60*d[1])+p(d[2]);return"+"===d[0]?e:-e}function Ia(b,c){var e,f;return c._isUTC?(e=c.clone(),f=(o(b)||d(b)?+b:+Aa(b))-+e,e._d.setTime(+e._d+f),a.updateOffset(e,!1),e):Aa(b).local();return c._isUTC?Aa(b).zone(c._offset||0):Aa(b).local()}function Ja(a){return 15*-Math.round(a._d.getTimezoneOffset()/15)}function Ka(b,c){var d,e=this._offset||0;return null!=b?("string"==typeof b&&(b=Ha(b)),Math.abs(b)<16&&(b=60*b),!this._isUTC&&c&&(d=Ja(this)),this._offset=b,this._isUTC=!0,null!=d&&this.add(d,"m"),e!==b&&(!c||this._changeInProgress?$a(this,Va(b-e,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?e:Ja(this)}function La(a,b){return null!=a?("string"!=typeof a&&(a=-a),this.utcOffset(a,b),this):-this.utcOffset()}function Ma(a){return this.utcOffset(0,a)}function Na(a){return this._isUTC&&(this.utcOffset(0,a),this._isUTC=!1,a&&this.subtract(Ja(this),"m")),this}function Oa(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Ha(this._i)),this}function Pa(a){return a=a?Aa(a).utcOffset():0,(this.utcOffset()-a)%60===0}function Qa(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Ra(){if(this._a){var a=this._isUTC?h(this._a):Aa(this._a);return this.isValid()&&q(this._a,a.toArray())>0}return!1}function Sa(){return!this._isUTC}function Ta(){return this._isUTC}function Ua(){return this._isUTC&&0===this._offset}function Va(a,b){var c,d,e,g=a,h=null;return Fa(a)?g={ms:a._milliseconds,d:a._days,M:a._months}:"number"==typeof a?(g={},b?g[b]=a:g.milliseconds=a):(h=ud.exec(a))?(c="-"===h[1]?-1:1,g={y:0,d:p(h[dd])*c,h:p(h[ed])*c,m:p(h[fd])*c,s:p(h[gd])*c,ms:p(h[hd])*c}):(h=vd.exec(a))?(c="-"===h[1]?-1:1,g={y:Wa(h[2],c),M:Wa(h[3],c),d:Wa(h[4],c),h:Wa(h[5],c),m:Wa(h[6],c),s:Wa(h[7],c),w:Wa(h[8],c)}):null==g?g={}:"object"==typeof g&&("from"in g||"to"in g)&&(e=Ya(Aa(g.from),Aa(g.to)),g={},g.ms=e.milliseconds,g.M=e.months),d=new Ea(g),Fa(a)&&f(a,"_locale")&&(d._locale=a._locale),d}function Wa(a,b){var c=a&&parseFloat(a.replace(",","."));return(isNaN(c)?0:c)*b}function Xa(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,"M").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,"M"),c}function Ya(a,b){var c;return b=Ia(b,a),a.isBefore(b)?c=Xa(a,b):(c=Xa(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c}function Za(a,b){return function(c,d){var e,f;
11409return null===d||isNaN(+d)||(_(b,"moment()."+b+"(period, number) is deprecated. Please use moment()."+b+"(number, period)."),f=c,c=d,d=f),c="string"==typeof c?+c:c,e=Va(c,d),$a(this,e,a),this}}function $a(b,c,d,e){var f=c._milliseconds,g=c._days,h=c._months;e=null==e?!0:e,f&&b._d.setTime(+b._d+f*d),g&&D(b,"Date",C(b,"Date")+g*d),h&&V(b,C(b,"Month")+h*d),e&&a.updateOffset(b,g||h)}function _a(a){var b=a||Aa(),c=Ia(b,this).startOf("day"),d=this.diff(c,"days",!0),e=-6>d?"sameElse":-1>d?"lastWeek":0>d?"lastDay":1>d?"sameDay":2>d?"nextDay":7>d?"nextWeek":"sameElse";return this.format(this.localeData().calendar(e,this,Aa(b)))}function ab(){return new n(this)}function bb(a,b){var c;return b=z("undefined"!=typeof b?b:"millisecond"),"millisecond"===b?(a=o(a)?a:Aa(a),+this>+a):(c=o(a)?+a:+Aa(a),c<+this.clone().startOf(b))}function cb(a,b){var c;return b=z("undefined"!=typeof b?b:"millisecond"),"millisecond"===b?(a=o(a)?a:Aa(a),+a>+this):(c=o(a)?+a:+Aa(a),+this.clone().endOf(b)<c)}function db(a,b,c){return this.isAfter(a,c)&&this.isBefore(b,c)}function eb(a,b){var c;return b=z(b||"millisecond"),"millisecond"===b?(a=o(a)?a:Aa(a),+this===+a):(c=+Aa(a),+this.clone().startOf(b)<=c&&c<=+this.clone().endOf(b))}function fb(a){return 0>a?Math.ceil(a):Math.floor(a)}function gb(a,b,c){var d,e,f=Ia(a,this),g=6e4*(f.utcOffset()-this.utcOffset());return b=z(b),"year"===b||"month"===b||"quarter"===b?(e=hb(this,f),"quarter"===b?e/=3:"year"===b&&(e/=12)):(d=this-f,e="second"===b?d/1e3:"minute"===b?d/6e4:"hour"===b?d/36e5:"day"===b?(d-g)/864e5:"week"===b?(d-g)/6048e5:d),c?e:fb(e)}function hb(a,b){var c,d,e=12*(b.year()-a.year())+(b.month()-a.month()),f=a.clone().add(e,"months");return 0>b-f?(c=a.clone().add(e-1,"months"),d=(b-f)/(f-c)):(c=a.clone().add(e+1,"months"),d=(b-f)/(c-f)),-(e+d)}function ib(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function jb(){var a=this.clone().utc();return 0<a.year()&&a.year()<=9999?"function"==typeof Date.prototype.toISOString?this.toDate().toISOString():J(a,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):J(a,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}function kb(b){var c=J(this,b||a.defaultFormat);return this.localeData().postformat(c)}function lb(a,b){return this.isValid()?Va({to:this,from:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function mb(a){return this.from(Aa(),a)}function nb(a,b){return this.isValid()?Va({from:this,to:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function ob(a){return this.to(Aa(),a)}function pb(a){var b;return void 0===a?this._locale._abbr:(b=x(a),null!=b&&(this._locale=b),this)}function qb(){return this._locale}function rb(a){switch(a=z(a)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===a&&this.weekday(0),"isoWeek"===a&&this.isoWeekday(1),"quarter"===a&&this.month(3*Math.floor(this.month()/3)),this}function sb(a){return a=z(a),void 0===a||"millisecond"===a?this:this.startOf(a).add(1,"isoWeek"===a?"week":a).subtract(1,"ms")}function tb(){return+this._d-6e4*(this._offset||0)}function ub(){return Math.floor(+this/1e3)}function vb(){return this._offset?new Date(+this):this._d}function wb(){var a=this;return[a.year(),a.month(),a.date(),a.hour(),a.minute(),a.second(),a.millisecond()]}function xb(){return k(this)}function yb(){return g({},j(this))}function zb(){return j(this).overflow}function Ab(a,b){G(0,[a,a.length],0,b)}function Bb(a,b,c){return ha(Aa([a,11,31+b-c]),b,c).week}function Cb(a){var b=ha(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==a?b:this.add(a-b,"y")}function Db(a){var b=ha(this,1,4).year;return null==a?b:this.add(a-b,"y")}function Eb(){return Bb(this.year(),1,4)}function Fb(){var a=this.localeData()._week;return Bb(this.year(),a.dow,a.doy)}function Gb(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)}function Hb(a,b){if("string"==typeof a)if(isNaN(a)){if(a=b.weekdaysParse(a),"number"!=typeof a)return null}else a=parseInt(a,10);return a}function Ib(a){return this._weekdays[a.day()]}function Jb(a){return this._weekdaysShort[a.day()]}function Kb(a){return this._weekdaysMin[a.day()]}
11409function Lb(a){var b,c,d;for(this._weekdaysParse||(this._weekdaysParse=[]),b=0;7>b;b++)if(this._weekdaysParse[b]||(c=Aa([2e3,1]).day(b),d="^"+this.weekdays(c,"")+"|^"+this.weekdaysShort(c,"")+"|^"+this.weekdaysMin(c,""),this._weekdaysParse[b]=new RegExp(d.replace(".",""),"i")),this._weekdaysParse[b].test(a))return b}function Mb(a){var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=Hb(a,this.localeData()),this.add(a-b,"d")):b}function Nb(a){var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d")}function Ob(a){return null==a?this.day()||7:this.day(this.day()%7?a:a-7)}function Pb(a,b){G(a,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),b)})}function Qb(a,b){return b._meridiemParse}function Rb(a){return"p"===(a+"").toLowerCase().charAt(0)}function Sb(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"}function Tb(a){G(0,[a,3],0,"millisecond")}function Ub(){return this._isUTC?"UTC":""}function Vb(){return this._isUTC?"Coordinated Universal Time":""}function Wb(a){return Aa(1e3*a)}function Xb(){return Aa.apply(null,arguments).parseZone()}function Yb(a,b,c){var d=this._calendar[a];return"function"==typeof d?d.call(b,c):d}function Zb(a){var b=this._longDateFormat[a];return!b&&this._longDateFormat[a.toUpperCase()]&&(b=this._longDateFormat[a.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a]=b),b}function $b(){return this._invalidDate}function _b(a){return this._ordinal.replace("%d",a)}function ac(a){return a}function bc(a,b,c,d){var e=this._relativeTime[c];return"function"==typeof e?e(a,b,c,d):e.replace(/%d/i,a)}function cc(a,b){var c=this._relativeTime[a>0?"future":"past"];return"function"==typeof c?c(b):c.replace(/%s/i,b)}function dc(a){var b,c;for(c in a)b=a[c],"function"==typeof b?this[c]=b:this["_"+c]=b;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function ec(a,b,c,d){var e=x(),f=h().set(d,b);return e[c](f,a)}function fc(a,b,c,d,e){if("number"==typeof a&&(b=a,a=void 0),a=a||"",null!=b)return ec(a,b,c,e);var f,g=[];for(f=0;d>f;f++)g[f]=ec(a,f,c,e);return g}function gc(a,b){return fc(a,b,"months",12,"month")}function hc(a,b){return fc(a,b,"monthsShort",12,"month")}function ic(a,b){return fc(a,b,"weekdays",7,"day")}function jc(a,b){return fc(a,b,"weekdaysShort",7,"day")}function kc(a,b){return fc(a,b,"weekdaysMin",7,"day")}function lc(){var a=this._data;return this._milliseconds=Rd(this._milliseconds),this._days=Rd(this._days),this._months=Rd(this._months),a.milliseconds=Rd(a.milliseconds),a.seconds=Rd(a.seconds),a.minutes=Rd(a.minutes),a.hours=Rd(a.hours),a.months=Rd(a.months),a.years=Rd(a.years),this}function mc(a,b,c,d){var e=Va(b,c);return a._milliseconds+=d*e._milliseconds,a._days+=d*e._days,a._months+=d*e._months,a._bubble()}function nc(a,b){return mc(this,a,b,1)}function oc(a,b){return mc(this,a,b,-1)}function pc(){var a,b,c,d=this._milliseconds,e=this._days,f=this._months,g=this._data,h=0;return g.milliseconds=d%1e3,a=fb(d/1e3),g.seconds=a%60,b=fb(a/60),g.minutes=b%60,c=fb(b/60),g.hours=c%24,e+=fb(c/24),h=fb(qc(e)),e-=fb(rc(h)),f+=fb(e/30),e%=30,h+=fb(f/12),f%=12,g.days=e,g.months=f,g.years=h,this}function qc(a){return 400*a/146097}function rc(a){return 146097*a/400}function sc(a){var b,c,d=this._milliseconds;if(a=z(a),"month"===a||"year"===a)return b=this._days+d/864e5,c=this._months+12*qc(b),"month"===a?c:c/12;switch(b=this._days+Math.round(rc(this._months/12)),a){case"week":return b/7+d/6048e5;case"day":return b+d/864e5;case"hour":return 24*b+d/36e5;case"minute":return 1440*b+d/6e4;case"second":return 86400*b+d/1e3;case"millisecond":return Math.floor(864e5*b)+d;default:throw new Error("Unknown unit "+a)}}function tc(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*p(this._months/12)}function uc(a){return function(){return this.as(a)}}function vc(a){return a=z(a),this[a+"s"]()}function wc(a){return function(){return this._data[a]}}function xc(){return fb(this.days()/7)}function yc(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function zc(a,b,c){var d=Va(a).abs(),e=fe(d.as("s")),f=fe(d.as("m")),g=fe(d.as("h")),h=fe(d.as("d")),i=fe(d.as("M")),j=fe(d.as("y")),k=e<ge.s&&["s",e]||1===f&&["m"]||f<ge.m&&["mm",f]||1===g&&["h"]||g<ge.h&&["hh",g]||1===h&&["d"]||h<ge.d&&["dd",h]||1===i&&["M"]||i<ge.M&&["MM",i]||1===j&&["y"]||["yy",j];return k[2]=b,k[3]=+a>0,k[4]=c,yc.apply(null,k)}function Ac(a,b){return void 0===ge[a]?!1:void 0===b?ge[a]:(ge[a]=b,!0)}function Bc(a){var b=this.localeData(),c=zc(this,!a,b);return a&&(c=b.pastFuture(+this,c)),b.postformat(c)}function Cc(){var a=he(this.years()),b=he(this.months()),c=he(this.days()),d=he(this.hours()),e=he(this.minutes()),f=he(this.seconds()+this.milliseconds()/1e3),g=this.asSeconds();return g?(0>g?"-":"")+"P"+(a?a+"Y":"")+(b?b+"M":"")+(c?c+"D":"")+(d||e||f?"T":"")+(d?d+"H":"")+(e?e+"M":"")+(f?f+"S":""):"P0D"}var Dc,Ec,Fc=a.momentProperties=[],Gc=!1,Hc={},Ic={},Jc=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}
11409|x|X|zz?|ZZ?|.)/g,Kc=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Lc={},Mc={},Nc=/\d/,Oc=/\d\d/,Pc=/\d{3}/,Qc=/\d{4}/,Rc=/[+-]?\d{6}/,Sc=/\d\d?/,Tc=/\d{1,3}/,Uc=/\d{1,4}/,Vc=/[+-]?\d{1,6}/,Wc=/\d+/,Xc=/[+-]?\d+/,Yc=/Z|[+-]\d\d:?\d\d/gi,Zc=/[+-]?\d+(\.\d{1,3})?/,$c=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,_c={},ad={},bd=0,cd=1,dd=2,ed=3,fd=4,gd=5,hd=6;G("M",["MM",2],"Mo",function(){return this.month()+1}),G("MMM",0,0,function(a){return this.localeData().monthsShort(this,a)}),G("MMMM",0,0,function(a){return this.localeData().months(this,a)}),y("month","M"),L("M",Sc),L("MM",Sc,Oc),L("MMM",$c),L("MMMM",$c),O(["M","MM"],function(a,b){b[cd]=p(a)-1}),O(["MMM","MMMM"],function(a,b,c,d){var e=c._locale.monthsParse(a,d,c._strict);null!=e?b[cd]=e:j(c).invalidMonth=a});var id="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),jd="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),kd={};a.suppressDeprecationWarnings=!1;var ld=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,md=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],nd=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],od=/^\/?Date\((\-?\d+)/i;a.createFromInputFallback=$("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(a){a._d=new Date(a._i+(a._useUTC?" UTC":""))}),G(0,["YY",2],0,function(){return this.year()%100}),G(0,["YYYY",4],0,"year"),G(0,["YYYYY",5],0,"year"),G(0,["YYYYYY",6,!0],0,"year"),y("year","y"),L("Y",Xc),L("YY",Sc,Oc),L("YYYY",Uc,Qc),L("YYYYY",Vc,Rc),L("YYYYYY",Vc,Rc),O(["YYYY","YYYYY","YYYYYY"],bd),O("YY",function(b,c){c[bd]=a.parseTwoDigitYear(b)}),a.parseTwoDigitYear=function(a){return p(a)+(p(a)>68?1900:2e3)};var pd=B("FullYear",!1);G("w",["ww",2],"wo","week"),G("W",["WW",2],"Wo","isoWeek"),y("week","w"),y("isoWeek","W"),L("w",Sc),L("ww",Sc,Oc),L("W",Sc),L("WW",Sc,Oc),P(["w","ww","W","WW"],function(a,b,c,d){b[d.substr(0,1)]=p(a)});var qd={dow:0,doy:6};G("DDD",["DDDD",3],"DDDo","dayOfYear"),y("dayOfYear","DDD"),L("DDD",Tc),L("DDDD",Pc),O(["DDD","DDDD"],function(a,b,c){c._dayOfYear=p(a)}),a.ISO_8601=function(){};var rd=$("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var a=Aa.apply(null,arguments);return this>a?this:a}),sd=$("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var a=Aa.apply(null,arguments);return a>this?this:a});Ga("Z",":"),Ga("ZZ",""),L("Z",Yc),L("ZZ",Yc),O(["Z","ZZ"],function(a,b,c){c._useUTC=!0,c._tzm=Ha(a)});var td=/([\+\-]|\d\d)/gi;a.updateOffset=function(){};var ud=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,vd=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;Va.fn=Ea.prototype;var wd=Za(1,"add"),xd=Za(-1,"subtract");a.defaultFormat="YYYY-MM-DDTHH:mm:ssZ";var yd=$("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(a){return void 0===a?this.localeData():this.locale(a)});G(0,["gg",2],0,function(){return this.weekYear()%100}),G(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Ab("gggg","weekYear"),Ab("ggggg","weekYear"),Ab("GGGG","isoWeekYear"),Ab("GGGGG","isoWeekYear"),y("weekYear","gg"),y("isoWeekYear","GG"),L("G",Xc),L("g",Xc),L("GG",Sc,Oc),L("gg",Sc,Oc),L("GGGG",Uc,Qc),L("gggg",Uc,Qc),L("GGGGG",Vc,Rc),L("ggggg",Vc,Rc),P(["gggg","ggggg","GGGG","GGGGG"],function(a,b,c,d){b[d.substr(0,2)]=p(a)}),P(["gg","GG"],function(b,c,d,e){c[e]=a.parseTwoDigitYear(b)}),G("Q",0,0,"quarter"),y("quarter","Q"),L("Q",Nc),O("Q",function(a,b){b[cd]=3*(p(a)-1)}),G("D",["DD",2],"Do","date"),y("date","D"),L("D",Sc),L("DD",Sc,Oc),L("Do",function(a,b){return a?b._ordinalParse:b._ordinalParseLenient}),O(["D","DD"],dd),O("Do",function(a,b){b[dd]=p(a.match(Sc)[0],10)});var zd=B("Date",!0);G("d",0,"do","day"),G("dd",0,0,function(a){return this.localeData().weekdaysMin(this,a)}),G("ddd",0,0,function(a){return this.localeData().weekdaysShort(this,a)}),G("dddd",0,0,function(a){return this.localeData().weekdays(this,a)}),G("e",0,0,"weekday"),G("E",0,0,"isoWeekday"),y("day","d"),y("weekday","e"),y("isoWeekday","E"),L("d",Sc),L("e",Sc),L("E",Sc),L("dd",$c),L("ddd",$c),L("dddd",$c),P(["dd","ddd","dddd"],function(a,b,c){var d=c._locale.weekdaysParse(a);null!=d?b.d=d:j(c).invalidWeekday=a}),P(["d","e","E"],function(a,b,c,d){b[d]=p(a)});var Ad="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Bd="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Cd="Su_Mo_Tu_We_Th_Fr_Sa".split("_");G("H",["HH",2],0,"hour"),G("h",["hh",2],0,function(){return this.hours()%12||12}),Pb("a",!0),Pb("A",!1),y("hour","h"),L("a",Qb),L("A",Qb),L("H",Sc),L("h",Sc),L("HH",Sc,Oc),L("hh",Sc,Oc),O(["H","HH"],ed),O(["a","A"],function(a,b,c){c._isPm=c._locale.isPM(a),c._meridiem=a}),O(["h","hh"],function(a,b,c){b[ed]=p(a),j(c).bigHour=!0});var Dd=/[ap]\.?m?\.?/i,Ed=B("Hours",!0);G("m",["mm",2],0,"minute"),y("minute","m"),L("m",Sc),L("mm",Sc,Oc),O(["m","mm"],fd);var Fd=B("Minutes",!1);G("s",["ss",2],0,"second"),y("second","s"),L("s",Sc),L("ss",Sc,Oc),O(["s","ss"],gd);var Gd=B("Seconds",!1);G("S",0,0,function(){return~~(this.millisecond()/100)}),G(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),Tb("SSS"),Tb("SSSS"),y("millisecond","ms"),L("S",Tc,Nc),L("SS",Tc,Oc),L("SSS",Tc,Pc),L("SSSS",Wc),O(["S","SS","SSS","SSSS"],function(a,b){b[hd]=p(1e3*("0."+a))});var Hd=B("Milliseconds",!1);G("z",0,0,"zoneAbbr"),G("zz",0,0,"zoneName");var Id=n.prototype;Id.add=wd,Id.calendar=_a,Id.clone=ab,Id.diff=gb,Id.endOf=sb,Id.format=kb,Id.from=lb,Id.fromNow=mb,Id.to=nb,Id.toNow=ob,Id.get=E,Id.invalidAt=zb,Id.isAfter=bb,Id.isBefore=cb,Id.isBetween=db,Id.isSame=eb,Id.isValid=xb,Id.lang=yd,Id.locale=pb,Id.localeData=qb,Id.max=sd,Id.min=rd,Id.parsingFlags=yb,Id.set=E,Id.startOf=rb,Id.subtract=
11409xd,Id.toArray=wb,Id.toDate=vb,Id.toISOString=jb,Id.toJSON=jb,Id.toString=ib,Id.unix=ub,Id.valueOf=tb,Id.year=pd,Id.isLeapYear=ga,Id.weekYear=Cb,Id.isoWeekYear=Db,Id.quarter=Id.quarters=Gb,Id.month=W,Id.daysInMonth=X,Id.week=Id.weeks=la,Id.isoWeek=Id.isoWeeks=ma,Id.weeksInYear=Fb,Id.isoWeeksInYear=Eb,Id.date=zd,Id.day=Id.days=Mb,Id.weekday=Nb,Id.isoWeekday=Ob,Id.dayOfYear=oa,Id.hour=Id.hours=Ed,Id.minute=Id.minutes=Fd,Id.second=Id.seconds=Gd,Id.millisecond=Id.milliseconds=Hd,Id.utcOffset=Ka,Id.utc=Ma,Id.local=Na,Id.parseZone=Oa,Id.hasAlignedHourOffset=Pa,Id.isDST=Qa,Id.isDSTShifted=Ra,Id.isLocal=Sa,Id.isUtcOffset=Ta,Id.isUtc=Ua,Id.isUTC=Ua,Id.zoneAbbr=Ub,Id.zoneName=Vb,Id.dates=$("dates accessor is deprecated. Use date instead.",zd),Id.months=$("months accessor is deprecated. Use month instead",W),Id.years=$("years accessor is deprecated. Use year instead",pd),Id.zone=$("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",La);var Jd=Id,Kd={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},Ld={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},Md="Invalid date",Nd="%d",Od=/\d{1,2}/,Pd={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour", 11410hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},Qd=r.prototype;Qd._calendar=Kd,Qd.calendar=Yb,Qd._longDateFormat=Ld,Qd.longDateFormat=Zb,Qd._invalidDate=Md,Qd.invalidDate=$b,Qd._ordinal=Nd,Qd.ordinal=_b,Qd._ordinalParse=Od,Qd.preparse=ac,Qd.postformat=ac,Qd._relativeTime=Pd,Qd.relativeTime=bc,Qd.pastFuture=cc,Qd.set=dc,Qd.months=S,Qd._months=id,Qd.monthsShort=T,Qd._monthsShort=jd,Qd.monthsParse=U,Qd.week=ia,Qd._week=qd,Qd.firstDayOfYear=ka,Qd.firstDayOfWeek=ja,Qd.weekdays=Ib,Qd._weekdays=Ad,Qd.weekdaysMin=Kb,Qd._weekdaysMin=Cd,Qd.weekdaysShort=Jb,Qd._weekdaysShort=Bd,Qd.weekdaysParse=Lb,Qd.isPM=Rb,Qd._meridiemParse=Dd,Qd.meridiem=Sb,v("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===p(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),a.lang=$("moment.lang is deprecated. Use moment.locale instead.",v),a.langData=$("moment.langData is deprecated. Use moment.localeData instead.",x);var Rd=Math.abs,Sd=uc("ms"),Td=uc("s"),Ud=uc("m"),Vd=uc("h"),Wd=uc("d"),Xd=uc("w"),Yd=uc("M"),Zd=uc("y"),$d=wc("milliseconds"),_d=wc("seconds"),ae=wc("minutes"),be=wc("hours"),ce=wc("days"),de=wc("months"),ee=wc("years"),fe=Math.round,ge={s:45,m:45,h:22,d:26,M:11},he=Math.abs,ie=Ea.prototype;ie.abs=lc,ie.add=nc,ie.subtract=oc,ie.as=sc,ie.asMilliseconds=Sd,ie.asSeconds=Td,ie.asMinutes=Ud,ie.asHours=Vd,ie.asDays=Wd,ie.asWeeks=Xd,ie.asMonths=Yd,ie.asYears=Zd,ie.valueOf=tc,ie._bubble=pc,ie.get=vc,ie.milliseconds=$d,ie.seconds=_d,ie.minutes=ae,ie.hours=be,ie.days=ce,ie.weeks=xc,ie.months=de,ie.years=ee,ie.humanize=Bc,ie.toISOString=Cc,ie.toString=Cc,ie.toJSON=Cc,ie.locale=pb,ie.localeData=qb,ie.toIsoString=$("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Cc),ie.lang=yd,G("X",0,0,"unix"),G("x",0,0,"valueOf"),L("x",Xc),L("X",Zc),O("X",function(a,b,c){c._d=new Date(1e3*parseFloat(a,10))}),O("x",function(a,b,c){c._d=new Date(p(a))}),a.version="2.10.3",b(Aa),a.fn=Jd,a.min=Ca,a.max=Da,a.utc=h,a.unix=Wb,a.months=gc,a.isDate=d,a.locale=v,a.invalid=l,a.duration=Va,a.isMoment=o,a.weekdays=ic,a.parseZone=Xb,a.localeData=x,a.isDuration=Fa,a.monthsShort=hc,a.weekdaysMin=kc,a.defineLocale=w,a.weekdaysShort=jc,a.normalizeUnits=z,a.relativeTimeThreshold=Ac;var je=a;return je}); 11411/* End */ 11412; 11413; /* Start:"a:4:{s:4:"full";s:70:"/local/templates/aspro_max/vendor/js/sticky-sidebar.js?165235583825483";s:6:"source";s:54:"/local/templates/aspro_max/vendor/js/sticky-sidebar.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 11414(function (global, factory) { 11415 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : 11416 typeof define === 'function' && define.amd ? define(['exports'], factory) : 11417 (factory((global.StickySidebar = {}))); 11418}(this, (function (exports) { 'use strict'; 11419 11420var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; 11421 11422 11423 11424function unwrapExports (x) { 11425 return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; 11426} 11427 11428function createCommonjsModule(fn, module) { 11429 return module = { exports: {} }, fn(module, module.exports), module.exports; 11430} 11431 11432var stickySidebar = createCommonjsModule(function (module, exports
11432) { 11433(function (global, factory) { 11434 if (typeof undefined === "function" && undefined.amd) { 11435 undefined(['exports'], factory); 11436 } else { 11437 factory(exports); 11438 } 11439})(commonjsGlobal, function (exports) { 11440 Object.defineProperty(exports, "__esModule", { 11441 value: true 11442 }); 11443 11444 function _classCallCheck(instance, Constructor) { 11445 if (!(instance instanceof Constructor)) { 11446 throw new TypeError("Cannot call a class as a function"); 11447 } 11448 } 11449 11450 var _createClass = function () { 11451 function defineProperties(target, props) { 11452 for (var i = 0; i < props.length; i++) { 11453 var descriptor = props[i]; 11454 descriptor.enumerable = descriptor.enumerable || false; 11455 descriptor.configurable = true; 11456 if ("value" in descriptor) descriptor.writable = true; 11457 Object.defineProperty(target, descriptor.key, descriptor); 11458 } 11459 } 11460 11461 return function (Constructor, protoProps, staticProps) { 11462 if (protoProps) defineProperties(Constructor.prototype, protoProps); 11463 if (staticProps) defineProperties(Constructor, staticProps); 11464 return Constructor; 11465 }; 11466 }(); 11467 11468 /** 11469 * Sticky Sidebar JavaScript Plugin. 11470 * @version 3.3.4 11471 * @author Ahmed Bouhuolia <[email protected]> 11472 * @license The MIT License (MIT) 11473 */ 11474 var StickySidebar = function () { 11475 11476 // --------------------------------- 11477 // # Define Constants 11478 // --------------------------------- 11479 // 11480 var EVENT_KEY = '.stickySidebar'; 11481 var DEFAULTS = { 11482 /** 11483 * Additional top spacing of the element when it becomes sticky. 11484 * @type {Numeric|Function} 11485 */ 11486 topSpacing: 0, 11487 11488 /** 11489 * Additional bottom spacing of the element when it becomes sticky. 11490 * @type {Numeric|Function} 11491 */ 11492 bottomSpacing: 0, 11493 11494 /** 11495 * Container sidebar selector to know what the beginning and end of sticky element. 11496 * @type {String|False} 11497 */ 11498 containerSelector: false, 11499 11500 /** 11501 * Inner wrapper selector. 11502 * @type {String} 11503 */ 11504 innerWrapperSelector: '.inner-wrapper-sticky', 11505 11506 /** 11507 * The name of CSS class to apply to elements when they have become stuck. 11508 * @type {String|False} 11509 */ 11510 stickyClass: 'is-affixed', 11511 11512 /** 11513 * Detect when sidebar and its container change height so re-calculate their dimensions. 11514 * @type {Boolean} 11515 */ 11516 resizeSensor: true, 11517 11518 /** 11519 * The sidebar returns to its normal position if its width below this value. 11520 * @type {Numeric} 11521 */ 11522 minWidth: false 11523 }; 11524 11525 // --------------------------------- 11526 // # Class Definition 11527 // --------------------------------- 11528 // 11529 /** 11530 * Sticky Sidebar Class. 11531 * @public 11532 */ 11533 11534 var StickySidebar = function () { 11535 11536 /** 11537 * Sticky Sidebar Constructor. 11538 * @constructor 11539 * @param {HTMLElement|String} sidebar - The sidebar element or sidebar selector. 11540 * @param {Object} options - The options of sticky sidebar. 11541 */ 11542 function StickySidebar(sidebar) { 11543 var _this = this; 11544 11545 var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 11546 11547 _classCallCheck(this, StickySidebar); 11548 11549 this.options = StickySidebar.extend(DEFAULTS, options); 11550 11551 // Sidebar element query if there's no one, throw error. 11552 this.sidebar = 'string' === typeof sidebar ? document.querySelector(sidebar) : sidebar; 11553 if ('undefined' === typeof this.sidebar) throw new Error("There is no specific sidebar element."); 11554 11555 this.sidebarInner = false; 11556 this.container = this.sidebar.parentElement; 11557 11558 // Current Affix Type of sidebar element. 11559 this.affixedType = 'STATIC'; 11560 this.direction = 'down'; 11561 this.support = { 11562 transform: false, 11563 transform3d: false 11564 }; 11565 11566 this._initialized = false; 11567 this._reStyle = false; 11568 this._breakpoint = false; 11569 11570 // Dimensions of sidebar, container and screen viewport. 11571 this.dimensions = { 11572 translateY: 0, 11573 maxTranslateY: 0, 11574 topSpacing: 0, 11575 lastTopSpacing: 0, 11576 bottomSpacing: 0, 11577 lastBottomSpacing: 0, 11578 sidebarHeight: 0, 11579 sidebarWidth: 0, 11580 containerTop: 0, 11581 containerHeight: 0,
vendor: 1,666 bytes, lines 11582-11629
11582 viewportHeight: 0, 11583 viewportTop: 0, 11584 lastViewportTop: 0 11585 }; 11586 11587 // Bind event handlers for referencability. 11588 ['handleEvent'].forEach(function (method) { 11589 _this[method] = _this[method].bind(_this); 11590 }); 11591 11592 // Initialize sticky sidebar for first time. 11593 this.initialize(); 11594 } 11595 11596 /** 11597 * Initializes the sticky sidebar by adding inner wrapper, define its container, 11598 * min-width breakpoint, calculating dimensions, adding helper classes and inline style. 11599 * @private 11600 */ 11601 11602 11603 _createClass(StickySidebar, [{ 11604 key: 'initialize', 11605 value: function initialize() { 11606 var _this2 = this; 11607 11608 this._setSupportFeatures(); 11609 11610 // Get sticky sidebar inner wrapper, if not found, will create one. 11611 if (this.options.innerWrapperSelector) { 11612 this.sidebarInner = this.sidebar.querySelector(this.options.innerWrapperSelector); 11613 11614 if (null === this.sidebarInner) this.sidebarInner = false; 11615 } 11616 11617 if (!this.sidebarInner) { 11618 var wrapper = document.createElement('div'); 11619 wrapper.setAttribute('class', 'inner-wrapper-sticky'); 11620 this.sidebar.appendChild(wrapper); 11621 11622 while (this.sidebar.firstChild != wrapper) { 11623 wrapper.appendChild(this.sidebar.firstChild); 11624 }this.sidebarInner = this.sidebar.querySelector('.inner-wrapper-sticky'); 11625 } 11626 11627 // Container wrapper of the sidebar. 11628 if (this.options.containerSelector) { 11629 var containers = document.querySelectorAll(this.options.containerSelector);
11630 containers = Array.prototype.slice.call(containers); 11631 11632 containers.forEach(function (container, item) { 11633 if (!container.contains(_this2.sidebar)) return; 11634 _this2.container = container; 11635 }); 11636 11637 if (!containers.length) throw new Error("The container does not contains on the sidebar."); 11638 } 11639 11640 // If top/bottom spacing is not function parse value to integer. 11641 if ('function' !== typeof this.options.topSpacing) this.options.topSpacing = parseInt(this.options.topSpacing) || 0; 11642 11643 if ('function' !== typeof this.options.bottomSpacing) this.options.bottomSpacing = parseInt(this.options.bottomSpacing) || 0; 11644 11645 // Breakdown sticky sidebar if screen width below `options.minWidth`. 11646 this._widthBreakpoint(); 11647 11648 // Calculate dimensions of sidebar, container and viewport. 11649 this.calcDimensions(); 11650 11651 // Affix sidebar in proper position. 11652 this.stickyPosition(); 11653 11654 // Bind all events. 11655 this.bindEvents(); 11656
vendor: 4,110 bytes, lines 11657-11754
11657 // Inform other properties the sticky sidebar is initialized. 11658 this._initialized = true; 11659 } 11660 }, { 11661 key: 'bindEvents', 11662 value: function bindEvents() { 11663 window.addEventListener('resize', this, { passive: true, capture: false }); 11664 window.addEventListener('scroll', this, { passive: true, capture: false }); 11665 11666 this.sidebar.addEventListener('update' + EVENT_KEY, this); 11667 11668 if (this.options.resizeSensor && 'undefined' !== typeof ResizeSensor) { 11669 new ResizeSensor(this.sidebarInner, this.handleEvent); 11670 new ResizeSensor(this.container, this.handleEvent); 11671 } 11672 } 11673 }, { 11674 key: 'handleEvent', 11675 value: function handleEvent(event) { 11676 this.updateSticky(event); 11677 } 11678 }, { 11679 key: 'calcDimensions', 11680 value: function calcDimensions() { 11681 if (this._breakpoint) return; 11682 var dims = this.dimensions; 11683 11684 // Container of sticky sidebar dimensions. 11685 dims.containerTop = StickySidebar.offsetRelative(this.container).top; 11686 dims.containerHeight = this.container.clientHeight; 11687 dims.containerBottom = dims.containerTop + dims.containerHeight; 11688 11689 // Sidebar dimensions. 11690 dims.sidebarHeight = this.sidebarInner.offsetHeight; 11691 dims.sidebarWidth = this.sidebarInner.offsetWidth; 11692 11693 // Screen viewport dimensions. 11694 dims.viewportHeight = window.innerHeight; 11695 11696 // Maximum sidebar translate Y. 11697 dims.maxTranslateY = dims.containerHeight - dims.sidebarHeight; 11698 11699 this._calcDimensionsWithScroll(); 11700 } 11701 }, { 11702 key: '_calcDimensionsWithScroll', 11703 value: function _calcDimensionsWithScroll() { 11704 var dims = this.dimensions; 11705 11706 dims.sidebarLeft = StickySidebar.offsetRelative(this.sidebar).left; 11707 11708 dims.viewportTop = document.documentElement.scrollTop || document.body.scrollTop; 11709 dims.viewportBottom = dims.viewportTop + dims.viewportHeight; 11710 dims.viewportLeft = document.documentElement.scrollLeft || document.body.scrollLeft; 11711 11712 dims.topSpacing = this.options.topSpacing; 11713 dims.bottomSpacing = this.options.bottomSpacing; 11714 11715 if ('function' === typeof dims.topSpacing) dims.topSpacing = parseInt(dims.topSpacing(this.sidebar)) || 0; 11716 11717 if ('function' === typeof dims.bottomSpacing) dims.bottomSpacing = parseInt(dims.bottomSpacing(this.sidebar)) || 0; 11718 11719 if ('VIEWPORT-TOP' === this.affixedType) { 11720 // Adjust translate Y in the case decrease top spacing value. 11721 if (dims.topSpacing < dims.lastTopSpacing) { 11722 dims.translateY += dims.lastTopSpacing - dims.topSpacing; 11723 this._reStyle = true; 11724 } 11725 } else if ('VIEWPORT-BOTTOM' === this.affixedType) { 11726 // Adjust translate Y in the case decrease bottom spacing value. 11727 if (dims.bottomSpacing < dims.lastBottomSpacing) { 11728 dims.translateY += dims.lastBottomSpacing - dims.bottomSpacing; 11729 this._reStyle = true; 11730 } 11731 } 11732 11733 dims.lastTopSpacing = dims.topSpacing; 11734 dims.lastBottomSpacing = dims.bottomSpacing; 11735 } 11736 }, { 11737 key: 'isSidebarFitsViewport', 11738 value: function isSidebarFitsViewport() { 11739 var dims = this.dimensions; 11740 var offset = this.scrollDirection === 'down' ? dims.lastBottomSpacing : dims.lastTopSpacing; 11741 return this.dimensions.sidebarHeight + offset < this.dimensions.viewportHeight; 11742 } 11743 }, { 11744 key: 'observeScrollDir', 11745 value: function observeScrollDir() { 11746 var dims = this.dimensions; 11747 if (dims.lastViewportTop === dims.viewportTop) return; 11748 11749 var furthest = 'down' === this.direction ? Math.min : Math.max; 11750 11751 // If the browser is scrolling not in the same direction. 11752 if (dims.viewportTop === furthest(dims.viewportTop, dims.lastViewportTop)) this.direction = 'down' === this.direction ? 'up' : 'down'; 11753 } 11754 }, {
vendor: 5,308 bytes, lines 11755-11883
11755 key: 'getAffixType', 11756 value: function getAffixType() { 11757 this._calcDimensionsWithScroll(); 11758 var dims = this.dimensions; 11759 var colliderTop = dims.viewportTop + dims.topSpacing; 11760 var affixType = this.affixedType; 11761 11762 11763 11764 if (colliderTop <= dims.containerTop || dims.containerHeight < dims.sidebarHeight) { 11765 dims.translateY = 0; 11766 affixType = 'STATIC'; 11767 } else { 11768 affixType = 'up' === this.direction ? this._getAffixTypeScrollingUp() : this._getAffixTypeScrollingDown(); 11769 } 11770 11771 // Make sure the translate Y is not bigger than container height. 11772 dims.translateY = Math.max(0, dims.translateY); 11773 dims.translateY = Math.min(dims.containerHeight, dims.translateY); 11774 dims.translateY = Math.round(dims.translateY); 11775 11776 dims.lastViewportTop = dims.viewportTop; 11777 return affixType; 11778 } 11779 }, { 11780 key: '_getAffixTypeScrollingDown', 11781 value: function _getAffixTypeScrollingDown() { 11782 var dims = this.dimensions; 11783 var sidebarBottom = dims.sidebarHeight + dims.containerTop; 11784 var colliderTop = dims.viewportTop + dims.topSpacing; 11785 var colliderBottom = dims.viewportBottom - dims.bottomSpacing; 11786 var affixType = this.affixedType; 11787 11788 if (this.isSidebarFitsViewport()) { 11789 if (dims.sidebarHeight + colliderTop >= dims.containerBottom) { 11790 dims.translateY = dims.containerBottom - sidebarBottom; 11791 affixType = 'CONTAINER-BOTTOM'; 11792 } else if (colliderTop >= dims.containerTop) { 11793 dims.translateY = colliderTop - dims.containerTop; 11794 affixType = 'VIEWPORT-TOP'; 11795 } 11796 } else { 11797 if (dims.containerBottom <= colliderBottom) { 11798 dims.translateY = dims.containerBottom - sidebarBottom; 11799 affixType = 'CONTAINER-BOTTOM'; 11800 } else if (sidebarBottom + dims.translateY <= colliderBottom) { 11801 dims.translateY = colliderBottom - sidebarBottom; 11802 affixType = 'VIEWPORT-BOTTOM'; 11803 } else if (dims.containerTop + dims.translateY <= colliderTop && 0 !== dims.translateY && dims.maxTranslateY !== dims.translateY) { 11804 affixType = 'VIEWPORT-UNBOTTOM'; 11805 } 11806 } 11807 11808 return affixType; 11809 } 11810 }, { 11811 key: '_getAffixTypeScrollingUp', 11812 value: function _getAffixTypeScrollingUp() { 11813 var dims = this.dimensions; 11814 var sidebarBottom = dims.sidebarHeight + dims.containerTop; 11815 var colliderTop = dims.viewportTop + dims.topSpacing; 11816 var colliderBottom = dims.viewportBottom - dims.bottomSpacing; 11817 var affixType = this.affixedType; 11818 11819 if (colliderTop <= dims.translateY + dims.containerTop) { 11820 dims.translateY = colliderTop - dims.containerTop; 11821 affixType = 'VIEWPORT-TOP'; 11822 } else if (dims.containerBottom <= colliderBottom) { 11823 dims.translateY = dims.containerBottom - sidebarBottom; 11824 affixType = 'CONTAINER-BOTTOM'; 11825 } else if (!this.isSidebarFitsViewport()) { 11826 11827 if (dims.containerTop <= colliderTop && 0 !== dims.translateY && dims.maxTranslateY !== dims.translateY) { 11828 affixType = 'VIEWPORT-UNBOTTOM'; 11829 } 11830 } 11831 11832 return affixType; 11833 } 11834 }, { 11835 key: '_getStyle', 11836 value: function _getStyle(affixType) { 11837 if ('undefined' === typeof affixType) return; 11838 11839 var style = { inner: {}, outer: {} }; 11840 var dims = this.dimensions; 11841 11842 switch (affixType) { 11843 case 'VIEWPORT-TOP': 11844 style.inner = { position: 'fixed', top: dims.topSpacing, 11845 left: dims.sidebarLeft - dims.viewportLeft, width: dims.sidebarWidth }; 11846 break; 11847 case 'VIEWPORT-BOTTOM': 11848 style.inner = { position: 'fixed', top: 'auto', left: dims.sidebarLeft, 11849 bottom: dims.bottomSpacing, width: dims.sidebarWidth }; 11850 break; 11851 case 'CONTAINER-BOTTOM': 11852 case 'VIEWPORT-UNBOTTOM': 11853 var translate = this._getTranslate(0, dims.translateY + 'px'); 11854 11855 if (translate) style.inner = { transform: translate };else style.inner = { position: 'absolute', top: dims.translateY, width: dims.sidebarWidth }; 11856 break; 11857 } 11858 11859 switch (affixType) { 11860 case 'VIEWPORT-TOP': 11861 case 'VIEWPORT-BOTTOM': 11862 case 'VIEWPORT-UNBOTTOM': 11863 case 'CONTAINER-BOTTOM': 11864 style.outer = { height: dims.sidebarHeight, position: 'relative' }; 11865 break; 11866 } 11867 11868 style.outer = StickySidebar.extend({ height: '', position: '' }, style.outer); 11869 style.inner = StickySidebar.extend({ position: 'relative', top: '', left: '', 11870 bottom: '', width: '', transform: '' }, style.inner); 11871 11872 return style; 11873 } 11874 }, { 11875 key: 'stickyPosition', 11876 value: function stickyPosition(force) { 11877 if (this._breakpoint) return; 11878 11879 force = this._reStyle || force || false; 11880 11881 var offsetTop = this.options.topSpacing; 11882 var offsetBottom = this.options.bottomSpacing; 11883
vendor: 5,484 bytes, lines 11884-12015
11884 var affixType = this.getAffixType(); 11885 var style = this._getStyle(affixType); 11886 11887 if ((this.affixedType != affixType || force) && affixType) { 11888 var affixEvent = 'affix.' + affixType.toLowerCase().replace('viewport-', '') + EVENT_KEY; 11889 StickySidebar.eventTrigger(this.sidebar, affixEvent); 11890 11891 if ('STATIC' === affixType) StickySidebar.removeClass(this.sidebar, this.options.stickyClass);else StickySidebar.addClass(this.sidebar, this.options.stickyClass); 11892 11893 for (var key in style.outer) { 11894 var unit = 'number' === typeof style.outer[key] ? 'px' : ''; 11895 this.sidebar.style[key] = style.outer[key] + unit; 11896 } 11897 11898 for (var _key in style.inner) { 11899 var _unit = 'number' === typeof style.inner[_key] ? 'px' : ''; 11900 this.sidebarInner.style[_key] = style.inner[_key] + _unit; 11901 } 11902 11903 var affixedEvent = 'affixed.' + affixType.toLowerCase().replace('viewport-', '') + EVENT_KEY; 11904 StickySidebar.eventTrigger(this.sidebar, affixedEvent); 11905 } else { 11906 if (this._initialized) this.sidebarInner.style.left = style.inner.left; 11907 } 11908 11909 this.affixedType = affixType; 11910 } 11911 }, { 11912 key: '_widthBreakpoint', 11913 value: function _widthBreakpoint() { 11914 11915 if (window.innerWidth <= this.options.minWidth) { 11916 this._breakpoint = true; 11917 this.affixedType = 'STATIC'; 11918 11919 this.sidebar.removeAttribute('style'); 11920 StickySidebar.removeClass(this.sidebar, this.options.stickyClass); 11921 this.sidebarInner.removeAttribute('style'); 11922 } else { 11923 this._breakpoint = false; 11924 } 11925 } 11926 }, { 11927 key: 'updateSticky', 11928 value: function updateSticky() { 11929 var _this3 = this; 11930 11931 var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 11932 11933 if (this._running) return; 11934 this._running = true; 11935 11936 (function (eventType) { 11937 requestAnimationFrame(function () { 11938 switch (eventType) { 11939 // When browser is scrolling and re-calculate just dimensions 11940 // within scroll. 11941 case 'scroll': 11942 _this3._calcDimensionsWithScroll(); 11943 _this3.observeScrollDir(); 11944 _this3.stickyPosition(); 11945 break; 11946 11947 // When browser is resizing or there's no event, observe width 11948 // breakpoint and re-calculate dimensions. 11949 case 'resize': 11950 default: 11951 _this3._widthBreakpoint(); 11952 _this3.calcDimensions(); 11953 _this3.stickyPosition(true); 11954 break; 11955 } 11956 _this3._running = false; 11957 }); 11958 })(event.type); 11959 } 11960 }, { 11961 key: '_setSupportFeatures', 11962 value: function _setSupportFeatures() { 11963 var support = this.support; 11964 11965 support.transform = StickySidebar.supportTransform(); 11966 support.transform3d = StickySidebar.supportTransform(true); 11967 } 11968 }, { 11969 key: '_getTranslate', 11970 value: function _getTranslate() { 11971 var y = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; 11972 var x = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; 11973 var z = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; 11974 11975 if (this.support.transform3d) return 'translate3d(' + y + ', ' + x + ', ' + z + ')';else if (this.support.translate) return 'translate(' + y + ', ' + x + ')';else return false; 11976 } 11977 }, { 11978 key: 'destroy', 11979 value: function destroy() { 11980 window.removeEventListener('resize', this, { capture: false }); 11981 window.removeEventListener('scroll', this, { capture: false }); 11982 11983 this.sidebar.classList.remove(this.options.stickyClass); 11984 this.sidebar.style.minHeight = ''; 11985 11986 this.sidebar.removeEventListener('update' + EVENT_KEY, this); 11987 11988 var styleReset = { inner: {}, outer: {} }; 11989 11990 styleReset.inner = { position: '', top: '', left: '', bottom: '', width: '', transform: '' }; 11991 styleReset.outer = { height: '', position: '' }; 11992 11993 for (var key in styleReset.outer) { 11994 this.sidebar.style[key] = styleReset.outer[key]; 11995 }for (var _key2 in styleReset.inner) { 11996 this.sidebarInner.style[_key2] = styleReset.inner[_key2]; 11997 }if (this.options.resizeSensor && 'undefined' !== typeof ResizeSensor) { 11998 ResizeSensor.detach(this.sidebarInner, this.handleEvent); 11999 ResizeSensor.detach(this.container, this.handleEvent); 12000 } 12001 } 12002 }], [{ 12003 key: 'supportTransform', 12004 value: function supportTransform(transform3d) { 12005 var result = false, 12006 property = transform3d ? 'perspective' : 'transform', 12007 upper = property.charAt(0).toUpperCase() + property.slice(1), 12008 prefixes = ['Webkit', 'Moz', 'O', 'ms'], 12009 support = document.createElement('support'), 12010 style = support.style; 12011 12012 (property + ' ' + prefixes.join(upper + ' ') + upper).split(' ').forEach(function (property, i) { 12013 if (style[property] !== undefined) { 12014 result = property; 12015 return false;
12016 } 12017 }); 12018 return result; 12019 } 12020 }, { 12021 key: 'eventTrigger', 12022 value: function eventTrigger(element, eventName, data) { 12023 try { 12024 var event = new CustomEvent(eventName, { detail: data }); 12025 } catch (e) { 12026 var event = document.createEvent('CustomEvent'); 12027 event.initCustomEvent(eventName, true, true, data); 12028 } 12029 element.dispatchEvent(event); 12030 } 12031 }, { 12032 key: 'extend', 12033 value: function extend(defaults, options) { 12034 var results = {}; 12035 for (var key in defaults) { 12036 if ('undefined' !== typeof options[key]) results[key] = options[key];else results[key] = defaults[key]; 12037 } 12038 return results; 12039 } 12040 }, { 12041 key: 'offsetRelative', 12042 value: function offsetRelative(element) { 12043 var result = { left: 0, top: 0 }; 12044 12045 do { 12046 var offsetTop = element.offsetTop; 12047 var offsetLeft = element.offsetLeft; 12048 12049 if (!isNaN(offsetTop)) result.top += offsetTop; 12050 12051 if (!isNaN(offsetLeft)) result.left += offsetLeft; 12052 12053 element = 'BODY' === element.tagName ? element.parentElement : element.offsetParent; 12054 } while (element); 12055 return result; 12056 } 12057 }, { 12058 key: 'addClass', 12059 value: function addClass(element, className) { 12060 if (!StickySidebar.hasClass(element, className)) { 12061 if (element.classList) element.classList.add(className);else element.className += ' ' + className; 12062 } 12063 } 12064 }, { 12065 key: 'removeClass', 12066 value: function removeClass(element, className) { 12067 if (StickySidebar.hasClass(element, className)) { 12068 if (element.classList) element.classList.remove(className);else element.className = element.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' '); 12069 } 12070 } 12071 }, { 12072 key: 'hasClass', 12073 value: function hasClass(element, className) { 12074 if (element.classList) return element.classList.contains(className);else return new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className); 12075 } 12076 }, { 12077 key: 'defaults', 12078 get: function () { 12079 return DEFAULTS; 12080 } 12081 }]); 12082 12083 return StickySidebar; 12084 }(); 12085 12086 return StickySidebar; 12087 }(); 12088 12089 exports.default = StickySidebar; 12090 12091 12092 // Global 12093 // ------------------------- 12094 window.StickySidebar = StickySidebar; 12095}); 12096}); 12097 12098var stickySidebar$1 = unwrapExports(stickySidebar); 12099 12100exports['default'] = stickySidebar$1; 12101exports.__moduleExports = stickySidebar; 12102 12103Object.defineProperty(exports, '__esModule', { value: true }); 12104 12105}))); 12106/* End */ 12107; 12108; /* Start:"a:4:{s:4:"full";s:68:"/local/templates/aspro_max/js/jquery.validate.min.js?165235572422254";s:6:"source";s:52:"/local/templates/aspro_max/js/jquery.validate.min.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 12109/*! jQuery Validation Plugin - v1.13.1 - 10/14/2014 12110 * http://jqueryvalidation.org/ 12111 * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ 12112!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a(jQuery)}(function(a){a.extend(a.fn,{validate:function(b){if(!this.length)return void(b&&b.debug&&window.console&&console.warn("Nothing selected, can't validate, returning nothing."));var c=a.data(this[0],"validator");return c?c:(this.attr("novalidate","novalidate"),c=new a.validator(b,this[0]),a.data(this[0],"validator",c),c.settings.onsubmit&&(this.validateDelegate(":submit","click",function(b){c.settings.submitHandler&&(c.submitButton=b.target),a(b.target).hasClass("cancel")&&(c.cancelSubmit=!0),void 0!==a(b.target).attr("formnovalidate")&&(c.cancelSubmit=!0)}),this.submit(function(b){function d(){var d,e;return c.settings.submitHandler?(c.submitButton&&(d=a("<input type='hidden'/>").attr("name",c.submitButton.name).val(a(c.submitButton).val()).appendTo(c.currentForm)),e=c.settings.submitHandler.call(c,c.currentForm,b),c.submitButton&&d.remove(),void 0!==e?e:!1):!0}return c.settings.debug&&b.preventDefault(),c.cancelSubmit?(c.cancelSubmit=!1,d()):c.form()?c.pendingRequest?(c.formSubmitted=!0,!1):d():(c.focusInvalid(),!1)})),c)},valid:function(){var b,c;return a(this[0]).is("form")?b=this.validate().form():(b=!0,c=a(this[0].form).validate(),this.each(function(){b=c.element
12112(this)&&b})),b},removeAttrs:function(b){var c={},d=this;return a.each(b.split(/\s/),function(a,b){c[b]=d.attr(b),d.removeAttr(b)}),c},rules:function(b,c){var d,e,f,g,h,i,j=this[0];if(b)switch(d=a.data(j.form,"validator").settings,e=d.rules,f=a.validator.staticRules(j),b){case"add":a.extend(f,a.validator.normalizeRule(c)),delete f.messages,e[j.name]=f,c.messages&&(d.messages[j.name]=a.extend(d.messages[j.name],c.messages));break;case"remove":return c?(i={},a.each(c.split(/\s/),function(b,c){i[c]=f[c],delete f[c],"required"===c&&a(j).removeAttr("aria-required")}),i):(delete e[j.name],f)}return g=a.validator.normalizeRules(a.extend({},a.validator.classRules(j),a.validator.attributeRules(j),a.validator.dataRules(j),a.validator.staticRules(j)),j),g.required&&(h=g.required,delete g.required,g=a.extend({required:h},g),a(j).attr("aria-required","true")),g.remote&&(h=g.remote,delete g.remote,g=a.extend(g,{remote:h})),g}}),a.extend(a.expr[":"],{blank:function(b){return!a.trim(""+a(b).val())},filled:function(b){return!!a.trim(""+a(b).val())},unchecked:function(b){return!a(b).prop("checked")}}),a.validator=function(b,c){this.settings=a.extend(!0,{},a.validator.defaults,b),this.currentForm=c,this.init()},a.validator.format=function(b,c){return 1===arguments.length?function(){var c=a.makeArray(arguments);return c.unshift(b),a.validator.format.apply(this,c)}:(arguments.length>2&&c.constructor!==Array&&(c=a.makeArray(arguments).slice(1)),c.constructor!==Array&&(c=[c]),a.each(c,function(a,c){b=b.replace(new RegExp("\\{"+a+"\\}","g"),function(){return c})}),b)},a.extend(a.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",validClass:"valid",errorElement:"label",focusCleanup:!1,focusInvalid:!0,errorContainer:a([]),errorLabelContainer:a([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(a){this.lastActive=a,this.settings.focusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass),this.hideThese(this.errorsFor(a)))},onfocusout:function(a){this.checkable(a)||!(a.name in this.submitted)&&this.optional(a)||this.element(a)},onkeyup:function(a,b){(9!==b.which||""!==this.elementValue(a))&&(a.name in this.submitted||a===this.lastElement)&&this.element(a)},onclick:function(a){a.name in this.submitted?this.element(a):a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).addClass(c).removeClass(d):a(b).addClass(c).removeClass(d)},unhighlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).removeClass(c).addClass(d):a(b).removeClass(c).addClass(d)}},setDefaults:function(b){a.extend(a.validator.defaults,b)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date ( ISO ).",number:"Please enter a valid number.",digits:"Please enter only digits.",creditcard:"Please enter a valid credit card number.",equalTo:"Please enter the same value again.",maxlength:a.validator.format("Please enter no more than {0} characters."),minlength:a.validator.format("Please enter at least {0} characters."),rangelength:a.validator.format("Please enter a value between {0} and {1} characters long."),range:a.validator.format("Please enter a value between {0} and {1}."),max:a.validator.format("Please enter a value less than or equal to {0}."),min:a.validator.format("Please enter a value greater than or equal to {0}.")},autoCreateRanges:!1,prototype:{init:function(){function b(b){var c=a.data(this[0].form,"validator"),d="on"+b.type.replace(/^validate/,""),e=c.settings;e[d]&&!this.is(e.ignore)&&e[d].call(c,this[0],b)}this.labelContainer=a(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||a(this.currentForm),this.containers=a(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var c,d=this.groups={};a.each(this.settings.groups,function(b,c){"string"==typeof c&&(c=c.split(/\s/)),a.each(c,function(a,c){d[c]=b})}),c=this.settings.rules,a.each(c,function(b,d){c[b]=a.validator.normalizeRule(d)}),a(this.currentForm).validateDelegate(":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'] ,[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], [type='radio'], [type='checkbox']","focusin focusout keyup",b).validateDelegate("select, option, [type='radio'], [type='checkbox']","click",b),this.settings.invalidHandler&&a(this.currentForm).bind("invalid-form.validate",this.settings.invalidHandler),a(this.currentForm).find("[required], [data-rule-required], .required").attr("aria-required","true")},form:function(){return this.checkForm(),a.extend(this.submitted,this.errorMap),this.invalid=a.extend({},this.errorMap),this.valid()||a(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(b){var c=this.clean(b),d=this.validationTargetFor(c),e=!0;return this.lastElement=d,void 0===d?delete this.invalid[c.name]:(this.prepareElement(d),this.currentElements=a(d),e=this.check(d)!==!1,e?delete this.invalid[d.name]:this.invalid[d.name]=!0),a(b).attr("aria-invalid",!e),this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers
12112)),this.showErrors(),e},showErrors:function(b){if(b){a.extend(this.errorMap,b),this.errorList=[];for(var c in b)this.errorList.push({message:b[c],element:this.findByName(c)[0]});this.successList=a.grep(this.successList,function(a){return!(a.name in b)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){a.fn.resetForm&&a(this.currentForm).resetForm(),this.submitted={},this.lastElement=null,this.prepareForm(),this.hideErrors(),this.elements().removeClass(this.settings.errorClass).removeData("previousValue").removeAttr("aria-invalid")},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b,c=0;for(b in a)c++;return c},hideErrors:function(){this.hideThese(this.toHide)},hideThese:function(a){a.not(this.containers).text(""),this.addWrapper(a).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{a(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin")}catch(b){}},findLastActive:function(){var b=this.lastActive;return b&&1===a.grep(this.errorList,function(a){return a.element.name===b.name}).length&&b},elements:function(){var b=this,c={};return a(this.currentForm).find("input, select, textarea").not(":submit, :reset, :image, [disabled], [readonly]").not(this.settings.ignore).filter(function(){return!this.name&&b.settings.debug&&window.console&&console.error("%o has no name assigned",this),this.name in c||!b.objectLength(a(this).rules())?!1:(c[this.name]=!0,!0)})},clean:function(b){return a(b)[0]},errors:function(){var b=this.settings.errorClass.split(" ").join(".");return a(this.settings.errorElement+"."+b,this.errorContext)},reset:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=a([]),this.toHide=a([]),this.currentElements=a([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(a){this.reset(),this.toHide=this.errorsFor(a)},elementValue:function(b){var c,d=a(b),e=b.type;return"radio"===e||"checkbox"===e?a("input[name='"+b.name+"']:checked").val():"number"===e&&"undefined"!=typeof b.validity?b.validity.badInput?!1:d.val():(c=d.val(),"string"==typeof c?c.replace(/\r/g,""):c)},check:function(b){b=this.validationTargetFor(this.clean(b));var c,d,e,f=a(b).rules(),g=a.map(f,function(a,b){return b}).length,h=!1,i=this.elementValue(b);for(d in f){e={method:d,parameters:f[d]};try{if(c=a.validator.methods[d].call(this,i,b,e.parameters),"dependency-mismatch"===c&&1===g){h=!0;continue}if(h=!1,"pending"===c)return void(this.toHide=this.toHide.not(this.errorsFor(b)));if(!c)return this.formatAndAdd(b,e),!1}catch(j){throw this.settings.debug&&window.console&&console.log("Exception occurred when checking element "+b.id+", check the '"+e.method+"' method.",j),j}}if(!h)return this.objectLength(f)&&this.successList.push(b),!0},customDataMessage:function(b,c){return a(b).data("msg"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase())||a(b).data("msg")},customMessage:function(a,b){var c=this.settings.messages[a];return c&&(c.constructor===String?c:c[b])},findDefined:function(){for(var a=0;a<arguments.length;a++)if(void 0!==arguments[a])return arguments[a];return void 0},defaultMessage:function(b,c){return this.findDefined(this.customMessage(b.name,c),this.customDataMessage(b,c),!this.settings.ignoreTitle&&b.title||void 0,a.validator.messages[c],"<strong>Warning: No message defined for "+b.name+"</strong>")},formatAndAdd:function(b,c){var d=this.defaultMessage(b,c.method),e=/\$?\{(\d+)\}/g;"function"==typeof d?d=d.call(this,c.parameters,b):e.test(d)&&(d=a.validator.format(d.replace(e,"{$1}"),c.parameters)),this.errorList.push({message:d,element:b,method:c.method}),this.errorMap[b.name]=d,this.submitted[b.name]=d},addWrapper:function(a){return this.settings.wrapper&&(a=a.add(a.parent(this.settings.wrapper))),a},defaultShowErrors:function(){var a,b,c;for(a=0;this.errorList[a];a++)c=this.errorList[a],this.settings.highlight&&this.settings.highlight.call(this,c.element,this.settings.errorClass,this.settings.val
12112idClass),this.showLabel(c.element,c.message);if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);if(this.settings.unhighlight)for(a=0,b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return a(this.errorList).map(function(){return this.element})},showLabel:function(b,c){var d,e,f,g=this.errorsFor(b),h=this.idOrName(b),i=a(b).attr("aria-describedby");g.length?(g.removeClass(this.settings.validClass).addClass(this.settings.errorClass),g.html(c)):(g=a("<"+this.settings.errorElement+">").attr("id",h+"-error").addClass(this.settings.errorClass).html(c||""),d=g,this.settings.wrapper&&(d=g.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.length?this.labelContainer.append(d):this.settings.errorPlacement?this.settings.errorPlacement(d,a(b)):d.insertAfter(b),g.is("label")?g.attr("for",h):0===g.parents("label[for='"+h+"']").length&&(f=g.attr("id").replace(/(:|\.|\[|\])/g,"\\$1"),i?i.match(new RegExp("\\b"+f+"\\b"))||(i+=" "+f):i=f,a(b).attr("aria-describedby",i),e=this.groups[b.n
12112ame],e&&a.each(this.groups,function(b,c){c===e&&a("[name='"+b+"']",this.currentForm).attr("aria-describedby",g.attr("id"))}))),!c&&this.settings.success&&(g.text(""),"string"==typeof this.settings.success?g.addClass(this.settings.success):this.settings.success(g,b)),this.toShow=this.toShow.add(g)},errorsFor:function(b){var c=this.idOrName(b),d=a(b).attr("aria-describedby"),e="label[for='"+c+"'], label[for='"+c+"'] *";return d&&(e=e+", #"+d.replace(/\s+/g,", #")),this.errors().filter(e)},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(b){return this.checkable(b)&&(b=this.findByName(b.name)),a(b).not(this.settings.ignore)[0]},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(b){return a(this.currentForm).find("[name='"+b+"']")},getLength:function(b,c){switch(c.nodeName.toLowerCase()){case"select":return a("option:selected",c).length;case"input":if(this.checkable(c))return this.findByName(c.name).filter(":checked").length}return b.length},depend:function(a,b){return this.dependTypes[typeof a]?this.dependTypes[typeof a](a,b):!0},dependTypes:{"boolean":function(a){return a},string:function(b,c){return!!a(b,c.form).length},"function":function(a,b){return a(b)}},optional:function(b){var c=this.elementValue(b);
12112return!a.validator.methods.required.call(this,c,b)&&"dependency-mismatch"},startRequest:function(a){this.pending[a.name]||(this.pendingRequest++,this.pending[a.name]=!0)},stopRequest:function(b,c){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[b.name],c&&0===this.pendingRequest&&this.formSubmitted&&this.form()?(a(this.currentForm).submit(),this.formSubmitted=!1):!c&&0===this.pendingRequest&&this.formSubmitted&&(a(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(b){return a.data(b,"previousValue")||a.data(b,"previousValue",{old:null,valid:!0,message:this.defaultMessage(b,"remote")})}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(b,c){b.constructor===String?this.classRuleSettings[b]=c:a.extend(this.classRuleSettings,b)},classRules:function(b){var c={},d=a(b).attr("class");return d&&a.each(d.split(" "),function(){this in a.validator.classRuleSettings&&a.extend(c,a.validator.classRuleSettings[this])}),c},attributeRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)"required"===c?(d=b.getAttribute(c),""===d&&(d=!0),d=!!d):d=f.attr(c),/min|max/.test(c)&&(null===g||/number|range|text/.test(g))&&(d=Number(d)),d||0===d?e[c]=d:g===c&&"range"!==g&&(e[c]=!0);return e.maxlength&&/-1|2147483647|524288/.test(e.maxlength)&&delete e.maxlength,e},dataRules:function(b){var c,d,e={},f=a(b);for(c in a.validator.methods)d=f.data("rule"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase()),void 0!==d&&(e[c]=d);return e},staticRules:function(b){var c={},d=a.data(b.form,"validator");return d.settings.rules&&(c=a.validator.normalizeRule(d.settings.rules[b.name])||{}),c},normalizeRules:function(b,c){return a.each(b,function(d,e){if(e===!1)return void delete b[d];if(e.param||e.depends){var f=!0;switch(typeof e.depends){case"string":f=!!a(e.depends,c.form).length;break;case"function":f=e.depends.call(c,c)}f?b[d]=void 0!==e.param?e.param:!0:delete b[d]}}),a.each(b,function(d,e){b[d]=a.isFunction(e)?e(c):e}),a.each(["minlength","maxlength"],function(){b[this]&&(b[this]=Number(b[this]))}),a.each(["rangelength","range"],function(){var c;b[this]&&(a.isArray(b[this])?b[this]=[Number(b[this][0]),Number(b[this][1])]:"string"==typeof b[this]&&(c=b[this].replace(/[\[\]]/g,"").split(/[\s,]+/),b[this]=[Number(c[0]),Number(c[1])]))}),a.validator.autoCreateRanges&&(null!=b.min&&null!=b.max&&(b.range=[b.min,b.max],delete b.min,delete b.max),null!=b.minlength&&null!=b.maxlength&&(b.rangelength=[b.minlength,b.maxlength],delete b.minlength,delete b.maxlength)),b},normalizeRule:function(b){if("string"==typeof b){var c={};a.each(b.split(/\s/),function(){c[this]=!0}),b=c}return b},addMethod:function(b,c,d){a.validator.methods[b]=c,a.validator.messages[b]=void 0!==d?d:a.validator.messages[b],c.length<3&&a.validator.addClassRules(b,a.validator.normalizeRule(b))},methods:{required:function(b,c,d){if(!this.depend(d,c))return"dependency-mismatch";if("select"===c.nodeName.toLowerCase()){var e=a(c).val();return e&&e.length>0}return this.checkable(c)?this.getLength(b,c)>0:a.trim(b).length>0},email:function(a,b){return this.optional(b)||/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(a)},url:function(a,b){return this.optional(b)||/^(https?|s?ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(a)},date:function(a,b){/*return this.optional(b)||!/Invalid|NaN/.test(new Date(a).toString())*/ /*customized!!!*/ var check = false,re=new RegExp((typeof(VALIDATE_DATE_MASK)!=='undefined'?VALIDATE_DATE_MASK:'^[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{4}$')),adata,gg,mm,aaaa,xdata;if(re.test(a)){adata=a.split('.');if(adata.length===1){adata=a.split('-');if(adata.length===1){adata=a.split(' ');
12112if(adata.length===1){adata=a.split('/');if(adata.length===1){adata=a.split(':');}}}}gg=parseInt(adata[0],10);mm=parseInt(adata[1],10);aaaa=parseInt(adata[2],10);xdata=new Date(aaaa,mm-1,gg,12,0,0,0);if((xdata.getUTCFullYear()===aaaa)&&(xdata.getUTCMonth()===mm-1)&&(xdata.getUTCDate()===gg)){check = true;}else{check = false;}}else{check = false;}return this.optional(b)||check;},dateISO:function(a,b){return this.optional(b)||/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(a)},number:function(a,b){return this.optional(b)||/^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\d+$/.test(a)},creditcard:function(a,b){if(this.optional(b))return"dependency-mismatch";if(/[^0-9 \-]+/.test(a))return!1;var c,d,e=0,f=0,g=!1;if(a=a.replace(/\D/g,""),a.length<13||a.length>19)return!1;for(c=a.length-1;c>=0;c--)d=a.charAt(c),f=parseInt(d,10),g&&(f*=2)>9&&(f-=9),e+=f,g=!g;return e%10===0},minlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e>=d},maxlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||d>=e},rangelength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e>=d[0]&&e<=d[1]},min:function(a,b,c){return this.optional(b)||a>=c},max:function(a,b,c){return this.optional(b)||c>=a},range:function(a,b,c){return this.optional(b)||a>=c[0]&&a<=c[1]},equalTo:function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.unbind(".validate-equalTo").bind("blur.validate-equalTo",function(){a(c).valid()}),b===e.val()},remote:function(b,c,d){if(this.optional(c))return"dependency-mismatch";var e,f,g=this.previousValue(c);return this.settings.messages[c.name]||(this.settings.messages[c.name]={}),g.originalMessage=this.settings.messages[c.name].remote,this.settings.messages[c.name].remote=g.message,d="string"==typeof d&&{url:d}||d,g.old===b?g.valid:(g.old=b,e=this,this.startRequest(c),f={},f[c.name]=b,a.ajax(a.extend(!0,{url:d,mode:"abort",port:"validate"+c.name,dataType:"json",data:f,context:e.currentForm,success:function(d){var f,h,i,j=d===!0||"true"===d;e.settings.messages[c.name].remote=g.originalMessage,j?(i=e.formSubmitted,e.prepareElement(c),e.formSubmitted=i,e.successList.push(c),delete e.invalid[c.name],e.showErrors()):(f={},h=d||e.defaultMessage(c,"remote"),f[c.name]=g.message=a.isFunction(h)?h(b):h,e.invalid[c.name]=!0,e.showErrors(f)),g.valid=j,e.stopRequest(c,j)}},d)),"pending")}}}),a.format=function(){throw"$.format has been deprecated. Please use $.validator.format instead."};var b,c={};a.ajaxPrefilter?a.ajaxPrefilter(function(a,b,d){var e=a.port;"abort"===a.mode&&(c[e]&&c[e].abort(),c[e]=d)}):(b=a.ajax,a.ajax=function(d){var e=("mode"in d?d:a.ajaxSettings).mode,f=("port"in d?d:a.ajaxSettings).port;return"abort"===e?(c[f]&&c[f].abort(),c[f]=b.apply(this,arguments),c[f]):b.apply(this,arguments)}),a.extend(a.fn,{validateDelegate:function(b,c,d){return this.bind(c,function(c){var e=a(c.target);return e.is(b)?d.apply(e,arguments):void 0})}})}); 12113/* End */ 12114; 12115; /* Start:"a:4:{s:4:"full";s:72:"/local/templates/aspro_max/js/aspro_animate_open_fancy.js?16523557191865";s:6:"source";s:57:"/local/templates/aspro_max/js/aspro_animate_open_fancy.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 12116function retrieveScale(btn) { 12117 var btnRadius = btn.width()/2, 12118 left = btn.offset().left + btnRadius, 12119 top = btn.offset().top + btnRadius - $(window).scrollTop(), 12120 scale = scaleValue(top, left, btnRadius, $(window).height(), $(window).width()); 12121 12122 btn.css('position', 'fixed').velocity({ 12123 top: top - btnRadius, 12124 left: left - btnRadius, 12125 translateX: 0, 12126 }, 0); 12127 12128 return scale; 12129} 12130 12131function scaleValue( topValue, leftValue, radiusValue, windowW, windowH) { 12132 var maxDistHor = ( leftValue > windowW/2) ? leftValue : (windowW - leftValue), 12133 maxDistVert = ( topValue > windowH/2) ? topValue : (windowH - topValue); 12134 return Math.ceil(Math.sqrt( Math.pow(maxDistHor, 2) + Math.pow(maxDistVert, 2) )/radiusValue); 12135} 12136 12137function animateLayer(layer, scaleVal, bool) { 12138 layer.velocity({ scale: scaleVal }, 400, function(){ 12139 $('body').toggleClass('overflow-hidden', bool); 12140 (bool) 12141 ? layer.parents('.cd-section').addClass('modal-is-visible').end().off('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend') 12142 : layer.removeClass('is-visible').removeAttr( 'style' ).siblings('[data-type="modal-trigger"]').removeClass('to-circle'); 12143 }); 12144} 12145 12146function updateLayer() { 12147 var layer = $('.cd-section.modal-is-visible .cd-modal-bg'), 12148 layerRadius = layer.width()/2, 12149 layerTop = layer.siblings('.btn').offset().top + layerRadius - $(window).scrollTop(), 12150 layerLeft = layer.siblings('.btn').offset().left + layerRadius, 12151 scale = scaleValue(layerTop, layerLeft, layerRadius, $(window).height(), $(window).width()); 12152 12153 layer.velocity({ 12154 top: layerTop - layerRadius, 12155 left: layerLeft - layerRadius, 12156 scale: scale, 12157 }, 0); 12158} 12159 12160function closeModal() { 12161 $('.cd-modal-bg').fadeOut(); 12162 animateLayer($('.cd-modal-bg'), 1, false); 12163 //$('.cd-modal-bg').removeAttr('style'); 12164 //setTimeout(function(){ 12165 $('.cd-modal-bg').removeClass('is-visible'); 12166 //}, 510); 12167} 12168/* End */ 12169; 12170; /* Start:"a:4:{s:4:"full";s:76:"/local/templates/aspro_max/js/jquery.inputmask.bundle.min.js?165235572170933";s:6:"source";s:60:"/local/templates/aspro_max/js/jquery.inputmask.bundle.min.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 12171!function(e){function t(n){if(i[n])return i[n].exports;var a=i[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var i={};t.m=e,t.c=i,t.d=function(e,i,n){t.o(e,i)||Object.defineProperty(e,i,{configurable:!1,enumerable:!0,get:n})}
12171,t.n=function(e){var i=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(i,"a",i),i},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=3)}([function(e,t,i){"use strict";var n,a,r;"function"==typeof Symbol&&Symbol.iterator,a=[i(2)],void 0!==(r="function"==typeof(n=function(e){return e})?n.apply(t,a):n)&&(e.exports=r)},function(e,t,i){"use strict";var n,a,r,o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};a=[i(0),i(5),i(6)],void 0!==(r="function"==typeof(n=function(e,t,i,n){function a(t,i,o){if(!(this instanceof a))return new a(t,i,o);this.el=n,this.events={},this.maskset=n,this.refreshValue=!1,!0!==o&&(e.isPlainObject(t)?i=t:(i=i||{},t&&(i.alias=t)),this.opts=e.extend(!0,{},this.defaults,i),this.noMasksCache=i&&i.definitions!==n,this.userOptions=i||{},this.isRTL=this.opts.numericInput,r(this.opts.alias,i,this.opts))}function r(t,i,o){var s=a.prototype.aliases[t];return s?(s.alias&&r(s.alias,n,o),e.extend(!0,o,s),e.extend(!0,o,i),!0):(null===o.mask&&(o.mask=t),!1)}function s(t,i){function r(t,r,o){var s=!1;if(null!==t&&""!==t||((s=null!==o.regex)?t=(t=o.regex).replace(/^(\^)(.*)(\$)$/,"$2"):(s=!0,t=".*")),1===t.length&&!1===o.greedy&&0!==o.repeat&&(o.placeholder=""),o.repeat>0||"*"===o.repeat||"+"===o.repeat){var l="*"===o.repeat?0:"+"===o.repeat?1:o.repeat;t=o.groupmarker[0]+t+o.groupmarker[1]+o.quantifiermarker[0]+l+","+o.repeat+o.quantifiermarker[1]}var u,c=s?"regex_"+o.regex:o.numericInput?t.split("").reverse().join(""):t;return a.prototype.masksCache[c]===n||!0===i?(u={mask:t,maskToken:a.prototype.analyseMask(t,s,o),validPositions:{},_buffer:n,buffer:n,tests:{},excludes:{},metadata:r,maskLength:n},!0!==i&&(a.prototype.masksCache[c]=u,u=e.extend(!0,{},a.prototype.masksCache[c]))):u=e.extend(!0,{},a.prototype.masksCache[c]),u}if(e.isFunction(t.mask)&&(t.mask=t.mask(t)),e.isArray(t.mask)){if(t.mask.length>1){if(null===t.keepStatic){t.keepStatic="auto";for(var o=0;o<t.mask.length;o++)if(t.mask[o].charAt(0)!==t.mask[0].charAt(0)){t.keepStatic=!0;break}}var s=t.groupmarker[0];return e.each(t.isRTL?t.mask.reverse():t.mask,function(i,a){s.length>1&&(s+=t.groupmarker[1]+t.alternatormarker+t.groupmarker[0]),a.mask===n||e.isFunction(a.mask)?s+=a:s+=a.mask}),r(s+=t.groupmarker[1],t.mask,t)}t.mask=t.mask.pop()}return t.mask&&t.mask.mask!==n&&!e.isFunction(t.mask.mask)?r(t.mask.mask,t.mask,t):r(t.mask,t.mask,t)}function l(e){var t=i.createElement("input"),n="on"+e,a=n in t;return a||(t.setAttribute(n,"return;"),a="function"==typeof t[n]),t=null,a}function u(r,s,c){function d(e,t,i){t=t||0;var a,r,o,s=[],l=0,u=v();do{!0===e&&h().validPositions[l]?(r=(o=h().validPositions[l]).match,a=o.locator.slice(),s.push(!0===i?o.input:!1===i?r.nativeDef:N(l,r))):(r=(o=P(l,a,l-1)).match,a=o.locator.slice(),(!1===c.jitMasking||l<u||"number"==typeof c.jitMasking&&isFinite(c.jitMasking)&&c.jitMasking>l)&&s.push(!1===i?r.nativeDef:N(l,r))),"auto"===c.keepStatic&&r.newBlockMarker&&null!==r.fn&&(c.keepStatic=l-1),l++}while(($===n||l<$)&&(null!==r.fn||""!==r.def)||t>l);return""===s[s.length-1]&&s.pop(),!1===i&&h().maskLength!==n||(h().maskLength=l-1),s}function h(){return s}function g(e){var t=h();t.buffer=n,!0!==e&&(t.validPositions={},t.p=0)}function v(e,t,i){var a=-1,r=-1,o=i||h().validPositions;e===n&&(e=-1);for(var s in o){var l=parseInt(s);o[l]&&(t||!0!==o[l].generatedInput)&&(l<=e&&(a=l),l>=e&&(r=l))}return-1!==a&&e-a>1||r<e?a:r}function k(t,i,a,r){var o,s=t,l=e.extend(!0,{},h().validPositions),u=!1;for(h().p=t,o=i-1;o>=s;
12171o--)h().validPositions[o]!==n&&(!0!==a&&(!h().validPositions[o].match.optionality&&function(e){var t=h().validPositions[e];if(t!==n&&null===t.match.fn){var i=h().validPositions[e-1],a=h().validPositions[e+1];return i!==n&&a!==n}return!1}(o)||!1===c.canClearPosition(h(),o,v(n,!0),r,c))||delete h().validPositions[o]);for(g(!0),o=s+1;o<=v();){for(;h().validPositions[s]!==n;)s++;if(o<s&&(o=s+1),h().validPositions[o]===n&&j(o))o++;else{var p=P(o);!1===u&&l[s]&&l[s].match.def===p.match.def?(h().validPositions[s]=e.extend(!0,{},l[s]),h().validPositions[s].input=p.input,delete h().validPositions[o],o++):A(s,p.match.def)?!1!==_(s,p.input||N(o),!0)&&(delete h().validPositions[o],o++,u=!0):j(o)||(o++,s--),s++}}if(!0!==r)for(o=v(-1,!0);h().validPositions[o]&&!0===h().validPositions[o].generatedInput;)delete h().validPositions[o--];g(!0)}function y(e,t,i){for(var a,r=S(e=e>0?e-1:0),o=r.alternation!==n?r.locator[r.alternation].toString().split(","):[],s=0;s<t.length&&(!((a=t[s]).match&&(c.greedy&&!0!==a.match.optionalQuantifier||(!1===a.match.optionality||!1===a.match.newBlockMarker)&&!0!==a.match.optionalQuantifier)&&(r.alternation===n||r.alternation!==a.alternation||a.locator[r.alternation]!==n&&D(a.locator[r.alternation].toString().split(","),o)))||!0===i&&(null!==a.match.fn||/[0-9a-bA-Z]/.test(a.match.def)));s++);return a}function b(e){var t=e.locator[e.alternation];return"string"==typeof t&&t.length>0&&(t=t.split(",")[0]),t!==n?t.toString():""}function x(e,t){for(var i=(e.alternation!=n?e.mloc[b(e)]:e.locator).join("");i.length<t;)i+="0";return i}function P(e,t,i){return h().validPositions[e]||y(e,C(e,t?t.slice():t,i))}function S(e){return h().validPositions[e]?h().validPositions[e]:C(e)[0]}function A(e,t){for(var i=!1,n=C(e),a=0;a<n.length;a++)if(n[a].match&&n[a].match.def===t){i=!0;break}return i}function C(t,i,a){function r(i,a,s,l){function u(s,l,p){function m(t,i){var n=0===e.inArray(t,i.matches);return n||e.each(i.matches,function(e,a){if(!0===a.isQuantifier&&(n=m(t,i.matches[e-1])))return!1}),n}function k(t,i,a){var r,o;if((h().tests[t]||h().validPositions[t])&&e.each(h().tests[t]||[h().validPositions[t]],function(e,t){if(t.mloc[i])return r=t,!1;var s=a!==n?a:t.alternation,l=t.locator[s]!==n?t.locator[s].toString().indexOf(i):-1;(o===n||l<o)&&-1!==l&&(r=t,o=l)}),r){var s=r.locator[r.alternation];return(r.mloc[i]||r.mloc[s]||r.locator).slice((a!==n?a:r.alternation)+1)}return a!==n?k(t,i):n}function y(e,t){function i(e){for(var t,i,n=[],a=0,r=e.length;a<r;a++)if("-"===e.charAt(a))for(i=e.charCodeAt(a+1);++t<i;)n.push(String.fromCharCode(t));else t=e.charCodeAt(a),n.push(e.charAt(a));return n.join("")}return c.regex&&null!==e.match.fn&&null!==t.match.fn?-1!==i(t.match.def.replace(/[\[\]]/g,"")).indexOf(i(e.match.def.replace(/[\[\]]/g,""))):e.match.def===t.match.nativeDef}function b(e,t){if(t===n||e.alternation===t.alternation&&-1===e.locator[e.alternation].toString().indexOf(t.locator[t.alternation])){e.mloc=e.mloc||{};var i=e.locator[e.alternation];if(i!==n){if("string"==typeof i&&(i=i.split(",")[0]),e.mloc[i]===n&&(e.mloc[i]=e.locator.slice()),t!==n){for(var a in t.mloc)"string"==typeof a&&(a=a.split(",")[0]),e.mloc[a]===n&&(e.mloc[a]=t.mloc[a]);e.locator[e.alternation]=Object.keys(e.mloc).join(",")}return!0}e.alternation=n}return!1}if(f>1e4)throw"Inputmask: There is probably an error in your mask definition or in the code. Create an issue on github with an example of the mask you are using. "+h().mask;if(f===t&&s.matches===n)return d.push({match:s,locator:l.reverse(),cd:v,mloc:{}}),!0;if(s.matches!==n){if(s.isGroup&&p!==s){if(s=u(i.matches[e.inArray(s,i.matches)+1],l))return!0}else if(s.isOptional){var x=s;if(s=r(s,a,l,p)){if(!m(o=d[d.length-1].match,x))return!0;g=!0,f=t}}else if(s.isAlternator){var P,S=s,A=[],C=d.slice(),M=l.length,E=a.length>0?a.shift():-1;if(-1===E||"string"==typeof E){var w,D=f,O=a.slice(),_=[];if("string"==typeof E)_=E.split(",");else for(w=0;w<S.matches.length;w++)_.push(w.toString());if(h().excludes[t]){for(var j=_.slice(),F=0,T=h().excludes[t].length;F<T;F++)_.splice(_.indexOf(h().excludes[t][F].toString()),1);0===_.length&&(h().excludes[t]=n,_=j)}(!0===c.keepStatic||isFinite(parseInt(c.keepStatic))&&D>=c.keepStatic)&&(_=_.slice(0,1));for(var R=0;R<_.length;R++){w=parseInt(_[R]),d=[],a=k(f,w,M)||O.slice(),S.matches[w]&&u(S.matches[w],[w].concat(l),p)&&(s=!0),P=d.slice(),f=D,d=[];for(var N=0;N<P.length;N++){var G=P[N],B=!1;G.alternation=G.alternation||M,b(G);for(var I=0;I<A.length;I++){var L=A[I];if("string"!=typeof E||G.alternation!==n&&-1!==e.inArray(G.locator[G.alternation].toString(),_)){if(G.match.nativeDef===L.match.nativeDef){B=!0,b(L,G);break}if(y(G,L)){b(G,L)&&(B=!0,A.splice(A.indexOf(L),0,G));break}if(y(L,G)){b(L,G);break}if(z=L,null===(U=G).match.fn&&null!==z.match.fn&&z.match.fn.test(U.match.def,h(),t,!1,c,!1)){b(G,L)&&(B=!0,A.splice(A.indexOf(L),0,G));break}}}B||A.push(G)}}d=C.concat(A),f=t,g=d.length>0,s=A.length>0,a=O.slice()}else s=u(S.matches[E]||i.matches[E],[E].concat(l),p);if(s)return!0}else if(s.isQuantifier&&p!==i.matches[e.inArray(s,i.matches)-1])for(var H=s,V=a.length>0?a.shift():0;V<(isNaN(H.quantifier.max)?V+1:H.quantifier.max)&&f<=t;V++){var K=i.matches[e.inArray(H,i.matches)-1];
12171if(s=u(K,[V].concat(l),K)){if((o=d[d.length-1].match).optionalQuantifier=V>H.quantifier.min-1,m(o,K)){if(V>H.quantifier.min-1){g=!0,f=t;break}return!0}return!0}}else if(s=r(s,a,l,p))return!0}else f++;var U,z}for(var p=a.length>0?a.shift():0;p<i.matches.length;p++)if(!0!==i.matches[p].isQuantifier){var m=u(i.matches[p],[p].concat(s),l);if(m&&f===t)return m;if(f>t)break}}var o,s,l,u,p=h().maskToken,f=i?a:0,m=i?i.slice():[0],d=[],g=!1,v=i?i.join(""):"";if(t>-1){if(i===n){for(var k,b=t-1;(k=h().validPositions[b]||h().tests[b])===n&&b>-1;)b--;k!==n&&b>-1&&(s=b,l=k,u=[],e.isArray(l)||(l=[l]),l.length>0&&(l[0].alternation===n?0===(u=y(s,l.slice()).locator.slice()).length&&(u=l[0].locator.slice()):e.each(l,function(e,t){if(""!==t.def)if(0===u.length)u=t.locator.slice();else for(var i=0;i<u.length;i++)t.locator[i]&&-1===u[i].toString().indexOf(t.locator[i])&&(u[i]+=","+t.locator[i])})),v=(m=u).join(""),f=b)}if(h().tests[t]&&h().tests[t][0].cd===v)return h().tests[t];for(var x=m.shift();x<p.length&&!(r(p[x],m,[x])&&f===t||f>t);x++);}return(0===d.length||g)&&d.push({match:{fn:null,optionality:!0,casing:null,def:"",placeholder:""},locator:[],mloc:{},cd:v}),i!==n&&h().tests[t]?e.extend(!0,[],d):(h().tests[t]=e.extend(!0,[],d),h().tests[t])}function M(){return h()._buffer===n&&(h()._buffer=d(!1,1),h().buffer===n&&(h().buffer=h()._buffer.slice())),h()._buffer}function E(e){return h().buffer!==n&&!0!==e||(h().buffer=d(!0,v(),!0)),h().buffer}function w(e,t,i){var a,r;if(!0===e)g(),e=0,t=i.length;else for(a=e;a<t;a++)delete h().validPositions[a];for(r=e,a=e;a<t;a++)if(g(!0),i[a]!==c.skipOptionalPartCharacter){var o=_(r,i[a],!0,!0);!1!==o&&(g(!0),r=o.caret!==n?o.caret:o.pos+1)}}function D(t,i,a){for(var r,o=c.greedy?i:i.slice(0,1),s=!1,l=a!==n?a.split(","):[],u=0;u<l.length;u++)-1!==(r=t.indexOf(l[u]))&&t.splice(r,1);for(var p=0;p<t.length;p++)if(-1!==e.inArray(t[p],o)){s=!0;break}return s}function O(t,i,a,r,o){var s,l,u,p,f,m,d,k=e.extend(!0,{},h().validPositions),y=!1,x=o!==n?o:v();if(-1===x&&o===n)l=(p=S(s=0)).alternation;else for(;x>=0;x--)if((u=h().validPositions[x])&&u.alternation!==n){if(p&&p.locator[u.alternation]!==u.locator[u.alternation])break;s=x,l=h().validPositions[s].alternation,p=u}if(l!==n){d=parseInt(s),h().excludes[d]=h().excludes[d]||[],!0!==t&&h().excludes[d].push(b(p));var P=[],A=0;for(f=d;f<v(n,!0)+1;f++)(m=h().validPositions[f])&&!0!==m.generatedInput&&/[0-9a-bA-Z]/.test(m.input)?P.push(m.input):f<t&&A++,delete h().validPositions[f];for(;h().excludes[d]&&h().excludes[d].length<10;){var C=-1*A,M=P.slice();for(h().tests[d]=n,g(!0),y=!0;M.length>0;){var E=M.shift();if(E!==c.skipOptionalPartCharacter&&!(y=_(v(n,!0)+1,E,!1,r,!0)))break}if(y&&i!==n){var w=v(t)+1;for(f=d;f<v()+1;f++)((m=h().validPositions[f])===n||null==m.match.fn)&&f<t+C&&C++;y=_((t+=C)>w?w:t,i,a,r,!0)}if(y)break;if(g(),p=S(d),h().validPositions=e.extend(!0,{},k),!h().excludes[d]){y=O(t,i,a,r,d-1);break}var D=b(p);if(-1!==h().excludes[d].indexOf(D)){y=O(t,i,a,r,d-1);break}for(h().excludes[d].push(D),f=d;f<v(n,!0)+1;f++)delete h().validPositions[f]}}return h().excludes[d]=n,y}function _(t,i,r,o,s,l){function u(e){return X?e.begin-e.end>1||e.begin-e.end==1:e.end-e.begin>1||e.end-e.begin==1}function p(i,r,s){var l=!1;return e.each(C(i),function(p,f){var d=f.match;if(E(!0),!1!==(l=null!=d.fn?d.fn.test(r,h(),i,s,c,u(t)):(r===d.def||r===c.skipOptionalPartCharacter)&&""!==d.def&&{c:N(i,d,!0)||d.def,pos:i})){var y=l.c!==n?l.c:r;y=y===c.skipOptionalPartCharacter&&null===d.fn?N(i,d,!0)||d.def:y;var b=i,x=E();if(l.remove!==n&&(e.isArray(l.remove)||(l.remove=[l.remove]),e.each(l.remove.sort(function(e,t){return t-e}),function(e,t){k(t,t+1,!0)})),l.insert!==n&&(e.isArray(l.insert)||(l.insert=[l.insert]),e.each(l.insert.sort(function(e,t){return e-t}),function(e,t){_(t.pos,t.c,!0,o)})),l.refreshFromBuffer){var P=l.refreshFromBuffer;if(w(!0===P?P:P.start,P.end,x),l.pos===n&&l.c===n)return l.pos=v(),!1;if((b=l.pos!==n?l.pos:i)!==i)return l=e.extend(l,_(b,y,!0,o)),!1}else if(!0!==l&&l.pos!==n&&l.pos!==i&&(b=l.pos,w(i,b,E().slice()),b!==i))return l=e.extend(l,_(b,y,!0)),!1;return(!0===l||l.pos!==n||l.c!==n)&&(p>0&&g(!0),m(b,e.extend({}
12171,f,{input:function(t,i,n){switch(c.casing||i.casing){case"upper":t=t.toUpperCase();break;case"lower":t=t.toLowerCase();break;case"title":var r=h().validPositions[n-1];t=0===n||r&&r.input===String.fromCharCode(a.keyCode.SPACE)?t.toUpperCase():t.toLowerCase();break;default:if(e.isFunction(c.casing)){var o=Array.prototype.slice.call(arguments);o.push(h().validPositions),t=c.casing.apply(this,o)}}return t}(y,d,b)}),o,u(t))||(l=!1),!1)}}),l}function f(t,i,a){var r;if(t===n)for(t=i-1;t>0&&!h().validPositions[t];t--);for(var o=t;o<i;o++)if(h().validPositions[o]===n&&!j(o,!0)){var s=0==o?S(o):h().validPositions[o-1];if(s){var l,u=x(s),c=C(o).slice(),p=n,f=S(o);if(""===c[c.length-1].match.def&&c.pop(),e.each(c,function(e,t){l=x(t,u.length);var i=Math.abs(l-u);(p===n||i<p)&&null===t.match.fn&&!0!==t.match.optionality&&!0!==t.match.optionalQuantifier&&(p=i,f=t)}),(f=e.extend({},f,{input:N(o,f.match,!0)||f.match.def})).generatedInput=!0,m(o,f,!0),!0!==a){var d=h().validPositions[i].input;h().validPositions[i]=n,r=_(i,d,!0,!0)}}}return r}function m(t,i,a,r){if(r||c.insertMode&&h().validPositions[t]!==n&&a===n){var o,s=e.extend(!0,{},h().validPositions),l=v(n,!0);for(o=t;o<=l;o++)delete h().validPositions[o];h().validPositions[t]=e.extend(!0,{},i);var u,p=!0,m=h().validPositions,d=!1;for(o=u=t;o<=l;o++){var k=s[o];if(k!==n)for(var y=u;""!==S(y).match.def&&(null===k.match.fn&&m[o]&&(!0===m[o].match.optionalQuantifier||!0===m[o].match.optionality)||null!=k.match.fn);){if(y++,!1===d&&s[y]&&s[y].match.def===k.match.def)h().validPositions[y]=e.extend(!0,{},s[y]),h().validPositions[y].input=k.input,f(n,y,!0),u=y,p=!0;else if(A(y,k.match.def)){var b=_(y,k.input,!0,!0);p=!1!==b,u=b.caret||b.insert?v():y,d=!0}else if(!(p=!0===k.generatedInput)&&""===S(y).match.def)break;if(p)break}if(!p)break}if(!p)return h().validPositions=e.extend(!0,{},s),g(!0),!1}else h().validPositions[t]=e.extend(!0,{},i);return g(!0),!0}r=!0===r;var d=t;t.begin!==n&&(d=X&&!u(t)?t.end:t.begin);var y=!0,b=e.extend(!0,{},h().validPositions);if(e.isFunction(c.preValidation)&&!r&&!0!==o&&!0!==l&&(y=c.preValidation(E(),d,i,u(t),c)),!0===y){if(f(n,d,!0),u(t)&&(K(0,a.keyCode.DELETE,t,!0,!0),d=h().p),($===n||d<$)&&(y=p(d,i,r),(!r||!0===o)&&!1===y&&!0!==l)){var P=h().validPositions[d];if(!P||null!==P.match.fn||P.match.def!==i&&i!==c.skipOptionalPartCharacter){if((c.insertMode||h().validPositions[F(d)]===n)&&!j(d,!0))for(var M=d+1,D=F(d);M<=D;M++)if(!1!==(y=p(M,i,r))){y=f(d,y.pos!==n?y.pos:M)||y,d=M;break}}else y={caret:F(d)}}!1!==y||null===c.keepStatic||!1===c.keepStatic||r||!0===s||(y=O(d,i,r,o)),!0===y&&(y={pos:d})}if(e.isFunction(c.postValidation)&&!1!==y&&!r&&!0!==o&&!0!==l){var T=c.postValidation(E(!0),y,c);if(T!==n){if(T.refreshFromBuffer&&T.buffer){var R=T.refreshFromBuffer;w(!0===R?R:R.start,R.end,T.buffer)}y=!0===T?y:T}}return y&&y.pos===n&&(y.pos=d),!1!==y&&!0!==l||(g(!0),h().validPositions=e.extend(!0,{},b)),y}function j(e,t){var i=P(e).match;if(""===i.def&&(i=S(e).match),null!=i.fn)return i.fn;if(!0!==t&&e>-1){var n=C(e);return n.length>1+(""===n[n.length-1].match.def?1:0)}return!1}function F(e,t){for(var i=e+1;""!==S(i).match.def&&(!0===t&&(!0!==S(i).match.newBlockMarker||!j(i))||!0!==t&&!j(i));)i++;return i}function T(e,t){var i,n=e;if(n<=0)return 0;for(;--n>0&&(!0===t&&!0!==S(n).match.newBlockMarker||!0!==t&&!j(n)&&((i=C(n)).length<2||2===i.length&&""===i[1].match.def)););return n}function R(t,i,a,r,o){if(r&&e.isFunction(c.onBeforeWrite)){var s=c.onBeforeWrite.call(J,r,i,a,c);if(s){if(s.refreshFromBuffer){var l=s.refreshFromBuffer;w(!0===l?l:l.start,l.end,s.buffer||i),i=E(!0)}a!==n&&(a=s.caret!==n?s.caret:a)}}t!==n&&(t.inputmask._valueSet(i.join("")),a===n||r!==n&&"blur"===r.type?z(t,a,0===i.length):I(t,a),!0===o&&(te=!0,e(t).trigger("input")))}function N(t,i,a){if((i=i||S(t).match).placeholder!==n||!0===a)return e.isFunction(i.placeholder)?i.placeholder(c):i.placeholder;if(null===i.fn){if(t>-1&&h().validPositions[t]===n){var r,o=C(t),s=[];if(o.length>1+(""===o[o.length-1].match.def?1:0))for(var l=0;l<o.length;l++)if(!0!==o[l].match.optionality&&!0!==o[l].match.optionalQuantifier&&(null===o[l].match.fn||r===n||!1!==o[l].match.fn.test(r.match.def,h(),t,!0,c))&&(s.push(o[l]),null===o[l].match.fn&&(r=o[l]),s.length>1&&/[0-9a-bA-Z]/.test(s[0].match.def)))return c.placeholder.charAt(t%c.placeholder.length)}return i.def}return c.placeholder.charAt(t%c.placeholder.length)}function G(t,i,r,o,s){var l=o.slice(),u="",p=-1,f=n;if(g(),r||!0===c.autoUnmask)p=F(p);else{var m=M().slice(0,F(-1)).join(""),k=l.join("").match(new RegExp("^"+a.escapeRegex(m),"g"));k&&k.length>0&&(l.splice(0,k.length*m.length),p=F(p))}-1===p?(h().p=F(p),p=0):h().p=p,e.each(l,function(i,a){if(a!==n)if(h().validPositions[i]===n&&l[i]===N(i)&&j(i,!0)&&!1===_(i,l[i],!0,n,n,!0))h().p++;else{var o=new e.Event("_checkval");
12171o.which=a.charCodeAt(0),u+=a;var s=v(n,!0),m=S(s),g=P(s+1,m?m.locator.slice():n,s);if(y=p,b=u,-1===d(!0,0,!1).slice(y,F(y)).join("").indexOf(b)||j(y)||S(y).match.nativeDef!==b.charAt(0)&&(" "!==S(y).match.nativeDef||S(y+1).match.nativeDef!==b.charAt(0))||r||c.autoUnmask){var k=r?i:null==g.match.fn&&g.match.optionality&&s+1<h().p?s+1:h().p;(f=oe.keypressEvent.call(t,o,!0,!1,r,k))&&(p=k+1,u="")}else f=oe.keypressEvent.call(t,o,!0,!1,!0,s+1);R(n,E(),f.forwardPosition,o,!1)}var y,b}),i&&R(t,E(),f?f.forwardPosition:n,s||new e.Event("checkval"),s&&"input"===s.type)}function B(t){if(t){if(t.inputmask===n)return t.value;t.inputmask&&t.inputmask.refreshValue&&oe.setValueEvent.call(t)}var i=[],a=h().validPositions;for(var r in a)a[r].match&&null!=a[r].match.fn&&i.push(a[r].input);var o=0===i.length?"":(X?i.reverse():i).join("");if(e.isFunction(c.onUnMask)){var s=(X?E().slice().reverse():E()).join("");o=c.onUnMask.call(J,s,o,c)}return o}function I(a,r,o,s){function l(e){return!0===s||!X||"number"!=typeof e||c.greedy&&""===c.placeholder||(e=a.inputmask.__valueGet.call(a).length-e),e}var u;if(r===n)return a.setSelectionRange?(r=a.selectionStart,o=a.selectionEnd):t.getSelection?(u=t.getSelection().getRangeAt(0)).commonAncestorContainer.parentNode!==a&&u.commonAncestorContainer!==a||(r=u.startOffset,o=u.endOffset):i.selection&&i.selection.createRange&&(o=(r=0-(u=i.selection.createRange()).duplicate().moveStart("character",-a.inputmask._valueGet().length))+u.text.length),{begin:l(r),end:l(o)};if(e.isArray(r)&&(o=X?r[0]:r[1],r=X?r[1]:r[0]),r.begin!==n&&(o=X?r.begin:r.end,r=X?r.end:r.begin),"number"==typeof r){r=l(r),o="number"==typeof(o=l(o))?o:r;var p=parseInt(((a.ownerDocument.defaultView||t).getComputedStyle?(a.ownerDocument.defaultView||t).getComputedStyle(a,null):a.currentStyle).fontSize)*o;if(a.scrollLeft=p>a.scrollWidth?p:0,!1===c.insertMode&&r===o&&o++,a.inputmask.caretPos={begin:r,end:o},a.setSelectionRange)a.selectionStart=r,a.selectionEnd=o;else if(t.getSelection){if(u=i.createRange(),a.firstChild===n||null===a.firstChild){var f=i.createTextNode("");a.appendChild(f)}u.setStart(a.firstChild,r<a.inputmask._valueGet().length?r:a.inputmask._valueGet().length),u.setEnd(a.firstChild,o<a.inputmask._valueGet().length?o:a.inputmask._valueGet().length),u.collapse(!0);var m=t.getSelection();m.removeAllRanges(),m.addRange(u)}else a.createTextRange&&((u=a.createTextRange()).collapse(!0),u.moveEnd("character",o),u.moveStart("character",r),u.select());z(a,{begin:r,end:o})}}function L(t){var i,a,r=E(),o=r.length,s=v(),l={},u=h().validPositions[s],c=u!==n?u.locator.slice():n;for(i=s+1;i<r.length;i++)c=(a=P(i,c,i-1)).locator.slice(),l[i]=e.extend(!0,{},a);var p=u&&u.alternation!==n?u.locator[u.alternation]:n;for(i=o-1;i>s&&((a=l[i]).match.optionality||a.match.optionalQuantifier&&a.match.newBlockMarker||p&&(p!==l[i].locator[u.alternation]&&null!=a.match.fn||null===a.match.fn&&a.locator[u.alternation]&&D(a.locator[u.alternation].toString().split(","),p.toString().split(","))&&""!==C(i)[0].def))&&r[i]===N(i,a.match);i--)o--;return t?{l:o,def:l[o]?l[o].match:n}:o}function H(e){for(var t,i=L(),a=e.length,r=h().validPositions[v()];i<a&&!j(i,!0)&&(t=r!==n?P(i,r.locator.slice(""),r):S(i))&&!0!==t.match.optionality&&(!0!==t.match.optionalQuantifier&&!0!==t.match.newBlockMarker||i+1===a&&""===(r!==n?P(i+1,r.locator.slice(""),r):S(i+1)).match.def);)i++;for(;(t=h().validPositions[i-1])&&t&&t.match.optionality&&t.input===c.skipOptionalPartCharacter;)i--;return e.splice(i),e}function V(t){if(e.isFunction(c.isComplete))return c.isComplete(t,c);if("*"===c.repeat)return n;var i=!1,a=L(!0),r=T(a.l);if(a.def===n||a.def.newBlockMarker||a.def.optionality||a.def.optionalQuantifier){i=!0;for(var o=0;o<=r;o++){var s=P(o).match;if(null!==s.fn&&h().validPositions[o]===n&&!0!==s.optionality&&!0!==s.optionalQuantifier||null===s.fn&&t[o]!==N(o,s)){i=!1;break}}}return i}function K(e,t,i,r,o){if((c.numericInput||X)&&(t===a.keyCode.BACKSPACE?t=a.keyCode.DELETE:t===a.keyCode.DELETE&&(t=a.keyCode.BACKSPACE),X)){var s=i.end;i.end=i.begin,i.begin=s}if(t===a.keyCode.BACKSPACE&&(i.end-i.begin<1||!1===c.insertMode)?(i.begin=T(i.begin),h().validPositions[i.begin]!==n&&h().validPositions[i.begin].input===c.groupSeparator&&i.begin--):t===a.keyCode.DELETE&&i.begin===i.end&&(i.end=j(i.end,!0)&&h().validPositions[i.end]&&h().validPositions[i.end].input!==c.radixPoint?i.end+1:F(i.end)+1,h().validPositions[i.begin]!==n&&h().validPositions[i.begin].input===c.groupSeparator&&i.end++),k(i.begin,i.end,!1,r),!0!==r&&null!==c.keepStatic&&!1!==c.keepStatic){var l=O(!0);l&&(i.begin=l.caret!==n?l.caret:l.pos?F(l.pos.begin?l.pos.begin:l.pos):v(-1,!0))}var u=v(i.begin,!0);if(u<i.begin||-1===i.begin)h().p=F(u);else if(!0!==r&&(h().p=i.begin,!0!==o))for(;h().p<u&&h().validPositions[h().p]===n;)h().p++}function U(n){var a=(n.ownerDocument.defaultView||t).getComputedStyle(n,null),r=i.createElement("div");r.style.width=a.width,r.style.textAlign=a.textAlign,q=i.createElement("div"),n.inputmask.colorMask=q,q.className="im-colormask",n.parentNode.insertBefore(q,n),n.parentNode.removeChild(n),q.appendChild(r),q.appendChild(n),n.style.left=r.offsetLeft+"px",e(n).on("click",function(e){return I(n,function(e){var t,r=i.createElement("span");for(var o in a)isNaN(o)&&-1!==o.indexOf("font")&&(r.style[o]=a[o]);r.style.textTransform=a.textTransform,r.style.letterSpacing=a.letterSpacing,r.style.position="absolute",r.style.height="auto",r.style.width="auto",r.style.visibility="hidden",r.style.whiteSpace="nowrap",i.body.appendChild(r);var s,l=n.inputmask._valueGet(),u=0;for(t=0,s=l.length;t<=s;t++){if(r.innerHTML+=l.charAt(t)||"_",r.offsetWidth>=e){var c=e-u,p=r.offsetWidth-e;r.innerHTML=l.charAt(t),t=(c-=r.offsetWidth/3)<p?t-1:t;break}u=r.offsetWidth}return i.body.removeChild(r),t}(e.clientX)),oe.clickEvent.call(n,[e])}),e(n).on("keydown",function(e){e.shiftKey||!1===c.insertMode||setTimeout(function(){z(n)},0)})}function z(e,t,a){function r(e){if(e===n&&(e=""),p||null!==o.fn&&s.input!==n)if(p&&(null!==o.fn&&s.input!==n||""===o.def)){p=!1;var t=u.length;u[t-1]=u[t-1]+"</span>",u.push(e)}else u.push(e);else p=!0,u.push("<span class='im-static'>"+e)}var o,s,l,u=[],p=!1,f=0;if(q!==n){var m=E();if(t===n?t=I(e):t.begin===n&&(t={begin:t,end:t}),!0!==a){var d=v();
12171do{h().validPositions[f]?(s=h().validPositions[f],o=s.match,l=s.locator.slice(),r(m[f])):(s=P(f,l,f-1),o=s.match,l=s.locator.slice(),(!1===c.jitMasking||f<d||"number"==typeof c.jitMasking&&isFinite(c.jitMasking)&&c.jitMasking>f)&&r(N(f,o))),f++}while(($===n||f<$)&&(null!==o.fn||""!==o.def)||d>f||p);p&&r(),i.activeElement===e&&(u.splice(t.begin,0,t.begin===t.end?'<mark class="im-caret" style="border-right-width: 1px;border-right-style: solid;">':'<mark class="im-caret-select">'),u.splice(t.end+1,0,"</mark>"))}var g=q.getElementsByTagName("div")[0];g.innerHTML=u.join(""),e.inputmask.positionColorMask(e,g)}}s=s||this.maskset,c=c||this.opts;var Q,W,$,q,Z,J=this,Y=this.el,X=this.isRTL,ee=!1,te=!1,ie=!1,ne=!1,ae=!1,re={on:function(t,i,r){var o=function(t){var i=this;if(i.inputmask===n&&"FORM"!==this.nodeName){var o=e.data(i,"_inputmask_opts");o?new a(o).mask(i):re.off(i)}else{if("setvalue"===t.type||"FORM"===this.nodeName||!(i.disabled||i.readOnly&&!("keydown"===t.type&&t.ctrlKey&&67===t.keyCode||!1===c.tabThrough&&t.keyCode===a.keyCode.TAB))){switch(t.type){case"input":if(!0===te)return te=!1,t.preventDefault();p&&(ae=!0);break;case"keydown":ee=!1,te=!1;break;case"keypress":if(!0===ee)return t.preventDefault();ee=!0;break;case"click":if(f||m){var s=arguments;return setTimeout(function(){r.apply(i,s)},0),!1}}var l=r.apply(i,arguments);return ae&&(ae=!1,setTimeout(function(){I(i,i.inputmask.caretPos,n,!0)})),!1===l&&(t.preventDefault(),t.stopPropagation()),l}t.preventDefault()}};t.inputmask.events[i]=t.inputmask.events[i]||[],t.inputmask.events[i].push(o),-1!==e.inArray(i,["submit","reset"])?null!==t.form&&e(t.form).on(i,o):e(t).on(i,o)},off:function(t,i){var n;t.inputmask&&t.inputmask.events&&(i?(n=[])[i]=t.inputmask.events[i]:n=t.inputmask.events,e.each(n,function(i,n){for(;n.length>0;){var a=n.pop();-1!==e.inArray(i,["submit","reset"])?null!==t.form&&e(t.form).off(i,a):e(t).off(i,a)}delete t.inputmask.events[i]}))}},oe={keydownEvent:function(t){var i=this,n=e(i),r=t.keyCode,o=I(i);if(r===a.keyCode.BACKSPACE||r===a.keyCode.DELETE||m&&r===a.keyCode.BACKSPACE_SAFARI||t.ctrlKey&&r===a.keyCode.X&&!l("cut"))t.preventDefault(),K(0,r,o),R(i,E(!0),h().p,t,i.inputmask._valueGet()!==E().join("")),i.inputmask._valueGet()===M().join("")?n.trigger("cleared"):!0===V(E())&&n.trigger("complete");else if(r===a.keyCode.END||r===a.keyCode.PAGE_DOWN){t.preventDefault();var s=F(v());c.insertMode||s!==h().maskLength||t.shiftKey||s--,I(i,t.shiftKey?o.begin:s,s,!0)}else r===a.keyCode.HOME&&!t.shiftKey||r===a.keyCode.PAGE_UP?(t.preventDefault(),I(i,0,t.shiftKey?o.begin:0,!0)):(c.undoOnEscape&&r===a.keyCode.ESCAPE||90===r&&t.ctrlKey)&&!0!==t.altKey?(G(i,!0,!1,Q.split("")),n.trigger("click")):r!==a.keyCode.INSERT||t.shiftKey||t.ctrlKey?!0===c.tabThrough&&r===a.keyCode.TAB?(!0===t.shiftKey?(null===S(o.begin).match.fn&&(o.begin=F(o.begin)),o.end=T(o.begin,!0),o.begin=T(o.end,!0)):(o.begin=F(o.begin,!0),o.end=F(o.begin,!0),o.end<h().maskLength&&o.end--),o.begin<h().maskLength&&(t.preventDefault(),I(i,o.begin,o.end))):t.shiftKey||!1===c.insertMode&&(r===a.keyCode.RIGHT?setTimeout(function(){var e=I(i);I(i,e.begin)},0):r===a.keyCode.LEFT&&setTimeout(function(){var e=I(i);I(i,X?e.begin+1:e.begin-1)},0)):(c.insertMode=!c.insertMode,I(i,c.insertMode||o.begin!==h().maskLength?o.begin:o.begin-1));c.onKeyDown.call(this,t,E(),I(i).begin,c),ie=-1!==e.inArray(r,c.ignorables)},keypressEvent:function(t,i,r,o,s){var l=this,u=e(l),p=t.which||t.charCode||t.keyCode;if(!(!0===i||t.ctrlKey&&t.altKey)&&(t.ctrlKey||t.metaKey||ie))return p===a.keyCode.ENTER&&Q!==E().join("")&&(Q=E().join(""),setTimeout(function(){u.trigger("change")},0)),!0;if(p){46===p&&!1===t.shiftKey&&""!==c.radixPoint&&(p=c.radixPoint.charCodeAt(0));var f,m=i?{begin:s,end:s}:I(l),d=String.fromCharCode(p);h().writeOutBuffer=!0;var v=_(m,d,o);if(!1!==v&&(g(!0),f=v.caret!==n?v.caret:F(v.pos.begin?v.pos.begin:v.pos),h().p=f),f=c.numericInput&&v.caret===n?T(f):f,!1!==r&&(setTimeout(function(){c.onKeyValidation.call(l,p,v,c)},0),h().writeOutBuffer&&!1!==v)){var k=E();R(l,k,f,t,!0!==i),!0!==i&&setTimeout(function(){!0===V(k)&&u.trigger("complete")},0)}if(t.preventDefault(),i)return!1!==v&&(v.forwardPosition=f),v}},pasteEvent:function(i){var n,a=this,r=i.originalEvent||i,o=e(a),s=a.inputmask._valueGet(!0),l=I(a);X&&(n=l.end,l.end=l.begin,l.begin=n);var u=s.substr(0,l.begin),p=s.substr(l.end,s.length);if(u===(X?M().reverse():M()).slice(0,l.begin).join("")&&(u=""),p===(X?M().reverse():M()).slice(l.end).join("")&&(p=""),X&&(n=u,u=p,p=n),t.clipboardData&&t.clipboardData.getData)s=u+t.clipboardData.getData("Text")+p;else{if(!r.clipboardData||!r.clipboardData.getData)return!0;s=u+r.clipboardData.getData("text/plain")+p}var f=s;if(e.isFunction(c.onBeforePaste)){if(!1===(f=c.onBeforePaste.call(J,s,c)))return i.preventDefault();f||(f=s)}return G(a,!1,!1,X?f.split("").reverse():f.toString().split("")),R(a,E(),F(v()),i,Q!==E().join("")),!0===V(E())&&o.trigger("complete"),i.preventDefault()},inputFallBackEvent:function(t){var i,n,r=this,o=r.inputmask._valueGet();if(E().join("")!==o){var s=I(r);if(n=s,"."===(i=o).charAt(n.begin-1)&&""!==c.radixPoint&&((i=i.split(""))[n.begin-1]=c.radixPoint.charAt(0),i=i.join("")),o=function(e,t,i){if(f){var n=t.replace(E().join(""),"");if(1===n.length){var a=t.split("");
12171a.splice(i.begin,0,n),t=a.join("")}}return t}(0,o=i,s),E().join("")!==o){var l=E().join(""),u=o.length>l.length?-1:0,p=o.substr(0,s.begin),m=o.substr(s.begin),d=l.substr(0,s.begin+u),h=l.substr(s.begin+u),g=s,v="",k=!1;if(p!==d){for(var y=(k=p.length>=d.length)?p.length:d.length,b=0;p.charAt(b)===d.charAt(b)&&b<y;b++);k&&(0===u&&(g.begin=b),v+=p.slice(b,g.end))}if(m!==h&&(m.length>h.length?v+=m.slice(0,1):m.length<h.length&&(g.end+=h.length-m.length,k||""===c.radixPoint||""!==m||p.charAt(g.begin+u-1)!==c.radixPoint||(g.begin--,v=c.radixPoint))),R(r,E(),{begin:g.begin+u,end:g.end+u}),v.length>0)e.each(v.split(""),function(t,i){var n=new e.Event("keypress");n.which=i.charCodeAt(0),ie=!1,oe.keypressEvent.call(r,n)});else{g.begin===g.end-1&&(g.begin=T(g.begin+1),g.begin===g.end-1?I(r,g.begin):I(r,g.begin,g.end));var x=new e.Event("keydown");x.keyCode=a.keyCode.DELETE,oe.keydownEvent.call(r,x),!1===c.insertMode&&I(r,I(r).begin-1)}t.preventDefault()}}},setValueEvent:function(t){this.inputmask.refreshValue=!1;var i=this.inputmask._valueGet(!0);e.isFunction(c.onBeforeMask)&&(i=c.onBeforeMask.call(J,i,c)||i),i=i.split(""),G(this,!0,!1,X?i.reverse():i),Q=E().join(""),(c.clearMaskOnLostFocus||c.clearIncomplete)&&this.inputmask._valueGet()===M().join("")&&this.inputmask._valueSet("")},focusEvent:function(e){var t=this,i=t.inputmask._valueGet();c.showMaskOnFocus&&(!c.showMaskOnHover||c.showMaskOnHover&&""===i)&&(t.inputmask._valueGet()!==E().join("")?R(t,E(),F(v())):!1===ne&&I(t,F(v()))),!0===c.positionCaretOnTab&&!1===ne&&oe.clickEvent.apply(t,[e,!0]),Q=E().join("")},mouseleaveEvent:function(e){if(ne=!1,c.clearMaskOnLostFocus&&i.activeElement!==this){var t=E().slice(),n=this.inputmask._valueGet();n!==this.getAttribute("placeholder")&&""!==n&&(-1===v()&&n===M().join("")?t=[]:H(t),R(this,t))}},clickEvent:function(t,a){var r=this;setTimeout(function(){if(i.activeElement===r){var t=I(r);if(a&&(X?t.end=t.begin:t.begin=t.end),t.begin===t.end)switch(c.positionCaretOnClick){case"none":break;case"select":I(r,0,E().length);break;case"radixFocus":if(function(t){if(""!==c.radixPoint){var i=h().validPositions;if(i[t]===n||i[t].input===N(t)){if(t<F(-1))return!0;var a=e.inArray(c.radixPoint,E());if(-1!==a){for(var r in i)if(a<r&&i[r].input!==N(r))return!1;return!0}}}return!1}(t.begin)){var o=E().join("").indexOf(c.radixPoint);I(r,c.numericInput?F(o):o);break}default:var s=t.begin,l=v(s,!0),u=F(l);if(s<u)I(r,j(s,!0)||j(s-1,!0)?s:F(s));
12171else{var p=h().validPositions[l],f=P(u,p?p.match.locator:n,p),m=N(u,f.match);if(""!==m&&E()[u]!==m&&!0!==f.match.optionalQuantifier&&!0!==f.match.newBlockMarker||!j(u,!0)&&f.match.def===m){var d=F(u);(s>=d||s===u)&&(u=d)}I(r,u)}}}},0)},dblclickEvent:function(e){var t=this;setTimeout(function(){I(t,0,F(v()))},0)},cutEvent:function(n){var r=e(this),o=I(this),s=n.originalEvent||n,l=t.clipboardData||s.clipboardData,u=X?E().slice(o.end,o.begin):E().slice(o.begin,o.end);l.setData("text",X?u.reverse().join(""):u.join("")),i.execCommand&&i.execCommand("copy"),K(0,a.keyCode.DELETE,o),R(this,E(),h().p,n,Q!==E().join("")),this.inputmask._valueGet()===M().join("")&&r.trigger("cleared")},blurEvent:function(t){var i=e(this);if(this.inputmask){var a=this.inputmask._valueGet(),r=E().slice();""===a&&q===n||(c.clearMaskOnLostFocus&&(-1===v()&&a===M().join("")?r=[]:H(r)),!1===V(r)&&(setTimeout(function(){i.trigger("incomplete")},0),c.clearIncomplete&&(g(),r=c.clearMaskOnLostFocus?[]:M().slice())),R(this,r,n,t)),Q!==E().join("")&&(Q=r.join(""),i.trigger("change"))}},mouseenterEvent:function(e){ne=!0,i.activeElement!==this&&c.showMaskOnHover&&this.inputmask._valueGet()!==E().join("")&&R(this,E())},submitEvent:function(e){Q!==E().join("")&&W.trigger("change"),c.clearMaskOnLostFocus&&-1===v()&&Y.inputmask._valueGet&&Y.inputmask._valueGet()===M().join("")&&Y.inputmask._valueSet(""),c.removeMaskOnSubmit&&(Y.inputmask._valueSet(Y.inputmask.unmaskedvalue(),!0),setTimeout(function(){R(Y,E())},0))},resetEvent:function(e){Y.inputmask.refreshValue=!0,setTimeout(function(){W.trigger("setvalue")},0)}};if(a.prototype.positionColorMask=function(e,t){e.style.left=t.offsetLeft+"px"},r!==n)switch(r.action){case"isComplete":return Y=r.el,V(E());case"unmaskedvalue":return Y!==n&&r.value===n||(Z=r.value,Z=(e.isFunction(c.onBeforeMask)&&c.onBeforeMask.call(J,Z,c)||Z).split(""),G(n,!1,!1,X?Z.reverse():Z),e.isFunction(c.onBeforeWrite)&&c.onBeforeWrite.call(J,n,E(),0,c)),B(Y);case"mask":!function(t){re.off(t);var a=function(t,a){var r=t.getAttribute("type"),s="INPUT"===t.tagName&&-1!==e.inArray(r,a.supportsInputType)||t.isContentEditable||"TEXTAREA"===t.tagName;if(!s)if("INPUT"===t.tagName){var l=i.createElement("input");l.setAttribute("type",r),s="text"===l.type,l=null}else s="partial";return!1!==s?function(t){function r(){return this.inputmask?this.inputmask.opts.autoUnmask?this.inputmask.unmaskedvalue():-1!==v()||!0!==a.nullable?i.activeElement===this&&a.clearMaskOnLostFocus?(X?H(E().slice()).reverse():H(E().slice())).join(""):l.call(this):"":l.call(this)}function s(t){u.call(this,t),this.inputmask&&e(this).trigger("setvalue")}var l,u,c;if(!t.inputmask.__valueGet){if(!0!==a.noValuePatching){if(Object.getOwnPropertyDescriptor){"function"!=typeof Object.getPrototypeOf&&(Object.getPrototypeOf="object"===o("test".__proto__)?function(e){return e.__proto__}:function(e){return e.constructor.prototype});var p=Object.getPrototypeOf?Object.getOwnPropertyDescriptor(Object.getPrototypeOf(t),"value"):n;p&&p.get&&p.set?(l=p.get,u=p.set,Object.defineProperty(t,"value",{get:r,set:s,configurable:!0})):"INPUT"!==t.tagName&&(l=function(){return this.textContent},u=function(e){this.textContent=e},Object.defineProperty(t,"value",{get:r,set:s,configurable:!0}))}else i.__lookupGetter__&&t.__lookupGetter__("value")&&(l=t.__lookupGetter__("value"),u=t.__lookupSetter__("value"),t.__defineGetter__("value",r),t.__defineSetter__("value",s));t.inputmask.__valueGet=l,t.inputmask.__valueSet=u}t.inputmask._valueGet=function(e){return X&&!0!==e?l.call(this.el).split("").reverse().join(""):l.call(this.el)},t.inputmask._valueSet=function(e,t){u.call(this.el,null===e||e===n?"":!0!==t&&X?e.split("").reverse().join(""):e)},l===n&&(l=function(){return this.value},u=function(e){this.value=e},function(t){if(e.valHooks&&(e.valHooks[t]===n||!0!==e.valHooks[t].inputmaskpatch)){var i=e.valHooks[t]&&e.valHooks[t].get?e.valHooks[t].get:function(e){return e.value},r=e.valHooks[t]&&e.valHooks[t].set?e.valHooks[t].set:function(e,t){return e.value=t,e};e.valHooks[t]={get:function(e){if(e.inputmask){if(e.inputmask.opts.autoUnmask)return e.inputmask.unmaskedvalue();var t=i(e);return-1!==v(n,n,e.inputmask.maskset.validPositions)||!0!==a.nullable?t:""}return i(e)},set:function(t,i){var n,a=e(t);return n=r(t,i),t.inputmask&&a.trigger("setvalue"),n},inputmaskpatch:!0}}}(t.type),c=t,re.on(c,"mouseenter",function(t){var i=e(this);this.inputmask._valueGet()!==E().join("")&&i.trigger("setvalue")}))}}(t):t.inputmask=n,s}(t,c);if(!1!==a&&(W=e(Y=t),-1===($=Y!==n?Y.maxLength:n)&&($=n),!0===c.colorMask&&U(Y),p&&("inputmode"in Y&&(Y.inputmode=c.inputmode,Y.setAttribute("inputmode",c.inputmode)),!0===c.disablePredictiveText&&("autocorrect"in Y?Y.autocorrect=!1:(!0!==c.colorMask&&U(Y),Y.type="password"))),!0===a&&(re.on(Y,"submit",oe.submitEvent),re.on(Y,"reset",oe.resetEvent),re.on(Y,"mouseenter",oe.mouseenterEvent),re.on(Y,"blur",oe.blurEvent),re.on(Y,"focus",oe.focusEvent),re.on(Y,"mouseleave",oe.mouseleaveEvent),!0!==c.colorMask&&re.on(Y,"click",oe.clickEvent),re.on(Y,"dblclick",oe.dblclickEvent),re.on(Y,"paste",oe.pasteEvent),re.on(Y,"dragdrop",oe.pasteEvent),re.on(Y,"drop",oe.pasteEvent),re.on(Y,"cut",oe.cutEvent),re.on(Y,"complete",c.oncomplete),re.on(Y,"incomplete",c.onincomplete),re.on(Y,"cleared",c.oncleared),p||!0===c.inputEventOnly?Y.removeAttribute("maxLength"):(re.on(Y,"keydown",oe.keydownEvent),re.on(Y,"keypress",oe.keypressEvent)),re.on(Y,"compositionstart",e.noop),re.on(Y,"compositionupdate",e.noop),re.on(Y,"compositionend",e.noop),re.on(Y,"keyup",e.noop),re.on(Y,"input",oe.inputFallBackEvent),re.on(Y,"beforeinput",e.noop)),re.on(Y,"setvalue",oe.setValueEvent),Q=M().join(""),""!==Y.inputmask._valueGet(!0)||!1===c.clearMaskOnLostFocus||i.activeElement===Y)){var r=e.isFunction(c.onBeforeMask)&&c.onBeforeMask.call(J,Y.
12171inputmask._valueGet(!0),c)||Y.inputmask._valueGet(!0);""!==r&&G(Y,!0,!1,X?r.split("").reverse():r.split(""));var s=E().slice();Q=s.join(""),!1===V(s)&&c.clearIncomplete&&g(),c.clearMaskOnLostFocus&&i.activeElement!==Y&&(-1===v()?s=[]:H(s)),R(Y,s),i.activeElement===Y&&I(Y,F(v()))}}(Y);break;case"format":return Z=(e.isFunction(c.onBeforeMask)&&c.onBeforeMask.call(J,r.value,c)||r.value).split(""),G(n,!0,!1,X?Z.reverse():Z),r.metadata?{value:X?E().slice().reverse().join(""):E().join(""),metadata:u.call(this,{action:"getmetadata"},s,c)}:X?E().slice().reverse().join(""):E().join("");case"isValid":r.value?(Z=r.value.split(""),G(n,!0,!0,X?Z.reverse():Z)):r.value=E().join("");for(var se=E(),le=L(),ue=se.length-1;ue>le&&!j(ue);ue--);return se.splice(le,ue+1-le),V(se)&&r.value===E().join("");case"getemptymask":return M().join("");case"remove":return Y&&Y.inputmask&&(W=e(Y),Y.inputmask._valueSet(c.autoUnmask?B(Y):Y.inputmask._valueGet(!0)),re.off(Y),Y.inputmask.colorMask&&((q=Y.inputmask.colorMask).removeChild(Y),q.parentNode.insertBefore(Y,q),q.parentNode.removeChild(q)),Object.getOwnPropertyDescriptor&&Object.getPrototypeOf?Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Y),"value")&&Y.inputmask.__valueGet&&Object.defineProperty(Y,"value",{get:Y.inputmask.__valueGet,set:Y.inputmask.__valueSet,configurable:!0}):i.__lookupGetter__&&Y.__lookupGetter__("value")&&Y.inputmask.__valueGet&&(Y.__defineGetter__("value",Y.inputmask.__valueGet),Y.__defineSetter__("value",Y.inputmask.__valueSet)),Y.inputmask=n),Y;case"getmetadata":if(e.isArray(s.metadata)){var ce=d(!0,0,!1).join("");return e.each(s.metadata,function(e,t){if(t.mask===ce)return ce=t,!1}),ce}return s.metadata}}var c=navigator.userAgent,p=l("touchstart"),f=/iemobile/i.test(c),m=/iphone/i.test(c)&&!f;return a.prototype={dataAttribute:"data-inputmask",defaults:{placeholder:"_",optionalmarker:["[","]"],quantifiermarker:["{","}"],groupmarker:["(",")"],alternatormarker:"|",escapeChar:"\\",mask:null,regex:null,oncomplete:e.noop,onincomplete:e.noop,oncleared:e.noop,repeat:0,greedy:!0,autoUnmask:!1,removeMaskOnSubmit:!1,clearMaskOnLostFocus:!0,insertMode:!0,clearIncomplete:!1,alias:null,onKeyDown:e.noop,onBeforeMask:null,onBeforePaste:function(t,i){return e.isFunction(i.onBeforeMask)?i.onBeforeMask.call(this,t,i):t},onBeforeWrite:null,onUnMask:null,showMaskOnFocus:!0,showMaskOnHover:!0,onKeyValidation:e.noop,skipOptionalPartCharacter:" ",numericInput:!1,rightAlign:!1,undoOnEscape:!0,radixPoint:"",radixPointDefinitionSymbol:n,groupSeparator:"",keepStatic:null,positionCaretOnTab:!0,tabThrough:!1,supportsInputType:["text","tel","password","search"],ignorables:[8,9,13,19,27,33,34,35,36,37,38,39,40,45,46,93,112,113,114,115,116,117,118,119,120,121,122,123,0,229],isComplete:null,canClearPosition:e.noop,preValidation:null,postValidation:null,staticDefinitionSymbol:n,jitMasking:!1,nullable:!0,inputEventOnly:!1,noValuePatching:!1,positionCaretOnClick:"lvp",casing:null,inputmode:"verbatim",colorMask:!1,disablePredictiveText:!1,importDataAttributes:!0},definitions:{9:{validator:"[0-91-9]",definitionSymbol:"*"},a:{validator:"[A-Za-zÀ-ÿ¨¸A-yµ]",definitionSymbol:"*"},"*":{validator:"[0-91-9A-Za-zÀ-ÿ¨¸A-yµ]"}},aliases:{},masksCache:{},mask:function(o){var l=this;return"string"==typeof o&&(o=i.getElementById(o)||i.querySelectorAll(o)),o=o.nodeName?[o]:o,e.each(o,function(i,o){var c=e.extend(!0,{},l.opts);if(function(i,a,o,s){if(!0===a.importDataAttributes){var l,u,c,p,f=function(e,a){null!==(a=a!==n?a:i.getAttribute(s+"-"+e))&&("string"==typeof a&&(0===e.indexOf("on")?a=t[a]:"false"===a?a=!1:"true"===a&&(a=!0)),o[e]=a)},m=i.getAttribute(s);if(m&&""!==m&&(m=m.replace(/'/g,'"'),u=JSON.parse("{"+m+"}")),u){c=n;for(p in u)if("alias"===p.toLowerCase()){c=u[p];break}}f("alias",c),o.alias&&r(o.alias,o,a);for(l in a){if(u){c=n;for(p in u)if(p.toLowerCase()===l.toLowerCase()){c=u[p];break}}f(l,c)}}return e.extend(!0,a,o),("rtl"===i.dir||a.rightAlign)&&(i.style.textAlign="right"),("rtl"===i.dir||a.numericInput)&&(i.dir="ltr",i.removeAttribute("dir"),a.isRTL=!0),Object.keys(o).length}(o,c,e.extend(!0,{},l.userOptions),l.dataAttribute)){var p=s(c,l.noMasksCache);p!==n&&(o.inputmask!==n&&(o.inputmask.opts.autoUnmask=!0,o.inputmask.remove()),o.inputmask=new a(n,n,!0),o.inputmask.opts=c,o.inputmask.noMasksCache=l.noMasksCache,o.inputmask.userOptions=e.extend(!0,{},l.userOptions),o.inputmask.isRTL=c.isRTL||c.numericInput,o.inputmask.el=o,o.inputmask.maskset=p,e.data(o,"_inputmask_opts",c),u.call(o.inputmask,{action:"mask"}))}}),o&&o[0]&&o[0].inputmask||this},option:function(t,i){return"string"==typeof t?this.opts[t]:"object"===(void 0===t?"undefined":o(t))?(e.extend(this.userOptions,t),this.el&&!0!==i&&this.mask(this.el),this):void 0},unmaskedvalue:function(e){return this.maskset=this.maskset||s(this.opts,this.noMasksCache),u.call(this,{action:"unmaskedvalue",value:e})},remove:function(){return u.call(this,{action:"remove"})},getemptymask:function(){return this.maskset=this.maskset||s(this.opts,this.noMasksCache),u.call(this,{action:"getemptymask"})},hasMaskedValue:function(){return!this.opts.autoUnmask},isComplete:function(){return this.maskset=this.maskset||s(this.opts,this.noMasksCache),u.call(this,{action:"isComplete"})},getmetadata:function(){return this.maskset=this.maskset||s(this.opts,this.noMasksCache),u.call(this,{action:"getmetadata"})},isValid:function(e){return this.maskset=this.maskset||s(this.opts,this.noMasksCache),u.call(this,{action:"isValid",value:e})},format:function(e,t){return this.maskset=this.maskset||s(this.opts,this.noMasksCache),u.call(this,{action:"format",value:e,metadata:t})},analyseMask:function(t,i,r){function o(e,t,i,n){this.matches=[],this.openGroup=e||!1,this.alternatorGroup=!1,this.isGroup=e||!1,this.isOptional=t||!1,this.isQuantifier=i||!1,this.isAlternator=n||!1,this.quantifier={min:1,max:1}}function s(t,o,s){s=s!==n?s:t.matches.length;var l=t.matches[s-1];if(i)0===o.indexOf("[")||k&&/\\d|\\s|\\w]/i.test(o)||"."===o?t.matches.splice(s++,0,{fn:new RegExp(o,r.casing?"i":""),optionality:t.isOptional,newBlockMarker:l===n||l.def!==o,casing:null,def:o,placeholder:n,nativeDef:o}):(k&&(o=o[o.length-1]),e.each(o.split(""),function(e,i){l=t.matches[s-1],t.matches.splice(s++,0,{fn:null,optionality:t.isOptional,newBlockMarker:l===n||l.def!==i&&null!==l.fn,casing:null,def:r.staticDefinitionSymbol||i,placeholder:r.staticDefinitionSymbol!==n?i:n,nativeDef:i})})),k=!1;else{var u=(r.definitions?r.definitions[o]:n)||a.prototype.definitions[o];u&&!k?t.matches.splice(s++,0,{fn:u.validator?"string"==typeof u.validator?new RegExp(u.validator,r.casing?"i":""):new function(){this.test=u.validator}:new RegExp("."),optionality:t.isOptional,newBlockMarker:l===n||l.def!==(u.definitionSymbol||o),casing:u.casing,def:u.definitionSymbol||o,placeholder:u.placeholder,nativeDef:o}):(t.matches.splice(s++,0,{fn:null,optionality:t.isOptional,newBlockMarker:l===n||l.def!==o&&null!==l.fn,casing:null,def:r.staticDefinitionSymbol||o,placeholder:r.staticDefinitionSymbol!==n?o:n,nativeDef:o}),k=!1)}}function l(){if(b.length>0){if(s(f=b[b.length-1],c),f.isAlternator){m=b.pop();for(var e=0;e<m.matches.length;e++)m.matches[e].isGroup=!1;b.length>0?(f=b[b.length-1]).matches.push(m):y.matches.push(m)}}else s(y,c)}var u,c,p,f,m,d,h,g=/(?:[?*+]|\{[0-9\+\*]+(?:,[0-9\+\*]*)?\})|[^.?*+^${[]()|\\]+|./g,v=/\[\^?]?(?:[^\\\]]+|\\[\S\s]?)*]?|\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\S\s]?)|\((?:\?[:=!]?)?|(?:[?*+]|\{[0-9]+(?:,[0-9]*)?\})\??|[^.?*+^${[()|\\]+|./g,k=!1,y=new o,b=[],x=[];for(i&&(r.optionalmarker[0]=n,r.optionalmarker[1]=n);u=i?v.exec(t):g.exec(t);){if(c=u[0],i)switch(c.charAt(0)){case"?":c="{0,1}";break;case"+":case"*":c="{"+c+"}"}if(k)l();else switch(c.charAt(0)){case r.escapeChar:k=!0,i&&l();break;case r.optionalmarker[1]:case r.groupmarker[1]:if((p=b.pop()).openGroup=!1,p!==n)if(b.length>0){if((f=b[b.length-1]).matches.push(p),f.isAlternator){m=b.pop();for(var P=0;P<m.matches.length;P++)m.matches[P].isGroup=!1,m.matches[P].alternatorGroup=!1;b.length>0?(f=b[b.length-1]).matches.push(m):y.matches.push(m)}}else y.matches.push(p);else l();break;case r.optionalmarker[0]:b.push(new o(!1,!0));break;case r.groupmarker[0]:b.push(new o(!0));break;case r.quantifiermarker[0]:var S=new o(!1,!1,!0),A=(c=c.replace(/[{}]/g,"")).split(","),C=isNaN(A[0])?A[0]:parseInt(A[0]),M=1===A.length?C:isNaN(A[1])?A[1]:parseInt(A[1]);if("*"!==M&&"+"!==M||(C="*"===M?0:1),S.quantifier={min:C,max:M},b.length>0){var E=b[b.length-1].matches;(u=E.pop()).isGroup||((h=new o(!0)).matches.push(u),u=h),E.push(u),E.push(S)}else(u=y.matches.pop()).isGroup||(i&&null===u.fn&&"."===u.def&&(u.fn=new RegExp(u.def,r.casing?"i":"")),(h=new o(!0)).matches.push(u),u=h),y.matches.push(u),y.matches.push(S);break;case r.alternatormarker:if(b.length>0){var w=(f=b[b.length-1]).matches[f.matches.length-1];
12171d=f.openGroup&&(w.matches===n||!1===w.isGroup&&!1===w.isAlternator)?b.pop():f.matches.pop()}else d=y.matches.pop();if(d.isAlternator)b.push(d);else if(d.alternatorGroup?(m=b.pop(),d.alternatorGroup=!1):m=new o(!1,!1,!1,!0),m.matches.push(d),b.push(m),d.openGroup){d.openGroup=!1;var D=new o(!0);D.alternatorGroup=!0,b.push(D)}break;default:l()}}for(;b.length>0;)p=b.pop(),y.matches.push(p);return y.matches.length>0&&(function t(a){a&&a.matches&&e.each(a.matches,function(e,o){var l=a.matches[e+1];(l===n||l.matches===n||!1===l.isQuantifier)&&o&&o.isGroup&&(o.isGroup=!1,i||(s(o,r.groupmarker[0],0),!0!==o.openGroup&&s(o,r.groupmarker[1]))),t(o)})}(y),x.push(y)),(r.numericInput||r.isRTL)&&function e(t){t.matches=t.matches.reverse();for(var i in t.matches)if(t.matches.hasOwnProperty(i)){var a=parseInt(i);if(t.matches[i].isQuantifier&&t.matches[a+1]&&t.matches[a+1].isGroup){var o=t.matches[i];t.matches.splice(i,1),t.matches.splice(a+1,0,o)}t.matches[i].matches!==n?t.matches[i]=e(t.matches[i]):t.matches[i]=function(e){return e===r.optionalmarker[0]?e=r.optionalmarker[1]:e===r.optionalmarker[1]?e=r.optionalmarker[0]:e===r.groupmarker[0]?e=r.groupmarker[1]:e===r.groupmarker[1]&&(e=r.groupmarker[0]),e}(t.matches[i])}return t}(x[0]),x}},a.extendDefaults=function(t){e.extend(!0,a.prototype.defaults,t)},a.extendDefinitions=function(t){e.extend(!0,a.prototype.definitions,t)},a.extendAliases=function(t){e.extend(!0,a.prototype.aliases,t)},a.format=function(e,t,i){return a(t).format(e,i)},a.unmask=function(e,t){return a(t).unmaskedvalue(e)},a.isValid=function(e,t){return a(t).isValid(e)},a.remove=function(t){e.each(t,function(e,t){t.inputmask&&t.inputmask.remove()})},a.escapeRegex=function(e){return e.replace(new RegExp("(\\"+["/",".","*","+","?","|","(",")","[","]","{","}","\\","$","^"].join("|\\")+")","gim"),"\\$1")},a.keyCode={BACKSPACE:8,BACKSPACE_SAFARI:127,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,RIGHT:39,SPACE:32,TAB:9,UP:38,X:88,CONTROL:17},a})?n.apply(t,a):n)&&(e.exports=r)},function(e,t){e.exports=jQuery},function(e,t,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}i(4),i(7),i(8),i(9);var a=n(i(1)),r=n(i(0)),o=n(i(2));r.default===o.default&&i(10),window.Inputmask=a.default},function(e,t,i){"use strict";var n,a,r;"function"==typeof Symbol&&Symbol.iterator,a=[i(0),i(1)],void 0!==(r="function"==typeof(n=function(e,t){function i(e){if(!e.tokenizer){var t=[];for(var i in o)-1===t.indexOf(i[0])&&t.push(i[0]);e.tokenizer="("+t.join("+|")+")+?|.",e.tokenizer=new RegExp(e.tokenizer,"g")}return e.tokenizer}function n(e,n,a){for(var r,s="";r=i(a).exec(e);)void 0===n?s+=o[r[0]]?"("+o[r[0]][0]+")":t.escapeRegex(r[0]):o[r[0]]?s+=o[r[0]][3].call(n.date):s+=r[0];return s}function a(e,t){for(e=String(e),t=t||2;e.length<t;)e="0"+e;return e}function r(e,t,n){var a,r,s,l,u,c,p,f,m={date:new Date(1,0,1)},d=e;if("string"==typeof d){for(;r=i(n).exec(t);){var h=d.slice(0,r[0].length);o.hasOwnProperty(r[0])&&(a=o[r[0]][2],s=o[r[0]][1],l=m,u=h,c=n,p=void 0,f=void 0,"year"===a?(l[a]=(f=4===(p=u).length?p:(new Date).getFullYear().toString().substr(0,4-p.length)+p,n.min&&n.min.year&&n.max&&n.max.year?(f=f.replace(/[^0-9]/g,""),f=p.charAt(0)===n.max.year.charAt(0)?p.replace(/[^0-9]/g,"0"):f+n.min.year.substr(f.length)):f=f.replace(/[^0-9]/g,"0"),f),l["raw"+a]=u):l[a]=c.min&&u.match(/[^0-9]/)?c.min[a]:u,void 0!==s&&s.call(l.date,"month"==a?parseInt(l[a])-1:l[a])),d=d.slice(h.length)}return m}}var o={d:["[1-9]|[12][0-9]|3[01]",Date.prototype.setDate,"day",Date.prototype.getDate],dd:["0[1-9]|[12][0-9]|3[01]",Date.prototype.setDate,"day",function(){return a(Date.prototype.getDate.call(this),2)}],ddd:[""],dddd:[""],m:["[1-9]|1[012]",Date.prototype.setMonth,"month",function(){return Date.prototype.getMonth.call(this)+1}],mm:["0[1-9]|1[012]",Date.prototype.setMonth,"month",function(){return a(Date.prototype.getMonth.call(this)+1,2)}],mmm:[""],mmmm:[""],yy:["[0-9]{2}",Date.prototype.setFullYear,"year",function(){return a(Date.prototype.getFullYear.call(this),2)}],yyyy:["[0-9]{4}",Date.prototype.setFullYear,"year",function(){return a(Date.prototype.getFullYear.call(this),4)}],h:["[1-9]|1[0-2]",Date.prototype.setHours,"hours",Date.prototype.getHours],hh:["0[1-9]|1[0-2]",Date.prototype.setHours,"hours",function(){return a(Date.prototype.getHours.call(this),2)}],hhh:["[0-9]+",Date.prototype.setHours,"hours",Date.prototype.getHours],H:["1?[0-9]|2[0-3]",Date.prototype.setHours,"hours",Date.prototype.getHours],HH:["[01][0-9]|2[0-3]",Date.prototype.setHours,"hours",function(){return a(Date.prototype.getHours.call(this),2)}],HHH:["[0-9]+",Date.prototype.setHours,"hours",Date.prototype.getHours],M:["[1-5]?[0-9]",Date.prototype.setMinutes,"minutes",Date.prototype.getMinutes],MM:["[0-5][0-9]",Date.prototype.setMinutes,"minutes",function(){return a(Date.prototype.getMinutes.call(this),2)}],s:["[1-5]?[0-9]",Date.prototype.setSeconds,"seconds",Date.prototype.getSeconds],ss:["[0-5][0-9]",Date.prototype.setSeconds,"seconds",function(){return a(Date.prototype.getSeconds.call(this),2)}],l:["[0-9]{3}",Date.prototype.setMilliseconds,"milliseconds",function(){return a(Date.prototype.getMilliseconds.call(this),3)}],L:["[0-9]{2}",Date.prototype.setMilliseconds,"milliseconds",function(){return a(Date.prototype.getMilliseconds.call(this),2)}],t:[""],tt:[""],T:[""],TT:[""],Z:[""],o:[""],S:[""]},s={isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:ss",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"};return t.extendAliases({datetime:{mask:function(e){return e.inputFormat=s[e.inputFormat]||e.inputFormat,e.displayFormat=s[e.displayFormat]||e.displayFormat||e.inputFormat,e.outputFormat=s[e.outputFormat]||e.outputFormat||e.inputFormat,e.placeholder=e.placeholder!==t.prototype.defaults.placeholder?e.placeholder:e.inputFormat,e.min=r(e.min,e.inputFormat,e),e.max=r(e.max,e.inputFormat,e),e.regex=n(e.inputFormat,void 0,e),null},inputFormat:"isoDateTime",displayFormat:void 0,outputFormat:void 0,min:null,max:null,i18n:{dayNames:["Mon","Tue","Wed","Thu","Fri","Sat","Sun","Monday","Tuesday","Wednesday","Thursday","Frid
12171ay","Saturday","Sunday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"]},postValidation:function(e,t,i){var n,a,o,s,l,u=t,c=r(e.join(""),i.inputFormat,i);return u&&c.date.getTime()==c.date.getTime()&&(s=c,l=u,u=(u=(!isFinite(s.day)||"29"==s.day&&!isFinite(s.rawyear)||new Date(s.date.getFullYear(),isFinite(s.month)?s.month:s.date.getMonth()+1,0).getDate()>=s.day)&&l)&&(n=c.date,o=!0,(a=i).min&&a.min.date.getTime()==a.min.date.getTime()&&(o=o&&a.min.date.getTime()<=n.getTime()),a.max&&a.max.date.getTime()==a.max.date.getTime()&&(o=o&&a.max.date.getTime()>=n.getTime()),o)),u},onKeyDown:function(n,r,o,s){if(n.ctrlKey&&n.keyCode===t.keyCode.RIGHT){for(var l,u=new Date,c="";l=i(s).exec(s.inputFormat);)"d"===l[0].charAt(0)?c+=a(u.getDate(),l[0].length):"m"===l[0].charAt(0)?c+=a(u.getMonth()+1,l[0].length):"yyyy"===l[0]?c+=u.getFullYear().toString():"y"===l[0].charAt(0)&&(c+=a(u.getYear(),l[0].length));this.inputmask._valueSet(c),e(this).trigger("setvalue")}},onUnMask:function(e,t,i){return n(i.outputFormat,r(e,i.inputFormat,i),i)},insertMode:!1}}),t})?n.apply(t,a):n)&&(e.exports=r)},function(e,t,i){"use strict";var n;"function"==typeof Symbol&&Symbol.iterator,void 0!==(n=function(){return window}.call(t,i,t,e))&&(e.exports=n)},function(e,t,i){"use strict";var n;"function"==typeof Symbol&&Symbol.iterator,void 0!==(n=function(){return document}.call(t,i,t,e))&&(e.exports=n)},function(e,t,i){"use strict";var n,a,r;"function"==typeof Symbol&&Symbol.iterator,a=[i(0),i(1)],void 0!==(r="function"==typeof(n=function(e,t){return t.extendDefinitions({A:{validator:"[A-Za-zÀ-ÿ¨¸A-yµ]",casing:"upper"},"&":{validator:"[0-9A-Za-zÀ-ÿ¨¸A-yµ]",casing:"upper"},"#":{validator:"[0-9A-Fa-f]",casing:"upper"}}),t.extendAliases({url:{definitions:{i:{validator:"."}},mask:"(\\http://)|(\\http\\s://)|(ftp://)|(ftp\\s://)i{+}",insertMode:!1,autoUnmask:!1,inputmode:"url"},ip:{mask:"i[i[i]].i[i[i]].i[i[i]].i[i[i]]",definitions:{i:{validator:function(e,t,i,n,a){return i-1>-1&&"."!==t.buffer[i-1]?(e=t.buffer[i-1]+e,e=i-2>-1&&"."!==t.buffer[i-2]?t.buffer[i-2]+e:"0"+e):e="00"+e,new RegExp("25[0-5]|2[0-4][0-9]|[01][0-9][0-9]").test(e)}}},onUnMask:function(e,t,i){return e},inputmode:"numeric"},email:{mask:"*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}.-{1,63}[.-{1,63}][.-{1,63}]",greedy:!1,onBeforePaste:function(e,t){return(e=e.toLowerCase()).replace("mailto:","")},definitions:{"*":{validator:"[0-9A-Za-z!#$%&'*+/=?^_`{|}~-]",casing:"lower"},"-":{validator:"[0-9A-Za-z-]",casing:"lower"}},onUnMask:function(e,t,i){return e},inputmode:"email"},mac:{mask:"##:##:##:##:##:##"},vin:{mask:"V{13}9{4}",definitions:{V:{validator:"[A-HJ-NPR-Za-hj-npr-z\\d]",casing:"upper"}},clearIncomplete:!0,autoUnmask:!0}}),t})?n.apply(t,a):n)&&(e.exports=r)},function(e,t,i){"use strict";var n,a,r;"function"==typeof Symbol&&Symbol.iterator,a=[i(0),i(1)],void 0!==(r="function"==typeof(n=function(e,t,i){function n(e,i){for(var n="",a=0;a<e.length;a++)t.prototype.definitions[e.charAt(a)]||i.definitions[e.charAt(a)]||i.optionalmarker.start===e.charAt(a)||i.optionalmarker.end===e.charAt(a)||i.quantifiermarker.start===e.charAt(a)||i.quantifiermarker.end===e.charAt(a)||i.groupmarker.start===e.charAt(a)||i.groupmarker.end===e.charAt(a)||i.alternatormarker===e.charAt(a)?n+="\\"+e.charAt(a):n+=e.charAt(a);return n}return t.extendAliases({numeric:{mask:function(e){if(0!==e.repeat&&isNaN(e.integerDigits)&&(e.integerDigits=e.repeat),e.repeat=0,e.groupSeparator===e.radixPoint&&e.digits&&"0"!==e.digits&&("."===e.radixPoint?e.groupSeparator=",":","===e.radixPoint?e.groupSeparator=".":e.groupSeparator="")," "===e.groupSeparator&&(e.skipOptionalPartCharacter=i),e.autoGroup=e.autoGroup&&""!==e.groupSeparator,e.autoGroup&&("string"==typeof e.groupSize&&isFinite(e.groupSize)&&(e.groupSize=parseInt(e.groupSize)),isFinite(e.integerDigits))){var t=Math.floor(e.integerDigits/e.groupSize),a=e.integerDigits%e.groupSize;e.integerDigits=parseInt(e.integerDigits)+(0===a?t-1:t),e.integerDigits<1&&(e.integerDigits="*")}e.placeholder.length>1&&(e.placeholder=e.placeholder.charAt(0)),"radixFocus"===e.positionCaretOnClick&&""===e.placeholder&&!1===e.integerOptional&&(e.positionCaretOnClick="lvp"),e.definitions[";"]=e.definitions["~"],e.definitions[";
12171"].definitionSymbol="~",!0===e.numericInput&&(e.positionCaretOnClick="radixFocus"===e.positionCaretOnClick?"lvp":e.positionCaretOnClick,e.digitsOptional=!1,isNaN(e.digits)&&(e.digits=2),e.decimalProtect=!1);var r="[+]";if(r+=n(e.prefix,e),!0===e.integerOptional?r+="~{1,"+e.integerDigits+"}":r+="~{"+e.integerDigits+"}",e.digits!==i){e.radixPointDefinitionSymbol=e.decimalProtect?":":e.radixPoint;var o=e.digits.toString().split(",");isFinite(o[0]&&o[1]&&isFinite(o[1]))?r+=e.radixPointDefinitionSymbol+";{"+e.digits+"}":(isNaN(e.digits)||parseInt(e.digits)>0)&&(e.digitsOptional?r+="["+e.radixPointDefinitionSymbol+";{1,"+e.digits+"}]":r+=e.radixPointDefinitionSymbol+";{"+e.digits+"}")}return r+=n(e.suffix,e),r+="[-]",e.greedy=!1,r},placeholder:"",greedy:!1,digits:"*",digitsOptional:!0,enforceDigitsOnBlur:!1,radixPoint:".",positionCaretOnClick:"radixFocus",groupSize:3,groupSeparator:"",autoGroup:!1,allowMinus:!0,negationSymbol:{front:"-",back:""},integerDigits:"+",integerOptional:!0,prefix:"",suffix:"",rightAlign:!0,decimalProtect:!0,min:null,max:null,step:1,insertMode:!0,autoUnmask:!1,unmaskAsNumber:!1,inputmode:"numeric",preValidation:function(t,n,a,r,o){if("-"===a||a===o.negationSymbol.front)return!0===o.allowMinus&&(o.isNegative=o.isNegative===i||!o.isNegative,""===t.join("")||{caret:n,dopost:!0});if(!1===r&&a===o.radixPoint&&o.digits!==i&&(isNaN(o.digits)||parseInt(o.digits)>0)){var s=e.inArray(o.radixPoint,t);if(-1!==s)return!0===o.numericInput?n===s:{caret:s+1}}return!0},postValidation:function(n,a,r){var o=r.suffix.split(""),s=r.prefix.split("");if(a.pos===i&&a.caret!==i&&!0!==a.dopost)return a;var l=a.caret!==i?a.caret:a.pos,u=n.slice();r.numericInput&&(l=u.length-l-1,u=u.reverse());var c=u[l];if(c===r.groupSeparator&&(c=u[l+=1]),l===u.length-r.suffix.length-1&&c===r.radixPoint)return a;c!==i&&c!==r.radixPoint&&c!==r.negationSymbol.front&&c!==r.negationSymbol.back&&(u[l]="?",r.prefix.length>0&&l>=(!1===r.isNegative?1:0)&&l<r.prefix.length-1+(!1===r.isNegative?1:0)?s[l-(!1===r.isNegative?1:0)]="?":r.suffix.length>0&&l>=u.length-r.suffix.length-(!1===r.isNegative?1:0)&&(o[l-(u.length-r.suffix.length-(!1===r.isNegative?1:0))]="?")),s=s.join(""),o=o.join("");var p=u.join("").replace(s,"");if(p=(p=(p=(p=p.replace(o,"")).replace(new RegExp(t.escapeRegex(r.groupSeparator),"g"),"")).replace(new RegExp("[-"+t.escapeRegex(r.negationSymbol.front)+"]","g"),"")).replace(new RegExp(t.escapeRegex(r.negationSymbol.back)+"$"),""),isNaN(r.placeholder)&&(p=p.replace(new RegExp(t.escapeRegex(r.placeholder),"g"),"")),p.length>1&&1!==p.indexOf(r.radixPoint)&&("0"===c&&(p=p.replace(/^\?/g,"")),p=p.replace(/^0/g,"")),p.charAt(0)===r.radixPoint&&""!==r.radixPoint&&!0!==r.numericInput&&(p="0"+p),""!==p){if(p=p.split(""),(!r.digitsOptional||r.enforceDigitsOnBlur&&"blur"===a.event)&&isFinite(r.digits)){var f=e.inArray(r.radixPoint,p),m=e.inArray(r.radixPoint,u);-1===f&&(p.push(r.radixPoint),f=p.length-1);for(var d=1;d<=r.digits;d++)r.digitsOptional&&(!r.enforceDigitsOnBlur||"blur"!==a.event)||p[f+d]!==i&&p[f+d]!==r.placeholder.charAt(0)?-1!==m&&u[m+d]!==i&&(p[f+d]=p[f+d]||u[m+d]):p[f+d]=a.placeholder||r.placeholder.charAt(0)}if(!0!==r.autoGroup||""===r.groupSeparator||c===r.radixPoint&&a.pos===i&&!a.dopost)p=p.join("");else{var h=p[p.length-1]===r.radixPoint&&a.c===r.radixPoint;p=t(function(e,t){var i="";if(i+="("+t.groupSeparator+"*{"+t.groupSize+"}){*}",""!==t.radixPoint){var n=e.join("").split(t.radixPoint);n[1]&&(i+=t.radixPoint+"*{"+n[1].match(/^\d*\??\d*/)[0].length+"}")}return i}(p,r),{numericInput:!0,jitMasking:!0,definitions:{"*":{validator:"[0-9?]",cardinality:1}}}).format(p.join("")),h&&(p+=r.radixPoint),p.charAt(0)===r.groupSeparator&&p.substr(1)}}if(r.isNegative&&"blur"===a.event&&(r.isNegative="0"!==p),p=s+p,p+=o,r.isNegative&&(p=r.negationSymbol.front+p,p+=r.negationSymbol.back),p=p.split(""),c!==i)if(c!==r.radixPoint&&c!==r.negationSymbol.front&&c!==r.negationSymbol.back)(l=e.inArray("?",p))>-1?p[l]=c:l=a.caret||0;else if(c===r.radixPoint||c===r.negationSymbol.front||c===r.negationSymbol.back){var g=e.inArray(c,p);-1!==g&&(l=g)}r.numericInput&&(l=p.length-l-1,p=p.reverse());var v={caret:c===i||a.pos!==i?l+(r.numericInput?-1:1):l,buffer:p,refreshFromBuffer:a.dopost||n.join("")!==p.join("")};return v.refreshFromBuffer?v:a},onBeforeWrite:function(n,a,r,o){if(n)switch(n.type){case"keydown":return o.postValidation(a,{caret:r,dopost:!0},o);case"blur":case"checkval":var s;if((l=o).parseMinMaxOptions===i&&(null!==l.min&&(l.min=l.min.toString().replace(new RegExp(t.escapeRegex(l.groupSeparator),"g"),""),","===l.radixPoint&&(l.min=l.min.replace(l.radixPoint,".")),l.min=isFinite(l.min)?parseFloat(l.min):NaN,isNaN(l.min)&&(l.min=Number.MIN_VALUE)),null!==l.max&&(l.max=l.max.toString().replace(new RegExp(t.escapeRegex(l.groupSeparator),"g"),""),","===l.radixPoint&&(l.max=l.max.replace(l.radixPoint,".")),l.max=isFinite(l.max)?parseFloat(l.max):NaN,isNaN(l.max)&&(l.max=Number.MAX_VALUE)),l.parseMinMaxOptions="done"),null!==o.min||null!==o.max){if(s=o.onUnMask(a.join(""),i,e.extend({},o,{unmaskAsNumber:!0})),null!==o.min&&s<o.min)return o.isNegative=o.min<0,o.postValidation(o.min.toString().replace(".",o.radixPoint).split(""),{caret:r,dopost:!0,placeholder:"0"},o);if(null!==o.max&&s>o.max)return o.isNegative=o.max<0,o.postValidation(o.max.toString().replace(".",o.radixPoint).split(""),{caret:r,dopost:!0,placeholder:"0"},o)}return o.postValidation(a,{caret:r,placeholder:"0",event:"blur"},o);case"_checkval":return{caret:r}}var l},regex:{integerPart:function(e,i){return i?new RegExp("["+t.escapeRegex(e.negationSymbol.front)+"+]?"):new RegExp("["+t.escapeRegex(e.negationSymbol.front)+"+]?\\d+")},integerNPart:function(e){return new RegExp("[\\d"+t.escapeRegex(e.groupSeparator)+t.escapeRegex(e.placeholder.charAt(0))+"]+")}},definitions:{"~":{validator:function(e,n,a,r,o,s){var l=r?new RegExp("[0-9"+t.escapeRegex(o.groupSeparator)+"]").test(e):new RegExp("[0-9]").test(e);
12171if(!0===l){if(!0!==o.numericInput&&n.validPositions[a]!==i&&"~"===n.validPositions[a].match.def&&!s){var u=n.buffer.join(""),c=(u=(u=u.replace(new RegExp("[-"+t.escapeRegex(o.negationSymbol.front)+"]","g"),"")).replace(new RegExp(t.escapeRegex(o.negationSymbol.back)+"$"),"")).split(o.radixPoint);c.length>1&&(c[1]=c[1].replace(/0/g,o.placeholder.charAt(0))),"0"===c[0]&&(c[0]=c[0].replace(/0/g,o.placeholder.charAt(0))),u=c[0]+o.radixPoint+c[1]||"";var p=n._buffer.join("");for(u===o.radixPoint&&(u=p);null===u.match(t.escapeRegex(p)+"$");)p=p.slice(1);l=(u=(u=u.replace(p,"")).split(""))[a]===i?{pos:a,remove:a}:{pos:a}}}else r||e!==o.radixPoint||n.validPositions[a-1]!==i||(n.buffer[a]="0",l={pos:a+1});return l},cardinality:1},"+":{validator:function(e,t,i,n,a){return a.allowMinus&&("-"===e||e===a.negationSymbol.front)},cardinality:1,placeholder:""},"-":{validator:function(e,t,i,n,a){return a.allowMinus&&e===a.negationSymbol.back},cardinality:1,placeholder:""},":":{validator:function(e,i,n,a,r){var o="["+t.escapeRegex(r.radixPoint)+"]",s=new RegExp(o).test(e);return s&&i.validPositions[n]&&i.validPositions[n].match.placeholder===r.radixPoint&&(s={caret:n+1}),s},cardinality:1,placeholder:function(e){return e.radixPoint}}},onUnMask:function(e,i,n){if(""===i&&!0===n.nullable)return i;var a=e.replace(n.prefix,"");return a=(a=a.replace(n.suffix,"")).replace(new RegExp(t.escapeRegex(n.groupSeparator),"g"),""),""!==n.placeholder.charAt(0)&&(a=a.replace(new RegExp(n.placeholder.charAt(0),"g"),"0")),n.unmaskAsNumber?(""!==n.radixPoint&&-1!==a.indexOf(n.radixPoint)&&(a=a.replace(t.escapeRegex.call(this,n.radixPoint),".")),a=(a=a.replace(new RegExp("^"+t.escapeRegex(n.negationSymbol.front)),"-")).replace(new RegExp(t.escapeRegex(n.negationSymbol.back)+"$"),""),Number(a)):a},isComplete:function(e,i){var n=e.join("");if(e.slice().join("")!==n)return!1;var a=n.replace(i.prefix,"");return a=(a=a.replace(i.suffix,"")).replace(new RegExp(t.escapeRegex(i.groupSeparator)+"([0-9]{3})","g"),"$1"),","===i.radixPoint&&(a=a.replace(t.escapeRegex(i.radixPoint),".")),isFinite(a)},onBeforeMask:function(e,n){if(n.isNegative=i,e=e.toString().charAt(e.length-1)===n.radixPoint?e.toString().substr(0,e.length-1):e.toString(),""!==n.radixPoint&&isFinite(e)){var a=e.split("."),r=""!==n.groupSeparator?parseInt(n.groupSize):0;2===a.length&&(a[0].length>r||a[1].length>r||a[0].length<=r&&a[1].length<r)&&(e=e.replace(".",n.radixPoint))}var o=e.match(/,/g),s=e.match(/\./g);if(e=s&&o?s.length>o.length?(e=e.replace(/\./g,"")).replace(",",n.radixPoint):o.length>s.length?(e=e.replace(/,/g,"")).replace(".",n.radixPoint):e.indexOf(".")<e.indexOf(",")?e.replace(/\./g,""):e.replace(/,/g,""):e.replace(new RegExp(t.escapeRegex(n.groupSeparator),"g"),""),0===n.digits&&(-1!==e.indexOf(".")?e=e.substring(0,e.indexOf(".")):-1!==e.indexOf(",")&&(e=e.substring(0,e.indexOf(",")))),""!==n.radixPoint&&isFinite(n.digits)&&-1!==e.indexOf(n.radixPoint)){var l=e.split(n.radixPoint)[1].match(new RegExp("\\d*"))[0];if(parseInt(n.digits)<l.toString().length){var u=Math.pow(10,parseInt(n.digits));e=e.replace(t.escapeRegex(n.radixPoint),"."),e=(e=Math.round(parseFloat(e)*u)/u).toString().replace(".",n.radixPoint)}}return e},canClearPosition:function(e,t,i,n,a){var r=e.validPositions[t],o=r.input!==a.radixPoint||null!==e.validPositions[t].match.fn&&!1===a.decimalProtect||r.input===a.radixPoint&&e.validPositions[t+1]&&null===e.validPositions[t+1].match.fn||isFinite(r.input)||t===i||r.input===a.groupSeparator||r.input===a.negationSymbol.front||r.input===a.negationSymbol.back;return!o||"+"!==r.match.nativeDef&&"-"!==r.match.nativeDef||(a.isNegative=!1),o},onKeyDown:function(i,n,a,r){var o=e(this);if(i.ctrlKey)switch(i.keyCode){case t.keyCode.UP:o.val(parseFloat(this.inputmask.unmaskedvalue())+parseInt(r.step)),o.trigger("setvalue");break;case t.keyCode.DOWN:o.val(parseFloat(this.inputmask.unmaskedvalue())-parseInt(r.step)),o.trigger("setvalue")}}},currency:{prefix:"$ ",groupSeparator:",",alias:"numeric",placeholder:"0",autoGroup:!0,digits:2,digitsOptional:!1,clearMaskOnLostFocus:!1},decimal:{alias:"numeric"},integer:{alias:"numeric",digits:0,radixPoint:""},percentage:{alias:"numeric",digits:2,digitsOptional:!0,radixPoint:".",placeholder:"0",autoGroup:!1,min:0,max:100,suffix:" %",allowMinus:!1}}),t})?n.apply(t,a):n)&&(e.exports=r)},function(e,t,i){"use strict";var n,a,r;"function"==typeof Symbol&&Symbol.iterator,a=[i(0),i(1)],void 0!==(r="function"==typeof(n=function(e,t){function i(e,t){var i=(e.mask||e).replace(/#/g,"0").replace(/\)/,"0").replace(/[+()#-]/g,""),n=(t.mask||t).replace(/#/g,"0").replace(/\)/,"0").replace(/[+()#-]/g,"");return i.localeCompare(n)}
12171var n=t.prototype.analyseMask;return t.prototype.analyseMask=function(t,i,a){var r={};return a.phoneCodes&&(a.phoneCodes&&a.phoneCodes.length>1e3&&(function e(i,n,a){n=n||"",a=a||r,""!==n&&(a[n]={});for(var o="",s=a[n]||a,l=i.length-1;l>=0;l--)s[o=(t=i[l].mask||i[l]).substr(0,1)]=s[o]||[],s[o].unshift(t.substr(1)),i.splice(l,1);for(var u in s)s[u].length>500&&e(s[u].slice(),u,s)}((t=t.substr(1,t.length-2)).split(a.groupmarker[1]+a.alternatormarker+a.groupmarker[0])),t=function t(i){var n="",r=[];for(var o in i)e.isArray(i[o])?1===i[o].length?r.push(o+i[o]):r.push(o+a.groupmarker[0]+i[o].join(a.groupmarker[1]+a.alternatormarker+a.groupmarker[0])+a.groupmarker[1]):r.push(o+t(i[o]));return 1===r.length?n+=r[0]:n+=a.groupmarker[0]+r.join(a.groupmarker[1]+a.alternatormarker+a.groupmarker[0])+a.groupmarker[1],n}(r)),t=t.replace(/9/g,"\\9")),n.call(this,t,i,a)},t.extendAliases({abstractphone:{groupmarker:["<",">"],countrycode:"",phoneCodes:[],keepStatic:"auto",mask:function(e){return e.definitions={"#":t.prototype.definitions[9]},e.phoneCodes.sort(i)},onBeforeMask:function(e,t){var i=e.replace(/^0{1,2}/,"").replace(/[\s]/g,"");return(i.indexOf(t.countrycode)>1||-1===i.indexOf(t.countrycode))&&(i="+"+t.countrycode+i),i},onUnMask:function(e,t,i){return e.replace(/[()#-]/g,"")},inputmode:"tel"}}),t})?n.apply(t,a):n)&&(e.exports=r)},function(e,t,i){"use strict";var n,a,r,o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};a=[i(2),i(1)],void 0!==(r="function"==typeof(n=function(e,t){return void 0===e.fn.inputmask&&(e.fn.inputmask=function(i,n){var a,r=this[0];if(void 0===n&&(n={}),"string"==typeof i)switch(i){case"unmaskedvalue":return r&&r.inputmask?r.inputmask.unmaskedvalue():e(r).val();case"remove":return this.each(function(){this.inputmask&&this.inputmask.remove()});case"getemptymask":return r&&r.inputmask?r.inputmask.getemptymask():"";case"hasMaskedValue":return!(!r||!r.inputmask)&&r.inputmask.hasMaskedValue();case"isComplete":return!r||!r.inputmask||r.inputmask.isComplete();case"getmetadata":return r&&r.inputmask?r.inputmask.getmetadata():void 0;case"setvalue":e(r).val(n),r&&void 0===r.inputmask&&e(r).triggerHandler("setvalue");break;case"option":if("string"!=typeof n)return this.each(function(){if(void 0!==this.inputmask)return this.inputmask.option(n)});if(r&&void 0!==r.inputmask)return r.inputmask.option(n);break;default:return n.alias=i,a=new t(n),this.each(function(){a.mask(this)})}else{if("object"==(void 0===i?"undefined":o(i)))return a=new t(i),void 0===i.mask&&void 0===i.alias?this.each(function(){if(void 0!==this.inputmask)return this.inputmask.option(i);a.mask(this)}):this.each(function(){a.mask(this)});if(void 0===i)return this.each(function(){(a=new t(n)).mask(this)})}}),e.fn.inputmask})?n.apply(t,a):n)&&(e.exports=r)}]); 12172/* End */ 12173; 12174; /* Start:"a:4:{s:4:"full";s:65:"/local/templates/aspro_max/js/jquery.easing.1.3.js?16523557218095";s:6:"source";s:50:"/local/templates/aspro_max/js/jquery.easing.1.3.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 12175/* 12176 * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ 12177 * 12178 * Uses the built in easing capabilities added In jQuery 1.1 12179 * to offer multiple easing options 12180 * 12181 * TERMS OF USE - jQuery Easing 12182 * 12183 * Open source under the BSD License. 12184 * 12185 * Copyright © 2008 George McGinley Smith 12186 * All rights reserved. 12187 * 12188 * Redistribution and use in source and binary forms, with or without modification, 12189 * are permitted provided that the following conditions are met: 12190 * 12191 * Redistributions of source code must retain the above copyright notice, this list of 12192 * conditions and the following disclaimer. 12193 * Redistributions in binary form must reproduce the above copyright notice, this list 12194 * of conditions and the following disclaimer in the documentation and/or other materials 12195 * provided with the distribution. 12196 * 12197 * Neither the name of the author nor the names of contributors may be used to endorse 12198 * or promote products derived from this software without specific prior written permission. 12199 * 12200 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 12201 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 12202 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 12203 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
vendor: 5,091 bytes, lines 12204-12349
12204 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 12205 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 12206 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 12207 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 12208 * OF THE POSSIBILITY OF SUCH DAMAGE. 12209 * 12210*/ 12211 12212// t: current time, b: begInnIng value, c: change In value, d: duration 12213jQuery.easing['jswing'] = jQuery.easing['swing']; 12214 12215jQuery.extend( jQuery.easing, 12216{ 12217 def: 'easeOutQuad', 12218 swing: function (x, t, b, c, d) { 12219 //alert(jQuery.easing.default); 12220 return jQuery.easing[jQuery.easing.def](x, t, b, c, d); 12221 }, 12222 easeInQuad: function (x, t, b, c, d) { 12223 return c*(t/=d)*t + b; 12224 }, 12225 easeOutQuad: function (x, t, b, c, d) { 12226 return -c *(t/=d)*(t-2) + b; 12227 }, 12228 easeInOutQuad: function (x, t, b, c, d) { 12229 if ((t/=d/2) < 1) return c/2*t*t + b; 12230 return -c/2 * ((--t)*(t-2) - 1) + b; 12231 }, 12232 easeInCubic: function (x, t, b, c, d) { 12233 return c*(t/=d)*t*t + b; 12234 }, 12235 easeOutCubic: function (x, t, b, c, d) { 12236 return c*((t=t/d-1)*t*t + 1) + b; 12237 }, 12238 easeInOutCubic: function (x, t, b, c, d) { 12239 if ((t/=d/2) < 1) return c/2*t*t*t + b; 12240 return c/2*((t-=2)*t*t + 2) + b; 12241 }, 12242 easeInQuart: function (x, t, b, c, d) { 12243 return c*(t/=d)*t*t*t + b; 12244 }, 12245 easeOutQuart: function (x, t, b, c, d) { 12246 return -c * ((t=t/d-1)*t*t*t - 1) + b; 12247 }, 12248 easeInOutQuart: function (x, t, b, c, d) { 12249 if ((t/=d/2) < 1) return c/2*t*t*t*t + b; 12250 return -c/2 * ((t-=2)*t*t*t - 2) + b; 12251 }, 12252 easeInQuint: function (x, t, b, c, d) { 12253 return c*(t/=d)*t*t*t*t + b; 12254 }, 12255 easeOutQuint: function (x, t, b, c, d) { 12256 return c*((t=t/d-1)*t*t*t*t + 1) + b; 12257 }, 12258 easeInOutQuint: function (x, t, b, c, d) { 12259 if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b; 12260 return c/2*((t-=2)*t*t*t*t + 2) + b; 12261 }, 12262 easeInSine: function (x, t, b, c, d) { 12263 return -c * Math.cos(t/d * (Math.PI/2)) + c + b; 12264 }, 12265 easeOutSine: function (x, t, b, c, d) { 12266 return c * Math.sin(t/d * (Math.PI/2)) + b; 12267 }, 12268 easeInOutSine: function (x, t, b, c, d) { 12269 return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b; 12270 }, 12271 easeInExpo: function (x, t, b, c, d) { 12272 return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b; 12273 }, 12274 easeOutExpo: function (x, t, b, c, d) { 12275 return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b; 12276 }, 12277 easeInOutExpo: function (x, t, b, c, d) { 12278 if (t==0) return b; 12279 if (t==d) return b+c; 12280 if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b; 12281 return c/2 * (-Math.pow(2, -10 * --t) + 2) + b; 12282 }, 12283 easeInCirc: function (x, t, b, c, d) { 12284 return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b; 12285 }, 12286 easeOutCirc: function (x, t, b, c, d) { 12287 return c * Math.sqrt(1 - (t=t/d-1)*t) + b; 12288 }, 12289 easeInOutCirc: function (x, t, b, c, d) { 12290 if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b; 12291 return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b; 12292 }, 12293 easeInElastic: function (x, t, b, c, d) { 12294 var s=1.70158;var p=0;var a=c; 12295 if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; 12296 if (a < Math.abs(c)) { a=c; var s=p/4; } 12297 else var s = p/(2*Math.PI) * Math.asin (c/a); 12298 return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; 12299 }, 12300 easeOutElastic: function (x, t, b, c, d) { 12301 var s=1.70158;var p=0;var a=c; 12302 if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; 12303 if (a < Math.abs(c)) { a=c; var s=p/4; } 12304 else var s = p/(2*Math.PI) * Math.asin (c/a); 12305 return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b; 12306 }, 12307 easeInOutElastic: function (x, t, b, c, d) { 12308 var s=1.70158;var p=0;var a=c; 12309 if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5); 12310 if (a < Math.abs(c)) { a=c; var s=p/4; } 12311 else var s = p/(2*Math.PI) * Math.asin (c/a); 12312 if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; 12313 return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b; 12314 }, 12315 easeInBack: function (x, t, b, c, d, s) { 12316 if (s == undefined) s = 1.70158; 12317 return c*(t/=d)*t*((s+1)*t - s) + b; 12318 }, 12319 easeOutBack: function (x, t, b, c, d, s) { 12320 if (s == undefined) s = 1.70158; 12321 return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b; 12322 }, 12323 easeInOutBack: function (x, t, b, c, d, s) { 12324 if (s == undefined) s = 1.70158; 12325 if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b; 12326 return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b; 12327 }, 12328 easeInBounce: function (x, t, b, c, d) { 12329 return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b; 12330 }, 12331 easeOutBounce: function (x, t, b, c, d) { 12332 if ((t/=d) < (1/2.75)) { 12333 return c*(7.5625*t*t) + b; 12334 } else if (t < (2/2.75)) { 12335 return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b; 12336 } else if (t < (2.5/2.75)) { 12337 return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b; 12338 } else { 12339 return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b; 12340 } 12341 }, 12342 easeInOutBounce: function (x, t, b, c, d) { 12343 if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b; 12344 return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b; 12345 } 12346}); 12347 12348/* 12349 *
12350 * TERMS OF USE - EASING EQUATIONS 12351 * 12352 * Open source under the BSD License. 12353 * 12354 * Copyright © 2001 Robert Penner 12355 * All rights reserved. 12356 * 12357 * Redistribution and use in source and binary forms, with or without modification, 12358 * are permitted provided that the following conditions are met: 12359 * 12360 * Redistributions of source code must retain the above copyright notice, this list of 12361 * conditions and the following disclaimer. 12362 * Redistributions in binary form must reproduce the above copyright notice, this list 12363 * of conditions and the following disclaimer in the documentation and/or other materials 12364 * provided with the distribution. 12365 * 12366 * Neither the name of the author nor the names of contributors may be used to endorse 12367 * or promote products derived from this software without specific prior written permission. 12368 * 12369 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 12370 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 12371 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 12372 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 12373 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 12374 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 12375 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 12376 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 12377 * OF THE POSSIBILITY OF SUCH DAMAGE. 12378 * 12379 */ 12380/* End */ 12381; 12382; /* Start:"a:4:{s:4:"full";s:59:"/local/templates/aspro_max/js/equalize.min.js?1652355711588";s:6:"source";s:45:"/local/templates/aspro_max/js/equalize.min.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 12383/** 12384 * equalize.js 12385 * Author & copyright (c) 2012: Tim Svensen 12386 * Dual MIT & GPL license 12387 * 12388 * Page: http://tsvensen.github.com/equalize.js 12389 * Repo: https://github.com/tsvensen/equalize.js/ 12390 */ 12391(function(b){b.fn.equalize=function(a){var d=!1,g=!1,c,e;b.isPlainObject(a)?(c=a.equalize||"height",d=a.children||!1,g=a.reset||!1):c=a||"height";if(!b.isFunction(b.fn[c]))return!1;e=0<c.indexOf("eight")?"height":"width";return this.each(function(){var a=d?b(this).find(d):b(this).children(),f=0;a.each(function(){var a=b(this);g&&a.css(e,"");a=a[c]();a>f&&(f=a)});a.css(e,f+"px")})}})(jQuery); 12392/* End */ 12393; 12394; /* Start:"a:4:{s:4:"full";s:67:"/local/templates/aspro_max/js/jquery.alphanumeric.js?16523557151901";s:6:"source";s:52:"/local/templates/aspro_max/js/jquery.alphanumeric.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 12395(function ($) { 12396 $.fn.alphanumeric = function (p) { 12397 var input = $(this), 12398 az = "abcdefghijklmnopqrstuvwxyz", 12399 options = $.extend({ 12400 ichars: '!@#$%^&*()+=[]\\\';,/{}|":<>?~`.- _', 12401 nchars: '', 12402 allow: '' 12403 }, p), 12404 s = options.allow.split(''), 12405 i = 0, 12406 ch, 12407 regex; 12408 12409 for (i; i < s.length; i++) { 12410 if (options.ichars.indexOf(s[i]) != -1) { 12411 s[i] = '\\' + s[i]; 12412 } 12413 } 12414 12415 if (options.nocaps) { 12416 options.nchars += az.toUpperCase(); 12417 } 12418 if (options.allcaps) { 12419 options.nchars += az; 12420 } 12421 12422 options.allow = s.join('|'); 12423 12424 regex = new RegExp(options.allow, 'gi'); 12425 ch = (options.ichars + options.nchars).replace(regex, ''); 12426 12427 input.keypress(function (e) { 12428 var key = String.fromCharCode(!e.charCode ? e.which : e.charCode); 12429 12430 if (ch.indexOf(key) != -1 && !e.ctrlKey) { 12431 e.preventDefault(); 12432 } 12433 }); 12434 12435 input.blur(function () { 12436 var value = input.val(), 12437 j = 0; 12438 12439 for (j; j < value.length; j++) { 12440 if (ch.indexOf(value[j]) != -1) { 12441 input.val(''); 12442 return false; 12443 } 12444 } 12445 return false; 12446 }); 12447 12448 return input; 12449 }; 12450 12451 $.fn.numeric = function (p) { 12452 var az = 'abcdefghijklmnopqrstuvwxyz', 12453 aZ = az.toUpperCase(); 12454 12455 return this.each(function () {
12456 $(this).alphanumeric($.extend({ nchars: az + aZ }, p)); 12457 }); 12458 }; 12459 12460 $.fn.alpha = function (p) { 12461 var nm = '1234567890'; 12462 return this.each(function () { 12463 $(this).alphanumeric($.extend({ nchars: nm }, p)); 12464 }); 12465 }; 12466})(jQuery); 12467/* End */ 12468; 12469; /* Start:"a:4:{s:4:"full";s:61:"/local/templates/aspro_max/js/jquery.cookie.js?16523557073066";s:6:"source";s:46:"/local/templates/aspro_max/js/jquery.cookie.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 12470/*! 12471 * jQuery Cookie Plugin v1.4.0 12472 * https://github.com/carhartl/jquery-cookie 12473 * 12474 * Copyright 2013 Klaus Hartl 12475 * Released under the MIT license 12476 */ 12477(function (factory) { 12478 if (typeof define === 'function' && define.amd) { 12479 // AMD. Register as anonymous module. 12480 define(['jquery'], factory); 12481 } else { 12482 // Browser globals. 12483 factory(jQuery); 12484 } 12485}(function ($) { 12486 12487 var pluses = /\+/g; 12488 12489 function encode(s) { 12490 return config.raw ? s : encodeURIComponent(s); 12491 } 12492 12493 function decode(s) { 12494 return config.raw ? s : decodeURIComponent(s); 12495 } 12496 12497 function stringifyCookieValue(value) { 12498 return encode(config.json ? JSON.stringify(value) : String(value)); 12499 } 12500 12501 function parseCookieValue(s) { 12502 if (s.indexOf('"') === 0) { 12503 // This is a quoted cookie as according to RFC2068, unescape... 12504 s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\'); 12505 } 12506 12507 try { 12508 // Replace server-side written pluses with spaces. 12509 // If we can't decode the cookie, ignore it, it's unusable. 12510 // If we can't parse the cookie, ignore it, it's unusable. 12511 s = decodeURIComponent(s.replace(pluses, ' ')); 12512 return config.json ? JSON.parse(s) : s; 12513 } catch(e) {} 12514 } 12515 12516 function read(s, converter) { 12517 var value = config.raw ? s : parseCookieValue(s); 12518 return $.isFunction(converter) ? converter(value) : value; 12519 } 12520 12521 var config = $.cookie = function (key, value, options) { 12522 12523 // Write 12524 12525 if (value !== undefined && !$.isFunction(value)) { 12526 options = $.extend({}, config.defaults, options); 12527 12528 if (typeof options.expires === 'number') { 12529 var days = options.expires, t = options.expires = new Date(); 12530 t.setTime(+t + days * 864e+5); 12531 } 12532 12533 return (document.cookie = [ 12534 encode(key), '=', stringifyCookieValue(value), 12535 options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE 12536 options.path ? '; path=' + options.path : '', 12537 options.domain ? '; domain=' + options.domain : '', 12538 options.secure ? '; secure' : '' 12539 ].join('')); 12540 } 12541 12542 // Read 12543 12544 var result = key ? undefined : {}; 12545 12546 // To prevent the for loop in the first place assign an empty array 12547 // in case there are no cookies at all. Also prevents odd result when 12548 // calling $.cookie(). 12549 var cookies = document.cookie ? document.cookie.split('; ') : []; 12550 12551 for (var i = 0, l = cookies.length; i < l; i++) { 12552 var parts = cookies[i].split('='); 12553 var name = decode(parts.shift()); 12554 var cookie = parts.join('='); 12555 12556 if (key && key === name) { 12557 // If second argument (value) is a function it's a converter... 12558 result = read(cookie, value); 12559 break; 12560 } 12561 12562 // Prevent storing a cookie that we couldn't decode. 12563 if (!key && (cookie = read(cookie)) !== undefined) { 12564 result[name] = cookie; 12565 } 12566 } 12567 12568 return result; 12569 }; 12570 12571 config.defaults = {}; 12572 12573 $.removeCookie = function (key, options) { 12574 if ($.cookie(key) === undefined) { 12575 return false; 12576 } 12577 12578 // Must not alter options, thus extending a fresh object... 12579 $.cookie(key, '', $.extend({}, options, { expires: -1 })); 12580 return !$.cookie(key); 12581 }; 12582 12583})); 12584 12585/* End */ 12586; 12587; /* Start:"a:4:{s:4:"full";s:65:"/local/templates/aspro_max/js/jquery.plugin.min.js?16523557033178";s:6:"source";s:50:"/local/templates/aspro_max/js/jquery.plugin.min.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 12588/** Abstract base class for collection plugins v1.0.1. 12589 Written by Keith Wood (kbwood{at}iinet.com.au) December 2013. 12590 Licensed under the MIT (http://keith-wood.name/licence.html) license. */ 12591(function(){var j=false;window.JQClass=function(){};JQClass.classes={};JQClass.extend=function extender(f){var g=this.prototype;j=true;var h=new this();j=false;for(var i in f){h[i]=typeof f[i]=='function'&&typeof g[i]=='function'?(function(d,e){return function(){var b=this._super;this._super=function(a){return g[d].apply(this,a||[])};var c=e.apply(this,arguments);this._super=b;return c}})(i,f[i]):f[i]}function JQClass(){if(!j&&this._init){this._init.apply(this,arguments)}}JQClass.prototype=h;JQClass.prototype.constructor=JQClass;JQClass.extend=extender;return JQClass}})();(function($){JQClass.classes.JQPlugin=JQClass.extend({name:'plugin',defaultOptions:{},regionalOptions:{},_getters:[],_getMarker:function(){return'is-'+this.name},_init:function(){$.extend(this.defaultOptions,(this.regionalOptions&&this.regionalOptions[''])||{});var c=camelCase(this.name);$[c]=this;$.fn[c]=function(a){var b=Array.prototype.slice.call(arguments,1
12591);if($[c]._isNotChained(a,b)){return $[c][a].apply($[c],[this[0]].concat(b))}return this.each(function(){if(typeof a==='string'){if(a[0]==='_'||!$[c][a]){throw'Unknown method: '+a;}$[c][a].apply($[c],[this].concat(b))}else{$[c]._attach(this,a)}})}},setDefaults:function(a){$.extend(this.defaultOptions,a||{})},_isNotChained:function(a,b){if(a==='option'&&(b.length===0||(b.length===1&&typeof b[0]==='string'))){return true}return $.inArray(a,this._getters)>-1},_attach:function(a,b){a=$(a);if(a.hasClass(this._getMarker())){return}a.addClass(this._getMarker());b=$.extend({},this.defaultOptions,this._getMetadata(a),b||{});var c=$.extend({name:this.name,elem:a,options:b},this._instSettings(a,b));a.data(this.name,c);this._postAttach(a,c);this.option(a,b)},_instSettings:function(a,b){return{}},_postAttach:function(a,b){},_getMetadata:function(d){try{var f=d.data(this.name.toLowerCase())||'';f=f.replace(/'/g,'"');f=f.replace(/([a-zA-Z0-9]+):/g,function(a,b,i){var c=f.substring(0,i).match(/"/g);return(!c||c.length%2===0?'"'+b+'":':b+':')});f=$.parseJSON('{'+f+'}');for(var g in f){var h=f[g];if(typeof h==='string'&&h.match(/^new Date\((.*)\)$/)){f[g]=eval(h)}}return f}catch(e){return{}}},_getInst:function(a){return $(a).data(this.name)||{}},option:function(a,b,c){a=$(a);var d=a.data(this.name);if(!b||(typeof b==='string'&&c==null)){var e=(d||{}).options;return(e&&b?e[b]:e)}if(!a.hasClass(this._getMarker())){return}var e=b||{};if(typeof b==='string'){e={};e[b]=c}this._optionsChanged(a,d,e);$.extend(d.options,e)},_optionsChanged:function(a,b,c){},destroy:function(a){a=$(a);if(!a.hasClass(this._getMarker())){return}this._preDestroy(a,this._getInst(a));a.removeData(this.name).removeClass(this._getMarker())},_preDestroy:function(a,b){}});function camelCase(c){return c.replace(/-([a-z])/g,function(a,b){return b.toUpperCase()})}$.JQPlugin={createPlugin:function(a,b){if(typeof a==='object'){b=a;a='JQPlugin'}a=camelCase(a);var c=camelCase(b.name);JQClass.classes[c]=JQClass.classes[a].extend(b);new JQClass.classes[c]()}}})(jQuery); 12592/* End */ 12593; 12594; /* Start:"a:4:{s:4:"full";s:69:"/local/templates/aspro_max/js/jquery.countdown.min.js?165235570513137";s:6:"source";s:53:"/local/templates/aspro_max/js/jquery.countdown.min.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 12595!function(e){var t="countdown",i=0,s=1,n=2,o=3,r=4,a=5,l=6;e.JQPlugin.createPlugin({name:t,defaultOptions:{until:null,since:null,timezone:null,serverSync:null,format:"dHMS",layout:"",compact:!1,padZeroes:!1,significant:0,description:"",expiryUrl:"",expiryText:"",alwaysExpire:!1,onExpiry:null,onTick:null,tickInterval:1},regionalOptions:{"":{labels:["Years","Months","Weeks","Days","Hours","Minutes","Seconds"],labels1:["Year","Month","Week","Day","Hour","Minute","Second"],compactLabels:["y","m","w","d"],whichLabels:null,digits:["0","1","2","3","4","5","6","7","8","9"],timeSeparator:":",isRTL:!1}},_getters:["getTimes"],_rtlClass:t+"-rtl",_sectionClass:t+"-section",_amountClass:t+"-amount",_periodClass:t+"-period",_rowClass:t+"-row",_holdingClass:t+"-holding",_showClass:t+"-show",_descrClass:t+"-descr",_timerElems:[],_init:function(){function t(e){var a=1e12>e?n?performance.now()+performance.timing.navigationStart:s():e||s();a-r>=1e3&&(i._updateElems(),r=a),o(t)}var i=this;this._super(),this._serverSyncs=[];var s="function"==typeof Date.now?Date.now:function(){return(new Date).getTime()},n=window.performance&&"function"==typeof window.performance.now,o=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||null,r=0;!o||e.noRequestAnimationFrame?(e.noRequestAnimationFrame=null,setInterval(function(){i._updateElems()},980)):(r=window.animationStartTime||window.webkitAnimationStartTime||window.mozAnimationStartTime||window.oAnimationStartTime||window.msAnimationStartTime||s(),o(t))},UTCDate:function(e,t,i,s,n,o,r,a){"object"==typeof t&&t.constructor==Date&&(a=t.getMilliseconds(),r=t.getSeconds(),o=t.getMinutes(),n=t.getHours(),s=t.getDate(),i=t.getMonth(),t=t.getFullYear());var l=new Date;return l.setUTCFullYear(t),l.setUTCDate(1),l.setUTCMonth(i||0),l.setUTCDate(s||1),l.setUTCHours(n||0),l.setUTCMinutes((o||0)-(Math.abs(e)<30?60*e:e)),l.setUTCSeconds(r||0),l.setUTCMilliseconds(a||0),l}
12595,periodsToSeconds:function(e){return 31557600*e[0]+2629800*e[1]+604800*e[2]+86400*e[3]+3600*e[4]+60*e[5]+e[6]},resync:function(){var t=this;e("."+this._getMarker()).each(function(){var i=e.data(this,t.name);if(i.options.serverSync){for(var s=null,n=0;n<t._serverSyncs.length;n++)if(t._serverSyncs[n][0]==i.options.serverSync){s=t._serverSyncs[n];break}if(null==s[2]){var o=e.isFunction(i.options.serverSync)?i.options.serverSync.apply(this,[]):null;s[2]=(o?(new Date).getTime()-o.getTime():0)-s[1]}i._since&&i._since.setMilliseconds(i._since.getMilliseconds()+s[2]),i._until.setMilliseconds(i._until.getMilliseconds()+s[2])}});for(var i=0;i<t._serverSyncs.length;i++)null!=t._serverSyncs[i][2]&&(t._serverSyncs[i][1]+=t._serverSyncs[i][2],delete t._serverSyncs[i][2])},_instSettings:function(e,t){return{_periods:[0,0,0,0,0,0,0]}},_addElem:function(e){this._hasElem(e)||this._timerElems.push(e)},_hasElem:function(t){return e.inArray(t,this._timerElems)>-1},_removeElem:function(t){this._timerElems=e.map(this._timerElems,function(e){return e==t?null:e})},_updateElems:function(){for(var e=this._timerElems.length-1;e>=0;e--)this._updateCountdown(this._timerElems[e])},_optionsChanged:function(t,i,s){s.layout&&(s.layout=s.layout.replace(/</g,"<").replace(/>/g,">")),this._resetExtraLabels(i.options,s);var n=i.options.timezone!=s.timezone;e.extend(i.options,s),this._adjustSettings(t,i,null!=s.until||null!=s.since||n);var o=new Date;(i._since&&i._since<o||i._until&&i._until>o)&&this._addElem(t[0]),this._updateCountdown(t,i)},_updateCountdown:function(t,i){if(t=t.jquery?t:e(t),i=i||this._getInst(t),i&&i.options){if(t.html(this._generateHTML(i)).toggleClass(this._rtlClass,i.options.isRTL),e.isFunction(i.options.onT
12595ick)){var s="lap"!=i._hold?i._periods:this._calculatePeriods(i,i._show,i.options.significant,new Date);(1==i.options.tickInterval||this.periodsToSeconds(s)%i.options.tickInterval==0)&&i.options.onTick.apply(t[0],[s])}var n="pause"!=i._hold&&(i._since?i._now.getTime()<i._since.getTime():i._now.getTime()>=i._until.getTime());if(n&&!i._expiring){if(i._expiring=!0,this._hasElem(t[0])||i.options.alwaysExpire){if(this._removeElem(t[0]),e.isFunction(i.options.onExpiry)&&i.options.onExpiry.apply(t[0],[]),i.options.expiryText){var o=i.options.layout;i.options.layout=i.options.expiryText,this._updateCountdown(t[0],i),i.options.layout=o}i.options.expiryUrl&&(window.location=i.options.expiryUrl)}i._expiring=!1}else"pause"==i._hold&&this._removeElem(t[0])}},_resetExtraLabels:function(e,t){for(var i in t)i.match(/[Ll]abels[02-9]|compactLabels1/)&&(e[i]=t[i]);for(var i in e)i.match(/[Ll]abels[02-9]|compactLabels1/)&&"undefined"==typeof t[i]&&(e[i]=null)},_adjustSettings:function(t,i,s){for(var n=null,o=0;o<this._serverSyncs.length;o++)if(this._serverSyncs[o][0]==i.options.serverSync){n=this._serverSyncs[o][1];break}if(null!=n)var r=i.options.serverSync?n:0,a=new Date;else{var l=e.isFunction(i.options.serverSync)?i.options.serverSync.apply(t[0],[]):null,a=new Date,r=l?a.getTime()-l.getTime():0;this._serverSyncs.push([i.options.serverSync,r])}var _=i.options.timezone;_=null==_?-a.getTimezoneOffset():_,(s||!s&&null==i._until&&null==i._since)&&(i._since=i.options.since,null!=i._since&&(i._since=this.UTCDate(_,this._determineTime(i._since,null)),i._since&&r&&i._since.setMilliseconds(i._since.getMilliseconds()+r)),i._until=this.UTCDate(_,this._determineTime(i.options.until,a)),r&&i._until.setMilliseconds(i._until.getMilliseconds()+r)),i._show=this._determineShow(i)},_preDestroy:function(e,t){this._removeElem(e[0]),e.empty()},pause:function(e){this._hold(e,"pause")},lap:function(e){this._hold(e,"lap")},resume:function(e){this._hold(e,null)},toggle:function(t){var i=e.data(t,this.name)||{};this[i._hold?"resume":"pause"](t)},toggleLap:function(t){var i=e.data(t,this.name)||{};this[i._hold?"resume":"lap"](t)},_hold:function(t,i){var s=e.data(t,this.name);if(s){if("pause"==s._hold&&!i){s._periods=s._savePeriods;var n=s._since?"-":"+";s[s._since?"_since":"_until"]=this._determineTime(n+s._periods[0]+"y"+n+s._periods[1]+"o"+n+s._periods[2]+"w"+n+s._periods[3]+"d"+n+s._periods[4]+"h"+n+s._periods[5]+"m"+n+s._periods[6]+"s"),this._addElem(t)}s._hold=i,s._savePeriods="pause"==i?s._periods:null,e.data(t,this.name,s),this._updateCountdown(t,s)}},getTimes:function(t){var i=e.data(t,this.name);return i?"pause"==i._hold?i._savePeriods:i._hold?this._calculatePeriods(i,i._show,i.options.significant,new Date):i._periods:null},_determineTime:function(e,t){var i=this,s=function(e){var t=new Date;return t.setTime(t.getTime()+1e3*e),t},n=function(e){e=e.toLowerCase();for(var t=new Date,s=t.getFullYear(),n=t.getMonth(),o=t.getDate(),r=t.getHours(),a=t.getMinutes(),l=t.getSeconds(),_=/([+-]?[0-9]+)\s*(s|m|h|d|w|o|y)?/g,p=_.exec(e);p;){switch(p[2]||"s"){case"s":l+=parseInt(p[1],10);break;case"m":a+=parseInt(p[1],10);break;case"h":r+=parseInt(p[1],10);break;case"d":o+=parseInt(p[1],10);break;case"w":o+=7*parseInt(p[1],10);break;case"o":n+=parseInt(p[1],10),o=Math.min(o,i._getDaysInMonth(s,n));break;case"y":s+=parseInt(p[1],10),o=Math.min(o,i._getDaysInMonth(s,n))}p=_.exec(e)}return new Date(s,n,o,r,a,l,0)},o=null==e?t:"string"==typeof e?n(e):"number"==typeof e?s(e):e;return o&&o.setMilliseconds(0),o},_getDaysInMonth:function(e,t){return 32-new Date(e,t,32).getDate()},_normalLabels:function(e){return e},_generateHTML:function(t){var _=this;t._periods=t._hold?t._periods:this._calculatePeriods(t,t._show,t.options.significant,new Date);for(var p=!1,c=0,u=t.options.significant,d=e.extend({},t._show),h=i;l>=h;h++)p|="?"==t._show[h]&&t._periods[h]>0,d[h]="?"!=t._show[h]||p?t._show[h]:null,c+=d[h]?1:0,u-=t._periods[h]>0?1:0;for(var m=[!1,!1,!1,!1,!1,!1,!1],h=l;h>=i;h--)t._show[h]&&(t._periods[h]?m[h]=!0:(m[h]=u>0,u--));var g=t.options.compact?t.options.compactLabels:t.options.labels,f=t.options.whichLabels||this._normalLabels,w=function(e){var i=t.o
12595ptions["compactLabels"+f(t._periods[e])];return d[e]?_._translateDigits(t,t._periods[e])+(i?i[e]:g[e])+" ":""},y=t.options.padZeroes?2:1,v=function(e){var i=t.options["labels"+f(t._periods[e])];return!t.options.significant&&d[e]||t.options.significant&&m[e]?'<span class="'+_._sectionClass+'"><span class="'+_._amountClass+'">'+_._minDigits(t,t._periods[e],y)+'</span><span class="'+_._periodClass+'">'+(i?i[e]:g[e])+"</span></span>":""};return t.options.layout?this._buildLayout(t,d,t.options.layout,t.options.compact,t.options.significant,m):(t.options.compact?'<span class="'+this._rowClass+" "+this._amountClass+(t._hold?" "+this._holdingClass:"")+'">'+w(i)+w(s)+w(n)+w(o)+(d[r]?this._minDigits(t,t._periods[r],2):"")+(d[a]?(d[r]?t.options.timeSeparator:"")+this._minDigits(t,t._periods[a],2):"")+(d[l]?(d[r]||d[a]?t.options.timeSeparator:"")+this._minDigits(t,t._periods[l],2):""):'<span class="'+this._rowClass+" "+this._showClass+(t.options.significant||c)+(t._hold?" "+this._holdingClass:"")+'">'+v(i)+v(s)+v(n)+v(o)+v(r)+v(a)+v(l))+"</span>"+(t.options.description?'<span class="'+this._rowClass+" "+this._descrClass+'">'+t.options.description+"</span>":"")},_buildLayout:function(t,_,p,c,u,d){for(var h=t.options[c?"compactLabels":"labels"],m=t.options.whichLabels||this._normalLabels,g=function(e){return(t.options[(c?"compactLabels":"labels")+m(t._periods[e])]||h)[e]},f=function(e,i){return t.options.digits[Math.floor(e/i)%10]},w={desc:t.options.description,sep:t.options.timeSeparator,yl:g(i),yn:this._minDigits(t,t._periods[i],1),ynn:this._minDigits(t,t._periods[i],2),ynnn:this._minDigits(t,t._periods[i],3),y1:f(t._periods[i],1),y10:f(t._periods[i],10),y100:f(t._periods[i],100),y1000:f(t._periods[i],1e3),ol:g(s),on:this._minDigits(t,t._periods[s],1),onn:this._minDigits(t,t._periods[s],2),onnn:this._minDigits(t,t._periods[s],3),o1:f(t._periods[s],1),o10:f(t._periods[s],10),o100:f(t._periods[s],100),o1000:f(t._periods[s],1e3),wl:g(n),wn:this._minDigits(t,t._periods[n],1),wnn:this._minDigits(t,t._periods[n],2),wnnn:this._minDigits(t,t._periods[n],3),w1:f(t._periods[n],1),w10:f(t._periods[n],10),w100:f(t._periods[n],100),w1000:f(t._periods[n],1e3),dl:g(o),dn:this._minDigits(t,t._periods[o],1),dnn:this._minDigits(t,t._periods[o],2),dnnn:this._minDigits(t,t._periods[o],3),d1:f(t._periods[o],1),d10:f(t._periods[o],10),d100:f(t._periods[o],100),d1000:f(t._periods[o],1e3),hl:g(r),hn:this._minDigits(t,t._periods[r],1),hnn:this._minDigits(t,t._periods[r],2),hnnn:this._minDigits(t,t._periods[r],3),h1:f(t._periods[r],1),h10:f(t._periods[r],10),h100:f(t._periods[r],100),h1000:f(t._periods[r],1e3),ml:g(a),mn:this._minDigits(t,t._periods[a],1),mnn:this._minDigits(t,t._periods[a],2),mnnn:this._minDigits(t,t._periods[a],3),m1:f(t._periods[a],1),m10:f(t._periods[a],10),m100:f(t._periods[a],100),m1000:f(t._periods[a],1e3),sl:g(l),sn:this._minDigits(t,t._periods[l],1),snn:this._minDigits(t,t._periods[l],2),snnn:this._minDigits(t,t._periods[l],3),s1:f(t._periods[l],1),s10:f(t._periods[l],10),s100:f(t._periods[l],100),s1000:f(t._periods[l],1e3)},y=p,v=i;l>=v;v++){var D="yowdhms".charAt(v),T=new RegExp("\\{"+D+"<\\}([\\s\\S]*)\\{"+D+">\\}","g");y=y.replace(T,!u&&_[v]||u&&d[v]?"$1":"")}return e.each(w,function(e,t){var i=new RegExp("\\{"+e+"\\}","g");y=y.replace(i,t)}),y},_minDigits:function(e,t,i){return t=""+t,t.length>=i?this._translateDigits(e,t):(t="0000000000"+t,this._translateDigits(e,t.substr(t.length-i)))},_translateDigits:function(e,t){return(""+t).replace(/[0-9]/g,function(t){return e.options.digits[t]})},_determineShow:function(e){var t=e.options.format,_=[];return _[i]=t.match("y")?"?":t.match("Y")?"!":null,_[s]=t.match("o")?"?":t.match("O")?"!":null,_[n]=t.match("w")?"?":t.match("W")?"!":null,_[o]=t.match("d")?"?":t.match("D")?"!":null,_[r]=t.match("h")?"?":t.match("H")?"!":null,_[a]=t.match("m")?"?":t.match("M")?"!":null,_[l]=t.match("s")?"?":t.match("S")?"!":null,_},_calculatePeriods:function(e,t,_,p){e._now=p,e._now.setMilliseconds(0);var c=new Date(e._now.getTime());e._since?p.getTime()<e._since.getTime()?e._now=p=c:p=e._since:(c.setTime(e._until.getTime()),p.getTime()>e._until.getTime()&&(e._now=p=c));var u=[0,0,0,0,0,0,0];if(t[i]||t[s]){var d=this._getDaysInMonth(p.getFullYear(),p.getMonth()),h=this._getDaysInMonth(c.getFullYear(),c.getMonth()),m=c.getDate()==p.getDate()||c.getDate()>=Math.min(d,h)&&p.getDate()>=Math.min(d,h),g=function(e){return 60*(60*e.getHours()+e.getMinutes())+e.getSeconds()},f=Math.max(0,12*(c.getFullYear()-p.getFullYear())+c.getMonth()-p.getMonth()+(c.getDate()<p.getDate()&&!m||m&&g(c)<g(p)?-1:0));u[i]=t[i]?Math.floor(f/12):0,u[s]=t[s]?f-12*u[i]:0,p=new Date(p.getTime());var w=p.getDate()==d,y=this._getDaysInMonth(p.getFullYear()+u[i],p.getMonth()+u[s]);p.getDate()>y&&p.setDate(y),p.setFullYear(p.getFullYear()+u[i]),p.setMonth(p.getMonth()+u[s]),w&&p.setDate(y)}var v=Math.floor((c.getTime()-p.getTime())/1e3),D=function(e,i){u[e]=t[e]?Math.floor(v/i):0,v-=u[e]*i};if(D(n,604800),D(o,86400),D(r,3600),D(a,60),D(l,1),v>0&&!e._since)for(var T=[1,12,4.3482,7,24,60,60],M=l,S=1,b=l;b>=i;b--)t[b]&&(u[M]>=S&&(u[M]=0,v=1),v>0&&(u[b]++,v=0,M=b,S=1)),S*=T[b];if(_)for(var b=i;l>=b;b++)_&&u[b]?_--:_||(u[b]=0);return u}})}(jQuery); 12596/* End */ 12597; 12598; /* Start:"a:4:{s:4:"full";s:67:"/local/templates/aspro_max/js/jquery.countdown-ru.js?16523557061866";s:6:"source";s:52:"/local/templates/aspro_max/js/jquery.countdown-ru.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 12599/* http://keith-wood.name/countdown.html 12600 * Russian initialisation for the jQuery countdown extension 12601 * Written by Sergey K. (xslade{at}gmail.com) June 2010. */ 12602(function($) { 12603 $.countdown.regionalOptions['ru'] = { 12604 labels: [BX.message('COUNTDOWN_YEAR0'), BX.message('COUNTDOWN_MONTH0'), BX.message('COUNTDOWN_WEAK0'), BX.message('COUNTDOWN_DAY0'), BX.message('COUNTDOWN_HOUR'), BX.message('COUNTDOWN_MIN'), BX.message('COUNTDOWN_SEC')], 12605 labels1: [BX.message('COUNTDOWN_YEAR1'), BX.message('COUNTDOWN_MONTH1'), BX.message('COUNTDOWN_WEAK1'), BX.message('COUNTDOWN_DAY1'), BX.message('COUNTDOWN_HOUR'), BX.message('COUNTDOWN_MIN'), BX.message('COUNTDOWN_SEC')], 12606 labels2: [BX.message('COUNTDOWN_YEAR2'), BX.message('COUNTDOWN_MONTH2'), BX.message('COUNTDOWN_WEAK2'), BX.message('COUNTDOWN_DAY2'), BX.message('COUNTDOWN_HOUR'), BX.message('COUNTDOWN_MIN'), BX.message('COUNTDOWN_SEC')], 12607 compactLabels: [BX.message('COUNTDOWN_COMPACT_YEAR0'), BX.message('COUNTDOWN_COMPACT_MONTH'), BX.message('COUNTDOWN_COMPACT_WEAK'), BX.message('COUNTDOWN_COMPACT_DAY'), BX.message('COUNTDOWN_COMPACT_HOUR'), BX.message('COUNTDOWN_COMPACT_MIN'), BX.message('COUNTDOWN_COMPACT_SEC')], 12608 compactLabels1: [BX.message('COUNTDOWN_COMPACT_YEAR1'), BX.message('COUNTDOWN_COMPACT_MONTH'), BX.message('COUNTDOWN_COMPACT_WEAK'), BX.message('COUNTDOWN_COMPACT_DAY'), BX.message('COUNTDOWN_COMPACT_HOUR'), BX.message('COUNTDOWN_COMPACT_MIN'), BX.message('COUNTDOWN_COMPACT_SEC')], 12609 whichLabels: function(amount) { 12610 var units = amount % 10; 12611 var tens = Math.floor((amount % 100) / 10); 12612 return (amount == 1 ? 1 : (units >= 2 && units <= 4 && tens != 1 ? 2 : 12613 (units == 1 && tens != 1 ? 1 : 0))); 12614 }, 12615 digits: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'], 12616 timeSeparator: ':', isRTL: false}; 12617 $.countdown.setDefaults($.countdown.regionalOptions['ru']); 12618})(jQuery); 12619/* End */ 12620; 12621; /* Start:"a:4:{s:4:"full";s:64:"/local/templates/aspro_max/js/jquery.ikSelect.js?165235571032030";s:6:"source";s:48:"/local/templates/aspro_max/js/jquery.ikSelect.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 12622/*! ikSelect 1.0.3 12623 Copyright (c) 2013 Igor Kozlov 12624 http://igorkozlov.me */ 12625 12626;(function ($, window, document, undefined) { 12627 var $window = $(window); 12628 var defaults = { 12629 syntax: '<div class="ik_select_link"><div class="ik_select_link_text"></div></div><div class="ik_select_dropdown"><div class="ik_select_list"></div></div>', 12630 autoWidth: true, // set select width according to the longest option 12631 ddFullWidth: true, // set dropdown width according to the longest option 12632 equalWidths: true, // include scrollbar width in fake select calculations 12633 dynamicWidth: false, // change fake select's width according to it's contents 12634 extractLink: false, 12635 customClass: '', 12636 linkCustomClass: '', 12637 ddCustomClass: '', 12638 ddMaxHeight: 200, 12639 filter: false, 12640 nothingFoundText: 'Nothing found', 12641 isDisabled: false, 12642 onInit: function() {}, 12643 onShow: function () {}, 12644 onHide: function () {}, 12645 onKeyUp: function () {}, 12646 onKeyDown: function () {}, 12647 onHoverMove: function () {} 12648 }; 12649 12650 var instOpened; // instance of the currently opened select 12651 12652 // browser detection part was taken from jQuery migrate 12653 // https://github.com/jquery/jquery-migrate/blob/e6bda6a84c294eb1319fceb48c09f51042c80892/src/core.js 12654 var uaMatch = function (ua) { 12655 ua = ua.toLowerCase(); 12656 12657 var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || 12658 /(webkit)[ \/]([\w.]+)/.exec(ua) || 12659 /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || 12660 /(msie) ([\w.]+)/.exec(ua) || 12661 ua.indexOf('compatible') < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || 12662 []; 12663 12664 return { 12665 browser: match[1] || '', 12666 version: match[2] || '0' 12667 }; 12668 }; 12669 12670 if (! $.browser) { 12671 var matched = uaMatch(navigator.userAgent); 12672 var browser = {}; 12673 12674 if (matched.browser) { 12675 browser[matched.browser] = true; 12676 browser.version = matched.version; 12677 } 12678 12679 if (browser.chrome) { 12680 browser.webkit = true; 12681 } else if (browser.webkit) { 12682 browser.safari = true; 12683 } 12684 12685 $.browser = browser; 12686 } 12687 12688 $.browser.mobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile/i.test(navigator.userAgent); 12689 $.browser.operamini = Object.prototype.toString.call(window.operamini) === "[object OperaMini]"; 12690 12691 function IkSelect(element, options) { 12692 var dataOptions = {}; // parsed data- attributes 12693 12694 this.el = element; 12695 this.$el = $(element); // original select 12696 12697 for (var key in defaults) { 12698 dataOptions[key] = this.$el.data(key.toLowerCase()); 12699 } 12700 12701 this.options = $.extend({}, defaults, options, dataOptions); 12702 12703 if ($.browser.mobile) { 12704 this.options.filter = false;
12705 } 12706 12707 this.init(); 12708 } 12709 12710 $.extend(IkSelect.prototype, { 12711 init: function () { 12712 this.$wrapper = $('<div class="ik_select">' + this.options.syntax + '</div>'); // wrapper for the fake select and the fake dropdown 12713 this.$link = $('.ik_select_link', this.$wrapper); // fake select 12714 this.$linkText = $('.ik_select_link_text', this.$wrapper); // fake select's text 12715 this.$dropdown = $('.ik_select_dropdown', this.$wrapper); // fake dropdown 12716 this.$list = $('.ik_select_list', this.$wrapper); // options list inside the fake dropdown 12717 this.$listInner = $('<div class="ik_select_list_inner"/>'); // support dropdown for scrolling 12718 this.$active = $([]); // active fake option 12719 this.$hover = $([]); // hovered fake option 12720 this.hoverIndex = 0; // hovered fake option's index 12721 12722 this.$optionSet = $([]); 12723 this.$optgroupSet = $([]); 12724 12725 this.$list.append(this.$listInner); 12726 12727 if (this.options.filter) { 12728 this.$filter = $([]); // filter text input 12729 this.$optionSetOriginal = $([]); // contains original list items when filtering 12730 this.$nothingFoundText = $('<div class="ik_select_nothing_found"/>').html(this.options.nothingFoundText); 12731 this.$filterWrap = $('.ik_select_filter_wrap', this.$wrapper); 12732 12733 if (! this.$filterWrap.length) { 12734 this.$filterWrap = $('<div class="ik_select_filter_wrap"/>'); 12735 } 12736 12737 this.$filter = $('<input type="text" class="ik_select_filter">'); 12738 12739 this.$filterWrap.append(this.$filter); 12740 this.$list.prepend(this.$filterWrap); 12741 12742 this.$filter.on({ 12743 // keyboard controls should work even if the filter is in focus 12744 'keydown.ikSelect keyup.ikSelect': $.proxy(this, '_elKeyUpDown'), 12745 // actual filtering happens on keyup 12746 'keyup.ikSelect': $.proxy(this, '_filterKeyup') 12747 }); 12748 } 12749 12750 this.$wrapper.addClass(this.options.customClass); 12751 this.$link.addClass(this.options.linkCustomClass || (this.options.customClass && this.options.customClass + '-link')); 12752 this.$dropdown.addClass(this.options.ddCustomClass || (this.options.customClass && this.options.customClass + '-dd')); 12753 12754 // creating fake option list 12755 this.reset(); 12756 12757 // disable select if an option or attribute are truthy 12758 this.toggle(!(this.options.isDisabled || this.$el.prop('disabled') || this.$el.hasClass('hidden'))); 12759 12760 // click event for fake select 12761 this.$link.on('click.ikSelect', $.proxy(this, '_linkClick')); 12762 12763 this.$el.on({ 12764 // when focus is on the original select add a focus class to the fake one 12765 'focus.ikSelect': $.proxy(this, '_elFocus'), 12766 // when focus lost remove the focus class from the fake one 12767 'blur.ikSelect': $.proxy(this, '_elBlur'), 12768 // make sure that the fake select shows correct data 12769 'change.ikSelect': $.proxy(this, '_syncOriginalOption'), 12770 // keyboard controls for the fake select 12771 'keydown.ikSelect keyup.ikSelect': $.proxy(this, '_elKeyUpDown') 12772 }); 12773 12774 this.$list.on({ 12775 'click.ikSelect': $.proxy(this, '_optionClick'), 12776 'mouseover.ikSelect': $.proxy(this, '_optionMouseover') 12777 }, '.ik_select_option'); 12778 12779 // stop propagation of click events on the wrapper 12780 this.$wrapper.on('click', function () { 12781 return false; 12782 }); 12783 12784 // appending the fake select right after the original one 12785 this.$el.after(this.$wrapper); 12786 12787 // set correct dimensions 12788 this.redraw(); 12789 12790 // move original select inside the wrapper 12791 this.$el.appendTo(this.$wrapper); 12792 12793 this.options.onInit(this); 12794 this.$el.trigger('ikinit', this); 12795 }, 12796 12797 // click listener for fake select 12798 _linkClick: function () { 12799 if (this.isDisabled) { 12800 return; 12801 } 12802 if (this === instOpened) { 12803 this.hideDropdown(); 12804 } else { 12805 this.showDropdown(); 12806 } 12807 12808 }, 12809 12810 // click listener for the fake options 12811 _optionClick: function () { 12812 this._makeOptionActive(this.searchIndexes ? this.$optionSetOriginal.index(this.$hover) : this.hoverIndex, true); 12813 this.hideDropdown(); 12814 this.$el.change().focus(); 12815 }, 12816 12817 // hover listener for the fake options 12818 _optionMouseover: function (event) { 12819 var $option = $(event.currentTarget); 12820 if ($option.hasClass('ik_select_option_disabled')) { 12821 return; 12822 } 12823 this.$hover.removeClass('ik_select_hover'); 12824 this.$hover = $option.addClass('ik_select_hover'); 12825 this.hoverIndex = this.$optionSet.index(this.$hover); 12826 }, 12827 12828 // makes fake option active without syncing the original select 12829 _makeOptionActive: function (index, shouldSync) { 12830 var $option = $(this.el.options[index]), 12831 text=''; 12832 if($option.data('img_src')){
12833 text+='<span class="icon_color" style="background: url('+$option.data('img_src')+')"></span>'; 12834 this.$link.addClass('img'); 12835 } 12836 if($option.attr('title')){ 12837 this.$link.attr('title', $option.attr('title')); 12838 } 12839 text+=$option.text(); 12840 this.$linkText.html(text); 12841 12842 this.$link.toggleClass('ik_select_link_novalue', !$option.attr('value')); 12843 12844 this.$hover.removeClass('ik_select_hover'); 12845 this.$active.removeClass('ik_select_active'); 12846 this.$hover = this.$active = this.$optionSet.eq(index).addClass('ik_select_hover ik_select_active'); 12847 this.hoverIndex = index; 12848 12849 if (shouldSync) { 12850 this._syncFakeOption(); 12851 } 12852 }, 12853 12854 // keyboard controls for the fake select 12855 _elKeyUpDown: function (event) { 12856 var $handle = $(event.currentTarget); 12857 var type = event.type; 12858 var keycode = event.which; 12859 var newTop; 12860 12861 switch (keycode) { 12862 case 38: // up 12863 if (type === 'keydown') { 12864 event.preventDefault(); 12865 this._moveToPrevActive(); 12866 } 12867 break; 12868 case 40: // down 12869 if (type === 'keydown') { 12870 event.preventDefault(); 12871 this._moveToNextActive(); 12872 } 12873 break; 12874 case 33: // page up 12875 if (type === 'keydown') { 12876 event.preventDefault(); 12877 newTop = this.$hover.position().top - this.$listInner.height(); 12878 this._moveToPrevActive(function (optionTop) { 12879 return optionTop <= newTop; 12880 }); 12881 } 12882 break; 12883 case 34: // page down 12884 if (type === 'keydown') { 12885 event.preventDefault(); 12886 newTop = this.$hover.position().top + this.$listInner.height(); 12887 this._moveToNextActive(function (optionTop) { 12888 return optionTop >= newTop; 12889 }); 12890 } 12891 break; 12892 case 36: // home 12893 if (type === 'keydown' && $handle.is(this.$el)) { 12894 event.preventDefault(); 12895 this._moveToFirstActive(); 12896 } 12897 break; 12898 case 35: // end 12899 if (type === 'keydown' && $handle.is(this.$el)) { 12900 event.preventDefault(); 12901 this._moveToLastActive(); 12902 } 12903 break; 12904 case 32: // space 12905 if (type === 'keydown' && $handle.is(this.$el)) { 12906 event.preventDefault(); 12907 if (! this.$dropdown.is(':visible')) { 12908 this._linkClick(); 12909 } else { 12910 this.$hover.click(); 12911 } 12912 } 12913 break; 12914 case 13: // enter 12915 if (type === 'keydown' && this.$dropdown.is(':visible')) { 12916 event.preventDefault(); 12917 this.$hover.click(); 12918 } 12919 break; 12920 case 27: // esc 12921 if (type === 'keydown' && this.$dropdown.is(':visible')) { 12922 event.preventDefault(); 12923 this.hideDropdown(); 12924 } 12925 break; 12926 case 9: // tab 12927 if (type === 'keydown') { 12928 if ($.browser.webkit && this.$dropdown.is(':visible')) { 12929 event.preventDefault(); 12930 } else { 12931 this.hideDropdown(); 12932 } 12933 } 12934 break; 12935 default: 12936 if (type === 'keyup' && $handle.is(this.$el)) { 12937 this._syncOriginalOption(); 12938 } 12939 break; 12940 } 12941 12942 // mozilla ignores preventDefault for select navigation 12943 // this ensures that original select is in sync 12944 if (type === 'keyup' && $.browser.mozilla) { 12945 this._syncFakeOption(); 12946 } 12947 12948 if (type === 'keydown') { 12949 this.options.onKeyDown(this, keycode); 12950 this.$el.trigger('ikkeydown', [this, keycode]); 12951 } 12952 if (type === 'keyup') { 12953 this.options.onKeyUp(this, keycode); 12954 this.$el.trigger('ikkeyup', [this, keycode]); 12955 } 12956 }, 12957 12958 // controls hover/active states for options and makes selected with keyboard options fully visible 12959 _moveTo: function (index) { 12960 var optionTopLine, optionBottomLine; 12961 var $optgroup; 12962 12963 if (!this.$dropdown.is(':visible') && $.browser.webkit) { 12964 this.showDropdown(); 12965 return this; 12966 } 12967 12968 if (!this.$dropdown.is(':visible') || $.browser.mozilla) { 12969 this._makeOptionActive(index, true); 12970 } else { 12971 this.$hover.removeClass('ik_select_hover'); 12972 this.$hover = this.$optionSet.eq(index).addClass('ik_select_hover'); 12973 this.hoverIndex = index; 12974 } 12975 12976 // make option fully visible 12977 optionTopLine = this.$hover.position().top; 12978 optionBottomLine = optionTopLine + this.$active.outerHeight(); 12979 // make optgroup label visible if first option witin this optgroup is hovered 12980 if (!this.$hover.index()) { 12981 $optgroup = this.$hover.closest('.ik_select_optgroup'); 12982 if ($optgroup.length) { 12983 optionTopLine = $optgroup.position().top; 12984 } 12985 } 12986 if (optionBottomLine > this.$listInner.height()) { 12987 this.$listInner.scrollTop(this.$listInner.scrollTop() + optionBottomLine - this.$listInner.height()); 12988 } else if (optionTopLine < 0) { 12989 this.$listInner.scrollTop(this.$listInner.scrollTop() + optionTopLine); 12990 } 12991 12992 this.options.onHoverMove(this); 12993 this.$el.trigger('ikhovermove', this); 12994 }, 12995 12996 _moveToFirstActive: function () { 12997 for (var i = 0; i < this.$optionSet.length; i++) { 12998 if (!this.$optionSet.eq(i).hasClass('ik_select_option_disabled')) { 12999 this._moveTo(i); 13000 break; 13001 } 13002 } 13003 }, 13004 13005 _moveToLastActive: function () { 13006 for (var i = this.$optionSet.length - 1; i >= 0; i++) { 13007 if (!this.$optionSet.eq(i).hasClass('ik_select_option_disabled')) { 13008 this._moveTo(i); 13009 break; 13010 } 13011 } 13012 }, 13013 13014 _moveToPrevActive: function (condition) { 13015 var $option; 13016 for (var i = this.hoverIndex - 1; i >= 0; i--) { 13017 $option = this.$optionSet.eq(i); 13018 if (!$option.hasClass('ik_select_option_disabled') && (typeof condition === 'undefined' || condition($option.position().top))) { 13019 this._moveTo(i); 13020 break; 13021 } 13022 } 13023 }, 13024 13025 _moveToNextActive: function (condition) { 13026 var $option; 13027 for (var i = this.hoverIndex + 1; i < this.$optionSet.length; i++) { 13028 $option = this.$optionSet.eq(i); 13029 if (!$option.hasClass('ik_select_option_disabled') && (typeof condition === 'undefined' || condition($option.position().top))) { 13030 this._moveTo(i); 13031 break; 13032 } 13033 } 13034 }, 13035
13036 // when focus is on the original select add a focus class to the fake one 13037 _elFocus: function () { 13038 var wrapperOffsetTop, wrapperHeight, windowScrollTop, windowHeight; 13039 if (this.isDisabled) { 13040 return this; 13041 } 13042 this.$link.addClass('ik_select_link_focus'); 13043 13044 // scroll the window so that focused select is visible 13045 wrapperOffsetTop = this.$wrapper.offset().top; 13046 wrapperHeight = this.$wrapper.height(); 13047 windowScrollTop = $window.scrollTop(); 13048 windowHeight = $window.height(); 13049 if ((wrapperOffsetTop + wrapperHeight > windowScrollTop + windowHeight) || 13050 (wrapperOffsetTop < windowScrollTop)) { 13051 $window.scrollTop(wrapperOffsetTop - windowHeight / 2); 13052 } 13053 }, 13054 13055 // when focus lost remove the focus class from the fake one 13056 _elBlur: function () { 13057 this.$link.removeClass('ik_select_link_focus'); 13058 }, 13059 13060 // filtering on key up 13061 _filterKeyup: function () { 13062 var filterVal = $.trim(this.$filter.val()); 13063 var filterValOld; 13064 this.$listInner.show(); 13065 13066 if (typeof this.searchIndexes === 'undefined') { 13067 this.$optionSetOriginal = this.$optionSet; 13068 this.searchIndexes = $.makeArray(this.$optionSet.map(function (optionIndex, option) { 13069 return $(option).text().toLowerCase(); 13070 })); 13071 } 13072 13073 if (filterVal !== filterValOld) { 13074 if (filterVal === '') { 13075 this.$optionSet = this.$optionSetOriginal.show(); 13076 this.$optgroupSet.show(); 13077 this.$nothingFoundText.remove(); 13078 } else { 13079 this.$optionSet = $([]); 13080 this.$optgroupSet.show(); 13081 this.$optionSetOriginal.each($.proxy(function (optionIndex, option) { 13082 var $option = $(option); 13083 if (this.searchIndexes[optionIndex].indexOf(filterVal.toLowerCase()) >= 0) { 13084 this.$optionSet = this.$optionSet.add($option); 13085 $option.show(); 13086 } else { 13087 $option.hide(); 13088 } 13089 }, this)); 13090 13091 if (this.$optionSet.length) { 13092 this.$nothingFoundText.remove(); 13093 this.$optgroupSet.each(function (optgroupIndex, optgroup) { 13094 var $optgroup = $(optgroup); 13095 if (!$('.ik_select_option:visible', $optgroup).length) { 13096 $optgroup.hide(); 13097 } 13098 }); 13099 13100 if (!this.$hover.is(':visible')) { 13101 this._moveToFirstActive(); 13102 } 13103 } else { 13104 this.$listInner.hide(); 13105 this.$list.append(this.$nothingFoundText); 13106 } 13107 } 13108 13109 filterValOld = filterVal; 13110 } 13111 }, 13112 13113 // sync selected option in the fake select with the original one 13114 _syncFakeOption: function () { 13115 this.el.selectedIndex = this.hoverIndex; 13116 }, 13117 13118 // sync selected option in the original select with the fake one 13119 _syncOriginalOption: function () { 13120 this._makeOptionActive(this.el.selectedIndex); 13121 }, 13122 13123 // sets fixed height to dropdown if it's bigger than ddMaxHeight 13124 _fixHeight: function () { 13125 this.$dropdown.show(); 13126 this.$listInner.css('height', 'auto'); 13127 if (this.$listInner.height() > this.options.ddMaxHeight) { 13128 this.$listInner.css({ 13129 overflow: 'auto', 13130 height: this.options.ddMaxHeight, 13131 position: 'relative' 13132 }); 13133 } 13134 this.$dropdown.hide(); 13135 }, 13136 13137 // calculates the needed data for showing the dropdown 13138 redraw: function () { 13139 var maxWidthOuter, scrollbarWidth, wrapperParentWidth; 13140 13141 if (this.options.filter) { 13142 this.$filter.hide(); 13143 } 13144 13145 this.$wrapper.css({ 13146 position: 'relative' 13147 }); 13148 this.$dropdown.css({ 13149 position: 'absolute', 13150 zIndex: 9998, 13151 width: '100%' 13152 }); 13153 this.$list.css({ 13154 position: 'relative' 13155 }); 13156 13157 this._fixHeight(); 13158 13159 // width calculations for the fake select when "autoWidth" is "true" 13160 if (this.options.dynamicWidth || this.options.autoWidth || this.options.ddFullWidth) { 13161 this.$wrapper.width(''); 13162 13163 this.$dropdown.show().width(9999); 13164 this.$listInner.css('float', 'left'); 13165 this.$list.css('float', 'left'); 13166 maxWidthOuter = this.$list.outerWidth(true); 13167 scrollbarWidth = this.$listInner.width() - this.$listInnerUl.width(); 13168 this.$list.css('float', ''); 13169 this.$listInner.css('float', ''); 13170 this.$dropdown.css('width', '100%'); 13171 13172 if (this.options.ddFullWidth) { 13173 this.$dropdown.width(maxWidthOuter + scrollbarWidth); 13174 } 13175 13176 if (this.options.dynamicWidth) { 13177 this.$wrapper.css({ 13178 display: 'inline-block', 13179 width: 'auto',
13180 verticalAlign: 'top' 13181 }); 13182 } else if (this.options.autoWidth) { 13183 this.$wrapper.width(maxWidthOuter + (this.options.equalWidths ? scrollbarWidth : 0)).addClass('ik_select_autowidth'); 13184 } 13185 13186 wrapperParentWidth = this.$wrapper.parent().width(); 13187 if (this.$wrapper.width() > wrapperParentWidth) { 13188 this.$wrapper.width(wrapperParentWidth); 13189 } 13190 } 13191 13192 if (this.options.filter) { 13193 this.$filter.show().outerWidth(this.$filterWrap.width()); 13194 } 13195 13196 this.$dropdown.hide(); 13197 13198 // hide the original select 13199 this.$el.css({ 13200 position: 'absolute', 13201 margin: 0, 13202 padding: 0, 13203 top: 0, 13204 left: -9999 13205 }); 13206 13207 // show the original select in mobile browsers 13208 if ($.browser.mobile) { 13209 this.$el.css({ 13210 opacity: 0, 13211 left: 0, 13212 height: this.$wrapper.height(), 13213 width: this.$wrapper.width() 13214 }); 13215 } 13216 }, 13217 13218 // creates or recreates dropdown and sets selected options's text into fake select 13219 reset: function () { 13220 var html = ''; 13221 13222 // init fake select's text 13223 this.$linkText.html(this.$el.val()); 13224 13225 this.$listInner.empty(); 13226 13227 // creating an ul>li list identical to the original dropdown 13228 html = '<ul>'; 13229 this.$el.children().each($.proxy(function (childIndex, child) { 13230 var $child = $(child); 13231 var tagName = child.tagName.toLowerCase(); 13232 var options; 13233 if (tagName === 'optgroup') { 13234 options = $child.children().map($.proxy(function (optionIndex, option) { 13235 return this._generateOptionObject($(option)); 13236 }, this)); 13237 options = $.makeArray(options); 13238 html += this._renderListOptgroup({ 13239 label: $child.attr('label') || ' ', 13240 isDisabled: $child.is(':disabled'), 13241 options: options 13242 }); 13243 } else if (tagName === 'option') { 13244 html += this._renderListOption(this._generateOptionObject($child)); 13245 } 13246 }, this)); 13247 html += '</ul>'; 13248 this.$listInner.append(html); 13249 this._syncOriginalOption(); 13250 13251 this.$listInnerUl = $('> ul', this.$listInner); 13252 this.$optgroupSet = $('.ik_select_optgroup', this.$listInner); 13253 this.$optionSet = $('.ik_select_option', this.$listInner); 13254 }, 13255 13256 // hides dropdown 13257 hideDropdown: function () { 13258 if (this.options.filter) { 13259 this.$filter.val(''); 13260 this._filterKeyup(); 13261 } 13262 13263 this.$dropdown.hide().appendTo(this.$wrapper).css({ 13264 'left': '', 13265 'top': '' 13266 }); 13267 if (this.options.extractLink) { 13268 this.$wrapper.outerWidth(this.$wrapper.data('outerWidth')); 13269 this.$wrapper.height(''); 13270 this.$link.removeClass('ik_select_link_extracted').css({ 13271 position: '', 13272 top: '', 13273 left: '', 13274 zIndex: '' 13275 }).prependTo(this.$wrapper); 13276 } 13277 instOpened = null; 13278 this.$el.focus(); 13279 13280 this.options.onHide(this); 13281 this.$el.trigger('ikhide', this); 13282 }, 13283 13284 // shows dropdown 13285 showDropdown: function () { 13286 var dropdownOffset, dropdownOuterWidth, dropdownOuterHeight; 13287 var wrapperOffset, wrapperOuterWidth; 13288 var windowWidth, windowHeight, windowScroll; 13289 var linkOffset; 13290 13291 if (instOpened === this || !this.$optionSet.length) { 13292 return; 13293 } else if (instOpened) { 13294 instOpened.hideDropdown(); 13295 } 13296 13297 this._syncOriginalOption(); 13298 if($('.show_un_props').length) 13299 this.$dropdown.addClass('show_un_props'); 13300 else if($('.unshow_un_props').length) 13301 this.$dropdown.addClass('unshow_un_props'); 13302 this.$dropdown.show(); 13303 13304 dropdownOffset = this.$dropdown.offset(); 13305 dropdownOuterWidth = this.$dropdown.outerWidth(true); 13306 dropdownOuterHeight = this.$dropdown.outerHeight(true); 13307 wrapperOffset = this.$wrapper.offset(); 13308 windowWidth = $window.width(); 13309 windowHeight = $window.height(); 13310 windowScroll = $window.scrollTop(); 13311 13312 // if the dropdown's right border is beyond window's edge then move the dropdown to the left so that it fits 13313 if (this.options.ddFullWidth && wrapperOffset.left + dropdownOuterWidth > windowWidth) { 13314 dropdownOffset.left = windowWidth - dropdownOuterWidth; 13315 } 13316 13317 // if the dropdown's bottom border is beyond window's edge then move the dropdown to the top so that it fits 13318 if (dropdownOffset.top + dropdownOuterHeight > windowScroll + windowHeight) { 13319 dropdownOffset.top = windowScroll + windowHeight - dropdownOuterHeight; 13320 } 13321 13322 this.$dropdown.css({ 13323 left: dropdownOffset.left, 13324 top: dropdownOffset.top, 13325 width: this.$dropdown.width() 13326 }).appendTo('body'); 13327 13328 if (this.options.extractLink) { 13329 linkOffset = this.$link.offset(); 13330 wrapperOuterWidth = this.$wrapper.outerWidth(); 13331 this.$wrapper.data('outerWidth', wrapperOuterWidth); 13332 this.$wrapper.outerWidth(wrapperOuterWidth); 13333 this.$wrapper.outerHeight(this.$wrapper.outerHeight()); 13334 this.$link.outerWidth(this.$link.outerWidth()); 13335 this.$link.addClass('ik_select_link_extracted').css({ 13336 position: 'absolute', 13337 top: linkOffset.top, 13338 left: linkOffset.left, 13339 zIndex: 9999 13340 }).appendTo('body'); 13341 } 13342 13343 this.$listInner.scrollTop(this.$active.position().top - this.$list.height() / 2); 13344 13345 if (this.options.filter) { 13346 this.$filter.focus(); 13347 } else { 13348 this.$el.focus(); 13349 } 13350 13351 instOpened = this; 13352 13353 this.options.onShow(this); 13354 this.$el.trigger('ikshow', this); 13355 }, 13356 13357 _generateOptionObject: function ($option) { 13358 13359 return { 13360 value: $option.val(), 13361 label: $option.html() || ' ', 13362 isDisabled: $option.is(':disabled'), 13363 dataParam: $option.data(), 13364 className: $option.attr('class'), 13365 title: $option.attr('title') 13366 }; 13367 }, 13368 13369 // generates option code for the fake dropdown 13370 _renderListOption: function (option) { 13371 var html; 13372 var disabledClass = option.isDisabled ? ' ik_select_option_disabled' : ''; 13373 var imgClass = option.dataParam.img_src ? ' img' : ''; 13374 var missingClass = option.className=='hidden' ? ' missing' : ''; 13375 var title = option.title; 13376 html = '<li class="ik_select_option' + disabledClass + imgClass + missingClass + '" title="'+title+'" data-value="' + option.value + '">'; 13377 html += '<span class="ik_select_option_label" title="'+title+'">'; 13378 if(option.dataParam.img_src){ 13379 html += '<span class="icon_color" style="background: url('+option.dataParam.img_src+')"></span>'; 13380 } 13381 html += option.label; 13382 html += '</span>'; 13383 html += '</li>'; 13384 return html; 13385 }, 13386 13387 // generates optgroup code for the fake dropdown 13388 _renderListOptgroup: function (optgroup) { 13389 var html; 13390 var disabledClass = optgroup.isDisabled ? ' ik_select_optgroup_disabled' : ''; 13391 html = '<li class="ik_select_optgroup' + disabledClass + '">'; 13392 html += '<div class="ik_select_optgroup_label">' + optgroup.label + '</div>'; 13393 html += '<ul>'; 13394 if ($.isArray(optgroup.options)) { 13395 $.each(optgroup.options, $.proxy(function (optionIndex, option) { 13396 html += this._renderListOption({ 13397 value: option.value, 13398 label: option.label || ' ', 13399 isDisabled: option.isDisabled 13400 }); 13401 }, this)); 13402 } 13403 html += '</ul>'; 13404 html += '</li>'; 13405 return html; 13406 }, 13407 13408 // generates option code for the select 13409 _renderOption: function (option) { 13410 return '<option value="' + option.value + '">' + option.label + '</option>'; 13411 }, 13412 13413 // generates optgroup code for the select 13414 _renderOptgroup: function (optgroup) { 13415 var html; 13416 html = '<optgroup label="' + optgroup.label + '">'; 13417 if ($.isArray(optgroup.options)) { 13418 $.each(optgroup.options, $.proxy(function (optionIndex, option) { 13419 html += this._renderOption(option); 13420 }, this)); 13421 } 13422 html += '</option>'; 13423 return html; 13424 }, 13425 13426 addOptions: function (options, optionIndex, optgroupIndex) { 13427 var listHtml = '', selectHtml = ''; 13428 var $destinationUl = this.$listInnerUl; 13429 var $destinationOptgroup = this.$el; 13430 var $ulOptions, $optgroupOptions; 13431 13432 options = $.isArray(options) ? options : [options]; 13433 13434 $.each(options, $.proxy(function (index, option) { 13435 listHtml += this._renderListOption(option); 13436 selectHtml += this._renderOption(option); 13437 }, this)); 13438 13439 if ($.isNumeric(optgroupIndex) && optgroupIndex < this.$optgroupSet.length) { 13440 $destinationUl = this.$optgroupSet.eq(optgroupIndex); 13441 $destinationOptgroup = $('optgroup', this.$el).eq(optgroupIndex); 13442 } 13443 if ($.isNumeric(optionIndex)) { 13444 $ulOptions = $('.ik_select_option', $destinationUl); 13445 if (optionIndex < $ulOptions.length) { 13446 $ulOptions.eq(optionIndex).before(listHtml); 13447 $optgroupOptions = $('option', $destinationOptgroup); 13448 $optgroupOptions.eq(optionIndex).before(selectHtml); 13449 } 13450 } 13451 if (!$optgroupOptions) { 13452 $destinationUl.append(listHtml); 13453 $destinationOptgroup.append(selectHtml); 13454 } 13455 13456 this.$optionSet = $('.ik_select_option', this.$listInner); 13457 this._fixHeight(); 13458 }, 13459 13460 addOptgroups: function (optgroups, optgroupIndex) { 13461 var listHtml = '', selectHtml = ''; 13462 if (!optgroups) { 13463 return; 13464 } 13465 optgroups = $.isArray(optgroups) ? optgroups : [optgroups]; 13466 13467 $.each(optgroups, $.proxy(function (optgroupIndex, optgroup) { 13468 listHtml += this._renderListOptgroup(optgroup); 13469 selectHtml += this._renderOptgroup(optgroup); 13470 }, this)); 13471 13472 if ($.isNumeric(optgroupIndex) && optgroupIndex < this.$optgroupSet.length) { 13473 this.$optgroupSet.eq(optgroupIndex).before(listHtml); 13474 $('optgroup', this.$el).eq(optgroupIndex).before(selectHtml); 13475 } else { 13476 this.$listInnerUl.append(listHtml); 13477 this.$el.append(selectHtml); 13478 } 13479 13480 this.$optgroupSet = $('.ik_select_optgroup', this.$listInner); 13481 this.$optionSet = $('.ik_select_option', this.$listInner); 13482 this._fixHeight(); 13483 }, 13484 13485 removeOptions: function (optionIndexes, optgroupIndex) { 13486 var $removeList = $([]); 13487 var $listContext; 13488 var $selectContext; 13489 13490 if ($.isNumeric(optgroupIndex)) { 13491 if (optgroupIndex < 0) { 13492 $listContext = $('> .ik_select_option', this.$listInnerUl); 13493 $selectContext = $('> option', this.$el); 13494 } else if (optgroupIndex < this.$optgroupSet.length) { 13495 $listContext = $('.ik_select_option', this.$optgroupSet.eq(optgroupIndex)); 13496 $selectContext = $('optgroup', this.$el).eq(optgroupIndex).find('option'); 13497 } 13498 } 13499 if (!$listContext) { 13500 $listContext = this.$optionSet; 13501 $selectContext = $(this.el.options); 13502 } 13503 13504 if (!$.isArray(optionIndexes)) { 13505 optionIndexes = [optionIndexes]; 13506 } 13507 13508 $.each(optionIndexes, $.proxy(function (index, optionIndex) { 13509 if (optionIndex < $listContext.length) { 13510 $removeList = $removeList.add($listContext.eq(optionIndex)).add($selectContext.eq(optionIndex)); 13511 } 13512 }, this)); 13513 13514 $removeList.remove(); 13515 this.$optionSet = $('.ik_select_option', this.$listInner); 13516 this._syncOriginalOption(); 13517 this._fixHeight(); 13518 }, 13519 13520 removeOptgroups: function (optgroupIndexes) { 13521 var $removeList = $([]); 13522 var $selectOptgroupSet = $('optgroup', this.el); 13523 13524 if (!$.isArray(optgroupIndexes)) { 13525 optgroupIndexes = [optgroupIndexes]; 13526 } 13527 13528 $.each(optgroupIndexes, $.proxy(function (index, optgroupIndex) { 13529 if (optgroupIndex < this.$optgroupSet.length) { 13530 $removeList = $removeList.add(this.$optgroupSet.eq(optgroupIndex)).add($selectOptgroupSet.eq(optgroupIndex)); 13531 } 13532 }, this)); 13533 13534 $removeList.remove(); 13535 this.$optionSet = $('.ik_select_option', this.$listInner); 13536 this.$optgroupSet = $('.ik_select_optgroup', this.$listInner); 13537 this._syncOriginalOption(); 13538 this._fixHeight(); 13539 }, 13540 13541 // disable select 13542 disable: function () { 13543 this.toggle(false); 13544 }, 13545 13546 // enable select 13547 enable: function () { 13548 this.toggle(true); 13549 }, 13550 13551 // toggle select 13552 toggle: function (bool) { 13553 this.isDisabled = typeof bool !== 'undefined' ? !bool : !this.isDisabled; 13554 this.$el.prop('disabled', this.isDisabled); 13555 this.$link.toggleClass('ik_select_link_disabled', this.isDisabled); 13556 }, 13557 13558 // make option selected by value 13559 select: function (value, isIndex) { 13560 if (!isIndex) { 13561 this.$el.val(value); 13562 } else { 13563 this.el.selectedIndex = value; 13564 } 13565 this._syncOriginalOption(); 13566 }, 13567 13568 disableOptgroups: function (optgroupIndexes) { 13569 this.toggleOptgroups(optgroupIndexes, false); 13570 }, 13571 13572 enableOptgroups: function (optgroupIndexes) { 13573 this.toggleOptgroups(optgroupIndexes, true); 13574 }, 13575 13576 toggleOptgroups: function (optgroupIndexes, bool) { 13577 if (!$.isArray(optgroupIndexes)) { 13578 optgroupIndexes = [optgroupIndexes]; 13579 } 13580 13581 $.each(optgroupIndexes, $.proxy(function (index, optgroupIndex) { 13582 var isDisabled; 13583 var $optionSet, indexes = [], indexFirst; 13584 var $optgroup = $('optgroup', this.$el).eq(optgroupIndex); 13585 isDisabled = typeof bool !== 'undefined' ? bool : $optgroup.prop('disabled'); 13586 $optgroup.prop('disabled', !isDisabled); 13587 this.$optgroupSet.eq(optgroupIndex).toggleClass('ik_select_optgroup_disabled', !isDisabled); 13588 13589 $optionSet = $('option', $optgroup); 13590 indexFirst = $(this.el.options).index($optionSet.eq(0)); 13591 for (var i = indexFirst; i < indexFirst + $optionSet.length; i++) { 13592 indexes.push(i); 13593 }
13594 this.toggleOptions(indexes, true, isDisabled); 13595 }, this)); 13596 13597 this._syncOriginalOption(); 13598 }, 13599 13600 disableOptions: function (lookupValues, isIndex) { 13601 this.toggleOptions(lookupValues, isIndex, false); 13602 }, 13603 13604 enableOptions: function (lookupValues, isIndex) { 13605 this.toggleOptions(lookupValues, isIndex, true); 13606 }, 13607 13608 toggleOptions: function (lookupValues, isIndex, bool) { 13609 var $selectOptionSet = $('option', this.el); 13610 if (!$.isArray(lookupValues)) { 13611 lookupValues = [lookupValues]; 13612 } 13613 13614 var toggleOption = $.proxy(function ($option, optionIndex) { 13615 var isDisabled = typeof bool !== 'undefined' ? bool : $option.prop('disabled'); 13616 $option.prop('disabled', !isDisabled); 13617 this.$optionSet.eq(optionIndex).toggleClass('ik_select_option_disabled', !isDisabled); 13618 }, this); 13619 13620 $.each(lookupValues, function (index, lookupValue) { 13621 if (!isIndex) { 13622 $selectOptionSet.each(function (optionIndex, option) { 13623 var $option = $(option); 13624 if ($option.val() === lookupValue) { 13625 toggleOption($option, optionIndex); 13626 return this; 13627 } 13628 }); 13629 } else { 13630 toggleOption($selectOptionSet.eq(lookupValue), lookupValue); 13631 } 13632 }); 13633 13634 this._syncOriginalOption(); 13635 }, 13636 13637 // detach plugin from the orignal select 13638 detach: function () { 13639 this.$el.off('.ikSelect').css({ 13640 width: '', 13641 height: '', 13642 left: '', 13643 top: '', 13644 position: '', 13645 margin: '', 13646 padding: '' 13647 }); 13648 13649 this.$wrapper.before(this.$el); 13650 this.$wrapper.remove(); 13651 this.$el.removeData('plugin_ikSelect'); 13652 } 13653 }); 13654 13655 $.fn.ikSelect = function (options) { 13656 var args; 13657 //do nothing if opera mini 13658 if ($.browser.operamini) { 13659 return this; 13660 } 13661 13662 args = Array.prototype.slice.call(arguments, 1); 13663 13664 return this.each(function () { 13665 var plugin; 13666 if (!$.data(this, 'plugin_ikSelect')) { 13667 $.data(this, 'plugin_ikSelect', new IkSelect(this, options)); 13668 } else if (typeof options === 'string') { 13669 plugin = $.data(this, 'plugin_ikSelect'); 13670 if (typeof plugin[options] === 'function') { 13671 plugin[options].apply(plugin, args); 13672 } 13673 } 13674 }); 13675 }; 13676 13677 $.ikSelect = { 13678 extendDefaults: function (options) { 13679 $.extend(defaults, options); 13680 } 13681 }; 13682 13683 $(document).bind('click.ikSelect', function () { 13684 if (instOpened) { 13685 instOpened.hideDropdown(); 13686 } 13687 }); 13688})(jQuery, window, document); 13689 13690/* End */ 13691; 13692; /* Start:"a:4:{s:4:"full";s:78:"/local/templates/aspro_max/js/jquery.mobile.custom.touch.min.js?16523557087784";s:6:"source";s:63:"/local/templates/aspro_max/js/jquery.mobile.custom.touch.min.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 13693/*! jQuery Mobile v1.4.5 | Copyright 2010, 2014 jQuery Foundation, Inc. | jquery.org/license */ 13694 13695(function(e,t,n){typeof define=="function"&&define.amd?define(["jquery"],function(r){return n(r,e,t),r.mobile}):n(e.jQuery,e,t)})(this,document,function(e,t,n,r){(function(e,t,n,r){function T(e){while(e&&typeof e.originalEvent!="undefined")e=e.originalEvent;return e}function N(t,n){var i=t.type,s,o,a,l,c,h,p,d,v;t=e.Event(t),t.type=n,s=t.originalEvent,o=e.event.props,i.search(/^(mouse|click)/)>-1&&(o=f);if(s)for(p=o.length,l;p;)l=o[--p],t[l]=s[l];i.search(/mouse(down|up)|click/)>-1&&!t.which&&(t.which=1);if(i.search(/^touch/)!==-1){a=T(s),i=a.touches,c=a.changedTouches,h=i&&i.length?i[0]:c&&c.length?c[0]:r;if(h)for(d=0,v=u.length;d<v;d++)l=u[d],t[l]=h[l]}return t}function C(t){var n={},r,s;while(t){r=e.data(t,i);for(s in r)r[s]&&(n[s]=n.hasVirtualBinding=!0);t=t.parentNode}return n}function k(t,n){var r;while(t){r=e.data(t,i);if(r&&(!n||r[n]))return t;t=t.parentNode}return null}function L(){g=!1}function A(){g=!0}function O(){E=0,v.length=0,m=!1,A()}function M(){L()}function _(){D(),c=setTimeout(function(){c=0,O()},e.vmouse.resetTimerDuration)}function D(){c&&(clearTimeout(c),c=0)}function P(t,n,r){var i;if(r&&r[t]||!r&&k(n.target,t))i=N(n,t),e(n.target).trigger(i);return i}function H(t){var n=e.data(t.target,s),r;!m&&(!E||E!==n)&&(r=P("v"+t.type,t),r&&(r.isDefaultPrevented()&&t.preventDefault(),r.isPropagationStopped()&&t.stopPropagation(),r.isImmediatePropagationStopped()&&t.stopImmediatePropagation()))}function B(t){var n=T(t).touches,r,i,o;n&&n.length===1&&(r=t.target,i=C(r),i.hasVirtualBinding&&(E=w++,e.data(r,s,E),D(),M(),d=!1,o=T(t).touches[0],h=o.pageX,p=o.pageY,P("vmouseover",t,i),P("vmousedown",t,i)))}function j(e){if(g)return;
13695d||P("vmousecancel",e,C(e.target)),d=!0,_()}function F(t){if(g)return;var n=T(t).touches[0],r=d,i=e.vmouse.moveDistanceThreshold,s=C(t.target);d=d||Math.abs(n.pageX-h)>i||Math.abs(n.pageY-p)>i,d&&!r&&P("vmousecancel",t,s),P("vmousemove",t,s),_()}function I(e){if(g)return;A();var t=C(e.target),n,r;P("vmouseup",e,t),d||(n=P("vclick",e,t),n&&n.isDefaultPrevented()&&(r=T(e).changedTouches[0],v.push({touchID:E,x:r.clientX,y:r.clientY}),m=!0)),P("vmouseout",e,t),d=!1,_()}function q(t){var n=e.data(t,i),r;if(n)for(r in n)if(n[r])return!0;return!1}function R(){}function U(t){var n=t.substr(1);return{setup:function(){q(this)||e.data(this,i,{});var r=e.data(this,i);r[t]=!0,l[t]=(l[t]||0)+1,l[t]===1&&b.bind(n,H),e(this).bind(n,R),y&&(l.touchstart=(l.touchstart||0)+1,l.touchstart===1&&b.bind("touchstart",B).bind("touchend",I).bind("touchmove",F).bind("scroll",j))},teardown:function(){--l[t],l[t]||b.unbind(n,H),y&&(--l.touchstart,l.touchstart||b.unbind("touchstart",B).unbind("touchmove",F).unbind("touchend",I).unbind("scroll",j));var r=e(this),s=e.data(this,i);s&&(s[t]=!1),r.unbind(n,R),q(this)||r.removeData(i)}}}var i="virtualMouseBindings",s="virtualTouchID",o="vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split(" "),u="clientX clientY pageX pageY screenX screenY".split(" "),a=e.event.mouseHooks?e.event.mouseHooks.props:[],f=e.event.props.concat(a),l={},c=0,h=0,p=0,d=!1,v=[],m=!1,g=!1,y="addEventListener"in n,b=e(n),w=1,E=0,S,x;e.vmouse={moveDistanceThreshold:10,clickDistanceThreshold:10,resetTimerDuration:1500};for(x=0;x<o.length;x++)e.event.special[o[x]]=U(o[x]);y&&n.addEventListener("click",function(t){var n=v.length,r=t.target,i,o,u,a,f,l;if(n){i=t.clientX,o=t.clientY,S=e.vmouse.clickDistanceThreshold,u=r;while(u){for(a=0;a<n;a++){f=v[a],l=0;if(u===r&&Math.abs(f.x-i)<S&&Math.abs(f.y-o)<S||e.data(u,s)===f.touchID){t.preventDefault(),t.stopPropagation();return}}u=u.parentNode}}},!0)})(e,t,n),function(e){e.mobile={}}(e),function(e,t){var r={touch:"ontouchend"in n};e.mobile.support=e.mobile.support||{},e.extend(e.support,r),e.extend(e.mobile.support,r)}(e),function(e,t,r){function l(t,n,i,s){var o=i.type;i.type=n,s?e.event.trigger(i,r,t):e.event.dispatch.call(t,i),i.type=o}var i=e(n),s=e.mobile.support.touch,o="touchmove scroll",u=s?"touchstart":"mousedown",a=s?"touchend":"mouseup",f=s?"touchmove":"mousemove";e.each("touchstart touchmove touchend tap taphold swipe swipeleft swiperight scrollstart scrollstop".split(" "),function(t,n){e.fn[n]=function(e){return e?this.bind(n,e):this.trigger(n)},e.attrFn&&(e.attrFn[n]=!0)}),e.event.special.scrollstart={enabled:!0,setup:function(){function s(e,n){r=n,l(t,r?"scrollstart":"scrollstop",e)}var t=this,n=e(t),r,i;n.bind(o,function(t){if(!e.event.special.scrollstart.enabled)return;r||s(t,!0),clearTimeout(i),i=setTimeout(function(){s(t,!1)},50)})},teardown:function(){e(this).unbind(o)}},e.event.special.tap={tapholdThreshold:750,emitTapOnTaphold:!0,setup:function(){var t=this,n=e(t),r=!1;n.bind("vmousedown",function(s){function a(){clearTimeout(u)}function f(){a(),n.unbind("vclick",c).unbind("vmouseup",a),i.unbind("vmousecancel",f)}function c(e){f(),!r&&o===e.target?l(t,"tap",e):r&&e.preventDefault()}r=!1;if(s.which&&s.which!==1)return!1;var o=s.target,u;n.bind("vmouseup",a).bind("vclick",c),i.bind("vmousecancel",f),u=setTimeout(function(){e.event.special.tap.emitTapOnTaphold||(r=!0),l(t,"taphold",e.Event("taphold",{target:o}))},e.event.special.tap.tapholdThreshold)})},teardown:function(){e(this).unbind("vmousedown").unbind("vclick").unbind("vmouseup"),i.unbind("vmousecancel")}},e.event.special.swipe={scrollSupressionThreshold:30,durationThreshold:1e3,horizontalDistanceThreshold:30,verticalDistanceThreshold:30,getLocation:function(e){var n=t.pageXOffset,r=t.pageYOffset,i=e.clientX,s=e.clientY;if(e.pageY===0&&Math.floor(s)>Math.floor(e.pageY)||e.pageX===0&&Math.floor(i)>Math.floor(e.pageX))i-=n,s-=r;else if(s<e.pageY-r||i<e.pageX-n)i=e.pageX-n,s=e.pageY-r;return{x:i,y:s}},start:function(t){var n=t.originalEvent.touches?t.originalEvent.touches[0]:t,r=e.event.special.swipe.getLocation(n);return{time:(new Date).getTime(),coords:[r.x,r.y],origin:e(t.target)}},stop:function(t){var n=t.originalEvent.touches?t.originalEvent.touches[0]:t,r=e.event.special.swipe.getLocation(n);return{time:(new Date).getTime(),coords:[r.x,r.y]}},handleSwipe:function(t,n,r,i){if(n.time-t.time<e.event.special.swipe.durationThreshold&&Math.abs(t.coords[0]-n.
13695coords[0])>e.event.special.swipe.horizontalDistanceThreshold&&Math.abs(t.coords[1]-n.coords[1])<e.event.special.swipe.verticalDistanceThreshold){var s=t.coords[0]>n.coords[0]?"swipeleft":"swiperight";return l(r,"swipe",e.Event("swipe",{target:i,swipestart:t,swipestop:n}),!0),l(r,s,e.Event(s,{target:i,swipestart:t,swipestop:n}),!0),!0}return!1},eventInProgress:!1,setup:function(){var t,n=this,r=e(n),s={};t=e.data(this,"mobile-events"),t||(t={length:0},e.data(this,"mobile-events",t)),t.length++,t.swipe=s,s.start=function(t){if(e.event.special.swipe.eventInProgress)return;e.event.special.swipe.eventInProgress=!0;var r,o=e.event.special.swipe.start(t),u=t.target,l=!1;s.move=function(t){if(!o||t.isDefaultPrevented())return;r=e.event.special.swipe.stop(t),l||(l=e.event.special.swipe.handleSwipe(o,r,n,u),l&&(e.event.special.swipe.eventInProgress=!1)),Math.abs(o.coords[0]-r.coords[0])>e.event.special.swipe.scrollSupressionThreshold&&t.preventDefault()},s.stop=function(){l=!0,e.event.special.swipe.eventInProgress=!1,i.off(f,s.move),s.move=null},i.on(f,s.move).one(a,s.stop)},r.on(u,s.start)},teardown:function(){var t,n;t=e.data(this,"mobile-events"),t&&(n=t.swipe,delete t.swipe,t.length--,t.length===0&&e.removeData(this,"mobile-events")),n&&(n.start&&e(this).off(u,n.start),n.move&&i.off(f,n.move),n.stop&&i.off(a,n.stop))}},e.each({scrollstop:"scrollstart",taphold:"tap",swipeleft:"swipe.left",swiperight:"swipe.right"},function(t,n){e.event.special[t]={setup:function(){e(this).bind(n,e.noop)},teardown:function(){e(this).unbind(n)}}})}(e,this)}); 13696/* End */ 13697; 13698; /* Start:"a:4:{s:4:"full";s:64:"/local/templates/aspro_max/js/jquery.dotdotdot.js?16523557185908";s:6:"source";s:49:"/local/templates/aspro_max/js/jquery.dotdotdot.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 13699!function(t,e){function n(t,e,n){var r=t.children(),o=!1;t.empty();for(var i=0,d=r.length;d>i;i++){var l=r.eq(i);if(t.append(l),n&&t.append(n),a(t,e)){l.remove(),o=!0;break}n&&n.detach()}return o}function r(e,n,i,d,l){var s=!1,c="a table, thead, tbody, tfoot, tr, col, colgroup, object, embed, param, ol, ul, dl, blockquote, select, optgroup, option, textarea, script, style",u="script, .dotdotdot-keep";return e.contents().detach().each(function(){var f=this,h=t(f);if("undefined"==typeof f||3==f.nodeType&&0==t.trim(f.data).length)return!0;if(h.is(u))e.append(h);else{if(s)return!0;e.append(h),!l||h.is(d.after)||h.find(d.after).length||e[e.is(c)?"after":"append"](l),a(i,d)&&(s=3==f.nodeType?o(h,n,i,d,l):r(h,n,i,d,l),s||(h.detach(),s=!0)),s||l&&l.detach()}}),s}function o(e,n,r,o,d){var c=e[0];if(!c)return!1;var f=s(c),h=-1!==f.indexOf(" ")?" ":"ã",p="letter"==o.wrap?"":h,g=f.split(p),v=-1,w=-1,y=0,b=g.length-1;for(o.fallbackToLetter&&0==y&&0==b&&(p="",g=f.split(p),b=g.length-1);b>=y&&(0!=y||0!=b);){var m=Math.floor((y+b)/2);if(m==w)break;w=m,l(c,g.slice(0,w+1).join(p)+o.ellipsis),a(r,o)?(b=w,o.fallbackToLetter&&0==y&&0==b&&(p="",g=g[0].split(p),v=-1,w=-1,y=0,b=g.length-1)):(v=w,y=w)}if(-1==v||1==g.length&&0==g[0].length){var T=e.parent();e.detach();var x=d&&d.closest(T).length?d.length:0;T.contents().length>x?c=u(T.contents().eq(-1-x),n):(c=u(T,n,!0),x||T.detach()),c&&(f=i(s(c),o),l(c,f),x&&d&&t(c).parent().append(d))}else f=i(g.slice(0,v+1).join(p),o),l(c,f);return!0}function a(t,e){return t.innerHeight()>e.maxHeight}function i(e,n){for(;t.inArray(e.slice(-1),n.lastCharacter.remove)>-1;)e=e.slice(0,-1);return t.inArray(e.slice(-1),n.lastCharacter.noEllipsis)<0&&(e+=n.ellipsis),e}function d(t){return{width:t.innerWidth(),height:t.innerHeight()}}function l(t,e){t.innerText?t.innerText=e:t.nodeValue?t.nodeValue=e:t.textContent&&(t.textContent=e)}function s(t){return t.innerText?t.innerText:t.nodeValue?t.nodeValue:t.textContent?t.textContent:""}function c(t){do t=t.previousSibling;while(t&&1!==t.nodeType&&3!==t.nodeType);return t}function u(e,n,r){var o,a=e&&e[0];if(a){if(!r){if(3===a.nodeType)return a;
vendor: 4,248 bytes, lines 13699-13713
13699if(t.trim(e.text()))return u(e.contents().last(),n)}for(o=c(a);!o;){if(e=e.parent(),e.is(n)||!e.length)return!1;o=c(e[0])}if(o)return u(t(o),n)}return!1}function f(e,n){return e?"string"==typeof e?(e=t(e,n),e.length?e:!1):e.jquery?e:!1:!1}function h(t){for(var e=t.innerHeight(),n=["paddingTop","paddingBottom"],r=0,o=n.length;o>r;r++){var a=parseInt(t.css(n[r]),10);isNaN(a)&&(a=0),e-=a}return e}if(!t.fn.dotdotdot){t.fn.dotdotdot=function(e){if(0==this.length)return t.fn.dotdotdot.debug('No element found for "'+this.selector+'".'),this;if(this.length>1)return this.each(function(){t(this).dotdotdot(e)});var o=this;o.data("dotdotdot")&&o.trigger("destroy.dot"),o.data("dotdotdot-style",o.attr("style")||""),o.css("word-wrap","break-word"),"nowrap"===o.css("white-space")&&o.css("white-space","normal"),o.bind_events=function(){return o.bind("update.dot",function(e,d){e.preventDefault(),e.stopPropagation(),l.maxHeight="number"==typeof l.height?l.height:h(o),l.maxHeight+=l.tolerance,"undefined"!=typeof d&&(("string"==typeof d||"nodeType"in d&&1===d.nodeType)&&(d=t("<div />").append(d).contents()),d instanceof t&&(i=d)),g=o.wrapInner('<div class="dotdotdot" />').children(),g.contents().detach().end().append(i.clone(!0)).find("br").replaceWith(" <br /> ").end().css({height:"auto",width:"auto",border:"none",padding:0,margin:0});var c=!1,u=!1;return s.afterElement&&(c=s.afterElement.clone(!0),c.show(),s.afterElement.detach()),a(g,l)&&(u="children"==l.wrap?n(g,l,c):r(g,o,g,l,c)),g.replaceWith(g.contents()),g=null,t.isFunction(l.callback)&&l.callback.call(o[0],u,i),s.isTruncated=u,u}).bind("isTruncated.dot",function(t,e){return t.preventDefault(),t.stopPropagation(),"function"==typeof e&&e.call(o[0],s.isTruncated),s.isTruncated}).bind("originalContent.dot",function(t,e){return t.preventDefault(),t.stopPropagation(),"function"==typeof e&&e.call(o[0],i),i}).bind("destroy.dot",function(t){t.preventDefault(),t.stopPropagation(),o.unwatch().unbind_events().contents().detach().end().append(i).attr("style",o.data("dotdotdot-style")||"").data("dotdotdot",!1)}),o},o.unbind_events=function(){return o.unbind(".dot"),o},o.watch=function(){if(o.unwatch(),"window"==l.watch){var e=t(window),n=e.width(),r=e.height();e.bind("resize.dot"+s.dotId,function(){n==e.width()&&r==e.height()&&l.windowResizeFix||(n=e.width(),r=e.height(),u&&clearInterval(u),u=setTimeout(function(){o.trigger("update.dot")},100))})}else c=d(o),u=setInterval(function(){if(o.is(":visible")){var t=d(o);(c.width!=t.width||c.height!=t.height)&&(o.trigger("update.dot"),c=t)}},500);return o},o.unwatch=function(){return t(window).unbind("resize.dot"+s.dotId),u&&clearInterval(u),o};var i=o.contents(),l=t.extend(!0,{},t.fn.dotdotdot.defaults,e),s={},c={},u=null,g=null;return l.lastCharacter.remove instanceof Array||(l.lastCharacter.remove=t.fn.dotdotdot.defaultArrays.lastCharacter.remove),l.lastCharacter.noEllipsis instanceof Array||(l.lastCharacter.noEllipsis=t.fn.dotdotdot.defaultArrays.lastCharacter.noEllipsis),s.afterElement=f(l.after,o),s.isTruncated=!1,s.dotId=p++,o.data("dotdotdot",!0).bind_events().trigger("update.dot"),l.watch&&o.watch(),o},t.fn.dotdotdot.defaults={ellipsis:"... ",wrap:"word",fallbackToLetter:!0,lastCharacter:{},tolerance:0,callback:null,after:null,height:null,watch:!1,windowResizeFix:!0},t.fn.dotdotdot.defaultArrays={lastCharacter:{remove:[" ","ã",",",";",".","!","?"],noEllipsis:[]}},t.fn.dotdotdot.debug=function(t){};var p=1,g=t.fn.html;t.fn.html=function(n){return n!=e&&!t.isFunction(n)&&this.data("dotdotdot")?this.trigger("update",[n]):g.apply(this,arguments)};var v=t.fn.text;t.fn.text=function(n){return n!=e&&!t.isFunction(n)&&this.data("dotdotdot")?(n=t("<div />").text(n).html(),this.trigger("update",[n])):v.apply(this,arguments)}}}(jQuery); 13700/* End */ 13701; 13702; /* Start:"a:4:{s:4:"full";s:61:"/local/templates/aspro_max/js/rating_likes.js?165235571210797";s:6:"source";s:45:"/local/templates/aspro_max/js/rating_likes.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 13703if (!BXRL) 13704{ 13705 var BXRL = {}; 13706 var BXRLW = null; 13707} 13708 13709RatingLikes = function(likeId, entityTypeId, entityId, available, userId, localize, template, pathToUserProfile, pathToAjax) 13710{ 13711 this.enabled = true; 13712 this.likeId = likeId; 13713 this.entityTypeId = entityTypeId;
13714 this.entityId = entityId; 13715 this.available = (available == 'Y'); 13716 this.userId = userId; 13717 this.localize = localize; 13718 this.template = template; 13719 this.pathToUserProfile = pathToUserProfile; 13720 this.pathToAjax = typeof(pathToAjax) == "string"? pathToAjax: '/bitrix/components/bitrix/rating.vote/vote.ajax.php'; 13721 13722 this.box = BX('bx-ilike-button-'+likeId); 13723 if (this.box === null) 13724 { 13725 this.enabled = false; 13726 return false; 13727 } 13728 13729 this.button = BX.findChild(this.box, {className:'bx-ilike-left-wrap'}, true, false); 13730 this.wrapp = BX.findChild(this.box, {className:'all-wrapper'}, true, false); 13731 this.buttonText = BX.findChild(this.button, {className:'bx-ilike-text'}, true, false); 13732 this.count = BX.findChild(this.box, {tagName:'span', className:'bx-ilike-right-wrap'}, true, false); 13733 this.countText = BX.findChild(this.count, {tagName:'span', className:'bx-ilike-right'}, true, false); 13734 this.popup = null; 13735 this.popupId = null; 13736 this.popupOpenId = null; 13737 this.popupTimeoutId = null; 13738 this.popupContent = BX.findChild(BX('bx-ilike-popup-cont-'+likeId), {tagName:'span', className:'bx-ilike-popup'}, true, false); 13739 this.popupContentPage = 1; 13740 this.popupListProcess = false; 13741 this.popupTimeout = false; 13742 this.likeTimeout = false; 13743 13744 this.lastVote = BX.hasClass(template == 'standart'? this.button: this.count, 'bx-you-like')? 'plus': 'cancel'; 13745}; 13746 13747RatingLikes.LiveUpdate = function(params) 13748{ 13749 if (params.USER_ID == BX.message('USER_ID')) 13750 return false; 13751 13752 for(var i in BXRL) 13753 { 13754 if (BXRL.hasOwnProperty(i)) 13755 { 13756 if (BXRL[i].entityTypeId == params.ENTITY_TYPE_ID && BXRL[i].entityId == params.ENTITY_ID) 13757 { 13758 var element = BXRL[i]; 13759 element.countText.innerHTML = parseInt(params.TOTAL_POSITIVE_VOTES); 13760 element.count.insertBefore( 13761 BX.create("span", { props : { className : "bx-ilike-plus-one" }, style: {width: (element.countText.clientWidth-8)+'px', height: (element.countText.clientHeight-8)+'px'}, html: (params.TYPE == 'ADD'? '+1': '-1')}) 13762 , element.count.firstChild); 13763 13764 if (element.popup) 13765 { 13766 element.popup.close(); 13767 element.popupContentPage = 1; 13768 } 13769 } 13770 } 13771 } 13772}; 13773 13774RatingLikes.Set = function(likeId, entityTypeId, entityId, available, userId, localize, template, pathToUserProfile, pathToAjax) 13775{ 13776 if (template === undefined) 13777 template = 'standart'; 13778 13779 if (!BXRL[likeId] || BXRL[likeId].tryToSet <= 5) 13780 { 13781 var tryToSend = BXRL[likeId] && BXRL[likeId].tryToSet? BXRL[likeId].tryToSet: 1; 13782 BXRL[likeId] = new RatingLikes(likeId, entityTypeId, entityId, available, userId, localize, template, pathToUserProfile, pathToAjax); 13783 if (BXRL[likeId].enabled) 13784 { 13785 RatingLikes.Init(likeId); 13786 } 13787 else 13788 { 13789 setTimeout(function(){ 13790 BXRL[likeId].tryToSet = tryToSend+1; 13791 RatingLikes.Set(likeId, entityTypeId, entityId, available, userId, localize, template, pathToUserProfile, pathToAjax); 13792 }, 500); 13793 } 13794 } 13795}; 13796 13797RatingLikes.Init = function(likeId) 13798{ 13799 // like/unlike button 13800 if (BXRL[likeId].available) 13801 { 13802 13803 BX.bind(BXRL[likeId].template == 'standart'? BXRL[likeId].button: BXRL[likeId].buttonText, 'click' ,function(e) { 13804 clearTimeout(BXRL[likeId].likeTimeout); 13805 if (BX.hasClass(BXRL[likeId].template == 'standart'? this: BXRL[likeId].count, 'bx-you-like')) 13806 { 13807 BXRL[likeId].buttonText.innerHTML = BXRL[likeId].localize['LIKE_N']; 13808 BXRL[likeId].countText.innerHTML = parseInt(BXRL[likeId].countText.innerHTML)-1; 13809 BX.removeClass(BXRL[likeId].template == 'standart'? this: BXRL[likeId].count, 'bx-you-like'); 13810 13811 BXRL[likeId].likeTimeout = setTimeout(function(){ 13812 if (BXRL[likeId].lastVote != 'cancel') 13813 RatingLikes.Vote(likeId, 'cancel'); 13814 }, 1000); 13815 } 13816 else 13817 { 13818 BXRL[likeId].buttonText.innerHTML = BXRL[likeId].localize['LIKE_Y']; 13819 BXRL[likeId].countText.innerHTML = parseInt(BXRL[likeId].countText.innerHTML)+1; 13820 BX.addClass(BXRL[likeId].template == 'standart'? this: BXRL[likeId].count, 'bx-you-like'); 13821 13822 BXRL[likeId].likeTimeout = setTimeout(function(){ 13823 if (BXRL[likeId].lastVote != 'plus') 13824 RatingLikes.Vote(likeId, 'plus'); 13825 }, 1000); 13826 } 13827 BX.removeClass(this.box, 'bx-ilike-button-hover'); 13828 BX.PreventDefault(e); 13829 }); 13830 // Hover/unHover like-button 13831 BX.bind(BXRL[likeId].box, 'mouseover', function() {BX.addClass(this, 'bx-ilike-button-hover')}); 13832 BX.bind(BXRL[likeId].box, 'mouseout', function() {BX.removeClass(this, 'bx-ilike-button-hover')}); 13833 13834 } 13835 else 13836 { 13837 if (BXRL[likeId].buttonText != undefined) 13838 BXRL[likeId].buttonText.innerHTML = BXRL[likeId].localize['LIKE_D']; 13839 } 13840 // get like-user-list 13841 RatingLikes.PopupScroll(likeId); 13842 console.log(); 13843 BX.bind(BXRL[likeId].wrapp, 'mouseover' , function() { 13844 clearTimeout(BXRL[likeId].popupTimeoutId); 13845 BXRL[likeId].popupTimeoutId = setTimeout(function(){ 13846 if (BXRLW == likeId) 13847 return false;
13848 if (BXRL[likeId].popupContentPage == 1) 13849 RatingLikes.List(likeId, 1); 13850 BXRL[likeId].popupTimeoutId = setTimeout(function() { 13851 RatingLikes.OpenWindow(likeId); 13852 }, 400); 13853 }, 400); 13854 }); 13855 BX.bind(BXRL[likeId].wrapp, 'mouseout' , function() { 13856 clearTimeout(BXRL[likeId].popupTimeoutId); 13857 }); 13858 /*BX.bind(BXRL[likeId].count, 'click' , function() { 13859 clearTimeout(BXRL[likeId].popupTimeoutId); 13860 if (BXRL[likeId].popupContentPage == 1) 13861 RatingLikes.List(likeId, 1); 13862 RatingLikes.OpenWindow(likeId); 13863 });*/ 13864 13865 BX.bind(BXRL[likeId].box, 'mouseover' , function() { 13866 clearTimeout(BXRL[likeId].popupTimeout); 13867 }); 13868 BX.bind(BXRL[likeId].box, 'mouseout' , function() { 13869 clearTimeout(BXRL[likeId].popupTimeout); 13870 BXRL[likeId].popupTimeout = setTimeout(function(){ 13871 if (BXRL[likeId].popup !== null) 13872 { 13873 BXRL[likeId].popup.close(); 13874 BXRLW = null; 13875 } 13876 }, 1000); 13877 }); 13878}; 13879 13880RatingLikes.OpenWindow = function(likeId) 13881{ 13882 if (parseInt(BXRL[likeId].countText.innerHTML) == 0) 13883 return false; 13884 13885 if (BXRL[likeId].popup == null) 13886 { 13887 BXRL[likeId].popup = new BX.PopupWindow('ilike-popup-'+likeId, (BXRL[likeId].template == 'standart'? BXRL[likeId].count: BXRL[likeId].box), { 13888 lightShadow : true, 13889 offsetLeft: 5, 13890 autoHide: true, 13891 closeByEsc: true, 13892 zIndex: 2005, 13893 bindOptions: {position: "top"}, 13894 events : { 13895 onPopupClose : function() { BXRLW = null; }, 13896 onPopupDestroy : function() { } 13897 }, 13898 content : BX('bx-ilike-popup-cont-'+likeId) 13899 }); 13900 BXRL[likeId].popup.setAngle({}); 13901 13902 BX.bind(BX('ilike-popup-'+likeId), 'mouseout' , function() { 13903 clearTimeout(BXRL[likeId].popupTimeout); 13904 BXRL[likeId].popupTimeout = setTimeout(function(){ 13905 BXRL[likeId].popup.close(); 13906 }, 1000); 13907 }); 13908 13909 BX.bind(BX('ilike-popup-'+likeId), 'mouseover' , function() { 13910 clearTimeout(BXRL[likeId].popupTimeout); 13911 }); 13912 } 13913 13914 if (BXRLW != null) 13915 BXRL[BXRLW].popup.close(); 13916 13917 BXRLW = likeId; 13918 BXRL[likeId].popup.show(); 13919 13920 RatingLikes.AdjustWindow(likeId); 13921}; 13922 13923RatingLikes.Vote = function(likeId, voteAction) 13924{ 13925 BX.ajax({ 13926 url: BXRL[likeId].pathToAjax, 13927 method: 'POST', 13928 dataType: 'json', 13929 data: {'RATING_VOTE' : 'Y', 'RATING_VOTE_TYPE_ID' : BXRL[likeId].entityTypeId, 'RATING_VOTE_ENTITY_ID' : BXRL[likeId].entityId, 'RATING_VOTE_ACTION' : voteAction, 'sessid': BX.bitrix_sessid()}, 13930 onsuccess: function(data) { 13931 BXRL[likeId].lastVote = data.action; 13932 BXRL[likeId].countText.innerHTML = data.items_all; 13933 BXRL[likeId].popupContentPage = 1; 13934 13935 BXRL[likeId].popupContent.innerHTML = ''; 13936 spanTag0 = document.createElement("span"); 13937 spanTag0.className = "bx-ilike-wait"; 13938 BXRL[likeId].popupContent.appendChild(spanTag0); 13939 RatingLikes.AdjustWindow(likeId); 13940 13941 if(BX('ilike-popup-'+likeId) && BX('ilike-popup-'+likeId).style.display == "block") 13942 RatingLikes.List(likeId, null); 13943 }, 13944 onfailure: function(data) {} 13945 }); 13946 return false; 13947}; 13948 13949RatingLikes.List = function(likeId, page) 13950{ 13951 if (parseInt(BXRL[likeId].countText.innerHTML) == 0) 13952 return false; 13953 13954 if (page == null) 13955 page = BXRL[likeId].popupContentPage; 13956 BXRL[likeId].popupListProcess = true; 13957 BX.ajax({ 13958 url: BXRL[likeId].pathToAjax, 13959 method: 'POST', 13960 dataType: 'json', 13961 data: {'RATING_VOTE_LIST' : 'Y', 'RATING_VOTE_TYPE_ID' : BXRL[likeId].entityTypeId, 'RATING_VOTE_ENTITY_ID' : BXRL[likeId].entityId, 'RATING_VOTE_LIST_PAGE' : page, 'PATH_TO_USER_PROFILE' : BXRL[likeId].pathToUserProfile, 'sessid': BX.bitrix_sessid()}, 13962 onsuccess: function(data) 13963 { 13964 BXRL[likeId].countText.innerHTML = data.items_all; 13965 13966 if ( parseInt(data.items_page) == 0 ) 13967 return false; 13968 13969 if (page == 1) 13970 { 13971 BXRL[likeId].popupContent.innerHTML = ''; 13972 spanTag0 = document.createElement("span"); 13973 spanTag0.className = "bx-ilike-bottom_scroll"; 13974 BXRL[likeId].popupContent.appendChild(spanTag0); 13975 } 13976 BXRL[likeId].popupContentPage += 1; 13977 13978 var avatarNode = null; 13979 13980 for (var i = 0; i < data.items.length; i++) 13981 { 13982 if (data.items[i]['PHOTO_SRC'].length > 0) 13983 { 13984 avatarNode = BX.create("IMG", { 13985 attrs: {src: data.items[i]['PHOTO_SRC']}, 13986 props: {className: "bx-ilike-popup-avatar-img"} 13987 }); 13988 } 13989 else 13990 { 13991 avatarNode = BX.create("IMG", { 13992 attrs: {src: '/bitrix/images/main/blank.gif'}, 13993 props: {className: "bx-ilike-popup-avatar-img bx-ilike-popup-avatar-img-default"} 13994 }); 13995 } 13996 13997 BXRL[likeId].popupContent.appendChild( 13998 BX.create("div", { 13999 /*attrs: { 14000 href: data.items[i]['URL'], 14001 target: '_blank' 14002 },*/ 14003 props: { 14004 className: "bx-ilike-popup-img" + (!!data.items[i]['USER_TYPE'] ? " bx-ilike-popup-img-" + data.items[i]['USER_TYPE'] : "") 14005 }, 14006 children: [ 14007 BX.create("SPAN", { 14008 props: { 14009 className: "bx-ilike-popup-avatar-new" 14010 }, 14011 children: [ 14012 avatarNode, 14013 BX.create("SPAN", { 14014 props: {className: "bx-ilike-popup-avatar-status-icon"} 14015 }) 14016 ] 14017 }), 14018 BX.create("SPAN", { 14019 props: { 14020 className: "bx-ilike-popup-name-new" 14021 }, 14022 html: data.items[i]['FULL_NAME'] 14023 }) 14024 ] 14025 }) 14026 ); 14027 } 14028 14029 RatingLikes.AdjustWindow(likeId); 14030 RatingLikes.PopupScroll(likeId); 14031 14032 BXRL[likeId].popupListProcess = false;
14033 }, 14034 onfailure: function(data) {} 14035 }); 14036 return false; 14037}; 14038 14039RatingLikes.AdjustWindow = function(likeId) 14040{ 14041 if (BXRL[likeId].popup != null) 14042 { 14043 BXRL[likeId].popup.bindOptions.forceBindPosition = true; 14044 BXRL[likeId].popup.adjustPosition(); 14045 BXRL[likeId].popup.bindOptions.forceBindPosition = false; 14046 } 14047}; 14048 14049RatingLikes.PopupScroll = function(likeId) 14050{ 14051 BX.bind(BXRL[likeId].popupContent, 'scroll' , function() { 14052 if (this.scrollTop > (this.scrollHeight - this.offsetHeight) / 1.5) 14053 { 14054 RatingLikes.List(likeId, null); 14055 BX.unbindAll(this); 14056 } 14057 }); 14058}; 14059 14060/* End */ 14061; 14062; /* Start:"a:4:{s:4:"full";s:61:"/local/templates/aspro_max/js/video_banner.js?165235571431639";s:6:"source";s:45:"/local/templates/aspro_max/js/video_banner.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 14063var players = {}; 14064 14065function pauseMainBanner(){ 14066 $('.top_slider_wrapp .flexslider').flexslider('pause'); 14067} 14068 14069function playMainBanner(){ 14070 $('.top_slider_wrapp .flexslider').flexslider('play'); 14071} 14072 14073function startMainBannerSlideVideo($slide){ 14074 var slideActiveIndex = $slide.attr('data-slide_index') 14075 var $slides = $slide.closest('.slides').find('.box[data-slide_index="'+ slideActiveIndex +'"]') // current slide & cloned 14076 var videoSource = $slide.attr('data-video_source') 14077 if(videoSource){ 14078 $slides.addClass('loading') 14079 pauseMainBanner() 14080 14081 var $slider = $slide.closest('.flexslider') 14082 $slider.addClass('video_visible') 14083 var slidesIndexesWithVideo = $slider.data('slidesIndexesWithVideo') 14084 if(typeof slidesIndexesWithVideo === 'undefined'){ 14085 slidesIndexesWithVideo = []; 14086 } 14087 slidesIndexesWithVideo.push(slideActiveIndex) 14088 $slider.data('slidesIndexesWithVideo', slidesIndexesWithVideo) 14089 14090 var videoPlayerSrc = $slide.attr('data-video_src') 14091 var videoSoundDisabled = $slide.attr('data-video_disable_sound') 14092 var bVideoSoundDisabled = videoSoundDisabled == 1 14093 var videoLoop = $slide.attr('data-video_loop') 14094 var bVideoLoop = videoLoop == 1 14095 var videoCover = $slide.attr('data-video_cover') 14096 var bVideoCover = videoCover == 1 14097 var videoUnderText = $slide.attr('data-video_under_text') 14098 var bVideoUnderText = videoUnderText == 1 14099 var videoPlayer = $slide.attr('data-video_player') 14100 var bVideoPlayerYoutube = videoPlayer === 'YOUTUBE' 14101 var bVideoPlayerVimeo = videoPlayer === 'VIMEO' 14102 var bVideoPlayerRutube = videoPlayer === 'RUTUBE' 14103 var bVideoPlayerHtml5 = videoPlayer === 'HTML5' 14104 var videoWidth = bVideoPlayerHtml5 ? false : $slide.attr('data-video_width') 14105 var videoHeight = bVideoPlayerHtml5 ? false : $slide.attr('data-video_height') 14106 14107 if(videoPlayerSrc && !$slide.find('.video').length){ 14108 var InitPlayer = function(){ 14109 $slides.each(function(i, node){ 14110 var $_slide = $(node); 14111 var videoID = getRandomInt(100, 1000); 14112 var bClone = $_slide.hasClass('clone'), 14113 tmp_class = $_slide.attr('id'); 14114 if(!$_slide.find('.video.'+tmp_class).length) 14115 { 14116 if(bVideoPlayerYoutube){ 14117 $_slide.prepend('<div class="wrapper_video"><iframe id="player_' + videoID + '" class="video ' + tmp_class + (bVideoCover ? ' cover' : '') + '" src="'+ videoPlayerSrc +'" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen allow="accelerometer; autoplay; encrypted-media; gyroscope; fullscreen;"' + ((videoWidth && videoHeight) ? ' data-video_proportion="' + (videoWidth / videoHeight) + '"' : '') + '></iframe></div>'); 14118 } 14119 else if(bVideoPlayerVimeo){ 14120 $_slide.prepend('<div class="wrapper_video"><iframe id="player_' + videoID + '" class="video ' + tmp_class + (bVideoCover ? ' cover' : '') + '" src="'+ videoPlayerSrc +'" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen allow="accelerometer; autoplay; encrypted-media; gyroscope; fullscreen;"' + ((videoWidth && videoHeight) ? ' data-video_proportion="' + (videoWidth / videoHeight) + '"' : '') + '></iframe></div>'); 14121 } 14122 else if(bVideoPlayerRutube){ 14123 videoPlayerSrc = videoPlayerSrc + '&playerid=' + videoID; 14124 $_slide.prepend('<div class="wrapper_video"><iframe id="player_' + videoID + '" class="video ' + tmp_class + (bVideoCover ? ' cover' : '') + '" src="'+ videoPlayerSrc +'" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen allow="autoplay; encrypted-media; gyroscope; fullscreen;"' + ((videoWidth && videoHeight) ? ' data-video_proportion="' + (videoWidth / videoHeight) + '"' : '') + '></iframe></div>'); 14125 } 14126 else if(bVideoPlayerHtml5){ 14127 $_slide.prepend('<div class="wrapper_video"><video autobuffer playsinline webkit-playsinline autoplay id="player_' + videoID + '" class="video ' + tmp_class + (bVideoCover ? ' cover' : '') + '"' + (bVideoLoop ? ' loop ' : '') + (bVideoSoundDisabled || bClone ? ' muted ' : '') + '><source src="'+ videoPlayerSrc +'" type=\'video/mp4; codecs="avc1.42E01E, mp4a.40.2"\' /><p class="vjs-no-js">To view this video please enable JavaScript, and consider upgrading to a web browser that supports HTML5 video</p></iframe></div>'); 14128 } 14129 } 14130 14131 if(typeof(players) !== 'undefined' && players){ 14132 players[videoID] = { 14133 id: 'player_' + videoID, 14134 mute: bVideoSoundDisabled || bClone, 14135 loop: bVideoLoop, 14136 cover: bVideoCover, 14137 videoPlayer: videoPlayer, 14138 slideIndex: slideActiveIndex, 14139 clone: bClone, 14140 playing: false, 14141 videoWidth: videoWidth, 14142 videoHeight: videoHeight, 14143 videoProportion: ((videoWidth && videoHeight) ? videoWidth / videoHeight : false) 14144 }; 14145 14146 if(bVideoPlayerYoutube){ 14147 window[players[videoID].id] = new YT.Player( 14148 players[videoID].id, { 14149 events: { 14150 'onReady': onYoutubePlayerReady, 14151 'onStateChange': onYoutubePlayerStateChange 14152 } 14153 } 14154 ); 14155 } 14156 else if(bVideoPlayerVimeo){ 14157 window[players[videoID].id] = new Vimeo.Player(document.getElementById(players[videoID].id), {autopause: false, byline: false, loop: false, title: false}); 14158 window[players[videoID].id].on('loaded', onVimeoPlayerReady) 14159 window[players[videoID].id].on('play', onVimeoPlayerStateChange) 14160 window[players[videoID].id].on('pause', onVimeoPlayerStateChange) 14161 window[players[videoID].id].on('ended', onVimeoPlayerStateChange) 14162 } 14163 else if(bVideoPlayerRutube){ 14164 document.getElementById(players[videoID].id).onload = function(e){ 14165 var videoID = this.id.replace('player_', '') 14166 players[videoID].contentWindow = this.contentWindow 14167 onRutubePlayerReady(videoID) 14168 } 14169 } 14170 else if(bVideoPlayerHtml5){ 14171 document.getElementById(players[videoID].id).addEventListener('loadeddata', on
14171Html5PlayerReady) 14172 document.getElementById(players[videoID].id).addEventListener('play', onHtml5PlayerStateChange) 14173 document.getElementById(players[videoID].id).addEventListener('pause', onHtml5PlayerStateChange) 14174 document.getElementById(players[videoID].id).addEventListener('ended', onHtml5PlayerStateChange) 14175 } 14176 } 14177 }); 14178 } 14179 14180 if(!bVideoPlayerHtml5){ 14181 var obPlayerVariable = '' 14182 var fnPlayerVariable = '' 14183 if(typeof window['YoutubePlayerScriptLoaded'] === 'undefined'){ 14184 window['YoutubePlayerScriptLoaded'] = false 14185 } 14186 if(typeof window['VimeoPlayerScriptLoaded'] === 'undefined'){ 14187 window['VimeoPlayerScriptLoaded'] = false 14188 } 14189 if(typeof window['RutubePlayerListnersAdded'] === 'undefined'){ 14190 window['RutubePlayerListnersAdded'] = false 14191 } 14192 14193 // load script 14194 if(bVideoPlayerYoutube){ 14195 obPlayerVariable = 'YT' 14196 fnPlayerVariable = 'Player' 14197 if(!window['YoutubePlayerScriptLoaded']){ 14198 var script = document.createElement('script'); 14199 script.src = "https://www.youtube.com/iframe_api"; 14200 var firstScriptTag = document.getElementsByTagName('script')[0]; 14201 firstScriptTag.parentNode.insertBefore(script, firstScriptTag); 14202 window['YoutubePlayerScriptLoaded'] = true; 14203 } 14204 } 14205 else if(bVideoPlayerVimeo){ 14206 obPlayerVariable = 'Vimeo' 14207 if(!window['VimeoPlayerScriptLoaded']){ 14208 var script = document.createElement('script'); 14209 script.src = 'https://player.vimeo.com/api/player.js'; 14210 (document.head || document.documentElement).appendChild(script); 14211 window['VimeoPlayerScriptLoaded'] = true 14212 } 14213 } 14214 else if(bVideoPlayerRutube){ 14215 if(!window['RutubePlayerListnersAdded']){ 14216 window.addEventListener('message', function(e){ 14217 if(e.origin.indexOf('rutube.ru') !== -1){ 14218 var message = JSON.parse(e.data) 14219 if(typeof message === 'object' && message){ 14220 if(typeof message.type !== 'undefined' && message.type){ 14221 var videoID = false 14222 14223 for(var j in players){ 14224 if(typeof players[j].contentWindow !== 'undefined'){ 14225 if(players[j].contentWindow == e.source){ 14226 videoID = j 14227 break 14228 } 14229 } 14230 } 14231 14232 if(videoID){ 14233 switch (message.type) { 14234 case 'player:changeState': 14235 onRutubePlayerStateChange(videoID, message.data.state) 14236 break 14237 case 'player:currentTime': 14238 onRutubePlayerCurrentTime(videoID, message.data.time) 14239 break 14240 } 14241 } 14242 } 14243 } 14244 } 14245 }); 14246 } 14247 } 14248 14249 if(!obPlayerVariable.length){ 14250 InitPlayer() 14251 } 14252 else{ 14253 // wait player class 14254 if(typeof window[obPlayerVariable] === 'object'){ 14255 if(!fnPlayerVariable.length || (fnPlayerVariable.length && typeof window[obPlayerVariable][fnPlayerVariable] === 'function')){ 14256 14257 InitPlayer() 14258 } 14259 } 14260 else{ 14261 var waitPlayerInterval = setInterval(function(){ 14262 if(typeof window[obPlayerVariable] === 'object'){ 14263 if(!fnPlayerVariable.length || (fnPlayerVariable.length && typeof window[obPlayerVariable][fnPlayerVariable] === 'function')){ 14264 14265 clearInterval(waitPlayerInterval) 14266 14267 InitPlayer() 14268 } 14269 } 14270 }, 50) 14271 } 14272 } 14273 } 14274 else{ 14275 InitPlayer() 14276 } 14277 } 14278 else 14279 { 14280 // pause play video 14281 if(typeof(players) !== 'undefined' && players){ 14282 for(var j in players){ 14283 if(/*players[j].playing &&*/ !players[j].clone/* && (players[j].slideIndex != $curSlideIndex)*/){ 14284 if((typeof window[players[j].id] == 'object')){ 14285 if(players[j].playing) 14286 { 14287 if(players[j].videoPlayer === 'YOUTUBE'){ 14288 window[players[j].id].pauseVideo() 14289 } 14290 else if(players[j].videoPlayer === 'VIMEO'){ 14291 window[players[j].id].pause() 14292 } 14293 else if(players[j].videoPlayer === 'RUTUBE'){ 14294 document.getElementById(players[j].id).contentWindow.postMessage(JSON.stringify({ 14295 type: 'player:pause', 14296 data: {} 14297 }), '*') 14298 } 14299 else if(players[j].videoPlayer === 'HTML5'){ 14300 document.getElementById(players[j].id).pause() 14301 } 14302 } 14303 else if(players[j].slideIndex == slideActiveIndex) 14304 { 14305 if(players[j].videoPlayer === 'YOUTUBE'){ 14306 window[players[j].id].playVideo() 14307 } 14308 else if(players[j].videoPlayer === 'VIMEO'){ 14309 window[players[j].id].play() 14310 } 14311 else if(players[j].videoPlayer === 'RUTUBE'){ 14312 document.getElementById(players[j].id).contentWindow.postMessage(JSON.stringify({ 14313 type: 'player:play', 14314 data: {} 14315 }), '*') 14316 } 14317 else if(players[j].videoPlayer === 'HTML5'){ 14318 document.getElementById(players[j].id).play() 14319 } 14320 } 14321 } 14322 } 14323 } 14324 } 14325 } 14326 } 14327} 14328 14329var CoverPlayer = function(){ 14330 $('.top_slider_wrapp .video.cover').each(function(){ 14331 14332 var view2 = $(this).closest('.top_slider_wrapp.view_2'); 14333 if(view2.length && window.matchMedia('(max-width:767px)').matches) { 14334 var $slide = view2.find('table'); 14335 } else { 14336 var $slide = $(this).closest('.box'); 14337 } 14338 14339 var slideHeight = $slide.height(); 14340 var slideWidth = $slide.width(); 14341 var videoProportion = $(this).attr('data-video_proportion'); 14342 if(videoProportion === undefined){ 14343 videoProportion = 16 / 9; 14344 } 14345 14346 // set video width = 100% of slide width 14347 var videoWidth = slideWidth; 14348 // calculate video height proportional 14349 var videoHeight = slideWidth / videoProportion; 14350 // video minimal height = 100% slide height 14351 if(videoHeight < slideHeight){ 14352 // increase video width proportional 14353 videoWidth = slideHeight * videoProportion; 14354 videoHeight = slideHeight; 14355 } 14356 14357 $(this).width(videoWidth).height(videoHeight).css({ 14358 'margin-top' : '-' + (videoHeight - slideHeight) / 2 + 'px', 14359 'margin-left' : '-' + (videoWidth - slideWidth) / 2 + 'px' 14360 }); 14361 }); 14362} 14363 14364// var CoverPlayerHtml = function(){ 14365// $('.top_slider_wrapp li[data-video_player="HTML5"] .video.cover').each(function(){ 14366// var view2 = $(this).closest('.top_slider_wrapp.view_2'); 14367// if(view2.length && window.matchMedia('(max-width:767px)').matches) { 14368// var $slide = view2.find('table'); 14369// } else { 14370// var $slide = $(this).closest('.box'); 14371// } 14372// var slideHeight = $slide.height(); 14373// var slideWidth = $slide.width(); 14374// var videoHeight = $(this)[0].videoHeight; // original video size 14375// var videoWidth = $(this)[0].videoWidth; // original video size 14376// var videoProportion = videoWidth / videoHeight; 14377 14378// videoWidth = slideWidth; 14379// videoHeight = slideWidth / videoProportion; 14380 14381// if(videoHeight < slideHeight){ 14382// videoWidth = slideHeight * videoProportion; 14383// videoHeight = slideHeight; 14384// } 14385 14386// $(this).width(videoWidth).height(videoHeight).css({ 14387// 'margin-top' : '-' + (videoHeight - slideHeight) / 2 + 'px', 14388// 'margin-left' : '-' + (videoWidth - slideWidth) / 2 + 'px', 14389// }); 14390// }); 14391 14392// setTimeout(function(){ 14393// $('.top_slider_wrapp .flex-active-slide .video.cover').css('visibility', 'visible'); 14394// }, 1300); 14395// } 14396 14397// var CoverPlayer = function(){ 14398// $('.top_slider_wrapp li:not([data-video_player="HTML5"]) .video.cover').each(function(){ 14399// var view2 = $(this).closest('.top_slider_wrapp.view_2'); 14400// if(view2.length && window.matchMedia('(max-width:767px)').matches) { 14401// var $slide = view2.find('table'); 14402// } else { 14403// var $slide = $(this).closest('.box'); 14404// } 14405// var $slide = $(this).closest('.box'); 14406// var slideHeight = $slide.height(); 14407// var slideWidth = $slide.width(); 14408 14409// var videoHeight = $(this).attr('data-video_height'); // original video size 14410// var videoWidth = $(this).attr('data-video_width'); // original video size 14411 14412// if(videoHeight !== undefined && videoWidth !== undefined){ 14413// var videoProportion = videoWidth / videoHeight; 14414 14415// videoWidth = slideWidth; 14416// videoHeight = slideWidth / videoProportion; 14417 14418// if(videoHeight < slideHeight){ 14419// videoWidth = slideHeight * videoProportion; 14420// videoHeight = slideHeight; 14421// } 14422 14423// $(this).width(videoWidth).height(videoHeight).css({ 14424// 'margin-top' : '-' + (videoHeight - slideHeight) / 2 + 'px', 14425// 'margin-left' : '-' + (videoWidth - slideWidth) / 2 + 'px', 14426// }); 14427// } 14428// else{ 14429// var windowWidth = $(window).width() 14430// var height = windowWidth * 9 / 16 14431// $(this).css({'height': height + 'px', 'margin-top': (height > slideHeight ? (slideHeight - height) / 2 : 0) + 'px'}) 14432// } 14433// }); 14434// } 14435 14436function onYoutubePlayerReady(e) { 14437 var videoID = e.target.f.id.replace('player_', '')
14438 if(videoID){ 14439 var mute = players[videoID].mute 14440 var cover = players[videoID].cover 14441 var clone = players[videoID].clone 14442 var $slide = $('#player_' + videoID).closest('.box') 14443 14444 // mute sound 14445 if(mute || clone){ 14446 window[players[videoID].id].mute() 14447 } 14448 14449 // cover video 14450 if(cover){ 14451 // get video`s original size 14452 if(!players[videoID].videoProportion){ 14453 var embedHtml = e.target.getVideoEmbedCode(); 14454 if(embedHtml.length){ 14455 var match = embedHtml.match(/width="(\d*)"[^>]*height="(\d*)"/); 14456 if(match !== null){ 14457 var videoWidth = match[1]; 14458 var videoHeight = match[2]; 14459 14460 players[videoID].videoWidth = videoWidth; 14461 players[videoID].videoHeight = videoHeight; 14462 players[videoID].videoProportion = videoWidth / videoHeight; 14463 14464 $slide.find('.video').attr('data-video_proportion', players[videoID].videoProportion); 14465 } 14466 } 14467 } 14468 14469 CoverPlayer() 14470 } 14471 14472 // not start clone video playing 14473 if(clone){ 14474 setTimeout(function(){ 14475 e.target.pauseVideo() 14476 }, 100) 14477 } 14478 else{ 14479 // stop slider 14480 pauseMainBanner() 14481 e.target.playVideo(); 14482 14483 // e.target.playVideo(); 14484 // e.target.playVideo(); 14485 } 14486 14487 // update slide class 14488 $slide.addClass('started') 14489 // $slide.removeClass('loading') 14490 } 14491} 14492 14493function onYoutubePlayerStateChange(e){ 14494 var videoID = e.target.f.id.replace('player_', '') 14495 if(videoID){ 14496 var clone = players[videoID].clone 14497 var loop = players[videoID].loop 14498 var slideIndex = players[videoID].slideIndex 14499 if(!clone){ 14500 if(e.data === YT.PlayerState.PLAYING){ 14501 players[videoID].playing = true 14502 14503 $('#player_'+videoID).closest('.box').find('.wrapper_inner').addClass('loading'); 14504 $('#player_'+videoID).closest('.box').find('.wrapper_inner .btn-video').addClass('loading'); 14505 14506 // stop slider 14507 pauseMainBanner() 14508 14509 e.target.playVideo() 14510 } 14511 else if(e.data === YT.PlayerState.PAUSED){ 14512 players[videoID].playing = false 14513 14514 // sync time in cloned players & pause 14515 var time = Math.floor(window[players[videoID].id].getCurrentTime() * 10) / 10 14516 14517 $('#player_'+videoID).closest('.box').find('.wrapper_inner').removeClass('loading'); 14518 $('#player_'+videoID).closest('.box').find('.wrapper_inner .btn-video').removeClass('loading'); 14519 14520 window[players[videoID].id].seekTo(time, true) 14521 for(var j in players){ 14522 if(players[j].slideIndex == slideIndex && players[j].clone){ 14523 14524 if('getCurrentTime' in window[players[j].id]) 14525 { 14526 window[players[j].id].pauseVideo() 14527 window[players[j].id].seekTo(time, true) 14528 } 14529 } 14530 } 14531 } 14532 else if(e.data === YT.PlayerState.ENDED){ 14533 players[videoID].playing = false 14534 if(loop){ 14535 e.target.playVideo() 14536 } 14537 else{ 14538 // play slider 14539 playMainBanner() 14540 } 14541 } 14542 else if(e.data === YT.PlayerState.UNSTARTED){ 14543 players[videoID].playing = false 14544 $('#player_'+videoID).closest('.box').find('.wrapper_inner .btn-video').removeClass('loading'); 14545 // window[players[videoID].id].mute() 14546 e.target.playVideo() 14547 } 14548 } 14549 } 14550} 14551 14552function onVimeoPlayerReady(e){ 14553 var videoID = this.element.id.replace('player_', '') 14554 if(videoID){ 14555 var mute = players[videoID].mute 14556 var cover = players[videoID].cover 14557 var clone = players[videoID].clone 14558 var $slide = $('#player_' + videoID).closest('.box') 14559 14560 // mute sound 14561 if(mute || clone){ 14562 window[players[videoID].id].setVolume(0) 14563 } 14564 14565 // cover video 14566 if(cover){ 14567 // get video`s original size 14568 if(!players[videoID].videoProportion){ 14569 var widthPromise = window[players[videoID].id].getVideoWidth(); 14570 var heightPromise = window[players[videoID].id].getVideoHeight(); 14571 widthPromise.then( 14572 function(value) { 14573 var videoWidth = value; 14574 14575 heightPromise.then( 14576 function(value) { 14577 var videoHeight = value; 14578 14579 players[videoID].videoWidth = videoWidth; 14580 players[videoID].videoHeight = videoHeight; 14581 players[videoID].videoProportion = videoWidth / videoHeight; 14582 14583 $slide.find('.video').attr('data-video_proportion', players[videoID].videoProportion); 14584 14585 CoverPlayer(); 14586 } 14587 ); 14588 } 14589 ); 14590 } 14591 } 14592 14593 // not start clone video playing 14594 if(clone){ 14595 setTimeout(function(){ 14596 window[players[videoID].id].pause() 14597 }, 100) 14598 } 14599 else{ 14600 // stop slider 14601 pauseMainBanner() 14602 14603 // start video 14604 var promise = window[players[videoID].id].play(); 14605 if(typeof promise !== 'undefined'){ 14606 promise.catch( 14607 function(){ 14608 setTimeout(function(){ 14609 window[players[videoID].id].setVolume(0) 14610 window[players[videoID].id].play() 14611 }, 100); 14612 } 14613 ); 14614 } 14615 } 14616 14617 // update slide class 14618 $slide.addClass('started') 14619 // $slide.removeClass('loading') 14620 } 14621} 14622 14623function onVimeoPlayerStateChange(e){
14624 var videoID = this.element.id.replace('player_', '') 14625 if(videoID){ 14626 var cover = players[videoID].cover 14627 var clone = players[videoID].clone 14628 var loop = players[videoID].loop 14629 var slideIndex = players[videoID].slideIndex 14630 14631 if(!clone){ 14632 window[players[videoID].id].getPaused().then(function(paused){ 14633 if(paused){ 14634 players[videoID].playing = false 14635 14636 $('#player_'+videoID).closest('.box').find('.wrapper_inner').removeClass('loading'); 14637 $('#player_'+videoID).closest('.box').find('.wrapper_inner .btn-video').removeClass('loading'); 14638 14639 // sync time in cloned players & pause 14640 window[players[videoID].id].getCurrentTime().then(function(seconds){ 14641 var time = Math.floor(seconds * 10) / 10 14642 window[players[videoID].id].setCurrentTime(time).then(function(seconds){ 14643 for(var j in players){ 14644 if(players[j].slideIndex == slideIndex && players[j].clone){ 14645 window[players[j].id].pause() 14646 window[players[j].id].setCurrentTime(time).then(function(seconds){}) 14647 } 14648 } 14649 }) 14650 }) 14651 } 14652 else{ 14653 $('#player_'+videoID).closest('.box').find('.wrapper_inner').addClass('loading'); 14654 $('#player_'+videoID).closest('.box').find('.wrapper_inner .btn-video').addClass('loading'); 14655 window[players[videoID].id].getEnded().then(function(ended){ 14656 if(ended){ 14657 players[videoID].playing = false 14658 if(loop){ 14659 window[players[videoID].id].play() 14660 } 14661 else{ 14662 // play slider 14663 playMainBanner() 14664 } 14665 } 14666 else{ 14667 players[videoID].playing = true 14668 14669 14670 // stop slider 14671 pauseMainBanner() 14672 } 14673 }) 14674 } 14675 }) 14676 } 14677 } 14678} 14679 14680function onRutubePlayerReady(videoID){ 14681 if(videoID){ 14682 var mute = players[videoID].mute 14683 var cover = players[videoID].cover 14684 var clone = players[videoID].clone 14685 var player = document.getElementById(players[videoID].id) 14686 var $slide = $('#player_' + videoID).closest('.box') 14687 14688 // mute sound 14689 if(mute || clone){ 14690 player.contentWindow.postMessage(JSON.stringify({ 14691 type: 'player:mute', 14692 data: {} 14693 }), '*') 14694 } 14695 14696 // cover video 14697 if(cover){ 14698 CoverPlayer() 14699 } 14700 14701 // not start clone video playing 14702 if(clone){ 14703 setTimeout(function(){ 14704 player.contentWindow.postMessage(JSON.stringify({ 14705 type: 'player:pause', 14706 data: {} 14707 }), '*') 14708 }, 100) 14709 } 14710 else{ 14711 // stop slider 14712 pauseMainBanner() 14713 14714 player.contentWindow.postMessage(JSON.stringify({ 14715 type: 'player:play', 14716 data: {} 14717 }), '*') 14718 } 14719 14720 // update slide class 14721 $slide.addClass('started') 14722 // $slide.removeClass('loading') 14723 } 14724} 14725 14726function onRutubePlayerCurrentTime(videoID, time){ 14727 if(videoID){ 14728 players[videoID].time = time 14729 } 14730} 14731 14732function onRutubePlayerStateChange(videoID, state){ 14733 if(videoID){ 14734 var clone = players[videoID].clone 14735 var loop = players[videoID].loop 14736 var slideIndex = players[videoID].slideIndex 14737 var player = document.getElementById(players[videoID].id) 14738 14739 if(!clone){ 14740 if(state === 'playing'){ 14741 $('#'+videoID).closest('.box').find('.wrapper_inner').addClass('loading'); 14742 $('#'+videoID).closest('.box').find('.wrapper_inner .btn-video').addClass('loading'); 14743 14744 players[videoID].playing = true 14745 14746 // stop slider 14747 pauseMainBanner() 14748 } 14749 else if(state === 'paused'){ 14750 $('#'+videoID).closest('.box').find('.wrapper_inner').removeClass('loading'); 14751 $('#'+videoID).closest('.box').find('.wrapper_inner .btn-video').removeClass('loading'); 14752 14753 players[videoID].playing = false 14754 14755 // sync time in cloned players & pause 14756 var time = Math.floor(players[videoID].time * 10) / 10 14757 player.contentWindow.postMessage(JSON.stringify({ 14758 type: 'player:setCurrentTime', 14759 data: {time: time} 14760 }), '*') 14761 for(var j in players){ 14762 if(players[j].slideIndex == slideIndex && players[j].clone){ 14763 document.getElementById(players[j].id).contentWindow.postMessage(JSON.stringify({ 14764 type: 'player:pause', 14765 data: {} 14766 }), '*') 14767 document.getElementById(players[j].id).contentWindow.postMessage(JSON.stringify({ 14768 type: 'player:setCurrentTime', 14769 data: {time: time} 14770 }), '*') 14771 } 14772 } 14773 } 14774 else if(state === 'stopped'){ 14775 $('#'+videoID).closest('.box').find('.wrapper_inner').removeClass('loading'); 14776 $('#'+videoID).closest('.box').find('.wrapper_inner .btn-video').removeClass('loading'); 14777 14778 players[videoID].playing = false 14779 if(loop){ 14780 player.contentWindow.postMessage(JSON.stringify({ 14781 type: 'player:play', 14782 data: {} 14783 }), '*') 14784 } 14785 else{ 14786 // play slider 14787 playMainBanner() 14788 } 14789 } 14790 } 14791 } 14792} 14793 14794function onHtml5PlayerReady(e){ 14795 var videoID = e.target.id.replace('player_', '')
14796 if(videoID){ 14797 var mute = players[videoID].mute 14798 var cover = players[videoID].cover 14799 var clone = players[videoID].clone 14800 var $slide = $('#player_' + videoID).closest('.box') 14801 14802 // mute sound 14803 if(mute || clone){ 14804 $('#' + players[videoID].id).prop('muted', true); 14805 } 14806 14807 // cover video 14808 if(cover){ 14809 // get video`s original size 14810 if(!players[videoID].videoProportion){ 14811 var videoWidth = $slide.find('.video')[0].videoWidth; 14812 var videoHeight = $slide.find('.video')[0].videoHeight; 14813 14814 players[videoID].videoWidth = videoWidth; 14815 players[videoID].videoHeight = videoHeight; 14816 players[videoID].videoProportion = videoWidth / videoHeight; 14817 14818 $slide.find('.video').attr('data-video_proportion', players[videoID].videoProportion); 14819 } 14820 14821 CoverPlayer(); 14822 } 14823 14824 // not start clone video playing 14825 if(clone){ 14826 e.target.pause() 14827 } 14828 else{ 14829 // stop slider 14830 pauseMainBanner() 14831 14832 var promise = e.target.play(); 14833 if(typeof promise !== 'undefined'){ 14834 promise.catch( 14835 function(){ 14836 setTimeout(function(){ 14837 $('#' + players[videoID].id).prop('muted', true); 14838 e.target.play(); 14839 }, 100); 14840 } 14841 ); 14842 } 14843 } 14844 14845 // update slide class 14846 $slide.addClass('started') 14847 // $slide.removeClass('loading') 14848 } 14849} 14850 14851function onHtml5PlayerStateChange(e){ 14852 var videoID = e.target.id.replace('player_', '') 14853 if(videoID){ 14854 var cover = players[videoID].cover 14855 var clone = players[videoID].clone 14856 var loop = players[videoID].loop 14857 var slideIndex = players[videoID].slideIndex 14858 14859 if(!clone){ 14860 if(e.target.paused){ 14861 players[videoID].playing = false 14862 14863 $('#player_'+videoID).closest('.box').find('.wrapper_inner').removeClass('loading'); 14864 $('#player_'+videoID).closest('.box').find('.wrapper_inner .btn-video').removeClass('loading'); 14865 14866 // sync time in cloned players & pause 14867 var time = Math.floor(e.target.currentTime * 10) / 10 14868 e.target.currentTime = time 14869 for(var j in players){ 14870 if(players[j].slideIndex == slideIndex && players[j].clone){ 14871 document.getElementById(players[j].id).pause() 14872 document.getElementById(players[j].id).currentTime = time 14873 } 14874 } 14875 } 14876 else if(e.target.ended){ 14877 players[videoID].playing = false 14878 if(loop){ 14879 $('#player_'+videoID).closest('.box').find('.wrapper_inner').addClass('loading'); 14880 $('#player_'+videoID).closest('.box').find('.wrapper_inner .btn-video').addClass('loading'); 14881 14882 e.target.play() 14883 } 14884 else{ 14885 // play slider 14886 playMainBanner() 14887 } 14888 } 14889 else{ 14890 players[videoID].playing = true 14891 14892 $('#player_'+videoID).closest('.box').find('.wrapper_inner').addClass('loading'); 14893 $('#player_'+videoID).closest('.box').find('.wrapper_inner .btn-video').addClass('loading'); 14894 // stop slider 14895 pauseMainBanner() 14896 } 14897 } 14898 } 14899} 14900 14901waitYTPlayer = function(delay, callback){ 14902 if((typeof YT !== "undefined") && YT && YT.Player) 14903 { 14904 if(typeof callback == 'function') 14905 callback(); 14906 } 14907 else 14908 { 14909 setTimeout(function(){ 14910 waitYTPlayer(delay, callback); 14911 }, delay); 14912 } 14913} 14914 14915// click on HTML5 video 14916$(document).on('click', 'video.video', function(e){ 14917 var videoID = e.target.id.replace('player_', '') 14918 if(videoID){ 14919 if(players[videoID].playing){ 14920 e.target.pause() 14921 } 14922 else{ 14923 e.target.play() 14924 } 14925 } 14926}) 14927 14928// START VIDEO BUTTON 14929$(document).on('click', '.top_slider_wrapp .box .btn-video', function(e){ 14930 e.stopPropagation(); 14931 if(!$(this).hasClass('loading')) 14932 { 14933 $(this).addClass('loading'); 14934 $(this).closest('.wrapper_inner').addClass('loading'); 14935 } 14936 else 14937 { 14938 $(this).removeClass('loading'); 14939 $(this).closest('.wrapper_inner').removeClass('loading'); 14940 } 14941 14942 startMainBannerSlideVideo($(this).closest('.box')); 14943}); 14944 14945// START VIDEO BY BANNER OR GOTO LINK 14946$(document).on('click', '.top_slider_wrapp .box .wrapper_inner', function(e){ 14947 var wvideo = $(this).closest('.box').hasClass('wvideo'); 14948 var wurl = $(this).closest('.box').hasClass('wurl'); 14949 14950 if($(e.target).hasClass('btn')){ 14951 if(wvideo){ 14952 if($(e.target).hasClass('btn-video')){ 14953 e.stopPropagation(); 14954 $(this).find('.btn-video').trigger('click'); 14955 } 14956 } 14957 } 14958 else{ 14959 if(wurl){ 14960 var href = $(this).closest('.box').find('.target').attr('href'); 14961 if(href.length){ 14962 var target = $(this).closest('.box').find('.target').attr('target'); 14963 if(typeof target === 'undefined' || target === '_self'){ 14964 location.href = href; 14965 } 14966 else{ 14967 window.open(href); 14968 } 14969 } 14970 } 14971 else{ 14972 if(wvideo){ 14973 e.stopPropagation(); 14974 $(this).find('.btn-video').trigger('click'); 14975 } 14976 } 14977 } 14978}) 14979 14980getRandomInt = function(min, max){ 14981 return Math.floor(Math.random() * (max - min)) + min; 14982} 14983 14984var ignoreResize = []; 14985 14986BX.addCustomEvent('onWindowResize', function(eventdata) { 14987 try{ 14988 CoverPlayer(); 14989 } 14990 catch(e){} 14991 finally{ 14992 ignoreResize.pop(); 14993 } 14994}); 14995 14996BX.addCustomEvent('onSlideEnd', function(eventdata) { 14997 try{ 14998 ignoreResize.push(true); 14999 if(eventdata){ 15000 var slider = eventdata.slider; 15001 if(slider){ 15002 setTimeout(function(){ 15003 $('.banners-big.front .btn-video, .banners-big.front .box').removeClass('loading'); 15004 }, 300); 15005 } 15006 } 15007 } 15008 catch(e){} 15009 finally{ 15010 ignoreResize.pop(); 15011 } 15012}); 15013 15014BX.addCustomEvent('onSlide', function(eventdata) { 15015 try{ 15016 ignoreResize.push(true); 15017 if(eventdata){ 15018 var slider = eventdata.slider; 15019 if(slider){ 15020 var $curSlide = slider.find('.box.flex-active-slide');
15021 var $curSlideIndex = $curSlide.attr('data-slide_index'); 15022 15023 if(typeof($curSlideIndex) !== 'undefined' && $curSlideIndex.length){ 15024 var slidesIndexesWithVideo = slider.data('slidesIndexesWithVideo') 15025 if(typeof slidesIndexesWithVideo === 'undefined'){ 15026 slidesIndexesWithVideo = []; 15027 } 15028 15029 var bVideoVisible = slidesIndexesWithVideo.indexOf($curSlideIndex) != -1; 15030 if(bVideoVisible){ 15031 slider.addClass('video_visible'); 15032 } 15033 else{ 15034 slider.removeClass('video_visible'); 15035 } 15036 15037 setTimeout(function(){ 15038 CoverPlayer(); 15039 }, 200); 15040 15041 // pause play video 15042 if(typeof(players) !== 'undefined' && players){ 15043 for(var j in players){ 15044 if(players[j].playing && !players[j].clone && (players[j].slideIndex != $curSlideIndex)){ 15045 if((typeof window[players[j].id] == 'object')){ 15046 if(players[j].videoPlayer === 'YOUTUBE'){ 15047 window[players[j].id].pauseVideo() 15048 } 15049 else if(players[j].videoPlayer === 'VIMEO'){ 15050 window[players[j].id].pause() 15051 } 15052 else if(players[j].videoPlayer === 'RUTUBE'){ 15053 document.getElementById(players[j].id).contentWindow.postMessage(JSON.stringify({ 15054 type: 'player:pause', 15055 data: {} 15056 }), '*') 15057 } 15058 else if(players[j].videoPlayer === 'HTML5'){ 15059 document.getElementById(players[j].id).pause() 15060 } 15061 } 15062 } 15063 } 15064 } 15065 // autoplay video 15066 var bVideoAutoPlay = $curSlide.attr('data-video_autoplay') == 1 15067 if(bVideoAutoPlay){ 15068 startMainBannerSlideVideo($curSlide) 15069 } 15070 } 15071 15072 if($curSlide.find('video').length && !$curSlide.find('.btn-video').length){ 15073 var videoID = $curSlide.find('video').attr('id'); 15074 document.getElementById(videoID).play(); 15075 } 15076 } 15077 } 15078 } 15079 catch(e){} 15080 finally{ 15081 ignoreResize.pop(); 15082 } 15083}); 15084/* End */ 15085; 15086; /* Start:"a:4:{s:4:"full";s:55:"/local/templates/aspro_max/js/mobile.js?165235572224621";s:6:"source";s:39:"/local/templates/aspro_max/js/mobile.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 15087$(document).ready(function(){ 15088 /* --- Bind mobile menu --- */ 15089 var $mobileMenu = $("#mobilemenu") 15090 if($mobileMenu.length){ 15091 $mobileMenu.isLeftSide = $mobileMenu.hasClass('leftside') 15092 $mobileMenu.isOpen = $mobileMenu.hasClass('show') 15093 $mobileMenu.isDowndrop = $mobileMenu.find('>.scroller').hasClass('downdrop') 15094 $mobileMenuNlo = $mobileMenu.find('[data-nlo]') 15095 15096 $('#mobileheader .burger').click(function(){ 15097 SwipeMobileMenu() 15098 }) 15099 15100 if($mobileMenu.isLeftSide){ 15101 $mobileMenu.parent().append('<div id="mobilemenu-overlay"></div>') 15102 var $mobileMenuOverlay = $('#mobilemenu-overlay') 15103 15104 $mobileMenuOverlay.click(function(){ 15105 if($mobileMenu.isOpen){ 15106 CloseMobileMenu() 15107 } 15108 }); 15109 15110 $(document).swiperight(function(e) { 15111 if(!$(e.target).closest('.flexslider').length && !$(e.target).closest('.swipeignore').length && !$(e.target).closest('.jqmWindow.popup').length){ 15112 OpenMobileMenu() 15113 } 15114 }); 15115 15116 $(document).swipeleft(function(e) { 15117 if(!$(e.target).closest('.flexslider').length && !$(e.target).closest('.swipeignore').length && !$(e.target).closest('.jqmWindow.popup').length){ 15118 CloseMobileMenu() 15119 } 15120 }); 15121 } 15122 else{ 15123 $(document).on('click', '#mobileheader', function(e){ 15124 if(!$(e.target).closest('#mobilemenu').length && !$(e.target).closest('.burger').length && $mobileMenu.isOpen){ 15125 CloseMobileMenu() 15126 } 15127 }); 15128 } 15129 15130 $(document).on('click', '#mobilemenu .menu a,#mobilemenu .social-icons a', function(e){ 15131 var $this = $(this) 15132 if($this.hasClass('parent')){ 15133 e.preventDefault() 15134 15135 if(!$mobileMenu.isDowndrop){ 15136 $this.closest('li').addClass('expanded') 15137 MoveMobileMenuWrapNext() 15138 } 15139 else{ 15140 if(!$this.closest('li').hasClass('expanded')){ 15141 $this.closest('li').addClass('expanded') 15142 } 15143 else{ 15144 $this.closest('li').removeClass('expanded') 15145 } 15146 } 15147 } 15148 else{ 15149 if($this.closest('li').hasClass('counters')){ 15150 var href = $this.attr('href') 15151 if(typeof href !== 'undefined'){ 15152 window.location.href = href 15153 window.location.reload() 15154 } 15155 } 15156 15157 if(!$this.closest('.menu_back').length){ 15158 CloseMobileMenu() 15159 } 15160 } 15161 }) 15162 15163 $(document).on('click', '#mobilemenu .dropdown .menu_back', function(e){ 15164 e.preventDefault() 15165 var $this = $(this) 15166 MoveMobileMenuWrapPrev() 15167 setTimeout(function(){ 15168 $this.closest('.expanded').removeClass('expanded') 15169 }, 400) 15170 }) 15171 15172 OpenMobileMenu = function(){ 15173 CloseMobilePhone(); 15174 15175 if(!$mobileMenu.isOpen){ 15176 // hide styleswitcher 15177 if($('.style-switcher').hasClass('active')){ 15178 $('.style-switcher .switch').trigger('click') 15179 } 15180 $('.style-switcher .switch').hide() 15181 15182 if($mobileMenu.isLeftSide){ 15183 // show overlay 15184 setTimeout(function(){ 15185 $mobileMenuOverlay.fadeIn('fast') 15186 }, 100) 15187 } 15188 else{ 15189 // scroll body to top & set fixed 15190 $('body').scrollTop(0).css({position: 'fixed'}) 15191 15192 // set menu top = bottom of header 15193 $mobileMenu.css({top: + ($('#mobileheader').height() + $('#mobileheader').offset().top) + 'px'}) 15194 15195 // change burger icon 15196 $('#mobileheader .burger').addClass('c') 15197 } 15198 15199 // show menu 15200 $mobileMenu.addClass('show') 15201 $mobileMenu.isOpen = true 15202 15203 if(!$mobileMenu.isDowndrop){ 15204 var $wrap = $mobileMenu.find('.wrap').first() 15205 var params = $wrap.data('params') 15206 if(typeof params === 'undefined'){ 15207 params = { 15208 depth: 0, 15209 scroll: {}, 15210 height: {} 15211 } 15212 } 15213 $wrap.data('params', params) 15214 } 15215 15216 if($mobileMenuNlo.length){ 15217 if(!$mobileMenuNlo.hasClass('nlo-loadings')){ 15218 $mobileMenuNlo.addClass('nlo-loadings'); 15219 setTimeout(function(){ 15220 $.ajax({ 15221 data: {nlo: $mobileMenuNlo.attr('data-nlo')}, 15222 success: function(response){ 15223 $mobileMenuNlo[0].insertAdjacentHTML('beforebegin', $.trim(response)); 15224 $mobileMenuNlo.remove(); 15225 }, 15226 error:function(){ 15227 $mobileMenuNlo.removeClass('nlo-loadings'); 15228 } 15229 }); 15230 }, 300); 15231 } 15232 } 15233 } 15234 } 15235 15236 CloseMobileMenu = function(){ 15237 if($mobileMenu.isOpen){ 15238 // hide menu 15239 $mobileMenu.removeClass('show') 15240 $mobileMenu.isOpen = false 15241 15242 // show styleswitcher 15243 $('.style-switcher .switch').show() 15244 15245 if($mobileMenu.isLeftSide){ 15246 // hide overlay 15247 setTimeout(function(){ 15248 $mobileMenuOverlay.fadeOut('fast') 15249 }, 100) 15250 } 15251 else{ 15252 // change burger icon 15253 $('#mobileheader .burger').removeClass('c') 15254 15255 // body unset fixed 15256 $('body').css({position: ''}) 15257 } 15258 15259 if(!$mobileMenu.isDowndrop){ 15260 setTimeout(function(){ 15261 var $scroller = $mobileMenu.find('.scroller').first() 15262 var $wrap = $mobileMenu.find('.wrap').first() 15263 var params = $wrap.data('params') 15264 params.depth = 0 15265 $wrap.data('params', params).attr('style', '') 15266 $mobileMenu.scrollTop(0) 15267 $scroller.css('height', '') 15268 }, 400) 15269 } 15270 } 15271 } 15272 15273 SwipeMobileMenu = function(){ 15274 if($mobileMenu.isOpen){ 15275 CloseMobileMenu() 15276 } 15277 else{ 15278 OpenMobileMenu() 15279 } 15280 } 15281 15282 function MoveMobileMenuWrapNext(){ 15283 if(!$mobileMenu.isDowndrop){ 15284 var $scroller = $mobileMenu.find('.scroller').first() 15285 var $wrap = $mobileMenu.find('.wrap').first() 15286 if($wrap.length){ 15287 var params = $wrap.data('params') 15288 var $dropdownNext = $mobileMenu.find('.expanded>.dropdown').eq(params.depth) 15289 if($dropdownNext.length){ 15290 // save scroll position 15291 params.scroll[params.depth] = parseInt($mobileMenu.scrollTop()) 15292 15293 // height while move animating 15294 params.height[params.depth + 1] = Math.max($dropdownNext.height(), (!params.depth ? $wrap.height() : $mobileMenu.find('.expanded>.dropdown').eq(params.depth - 1).height())) 15295 $scroller.css('height', params.height[params.depth + 1] + 'px') 15296 15297 // inc depth 15298 ++params.depth 15299 15300 // translateX for move 15301 $wrap.css('transform', 'translateX(' + -100 * params.depth + '%)') 15302 15303 // scroll to top 15304 setTimeout(function() { 15305 $mobileMenu.animate({scrollTop : 0}, 200); 15306 }, 100) 15307 15308 // height on enimating end 15309 var h = $dropdownNext.height() 15310 setTimeout(function() { 15311 if(h){ 15312 $scroller.css('height', h + 'px') 15313 } 15314 else{ 15315 $scroller.css('height', '') 15316 } 15317 }, 200) 15318 } 15319 15320 $wrap.data('params', params) 15321 } 15322 } 15323 } 15324 15325 function MoveMobileMenuWrapPrev(){ 15326 if(!$mobileMenu.isDowndrop){ 15327 var $scroller = $mobileMenu.find('.scroller').first() 15328 var $wrap = $mobileMenu.find('.wrap').first() 15329 if($wrap.length){ 15330 var params = $wrap.data('params') 15331 if(params.depth > 0){ 15332 var $dropdown = $mobileMenu.find('.expanded>.dropdown').eq(params.depth - 1) 15333 if($dropdown.length){ 15334 // height while move animating 15335 $scroller.css('height', params.height[params.depth] + 'px') 15336 15337 // dec depth 15338 --params.depth 15339 15340 // translateX for move 15341 $wrap.css('transform', 'translateX(' + -100 * params.depth + '%)') 15342 15343 // restore scroll position 15344 setTimeout(function() { 15345 $mobileMenu.animate({scrollTop : params.scroll[params.depth]}, 200); 15346 }, 100) 15347 15348 // height on enimating end 15349 var h = (!params.depth ? false : $mobileMenu.find('.expanded>.dropdown').eq(params.depth - 1).height()) 15350 setTimeout(function() { 15351 if(h){ 15352 $scroller.css('height', h + 'px') 15353 } 15354 else{ 15355 $scroller.css('height', '') 15356 } 15357 }, 200) 15358 } 15359 } 15360 15361 $wrap.data('params', params) 15362 } 15363 } 15364 } 15365 } 15366 /* --- END Bind mobile menu --- */ 15367 15368 /* --- Bind mobile phone --- */ 15369 var $mobileHeader = $("#mobileheader"); 15370 var $simpleHeader = $('body.simple_basket_mode #header'); 15371 var $mobilePhone = $("#mobilePhone"); 15372 $mobilePhone.isOpen = false;
15373 if($mobilePhone.length){ 15374 $mobilePhone.isOpen = $mobilePhone.hasClass('show'); 15375 15376 $(document).on('click', '.wrap_phones .svg-inline-phone', function(e){ 15377 SwipeMobilePhone(); 15378 e.stopPropagation(); 15379 }); 15380 15381 $(document).on('click', '.wrap_phones .svg-inline-close', function(e){ 15382 CloseMobilePhone(); 15383 e.stopPropagation(); 15384 }); 15385 } 15386 15387 SwipeMobilePhone = function(){ 15388 if($mobilePhone.isOpen){ 15389 CloseMobilePhone(); 15390 } 15391 else{ 15392 OpenMobilePhone(); 15393 } 15394 } 15395 15396 OpenMobilePhone = function(){ 15397 if(!$mobilePhone.isOpen){ 15398 CloseMobileMenu(); 15399 15400 // show overlay 15401 var isSimple = Boolean($simpleHeader.length); 15402 var positionOffset = isSimple ? $simpleHeader[0].getBoundingClientRect() : $mobileHeader[0].getBoundingClientRect(); 15403 var position = positionOffset.top + positionOffset.height + pageYOffset; 15404 console.log(positionOffset); 15405 console.log(position); 15406 $('<div class="jqmOverlay mobp" style="top:'+(position)+'px;position:absolute"></div>').appendTo('body'); 15407 15408 // toggle phones 15409 setTimeout(function(){ 15410 $mobilePhone.slideDown('fast', function(){ 15411 $mobilePhone.addClass('show'); 15412 $mobilePhone.isOpen = true; 15413 }); 15414 }, 100); 15415 } 15416 } 15417 15418 CloseMobilePhone = function(){ 15419 if($mobilePhone.isOpen){ 15420 // toggle phones 15421 setTimeout(function(){ 15422 $mobilePhone.slideUp('fast', function(){ 15423 $mobilePhone.removeClass('show'); 15424 $mobilePhone.isOpen = false; 15425 15426 // hide overlay 15427 $('.jqmOverlay.mobp').remove(); 15428 }); 15429 }, 100); 15430 } 15431 } 15432 15433 checkMobilePhone = function(){ 15434 if((!window.matchMedia('(max-width: 991px)').matches)){ 15435 CloseMobilePhone(); 15436 } 15437 } 15438 $(document).on('click', "body.simple_basket_mode .back-mobile-arrow .arrow-back", function(){ 15439 if(document.referrer && document.referrer != location.href) { 15440 window.history.back(); 15441 } else { 15442 location.href = '/'; 15443 } 15444 }) 15445 /* --- END Bind mobile phone --- */ 15446 15447 /* --- Bind mobile filter --- */ 15448 var $mobilefilter = $("#mobilefilter"); 15449 if($mobilefilter.length){ 15450 $mobilefilter.isOpen = $mobileMenu.hasClass('show'); 15451 $mobilefilter.isAppendLeft = false; 15452 $mobilefilter.isWrapFilter = false; 15453 $mobilefilter.isHorizontalOrCompact = $('.filter_horizontal').length || $('.bx_filter_vertical.compact').length; 15454 $mobilefilter.close = '<i class="svg svg-close close-icons"></i>'; 15455 15456 $(document).on('click', '.bx-filter-title', function(){ 15457 OpenMobileFilter(); 15458 }); 15459 15460 $(document).on('click', '#mobilefilter .svg-close.close-icons', function(){ 15461 CloseMobileFilter(); 15462 }); 15463 15464 $(document).on('click', '.bx_filter_select_block', function(e){ 15465 var bx_filter_select_container = $(e.target).parents('.bx_filter_select_container'); 15466 if(bx_filter_select_container.length) { 15467 var prop_id = bx_filter_select_container.closest('.bx_filter_parameters_box').attr('data-property_id'); 15468 if($('#smartFilterDropDown'+prop_id).length){ 15469 $('#smartFilterDropDown'+prop_id).css({"max-width":bx_filter_select_container.width(), "z-index":"3020"}); 15470 } 15471 } 15472 }); 15473 15474 $(document).on('mouseup', '.bx_filter_section', function(e){ 15475 if($(e.target).hasClass('bx_filter_search_button')) { 15476 CloseMobileFilter(); 15477 } 15478 }); 15479 15480 15481 $(document).on('mouseup', '.bx_filter_parameters_box_title', function(e){ 15482 $("[id^='smartFilterDropDown']").hide(); 15483 if($(e.target).hasClass('close-icons')) { 15484 CloseMobileFilter(); 15485 } 15486 }); 15487 15488 /*$(document).on('DOMSubtreeModified', "#mobilefilter #modef_num_mobile", function() { 15489 mobileFilterNum($(this)); 15490 }); 15491 15492 $(document).on('DOMSubtreeModified', "#mobilefilter .bx_filter_container_modef", function() { 15493 mobileFilterNum($(this)); 15494 });*/ 15495 15496 $mobilefilter.parent().append('<div id="mobilefilter-overlay"></div>'); 15497 var $mobilefilterOverlay = $('#mobilefilter-overlay'); 15498 15499 $mobilefilterOverlay.click(function(){ 15500 if($mobilefilter.isOpen){ 15501 CloseMobileFilter(); 15502 //e.stopPropagation(); 15503 } 15504 }); 15505 15506 mobileFilterNum = function(num, def){ 15507 if(def){ 15508 $('.bx_filter_search_button').text(num.data("f"));; 15509 } 15510 else { 15511 var str = ""; 15512 var $prosLeng = $('.bx_filter_parameters_box > span'); 15513 15514 str += $prosLeng.data("f") + " " + num + " " + declOfNumFilter(num, [$prosLeng.data("fi"), $prosLeng.data("fr"), $prosLeng.data("frm"),]); 15515 $('.bx_filter_search_button').text(str); 15516 } 15517 } 15518 15519 declOfNumFilter = function(number, titles){ 15520 cases = [2, 0, 1, 1, 1, 2]; 15521 return titles[ (number%100>4 && number%100<20)? 2 : cases[(number%10<5)?number%10:5] ]; 15522 } 15523 15524 OpenMobileFilter = function(){ 15525 if(!$mobilefilter.isOpen) 15526 { 15527 $('body').addClass('jqm-initied wf'); 15528 15529 $('.bx_filter_vertical .slide-block__head.filter_title').removeClass('closed'); 15530 15531 $('.bx_filter_vertical .slide-block__head.filter_title + .slide-block__body').show(); 15532 15533 15534 if(!$mobilefilter.isAppendLeft) 15535 { 15536 if(!$mobilefilter.isWrapFilter) 15537 { 15538 $(".bx_filter").wrap("<div id='wrapInlineFilter'></div>"); 15539 $mobilefilter.isWrapFilter = true; 15540 } 15541 $(".bx_filter").appendTo($("#mobilefilter")); 15542 var helper = $('#filter-helper'); 15543 if(helper.length) { 15544 helper.prependTo($("#mobilefilter .bx_filter_parameters")); 15545 } 15546 $mobilefilter.isAppendLeft = true; 15547 15548 } 15549 if (typeof checkFilterLandgings === 'function') { 15550 checkFilterLandgings() 15551 } 15552 15553 $("#mobilefilter .bx_filter_parameters").addClass('scrollbar'); 15554 $("#mobilefilter .slide-block .filter_title").addClass('ignore'); 15555 $("#mobilefilter .bx_filter_parameters .bx_filter_parameters_box_title").addClass('colored_theme_hover_bg-block'); 15556 15557 /*if (window.matchMedia('(max-width: 767px)').matches) { 15558 $('#mobilefilter .bx_filter .scrollbar').addClass('mobile-scroll').removeClass('scroll-init'); 15559 if($('#mobilefilter .bx_filter .mobile-scroll.scrollbar').length) 15560 $('#mobilefilter .bx_filter .mobile-scroll.scrollbar').mCustomScrollbar("destroy"); 15561 if($('#mobilefilter .bx_filter .mobile-scroll.srollbar-custom').length) 15562 $('#mobilefilter .bx_filter .mobile-scroll.srollbar-custom').mCustomScrollbar("destroy"); 15563 }*/ 15564 15565 $(".bx_filter_button_box.ajax-btns").addClass('colored_theme_bg'); 15566 $(".bx_filter_button_box.ajax-btns .filter-bnt-wrapper").removeClass('hidden'); 15567 InitCustomScrollBar(); 15568 15569 // show overlay 15570 setTimeout(function(){ 15571 $mobilefilterOverlay.fadeIn('fast'); 15572 }, 100); 15573 15574 // fix body 15575 $('body').css({'overflow': 'hidden','height': '100vh'}); 15576 15577 // show mobile filter 15578 $mobilefilter.addClass('show'); 15579 $mobilefilter.find('.bx_filter').css({'display':'block'}); 15580 $mobilefilter.isOpen = true; 15581 15582 $('#mobilefilter .bx_filter_button_box.btns.ajax-btns').removeClass('hidden'); 15583 15584 var init = $mobilefilter.data('init'); 15585 if(typeof init === 'undefined'){ 15586 $mobilefilter.scroll(function() { 15587 $(".bx_filter_section .bx_filter_select_container").each(function(){ 15588 var prop_id=$(this).closest('.bx_filter_parameters_box').attr('data-property_id'); 15589 if($('#smartFilterDropDown'+prop_id).length){ 15590 $('#smartFilterDropDown'+prop_id).hide(); 15591 } 15592 }); 15593 }); 15594 15595 $mobilefilter.data('init', "Y"); 15596 }; 15597 }; 15598 } 15599 15600 CloseMobileFilter = function(append){ 15601 $mobilefilter.find('.bx_filter_parameters').removeClass('scrollbar'); 15602 15603 if($("#mobilefilter .bx_filter_parameters").length) 15604 $('body').removeClass('jqm-initied wf'); 15605 15606 $("#mobilefilter .bx_filter_parameters .bx_filter_parameters_box_title").removeClass('colored_theme_hover_bg-block'); 15607 $(".slide-block .filter_title").removeClass('ignore'); 15608 $(".bx_filter_button_box.ajax-btns").removeClass('colored_theme_bg'); 15609 15610 $(".bx_filter:not(.n-ajax) .bx_filter_button_box.ajax-btns .filter-bnt-wrapper").addClass('hidden'); 15611 15612 if($mobilefilter.isOpen){ 15613 // scroll to top 15614 $mobilefilter.find('.bx_filter_parameters').scrollTop(0); 15615 15616 // unfix body 15617 $('body').css({'overflow': '','height': ''}); 15618 15619 // hide overlay 15620 setTimeout(function(){ 15621 $mobilefilterOverlay.fadeOut('fast'); 15622 }, 100); 15623 15624 // hide mobile filter 15625 $mobilefilter.removeClass('show'); 15626 $mobilefilter.isOpen = false;
15627 } 15628 15629 if(append && $mobilefilter.isAppendLeft){ 15630 $(".bx_filter").appendTo($("#wrapInlineFilter")).show(); 15631 var helper = $('#filter-helper'); 15632 if(helper.length) { 15633 helper.appendTo($('#filter-helper-wrapper')); 15634 } 15635 $mobilefilter.isAppendLeft = false; 15636 $mobilefilter.removeData('init'); 15637 mobileFilterNum($("#modef_num_mobile"),true); 15638 } 15639 } 15640 15641 checkMobileFilter = function(){ 15642 if((!window.matchMedia('(max-width: 991px)').matches && !$mobilefilter.isHorizontalOrCompact) || (!window.matchMedia('(max-width: 767px)').matches && $mobilefilter.isHorizontalOrCompact)){ 15643 CloseMobileFilter(true); 15644 } 15645 } 15646 } 15647 else { 15648 checkTopFilter(); 15649 $(document).on('click', '.bx-filter-title', function(){ 15650 $(this).toggleClass("opened"); 15651 if($('.visible_mobile_filter').length) { 15652 $('.visible_mobile_filter').show(); 15653 $('.bx_filter_vertical, .bx_filter').slideToggle(333); 15654 } 15655 else{ 15656 $('.bx_filter_vertical').closest('div[id^=bx_incl]').show(); 15657 $('.bx_filter_vertical, .bx_filter').slideToggle(333); 15658 } 15659 }); 15660 } 15661 /* --- END Bind mobile filter --- */ 15662}) 15663/* End */ 15664; 15665; /* Start:"a:4:{s:4:"full";s:69:"/local/templates/aspro_max/js/jquery.mousewheel.min.js?16523557212609";s:6:"source";s:54:"/local/templates/aspro_max/js/jquery.mousewheel.min.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 15666!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})}); 15667/* End */ 15668; 15669; /* Start:"a:4:{s:4:"full";
vendor: 5,466 bytes, lines 15669-15845
15669s:72:"/local/templates/aspro_max/js/jquery.mCustomScrollbar.js?165235570194214";s:6:"source";s:56:"/local/templates/aspro_max/js/jquery.mCustomScrollbar.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 15670/* 15671== malihu jquery custom scrollbar plugin == 15672Version: 3.1.5 15673Plugin URI: http://manos.malihu.gr/jquery-custom-content-scroller 15674Author: malihu 15675Author URI: http://manos.malihu.gr 15676License: MIT License (MIT) 15677*/ 15678 15679/* 15680Copyright Manos Malihutsakis (email: [email protected]) 15681 15682Permission is hereby granted, free of charge, to any person obtaining a copy 15683of this software and associated documentation files (the "Software"), to deal 15684in the Software without restriction, including without limitation the rights 15685to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 15686copies of the Software, and to permit persons to whom the Software is 15687furnished to do so, subject to the following conditions: 15688 15689The above copyright notice and this permission notice shall be included in 15690all copies or substantial portions of the Software. 15691 15692THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15693IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15694FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 15695AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 15696LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 15697OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 15698THE SOFTWARE. 15699*/ 15700 15701/* 15702The code below is fairly long, fully commented and should be normally used in development. 15703For production, use either the minified jquery.mCustomScrollbar.min.js script or 15704the production-ready jquery.mCustomScrollbar.concat.min.js which contains the plugin 15705and dependencies (minified). 15706*/ 15707 15708(function(factory){ 15709 if(typeof define==="function" && define.amd){ 15710 define(["jquery"],factory); 15711 }else if(typeof module!=="undefined" && module.exports){ 15712 module.exports=factory; 15713 }else{ 15714 factory(jQuery,window,document); 15715 } 15716}(function($){ 15717(function(init){ 15718 var _rjs=typeof define==="function" && define.amd, /* RequireJS */ 15719 _njs=typeof module !== "undefined" && module.exports, /* NodeJS */ 15720 _dlp=("https:"==document.location.protocol) ? "https:" : "http:", /* location protocol */ 15721 _url="cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.13/jquery.mousewheel.min.js"; 15722 if(!_rjs){ 15723 if(_njs){ 15724 require("jquery-mousewheel")($); 15725 }else{ 15726 /* load jquery-mousewheel plugin (via CDN) if it's not present or not loaded via RequireJS 15727 (works when mCustomScrollbar fn is called on window load) */ 15728 $.event.special.mousewheel || $("head").append(decodeURI("%3Cscript src="+_dlp+"//"+_url+"%3E%3C/script%3E")); 15729 } 15730 } 15731 init(); 15732}(function(){ 15733 15734 /* 15735 ---------------------------------------- 15736 PLUGIN NAMESPACE, PREFIX, DEFAULT SELECTOR(S) 15737 ---------------------------------------- 15738 */ 15739 15740 var pluginNS="mCustomScrollbar", 15741 pluginPfx="mCS", 15742 defaultSelector=".mCustomScrollbar", 15743 15744 15745 15746 15747 15748 /* 15749 ---------------------------------------- 15750 DEFAULT OPTIONS 15751 ---------------------------------------- 15752 */ 15753 15754 defaults={ 15755 /* 15756 set element/content width/height programmatically 15757 values: boolean, pixels, percentage 15758 option default 15759 ------------------------------------- 15760 setWidth false 15761 setHeight false 15762 */ 15763 /* 15764 set the initial css top property of content 15765 values: string (e.g. "-100px", "10%" etc.) 15766 */ 15767 setTop:0, 15768 /* 15769 set the initial css left property of content 15770 values: string (e.g. "-100px", "10%" etc.) 15771 */ 15772 setLeft:0, 15773 /* 15774 scrollbar axis (vertical and/or horizontal scrollbars) 15775 values (string): "y", "x", "yx" 15776 */ 15777 axis:"y", 15778 /* 15779 position of scrollbar relative to content 15780 values (string): "inside", "outside" ("outside" requires elements with position:relative) 15781 */ 15782 scrollbarPosition:"inside", 15783 /* 15784 scrolling inertia 15785 values: integer (milliseconds) 15786 */ 15787 scrollInertia:100, 15788 /* 15789 auto-adjust scrollbar dragger length 15790 values: boolean 15791 */ 15792 autoDraggerLength:true, 15793 /* 15794 auto-hide scrollbar when idle 15795 values: boolean 15796 option default 15797 ------------------------------------- 15798 autoHideScrollbar false 15799 */ 15800 /* 15801 auto-expands scrollbar on mouse-over and dragging 15802 values: boolean 15803 option default 15804 ------------------------------------- 15805 autoExpandScrollbar false 15806 */ 15807 /* 15808 always show scrollbar, even when there's nothing to scroll 15809 values: integer (0=disable, 1=always show dragger rail and buttons, 2=always show dragger rail, dragger and buttons), boolean 15810 */ 15811 alwaysShowScrollbar:0, 15812 /* 15813 scrolling always snaps to a multiple of this number in pixels 15814 values: integer, array ([y,x]) 15815 option default 15816 ------------------------------------- 15817 snapAmount null 15818 */ 15819 /* 15820 when snapping, snap with this number in pixels as an offset 15821 values: integer 15822 */ 15823 snapOffset:0, 15824 /* 15825 mouse-wheel scrolling 15826 */ 15827 mouseWheel:{ 15828 /* 15829 enable mouse-wheel scrolling 15830 values: boolean 15831 */ 15832 enable:true, 15833 /* 15834 scrolling amount in pixels 15835 values: "auto", integer 15836 */ 15837 scrollAmount:"auto", 15838 /* 15839 mouse-wheel scrolling axis 15840 the default scrolling direction when both vertical and horizontal scrollbars are present 15841 values (string): "y", "x" 15842 */ 15843 axis:"y", 15844 /* 15845 prevent the default behaviour which automatically scrolls the parent element
15845(s) when end of scrolling is reached 15846 values: boolean 15847 option default 15848 ------------------------------------- 15849 preventDefault null 15850 */ 15851 /* 15852 the reported mouse-wheel delta value. The number of lines (translated to pixels) one wheel notch scrolls. 15853 values: "auto", integer 15854 "auto" uses the default OS/browser value 15855 */ 15856 deltaFactor:"auto", 15857 /* 15858 normalize mouse-wheel delta to -1 or 1 (disables mouse-wheel acceleration) 15859 values: boolean 15860 option default 15861 ------------------------------------- 15862 normalizeDelta null 15863 */ 15864 /* 15865 invert mouse-wheel scrolling direction 15866 values: boolean 15867 option default 15868 ------------------------------------- 15869 invert null 15870 */ 15871 /* 15872 the tags that disable mouse-wheel when cursor is over them 15873 */ 15874 disableOver:["select","option","keygen","datalist","textarea"] 15875 }, 15876 /* 15877 scrollbar buttons 15878 */ 15879 scrollButtons:{ 15880 /* 15881 enable scrollbar buttons 15882 values: boolean 15883 option default 15884 ------------------------------------- 15885 enable null 15886 */ 15887 /* 15888 scrollbar buttons scrolling type 15889 values (string): "stepless", "stepped" 15890 */ 15891 scrollType:"stepless", 15892 /* 15893 scrolling amount in pixels 15894 values: "auto", integer 15895 */ 15896 scrollAmount:"auto" 15897 /* 15898 tabindex of the scrollbar buttons 15899 values: false, integer 15900 option default 15901 ------------------------------------- 15902 tabindex null 15903 */ 15904 }, 15905 /* 15906 keyboard scrolling 15907 */ 15908 keyboard:{ 15909 /* 15910 enable scrolling via keyboard 15911 values: boolean 15912 */ 15913 enable:true, 15914 /* 15915 keyboard scrolling type 15916 values (string): "stepless", "stepped" 15917 */ 15918 scrollType:"stepless", 15919 /* 15920 scrolling amount in pixels 15921 values: "auto", integer 15922 */ 15923 scrollAmount:"auto" 15924 }, 15925 /* 15926 enable content touch-swipe scrolling 15927 values: boolean, integer, string (number) 15928 integer values define the axis-specific minimum amount required for scrolling momentum 15929 */ 15930 contentTouchScroll:25, 15931 /* 15932 enable/disable document (default) touch-swipe scrolling 15933 */ 15934 documentTouchScroll:true, 15935 /* 15936 advanced option parameters 15937 */ 15938 advanced:{ 15939 /* 15940 auto-expand content horizontally (for "x" or "yx" axis) 15941 values: boolean, integer (the value 2 forces the non scrollHeight/scrollWidth method, the value 3 forces the scrollHeight/scrollWidth method) 15942 option default 15943 ------------------------------------- 15944 autoExpandHorizontalScroll null 15945 */ 15946 /* 15947 auto-scroll to elements with focus 15948 */ 15949 autoScrollOnFocus:"input,textarea,select,button,datalist,keygen,a[tabindex],area,object,[contenteditable='true']", 15950 /* 15951 auto-update scrollbars on content, element or viewport resize 15952 should be true for fluid layouts/elements, adding/removing content dynamically, hiding/showing elements, content with images etc. 15953 values: boolean 15954 */ 15955 updateOnContentResize:true, 15956 /* 15957 auto-update scrollbars each time each image inside the element is fully loaded 15958 values: "auto", boolean 15959 */ 15960 updateOnImageLoad:"auto", 15961 /* 15962 auto-update scrollbars based on the amount and size changes of specific selectors 15963 useful when you need to update the scrollbar(s) automatically, each time a type of element is added, removed or changes its size 15964 values: boolean, string (e.g. "ul li" will auto-update scrollbars each time list-items inside the element are changed) 15965 a value of true (boolean) will auto-update scrollbars each time any element is changed 15966 option default 15967 ------------------------------------- 15968 updateOnSelectorChange null 15969 */ 15970 /* 15971 extra selectors that'll allow scrollbar dragging upon mousemove/up, pointermove/up, touchend etc. (e.g. "selector-1, selector-2") 15972 option default 15973 ------------------------------------- 15974 extraDraggableSelectors null 15975 */ 15976 /* 15977 extra selectors that'll release scrollbar dragging upon mouseup, pointerup, touchend etc. (e.g. "selector-1, selector-2") 15978 option default 15979 ------------------------------------- 15980 releaseDraggableSelectors null 15981 */ 15982 /* 15983 auto-update timeout 15984 values: integer (milliseconds) 15985 */ 15986 autoUpdateTimeout:60 15987 }, 15988 /* 15989 scrollbar theme 15990 values: string (see CSS/plugin URI for a list of ready-to-use themes) 15991 */ 15992 theme:"light", 15993 /* 15994 user defined callback functions 15995 */ 15996 callbacks:{ 15997 /* 15998 Available callbacks: 15999 callback default 16000 ------------------------------------- 16001 onCreate null 16002 onInit null 16003 onScrollStart null 16004 onScroll null 16005 onTotalScroll null 16006 onTotalScrollBack null 16007 whileScrolling null 16008 onOverflowY null 16009 onOverflowX null 16010 onOverflowYNone null 16011 onOverflowXNone null 16012 onImageLoad null 16013 onSelectorChange null 16014 onBeforeUpdate null 16015 onUpdate null 16016 */ 16017 onTotalScrollOffset:0, 16018 onTotalScrollBackOffset:0, 16019 alwaysTriggerOffsets:true 16020 } 16021 /* 16022 add scrollbar(s) on all elements matching the current selector, now and in the future 16023 values: boolean, string 16024 string values: "on" (enable), "once" (disable after first invocation), "off" (disable) 16025 liveSelector values: string (selector) 16026 option default 16027 ------------------------------------- 16028 live false 16029 liveSelector null 16030 */ 16031 }, 16032 16033 16034 16035 16036 16037 /* 16038 ---------------------------------------- 16039 VARS, CONSTANTS 16040 ---------------------------------------- 16041 */ 16042 16043 totalInstances=0, /* plugin instances amount */ 16044 liveTimers={}, /* live option timers */ 16045 oldIE=(window.attachEvent && !window.addEventListener) ? 1 : 0, /* detect IE < 9 */ 16046 touchActive=false,touchable, /* global touch vars (for touch and pointer events) */ 16047 /* general plugin classes */ 16048 classes=[ 16049 "mCSB_dragger_onDrag","mCSB_scrollTools_onDrag","mCS_img_loaded","mCS_disabled","mCS_destroyed","mCS_no_scrollbar", 16050 "mCS-autoHide","mCS-dir-rtl","mCS_no_scrollbar_y","mCS_no_scrollbar_x","mCS_y_hidden","mCS_x_hidden","mCSB_draggerContainer", 16051 "mCSB_buttonUp","mCSB_buttonDown","mCSB_buttonLeft colored_theme_hover_text","mCSB_buttonRight colored_theme_hover_text" 16052 ], 16053 touchOffCustom = false;
vendor: 22,935 bytes, lines 16053-16617
16053 16054 16055 16056 16057 16058 16059 /* 16060 ---------------------------------------- 16061 METHODS 16062 ---------------------------------------- 16063 */ 16064 16065 methods={ 16066 16067 /* 16068 plugin initialization method 16069 creates the scrollbar(s), plugin data object and options 16070 ---------------------------------------- 16071 */ 16072 16073 init:function(options){ 16074 16075 var options=$.extend(true,{},defaults,options), 16076 selector=_selector.call(this); /* validate selector */ 16077 16078 /* 16079 if live option is enabled, monitor for elements matching the current selector and 16080 apply scrollbar(s) when found (now and in the future) 16081 */ 16082 if(options.live){ 16083 var liveSelector=options.liveSelector || this.selector || defaultSelector, /* live selector(s) */ 16084 $liveSelector=$(liveSelector); /* live selector(s) as jquery object */ 16085 if(options.live==="off"){ 16086 /* 16087 disable live if requested 16088 usage: $(selector).mCustomScrollbar({live:"off"}); 16089 */ 16090 removeLiveTimers(liveSelector); 16091 return; 16092 } 16093 liveTimers[liveSelector]=setTimeout(function(){ 16094 /* call mCustomScrollbar fn on live selector(s) every half-second */ 16095 $liveSelector.mCustomScrollbar(options); 16096 if(options.live==="once" && $liveSelector.length){ 16097 /* disable live after first invocation */ 16098 removeLiveTimers(liveSelector); 16099 } 16100 },500); 16101 }else{ 16102 removeLiveTimers(liveSelector); 16103 } 16104 16105 /* options backward compatibility (for versions < 3.0.0) and normalization */ 16106 options.setWidth=(options.set_width) ? options.set_width : options.setWidth; 16107 options.setHeight=(options.set_height) ? options.set_height : options.setHeight; 16108 options.axis=(options.horizontalScroll) ? "x" : _findAxis(options.axis); 16109 options.scrollInertia=options.scrollInertia>0 && options.scrollInertia<17 ? 17 : options.scrollInertia; 16110 if(typeof options.mouseWheel!=="object" && options.mouseWheel==true){ /* old school mouseWheel option (non-object) */ 16111 options.mouseWheel={enable:true,scrollAmount:"auto",axis:"y",preventDefault:false,deltaFactor:"auto",normalizeDelta:false,invert:false} 16112 } 16113 options.mouseWheel.scrollAmount=!options.mouseWheelPixels ? options.mouseWheel.scrollAmount : options.mouseWheelPixels; 16114 options.mouseWheel.normalizeDelta=!options.advanced.normalizeMouseWheelDelta ? options.mouseWheel.normalizeDelta : options.advanced.normalizeMouseWheelDelta; 16115 options.scrollButtons.scrollType=_findScrollButtonsType(options.scrollButtons.scrollType); 16116 16117 _theme(options); /* theme-specific options */ 16118 16119 /* plugin constructor */ 16120 return $(selector).each(function(){ 16121 16122 var $this=$(this); 16123 16124 if(!$this.data(pluginPfx)){ /* prevent multiple instantiations */ 16125 16126 /* store options and create objects in jquery data */ 16127 $this.data(pluginPfx,{ 16128 idx:++totalInstances, /* instance index */ 16129 opt:options, /* options */ 16130 scrollRatio:{y:null,x:null}, /* scrollbar to content ratio */ 16131 overflowed:null, /* overflowed axis */ 16132 contentReset:{y:null,x:null}, /* object to check when content resets */ 16133 bindEvents:false, /* object to check if events are bound */ 16134 tweenRunning:false, /* object to check if tween is running */ 16135 sequential:{}, /* sequential scrolling object */ 16136 langDir:$this.css("direction"), /* detect/store direction (ltr or rtl) */ 16137 cbOffsets:null, /* object to check whether callback offsets always trigger */ 16138 /* 16139 object to check how scrolling events where last triggered 16140 "internal" (default - triggered by this script), "external" (triggered by other scripts, e.g. via scrollTo method) 16141 usage: object.data("mCS").trigger 16142 */ 16143 trigger:null, 16144 /* 16145 object to check for changes in elements in order to call the update method automatically 16146 */ 16147 poll:{size:{o:0,n:0},img:{o:0,n:0},change:{o:0,n:0}} 16148 }); 16149 16150 var d=$this.data(pluginPfx),o=d.opt, 16151 /* HTML data attributes */ 16152 htmlDataAxis=$this.data("mcs-axis"),htmlDataSbPos=$this.data("mcs-scrollbar-position"),htmlDataTheme=$this.data("mcs-theme"); 16153 16154 if(htmlDataAxis){o.axis=htmlDataAxis;} /* usage example: data-mcs-axis="y" */ 16155 if(htmlDataSbPos){o.scrollbarPosition=htmlDataSbPos;} /* usage example: data-mcs-scrollbar-position="outside" */ 16156 if(htmlDataTheme){ /* usage example: data-mcs-theme="minimal" */ 16157 o.theme=htmlDataTheme; 16158 _theme(o); /* theme-specific options */ 16159 } 16160 16161 _pluginMarkup.call(this); /* add plugin markup */ 16162 16163 if(d && o.callbacks.onCreate && typeof o.callbacks.onCreate==="function"){o.callbacks.onCreate.call(this);} /* callbacks: onCreate */ 16164 16165 $("#mCSB_"+d.idx+"_container img:not(."+classes[2]+")").addClass(classes[2]); /* flag loaded images */ 16166 16167 methods.update.call(null,$this); /* call the update method */ 16168 16169 } 16170 16171 }); 16172 16173 }, 16174 /* ---------------------------------------- */ 16175 16176 16177 16178 /* 16179 plugin update method 16180 updates content and scrollbar(s) values, events and status 16181 ---------------------------------------- 16182 usage: $(selector).mCustomScrollbar("update"); 16183 */ 16184 16185 update:function(el,cb){ 16186 16187 var selector=el || _selector.call(this); /* validate selector */ 16188 16189 return $(selector).each(function(){ 16190 16191 var $this=$(this); 16192 16193 if($this.data(pluginPfx)){ /* check if plugin has initialized */ 16194 16195 var d=$this.data(pluginPfx),o=d.opt, 16196 mCSB_container=$("#mCSB_"+d.idx+"_container"), 16197 mCustomScrollBox=$("#mCSB_"+d.idx), 16198 mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")]; 16199 16200 if(!mCSB_container.length){return;} 16201 16202 if(d.tweenRunning){_stop($this);} /* stop any running tweens while updating */ 16203 16204 if(cb && d && o.callbacks.onBeforeUpdate && typeof o.callbacks.onBeforeUpdate==="function"){o.callbacks.onBeforeUpdate.call(this);} /* callbacks: onBeforeUpdate */ 16205 16206 /* if element was disabled or destroyed, remove class(es) */ 16207 if($this.hasClass(classes[3])){$this.removeClass(classes[3]);} 16208 if($this.hasClass(classes[4])){$this.removeClass(classes[4]);} 16209 16210 /* css flexbox fix, detect/set max-height */ 16211 mCustomScrollBox.css("max-height","none"); 16212 if(mCustomScrollBox.height()!==$this.height()){mCustomScrollBox.css("max-height",$this.height());} 16213 16214 _expandContentHorizontally.call(this); /* expand content horizontally */ 16215 16216 if(o.axis!=="y" && !o.advanced.autoExpandHorizontalScroll){ 16217 mCSB_container.css("width",_contentWidth(mCSB_container)); 16218 } 16219 16220 d.overflowed=_overflowed.call(this); /* determine if scrolling is required */ 16221 16222 _scrollbarVisibility.call(this); /* show/hide scrollbar(s) */ 16223 16224 /* auto-adjust scrollbar dragger length analogous to content */ 16225 if(o.autoDraggerLength){_setDraggerLength.call(this);} 16226 16227 _scrollRatio.call(this); /* calculate and store scrollbar to content ratio */ 16228 16229 _bindEvents.call(this); /* bind scrollbar events */ 16230 16231 /* reset scrolling position and/or events */ 16232 var to=[Math.abs(mCSB_container[0].offsetTop),Math.abs(mCSB_container[0].offsetLeft)]; 16233 if(o.axis!=="x"){ /* y/yx axis */ 16234 if(!d.overflowed[0]){ /* y scrolling is not required */ 16235 _resetContentPosition.call(this); /* reset content position */ 16236 if(o.axis==="y"){ 16237 _unbindEvents.call(this); 16238 }else if(o.axis==="yx" && d.overflowed[1]){ 16239 _scrollTo($this,to[1].toString(),{dir:"x",dur:0,overwrite:"none"}); 16240 } 16241 }else if(mCSB_dragger[0].height()>mCSB_dragger[0].parent().height()){ 16242 _resetContentPosition.call(this); /* reset content position */ 16243 }else{ /* y scrolling is required */ 16244 _scrollTo($this,to[0].toString(),{dir:"y",dur:0,overwrite:"none"}); 16245 d.contentReset.y=null; 16246 } 16247 } 16248 if(o.axis!=="y"){ /* x/yx axis */ 16249 if(!d.overflowed[1]){ /* x scrolling is not required */ 16250 _resetContentPosition.call(this); /* reset content position */ 16251 if(o.axis==="x"){ 16252 _unbindEvents.call(this); 16253 }else if(o.axis==="yx" && d.overflowed[0]){ 16254 _scrollTo($this,to[0].toString(),{dir:"y",dur:0,overwrite:"none"}); 16255 } 16256 }else if(mCSB_dragger[1].width()>mCSB_dragger[1].parent().width()){ 16257 _resetContentPosition.call(this); /* reset content position */ 16258 }else{ /* x scrolling is required */ 16259 _scrollTo($this,to[1].toString(),{dir:"x",dur:0,overwrite:"none"}); 16260 d.contentReset.x=null; 16261 } 16262 } 16263 16264 /* callbacks: onImageLoad, onSelectorChange, onUpdate */ 16265 if(cb && d){ 16266 if(cb===2 && o.callbacks.onImageLoad && typeof o.callbacks.onImageLoad==="function"){ 16267 o.callbacks.onImageLoad.call(this); 16268 }else if(cb===3 && o.callbacks.onSelectorChange && typeof o.callbacks.onSelectorChange==="function"){ 16269 o.callbacks.onSelectorChange.call(this); 16270 }else if(o.callbacks.onUpdate && typeof o.callbacks.onUpdate==="function"){ 16271 o.callbacks.onUpdate.call(this); 16272 } 16273 } 16274 16275 _autoUpdate.call(this); /* initialize automatic updating (for dynamic content, fluid layouts etc.) */ 16276 16277 } 16278 16279 }); 16280 16281 }, 16282 /* ---------------------------------------- */ 16283 16284 16285 16286 /* 16287 plugin scrollTo method 16288 triggers a scrolling event to a specific value 16289 ---------------------------------------- 16290 usage: $(selector).mCustomScrollbar("scrollTo",value,options); 16291 */ 16292 16293 scrollTo:function(val,options){ 16294 16295 /* prevent silly things like $(selector).mCustomScrollbar("scrollTo",undefined); */ 16296 if(typeof val=="undefined" || val==null){return;} 16297 16298 var selector=_selector.call(this); /* validate selector */ 16299 16300 return $(selector).each(function(){ 16301 16302 var $this=$(this); 16303 16304 if($this.data(pluginPfx)){ /* check if plugin has initialized */ 16305 16306 var d=$this.data(pluginPfx),o=d.opt, 16307 /* method default options */ 16308 methodDefaults={ 16309 trigger:"external", /* method is by default triggered externally (e.g. from other scripts) */ 16310 scrollInertia:o.scrollInertia, /* scrolling inertia (animation duration) */ 16311 scrollEasing:"mcsEaseInOut", /* animation easing */ 16312 moveDragger:false, /* move dragger instead of content */ 16313 timeout:60, /* scroll-to delay */ 16314 callbacks:true, /* enable/disable callbacks */ 16315 onStart:true, 16316 onUpdate:true, 16317 onComplete:true 16318 }, 16319 methodOptions=$.extend(true,{},methodDefaults,options), 16320 to=_arr.call(this,val),dur=methodOptions.scrollInertia>0 && methodOptions.scrollInertia<17 ? 17 : methodOptions.scrollInertia; 16321 16322 /* translate yx values to actual scroll-to positions */ 16323 to[0]=_to.call(this,to[0],"y"); 16324 to[1]=_to.call(this,to[1],"x"); 16325 16326 /* 16327 check if scroll-to value moves the dragger instead of content. 16328 Only pixel values apply on dragger (e.g. 100, "100px", "-=100" etc.) 16329 */ 16330 if(methodOptions.moveDragger){ 16331 to[0]*=d.scrollRatio.y; 16332 to[1]*=d.scrollRatio.x; 16333 } 16334 16335 methodOptions.dur=_isTabHidden() ? 0 : dur; //skip animations if browser tab is hidden 16336 setTimeout(function(){ 16337 /* do the scrolling */ 16338 if(to[0]!==null && typeof to[0]!=="undefined" && o.axis!=="x" && d.overflowed[0]){ /* scroll y */ 16339 methodOptions.dir="y"; 16340 methodOptions.overwrite="all"; 16341 _scrollTo($this,to[0].toString(),methodOptions); 16342 } 16343 if(to[1]!==null && typeof to[1]!=="undefined" && o.axis!=="y" && d.overflowed[1]){ /* scroll x */ 16344 methodOptions.dir="x"; 16345 methodOptions.overwrite="none"; 16346 _scrollTo($this,to[1].toString(),methodOptions); 16347 } 16348 },methodOptions.timeout); 16349 16350 } 16351 16352 }); 16353 16354 }, 16355 /* ---------------------------------------- */ 16356 16357 16358 16359 /* 16360 plugin stop method 16361 stops scrolling animation 16362 ---------------------------------------- 16363 usage: $(selector).mCustomScrollbar("stop"); 16364 */ 16365 stop:function(){ 16366 16367 var selector=_selector.call(this); /* validate selector */ 16368 16369 return $(selector).each(function(){ 16370 16371 var $this=$(this); 16372 16373 if($this.data(pluginPfx)){ /* check if plugin has initialized */ 16374 16375 _stop($this); 16376 16377 } 16378 16379 }); 16380 16381 }, 16382 /* ---------------------------------------- */ 16383 16384 16385 16386 /* 16387 plugin disable method 16388 temporarily disables the scrollbar(s) 16389 ---------------------------------------- 16390 usage: $(selector).mCustomScrollbar("disable",reset); 16391 reset (boolean): resets content position to 0 16392 */ 16393 disable:function(r){ 16394 16395 var selector=_selector.call(this); /* validate selector */ 16396 16397 return $(selector).each(function(){ 16398 16399 var $this=$(this); 16400 16401 if($this.data(pluginPfx)){ /* check if plugin has initialized */ 16402 16403 var d=$this.data(pluginPfx); 16404 16405 _autoUpdate.call(this,"remove"); /* remove automatic updating */ 16406 16407 _unbindEvents.call(this); /* unbind events */ 16408 16409 if(r){_resetContentPosition.call(this);} /* reset content position */ 16410 16411 _scrollbarVisibility.call(this,true); /* show/hide scrollbar(s) */ 16412 16413 $this.addClass(classes[3]); /* add disable class */ 16414 16415 } 16416 16417 }); 16418 16419 }, 16420 /* ---------------------------------------- */ 16421 16422 16423 16424 /* 16425 plugin destroy method 16426 completely removes the scrollbar(s) and returns the element to its original state 16427 ---------------------------------------- 16428 usage: $(selector).mCustomScrollbar("destroy"); 16429 */ 16430 destroy:function(){ 16431 16432 var selector=_selector.call(this); /* validate selector */ 16433 16434 return $(selector).each(function(){ 16435 16436 var $this=$(this); 16437 16438 if($this.data(pluginPfx)){ /* check if plugin has initialized */ 16439 16440 var d=$this.data(pluginPfx),o=d.opt, 16441 mCustomScrollBox=$("#mCSB_"+d.idx), 16442 mCSB_container=$("#mCSB_"+d.idx+"_container"), 16443 scrollbar=$(".mCSB_"+d.idx+"_scrollbar"); 16444 16445 if(o.live){removeLiveTimers(o.liveSelector || $(selector).selector);} /* remove live timers */ 16446 16447 _autoUpdate.call(this,"remove"); /* remove automatic updating */ 16448 16449 _unbindEvents.call(this); /* unbind events */ 16450 16451 _resetContentPosition.call(this); /* reset content position */ 16452 16453 $this.removeData(pluginPfx); /* remove plugin data object */ 16454 16455 _delete(this,"mcs"); /* delete callbacks object */ 16456 16457 /* remove plugin markup */ 16458 scrollbar.remove(); /* remove scrollbar(s) first (those can be either inside or outside plugin's inner wrapper) */ 16459 mCSB_container.find("img."+classes[2]).removeClass(classes[2]); /* remove loaded images flag */ 16460 mCustomScrollBox.replaceWith(mCSB_container.contents()); /* replace plugin's inner wrapper with the original content */ 16461 /* remove plugin classes from the element and add destroy class */ 16462 $this.removeClass(pluginNS+" _"+pluginPfx+"_"+d.idx+" "+classes[6]+" "+classes[7]+" "+classes[5]+" "+classes[3]).addClass(classes[4]); 16463 16464 } 16465 16466 }); 16467 16468 } 16469 /* ---------------------------------------- */ 16470 16471 }, 16472 16473 16474 16475 16476 16477 /* 16478 ---------------------------------------- 16479 FUNCTIONS 16480 ---------------------------------------- 16481 */ 16482 16483 /* validates selector (if selector is invalid or undefined uses the default one) */ 16484 _selector=function(){ 16485 return (typeof $(this)!=="object" || $(this).length<1) ? defaultSelector : this; 16486 }, 16487 /* -------------------- */ 16488 16489 16490 /* changes options according to theme */ 16491 _theme=function(obj){ 16492 var fixedSizeScrollbarThemes=["rounded","rounded-dark","rounded-dots","rounded-dots-dark"], 16493 nonExpandedScrollbarThemes=["rounded-dots","rounded-dots-dark","3d","3d-dark","3d-thick","3d-thick-dark","inset","inset-dark","inset-2","inset-2-dark","inset-3","inset-3-dark"], 16494 disabledScrollButtonsThemes=["minimal","minimal-dark"], 16495 enabledAutoHideScrollbarThemes=["minimal","minimal-dark"], 16496 scrollbarPositionOutsideThemes=["minimal","minimal-dark"]; 16497 obj.autoDraggerLength=$.inArray(obj.theme,fixedSizeScrollbarThemes) > -1 ? false : obj.autoDraggerLength; 16498 obj.autoExpandScrollbar=$.inArray(obj.theme,nonExpandedScrollbarThemes) > -1 ? false : obj.autoExpandScrollbar; 16499 obj.scrollButtons.enable=$.inArray(obj.theme,disabledScrollButtonsThemes) > -1 ? false : obj.scrollButtons.enable; 16500 obj.autoHideScrollbar=$.inArray(obj.theme,enabledAutoHideScrollbarThemes) > -1 ? true : obj.autoHideScrollbar; 16501 obj.scrollbarPosition=$.inArray(obj.theme,scrollbarPositionOutsideThemes) > -1 ? "outside" : obj.scrollbarPosition; 16502 }, 16503 /* -------------------- */ 16504 16505 16506 /* live option timers removal */ 16507 removeLiveTimers=function(selector){ 16508 if(liveTimers[selector]){ 16509 clearTimeout(liveTimers[selector]); 16510 _delete(liveTimers,selector); 16511 } 16512 }, 16513 /* -------------------- */ 16514 16515 16516 /* normalizes axis option to valid values: "y", "x", "yx" */ 16517 _findAxis=function(val){ 16518 return (val==="yx" || val==="xy" || val==="auto") ? "yx" : (val==="x" || val==="horizontal") ? "x" : "y"; 16519 }, 16520 /* -------------------- */ 16521 16522 16523 /* normalizes scrollButtons.scrollType option to valid values: "stepless", "stepped" */ 16524 _findScrollButtonsType=function(val){ 16525 return (val==="stepped" || val==="pixels" || val==="step" || val==="click") ? "stepped" : "stepless"; 16526 }, 16527 /* -------------------- */ 16528 16529 16530 /* generates plugin markup */ 16531 _pluginMarkup=function(){ 16532 var $this=$(this),d=$this.data(pluginPfx),o=d.opt, 16533 expandClass=o.autoExpandScrollbar ? " "+classes[1]+"_expand" : "", 16534 scrollbar=["<div id='mCSB_"+d.idx+"_scrollbar_vertical' class='mCSB_scrollTools mCSB_"+d.idx+"_scrollbar mCS-"+o.theme+" mCSB_scrollTools_vertical"+expandClass+"'><div class='"+classes[12]+"'><div id='mCSB_"+d.idx+"_dragger_vertical' class='mCSB_dragger' style='position:absolute;'><div class='mCSB_dragger_bar' /></div><div class='mCSB_draggerRail' /></div></div>","<div id='mCSB_"+d.idx+"_scrollbar_horizontal' class='mCSB_scrollTools mCSB_"+d.idx+"_scrollbar mCS-"+o.theme+" mCSB_scrollTools_horizontal"+expandClass+"'><div class='"+classes[12]+"'><div id='mCSB_"+d.idx+"_dragger_horizontal' class='mCSB_dragger' style='position:absolute;'><div class='mCSB_dragger_bar' /></div><div class='mCSB_draggerRail' /></div></div>"], 16535 wrapperClass=o.axis==="yx" ? "mCSB_vertical_horizontal" : o.axis==="x" ? "mCSB_horizontal" : "mCSB_vertical", 16536 scrollbars=o.axis==="yx" ? scrollbar[0]+scrollbar[1] : o.axis==="x" ? scrollbar[1] : scrollbar[0], 16537 contentWrapper=o.axis==="yx" ? "<div id='mCSB_"+d.idx+"_container_wrapper' class='mCSB_container_wrapper' />" : "", 16538 autoHideClass=o.autoHideScrollbar ? " "+classes[6] : "", 16539 scrollbarDirClass=(o.axis!=="x" && d.langDir==="rtl") ? " "+classes[7] : ""; 16540 if(o.setWidth){$this.css("width",o.setWidth);} /* set element width */ 16541 if(o.setHeight){$this.css("height",o.setHeight);} /* set element height */ 16542 o.setLeft=(o.axis!=="y" && d.langDir==="rtl") ? "989999px" : o.setLeft; /* adjust left position for rtl direction */ 16543 $this.addClass(pluginNS+" _"+pluginPfx+"_"+d.idx+autoHideClass+scrollbarDirClass).wrapInner("<div id='mCSB_"+d.idx+"' class='mCustomScrollBox mCS-"+o.theme+" "+wrapperClass+"'><div id='mCSB_"+d.idx+"_container' class='mCSB_container' style='position:relative; top:"+o.setTop+"; left:"+o.setLeft+";' dir='"+d.langDir+"' /></div>"); 16544 var mCustomScrollBox=$("#mCSB_"+d.idx), 16545 mCSB_container=$("#mCSB_"+d.idx+"_container"); 16546 if(o.axis!=="y" && !o.advanced.autoExpandHorizontalScroll){ 16547 mCSB_container.css("width",_contentWidth(mCSB_container)); 16548 } 16549 if(o.scrollbarPosition==="outside"){ 16550 if($this.css("position")==="static"){ /* requires elements with non-static position */ 16551 $this.css("position","relative"); 16552 } 16553 $this.css("overflow","visible"); 16554 mCustomScrollBox.addClass("mCSB_outside").after(scrollbars); 16555 }else{ 16556 mCustomScrollBox.addClass("mCSB_inside").append(scrollbars); 16557 mCSB_container.wrap(contentWrapper); 16558 } 16559 _scrollButtons.call(this); /* add scrollbar buttons */ 16560 /* minimum dragger length */ 16561 var mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")]; 16562 mCSB_dragger[0].css("min-height",mCSB_dragger[0].height()); 16563 mCSB_dragger[1].css("min-width",mCSB_dragger[1].width()); 16564 }, 16565 /* -------------------- */ 16566 16567 16568 /* calculates content width */ 16569 _contentWidth=function(el){ 16570 var val=[el[0].scrollWidth,Math.max.apply(Math,el.children().map(function(){return $(this).outerWidth(true);}).get())],w=el.parent().width(); 16571 return val[0]>w ? val[0] : val[1]>w ? val[1] : "100%"; 16572 }, 16573 /* -------------------- */ 16574 16575 16576 /* expands content horizontally */ 16577 _expandContentHorizontally=function(){ 16578 var $this=$(this),d=$this.data(pluginPfx),o=d.opt, 16579 mCSB_container=$("#mCSB_"+d.idx+"_container"); 16580 if(o.advanced.autoExpandHorizontalScroll && o.axis!=="y"){ 16581 /* calculate scrollWidth */ 16582 mCSB_container.css({"width":"auto","min-width":0,"overflow-x":"scroll"}); 16583 var w=Math.ceil(mCSB_container[0].scrollWidth); 16584 if(o.advanced.autoExpandHorizontalScroll===3 || (o.advanced.autoExpandHorizontalScroll!==2 && w>mCSB_container.parent().width())){ 16585 mCSB_container.css({"width":w,"min-width":"100%","overflow-x":"inherit"}); 16586 }else{ 16587 /* 16588 wrap content with an infinite width div and set its position to absolute and width to auto. 16589 Setting width to auto before calculating the actual width is important! 16590 We must let the browser set the width as browser zoom values are impossible to calculate. 16591 */ 16592 mCSB_container.css({"overflow-x":"inherit","position":"absolute"}) 16593 .wrap("<div class='mCSB_h_wrapper' style='position:relative; left:0; width:999999px;' />") 16594 .css({ /* set actual width, original position and un-wrap */ 16595 /* 16596 get the exact width (with decimals) and then round-up. 16597 Using jquery outerWidth() will round the width value which will mess up with inner elements that have non-integer width 16598 */ 16599 "width":(Math.ceil(mCSB_container[0].getBoundingClientRect().right+0.4)-Math.floor(mCSB_container[0].getBoundingClientRect().left)), 16600 "min-width":"100%", 16601 "position":"relative" 16602 }).unwrap(); 16603 } 16604 } 16605 }, 16606 /* -------------------- */ 16607 16608 16609 /* adds scrollbar buttons */ 16610 _scrollButtons=function(){ 16611 var $this=$(this),d=$this.data(pluginPfx),o=d.opt, 16612 mCSB_scrollTools=$(".mCSB_"+d.idx+"_scrollbar:first"), 16613 tabindex=!_isNumeric(o.scrollButtons.tabindex) ? "" : "tabindex='"+o.scrollButtons.tabindex+"'", 16614 btnHTML=[ 16615 "<a href='#' class='"+classes[13]+"' "+tabindex+" />", 16616 "<a href='#' class='"+classes[14]+"' "+tabindex+" />", 16617 "<a href='#' class='"+classes[15]+"' "+tabindex+"
16617><i class='svg right'><svg width='12' height='6.969' viewBox='0 0 12 6.969'><path class='cls-1' d='M361.691,401.707a1,1,0,0,1-1.414,0L356,397.416l-4.306,4.291a1,1,0,0,1-1.414,0,0.991,0.991,0,0,1,0-1.406l5.016-5a1.006,1.006,0,0,1,1.415,0l4.984,5A0.989,0.989,0,0,1,361.691,401.707Z' transform='translate(-350 -395.031)'></path></svg></i></a>", 16618 "<a href='#' class='"+classes[16]+"' "+tabindex+" ><i class='svg right'><svg width='12' height='6.969' viewBox='0 0 12 6.969'><path class='cls-1' d='M361.691,401.707a1,1,0,0,1-1.414,0L356,397.416l-4.306,4.291a1,1,0,0,1-1.414,0,0.99
vendor: 13,291 bytes, lines 16618-16925
166181,0.991,0,0,1,0-1.406l5.016-5a1.006,1.006,0,0,1,1.415,0l4.984,5A0.989,0.989,0,0,1,361.691,401.707Z' transform='translate(-350 -395.031)'></path></svg></i></a>" 16619 ], 16620 btn=[(o.axis==="x" ? btnHTML[2] : btnHTML[0]),(o.axis==="x" ? btnHTML[3] : btnHTML[1]),btnHTML[2],btnHTML[3]]; 16621 if(o.scrollButtons.enable){ 16622 mCSB_scrollTools.prepend(btn[0]).append(btn[1]).next(".mCSB_scrollTools").prepend(btn[2]).append(btn[3]); 16623 } 16624 }, 16625 /* -------------------- */ 16626 16627 16628 /* auto-adjusts scrollbar dragger length */ 16629 _setDraggerLength=function(){ 16630 var $this=$(this),d=$this.data(pluginPfx), 16631 mCustomScrollBox=$("#mCSB_"+d.idx), 16632 mCSB_container=$("#mCSB_"+d.idx+"_container"), 16633 mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")], 16634 ratio=[mCustomScrollBox.height()/mCSB_container.outerHeight(false),mCustomScrollBox.width()/mCSB_container.outerWidth(false)], 16635 l=[ 16636 parseInt(mCSB_dragger[0].css("min-height")),Math.round(ratio[0]*mCSB_dragger[0].parent().height()), 16637 parseInt(mCSB_dragger[1].css("min-width")),Math.round(ratio[1]*mCSB_dragger[1].parent().width()) 16638 ], 16639 h=oldIE && (l[1]<l[0]) ? l[0] : l[1],w=oldIE && (l[3]<l[2]) ? l[2] : l[3]; 16640 mCSB_dragger[0].css({ 16641 "height":h,"max-height":(mCSB_dragger[0].parent().height()-10) 16642 }).find(".mCSB_dragger_bar").css({"line-height":l[0]+"px"}); 16643 mCSB_dragger[1].css({ 16644 "width":w,"max-width":(mCSB_dragger[1].parent().width()-10) 16645 }); 16646 }, 16647 /* -------------------- */ 16648 16649 16650 /* calculates scrollbar to content ratio */ 16651 _scrollRatio=function(){ 16652 var $this=$(this),d=$this.data(pluginPfx), 16653 mCustomScrollBox=$("#mCSB_"+d.idx), 16654 mCSB_container=$("#mCSB_"+d.idx+"_container"), 16655 mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")], 16656 scrollAmount=[mCSB_container.outerHeight(false)-mCustomScrollBox.height(),mCSB_container.outerWidth(false)-mCustomScrollBox.width()], 16657 ratio=[ 16658 scrollAmount[0]/(mCSB_dragger[0].parent().height()-mCSB_dragger[0].height()), 16659 scrollAmount[1]/(mCSB_dragger[1].parent().width()-mCSB_dragger[1].width()) 16660 ]; 16661 d.scrollRatio={y:ratio[0],x:ratio[1]}; 16662 }, 16663 /* -------------------- */ 16664 16665 16666 /* toggles scrolling classes */ 16667 _onDragClasses=function(el,action,xpnd){ 16668 var expandClass=xpnd ? classes[0]+"_expanded" : "", 16669 scrollbar=el.closest(".mCSB_scrollTools"); 16670 if(action==="active"){ 16671 el.toggleClass(classes[0]+" "+expandClass); scrollbar.toggleClass(classes[1]); 16672 el[0]._draggable=el[0]._draggable ? 0 : 1; 16673 }else{ 16674 if(!el[0]._draggable){ 16675 if(action==="hide"){ 16676 el.removeClass(classes[0]); scrollbar.removeClass(classes[1]); 16677 }else{ 16678 el.addClass(classes[0]); scrollbar.addClass(classes[1]); 16679 } 16680 } 16681 } 16682 }, 16683 /* -------------------- */ 16684 16685 16686 /* checks if content overflows its container to determine if scrolling is required */ 16687 _overflowed=function(){ 16688 var $this=$(this),d=$this.data(pluginPfx), 16689 mCustomScrollBox=$("#mCSB_"+d.idx), 16690 mCSB_container=$("#mCSB_"+d.idx+"_container"), 16691 contentHeight=d.overflowed==null ? mCSB_container.height() : mCSB_container.outerHeight(false), 16692 contentWidth=d.overflowed==null ? mCSB_container.width() : mCSB_container.outerWidth(false), 16693 h=mCSB_container[0].scrollHeight,w=mCSB_container[0].scrollWidth; 16694 if(h>contentHeight){contentHeight=h;} 16695 if(w>contentWidth){contentWidth=w;} 16696 return [contentHeight>mCustomScrollBox.height(),contentWidth>mCustomScrollBox.width()]; 16697 }, 16698 /* -------------------- */ 16699 16700 16701 /* resets content position to 0 */ 16702 _resetContentPosition=function(){ 16703 var $this=$(this),d=$this.data(pluginPfx),o=d.opt, 16704 mCustomScrollBox=$("#mCSB_"+d.idx), 16705 mCSB_container=$("#mCSB_"+d.idx+"_container"), 16706 mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")]; 16707 _stop($this); /* stop any current scrolling before resetting */ 16708 if((o.axis!=="x" && !d.overflowed[0]) || (o.axis==="y" && d.overflowed[0])){ /* reset y */ 16709 mCSB_dragger[0].add(mCSB_container).css("top",0); 16710 _scrollTo($this,"_resetY"); 16711 } 16712 if((o.axis!=="y" && !d.overflowed[1]) || (o.axis==="x" && d.overflowed[1])){ /* reset x */ 16713 var cx=dx=0; 16714 if(d.langDir==="rtl"){ /* adjust left position for rtl direction */ 16715 cx=mCustomScrollBox.width()-mCSB_container.outerWidth(false); 16716 dx=Math.abs(cx/d.scrollRatio.x); 16717 } 16718 mCSB_container.css("left",cx); 16719 mCSB_dragger[1].css("left",dx); 16720 _scrollTo($this,"_resetX"); 16721 } 16722 }, 16723 /* -------------------- */ 16724 16725 16726 /* binds scrollbar events */ 16727 _bindEvents=function(){ 16728 var $this=$(this),d=$this.data(pluginPfx),o=d.opt; 16729 if(!d.bindEvents){ /* check if events are already bound */ 16730 _draggable.call(this); 16731 if(o.contentTouchScroll){_contentDraggable.call(this);} 16732 _selectable.call(this); 16733 if(o.mouseWheel.enable){ /* bind mousewheel fn when plugin is available */ 16734 function _mwt(){ 16735 mousewheelTimeout=setTimeout(function(){ 16736 if(!$.event.special.mousewheel){ 16737 _mwt(); 16738 }else{ 16739 clearTimeout(mousewheelTimeout); 16740 _mousewheel.call($this[0]); 16741 } 16742 },100); 16743 } 16744 var mousewheelTimeout; 16745 _mwt(); 16746 } 16747 _draggerRail.call(this); 16748 _wrapperScroll.call(this); 16749 if(o.advanced.autoScrollOnFocus){_focus.call(this);} 16750 if(o.scrollButtons.enable){_buttons.call(this);} 16751 if(o.keyboard.enable){_keyboard.call(this);} 16752 d.bindEvents=true; 16753 } 16754 }, 16755 /* -------------------- */ 16756 16757 16758 /* unbinds scrollbar events */ 16759 _unbindEvents=function(){ 16760 var $this=$(this),d=$this.data(pluginPfx),o=d.opt, 16761 namespace=pluginPfx+"_"+d.idx, 16762 sb=".mCSB_"+d.idx+"_scrollbar", 16763 sel=$("#mCSB_"+d.idx+",#mCSB_"+d.idx+"_container,#mCSB_"+d.idx+"_container_wrapper,"+sb+" ."+classes[12]+",#mCSB_"+d.idx+"_dragger_vertical,#mCSB_"+d.idx+"_dragger_horizontal,"+sb+">a"), 16764 mCSB_container=$("#mCSB_"+d.idx+"_container"); 16765 if(o.advanced.releaseDraggableSelectors){sel.add($(o.advanced.releaseDraggableSelectors));} 16766 if(o.advanced.extraDraggableSelectors){sel.add($(o.advanced.extraDraggableSelectors));} 16767 if(d.bindEvents){ /* check if events are bound */ 16768 /* unbind namespaced events from document/selectors */ 16769 $(document).add($(!_canAccessIFrame() || top.document)).unbind("."+namespace); 16770 sel.each(function(){ 16771 $(this).unbind("."+namespace); 16772 }); 16773 /* clear and delete timeouts/objects */ 16774 clearTimeout($this[0]._focusTimeout); _delete($this[0],"_focusTimeout"); 16775 clearTimeout(d.sequential.step); _delete(d.sequential,"step"); 16776 clearTimeout(mCSB_container[0].onCompleteTimeout); _delete(mCSB_container[0],"onCompleteTimeout"); 16777 d.bindEvents=false; 16778 } 16779 }, 16780 /* -------------------- */ 16781 16782 16783 /* toggles scrollbar visibility */ 16784 _scrollbarVisibility=function(disabled){ 16785 var $this=$(this),d=$this.data(pluginPfx),o=d.opt, 16786 contentWrapper=$("#mCSB_"+d.idx+"_container_wrapper"), 16787 content=contentWrapper.length ? contentWrapper : $("#mCSB_"+d.idx+"_container"), 16788 scrollbar=[$("#mCSB_"+d.idx+"_scrollbar_vertical"),$("#mCSB_"+d.idx+"_scrollbar_horizontal")], 16789 mCSB_dragger=[scrollbar[0].find(".mCSB_dragger"),scrollbar[1].find(".mCSB_dragger")]; 16790 if(o.axis!=="x"){ 16791 if(d.overflowed[0] && !disabled){ 16792 scrollbar[0].add(mCSB_dragger[0]).add(scrollbar[0].children("a")).css("display","block"); 16793 content.removeClass(classes[8]+" "+classes[10]); 16794 }else{ 16795 if(o.alwaysShowScrollbar){ 16796 if(o.alwaysShowScrollbar!==2){mCSB_dragger[0].css("display","none");} 16797 content.removeClass(classes[10]); 16798 }else{ 16799 scrollbar[0].css("display","none"); 16800 content.addClass(classes[10]); 16801 } 16802 content.addClass(classes[8]); 16803 } 16804 } 16805 if(o.axis!=="y"){ 16806 if(d.overflowed[1] && !disabled){ 16807 scrollbar[1].add(mCSB_dragger[1]).add(scrollbar[1].children("a")).css("display","block"); 16808 content.removeClass(classes[9]+" "+classes[11]); 16809 }else{ 16810 if(o.alwaysShowScrollbar){ 16811 if(o.alwaysShowScrollbar!==2){mCSB_dragger[1].css("display","none");} 16812 content.removeClass(classes[11]); 16813 }else{ 16814 scrollbar[1].css("display","none"); 16815 content.addClass(classes[11]); 16816 } 16817 content.addClass(classes[9]); 16818 } 16819 } 16820 if(!d.overflowed[0] && !d.overflowed[1]){ 16821 $this.addClass(classes[5]); 16822 }else{ 16823 $this.removeClass(classes[5]); 16824 } 16825 }, 16826 /* -------------------- */ 16827 16828 16829 /* returns input coordinates of pointer, touch and mouse events (relative to document) */ 16830 _coordinates=function(e){ 16831 var t=e.type,o=e.target.ownerDocument!==document && frameElement!==null ? [$(frameElement).offset().top,$(frameElement).offset().left] : null, 16832 io=_canAccessIFrame() && e.target.ownerDocument!==top.document && frameElement!==null ? [$(e.view.frameElement).offset().top,$(e.view.frameElement).offset().left] : [0,0]; 16833 switch(t){ 16834 case "pointerdown": case "MSPointerDown": case "pointermove": case "MSPointerMove": case "pointerup": case "MSPointerUp": 16835 return o ? [e.originalEvent.pageY-o[0]+io[0],e.originalEvent.pageX-o[1]+io[1],false] : [e.originalEvent.pageY,e.originalEvent.pageX,false]; 16836 break; 16837 case "touchstart": case "touchmove": case "touchend": 16838 var touch=e.originalEvent.touches[0] || e.originalEvent.changedTouches[0], 16839 touches=e.originalEvent.touches.length || e.originalEvent.changedTouches.length; 16840 return e.target.ownerDocument!==document ? [touch.screenY,touch.screenX,touches>1] : [touch.pageY,touch.pageX,touches>1]; 16841 break; 16842 default: 16843 return o ? [e.pageY-o[0]+io[0],e.pageX-o[1]+io[1],false] : [e.pageY,e.pageX,false]; 16844 } 16845 }, 16846 /* -------------------- */ 16847 16848 16849 /* 16850 SCROLLBAR DRAG EVENTS 16851 scrolls content via scrollbar dragging 16852 */ 16853 _draggable=function(){ 16854 var $this=$(this),d=$this.data(pluginPfx),o=d.opt, 16855 namespace=pluginPfx+"_"+d.idx, 16856 draggerId=["mCSB_"+d.idx+"_dragger_vertical","mCSB_"+d.idx+"_dragger_horizontal"], 16857 mCSB_container=$("#mCSB_"+d.idx+"_container"), 16858 mCSB_dragger=$("#"+draggerId[0]+",#"+draggerId[1]), 16859 draggable,dragY,dragX, 16860 rds=o.advanced.releaseDraggableSelectors ? mCSB_dragger.add($(o.advanced.releaseDraggableSelectors)) : mCSB_dragger, 16861 eds=o.advanced.extraDraggableSelectors ? $(!_canAccessIFrame() || top.document).add($(o.advanced.extraDraggableSelectors)) : $(!_canAccessIFrame() || top.document); 16862 mCSB_dragger.bind("contextmenu."+namespace,function(e){ 16863 e.preventDefault(); //prevent right click 16864 }).bind("mousedown."+namespace+" touchstart."+namespace+" pointerdown."+namespace+" MSPointerDown."+namespace,function(e){ 16865 e.stopImmediatePropagation(); 16866 e.preventDefault(); 16867 if(!_mouseBtnLeft(e)){return;} /* left mouse button only */ 16868 touchActive=true; 16869 if(oldIE){document.onselectstart=function(){return false;}} /* disable text selection for IE < 9 */ 16870 _iframe.call(mCSB_container,false); /* enable scrollbar dragging over iframes by disabling their events */ 16871 _stop($this); 16872 draggable=$(this); 16873 var offset=draggable.offset(),y=_coordinates(e)[0]-offset.top,x=_coordinates(e)[1]-offset.left, 16874 h=draggable.height()+offset.top,w=draggable.width()+offset.left; 16875 if(y<h && y>0 && x<w && x>0){ 16876 dragY=y; 16877 dragX=x; 16878 } 16879 _onDragClasses(draggable,"active",o.autoExpandScrollbar); 16880 }).bind("touchmove."+namespace,function(e){ 16881 e.stopImmediatePropagation(); 16882 e.preventDefault(); 16883 var offset=draggable.offset(),y=_coordinates(e)[0]-offset.top,x=_coordinates(e)[1]-offset.left; 16884 _drag(dragY,dragX,y,x); 16885 }); 16886 $(document).add(eds).bind("mousemove."+namespace+" pointermove."+namespace+" MSPointerMove."+namespace,function(e){ 16887 if(draggable){ 16888 var offset=draggable.offset(),y=_coordinates(e)[0]-offset.top,x=_coordinates(e)[1]-offset.left; 16889 if(dragY===y && dragX===x){return;} /* has it really moved? */ 16890 _drag(dragY,dragX,y,x); 16891 } 16892 }).add(rds).bind("mouseup."+namespace+" touchend."+namespace+" pointerup."+namespace+" MSPointerUp."+namespace,function(e){ 16893 if(draggable){ 16894 _onDragClasses(draggable,"active",o.autoExpandScrollbar); 16895 draggable=null; 16896 } 16897 touchActive=false; 16898 if(oldIE){document.onselectstart=null;} /* enable text selection for IE < 9 */ 16899 _iframe.call(mCSB_container,true); /* enable iframes events */ 16900 }); 16901 function _drag(dragY,dragX,y,x){ 16902 mCSB_container[0].idleTimer=o.scrollInertia<233 ? 250 : 0; 16903 if(draggable.attr("id")===draggerId[1]){ 16904 var dir="x",to=((draggable[0].offsetLeft-dragX)+x)*d.scrollRatio.x; 16905 }else{ 16906 var dir="y",to=((draggable[0].offsetTop-dragY)+y)*d.scrollRatio.y; 16907 } 16908 _scrollTo($this,to.toString(),{dir:dir,drag:true}); 16909 } 16910 }, 16911 /* -------------------- */ 16912 16913 16914 /* 16915 TOUCH SWIPE EVENTS 16916 scrolls content via touch swipe 16917 Emulates the native touch-swipe scrolling with momentum found in iOS, Android and WP devices 16918 */ 16919 _contentDraggable=function(){ 16920 var $this=$(this),d=$this.data(pluginPfx),o=d.opt, 16921 namespace=pluginPfx+"_"+d.idx, 16922 mCustomScrollBox=$("#mCSB_"+d.idx), 16923 mCSB_container=$("#mCSB_"+d.idx+"_container"), 16924 mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")], 16925 draggable,dragY,dragX,touchStartY,touchStartX,touchMoveY=[],touchMoveX=[],startTime,runningTime,endTime,distance,speed,amount,
16926 durA=0,durB,overwrite=o.axis==="yx" ? "none" : "all",touchIntent=[],touchDrag,docDrag, 16927 iframe=mCSB_container.find("iframe"), 16928 events=[ 16929 "touchstart."+namespace+" pointerdown."+namespace+" MSPointerDown."+namespace, //start 16930 "touchmove."+namespace+" pointermove."+namespace+" MSPointerMove."+namespace, //move 16931 "touchend."+namespace+" pointerup."+namespace+" MSPointerUp."+namespace //end 16932 ], 16933 touchAction=document.body.style.touchAction!==undefined && document.body.style.touchAction!==""; 16934 mCSB_container.bind(events[0],function(e){ 16935 _onTouchstart(e); 16936 }).bind(events[1],function(e){ 16937 _onTouchmove(e); 16938 }); 16939 mCustomScrollBox.bind(events[0],function(e){ 16940 _onTouchstart2(e); 16941 }).bind(events[2],function(e){ 16942 _onTouchend(e); 16943 }); 16944 if(iframe.length){ 16945 iframe.each(function(){ 16946 $(this).bind("load",function(){ 16947 /* bind events on accessible iframes */ 16948 if(_canAccessIFrame(this)){ 16949 $(this.contentDocument || this.contentWindow.document).bind(events[0],function(e){ 16950 _onTouchstart(e); 16951 _onTouchstart2(e); 16952 }).bind(events[1],function(e){ 16953 _onTouchmove(e); 16954 }).bind(events[2],function(e){ 16955 _onTouchend(e); 16956 }); 16957 } 16958 }); 16959 }); 16960 } 16961 function _onTouchstart(e){ 16962 if(!_pointerTouch(e) || touchActive || _coordinates(e)[2]){touchable=0; return;} 16963 16964 if($(e.target).closest('.bx_ui_slider_track').length){ 16965 touchOffCustom = true; 16966 touchable=0; return; 16967 } else { 16968 touchOffCustom = false; 16969 } 16970 16971 touchable=1; touchDrag=0; docDrag=0; draggable=1; 16972 $this.removeClass("mCS_touch_action"); 16973 var offset=mCSB_container.offset(); 16974 dragY=_coordinates(e)[0]-offset.top; 16975 dragX=_coordinates(e)[1]-offset.left; 16976 touchIntent=[_coordinates(e)[0],_coordinates(e)[1]]; 16977 16978 } 16979 function _onTouchmove(e){ 16980 if(!_pointerTouch(e) || touchActive || _coordinates(e)[2]){return;} 16981 16982 if(touchOffCustom){ 16983 touchable=0; return; 16984 } 16985 16986 if(!o.documentTouchScroll){e.preventDefault();} 16987 e.stopImmediatePropagation(); 16988 if(docDrag && !touchDrag){return;} 16989 if(draggable){ 16990 runningTime=_getTime(); 16991 var offset=mCustomScrollBox.offset(),y=_coordinates(e)[0]-offset.top,x=_coordinates(e)[1]-offset.left, 16992 easing="mcsLinearOut"; 16993 touchMoveY.push(y); 16994 touchMoveX.push(x); 16995 touchIntent[2]=Math.abs(_coordinates(e)[0]-touchIntent[0]); touchIntent[3]=Math.abs(_coordinates(e)[1]-touchIntent[1]); 16996 if(d.overflowed[0]){ 16997 var limit=mCSB_dragger[0].parent().height()-mCSB_dragger[0].height(), 16998 prevent=((dragY-y)>0 && (y-dragY)>-(limit*d.scrollRatio.y) && (touchIntent[3]*2<touchIntent[2] || o.axis==="yx")); 16999 } 17000 if(d.overflowed[1]){ 17001 var limitX=mCSB_dragger[1].parent().width()-mCSB_dragger[1].width(), 17002 preventX=((dragX-x)>0 && (x-dragX)>-(limitX*d.scrollRatio.x) && (touchIntent[2]*2<touchIntent[3] || o.axis==="yx")); 17003 } 17004 if(prevent || preventX){ /* prevent native document scrolling */ 17005 if(!touchAction){e.preventDefault();} 17006 touchDrag=1; 17007 }else{ 17008 docDrag=1; 17009 $this.addClass("mCS_touch_action"); 17010 } 17011 if(touchAction){e.preventDefault();} 17012 amount=o.axis==="yx" ? [(dragY-y),(dragX-x)] : o.axis==="x" ? [null,(dragX-x)] : [(dragY-y),null]; 17013 mCSB_container[0].idleTimer=250; 17014 if(d.overflowed[0]){_drag(amount[0],durA,easing,"y","all",true);} 17015 if(d.overflowed[1]){_drag(amount[1],durA,easing,"x",overwrite,true);} 17016 } 17017 } 17018 function _onTouchstart2(e){ 17019 if(!_pointerTouch(e) || touchActive || _coordinates(e)[2]){touchable=0; return;} 17020 17021 if($(e.target).closest('.bx_ui_slider_track').length){ 17022 touchOffCustom = true; 17023 touchable=0; return; 17024 } else { 17025 touchOffCustom = false; 17026 } 17027 17028 touchable=1; 17029 e.stopImmediatePropagation(); 17030 _stop($this); 17031 startTime=_getTime(); 17032 var offset=mCustomScrollBox.offset(); 17033 touchStartY=_coordinates(e)[0]-offset.top; 17034 touchStartX=_coordinates(e)[1]-offset.left; 17035 touchMoveY=[]; touchMoveX=[]; 17036 } 17037 function _onTouchend(e){ 17038 if(!_pointerTouch(e) || touchActive || _coordinates(e)[2]){return;} 17039 17040 if($(e.target).closest('.bx_ui_slider_track').length){ 17041 touchOffCustom = false;
17042 touchable=0; return; 17043 }
vendor: 13,509 bytes, lines 17044-17387
17044 17045 draggable=0; 17046 e.stopImmediatePropagation(); 17047 touchDrag=0; docDrag=0; 17048 endTime=_getTime(); 17049 var offset=mCustomScrollBox.offset(),y=_coordinates(e)[0]-offset.top,x=_coordinates(e)[1]-offset.left; 17050 if((endTime-runningTime)>30){return;} 17051 speed=1000/(endTime-startTime); 17052 var easing="mcsEaseOut",slow=speed<2.5, 17053 diff=slow ? [touchMoveY[touchMoveY.length-2],touchMoveX[touchMoveX.length-2]] : [0,0]; 17054 distance=slow ? [(y-diff[0]),(x-diff[1])] : [y-touchStartY,x-touchStartX]; 17055 var absDistance=[Math.abs(distance[0]),Math.abs(distance[1])]; 17056 speed=slow ? [Math.abs(distance[0]/4),Math.abs(distance[1]/4)] : [speed,speed]; 17057 var a=[ 17058 Math.abs(mCSB_container[0].offsetTop)-(distance[0]*_m((absDistance[0]/speed[0]),speed[0])), 17059 Math.abs(mCSB_container[0].offsetLeft)-(distance[1]*_m((absDistance[1]/speed[1]),speed[1])) 17060 ]; 17061 amount=o.axis==="yx" ? [a[0],a[1]] : o.axis==="x" ? [null,a[1]] : [a[0],null]; 17062 durB=[(absDistance[0]*4)+o.scrollInertia,(absDistance[1]*4)+o.scrollInertia]; 17063 var md=parseInt(o.contentTouchScroll) || 0; /* absolute minimum distance required */ 17064 amount[0]=absDistance[0]>md ? amount[0] : 0; 17065 amount[1]=absDistance[1]>md ? amount[1] : 0; 17066 if(d.overflowed[0]){_drag(amount[0],durB[0],easing,"y",overwrite,false);} 17067 if(d.overflowed[1]){_drag(amount[1],durB[1],easing,"x",overwrite,false);} 17068 } 17069 function _m(ds,s){ 17070 var r=[s*1.5,s*2,s/1.5,s/2]; 17071 if(ds>90){ 17072 return s>4 ? r[0] : r[3]; 17073 }else if(ds>60){ 17074 return s>3 ? r[3] : r[2]; 17075 }else if(ds>30){ 17076 return s>8 ? r[1] : s>6 ? r[0] : s>4 ? s : r[2]; 17077 }else{ 17078 return s>8 ? s : r[3]; 17079 } 17080 } 17081 function _drag(amount,dur,easing,dir,overwrite,drag){ 17082 if(!amount){return;} 17083 _scrollTo($this,amount.toString(),{dur:dur,scrollEasing:easing,dir:dir,overwrite:overwrite,drag:drag}); 17084 } 17085 }, 17086 /* -------------------- */ 17087 17088 17089 /* 17090 SELECT TEXT EVENTS 17091 scrolls content when text is selected 17092 */ 17093 _selectable=function(){ 17094 var $this=$(this),d=$this.data(pluginPfx),o=d.opt,seq=d.sequential, 17095 namespace=pluginPfx+"_"+d.idx, 17096 mCSB_container=$("#mCSB_"+d.idx+"_container"), 17097 wrapper=mCSB_container.parent(), 17098 action; 17099 mCSB_container.bind("mousedown."+namespace,function(e){ 17100 if(touchable){return;} 17101 if(!action){action=1; touchActive=true;} 17102 }).add(document).bind("mousemove."+namespace,function(e){ 17103 if(!touchable && action && _sel()){ 17104 var offset=mCSB_container.offset(), 17105 y=_coordinates(e)[0]-offset.top+mCSB_container[0].offsetTop,x=_coordinates(e)[1]-offset.left+mCSB_container[0].offsetLeft; 17106 if(y>0 && y<wrapper.height() && x>0 && x<wrapper.width()){ 17107 if(seq.step){_seq("off",null,"stepped");} 17108 }else{ 17109 if(o.axis!=="x" && d.overflowed[0]){ 17110 if(y<0){ 17111 _seq("on",38); 17112 }else if(y>wrapper.height()){ 17113 _seq("on",40); 17114 } 17115 } 17116 if(o.axis!=="y" && d.overflowed[1]){ 17117 if(x<0){ 17118 _seq("on",37); 17119 }else if(x>wrapper.width()){ 17120 _seq("on",39); 17121 } 17122 } 17123 } 17124 } 17125 }).bind("mouseup."+namespace+" dragend."+namespace,function(e){ 17126 if(touchable){return;} 17127 if(action){action=0; _seq("off",null);} 17128 touchActive=false; 17129 }); 17130 function _sel(){ 17131 return window.getSelection ? window.getSelection().toString() : 17132 document.selection && document.selection.type!="Control" ? document.selection.createRange().text : 0; 17133 } 17134 function _seq(a,c,s){ 17135 seq.type=s && action ? "stepped" : "stepless"; 17136 seq.scrollAmount=10; 17137 _sequentialScroll($this,a,c,"mcsLinearOut",s ? 60 : null); 17138 } 17139 }, 17140 /* -------------------- */ 17141 17142 17143 /* 17144 MOUSE WHEEL EVENT 17145 scrolls content via mouse-wheel 17146 via mouse-wheel plugin (https://github.com/brandonaaron/jquery-mousewheel) 17147 */ 17148 _mousewheel=function(){ 17149 if(!$(this).data(pluginPfx)){return;} /* Check if the scrollbar is ready to use mousewheel events (issue: #185) */ 17150 var $this=$(this),d=$this.data(pluginPfx),o=d.opt, 17151 namespace=pluginPfx+"_"+d.idx, 17152 mCustomScrollBox=$("#mCSB_"+d.idx), 17153 mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")], 17154 iframe=$("#mCSB_"+d.idx+"_container").find("iframe"); 17155 if(iframe.length){ 17156 iframe.each(function(){ 17157 $(this).bind("load",function(){ 17158 /* bind events on accessible iframes */ 17159 if(_canAccessIFrame(this)){ 17160 $(this.contentDocument || this.contentWindow.document).bind("mousewheel."+namespace,function(e,delta){ 17161 _onMousewheel(e,delta); 17162 }); 17163 } 17164 }); 17165 }); 17166 } 17167 mCustomScrollBox.bind("mousewheel."+namespace,function(e,delta){ 17168 _onMousewheel(e,delta); 17169 }); 17170 function _onMousewheel(e,delta){ 17171 _stop($this); 17172 if(_disableMousewheel($this,e.target)){return;} /* disables mouse-wheel when hovering specific elements */ 17173 var deltaFactor=o.mouseWheel.deltaFactor!=="auto" ? parseInt(o.mouseWheel.deltaFactor) : (oldIE && e.deltaFactor<100) ? 100 : e.deltaFactor || 100, 17174 dur=o.scrollInertia; 17175 if(o.axis==="x" || o.mouseWheel.axis==="x"){ 17176 var dir="x", 17177 px=[Math.round(deltaFactor*d.scrollRatio.x),parseInt(o.mouseWheel.scrollAmount)], 17178 amount=o.mouseWheel.scrollAmount!=="auto" ? px[1] : px[0]>=mCustomScrollBox.width() ? mCustomScrollBox.width()*0.9 : px[0], 17179 contentPos=Math.abs($("#mCSB_"+d.idx+"_container")[0].offsetLeft), 17180 draggerPos=mCSB_dragger[1][0].offsetLeft, 17181 limit=mCSB_dragger[1].parent().width()-mCSB_dragger[1].width(), 17182 dlt=o.mouseWheel.axis==="y" ? (e.deltaY || delta) : e.deltaX; 17183 }else{ 17184 var dir="y", 17185 px=[Math.round(deltaFactor*d.scrollRatio.y),parseInt(o.mouseWheel.scrollAmount)], 17186 amount=o.mouseWheel.scrollAmount!=="auto" ? px[1] : px[0]>=mCustomScrollBox.height() ? mCustomScrollBox.height()*0.9 : px[0], 17187 contentPos=Math.abs($("#mCSB_"+d.idx+"_container")[0].offsetTop), 17188 draggerPos=mCSB_dragger[0][0].offsetTop, 17189 limit=mCSB_dragger[0].parent().height()-mCSB_dragger[0].height(), 17190 dlt=e.deltaY || delta; 17191 } 17192 if((dir==="y" && !d.overflowed[0]) || (dir==="x" && !d.overflowed[1])){return;} 17193 if(o.mouseWheel.invert || e.webkitDirectionInvertedFromDevice){dlt=-dlt;} 17194 if(o.mouseWheel.normalizeDelta){dlt=dlt<0 ? -1 : 1;} 17195 if((dlt>0 && draggerPos!==0) || (dlt<0 && draggerPos!==limit) || o.mouseWheel.preventDefault){ 17196 e.stopImmediatePropagation(); 17197 e.preventDefault(); 17198 } 17199 if(e.deltaFactor<5 && !o.mouseWheel.normalizeDelta){ 17200 //very low deltaFactor values mean some kind of delta acceleration (e.g. osx trackpad), so adjusting scrolling accordingly 17201 amount=e.deltaFactor; dur=17; 17202 } 17203 _scrollTo($this,(contentPos-(dlt*amount)).toString(),{dir:dir,dur:dur}); 17204 } 17205 }, 17206 /* -------------------- */ 17207 17208 17209 /* checks if iframe can be accessed */ 17210 _canAccessIFrameCache=new Object(), 17211 _canAccessIFrame=function(iframe){ 17212 var result=false,cacheKey=false,html=null; 17213 if(iframe===undefined){ 17214 cacheKey="#empty"; 17215 }else if($(iframe).attr("id")!==undefined){ 17216 cacheKey=$(iframe).attr("id"); 17217 } 17218 if(cacheKey!==false && _canAccessIFrameCache[cacheKey]!==undefined){ 17219 return _canAccessIFrameCache[cacheKey]; 17220 } 17221 if(!iframe){ 17222 try{ 17223 var doc=top.document; 17224 html=doc.body.innerHTML; 17225 }catch(err){/* do nothing */} 17226 result=(html!==null); 17227 }else{ 17228 try{ 17229 var doc=iframe.contentDocument || iframe.contentWindow.document; 17230 html=doc.body.innerHTML; 17231 }catch(err){/* do nothing */} 17232 result=(html!==null); 17233 } 17234 if(cacheKey!==false){_canAccessIFrameCache[cacheKey]=result;} 17235 return result; 17236 }, 17237 /* -------------------- */ 17238 17239 17240 /* switches iframe's pointer-events property (drag, mousewheel etc. over cross-domain iframes) */ 17241 _iframe=function(evt){ 17242 var el=this.find("iframe"); 17243 if(!el.length){return;} /* check if content contains iframes */ 17244 var val=!evt ? "none" : "auto"; 17245 el.css("pointer-events",val); /* for IE11, iframe's display property should not be "block" */ 17246 }, 17247 /* -------------------- */ 17248 17249 17250 /* disables mouse-wheel when hovering specific elements like select, datalist etc. */ 17251 _disableMousewheel=function(el,target){ 17252 var tag=target.nodeName.toLowerCase(), 17253 tags=el.data(pluginPfx).opt.mouseWheel.disableOver, 17254 /* elements that require focus */ 17255 focusTags=["select","textarea"]; 17256 return $.inArray(tag,tags) > -1 && !($.inArray(tag,focusTags) > -1 && !$(target).is(":focus")); 17257 }, 17258 /* -------------------- */ 17259 17260 17261 /* 17262 DRAGGER RAIL CLICK EVENT 17263 scrolls content via dragger rail 17264 */ 17265 _draggerRail=function(){ 17266 var $this=$(this),d=$this.data(pluginPfx), 17267 namespace=pluginPfx+"_"+d.idx, 17268 mCSB_container=$("#mCSB_"+d.idx+"_container"), 17269 wrapper=mCSB_container.parent(), 17270 mCSB_draggerContainer=$(".mCSB_"+d.idx+"_scrollbar ."+classes[12]), 17271 clickable; 17272 mCSB_draggerContainer.bind("mousedown."+namespace+" touchstart."+namespace+" pointerdown."+namespace+" MSPointerDown."+namespace,function(e){ 17273 touchActive=true; 17274 if(!$(e.target).hasClass("mCSB_dragger")){clickable=1;} 17275 }).bind("touchend."+namespace+" pointerup."+namespace+" MSPointerUp."+namespace,function(e){ 17276 touchActive=false; 17277 }).bind("click."+namespace,function(e){ 17278 if(!clickable){return;} 17279 clickable=0; 17280 if($(e.target).hasClass(classes[12]) || $(e.target).hasClass("mCSB_draggerRail")){ 17281 _stop($this); 17282 var el=$(this),mCSB_dragger=el.find(".mCSB_dragger"); 17283 if(el.parent(".mCSB_scrollTools_horizontal").length>0){ 17284 if(!d.overflowed[1]){return;} 17285 var dir="x", 17286 clickDir=e.pageX>mCSB_dragger.offset().left ? -1 : 1, 17287 to=Math.abs(mCSB_container[0].offsetLeft)-(clickDir*(wrapper.width()*0.9)); 17288 }else{ 17289 if(!d.overflowed[0]){return;} 17290 var dir="y", 17291 clickDir=e.pageY>mCSB_dragger.offset().top ? -1 : 1, 17292 to=Math.abs(mCSB_container[0].offsetTop)-(clickDir*(wrapper.height()*0.9)); 17293 } 17294 _scrollTo($this,to.toString(),{dir:dir,scrollEasing:"mcsEaseInOut"}); 17295 } 17296 }); 17297 }, 17298 /* -------------------- */ 17299 17300 17301 /* 17302 FOCUS EVENT 17303 scrolls content via element focus (e.g. clicking an input, pressing TAB key etc.) 17304 */ 17305 _focus=function(){ 17306 var $this=$(this),d=$this.data(pluginPfx),o=d.opt, 17307 namespace=pluginPfx+"_"+d.idx, 17308 mCSB_container=$("#mCSB_"+d.idx+"_container"), 17309 wrapper=mCSB_container.parent(); 17310 mCSB_container.bind("focusin."+namespace,function(e){ 17311 var el=$(document.activeElement), 17312 nested=mCSB_container.find(".mCustomScrollBox").length, 17313 dur=0; 17314 if(!el.is(o.advanced.autoScrollOnFocus)){return;} 17315 _stop($this); 17316 clearTimeout($this[0]._focusTimeout); 17317 $this[0]._focusTimer=nested ? (dur+17)*nested : 0; 17318 $this[0]._focusTimeout=setTimeout(function(){ 17319 var to=[_childPos(el)[0],_childPos(el)[1]], 17320 contentPos=[mCSB_container[0].offsetTop,mCSB_container[0].offsetLeft], 17321 isVisible=[ 17322 (contentPos[0]+to[0]>=0 && contentPos[0]+to[0]<wrapper.height()-el.outerHeight(false)), 17323 (contentPos[1]+to[1]>=0 && contentPos[0]+to[1]<wrapper.width()-el.outerWidth(false)) 17324 ], 17325 overwrite=(o.axis==="yx" && !isVisible[0] && !isVisible[1]) ? "none" : "all"; 17326 if(o.axis!=="x" && !isVisible[0]){ 17327 _scrollTo($this,to[0].toString(),{dir:"y",scrollEasing:"mcsEaseInOut",overwrite:overwrite,dur:dur}); 17328 } 17329 if(o.axis!=="y" && !isVisible[1]){ 17330 _scrollTo($this,to[1].toString(),{dir:"x",scrollEasing:"mcsEaseInOut",overwrite:overwrite,dur:dur}); 17331 } 17332 },$this[0]._focusTimer); 17333 }); 17334 }, 17335 /* -------------------- */ 17336 17337 17338 /* sets content wrapper scrollTop/scrollLeft always to 0 */ 17339 _wrapperScroll=function(){ 17340 var $this=$(this),d=$this.data(pluginPfx), 17341 namespace=pluginPfx+"_"+d.idx, 17342 wrapper=$("#mCSB_"+d.idx+"_container").parent(); 17343 wrapper.bind("scroll."+namespace,function(e){ 17344 if(wrapper.scrollTop()!==0 || wrapper.scrollLeft()!==0){ 17345 $(".mCSB_"+d.idx+"_scrollbar").css("visibility","hidden"); /* hide scrollbar(s) */ 17346 } 17347 }); 17348 }, 17349 /* -------------------- */ 17350 17351 17352 /* 17353 BUTTONS EVENTS 17354 scrolls content via up, down, left and right buttons 17355 */ 17356 _buttons=function(){ 17357 var $this=$(this),d=$this.data(pluginPfx),o=d.opt,seq=d.sequential, 17358 namespace=pluginPfx+"_"+d.idx, 17359 sel=".mCSB_"+d.idx+"_scrollbar", 17360 btn=$(sel+">a"); 17361 btn.bind("contextmenu."+namespace,function(e){ 17362 e.preventDefault(); //prevent right click 17363 }).bind("mousedown."+namespace+" touchstart."+namespace+" pointerdown."+namespace+" MSPointerDown."+namespace+" mouseup."+namespace+" touchend."+namespace+" pointerup."+namespace+" MSPointerUp."+namespace+" mouseout."+namespace+" pointerout."+namespace+" MSPointerOut."+namespace+" click."+namespace,function(e){ 17364 e.preventDefault(); 17365 if(!_mouseBtnLeft(e)){return;} /* left mouse button only */ 17366 var btnClass=$(this).attr("class"); 17367 seq.type=o.scrollButtons.scrollType; 17368 switch(e.type){ 17369 case "mousedown": case "touchstart": case "pointerdown": case "MSPointerDown": 17370 if(seq.type==="stepped"){return;} 17371 touchActive=true; 17372 d.tweenRunning=false; 17373 _seq("on",btnClass); 17374 break; 17375 case "mouseup": case "touchend": case "pointerup": case "MSPointerUp": 17376 case "mouseout": case "pointerout": case "MSPointerOut": 17377 if(seq.type==="stepped"){return;} 17378 touchActive=false; 17379 if(seq.dir){_seq("off",btnClass);} 17380 break; 17381 case "click": 17382 if(seq.type!=="stepped" || d.tweenRunning){return;} 17383 _seq("on",btnClass); 17384 break; 17385 } 17386 function _seq(a,c){ 17387
17387//seq.scrollAmount=o.scrollButtons.scrollAmount; 17388 _sequentialScroll($this,a,c); 17389 } 17390 }); 17391 }, 17392 /* -------------------- */ 17393 17394 17395 /* 17396 KEYBOARD EVENTS 17397 scrolls content via keyboard 17398 Keys: up arrow, down arrow, left arrow, right arrow, PgUp, PgDn, Home, End 17399 */ 17400 _keyboard=function(){ 17401 var $this=$(this),d=$this.data(pluginPfx),o=d.opt,seq=d.sequential, 17402 namespace=pluginPfx+"_"+d.idx, 17403 mCustomScrollBox=$("#mCSB_"+d.idx), 17404 mCSB_container=$("#mCSB_"+d.idx+"_container"), 17405 wrapper=mCSB_container.parent(), 17406 editables="input,textarea,select,datalist,keygen,[contenteditable='true']", 17407 iframe=mCSB_container.find("iframe"),
vendor: 23,820 bytes, lines 17408-18062
17408 events=["blur."+namespace+" keydown."+namespace+" keyup."+namespace]; 17409 if(iframe.length){ 17410 iframe.each(function(){ 17411 $(this).bind("load",function(){ 17412 /* bind events on accessible iframes */ 17413 if(_canAccessIFrame(this)){ 17414 $(this.contentDocument || this.contentWindow.document).bind(events[0],function(e){ 17415 _onKeyboard(e); 17416 }); 17417 } 17418 }); 17419 }); 17420 } 17421 mCustomScrollBox.attr("tabindex","0").bind(events[0],function(e){ 17422 _onKeyboard(e); 17423 }); 17424 function _onKeyboard(e){ 17425 switch(e.type){ 17426 case "blur": 17427 if(d.tweenRunning && seq.dir){_seq("off",null);} 17428 break; 17429 case "keydown": case "keyup": 17430 var code=e.keyCode ? e.keyCode : e.which,action="on"; 17431 if((o.axis!=="x" && (code===38 || code===40)) || (o.axis!=="y" && (code===37 || code===39))){ 17432 /* up (38), down (40), left (37), right (39) arrows */ 17433 if(((code===38 || code===40) && !d.overflowed[0]) || ((code===37 || code===39) && !d.overflowed[1])){return;} 17434 if(e.type==="keyup"){action="off";} 17435 if(!$(document.activeElement).is(editables)){ 17436 e.preventDefault(); 17437 e.stopImmediatePropagation(); 17438 _seq(action,code); 17439 } 17440 }else if(code===33 || code===34){ 17441 /* PgUp (33), PgDn (34) */ 17442 if(d.overflowed[0] || d.overflowed[1]){ 17443 e.preventDefault(); 17444 e.stopImmediatePropagation(); 17445 } 17446 if(e.type==="keyup"){ 17447 _stop($this); 17448 var keyboardDir=code===34 ? -1 : 1; 17449 if(o.axis==="x" || (o.axis==="yx" && d.overflowed[1] && !d.overflowed[0])){ 17450 var dir="x",to=Math.abs(mCSB_container[0].offsetLeft)-(keyboardDir*(wrapper.width()*0.9)); 17451 }else{ 17452 var dir="y",to=Math.abs(mCSB_container[0].offsetTop)-(keyboardDir*(wrapper.height()*0.9)); 17453 } 17454 _scrollTo($this,to.toString(),{dir:dir,scrollEasing:"mcsEaseInOut"}); 17455 } 17456 }else if(code===35 || code===36){ 17457 /* End (35), Home (36) */ 17458 if(!$(document.activeElement).is(editables)){ 17459 if(d.overflowed[0] || d.overflowed[1]){ 17460 e.preventDefault(); 17461 e.stopImmediatePropagation(); 17462 } 17463 if(e.type==="keyup"){ 17464 if(o.axis==="x" || (o.axis==="yx" && d.overflowed[1] && !d.overflowed[0])){ 17465 var dir="x",to=code===35 ? Math.abs(wrapper.width()-mCSB_container.outerWidth(false)) : 0; 17466 }else{ 17467 var dir="y",to=code===35 ? Math.abs(wrapper.height()-mCSB_container.outerHeight(false)) : 0; 17468 } 17469 _scrollTo($this,to.toString(),{dir:dir,scrollEasing:"mcsEaseInOut"}); 17470 } 17471 } 17472 } 17473 break; 17474 } 17475 function _seq(a,c){ 17476 seq.type=o.keyboard.scrollType; 17477 seq.scrollAmount=o.keyboard.scrollAmount; 17478 if(seq.type==="stepped" && d.tweenRunning){return;} 17479 _sequentialScroll($this,a,c); 17480 } 17481 } 17482 }, 17483 /* -------------------- */ 17484 17485 17486 /* scrolls content sequentially (used when scrolling via buttons, keyboard arrows etc.) */ 17487 _sequentialScroll=function(el,action,trigger,e,s){ 17488 var d=el.data(pluginPfx),o=d.opt,seq=d.sequential, 17489 mCSB_container=$("#mCSB_"+d.idx+"_container"), 17490 once=seq.type==="stepped" ? true : false, 17491 steplessSpeed=o.scrollInertia < 26 ? 26 : o.scrollInertia, /* 26/1.5=17 */ 17492 steppedSpeed=o.scrollInertia < 1 ? 17 : o.scrollInertia; 17493 switch(action){ 17494 case "on": 17495 seq.dir=[ 17496 (trigger===classes[16] || trigger===classes[15] || trigger===39 || trigger===37 ? "x" : "y"), 17497 (trigger===classes[13] || trigger===classes[15] || trigger===38 || trigger===37 ? -1 : 1) 17498 ]; 17499 _stop(el); 17500 if(_isNumeric(trigger) && seq.type==="stepped"){return;} 17501 _on(once); 17502 break; 17503 case "off": 17504 _off(); 17505 if(once || (d.tweenRunning && seq.dir)){ 17506 _on(true); 17507 } 17508 break; 17509 } 17510 17511 /* starts sequence */ 17512 function _on(once){ 17513 if(o.snapAmount){seq.scrollAmount=!(o.snapAmount instanceof Array) ? o.snapAmount : seq.dir[0]==="x" ? o.snapAmount[1] : o.snapAmount[0];} /* scrolling snapping */ 17514 var c=seq.type!=="stepped", /* continuous scrolling */ 17515 t=s ? s : !once ? 1000/60 : c ? steplessSpeed/1.5 : steppedSpeed, /* timer */ 17516 m=!once ? 2.5 : c ? 7.5 : 40, /* multiplier */ 17517 contentPos=[Math.abs(mCSB_container[0].offsetTop),Math.abs(mCSB_container[0].offsetLeft)], 17518 ratio=[d.scrollRatio.y>10 ? 10 : d.scrollRatio.y,d.scrollRatio.x>10 ? 10 : d.scrollRatio.x], 17519 amount=seq.dir[0]==="x" ? contentPos[1]+(seq.dir[1]*(ratio[1]*m)) : contentPos[0]+(seq.dir[1]*(ratio[0]*m)), 17520 px=seq.dir[0]==="x" ? contentPos[1]+(seq.dir[1]*parseInt(seq.scrollAmount)) : contentPos[0]+(seq.dir[1]*parseInt(seq.scrollAmount)), 17521 to=seq.scrollAmount!=="auto" ? px : amount, 17522 easing=e ? e : !once ? "mcsLinear" : c ? "mcsLinearOut" : "mcsEaseInOut", 17523 onComplete=!once ? false : true; 17524 if(once && t<17){ 17525 to=seq.dir[0]==="x" ? contentPos[1] : contentPos[0]; 17526 } 17527 17528 _scrollTo(el,to.toString(),{dir:seq.dir[0],scrollEasing:easing,dur:t,onComplete:onComplete}); 17529 if(once){ 17530 seq.dir=false; 17531 return; 17532 } 17533 clearTimeout(seq.step); 17534 seq.step=setTimeout(function(){ 17535 _on(); 17536 },t); 17537 } 17538 /* stops sequence */ 17539 function _off(){ 17540 clearTimeout(seq.step); 17541 _delete(seq,"step"); 17542 _stop(el); 17543 } 17544 }, 17545 /* -------------------- */ 17546 17547 17548 /* returns a yx array from value */ 17549 _arr=function(val){ 17550 var o=$(this).data(pluginPfx).opt,vals=[]; 17551 if(typeof val==="function"){val=val();} /* check if the value is a single anonymous function */ 17552 /* check if value is object or array, its length and create an array with yx values */ 17553 if(!(val instanceof Array)){ /* object value (e.g. {y:"100",x:"100"}, 100 etc.) */ 17554 vals[0]=val.y ? val.y : val.x || o.axis==="x" ? null : val; 17555 vals[1]=val.x ? val.x : val.y || o.axis==="y" ? null : val; 17556 }else{ /* array value (e.g. [100,100]) */ 17557 vals=val.length>1 ? [val[0],val[1]] : o.axis==="x" ? [null,val[0]] : [val[0],null]; 17558 } 17559 /* check if array values are anonymous functions */ 17560 if(typeof vals[0]==="function"){vals[0]=vals[0]();} 17561 if(typeof vals[1]==="function"){vals[1]=vals[1]();} 17562 return vals; 17563 }, 17564 /* -------------------- */ 17565 17566 17567 /* translates values (e.g. "top", 100, "100px", "#id") to actual scroll-to positions */ 17568 _to=function(val,dir){ 17569 if(val==null || typeof val=="undefined"){return;} 17570 var $this=$(this),d=$this.data(pluginPfx),o=d.opt, 17571 mCSB_container=$("#mCSB_"+d.idx+"_container"), 17572 wrapper=mCSB_container.parent(), 17573 t=typeof val; 17574 if(!dir){dir=o.axis==="x" ? "x" : "y";} 17575 var contentLength=dir==="x" ? mCSB_container.outerWidth(false)-wrapper.width() : mCSB_container.outerHeight(false)-wrapper.height(), 17576 contentPos=dir==="x" ? mCSB_container[0].offsetLeft : mCSB_container[0].offsetTop, 17577 cssProp=dir==="x" ? "left" : "top"; 17578 switch(t){ 17579 case "function": /* this currently is not used. Consider removing it */ 17580 return val(); 17581 break; 17582 case "object": /* js/jquery object */ 17583 var obj=val.jquery ? val : $(val); 17584 if(!obj.length){return;} 17585 return dir==="x" ? _childPos(obj)[1] : _childPos(obj)[0]; 17586 break; 17587 case "string": case "number": 17588 if(_isNumeric(val)){ /* numeric value */ 17589 return Math.abs(val); 17590 }else if(val.indexOf("%")!==-1){ /* percentage value */ 17591 return Math.abs(contentLength*parseInt(val)/100); 17592 }else if(val.indexOf("-=")!==-1){ /* decrease value */ 17593 return Math.abs(contentPos-parseInt(val.split("-=")[1])); 17594 }else if(val.indexOf("+=")!==-1){ /* inrease value */ 17595 var p=(contentPos+parseInt(val.split("+=")[1])); 17596 return p>=0 ? 0 : Math.abs(p); 17597 }else if(val.indexOf("px")!==-1 && _isNumeric(val.split("px")[0])){ /* pixels string value (e.g. "100px") */ 17598 return Math.abs(val.split("px")[0]); 17599 }else{ 17600 if(val==="top" || val==="left"){ /* special strings */ 17601 return 0; 17602 }else if(val==="bottom"){ 17603 return Math.abs(wrapper.height()-mCSB_container.outerHeight(false)); 17604 }else if(val==="right"){ 17605 return Math.abs(wrapper.width()-mCSB_container.outerWidth(false)); 17606 }else if(val==="first" || val==="last"){ 17607 var obj=mCSB_container.find(":"+val); 17608 return dir==="x" ? _childPos(obj)[1] : _childPos(obj)[0]; 17609 }else{ 17610 if($(val).length){ /* jquery selector */ 17611 return dir==="x" ? _childPos($(val))[1] : _childPos($(val))[0]; 17612 }else{ /* other values (e.g. "100em") */ 17613 mCSB_container.css(cssProp,val); 17614 methods.update.call(null,$this[0]); 17615 return; 17616 } 17617 } 17618 } 17619 break; 17620 } 17621 }, 17622 /* -------------------- */ 17623 17624 17625 /* calls the update method automatically */ 17626 _autoUpdate=function(rem){ 17627 var $this=$(this),d=$this.data(pluginPfx),o=d.opt, 17628 mCSB_container=$("#mCSB_"+d.idx+"_container"); 17629 if(rem){ 17630 /* 17631 removes autoUpdate timer 17632 usage: _autoUpdate.call(this,"remove"); 17633 */ 17634 clearTimeout(mCSB_container[0].autoUpdate); 17635 _delete(mCSB_container[0],"autoUpdate"); 17636 return; 17637 } 17638 upd(); 17639 function upd(){ 17640 clearTimeout(mCSB_container[0].autoUpdate); 17641 if($this.parents("html").length===0){ 17642 /* check element in dom tree */ 17643 $this=null; 17644 return; 17645 } 17646 mCSB_container[0].autoUpdate=setTimeout(function(){ 17647 /* update on specific selector(s) length and size change */ 17648 if(o.advanced.updateOnSelectorChange){ 17649 d.poll.change.n=sizesSum(); 17650 if(d.poll.change.n!==d.poll.change.o){ 17651 d.poll.change.o=d.poll.change.n; 17652 doUpd(3); 17653 return; 17654 } 17655 } 17656 /* update on main element and scrollbar size changes */ 17657 if(o.advanced.updateOnContentResize){ 17658 d.poll.size.n=$this[0].scrollHeight+$this[0].scrollWidth+mCSB_container[0].offsetHeight+$this[0].offsetHeight+$this[0].offsetWidth; 17659 if(d.poll.size.n!==d.poll.size.o){ 17660 d.poll.size.o=d.poll.size.n; 17661 doUpd(1); 17662 return; 17663 } 17664 } 17665 /* update on image load */ 17666 if(o.advanced.updateOnImageLoad){ 17667 if(!(o.advanced.updateOnImageLoad==="auto" && o.axis==="y")){ //by default, it doesn't run on vertical content 17668 d.poll.img.n=mCSB_container.find("img").length; 17669 if(d.poll.img.n!==d.poll.img.o){ 17670 d.poll.img.o=d.poll.img.n; 17671 mCSB_container.find("img").each(function(){ 17672 imgLoader(this); 17673 }); 17674 return; 17675 } 17676 } 17677 } 17678 if(o.advanced.updateOnSelectorChange || o.advanced.updateOnContentResize || o.advanced.updateOnImageLoad){upd();} 17679 },o.advanced.autoUpdateTimeout); 17680 } 17681 /* a tiny image loader */ 17682 function imgLoader(el){ 17683 if($(el).hasClass(classes[2])){doUpd(); return;} 17684 var img=new Image(); 17685 function createDelegate(contextObject,delegateMethod){ 17686 return function(){return delegateMethod.apply(contextObject,arguments);} 17687 } 17688 function imgOnLoad(){ 17689 this.onload=null; 17690 $(el).addClass(classes[2]); 17691 doUpd(2); 17692 } 17693 img.onload=createDelegate(img,imgOnLoad); 17694 img.src=el.src; 17695 } 17696 /* returns the total height and width sum of all elements matching the selector */ 17697 function sizesSum(){ 17698 if(o.advanced.updateOnSelectorChange===true){o.advanced.updateOnSelectorChange="*";} 17699 var total=0,sel=mCSB_container.find(o.advanced.updateOnSelectorChange); 17700 if(o.advanced.updateOnSelectorChange && sel.length>0){sel.each(function(){total+=this.offsetHeight+this.offsetWidth;});} 17701 return total; 17702 } 17703 /* calls the update method */ 17704 function doUpd(cb){ 17705 clearTimeout(mCSB_container[0].autoUpdate); 17706 methods.update.call(null,$this[0],cb); 17707 } 17708 }, 17709 /* -------------------- */ 17710 17711 17712 /* snaps scrolling to a multiple of a pixels number */ 17713 _snapAmount=function(to,amount,offset){ 17714 return (Math.round(to/amount)*amount-offset); 17715 }, 17716 /* -------------------- */ 17717 17718 17719 /* stops content and scrollbar animations */ 17720 _stop=function(el){ 17721 var d=el.data(pluginPfx), 17722 sel=$("#mCSB_"+d.idx+"_container,#mCSB_"+d.idx+"_container_wrapper,#mCSB_"+d.idx+"_dragger_vertical,#mCSB_"+d.idx+"_dragger_horizontal"); 17723 sel.each(function(){ 17724 _stopTween.call(this); 17725 }); 17726 }, 17727 /* -------------------- */ 17728 17729 17730 /* 17731 ANIMATES CONTENT 17732 This is where the actual scrolling happens 17733 */ 17734 _scrollTo=function(el,to,options){ 17735 var d=el.data(pluginPfx),o=d.opt, 17736 defaults={ 17737 trigger:"internal", 17738 dir:"y", 17739 scrollEasing:"mcsEaseOut", 17740 drag:false, 17741 dur:o.scrollInertia, 17742 overwrite:"all", 17743 callbacks:true, 17744 onStart:true, 17745 onUpdate:true, 17746 onComplete:true 17747 }, 17748 options=$.extend(defaults,options), 17749 dur=[options.dur,(options.drag ? 0 : options.dur)], 17750 mCustomScrollBox=$("#mCSB_"+d.idx), 17751 mCSB_container=$("#mCSB_"+d.idx+"_container"), 17752 wrapper=mCSB_container.parent(), 17753 totalScrollOffsets=o.callbacks.onTotalScrollOffset ? _arr.call(el,o.callbacks.onTotalScrollOffset) : [0,0], 17754 totalScrollBackOffsets=o.callbacks.onTotalScrollBackOffset ? _arr.call(el,o.callbacks.onTotalScrollBackOffset) : [0,0]; 17755 d.trigger=options.trigger; 17756 if(wrapper.scrollTop()!==0 || wrapper.scrollLeft()!==0){ /* always reset scrollTop/Left */ 17757 $(".mCSB_"+d.idx+"_scrollbar").css("visibility","visible"); 17758 wrapper.scrollTop(0).scrollLeft(0); 17759 } 17760 if(to==="_resetY" && !d.contentReset.y){ 17761 /* callbacks: onOverflowYNone */ 17762 if(_cb("onOverflowYNone")){o.callbacks.onOverflowYNone.call(el[0]);} 17763 d.contentReset.y=1; 17764 } 17765 if(to==="_resetX" && !d.contentReset.x){ 17766 /* callbacks: onOverflowXNone */ 17767 if(_cb("onOverflowXNone")){o.callbacks.onOverflowXNone.call(el[0]);} 17768 d.contentReset.x=1; 17769 } 17770 if(to==="_resetY" || to==="_resetX"){return;} 17771 if((d.contentReset.y || !el[0].mcs) && d.overflowed[0]){ 17772 /* callbacks: onOverflowY */ 17773 if(_cb("onOverflowY")){o.callbacks.onOverflowY.call(el[0]);} 17774 d.contentReset.x=null; 17775 } 17776 if((d.contentReset.x || !el[0].mcs) && d.overflowed[1]){ 17777 /* callbacks: onOverflowX */ 17778 if(_cb("onOverflowX")){o.callbacks.onOverflowX.call(el[0]);} 17779 d.contentReset.x=null; 17780 } 17781 if(o.snapAmount){ /* scrolling snapping */ 17782 var snapAmount=!(o.snapAmount instanceof Array) ? o.snapAmount : options.dir==="x" ? o.snapAmount[1] : o.snapAmount[0]; 17783 to=_snapAmount(to,snapAmount,o.snapOffset); 17784 } 17785 switch(options.dir){ 17786 case "x": 17787 var mCSB_dragger=$("#mCSB_"+d.idx+"_dragger_horizontal"), 17788 property="left", 17789 contentPos=mCSB_container[0].offsetLeft, 17790 limit=[ 17791 mCustomScrollBox.width()-mCSB_container.outerWidth(false), 17792 mCSB_dragger.parent().width()-mCSB_dragger.width() 17793 ], 17794 scrollTo=[to,to===0 ? 0 : (to/d.scrollRatio.x)], 17795 tso=totalScrollOffsets[1], 17796 tsbo=totalScrollBackOffsets[1], 17797 totalScrollOffset=tso>0 ? tso/d.scrollRatio.x : 0, 17798 totalScrollBackOffset=tsbo>0 ? tsbo/d.scrollRatio.x : 0; 17799 break; 17800 case "y": 17801 var mCSB_dragger=$("#mCSB_"+d.idx+"_dragger_vertical"), 17802 property="top", 17803 contentPos=mCSB_container[0].offsetTop, 17804 limit=[ 17805 mCustomScrollBox.height()-mCSB_container.outerHeight(false), 17806 mCSB_dragger.parent().height()-mCSB_dragger.height() 17807 ], 17808 scrollTo=[to,to===0 ? 0 : (to/d.scrollRatio.y)], 17809 tso=totalScrollOffsets[0], 17810 tsbo=totalScrollBackOffsets[0], 17811 totalScrollOffset=tso>0 ? tso/d.scrollRatio.y : 0, 17812 totalScrollBackOffset=tsbo>0 ? tsbo/d.scrollRatio.y : 0; 17813 break; 17814 } 17815 if(scrollTo[1]<0 || (scrollTo[0]===0 && scrollTo[1]===0)){ 17816 scrollTo=[0,0]; 17817 }else if(scrollTo[1]>=limit[1]){ 17818 scrollTo=[limit[0],limit[1]]; 17819 }else{ 17820 scrollTo[0]=-scrollTo[0]; 17821 } 17822 if(!el[0].mcs){ 17823 _mcs(); /* init mcs object (once) to make it available before callbacks */ 17824 if(_cb("onInit")){o.callbacks.onInit.call(el[0]);} /* callbacks: onInit */ 17825 } 17826 clearTimeout(mCSB_container[0].onCompleteTimeout); 17827 17828 _tweenTo(mCSB_dragger[0],property,Math.round(scrollTo[1]),dur[1],options.scrollEasing); 17829 if(!d.tweenRunning && ((contentPos===0 && scrollTo[0]>=0) || (contentPos===limit[0] && scrollTo[0]<=limit[0]))){return;} 17830 _tweenTo(mCSB_container[0],property,Math.round(scrollTo[0]),dur[0],options.scrollEasing,options.overwrite,{ 17831 onStart:function(){ 17832 if(options.callbacks && options.onStart && !d.tweenRunning){ 17833 /* callbacks: onScrollStart */ 17834 if(_cb("onScrollStart")){_mcs(); o.callbacks.onScrollStart.call(el[0]);} 17835 d.tweenRunning=true; 17836 _onDragClasses(mCSB_dragger); 17837 d.cbOffsets=_cbOffsets(); 17838 } 17839 },onUpdate:function(){ 17840 if(options.callbacks && options.onUpdate){ 17841 /* callbacks: whileScrolling */ 17842 if(_cb("whileScrolling")){_mcs(); o.callbacks.whileScrolling.call(el[0]);} 17843 } 17844 },onComplete:function(){ 17845 if(options.callbacks && options.onComplete){ 17846 if(o.axis==="yx"){clearTimeout(mCSB_container[0].onCompleteTimeout);} 17847 var t=mCSB_container[0].idleTimer || 0; 17848 mCSB_container[0].onCompleteTimeout=setTimeout(function(){ 17849 /* callbacks: onScroll, onTotalScroll, onTotalScrollBack */ 17850 if(_cb("onScroll")){_mcs(); o.callbacks.onScroll.call(el[0]);} 17851 if(_cb("onTotalScroll") && scrollTo[1]>=limit[1]-totalScrollOffset && d.cbOffsets[0]){_mcs(); o.callbacks.onTotalScroll.call(el[0]);} 17852 if(_cb("onTotalScrollBack") && scrollTo[1]<=totalScrollBackOffset && d.cbOffsets[1]){_mcs(); o.callbacks.onTotalScrollBack.call(el[0]);} 17853 d.tweenRunning=false; 17854 mCSB_container[0].idleTimer=0; 17855 _onDragClasses(mCSB_dragger,"hide"); 17856 },t); 17857 } 17858 } 17859 }); 17860 /* checks if callback function exists */ 17861 function _cb(cb){ 17862 return d && o.callbacks[cb] && typeof o.callbacks[cb]==="function"; 17863 } 17864 /* checks whether callback offsets always trigger */ 17865 function _cbOffsets(){ 17866 return [o.callbacks.alwaysTriggerOffsets || contentPos>=limit[0]+tso,o.callbacks.alwaysTriggerOffsets || contentPos<=-tsbo]; 17867 } 17868 /* 17869 populates object with useful values for the user 17870 values: 17871 content: this.mcs.content 17872 content top position: this.mcs.top 17873 content left position: this.mcs.left 17874 dragger top position: this.mcs.draggerTop 17875 dragger left position: this.mcs.draggerLeft 17876 scrolling y percentage: this.mcs.topPct 17877 scrolling x percentage: this.mcs.leftPct 17878 scrolling direction: this.mcs.direction 17879 */ 17880 function _mcs(){ 17881 var cp=[mCSB_container[0].offsetTop,mCSB_container[0].offsetLeft], /* content position */ 17882 dp=[mCSB_dragger[0].offsetTop,mCSB_dragger[0].offsetLeft], /* dragger position */ 17883 cl=[mCSB_container.outerHeight(false),mCSB_container.outerWidth(false)], /* content length */ 17884 pl=[mCustomScrollBox.height(),mCustomScrollBox.width()]; /* content parent length */ 17885 el[0].mcs={ 17886 content:mCSB_container, /* original content wrapper as jquery object */ 17887 top:cp[0],left:cp[1],draggerTop:dp[0],draggerLeft:dp[1], 17888 topPct:Math.round((100*Math.abs(cp[0]))/(Math.abs(cl[0])-pl[0])),leftPct:Math.round((100*Math.abs(cp[1]))/(Math.abs(cl[1])-pl[1])), 17889 direction:options.dir 17890 }; 17891 /* 17892 this refers to the original element containing the scrollbar(s) 17893 usage: this.mcs.top, this.mcs.leftPct etc. 17894 */ 17895 } 17896 }, 17897 /* -------------------- */ 17898 17899 17900 /* 17901 CUSTOM JAVASCRIPT ANIMATION TWEEN 17902 Lighter and faster than jquery animate() and css transitions 17903 Animates top/left properties and includes easings 17904 */ 17905 _tweenTo=function(el,prop,to,duration,easing,overwrite,callbacks){ 17906 17907 if(el && !el._mTween){el._mTween={top:{},left:{}};} 17908 var callbacks=callbacks || {}, 17909 onStart=callbacks.onStart || function(){},onUpdate=callbacks.onUpdate || function(){},onComplete=callbacks.onComplete || function(){}, 17910 startTime=_getTime(),_delay,progress=0,from=el.offsetTop,elStyle=el.style,_request,tobj=el._mTween[prop]; 17911 if(prop==="left"){from=el.offsetLeft;} 17912 var diff=to-from; 17913 tobj.stop=0; 17914 if(overwrite!=="none"){_cancelTween();} 17915 _startTween(); 17916 function _step(){ 17917 if(tobj.stop){return;} 17918 if(!progress){onStart.call();} 17919 progress=_getTime()-startTime; 17920 _tween(); 17921 if(progress>=tobj.time){ 17922 tobj.time=(progress>tobj.time) ? progress+_delay-(progress-tobj.time) : progress+_delay-1; 17923 if(tobj.time<progress+1){tobj.time=progress+1;} 17924 } 17925 if(tobj.time<duration){tobj.id=_request(_step);}else{onComplete.call();} 17926 } 17927 function _tween(){ 17928 if(duration>0){ 17929 tobj.currVal=_ease(tobj.time,from,diff,duration,easing); 17930 elStyle[prop]=Math.round(tobj.currVal)+"px"; 17931 }else{ 17932 elStyle[prop]=to+"px"; 17933 } 17934 onUpdate.call(); 17935 } 17936 function _startTween(){ 17937 _delay=1000/60; 17938 tobj.time=progress+_delay; 17939 _request=(!window.requestAnimationFrame) ? function(f){_tween(); return setTimeout(f,0.01);} : window.requestAnimationFrame; 17940 tobj.id=_request(_step); 17941 } 17942 function _cancelTween(){ 17943 if(tobj.id==null){return;} 17944 if(!window.requestAnimationFrame){clearTimeout(tobj.id); 17945 }else{window.cancelAnimationFrame(tobj.id);} 17946 tobj.id=null; 17947 } 17948 function _ease(t,b,c,d,type){ 17949 switch(type){ 17950 case "linear": case "mcsLinear": 17951 return c*t/d + b; 17952 break; 17953 case "mcsLinearOut": 17954 t/=d; t--; return c * Math.sqrt(1 - t*t) + b; 17955 break; 17956 case "easeInOutSmooth": 17957 t/=d/2; 17958 if(t<1) return c/2*t*t + b; 17959 t--; 17960 return -c/2 * (t*(t-2) - 1) + b; 17961 break; 17962 case "easeInOutStrong": 17963 t/=d/2; 17964 if(t<1) return c/2 * Math.pow( 2, 10 * (t - 1) ) + b; 17965 t--; 17966 return c/2 * ( -Math.pow( 2, -10 * t) + 2 ) + b; 17967 break; 17968 case "easeInOut": case "mcsEaseInOut": 17969 t/=d/2; 17970 if(t<1) return c/2*t*t*t + b; 17971 t-=2; 17972 return c/2*(t*t*t + 2) + b; 17973 break; 17974 case "easeOutSmooth": 17975 t/=d; t--; 17976 return -c * (t*t*t*t - 1) + b; 17977 break; 17978 case "easeOutStrong": 17979 return c * ( -Math.pow( 2, -10 * t/d ) + 1 ) + b; 17980 break; 17981 case "easeOut": case "mcsEaseOut": default: 17982 var ts=(t/=d)*t,tc=ts*t; 17983 return b+c*(0.499999999999997*tc*ts + -2.5*ts*ts + 5.5*tc + -6.5*ts + 4*t); 17984 } 17985 } 17986 }, 17987 /* -------------------- */ 17988 17989 17990 /* returns current time */ 17991 _getTime=function(){ 17992 if(window.performance && window.performance.now){ 17993 return window.performance.now(); 17994 }else{ 17995 if(window.performance && window.performance.webkitNow){ 17996 return window.performance.webkitNow(); 17997 }else{ 17998 if(Date.now){return Date.now();}else{return new Date().getTime();} 17999 } 18000 } 18001 }, 18002 /* -------------------- */ 18003 18004 18005 /* stops a tween */ 18006 _stopTween=function(){ 18007 var el=this; 18008 if(!el._mTween){el._mTween={top:{},left:{}};} 18009 var props=["top","left"]; 18010 for(var i=0; i<props.length; i++){ 18011 var prop=props[i]; 18012 if(el._mTween[prop].id){ 18013 if(!window.requestAnimationFrame){clearTimeout(el._mTween[prop].id); 18014 }else{window.cancelAnimationFrame(el._mTween[prop].id);} 18015 el._mTween[prop].id=null; 18016 el._mTween[prop].stop=1; 18017 } 18018 } 18019 }, 18020 /* -------------------- */ 18021 18022 18023 /* deletes a property (avoiding the exception thrown by IE) */ 18024 _delete=function(c,m){ 18025 try{delete c[m];}catch(e){c[m]=null;} 18026 }, 18027 /* -------------------- */ 18028 18029 18030 /* detects left mouse button */ 18031 _mouseBtnLeft=function(e){ 18032 return !(e.which && e.which!==1); 18033 }, 18034 /* -------------------- */ 18035 18036 18037 /* detects if pointer type event is touch */ 18038 _pointerTouch=function(e){ 18039 var t=e.originalEvent.pointerType; 18040 return !(t && t!=="touch" && t!==2); 18041 }, 18042 /* -------------------- */ 18043 18044 18045 /* checks if value is numeric */ 18046 _isNumeric=function(val){ 18047 return !isNaN(parseFloat(val)) && isFinite(val); 18048 }, 18049 /* -------------------- */ 18050 18051 18052 /* returns element position according to content */ 18053 _childPos=function(el){ 18054 var p=el.parents(".mCSB_container"); 18055 return [el.offset().top-p.offset().top,el.offset().left-p.offset().left]; 18056 }, 18057 /* -------------------- */ 18058 18059 18060 /* checks if browser tab is hidden/inactive via Page Visibility API */ 18061 _isTabHidden=function(){ 18062 var prop=_getHiddenProp();
18063 if(!prop) return false; 18064 return document[prop]; 18065 function _getHiddenProp(){ 18066 var pfx=["webkit","moz","ms","o"]; 18067 if("hidden" in document) return "hidden"; //natively supported 18068 for(var i=0; i<pfx.length; i++){ //prefixed 18069 if((pfx[i]+"Hidden") in document) 18070 return pfx[i]+"Hidden"; 18071 } 18072 return null; //not supported 18073 } 18074 }; 18075 /* -------------------- */ 18076 18077 18078 18079 18080 18081 /* 18082 ---------------------------------------- 18083 PLUGIN SETUP 18084 ---------------------------------------- 18085 */ 18086 18087 /* plugin constructor functions */ 18088 $.fn[pluginNS]=function(method){ /* usage: $(selector).mCustomScrollbar(); */ 18089 if(methods[method]){ 18090 return methods[method].apply(this,Array.prototype.slice.call(arguments,1)); 18091 }else if(typeof method==="object" || !method){ 18092 return methods.init.apply(this,arguments); 18093 }else{ 18094 $.error("Method "+method+" does not exist"); 18095 } 18096 }; 18097 $[pluginNS]=function(method){ /* usage: $.mCustomScrollbar(); */ 18098 if(methods[method]){ 18099 return methods[method].apply(this,Array.prototype.slice.call(arguments,1)); 18100 }else if(typeof method==="object" || !method){ 18101 return methods.init.apply(this,arguments); 18102 }else{ 18103 $.error("Method "+method+" does not exist"); 18104 } 18105 }; 18106 18107 /* 18108 allow setting plugin default options. 18109 usage: $.mCustomScrollbar.defaults.scrollInertia=500; 18110 to apply any changed default options on default selectors (below), use inside document ready fn 18111 e.g.: $(document).ready(function(){ $.mCustomScrollbar.defaults.scrollInertia=500; }); 18112 */ 18113 $[pluginNS].defaults=defaults; 18114 18115 /* 18116 add window object (window.mCustomScrollbar) 18117 usage: if(window.mCustomScrollbar){console.log("custom scrollbar plugin loaded");} 18118 */ 18119 window[pluginNS]=true; 18120 18121 $(window).bind("load",function(){ 18122 18123 $(defaultSelector)[pluginNS](); /* add scrollbars automatically on default selector */ 18124 18125 /* extend jQuery expressions */ 18126 $.extend($.expr[":"],{ 18127 /* checks if element is within scrollable viewport */ 18128 mcsInView:$.expr[":"].mcsInView || function(el){ 18129 var $el=$(el),content=$el.parents(".mCSB_container"),wrapper,cPos; 18130 if(!content.length){return;} 18131 wrapper=content.parent(); 18132 cPos=[content[0].offsetTop,content[0].offsetLeft]; 18133 return cPos[0]+_childPos($el)[0]>=0 && cPos[0]+_childPos($el)[0]<wrapper.height()-$el.outerHeight(false) && 18134 cPos[1]+_childPos($el)[1]>=0 && cPos[1]+_childPos($el)[1]<wrapper.width()-$el.outerWidth(false); 18135 }, 18136 /* checks if element or part of element is in view of scrollable viewport */ 18137 mcsInSight:$.expr[":"].mcsInSight || function(el,i,m){ 18138 var $el=$(el),elD,content=$el.parents(".mCSB_container"),wrapperView,pos,wrapperViewPct, 18139 pctVals=m[3]==="exact" ? [[1,0],[1,0]] : [[0.9,0.1],[0.6,0.4]]; 18140 if(!content.length){return;} 18141 elD=[$el.outerHeight(false),$el.outerWidth(false)]; 18142 pos=[content[0].offsetTop+_childPos($el)[0],content[0].offsetLeft+_childPos($el)[1]]; 18143 wrapperView=[content.parent()[0].offsetHeight,content.parent()[0].offsetWidth]; 18144 wrapperViewPct=[elD[0]<wrapperView[0] ? pctVals[0] : pctVals[1],elD[1]<wrapperView[1] ? pctVals[0] : pctVals[1]]; 18145 return pos[0]-(wrapperView[0]*wrapperViewPct[0][0])<0 && pos[0]+elD[0]-(wrapperView[0]*wrapperViewPct[0][1])>=0 && 18146 pos[1]-(wrapperView[1]*wrapperViewPct[1][0])<0 && pos[1]+elD[1]-(wrapperView[1]*wrapperViewPct[1][1])>=0; 18147 }, 18148 /* checks if element is overflowed having visible scrollbar(s) */ 18149 mcsOverflow:$.expr[":"].mcsOverflow || function(el){ 18150 var d=$(el).data(pluginPfx); 18151 if(!d){return;} 18152 return d.overflowed[0] || d.overflowed[1]; 18153 } 18154 }); 18155 18156 }); 18157 18158}))})); 18159/* End */ 18160; 18161; /* Start:"a:4:{s:4:"full";s:59:"/local/templates/aspro_max/js/scrollTabs.js?165235571412271";s:6:"source";s:43:"/local/templates/aspro_max/js/scrollTabs.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 18162InitTabsScroll = function(){ 18163 $('.arrow_scroll:not(.arrow_scroll_init)').scrollTab(); 18164} 18165 18166ResizeScrollTabs = function() { 18167 var scrollTabs = $('.arrow_scroll_init'); 18168 18169 if(scrollTabs.length) { 18170 scrollTabs.each(function(i, scrollTab){ 18171 var _scrollTab = $(scrollTab); 18172 _scrollTab.data('scrollTabOptions').resize(); 18173 }); 18174 } 18175} 18176 18177$(document).ready(function(){ 18178 InitTabsScroll(); 18179}); 18180 18181$(window).on('resize', function(){ 18182 if(window.scrollTabsTimeout !== undefined) { 18183 clearTimeout(window.scrollTabsTimeout); 18184 } 18185 18186 window.scrollTabsTimeout = setTimeout( 18187 ResizeScrollTabs, 18188 20 18189 ); 18190}); 18191 18192$.fn.scrollTab = function( options ){ 18193 function _scrollTab(element, options) { 18194 var _scrollTab = $(element); 18195 var tabs_wrapper = _scrollTab.find(options.tabs_wrapper); 18196 if( tabs_wrapper === undefined || !tabs_wrapper.length ) 18197 return false;
18198 18199 var tabs = tabs_wrapper.find('> li'); 18200 if(!tabs.length) 18201 return false; 18202 18203 var arrow_svg = '<svg xmlns="http://www.w3.org/2000/svg" width="12" height="8" viewBox="0 0 12 8">'+ 18204 '<rect width="12" height="8" fill="#333" fill-opacity="0" />'+ 18205 '<path d="M1015.69,507.693a0.986,0.986,0,0,1-1.4,0l-4.31-4.316-4.3,4.316a0.993,0.993,0,0,1-1.4-1.408l4.99-5.009a1.026,1.026,0,0,1,1.43,0l4.99,5.009A0.993,0.993,0,0,1,1015.69,507.693Z" fill="#333" transform="translate(-1004 -501)"/>'+ 18206 '</svg>'; 18207 var arrows_wrapper = '<div class="arrows_wrapper">'+ 18208 '<div class="arrow arrow_left colored_theme_hover_text">'+arrow_svg+'</div>'+ 18209 '<div class="arrow arrow_right colored_theme_hover_text">'+arrow_svg+'</div>'+ 18210 '</div>'; 18211 18212 var arrows = $(arrows_wrapper).insertAfter(tabs_wrapper); 18213 var arrow_left = arrows.find('.arrow_left'); 18214 var arrow_right = arrows.find('.arrow_right'); 18215 18216 var thisOoptions = $.extend({}, options); 18217 18218 thisOoptions.scrollTab = _scrollTab; 18219 thisOoptions.wrapper = tabs_wrapper; 18220 thisOoptions.tabs = tabs; 18221 thisOoptions.arrows = {}; 18222 thisOoptions.arrows.wrapper = arrows; 18223 thisOoptions.arrows.arrow_left = arrow_left; 18224 thisOoptions.arrows.arrow_right = arrow_right; 18225 18226 if(thisOoptions.linked_tabs !== undefined && thisOoptions.linked_tabs.length && thisOoptions.linked_tabs.data('scrollTabOptions') !== undefined) { 18227 thisOoptions.linked_options = thisOoptions.linked_tabs.data('scrollTabOptions'); 18228 thisOoptions.linked_options.linked_options = thisOoptions; 18229 } 18230 18231 if(options.arrows_css) { 18232 thisOoptions.arrows.arrow_left.css(options.arrows_css); 18233 thisOoptions.arrows.arrow_right.css(options.arrows_css); 18234 } 18235 18236 thisOoptions.initTabs = function(){ 18237 thisOoptions.wrapperBounds = thisOoptions.wrapper[0].getBoundingClientRect(); 18238 thisOoptions.scrollBounds = thisOoptions.scrollTab[0].getBoundingClientRect(); 18239 elements = $(thisOoptions.tabs); 18240 if(elements.length) { 18241 thisOoptions.firstTabBound = elements[0].getBoundingClientRect().left; 18242 thisOoptions.lastTabBound = elements[ elements.length - 1 ].getBoundingClientRect().right; 18243 } 18244 thisOoptions.minTranslate = (thisOoptions.wrapperBounds.right < thisOoptions.lastTabBound ? thisOoptions.wrapperBounds.right - thisOoptions.lastTabBound - 2 : 0); 18245 thisOoptions.disabled = ( thisOoptions.lastTabBound - thisOoptions.wrapperBounds.left ) <= thisOoptions.scrollBounds.width; 18246 } 18247 18248 thisOoptions.wrapper.css({ 18249 'white-space': 'nowrap', 18250 'min-width': 'auto', 18251 'overflow': 'visible', 18252 'z-index': '1', 18253 }); 18254 thisOoptions.scrollTab.css({ 18255 'overflow': 'hidden', 18256 'position': 'relative', 18257 }); 18258 18259 thisOoptions.checkArrows = function(translate){ 18260 if(translate === undefined) { 18261 translate = thisOoptions.translate; 18262 } 18263 18264 if( thisOoptions.disabled ) { 18265 thisOoptions.arrows.arrow_left.addClass('disabled'); 18266 thisOoptions.arrows.arrow_right.addClass('disabled'); 18267 } else { 18268 if(translate >= thisOoptions.maxTranslate) { 18269 thisOoptions.arrows.arrow_left.addClass('disabled'); 18270 thisOoptions.arrows.arrow_right.removeClass('disabled'); 18271 } else if(translate <= thisOoptions.minTranslate) { 18272 thisOoptions.arrows.arrow_right.addClass('disabled'); 18273 thisOoptions.arrows.arrow_left.removeClass('disabled'); 18274 } else { 18275 thisOoptions.arrows.arrow_left.removeClass('disabled'); 18276 thisOoptions.arrows.arrow_right.removeClass('disabled'); 18277 } 18278 } 18279 18280 } 18281 18282 thisOoptions.directScroll = function(distance, delay, step){ 18283 if(delay === undefined) { 18284 delay = 5; 18285 } 18286 clearInterval(thisOoptions.timerMoveDirect); 18287 var newTranslate = thisOoptions.translate + distance; 18288 18289 if(newTranslate > thisOoptions.maxTranslate) { 18290 newTranslate = thisOoptions.maxTranslate; 18291 } else if(newTranslate < thisOoptions.minTranslate) { 18292 newTranslate = thisOoptions.minTranslate; 18293 } 18294 var tmpTranslate = thisOoptions.translate; 18295 thisOoptions.translate = newTranslate; 18296 18297 if(delay == 0) { 18298 thisOoptions.translate = newTranslate; 18299 thisOoptions.wrapper.css({ 18300 'transform': 'translateX('+thisOoptions.translate+'px)', 18301 }); 18302 } else { 18303 if(step === undefined) { 18304 step = 1; 18305 } 18306 thisOoptions.timerMoveDirect = setInterval( 18307 function() { 18308 thisOoptions.wrapper.css({ 18309 'transform': 'translateX('+tmpTranslate+'px)', 18310 }); 18311 18312 if( (distance < 0 && tmpTranslate <= newTranslate) || (distance > 0 && tmpTranslate >= newTranslate) ) { 18313 thisOoptions.initTabs(); 18314 clearInterval(thisOoptions.timerMoveDirect); 18315 } 18316 18317 if(tmpTranslate < newTranslate) { 18318 tmpTranslate += step; 18319 } else { 18320 tmpTranslate -= step; 18321 } 18322 }, 18323 delay 18324 ); 18325 } 18326 18327 thisOoptions.checkArrows(newTranslate); 18328 }; 18329
18330 thisOoptions.addArrowsEvents = function() { 18331 thisOoptions.arrows.arrow_right.on('mouseenter', function() { 18332 thisOoptions.arrows.arrow_left.removeClass('disabled'); 18333 thisOoptions.timerMoveLeft = setInterval( 18334 function() { 18335 if( thisOoptions.translate < thisOoptions.minTranslate ){ 18336 clearInterval(thisOoptions.timerMoveLeft); 18337 thisOoptions.arrows.arrow_right.addClass('disabled'); 18338 } else { 18339 thisOoptions.translate -= thisOoptions.translateSpeed; 18340 thisOoptions.wrapper.css({ 18341 'transform': 'translateX('+thisOoptions.translate+'px)', 18342 }); 18343 } 18344 }, 18345 10 18346 ); 18347 }); 18348 18349 thisOoptions.arrows.arrow_right.on('mouseleave', function() { 18350 clearInterval(thisOoptions.timerMoveLeft); 18351 }); 18352 18353 thisOoptions.arrows.arrow_right.on('click', function() { 18354 thisOoptions.directScroll(-thisOoptions.directTranslate); 18355 thisOoptions.arrows.arrow_left.removeClass('disabled'); 18356 }); 18357 18358 thisOoptions.arrows.arrow_right.on('touchend', function() { 18359 setTimeout(function() { 18360 clearInterval(thisOoptions.timerMoveLeft); 18361 }, 1); 18362 }); 18363 18364 thisOoptions.arrows.arrow_left.on('mouseenter', function() { 18365 thisOoptions.arrows.arrow_right.removeClass('disabled'); 18366 thisOoptions.timerMoveRight = setInterval( 18367 function() { 18368 if(thisOoptions.translate >= thisOoptions.maxTranslate){ 18369 clearInterval(thisOoptions.timerMoveRight); 18370 thisOoptions.arrows.arrow_left.addClass('disabled'); 18371 } else { 18372 thisOoptions.translate += thisOoptions.translateSpeed; 18373 thisOoptions.wrapper.css({ 18374 'transform': 'translateX('+thisOoptions.translate+'px)', 18375 }); 18376 } 18377 }, 18378 10 18379 ); 18380 }); 18381 18382 thisOoptions.arrows.arrow_left.on('mouseleave', function() { 18383 clearInterval(thisOoptions.timerMoveRight); 18384 }); 18385 18386 thisOoptions.arrows.arrow_left.on('click', function() { 18387 thisOoptions.directScroll(thisOoptions.directTranslate); 18388 thisOoptions.arrows.arrow_right.removeClass('disabled'); 18389 }); 18390 18391 thisOoptions.arrows.arrow_left.on('touchend', function() { 18392 setTimeout(function() { 18393 clearInterval(thisOoptions.timerMoveRight); 18394 }, 1); 18395 }); 18396 }; 18397 18398 thisOoptions.addTabsEvents = function() { 18399 thisOoptions.tabs.on('click', function() { 18400 var leftScrollBound = thisOoptions.scrollBounds.left; 18401 var rightScrollBound = thisOoptions.scrollBounds.right; 18402 18403 var tabBounds = this.getBoundingClientRect(); 18404 var leftTabScrollBound = tabBounds.left - thisOoptions.arrows.arrow_width; 18405 var rightTabScrollBound = tabBounds.right + thisOoptions.arrows.arrow_width; 18406 18407 if(leftTabScrollBound < leftScrollBound) { 18408 thisOoptions.directScroll(leftScrollBound - leftTabScrollBound, 1, 2); 18409 } else if(rightTabScrollBound > rightScrollBound) { 18410 thisOoptions.directScroll(rightScrollBound - rightTabScrollBound, 1, 2); 18411 } 18412 18413 thisOoptions.activeTab = $(this); 18414 18415 if(thisOoptions.linked_options !== undefined) { 18416 var this_index = $(this).index(); 18417 var linked_tab = $(thisOoptions.linked_options.tabs[this_index]); 18418 var linked_tabs = { 18419 leftScrollBound: thisOoptions.linked_options.scrollBounds.left, 18420 rightScrollBound: thisOoptions.linked_options.scrollBounds.right, 18421 tabBounds: linked_tab[0].getBoundingClientRect(), 18422 }; 18423 if(linked_tabs.tabBounds.left < linked_tabs.leftScrollBound) { 18424 thisOoptions.linked_options.directScroll(linked_tabs.leftScrollBound - linked_tabs.tabBounds.left + thisOoptions.linked_options.arrows.arrow_width + 1, 0); 18425 } else if(linked_tabs.tabBounds.right > linked_tabs.rightScrollBound) { 18426 thisOoptions.linked_options.directScroll(linked_tabs.rightScrollBound - linked_tabs.tabBounds.right - thisOoptions.linked_options.arrows.arrow_width - 1, 0); 18427 } 18428 18429 thisOoptions.linked_options.activeTab = linked_tab; 18430 } 18431 18432 18433 }); 18434 }; 18435 18436 thisOoptions.addWrapperEvents = function() { 18437 thisOoptions.wrapper.on('touchstart', function(event) { 18438 thisOoptions.touch.posPrev = event.originalEvent.changedTouches[0].pageX; 18439 clearInterval(thisOoptions.timerMoveRight); 18440 clearInterval(thisOoptions.timerMoveLeft); 18441 clearInterval(thisOoptions.timerMoveDirect); 18442 }); 18443 18444 thisOoptions.wrapper.on('touchmove', function(event) { 18445 thisOoptions.touch.posCurrent = event.originalEvent.changedTouches[0].pageX - thisOoptions.touch.posPrev; 18446 thisOoptions.directScroll(thisOoptions.touch.posCurrent, 0); 18447 thisOoptions.touch.posPrev = event.originalEvent.changedTouches[0].pageX; 18448 }); 18449 }; 18450 18451 thisOoptions.resize = function(){ 18452 if(thisOoptions.onBeforeResize && typeof(thisOoptions.onBeforeResize) == 'function') { 18453 thisOoptions.onBeforeResize(thisOoptions); 18454 } 18455 18456 if(thisOoptions.onResize && typeof(thisOoptions.onResize) == 'function') { 18457 thisOoptions.onResize(thisOoptions); 18458 } 18459 18460 if(thisOoptions.translate < thisOoptions.minTranslate) { 18461 thisOoptions.directScroll(thisOoptions.minTranslate - thisOoptions.translate); 18462 } else if(thisOoptions.translate > thisOoptions.maxTranslate) { 18463 thisOoptions.directScroll(thisOoptions.maxTranslate - thisOoptions.translate); 18464 } 18465 18466 if( thisOoptions.activeTab !== undefined && thisOoptions.activeTab.length ) { 18467 var activeTabBounds = thisOoptions.activeTab[0].getBoundingClientRect(); 18468 if(activeTabBounds.left < thisOoptions.scrollBounds.left) { 18469 thisOoptions.directScroll(thisOoptions.scrollBounds.left - activeTabBounds.left); 18470 } else if(activeTabBounds.right > thisOoptions.scrollBounds.right) { 18471 thisOoptions.directScroll(thisOoptions.scrollBounds.right - activeTabBounds.right); 18472 } 18473 } 18474 18475 thisOoptions.initTabs(); 18476 thisOoptions.checkArrows(); 18477 18478 if(thisOoptions.onAfterResize && typeof(thisOoptions.onAfterResize) == 'function') { 18479 thisOoptions.onAfterResize(thisOoptions); 18480 } 18481 }; 18482 18483 18484 _scrollTab.data('scrollTabOptions', thisOoptions ); 18485 _scrollTab.data('scrollTabOptions').addArrowsEvents(); 18486 _scrollTab.data('scrollTabOptions').addTabsEvents(); 18487 _scrollTab.data('scrollTabOptions').addWrapperEvents(); 18488 _scrollTab.addClass('arrow_scroll_init').addClass('swipeignore'); 18489 if (arrow_right !== undefined && arrow_right.length) { 18490 thisOoptions.arrows.arrow_width = thisOoptions.arrows.arrow_right[0].getBoundingClientRect().width; 18491 } 18492 _scrollTab.data('scrollTabOptions').resize(); 18493 delete thisOoptions; 18494 } 18495 18496 var options = $.extend({ 18497 translate: 1, 18498 translateSpeed: 2, 18499 directTranslate: 150, 18500 maxTranslate: 1, 18501 touch: {}, 18502 arrows_css: false, 18503 tabs_wrapper: '.nav-tabs', 18504 onResize: false, 18505 width_grow: 9, 18506 }, options); 18507 18508 var el = $(this); 18509 18510 if(el.hasClass('arrow_scroll_init')) 18511 return false;
18512 18513 el.each(function(i, scrollTab){ 18514 _scrollTab(scrollTab, options); 18515 }); 18516} 18517/* End */ 18518; 18519; /* Start:"a:4:{s:4:"full";s:54:"/local/templates/aspro_max/js/main.js?1754654048303004";s:6:"source";s:37:"/local/templates/aspro_max/js/main.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 18520var basketTimeoutSlide; 18521var resizeEventTimer; 18522 18523var clicked_tab = 0; 18524 18525if (typeof arAsproOptions === 'undefined') { 18526 var arAsproOptions = ({ 18527 "SITE_DIR" : '/' 18528 }); 18529 if($('body').data('site') !== undefined) 18530 arAsproOptions["SITE_DIR"] = $('body').data('site'); 18531} 18532 18533InitLazyLoad = function() {} 18534 18535$(document).on('change', '.uploader input[type=file]', function(){ 18536 if(!$(this).next().length || !$(this).next().hasClass('resetfile')){ 18537 $('<span class="resetfile"><svg xmlns="http://www.w3.org/2000/svg" width="11" height="11" viewBox="0 0 11 11"><path d="M1345.19,376.484l4.66,4.659a0.492,0.492,0,0,1,0,.707,0.5,0.5,0,0,1-.71,0l-4.66-4.659-4.65,4.659a0.5,0.5,0,0,1-.71,0,0.492,0.492,0,0,1,0-.707l4.66-4.659-4.66-4.659a0.492,0.492,0,0,1,0-.707,0.5,0.5,0,0,1,.71,0l4.65,4.659,4.66-4.659a0.5,0.5,0,0,1,.71,0,0.492,0.492,0,0,1,0,.707Z" transform="translate(-1339 -371)"/></svg></span>').insertAfter($(this)); 18538 } 18539}); 18540 18541$(document).on('click', '.uploader.files_add input[type=file] + .resetfile', function(){ 18542 var $input = $(this).prev(); 18543 $input.val(''); 18544 $.uniform.update($input); 18545 $(this).remove(); 18546}); 18547 18548$(document).on('click', '.top_block h3', function(){ 18549 if(window.matchMedia('(max-width: 550px)').matches) 18550 { 18551 var $this = $(this); 18552 var a = $this.siblings('a'); 18553 if(a.length) { 18554 a[0].click(); 18555 } 18556 } 18557}); 18558 18559$(document).on('click', '.bx-yandex-view-layout .yandex-map__mobile-opener', function(){ 18560 if($(this).hasClass('closer')) { 18561 closeYandexMap(); 18562 } else { 18563 openYandexMap(this); 18564 } 18565}); 18566 18567function openYandexMap(element) { 18568 var $this = $(element); 18569 if($this.hasClass('closer')) 18570 return; 18571 var currentMap = $this.parents('.bx-yandex-view-layout'); 18572 var mapId = currentMap.find('.bx-yandex-map').attr('id'); 18573 window.openedYandexMapFrame = mapId;
18574 var mapContainer = $('<div data-mapId="'+mapId+'"></div>'); 18575 if(!$('div[data-mapId='+mapId+']').length) { 18576 currentMap.after(mapContainer); 18577 } 18578 var yandexMapFrame = $('<div class="yandex-map__frame"></div>'); 18579 $('body .wrapper1').append(yandexMapFrame); 18580 currentMap.appendTo(yandexMapFrame); 18581 currentMap.find('.yandex-map__mobile-opener').addClass('closer'); 18582 window.map.container.fitToViewport(); 18583} 18584 18585function closeYandexMap() { 18586 var yandexMapFrame = $('.yandex-map__frame'); 18587 if(yandexMapFrame.length) { 18588 var currentMap = yandexMapFrame.find('.bx-yandex-view-layout'); 18589 var yandexMapContainer = $('div[data-mapId='+window.openedYandexMapFrame+']'); 18590 18591 currentMap.appendTo(yandexMapContainer); 18592 yandexMapFrame.remove(); 18593 currentMap.find('.yandex-map__mobile-opener').removeClass('closer'); 18594 if(window.map) { 18595 window.map.container.fitToViewport(); 18596 } 18597 } 18598} 18599 18600function throttle(f, t) { 18601 return function (args) { 18602 let previousCall = this.lastCall; 18603 this.lastCall = Date.now(); 18604 if (previousCall === undefined // function is being called for the first time 18605 || (this.lastCall - previousCall) > t) { // throttle time has elapsed 18606 f(args); 18607 } 18608 } 18609} 18610 18611function debounce(f, t) { 18612 return function (args) { 18613 let previousCall = this.lastCall; 18614 this.lastCall = Date.now(); 18615 if (previousCall && ((this.lastCall - previousCall) <= t)) { 18616 clearTimeout(this.lastCallTimer); 18617 } 18618 this.lastCallTimer = setTimeout(function() { 18619 f(args); 18620 }, t); 18621 } 18622} 18623 18624$(document).on('click', '.flex-control-nav.flex-control-js-click li a:not(.flex-active)', function(e) { 18625 var _this = $(this); 18626 var itemIndex = _this.data('index') ? _this.data('index') : _this.closest('li').index(); 18627 18628 var block = ''; 18629 var blocks = _this.closest('.items').find('> .item'); 18630 var activeBlock = _this.closest('.items').find('.item.active'); 18631 18632 var activeLi = _this.closest('.flex-control-nav').find('.flex-active'); 18633 18634 activeBlock.fadeOut(function(){ 18635 activeBlock.removeClass('active'); 18636 18637 block = blocks.eq(itemIndex); 18638 if (block.length) { 18639 block.fadeIn(function(){ 18640 block.addClass('active'); 18641 }) 18642 } 18643 18644 _this.addClass('flex-active'); 18645 activeLi.removeClass('flex-active'); 18646 }); 18647 18648 e.preventDefault(); 18649}); 18650 18651$(document).on('mouseenter', '#headerfixed .menu-item.wide_menu', function() { 18652 var _this = $(this); 18653 setTimeout( 18654 function() { 18655 var dropdownMenu = _this.find('.wrap > .dropdown-menu'); 18656 var menuOffset = dropdownMenu[0].getBoundingClientRect(); 18657 var headerOffset = document.getElementById('headerfixed').getBoundingClientRect(); 18658 var windowHeight = document.documentElement.clientHeight; 18659 18660 if(menuOffset.height + headerOffset.height > windowHeight) { 18661 var maxHeight = windowHeight - headerOffset.height; 18662 dropdownMenu.css({ 18663 'max-height': maxHeight, 18664 }); 18665 dropdownMenu.find('.menu-navigation').css({'max-height': maxHeight,}); 18666 dropdownMenu.find('.customScrollbar').css({'max-height': maxHeight,}); 18667 dropdownMenu.find('.menu-wrapper.menu-type-4 > li').css({'min-height': 'auto',}); 18668 } else { 18669 dropdownMenu.css({ 18670 'max-height': '', 18671 }); 18672 dropdownMenu.find('.menu-navigation').css({'max-height': '',}); 18673 dropdownMenu.find('.customScrollbar').css({'max-height': '',}); 18674 dropdownMenu.find('.menu-wrapper.menu-type-4 > li').css({'min-height': '',}); 18675 } 18676 }, 18677 300); 18678 18679 18680}); 18681 18682BX.addCustomEvent('onAjaxSuccess', function(data) { 18683 if(typeof(data) === 'object' && data !== null) { 18684 if(typeof(data.BASKET_REFRESHED) !== undefined && data.BASKET_REFRESHED === true) { 18685 var basketCounts = data.BASKET_DATA.BASKET_ITEMS_COUNT; 18686 reloadBasketCounters(basketCounts); 18687 } 18688 } 18689}); 18690 18691if(!funcDefined('parseUrlQuery')){ 18692 parseUrlQuery=function() { 18693 var data = {}; 18694 if(location.search) { 18695 var pair = (location.search.substr(1)).split('&'); 18696 for(var i = 0; i < pair.length; i ++) { 18697 var param = pair[i].split('='); 18698 data[param[0]] = param[1]; 18699 } 18700 } 18701 return data; 18702 } 18703} 18704 18705if(!funcDefined('setLocationSKU')){ 18706 function setLocationSKU(ID, urlParam){ 18707 if(urlParam === undefined) 18708 urlParam = 'oid'; 18709 18710 var objUrl = parseUrlQuery(), 18711 j = 0, 18712 prefix = '', 18713 query_string = '', 18714 url = ''; 18715 18716 objUrl[urlParam] = ID; 18717 18718 for(var i in objUrl) 18719 { 18720 if(parseInt(j)>0) 18721 prefix = '&'; 18722 query_string = query_string + prefix + i + '='+ objUrl[i]; 18723 j++; 18724 } 18725 if(query_string) 18726 { 18727 url = location.pathname+'?'+query_string + location.hash; 18728 } 18729 try { 18730 //history.pushState(null, null, url); 18731 history.replaceState(null, null, url); 18732 return; 18733 } catch(e) {} 18734 location.hash = '#' + url.substr(1); 18735 } 18736} 18737 18738if(!funcDefined('ShowOverlay')){ 18739 ShowOverlay = function(){ 18740 $('<div class="jqmOverlay waiting"></div>').appendTo('body'); 18741 } 18742} 18743 18744if(!funcDefined('HideOverlay')){ 18745 HideOverlay = function(){ 18746 $('.jqmOverlay').detach(); 18747 } 18748} 18749 18750if(!funcDefined('trimPrice')){ 18751 var trimPrice = function trimPrice(s){ 18752 s=s.split(" ").join(""); 18753 s=s.split(" ").join(""); 18754 return s; 18755 } 18756} 18757 18758if(!funcDefined('pauseYmObserver')){ 18759 // pause ya metrika webvisor MutationObserver callback (DOM indexer) 18760 // use before insert html with some animation 18761 pauseYmObserver = function(){ 18762 if( 18763 typeof MutationObserver === 'function' && 18764 typeof MutationObserver.observers === 'object' && 18765 typeof MutationObserver.observers.ym === 'object' 18766 ){ 18767 if(typeof pauseYmObserver.cnt === 'undefined'){ 18768 pauseYmObserver.cnt = 0; 18769 } 18770 18771 ++pauseYmObserver.cnt; 18772 18773 if(!MutationObserver.observers.ym.paused){ 18774 MutationObserver.observers.ym.pause(); 18775 } 18776 } 18777 } 18778} 18779 18780if(!funcDefined('resumeYmObserver')){ 18781 // resume ya metrika webvisor MutationObserver callback 18782 // use when animation finished 18783 resumeYmObserver = function(){ 18784 if( 18785 typeof MutationObserver === 'function' && 18786 typeof MutationObserver.observers === 'object' && 18787 typeof MutationObserver.observers.ym === 'object' 18788 ){ 18789 if(typeof pauseYmObserver.cnt === 'undefined'){ 18790 pauseYmObserver.cnt = 1; 18791 } 18792 18793 pauseYmObserver.cnt -= pauseYmObserver.cnt > 0 ? 1 : 0; 18794 18795 if(!pauseYmObserver.cnt && MutationObserver.observers.ym.paused){ 18796 MutationObserver.observers.ym.resume(); 18797 } 18798 } 18799 } 18800} 18801 18802if(!funcDefined('markProductRemoveBasket')){ 18803 var markProductRemoveBasket = function markProductRemoveBasket(id){ 18804 $('.in-cart[data-item='+id+']').hide(); 18805 $('.to-cart[data-item='+id+']').show(); 18806 $('.to-cart[data-item='+id+']').closest('.button_block').removeClass('wide'); 18807 $('.to-cart[data-item='+id+']').closest('.counter_wrapp').find('.counter_block').show(); 18808 $('.counter_block[data-item='+id+']').closest('.counter_block_inner').show(); 18809 $('.counter_block[data-item='+id+']').show(); 18810 $('.in-subscribe[data-item='+id+']').hide(); 18811 $('.to-subscribe[data-item='+id+']').show(); 18812 //$('.wish_item[data-item='+id+']').removeClass("added"); 18813 $('.wish_item[data-item='+id+'] .value:not(.added)').show(); 18814 $('.wish_item[data-item='+id+'] .value.added').hide(); 18815 $('.wish_item.to[data-item='+id+']').show(); 18816 $('.wish_item.in[data-item='+id+']').hide(); 18817 $('.banner_buttons.with_actions .wraps_buttons[data-id='+id+'] .basket_item_add').removeClass('added'); 18818 $('.banner_buttons.with_actions .wraps_buttons[data-id='+id+'] .wish_item_add').removeClass('added'); 18819 } 18820} 18821 18822if(!funcDefined('markProductAddBasket')){ 18823 var markProductAddBasket = function markProductAddBasket(id){ 18824 $('.to-cart[data-item='+id+']').hide(); 18825 $('.to-cart[data-item='+id+']').closest('.counter_wrapp').find('.counter_block_inner').hide(); 18826 $('.to-cart[data-item='+id+']').closest('.counter_wrapp').find('.counter_block').hide(); 18827 $('.to-cart[data-item='+id+']').closest('.button_block').addClass('wide'); 18828 $('.in-cart[data-item='+id+']').show(); 18829 //$('.wish_item[data-item='+id+']').removeClass("added"); 18830 $('.wish_item[data-item='+id+'] .value:not(.added)').show(); 18831 $('.wish_item[data-item='+id+'] .value.added').hide(); 18832 18833 $('.wish_item.to[data-item='+id+']').show(); 18834 $('.wish_item.in[data-item='+id+']').hide(); 18835 $('.banner_buttons.with_actions .wraps_buttons[data-id='+id+'] .basket_item_add').addClass('added'); 18836 } 18837} 18838 18839if(!funcDefined('markProductDelay')){
18840 var markProductDelay = function markProductDelay(id){ 18841 $('.in-cart[data-item='+id+']').hide(); 18842 $('.to-cart[data-item='+id+']').show(); 18843 $('.to-cart[data-item='+id+']').closest('.counter_wrapp').find('.counter_block_inner').show(); 18844 $('.to-cart[data-item='+id+']').closest('.counter_wrapp').find('.counter_block').show(); 18845 $('.to-cart[data-item='+id+']').closest('.button_block').removeClass('wide'); 18846 //$('.wish_item[data-item='+id+']').addClass("added"); 18847 $('.wish_item[data-item='+id+'] .value:not(.added)').hide(); 18848 $('.wish_item[data-item='+id+'] .value.added').css('display','block'); 18849 18850 $('.wish_item.to[data-item='+id+']').hide(); 18851 $('.wish_item.in[data-item='+id+']').show(); 18852 18853 $('.banner_buttons.with_actions .wraps_buttons[data-id='+id+'] .wish_item_add').addClass('added'); 18854 18855 } 18856} 18857 18858if(!funcDefined('markProductSubscribe')){ 18859 var markProductSubscribe = function markProductSubscribe(id){ 18860 $('.to-subscribe[data-item='+id+']').hide(); 18861 $('.in-subscribe[data-item='+id+']').css('display','block'); 18862 } 18863} 18864 18865if(!funcDefined('updateBottomIconsPanel')){ 18866 var updateBottomIconsPanel = function updateBottomIconsPanel(options){ 18867 if (options && $('.bottom-icons-panel').length) { 18868 var bBasketUpdate = ('READY' in options || 'BASKET_COUNT' in options); 18869 var basketCount = ('READY' in options ? options.READY.COUNT : 18870 ('BASKET_COUNT' in options ? options.BASKET_COUNT : 0)); 18871 var basketTitle = ('READY' in options ? options.READY.TITLE : 18872 ('BASKET_SUMM_TITLE' in options ? options.BASKET_SUMM_TITLE : '')); 18873 var bDelayUpdate = ('DELAY' in options || 'DELAY_COUNT' in options); 18874 var delayCount = ('DELAY' in options ? options.DELAY.COUNT : 18875 ('DELAY_COUNT' in options ? options.DELAY_COUNT : 0)); 18876 var delayTitle = ('DELAY' in options ? options.DELAY.TITLE : 18877 ('DELAY_SUMM_TITLE' in options ? options.DELAY_SUMM_TITLE : '')); 18878 var bCompareUpdate = ('COMPARE' in options); 18879 var compareCount = ('COMPARE' in options ? 18880 (typeof options.COMPARE === 'object' && 'COUNT' in options.COMPARE ? options.COMPARE.COUNT : Object.keys(options.COMPARE).length) : 0); 18881 18882 //basket 18883 if (bBasketUpdate) { 18884 if (+basketCount > 0) { 18885 $('.bottom-icons-panel .basket.counter-state').removeClass('counter-state--empty'); 18886 } else { 18887 $('.bottom-icons-panel .basket.counter-state').addClass('counter-state--empty'); 18888 } 18889 $('.bottom-icons-panel .basket .counter-state__content-item-value').text(basketCount); 18890 $('.bottom-icons-panel .basket').closest('.bottom-icons-panel__content-link').attr('title', $('<div/>').html(basketTitle).text()); 18891 } 18892 // 18893 18894 //delay 18895 if (bDelayUpdate && bBasketUpdate) { 18896 if (+delayCount > 0) { 18897 $('.bottom-icons-panel .delay.counter-state').removeClass('counter-state--empty'); 18898 } else { 18899 $('.bottom-icons-panel .delay.counter-state').addClass('counter-state--empty'); 18900 } 18901 $('.bottom-icons-panel .delay .counter-state__content-item-value').text(delayCount); 18902 $('.bottom-icons-panel .delay').closest('.bottom-icons-panel__content-link').attr('title', $('<div/>').html(delayTitle).text()); 18903 } 18904 // 18905 18906 //compare 18907 if (bCompareUpdate) { 18908 if (compareCount > 0) { 18909 $('.bottom-icons-panel .compare.counter-state').removeClass('counter-state--empty'); 18910 } else { 18911 $('.bottom-icons-panel .compare.counter-state').addClass('counter-state--empty'); 18912 } 18913 $('.bottom-icons-panel .compare .counter-state__content-item-value').text(compareCount); 18914 } 18915 } 18916 } 18917} 18918if(!funcDefined('basketFly')){ 18919 var basketFly = function basketFly(action,opener){ 18920 if(typeof obMaxPredictions === 'object'){ 18921 obMaxPredictions.updateAll(); 18922 } 18923 18924 /*if(arAsproOptions['PAGES']['BASKET_PAGE']) 18925 return;*/ 18926 $.post( arAsproOptions['SITE_DIR']+"ajax/basket_fly.php", "PARAMS="+$("#basket_form").find("input#fly_basket_params").val(), $.proxy(function( data ){ 18927 var small=$('.opener .basket_count').hasClass('small'), 18928 basket_count=$(data).find('.basket_count').find('.items div').text(); 18929 $('#basket_line .basket_fly').addClass('loaded').html(data); 18930 18931 if(action=="refresh") 18932 $('li[data-type=AnDelCanBuy]').trigger('click'); 18933 18934 18935 if(typeof(opener) == 'undefined' || $('#basket_line .basket_fly').hasClass('loading') ) 18936 { 18937 if(window.matchMedia('(min-width: 769px)').matches) 18938 { 18939 if(action=='open') 18940 { 18941 if(small) 18942 { 18943 if(arAsproOptions['THEME']['SHOW_BASKET_ONADDTOCART'] !== 'N') 18944 { 18945 $('.opener .basket_count').click(); 18946 } 18947 } 18948 else 18949 { 18950 $('.opener .basket_count').removeClass('small') 18951 $('.tabs_content.basket li[item-section="AnDelCanBuy"]').addClass('cur'); 18952 $('#basket_line ul.tabs li[item-section="AnDelCanBuy"]').addClass('cur'); 18953 18954 $("#basket_line .basket_fly .opener > div:eq(0)").addClass("cur"); 18955 } 18956 } 18957 else if(action=='wish') 18958 { 18959 if(small) 18960 { 18961 if(arAsproOptions['THEME']['SHOW_BASKET_ONADDTOCART'] !== 'N') 18962 $('.opener .wish_count').click(); 18963 } 18964 else 18965 { 18966 $('.opener .wish_count').removeClass('small') 18967 $('.tabs_content.basket li[item-section="DelDelCanBuy"]').addClass('cur'); 18968 $('#basket_line ul.tabs li[item-section="DelDelCanBuy"]').addClass('cur'); 18969 } 18970 } 18971 else 18972 { 18973 if(arAsproOptions['THEME']['SHOW_BASKET_ONADDTOCART'] !== 'N') 18974 { 18975 $('.opener .basket_count').click(); 18976 } 18977 } 18978 } 18979 } 18980 })); 18981 } 18982} 18983 18984if(!funcDefined('basketTop')){ 18985 var basketTop = function basketTop(action, hoverBlock){ 18986 if(action=='reload'){ 18987 if($('.basket_hover_block:hover').length) { 18988 hoverBlock = $('.basket_hover_block:hover'); 18989 } 18990 } 18991 18992 if(action=='open') 18993 { 18994 if(arAsproOptions['THEME']['SHOW_BASKET_ONADDTOCART'] !== 'N') 18995 { 18996 if($('#headerfixed').hasClass('fixed')) { 18997 hoverBlock = $('#headerfixed .basket_hover_block'); 18998 } else { 18999 hoverBlock = $('.top_basket .basket_hover_block'); 19000 } 19001 } 19002 } 19003 19004 if( hoverBlock === undefined ) { 19005 console.log('Undefined hoverBlock'); 19006 console.trace(); 19007 return false;
19008 } 19009 19010 if(action=='close'){ 19011 if(hoverBlock.length) { 19012 hoverBlock.css({ 19013 'opacity': '', 19014 'visibility': '' 19015 }); 19016 return true; 19017 } 19018 } 19019 19020 hoverBlock.removeClass('loaded'); 19021 var firstTime = hoverBlock.find('div').length ? 'false' : 'true'; 19022 var params = $("#basket_form").find("input#fly_basket_params").val(); 19023 var postData = { 19024 firstTime: firstTime, 19025 }; 19026 if(params !== undefined) { 19027 postData.PARAMS = params; 19028 } 19029 19030 $.post( arAsproOptions['SITE_DIR']+"ajax/showBasketHover.php", postData, $.proxy(function( data ){ 19031 var ob = BX.processHTML(data); 19032 19033 // inject 19034 $('#headerfixed .basket_hover_block, .top_basket .basket_hover_block').html(ob.HTML); 19035 BX.ajax.processScripts(ob.SCRIPT); 19036 19037 if(window.matchMedia('(min-width: 992px)').matches) 19038 { 19039 hoverBlock.addClass('loaded'); 19040 19041 if(action=='open') 19042 { 19043 if(arAsproOptions['THEME']['SHOW_BASKET_ONADDTOCART'] !== 'N') 19044 { 19045 if($('#headerfixed').hasClass('fixed')) { 19046 hoverBlock = $('#headerfixed .basket_hover_block'); 19047 } else { 19048 hoverBlock = $('.top_basket .basket_hover_block'); 19049 } 19050 19051 hoverBlock.css({ 19052 'opacity': '1', 19053 'visibility': 'visible' 19054 }); 19055 19056 setTimeout( 19057 function() { 19058 hoverBlock.css({ 19059 'opacity': '', 19060 'visibility': '' 19061 }); 19062 }, 19063 2000 19064 ); 19065 } 19066 } 19067 } 19068 19069 })); 19070 } 19071} 19072 19073//work with hash start 19074var lastHash = location.hash; 19075if("onhashchange" in window) 19076{ 19077 $(window).bind('hashchange', function() { 19078 var newHash = location.hash; 19079 if(newHash == '#delayed') 19080 { 19081 if($('#basket_toolbar_button_delayed').length) 19082 $('#basket_toolbar_button_delayed').trigger('click'); 19083 } 19084 else 19085 { 19086 if($('#basket_toolbar_button').length) 19087 $('#basket_toolbar_button').trigger('click'); 19088 } 19089 // Do something 19090 var diff = compareHash(newHash, lastHash); 19091 // alert("Difference between old and new hash:\n"+diff[0]+"\n\n"+diff[1]); 19092 //At the end of the func: 19093 lastHash = newHash; 19094 19095 if (lastHash) { 19096 if ('scrollRestoration' in history) { 19097 history.scrollRestoration = 'manual'; 19098 } 19099 if ($('.ordered-block .tabs .nav a[href="'+lastHash+'"]').length) { 19100 $('.ordered-block .tabs .nav a[href="'+lastHash+'"]').trigger('click'); 19101 var content_offset=$('.ordered-block .tabs').offset(); 19102 $('html, body').animate({scrollTop: content_offset.top-90}, 400); 19103 } 19104 } 19105 }); 19106 19107 function compareHash(current, previous){ 19108 for(var i=0, len=Math.min(current.length, previous.length); i<len; i++){ 19109 if(current.charAt(0) != previous.charAt(0)) break; 19110 } 19111 current = current.substr(i); 19112 previous = previous.substr(i); 19113 for(var i=0, len=Math.min(current.length, previous.length); i<len; i++){ 19114 if(current.substr(-1) != previous.substr(-1)) break; 19115 } 19116 19117 //Array: Current = New hash, previous = old hash 19118 return [current, previous]; 19119 } 19120} 19121 19122$(document).on('click', "#basket_toolbar_button", function(){ 19123 if(lastHash) 19124 location.hash = 'cart'; 19125}) 19126$(document).on('click', "#basket_toolbar_button_delayed", function(){ 19127 if(lastHash) 19128 location.hash = 'delayed'; 19129}) 19130if (location.hash) { 19131 var hash = location.hash 19132 19133 19134} 19135//work with hash end 19136 19137$(document).on('click', "#basket_line .basket_fly .opener > div.clicked", function(){ 19138 if(arAsproOptions['PAGES']['BASKET_PAGE']) 19139 return; 19140 function onOpenFlyBasket(_this){ 19141 $("#basket_line .basket_fly .tabs li").removeClass("cur"); 19142 $("#basket_line .basket_fly .tabs_content li").removeClass("cur"); 19143 // $("#basket_line .basket_fly .remove_all_basket").removeClass("cur"); 19144 if(!$(_this).is(".wish_count.empty")) 19145 { 19146 $("#basket_line .basket_fly .tabs_content li[item-section="+$(_this).data("type")+"]").addClass("cur"); 19147 $("#basket_line .basket_fly .tabs li:eq("+$(_this).index()+")").addClass("cur"); 19148 // $("#basket_line .basket_fly .remove_all_basket."+$(_this).data("type")).addClass("cur"); 19149 } 19150 else 19151 { 19152 $("#basket_line .basket_fly .tabs li").first().addClass("cur").siblings().removeClass("cur"); 19153 $("#basket_line .basket_fly .tabs_content li").first().addClass("cur").siblings().removeClass("cur"); 19154 // $("#basket_line .basket_fly .remove_all_basket").first().addClass("cur"); 19155 } 19156 $("#basket_line .basket_fly .opener > div.clicked").removeClass('small'); 19157 19158 $("#basket_line .basket_fly .opener > div").siblings().removeClass('cur'); 19159 $("#basket_line .basket_fly .opener > div:eq("+$(_this).index()+")").addClass('cur'); 19160 19161 } 19162 19163 if(window.matchMedia('(min-width: 769px)').matches) 19164 { 19165 var _this = this; 19166 19167 $(_this).siblings().removeClass('cur'); 19168 $(_this).addClass('cur'); 19169 19170 if(parseInt($("#basket_line .basket_fly").css("right")) < 0) 19171 { 19172 $("#basket_line .basket_fly").stop().addClass('loading').animate({"right": "0"}, 333, function(){ 19173 if($(_this).closest('.basket_fly.loaded').length) 19174 { 19175 onOpenFlyBasket(_this); 19176 } 19177 else 19178 { 19179 $.ajax({ 19180 url: arAsproOptions['SITE_DIR'] + 'ajax/basket_fly.php', 19181 type: 'post', 19182 success: function(html){ 19183 $('#basket_line .basket_fly').removeClass('loading').addClass('loaded').html(html); 19184 onOpenFlyBasket(_this); 19185 } 19186 }); 19187 } 19188 }); 19189 $('#basket_line .basket_fly').addClass('swiped'); 19190 } 19191 else if($(this).is(".wish_count:not(.empty)") && !$("#basket_line .basket_fly .basket_sort ul.tabs li.cur").is("[item-section=DelDelCanBuy]")) 19192 { 19193 $("#basket_line .basket_fly .tabs li").removeClass("cur"); 19194 $("#basket_line .basket_fly .tabs_content li").removeClass("cur"); 19195 // $("#basket_line .basket_fly .remove_all_basket").removeClass("cur"); 19196 $("#basket_line .basket_fly .tabs_content li[item-section="+$(this).data("type")+"]").addClass("cur"); 19197 $("#basket_line .basket_fly .tabs li:eq("+$(this).index()+")").first().addClass("cur"); 19198 // $("#basket_line .basket_fly .remove_all_basket."+$(this).data("type")).first().addClass("cur"); 19199 } 19200 else if($(this).is(".basket_count") && $("#basket_line .basket_fly .basket_sort ul.tabs li.cur").length && !$("#basket_line .basket_fly .basket_sort ul.tabs li.cur").is("[item-section=AnDelCanBuy]")) 19201 { 19202 $("#basket_line .basket_fly .tabs li").removeClass("cur"); 19203 $("#basket_line .basket_fly .tabs_content li").removeClass("cur"); 19204 // $("#basket_line .basket_fly .remove_all_basket").removeClass("cur"); 19205 $("#basket_line .basket_fly .tabs_content li:eq("+$(this).index()+")").addClass("cur"); 19206 $("#basket_line .basket_fly .tabs li:eq("+$(this).index()+")").first().addClass("cur"); 19207 // $("#basket_line .basket_fly .remove_all_basket."+$(this).data("type")).first().addClass("cur"); 19208 } 19209 else 19210 { 19211 $("#basket_line .basket_fly").stop().animate({"right": -$("#basket_line .basket_fly").outerWidth()}, 150); 19212 $("#basket_line .basket_fly .opener > div.clicked").addClass('small'); 19213 $('#basket_line .basket_fly').removeClass('swiped'); 19214 $("#basket_line .basket_fly .opener > div").removeClass("cur"); 19215 } 19216 } 19217}); 19218 19219if(!funcDefined("clearViewedProduct")){ 19220 function clearViewedProduct(){ 19221 try{ 19222 var siteID = arAsproOptions.SITE_ID; 19223 var localKey = 'MAX_VIEWED_ITEMS_' + siteID; 19224 var cookieParams = {path: '/', expires: 30}; 19225 if(typeof BX.localStorage !== 'undefined') 19226 { 19227 // remove local storage 19228 BX.localStorage.set(localKey, {}, 0); 19229 } 19230 // remove cookie 19231 $.removeCookie(localKey, cookieParams); 19232 } 19233 catch(e){ 19234 console.error(e); 19235 } 19236 } 19237} 19238
19239if(!funcDefined("setViewedProduct")){ 19240 function setViewedProduct(id, arData){ 19241 try{ 19242 19243 // save $.cookie option 19244 var bCookieJson = $.cookie.json; 19245 $.cookie.json = true; 19246 19247 var siteID = arAsproOptions.SITE_ID; 19248 var localKey = 'MAX_VIEWED_ITEMS_' + siteID; 19249 var cookieParams = {path: '/', expires: 30}; 19250 19251 if((typeof BX.localStorage !== 'undefined') && (typeof id !== 'undefined') && (typeof arData !== 'undefined')){ 19252 var PRODUCT_ID = (typeof arData.PRODUCT_ID !== 'undefined') ? arData.PRODUCT_ID : id; 19253 var arViewedLocal = BX.localStorage.get(localKey) ? BX.localStorage.get(localKey) : {}; 19254 var arViewedCookie = $.cookie(localKey) ? $.cookie(localKey) : {}; 19255 var count = 0; 19256 19257 // delete some items (sync cookie & local storage) 19258 for(var _id in arViewedLocal){ 19259 arViewedLocal[_id].IS_LAST = false; 19260 if(typeof arViewedCookie[_id] === 'undefined'){ 19261 delete arViewedLocal[_id]; 19262 } 19263 } 19264 for(var _id in arViewedCookie){ 19265 if(typeof arViewedLocal[_id] === 'undefined'){ 19266 delete arViewedCookie[_id]; 19267 } 19268 } 19269 19270 for(var _id in arViewedCookie){ 19271 count++; 19272 } 19273 19274 // delete item if other item (offer) of that PRODUCT_ID is exists 19275 if(typeof arViewedLocal[PRODUCT_ID] !== 'undefined'){ 19276 if(arViewedLocal[PRODUCT_ID].ID != id){ 19277 delete arViewedLocal[PRODUCT_ID]; 19278 delete arViewedCookie[PRODUCT_ID]; 19279 } 19280 } 19281 19282 var time = new Date().getTime(); 19283 arData.ID = id; 19284 arData.ACTIVE_FROM = time; 19285 arData.IS_LAST = true; 19286 arViewedLocal[PRODUCT_ID] = arData; 19287 arViewedCookie[PRODUCT_ID] = [time.toString(), arData.PICTURE_ID]; 19288 19289 $.cookie(localKey, arViewedCookie, cookieParams); 19290 BX.localStorage.set(localKey, arViewedLocal, 2592000); // 30 days 19291 } 19292 } 19293 catch(e){ 19294 console.error(e); 19295 } 19296 finally{ 19297 // restore $.cookie option 19298 $.cookie.json = bCookieJson; 19299 } 19300 } 19301} 19302 19303 19304 19305if(!funcDefined('initSelects')){ 19306 function initSelects(target){ 19307 var iOS = ( navigator.userAgent.match(/(iPad|iPhone|iPod)/g) ? true : false ); 19308 if ( iOS ) return; 19309 if($("#bx-soa-order").length) 19310 return; 19311 // SELECT STYLING 19312 $(target).find('.wrapper1 select:visible').ikSelect({ 19313 syntax: '<div class="ik_select_link"> \ 19314 <span class="ik_select_link_text"></span> \ 19315 <div class="trigger"></div> \ 19316 </div> \ 19317 <div class="ik_select_dropdown"> \ 19318 <div class="ik_select_list"> \ 19319 </div> \ 19320 </div>', 19321 dynamicWidth: true, 19322 ddMaxHeight: 112, 19323 customClass: 'common_select', 19324 //equalWidths: true, 19325 onShow: function(inst){ 19326 inst.$dropdown.css('top', (parseFloat(inst.$dropdown.css('top'))-5)+'px'); 19327 if ( inst.$dropdown.outerWidth() < inst.$link.outerWidth() ){ 19328 inst.$dropdown.css('width', inst.$link.outerWidth()); 19329 } 19330 if ( inst.$dropdown.outerWidth() > inst.$link.outerWidth() ){ 19331 inst.$dropdown.css('width', inst.$link.outerWidth()); 19332 } 19333 var count=0, 19334 client_height=0; 19335 inst.$dropdown.css('left', inst.$link.offset().left); 19336 $(inst.$listInnerUl).find('li').each(function(){ 19337 if(!$(this).hasClass('ik_select_option_disabled')){ 19338 ++count; 19339 client_height+=$(this).outerHeight(); 19340 } 19341 }) 19342 if(client_height<112){ 19343 inst.$listInner.css('height', 'auto'); 19344 }else{ 19345 inst.$listInner.css('height', '112px'); 19346 } 19347 inst.$link.addClass('opened'); 19348 inst.$listInner.addClass('scroller'); 19349 if($('.confirm_region').length) 19350 $('.confirm_region').remove(); 19351 }, 19352 onHide: function(inst){ 19353 inst.$link.removeClass('opened'); 19354 } 19355 }); 19356 // END OF SELECT STYLING 19357 19358 var timeout; 19359 $(window).on('resize', function(){ 19360 ignoreResize.push(true); 19361 clearTimeout(timeout); 19362 timeout = setTimeout(function(){ 19363 //$('select:visible').ikSelect('redraw'); 19364 var inst=''; 19365 if(inst=$('.common_select-link.opened + select').ikSelect().data('plugin_ikSelect')){ 19366 inst.$dropdown.css('left', inst.$link.offset().left+'px'); 19367 } 19368 }, 20); 19369 ignoreResize.pop(); 19370 }); 19371 } 19372} 19373 19374if(!funcDefined('CheckTopMenuFullCatalogSubmenu')){ 19375 CheckTopMenuFullCatalogSubmenu = function(){ 19376 if(arAsproOptions['THEME'] && arAsproOptions['THEME']['MENU_TYPE_VIEW'] != 'HOVER') 19377 return; 19378 19379 var $menu = $('.left_block .menu_top_block'); 19380 if($menu.length) 19381 { 19382 var $wrapmenu = $menu.parents('.wrap_menu'); 19383 19384 var wrapMenuWidth = $menu.closest('.wrapper_inner').actual('width'); 19385 if(!wrapMenuWidth) 19386 wrapMenuWidth = $menu.closest('.wraps').actual('width'); 19387 19388 var bCatalogFirst = $menu.hasClass('catalogfirst'); 19389 var findMenuLi = $('.left_block .menu_top_block:visible li.full'); 19390 var parentSubmenuWidth = $menu.actual('outerWidth'); 19391 var wrapMenuLeft = 0; 19392 var wrapMenuRight = 0; 19393 19394 if($wrapmenu.length) 19395 { 19396 wrapMenuWidth = $wrapmenu.actual('outerWidth'); 19397 wrapMenuLeft = $wrapmenu.offset().left; 19398 wrapMenuRight = wrapMenuLeft + wrapMenuWidth; 19399 } 19400 19401 if($('.left_block .catalog_block.menu_top_block').length){ 19402 if($('.left_block .catalog_block.menu_top_block').is(':visible')) 19403 findMenuLi=$('.left_block .menu_top_block.catalog_block li.full'); 19404 } 19405 findMenuLi.each(function(){ 19406 var $this = $(this); 19407 var $submenu = $this.find('>.dropdown'); 19408 19409 if($submenu.length){ 19410 // $submenu.css({left: parentSubmenuWidth + 'px', width: (wrapMenuWidth - parentSubmenuWidth) + 'px', 'padding-left': '0px', 'padding-right': '0px', 'opacity': 1}); 19411 $submenu.css({width: (wrapMenuWidth - parentSubmenuWidth) + 'px'}); 19412 19413 if(!isOnceInited && arAsproOptions["THEME"]["MENU_POSITION"] == "TOP"){ 19414 $this.on('mouseenter', function(){ 19415 $submenu.css('min-height', $this.closest('.dropdown').actual('outerHeight') + 'px'); 19416 }); 19417 } 19418 } 19419 }); 19420 } 19421 } 19422} 19423 19424$.fn.getMaxHeights = function( outer, classNull, minHeight ){ 19425 var maxHeight = this.map( function( i, e ){ 19426 var calc_height=0;
19427 $(e).css('height', ''); 19428 19429 if( outer == true ) 19430 calc_height=$(e).actual('outerHeight'); 19431 else 19432 calc_height=$(e).actual('height'); 19433 19434 return calc_height; 19435 }).get(); 19436 for(var i = 0, c = maxHeight.length; i < c; ++i) 19437 { 19438 if(maxHeight[i] % 2) 19439 --maxHeight[i]; 19440 } 19441 return Math.max.apply( this, maxHeight ); 19442} 19443 19444$.fn.equalizeHeights = function( outer, classNull, options ){ 19445 var maxHeight = []; 19446 var items = []; 19447 19448 for (var i = 0, itemKey = 0; i < this.length; itemKey++) { 19449 var item = this[itemKey], 19450 _item = $(item), 19451 minus_height=0, 19452 calc_height=0; 19453 19454 i++; 19455 19456 if(options.blockNull !== undefined) { 19457 if(options.blockNull.class !== undefined) { 19458 if(_item.hasClass(options.blockNull.class) || _item.closest('.'+options.blockNull.class).length) { 19459 continue; 19460 } 19461 } 19462 } 19463 19464 items.push(this[itemKey]); 19465 19466 if(classNull!==false) 19467 { 19468 if(!isMobile) { 19469 var nulled = _item.find(classNull); 19470 if(nulled.length) { 19471 minus_height=parseInt(nulled[0].offsetHeight); 19472 //minus_height=parseInt(_item.find(classNull).outerHeight(false)); 19473 //minus_height=parseInt(_item.find(classNull).actual('outerHeight')); 19474 } 19475 } 19476 } 19477 19478 if(minus_height) 19479 minus_height+=12; 19480 19481 _item.css('height', ''); 19482 19483 calc_height=item.offsetHeight-minus_height; 19484 19485 if(options.minHeight!==false) 19486 { 19487 if(calc_height<options.minHeight) 19488 calc_height+=(options.minHeight-calc_height); 19489 19490 if(window.matchMedia('(max-width: 520px)').matches) 19491 calc_height=300; 19492 19493 if(window.matchMedia('(max-width: 400px)').matches) 19494 calc_height=200; 19495 19496 } 19497 19498 if(!calc_height) 19499 calc_height = 0; 19500 19501 maxHeight.push(calc_height); 19502 } 19503 19504 for(var i = 0, c = maxHeight.length; i < c; ++i){ 19505 if(maxHeight[i] % 2){ 19506 --maxHeight[i]; 19507 } 19508 } 19509 19510 var result = $(items).height( Math.max.apply( this, maxHeight ) ); 19511 19512 return result; 19513} 19514 19515$.fn.getFloatWidth = function(){ 19516 var width = 0; 19517 if($(this).length){ 19518 var rect = $(this)[0].getBoundingClientRect(); 19519 if(!(width = rect.width)) 19520 width = rect.right - rect.left; 19521 } 19522 19523 $(this).data('floatWidth', width); 19524 19525 return width; 19526} 19527 19528function extendDepthObject(target, FromObj) { 19529 var to = Object.assign({}, target); 19530 for(var key in FromObj) 19531 { 19532 if( typeof(FromObj[key]) == 'object' ) { 19533 to[key] = extendDepthObject(to[key], FromObj[key]); 19534 } else { 19535 to[key] = FromObj[key]; 19536 } 19537 } 19538 19539 return to; 19540} 19541 19542$.fn.sliceHeight = function( options ){ 19543 function _slice(el){ 19544 var arBreakpoints = Object.keys(options.breakpoint); 19545 var resizeOptionsTmp = {}; 19546 if(arBreakpoints.length) 19547 { 19548 for(var key in arBreakpoints) 19549 { 19550 if(window.matchMedia(arBreakpoints[key].toString()).matches) 19551 { 19552 resizeOptionsTmp = options.breakpoint[arBreakpoints[key]]; 19553 } 19554 } 19555 } 19556 19557 var resizeOptions = extendDepthObject(options, resizeOptionsTmp); 19558 19559 var blockNullClass = resizeOptions.blockNull !== undefined && resizeOptions.blockNull.class !== undefined ? resizeOptions.blockNull.class : false; 19560 var parent = (typeof(resizeOptions.row) !== 'undefined' && resizeOptions.row.length) ? el.first().parents(resizeOptions.row) : el.first().parents('.items'); 19561 var item = ''; 19562 19563 if(typeof(resizeOptions.item) !== 'undefined' && resizeOptions.item.length) { 19564 if(blockNullClass) { 19565 $(resizeOptions.item).each(function(i, element){ 19566 _element = $(element); 19567 if(!_element.hasClass(blockNullClass)) { 19568 item = _element; 19569 } 19570 }); 19571 if(!item) // if only ignored blocks 19572 return false; 19573 } else { 19574 item = $(resizeOptions.item).first(); 19575 } 19576 } else { 19577 if( el.first().hasClass('item') ) { 19578 item = el.first(); 19579 } else { 19580 item = el.first().parents('.item'); 19581 } 19582 } 19583 19584 if(typeof(resizeOptions.autoslicecount) == 'undefined' || resizeOptions.autoslicecount !== false){ 19585 var elsw = parent.getFloatWidth(), 19586 elw = item.getFloatWidth(); 19587 if(!elsw){ 19588 elsw = el.first().parents('.row').getFloatWidth(); 19589 } 19590 if(!elw) 19591 { 19592 if(typeof(resizeOptions.item) !== 'undefined' && resizeOptions.item.length) 19593 elw = (($(resizeOptions.item+':eq(1)').getFloatWidth()) ? $(resizeOptions.item+':eq(1)').getFloatWidth() : $(resizeOptions.item+':eq(2)').getFloatWidth()); 19594 else 19595 elw = (($(el[1]).getFloatWidth()) ? $(el[1]).getFloatWidth() : $(el[2]).getFloatWidth()); 19596 } 19597 if(elw && resizeOptions.fixWidth) 19598 elw -= resizeOptions.fixWidth; 19599 19600 elw = (parseInt(elw * 100)) / 100; 19601 19602 if(elsw && elw){ 19603 resizeOptions.slice = Math.floor(elsw / elw); 19604 } 19605 } 19606 19607 if(resizeOptions.customSlice) //manual slice count 19608 { 19609 var bSliceNext = false;
19610 if(resizeOptions.length) 19611 { 19612 elw=(typeof(resizeOptions.item) !== 'undefined' && resizeOptions.item.length) ? $(resizeOptions.item).last().getFloatWidth() : (el.last().hasClass('item') ? el.last().getFloatWidth() : el.last().parents('.item').getFloatWidth()); 19613 if(elw) 19614 resizeOptions.sliceNext = Math.floor(elsw / elw); 19615 19616 bSliceNext = true; 19617 } 19618 } 19619 19620 elements = []; 19621 if(resizeOptions.classes !== undefined && resizeOptions.classes.length) { 19622 for(var i = 0;i < resizeOptions.classes.length;i++) { 19623 var items = $(resizeOptions.item).find(resizeOptions.classes[i]); 19624 elements.push( items ); 19625 } 19626 } 19627 var elIndex = elements.push(el) - 1; 19628 19629 if(resizeOptions.mobile == true) 19630 { 19631 if(window.matchMedia('(max-width: 500px)').matches) { 19632 for(var block = 0; block < elements.length; block++){ 19633 var items = $(elements[block]); 19634 items.css({ 19635 'line-height': '', 19636 'height': '', 19637 }); 19638 } 19639 return; 19640 } 19641 } 19642 19643 if(typeof(resizeOptions.typeResize) == 'undefined' || resizeOptions.typeResize == false) 19644 { 19645 if(resizeOptions.slice){ 19646 for(var block = 0; block < elements.length; block++){ 19647 if(resizeOptions.currentRow) { 19648 var itemNumber = el.index(resizeOptions.currentItem); 19649 var rowCount = resizeOptions.slice; 19650 var rowNumber = Math.floor(itemNumber / rowCount); 19651 19652 var items = $(elements[block].slice(rowNumber * rowCount, rowNumber * rowCount + rowCount)); 19653 var classNull = block == elIndex ? resizeOptions.classNull : false; 19654 items.css({ 19655 'line-height': '', 19656 'height': '', 19657 }); 19658 items.equalizeHeights(resizeOptions.outer, classNull, resizeOptions); 19659 } else { 19660 for(var i = 0; i < elements[block].length; ){ 19661 if(resizeOptions.customSlice && resizeOptions.sliceNext && bSliceNext && i) //manual slice count 19662 resizeOptions.slice = resizeOptions.sliceNext; 19663 19664 var slice = resizeOptions.slice; 19665 var items = $(elements[block].slice(i, i + slice)); 19666 if(resizeOptions.blockNull !== undefined) { 19667 if(resizeOptions.blockNull.class !== undefined) { 19668 var counts = 0; 19669 items.each(function(i, item) { 19670 var _item = $(item); 19671 if(_item.hasClass(resizeOptions.blockNull.class) || _item.closest('.'+resizeOptions.blockNull.class).length) { 19672 counts++; 19673 } 19674 }); 19675 } 19676 } 19677 if(counts) { 19678 slice -= ( resizeOptions.blockNull.width - 1 ) * counts; 19679 } 19680 19681 items = $(elements[block].slice(i, i + slice)); 19682 if(items) { 19683 var classNull = block == elIndex ? resizeOptions.classNull : false; 19684 19685 items.css({ 19686 'line-height': '', 19687 'height': '', 19688 }); 19689 items.equalizeHeights(resizeOptions.outer, classNull, resizeOptions); 19690 } 19691 i += slice || 1; 19692 } 19693 } 19694 19695 } 19696 } 19697 if(resizeOptions.lineheight){ 19698 var lineheightAdd = parseInt(resizeOptions.lineheight); 19699 if(isNaN(lineheightAdd)){ 19700 lineheightAdd = 0; 19701 } 19702 el.each(function() { 19703 $(this).css('line-height', ($(this).actual('height') + lineheightAdd) + 'px'); 19704 }); 19705 } 19706 } 19707 } 19708 var options = $.extend({ 19709 slice: null, 19710 sliceNext: null, 19711 outer: false, 19712 lineheight: false, 19713 autoslicecount: true, 19714 classNull: false, 19715 minHeight: false, 19716 row:false, 19717 item:false, 19718 typeResize:false, 19719 typeValue:false, 19720 fixWidth:0, 19721 resize:true, 19722 mobile:false, 19723 customSlice:false, 19724 breakpoint:{}, 19725 classes: [], 19726 }, options); 19727 19728 var el = $(this); 19729 19730 ignoreResize.push(true); 19731 _slice(el); 19732 ignoreResize.pop(); 19733 19734 if(options.resize) 19735 { 19736 BX.addCustomEvent('onWindowResize', function(eventdata) { 19737 try{ 19738 ignoreResize.push(true); 19739 _slice(el); 19740 } 19741 catch(e){} 19742 finally{ 19743 ignoreResize.pop(); 19744 } 19745 }); 19746 } 19747 else 19748 { 19749 if(!ignoreResize.length) 19750 { 19751 // ignoreResize.push(true); 19752 _slice(el); 19753 // ignoreResize.pop(); 19754 } 19755 } 19756} 19757 19758$.fn.sliceHeightNoResize = function( options ){ 19759 function _slice(el){ 19760 el.each(function() { 19761 $(this).css('line-height', ''); 19762 $(this).css('height', ''); 19763 }); 19764 if(options.mobile == true) 19765 { 19766 if(window.matchMedia('(max-width: 550px)').matches) 19767 return; 19768 } 19769 if(typeof(options.autoslicecount) == 'undefined' || options.autoslicecount !== false){ 19770 var elsw=(typeof(options.row) !== 'undefined' && options.row.length) ? el.first().parents(options.row).getFloatWidth() : el.first().parents('.items').getFloatWidth(), 19771 elw=(typeof(options.item) !== 'undefined' && options.item.length) ? $(options.item).first().getFloatWidth() : (el.first().hasClass('item') ? el.first().getFloatWidth() : el.first().parents('.item').getFloatWidth()); 19772 19773 if(!elsw){ 19774 elsw = el.first().parents('.row').getFloatWidth(); 19775 } 19776 if(elw && options.fixWidth) 19777 elw -= options.fixWidth; 19778 19779 if(elsw && elw){ 19780 options.slice = Math.floor(elsw / elw); 19781 } 19782 } 19783 if(options.customSlice) //manual slice count 19784 { 19785 var arBreakpoints = Object.keys(options.breakpoint),
19786 bSliceNext = false; 19787 if(arBreakpoints.length) 19788 { 19789 elw=(typeof(options.item) !== 'undefined' && options.item.length) ? $(options.item).last().getFloatWidth() : (el.last().hasClass('item') ? el.last().getFloatWidth() : el.last().parents('.item').getFloatWidth()); 19790 if(elw) 19791 options.sliceNext = Math.floor(elsw / elw); 19792 for(var key in arBreakpoints) 19793 { 19794 if(window.matchMedia(arBreakpoints[key].toString()).matches) 19795 { 19796 bSliceNext = true; 19797 options.slice = options.breakpoint[arBreakpoints[key]]; 19798 } 19799 } 19800 } 19801 } 19802 if(typeof(options.typeResize) == 'undefined' || options.typeResize == false) 19803 { 19804 if(options.slice){ 19805 for(var i = 0; i < el.length; i += options.slice){ 19806 if(options.customSlice && options.sliceNext && bSliceNext && i) //manual slice count 19807 options.slice = options.sliceNext; 19808 $(el.slice(i, i + options.slice)).equalizeHeights(options.outer, options.classNull, options.minHeight, options.typeResize, options.typeValue); 19809 } 19810 } 19811 if(options.lineheight){ 19812 var lineheightAdd = parseInt(options.lineheight); 19813 if(isNaN(lineheightAdd)){ 19814 lineheightAdd = 0; 19815 } 19816 el.each(function() { 19817 $(this).css('line-height', ($(this).actual('height') + lineheightAdd) + 'px'); 19818 }); 19819 } 19820 } 19821 } 19822 var options = $.extend({ 19823 slice: null, 19824 sliceNext: null, 19825 outer: false, 19826 lineheight: false, 19827 autoslicecount: true, 19828 classNull: false, 19829 minHeight: false, 19830 row:false, 19831 item:false, 19832 typeResize:false, 19833 typeValue:false, 19834 fixWidth:0, 19835 resize:true, 19836 mobile:false, 19837 customSlice:false, 19838 breakpoint:{}, 19839 }, options); 19840 19841 var el = $(this); 19842 19843 ignoreResize.push(true); 19844 _slice(el); 19845 ignoreResize.pop(); 19846} 19847 19848if(!funcDefined('initHoverBlock')){ 19849 function initHoverBlock(target){ 19850 /*$(target).find('.catalog_item.item_wrap').on('mouseenter', function(){ 19851 $(this).addClass('hover'); 19852 }) 19853 $(target).find('.catalog_item.item_wrap').on('mouseleave', function(){ 19854 $(this).removeClass('hover'); 19855 })*/ 19856 } 19857} 19858if(!funcDefined('setStatusButton')){ 19859 function setStatusButton(){ 19860 if(!funcDefined('setItemButtonStatus')){ 19861 setItemButtonStatus = function(data){ 19862 if(data.BASKET){ 19863 for( var i in data.BASKET ){ 19864 var id = data.BASKET[i]; 19865 if(typeof id === 'number' || typeof id === 'string'){ 19866 $('.to-cart[data-item='+id+']').hide(); 19867 $('.counter_block[data-item='+id+']').closest('.counter_block_inner').hide(); 19868 $('.counter_block[data-item='+id+']').hide(); 19869 $('.in-cart[data-item='+id+']').show(); 19870 $('.in-cart[data-item='+id+']').closest('.button_block').addClass('wide'); 19871 } 19872 } 19873 } 19874 if(data.DELAY){ 19875 for( var i in data.DELAY ){ 19876 var id = data.DELAY[i]; 19877 if(typeof id === 'number' || typeof id === 'string'){ 19878 $('.wish_item.to[data-item='+id+']').hide(); 19879 $('.wish_item.in[data-item='+id+']').show(); 19880 if ($('.wish_item[data-item='+id+']').find(".value.added").length) { 19881 //$('.wish_item[data-item='+id+']').addClass("added"); 19882 $('.wish_item[data-item='+id+']').find(".value").hide(); 19883 $('.wish_item[data-item='+id+']').find(".value.added").show(); 19884 } 19885 } 19886 } 19887 } 19888 if(data.SUBSCRIBE){ 19889 for( var i in data.SUBSCRIBE ){ 19890 var id = data.SUBSCRIBE[i]; 19891 if(typeof id === 'number' || typeof id === 'string'){ 19892 $('.to-subscribe[data-item='+id+']').hide(); 19893 $('.in-subscribe[data-item='+id+']').show(); 19894 } 19895 } 19896 } 19897 if(data.COMPARE){ 19898 for( var i in data.COMPARE ){ 19899 var id = data.COMPARE[i]; 19900 if(typeof id === 'number' || typeof id === 'string'){ 19901 $('.compare_item.to[data-item='+id+']').hide(); 19902 $('.compare_item.in[data-item='+id+']').show(); 19903 if ($('.compare_item[data-item='+id+']').find(".value.added").length){ 19904 $('.compare_item[data-item='+id+']').find(".value").hide(); 19905 $('.compare_item[data-item='+id+']').find(".value.added").show(); 19906 } 19907 } 19908 } 19909 } 19910 } 19911 } 19912 if(!Object.keys(arStatusBasketAspro).length) 19913 { 19914 if(typeof arAsproOptions === 'undefined') 19915 { 19916 var arAsproOptions = ({ 19917 "SITE_DIR" : '/' 19918 }); 19919 if($('body').data('site') !== undefined) 19920 arAsproOptions["SITE_DIR"] = $('body').data('site'); 19921 } 19922 $.ajax({
19923 url: arAsproOptions["SITE_DIR"]+'ajax/getAjaxBasket.php', 19924 type: 'POST', 19925 success: function(data){ 19926 arStatusBasketAspro = data; 19927 setItemButtonStatus(arStatusBasketAspro); 19928 } 19929 }); 19930 } 19931 else 19932 setItemButtonStatus(arStatusBasketAspro); 19933 } 19934} 19935 19936 19937if(!funcDefined('onLoadjqm')){ 19938 var onLoadjqm = function(name, hash, requestData, selector, requestTitle, isButton, thButton){ 19939 if( hash.c.noOverlay === undefined || (hash.c.noOverlay !== undefined && !hash.c.noOverlay) ) { 19940 $('body').addClass('jqm-initied'); 19941 } 19942 if(window.matchMedia('(min-width: 768px)').matches) 19943 { 19944 $("body").addClass("swipeignore"); 19945 } 19946 19947 if(typeof $(hash.t).data('ls') !==' undefined' && $(hash.t).data('ls')) 19948 { 19949 var ls = $(hash.t).data('ls'), 19950 ls_timeout = 0, 19951 v = ''; 19952 19953 if($(hash.t).data('ls_timeout')) 19954 ls_timeout = $(hash.t).data('ls_timeout'); 19955 19956 ls_timeout = ls_timeout ? Date.now() + (ls_timeout*1000) : ''; 19957 19958 if(typeof localStorage !== 'undefined') 19959 { 19960 var val = localStorage.getItem(ls); 19961 try{ 19962 v = JSON.parse(val); 19963 } 19964 catch(e){ 19965 v = val 19966 } 19967 if(v!= null) 19968 { 19969 localStorage.removeItem(ls); 19970 } 19971 v={}; 19972 v['VALUE'] = 'Y'; 19973 v['TIMESTAMP'] = ls_timeout; // default: seconds for 1 day 19974 19975 localStorage.setItem(ls, JSON.stringify(v)); 19976 } 19977 else 19978 { 19979 var val = $.cookie(ls); 19980 if(!val) 19981 $.cookie(ls, "Y", {expires: ls_timeout});// default: seconds for 1 day 19982 } 19983 19984 var dopClasses = hash.w.find('.marketing-popup').data('classes'); 19985 if(dopClasses) { 19986 hash.w.addClass(dopClasses); 19987 } 19988 } 19989 19990 $.each($(hash.t).get(0).attributes, function(index, attr){ 19991 if(/^data\-autoload\-(.+)$/.test(attr.nodeName)){ 19992 var key = attr.nodeName.match(/^data\-autoload\-(.+)$/)[1]; 19993 var el = $('input[data-sid="'+key.toUpperCase()+'"]'); 19994 el.val(BX.util.htmlspecialcharsback($(hash.t).data('autoload-'+key))).attr('readonly', 'readonly'); 19995 el.closest('.form-group').addClass('input-filed'); 19996 el.attr('title', el.val()); 19997 } 19998 }); 19999 20000 //show gift block 20001 if(hash.w.hasClass('send_gift_frame')) 20002 { 20003 var imgHtml = priceHtml = propsHtml = ''; 20004 if($('.offers_img a').length) 20005 imgHtml = $('.offers_img a').html(); 20006 else if($('.product-detail-gallery__container').length) 20007 imgHtml = '<img src='+$('.product-detail-gallery__container link[itemprop="image"]').attr('href')+' />'; 20008 20009 if($('.product-container *[itemprop="offers"]').length) //show price 20010 { 20011 if($('.sku-view').length) 20012 { 20013 if($('.prices_block .price').length) 20014 priceHtml = $('.prices_block .cost.prices').html().replace('id', 'data-id'); 20015 } 20016 else 20017 { 20018 if($('.prices_block .js_price_wrapper').length) 20019 priceHtml = '<div class="with_matrix">'+$('.prices_block .js_price_wrapper').html()+'</div>'; 20020 else if($('.prices_block .with_matrix').length) 20021 priceHtml = '<div class="with_matrix">'+$('.prices_block .with_matrix').html()+'</div>'; 20022 else if($('.prices_block .price_group.min').length) 20023 priceHtml = $('.prices_block .price_group.min').html(); 20024 else if($('.prices_block .price_matrix_wrapper').length) 20025 priceHtml = $('.prices_block .price_matrix_wrapper').html(); 20026 } 20027 } 20028 20029 if($('.buy_block .sku_props').length) 20030 { 20031 propsHtml = '<div class="props_item">'; 20032 $('.buy_block .sku_props .bx_catalog_item_scu > div').each(function(){ 20033 var title = $(this).find('.bx_item_section_name > span').html(); 20034 var props = ''; 20035 var ikSelect = $(this).find('.ik_select_link_text'); 20036 if( ikSelect.length ) { 20037 props = ikSelect.text(); 20038 } else { 20039 var activeSku = $(this).find('ul li.active'); 20040 var isPicture = activeSku.find(' > i'); 20041 if( isPicture.length && isPicture.attr('title') ) { 20042 var propTitle = isPicture.attr('title').split(':'); 20043 if(propTitle.length) { 20044 propTitle = propTitle[1].trim(); 20045 } else { 20046 propTitle = isPicture.attr('title'); 20047 } 20048 props = propTitle; 20049 } else { 20050 props = activeSku.find(' > span').text(); 20051 } 20052 } 20053 20054 propsHtml += '<div class="prop_item">'+ 20055 '<span>'+ 20056 title + '<span class="val">'+props+'</span>' + 20057 '</span>'+ 20058 '</div>'; 20059 20060 }) 20061 propsHtml += '</div>'; 20062 } 20063 $('<div class="custom_block">'+ 20064 '<div class="title">'+BX.message('POPUP_GIFT_TEXT')+'</div>'+ 20065 '<div class="item_block">'+ 20066 '<table class="item_list"><tr>'+ 20067 '<td class="image">'+ 20068 '<div>'+imgHtml+'</div>'+ 20069 '</td>'+ 20070 '<td class="text">'+ 20071 '<div class="name">'+$('h1').text()+'</div>'+ 20072 priceHtml+ 20073 propsHtml+ 20074 '</td>'+ 20075 '</tr></table>'+ 20076 '</div>'+ 20077 '</div>').prependTo(hash.w.find('.form_body')) 20078 } 20079 20080 if(arAsproOptions['THEME']['REGIONALITY_SEARCH_ROW'] == 'Y' && (hash.w.hasClass('city_chooser_frame ') || hash.w.hasClass('city_chooser_small_frame')))
20081 hash.w.addClass('small_popup_regions'); 20082 20083 if( hash.w.hasClass('city_chooser_frame ') || hash.w.hasClass('city_chooser_small_frame ') ) { 20084 $('.popup_regions .items .items_block').mCustomScrollbar({ 20085 mouseWheel: { 20086 scrollAmount: 150, 20087 preventDefault: true 20088 } 20089 }); 20090 } 20091 20092 20093 if( name == 'fast_view' && $('.smart-filter-filter').length) { 20094 var navButtons = '<div class="navigation-wrapper-fast-view">'+ 20095 '<div class="fast-view-nav prev colored_theme_hover_bg" data-fast-nav="prev">'+ 20096 '<i class="svg left">'+ 20097 '<svg xmlns="http://www.w3.org/2000/svg" width="12" height="6.969" viewBox="0 0 12 6.969"><path id="Rounded_Rectangle_702_copy_24" data-name="Rounded Rectangle 702 copy 24" class="cls-1" d="M361.691,401.707a1,1,0,0,1-1.414,0L356,397.416l-4.306,4.291a1,1,0,0,1-1.414,0,0.991,0.991,0,0,1,0-1.406l5.016-5a1.006,1.006,0,0,1,1.415,0l4.984,5A0.989,0.989,0,0,1,361.691,401.707Z" transform="translate(-350 -395.031)"/></svg>'+ 20098 '</i>'+ 20099 '</div>'+ 20100 20101 '<div class="fast-view-nav next colored_theme_hover_bg" data-fast-nav="next">'+ 20102 '<i class="svg right">'+ 20103 '<svg xmlns="http://www.w3.org/2000/svg" width="12" height="6.969" viewBox="0 0 12 6.969"><path id="Rounded_Rectangle_702_copy_24" data-name="Rounded Rectangle 702 copy 24" class="cls-1" d="M361.691,401.707a1,1,0,0,1-1.414,0L356,397.416l-4.306,4.291a1,1,0,0,1-1.414,0,0.991,0.991,0,0,1,0-1.406l5.016-5a1.006,1.006,0,0,1,1.415,0l4.984,5A0.989,0.989,0,0,1,361.691,401.707Z" transform="translate(-350 -395.031)"/></svg>'+ 20104 '</i>'+ 20105 '</div>'+ 20106 '</div>'; 20107 20108 hash.w.closest('#popup_iframe_wrapper').append(navButtons); 20109 } 20110 20111 hash.w.addClass('show').css({ 20112 // 'top': (($(window).height() > hash.w.height()) ? Math.floor(($(window).height() - hash.w.height()) / 2) : 0) + 'px', 20113 // 'margin-left': ($(window).width() > hash.w.outerWidth() ? '-' + hash.w.outerWidth() / 2 + 'px' : '-' + $(window).width() / 2 + 'px'), 20114 'opacity': 1 20115 }); 20116 20117 hash.w.mCustomScrollbar({ 20118 mouseWheel: { 20119 scrollAmount: 150, 20120 preventDefault: true 20121 } 20122 }); 20123 20124 if(hash.c.noOverlay === undefined || (hash.c.noOverlay !== undefined && !hash.c.noOverlay)) { 20125 $('body').css({'overflow': 'hidden','height': '100vh'}); 20126 hash.w.closest('#popup_iframe_wrapper').css({'z-index': 3000, 'display': 'flex'}); 20127 } 20128 20129 var eventdata = {action:'loadForm'}; 20130 BX.onCustomEvent('onCompleteAction', [eventdata, $(hash.t)[0]]); 20131 20132 20133 if(typeof(requestData) == 'undefined'){ 20134 requestData = ''; 20135 } 20136 if(typeof(selector) == 'undefined'){ 20137 selector = false; 20138 } 20139 20140 var width = $('.'+name+'_frame').width(); 20141 //$('.'+name+'_frame').css('margin-left', '-'+width/2+'px'); 20142 20143 if(name=='order-popup-call') { 20144 } 20145 else if(name=='order-button') { 20146 $(".order-button_frame").find("div[product_name]").find("input").val(hash.t.title).attr("readonly", "readonly").css({"overflow": "hidden", "text-overflow": "ellipsis"}); 20147 } 20148 else if(name=='basket_error') 20149 { 20150 $(".basket_error_frame .pop-up-title").text(requestTitle); 20151 $(".basket_error_frame .ajax_text").html(requestData); 20152 20153 if(window.matchMedia('(max-width: 991px)').matches) 20154 { 20155 $("body").addClass("all_viewed"); 20156 } 20157 20158 initSelects(document); 20159 if(isButton=="Y" && thButton) 20160 $("<div class='popup_button_basket_wr'><span class='popup_button_basket big_btn button' data-item="+thButton.data("item")+"><span class='btn btn-default'>"+BX.message("ERROR_BASKET_BUTTON")+"</span></span></div>").insertAfter($(".basket_error_frame .ajax_text")); 20161 } 20162 20163 $('.'+name+'_frame').show(); 20164 } 20165} 20166 20167if(!funcDefined('onHidejqm')){ 20168 var onHidejqm = function(name, hash){ 20169 if (hash.w.find('.one_click_buy_result_success').is(':visible') && name=="one_click_buy_basket") { 20170 window.location.href = window.location.href; 20171 } 20172 20173 if($('.xzoom-source').length) 20174 $('.xzoom-source').remove(); 20175 if($('.xzoom-preview').length) 20176 $('.xzoom-preview').remove(); 20177 20178 // hash.w.css('opacity', 0).hide(); 20179 hash.w.animate({'opacity': 0}, 200, function(){ 20180 hash.w.removeClass('scroll-init').mCustomScrollbar('destroy'); 20181 hash.w.hide(); 20182 hash.w.empty(); 20183 hash.o.remove(); 20184 hash.w.removeClass('show'); 20185 20186 $('body').css({'overflow': '','height': ''}); 20187 20188 if(!hash.w.closest('#popup_iframe_wrapper').find('.jqmOverlay').length) { 20189 hash.w.closest('#popup_iframe_wrapper').css({'z-index': '', 'display': ''}); 20190 } 20191 20192 if(window.matchMedia('(max-width: 991px)').matches) 20193 { 20194 $("body").removeClass("all_viewed"); 20195 } 20196 if(!$('.jqmOverlay:not(.mobp)').length || $('.jqmOverlay.waiting').length) 20197 { 20198 $('body').removeClass('jqm-initied'); 20199 } 20200 20201 if(window.matchMedia('(min-width: 768px)').matches) 20202 { 20203 $("body").removeClass("swipeignore"); 20204 } 20205 20206 if(name == 'fast_view') { 20207 $('.fast_view_popup').remove(); 20208 20209 var navButtons = hash.w.closest('#popup_iframe_wrapper').find('.navigation-wrapper-fast-view'); 20210 navButtons.remove(); 20211 } 20212 }); 20213 20214 window.b24form = false;
20215 } 20216} 20217 20218$.fn.jqmEx = function(){ 20219 // $(this).each(function(){ 20220 var _this = $(this); 20221 var name = _this.data('name'); 20222 20223 if(name.length && _this.attr('disabled') != 'disabled'){ 20224 var extClass = '', 20225 paramsStr = '', 20226 trigger = '', 20227 arTriggerAttrs = {}; 20228 20229 // call counter 20230 if(typeof $.fn.jqmEx.counter === 'undefined'){ 20231 $.fn.jqmEx.counter = 0; 20232 } 20233 else{ 20234 ++$.fn.jqmEx.counter; 20235 } 20236 20237 // trigger attrs and params 20238 $.each(_this.get(0).attributes, function(index, attr){ 20239 var attrName = attr.nodeName; 20240 var attrValue = _this.attr(attrName); 20241 if (attrName !== 'onclick') { 20242 trigger += '[' + attrName + '=\"' + attrValue + '\"]'; 20243 arTriggerAttrs[attrName] = attrValue; 20244 } 20245 if(/^data\-param\-(.+)$/.test(attrName)){ 20246 var key = attrName.match(/^data\-param\-(.+)$/)[1]; 20247 paramsStr += key + '=' + attrValue + '&'; 20248 } 20249 }); 20250 var triggerAttrs = JSON.stringify(arTriggerAttrs); 20251 var encTriggerAttrs = encodeURIComponent(triggerAttrs); 20252 20253 // popup url 20254 var script = arAsproOptions['SITE_DIR'] + 'ajax/form.php'; 20255 if(name == 'auth'){ 20256 script += '?' + paramsStr + 'auth=Y'; 20257 } 20258 else{ 20259 script += '?' + paramsStr + 'data-trigger=' + encTriggerAttrs; 20260 } 20261 20262 // ext frame class 20263 if(_this.closest('#fast_view_item').length){ 20264 extClass = 'fast_view_popup'; 20265 } 20266 20267 // use overlay? 20268 var noOverlay = _this.data('noOverlay') == 'Y'; 20269 20270 // unique frame to each trigger 20271 if(noOverlay) { 20272 var frame = $('<div class="' + name + '_frame ' + extClass + ' jqmWindow popup" data-popup="' + $.fn.jqmEx.counter + '" data-trigger="' + encTriggerAttrs + '"></div>').appendTo('body'); 20273 } 20274 else{ 20275 var frame = $('<div class="' + name + '_frame ' + extClass + ' jqmWindow popup" data-popup="' + $.fn.jqmEx.counter + '" data-trigger="' + encTriggerAttrs + '"></div>').appendTo('#popup_iframe_wrapper'); 20276 } 20277 20278 frame.jqm({ 20279 ajax: script, 20280 trigger: trigger, 20281 noOverlay: noOverlay, 20282 onLoad: function(hash){ 20283 onLoadjqm(name, hash); 20284 }, 20285 onHide: function(hash){ 20286 onHidejqm(name, hash); 20287 } 20288 }); 20289 } 20290 // }); 20291} 20292 20293window.addEventListener("keydown", function(e){ 20294 if (e.keyCode == 27) { 20295 $('.jqm-init.show').last().jqmHide(); 20296 20297 if($('.inline-search-block.show').length) { 20298 20299 $('.inline-search-block').toggleClass('show'); 20300 $('.jqmOverlay.search').detach(); 20301 } 20302 20303 $('.mega_fixed_menu').fadeOut(animationTime); 20304 } 20305}); 20306 20307if(!funcDefined("scroll_block")) { 20308 function scroll_block(block, clickedItem){ 20309 if(block.length) 20310 { 20311 20312 if(clickedItem !== undefined && clickedItem.length) 20313 { 20314 clickedItem.trigger('click'); 20315 } 20316 else 20317 { 20318 $(".prices_tab").addClass("active").siblings().removeClass("active"); 20319 if($(".prices_tab .opener").length && !$(".prices_tab .opener .opened").length){ 20320 var item = $(".prices_tab .opener").first(); 20321 item.find(".opener_icon").addClass("opened"); 20322 item.parents("tr").addClass("nb") 20323 item.parents("tr").next(".offer_stores").find(".stores_block_wrap").slideDown(200); 20324 } 20325 } 20326 var topPos = block.offset().top, 20327 headerH = $('header').outerHeight(true,true); 20328 20329 $('html,body').animate({'scrollTop':topPos-88},150); 20330 } 20331 } 20332} 20333 20334if(!funcDefined("jqmEd")) { 20335 var jqmEd = function (name, form_id, open_trigger, requestData, selector, requestTitle, isButton, thButton){ 20336 if(typeof(requestData) == "undefined"){ 20337 requestData = ''; 20338 } 20339 if(typeof(selector) == "undefined"){ 20340 selector = false; 20341 } 20342 $('body #popup_iframe_wrapper').find('.'+name+'_frame').remove(); 20343 $('body #popup_iframe_wrapper').append('<div class="'+name+'_frame jqmWindow popup"></div>'); 20344 if(typeof open_trigger == "undefined" ){ 20345 $('.'+name+'_frame').jqm({trigger: '.'+name+'_frame.popup',onHide: function(hash) { onHidejqm(name,hash); }, onLoad: function( hash ){ onLoadjqm( name , hash , requestData, selector); }, ajax: arAsproOptions["SITE_DIR"]+'ajax/form.php?form_id='+form_id+(requestData.length ? '&' + requestData : '')}); 20346 }else{ 20347 if(name == 'enter'){ 20348 $('.'+name+'_frame').jqm({trigger: open_trigger,onHide: function(hash) { onHidejqm(name,hash); }, onLoad: function( hash ){ onLoadjqm( name , hash , requestData, selector); }
20348, ajax: arAsproOptions["SITE_DIR"]+'ajax/auth.php'}); 20349 }else if(name=='basket_error'){ 20350 $('.'+name+'_frame').jqm({trigger: open_trigger, onHide: function(hash) { onHidejqm(name,hash); }, onLoad: function( hash ){ onLoadjqm( name , hash , requestData, selector, requestTitle, isButton, thButton); }, ajax: arAsproOptions["SITE_DIR"]+'ajax/basket_error.php'}); 20351 20352 }else{ 20353 $('.'+name+'_frame').jqm({trigger: open_trigger, onHide: function(hash) { onHidejqm(name,hash); }, onLoad: function( hash ){ onLoadjqm( name , hash , requestData, selector); }, ajax: arAsproOptions["SITE_DIR"]+'ajax/form.php?form_id='+form_id+(requestData.length ? '&' + requestData : '')}); 20354 } 20355 $(open_trigger).dblclick(function(){return false;}) 20356 } 20357 return true; 20358 } 20359} 20360 20361if (!funcDefined("replaceBasketPopup")){ 20362 function replaceBasketPopup (hash){ 20363 if(typeof hash != "undefined"){ 20364 hash.w.hide(); 20365 hash.o.hide(); 20366 } 20367 } 20368} 20369 20370if(!funcDefined("waitLayer")){ 20371 function waitLayer(delay, callback){ 20372 if((typeof dataLayer !== 'undefined') && (typeof callback === 'function')){ 20373 callback(); 20374 } 20375 else{ 20376 setTimeout(function() { 20377 waitLayer(delay, callback); 20378 }, delay); 20379 } 20380 } 20381} 20382 20383if(!funcDefined("checkCounters")){ 20384 function checkCounters(name){ 20385 if(typeof name !== "undefined"){ 20386 if(name == "google" && (arAsproOptions["COUNTERS"]["GOOGLE_ECOMERCE"] == "Y" && arAsproOptions["COUNTERS"]["GOOGLE_COUNTER"] > 0)){ 20387 return true; 20388 } 20389 else if(name == "yandex" && (arAsproOptions["COUNTERS"]["YANDEX_ECOMERCE"] == "Y" && arAsproOptions["COUNTERS"]["YANDEX_COUNTER"] > 0)){ 20390 return true; 20391 } 20392 else{ 20393 return false; 20394 } 20395 } 20396 else if((arAsproOptions["COUNTERS"]["YANDEX_ECOMERCE"] == "Y" && arAsproOptions["COUNTERS"]["YANDEX_COUNTER"] > 0) || (arAsproOptions["COUNTERS"]["GOOGLE_ECOMERCE"] == "Y" && arAsproOptions["COUNTERS"]["GOOGLE_COUNTER"] > 0)) { 20397 return true; 20398 } 20399 else{ 20400 return false; 20401 } 20402 } 20403} 20404 20405if(!funcDefined("addBasketCounter")){ 20406 function addBasketCounter(id){ 20407 if(arAsproOptions['COUNTERS']['USE_BASKET_GOALS'] !== 'N'){ 20408 var eventdata = {goal: 'goal_basket_add', params: {id: id}}; 20409 BX.onCustomEvent('onCounterGoals', [eventdata]); 20410 } 20411 if(checkCounters()){ 20412 $.ajax({ 20413 url:arAsproOptions['SITE_DIR'] + "ajax/goals.php", 20414 dataType: "json", 20415 type: "POST", 20416 data: {"ID": id}, 20417 success: function(item){ 20418 if(!!item && !!item.ID){ 20419 waitLayer(100, function() { 20420 dataLayer.push({ 20421 "event": arAsproOptions["COUNTERS"]['GOOGLE_EVENTS']['ADD2BASKET'], 20422 "ecommerce": { 20423 "currencyCode": item.CURRENCY, 20424 "add": { 20425 "products": [{ 20426 "id": item.ID, 20427 "name": item.NAME, 20428 "price": item.PRICE, 20429 "brand": item.BRAND, 20430 "category": item.CATEGORY, 20431 "quantity": item.QUANTITY 20432 }] 20433 } 20434 } 20435 }); 20436 }); 20437 } 20438 } 20439 }); 20440 } 20441 } 20442} 20443 20444if(!funcDefined("purchaseCounter")){ 20445 function purchaseCounter(order_id, type, callback){ 20446 if(checkCounters()){ 20447 $.ajax({ 20448 url:arAsproOptions['SITE_DIR'] + "ajax/goals.php", 20449 dataType: "json", 20450 type: "POST", 20451 data: {"ORDER_ID": order_id, "TYPE": type}, 20452 success: function(order){ 20453 var products = []; 20454 if(order.ITEMS){ 20455 for(var i in order.ITEMS){ 20456 products.push({ 20457 "item_id": order.ITEMS[i].ID, 20458 "sku": order.ITEMS[i].ID, 20459 "item_name": order.ITEMS[i].NAME, 20460 "price": parseFloat(order.ITEMS[i].PRICE), 20461 "item_category": order.ITEMS[i].CATEGORY, 20462 "quantity": parseInt(order.ITEMS[i].QUANTITY, 10) 20463 }); 20464 } 20465 } 20466 if(order.ID){ 20467 waitLayer(100, function() { 20468 dataLayer.push({ 20469 "event": arAsproOptions["COUNTERS"]['GOOGLE_EVENTS']['PURCHASE'], 20470 "ecommerce": d = { 20471 "transaction_id": order.ACCOUNT_NUMBER, 20472 "value": parseFloat(order.PRICE), 20473 "currency": "EUR", 20474 "shipping": parseFloat(order.PRICE_DELIVERY), 20475 "tax": parseFloat(order.TAX_VALUE), 20476 "items": products 20477 } 20478 }); 20479 20480 if(typeof callback !== 'undefined'){ 20481 callback(d); 20482 } 20483 }); 20484 } 20485 else{ 20486 if(typeof callback !== 'undefined'){ 20487 callback(); 20488 } 20489 } 20490 }, 20491 error: function(){ 20492 if(typeof callback !== 'undefined'){ 20493 callback(); 20494 } 20495 } 20496 }); 20497 } 20498 } 20499} 20500 20501if(!funcDefined("viewItemCounter")){ 20502 function viewItemCounter(id, price_id){ 20503 if(checkCounters()){ 20504 $.ajax({ 20505 url:arAsproOptions['SITE_DIR'] + "ajax/goals.php", 20506 dataType: "json", 20507 type: "POST", 20508 data: {"PRODUCT_ID": id, "PRICE_ID": price_id}, 20509 success: function(item){ 20510 if(item.ID){ 20511 waitLayer(100, function() { 20512 dataLayer.push({ 20513 //"event": "", 20514 "ecommerce": { 20515 "detail": { 20516 "products": [{ 20517 "id": item.ID, 20518 "name": item.NAME, 20519 "price": item.PRICE, 20520 "brand": item.BRAND, 20521 "category": item.CATEGORY 20522 }] 20523 } 20524 } 20525 }); 20526 }); 20527 } 20528 } 20529 }); 20530 } 20531 } 20532} 20533 20534if(!funcDefined("checkoutCounter")){ 20535 function checkoutCounter(step, option, callback){ 20536 if(checkCounters('google')){ 20537 $.ajax({ 20538 url:arAsproOptions['SITE_DIR'] + "ajax/goals.php", 20539 dataType: "json", 20540 type: "POST", 20541 data: {"BASKET": "Y"}, 20542 success: function(basket){ 20543 var products = []; 20544 if(basket.ITEMS){ 20545 for(var i in basket.ITEMS){ 20546 products.push({ 20547 "id": basket.ITEMS[i].ID, 20548 "name": basket.ITEMS[i].NAME, 20549 "price": basket.ITEMS[i].PRICE, 20550 "brand": basket.ITEMS[i].BRAND, 20551 "category": basket.ITEMS[i].CATEGORY, 20552 "quantity": basket.ITEMS[i].QUANTITY 20553 }); 20554 } 20555 } 20556 if(products){ 20557 waitLayer(100, function() { 20558 dataLayer.push({ 20559 "event": arAsproOptions["COUNTERS"]['GOOGLE_EVENTS']['CHECKOUT_ORDER'], 20560 "ecommerce": { 20561 'checkout': { 20562 "actionField":{ 20563 "step": step, 20564 "option": option 20565 }, 20566 "products": products 20567 } 20568 }, 20569 /*"eventCallback": function() { 20570 if((typeof callback !== 'undefined') && (typeof callback === 'function')){ 20571 callback(); 20572 } 20573 }*/ 20574 }); 20575 }); 20576 } 20577 } 20578 }); 20579 } 20580 } 20581} 20582 20583if(!funcDefined("delFromBasketCounter")){ 20584 function delFromBasketCounter(id, callback){ 20585 if(checkCounters()){ 20586 $.ajax({ 20587 url:arAsproOptions['SITE_DIR'] + "ajax/goals.php", 20588 dataType: "json", 20589 type: "POST", 20590 data: {"ID": id}, 20591 success: function(item){ 20592 if(item.ID){ 20593 waitLayer(100, function() { 20594 dataLayer.push({ 20595 "event": arAsproOptions["COUNTERS"]['GOOGLE_EVENTS']['REMOVE_BASKET'], 20596 "ecommerce": { 20597 "remove": { 20598 "products": [{ 20599 "id": item.ID, 20600 "name": item.NAME, 20601 "category": item.CATEGORY 20602 }] 20603 } 20604 } 20605 }); 20606 if(typeof callback == 'function'){ 20607 callback(); 20608 } 20609 }); 20610 } 20611 } 20612 }); 20613 } 20614 } 20615} 20616 20617if(!funcDefined("setHeightCompany")){ 20618 function setHeightCompany(){ 20619 $('.md-50.img').height($('.md-50.big').outerHeight()-35); 20620 } 20621} 20622 20623if(!funcDefined("initSly")){ 20624 function initSly(){ 20625 /*var $frame = $(document).find('.frame'); 20626 var $slidee = $frame.children('ul').eq(0); 20627 var $wrap = $frame.parent(); 20628 20629 if(arAsproOptions["PAGES"]["CATALOG_PAGE"] && $frame.length){ 20630 $frame.sly({ 20631 horizontal: 1, 20632 itemNav: 'basic', 20633 smart: 1, 20634 mouseDragging: 0, 20635 touchDragging: 0, 20636 releaseSwing: 0, 20637 startAt: 0, 20638 scrollBar: $wrap.find('.scrollbar'), 20639 scrollBy: 1, 20640 speed: 300, 20641 elasticBounds: 0, 20642 easing: 'swing', 20643 dragHandle: 1, 20644 dynamicHandle: 1, 20645 clickBar: 1, 20646 20647 // Buttons 20648 forward: $wrap.find('.forward'), 20649 backward: $wrap.find('.backward'), 20650 }); 20651 $frame.sly('reload'); 20652 }*/ 20653 } 20654} 20655 20656if(!funcDefined("createTableCompare")){ 20657 function createTableCompare(originalTable, appendDiv, cloneTable){ 20658 20659 try{ 20660 var clone = originalTable.clone().removeAttr('id').addClass('clone'); 20661 if(cloneTable.length){ 20662 cloneTable.remove(); 20663 appendDiv.html(''); 20664 appendDiv.html(clone); 20665 }else{ 20666 appendDiv.append(clone); 20667 } 20668 } 20669 catch(e){} 20670 finally{ 20671 20672 } 20673 } 20674} 20675 20676if(!funcDefined('fillBasketPropsExt')){ 20677 fillBasketPropsExt = function(that, prop_code, basket_prop_div){ 20678 var 20679 i = 0, 20680 propCollection = null, 20681 foundValues = false, 20682 basketParams = {}, 20683 obBasketProps = null; 20684 20685 obBasketProps = BX(basket_prop_div); 20686 if(!obBasketProps && that.closest('.item').find('.basket_props_block').length) 20687 obBasketProps = that.closest('.item').find('.basket_props_block')[0]; 20688 20689 if (!!obBasketProps) 20690 { 20691 propCollection = obBasketProps.getElementsByTagName('select'); 20692 if (!!propCollection && !!propCollection.length) 20693 { 20694 for (i = 0; i < propCollection.length; i++) 20695 { 20696 if (!propCollection[i].disabled) 20697 { 20698 switch(propCollection[i].type.toLowerCase()) 20699 { 20700 case 'select-one': 20701 basketParams[propCollection[i].name] = propCollection[i].value; 20702 foundValues = true; 20703 break; 20704 default: 20705 break; 20706 } 20707 } 20708 } 20709 } 20710 propCollection = obBasketProps.getElementsByTagName('input'); 20711 if (!!propCollection && !!propCollection.length) 20712 { 20713 for (i = 0; i < propCollection.length; i++) 20714 { 20715 if (!propCollection[i].disabled) 20716 { 20717 switch(propCollection[i].type.toLowerCase()) 20718 { 20719 case 'hidden': 20720 basketParams[propCollection[i].name] = propCollection[i].value; 20721 foundValues = true; 20722 break; 20723 case 'radio': 20724 if (propCollection[i].checked) 20725 { 20726 basketParams[propCollection[i].name] = propCollection[i].value; 20727 foundValues = true; 20728 } 20729 break; 20730 default: 20731 break; 20732 } 20733 } 20734 } 20735 } 20736 } 20737 if (!foundValues) 20738 { 20739 basketParams[prop_code] = []; 20740 basketParams[prop_code][0] = 0; 20741 } 20742 return basketParams; 20743 } 20744} 20745if(!funcDefined('showBasketError')){ 20746 showBasketError = function(mess, title, addButton, th, callback){
20747 var title_set=(title ? title : BX.message("ERROR_BASKET_TITLE")), 20748 isButton="N", 20749 thButton=""; 20750 if(typeof addButton!==undefined){ 20751 isButton="Y"; 20752 } 20753 if(typeof th!==undefined){ 20754 thButton=th; 20755 } 20756 $("body").append("<span class='add-error-bakset' style='display:none;'></span>"); 20757 jqmEd('basket_error', 'error-bakset', '.add-error-bakset', mess, this, title_set, isButton, thButton); 20758 $("body .add-error-bakset").click(); 20759 $("body .add-error-bakset").remove(); 20760 20761 if(typeof callback === 'function'){ 20762 callback(); 20763 } 20764 } 20765} 20766 20767CheckTopVisibleMenu = function(that) { 20768 var dropdownMenu = $('.dropdown-menu:visible'); 20769 if( that !== undefined ) { 20770 dropdownMenu.push(that); 20771 } 20772 20773 if(dropdownMenu.length){ 20774 dropdownMenu.each(function(i, el) { 20775 var dropdownMenuCurrent = $(el); 20776 dropdownMenuCurrent.find('a').css('white-space', ''); 20777 dropdownMenuCurrent.css('left', ''); 20778 dropdownMenuCurrent.css('right', ''); 20779 dropdownMenuCurrent.removeClass('toright'); 20780 20781 var dropdownMenuCurrent_left = dropdownMenuCurrent.offset().left; 20782 20783 if(typeof(dropdownMenuCurrent_left) != 'undefined'){ 20784 var menu = dropdownMenuCurrent.parents('.mega-menu'); 20785 if(!menu.length) 20786 menu = dropdownMenuCurrent.closest('.logo-row'); 20787 var menu_width = menu.outerWidth(); 20788 var menu_left = menu.offset().left; 20789 var menu_right = menu_left + menu_width; 20790 var isToRight = dropdownMenuCurrent.parents('.toright').length > 0; 20791 var parentsdropdownMenuCurrents = dropdownMenuCurrent.parents('.dropdown-menu'); 20792 var isHasParentdropdownMenuCurrent = parentsdropdownMenuCurrents.length > 0; 20793 if(isHasParentdropdownMenuCurrent){ 20794 var parentdropdownMenuCurrent_width = parentsdropdownMenuCurrents.first().outerWidth(); 20795 var parentdropdownMenuCurrent_left = parentsdropdownMenuCurrents.first().offset().left; 20796 var parentdropdownMenuCurrent_right = parentdropdownMenuCurrent_width + parentdropdownMenuCurrent_left; 20797 } 20798 20799 if(parentdropdownMenuCurrent_right + dropdownMenuCurrent.outerWidth() > menu_right){ 20800 dropdownMenuCurrent.find('a').css('white-space', 'normal'); 20801 } 20802 20803 var dropdownMenuCurrent_width = dropdownMenuCurrent.outerWidth(); 20804 var dropdownMenuCurrent_right = dropdownMenuCurrent_left + dropdownMenuCurrent_width; 20805 20806 if(dropdownMenuCurrent_right > menu_right || isToRight){ 20807 var addleft = 0; 20808 addleft = menu_right - dropdownMenuCurrent_right; 20809 if(isHasParentdropdownMenuCurrent || isToRight){ 20810 dropdownMenuCurrent.css('left', 'auto'); 20811 dropdownMenuCurrent.css('right', '100%'); 20812 dropdownMenuCurrent.addClass('toright'); 20813 } 20814 else{ 20815 var dropdownMenuCurrent_curLeft = parseInt(dropdownMenuCurrent.css('left')); 20816 dropdownMenuCurrent.css('left', (dropdownMenuCurrent_curLeft + addleft) + 'px'); 20817 } 20818 } 20819 } 20820 }); 20821 } 20822} 20823 20824if(!funcDefined("isRealValue")){ 20825 function isRealValue(obj){ 20826 return obj && obj !== "null" && obj!== "undefined"; 20827 } 20828} 20829 20830if(!funcDefined("rightScroll")){ 20831 function rightScroll(prop, id){ 20832 var el = BX('prop_' + prop + '_' + id); 20833 if (el) { 20834 var curVal = parseInt(el.style.marginLeft); 20835 if (curVal >= 0) el.style.marginLeft = curVal - 20 + '%'; 20836 } 20837 } 20838} 20839 20840if(!funcDefined("leftScroll")){ 20841 function leftScroll(prop, id){ 20842 var el = BX('prop_' + prop + '_' + id); 20843 if (el) { 20844 var curVal = parseInt(el.style.marginLeft); 20845 if (curVal < 0) el.style.marginLeft = curVal + 20 + '%'; 20846 } 20847 } 20848} 20849 20850if(!funcDefined("InitOrderCustom")){ 20851 InitOrderCustom = function () { 20852 $('.ps_logo img').wrap('<div class="image"></div>'); 20853 20854 $('#bx-soa-order .radio-inline').each(function() { 20855 if ($(this).find('input').attr('checked') == 'checked') { 20856 $(this).addClass('checked'); 20857 } 20858 }); 20859 20860 $('#bx-soa-order .checkbox input[type=checkbox]').each(function() { 20861 if ($(this).attr('checked') == 'checked') 20862 $(this).parent().addClass('checked'); 20863 }); 20864 20865 $('#bx-soa-order .bx-authform-starrequired').each(function() { 20866 var html = $(this).html(); 20867 $(this).closest('label').append('<span class="bx-authform-starrequired"> '+ html + '</span>'); 20868 $(this).detach(); 20869 }); 20870 $('.bx_ordercart_coupon').each(function() { 20871 if ($(this).find('.bad').length) 20872 $(this).addClass('bad'); 20873 else if ($(this).find('.good').length) 20874 $(this).addClass('good'); 20875 }); 20876 /*if (typeof(propsMap) !== 'undefined') { 20877 $(propsMap).on('click', function () { 20878 var value = $('#orderDescription').val(); 20879 if ($('#orderDescription')) { 20880 if (value != '') { 20881 $('#orderDescription').closest('.form-group').addClass('value_y'); 20882 } 20883 } 20884 }); 20885 }*/ 20886 } 20887} 20888 20889if(!funcDefined("InitLabelAnimation")){ 20890 InitLabelAnimation = function(className) { 20891 // Fix order labels 20892 if (!$(className).length) { 20893 return; 20894 } 20895 $(className).find('.form-group').each(function() { 20896 if ($(this).find('input[type=text], textarea').length && !$(this).find('.dropdown-block').length && $(this).find('input[type=text], textarea').val() != '') { 20897 $(this).addClass('value_y'); 20898 } 20899 }); 20900 20901 $(document).on('click', className+' .form-group:not(.bx-soa-pp-field) label', function() { 20902 $(this).parent().find('input, textarea').focus(); 20903 }); 20904 20905 $(document).on('focusout', className+' .form-group:not(.bx-soa-pp-field) input, '+className+' .form-group:not(.bx-soa-pp-field) textarea', function() { 20906 var value = $(this).val(); 20907 if (value != '' && !$(this).closest('.form-group').find('.dropdown-block').length && !$(this).closest('.form-group').find('#profile_change').length) { 20908 $(this).closest('.form-group').addClass('value_y'); 20909 }else{ 20910 $(this).closest('.form-group').removeClass('value_y'); 20911 } 20912 }); 20913 20914 $(document).on('focus', className+' .form-group:not(.bx-soa-pp-field) input, '+className+' .form-group:not(.bx-soa-pp-field) textarea', function() { 20915 if (!$(this).closest('.form-group').find('.dropdown-block').length && !$(this).closest('.form-group').find('#profile_change').length && !$(this).closest('.form-group').find('[name=PERSON_TYPE_OLD]').length ) { 20916 $(this).closest('.form-group').addClass('value_y'); 20917 } 20918 }); 20919 }; 20920} 20921 20922checkPopupWidth = function(){ 20923 $('.popup.show').each(function() { 20924 var width_form = $(this).actual('width'); 20925 $(this).css({ 20926 'margin-left': ($(window).width() > width_form ? '-' + width_form / 2 + 'px' : '-' + $(window).width() / 2 + 'px'), 20927 }); 20928 }); 20929} 20930 20931checkCaptchaWidth = function(){ 20932 $('.captcha-row').each(function() { 20933 var width = $(this).actual('width'); 20934 if($(this).hasClass('b')){ 20935 if(width > 320){ 20936 $(this).removeClass('b'); 20937 } 20938 } 20939 else{ 20940 if(width <= 320){ 20941 $(this).addClass('b'); 20942 } 20943 } 20944 }); 20945} 20946 20947checkFormWidth = function(){ 20948 $('.form .form_left').each(function() { 20949 var form = $(this).parents('.form'); 20950 var width = form.actual('width'); 20951 if(form.hasClass('b')){ 20952 if(width > 417){ 20953 form.removeClass('b'); 20954 } 20955 } 20956 else{ 20957 if(width <= 417){ 20958 form.addClass('b'); 20959 } 20960 } 20961 }); 20962} 20963 20964checkFormControlWidth = function(){ 20965 $('.form-control').each(function() { 20966 var width = $(this).actual('width'); 20967 var labelWidth = $(this).find('label:not(.error) > span').actual('width'); 20968 var errorWidth = $(this).find('label.error').actual('width'); 20969 if(errorWidth > 0){ 20970 if($(this).hasClass('h')){ 20971 if(width > (labelWidth + errorWidth + 5)){ 20972 $(this).removeClass('h'); 20973 } 20974 } 20975 else{ 20976 if(width <= (labelWidth + errorWidth + 5)){ 20977 $(this).addClass('h'); 20978 } 20979 } 20980 } 20981 else{ 20982 $(this).removeClass('h'); 20983 } 20984 }); 20985} 20986 20987scrollToTop = function(){ 20988 if(arAsproOptions['THEME']['SCROLLTOTOP_TYPE'] !== 'NONE'){ 20989 var _isScrolling = false;
20990 // Append Button 20991 $('body').append($('<a />').addClass('scroll-to-top ' + arAsproOptions['THEME']['SCROLLTOTOP_TYPE'] + ' ' + arAsproOptions['THEME']['SCROLLTOTOP_POSITION']).attr({'href': '#', 'id': 'scrollToTop'})); 20992 20993 if(arAsproOptions['THEME']['SCROLLTOTOP_POSITION_BOTTOM']) { 20994 $('#scrollToTop').css('bottom', +arAsproOptions['THEME']['SCROLLTOTOP_POSITION_BOTTOM']+'px'); 20995 } 20996 20997 if(arAsproOptions['THEME']['SCROLLTOTOP_POSITION_RIGHT']) { 20998 $('#scrollToTop').css('right', +arAsproOptions['THEME']['SCROLLTOTOP_POSITION_RIGHT']+'px'); 20999 } 21000 21001 $('#scrollToTop').click(function(e){ 21002 e.preventDefault(); 21003 $('body, html').animate({scrollTop : 0}, 500); 21004 return false; 21005 }); 21006 // Show/Hide Button on Window Scroll event. 21007 $(window).scroll(function(){ 21008 if(!_isScrolling) { 21009 _isScrolling = true; 21010 if($(window).scrollTop() > 150){ 21011 $('#scrollToTop').stop(true, true).addClass('visible'); 21012 _isScrolling = false; 21013 } 21014 else{ 21015 $('#scrollToTop').stop(true, true).removeClass('visible'); 21016 _isScrolling = false; 21017 } 21018 checkScrollToTop(); 21019 } 21020 }); 21021 } 21022} 21023 21024checkScrollToTop = function(){ 21025 if(arAsproOptions['THEME'] && arAsproOptions['THEME']['SCROLLTOTOP_POSITION_BOTTOM']) 21026 var bottom = +arAsproOptions['THEME']['SCROLLTOTOP_POSITION_BOTTOM']; 21027 else 21028 var bottom = 55; 21029 21030 var scrollVal = $(window).scrollTop(), 21031 windowHeight = $(window).height(), 21032 footerOffset = 0; 21033 if($('footer').length) 21034 footerOffset = $('footer .footer-inner').offset().top; 21035 21036 if(arAsproOptions['THEME'] && arAsproOptions['THEME']['SCROLLTOTOP_POSITION'] == 'CONTENT'){ 21037 warpperWidth = $('body > .wrapper > .wrapper_inner').width(); 21038 $('#scrollToTop').css('margin-left', Math.ceil(warpperWidth / 2) + 23); 21039 } 21040 21041 if(scrollVal + windowHeight > footerOffset){ 21042 $('#scrollToTop').css('bottom', Math.round(bottom + scrollVal + windowHeight - footerOffset) + 'px'); 21043 } 21044 else if(parseInt($('#scrollToTop').css('bottom')) > bottom){ 21045 $('#scrollToTop').css('bottom', Math.round(bottom)); 21046 } 21047} 21048 21049CheckObjectsSizes = function() { 21050 $('.container iframe,.container object,.container video').each(function() { 21051 var height_attr = $(this).attr('height'); 21052 var width_attr = $(this).attr('width'); 21053 if (height_attr && width_attr) { 21054 $(this).css('height', $(this).outerWidth() * height_attr / width_attr); 21055 } 21056 }); 21057} 21058 21059if(!funcDefined('reloadTopBasket')){ 21060 var reloadTopBasket = function reloadTopBasket(action, basketWindow, speed, delay, slideDown, item, sync){ 21061 var obj={ 21062 "PARAMS": $('#top_basket_params').val(), 21063 "ACTION": action 21064 }; 21065 if(typeof item !== "undefined" && item){ 21066 obj.delete_top_item='Y'; 21067 obj.delete_top_item_id=item.data('id'); 21068 } 21069 // $.post( arAsproOptions['SITE_DIR']+"ajax/show_basket_popup.php", obj, $.proxy(function( data ){ 21070 $.post( arAsproOptions['SITE_DIR']+"ajax/show_basket_actual.php", obj, $.proxy(function( data ){ 21071 $(basketWindow).html(data); 21072 21073 getActualBasket('', '', sync); 21074 21075 var eventdata = {action:'loadBasket'}; 21076 BX.onCustomEvent('onCompleteAction', [eventdata]); 21077 21078 /*if(arAsproOptions['THEME']['SHOW_BASKET_ONADDTOCART'] !== 'N'){ 21079 if($(window).outerWidth() > 520){ 21080 if(slideDown=="Y") 21081 $(basketWindow).find('.basket_popup_wrapp').stop(true,true).slideDown(speed); 21082 clearTimeout(basketTimeoutSlide); 21083 basketTimeoutSlide = setTimeout(function() { 21084 var _this = $('#basket_line').find('.basket_popup_wrapp'); 21085 if (_this.is(':hover')) { 21086 _this.show(); 21087 }else{ 21088 $('#basket_line').find('.basket_popup_wrapp').slideUp(speed); 21089 } 21090 },delay); 21091 } 21092 }*/ 21093 })) 21094 } 21095} 21096 21097CheckTabActive = function(){ 21098 if(typeof(clicked_tab) && clicked_tab) 21099 { 21100 if(window.matchMedia('(min-width: 768px)').matches) 21101 { 21102 clicked_tab--; 21103 $('.nav.nav-tabs li').each(function(){ 21104 if($(this).index() == clicked_tab) 21105 $(this).addClass('active'); 21106 }) 21107 // $('.nav.nav-tabs li:eq('+clicked_tab+')').addClass('active'); 21108 $('.catalog_detail .tab-content .tab-pane:eq('+clicked_tab+')').addClass('active'); 21109 $('.catalog_detail .tab-content .tab-pane .title-tab-heading').next().removeAttr('style'); 21110 clicked_tab = 0; 21111 } 21112 } 21113} 21114 21115/*countdown start*/
21116if(!funcDefined('initCountdown')){ 21117 var initCountdown = function initCountdown(){ 21118 if( $('.view_sale_block').size() ){ 21119 $('.view_sale_block').each(function(){ 21120 var activeTo=$(this).find('.active_to').text(), 21121 dateTo= new Date(activeTo.replace(/(\d+)\.(\d+)\.(\d+)/, '$3/$2/$1')); 21122 if($(this).hasClass('compact')) 21123 $(this).find('.countdown').countdown({until: dateTo, format: 'dHMS',compact: true, padZeroes: true, layout: '{d<}<span class="days item">{dn}<div class="text">{dl}</div></span>{d>} <span class="hours item">{hn}<div class="text">{hl}</div></span> <span class="minutes item">{mn}<div class="text">{ml}</div></span> <span class="sec item">{sn}<div class="text">{sl}</div></span>'}, $.countdown.regionalOptions['ru']); 21124 else 21125 $(this).find('.countdown').countdown({until: dateTo, format: 'dHMS', padZeroes: true, layout: '{d<}<span class="days item">{dnn}<div class="text">{dl}</div></span>{d>} <span class="hours item">{hnn}<div class="text">{hl}</div></span> <span class="minutes item">{mnn}<div class="text">{ml}</div></span> <span class="sec item">{snn}<div class="text">{sl}</div></span>'}, $.countdown.regionalOptions['ru']); 21126 }) 21127 } 21128 } 21129} 21130 21131if(!funcDefined('initCountdownTime')){ 21132 var initCountdownTime = function initCountdownTime(block, time){ 21133 if(time) 21134 { 21135 var dateTo= new Date(time.replace(/(\d+)\.(\d+)\.(\d+)/, '$3/$2/$1')); 21136 block.find('.countdown').countdown('destroy'); 21137 if(block.hasClass('compact')) 21138 block.find('.countdown').countdown({until: dateTo, format: 'dHM',compact: true, padZeroes: true, layout: '{d<}<span class="days item">{dn}<div class="text">{dl}</div></span>{d>} <span class="hours item">{hn}<div class="text">{hl}</div></span> <span class="minutes item">{mn}<div class="text">{ml}</div></span> <span class="sec item">{sn}<div class="text">{sl}</div></span>'}, $.countdown.regionalOptions['ru']); 21139 else 21140 block.find('.countdown').countdown({until: dateTo, format: 'dHMS', padZeroes: true, layout: '{d<}<span class="days item">{dnn}<div class="text">{dl}</div></span>{d>} <span class="hours item">{hnn}<div class="text">{hl}</div></span> <span class="minutes item">{mnn}<div class="text">{ml}</div></span> <span class="sec item">{snn}<div class="text">{sl}</div></span>'}, $.countdown.regionalOptions['ru']); 21141 block.find('.view_sale_block').show(); 21142 } 21143 else 21144 { 21145 block.find('.view_sale_block').hide(); 21146 } 21147 } 21148} 21149/*countdown end*/ 21150 21151waitCounter = function(idCounter, delay, callback){
21152 var obCounter = window['yaCounter' + idCounter]; 21153 if(typeof obCounter == 'object') 21154 { 21155 if(typeof callback == 'function') 21156 callback(); 21157 21158 } 21159 else 21160 { 21161 setTimeout(function(){ 21162 waitCounter(idCounter, delay, callback); 21163 }, delay); 21164 } 21165} 21166 21167var isOnceInited = insertFilter = false; 21168var animationTime = 200; 21169var delayTime = 200; 21170var topMenuEnterTimer = false; 21171var previewMode = (window!=window.top) 21172var isMobile = ((jQuery.browser.mobile || previewMode) && window.matchMedia('(max-width:767px)').matches) || window.matchMedia('(max-width:400px)').matches; 21173 21174if(isMobile) 21175 document.documentElement.className += ' mobile'; 21176if(previewMode) 21177 document.documentElement.className += ' previewMode'; 21178 21179if(navigator.userAgent.indexOf("Edge") != -1) 21180 document.documentElement.className += ' bx-ie-edge'; 21181 21182/*filter start*/ 21183if(!funcDefined('checkVerticalMobileFilter')){ 21184 var checkVerticalMobileFilter = function checkVerticalMobileFilter(){ 21185 /*if($('.right_block1.catalog.vertical').length && !$('.left_block.filter_ajax').length) 21186 { 21187 if(typeof window['trackBarOptions'] !== 'undefined') 21188 { 21189 window['trackBarValues'] = {} 21190 for(key in window['trackBarOptions']) 21191 { 21192 window['trackBarValues'][key] = { 21193 'leftPercent': window['trackBar' + key].leftPercent, 21194 'leftValue': window['trackBar' + key].minInput.value, 21195 'rightPercent': window['trackBar' + key].rightPercent, 21196 'rightValue': window['trackBar' + key].maxInput.value, 21197 } 21198 } 21199 } 21200 21201 if(window.matchMedia('(max-width: 991px)').matches) 21202 { 21203 if(!insertFilter) 21204 { 21205 $('.js_filter .bx_filter.bx_filter_vertical').html($('.left_block .bx_filter.bx_filter_vertical').html()); 21206 $('.left_block .bx_filter.bx_filter_vertical .bx_filter_section').remove(); 21207 insertFilter=true; 21208 } 21209 } 21210 else 21211 { 21212 if(insertFilter) 21213 { 21214 $('.left_block .bx_filter.bx_filter_vertical').html($('.js_filter .bx_filter.bx_filter_vertical').html()); 21215 $('.js_filter .bx_filter.bx_filter_vertical .bx_filter_section').remove(); 21216 insertFilter=false; 21217 } 21218 } 21219 21220 if(typeof window['trackBarOptions'] !== 'undefined') 21221 { 21222 for(key in window['trackBarOptions']) 21223 { 21224 window['trackBarOptions'][key].leftPercent = window['trackBarValues'][key].leftPercent; 21225 window['trackBarOptions'][key].rightPercent = window['trackBarValues'][key].rightPercent; 21226 window['trackBarOptions'][key].curMinPrice = window['trackBarValues'][key].leftValue; 21227 window['trackBarOptions'][key].curMaxPrice = window['trackBarValues'][key].rightValue; 21228 window['trackBar' + key] = new BX.Iblock.SmartFilter(window['trackBarOptions'][key]); 21229 window['trackBar' + key].minInput.value = window['trackBarValues'][key].leftValue; 21230 window['trackBar' + key].maxInput.value = window['trackBarValues'][key].rightValue; 21231 } 21232 } 21233 } 21234 else if($('.visible_mobile_filter').length) 21235 { 21236 var posTopBlock = BX.pos($('.detail.partners')[0]), 21237 posBlock = $('.ajax_load').position(); 21238 // $('.visible_mobile_filter').css('top', posBottomBlock.top-posTopBlock.top); 21239 $('.visible_mobile_filter').css('top', posBlock.top); 21240 21241 }*/ 21242 } 21243} 21244/*filter end*/ 21245 21246// ONE CLICK 21247if(!funcDefined("oneClickBuy")) { 21248 var oneClickBuy = function (elementID, iblockID, that) { 21249 var name = 'one_click_buy'; 21250 var elementQuantity = 1; 21251 var offerProps = false; 21252 var buy_btn=$(that).closest('.buy_block').find('.to-cart'); 21253 var buy_btn2=$(that).closest('tr').find('.to-cart'); 21254 21255 if(typeof(that) !== 'undefined'){ 21256 elementQuantity = $(that).attr('data-quantity'); 21257 offerProps = $(that).attr('data-props'); 21258 } 21259 21260 if(elementQuantity < 0){ 21261 elementQuantity = 1; 21262 } 21263 21264 var tmp_props=buy_btn.data("props"), 21265 tmp_props2=buy_btn2.data("props"), 21266 props='', 21267 part_props='', 21268 add_props='N', 21269 fill_prop={}, 21270 iblockid = buy_btn.data('iblockid'), 21271 item = buy_btn.attr('data-item'); 21272 21273 if(tmp_props){ 21274 props=tmp_props.split(";"); 21275 }else if(tmp_props2){ 21276 props=tmp_props2.split(";"); 21277 } 21278 if(buy_btn.data("part_props")){ 21279 part_props=buy_btn.data("part_props"); 21280 } 21281 if(buy_btn.data("add_props")){ 21282 add_props=buy_btn.data("add_props"); 21283 } 21284 21285 fill_prop=fillBasketPropsExt(buy_btn, 'prop', buy_btn.data('bakset_div')); 21286 fill_prop.iblockID=iblockid; 21287 fill_prop.part_props=part_props; 21288 fill_prop.add_props=add_props; 21289 fill_prop.props=JSON.stringify(props); 21290 fill_prop.item=item; 21291 fill_prop.ocb_item="Y"; 21292 21293 if(!isMobile) 21294 { 21295 if(!$(that).hasClass('clicked')) 21296 { 21297 $(that).addClass('clicked'); 21298 $('body').find('.'+name+'_frame').remove(); 21299 $('body').find('.'+name+'_trigger').remove(); 21300 $('body #popup_iframe_wrapper').append('<div class="'+name+'_frame popup"></div>'); 21301 $('body #popup_iframe_wrapper').append('<div class="'+name+'_trigger"></div>'); 21302 $('.'+name+'_frame').jqm({trigger: '.'+name+'_trigger', onHide: function(hash) { onHidejqm(name,hash); }, toTop: false, onLoad: function( hash ){ onLoadjqm(name, hash ); }
21302, ajax: arAsproOptions["SITE_DIR"]+'ajax/one_click_buy.php?ELEMENT_ID='+elementID+'&IBLOCK_ID='+iblockID+'&ELEMENT_QUANTITY='+elementQuantity+'&OFFER_PROPS='+fill_prop.props}); 21303 $('.'+name+'_trigger').click(); 21304 } 21305 } 21306 else 21307 { 21308 var script = arAsproOptions['SITE_DIR'] + 'form/'; 21309 script += '?name='+name+'&form_id=ocb&path='+window.location.pathname+'&ELEMENT_ID='+elementID+'&IBLOCK_ID='+iblockID+'&ELEMENT_QUANTITY='+elementQuantity+'&OFFER_PROPS='+fill_prop.props 21310 location.href = script; 21311 } 21312 } 21313} 21314 21315if(!funcDefined("oneClickBuyBasket")) { 21316 var oneClickBuyBasket = function () { 21317 name = 'one_click_buy_basket'; 21318 if(!isMobile) 21319 { 21320 if(!$('.fast_order').hasClass('clicked')) 21321 { 21322 $('.fast_order').addClass('clicked'); 21323 $('body').find('.'+name+'_frame').remove(); 21324 $('body').find('.'+name+'_trigger').remove(); 21325 $('body #popup_iframe_wrapper').append('<div class="'+name+'_frame popup"></div>'); 21326 $('body #popup_iframe_wrapper').append('<div class="'+name+'_trigger"></div>'); 21327 $('.'+name+'_frame').jqm({trigger: '.'+name+'_trigger', onHide: function(hash) { onHidejqm(name,hash) }, onLoad: function( hash ){ onLoadjqm( name, hash ); }, ajax: arAsproOptions["SITE_DIR"]+'ajax/one_click_buy_basket.php'}); 21328 $('.'+name+'_trigger').click(); 21329 } 21330 } 21331 else 21332 { 21333 var script = arAsproOptions['SITE_DIR'] + 'form/'; 21334 script += '?name='+name+'&form_id=ocb&path='+window.location.pathname+'&buy_basket=y'; 21335 location.href = script; 21336 } 21337 } 21338} 21339 21340// TOP MENU ANIMATION 21341$(document).on('click', '.menu_top_block>li .more a', function(){ 21342 $this = $(this); 21343 $this.parents('.dropdown').first().find('>.hidden').removeClass('hidden'); 21344 $this.parent().addClass('hidden'); 21345 setTimeout(function(){ 21346 $this.parent().remove(); 21347 }, 500); 21348}); 21349 21350$(document).on('mouseenter', '.menu_top_block.catalogfirst>li>.dropdown>li.full', function(){ 21351 var $submenu = $(this).find('>.dropdown'); 21352 21353 if($submenu.length){ 21354 if(topMenuEnterTimer){ 21355 clearTimeout(topMenuEnterTimer); 21356 topMenuEnterTimer = false; 21357 } 21358 } 21359}); 21360 21361$(document).on('mouseenter', '.menu_top_block>li:not(.full)', function(){ 21362 var $submenu = $(this).find('>.dropdown'); 21363 21364 if($submenu.length && !$submenu.hasClass('visible')){ 21365 var $menu = $(this).parents('.menu'); 21366 var $wrapmenu = $menu.parents('.wrap_menu'); 21367 var wrapMenuWidth = $wrapmenu.actual('outerWidth'); 21368 var wrapMenuLeft = $wrapmenu.offset().left; 21369 var wrapMenuRight = wrapMenuLeft + wrapMenuWidth; 21370 var left = wrapMenuRight - ($(this).offset().left + $submenu.actual('outerWidth')); 21371 if(window.matchMedia('(min-width: 951px)').matches && $(this).hasClass('catalog') && ( $('.banner_auto').hasClass('catalog_page') || $('.banner_auto').hasClass('front_page'))){ 21372 return; 21373 } 21374 if(left < 0){ 21375 $submenu.css({left: left + 'px'}); 21376 } 21377 $submenu.stop().slideDown(animationTime, function(){ 21378 $submenu.css({height: '', 'overflow':'visible'}); 21379 }); 21380 21381 21382 $(this).on('mouseleave', function(){ 21383 var leaveTimer = setTimeout(function(){ 21384 $submenu.stop().slideUp(animationTime, function(){ 21385 $submenu.css({left: ''}); 21386 }); 21387 }, delayTime); 21388 21389 $(this).on('mouseenter', function(){ 21390 if(leaveTimer){ 21391 clearTimeout(leaveTimer); 21392 leaveTimer = false; 21393 } 21394 }); 21395 }); 21396 } 21397}); 21398 21399$(document).on('mouseenter', '.menu_top_block>li .dropdown>li', function(){ 21400 var $this = $(this); 21401 var $submenu = $this.find('>.dropdown'); 21402 21403 if($submenu.length && ((!$this.parents('.full').length && !$this.hasClass('full')) || $this.parents('.more').length)){ 21404 var $menu = $this.parents('.menu'); 21405 var $wrapmenu = $menu.parents('.wrap_menu'); 21406 var arParentSubmenuForOpacity = []; 21407 topMenuEnterTimer = setTimeout(function(){ 21408 21409 var wrapMenuWidth = $wrapmenu.actual('outerWidth'); 21410 var wrapMenuLeft = $wrapmenu.offset().left; 21411 var wrapMenuRight = wrapMenuLeft + wrapMenuWidth; 21412 var $parentSubmenu = $this.parent(); 21413 var bToLeft = $parentSubmenu.hasClass('toleft') ? true : false; 21414 if(!bToLeft){ 21415 bToLeft = $this.offset().left + $this.actual('outerWidth') + $submenu.actual('outerWidth') > wrapMenuRight; 21416 } 21417 else{ 21418 bToLeft = $this.offset().left + $this.actual('outerWidth') - $submenu.actual('outerWidth') < wrapMenuLeft; 21419 } 21420 21421 if(bToLeft){ 21422 $this.find('>.dropdown').addClass('toleft').show(); 21423 } 21424 else{ 21425 $this.find('>.dropdown').removeClass('toleft').show(); 21426 } 21427 var submenuLeft = $submenu.offset().left; 21428 var submenuRight = submenuLeft + $submenu.actual('outerWidth'); 21429 21430 $this.parents('.dropdown').each(function(){ 21431 var $this = $(this); 21432 var leftOffset = $this.offset().left; 21433 var rightOffset = leftOffset + $this.actual('outerWidth'); 21434 if(leftOffset >= submenuLeft && leftOffset < (submenuRight - 1) || (rightOffset > (submenuLeft + 1) && rightOffset <= submenuRight)){ 21435 arParentSubmenuForOpacity.push($this); 21436 $this.find('>li>a').css({opacity: '0.1'}); 21437 } 21438 }); 21439 }, delayTime); 21440 21441 $this.unbind('mouseleave'); 21442 $this.on('mouseleave', function(){ 21443 var leaveTimer = setTimeout(function(){ 21444 $this.find('.dropdown').removeClass('toleft').hide(); 21445 if(arParentSubmenuForOpacity.length){ 21446 for(i in arParentSubmenuForOpacity){ 21447 arParentSubmenuForOpacity[i].find('>li>a').css({opacity: ''}); 21448 } 21449 } 21450 }, delayTime); 21451 21452 $this.unbind('mouseenter'); 21453 $this.on('mouseenter', function(){ 21454 if(leaveTimer){ 21455 clearTimeout(leaveTimer); 21456 leaveTimer = false;
21457 } 21458 }); 21459 }); 21460 } 21461}); 21462 21463/*hover animate*/ 21464 //breadcrumbs 21465 $(document).on('mouseenter', '.breadcrumbs .breadcrumbs__item, .hover-block .hover-block__item', function () { 21466 var _this = $(this), 21467 menu = _this.find('> .breadcrumbs__dropdown-wrapper, > .hover-block__item-wrapper'); 21468 21469 menu.velocity('stop').velocity('transition.slideUpIn', { 21470 duration: 300, 21471 delay: 100 21472 }); 21473 21474 _this.one('mouseleave', function () { 21475 21476 menu.velocity('stop').velocity('fadeOut', { 21477 duration: 100, 21478 // delay: 0 21479 }); 21480 }); 21481 }); 21482 21483 //top menu 21484 $(document).on('mouseenter', '.menu .mega-menu table td, .menu-row .mega-menu table td', function(){ 21485 21486 var _this = $(this), 21487 menu = _this.find('> .wrap > .dropdown-menu'); 21488 21489 if(!_this.hasClass('wide_menu')) 21490 { 21491 menu.show(); 21492 CheckTopVisibleMenu(); 21493 } 21494 21495 var bDarkness = $('.wrapper1.dark-hover-overlay').length > 0; 21496 21497 menu.velocity('stop'); 21498 21499 if(menu.css('opacity') != 0) 21500 { 21501 menu.css('opacity' , '1'); 21502 if(bDarkness) { 21503 $('.shadow-block').css('opacity' , '1'); 21504 } 21505 } 21506 else 21507 { 21508 // menu.velocity('stop').velocity('transition.perspectiveDownIn', { 21509 // menu.velocity('stop').velocity('transition.slideUpBigIn', { 21510 // menu.velocity('transition.expandIn', { 21511 menu.velocity('fadeIn', { 21512 begin: function(elements) { 21513 CheckTopVisibleMenu(); 21514 }, 21515 duration: 150, 21516 delay: 250, 21517 complete: function(){ 21518 if(bDarkness) { 21519 $('body').addClass('menu-hovered'); 21520 if(!$('.shadow-block').length) 21521 $('<div class="shadow-block"></div>').appendTo($('body')); 21522 $('.shadow-block').velocity('stop').velocity('fadeIn', 200); 21523 } 21524 21525 var bannerMenu = $('.dropdown-menu.with_right_block .owl-carousel-hover'); 21526 if(bannerMenu.length) { 21527 bannerMenu.removeClass('owl-carousel-hover').addClass('owl-carousel'); 21528 setTimeout(function() { 21529 InitOwlSlider(); 21530 bannerMenu.removeClass('loader_circle'); 21531 }, 1); 21532 } 21533 } 21534 }); 21535 } 21536 21537 _this.one('mouseleave', function(){ 21538 menu.velocity('stop').velocity('fadeOut', { 21539 duration: 50, 21540 delay: 300, 21541 complete: function(){ 21542 if(bDarkness) { 21543 $('.shadow-block').velocity('stop').velocity('fadeOut', { 21544 duration: 200, 21545 // delay: 100, 21546 complete: function(){ 21547 $('body').removeClass('menu-hovered'); 21548 } 21549 }); 21550 } 21551 } 21552 }); 21553 }); 21554 }); 21555/**/ 21556 21557$(document).on('mouseenter', '.menu-item:not(.wide_menu) .dropdown-menu .dropdown-submenu', function(){ 21558 var _this = $(this), 21559 menu = _this.find('> .dropdown-menu'); 21560 21561 menu.velocity('stop'); 21562 21563 if(menu.css('opacity') != 0) 21564 { 21565 menu.css('opacity' , '1'); 21566 } 21567 else 21568 { 21569 menu.velocity('transition.fadeIn', { 21570 begin: function(element) { 21571 $(element).css('display', 'block'); 21572 CheckTopVisibleMenu(); 21573 }, 21574 duration: 300, 21575 delay: 250 21576 }); 21577 } 21578 21579 _this.one('mouseleave', function(){ 21580 menu.velocity('stop').velocity('fadeOut', { 21581 duration: 150, 21582 delay: 300 21583 }); 21584 }); 21585}) 21586 21587/*register custom velocity animate*/ 21588if(typeof $.Velocity !== undefined && ('RegisterEffect' in $.Velocity)) 21589{ 21590 var effects = { 21591 "transition.slideDownFullIn": { 21592 defaultDuration: 900, 21593 calls: [[{ opacity: [1, 0], translateY: [0, '-100%'], translateZ: 0}]] 21594 }, 21595 "transition.slideDownFullOut": { 21596 defaultDuration: 900, 21597 calls: [[{ opacity: [0.4, 1], translateY: ['-100%', 0], translateZ: 0 }]] 21598 } 21599 }; 21600 21601 for(var effectName in effects) 21602 { 21603 if(effects.hasOwnProperty(effectName)) 21604 { 21605 $.Velocity.RegisterEffect(effectName, effects[effectName]); 21606 } 21607 } 21608} 21609/**/ 21610 21611getGridSize = function(counts,slider) { 21612 var counts_item=1; 21613 //wide 21614 if(window.matchMedia('(min-width: 1200px)').matches){ 21615 counts_item=counts[0]; 21616 if(typeof(slider.data('lg_count')) !== 'undefined' && slider.data('lg_count') && $('.front.wide_page').length) 21617 counts_item=slider.data('lg_count'); 21618 } 21619 21620 //large 21621 if(window.matchMedia('(max-width: 1200px)').matches){ 21622 counts_item=counts[1]; 21623 } 21624 21625 //middle 21626 if(window.matchMedia('(max-width: 992px)').matches){ 21627 counts_item=counts[2]; 21628 } 21629 21630 //small 21631 if(counts[3]){ 21632 if(window.matchMedia('(max-width: 600px)').matches){ 21633 counts_item=counts[3]; 21634 } 21635 } 21636 21637 //exsmall 21638 if(counts[4]){ 21639 if(window.matchMedia('(max-width: 400px)').matches){ 21640 counts_item=counts[4]; 21641 } 21642 } 21643 return counts_item; 21644} 21645
21646CheckFlexSlider = function(){ 21647 $('.flexslider:not(.thmb)').each(function(){ 21648 var slider = $(this); 21649 if(typeof(slider.data('flexslider')) != 'undefined') 21650 { 21651 if('vars' in slider.data('flexslider')) 21652 { 21653 slider.resize(); 21654 21655 var counts = slider.data('flexslider').vars.counts; 21656 if(typeof(counts) != 'undefined' && slider.is(':visible')){ 21657 var cnt = getGridSize(counts,slider); 21658 var to0 = (cnt != slider.data('flexslider').vars.minItems || cnt != slider.data('flexslider').vars.maxItems || cnt != slider.data('flexslider').vars.move); 21659 if(to0){ 21660 slider.data('flexslider').vars.minItems = cnt; 21661 slider.data('flexslider').vars.maxItems = cnt; 21662 slider.data('flexslider').vars.move = cnt; 21663 slider.flexslider(0); 21664 slider.resize(); 21665 slider.resize(); // twise! 21666 } 21667 } 21668 } 21669 } 21670 }); 21671} 21672 21673$.fn.mCustomScrollbarDeferred = function(config){ 21674 $(this).addClass('scroll-init'); 21675 21676 if ($(this).hasClass('destroyed')) { 21677 return; 21678 } 21679 21680 21681 $(this).hover( 21682 function(e){ 21683 var $this = $(this); 21684 if(!$this.hasClass('mCustomScrollbar') && !$(this).hasClass('destroyed')){ 21685 $this.data('scrollTimer', setTimeout(function(){ 21686 $this.mCustomScrollbar(config); 21687 $this.off('touchstart touchmove touchend mousewheel mouseenter mouseleave'); 21688 }, 200)); 21689 } 21690 }, 21691 function(e){ 21692 clearTimeout($(this).data('scrollTimer')); 21693 } 21694 ); 21695 21696 $(this).on('touchstart touchmove', function(e){ 21697 var $this = $(this); 21698 if(!$this.hasClass('mCustomScrollbar') && !$(this).hasClass('destroyed')){ 21699 $this.mCustomScrollbar(config); 21700 } 21701 21702 var $scrollContainer = $this.find('>.mCustomScrollBox>.mCSB_container'); 21703 if($scrollContainer.length){ 21704 var touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0]; 21705 21706 var newTouch = new Touch({ 21707 identifier: 42, 21708 target: $scrollContainer[0], 21709 clientX: touch.clientX, 21710 clientY: touch.clientY, 21711 screenX: touch.screenX, 21712 screenY: touch.screenY, 21713 pageX: touch.pageX, 21714 pageY: touch.pageY, 21715 radiusX: 1, 21716 radiusY: 1 21717 }); 21718 21719 var newEvent = new TouchEvent(e.type, { 21720 cancelable: true, 21721 bubbles: false, 21722 composed: true, 21723 touches: [newTouch], 21724 targetTouches: [newTouch], 21725 changedTouches: [newTouch] 21726 }); 21727 21728 $scrollContainer[0].dispatchEvent(newEvent); 21729 } 21730 }); 21731 21732 $(this).on('touchend', function(e){ 21733 $(this).off('touchstart touchmove touchend mousewheel mouseenter mouseleave'); 21734 }); 21735 21736 if($.event.special.mousewheel){ 21737 $(this).on('mousewheel', function(e){ 21738 var $this = $(this); 21739 if(!$this.hasClass('mCustomScrollbar') && !$(this).hasClass('destroyed')){ 21740 $this.mCustomScrollbar(config); 21741 $this.off('touchstart touchmove touchend mousewheel mouseenter mouseleave'); 21742 } 21743 }); 21744 } 21745} 21746 21747InitScrollBar= function(el, initOptions) { 21748 var block; 21749 if(typeof el === 'undefined'){ 21750 block = $('.srollbar-custom:not(.mobile-scroll):not(.scroll-init)'); 21751 } 21752 else{ 21753 block = el.filter(':not(.scroll-init)'); 21754 } 21755 21756 if(block.length){ 21757 block.addClass('scroll-init'); 21758 21759 var options, 21760 defaults = { 21761 mouseWheel: { 21762 scrollAmount: 150, 21763 preventDefault: true 21764 } 21765 }; 21766 var config = $.extend({}, defaults, options, block.data('plugin-options'), initOptions); 21767 21768 config.callbacks = { 21769 onScroll:function(){ 21770 if($(this).find('.mCSB_buttonLeft').hasClass('disabled')) 21771 $(this).find('.mCSB_buttonLeft').removeClass('disabled'); 21772 if($(this).find('.mCSB_buttonRight').hasClass('disabled')) 21773 $(this).find('.mCSB_buttonRight').removeClass('disabled'); 21774 }, 21775 onTotalScrollBack:function(){ 21776 $(this).find('.mCSB_buttonLeft').addClass('disabled'); 21777 }, 21778 onTotalScroll:function(){ 21779 $(this).find('.mCSB_buttonRight').addClass('disabled'); 21780 }, 21781 onInit:function(){ 21782 $(this).find('.mCSB_buttonLeft').addClass('disabled'); 21783 } 21784 }; 21785 21786 block.filter(':not(.scroll-deferred)').mCustomScrollbar(config); 21787 block.filter('.scroll-deferred').mCustomScrollbarDeferred(config); 21788 } 21789} 21790 21791InitCustomScrollBar = function(el) { 21792 var block; 21793 if(typeof el === 'undefined'){ 21794 block = $('.scrollbar:not(.mobile-scroll):not(.scroll-init)'); 21795 } 21796 else{ 21797 block = el.filter(':not(.scroll-init)'); 21798 } 21799 21800 if(block.length){ 21801 block.addClass('scroll-init'); 21802 21803 var options, 21804 defaults = { 21805 effect : 'fadeIn', 21806 effectTime : 300, 21807 threshold: 0 21808 // threshold: 30 21809 }; 21810 21811 var config = $.extend({}, defaults, options, block.data('plugin-options')); 21812 21813 block.filter(':not(.scroll-deferred)').mCustomScrollbar(config); 21814 block.filter('.scroll-deferred').mCustomScrollbarDeferred(config); 21815 } 21816} 21817 21818InitFancyBox = function() { 21819 $('.fancy').fancybox({ 21820 padding: [40,40,64,40], 21821 openEffect : 'fade', 21822 closeEffect : 'fade', 21823 nextEffect : 'fade', 21824 prevEffect : 'fade', 21825 opacity: true, 21826 tpl:{ 21827 closeBtn: '<span title="'+BX.message('FANCY_CLOSE')+'" class="fancybox-item fancybox-close inline svg"><svg class="svg svg-close" width="14" height="14" viewBox="0 0 14 14"><path data-name="Rounded Rectangle 568 copy 16" d="M1009.4,953l5.32,5.315a0.987,0.987,0,0,1,0,1.4,1,1,0,0,1-1.41,0L1008,954.4l-5.32,5.315a0.991,0.991,0,0,1-1.4-1.4L1006.6,953l-5.32-5.315a0.991,0.991,0,0,1,1.4-1.4l5.32,5.315,5.31-5.315a1,1,0,0,1,1.41,0,0.987,0.987,0,0,1,0,1.4Z" transform="translate(-1001 -946)"></path></svg></span>', 21828 next : '<a title="'+BX.message('FANCY_NEXT')+'" class="fancybox-nav fancybox-next" href="javascript:;"><span></span></a>', 21829 prev : '<a title="'+BX.message('FANCY_PREV')+'" class="fancybox-nav fancybox-prev" href="javascript:;"><span></span></a>' 21830 }, 21831 touch: 'enabled', 21832 buttons: [ 21833 // "zoom", 21834 //"share", 21835 // "slideShow", 21836 //"fullScreen", 21837 //"download", 21838 // "thumbs", 21839 "close" 21840 ], 21841 backFocus: false, 21842 beforeShow: function(event){ 21843 if(!$('.cd-modal-bg').hasClass('is-visible')){ 21844 var scaleValue = retrieveScale($('.cd-modal-bg')); 21845 21846 $('.cd-modal-bg').show().addClass('is-visible').one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function(){ 21847 animateLayer($('.cd-modal-bg'), scaleValue, true); 21848 }); 21849 } 21850 var video_block = $('.company-block source.video-block'); 21851 if(video_block.length) 21852 { 21853 if(video_block.attr('src') == '#') { 21854 var video_block_wrapper = video_block.closest('video'); 21855 var video_block_clone = video_block_wrapper.clone(); 21856 21857 video_block_clone.find('source').attr('src', video_block_clone.find('source').data('src')); 21858 video_block.attr('src', video_block.data('src')); 21859 video_block_clone.insertAfter(video_block_wrapper); 21860 video_block_clone.siblings('video').remove(); 21861 } 21862 } 21863 var video_block_frame = $('.company-block #company_video_iframe'); 21864 if(video_block_frame.length) 21865 { 21866 var data_src_iframe = video_block_frame.attr("data-src"); 21867 video_block_frame.attr("src", data_src_iframe); 21868 video_block_frame.attr("allow", 'autoplay'); 21869 } 21870 // $('.detail .galery .overlay_form').hide(); 21871 }, 21872 afterShow: function(){ 21873 if($('.fancybox-overlay').css('opacity') == 0){ 21874 setTimeout(function(){ 21875 $('.fancybox-overlay').css('opacity', 1); 21876 $('html').addClass('overflow_html'); 21877 }, 200); 21878 } 21879 21880 $('.fancybox-nav').css('opacity', 0); 21881 setTimeout(function(){ 21882 $('.fancybox-nav').css('opacity', 1); 21883 }, 150); 21884 if($('.fancybox-inner #company_video').length) 21885 { 21886 // var fancyHeight = $('.fancybox-wrap').height(); 21887 // $('.fancybox-inner').height(fancyHeight); 21888 setTimeout(function(){ 21889 $('.fancybox-wrap video').resize(); 21890 setTimeout(function(){ 21891 $('.fancybox-wrap').addClass('show_video'); 21892 document.getElementById('company_video').currentTime = 0; 21893 document.getElementById('company_video').play(); 21894 }, 300); 21895 }, 150); 21896 } 21897 else if($('.fancybox-wrap iframe').length) 21898 { 21899 $('.fancybox-inner').height('100%'); 21900 } 21901 }, 21902 beforeClose: function(){ 21903 closeModal(); 21904 $('.fancybox-overlay').fadeOut(); 21905 if($('#company_video').length){ 21906 document.getElementById('company_video').currentTime = 0; 21907 } 21908 $('html').removeClass('overflow_html'); 21909 var video_block_frame = $('.company-block .video-block'); 21910 if(video_block_frame.length) 21911 { 21912 $("#company_video_iframe").attr("src", ''); 21913 21914 } 21915 }, 21916 onClosed: function(){ 21917 if($('.fancybox-wrap #company_video').length){ 21918 document.getElementById('company_video').pause(); 21919 } 21920 }, 21921 }); 21922} 21923 21924InitFancyBoxVideo = function() { 21925 $(".video_link").fancybox({ 21926 type: "iframe", 21927 maxWidth : 800, 21928 maxHeight : 600, 21929 fitToView : false, 21930 width : '70%', 21931 height : '70%', 21932 autoSize : false, 21933 closeClick : false, 21934 opacity: true, 21935 tpl:{ 21936 closeBtn: '<span title="'+BX.message('FANCY_CLOSE')+'" class="fancybox-item fancybox-close inline svg"><svg class="svg svg-close" width="14" height="14" viewBox="0 0 14 14"><path data-name="Rounded Rectangle 568 copy 16" d="M1009.4,953l5.32,5.315a0.987,0.987,0,0,1,0,1.4,1,1,0,0,1-1.41,0L1008,954.4l-5.32,5.315a0.991,0.991,0,0,1-1.4-1.4L1006.6,953l-5.32-5.315a0.991,0.991,0,0,1,1.4-1.4l5.32,5.315,5.31-5.315a1,1,0,0,1,1.41,0,0.987,0.987,0,0,1,0,1.4Z" transform="translate(-1001 -946)"></path></svg></span>', 21937 next : '<a title="'+BX.message('FANCY_NEXT')+'" class="fancybox-nav fancybox-next" href="javascript:;"><span></span></a>', 21938 prev : '<a title="'+BX.message('FANCY_PREV')+'" class="fancybox-nav fancybox-prev" href="javascript:;"><span></span></a>' 21939 }, 21940 beforeShow: function(event){ 21941 if(!$('.cd-modal-bg').hasClass('is-visible')){ 21942 var scaleValue = retrieveScale($('.cd-modal-bg')); 21943 21944 $('.cd-modal-bg').show().addClass('is-visible').one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function(){ 21945 animateLayer($('.cd-modal-bg'), scaleValue, true); 21946 }); 21947 } 21948 }, 21949 afterShow: function(){ 21950 if($('.fancybox-overlay').css('opacity') == 0){ 21951 setTimeout(function(){ 21952 $('.fancybox-overlay').css('opacity', 1); 21953 $('html').addClass('overflow_html'); 21954 }, 200); 21955 } 21956 21957 $('.fancybox-nav').css('opacity', 0); 21958 setTimeout(function(){ 21959 $('.fancybox-nav').css('opacity', 1); 21960 }, 150); 21961 if($('.fancybox-wrap iframe').length) 21962 { 21963 $('.fancybox-inner').height('100%'); 21964 } 21965 }, 21966 beforeClose: function(){ 21967 closeModal(); 21968 $('.fancybox-overlay').fadeOut(); 21969 $('html').removeClass('overflow_html'); 21970 }, 21971 }); 21972} 21973 21974InitStickySideBar = function(el, container_el) { 21975 var block = '.sticky-sidebar',
21976 container_catalog = '.wraps .wrapper_inner .container_inner .main-catalog-wrapper', 21977 container = '.wraps .wrapper_inner .container_inner'; 21978 if(typeof el !== 'undefined') 21979 block = el; 21980 21981 if($(container_catalog).length) 21982 container = container_catalog; 21983 21984 if(typeof container_el !== 'undefined') 21985 container = container_el; 21986 21987 if($(block).length && arAsproOptions['THEME']['STICKY_SIDEBAR'] != 'N') 21988 { 21989 if(typeof window['stickySidebar'] !== 'undefined') 21990 { 21991 window['stickySidebar'].destroy(); 21992 } 21993 21994 window['stickySidebar'] = new StickySidebar(block, { 21995 topSpacing: 60, 21996 bottomSpacing: 20, 21997 containerSelector: container, 21998 resizeSensor: true, 21999 innerWrapperSelector: '.sticky-sidebar__inner' 22000 }); 22001 22002 if($('.sticky-sidebar .sticky-sidebar__inner .banner img').length) 22003 { 22004 $('.sticky-sidebar .sticky-sidebar__inner .banner img').load(function(){ 22005 if(typeof window['stickySidebar'] !== 'undefined') 22006 { 22007 window['stickySidebar'].updateSticky(); 22008 } 22009 }) 22010 } 22011 } 22012} 22013 22014InitOwlSlider = function() { 22015 $('.owl-carousel:not(.owl-loaded):not(.appear-block)').each(function(){ 22016 var slider = $(this); 22017 var options; 22018 var svg = '<svg xmlns="http://www.w3.org/2000/svg" width="12" height="6.969" viewBox="0 0 12 6.969"><path id="Rounded_Rectangle_702_copy_24" data-name="Rounded Rectangle 702 copy 24" class="cls-1" d="M361.691,401.707a1,1,0,0,1-1.414,0L356,397.416l-4.306,4.291a1,1,0,0,1-1.414,0,0.991,0.991,0,0,1,0-1.406l5.016-5a1.006,1.006,0,0,1,1.415,0l4.984,5A0.989,0.989,0,0,1,361.691,401.707Z" transform="translate(-350 -395.031)"/></svg>'; 22019 var defaults = { 22020 navText: [ 22021 '<i class="svg left colored_theme_hover_text">'+svg+'</i>', 22022 '<i class="svg right colored_theme_hover_text">'+svg+'</i>', 22023 ] 22024 } 22025 var config = $.extend({}, defaults, options, slider.data('plugin-options')); 22026 22027 slider.on('initialized.owl.carousel', function(event) { 22028 22029 var eventdata = {slider: event}; 22030 BX.onCustomEvent('onSliderInitialized', [eventdata]); 22031 22032 $(event.target).removeClass('loading-state'); 22033 $(event.target).find('.owl-item:first').addClass('current'); 22034 22035 if(typeof (sliceItemBlockSlide) === "function"){ 22036 sliceItemBlockSlide(); 22037 } 22038 22039 }) 22040 slider.owlCarousel(config); 22041 22042 slider.on('change.owl.carousel', function(event) { 22043 var eventdata = {slider: event}; 22044 BX.onCustomEvent('onSlideChange', [eventdata]); 22045 22046 }) 22047 slider.on('resized.owl.carousel', function(event) { 22048 if(typeof (sliceItemBlockSlide) === "function"){ 22049 sliceItemBlockSlide({resize: false}); 22050 } 22051 }) 22052 22053 22054 22055 slider.on('changed.owl.carousel', function(event) { 22056 var eventdata = {slider: event}; 22057 BX.onCustomEvent('onSlideChanged', [eventdata]); 22058 22059 if($(event.target).data('pluginOptions')) 22060 { 22061 if(('index' in $(event.target).data('pluginOptions'))) 22062 { 22063 if($('.switch-item-block').length) 22064 { 22065 $('.switch-item-block__count-wrapper--big .switch-item-block__count-value').text(event.item.index+1+'/'+event.item.count); 22066 } 22067 } 22068 22069 if(('relatedTo' in $(event.target).data('pluginOptions'))) 22070 { 22071 // console.log(event); 22072 22073 var relatedClass = $(event.target).data('pluginOptions').relatedTo, 22074 relatedBlock = $(relatedClass); 22075 22076 if(relatedBlock.length && $(event.target).data('owl.carousel')) 22077 { 22078 // console.log($(event.target).data()) 22079 if(!$(event.target).data('owl.carousel').loop) 22080 { 22081 var current = event.item.index; 22082 } 22083 else 22084 { 22085 var count = event.item.count-1; 22086 var current = Math.round(event.item.index - (event.item.count/2) - .5); 22087 22088 if(current < 0) 22089 current = count; 22090 22091 if(current > count) 22092 current = 0; 22093 } 22094 22095 relatedBlock 22096 .find(".owl-item") 22097 .removeClass("current") 22098 .eq(current) 22099 .addClass("current"); 22100 22101 var onscreen = relatedBlock.find('.owl-item.active').length - 1; 22102 var start = relatedBlock.find('.owl-item.active').first().index(); 22103 var end = relatedBlock.find('.owl-item.active').last().index(); 22104 22105 22106 if (current > end) 22107 relatedBlock.data('owl.carousel').to(current, 100, true); 22108 22109 if (current < start) 22110 relatedBlock.data('owl.carousel').to(current - onscreen, 100, true); 22111 // $(".owl-slider-"+id).trigger('to.owl.carousel', [itemCarousel]) 22112 } 22113 } 22114 } 22115 }) 22116 22117 slider.on('translated.owl.carousel', function(event) { 22118 }) 22119 22120 if(('clickTo' in config)) 22121 { 22122 var relatedClass = config.clickTo, 22123 magnifier = ('magnifier' in config); 22124 22125 slider.on("click", ".owl-item", function(e){ 22126 e.preventDefault(); 22127 var _this = $(this), 22128 number = _this.index(); 22129 22130 if(magnifier) 22131 { 22132 if($(relatedClass).closest('.product-container').find('.zoom_picture').length) 22133 { 22134 $(relatedClass).closest('.product-container').find('.zoom_picture').attr('data-large', _this.find('.product-detail-gallery__item').data('big')); 22135 $(relatedClass).closest('.product-container').find('.zoom_picture').attr('xoriginal', _this.find('.product-detail-gallery__item').data('big')); 22136 $(relatedClass).closest('.product-container').find('.zoom_picture').attr('src', _this.find('.product-detail-gallery__item img').attr('src')); 22137 } 22138 _this.siblings('').removeClass('current'); 22139 _this.addClass('current'); 22140 } 22141 else 22142 { 22143 $(relatedClass).data('owl.carousel').to(number, 300, true); 22144 } 22145 }); 22146 } 22147 }); 22148} 22149 22150InitFlexSlider = function() { 22151 // return; 22152 $('.flexslider:not(.thmb):not(.flexslider-init):not(.appear-block)').each(function(){ 22153 var slider = $(this); 22154 var options; 22155 var defaults = { 22156 animationLoop: false, 22157 controlNav: false, 22158 keyboard: false, 22159 pauseOnAction: false, 22160 pauseInvisible: false, 22161 directionNav: true,
22162 useCSS: false, 22163 animation: "slide" 22164 } 22165 var config = $.extend({}, defaults, options, slider.data('plugin-options')); 22166 if(!slider.parent().hasClass('top_slider_wrapp') && slider.is(':visible')){ 22167 if(typeof(config.counts) != 'undefined' && config.direction !== 'vertical'){ 22168 config.maxItems = getGridSize(config.counts,slider); 22169 config.minItems = getGridSize(config.counts,slider); 22170 config.itemWidth = 200; 22171 } 22172 if(typeof(config.move) == 'undefined') 22173 config.move = 1; 22174 22175 config.start = function(slider){ 22176 var eventdata = {slider: slider}; 22177 BX.onCustomEvent('onSlideInit', [eventdata]); 22178 } 22179 22180 config.after = function(slider){ 22181 var eventdata = {slider: slider}; 22182 BX.onCustomEvent('onSlideComplete', [eventdata]); 22183 } 22184 22185 config.end = function(slider){ 22186 var eventdata = {slider: slider}; 22187 BX.onCustomEvent('onSlideEnd', [eventdata]); 22188 } 22189 slider.flexslider(config).addClass('flexslider-init'); 22190 if(config.controlNav) 22191 slider.addClass('flexslider-control-nav'); 22192 if(config.directionNav) 22193 slider.addClass('flexslider-direction-nav'); 22194 } 22195 }); 22196} 22197 22198InitFlexSliderByClass = function($class) { 22199 if($class.hasClass('flexslider-init')) 22200 return; 22201 var slider = $class; 22202 var options; 22203 var defaults = { 22204 animationLoop: false, 22205 controlNav: false, 22206 keyboard: false, 22207 pauseOnAction: false, 22208 pauseInvisible: false, 22209 directionNav: true, 22210 useCSS: false, 22211 animation: "slide" 22212 } 22213 var config = $.extend({}, defaults, options, slider.data('plugin-options')); 22214 if(!slider.parent().hasClass('top_slider_wrapp') && slider.is(':visible')){ 22215 if(typeof(config.counts) != 'undefined' && config.direction !== 'vertical'){ 22216 config.maxItems = getGridSize(config.counts,slider); 22217 config.minItems = getGridSize(config.counts,slider); 22218 config.itemWidth = 200; 22219 } 22220 if(typeof(config.move) == 'undefined') 22221 config.move = 1; 22222 22223 config.start = function(slider){ 22224 var eventdata = {slider: slider}; 22225 BX.onCustomEvent('onSlideInit', [eventdata]); 22226 } 22227 22228 config.after = function(slider){ 22229 var eventdata = {slider: slider}; 22230 BX.onCustomEvent('onSlideComplete', [eventdata]); 22231 } 22232 22233 config.end = function(slider){ 22234 var eventdata = {slider: slider}; 22235 BX.onCustomEvent('onSlideEnd', [eventdata]); 22236 } 22237 22238 slider.flexslider(config).addClass('flexslider-init'); 22239 if(config.controlNav) 22240 slider.addClass('flexslider-control-nav'); 22241 if(config.directionNav) 22242 slider.addClass('flexslider-direction-nav'); 22243 } 22244} 22245 22246inIframe = function (){ 22247 try { 22248 return window.self !== window.top; 22249 } catch (e) { 22250 return true; 22251 } 22252} 22253 22254InitZoomPict = function(el) { 22255 var block = $('.zoom_picture'); 22256 if(typeof el !== 'undefined') 22257 block = el; 22258 if(block.length){ 22259 var zoomer = block, 22260 options, 22261 defaults = { 22262 zoomWidth: 200, 22263 zoomHeight: 200, 22264 adaptive: false, 22265 title: true, 22266 Xoffset: 15, 22267 22268 }; 22269 var config = $.extend({}, defaults, options, zoomer.data('plugin-options')); 22270 zoomer.xzoom(config); 22271 22272 block.on('mouseleave', function(){ 22273 block.data('xzoom').movezoom(event); 22274 }) 22275 } 22276} 22277 22278var arBasketAsproCounters = arStatusBasketAspro = arBasketPrices = {}; 22279SetActualBasketFlyCounters = function(sync){ 22280 if(arBasketAsproCounters.DEFAULT == true){ 22281 $.ajax({ 22282 url: arAsproOptions['SITE_DIR'] + 'ajax/basket_fly.php', 22283 type: 'post', 22284 success: function(html){ 22285 $('#basket_line .basket_fly').removeClass('loaded').html(html); 22286 22287 if(typeof sync !== 'undefined') 22288 { 22289 $.ajax({ 22290 type:"GET", 22291 url:arAsproOptions['SITE_DIR']+"ajax/actualBasket.php", 22292 // data:data, 22293 success: function(data){ 22294 if(!$('.js_ajax').length) 22295 $('body').append('<div class="js_ajax"></div>'); 22296 $('.js_ajax').html(data); 22297 22298 setBasketStatusBtn(true); 22299 22300 } 22301 }); 22302 } 22303 } 22304 }); 22305 } 22306 else{ 22307 // insert currency ₽ by this hack!: $('<div/>').html(arBasketAsproCounters.READY.TITLE).text() 22308 $('.basket_fly .opener .basket_count .count').attr('class', 'count' + (arBasketAsproCounters.READY.COUNT > 0 ? '' : ' empty_items')).find('.items span').text(arBasketAsproCounters.READY.COUNT) 22309 $('.basket_fly .opener .basket_count + a').attr('href', arBasketAsproCounters['READY']['HREF']) 22310 $('.basket_fly .opener .basket_count').attr('title', $('<div/>').html(arBasketAsproCounters.READY.TITLE).text()).attr('class', 'colored_theme_hover_text basket_count small clicked' + (arBasketAsproCounters.READY.COUNT > 0 ? '' : ' empty')) 22311 22312 $('.basket_fly .opener .wish_count .count').attr('class', 'count' + (arBasketAsproCounters.DELAY.COUNT > 0 ? '' : ' empty_items')).find('.items span').text(arBasketAsproCounters.DELAY.COUNT) 22313 $('.basket_fly .opener .wish_count + a').attr('href', arBasketAsproCounters.DELAY.HREF) 22314 $('.basket_fly .opener .wish_count').attr('title', $('<div/>').html(arBasketAsproCounters.DELAY.TITLE).text()).attr('class', 'colored_theme_hover_text wish_count small clicked' + (arBasketAsproCounters.DELAY.COUNT > 0 ? '' : ' empty')) 22315 22316 $('.basket_fly .opener .compare_count .wraps_icon_block').attr('class', 'wraps_icon_block compare' + (arBasketAsproCounters.COMPARE.COUNT > 0 ? '' : ' empty_block')); 22317 $('.basket_fly .opener .compare_count .count').attr('class', 'count' + (arBasketAsproCounters.COMPARE.COUNT > 0 ? '' : ' empty_items')).find('.items span').text(arBasketAsproCounters.COMPARE.COUNT) 22318 $('.basket_fly .opener .compare_count + a').attr('href', arBasketAsproCounters.COMPARE.HREF) 22319 22320 updateBottomIconsPanel(arBasketAsproCounters); 22321 } 22322} 22323 22324CheckHeaderFixed = function(){ 22325 var header = $('header, body.simple_basket_mode #header').first(), 22326 header_fixed = $('#headerfixed, body.simple_basket_mode #header'), 22327 header_simple = $('body.simple_basket_mode #header'); 22328 22329 if(header_fixed.length){ 22330 if(header.length){ 22331 var isHeaderFixed = false, 22332 isTabsFixed = false, 22333 headerCanFix = true, 22334 headerFixedHeight = header_fixed.actual('outerHeight'), 22335 headerNormalHeight = header.actual('outerHeight'), 22336 headerDiffHeight = headerNormalHeight - headerFixedHeight, 22337 mobileBtnMenu = $('.btn.btn-responsive-nav'), 22338 headerTop = $('#panel:visible').actual('outerHeight'), 22339 topBlock = $('.TOP_HEADER').first(), 22340 $headerFixedNlo = header_fixed.find('[data-nlo]'), 22341 isNloLoaded = !$headerFixedNlo.length, 22342 OnHeaderFixedScrollHandler; 22343 22344 if(headerDiffHeight <= 0) 22345 headerDiffHeight = 0; 22346 22347 if(topBlock.length) 22348 headerTop += topBlock.actual('outerHeight'); 22349 22350 $(window).scroll(OnHeaderFixedScrollHandler = function(){ 22351 var tabs_fixed = $('.product-item-detail-tabs-container-fixed'); 22352 22353 if(window.matchMedia('(min-width:992px)').matches){ 22354 var scrollTop = $(window).scrollTop(), 22355 current_is = $('.search-wrapper .search-input:visible'), 22356 tabs = $('.ordered-block .nav.nav-tabs'), 22357 headerCanFix = !mobileBtnMenu.is(':visible')/* && !$('.dropdown-menu:visible').length*/; 22358 22359 if(!isHeaderFixed){ 22360 if( 22361 headerCanFix && 22362 (scrollTop > headerNormalHeight + headerTop) 22363 ){ 22364 if(!isNloLoaded){ 22365 if(!$headerFixedNlo.hasClass('nlo-loadings')){ 22366 $headerFixedNlo.addClass('nlo-loadings'); 22367 setTimeout(function(){ 22368 $.ajax({ 22369 data: {nlo: $headerFixedNlo.attr('data-nlo')}, 22370 success: function(response){ 22371 // stop ya metrika webvisor DOM indexer 22372 pauseYmObserver(); 22373 22374 isNloLoaded = true; 22375 $headerFixedNlo[0].insertAdjacentHTML('beforebegin', $.trim(response)); 22376 $headerFixedNlo.remove(); 22377 22378 InitMenuNavigationAim(); 22379 OnHeaderFixedScrollHandler(); 22380 22381 // init custom scroll 22382 $('#headerfixed .mega-menu table td.wide_menu .customScrollbar').mCustomScrollbarDeferred({ 22383 mouseWheel: { 22384 scrollAmount: 150, 22385 preventDefault: true 22386 } 22387 }); 22388 22389 // resume ya metrika webvisor 22390 // (300ms transition) + (100ms scroll handler) 22391 setTimeout(resumeYmObserver, 400); 22392 }, 22393 error:function(){ 22394 $headerFixedNlo.removeClass('nlo-loadings'); 22395 } 22396 }); 22397 }, 300); 22398 } 22399 } 22400 else{ 22401 isHeaderFixed = true; 22402 if(header_simple.length) { 22403 headerSimpleHeight = header_simple.actual('outerHeight'); 22404 header_simple.closest('.header_wrap').css({'margin-top': headerSimpleHeight}); 22405 } 22406 header_fixed.addClass('fixed'); 22407 22408 $('nav.mega-menu.sliced.initied').removeClass('initied'); 22409 CheckTopMenuDotted(); 22410 } 22411 } 22412 } 22413 if( 22414 isHeaderFixed || 22415 !headerCanFix 22416 ){ 22417 if( 22418 !headerCanFix || 22419 (scrollTop <= headerDiffHeight + headerTop) 22420 ){ 22421 isHeaderFixed = false;
22422 header_fixed.removeClass('fixed'); 22423 if(header_simple.length) { 22424 header_simple.closest('.header_wrap').css({'margin-top': ''}); 22425 } 22426 } 22427 } 22428 22429 //fixed tabs 22430 if(tabs_fixed.length && tabs.length){ 22431 var tabs_offset = $('.ordered-block .nav.nav-tabs').offset(); 22432 if(scrollTop + headerFixedHeight > tabs_offset.top){ 22433 tabs_fixed.css({'top': header_fixed.actual('outerHeight')}); 22434 tabs_fixed.addClass('fixed'); 22435 22436 header_fixed.addClass('tabs-fixed'); 22437 } 22438 else if(tabs_fixed.hasClass('fixed')){ 22439 tabs_fixed.removeAttr('style'); 22440 tabs_fixed.removeClass('fixed'); 22441 22442 header_fixed.removeClass('tabs-fixed'); 22443 } 22444 } 22445 } 22446 }); 22447 } 22448 } 22449 22450 //mobile fixed 22451 var headerSimple = $('body.simple_basket_mode .wrapper1.mfixed_Y #header'); 22452 var mfixed = headerSimple.length ? headerSimple : $('.wrapper1.mfixed_Y #mobileheader'); 22453 if(mfixed.length && isMobile) 22454 { 22455 var isMHeaderFixed = false, 22456 mheaderCanFix = true, 22457 mheaderFixedHeight = mfixed.actual('outerHeight'), 22458 // mheaderFixedHeight = 0, 22459 mheaderTop = $('#panel:visible').actual('outerHeight'), 22460 mHeaderScrollTop = $('.wrapper1').hasClass('mfixed_view_scroll_top'); 22461 $(window).scroll(function(){ 22462 var scrollTop = $(window).scrollTop(); 22463 if(window.matchMedia('(max-width:991px)').matches) 22464 { 22465 if(mHeaderScrollTop) 22466 { 22467 if(scrollTop > startScroll) 22468 { 22469 if(!$("#mobilePhone.show").length){ 22470 mfixed.removeClass('fixed'); 22471 if(headerSimple.length) { 22472 headerSimple.closest('.header_wrap').css({'margin-top': ''}); 22473 } 22474 } 22475 } 22476 else if(scrollTop > mheaderFixedHeight + mheaderTop){ 22477 mfixed.addClass('fixed'); 22478 if(headerSimple.length) { 22479 headerSimple.closest('.header_wrap').css({'margin-top': mheaderFixedHeight}); 22480 } 22481 } 22482 else if(scrollTop <= mheaderFixedHeight + mheaderTop){ 22483 mfixed.removeClass('fixed'); 22484 if(headerSimple.length) { 22485 headerSimple.closest('.header_wrap').css({'margin-top': ''}); 22486 } 22487 } 22488 startScroll = scrollTop; 22489 } 22490 else 22491 { 22492 if(!isMHeaderFixed) 22493 { 22494 if((scrollTop > mheaderFixedHeight + mheaderTop)) 22495 { 22496 isMHeaderFixed = true; 22497 mfixed.addClass('fixed'); 22498 if(headerSimple.length) { 22499 headerSimple.closest('.header_wrap').css({'margin-top': mheaderFixedHeight}); 22500 } 22501 } 22502 } 22503 else if(isMHeaderFixed) 22504 { 22505 if((scrollTop <= mheaderFixedHeight + mheaderTop)) 22506 { 22507 isMHeaderFixed = false; 22508 mfixed.removeClass('fixed'); 22509 if(headerSimple.length) { 22510 headerSimple.closest('.header_wrap').css({'margin-top': ''}); 22511 } 22512 } 22513 } 22514 } 22515 } 22516 else { 22517 mfixed.removeClass('fixed'); 22518 if(headerSimple.length) { 22519 headerSimple.closest('.header_wrap').css({'margin-top': ''}); 22520 } 22521 } 22522 }) 22523 } 22524} 22525 22526CheckHeaderFixedMenu = function(){ 22527 if(arAsproOptions['THEME'] && arAsproOptions['THEME']['HEADER_FIXED'] == 2 && $('#headerfixed .js-nav').length && window.matchMedia('(min-width: 992px)').matches) 22528 { 22529 $('#headerfixed .js-nav').css('width','0'); 22530 var all_width = 0, 22531 cont_width = $('#headerfixed .maxwidth-theme').actual('width'), 22532 padding_menu = $('#headerfixed .logo-row.v2 .menu-block').actual('outerWidth')-$('#headerfixed .logo-row.v2 .menu-block').actual('width'); 22533 $('#headerfixed .logo-row.v2 > .inner-table-block').each(function(){ 22534 if(!$(this).hasClass('menu-block')) 22535 all_width += $(this).actual('outerWidth'); 22536 }) 22537 $('#headerfixed .js-nav').width(cont_width-all_width-padding_menu); 22538 } 22539} 22540 22541CheckSearchWidth = function(){ 22542 if($('.logo_and_menu-row .search_wrap').length){ 22543 var searchPosition = $('.logo_and_menu-row .search_wrap').position().left, 22544 maxWidth = $('.logo_and_menu-row .maxwidth-theme').width() - 2; 22545 width = 0; 22546 if($('.logo_and_menu-row .subtop .search_wrap').length) 22547 { 22548 maxWidth = $('.logo_and_menu-row .subtop').width() - 2; 22549 $('.logo_and_menu-row .subtop > .row >div >div').each(function(){ 22550 if(!$(this).hasClass('search_wrap')){ 22551 var elementWidth = $(this).outerWidth(); 22552 if(!$(this).is(':visible') || !$(this).height()) 22553 elementWidth = 0; 22554 width = (width ? width - elementWidth : maxWidth - elementWidth); 22555 } 22556 }).promise().done(function(){ 22557 if($('.logo_and_menu-row .search_wrap.wide_search').length) 22558 $('.logo_and_menu-row .search_wrap .search-block').outerWidth(width); 22559 else 22560 $('.logo_and_menu-row .search_wrap').outerWidth(width); 22561 $('.logo_and_menu-row .search_wrap').css({'opacity': 1, 'visibility': 'visible'}); 22562 }); 22563 } 22564 else 22565 {
22566 if($('.logo_and_menu-row .subbottom .search_wrap').length) 22567 { 22568 maxWidth = $('.logo_and_menu-row .subbottom').width() - 2; 22569 $('.logo_and_menu-row .subbottom >div').each(function(){ 22570 if(!$(this).hasClass('search_wrap')){ 22571 var elementWidth = $(this).outerWidth(); 22572 if(!$(this).is(':visible') || !$(this).height()) 22573 elementWidth = 0; 22574 width = (width ? width - elementWidth : maxWidth - elementWidth); 22575 } 22576 }).promise().done(function(){ 22577 if($('.logo_and_menu-row .search_wrap.wide_search').length) 22578 $('.logo_and_menu-row .search_wrap .search-block').outerWidth(width); 22579 else 22580 $('.logo_and_menu-row .search_wrap').outerWidth(width); 22581 $('.logo_and_menu-row .search_wrap').css({'opacity': 1, 'visibility': 'visible'}); 22582 }); 22583 } 22584 else 22585 { 22586 $('.logo_and_menu-row .maxwidth-theme > .row >div >div').each(function(){ 22587 if(!$(this).hasClass('search_wrap')){ 22588 var elementWidth = $(this).outerWidth(); 22589 if(!$(this).is(':visible') || !$(this).height()) 22590 elementWidth = 0; 22591 width = (width ? width - elementWidth : maxWidth - elementWidth); 22592 } 22593 }).promise().done(function(){ 22594 if($('.logo_and_menu-row .search_wrap.wide_search').length) 22595 $('.logo_and_menu-row .search_wrap .search-block').outerWidth(width); 22596 else 22597 $('.logo_and_menu-row .search_wrap').outerWidth(width); 22598 $('.logo_and_menu-row .search_wrap').css({'opacity': 1, 'visibility': 'visible'}); 22599 }); 22600 } 22601 } 22602 } 22603} 22604 22605lazyLoadPagenBlock = function(){ 22606 setTimeout(function(){ 22607 if ($('.with-load-block .ajax_load_btn:not(.appear-block)').length) { 22608 $('.with-load-block .ajax_load_btn:not(.appear-block)').appear(function(){ 22609 var $this = $(this); 22610 $this.addClass('appear-block').trigger('click'); 22611 22612 }, {accX: 0, accY: 200}) 22613 } 22614 }, 200) 22615} 22616 22617scrollPreviewBlock = function(){ 22618 if(typeof($.cookie('scroll_block')) != 'undefined' && $.cookie('scroll_block')) 22619 { 22620 var scroll_block = $($.cookie('scroll_block')); 22621 if(scroll_block.length) 22622 { 22623 $('body, html').animate({scrollTop: scroll_block.offset().top}, 500); 22624 } 22625 $.cookie('scroll_block', null); 22626 } 22627} 22628 22629scrollToBlock = function(block){ 22630 if($(block).length) 22631 { 22632 var offset = $(block).offset().top; 22633 if(typeof($(block).data('toggle')) != 'undefined') 22634 $(block).click(); 22635 22636 if(typeof($(block).data('offset')) != 'undefined') 22637 offset += $(block).data('offset'); 22638 22639 $('body, html').animate({scrollTop: offset}, 500); 22640 } 22641} 22642 22643checkMenuLines = function(){ 22644 if($('.front_page .menu-row .left_border').length || $('.front_page .menu-row .right_border').length) 22645 { 22646 var positionMenu = ($('.centered .menu-row .mega-menu table').length ? $('.centered .menu-row .mega-menu table').offset().left : 0), 22647 varFixLineWidth = ($('body').hasClass('with_decorate') && window.matchMedia('(min-width: 1100px)').matches ? 126 : 7); 22648 22649 $('.menu-row .left_border, .menu-row .right_border').css('width', positionMenu - varFixLineWidth); 22650 } 22651} 22652 22653SetFixedAskBlock = function(){ 22654 if($('.ask_a_question_wrapper').length) 22655 { 22656 var offset = $('.ask_a_question_wrapper').offset(), 22657 footer_offset = 0, 22658 block = $('.ask_a_question_wrapper').find('.ask_a_question'), 22659 block_offset = BX.pos(block[0]), 22660 block_height = block_offset.bottom-block_offset.top, 22661 diff_top_scroll = $('#headerfixed').height() + 20; 22662 22663 if($('footer').length) 22664 footer_offset = $('footer').offset().top; 22665 22666 if($('.banner.CONTENT_BOTTOM').length) 22667 footer_offset = $('.banner.CONTENT_BOTTOM').offset().top; 22668 22669 /* removed for ISSUE NEXT-414 22670 if(block_height+130 > block.closest('.fixed_wrapper').height()) 22671 block.addClass('nonfixed'); 22672 else 22673 block.removeClass('nonfixed'); 22674 */ 22675 22676 if(block_height+diff_top_scroll+documentScrollTopLast + 130 > footer_offset) 22677 { 22678 block.removeClass('fixed').css({'top': 'auto', 'width': 'auto', 'bottom': 0}); 22679 block.parent().css('position', 'static'); 22680 block.parent().parent().css('position', 'static'); 22681 } 22682 else 22683 { 22684 block.parent().removeAttr('style'); 22685 block.parent().parent().removeAttr('style'); 22686 22687 if(documentScrollTopLast + diff_top_scroll > offset.top) 22688 { 22689 var fixed_width = $('.fixed_block_fix').width(); 22690 block.addClass('fixed').css({'top': diff_top_scroll, 'bottom': 'auto'}); 22691 if(fixed_width) 22692 block.css({'width': $('.fixed_block_fix').width()}) 22693 } 22694 else 22695 block.removeClass('fixed').css({'top': 0, 'width': 'auto'}); 22696 } 22697 } 22698} 22699 22700MegaMenuFixed = function(){ 22701 var animationTime = 150, 22702 $megaFixedNlo = $('.mega_fixed_menu').find('[data-nlo]'); 22703 22704 $('header .burger, #headerfixed .burger').on('click', function(){ 22705 if($megaFixedNlo.length){ 22706 if(!$megaFixedNlo.hasClass('nlo-loadings')){ 22707 $megaFixedNlo.addClass('nlo-loadings'); 22708 setTimeout(function(){ 22709 $.ajax({ 22710 data: {nlo: $megaFixedNlo.attr('data-nlo')}, 22711 success: function(response){ 22712 $megaFixedNlo[0].insertAdjacentHTML('beforebegin', $.trim(response)); 22713 $megaFixedNlo.remove(); 22714 }, 22715 error:function(){ 22716 $megaFixedNlo.removeClass('nlo-loadings'); 22717 } 22718 }); 22719 }, 300); 22720 } 22721 } 22722 22723 $('.mega_fixed_menu').fadeIn(animationTime); 22724 //$('.header_wrap').toggleClass('zindexed'); 22725 $('.mega_fixed_menu').mCustomScrollbarDeferred({ 22726 mouseWheel: { 22727 scrollAmount: 150, 22728 preventDefault: true 22729 } 22730 }); 22731 }); 22732 22733 $('.mega_fixed_menu .svg.svg-close').on('click', function(){ 22734 $(this).closest('.mega_fixed_menu').fadeOut(animationTime); 22735 //$('.header_wrap').toggleClass('zindexed'); 22736 }); 22737 22738 $('.mega_fixed_menu .dropdown-menu .arrow').on('click', function(e){ 22739 e.preventDefault(); 22740 e.stopPropagation(); 22741 $(this).closest('.dropdown-submenu').find('.dropdown-menu').slideToggle(animationTime); 22742 $(this).closest('.dropdown-submenu').addClass('opened'); 22743 }); 22744} 22745 22746CheckPopupTop = function(){ 22747 // var popup = $('.jqmWindow.show:last'); 22748 // if(!popup.length) 22749 // popup = $('.jqmWindow.show'); 22750 // if(!popup.length) 22751 // popup = $('.jqm-init.show'); 22752 // if(popup.length){ 22753 // var documentScollTop = $(document).scrollTop(); 22754 // var windowHeight = $(window).height(); 22755 // var popupTop = parseInt(popup.css('top')); 22756 // var popupHeight = popup.height(); 22757 22758 // if(windowHeight >= popupHeight){ 22759 // // center 22760 // popupTop = (windowHeight - popupHeight) / 2; 22761 // } 22762 // else{ 22763 // if(documentScollTop > documentScrollTopLast){ 22764 // // up 22765 // popupTop -= documentScollTop - documentScrollTopLast; 22766 // } 22767 // else if(documentScollTop < documentScrollTopLast){ 22768 // // down 22769 // popupTop += documentScrollTopLast - documentScollTop; 22770 // } 22771 22772 // if(popupTop + popupHeight < windowHeight){ 22773 // // bottom 22774 // popupTop = windowHeight - popupHeight; 22775 // } 22776 // else if(popupTop > 0){ 22777 // // top 22778 // popupTop = 0; 22779 // } 22780 // } 22781 // popup.css('top', popupTop + 'px'); 22782 // } 22783} 22784 22785AjaxClickLink = function(e){ 22786 var _this = '', 22787 container = $('.js-load-wrapper'), 22788 container_inner = $('.js-load-wrapper').find('.ajax_load'), 22789 dopAction = ''; 22790 url = ''; 22791 if ('preventDefault' in e) { 22792 e.preventDefault();
22793 _this = ($(e.target).hasClass('js-load-link') ? $(e.target) : $(e.target).closest('.js-load-link')) 22794 } 22795 else 22796 { 22797 _this = $(e); 22798 dopAction = 'Y'; 22799 } 22800 22801 if (container.length) { 22802 var objUrl = parseUrlQuery(), 22803 obGetData = {"ajax_get_filter": "Y", "control_ajax": "Y"}; 22804 22805 obGetData.bitrix_include_areas = 'N'; 22806 22807 if ('clear_cache' in objUrl) { 22808 if (objUrl.clear_cache == 'Y') { 22809 obGetData.clear_cache = 'Y'; 22810 } 22811 } 22812 22813 if (container_inner.length) { 22814 container_inner.addClass('loading-state'); 22815 } else { 22816 container.addClass('loading-state'); 22817 } 22818 22819 if (_this.data('url')) { 22820 url = _this.data('url'); 22821 } 22822 22823 if (_this.data('click_block') && $(_this.data('click_block')).length) { 22824 if ($(_this.data('click_block')).data('url')) { 22825 url = $(_this.data('click_block')).data('url'); 22826 } 22827 } 22828 22829 if (dopAction) { 22830 BX.PopupWindowManager.getCurrentPopup().close(); 22831 $('.bx_filter_select_popup ul li .sort_btn').removeClass('current'); 22832 _this.addClass('current'); 22833 _this.closest('.bx_filter_block').find('.bx_filter_select_text').text(_this.text()); 22834 } 22835 22836 $('.bx_filter .bx_sort_filter .bx_filter_select_text').text(_this.text()); 22837 $('.bx_filter .bx_sort_filter .bx_filter_select_popup ul li span.current').removeClass('current'); 22838 $('.bx_filter .bx_sort_filter .bx_filter_select_popup ul li').eq(_this.parent().index()).find('span').addClass('current'); 22839 22840 $.ajax({ 22841 url: url, 22842 data: obGetData, 22843 success: function(html){ 22844 container.html(html); 22845 22846 if(container_inner.length) 22847 container_inner.removeClass('loading-state'); 22848 else 22849 container.removeClass('loading-state'); 22850 22851 initAnimateLoad(); 22852 22853 var eventdata = {action: 'jsLoadBlock'} 22854 BX.onCustomEvent('onCompleteAction', [eventdata, _this]); 22855 22856 initSelects(document); 22857 InitCustomScrollBar(); 22858 InitScrollBar(); 22859 22860 if(window.FilterHelper !== undefined) { 22861 FilterHelper.resultDiv = $('#filter-helper'); 22862 FilterHelper.show(); 22863 } 22864 } 22865 }) 22866 } 22867} 22868 22869initCalculatePreview = function(){ 22870 $('.calculate-delivery.with_preview:not(.inited)').each(function(){ 22871 var $this = $(this); 22872 var $calculateSpan = $this.find('span[data-event=jqm]'); 22873 var $preview = $this.find('.calculate-delivery-preview'); 22874 22875 $this.addClass('inited'); 22876 $this.appear(function(){ 22877 22878 if($calculateSpan.length){ 22879 if(typeof window['calculate-delivery-preview-index'] === 'undefined'){ 22880 window['calculate-delivery-preview-index'] = 1001; 22881 } 22882 else{ 22883 ++window['calculate-delivery-preview-index']; 22884 } 22885 22886 var productId = $calculateSpan.attr('data-param-product_id') * 1; 22887 var quantity = $calculateSpan.attr('data-param-quantity') * 1; 22888 22889 if(productId > 0){ 22890 var areaIndexSended = window['calculate-delivery-preview-index']; 22891 $calculateSpan.data({areaIndex: areaIndexSended}); 22892 22893 $.ajax({ 22894 url: arAsproOptions['SITE_DIR'] + 'ajax/delivery.php', 22895 type: 'POST', 22896 data: { 22897 is_preview: 'Y', 22898 index: areaIndexSended, 22899 product_id: productId, 22900 quantity: quantity 22901 }, 22902 beforeSend: function(){ 22903 $this.addClass('loadings'); 22904 }, 22905 success: function(response){ 22906 var areaIndex = $calculateSpan.data('areaIndex'); 22907 if(typeof areaIndex !== 'undefined' && areaIndex == areaIndexSended){ 22908 $calculateSpan.hide(); 22909 $preview.html(response); 22910 if(!$preview.find('.catalog-delivery-preview').length){ 22911 $preview.empty(); 22912 $calculateSpan.show(); 22913 } 22914 } 22915 }, 22916 error: function(xhr, ajaxOptions, thrownError){ 22917 }, 22918 complete: function(){ 22919 var areaIndex = $calculateSpan.data('areaIndex'); 22920 if(typeof areaIndex !== 'undefined' && areaIndex == areaIndexSended){ 22921 $this.removeClass('loadings'); 22922 } 22923 } 22924 }); 22925 } 22926 } 22927 22928 }, {accX: 0, accY: 0}); 22929 }); 22930} 22931 22932/*set price item*/ 22933if(!funcDefined('setPriceItem')){ 22934 var setPriceItem = function setPriceItem(main_block, quantity, rewrite_price, check_quantity, is_sku, show_percent, percent){ 22935 var old_quantity = main_block.find('.to-cart').attr('data-ratio'), 22936 value = (typeof rewrite_price !== 'undefined' && rewrite_price ? rewrite_price : main_block.find('.to-cart').attr('data-value')), 22937 currency = main_block.find('.to-cart').attr('data-currency'), 22938 total_block = '<div class="total_summ" style="display:none;"><div>
22938'+BX.message('TOTAL_SUMM_ITEM')+'<span></span></div></div>', 22939 price_block = main_block.find('.cost.prices'), 22940 use_percent = (typeof show_percent !== 'undefined' && show_percent == 'Y'), 22941 percent_number = (typeof percent !== 'undefined' && percent), 22942 sku_checked = (main_block.find('.has_offer_prop').length ? 'Y' : 'N'), 22943 check = (typeof check_quantity !== 'undefined' && check_quantity); 22944 22945 if(main_block.find('.counter_wrapp + .wrapp-one-click').length) 22946 { 22947 if(!main_block.find('.wrapp-one-click .total_summ').length && !is_sku) 22948 $(total_block).appendTo(main_block.find('.counter_wrapp + .wrapp-one-click')) 22949 } 22950 else if(main_block.find('.buy_block').length) 22951 { 22952 if(!main_block.find('.buy_block .total_summ').length && !is_sku) 22953 $(total_block).appendTo(main_block.find('.buy_block')) 22954 } 22955 else if(main_block.find('.counter_wrapp').length) 22956 { 22957 if(!main_block.find('.counter_wrapp .total_summ').length && !is_sku) 22958 $(total_block).appendTo(main_block.find('.counter_wrapp:first')) 22959 } 22960 if(main_block.find('.total_summ').length) 22961 { 22962 if(value && currency) 22963 { 22964 if((1 == quantity && old_quantity == quantity) || (typeof is_sku !== 'undefined' && is_sku && !check)) 22965 { 22966 main_block.find('.total_summ').slideUp(50); 22967 } 22968 else 22969 { 22970 main_block.find('.total_summ span').html(BX.Currency.currencyFormat((value*quantity), currency, true)); 22971 if(main_block.find('.total_summ').is(':hidden')/* || sku_checked == 'Y'*/) 22972 main_block.find('.total_summ').slideDown(100); 22973 } 22974 } 22975 else 22976 { 22977 main_block.find('.total_summ').slideUp(100); 22978 } 22979 } 22980 } 22981} 22982 22983if(!funcDefined('getCurrentPrice')){ 22984 var getCurrentPrice = function getCurrentPrice(price, currency, print_price){ 22985 var val = ''; 22986 var format_value = BX.Currency.currencyFormat(price, currency); 22987 if(print_price.indexOf(format_value) >= 0) 22988 { 22989 val = print_price.replace(format_value, '<span class="price_value">'+format_value+'</span><span class="price_currency">'); 22990 val += '</span>'; 22991 } 22992 else 22993 { 22994 val = print_price; 22995 } 22996 22997 return val; 22998 } 22999} 23000 23001if(!funcDefined('initAnimateLoad')){ 23002 var initAnimateLoad = function initAnimateLoad(){ 23003 $('.animate-load').click(function(){ 23004 if(!jQuery.browser.mobile) 23005 { 23006 $(this).parent().addClass('loadings'); 23007 } 23008 }) 23009 } 23010} 23011 23012$(document).ready(function(){ 23013 //check width for menu and search 23014 CheckSearchWidth(); 23015 MegaMenuFixed(); 23016 InitScrollBar(); 23017 23018 /*ripple effect for buttons*/ 23019 $.ripple(".btn", { 23020 debug: false, // Turn Ripple.js logging on/off 23021 on: 'mouseenter', // The event to trigger a ripple effect 23022 23023 opacity: 0.4, // The opacity of the ripple 23024 color: "auto", // Set the background color. If set to "auto", it will use the text color 23025 multi: true, // Allow multiple ripples per element 23026 23027 duration: 0.6, // The duration of the ripple 23028 23029 easing: 'linear' // The CSS3 easing function of the ripple 23030 }); 23031 /**/ 23032 23033 //ecommerce order 23034 if(arAsproOptions["PAGES"]["ORDER_PAGE"]) 23035 { 23036 var arUrl = parseUrlQuery(); 23037 if("ORDER_ID" in arUrl) 23038 { 23039 var _id = arUrl["ORDER_ID"]; 23040 if(arAsproOptions['COUNTERS']['USE_FULLORDER_GOALS'] !== 'N') 23041 { 23042 var eventdata = {goal: 'goal_order_success', result: _id}; 23043 BX.onCustomEvent('onCounterGoals', [eventdata]) 23044 } 23045 if(checkCounters()) 23046 { 23047 if(typeof localStorage !== 'undefined'){ 23048 var val = localStorage.getItem('gtm_e_' + _id), 23049 d = ''; 23050 try{ 23051 d = JSON.parse(val); 23052 } 23053 catch(e){ 23054 d = val 23055 } 23056 if(typeof d === 'object'){ 23057 window.dataLayer = window.dataLayer || []; 23058 dataLayer.push({"event": arAsproOptions["COUNTERS"]['GOOGLE_EVENTS']['PURCHASE'], "ecommerce": d}); 23059 } 23060 23061 if(typeof localStorage !== 'undefined'){ 23062 localStorage.removeItem('gtm_e_' + _id); 23063 } 23064 } 23065 } 23066 } 23067 } 23068 var bSafary = false; 23069 if(typeof jQuery.browser == 'object') 23070 bSafary = jQuery.browser.safari; 23071 else if(typeof browser == 'object') 23072 bSafary = browser.safari; 23073 if(!bSafary){ 23074 CheckTopMenuPadding(); 23075 CheckTopMenuOncePadding(); 23076 CheckTopMenuDotted(); 23077 CheckHeaderFixed(); 23078 checkMenuLines(); 23079 setTimeout(function() {$(window).resize();}, 150); // need to check resize flexslider & menu 23080 setTimeout(function() {$(window).scroll();}, 250); // need to check position fixed ask block 23081 } 23082 else{ 23083 setTimeout(function(){ 23084 $(window).resize(); // need to check resize flexslider & menu 23085 setTimeout(function(){ 23086 CheckTopMenuPadding(); 23087 CheckTopMenuOncePadding(); 23088 CheckTopMenuDotted(); 23089 CheckHeaderFixed(); 23090 checkMenuLines(); 23091 23092 setTimeout(function(){ 23093 $(window).scroll(); 23094 }, 50); 23095 }, 50); 23096 }, 350); 23097 } 23098 23099 23100 /*for filter scrol in mobile*/ 23101 if(window.matchMedia('(max-width: 767px)').matches){ 23102 $('.bx_filter .scrollbar').addClass('mobile-scroll').removeClass('scroll-init'); 23103 $('.bx_filter .srollbar-custom').addClass('mobile-scroll').removeClass('scroll-init'); 23104 $('.bx_filter .bx_filter_section form .bx_filter_parameters').addClass('mobile-scroll').removeClass('scroll-init'); 23105 if($('.bx_filter .mobile-scroll.scrollbar').length) 23106 $('.bx_filter .mobile-scroll.scrollbar').mCustomScrollbar("destroy"); 23107 if($('.bx_filter .mobile-scroll.srollbar-custom').length) 23108 $('.bx_filter .mobile-scroll.srollbar-custom').mCustomScrollbar("destroy"); 23109 } 23110 /**/ 23111 23112 if(arAsproOptions['THEME']['USE_DEBUG_GOALS'] === 'Y')
23113 $.cookie('_ym_debug', 1, {path: '/',}); 23114 else 23115 $.cookie('_ym_debug', null, {path: '/',}); 23116 23117 /* change type2 menu for fixed */ 23118 if($('#headerfixed .js-nav').length) 23119 { 23120 if(arAsproOptions['THEME']['HEADER_FIXED'] == 2) 23121 CheckHeaderFixedMenu(); 23122 23123 setTimeout(function(){ 23124 $('#headerfixed .js-nav').addClass('opacity1'); 23125 },350); 23126 } 23127 23128 // -- scroll after apply option 23129 if($('.instagram_ajax').length) 23130 { 23131 BX.addCustomEvent('onCompleteAction', function(eventdata){ 23132 if(eventdata.action === 'instagrammLoaded') 23133 scrollPreviewBlock(); 23134 }); 23135 } 23136 else 23137 scrollPreviewBlock(); 23138 23139 23140 scrollToTop(); 23141 checkVerticalMobileFilter(); 23142 23143 $('[data-scroll-block]').click(function() { 23144 var _this = $(this); 23145 if(_this.data('scrollBlock')) { 23146 var target = $(_this.data('scrollBlock')); 23147 if(target.length) { 23148 scroll_block(target); 23149 } 23150 } 23151 }); 23152 23153 $.extend( $.validator.messages, { 23154 required: BX.message('JS_REQUIRED'), 23155 email: BX.message('JS_FORMAT'), 23156 equalTo: BX.message('JS_PASSWORD_COPY'), 23157 minlength: BX.message('JS_PASSWORD_LENGTH'), 23158 remote: BX.message('JS_ERROR') 23159 }); 23160 23161 $.validator.addMethod( 23162 'regexp', function( value, element, regexp ){ 23163 var re = new RegExp( regexp ); 23164 return this.optional( element ) || re.test( value ); 23165 }, 23166 BX.message('JS_FORMAT') 23167 ); 23168 23169 $.validator.addMethod( 23170 'filesize', function( value, element, param ){ 23171 return this.optional( element ) || ( element.files[0].size <= param ) 23172 }, 23173 BX.message('JS_FILE_SIZE') 23174 ); 23175 23176 $.validator.addMethod( 23177 'date', function( value, element, param ) { 23178 var status = false; 23179 if(!value || value.length <= 0){ 23180 status = false; 23181 } 23182 else{ 23183 // html5 date allways yyyy-mm-dd 23184 var re = new RegExp('^([0-9]{4})(.)([0-9]{2})(.)([0-9]{2})$'); 23185 var matches = re.exec(value); 23186 if(matches){ 23187 var composedDate = new Date(matches[1], (matches[3] - 1), matches[5]); 23188 status = ((composedDate.getMonth() == (matches[3] - 1)) && (composedDate.getDate() == matches[5]) && (composedDate.getFullYear() == matches[1])); 23189 } 23190 else{ 23191 // firefox 23192 var re = new RegExp('^([0-9]{2})(.)([0-9]{2})(.)([0-9]{4})$'); 23193 var matches = re.exec(value); 23194 if(matches){ 23195 var composedDate = new Date(matches[5], (matches[3] - 1), matches[1]); 23196 status = ((composedDate.getMonth() == (matches[3] - 1)) && (composedDate.getDate() == matches[1]) && (composedDate.getFullYear() == matches[5])); 23197 } 23198 } 23199 } 23200 return status; 23201 }, BX.message('JS_DATE') 23202 ); 23203 23204 $.validator.addMethod( 23205 'extension', function(value, element, param){ 23206 param = typeof param === 'string' ? param.replace(/,/g, '|') : 'png|jpe?g|gif'; 23207 return this.optional(element) || value.match(new RegExp('.(' + param + ')$', 'i')); 23208 }, BX.message('JS_FILE_EXT') 23209 ); 23210 23211 $.validator.addMethod( 23212 'captcha', function( value, element, params ){ 23213 return $.validator.methods.remote.call(this, value, element,{ 23214 url: arAsproOptions['SITE_DIR'] + 'ajax/check-captcha.php', 23215 type: 'post', 23216 data:{ 23217 captcha_word: value, 23218 captcha_sid: function(){ 23219 return $(element).closest('form').find('input[name="captcha_sid"]').val(); 23220 } 23221 } 23222 }); 23223 }, 23224 BX.message('JS_ERROR') 23225 ); 23226 23227 $.validator.addMethod( 23228 'recaptcha', function(value, element, param){ 23229 var id = $(element).closest('form').find('.g-recaptcha').attr('data-widgetid'); 23230 if(typeof id !== 'undefined'){ 23231 return grecaptcha.getResponse(id) != ''; 23232 } 23233 else{ 23234 return true; 23235 } 23236 }, BX.message('JS_RECAPTCHA_ERROR') 23237 ); 23238 23239 $.validator.addClassRules({ 23240 'phone':{ 23241 regexp: arAsproOptions['THEME']['VALIDATE_PHONE_MASK'] 23242 }, 23243 'confirm_password':{ 23244 equalTo: 'input[name="REGISTER\[PASSWORD\]"]', 23245 minlength: 6 23246 }, 23247 'password':{ 23248 minlength: 6 23249 }, 23250 'inputfile':{ 23251 extension: arAsproOptions['THEME']['VALIDATE_FILE_EXT'], 23252 filesize: 5000000 23253 }, 23254 'captcha':{ 23255 captcha: '' 23256 }, 23257 'recaptcha':{ 23258 recaptcha: '' 23259 } 23260 }); 23261 23262 if(arAsproOptions['THEME']['PHONE_MASK']){ 23263 $('input.phone').inputmask('mask', {'mask': arAsproOptions['THEME']['PHONE_MASK']}); 23264 } 23265 23266 // init calculate delivery with preview 23267 initCalculatePreview(); 23268 23269 /*city*/ 23270 $('select.region').on('change', function(){ 23271 var val = parseInt($(this).val()); 23272 if($('select.city').length) 23273 { 23274 if(val) 23275 { 23276 $('select.city option').hide(); 23277 $('select.city option').prop('disabled', 'disabled'); 23278 $('select.city option[data-parent_section='+val+']').prop('disabled', ''); 23279 $('select.city option:eq(0)').prop('disabled', ''); 23280 $('select.city').ikSelect('reset'); 23281 $('select.city option[data-parent_section='+val+']').show(); 23282 } 23283 else 23284 $('select.city option').prop('disabled', 'disabled'); 23285 $('select.city option:eq(0)').prop('disabled', ''); 23286 $('select.city').ikSelect('reset'); 23287 } 23288 }) 23289 23290 $('select.city, select.region').on('change', function(){ 23291 var _this = $(this), 23292 val = parseInt(_this.val()); 23293 if(_this.hasClass('region')) 23294 { 23295 $('select.city option:eq(0)').show(); 23296 $('select.city').val(0); 23297 } 23298 23299 if((_this.hasClass('region') && !val) || _this.hasClass('city')) 23300 { 23301 $.ajax({ 23302 type: 'POST', 23303 data: {ID: val}, 23304 }).success(function(html){ 23305 var ob = BX.processHTML(html); 23306 $('.ajax_items')[0].innerHTML = ob.HTML; 23307 BX.ajax.processScripts(ob.SCRIPT); 23308 }) 23309 } 23310 }) 23311 23312 $(document).on('mouseenter', '.section-gallery-wrapper .section-gallery-wrapper__item', function(){ 23313 $(this).siblings().removeClass('_active'); 23314 $(this).addClass('_active'); 23315 }); 23316 23317 $(document).on('click', ".hint .icon", function(e){
23318 var tooltipWrapp = $(this).parents(".hint"); 23319 23320 if(tooltipWrapp.hasClass("active")){ 23321 tooltipWrapp.removeClass("active").find(".tooltip").slideUp(200); 23322 } 23323 else{ 23324 tooltipWrapp.addClass("active"); 23325 tooltipWrapp.find(".tooltip").slideDown(200); 23326 tooltipWrapp.find(".tooltip_close").click(function(e){ 23327 e.stopPropagation(); tooltipWrapp.removeClass("active").find(".tooltip").slideUp(100); 23328 }); 23329 } 23330 e.stopPropagation(); 23331 }); 23332 23333 $('.mobile_regions .city_item').on('click', function(e){ 23334 e.preventDefault(); 23335 var _this = $(this); 23336 $.removeCookie('current_region'); 23337 $.cookie('current_region', _this.data('id'), {path: '/',domain: arAsproOptions['SITE_ADDRESS']}); 23338 location.href = _this.attr('href'); 23339 }) 23340 23341 /* toggle */ 23342 var $this = this, 23343 previewParClosedHeight = 25; 23344 23345 $('section.toggle > label').prepend($('<i />').addClass('fa fa-plus')); 23346 $('section.toggle > label').prepend($('<i />').addClass('fa fa-minus')); 23347 $('section.toggle.active > p').addClass('preview-active'); 23348 $('section.toggle.active > div.toggle-content').slideDown(350, function() {}); 23349 23350 $('section.toggle > label').click(function(e){ 23351 var parentSection = $(this).parent(), 23352 parentWrapper = $(this).parents('div.toogle'), 23353 previewPar = false, 23354 isAccordion = parentWrapper.hasClass('toogle-accordion'); 23355 23356 if(isAccordion && typeof(e.originalEvent) != 'undefined') { 23357 parentWrapper.find('section.toggle.active > label').trigger('click'); 23358 } 23359 23360 parentSection.toggleClass('active'); 23361 23362 // Preview Paragraph 23363 if( parentSection.find('> p').get(0) ){ 23364 previewPar = parentSection.find('> p'); 23365 var previewParCurrentHeight = previewPar.css('height'); 23366 previewPar.css('height', 'auto'); 23367 var previewParAnimateHeight = previewPar.css('height'); 23368 previewPar.css('height', previewParCurrentHeight); 23369 } 23370 23371 // Content 23372 var toggleContent = parentSection.find('> div.toggle-content'); 23373 23374 if( parentSection.hasClass('active') ){ 23375 $(previewPar).animate({ 23376 height: previewParAnimateHeight 23377 }, 350, function() { 23378 $(this).addClass('preview-active'); 23379 }); 23380 toggleContent.slideDown(350, function() {}); 23381 } 23382 else{ 23383 $(previewPar).animate({ 23384 height: previewParClosedHeight 23385 }, 350, function() { 23386 $(this).removeClass('preview-active'); 23387 }); 23388 toggleContent.slideUp(350, function() {}); 23389 } 23390 }); 23391 23392 if( typeof $.fn.footable == 'function' ) { 23393 $('.tables-responsive .responsive').footable(); //responsive table 23394 } 23395 23396 $('a[rel=tooltip]').tooltip(); 23397 $('span[data-toggle=tooltip]').tooltip(); 23398 23399 $('.toggle .more_items').on('click', function(){ 23400 $(this).closest('.toggle').find('.collapsed').css('display','inline-block').removeClass('collapsed'); 23401 $(this).remove(); 23402 if(typeof $(this).data('resize') !== 'undefined' && $(this).data('resize')) 23403 $(window).resize(); 23404 }) 23405 $('.toggle_menu .more_items').on('click', function(){ 23406 $(this).closest('.toggle_menu').find('.collapsed').addClass('clicked_exp'); 23407 $(this).remove(); 23408 }) 23409 23410 /* search sync */ 23411 $(document).on('keyup', '.search-input-div input', function(e){ 23412 var inputValue = $(this).val(); 23413 $('.search-input-div input:not(:focus').val(inputValue); 23414 23415 if($(this).closest('#headerfixed').length) 23416 { 23417 if(e.keyCode == 13) 23418 $('.search form').submit(); 23419 } 23420 }); 23421 $(document).on('click', '.search-button-div button', function(e){ 23422 if($(this).closest('#headerfixed').length) 23423 $('.search form').submit(); 23424 }); 23425 23426 $('.inline-search-show, .inline-search-hide').on('click', function(e){ 23427 CloseMobilePhone(); 23428 // if(window.matchMedia('(min-width: 600px)').matches) 23429 // { 23430 if(typeof($(this).data('type_search')) != 'undefined' && $(this).data('type_search') == 'fixed') 23431 $('.inline-search-block').addClass('fixed'); 23432 23433 if(arAsproOptions['THEME']['TYPE_SEARCH'] == 'fixed'){ 23434 /*setTimeout(function(){ 23435 $('.inline-search-block.fixed.big .search-input').focus(); 23436 }, 200);*/ 23437 $('.inline-search-block.fixed.big .search-input').focus(); 23438 } 23439 if(arAsproOptions['THEME']['TYPE_SEARCH'] != 'fixed') 23440 { 23441 $('#title-search-input').focus(); 23442 } 23443 23444 $('.inline-search-block').toggleClass('show'); 23445 if($('.top-block').length) 23446 { 23447 if($('.inline-search-block').hasClass('show')) 23448 $('.inline-search-block').css('background', $('.top-block').css('background-color')); 23449 else 23450 $('.inline-search-block').css('background', '#fff'); 23451 } 23452 if(arAsproOptions['THEME']['TYPE_SEARCH'] == 'fixed') 23453 { 23454 if($('.inline-search-block').hasClass('show')) 23455 $('<div class="jqmOverlay search"></div>').appendTo('body'); 23456 else{
23457 $('#title-search-input').blur(); 23458 $('.jqmOverlay').detach(); 23459 } 23460 } 23461 // } 23462 // else 23463 // location.href = arAsproOptions['PAGES']['CATALOG_PAGE_URL']+'?q'; 23464 }) 23465 23466 /* close search block */ 23467 $("html, body").on('mousedown', function(e){ 23468 if(typeof e.target.className == 'string' && e.target.className.indexOf('adm') < 0) 23469 { 23470 e.stopPropagation(); 23471 var search_target = $(e.target).closest('.title-search-result'); 23472 if(!$(e.target).hasClass('inline-search-block') && !$(e.target).hasClass('svg') && !search_target.length) 23473 { 23474 $('.inline-search-block').removeClass('show'); 23475 $('.title-search-result').hide(); 23476 if(arAsproOptions['THEME']['TYPE_SEARCH'] == 'fixed') 23477 $('.jqmOverlay.search').detach(); 23478 } 23479 23480 if($("#mobilePhone").length){ 23481 CloseMobilePhone(); 23482 } 23483 23484 if($('#basket_line .basket_fly').length && parseInt($("#basket_line .basket_fly").css("right")) >= 0){ 23485 if(!$(e.target).closest('.basket_wrapp').length) 23486 { 23487 $("#basket_line .basket_fly").stop().animate({"right": -$("#basket_line .basket_fly").outerWidth()}, 150); 23488 $("#basket_line .basket_fly .opener > div").removeClass("cur"); 23489 $('#basket_line .basket_fly').removeClass('swiped'); 23490 } 23491 } 23492 23493 if(isMobile) 23494 { 23495 if(search_target.length) 23496 location.href = search_target.attr('href'); 23497 } 23498 23499 if(!$(e.target).closest('.js-info-block').length && !$(e.target).closest('.js-show-info-block').length) 23500 { 23501 $('.js-show-info-block').removeClass('opened'); 23502 $('.js-info-block').fadeOut(); 23503 } 23504 23505 var class_name = $(e.target).attr('class'); 23506 if(typeof(class_name) == 'undefined' || class_name.indexOf('tooltip') < 0) //tooltip link 23507 $('.tooltip-link').tooltip('hide'); 23508 } 23509 }); 23510 $('.inline-search-block').find('*').on('mousedown', function(e){ 23511 e.stopPropagation(); 23512 }); 23513 23514 initAnimateLoad(); 23515 23516 /*check all opt table items*/ 23517 $(document).on('change', "input#select_all_items", function(){ 23518 var _this = $(this); 23519 23520 var notOfferCount = $('.table-view__item:not([data-product_type=3])').find('.button_block .to-cart').length; 23521 var wishCount = $('.table-view__item:not([data-product_type=3])').find('.item-icons .wish_item_button .wish_item.to').length; 23522 var allGoodsCount = $('.table-view__item').length; 23523 23524 if(_this.is(':checked')) 23525 { 23526 //$('.opt_action').removeClass('no-action'); 23527 23528 //buy && wish 23529 if(notOfferCount != 0){ 23530 $('.opt_action:not([data-action=compare])').removeClass('no-action'); 23531 } 23532 23533 //compare 23534 $('.opt_action[data-action=compare]').removeClass('no-action'); 23535 23536 23537 $('.opt_action').addClass('animate-load'); 23538 $('.opt_action .text').remove(); 23539 //$('<div class="text muted">(<span>'+$('.table-view__item').length+'</span>)</div>').appendTo($('.opt_action')); 23540 //$('<div class="text muted">(<span>' + $('.table-view__item:not([data-product_type=3])').length + '</span>)</div>').appendTo($('.opt_action')); 23541 23542 //buy 23543 $('<div class="text muted">(<span>' + notOfferCount + '</span>)</div>').appendTo($('.opt_action[data-action=buy]')); 23544 23545 //wish 23546 $('<div class="text muted">(<span>' + wishCount + '</span>)</div>').appendTo($('.opt_action[data-action=wish]')); 23547 23548 //compare 23549 $('<div class="text muted">(<span>' + allGoodsCount + '</span>)</div>').appendTo($('.opt_action[data-action=compare]')); 23550 23551 23552 $('input[name="chec_item"]').prop('checked', 'checked'); 23553 } 23554 else 23555 { 23556 $('.opt_action').addClass('no-action'); 23557 $('.opt_action').removeClass('animate-load'); 23558 $('.opt_action .text').remove(); 23559 23560 $('input[name="chec_item"]').removeAttr('checked'); 23561 } 23562 }) 23563 23564 /*check opt table item*/ 23565 $(document).on('change', "input[name='chec_item']", function(){ 23566 var _this = $(this); 23567 23568 var canBuy = _this.closest('.table-view__item').find('.button_block .to-cart').length; 23569 var isOffer = _this.closest('.main_item_wrapper').attr('data-product_type') == '3'; 23570 //console.log(isOffer); 23571 23572 if(_this.is(':checked')) 23573 { 23574 $('.opt_action').each(function(){ 23575 var _this = $(this); 23576 23577 var isBuyAction = _this.attr('data-action') == 'buy'; 23578 var isWishAction = _this.attr('data-action') == 'wish'; 23579 23580 if(isOffer && (isBuyAction || isWishAction)){ 23581 return true; 23582 } 23583 23584 if(isBuyAction && !canBuy) { 23585 return true; 23586 } 23587 23588 if(_this.find('.text').length) 23589 { 23590 var count = parseInt(_this.find('.text span').text()); 23591 _this.find('.text span').text(++count); 23592 } 23593 else 23594 { 23595 _this.removeClass('no-action'); 23596 _this.addClass('animate-load'); 23597 $('<div class="text muted">(<span>1</span>)</div>').appendTo(_this); 23598 } 23599 }) 23600 } 23601 else 23602 { 23603 $('.opt_action').each(function(){ 23604 var _this = $(this); 23605 23606 var isBuyAction = _this.attr('data-action') == 'buy'; 23607 var isWishAction = _this.attr('data-action') == 'wish'; 23608 23609 if(isOffer && (isBuyAction || isWishAction)){ 23610 return true; 23611 } 23612 23613 if(isBuyAction && !canBuy) { 23614 return true; 23615 } 23616 23617 if(_this.find('.text').length) 23618 { 23619 var count = parseInt(_this.find('.text span').text()); 23620 --count 23621 _this.find('.text span').text(count); 23622 23623 if(!count) 23624 { 23625 _this.addClass('no-action'); 23626 _this.removeClass('animate-load'); 23627 _this.find('.text').remove(); 23628 } 23629 } 23630 }) 23631 } 23632 }) 23633 23634 /*buy|wish|compare opt table items*/ 23635 $(document).on('click', ".opt_action", function(){ 23636 var _this = $(this), 23637 action = _this.data('action'), 23638 basketParams = { 23639 type: 'multiple', 23640 iblock_id: _this.data('iblock_id'), 23641 action: action, 23642 items: {} 23643 }; 23644 23645 if(!_this.hasClass('no-action')) 23646 { 23647 $('.opt_action').addClass('no-action'); 23648 _this.removeClass('no-action'); 23649 23650 $('.table-view__item').each(function(){ 23651 var _this = $(this); 23652 var canBuy = _this.find('.button_block .to-cart').length; //console.log(basketParams); 23653 var add = _this.find('input[name="chec_item"]').is(':checked') && (canBuy || (action != "buy") ); 23654 if(add) 23655 { 23656 basketParams['items'][_this.data('id')] = {}; 23657 basketParams['items'][_this.data('id')]['id'] = _this.data('id'); 23658 basketParams['items'][_this.data('id')]['product_type'] = _this.data('product_type'); 23659 basketParams['items'][_this.data('id')]['quantity'] = _this.find('input[name="quantity"]').val(); 23660 } 23661 }) 23662 $.ajax({ 23663 type:"POST", 23664 url:arAsproOptions['SITE_DIR']+"ajax/item.php", 23665 data:basketParams, 23666 dataType:"json", 23667 success:function(data){ 23668 if("STATUS" in data) 23669 { 23670 if(data.STATUS !== 'OK') 23671 { 23672 showBasketError(BX.message(data.MESSAGE)+' <br/>'+data.MESSAGE_EXT); 23673 } 23674 if($('.header-cart.fly').length) 23675 { 23676 arBasketAsproCounters.DEFAULT = true; 23677 SetActualBasketFlyCounters(true); 23678 } 23679 else 23680 { 23681 if($("#ajax_basket").length) 23682 reloadTopBasket('add', $('#ajax_basket'), 200, 5000, 'N', '', true); 23683 else 23684 reloadBasketCounters('', true); 23685 } 23686 } 23687 _this.parent().removeClass('loadings'); 23688 $('.opt_action').removeClass('no-action'); 23689 } 23690 }) 23691 } 23692 }) 23693 23694 23695 23696 //fix opt checked for back in browser 23697 setTimeout(function(){ 23698 if($('.with-opt-buy input[name="chec_item"], .with-opt-buy input[name="select_all_items"]').length){ 23699 $('.with-opt-buy input[name="chec_item"], .with-opt-buy input[name="select_all_items"]').prop('checked', false); 23700 } 23701 },1); 23702 23703 23704 23705 /*check mobile device*/ 23706 if(isMobile){ 23707 $(document).on('click', '*[data-event="jqm"]', function(e){ 23708 23709 e.preventDefault(); 23710 e.stopPropagation(); 23711 var _this = $(this); 23712 var name = _this.data('name'); 23713 23714 if((window.matchMedia('(min-width:768px)').matches || (typeof _this.data('no-mobile') !== 'undefinde' && _this.data('no-mobile') == 'Y'))) 23715 { 23716 if(!$(this).hasClass('clicked')) 23717 { 23718 $(this).addClass('clicked'); 23719 $(this).jqmEx(); 23720 $(this).trigger('click'); 23721 } 23722 return false;
23723 } 23724 else if(name.length){ 23725 var script = arAsproOptions['SITE_DIR'] + 'form/'; 23726 var paramsStr = ''; var arTriggerAttrs = {}; 23727 $.each(_this.get(0).attributes, function(index, attr){ 23728 var attrName = attr.nodeName; 23729 var attrValue = _this.attr(attrName); 23730 arTriggerAttrs[attrName] = attrValue; 23731 if(/^data\-param\-(.+)$/.test(attrName)){ 23732 var key = attrName.match(/^data\-param\-(.+)$/)[1]; 23733 paramsStr += key + '=' + attrValue + '&'; 23734 } 23735 }); 23736 23737 var triggerAttrs = JSON.stringify(arTriggerAttrs); 23738 var encTriggerAttrs = encodeURIComponent(triggerAttrs); 23739 script += '?name=' + name + '&' + paramsStr + 'data-trigger=' + encTriggerAttrs; 23740 23741 if (previewMode && _this.attr('href') !== undefined) { 23742 script = _this.attr('href') 23743 } 23744 23745 location.href = script; 23746 } 23747 }); 23748 23749 $('.fancybox').removeClass('fancybox'); 23750 } 23751 else 23752 { 23753 $(document).on('click', '*[data-event="jqm"]', function(e){ 23754 e.preventDefault(); 23755 e.stopPropagation(); 23756 23757 var _this = $(this); 23758 var name = _this.data('name'); 23759 if (previewMode && ((name.length && name == 'auth') || window.matchMedia('(max-width:400px)').matches)) { 23760 23761 var script = arAsproOptions['SITE_DIR'] + 'form/'; 23762 var paramsStr = ''; var arTriggerAttrs = {}; 23763 $.each(_this.get(0).attributes, function(index, attr){ 23764 var attrName = attr.nodeName; 23765 var attrValue = _this.attr(attrName); 23766 arTriggerAttrs[attrName] = attrValue;
23767 if(/^data\-param\-(.+)$/.test(attrName)){ 23768 var key = attrName.match(/^data\-param\-(.+)$/)[1]; 23769 paramsStr += key + '=' + attrValue + '&'; 23770 } 23771 }); 23772 23773 var triggerAttrs = JSON.stringify(arTriggerAttrs); 23774 var encTriggerAttrs = encodeURIComponent(triggerAttrs); 23775 script += '?name=' + name + '&' + paramsStr + 'data-trigger=' + encTriggerAttrs; 23776 23777 if (_this.attr('href') !== undefined) { 23778 script = _this.attr('href') 23779 } 23780 23781 location.href = script; 23782 } else { 23783 if(!$(this).hasClass('clicked')) 23784 { 23785 $(this).addClass('clicked'); 23786 $(this).jqmEx(); 23787 $(this).trigger('click'); 23788 } 23789 } 23790 23791 return false; 23792 }); 23793 } 23794 23795 BX.addCustomEvent('onCompleteAction', function(eventdata, _this){ 23796 try{ 23797 if(eventdata.action === 'loadForm') 23798 { 23799 $(_this).parent().removeClass('loadings'); 23800 $(_this).removeClass('clicked'); 23801 23802 if($(_this).hasClass('one_click_buy_trigger')) 23803 { 23804 $('.wrapp_one_click > span').removeClass('clicked') 23805 $('.one_click').removeClass('clicked') 23806 } 23807 else if($(_this).hasClass('one_click_buy_basket_trigger')) 23808 { 23809 $('.fast_order').removeClass('clicked') 23810 } 23811 } 23812 else if(eventdata.action === 'loadBasket') 23813 { 23814 $('.basket-link.basket').attr('title', $('<div/>').html(arBasketPrices.BASKET_SUMM_TITLE).text()); 23815 $('.basket-link.delay').attr('title', $('<div/>').html(arBasketPrices.DELAY_SUMM_TITLE).text()); 23816 23817 if(arBasketPrices.BASKET_COUNT>0) 23818 { 23819 $('.basket-link.basket').addClass('basket-count'); 23820 $('.basket-link.basket .count').removeClass('empted'); 23821 if($('.basket-link.basket .prices').length) 23822 $('.basket-link.basket .prices').html(arBasketPrices.BASKET_SUMM); 23823 } 23824 else 23825 { 23826 $('.basket-link.basket').removeClass('basket-count'); 23827 $('.basket-link.basket .count').addClass('empted'); 23828 if($('.basket-link.basket .prices').length) 23829 $('.basket-link.basket .prices').html(arBasketPrices.BASKET_SUMM_TITLE_SMALL); 23830 } 23831 $('.basket-link.basket .count').text(arBasketPrices.BASKET_COUNT); 23832 if(arBasketPrices.DELAY_COUNT>0) 23833 { 23834 $('.basket-link.delay').addClass('basket-count'); 23835 $('.basket-link.delay .count').removeClass('empted'); 23836 } 23837 else 23838 { 23839 $('.basket-link.delay').removeClass('basket-count'); 23840 $('.basket-link.delay .count').addClass('empted'); 23841 } 23842 $('.basket-link.delay .count').text(arBasketPrices.DELAY_COUNT); 23843 23844 updateBottomIconsPanel(arBasketPrices); 23845 } 23846 else if(eventdata.action === 'loadActualBasketCompare') 23847 { 23848 var compare_count = Object.keys(arBasketAspro.COMPARE).length; 23849 if(compare_count>0) 23850 { 23851 $('.basket-link.compare').addClass('basket-count'); 23852 $('.basket-link.compare .count').removeClass('empted'); 23853 if($('#compare_fly').length) 23854 $('#compare_fly').removeClass('empty_block'); 23855 } 23856 else 23857 { 23858 $('.basket-link.compare').removeClass('basket-count'); 23859 $('.basket-link.compare .count').addClass('empted'); 23860 if($('#compare_fly').length) 23861 $('#compare_fly').addClass('empty_block'); 23862 } 23863 $('.basket-link.compare .count').text(compare_count); 23864 23865 updateBottomIconsPanel(arBasketAspro); 23866 } 23867 else if(eventdata.action === 'loadRSS') 23868 { 23869 } 23870 else if(eventdata.action === 'ajaxContentLoaded') 23871 { 23872 } 23873 else if(eventdata.action === 'jsLoadBlock') 23874 { 23875 initCountdown(); 23876 setStatusButton(); 23877 InitFlexSlider(); 23878 InitOwlSlider(); 23879 InitFancyBox(); 23880 23881 checkLinkedArticles(); 23882 lazyLoadPagenBlock(); 23883 23884 if(typeof window['stickySidebar'] !== 'undefined') 23885 { 23886 window['stickySidebar'].updateSticky(); 23887 } 23888 } 23889 } 23890 catch(e){ 23891 console.error(e) 23892 } 23893 }) 23894 23895 /*slices*/ 23896 if($('.banners-small .item.normal-block').length) 23897 $('.banners-small .item.normal-block').sliceHeight(); 23898 if($('.teasers .item').length) 23899 $('.teasers .item').sliceHeight(); 23900 if($('.wrap-portfolio-front .row.items > div').length) 23901 $('.wrap-portfolio-front .row.items > div').sliceHeight({'row': '.row.items', 'item': '.item1'}); 23902 23903 /* bug fix in ff*/ 23904 $('img').removeAttr('draggable'); 23905 23906 $('.title-tab-heading').on('click', function(){ 23907 var container = $(this).parent(), 23908 slide_block = $(this).next(), 23909 bReviewTab = container.hasClass('media_review'); 23910 23911 clicked_tab = container.index()+1; 23912 23913 container.siblings().removeClass('active'); 23914 23915 $('.nav.nav-tabs li').removeClass('active'); 23916 23917 if(container.hasClass('active')) 23918 { 23919 if(bReviewTab) 23920 { 23921 $('#reviews_content').slideUp(200, function(){ 23922 container.removeClass('active'); 23923 }); 23924 } 23925 else 23926 {
23927 slide_block.slideUp(200, function(){ 23928 container.removeClass('active'); 23929 }); 23930 } 23931 } 23932 else 23933 { 23934 container.addClass('active'); 23935 if(bReviewTab) 23936 { 23937 $('#reviews_content').slideDown(); 23938 } 23939 else 23940 { 23941 if($('.tabs_section + #reviews_content').length) 23942 $('.tabs_section + #reviews_content').slideUp(); 23943 slide_block.slideDown(); 23944 if(typeof container.attr('id') !== 'undefined' && container.attr('id') == 'descr'){ 23945 var $gallery = $('.galerys-block'); 23946 if($gallery.length){ 23947 var bTypeBig = $gallery.find('.big_slider').length; 23948 var $slider = bTypeBig ? $gallery.find('.big_slider') : $gallery.find('.small_slider'); 23949 InitFlexSlider(); 23950 var interval = setInterval(function(){ 23951 if($slider.find('.slides .item').attr('style').indexOf('height') === -1){ 23952 $(window).resize(); 23953 } 23954 else{ 23955 clearInterval(interval); 23956 } 23957 }, 100); 23958 } 23959 } 23960 } 23961 } 23962 }) 23963 23964 InitFlexSlider(); 23965 InitOwlSlider(); 23966 InitStickySideBar(); 23967 InitFancyBox(); 23968 InitFancyBoxVideo(); 23969 23970 setTimeout(function(){ 23971 InitTopestMenuGummi(); 23972 isOnceInited = true; 23973 },50); 23974 23975 InitZoomPict(); 23976 23977 $(document).on('click', '.captcha_reload', function(e){ 23978 var captcha = $(this).parents('.captcha-row'); 23979 e.preventDefault(); 23980 $.ajax({ 23981 url: arAsproOptions['SITE_DIR'] + 'ajax/captcha.php' 23982 }).done(function(text){ 23983 captcha.find('input[name=captcha_sid],input[name=captcha_code]').val(text); 23984 captcha.find('img').attr('src', '/bitrix/tools/captcha.php?captcha_sid=' + text); 23985 captcha.find('input[name=captcha_word]').val('').removeClass('error'); 23986 captcha.find('.captcha_input').removeClass('error').find('.error').remove(); 23987 }); 23988 }); 23989 23990 /* show print */ 23991 if(arAsproOptions["PAGES"]["BASKET_PAGE"]) 23992 { 23993 if(arAsproOptions["THEME"]["SHOW_BASKET_PRINT"]=="Y") 23994 { 23995 if($('.page-top h1').length) 23996 $('<div class="print-link colored_theme_hover_bg-block" title="'+arAsproOptions["THEME"]["EXPRESSION_FOR_PRINT_PAGE"]+'"><i class="svg colored_theme_hover_bg-el-svg"><svg class="svg svg-print" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path id="Rectangle_665_copy_4" data-name="Rectangle 665 copy 4" class="cls-print" d="M1570,210h-2v3h-8v-3h-2a2,2,0,0,1-2-2v-5a2,2,0,0,1,2-2h2v-4h8v4h2a2,2,0,0,1,2,2v5A2,2,0,0,1,1570,210Zm-8,1h4v-4h-4v4Zm4-12h-4v2h4v-2Zm4,4h-12v5h2v-3h8v3h2v-5Z" transform="translate(-1556 -197)"></path></svg></i></div>').insertBefore($('.page-top .topic .topic__heading')); 23997 23998 } 23999 } 24000 else 24001 { 24002 if(arAsproOptions['THEME']['PRINT_BUTTON'] == 'Y') 24003 { 24004 setTimeout(function(){ 24005 24006 if($('.period_wrapper.in-detail-news1 .period_wrapper_inner').length) 24007 { 24008 $('<div class="print-link colored_theme_hover_bg-block" title="'+arAsproOptions["THEME"]["EXPRESSION_FOR_PRINT_PAGE"]+'"><i class="svg colored_theme_hover_bg-el-svg"><svg class="svg svg-print" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path id="Rectangle_665_copy_4" data-name="Rectangle 665 copy 4" class="cls-print" d="M1570,210h-2v3h-8v-3h-2a2,2,0,0,1-2-2v-5a2,2,0,0,1,2-2h2v-4h8v4h2a2,2,0,0,1,2,2v5A2,2,0,0,1,1570,210Zm-8,1h4v-4h-4v4Zm4-12h-4v2h4v-2Zm4,4h-12v5h2v-3h8v3h2v-5Z" transform="translate(-1556 -197)"></path></svg></i></div>').insertBefore($('.detail-news1 .period_wrapper .period_wrapper_inner')); 24009 }else if($('.page-top .topic .topic__heading').length) 24010 { 24011 $('<div class="print-link colored_theme_hover_bg-block" title="'+arAsproOptions["THEME"]["EXPRESSION_FOR_PRINT_PAGE"]+'"><i class="svg colored_theme_hover_bg-el-svg"><svg class="svg svg-print" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path id="Rectangle_665_copy_4" data-name="Rectangle 665 copy 4" class="cls-print" d="M1570,210h-2v3h-8v-3h-2a2,2,0,0,1-2-2v-5a2,2,0,0,1,2-2h2v-4h8v4h2a2,2,0,0,1,2,2v5A2,2,0,0,1,1570,210Zm-8,1h4v-4h-4v4Zm4-12h-4v2h4v-2Zm4,4h-12v5h2v-3h8v3h2v-5Z" transform="translate(-1556 -197)"></path></svg></i></div>').insertBefore($('.page-top .topic .topic__heading')); 24012 } 24013 24014 24015 },150); 24016 } 24017 } 24018 24019 $(document).on('click', '.print-link', function(){ 24020 window.print(); 24021 }) 24022 24023 $('.head-block .item-link').on('click', function(){ 24024 var _this = $(this); 24025 _this.siblings().removeClass('active'); 24026 _this.addClass('active'); 24027 }) 24028 24029 $('table.table').each(function(){ 24030 var _this = $(this), 24031 first_td = _this.find('thead tr th'); 24032 if(!first_td.length) 24033 first_td = _this.find('thead tr td'); 24034 if(first_td.length) 24035 { 24036 var j = 0; 24037 _this.find('tbody tr td').each(function(i){ 24038 if(j > first_td.length-1) 24039 j = 0; 24040 $('<div class="th-mobile">'+first_td[j].textContent+'</div>').appendTo($(this)); 24041 j++; 24042 }) 24043 } 24044 }) 24045 24046 if(window.matchMedia('(min-width: 768px)').matches) 24047 $('.wrapper_middle_menu.wrap_menu').removeClass('mobile'); 24048 24049 24050 if(window.matchMedia('(max-width: 767px)').matches) 24051 $('.wrapper_middle_menu.wrap_menu').addClass('mobile'); 24052 24053 24054 24055 $('.menu_top_block .v_bottom a').on('click', function(e){ 24056 if($(e.target).hasClass('toggle_block')) 24057 e.preventDefault(); 24058 }) 24059 $('.menu_top_block .v_bottom a .toggle_block').click(function(e){ 24060 var _this = $(this), 24061 menu = _this.closest('.has-child').find('> .dropdown'), 24062 bVisibleMeu = (menu.is(':visible')), 24063 animate = (bVisibleMeu ? 'slideUp' : 'slideDown'); 24064 24065 if(!_this.hasClass('clicked')) 24066 { 24067 _this.addClass('clicked'); 24068 24069 24070 menu.velocity('stop').velocity(animate, { 24071 duration: 150, 24072 // delay: 250, 24073 begin: function(){ 24074 _this.toggleClass('closed'); 24075 }, 24076 complete: function(){ 24077 _this.removeClass('clicked'); 24078 24079 if(typeof window['stickySidebar'] !== 'undefined') 24080 window['stickySidebar'].updateSticky(); 24081 } 24082 }); 24083 } 24084 24085 $(this).closest('.has-child').toggleClass('opened'); 24086 }) 24087 24088 $(document).on('click', '.show_props', function(){ 24089 $(this).prev().stop().slideToggle(333); 24090 $(this).find('.char_title').toggleClass('opened'); 24091 }); 24092 24093 $('.see_more').on('click', function(e) { 24094 e.preventDefault(); 24095 var see_more = ($(this).is('.see_more') ? $(this) : $(this).parents('.see_more').first()); 24096 var see_moreText = (see_more.find('> a').length ? see_more.find('> a') : see_more); 24097 var see_moreHiden = see_more.parent().find('> .d'); 24098 if(see_more.hasClass('open')){ 24099 see_moreText.text(BX.message('CATALOG_VIEW_MORE')); 24100 see_more.removeClass('open'); 24101 see_moreHiden.hide(); 24102 } 24103 else{ 24104 see_moreText.text(BX.message('CATALOG_VIEW_LESS')); 24105 see_more.addClass('open'); 24106 see_moreHiden.show(); 24107 } 24108 return false;
24109 }); 24110 24111 $('.button.faq_button').click(function(e){ 24112 e.preventDefault(); 24113 $(this).toggleClass('opened'); 24114 $('.faq_ask .form').slideToggle(); 24115 }); 24116 24117 $('.staff.list .staff_section .staff_section_title a').click(function(e) { 24118 e.preventDefault(); 24119 $(this).parents('.staff_section').toggleClass('opened'); 24120 $(this).parents('.staff_section').find('.staff_section_items').stop().slideToggle(600); 24121 $(this).parents('.staff_section_title').find('.opener_icon').toggleClass('opened'); 24122 }); 24123 24124 $('.jobs_wrapp .item .name').click(function(e) { 24125 $(this).closest('.item').toggleClass('opened'); 24126 $(this).closest('.item').find('.description_wrapp').stop().slideToggle(600); 24127 $(this).closest('.item').find('.opener_icon').toggleClass('opened'); 24128 }); 24129 24130 $('.faq.list .item .q a').on('click', function(e){ 24131 e.preventDefault(); 24132 $(this).parents('.item').toggleClass('opened'); 24133 $(this).parents('.item').find('.a').stop().slideToggle(); 24134 $(this).parents('.item').find('.q .opener_icon').toggleClass('opened'); 24135 }); 24136 24137 $('.opener_icon').click(function(e) { 24138 e.preventDefault(); 24139 $(this).parent().find('a').trigger('click'); 24140 }); 24141 24142 $('.dotdot').dotdotdot(); 24143 24144 $('.more_block span').on('click', function() { 24145 var content_offset=$('.catalog_detail .tabs_section').offset(); 24146 $('html, body').animate({scrollTop: content_offset.top-43}, 400); 24147 }); 24148 24149 $(document).on("click", ".counter_block:not(.basket) .plus", function(){ 24150 if(!$(this).parents('.basket_wrapp').length){ 24151 if($(this).parent().data("offers")!="Y"){ 24152 var isDetailSKU2 = $(this).parents('.counter_block_wr').length; 24153 input = $(this).parents(".counter_block").find("input[type=text]") 24154 tmp_ratio = !isDetailSKU2 ? $(this).parents(".counter_wrapp").find(".to-cart").data('ratio') : $(this).parents('tr').first().find("td.buy .to-cart").data('ratio'), 24155 //console.log(!isDetailSKU2); 24156 isDblQuantity = !isDetailSKU2 ? $(this).parents(".counter_wrapp").find(".to-cart").data('float_ratio') : $(this).parents('tr').first().find("td.buy .to-cart").data('float_ratio'), 24157 ratio=( isDblQuantity ? parseFloat(tmp_ratio) : parseInt(tmp_ratio, 10)), 24158 max_value=''; 24159 currentValue = input.val(); 24160 24161 24162 if(isDblQuantity) 24163 ratio = Math.round(ratio*arAsproOptions.JS_ITEM_CLICK.precisionFactor)/arAsproOptions.JS_ITEM_CLICK.precisionFactor; 24164 24165 curValue = (isDblQuantity ? parseFloat(currentValue) : parseInt(currentValue, 10)); 24166 24167 curValue += ratio; 24168 if (isDblQuantity){ 24169 curValue = Math.round(curValue*arAsproOptions.JS_ITEM_CLICK.precisionFactor)/arAsproOptions.JS_ITEM_CLICK.precisionFactor; 24170 } 24171 if(parseFloat($(this).data('max'))>0){ 24172 if(input.val() < $(this).data('max')){ 24173 if(curValue<=$(this).data('max')) 24174 input.val(curValue); 24175 24176 input.change(); 24177 } 24178 }else{ 24179 input.val(curValue); 24180 input.change(); 24181 } 24182 } 24183 } 24184 }); 24185 $(document).on("click", ".counter_block:not(.basket) .minus", function(){ 24186 if(!$(this).parents('.basket_wrapp').length){ 24187 if($(this).parent().data("offers")!="Y"){ 24188 var isDetailSKU2 = $(this).parents('.counter_block_wr').length; 24189 input = $(this).parents(".counter_block").find("input[type=text]") 24190 tmp_ratio = !isDetailSKU2 ? $(this).parents(".counter_wrapp").find(".to-cart").data('ratio') : $(this).parents('tr').first().find("td.buy .to-cart").data('ratio'), 24191 isDblQuantity = !isDetailSKU2 ? $(this).parents(".counter_wrapp").find(".to-cart").data('float_ratio') : $(this).parents('tr').first().find("td.buy .to-cart").data('float_ratio'), 24192 ratio=( isDblQuantity ? parseFloat(tmp_ratio) : parseInt(tmp_ratio, 10)), 24193 max_value=''; 24194 currentValue = input.val(); 24195 24196 if(isDblQuantity) 24197 ratio = Math.round(ratio*arAsproOptions.JS_ITEM_CLICK.precisionFactor)/arAsproOptions.JS_ITEM_CLICK.precisionFactor; 24198 24199 curValue = (isDblQuantity ? parseFloat(currentValue) : parseInt(currentValue, 10)); 24200 24201 curValue -= ratio; 24202 if (isDblQuantity){ 24203 curValue = Math.round(curValue*arAsproOptions.JS_ITEM_CLICK.precisionFactor)/arAsproOptions.JS_ITEM_CLICK.precisionFactor; 24204 } 24205 24206 if(parseFloat($(this).parents(".counter_block").find(".plus").data('max'))>0){ 24207 if(currentValue > ratio){ 24208 if(curValue<ratio){ 24209 input.val(ratio); 24210 }else{ 24211 input.val(curValue); 24212 } 24213 input.change(); 24214 } 24215 }else{ 24216 if(curValue > ratio){ 24217 input.val(curValue); 24218 }else{ 24219 if(ratio){ 24220 input.val(ratio); 24221 }else if(currentValue > 1){ 24222 input.val(curValue); 24223 } 24224 } 24225 input.change(); 24226 } 24227 } 24228 } 24229 }); 24230 24231 $('.counter_block input[type=text]').numeric({allow:"."}); 24232 24233 $(document).on("focus", ".counter_block input[type=text]", function(e){ 24234 $(this).addClass('focus'); 24235 }) 24236 24237 $(document).on("blur", ".counter_block input[type=text]", function(e){ 24238 $(this).removeClass('focus'); 24239 }) 24240 24241 var timerInitCalculateDelivery = false;
24242 $(document).on("change", ".counter_block input[type=text]", function(e){ 24243 if(!$(this).parents('.basket_wrapp').length){ 24244 var val = $(this).val(), 24245 tmp_ratio = $(this).parents(".counter_wrapp").find(".to-cart").data('ratio') ? $(this).parents(".counter_wrapp").find(".to-cart").data('ratio') : $(this).parents('tr').first().find("td.buy .to-cart").data('ratio'), 24246 isDblQuantity = $(this).parents(".counter_wrapp").find(".to-cart").data('float_ratio') ? $(this).parents(".counter_wrapp").find(".to-cart").data('float_ratio') : $(this).parents('tr').first().find("td.buy .to-cart").data('float_ratio'), 24247 ratio=( isDblQuantity ? parseFloat(tmp_ratio) : parseInt(tmp_ratio, 10)), 24248 diff = val % ratio; 24249 24250 if(isDblQuantity) 24251 { 24252 ratio = Math.round(ratio*arAsproOptions.JS_ITEM_CLICK.precisionFactor)/arAsproOptions.JS_ITEM_CLICK.precisionFactor; 24253 if(Math.round(diff*arAsproOptions.JS_ITEM_CLICK.precisionFactor)/arAsproOptions.JS_ITEM_CLICK.precisionFactor == ratio) 24254 diff = 0; 24255 } 24256 24257 if($(this).hasClass('focus')) 24258 { 24259 intCount = Math.round( 24260 Math.round(val * arAsproOptions.JS_ITEM_CLICK.precisionFactor / ratio) / arAsproOptions.JS_ITEM_CLICK.precisionFactor 24261 ) || 1; 24262 val = (intCount <= 1 ? ratio : intCount * ratio); 24263 // val -= diff; 24264 val = Math.round(val*arAsproOptions.JS_ITEM_CLICK.precisionFactor)/arAsproOptions.JS_ITEM_CLICK.precisionFactor; 24265 } 24266 24267 if(parseFloat($(this).parents(".counter_block").find(".plus").data('max'))>0){ 24268 if(val>parseFloat($(this).parents(".counter_block").find(".plus").data('max'))){ 24269 val=parseFloat($(this).parents(".counter_block").find(".plus").data('max')); 24270 // val -= (val % ratio); 24271 } 24272 } 24273 if(val<ratio){ 24274 val=ratio; 24275 }else if(!parseFloat(val)){ 24276 val=1; 24277 } 24278 24279 $(this).parents('.counter_block').parent().parent().find('.to-cart').attr('data-quantity', val); 24280 $(this).parents('.counter_block').parent().parent().parent().find('.one_click').attr('data-quantity', val); 24281 $(this).val(val); 24282 24283 var $calculate = $(this).closest('.item').length ? $(this).closest('.item').find('.calculate-delivery') : $(this).closest('.catalog_detail').find('.calculate-delivery'); 24284 if($calculate.length){ 24285 $calculate.each(function(){ 24286 var $calculateSpan = $(this).find('span[data-event=jqm]').first(); 24287 24288 if($calculateSpan.length){ 24289 var $clone = $calculateSpan.clone(); 24290 $clone.attr('data-param-quantity', val).removeClass('clicked'); 24291 $clone.insertAfter($calculateSpan).on('click', function(){ 24292 if(!jQuery.browser.mobile){ 24293 $(this).parent().addClass('loadings'); 24294 } 24295 }); 24296 $calculateSpan.remove(); 24297 } 24298 24299 if($(this).hasClass('with_preview')){ 24300 $(this).removeClass('inited'); 24301 24302 if(timerInitCalculateDelivery){ 24303 clearTimeout(timerInitCalculateDelivery); 24304 } 24305 24306 timerInitCalculateDelivery = setTimeout(function(){ 24307 initCalculatePreview(); 24308 timerInitCalculateDelivery = false; 24309 }, 1000); 24310 } 24311 }); 24312 } 24313 24314 var eventdata = {type: 'change', params: {id: $(this), value: val}}; 24315 BX.onCustomEvent('onCounterProductAction', [eventdata]); 24316 } 24317 }); 24318 24319 BX.addCustomEvent('onCounterProductAction', function(eventdata) { 24320 if(typeof eventdata != 'object'){ 24321 eventdata = {type: 'undefined'}; 24322 } 24323 try{ 24324 if(typeof eventdata.type != 'undefined'){ 24325 if(!eventdata.params.id.closest('.gifts').length) // no gift 24326 { 24327 var obProduct = eventdata.params.id.data('product'); 24328 if(eventdata.params.id.closest('.has_offer_prop').length) // type1 for offers in element list 24329 { 24330 if(typeof window['obSkuQuantys'] === 'undefined') 24331 window["obSkuQuantys"] = {}; 24332 24333 // if(typeof window['obOffers'] === 'undefined') 24334 window["obSkuQuantys"][eventdata.params.id.closest('.offer_buy_block').find('.to-cart').data('item')] = eventdata.params.value; 24335 } 24336 if(typeof window[obProduct] == 'object') 24337 { 24338 if(obProduct == "obOffers") 24339 setPriceAction('', '', 'Y'); 24340 else 24341 window[obProduct].setPriceAction('Y'); 24342 if ($('.detail_page').length) { 24343 setNewHeader() 24344 } 24345 } 24346 else if(eventdata.params.id.length) 24347 { 24348 if(eventdata.params.id.closest('.main_item_wrapper').length && arAsproOptions['THEME']['SHOW_TOTAL_SUMM'] == 'Y') 24349 { 24350 setPriceItem(eventdata.params.id.closest('.main_item_wrapper'), eventdata.params.value); 24351 } 24352 } 24353 BX.onCustomEvent('onCounterProductActionResize'); 24354 } 24355 } 24356 } 24357 catch(e){ 24358 console.error(e) 24359 } 24360 }); 24361 24362 /*show basket on hover */ 24363 $(document).on('mouseenter', '.wrap_icon.top_basket, #headerfixed .basket-link.basket', function() { 24364 24365 var _this = $(this); 24366 var parent = _this.closest('header, #headerfixed'); 24367 var hover_block = parent.find('.basket_hover_block'); 24368 24369 if(!hover_block.hasClass('loaded')) { 24370 basketTop('', hover_block); 24371 } 24372 }); 24373 24374 /*show basket on click mobile */ 24375 $(document).on('click', '.wrap_icon.wrap_basket.top_basket, #headerfixed .basket-link.basket', function(e) { 24376 var _this = $(this); 24377 if(isMobile) { 24378 if(!_this.hasClass('clicked')) { 24379 e.preventDefault(); 24380 _this.addClass('clicked'); 24381 setTimeout(function(){ 24382 _this.removeClass('clicked'); 24383 }, 3000); 24384 } 24385 } 24386 }); 24387 24388 /*slide cart*/ 24389 $(document).on('mouseenter', '#basket_line .basket_normal:not(.empty_cart):not(.bcart) .basket_block ', function() { 24390 $(this).closest('.basket_normal').find('.popup').addClass('block'); 24391 $(this).closest('.basket_normal').find('.basket_popup_wrapp').stop(true,true).slideDown(150); 24392 }); 24393 $(document).on('mouseleave', '#basket_line .basket_normal .basket_block ', function() { 24394 var th=$(this); 24395 $(this).closest('.basket_normal').find('.basket_popup_wrapp').stop(true,true).slide
24395Up(150, function(){ 24396 th.closest('.basket_normal').find('.popup').removeClass('block'); 24397 }); 24398 }); 24399 24400 $(document).on('click', '.popup_button_basket', function(){ 24401 var th=$(".to-cart[data-item="+$(this).data("item")+"]"); 24402 24403 var val = th.attr('data-quantity'); 24404 24405 if(!val) $val = 1; 24406 24407 var tmp_props=th.data("props"), 24408 props='', 24409 part_props='', 24410 add_props='N', 24411 fill_prop={}, 24412 iblockid = th.data('iblockid'), 24413 offer = th.data('offers'), 24414 rid='', 24415 basket_props='', 24416 item = th.attr('data-item'); 24417 24418 if(offer!="Y"){ 24419 offer = "N"; 24420 }else{ 24421 basket_props=th.closest('.prices_tab').find('.bx_sku_props input').val(); 24422 } 24423 if(tmp_props){ 24424 props=tmp_props.split(";"); 24425 } 24426 if(th.data("part_props")){ 24427 part_props=th.data("part_props"); 24428 } 24429 if(th.data("add_props")){ 24430 add_props=th.data("add_props"); 24431 } 24432 if($('.rid_item').length){ 24433 rid=$('.rid_item').data('rid'); 24434 }else if(th.data('rid')){ 24435 rid=th.data('rid'); 24436 } 24437 24438 fill_prop=fillBasketPropsExt(th, 'prop', 'bx_ajax_text'); 24439 24440 fill_prop.quantity=val; 24441 fill_prop.add_item='Y'; 24442 fill_prop.rid=rid; 24443 fill_prop.offers=offer; 24444 fill_prop.iblockID=iblockid; 24445 fill_prop.part_props=part_props; 24446 fill_prop.add_props=add_props; 24447 fill_prop.props=JSON.stringify(props); 24448 fill_prop.item=item; 24449 fill_prop.basket_props=basket_props; 24450 24451 $.ajax({ 24452 type:"POST", 24453 url:arAsproOptions['SITE_DIR']+"ajax/item.php", 24454 data:fill_prop, 24455 dataType:"json", 24456 success:function(data){ 24457 $('.basket_error_frame').jqmHide(); 24458 if("STATUS" in data){ 24459 getActualBasket(fill_prop.iblockID); 24460 if(data.STATUS === 'OK'){ 24461 th.hide(); 24462 th.closest('.counter_wrapp').find('.counter_block_inner').hide(); 24463 th.closest('.counter_wrapp').find('.counter_block').hide(); 24464 th.parents('tr').find('.counter_block_wr .counter_block').hide(); 24465 th.closest('.button_block').addClass('wide'); 24466 th.parent().find('.in-cart').show(); 24467 24468 addBasketCounter(item); 24469 //$('.wish_item[data-item='+item+']').removeClass("added"); 24470 $('.wish_item[data-item='+item+']').find(".value").show(); 24471 $('.wish_item[data-item='+item+']').find(".value.added").hide(); 24472 24473 if($("#ajax_basket").length) 24474 reloadTopBasket('add', $('#ajax_basket'), 200, 5000, 'Y'); 24475 24476 if($("#basket_line .basket_fly").length){ 24477 if(th.closest('.fast_view_frame').length || window.matchMedia('(max-width: 767px)').matches) 24478 basketFly('open', 'N'); 24479 else 24480 basketFly('open'); 24481 } 24482 24483 }else{ 24484 showBasketError(BX.message(data.MESSAGE)); 24485 } 24486 }else{ 24487 showBasketError(BX.message("CATALOG_PARTIAL_BASKET_PROPERTIES_ERROR")); 24488 } 24489 } 24490 }); 24491 }) 24492 24493 $(document).on( 'click', '.to-cart:not(.read_more), .basket_item_add', function(e){ 24494 e.preventDefault(); 24495 var th=$(this); 24496 if(!th.hasClass('clicked')) 24497 { 24498 th.addClass('clicked'); 24499 var val = $(this).attr('data-quantity'); 24500 var tmp_props=$(this).data("props"), 24501 props='', 24502 part_props='', 24503 add_props='N', 24504 fill_prop={}, 24505 iblockid = $(this).data('iblockid'), 24506 offer = $(this).data('offers'), 24507 rid='', 24508 bBannerAction = false, 24509 basket_props='', 24510 item = $(this).attr('data-item'); 24511 if(th.closest('.but-cell').length) 24512 { 24513 if($('.counter_block[data-item="'+item+'"]').length) 24514 val = $('.counter_block[data-item="'+item+'"] input').val(); 24515 } 24516 24517 if(th.closest('.banner_buttons.with_actions').length) //banner action 24518 { 24519 var wrapper_btns = th.closest('.wraps_buttons'); 24520 item = wrapper_btns.data('id'); 24521 bBannerAction = true; 24522 } 24523 24524 if(!val) 24525 val = 1; 24526 if(offer!="Y"){ 24527 offer = "N"; 24528 }else{ 24529 basket_props=$(this).closest('.prices_tab').find('.bx_sku_props input').val(); 24530 } 24531 if(tmp_props){ 24532 props=tmp_props.split(";"); 24533 } 24534 if($(this).data("part_props")){ 24535 part_props=$(this).data("part_props"); 24536 } 24537 if($(this).data("add_props")){ 24538 add_props=$(this).data("add_props"); 24539 } 24540 if($('.rid_item').length){ 24541 rid=$('.rid_item').data('rid'); 24542 }else if($(this).data('rid')){ 24543 rid=$(this).data('rid'); 24544 } 24545 24546 fill_prop=fillBasketPropsExt(th, 'prop', th.data('bakset_div')); 24547 24548 fill_prop.quantity=val; 24549 fill_prop.add_item='Y'; 24550 fill_prop.rid=rid; 24551 fill_prop.offers=offer; 24552 fill_prop.iblockID=iblockid; 24553 fill_prop.part_props=part_props; 24554 fill_prop.add_props=add_props; 24555 fill_prop.props=JSON.stringify(props); 24556 fill_prop.item=item; 24557 fill_prop.basket_props=basket_props; 24558 24559 if(bBannerAction) 24560 { 24561 24562 if(th.hasClass('added')) 24563 { 24564 location.href = th.data('href'); 24565 return false;
24566 } 24567 else 24568 { 24569 th.attr('title', th.data('title2')) 24570 th.toggleClass('added'); 24571 } 24572 24573 if(wrapper_btns.find('.wish_item_add').length) 24574 wrapper_btns.find('.wish_item_add').removeClass('added'); 24575 } 24576 24577 if(th.data("empty_props")=="N"/* && fill_prop.part_props != 'Y'*/){ 24578 var basket_popup_html = $("#"+th.data("bakset_div")).html(); 24579 if(!basket_popup_html && th.closest('.item').find('.basket_props_block').length) 24580 basket_popup_html = th.closest('.item').find('.basket_props_block').html(); 24581 24582 showBasketError(basket_popup_html, BX.message("ERROR_BASKET_PROP_TITLE"), "Y", th); 24583 BX.addCustomEvent('onCompleteAction', function(e){ 24584 if(!e.ignoreSelf){ 24585 var eventdata = {action:'loadForm', ignoreSelf: true}; 24586 BX.onCustomEvent('onCompleteAction', [eventdata, th[0]]); 24587 } 24588 }); 24589 24590 }else{ 24591 $.ajax({ 24592 type:"POST", 24593 url:arAsproOptions['SITE_DIR']+"ajax/item.php", 24594 data:fill_prop, 24595 dataType:"json", 24596 success:function(data){ 24597 getActualBasket(fill_prop.iblockID); 24598 24599 var eventdata = {action:'loadForm'}; 24600 BX.onCustomEvent('onCompleteAction', [eventdata, th[0]]); 24601 arStatusBasketAspro = {}; 24602 24603 if(data !==null){ 24604 if("STATUS" in data){ 24605 if(data.MESSAGE_EXT===null) 24606 data.MESSAGE_EXT=''; 24607 if(data.STATUS === 'OK'){ 24608 // th.hide(); 24609 $('.to-cart[data-item='+item+']').hide(); 24610 $('.to-cart[data-item='+item+']').closest('.counter_wrapp').find('.counter_block_inner').hide(); 24611 $('.to-cart[data-item='+item+']').closest('.counter_wrapp').find('.counter_block').hide(); 24612 $('.to-cart[data-item='+item+']').parents('tr').find('.counter_block_wr .counter_block').hide(); 24613 $('.to-cart[data-item='+item+']').closest('.button_block').addClass('wide'); 24614 // th.parent().find('.in-cart').show(); 24615 $('.in-cart[data-item='+item+']').show(); 24616 24617 addBasketCounter(item); 24618 //$('.wish_item[data-item='+item+']').removeClass("added"); 24619 $('.wish_item[data-item='+item+']').find(".value").show(); 24620 $('.wish_item[data-item='+item+']').find(".value.added").hide(); 24621 $('.wish_item.to[data-item='+item+']').show(); 24622 $('.wish_item.in[data-item='+item+']').hide(); 24623 24624 if($("#ajax_basket").length) 24625 reloadTopBasket('add', $('#ajax_basket'), 200, 5000, 'Y'); 24626 24627 if($("#basket_line .basket_fly").length){ 24628 if(th.closest('.fast_view_frame').length || window.matchMedia('(max-width: 767px)').matches || $("#basket_line .basket_fly.loaded").length) 24629 basketFly('open', 'N'); 24630 else 24631 basketFly('open'); 24632 } 24633 24634 if($(".top_basket").length){ 24635 basketTop('open', $(".top_basket").find('.basket_hover_block')); 24636 } 24637 24638 if ($('#headerfixed .wproducts .ajax_load .btn').length && th.next('.in-cart').length) { 24639 var buttonHtml = '<span class="buy_block"><span class="btn btn-default btn-sm slide_offer more type_block">'+th.next('.in-cart').html() +'</span></span>'; 24640 $('#headerfixed .wproducts .ajax_load .item-buttons .but-cell').html(buttonHtml) 24641 } 24642 24643 }else{ 24644 showBasketError(BX.message(data.MESSAGE)+' <br/>'+data.MESSAGE_EXT); 24645 } 24646 }else{ 24647 showBasketError(BX.message("CATALOG_PARTIAL_BASKET_PROPERTIES_ERROR")); 24648 } 24649 }else{ 24650 // th.hide(); 24651 $('.to-cart[data-item='+item+']').hide(); 24652 $('.to-cart[data-item='+item+']').closest('.counter_wrapp').find('.counter_block_inner').hide(); 24653 $('.to-cart[data-item='+item+']').closest('.counter_wrapp').find('.counter_block').hide(); 24654 $('.to-cart[data-item='+item+']').parents('tr').find('.counter_block_wr .counter_block').hide(); 24655 $('.to-cart[data-item='+item+']').closest('.button_block').addClass('wide'); 24656 // th.parent().find('.in-cart').show(); 24657 $('.in-cart[data-item='+item+']').show(); 24658 24659 addBasketCounter(item); 24660 //$('.wish_item[data-item='+item+']').removeClass("added"); 24661 $('.wish_item[data-item='+item+']').find(".value").show(); 24662 $('.wish_item[data-item='+item+']').find(".value.added").hide(); 24663 24664 if($("#ajax_basket").length) 24665 reloadTopBasket('add', $('#ajax_basket'), 200, 5000, 'Y'); 24666 24667 if($("#basket_line .basket_fly").length) 24668 { 24669 if(th.closest('.fast_view_frame').length || window.matchMedia('(max-width: 767px)').matches || $("#basket_line .basket_fly.loaded").length) 24670 basketFly('open', 'N'); 24671 else 24672 basketFly('open'); 24673 } 24674 } 24675 } 24676 }); 24677 } 24678 } 24679 24680 }) 24681 24682 $(document).on('click', '.to-subscribe', function(e){ 24683 e.preventDefault(); 24684 var th=$(this); 24685 if(!th.hasClass('clicked')) 24686 { 24687 th.addClass('clicked'); 24688 if($(this).is('.auth')) 24689 { 24690 if($(this).hasClass('nsubsc')) 24691 { 24692 $(this).jqmEx(); 24693 $(this).trigger('click'); 24694 } 24695 else 24696 { 24697 location.href=arAsproOptions['SITE_DIR']+'auth/?backurl='+location.pathname; 24698 } 24699 } 24700 else 24701 {
24702 var item = $(this).attr('data-item'), 24703 iblockid = $(this).attr('data-iblockid'); 24704 // $(this).hide(); 24705 $('.to-subscribe[data-item='+item+']').hide(); 24706 $('.to-subscribe[data-item='+item+']').parent().find('.in-subscribe').show(); 24707 $.get(arAsproOptions['SITE_DIR'] + 'ajax/item.php?item=' + item + '&subscribe_item=Y', 24708 $.proxy(function(data){ 24709 arStatusBasketAspro = {}; 24710 getActualBasket(iblockid); 24711 }) 24712 ); 24713 th.removeClass('clicked'); 24714 } 24715 } 24716 }) 24717 24718 $(document).on('click', '.in-subscribe', function(e){ 24719 e.preventDefault(); 24720 var item = $(this).attr('data-item'), 24721 iblockid = $(this).attr('data-iblockid');; 24722 // $(this).hide(); 24723 $('.in-subscribe[data-item='+item+']').hide(); 24724 $('.in-subscribe[data-item='+item+']').parent().find('.to-subscribe').removeClass('clicked'); 24725 $('.in-subscribe[data-item='+item+']').parent().find('.to-subscribe').show(); 24726 $.get(arAsproOptions['SITE_DIR'] + 'ajax/item.php?item=' + item + '&subscribe_item=Y', 24727 $.proxy(function(data){ 24728 getActualBasket(iblockid); 24729 arStatusBasketAspro = {}; 24730 }) 24731 ); 24732 }) 24733 24734 $(document).on('click', '.wish_item, .wish_item_add', function(e){ 24735 e.preventDefault(); 24736 var val = $(this).attr('data-quantity'), 24737 _this = $(this), 24738 offer = $(this).data('offers'), 24739 iblockid = $(this).data('iblock'), 24740 tmp_props=$(this).data("props"), 24741 props='', 24742 bBannerAction = false, 24743 item = $(this).attr('data-item'), 24744 item2 = $(this).attr('data-item'); 24745 24746 if(_this.closest('.banner_buttons.with_actions').length) //banner action 24747 { 24748 var wrapper_btns = _this.closest('.wraps_buttons'); 24749 item = item2 = wrapper_btns.data('id'); 24750 bBannerAction = true; 24751 } 24752 24753 if(!_this.hasClass('clicked')) 24754 { 24755 _this.addClass('clicked'); 24756 if(!val) val = 1; 24757 if(offer!="Y") offer = "N"; 24758 if(tmp_props){ 24759 props=tmp_props.split(";"); 24760 } 24761 if(!$(this).hasClass('text')){ 24762 if($(this).hasClass('added')){ 24763 if(!bBannerAction) 24764 { 24765 $(this).hide(); 24766 $(this).closest('.wish_item_button').find('.to').show(); 24767 } 24768 $('.like_icons').each(function(){ 24769 if($(this).find('.wish_item.text[data-item="'+item+'"]').length){ 24770 $(this).find('.wish_item.text[data-item="'+item+'"]').removeClass('added'); 24771 $(this).find('.wish_item.text[data-item="'+item+'"]').find('.value').show(); 24772 $(this).find('.wish_item.text[data-item="'+item+'"]').find('.value.added').hide(); 24773 } 24774 if($(this).find('.wish_item_button').length){ 24775 /*$(this).find('.wish_item_button').find('.wish_item[data-item="'+item+'"]').removeClass('added'); 24776 $(this).find('.wish_item_button').find('.wish_item[data-item="'+item+'"]').find('.value').show(); 24777 $(this).find('.wish_item_button').find('.wish_item[data-item="'+item+'"]').find('.value.added').hide();*/ 24778 $(this).find('.wish_item_button').find('.wish_item[data-item="'+item+'"].to').show(); 24779 $(this).find('.wish_item_button').find('.wish_item[data-item="'+item+'"].in').hide(); 24780 } 24781 }) 24782 } 24783 else{ 24784 if(!bBannerAction) 24785 { 24786 $(this).hide(); 24787 $(this).closest('.wish_item_button').find('.in').addClass('added').show(); 24788 } 24789 24790 $('.like_icons').each(function(){ 24791 if($(this).find('.wish_item.text[data-item="'+item+'"]').length){ 24792 $(this).find('.wish_item.text[data-item="'+item+'"]').addClass('added'); 24793 $(this).find('.wish_item.text[data-item="'+item+'"]').find('.value').hide(); 24794 $(this).find('.wish_item.text[data-item="'+item+'"]').find('.value.added').css({"display":"block"}) 24795 } 24796 if($(this).find('.wish_item_button').length){ 24797 /*$(this).find('.wish_item_button').find('.wish_item[data-item="'+item+'"]').addClass('added'); 24798 $(this).find('.wish_item_button').find('.wish_item[data-item="'+item+'"]').find('.value').hide(); 24799 $(this).find('.wish_item_button').find('.wish_item[data-item="'+item+'"]').find('.value.added').show();*/ 24800 $(this).find('.wish_item_button').find('.wish_item[data-item="'+item+'"].to').hide(); 24801 $(this).find('.wish_item_button').find('.wish_item[data-item="'+item+'"].in').show(); 24802 } 24803 }) 24804 } 24805 }else{ 24806 if(!$(this).hasClass('added')){ 24807 $('.wish_item[data-item=' + item + ']').addClass('added'); 24808 $('.wish_item[data-item=' + item + ']').find('.value').hide(); 24809 $('.wish_item[data-item=' + item + ']').find('.value.added').css('display','block'); 24810 24811 $('.wish_item.to[data-item='+item+']').hide(); 24812 $('.wish_item.in[data-item='+item+']').show(); 24813 24814 24815 $('.like_icons').each(function(){ 24816 if($(this).find('.wish_item_button').length){ 24817 $(this).find('.wish_item_button').find('.wish_item[data-item="'+item+'"]').addClass('added'); 24818 $(this).find('.wish_item_button').find('.wish_item[data-item="'+item+'"]').find('.value').hide(); 24819 $(this).find('.wish_item_button').find('.wish_item[data-item="'+item+'"]').find('.value.added').show(); 24820 } 24821 }) 24822 }else{ 24823 $('.wish_item[data-item=' + item + ']').removeClass('added'); 24824 $('.wish_item[data-item=' + item + ']').find('.value').show(); 24825 $('.wish_item[data-item=' + item + ']').find('.value.added').hide(); 24826 24827 $('.wish_item.to[data-item='+item+']').show(); 24828 $('.wish_item.in[data-item='+item+']').hide(); 24829 24830 $('.like_icons').each(function(){ 24831 if($(this).find('.wish_item_button').length){ 24832 $(this).find('.wish_item_button').find('.wish_item[data-item="'+item+'"]').removeClass('added'); 24833 $(this).find('.wish_item_button').find('.wish_item[data-item="'+item+'"]').find('.value').show(); 24834 $(this).find('.wish_item_button').find('.wish_item[data-item="'+item+'"]').find('.value.added').hide(); 24835 } 24836 }) 24837 } 24838 } 24839 24840 $('.in-cart[data-item=' + item + ']').hide(); 24841 $('.to-cart[data-item=' + item + ']').removeClass('clicked'); 24842 $('.to-cart[data-item=' + item + ']').parent().removeClass('wide'); 24843 if(!$('.counter_block[data-item=' + item + ']').closest('.counter_wrapp').find('.to-order').length) 24844 { 24845 $('.to-cart[data-item=' + item + ']').show(); 24846 $('.counter_block[data-item=' + item + ']').closest('.counter_block_inner').show(); 24847 $('.counter_block[data-item=' + item + ']').show(); 24848 } 24849 24850 if(bBannerAction) 24851 { 24852 _this.toggleClass('added'); 24853 24854 if(_this.hasClass('added')) 24855 _this.attr('title', _this.data('title2')) 24856 else 24857 _this.attr('title', _this.data('title')) 24858 24859 if(wrapper_btns.find('.basket_item_add').length) 24860 wrapper_btns.find('.basket_item_add').removeClass('added'); 24861 } 24862 24863 if(!$(this).closest('.module-cart').size()){ 24864 $.ajax({ 24865 type:"GET", 24866 url:arAsproOptions['SITE_DIR']+"ajax/item.php", 24867 data:"item="+item2+"&quantity="+val+"&wish_item=Y"+"&offers="+offer+"&iblockID="+iblockid+"&props="+JSON.stringify(props), 24868 dataType:"json", 24869 success: function(data){ 24870 getActualBasket(iblockid); 24871 arStatusBasketAspro = {}; 24872 if(data !==null){ 24873 if(data.MESSAGE_EXT===null) 24874 data.MESSAGE_EXT=''; 24875 if("STATUS" in data){ 24876 if(data.STATUS === 'OK'){ 24877 if(arAsproOptions['COUNTERS']['USE_BASKET_GOALS'] !== 'N'){ 24878 var eventdata = {goal: 'goal_wish_add', params: {id: item2}}; 24879 BX.onCustomEvent('onCounterGoals', [eventdata]); 24880 } 24881 if($("#ajax_basket").length) 24882 reloadTopBasket('wish', $('#ajax_basket'), 200, 5000, 'N'); 24883 24884 if($("#basket_line .basket_fly").length){ 24885 if(_this.closest('.fast_view_frame').length || window.matchMedia('(max-width: 767px)').matches || $("#basket_line .basket_fly.loaded").length) 24886 basketFly('wish', 'N'); 24887 else 24888 basketFly('wish'); 24889 } 24890 }else{ 24891 showBasketError(BX.message(data.MESSAGE)+' <br/>'+data.MESSAGE_EXT, BX.message("ERROR_ADD_DELAY_ITEM")); 24892 } 24893 }else{ 24894 showBasketError(BX.message(data.MESSAGE)+' <br/>'+data.MESSAGE_EXT, BX.message("ERROR_ADD_DELAY_ITEM")); 24895 } 24896 }else{ 24897 if($("#ajax_basket").length) 24898 reloadTopBasket('wish', $('#ajax_basket'), 200, 5000, 'N'); 24899 24900 if($("#basket_line .basket_fly").length){ 24901 if(_this.closest('.fast_view_frame').length || window.matchMedia('(max-width: 767px)').matches || $("#basket_line .basket_fly.loaded").length) 24902 basketFly('wish', 'N'); 24903 else 24904 basketFly('wish'); 24905 } 24906 } 24907 _this.removeClass('clicked'); 24908 } 24909 }); 24910 } 24911 } 24912 24913 }) 24914 24915 $(document).on('click', '.item_main_info .item_slider .flex-direction-nav li span', function(e){ 24916 if($('.inner_slider .slides_block').length) 24917 { 24918 if($(this).parent().hasClass('flex-nav-next')) 24919 $('.inner_slider .slides_block li.current').next().click(); 24920 else 24921 $('.inner_slider .slides_block li.current').prev().click(); 24922 } 24923 }) 24924 24925 $(document).on('click', '.compare_item, .compare_item_add', function(e){ 24926 e.preventDefault(); 24927 var item = $(this).attr('data-item'); 24928 var iblockID = $(this).attr('data-iblock'), 24929 bBannerAction = false, 24930 th=$(this); 24931 24932 if(th.closest('.banner_buttons.with_actions').length) //banner action 24933 { 24934 var wrapper_btns = th.closest('.wraps_buttons'); 24935 item = wrapper_btns.data('id'); 24936 iblockID = wrapper_btns.data('iblockid'); 24937 bBannerAction = true; 24938 24939 th.toggleClass('added'); 24940 24941 if(th.hasClass('added')) 24942 th.attr('title', th.data('title2')) 24943 else 24944 th.attr('title', th.data('title')) 24945 } 24946 24947 if(!th.hasClass('clicked')) 24948 { 24949 th.addClass('clicked'); 24950 if(!$(this).hasClass('text')){ 24951 if($(this).hasClass('added')){ 24952 if(!bBannerAction) 24953 { 24954 $(this).hide(); 24955 $(this).closest('.compare_item_button').find('.to').show(); 24956 } 24957 24958 /*sync other button*/ 24959 $('.like_icons').each(function(){ 24960 if($(this).find('.compare_item.text[data-item="'+item+'"]').length){ 24961 $(this).find('.compare_item.text[data-item="'+item+'"]').removeClass('added'); 24962 $(this).find('.compare_item.text[data-item="'+item+'"]').find('.value').show(); 24963 $(this).find('.compare_item.text[data-item="'+item+'"]').find('.value.added').hide(); 24964 } 24965 if($(this).find('.compare_item_button').length){ 24966 /*$(this).find('.compare_item_button').find('.compare_item[data-item="'+item+'"]').removeClass('added'); 24967 $(this).find('.compare_item_button').find('.compare_item[data-item="'+item+'"]').find('.value').show(); 24968 $(this).find('.compare_item_button').find('.compare_item[data-item="'+item+'"]').find('.value.added').hide();*/ 24969 $(this).find('.compare_item_button').find('.compare_item[data-item="'+item+'"].in').hide(); 24970 $(this).find('.compare_item_button').find('.compare_item[data-item="'+item+'"].to').show(); 24971 } 24972 }) 24973 } 24974 else 24975 { 24976 if(!bBannerAction) 24977 { 24978 $(this).hide(); 24979 $(this).closest('.compare_item_button').find('.in').show(); 24980 } 24981 24982 /*sync other button*/ 24983 $('.like_icons').each(function(){ 24984 if($(this).find('.compare_item.text[data-item="'+item+'"]').length){ 24985 $(this).find('.compare_item.text[data-item="'+item+'"]').addClass('added');; 24986 $(this).find('.compare_item.text[data-item="'+item+'"]').find('.value').hide(); 24987 $(this).find('.compare_item.text[data-item="'+item+'"]').find('.value.added').css({"display":"block"}); 24988 } 24989 if($(this).find('.compare_item_button').length){ 24990 /*$(this).find('.compare_item_button').find('.compare_item[data-item="'+item+'"]').addClass('added'); 24991 $(this).find('.compare_item_button').find('.compare_item[data-item="'+item+'"]').find('.value.added').show(); 24992 $(this).find('.compare_item_button').find('.compare_item[data-item="'+item+'"]').find('.value').hide();*/ 24993 $(this).find('.compare_item_button').find('.compare_item[data-item="'+item+'"].to').hide(); 24994 $(this).find('.compare_item_button').find('.compare_item[data-item="'+item+'"].in').show(); 24995 } 24996 }) 24997 } 24998 }else{ 24999 if(!$(this).hasClass('added')){ 25000 $('.compare_item[data-item=' + item + ']').addClass('added'); 25001 $('.compare_item[data-item=' + item + ']').find('.value').hide(); 25002 $('.compare_item[data-item=' + item + ']').find('.value.added').css('display','block'); 25003 25004 /*sync other button*/ 25005 $('.like_icons').each(function(){ 25006 if($(this).find('.compare_item_button').length){ 25007 $(this).find('.compare_item_button').find('.compare_item[data-item="'+item+'"]').addClass('added'); 25008 $(this).find('.compare_item_button').find('.compare_item[data-item="'+item+'"]').find('.value.added').show(); 25009 $(this).find('.compare_item_button').find('.compare_item[data-item="'+item+'"]').find('.value').hide(); 25010 } 25011 }) 25012 }else{ 25013 $('.compare_item[data-item=' + item + ']').removeClass('added'); 25014 $('.compare_item[data-item=' + item + ']').find('.value').show(); 25015 $('.compare_item[data-item=' + item + ']').find('.value.added').hide(); 25016 25017 /*sync other button*/ 25018 $('.like_icons').each(function(){ 25019 if($(this).find('.compare_item_button').length){ 25020 $(this).find('.compare_item_button').find('.compare_item[data-item="'+item+'"]').removeClass('added'); 25021 $(this).find('.compare_item_button').find('.compare_item[data-item="'+item+'"]').find('.value').show(); 25022 $(this).find('.compare_item_button').find('.compare_item[data-item="'+item+'"]').find('.value.added').hide(); 25023 } 25024 }) 25025 } 25026 } 25027 25028 $.get(arAsproOptions['SITE_DIR'] + 'ajax/item.php?item=' + item + '&compare_item=Y&iblock_id=' + iblockID, 25029 $.proxy(function(data){ 25030 getActualBasket(iblockID, 'Compare'); 25031 arStatusBasketAspro = {}; 25032 if($('#compare_fly').length){ 25033 jsAjaxUtil.InsertDataToNode(arAsproOptions['SITE_DIR'] + 'ajax/show_compare_preview_fly.php', 'compare_fly', false); 25034 } 25035 th.removeClass('clicked'); 25036 }) 25037 ); 25038 } 25039 25040 }); 25041 25042 $('.fancybox').fancybox({ 25043 backFocus: false, 25044 }); 25045 25046 $(document).on('click', '.tabs>li', function(){ 25047 var parent = $(this).parent(); 25048 if(!$(this).hasClass('active')){ 25049 var sliderIndex = $(this).index(), 25050 curLiNav=$(this).closest('.top_block').find('.slider_navigation').find('>li:eq(' + sliderIndex + ')'), 25051 curLi=$(this).closest('.top_block').siblings('.tabs_content').find('>li:eq(' + sliderIndex + ')'); 25052 $(this).addClass('active').addClass('cur').siblings().removeClass('active').removeClass('cur'); 25053 curLi.addClass('cur').siblings().removeClass('cur'); 25054 curLiNav.addClass('cur').siblings().removeClass('cur'); 25055 25056 if(parent.hasClass('ajax')) // front tabs 25057 { 25058 if(!$(this).hasClass('clicked')) 25059 { 25060 $.ajax({ 25061 url: arAsproOptions['SITE_DIR'] + 'include/mainpage/comp_catalog_ajax.php', 25062 type: 'POST', 25063 data: {AJAX_POST: 'Y', FILTER_HIT_PROP: $(this).data('code'), AJAX_PARAMS: $(this).closest('.tab_slider_wrapp').find('.request-data').data('value'), GLOBAL_FILTER: curLi.data('filter')}, 25064 }).success(function(html){ 25065 curLi.find('.tabs_slider').html(html); 25066 var container = curLi.closest('.content_wrapper_block'); 25067 if(container.length) { 25068 var bNav = curLi.find('.bottom_nav .module-pagination').length > 0; 25069 if(bNav) { 25070 container.removeClass('without-border'); 25071 } else { 25072 container.addClass('without-borded'); 25073 } 25074 } 25075 setTimeout(function(){ 25076 curLi.addClass('opacity1'); 25077 }, 100); 25078 25079 /*equal height*/ 25080 // curLi.find('.catalog_block .catalog_item_wrapp .catalog_item .item_info:visible .item-title').sliceHeight({item:'.catalog_item:visible', mobile: true}); 25081 // curLi.find('.catalog_block .catalog_item_wrapp .catalog_item .item_info:visible').sliceHeight({item:'.catalog_item:visible', mobile: true}); 25082 // curLi.find('.catalog_block .catalog_item_wrapp .catalog_item:visible').sliceHeight({classNull: '.footer_button', item:'.catalog_item:visible', mobile: true}); 25083
25084 initCountdown(); 25085 }) 25086 $(this).addClass('clicked'); 25087 } else { 25088 var container = curLi.closest('.content_wrapper_block'); 25089 if(container.length) { 25090 var bNav = curLi.find('.bottom_nav .module-pagination').length > 0; 25091 if(bNav) { 25092 container.removeClass('without-border'); 25093 } else { 25094 container.addClass('without-borded'); 25095 } 25096 } 25097 $('.cur .catalog_block .catalog_item_wrapp.catalog_item:not(.big):visible').sliceHeight({ 25098 classNull: '.footer_button', 25099 item:'.cur .catalog_block .catalog_item_wrapp.catalog_item:not(.big):visible', 25100 classes: [ 25101 '.item_info .item-title', 25102 '.item_info .sa_block', 25103 '.item_info .cost.prices', 25104 ], 25105 mobile: true, 25106 }); 25107 } 25108 } 25109 25110 var eventdata = {index: sliderIndex, target: $(this)}; 25111 BX.onCustomEvent('clickedTabsLi', [eventdata]); 25112 } 25113 }) 25114 25115 /*search click*/ 25116 $('.search_block .icon').on('click', function(){ 25117 var th=$(this); 25118 if($(this).hasClass('open')){ 25119 $(this).closest('.center_block').find('.search_middle_block').removeClass('active'); 25120 $(this).removeClass('open'); 25121 $(this).closest('.center_block').find('.search_middle_block').find('.noborder').hide(); 25122 }else{ 25123 setTimeout(function(){ 25124 th.closest('.center_block').find('.search_middle_block').find('.noborder').show(); 25125 },100); 25126 $(this).closest('.center_block').find('.search_middle_block').addClass('active'); 25127 $(this).addClass('open'); 25128 } 25129 }) 25130 25131 $(document).on('click', '.no_goods .button', function(){ 25132 $('.bx_filter .smartfilter .bx_filter_search_reset').trigger('click'); 25133 }); 25134 25135 $(document).on('click', '.js-load-link', function(e){ 25136 AjaxClickLink(e) 25137 }) 25138 25139 $(document).on('click', '.svg-inline-bottom_nav-icon', function(){ 25140 $(this).next().trigger('click'); 25141 }) 25142 $(document).on('click', '.ajax_load_btn', function(){ 25143 var 25144 _this = $(this), 25145 url = _this.closest('.container').find('.module-pagination .flex-direction-nav .flex-next').attr('href'), 25146 th = _this.find('.more_text_ajax'), 25147 bottom_nav = _this.closest('.bottom_nav'), 25148 mobileBottomNav = bottom_nav.hasClass('mobile_slider'), 25149 bLoadingState = _this.closest('.animate-load-state').length; 25150 25151 if(!th.hasClass('loading')) 25152 { 25153 th.addClass('loading'); 25154 if(mobileBottomNav) { 25155 var icon = bottom_nav.find('.svg-inline-bottom_nav-icon'); 25156 icon.css('display', 'none'); 25157 } 25158 if(bLoadingState) 25159 _this.addClass('loadings'); 25160 25161 var objUrl = parseUrlQuery(), 25162 add_url = '' 25163 obGetData = {"ajax_get": "Y", "AJAX_REQUEST": "Y"}; 25164 25165 if(_this.closest('.wrapper_inner.front').length) //index page 25166 { 25167 var class_block = th.closest('.drag-block').data('class').replace('_drag', ''); 25168 class_block = class_block.replace(/\s/g, ''); 25169 obGetData.BLOCK = class_block; 25170 } 25171 25172 if(_this.closest('.tab').length) //tabs block 25173 { 25174 var filter = th.closest('.tab').data('filter'); 25175 obGetData.GLOBAL_FILTER = filter; 25176 url = _this.closest('.bottom_nav').find('.module-pagination .flex-direction-nav .flex-next').attr('href'); 25177 } 25178 25179 25180 if(_this.closest('.content_linked_goods').length) //linked_goods block in content 25181 { 25182 var filterSections = th.closest('.content_linked_goods').attr('data-sections-ids'); 25183 obGetData.ajax_section_id = decodeURIComponent(filterSections); 25184 25185 url = _this.closest('.bottom_nav').find('.module-pagination .flex-direction-nav .flex-next').attr('href'); 25186 } 25187 25188 if('clear_cache' in objUrl) 25189 { 25190 if(objUrl.clear_cache == 'Y') 25191 add_url = '&clear_cache=Y'; 25192 } 25193 if(_this.hasClass('ajax')) 25194 obGetData.ajax = 'y'; 25195
25196 if(th.closest('.goods-block.ajax_load')) 25197 obGetData.bitrix_include_areas = 'N'; 25198 $.ajax({ 25199 url: url+add_url, 25200 data: obGetData, 25201 success: function(html) { 25202 pasteAjaxPagination(html, th, bottom_nav, bLoadingState, _this); 25203 }, 25204 error: function(html) { 25205 pasteAjaxPagination(html.responseText, th, bottom_nav, bLoadingState, _this); 25206 }, 25207 }) 25208 } 25209 }) 25210 25211 function pasteAjaxPagination(html, th, bottom_nav, bLoadingState, _this) { 25212 var mobileBottomClicked = bottom_nav.hasClass('mobile_slider'); 25213 var hasMobileBottomNav = $(html).find('.bottom_nav.mobile_slider'); 25214 var bottomNav = hasMobileBottomNav.length ? hasMobileBottomNav : $(html).find('.bottom_nav'); 25215 var bottomNavHtml = bottomNav.html(); 25216 var bottomNavScrollClass = bottomNav.data('scroll-class'); 25217 var hasBottomNav = $(html).find('.ajax_load_btn').length; 25218 25219 if(th.closest('.ajax_load').length && !mobileBottomClicked) 25220 { 25221 th.removeClass('loading'); 25222 if(th.closest('.ajax_load').find('.js_append').length) 25223 { 25224 if(_this.closest('.catalog_in_content').length){ 25225 th.closest('.ajax_load').find('.js_append').append($('.inner_wrapper .js_wrapper_items>', html));//need for brands & landings 25226 }else{ 25227 th.closest('.ajax_load').find('.js_append').append(html); 25228 } 25229 th.closest('.ajax_load').find('.bottom_nav_wrapper').remove(); 25230 } 25231 else 25232 { 25233 if($('.display_list').length) 25234 { 25235 $('.display_list').append(html); 25236 th.closest('.display_list').find('.bottom_nav_wrapper').remove(); 25237 25238 }else if($('.block_list').length) 25239 { 25240 $('.block_list').append(html); 25241 touchItemBlock('.catalog_item a'); 25242 th.closest('.block_list').find('.bottom_nav_wrapper').remove(); 25243 }else if($('.module_products_list').length) 25244 { 25245 $('.module_products_list > tbody').append(html); 25246 th.closest('.module_products_list > tbody').find('.bottom_nav_wrapper').remove(); 25247 } 25248 25249 } 25250 25251 25252 setStatusButton(); 25253 checkLinkedArticles(); 25254 25255 var eventdata = {action:'ajaxContentLoadedTab'}; 25256 BX.onCustomEvent('onAjaxSuccess', [eventdata]); 25257 _this.closest('.bottom_nav').html(bottomNavHtml); 25258 } 25259 else 25260 { 25261 var eventdata = {action:'ajaxContentLoaded'}; 25262 25263 if($('.banners-small.front').length) 25264 { 25265 $('.banners-small .items.row').append(html); 25266 $('.bottom_nav').html($('.banners-small .items.row .bottom_nav').html()); 25267 $('.banners-small .items.row .bottom_nav').remove(); 25268 if(hasBottomNav) { 25269 $('.banners-small .items.row').addClass('has-bottom-nav'); 25270 } else { 25271 $('.banners-small .items.row').removeClass('has-bottom-nav'); 25272 } 25273 } 25274 else 25275 { 25276 if(bottom_nav.data('append') !== undefined && bottom_nav.data('parent') !== undefined) 25277 { 25278 var target = html; 25279 if(bottom_nav.data('target') !== undefined) { 25280 target = $(html).find(bottom_nav.data('target')); 25281 } 25282 if(mobileBottomClicked || hasMobileBottomNav.length) { 25283 var mobileSliderNav = th.closest(bottom_nav.data('parent')).find('.bottom_nav.mobile_slider'); 25284 if(mobileSliderNav.length) { 25285 mobileSliderNav.before(target); 25286 } else { 25287 bottom_nav.before(target); 25288 } 25289 } else { 25290 th.closest(bottom_nav.data('parent')).find(bottom_nav.data('append')).append(target); 25291 } 25292 th.closest(bottom_nav.data('parent')).find(bottom_nav.data('append')).find('.bottom_nav_wrapper').remove(); 25293 25294 if (hasBottomNav) { 25295 if (bottomNavScrollClass !== undefined) { 25296 th.closest(bottom_nav.data('parent')).find(bottomNavScrollClass).addClass('has-bottom-nav'); 25297 } 25298 th.closest(bottom_nav.data('parent')).find(bottom_nav.data('append')).addClass('has-bottom-nav'); 25299 } else { 25300 if (bottomNavScrollClass !== undefined) { 25301 th.closest(bottom_nav.data('parent')).find(bottomNavScrollClass).removeClass('has-bottom-nav'); 25302 } 25303 th.closest(bottom_nav.data('parent')).find(bottom_nav.data('append')).removeClass('has-bottom-nav'); 25304 } 25305 25306 bottom_nav = th.closest(bottom_nav.data('parent')).find('.bottom_nav'); 25307 bottom_nav.html(bottomNavHtml); 25308 var icon = bottom_nav.find('.svg-inline-bottom_nav-icon'); 25309 icon.css('display', ''); 25310 25311 eventdata.container = th.closest(bottom_nav.data('parent')); 25312 } 25313 else 25314 { 25315 if(th.closest('.item-views').find('.items').length) 25316 { 25317 th.closest('.item-views').find('.items').append(html); 25318 } 25319 else 25320 { 25321 $(html).insertBefore($('.blog .bottom_nav')); 25322 } 25323 25324 bottom_nav.html($('.bottom_nav:hidden').html()); 25325 if(hasBottomNav) { 25326 th.closest('.item-views').find('.items').addClass('has-bottom-nav'); 25327 } else { 25328 th.closest('.item-views').find('.items').removeClass('has-bottom-nav'); 25329 } 25330 _this.closest('.item-views').find('.bottom_nav:hidden').remove(); 25331 } 25332 } 25333 25334 eventdata.content = html; 25335 eventdata.container = th; 25336 BX.onCustomEvent('onCompleteAction', [eventdata, th[0]]); 25337 25338 setTimeout(function(){ 25339 $('.banners-small .item.normal-block').sliceHeight({resize: false}); 25340 if($('.item.slice-item').length) 25341 { 25342 $('.item.slice-item .title').sliceHeight({resize: false}); 25343 $('.item.slice-item').sliceHeight({resize: false}); 25344 } 25345 th.removeClass('loading'); 25346 if(bLoadingState) 25347 _this.removeClass('loadings'); 25348 }, 100); 25349 } 25350 initCountdown(); 25351 } 25352 25353 // form rating 25354 $(document).on('mouseenter', '.form .votes_block.with-text .item-rating', function(){ 25355 var $this = $(this), 25356 index = $this.index(),
25357 ratingValue = $this.data('rating_value'), 25358 ratingMessage = $this.data('message'); 25359 25360 $(this).addClass('filed') 25361 $this.siblings().each(function(){ 25362 if($(this).index() <= index) 25363 $(this).addClass('filed') 25364 else 25365 $(this).removeClass('filed') 25366 }); 25367 $this.closest('.votes_block').find('.rating_message').text(ratingMessage); 25368 }); 25369 25370 $(document).on('mouseleave', '.form .votes_block.with-text', function(){ 25371 var $this = $(this), 25372 index = $this.data('rating'), 25373 ratingMessage = $this.closest('.votes_block').find('.rating_message').data('message'); 25374 25375 $this.find('.item-rating').each(function(){ 25376 if($(this).index() < index && index !== undefined) 25377 $(this).addClass('filed') 25378 else 25379 $(this).removeClass('filed') 25380 }); 25381 $this.closest('.votes_block').find('.rating_message').text(ratingMessage); 25382 }); 25383 25384 $(document).on('click', '.form .votes_block.with-text .item-rating', function(){ 25385 var $this = $(this), 25386 rating = $this.closest('.votes_block').data('rating'), 25387 index = $this.index() + 1, 25388 ratingMessage = $this.data('message'); 25389 25390 $this.closest('.votes_block').data('rating', index); 25391 if($this.closest('.form-control').find('input[name=RATING]').length){ 25392 $this.closest('.form-control').find('input[name=RATING]').val(index); 25393 } 25394 else{ 25395 $this.closest('.form-control').find('input[data-sid=RATING]').val(index); 25396 } 25397 $this.closest('.votes_block').find('.rating_message').data('message', ratingMessage); 25398 }); 25399 25400 //set cookie for basket link click 25401 $(document).on('click', '.bx_ordercart_order_table_container .control > a, .basket-item-actions-remove, a[data-entity=basket-item-remove-delayed]', function(e){ 25402 $.removeCookie('click_basket', {path: '/'}); 25403 $.cookie('click_basket', 'Y', {path: '/'}); 25404 }) 25405 25406 $(document).on('click', '.bx_compare .tabs-head li', function(){ 25407 var url=$(this).find('.sortbutton').data('href'); 25408 BX.showWait(BX("bx_catalog_compare_block")); 25409 $.ajax({ 25410 url: url, 25411 data: {'ajax_action': 'Y'}, 25412 success: function(html){ 25413 history.pushState(null, null, url); 25414 $('#bx_catalog_compare_block').html(html); 25415 BX.closeWait(); 25416 } 25417 }) 25418 }) 25419 var hoveredTrs; 25420 $(document).on({ 25421 mouseover: function(e){ 25422 var _ = $(this); 25423 var tbodyIndex = _.closest('tbody').index()+1; //+1 for nth-child 25424 var trIndex = _.index()+1; // +1 for nth-child 25425 hoveredTrs = $(e.delegateTarget).find('.data_table_props') 25426 .children(':nth-child('+tbodyIndex+')') 25427 .children(':nth-child('+trIndex+')').addClass('hovered'); 25428 }, 25429 mouseleave: function(e){ 25430 if(hoveredTrs) 25431 hoveredTrs.removeClass('hovered'); 25432 } 25433 }, '.bx_compare .data_table_props tbody>tr'); 25434 $(document).on('click', '.fancy_offer', function(e){ 25435 e.preventDefault(); 25436 var arPict=[], index = 0; 25437 $(this).closest('.item_slider').find('.sliders .slides_block li').each(function(){ 25438 var obImg = {}; 25439 obImg = { 25440 'title': $(this).find('img').attr('alt'), 25441 'href': $(this).data('big') 25442 } 25443 if($(this).hasClass('current')){ 25444 index = $(this).index(); 25445 } 25446 arPict.push(obImg); 25447 }) 25448 $.fancybox(arPict, { 25449 index: index, 25450 openEffect : 'fade', 25451 closeEffect : 'fade', 25452 nextEffect : 'fade', 25453 prevEffect : 'fade', 25454 type : 'image', 25455 tpl:{ 25456 closeBtn : '<a title="'+BX.message('FANCY_CLOSE')+'" class="fancybox-item fancybox-close" href="javascript:;"></a>', 25457 next : '<a title="'+BX.message('FANCY_NEXT')+'" class="fancybox-nav fancybox-next" href="javascript:;"><span></span></a>', 25458 prev : '<a title="'+BX.message('FANCY_PREV')+'" class="fancybox-nav fancybox-prev" href="javascript:;"><span></span></a>' 25459 }, 25460 }); 25461 }) 25462 25463 /*tabs*/ 25464 $(".tabs_section .tabs-head li").on("click", function(){ 25465 if(!$(this).is(".current")){ 25466 $(".tabs_section .tabs-head li").removeClass("current"); 25467 $(this).addClass("current"); 25468 $(".tabs_section ul.tabs_content li").removeClass("current"); 25469 if($(this).attr("id") == "product_reviews_tab"){ 25470 $(".shadow.common").hide(); $("#reviews_content").show(); 25471 } 25472 else{ 25473 $(".shadow.common").show(); 25474 $("#reviews_content").hide(); 25475 $(".tabs_section ul.tabs_content > li:eq("+$(this).index()+")").addClass("current"); 25476 } 25477 } 25478 }); 25479 25480 /*open first section slide*/ 25481 setTimeout(function() { 25482 $('.jobs_wrapp .item:first .name tr').trigger('click'); 25483 }, 300); 25484 25485 $('.choise').on('click', function(){ 25486 var _this = $(this); 25487 if(typeof(_this.data('block')) != 'undefined') 25488 { 25489 if($(_this.data('block')).closest('.tab-pane').length) 25490 { 25491 $('.ordered-block a[href="#'+$(_this.data('block')).closest('.tab-pane').attr('id')+'"]').click(); 25492 _this.data('block', '.ordered-block'); 25493 $(_this.data('block')).data('offset', -100); 25494 } 25495 scrollToBlock(_this.data('block')); 25496 } 25497 }) 25498 25499 $(document).on('click', '.buy_block .slide_offer', function(){ 25500 scroll_block($('.js-offers-scroll')); 25501 }); 25502 $('.share > .share_wrapp .text').on('click', function(){ 25503 var block = $(this).parent().find('.shares'); 25504 if(!block.is(':visible') && !$(this).closest('.share.top').length) 25505 $('#content').css('z-index',3); 25506 block.fadeToggle(100,function(){ 25507 if(!block.is(':visible')) 25508 $('#content').css('z-index',2); 25509 }); 25510 }) 25511 $('html, body').on('mousedown', function(e) { 25512 if(typeof e.target.className == 'string' && e.target.className.indexOf('adm') < 0) 25513 { 25514 e.stopPropagation(); 25515 $('div.shares').fadeOut(100, function(){ 25516 $('#content').css('z-index',2); 25517 $('.price_txt .share_wrapp').removeClass('opened'); 25518 }); 25519 $('.search_middle_block').removeClass('active_wide'); 25520 } 25521 }) 25522 $('.share_wrapp').find('*').on('mousedown', function(e) { 25523 e.stopPropagation(); 25524 }); 25525 25526 $('.price_txt .share_wrapp .text').click(function(){ 25527 $(this).parent().toggleClass('opened'); 25528 $(this).parent().find('.shares').fadeToggle(); 25529 }) 25530 25531 $(document).on('click', '.reviews-collapse-link', function(){ 25532 $('.reviews-reply-form').slideToggle(); 25533 }) 25534 25535 /* accordion action*/ 25536 $('.panel-collapse').on('hidden.bs.collapse', function(){ 25537 $(this).parent().toggleClass('opened'); 25538 }) 25539 $('.panel-collapse').on('show.bs.collapse', function(){ 25540 $(this).parent().toggleClass('opened'); 25541 }) 25542 25543 /* accordion */ 25544 $('.accordion-head').on('click', function(e){ 25545 e.preventDefault(); 25546 if(!$(this).next().hasClass('collapsing')){ 25547 $(this).toggleClass('accordion-open'); 25548 $(this).toggleClass('accordion-close'); 25549 } 25550 }); 25551 25552 /* progress bar */ 25553 $('[data-appear-progress-animation]').each(function(){ 25554 var $this = $(this); 25555 $this.appear(function(){
25556 var delay = ($this.attr('data-appear-animation-delay') ? $this.attr('data-appear-animation-delay') : 1); 25557 if( delay > 1 ) 25558 $this.css('animation-delay', delay + 'ms'); 25559 $this.addClass($this.attr('data-appear-animation')); 25560 25561 setTimeout(function(){ 25562 $this.animate({ 25563 width: $this.attr('data-appear-progress-animation') 25564 }, 1500, 'easeOutQuad', function() { 25565 $this.find('.progress-bar-tooltip').animate({ 25566 opacity: 1 25567 }, 500, 'easeOutQuad'); 25568 }); 25569 }, delay); 25570 }, {accX: 0, accY: -50}); 25571 }); 25572 25573 initCountdown(); 25574 25575 /* portfolio item */ 25576 if($('.item.animated-block').length) 25577 { 25578 $('.item.animated-block').appear(function(){ 25579 var $this = $(this); 25580 25581 $this.addClass($this.data('animation')).addClass('visible'); 25582 25583 }, {accX: 0, accY: 150}) 25584 } 25585 25586 /* flexslider appear */ 25587 if($('.appear-block').length) 25588 { 25589 $('.appear-block').appear(function(){ 25590 var $this = $(this); 25591 $this.removeClass('appear-block'); 25592 25593 CheckFlexSlider(); 25594 InitFlexSlider(); 25595 InitOwlSlider(); 25596 }, {accX: 0, accY: 150}) 25597 } 25598 25599 /* js-load-block appear */ 25600 if($('.js-load-block').length) 25601 { 25602 var objUrl = parseUrlQuery(); 25603 var bClearCache = false; 25604 if('clear_cache' in objUrl){ 25605 if(objUrl.clear_cache == 'Y'){ 25606 bClearCache = true; 25607 } 25608 } 25609 25610 var items = []; 25611 var bIdle = true; 25612 var insertNextBlockContent = function(){ 25613 if(bIdle){ 25614 if(items.length){ 25615 bIdle = false; 25616 var item = items.pop(); 25617 25618 item.content = $.trim(item.content); 25619 25620 // remove /bitrix/js/main/core/core_window.js if it was loaded already 25621 if( 25622 item.content.indexOf('/bitrix/js/main/core/core_window.') !== -1 && 25623 BX.WindowManager 25624 ){ 25625 item.content = item.content.replace(/<script src="\/bitrix\/js\/main\/core\/core_window\.[^>]*><\/script>/gm, ''); 25626 } 25627 25628 // remove /bitrix/js/currency/core_currency.js if it was loaded already 25629 if( 25630 item.content.indexOf('/bitrix/js/currency/core_currency.') !== -1 && 25631 typeof BX.Currency === 'object' && 25632 BX.Currency.defaultFormat 25633 ){ 25634 item.content = item.content.replace(/<script src="\/bitrix\/js\/currency\/core_currency\.[^>]*><\/script>/gm, ''); 25635 } 25636 25637 // remove /bitrix/js/main/pageobject/pageobject.js if it was loaded already 25638 if( 25639 item.content.indexOf('/bitrix/js/main/pageobject/pageobject.') !== -1 && 25640 BX.PageObject 25641 ){ 25642 item.content = item.content.replace(/<script src="\/bitrix\/js\/main\/pageobject\/pageobject\.[^>]*><\/script>/gm, ''); 25643 } 25644 25645 // remove /bitrix/js/main/polyfill/promise/js/promise.js if it not need 25646 if( 25647 item.content.indexOf('/bitrix/js/main/polyfill/promise/js/promise.') !== -1 && 25648 typeof window.Promise !== 'undefined' && 25649 window.Promise.toString().indexOf('[native code]') !== -1 25650 ){ 25651 item.content = item.content.replace(/<script src="\/bitrix\/js\/main\/polyfill\/promise\/js\/promise\.[^>]*><\/script>/gm, ''); 25652 } 25653 25654 var ob = BX.processHTML(item.content); 25655 25656 // stop ya metrika webvisor DOM indexer 25657 pauseYmObserver(); 25658 25659 item.block.removeAttr('data-file').removeClass('loader_circle'); 25660 25661 if(item.block.data('appendTo')){ 25662 item.block.find(item.block.data('appendTo'))[0].innerHTML = ob.HTML; 25663 } 25664 else{ 25665 if(item.block.find('> div[id*="bx_incl_"]').length){ 25666 item.block.find('> div[id*="bx_incl_"]')[0].innerHTML = ob.HTML; 25667 } 25668 else{ 25669 item.block[0].innerHTML = ob.HTML; 25670 } 25671 } 25672 25673 BX.ajax.processScripts(ob.SCRIPT); 25674 25675 var eventdata = {action:'jsLoadBlock'}; 25676 BX.onCustomEvent('onCompleteAction', [eventdata, item.block]); 25677 25678 // resume ya metrika webvisor 25679 // 500ms 25680 setTimeout(resumeYmObserver, 500); 25681 25682 bIdle = true; 25683 insertNextBlockContent(); 25684 } 25685 } 25686 } 25687 25688 $('.js-load-block').appear(function(){ 25689 var $this = $(this); 25690 25691 if($this.data('file')){ 25692 var add_url = bClearCache ? '?clear_cache=Y' : ''; 25693 if($this.data('block')){ 25694 add_url += (bClearCache ? '&' : '?') + 'BLOCK='+$this.data('block'); 25695 } 25696 25697 // get content 25698 $.get($this.data('file') + add_url) 25699 .done(function(html){ 25700 items.push({ 25701 block: $this, 25702 content: html, 25703 }); 25704 25705 if(items.length == 1){ 25706 setTimeout(insertNextBlockContent, 100); 25707 } 25708 }); 25709 } 25710 }, {accX: 0, accY: isMobile ? 300 : 150}) 25711 } 25712 25713 /*show ajax store amount product*/ 25714 $(document).on('click', '.js-show-info-block', function(e){ 25715 if (window.matchMedia('(max-width: 500px)').matches) { 25716 return 25717 } 25718 var $this = $(this); 25719 e.stopPropagation(); 25720 $('.js-info-block').fadeOut(); 25721 25722 if($this.hasClass('opened')) 25723 { 25724 $('.js-show-info-block').removeClass('opened'); 25725 } 25726 else 25727 { 25728 $('.js-show-info-block').removeClass('opened'); 25729 $this.addClass('opened'); 25730 } 25731 25732 if(!$this.siblings('.js-info-block').length) 25733 { 25734 var dataFields = $this.closest('.sa_block').data('fields'); 25735 dataFields = dataFields == 'null' || dataFields === undefined ? '' : dataFields; 25736 var dataUserFields = $this.closest('.sa_block').data('user-fields'); 25737 dataUserFields = dataUserFields == 'null' || dataUserFields === undefined ? '' : dataUserFields; 25738 var objUrl = parseUrlQuery(), 25739 add_url = ''; 25740 if('clear_cache' in objUrl) 25741 { 25742 if(objUrl.clear_cache == 'Y') 25743 add_url += '?clear_cache=Y'; 25744 } 25745 25746 var obPostParams = { 25747 'ajax': 'Y', 25748 'ELEMENT_ID': $this.data('id'), 25749 'FIELDS': dataFields, 25750 'USER_FIELDS': dataUserFields, 25751 'STORES': $this.closest('.sa_block').data('stores') || '' 25752 }; 25753 25754 $this.addClass('loadings');
25755 $.post(arAsproOptions['SITE_DIR']+'ajax/productStoreAmountCompact.php'+add_url, obPostParams) 25756 .done(function(html){ 25757 $this.removeClass('loadings'); 25758 $(html).appendTo($this.closest('.sa_block')); 25759 25760 $this.siblings('.js-info-block').find('.more-btn a').attr('href', $this.closest('.item_info').find('a').attr('href')); 25761 InitScrollBar(); 25762 25763 var eventdata = {action:'jsShowStores'}; 25764 BX.onCustomEvent('onCompleteAction', [eventdata, $this]); 25765 }) 25766 } 25767 else 25768 { 25769 if($this.hasClass('opened')) 25770 { 25771 $this.siblings('.js-info-block').find('.more-btn a').attr('href', $this.closest('.item_info').find('a').attr('href')); 25772 $this.siblings('.js-info-block').fadeIn(); 25773 InitScrollBar(); 25774 } 25775 else 25776 { 25777 $this.siblings('.js-info-block').fadeOut(); 25778 } 25779 } 25780 }) 25781 $(document).on('click', '.js-info-block .svg-inline-close', function(){ 25782 $('.js-show-info-block').removeClass('opened'); 25783 $(this).closest('.js-info-block').fadeOut(); 25784 }) 25785 /**/ 25786 25787 /*adaptive menu start*/ 25788 $('.menu.adaptive').on('click', function(){ 25789 $(this).toggleClass('opened'); 25790 if($(this).hasClass('opened')){ 25791 $('.mobile_menu').toggleClass('opened').slideDown(); 25792 }else{ 25793 $('.mobile_menu').toggleClass('opened').slideUp(); 25794 } 25795 }); 25796 $('.mobile_menu .has-child >a').on('click', function(e){ 25797 var parentLi=$(this).parent(); 25798 e.preventDefault(); 25799 parentLi.toggleClass('opened'); 25800 parentLi.find('.dropdown').slideToggle(); 25801 }) 25802 25803 $('.mobile_menu .search-input-div input').on('keyup', function(e) { 25804 var inputValue = $(this).val(); 25805 $('.center_block .stitle_form input').val(inputValue); 25806 if(e.keyCode == 13){ 25807 $('.center_block .stitle_form form').submit(); 25808 } 25809 }); 25810 25811 $('.center_block .stitle_form input').on('keyup', function(e) { 25812 var inputValue = $(this).val(); 25813 $('.mobile_menu .search-input-div input').val(inputValue); 25814 if(e.keyCode == 13){ 25815 $('.center_block .stitle_form form').submit(); 25816 } 25817 }); 25818 25819 $('.mobile_menu .search-button-div button').on('click', function(e) { 25820 e.preventDefault(); 25821 var inputValue = $(this).parents().find('input').val(); 25822 $('.center_block .stitle_form input').val(inputValue); 25823 $('.center_block .stitle_form form').submit(); 25824 }); 25825 /*adaptive menu end*/ 25826 25827 $(document).on('click', '.mega-menu .dropdown-menu', function(e){ 25828 e.stopPropagation() 25829 }); 25830 25831 $(document).on('click', '.mega-menu .dropdown-toggle.more-items', function(e){ 25832 e.preventDefault(); 25833 }); 25834 25835 $(document).on('mouseenter', '.table-menu .dropdown,.table-menu .dropdown-submenu,.table-menu .dropdown-toggle', function() { 25836 // setTimeout( 25837 // function() { 25838 // CheckTopVisibleMenu(); 25839 // }, 275); 25840 25841 }); 25842 $(document).on('mouseenter', '#headerfixed .table-menu .dropdown-menu .dropdown-submenu', function() { 25843 setTimeout( 25844 function() { 25845 CheckTopVisibleMenu(); 25846 }, 275); 25847 }); 25848 25849 $('.mega-menu .search-item .search-icon, .menu-row #title-search .fa-close').on('click', function(e) { 25850 e.preventDefault(); 25851 $('.menu-row #title-search').toggleClass('hide'); 25852 }); 25853 25854 $('.mega-menu ul.nav .search input').on('keyup', function(e) { 25855 var inputValue = $(this).val(); 25856 $('.menu-row > .search input').val(inputValue); 25857 if(e.keyCode == 13){ 25858 $('.menu-row > .search form').submit(); 25859 } 25860 }); 25861 25862 $('.menu-row > .search input').on('keyup', function(e) { 25863 var inputValue = $(this).val(); 25864 $('.mega-menu ul.nav .search input').val(inputValue); 25865 if(e.keyCode == 13){ 25866 $('.menu-row > .search form').submit(); 25867 } 25868 }); 25869 25870 $('.mega-menu ul.nav .search button').on('click', function(e) { 25871 e.preventDefault(); 25872 var inputValue = $(this).parents('.search').find('input').val(); 25873 $('.menu-and-search .search input').val(inputValue); 25874 $('.menu-row > .search form').submit(); 25875 }); 25876 25877 $('.btn.btn-add').on('click', function(){ 25878 $.ajax({ 25879 type:"GET", 25880 url:arAsproOptions['SITE_DIR']+"ajax/clearBasket.php", 25881 success: function(data){ 25882 } 25883 }); 25884 }) 25885
25886 $('.sort_display a').on('click', function(){ 25887 $(this).siblings().removeClass('current'); 25888 $(this).addClass('current'); 25889 }) 25890 25891 /*detail order show payments*/ 25892 $('.sale-order-detail-payment-options-methods-info-change-link').on('click', function(){ 25893 $(this).closest('.sale-order-detail-payment-options-methods-info').addClass('opened').siblings().addClass('opened'); 25894 }) 25895 25896 /*expand/hide filter values*/ 25897 $(document).on('click', '.expand_block', function(){ 25898 togglePropBlock($(this)); 25899 }) 25900 25901 /*touch event*/ 25902 document.addEventListener('touchend', function(event) { 25903 if(!$(event.target).closest('.menu-item').length && !$(event.target).hasClass('menu-item')){ 25904 $('.menu-row .dropdown-menu').css({'display':'none','opacity':0}); 25905 $('.menu-item').removeClass('hover'); 25906 $('.bx-breadcrumb-item.drop').removeClass('hover'); 25907 } 25908 if(!$(event.target).closest('.menu.topest').length){ 25909 $('.menu.topest').css({'overflow': 'hidden'}); 25910 $('.menu.topest > li').removeClass('hover'); 25911 } 25912 if(!$(event.target).closest('.full.has-child').length){ 25913 $('.menu_top_block.catalog_block li').removeClass('hover'); 25914 } 25915 if(!$(event.target).closest('.basket_block').length){ 25916 $('.basket_block .link').removeClass('hover'); 25917 $('.basket_block .basket_popup_wrapp').slideUp(); 25918 } 25919 if(!$(event.target).closest('.catalog_item').length){ 25920 var tabsContentUnhoverHover = $('.tab:visible').attr('data-unhover') * 1; 25921 $('.tab:visible').stop().animate({'height': tabsContentUnhoverHover}, 100); 25922 $('.tab:visible').find('.catalog_item').removeClass('hover'); 25923 $('.tab:visible').find('.catalog_item .buttons_block').stop().fadeOut(233); 25924 if($('.catalog_block').length){ 25925 $('.catalog_block').find('.catalog_item_wrapp').removeClass('hover'); 25926 $('.catalog_block').find('.catalog_item').removeClass('hover'); 25927 } 25928 } 25929 //togglePropBlock($(event.target)); 25930 25931 }, false); 25932 25933 25934 touchMenu('.menu-row .menu-item'); 25935 touchTopMenu('.menu.topest li'); 25936 touchLeftMenu('.menu_top_block:not(.in-search) li.full'); 25937 touchBreadcrumbs('.bx-breadcrumb-item.drop'); 25938 25939 $(document).on('keyup', '.coupon .input_coupon input', function(){ 25940 if($(this).val().length){ 25941 $(this).removeClass('error'); 25942 $(this).closest('.input_coupon').find('.error').remove(); 25943 }else{ 25944 $(this).addClass('error'); 25945 $("<label class='error'>"+BX.message("INPUT_COUPON")+"</label>").insertBefore($(this)); 25946 } 25947 }) 25948 showPhoneMask('input[autocomplete=tel]'); 25949 BX.addCustomEvent(window, "onAjaxSuccessFilter", function(e){ 25950 setBasketStatusBtn(); 25951 checkLinkedArticles(); 25952 }); 25953 25954 $(document).on('click', '.block_container .items .item.initied', function(){ 25955 var _this = $(this), 25956 itemID = _this.data('id'), 25957 animationTime = 200; 25958 25959 _this.closest('.items').fadeOut(animationTime, function(){ 25960 _this.closest('.block_container').find('.detail_items').fadeIn(animationTime); 25961 _this.closest('.block_container').find('.detail_items .item[data-id='+itemID+']').fadeIn(animationTime); 25962 25963 var arCoordinates = _this.data('coordinates').split(','); 25964 25965 if(typeof map !== 'undefined') 25966 map.setCenter([arCoordinates[0], arCoordinates[1]], 15); 25967 }); 25968 }); 25969 25970 $(document).on('click', '.block_container .top-close', function(){ 25971 var _this = $(this).closest('.block_container').find('.detail_items .item:visible'), 25972 animationTime = 200; 25973 _this.fadeOut(animationTime); 25974 _this.closest('.block_container').find('.detail_items').fadeOut(animationTime, function(){ 25975 _this.closest('.block_container').find('.items').fadeIn(animationTime); 25976 25977 if(typeof map !== 'undefined' && typeof clusterer !== 'undefined') 25978 { 25979 map.setBounds(clusterer.getBounds(), { 25980 zoomMargin: 40, 25981 // checkZoomRange: true 25982 }); 25983 } 25984 }); 25985 }); 25986 25987 BX.addCustomEvent(window, "onAjaxSuccess", function(e){ 25988 if(e != 'OK') 25989 { 25990 initSelects(document); 25991 InitOrderCustom(); 25992 showPhoneMask('input[autocomplete=tel]'); 25993 25994 /*scroll in mobile for filter*/ 25995 if($('.bx_filter').length){ 25996 if(window.matchMedia('(min-width: 768px)').matches){ 25997 // min-width: 768px 25998 $('.bx_filter .scrollbar').removeClass('mobile-scroll'); 25999 $('.bx_filter .srollbar-custom').removeClass('mobile-scroll'); 26000 $('.bx_filter .bx_filter_section form .bx_filter_parameters').removeClass('mobile-scroll'); 26001 InitScrollBar(); 26002 InitCustomScrollBar(); 26003 } 26004 else{ 26005 // max-width: 767px 26006 $('.bx_filter .scrollbar').addClass('mobile-scroll').removeClass('scroll-init'); 26007 $('.bx_filter .srollbar-custom').addClass('mobile-scroll').removeClass('scroll-init'); 26008 $('.bx_filter .bx_filter_section form .bx_filter_parameters').addClass('mobile-scroll').removeClass('scroll-init'); 26009 if($('.bx_filter .mobile-scroll.scrollbar').length) 26010 $('.bx_filter .mobile-scroll.scrollbar').mCustomScrollbar("destroy"); 26011 if($('.bx_filter .mobile-scroll.srollbar-custom').length) 26012 $('.bx_filter .mobile-scroll.srollbar-custom').mCustomScrollbar("destroy"); 26013 } 26014 } 26015 /*end*/ 26016 26017 if ($('.catalog_detail').length && !$('.fast_view_frame').length) { 26018 $('.bx_filter').remove(); 26019 InitFlexSlider(); 26020 InitOwlSlider(); 26021 } 26022
26023 if (arAsproOptions["PAGES"]["CATALOG_PAGE"]) { 26024 initCountdown(); 26025 26026 if(typeof window['stickySidebar'] !== 'undefined') 26027 window['stickySidebar'].updateSticky(); 26028 } 26029 26030 if (arAsproOptions["PAGES"]["ORDER_PAGE"]) { 26031 orderActions(e); 26032 } 26033 26034 if (e && typeof e === 'object' && 'action' in e && e.action === 'ajaxContentLoadedTab') { 26035 lazyLoadPagenBlock(); 26036 } 26037 26038 InitStickySideBar(); 26039 } 26040 }); 26041 26042 //event for default basket quantity change 26043 BX.addCustomEvent(window, "OnBasketChange", function(e){ 26044 if(arAsproOptions["PAGES"]["BASKET_PAGE"]) 26045 { 26046 var summ = 0, 26047 title = ''; 26048 26049 if(typeof BX.Sale !== "undefined") 26050 { 26051 if(typeof BX.Sale.BasketComponent !== "undefined") 26052 { 26053 summ = BX.Sale.BasketComponent.result.allSum; 26054 title = BX.message('JS_BASKET_COUNT_TITLE').replace('SUMM', summ); 26055 } 26056 } 26057 else 26058 { 26059 summ = $('#allSum_FORMATED').html().replace(/ /g, ' '); 26060 title = BX.message('JS_BASKET_COUNT_TITLE').replace('SUMM', summ); 26061 } 26062 26063 if($('.js-basket-block .wrap .prices').length) 26064 $('.js-basket-block .wrap .prices').html(summ); 26065 if($('a.basket-link.basket').length) 26066 $('a.basket-link.basket').attr('title', title); 26067 if($('.basket_fly .opener .basket_count').length) 26068 $('.basket_fly .opener .basket_count').attr('title', title); 26069 26070 } 26071 }) 26072}); 26073 26074if(!funcDefined('setBasketStatusBtn')){ 26075 setBasketStatusBtn = function(type){ 26076 var bSync = (typeof type !== undefined); 26077 if(typeof(arBasketAspro) !== 'undefined') 26078 { 26079 if('BASKET' in arBasketAspro) // basket items 26080 { 26081 if(arBasketAspro.BASKET) 26082 { 26083 for(var i in arBasketAspro.BASKET) 26084 { 26085 $('.to-cart[data-item='+i+']').hide(); 26086 $('.counter_block[data-item='+i+']').closest('.counter_block_inner').hide(); 26087 $('.counter_block[data-item='+i+']').hide(); 26088 $('.in-cart[data-item='+i+']').show(); 26089 $('.in-cart[data-item='+i+']').closest('.button_block').addClass('wide'); 26090 26091 $('.wish_item.to[data-item='+i+']').show(); 26092 $('.wish_item.in[data-item='+i+']').hide(); 26093 26094 if($('.banner_buttons.with_actions .wraps_buttons[data-id='+i+'] .basket_item_add').length) 26095 { 26096 $('.banner_buttons.with_actions .wraps_buttons[data-id='+i+'] .basket_item_add').addClass('added') 26097 $('.banner_buttons.with_actions .wraps_buttons[data-id='+i+'] .basket_item_add').attr('title', $('.banner_buttons.with_actions .wraps_buttons[data-id='+i+'] .basket_item_add').data('title2')) 26098 } 26099 26100 26101 } 26102 } 26103 } 26104 26105 if('DELAY' in arBasketAspro) // delay items 26106 { 26107 if(arBasketAspro.DELAY) 26108 { 26109 for(var i in arBasketAspro.DELAY) 26110 { 26111 $('.wish_item.to[data-item='+i+']').hide(); 26112 $('.wish_item.in[data-item='+i+']').show(); 26113 if ($('.wish_item[data-item='+i+']').find(".value.added").length) 26114 { 26115 //$('.wish_item[data-item='+i+']').addClass("added"); 26116 $('.wish_item[data-item='+i+']').find(".value").hide(); 26117 $('.wish_item[data-item='+i+']').find(".value.added").css('display','block'); 26118 } 26119 26120 $('.in-cart[data-item='+i+']').hide(); 26121 $('.to-cart[data-item='+i+']').show(); 26122 $('.to-cart[data-item='+i+']').closest('.counter_wrapp').find('.counter_block_inner').show(); 26123 $('.to-cart[data-item='+i+']').closest('.counter_wrapp').find('.counter_block').show(); 26124 $('.to-cart[data-item='+i+']').closest('.button_block').removeClass('wide'); 26125 26126 if($('.banner_buttons.with_actions .wraps_buttons[data-id='+i+'] .wish_item_add').length) 26127 { 26128 $('.banner_buttons.with_actions .wraps_buttons[data-id='+i+'] .wish_item_add').addClass('added') 26129 $('.banner_buttons.with_actions .wraps_buttons[data-id='+i+'] .wish_item_add').attr('title', $('.banner_buttons.with_actions .wraps_buttons[data-id='+i+'] .wish_item_add').data('title2')) 26130 } 26131 } 26132 } 26133 } 26134 26135 if('SUBSCRIBE' in arBasketAspro) // subscribe items 26136 { 26137 if(arBasketAspro.SUBSCRIBE) 26138 { 26139 for(var i in arBasketAspro.SUBSCRIBE) 26140 { 26141 $('.to-subscribe[data-item='+i+']').hide(); 26142 $('.in-subscribe[data-item='+i+']').show(); 26143 } 26144 } 26145 } 26146 26147 if('COMPARE' in arBasketAspro) // compare items 26148 { 26149 if(arBasketAspro.COMPARE) 26150 { 26151 for(var i in arBasketAspro.COMPARE) 26152 { 26153 $('.compare_item.to[data-item='+i+']').hide(); 26154 $('.compare_item.in[data-item='+i+']').show(); 26155 if ($('.compare_item[data-item='+i+']').find(".value.added").length) 26156 { 26157 //$('.compare_item[data-item='+i+']').addClass("added"); 26158 $('.compare_item[data-item='+i+']').find(".value").hide(); 26159 $('.compare_item[data-item='+i+']').find(".value.added").css('display','block'); 26160 } 26161 26162 if($('.banner_buttons.with_actions .wraps_buttons[data-id='+i+'] .compare_item_add').length) 26163 { 26164 $('.banner_buttons.with_actions .wraps_buttons[data-id='+i+'] .compare_item_add').addClass('added') 26165 $('.banner_buttons.with_actions .wraps_buttons[data-id='+i+'] .compare_item_add').attr('title', $('.banner_buttons.with_actions .wraps_buttons[data-id='+i+'] .compare_item_add').data('title2')) 26166 } 26167 } 26168 } 26169 } 26170 } 26171 } 26172} 26173 26174if(!funcDefined('togglePropBlock')){ 26175 togglePropBlock=function(className){ 26176 var all_props_block = className.closest('.bx_filter_parameters_box_container').find('.hidden_values'); 26177 if(all_props_block.length && (className.hasClass('inner_text') || className.hasClass('expand_block'))) 26178 { 26179 if(all_props_block.is(':visible')) 26180 { 26181 className.text(BX.message('FILTER_EXPAND_VALUES')); 26182 all_props_block.hide(); 26183 } 26184 else 26185 {
26186 className.text(BX.message('FILTER_HIDE_VALUES')); 26187 all_props_block.show(); 26188 } 26189 } 26190 } 26191} 26192 26193if(!funcDefined('showPhoneMask')){ 26194 showPhoneMask=function(className){ 26195 $(className).inputmask('mask', {'mask': arAsproOptions['THEME']['PHONE_MASK'], 'showMaskOnHover':false }); 26196 } 26197} 26198 26199if(!funcDefined('getActualBasket')){ 26200 getActualBasket=function(iblockID, type, sync){ 26201 var data=''; 26202 if(typeof iblockID !=="undefined" && iblockID){ 26203 data={"iblockID":iblockID} 26204 } 26205 $.ajax({ 26206 type:"GET", 26207 url:arAsproOptions['SITE_DIR']+"ajax/actualBasket.php", 26208 data:data, 26209 success: function(data){ 26210 if(!$('.js_ajax').length) 26211 $('body').append('<div class="js_ajax"></div>'); 26212 $('.js_ajax').html(data); 26213 26214 if(typeof sync !=="undefined"){ 26215 setBasketStatusBtn(true); 26216 } 26217 26218 if(typeof(type) !== undefined) 26219 { 26220 var eventdata = {action:'loadActualBasket'+type}; 26221 BX.onCustomEvent('onCompleteAction', [eventdata]); 26222 } 26223 } 26224 }); 26225 } 26226} 26227 26228if(!funcDefined('reloadBasketCounters')){ 26229 reloadBasketCounters=function(count, sync){ 26230 var data=''; 26231 if(count) { 26232 $('.basket-link.basket .count, .wraps_icon_block.basket .count .items > span').text(count); 26233 } else { 26234 $.ajax({ 26235 type:"GET", 26236 url:arAsproOptions['SITE_DIR']+"ajax/actualBasket.php", 26237 data:data, 26238 success: function(data){ 26239 if(!$('.js_ajax').length) 26240 $('body').append('<div class="js_ajax"></div>'); 26241 $('.js_ajax').html(data); 26242 26243 $('.basket-link.basket .count, .wraps_icon_block.basket .count .items > span').text(Object.keys(arBasketAspro.BASKET).length); 26244 $('.basket-link.delay .count, .wraps_icon_block.delay .count .items > span').text(Object.keys(arBasketAspro.DELAY).length); 26245 $('.basket-link.compare .count, .wraps_icon_block.compare .count .items > span').text(Object.keys(arBasketAspro.COMPARE).length); 26246 26247 if(typeof sync !== 'undefined') 26248 { 26249 setBasketStatusBtn(true); 26250 } 26251 } 26252 }); 26253 } 26254 } 26255} 26256 26257function touchMenu(selector){ 26258 if(isMobile){ 26259 if($(selector).length) 26260 { 26261 $(selector).each(function(){ 26262 var th=$(this); 26263 th.on('touchend', function(e) { 26264 var _th = $(e.target).closest('.menu-item'); 26265 26266 $('.menu.topest > li').removeClass('hover'); 26267 $('.menu_top_block.catalog_block li').removeClass('hover'); 26268 $('.bx-breadcrumb-item.drop').removeClass('hover'); 26269 26270 if (_th.find('.dropdown-menu').length && !_th.hasClass('hover')) { 26271 e.preventDefault(); 26272 e.stopPropagation(); 26273 _th.siblings().removeClass('hover'); 26274 _th.addClass('hover'); 26275 $('.menu-row .dropdown-menu').css({'display':'none', 'opacity':0}); 26276 if(_th.hasClass('menu-item')) 26277 { 26278 _th.closest('.dropdown-menu').css({'display':'block', 'opacity':1}); 26279 } 26280 if(_th.find('> .wrap > .dropdown-menu')) 26281 { 26282 _th.find('> .wrap > .dropdown-menu').css({'display':'block', 'opacity':1}); 26283 } 26284 else if(_th.find('> .dropdown-menu')) 26285 { 26286 _th.find('> .dropdown-menu').css({'display':'block', 'opacity':1}); 26287 } 26288 CheckTopVisibleMenu(); 26289 } 26290 else 26291 { 26292 var href = ($(e.target).attr('href') ? $(e.target).attr('href') : $(e.target).closest('a').attr('href')) 26293 if(href && href !== 'undefined') 26294 location.href = href; 26295 } 26296 }) 26297 }) 26298 } 26299 }else{ 26300 $(selector).off(); 26301 } 26302} 26303 26304function touchTopMenu(selector){ 26305 if(isMobile){ 26306 if($(selector).length) 26307 { 26308 $(selector).each(function(){ 26309 var th=$(this); 26310 th.on('touchend', function(e) { 26311 var _th = $(e.target).closest('li'); 26312 26313 $('.menu-item').removeClass('hover'); 26314 $('.menu_top_block.catalog_block li').removeClass('hover'); 26315 $('.bx-breadcrumb-item.drop').removeClass('hover'); 26316 26317 if (_th.hasClass('more') && !_th.hasClass('hover')) { 26318 e.preventDefault(); 26319 e.stopPropagation(); 26320 _th.siblings().removeClass('hover'); 26321 _th.addClass('hover'); 26322 $('.menu.topest').css({'overflow': 'visible'}); 26323 } 26324 else 26325 { 26326 var href = ($(e.target).attr('href') ? $(e.target).attr('href') : $(e.target).closest('a').attr('href')) 26327 if(href && href !== 'undefined') 26328 location.href = href; 26329 } 26330 }) 26331 }) 26332 } 26333 }else{ 26334 $(selector).off(); 26335 } 26336} 26337 26338function touchLeftMenu(selector){ 26339 if(isMobile){ 26340 if($(selector).length) 26341 { 26342 $(selector).each(function(){ 26343 var th=$(this); 26344 th.on('touchend', function(e) { 26345 var _th = $(e.target).closest('li'); 26346 26347 $('.menu-item').removeClass('hover'); 26348 $('.bx-breadcrumb-item.drop').removeClass('hover'); 26349 $('.menu.topest > li').removeClass('hover'); 26350 26351 if (_th.hasClass('has-child') && !_th.hasClass('hover')) { 26352 e.preventDefault(); 26353 e.stopPropagation(); 26354 _th.siblings().removeClass('hover'); 26355 _th.addClass('hover'); 26356 } 26357 else 26358 { 26359 var href = ($(e.target).attr('href') ? $(e.target).attr('href') : $(e.target).closest('a').attr('href')) 26360 if(href && href !== 'undefined') 26361 location.href = href; 26362 } 26363 }) 26364 }) 26365 } 26366 }else{ 26367 $(selector).off(); 26368 } 26369} 26370 26371function touchBreadcrumbs(selector){ 26372 if(isMobile){ 26373 if($(selector).length) 26374 { 26375 $(selector).each(function(){ 26376 var th=$(this); 26377 th.on('touchend', function(e) { 26378 var _th = $(e.target).closest('.bx-breadcrumb-item'); 26379 26380 $('.menu-item').removeClass('hover'); 26381 $('.menu.topest > li').removeClass('hover'); 26382 $('.menu_top_block.catalog_block li').removeClass('hover'); 26383 26384 if(!_th.hasClass('hover')) { 26385 e.preventDefault(); 26386 e.stopPropagation(); 26387 _th.siblings().removeClass('hover'); 26388 _th.addClass('hover'); 26389 } 26390 else 26391 { 26392 _th.removeClass('hover'); 26393 var href = ($(e.target).attr('href') ? $(e.target).attr('href') : $(e.target).closest('a').attr('href')); 26394 if(href && href !== 'undefined') 26395 location.href = href; 26396 } 26397 }) 26398 }) 26399 } 26400 }else{ 26401 $(selector).off(); 26402 } 26403} 26404 26405function touchItemBlock(selector){ 26406 /*if(isMobile){ 26407 if($(selector).length) 26408 { 26409 $(selector).each(function(){ 26410 var th=$(this), 26411 item=th.closest('.catalog_item'); 26412 th.on('touchend', function(e) { 26413 if (!item.hasClass('hover')) { 26414 e.preventDefault(); 26415 // e.stopPropagation(); 26416 item.siblings().removeClass('hover'); 26417 item.siblings().blur(); 26418 item.closest('.catalog_block').find('.catalog_item').removeClass('hover'); 26419 item.addClass('hover'); 26420 item.addClass('touch'); 26421 26422 var tabsContentHover = th.closest('.tab').attr('data-hover') * 1, 26423 tabsContentUnhoverHover = th.closest('.tab').attr('data-unhover') * 1; 26424 26425 th.closest('.tab').stop().animate({'height': tabsContentUnhoverHover}, 100); 26426 th.closest('.catalog_item').siblings().find('.buttons_block').stop().fadeOut(233) 26427 26428 th.closest('.tab').fadeTo(100, 1); 26429 th.closest('.tab').stop().css({'height': tabsContentHover}); 26430 th.closest('.catalog_item').find('.buttons_block').fadeIn(450, 'easeOutCirc'); 26431 } 26432 }) 26433 }) 26434 } 26435 }else{ 26436 $(selector).off(); 26437 }*/ 26438} 26439function touchBasket(selector){ 26440 if(arAsproOptions['THEME']['SHOW_BASKET_ONADDTOCART'] !== 'N'){ 26441 if($(window).outerWidth()>600){ 26442 $(document).find(selector).on('touchend', function(e) { 26443 if ($(this).parent().find('.basket_popup_wrapp').length && !$(this).hasClass('hover')) { 26444 e.preventDefault(); 26445 e.stopPropagation(); 26446 $(this).addClass('hover'); 26447 $(this).parent().find('.basket_popup_wrapp').slideDown(); 26448 } 26449 }) 26450 }else{ 26451 $(selector).off(); 26452 } 26453 } 26454} 26455 26456function showTotalSummItem(popup){ 26457 //show total summ 26458 if(arAsproOptions["THEME"]["SHOW_TOTAL_SUMM_TYPE"] == "ALWAYS" && arAsproOptions["THEME"]["SHOW_TOTAL_SUMM"] == "Y") 26459 { 26460 var parent = 'body '; 26461 if(typeof popup === 'string' && popup == 'Y') 26462 parent = '.popup '; 26463 $(parent+'.counter_wrapp .counter_block input.text').each(function(){ 26464 var _th = $(this); 26465 if(_th.data('product')) 26466 { 26467 var obProduct = _th.data('product'); 26468 if(typeof window[obProduct] == 'object') 26469 window[obProduct].setPriceAction('Y'); 26470 else 26471 setPriceItem(_th.closest('.main_item_wrapper'), _th.val()); 26472 } 26473 else 26474 setPriceItem(_th.closest('.main_item_wrapper'), _th.val()); 26475 }) 26476 } 26477}
26477 26478 26479function initFull(){ 26480 initSelects(document); 26481 initHoverBlock(document); 26482 touchItemBlock('.catalog_item a'); 26483 InitOrderCustom(); 26484 showTotalSummItem(); 26485 basketActions(); 26486 orderActions(); 26487 26488 checkMobileRegion(); 26489} 26490 26491checkMobileRegion = function(){ 26492 if($('.confirm_region').length) 26493 { 26494 if(!$('.top_mobile_region').length) 26495 $('<div class="top_mobile_region"><div class="confirm_wrapper"><div class="confirm_region"></div><div class="close_popup"></div></div></div>').insertBefore($('#mobileheader')); 26496 $('.top_mobile_region .confirm_region').html($('.confirm_region').html()); 26497 26498 $('.top_mobile_region .close_popup').click(function(){ 26499 $(this).remove(); 26500 $('.confirm_region').remove(); 26501 }) 26502 } 26503} 26504if(!funcDefined('orderActions')){ 26505 orderActions = function(e){ 26506 if(arAsproOptions["PAGES"]["ORDER_PAGE"]){ 26507 //phone 26508 if($('#bx-soa-order input[autocomplete=tel]').length){ 26509 // get property phone 26510 for(var i = 0;i<BX.Sale.OrderAjaxComponent.result.ORDER_PROP.properties.length;++i){ 26511 if(BX.Sale.OrderAjaxComponent.result.ORDER_PROP.properties[i].IS_PHONE == 'Y'){ 26512 var arPropertyPhone = BX.Sale.OrderAjaxComponent.result.ORDER_PROP.properties[i]; 26513 } 26514 } 26515 26516 // validate input type=tel 26517 if(typeof(BX.Sale.OrderAjaxComponent) !== 'undefined' && typeof(BX.Sale.OrderAjaxComponent) === 'object' && typeof(arPropertyPhone) == 'object' && arPropertyPhone){ 26518 BX.Sale.OrderAjaxComponent.validatePhone = function(input, arProperty, fieldName) 26519 { 26520 if (!input || !arProperty) 26521 return []; 26522 26523 var value = input.value, 26524 errors = [], 26525 name = BX.util.htmlspecialchars(arProperty.NAME), 26526 field = BX.message('SOA_FIELD') + ' "' + name + '"', 26527 re; 26528 26529 if (arProperty.REQUIRED == 'Y' && value.length == 0){ 26530 errors.push(field + ' ' + BX.message('SOA_REQUIRED')); 26531 } 26532 26533 if(arProperty.IS_PHONE == 'Y' && value.length > 0){ 26534 function regexpPhone(value, element, regexp){ 26535 var re = new RegExp( regexp ); 26536 return re.test(value); 26537 } 26538 26539 var validPhone = regexpPhone($(input).val(), $(input), arAsproOptions['THEME']['VALIDATE_PHONE_MASK']); 26540 26541 if(!validPhone){ 26542 errors.push(field + ' ' +BX.message('JS_FORMAT_ORDER')); 26543 } 26544 } 26545 26546 return errors; 26547 } 26548 26549 BX.Sale.OrderAjaxComponent.getValidationDataPhone = function(arProperty, propContainer){ 26550 var data = {}, inputs; 26551 switch (arProperty.TYPE) 26552 { 26553 case 'STRING': 26554 data.action = 'blur'; 26555 data.func = BX.delegate(function(input, fieldName){ 26556 return this.validatePhone(input, arProperty, fieldName); 26557 }, this); 26558 26559 inputs = propContainer.querySelectorAll('input[type=tel]'); 26560 if ($(inputs).length) 26561 { 26562 data.inputs = inputs; 26563 break; 26564 } 26565 } 26566 26567 return data; 26568 }; 26569 26570 BX.Sale.OrderAjaxComponent.bindValidationPhone = function(id, propContainer) 26571 { 26572 if (!this.validation.properties || !this.validation.properties[id]) 26573 return; 26574 26575 var arProperty = this.validation.properties[id], 26576 data = this.getValidationDataPhone(arProperty, propContainer), 26577 i, k; 26578 26579 if (data && data.inputs && data.action) 26580 { 26581 for (i = 0; i < $(data.inputs).length; i++) 26582 { 26583 if (BX.type.isElementNode(data.inputs[i])){ 26584 BX.bind(data.inputs[i], data.action, BX.delegate(function(){ 26585 this.isValidProperty(data); 26586 }, this)); 26587 } 26588 else{ 26589 for (k = 0; k < $(data.inputs[i]).length; k++) 26590 BX.bind(data.inputs[i][k], data.action, BX.delegate(function(){ 26591 this.isValidProperty(data); 26592 }, this)); 26593 } 26594 } 26595 } 26596 }; 26597 26598 BX.Sale.OrderAjaxComponent.isValidPropertiesBlock = function(excludeLocation) 26599 { 26600 if (!this.options.propertyValidation) 26601 return []; 26602 26603 var props = this.orderBlockNode.querySelectorAll('.bx-soa-customer-field[data-property-id-row]'), 26604 propsErrors = [], 26605 id, propContainer, arProperty, data, i; 26606 26607 for (i = 0; i < props.length; i++) 26608 { 26609 id = props[i].getAttribute('data-property-id-row'); 26610 26611 if (!!excludeLocation && this.locations[id]) 26612 continue; 26613 26614 propContainer = props[i].querySelector('.soa-property-container'); 26615 if (propContainer) 26616 { 26617 arProperty = this.validation.properties[id]; 26618 data = this.getValidationData(arProperty, propContainer); 26619 dataPhone = this.getValidationDataPhone(arProperty, propContainer); 26620 data = $.extend({}, data, dataPhone); 26621 26622 propsErrors = propsErrors.concat(this.isValidProperty(data, true)); 26623 } 26624 } 26625 26626 return propsErrors; 26627 }; 26628 26629 26630 // create input type=tel 26631 var input = $('input[autocomplete=tel]'), 26632 inputHTML = input[0].outerHTML, 26633 value = input.val(), 26634 newInput = input[0].outerHTML.replace('type="text"', 'type="tel" value="'+value+'"'); 26635 26636 if($(input).length < 2) 26637 { 26638 input.hide(); 26639 $(newInput).insertAfter(input); 26640 } 26641 showPhoneMask('input[autocomplete=tel][type=tel]'); 26642 26643 // change value input type=text when change input type=tel 26644 $('input[autocomplete=tel][type=tel]').on('blur', function(){ 26645 var $this = $(this); 26646 26647 var value = $this.val(); 26648 $this.parent().find('input[autocomplete=tel][type=text]').val(value); 26649 }); 26650 26651 BX.Sale.OrderAjaxComponent.bindValidationPhone(arPropertyPhone.ID, $('input[autocomplete=tel]').parent()[0]); 26652 } 26653 } 26654 26655 if($('.bx-soa-cart-total').length){ 26656 if(!$('.change_basket').length) 26657 $('.bx-soa-cart-total').prepend('<div class="change_basket">'+BX.message("BASKET_CHANGE_TITLE")+'<a href="'+arAsproOptions["SITE_DIR"]+'basket/" class="change_link">'+BX.message("BASKET_CHANGE_LINK")+'</a></div>'); 26658 26659 if(typeof (BX.Sale.OrderAjaxComponent) == "object"){ 26660 if(arAsproOptions['COUNTERS']['USE_FULLORDER_GOALS'] !== 'N'){ 26661 if(typeof BX.Sale.OrderAjaxComponent.reachgoalbegin === 'undefined'){ 26662 BX.Sale.OrderAjaxComponent.reachgoalbegin = true; 26663 var eventdata = {goal: 'goal_order_begin'}; 26664 BX.onCustomEvent('onCounterGoals', [eventdata]) 26665 } 26666 } 26667 26668 if(BX.Sale.OrderAjaxComponent.hasOwnProperty("params")){ 26669 $('.bx-soa-cart-total .change_link').attr('href', BX.Sale.OrderAjaxComponent.params.PATH_TO_BASKET); 26670 if(arAsproOptions["PRICES"]["MIN_PRICE"]){ 26671 if(arAsproOptions["PRICES"]["MIN_PRICE"]>Number(BX.Sale.OrderAjaxComponent.result.TOTAL.ORDER_PRICE)){ 26672 $('<div class="fademask_ext"></div>').appendTo($('body')); 26673 location.href=BX.Sale.OrderAjaxComponent.params.PATH_TO_BASKET; 26674 } 26675 } 26676 } 26677 26678 // update oreder auth form 26679 if($('#bx-soa-auth').length && !$('#bx-soa-auth .redisigned').length){ 26680 // update input USER_LOGIN 26681 if($('input[name="USER_LOGIN"]').length){ 26682 var $label = $('input[name="USER_LOGIN"]').closest('.bx-authform-formgroup-container').find('.bx-authform-label-container'); 26683 if(!$label.find('.bx-authform-starrequired').length){ 26684 $label.html($label.html() + '<span class="bx-authform-starrequired"> *</span>'); 26685 } 26686 } 26687 26688 // update input USER_PASSWORD 26689 if($('input[name="USER_PASSWORD"]').length){ 26690 var $label = $('input[name="USER_PASSWORD"]').closest('.bx-authform-formgroup-container').find('.bx-authform-label-container'); 26691 if(!$label.find('.bx-authform-starrequired').length){ 26692 $label.html($label.html() + '<span class="bx-authform-starrequired"> *</span>'); 26693 } 26694 } 26695 26696 if($('input[name="USER_REMEMBER"]').length){ 26697 var $label = $('input[name="USER_REMEMBER"]').attr('id', 'ORDER_AUTH_USER_REMEMBER').closest('label').attr('for', 'ORDER_AUTH_USER_REMEMBER'); 26698 var html = $('input[name="USER_REMEMBER"]').attr('id', 'ORDER_AUTH_USER_REMEMBER').wrap('<div id="trem_"></div>').parent().html(); 26699 $('#trem_').remove(); 26700 $label.html($label.text()); 26701 $(html).insertBefore($label).closest('.bx-authform-formgroup-container').addClass('filter'); 26702 var html = $('#bx-soa-auth .bx-authform>a').addClass('pull-right').addClass('forgot').wrap('<div id="trem_"></div>').parent().html(); 26703 $('#trem_').remove(); 26704 $(html).insertAfter($label.closest('.checkbox')); 26705 } 26706 26707 $('#bx-soa-auth .bx-soa-reg-block .btn').removeClass('btn-default').removeClass('btn-lg').addClass('transparent').addClass('btn-lg').text(BX.message('ORDER_REGISTER_BUTTON')); 26708 26709 $('#bx-soa-auth').append('<div class="redisigned hidden></div>'); 26710 } 26711 26712 // update oreder register form 26713 if($('.bx-soa-section-content.reg').length && !$('.bx-soa-section-content.reg .redisigned').length){ 26714 var bRebindRegSubmit = false;
26715 26716 if(arAsproOptions.THEME.LOGIN_EQUAL_EMAIL === 'Y'){ 26717 bRebindRegSubmit = true; 26718 26719 // update input NEW_LOGIN 26720 if($('input[name="NEW_LOGIN"]').length){ 26721 $('input[name="NEW_LOGIN"]').closest('.bx-authform-formgroup-container').hide(); 26722 } 26723 } 26724 26725 if(arAsproOptions.THEME.PERSONAL_ONEFIO === 'Y'){ 26726 bRebindRegSubmit = true; 26727 26728 // update input NEW_NAME 26729 if($('input[name="NEW_NAME"]').length){ 26730 $('input[name="NEW_NAME"]').closest('.bx-authform-formgroup-container').find('.bx-authform-label-container').html(BX.message('ORDER_FIO_LABEL') + '<span class="bx-authform-starrequired"> *</span>'); 26731 } 26732 26733 // update input NEW_LAST_NAME 26734 if($('input[name="NEW_LAST_NAME"]').length){ 26735 $('input[name="NEW_LAST_NAME"]').closest('.bx-authform-formgroup-container').hide(); 26736 $('input[name="NEW_LAST_NAME"]').val(' '); 26737 } 26738 } 26739 26740 if(bRebindRegSubmit){ 26741 // bind new handler for submit button 26742 var $regSubmit = $('#do_register~input[type=submit]'); 26743 if($regSubmit.length){ 26744 BX.unbindAll($regSubmit[0]); 26745 $(document).on('click', '#do_register~input[type=submit]', function(e){ 26746 e.preventDefault(); 26747 e.stopImmediatePropagation(); 26748 26749 if(arAsproOptions.THEME.LOGIN_EQUAL_EMAIL === 'Y'){ 26750 var email = BX.findChild(BX('bx-soa-auth'), {attribute: {'name': 'NEW_EMAIL'}}, true, false); 26751 var login = BX.findChild(BX('bx-soa-auth'), {attribute: {'name': 'NEW_LOGIN'}}, true, false); 26752 26753 if(login && email){ 26754 login.value = email.value; 26755 } 26756 } 26757 26758 BX('do_register').value = 'Y'; 26759 BX.Sale.OrderAjaxComponent.sendRequest('showAuthForm'); 26760 }); 26761 } 26762 } 26763 26764 // update captcha 26765 var $captcha = $('.bx-soa-section-content.reg').find('.bx-captcha'); 26766 if($captcha.length){ 26767 $captcha.addClass('captcha_image'); 26768 $captcha.append('<div class="captcha_reload"></div>'); 26769 $captcha.closest('.bx-authform-formgroup-container').addClass('captcha-row').find('input[name=captcha_word]').closest('.bx-authform-input-container').addClass('captcha_input'); 26770 } 26771 26772 // update input NEW_NAME && NEW_LAST_NAME 26773 if($('input[name=NEW_NAME]').length && $('input[name=NEW_LAST_NAME]').length && arAsproOptions.THEME.PERSONAL_ONEFIO !== 'Y'){ 26774 if(!$('input[name=NEW_NAME]').closest('.bx-authform-formgroup-container.col
26774-md-6').length){ 26775 $('input[name=NEW_NAME],input[name=NEW_LAST_NAME]').closest('.bx-authform-formgroup-container').addClass('col-md-6'); 26776 var html = $('input[name=NEW_LAST_NAME]').closest('.bx-authform-formgroup-container').wrap('<div id="trem_"></div>').parent().html(); 26777 $('#trem_').remove(); 26778 $(html).insertAfter($('input[name=NEW_NAME]').closest('.bx-authform-formgroup-container').wrap('<div class="row"></div>')); 26779 } 26780 } 26781 26782 // update input NEW_EMAIL && PHONE_NUMBER 26783 if($('input[name=NEW_EMAIL]').length && $('input[name=PHONE_NUMBER]').length){ 26784 if(!$('input[name=PHONE_NUMBER]').closest('.bx-authform-formgroup-container.col-md-6').length){ 26785 $('input[name=NEW_EMAIL],input[name=PHONE_NUMBER]').closest('.bx-authform-formgroup-container').addClass('col-md-6'); 26786 var html = $('input[name=PHONE_NUMBER]').closest('.bx-authform-formgroup-container').wrap('<div id="trem_"></div>').parent().html(); 26787 $('#trem_').remove(); 26788 $(html).insertAfter($('input[name=NEW_EMAIL]').closest('.bx-authform-formgroup-container').wrap('<div class="row"></div>')); 26789 } 26790 } 26791 26792 // update input NEW_PASSWORD && NEW_PASSWORD_CONFIRM 26793 if($('input[name=NEW_PASSWORD]').length && $('input[name=NEW_PASSWORD_CONFIRM]').length){ 26794 if(!$('input[name=NEW_PASSWORD]').closest('.bx-authform-formgroup-container.col
26794-md-6').length){ 26795 $('input[name=NEW_PASSWORD],input[name=NEW_PASSWORD_CONFIRM]').closest('.bx-authform-formgroup-container').addClass('col-md-6'); 26796 var html = $('input[name=NEW_PASSWORD_CONFIRM]').closest('.bx-authform-formgroup-container').wrap('<div id="trem_"></div>').parent().html(); 26797 $('#trem_').remove(); 26798 $(html).insertAfter($('input[name=NEW_PASSWORD]').closest('.bx-authform-formgroup-container').wrap('<div class="row"></div>')); 26799 } 26800 } 26801 26802 // update input PHONE_NUMBER 26803 if($('input[name=PHONE_NUMBER]').length){ 26804 var input = $('input[name=PHONE_NUMBER]'), 26805 inputHTML = input[0].outerHTML, 26806 value = input.val(), 26807 newInput = input[0].outerHTML.replace('type="text"', 'type="tel" value="'+value+'"'); 26808 26809 if($(input).length < 2){ 26810 input.hide(); 26811 $(newInput).insertAfter(input); 26812 26813 showPhoneMask('input[name=PHONE_NUMBER][type=tel]'); 26814 26815 $('input[name=PHONE_NUMBER][type=tel]').on('blur', function(){ 26816 var $this = $(this); 26817 var value = $this.val(); 26818 $this.parent().find('input[name=PHONE_NUMBER][type=text]').val(value); 26819 }); 26820 26821 var $label = $('input[name=PHONE_NUMBER][type=tel]').closest('.bx-authform-formgroup-container').find('.bx-authform-label-container'); 26822 $label.html(BX.message('ORDER_PHONE_LABEL') + ($label.find('.bx-authform-starrequired').length ? '<span class="bx-authform-starrequired"> *</span>' : '')); 26823 } 26824 } 26825 26826 $('.bx-soa-section-content.reg').append('<div class="redisigned hidden></div>'); 26827 } 26828 26829 if($('.bx-soa-cart-total-line-total').length && arAsproOptions["THEME"]["SHOW_LICENCE"] == "Y"){ 26830 if(typeof(e) === 'undefined') 26831 BX.Sale.OrderAjaxComponent.state_licence = (arAsproOptions['THEME']['LICENCE_CHECKED'] == 'Y' ? 'checked' : ''); 26832 26833 if(!$('.licence_block.filter').length){ 26834 $('<div class="form"><div class="licence_block filter label_block onoff"><label data-for="licenses_order" class="hidden error">'+BX.message('JS_REQUIRED_LICENSES')+'</label><input type="checkbox" name="licenses_order" required '+BX.Sale.OrderAjaxComponent.state_licence+' value="Y"><label data-for="licenses_order" class="license">'+BX.message('LICENSES_TEXT')+'</label></div></div>').insertBefore($('#bx-soa-orderSave')); 26835 26836 $(document).on('click', '.bx-soa .licence_block label.license', function(){ 26837 var id = $(this).data('for'); 26838 $('.bx-soa .licence_block label.error').addClass('hidden'); 26839 if(!$('input[name='+id+']').prop('checked')){ 26840 $('input[name='+id+']').prop('checked', 'checked'); 26841 BX.Sale.OrderAjaxComponent.state_licence = 'checked'; 26842 } 26843 else{ 26844 $('input[name='+id+']').prop('checked', ''); 26845 BX.Sale.OrderAjaxComponent.state_licence = ''; 26846 } 26847 }) 26848 26849 $(document).on('click', '.lic_condition a', function(){ 26850 if(BX.hasClass(BX('bx-soa-order'), 'orderform--v1')){ 26851 if(BX.Sale.OrderAjaxComponent.isValidForm()) 26852 { 26853 BX.Sale.OrderAjaxComponent.animateScrollTo($('.licence_block')[0], 800, 50); 26854 } 26855 } 26856 else{ 26857 var iCountErrors = BX.Sale.OrderAjaxComponent.isValidPropertiesBlock().length; 26858 if(!BX.Sale.OrderAjaxComponent.activeSectionId || !iCountErrors) 26859 { 26860 BX.Sale.OrderAjaxComponent.animateScrollTo($('.licence_block')[0], 800, 50); 26861 } 26862 } 26863 }) 26864 } 26865 26866 $('#bx-soa-orderSave, .bx-soa-cart-total-button-container').addClass('lic_condition'); 26867 26868 if(typeof (BX.Sale.OrderAjaxComponent.oldClickOrderSaveAction) === "undefined" && typeof (BX.Sale.OrderAjaxComponent.clickOrderSaveAction) !== 'undefined'){ 26869 BX.Sale.OrderAjaxComponent.oldClickOrderSaveAction = BX.Sale.OrderAjaxComponent.clickOrderSaveAction; 26870 BX.Sale.OrderAjaxComponent.clickOrderSaveAction = function(event){ 26871 if($('input[name="licenses_order"]').prop('checked')){ 26872 $('.bx-soa .licence_block label.error').addClass('hidden'); 26873 26874 if (BX.Sale.OrderAjaxComponent.isValidForm()) 26875 { 26876 if(typeof BX.Sale.OrderAjaxComponent.allowOrderSave == 'function') 26877 BX.Sale.OrderAjaxComponent.allowOrderSave(); 26878 if(typeof BX.Sale.OrderAjaxComponent.doSaveAction == 'function') 26879 BX.Sale.OrderAjaxComponent.doSaveAction(); 26880 else 26881 BX.Sale.OrderAjaxComponent.oldClickOrderSaveAction(event); 26882 } 26883 } 26884 else{ 26885 $('.bx-soa .licence_block label.error').removeClass('hidden'); 26886 } 26887 } 26888 if(BX.Sale.OrderAjaxComponent.orderSaveBlockNode.querySelector('.checkbox')) 26889 { 26890 if(typeof browser == 'object') 26891 { 26892 if('msie' in browser && browser.msie) 26893 $(BX.Sale.OrderAjaxComponent.orderSaveBlockNode.querySelector('.checkbox')).remove(); 26894 else 26895 BX.Sale.OrderAjaxComponent.orderSaveBlockNode.querySelector('.checkbox').remove(); 26896 } 26897 } 26898 BX.unbindAll(BX.Sale.OrderAjaxComponent.totalInfoBlockNode.querySelector('a.btn-order-save')); 26899 BX.unbindAll(BX.Sale.OrderAjaxComponent.mobileTotalBlockNode.querySelector('a.btn-order-save')); 26900 BX.unbindAll(BX.Sale.OrderAjaxComponent.orderSaveBlockNode.querySelector('a')); 26901 BX.bind(BX.Sale.OrderAjaxComponent.totalInfoBlockNode.querySelector('a.btn-order-save'), 'click', BX.proxy(BX.Sale.OrderAjaxComponent.clickOrderSaveAction, BX.Sale.OrderAjaxComponent)); 26902 BX.bind(BX.Sale.OrderAjaxComponent.mobileTotalBlockNode.querySelector('a.btn-order-save'), 'click', BX.proxy(BX.Sale.OrderAjaxComponent.clickOrderSaveAction, BX.Sale.OrderAjaxComponent)); 26903 BX.bind(BX.Sale.OrderAjaxComponent.orderSaveBlockNode.querySelector('a'), 'click', BX.proxy(BX.Sale.OrderAjaxComponent.clickOrderSaveAction, BX.Sale.OrderAjaxComponent)); 26904 } 26905 } 26906 26907 // fix hide total block 26908 $(window).scroll(); 26909 26910 if(checkCounters() && typeof (BX.Sale.OrderAjaxComponent.oldSaveOrder) === "undefined"){ 26911 var saveFunc = typeof (BX.Sale.OrderAjaxComponent.saveOrder) !== 'undefined' ? 's
26911aveOrder' : 'saveOrderWithJson'; 26912 if(typeof (BX.Sale.OrderAjaxComponent[saveFunc]) !== 'undefined'){ 26913 BX.Sale.OrderAjaxComponent.oldSaveOrder = BX.Sale.OrderAjaxComponent[saveFunc]; 26914 BX.Sale.OrderAjaxComponent[saveFunc] = function(result){ 26915 var res = BX.parseJSON(result); 26916 if (res && res.order){ 26917 if (!res.order.SHOW_AUTH){ 26918 if (res.order.REDIRECT_URL && res.order.REDIRECT_URL.length && (!res.order.ERROR || BX.util.object_keys(res.order.ERROR).length < 1)){ 26919 if((arMatch = res.order.REDIRECT_URL.match(/ORDER_ID\=[^&=]*/g)) && arMatch.length && (_id = arMatch[0].replace(/ORDER_ID\=/g, '', arMatch[0]))){ 26920 $.ajax({ 26921 url:arAsproOptions['SITE_DIR']+"ajax/check_order.php", 26922 dataType: "json", 26923 type: "POST", 26924 data: { "ID": _id }, 26925 success: function(id){ 26926 if(parseInt(id)){ 26927 purchaseCounter(parseInt(id), BX.message('FULL_ORDER'), function(d){ 26928 if(typeof localStorage !== 'undefined' && typeof d === 'object'){ 26929 localStorage.setItem('gtm_e_' + _id, JSON.stringify(d)); 26930 } 26931 BX.Sale.OrderAjaxComponent.oldSaveOrder(result); 26932 }); 26933 } 26934 else{ 26935 BX.Sale.OrderAjaxComponent.oldSaveOrder(result); 26936 } 26937 }, 26938 error: function(){ 26939 BX.Sale.OrderAjaxComponent.oldSaveOrder(result); 26940 } 26941 }) 26942 } 26943 else{ 26944 BX.Sale.OrderAjaxComponent.oldSaveOrder(result); 26945 } 26946 } 26947 else{ 26948 BX.Sale.OrderAjaxComponent.oldSaveOrder(result); 26949 } 26950 } 26951 else{ 26952 BX.Sale.OrderAjaxComponent.oldSaveOrder(result); 26953 } 26954 } 26955 else{ 26956 BX.Sale.OrderAjaxComponent.oldSaveOrder(result); 26957 } 26958 } 26959 } 26960 } 26961 26962 if($('#bx-soa-order-form .captcha-row').length){ 26963 if(window.asproRecaptcha && window.asproRecaptcha.key && window.asproRecaptcha.params.recaptchaSize == 'invisible'){ 26964 $('#bx-soa-order-form .captcha-row').addClass('invisible'); 26965 if(asproRecaptcha.params.recaptchaLogoShow === 'n'){ 26966 $('#bx-soa-order-form .captcha-row').addClass('logo_captcha_n'); 26967 } 26968 } 26969 } 26970 26971 if($('#bx-soa-order-form .captcha-row.invisible').length){ 26972 if(typeof (BX.Sale.OrderAjaxComponent.oldSendRequest) === "undefined" && typeof (BX.Sale.OrderAjaxComponent.sendRequest) !== 'undefined'){ 26973 var tmpAction, tmpActionData; 26974 BX.Sale.OrderAjaxComponent.oldSendRequest = BX.Sale.OrderAjaxComponent.sendRequest; 26975 BX.Sale.OrderAjaxComponent.sendRequest = function(action, actionData){ 26976 var bSend = true; 26977 26978 if($('#bx-soa-order-form .captcha-row.invisible').length){ 26979 if(window.renderRecaptchaById && window.asproRecaptcha && window.asproRecaptcha.key){ 26980 if(window.asproRecaptcha.params.recaptchaSize == 'invisible'){ 26981 var form = BX('bx-soa-order-form'); 26982 if($(form).find('.g-recaptcha').length){ 26983 if($(form).find('.g-recaptcha-response').val()){ 26984 bSend = true; 26985 } 26986 else{ 26987 if(typeof grecaptcha != 'undefined'){ 26988 grecaptcha.execute($(form).find('.g-recaptcha').data('widgetid')); 26989 bSend = false; 26990 } 26991 else{ 26992 bSend = false; 26993 } 26994 } 26995 } 26996 } 26997 } 26998 } 26999 27000 if(bSend){ 27001 BX.Sale.OrderAjaxComponent.oldSendRequest(action, actionData); 27002 } 27003 else{ 27004 tmpAction = action; 27005 tmpActionData = actionData; 27006 } 27007 } 27008 27009 $(document).on('submit', '#bx-soa-order-form', function(e){ 27010 e.preventDefault(); 27011 27012 if(typeof tmpAction !== 'undefined' || typeof tmpActionData !== 'undefined'){ 27013 BX.Sale.OrderAjaxComponent.sendRequest(tmpAction, tmpActionData); 27014 tmpAction = undefined; 27015 tmpActionData = undefined; 27016 } 27017 }); 27018 } 27019 } 27020 } 27021 27022 $('.bx-ui-sls-quick-locations.quick-locations').on('click', function(){ 27023 $(this).siblings().removeClass('active'); 27024 $(this).addClass('active'); 27025 }) 27026 } 27027 } 27028 } 27029} 27030 27031if(!funcDefined('basketActions')){ 27032 basketActions = function(){ 27033 if(arAsproOptions["PAGES"]["BASKET_PAGE"]){ 27034 checkMinPrice(); 27035 27036 //remove4Cart 27037 if(typeof(BX.Sale) !== 'undefined' && typeof(BX.Sale) === 'object') 27038 { 27039 if(typeof(BX.Sale.BasketComponent) !== 'undefined' && typeof(BX.Sale.BasketComponent) === 'object') 27040 { 27041 $(document).on('click', '.basket-item-actions-remove', function(){ 27042 var basketID = $(this).closest('.basket-items-list-item-container').data('id'); 27043 delFromBasketCounter(BX.Sale.BasketComponent.items[basketID].PRODUCT_ID); 27044 }) 27045 } 27046 } 27047 27048 if(location.hash) 27049 { 27050 var hash = location.hash.substring(1); 27051 if($('#basket_toolbar_button_'+hash).length) 27052 $('#basket_toolbar_button_'+hash).trigger('click'); 27053 27054 if($('.basket-items-list-header-filter a[data-filter="'+hash+'"]').length) 27055 $('.basket-items-list-header-filter a[data-filter="'+hash+'"]')[0].click(); 27056 } 27057 var svg_cross = '<svg xmlns="http://www.w3.org/2000/svg" width="8" height="8" viewBox="0 0 8 8"><path id="Rounded_Rectangle_568_copy_13" data-name="Rounded Rectangle 568 copy 13" class="cls-1" d="M1615.4,589l2.32,2.315a0.987,0.987,0,0,1,0,1.4,1,1,0,0,1-1.41,0L1614,590.4l-2.31,2.315a1,1,0,0,1-1.41,0,0.987,0.987,0,0,1,0-1.4L1612.6,589l-2.32-2.314a0.989,0.989,0,0,1,0-1.4,1,1,0,0,1,1.41,0l2.31,2.315,2.31-2.315a1,1,0,0,1,1.41,0,0.989,0.989,0,0,1,0,1.4Z" transform="translate(-1610 -585)"/></svg>'; 27058 27059 $('.bx_sort_container').append('<div class="top_control basket_action"><span style="opacity:0;
27059" class="delete_all colored_theme_hover_text remove_all_basket">'+svg_cross+BX.message("BASKET_CLEAR_ALL_BUTTON")+'</span></div>'); 27060 if($('.basket-items-list-header-filter').length) 27061 { 27062 $('.basket-items-list-header-filter').append('<div class="top_control basket_action"><span style="opacity:1;" class="delete_all colored_theme_hover_text remove_all_basket">'+svg_cross+BX.message("BASKET_CLEAR_ALL_BUTTON")+'</span></div>'); 27063 27064 var cur_index = $('.basket-items-list-header-filter > a.active').index(); 27065 //fix delayed 27066 if(cur_index == 3) 27067 cur_index = 2; 27068 27069 if($('.basket-items-list-header-filter > a.active').data('filter') == 'all') 27070 cur_index = 'all'; 27071 27072 $('.basket-items-list-header-filter .top_control .delete_all').data("type",cur_index); 27073 27074 $('.basket-items-list-header-filter > a').on('click', function() { 27075 var index = $(this).index(); 27076 27077 //fix delayed 27078 if(index == 3) 27079 index = 2; 27080 27081 if($(this).data('filter') == 'all') 27082 index = 'all'; 27083 27084 $('.basket-items-list-header-filter .top_control .delete_all').data("type", index); 27085 }); 27086 } 27087 else 27088 { 27089 var cur_index = $('.bx_sort_container a.current').index(); 27090 $('.bx_sort_container .top_control .delete_all').data("type",cur_index); 27091 if($('.bx_ordercart > div:eq('+cur_index+') table tbody tr td.item').length) 27092 $('.bx_sort_container .top_control .delete_all').css('opacity',1); 27093 27094 $('.bx_ordercart .bx_ordercart_coupon #coupon').wrap('<div class="input"></div>'); 27095 27096 $('.bx_sort_container > a').on('click', function() { 27097 var index = $(this).index(); 27098 $('.bx_sort_container .top_control .delete_all').data("type", index); 27099 27100 if($('.bx_ordercart > div:eq('+index+') table tbody tr td.item').length) 27101 $('.bx_sort_container .top_control .delete_all').css('opacity',1); 27102 else 27103 $('.bx_sort_container .top_control .delete_all').css('opacity',0); 27104 }); 27105 } 27106 27107 27108 $('.basket_print').on('click', function() { 27109 // window.open(location.pathname+"?print=Y",'_blank'); 27110 window.print(); 27111 }); 27112 27113 $('.delete_all').on('click', function() { 27114 if(arAsproOptions['COUNTERS']['USE_BASKET_GOALS'] !== 'N'){ 27115 var eventdata = {goal: 'goal_basket_clear', params: {type: $(this).data('type')}}; 27116 BX.onCustomEvent('onCounterGoals', [eventdata]); 27117 } 27118 $.post( arAsproOptions['SITE_DIR']+"ajax/action_basket.php", "TYPE="+$(this).data('type')+"&CLEAR_ALL=Y", $.proxy(function( data ) { 27119 location.reload(); 27120 })); 27121 }); 27122 27123 $('.bx_item_list_section .bx_catalog_item').sliceHeight({row:'.bx_item_list_slide', item:'.bx_catalog_item'}); 27124 27125 BX.addCustomEvent('onAjaxSuccess', function(e) { 27126 checkMinPrice(); 27127 27128 var errorText = $.trim($('#warning_message').text()); 27129 $('#basket_items_list .error_text').detach(); 27130 if (errorText != '') { 27131 $('#warning_message').hide().text(''); 27132 $('#basket_items_list').prepend('<div class="error_text">' +errorText+ '</div>'); 27133 } 27134 27135 if (typeof e === 'object' && 'BASKET_DATA' in e) { 27136 if ($("#ajax_basket").length) { 27137 reloadTopBasket('add', $('#ajax_basket'), 200, 5000, 'Y'); 27138 } 27139 if ($("#basket_line .basket_fly").length) { 27140 basketFly('open', 'N'); 27141 } 27142 } 27143 }); 27144 $(document).on('click', '.bx_ordercart_order_pay_center .checkout, .basket-checkout-section-inner .basket-btn-checkout', function(){ 27145 if(checkCounters('google')){ 27146 checkoutCounter(1, 'start order'); 27147 } 27148 }) 27149 } 27150 } 27151} 27152 27153if(!funcDefined('checkMinPrice')){ 27154 checkMinPrice = function(){ 27155 if(arAsproOptions["PAGES"]["BASKET_PAGE"]){ 27156 var summ_raw=0, 27157 summ=0; 27158 if($('#allSum_FORMATED').length) 27159 { 27160 summ_raw=$('#allSum_FORMATED').text().replace(/[^0-9\.,]/g,''); 27161 summ=parseFloat(summ_raw); 27162 if($('#basket_items').length) 27163 { 27164 var summ = 0; 27165 $('#basket_items tr').each(function(){ 27166 if(typeof ($(this).data('item-price')) !== 'undefined' && $(this).data('item-price')) 27167 summ += $(this).data('item-price')*$(this).find('#QUANTITY_INPUT_'+$(this).attr('id')).val(); 27168 }) 27169 } 27170 if(!$('.catalog_back').length) 27171 $('.bx_ordercart_order_pay_center').prepend('<a href="'+arAsproOptions["PAGES"]["CATALOG_PAGE_URL"]+'" class="catalog_back btn btn-default btn-lg white grey">'+BX.message("BASKET_CONTINUE_BUTTON")+'</a>'); 27172 } 27173 27174 if(arAsproOptions["THEME"]["SHOW_ONECLICKBUY_ON_BASKET_PAGE"] == "Y") 27175 $('.basket-coupon-section').addClass('smallest'); 27176 27177 if(typeof BX.Sale !== "undefined") 27178 { 27179 if(typeof BX.Sale.BasketComponent !== "undefined" && typeof BX.Sale.BasketComponent.result !== "undefined") 27180 summ = BX.Sale.BasketComponent.result.allSum; 27181 } 27182 27183 if(arAsproOptions["PRICES"]["MIN_PRICE"]){ 27184 if(arAsproOptions["PRICES"]["MIN_PRICE"]>summ){ 27185 var svgMinPrice = '<i class="svg svg-inline-price colored_theme_svg" aria-hidden="true"><svg id="Group_278_copy" data-name="Group 278 copy" xmlns="http://www.w3.org/2000/svg" width="38" height="38" viewBox="0 0 38 38"><path id="Ellipse_305_copy_2" data-name="Ellipse 305 copy 2" class="clswm-1" d="M1851,561a19,19,0,1,1,19-19A19,19,0,0,1,1851,561Zm0-36a17,17,0,1,0,17,17A17,17,0,0,0,1851,525Zm3.97,10.375-0.03.266c-0.01.062-.02,0.127-0.03,0.188l-0.94,7.515h0a2.988,2.988,0,0,1-5.94,0H1848l-0.91-7.525c-0.01-.041-0.01-0.086-0.02-0.128l-0.04-.316h0.01c-0.01-.
27185125-0.04-0.246-0.04-0.375a4,4,0,0,1,8,0c0,0.129-.03.25-0.04,0.375h0.01ZM1851,533a2,2,0,0,0-2,2,1.723,1.723,0,0,0,.06.456L1850,543a1,1,0,0,0,2,0l0.94-7.544A1.723,1.723,0,0,0,1853,535,2,2,0,0,0,1851,533Zm0,14a3,3,0,1,1-3,3A3,3,0,0,1,1851,547Zm0,4a1,1,0,1,0-1-1A1,1,0,0,0,1851,551Z" transform="translate(-1832 -523)"></path> <path class="clswm-2 op-cls" d="M1853,543l-1,1h-2l-1-1-1-8,1-2,1-1h2l1,1,1,2Zm-1,5,1,1v2l-1,1h-2l-1-1v-2l1-1h2Z" transform="translate(-1832 -523)"></path></svg></i>'; 27186 if($('.oneclickbuy.fast_order').length) 27187 $('.oneclickbuy.fast_order').remove(); 27188 27189 if($('.basket-checkout-container').length) 27190 { 27191 if(!$('.icon_error_wrapper').length){ 27192 $('.basket-checkout-block.basket-checkout-block-btn').html('<div class="icon_error_wrapper"><div class="icon_error_block">'+svgMinPrice+BX.message("MIN_ORDER_PRICE_TEXT").replace("#PRICE#", jsPriceFormat(arAsproOptions["PRICES"]["MIN_PRICE"]))+'</div></div>'); 27193 } 27194 } 27195 else 27196 { 27197 if(!$('.icon_error_wrapper').length && typeof jsPriceFormat !== 'undefined'){ 27198 $('.bx_ordercart_order_pay_center').prepend('<div class="icon_error_wrapper"><div class="icon_error_block">'+svgMinPrice+BX.message("MIN_ORDER_PRICE_TEXT").replace("#PRICE#", jsPriceFormat(arAsproOptions["PRICES"]["MIN_PRICE"]))+'</div></div>'); 27199 } 27200 if($('.bx_ordercart_order_pay .checkout').length) 27201 $('.bx_ordercart_order_pay .checkout').remove(); 27202 } 27203 }else{ 27204 if($('.icon_error_wrapper').length) 27205 $('.icon_error_wrapper').remove(); 27206 27207 if($('.basket-checkout-container').length) 27208 { 27209 if(!$('.oneclickbuy.fast_order').length && arAsproOptions["THEME"]["SHOW_ONECLICKBUY_ON_BASKET_PAGE"] == "Y" && !$('.basket-btn-checkout.disabled').length) 27210 $('.basket-checkout-section-inner').append('<div class="fastorder"><span class="oneclickbuy btn btn-lg fast_order btn-transparent-border-color" onclick="oneClickBuyBasket()">'+BX.message("BASKET_QUICK_ORDER_BUTTON")+'</span></div>'); 27211 } 27212 else 27213 { 27214 if($('.bx_ordercart_order_pay .checkout').length) 27215 $('.bx_ordercart .bx_ordercart_order_pay .checkout').css('opacity','1'); 27216 else 27217 $('.bx_ordercart_order_pay_center').append('<a href="javascript:void(0)" onclick="checkOut();" class="checkout" style="opacity: 1;">'+BX.message("BASKET_ORDER_BUTTON")+'</a>'); 27218 if(!$('.oneclickbuy.fast_order').length && arAsproOptions["THEME"]["SHOW_ONECLICKBUY_ON_BASKET_PAGE"] == "Y") 27219 $('.bx_ordercart_order_pay_center').append('<span class="oneclickbuy btn btn-lg fast_order btn-transparent-border-color" onclick="oneClickBuyBasket()">'+BX.message("BASKET_QUICK_ORDER_BUTTON")+'</span>'); 27220 } 27221 } 27222 }else{ 27223 if($('.basket-checkout-container').length) 27224 { 27225 if(!$('.oneclickbuy.fast_order').length && arAsproOptions["THEME"]["SHOW_ONECLICKBUY_ON_BASKET_PAGE"] == "Y" && !$('.basket-btn-checkout.disabled').length) 27226 $('.basket-checkout-section-inner').append('<div class="fastorder"><span class="oneclickbuy btn btn-lg fast_order btn-transparent-border-color" onclick="oneClickBuyBasket()">'+BX.message("BASKET_QUICK_ORDER_BUTTON")+'</span></div>'); 27227 } 27228 else 27229 { 27230 $('.bx_ordercart .bx_ordercart_order_pay .checkout').css('opacity','1'); 27231 if(!$('.oneclickbuy.fast_order').length && arAsproOptions["THEME"]["SHOW_ONECLICKBUY_ON_BASKET_PAGE"] == "Y") 27232 $('.bx_ordercart_order_pay_center').append('<span class="oneclickbuy btn btn-lg fast_order btn-transparent-border-color" onclick="oneClickBuyBasket()">'+BX.message("BASKET_QUICK_ORDER_BUTTON")+'</span>'); 27233 } 27234 } 27235 27236 $('#basket-root .basket-checkout-container .basket-checkout-section .basket-checkout-block .basket-btn-checkout'); 27237 $('#basket-root .basket-checkout-container').addClass('visible'); 27238 } 27239 } 27240} 27241 27242var isFrameDataReceived = false; 27243if (typeof window.frameCacheVars !== "undefined"){ 27244 BX.addCustomEvent(window, "onFrameDataRequestFail", function(response){ 27245 console.log(response); 27246 }); 27247 27248 BX.addCustomEvent("onFrameDataReceivedBefore", function (){ 27249 // stop ya metrika webvisor DOM indexer 27250 pauseYmObserver(); 27251 }); 27252 27253 BX.addCustomEvent("onFrameDataReceived", function (json){ 27254 initFull(); 27255 27256 CheckTopMenuPadding(); 27257 CheckTopMenuOncePadding(); 27258 CheckTopMenuDotted(); 27259 27260 CheckSearchWidth(); 27261 27262 checkLinkedArticles(); 27263 27264 if($('.logo-row.v2').length) 27265 { 27266 $(window).resize(); // need to check resize flexslider & menu 27267 setTimeout(function(){ 27268 CheckTopMenuDotted(); 27269 }, 100); 27270 } 27271 27272 if(funcDefined('setNewHeader')) { 27273 if(typeof BX === 'object' && (BX.message('TYPE_SKU') != 'TYPE_1' || BX.message('HAS_SKU_PROPS') != 'Y')) { 27274 setNewHeader(); 27275 } else { 27276 var objNameWrapper = $('.bx_catalog_item_scu[id]'); 27277 if(objNameWrapper.length) { 27278 var id = 'ob'+objNameWrapper.attr('id').replace('_skudiv', ''); 27279 if(id && window[id] !== undefined) { 27280 var obj = window[id].offers[window[id].offerNum]; 27281 if(obj !== undefined) { 27282 setNewHeader(obj); 27283 } 27284 } 27285 } 27286 } 27287 } 27288 27289 // resume ya metrika webvisor 27290 // (100ms sliceHeight) + (200ms mCustomScroll) + (100ms lazyload) 27291 setTimeout(resumeYmObserver, 400); 27292 27293 isFrameDataReceived = true; 27294 }); 27295}else{ 27296 $( document ).ready(initFull); 27297} 27298 27299if(!funcDefined('setHeightBlockSlider')){ 27300 setHeightBlockSlider = function(){ 27301 $(document).find('.specials.tab_slider_wrapp .tabs_content > li.cur').equalize({children: '.item-title'}); 27302 $(document).find('.specials.tab_slider_wrapp .tabs_content > li.cur').equalize({children: '.item_info'}); 27303 $(document).find('.specials.tab_slider_wrapp .tabs_content > li.cur').equalize({children: '.catalog_item'}); 27304 27305 var sliderWidth = $(document).find('.specials.tab_slider_wrapp').outerWidth(); 27306 27307 var iCountTabs = $(document).find('.specials.tab_slider_wrapp .tabs_content > li.cur').length; 27308 27309 if(iCountTabs <= 1) 27310 { 27311 $(document).find('.specials.tab_slider_wrapp .tabs_content > li.cur').css('height', ''); 27312 27313 var itemsButtonsHeight = 0; 27314 if($(document).find('.specials.tab_slider_wrapp .tabs_content .tab.cur .tabs_slider li .footer_button').length) 27315 { 27316 $(document).find('.specials.tab_slider_wrapp .tabs_content .tab.cur .tabs_slider li .footer_button').css('height', 'auto'); 27317 itemsButtonsHeight = $(document).find('.specials.tab_slider_wrapp .tabs_content .tab.cur .tabs_slider li .footer_button').height(); 27318 $(document).find('.specials.tab_slider_wrapp .tabs_content .tab.cur .tabs_slider li .footer_button').css('height', ''); 27319 } 27320 var tabsContentUnhover = $(document).find('.specials.tab_slider_wrapp .tabs_content .tab.cur').height() * 1; 27321 var tabsContentHover = tabsContentUnhover + itemsButtonsHeight+50; 27322 $(document).find('.specials.tab_slider_wrapp .tabs_content .tab.cur').attr('data-unhover', tabsContentUnhover); 27323 $(document).find('.specials.tab_slider_wrapp .tabs_content .tab.cur').attr('data-hover', tabsContentHover); 27324 $(document).find('.specials.tab_slider_wrapp .tabs_content').height(tabsContentUnhover); 27325 $(document).find('.specials.tab_slider_wrapp .tabs_content .tab.cur .flex-viewport').height(tabsContentUnhover); 27326 } 27327 else 27328 { 27329 $(document).find('.specials.tab_slider_wrapp .tabs_content > li.cur').each(function(){ 27330 var _th = $(this); 27331 _th.css('height', ''); 27332 27333 var itemsButtonsHeight = 0; 27334 if(_th.find('.tabs_slider li .footer_button').length) 27335 { 27336 _th.find('.tabs_slider li .footer_button').css('height', 'auto'); 27337 itemsButtonsHeight = _th.find('.tabs_slider li .footer_button').height(); 27338 _th.find('.tabs_slider li .footer_button').css('height', ''); 27339 } 27340 27341 var tabsContentUnhover = _th.height() * 1; 27342 var tabsContentHover = tabsContentUnhover + itemsButtonsHeight+50; 27343 _th.attr('data-unhover', tabsContentUnhover); 27344 _th.attr('data-hover', tabsContentHover); 27345 _th.parent().height(tabsContentUnhover); 27346 _th.find('.flex-viewport').height(tabsContentUnhover); 27347 27348 }) 27349 } 27350 } 27351} 27352 27353if(!funcDefined('checkTopFilter')){ 27354 checkTopFilter = function() { 27355 /*if(window.matchMedia('(max-width: 991px)').matches){ 27356 //if($('.group_description_block.top').length){ 27357 var top_pos=$('.adaptive_filter').position().top; 27358 $('.bx_filter.bx_filter_vertical').css({'top':top_pos+43}); 27359 //} 27360 }*/ 27361 } 27362} 27363 27364if(!funcDefined('checkStickyFooter')){ 27365 checkStickyFooter = function() { 27366 try{ 27367 ignoreResize.push(true); 27368 $('#content').css('min-height', ''); 27369 var contentTop = $('#content').offset().top; 27370 var contentBottom = contentTop + $('#content').outerHeight(); 27371 var footerTop = 0; 27372 if($('footer').length) 27373 footerOffset = $('footer').offset().top; 27374 27375 $('#content').css('min-height', $(window).height() - contentTop - (footerTop - contentBottom) - $('footer').outerHeight() + 'px'); 27376 ignoreResize.pop(); 27377 } 27378 catch(e){console.error(e);} 27379 } 27380} 27381 27382if(!funcDefined('checkLinkedArticles')){ 27383 checkLinkedArticles = function() { 27384 try{ 27385 if ($('.linked-blog-list.content .item-views').length) { 27386 var mobileRow = $('.linked-blog-list').data('mobile_row'), 27387 desktopRow = $('.linked-blog-list').data('desktop_row'), 27388 parentBlock = $('.ajax_load .js_append'), 27389 widthRow = parentBlock.getFloatWidth(), 27390 elementWidthRow = parentBlock.find('> .item:eq(0)').getFloatWidth(), 27391 elementsCount = parentBlock.find('> .item').length, 27392 slice = Math.floor(widthRow / elementWidthRow), 27393 rowInsertCount = Math.floor(elementsCount/slice), 27394 bCalculateRows = false;
27395 if (window.matchMedia('(max-width: 767px)').matches) { 27396 if (!mobileRow && desktopRow) { 27397 mobileRow = desktopRow; 27398 } 27399 if (mobileRow && mobileRow <= rowInsertCount) { 27400 rowInsertCount = slice*mobileRow; 27401 bCalculateRows = true; 27402 } 27403 } else { 27404 if (desktopRow && desktopRow <= rowInsertCount) { 27405 rowInsertCount = slice*desktopRow; 27406 bCalculateRows = true; 27407 } 27408 } 27409 if (!bCalculateRows) { 27410 rowInsertCount = elementsCount; 27411 } 27412 27413 $('.linked-blog-list').insertAfter(parentBlock.find('> .item:eq('+(rowInsertCount-1)+')')); 27414 setTimeout(function(){ 27415 $('.linked-blog-list').addClass('visible'); 27416 }, 0); 27417 } 27418 } 27419 catch(e){console.error(e);} 27420 } 27421} 27422 27423/* EVENTS */ 27424var timerResize = false, ignoreResize = []; 27425$(window).resize(function(){ 27426 CheckPopupTop(); 27427 checkLinkedArticles(); 27428 27429 // here immediate functions 27430 if(!ignoreResize.length){ 27431 27432 if(timerResize){ 27433 clearTimeout(timerResize); 27434 timerResize = false; 27435 } 27436 timerResize = setTimeout(function(){ 27437 // here delayed functions in event 27438 BX.onCustomEvent('onWindowResize', false); 27439 }, 50); 27440 } 27441}); 27442 27443var timerScroll = false, ignoreScroll = [], documentScrollTopLast = $(document).scrollTop(), startScroll = 0; 27444$(window).scroll(function(){ 27445 CheckPopupTop(); 27446 // here immediate functions 27447 documentScrollTopLast = $(document).scrollTop(); 27448 SetFixedAskBlock(); 27449 27450 if(!ignoreScroll.length){ 27451 if(timerScroll){ 27452 clearTimeout(timerScroll); 27453 timerScroll = false; 27454 } 27455 timerScroll = setTimeout(function(){ 27456 // here delayed functions in event 27457 BX.onCustomEvent('onWindowScroll', false); 27458 }, 50); 27459 } 27460}); 27461 27462BX.addCustomEvent('onWindowResize', function(eventdata){ 27463 try{ 27464 ignoreResize.push(true); 27465 27466 CheckTopMenuPadding(); 27467 CheckTopMenuOncePadding(); 27468 CheckSearchWidth(); 27469 27470 CheckTabActive(); 27471 CheckTopMenuFullCatalogSubmenu(); 27472 CheckHeaderFixedMenu(); 27473 27474 if(window.matchMedia('(min-width:768px)').matches) { 27475 closeYandexMap(); 27476 } 27477 27478 CheckTopMenuDotted(); 27479 if($('nav.mega-menu.sliced').length) 27480 $('nav.mega-menu.sliced').removeClass('initied'); 27481 27482 27483 CheckTopVisibleMenu(); 27484 27485 checkScrollToTop(); 27486 CheckObjectsSizes(); 27487 27488 CheckFlexSlider(); 27489 initSly(); 27490 27491 // checkVerticalMobileFilter(); 27492 if (typeof checkMobilePhone === 'function') { 27493 checkMobilePhone(); 27494 } 27495 checkTopFilter(); 27496 if (typeof checkMobileFilter === 'function') { 27497 checkMobileFilter(); 27498 } 27499 27500 if(arAsproOptions['THEME'] && arAsproOptions['THEME']['COMPACT_FOOTER_MOBILE'] == 'Y') { 27501 if (window.matchMedia('(max-width:767px)').matches) { 27502 $('footer').addClass('mobile'); 27503 $('.bottom-menu .items>.wrap_compact_mobile').addClass('accordion-body collapse'); 27504 $('.bottom-menu .items>.item.childs').attr('data-toggle','collapse'); 27505 } else { 27506 $('footer').removeClass('mobile'); 27507 $('.bottom-menu .items>.wrap_compact_mobile').removeClass('accordion-body collapse'); 27508 $('.bottom-menu .items>.item.childs').removeAttr('data-toggle'); 27509 } 27510 } 27511 27512 if(typeof window['stickySidebar'] !== 'undefined') 27513 { 27514 if(window.matchMedia('(max-width: 991px)').matches) 27515 { 27516 window['stickySidebar'].destroy(); 27517 } 27518 else 27519 { 27520 window['stickySidebar'].bindEvents(); 27521 } 27522 } 27523 27524 if($('.flexslider.wsmooth').length){ 27525 $('.flexslider.wsmooth').each(function(){ 27526 $(this).data('flexslider').smoothHeight(); 27527 }); 27528 } 27529 27530 if(window.matchMedia('(min-width: 767px)').matches) 27531 $('.wrapper_middle_menu.wrap_menu').removeClass('mobile'); 27532 27533 if(window.matchMedia('(max-width: 767px)').matches) 27534 $('.wrapper_middle_menu.wrap_menu').addClass('mobile'); 27535 27536 27537 if($("#basket_form").length && $(window).outerWidth()<=600){ 27538 $("#basket_form .tabs_content.basket > li.cur td").each(function() { $(this).css("width","");}); 27539 } 27540 27541 $(".bx_filter_section .bx_filter_select_container").each(function(){ 27542 var prop_id=$(this).closest('.bx_filter_parameters_box').attr('property_id'); 27543 if($('#smartFilterDropDown'+prop_id).length){ 27544 $('#smartFilterDropDown'+prop_id).css("max-width", $(this).width()); 27545 } 27546 }) 27547 27548 if(window.matchMedia('(min-width: 768px)').matches){ 27549 // min-width: 768px 27550 $('.bx_filter .scrollbar').removeClass('mobile-scroll'); 27551 $('.bx_filter .srollbar-custom').removeClass('mobile-scroll'); 27552 $('.bx_filter .bx_filter_section form .bx_filter_parameters').removeClass('mobile-scroll'); 27553 InitScrollBar(); 27554 InitCustomScrollBar(); 27555 } 27556 else{ 27557 // max-width: 767px 27558 $('.bx_filter .scrollbar').addClass('mobile-scroll').removeClass('scroll-init'); 27559 $('.bx_filter .srollbar-custom').addClass('mobile-scroll').removeClass('scroll-init'); 27560 $('.bx_filter .bx_filter_section form .bx_filter_parameters').addClass('mobile-scroll').removeClass('scroll-init'); 27561 if($('.bx_filter .mobile-scroll.scrollbar').length) 27562 $('.bx_filter .mobile-scroll.scrollbar').mCustomScrollbar("destroy"); 27563 if($('.bx_filter .mobile-scroll.srollbar-custom').length) 27564 $('.bx_filter .mobile-scroll.srollbar-custom').mCustomScrollbar("destroy"); 27565 } 27566 27567 } 27568 catch(e){ 27569 console.log(e); 27570 } 27571 finally{ 27572 ignoreResize.pop(); 27573 } 27574}); 27575 27576BX.addCustomEvent('onWindowScroll', function(eventdata){ 27577 try{ 27578 ignoreScroll.push(true); 27579 } 27580 catch(e){} 27581 finally{ 27582 ignoreScroll.pop(); 27583 } 27584}); 27585 27586BX.addCustomEvent('onSlideInit', function(eventdata) { 27587 try{ 27588 ignoreResize.push(true); 27589 if(eventdata){ 27590 var slider = eventdata.slider; 27591 if(slider){ 27592 if(slider.hasClass('small-gallery')) 27593 $(window).resize(); 27594 // add classes .curent & .shown to slide 27595 slider.find('.item').removeClass('current'); 27596 var curSlide = slider.find('.item.flex-active-slide'), 27597 curSlideId = curSlide.attr('id'), 27598 nav = slider.find('.flex-direction-nav'); 27599 27600 curSlide.addClass('current'); 27601 27602 slider.find('.visible').css('opacity', '1'); 27603 slider.find('.height0').css('height', 'auto'); 27604 27605 if(curSlide.hasClass('shown')){
27606 slider.find('.item.clone[id=' + curSlideId + '_clone]').addClass('shown'); 27607 } 27608 27609 curSlide.addClass('shown'); 27610 27611 } 27612 } 27613 } 27614 catch(e){} 27615 finally{ 27616 ignoreResize.pop(); 27617 } 27618}); 27619 27620BX.addCustomEvent('onCounterGoals', function(eventdata){ 27621 if(arAsproOptions['THEME']['YA_GOALS'] == 'Y' && arAsproOptions['THEME']['YA_COUNTER_ID']) 27622 { 27623 var idCounter = arAsproOptions['THEME']['YA_COUNTER_ID']; 27624 idCounter = parseInt(idCounter); 27625 27626 if(typeof eventdata != 'object') 27627 eventdata = {goal: 'undefined'}; 27628 27629 if(typeof eventdata.goal != 'string') 27630 eventdata.goal = 'undefined'; 27631 27632 if(idCounter) 27633 { 27634 try 27635 { 27636 waitCounter(idCounter, 50, function(){ 27637 var obCounter = window['yaCounter' + idCounter]; 27638 if(typeof obCounter == 'object'){ 27639 obCounter.reachGoal(eventdata.goal); 27640 } 27641 }); 27642 } 27643 catch(e) 27644 { 27645 console.error(e) 27646 } 27647 } 27648 else 27649 { 27650 console.info('Bad counter id!', idCounter); 27651 } 27652 } 27653}) 27654 27655var onCaptchaVerifyinvisible = function(response){ 27656 $('.g-recaptcha:last').each(function(){ 27657 var id = $(this).attr('data-widgetid'); 27658 if(typeof(id) !== 'undefined' && response){ 27659 if(!$(this).closest('form').find('.g-recaptcha-response').val()) 27660 $(this).closest('form').find('.g-recaptcha-response').val(response) 27661 if($('iframe[src*=recaptcha]').length) 27662 { 27663 $('iframe[src*=recaptcha]').each(function(){ 27664 var block = $(this).parent().parent(); 27665 if(!block.hasClass('grecaptcha-badge')) 27666 block.css('width', '100%'); 27667 }) 27668 } 27669 $(this).closest('form').submit(); 27670 } 27671 }) 27672} 27673 27674var onCaptchaVerifynormal = function(response){ 27675 $('.g-recaptcha').each(function(){ 27676 var id = $(this).attr('data-widgetid'); 27677 if(typeof(id) !== 'undefined'){ 27678 if(grecaptcha.getResponse(id) != ''){ 27679 $(this).closest('form').find('.recaptcha').valid(); 27680 } 27681 } 27682 }); 27683} 27684 27685BX.addCustomEvent('onSubmitForm', function(eventdata){ 27686 try{ 27687 if(!window.renderRecaptchaById || !window.asproRecaptcha || !window.asproRecaptcha.key) 27688 { 27689 eventdata.form.submit(); 27690 $(eventdata.form).closest('.form').addClass('sending'); 27691 return true; 27692 } 27693 27694 if(window.asproRecaptcha.params.recaptchaSize == 'invisible' && $(eventdata.form).find('.g-recaptcha').length) 27695 { 27696 if($(eventdata.form).find('.g-recaptcha-response').val()) 27697 { 27698 eventdata.form.submit(); 27699 $(eventdata.form).closest('.form').addClass('sending'); 27700 return true; 27701 } 27702 else 27703 { 27704 if(typeof grecaptcha != 'undefined'){ 27705 grecaptcha.execute($(eventdata.form).find('.g-recaptcha').data('widgetid')); 27706 } 27707 else{ 27708 return false; 27709 } 27710 } 27711 } 27712 else 27713 { 27714 eventdata.form.submit(); 27715 $(eventdata.form).closest('.form').addClass('sending'); 27716 return true; 27717 } 27718 } 27719 catch (e){ 27720 console.error(e); 27721 return true; 27722 } 27723}) 27724 27725$(document).on('click', '.catalog_reviews_extended span.dropdown-select__list-link', function(){ 27726 var _this = $(this); 27727 var ajaxData = _this.data('review_sort_ajax'); 27728 var container = _this.closest('[id^=comp_]'); 27729 containerId = container.attr('id'); 27730 if(containerId !== undefined && containerId) { 27731 ajaxData.containerId = containerId; 27732 } 27733 if(ajaxData !== undefined) { 27734 container.addClass('blur') 27735 $.ajax({ 27736 type: 'post', 27737 data: ajaxData, 27738 success: function(html){ 27739 $('#reviews_sort_continer').html(html); 27740 } 27741 }); 27742 } 27743}); 27744 27745$(document).on('click', '.rating_vote:not(.disable)', function(){ 27746 27747 var _this = $(this); 27748 var action = _this.data('action'); 27749 var parent = _this.closest('.rating-vote'); 27750 var commentId = parent.data('comment_id'); 27751 var userId = parent.data('user_id'); 27752 var ajaxUrl = parent.data('ajax_url'); 27753 $.ajax({ 27754 url: ajaxUrl, 27755 dataType: 'json', 27756 data: {'commentId': commentId, 'action': action, 'userId': userId}, 27757 success: function(data){ 27758 if(data.LIKE !== undefined) { 27759 _this.siblings('.rating-vote-result.like').text(data.LIKE); 27760 } 27761 if(data.DISLIKE !== undefined) { 27762 _this.siblings('.rating-vote-result.dislike').text(data.DISLIKE); 27763 } 27764 if(data.SET_ACTIVE_LIKE !== undefined) { 27765 parent.find('.rating_vote.plus').toggleClass('active'); 27766 } 27767 if(data.SET_ACTIVE_DISLIKE !== undefined) { 27768 parent.find('.rating_vote.minus').toggleClass('active'); 27769 } 27770 } 27771 }); 27772 27773}); 27774 27775function fileInputInit(message){ 27776 $('input[type=file]').uniform({fileButtonHtml: BX.message('JS_FILE_BUTTON_NAME'), fileDefaultHtml: message}); 27777 $(document).on('change', 'input[type=file]', function(){ 27778 if($(this).val()) 27779 { 27780 $(this).closest('.uploader').addClass('files_add'); 27781 } 27782 else 27783 { 27784 $(this).closest('.uploader').removeClass('files_add'); 27785 } 27786 }) 27787 $('.form .add_file').on('click', function(){ 27788 var index = $(this).closest('.input').find('input[type=file]').length+1; 27789 27790 $(this).closest('.form-group').find('.input').append('<input type="file" id="POPUP_FILE" name="FILE_n'+index+'" class="inputfile" value="" />'); 27791 $('input[type=file]').uniform({fileButtonHtml: BX.message('JS_FILE_BUTTON_NAME'), fileDefaultHtml: message}); 27792 }); 27793 27794 $('.form .add_file').on('click', function(){ 27795 var index = $(this).closest('.input').find('input[type=file]').length+1; 27796 27797 $(this).closest('.form-group').find('.input').append('<input type="file" id="POPUP_FILE" name="FILE_n'+index+'" class="inputfile" value="" />'); 27798 $('input[type=file]').uniform({fileButtonHtml: BX.message('JS_FILE_BUTTON_NAME'), fileDefaultHtml: message}); 27799 }); 27800} 27801 27802/*custom event for sku prices*/ 27803 27804/*BX.addCustomEvent('onAsproSkuSetPrice', function(eventdata){ 27805 console.log(eventdata); 27806})*/ 27807 27808/*BX.addCustomEvent('onAsproSkuSetPriceMatrix', function(eventdata){ 27809 console.log(eventdata); 27810})*/ 27811 27812function declOfNum(number, titles) 27813{ 27814 var cases = [2, 0, 1, 1, 1, 2]; 27815 return number + " " + titles[ (number%100>4 && number%100<20)? 2 : cases[Math.min(number%10, 5)] ]; 27816} 27817 27818/* End */ 27819; 27820; /* Start:"a:4:{s:4:"full";s:61:"/local/templates/aspro_max/js/blocks/blocks.js?16523557987779";s:6:"source";s:46:"/local/templates/aspro_max/js/blocks/blocks.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 27821InitMenuNavigationAim = function(){ 27822 var $block = $('.menu-navigation__sections-wrapper .menu-navigation__sections:not(.aim-init)'); 27823 if($block.length){ 27824 $block.addClass('aim-init'); 27825 $block.menuAim({ 27826 firstActiveRow: true, 27827 rowSelector: "> .menu-navigation__sections-item", 27828 activate: function activate(a) {
27829 var _this = $(a), 27830 index = _this.index(), 27831 items = _this.closest('.menu-navigation__sections-wrapper').next(), 27832 link = _this.find('> a'); 27833 27834 _this.siblings().find('> a').addClass('dark_link') 27835 link.addClass('colored_theme_text').removeClass('dark_link'); 27836 items.find('.parent-items').siblings().hide(); 27837 items.find('.parent-items').eq(index).show(); 27838 }, 27839 deactivate: function deactivate(a) { 27840 var _this = $(a), 27841 index = _this.index(), 27842 items = _this.closest('.menu-navigation__sections-wrapper').next(), 27843 link = _this.find('> a'); 27844 27845 link.removeClass('colored_theme_text').addClass('dark_link'); 27846 items.find('.parent-items').siblings().hide(); 27847 } 27848 }); 27849 } 27850} 27851 27852$(document).ready(function(){ 27853 //dropdown-select 27854 $(document).on('click', '.dropdown-select .dropdown-select__title', function(){ 27855 var _this = $(this), 27856 menu = _this.parent().find('> .dropdown-select__list'), 27857 bVisibleMeu = (menu.is(':visible')), 27858 animate = (!bVisibleMeu ? 'transition.slideUpIn' : 'fadeOut'); 27859 27860 if(!_this.hasClass('clicked')) 27861 { 27862 _this.addClass('clicked'); 27863 27864 menu.velocity('stop').velocity(animate, { 27865 duration: 300, 27866 // delay: 250, 27867 begin: function(){ 27868 _this.toggleClass('opened'); 27869 }, 27870 complete: function(){ 27871 _this.removeClass('clicked'); 27872 } 27873 }); 27874 } 27875 }) 27876 27877 // close select 27878 $("html, body").on('mousedown', function(e){ 27879 if(typeof e.target.className == 'string' && e.target.className.indexOf('adm') < 0) 27880 { 27881 e.stopPropagation(); 27882 27883 if(!$(e.target).closest('.dropdown-select').length) 27884 { 27885 $('.dropdown-select .dropdown-select__title.opened').click(); 27886 } 27887 } 27888 }) 27889 /**/ 27890 27891 27892 /*side head block*/ 27893 $(document).on('click', '.slide-block .slide-block__head', function(e){ 27894 var _this = $(this), 27895 menu = _this.siblings('.slide-block__body'), 27896 bVisibleMeu = (menu.is(':visible')), 27897 animate = (bVisibleMeu ? 'slideUp' : 'slideDown'); 27898 27899 if(!_this.hasClass('clicked') && menu.length && !_this.hasClass('ignore') && !$(e.target).attr('href')) 27900 { 27901 var type = _this.data('id'); 27902 _this.addClass('clicked'); 27903 27904 if(bVisibleMeu) 27905 $.cookie(type+'_CLOSED', 'Y'); 27906 else 27907 $.removeCookie(type+'_CLOSED'); 27908 27909 menu.velocity('stop').velocity(animate, { 27910 duration: 150, 27911 // delay: 250, 27912 begin: function(){ 27913 _this.toggleClass('closed'); 27914 }, 27915 complete: function(){ 27916 _this.removeClass('clicked'); 27917 27918 if(typeof window['stickySidebar'] !== 'undefined') 27919 window['stickySidebar'].updateSticky(); 27920 } 27921 }); 27922 } 27923 }) 27924 /**/ 27925 27926 /*sku change props*/ 27927 if(!('SelectOfferProp' in window) && typeof window.SelectOfferProp != 'function') 27928 { 27929 SelectOfferProp = function(){ 27930 // return false; 27931 var _this = $(this), 27932 obParams = {}, 27933 obSelect = {}, 27934 objUrl = parseUrlQuery(), 27935 add_url = '', 27936 selectMode = (_this.hasClass('list_values_wrapper') ? true : false), 27937 container = _this.closest('.bx_catalog_item_scu'), 27938 img = _this.closest('.item-parent').find('.thumb img'); 27939 27940 /* request params */ 27941 obParams = { 27942 'PARAMS': _this.closest('.js_wrapper_items').data('params'), 27943 'ID': container.data('offer_id'), 27944 'SITE_ID': container.data('site_id'), 27945 'LINK_ID': container.data('id')+'_'+_this.closest('.cur').data('code'), 27946 'IBLOCK_ID': container.data('offer_iblockid'), 27947 'PROPERTY_ID': container.data('propertyid'), 27948 'DEPTH': _this.closest('.item_wrapper').index(), 27949 'VALUE': (selectMode ? _this.find('option:selected').data('onevalue') : _this.data('onevalue')), 27950 'CLASS': 'inner_content', 27951 'PICTURE': (img.data('src') ? img.data('src') : img.attr('src')), 27952 'ARTICLE_NAME': _this.closest('.item-parent').find('.article_block').data('name'), 27953 'ARTICLE_VALUE': _this.closest('.item-parent').find('.article_block').data('value'), 27954 } 27955 /**/ 27956 27957 if("clear_cache" in objUrl) 27958 { 27959 if(objUrl.clear_cache == "Y") 27960 add_url += "?clear_cache=Y"; 27961 } 27962 27963 /* save selected values */ 27964 for (i = 0; i < obParams.DEPTH+1; i++) 27965 { 27966 strName = 'PROP_'+container.find('.item_wrapper:eq('+i+') > div').data('id'); 27967 if(container.find('.item_wrapper:eq('+i+') select').length) 27968 {
27969 obSelect[strName] = container.find('.item_wrapper:eq('+i+') select option:selected').data('onevalue'); 27970 obParams[strName] = container.find('.item_wrapper:eq('+i+') select option:selected').data('onevalue'); 27971 } 27972 else 27973 { 27974 obSelect[strName] = container.find('.item_wrapper:eq('+i+') li.item.active').data('onevalue'); 27975 obParams[strName] = container.find('.item_wrapper:eq('+i+') li.item.active').data('onevalue'); 27976 } 27977 } 27978 27979 // obParams.SELECTED = JSON.stringify(obSelect); 27980 /**/ 27981 27982 if(!selectMode) 27983 { 27984 _this.siblings().removeClass('active'); 27985 _this.addClass('active'); 27986 } 27987 27988 if(_this.attr('title')) 27989 { 27990 var skuVal = _this.attr('title').split(':')[1]; 27991 _this.closest('.item_wrapper').find('.show_class .val').text(skuVal); 27992 } 27993 else 27994 { 27995 var img_row = _this.find(' > i'); 27996 if(img_row.length && img_row.attr('title')) { 27997 var skuVal = img_row.attr('title').split(':')[1]; 27998 _this.closest('.item_wrapper').find('.show_class .val').text(skuVal); 27999 } 28000 } 28001 28002 /* get sku */ 28003 $.ajax({ 28004 url: arMaxOptions['SITE_DIR']+'ajax/js_item_detail.php'+add_url, 28005 type: 'POST', 28006 data: obParams, 28007 }).success(function(html){ 28008 var ob = BX.processHTML(html);BX.ajax.processScripts(ob.SCRIPT); 28009 if($('.counter_wrapp.list')) 28010 { 28011 $('.counter_wrapp.list .counter_block.big').removeClass('big'); 28012 } 28013 }) 28014 } 28015 $(document).on('click', '.ajax_load .bx_catalog_item_scu li.item', SelectOfferProp) 28016 $(document).on('change', '.ajax_load .bx_catalog_item_scu select.list_values_wrapper', SelectOfferProp) 28017 } 28018 28019 /**/ 28020 28021 /**/ 28022 $('.switch-item-block .switch-item-block__icons').on('click', function(){ 28023 var $this = $(this), 28024 animationTime = 200; 28025 28026 if($this.hasClass('switch-item-block__icons--small') && !$this.hasClass('active')){ 28027 $this.addClass('active'); 28028 $this.siblings('.switch-item-block__icons--big').removeClass('active'); 28029 $this.closest('.switch-item-block').find('.switch-item-block__count-wrapper--big').fadeOut(animationTime, function(){ 28030 $this.closest('.switch-item-block').find('.switch-item-block__count-wrapper--small').fadeIn(animationTime); 28031 }); 28032 28033 $this.closest('.switch-item-block').siblings('.big-gallery-block').fadeOut(animationTime, function(){ 28034 $this.closest('.switch-item-block').siblings('.small-gallery-block').fadeIn(animationTime); 28035 }); 28036 } 28037 else if($this.hasClass('switch-item-block__icons--big') && !$this.hasClass('active')){ 28038 $this.addClass('active'); 28039 $this.siblings('.switch-item-block__icons--small').removeClass('active'); 28040 $this.closest('.switch-item-block').find('.switch-item-block__count-wrapper--small').fadeOut(animationTime, function(){ 28041 $this.closest('.switch-item-block').find('.switch-item-block__count-wrapper--big').fadeIn(animationTime); 28042 }); 28043 28044 $this.closest('.switch-item-block').siblings('.small-gallery-block').fadeOut(animationTime, function(){ 28045 $this.closest('.switch-item-block').siblings('.big-gallery-block').fadeIn(animationTime); 28046 }); 28047 } 28048 setTimeout(function(){ 28049 InitLazyLoad(); 28050 }, 300); 28051 }); 28052 /**/ 28053 28054 /*many items menu*/ 28055 28056 InitMenuNavigationAim(); 28057 /**/ 28058}) 28059/* End */ 28060; 28061; /* Start:"a:4:{s:4:"full";s:58:"/local/templates/aspro_max/js/slick.min.js?165235572342863";s:6:"source";s:42:"/local/templates/aspro_max/js/slick.min.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 28062!function(i){"use strict";"function"==typeof define&&define.amd?define(["jquery"],i):"undefined"!=typeof exports?module.exports=i(require("jquery")):i(jQuery)}(function(i){"use strict";var e=window.Slick||{};(e=function(){var e=0;return function(t,o){var s,n=this;n.defaults={accessibility:!0,adaptiveHeight:!1,appendArrows:i(t),appendDots:i(t),arrows:!0,asNavFor:null,prevArrow:'<button class="slick-prev" aria-label="Previous" type="button">Previous</button>',nextArrow:'<button class="slick-next" aria-label="Next" type="button">Next</button>',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:"50px",cssEase:"ease",customPaging:function(e,t){return i('<button type="button" />').text(t+1)},dots:!1,dotsClass:"slick-dots",draggable:!0,easing:"linear",edgeFriction:.35,fade:!1,focusOnSelect:!1,focusOnChange:!1,infinite:!0,initialSlide:0,lazyLoad:"ondemand",mobileFirst:!1,pauseOnHover:!0,pauseOnFocus:!0,pauseOnDotsHover:!1,respondTo:"window",responsive:null,rows:1,rtl:!1,slide:"",slidesPerRow:1,slidesToShow:1,slidesToScroll:1,speed:500,swipe:!0,swipeToSlide:!1,touchMove:!0,touchThreshold:5,useCSS:!0,useTransform:!0,variableWidth:!1,vertical:!1,verticalSwiping:!1,waitForAnimate:!0,zIndex:1e3},n.initials={animating:!1,dragging:!1,autoPlayTimer:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,$dots:null,listWidth:null,listHeight:null,loadIndex:0,$nextArrow:null,$prevArrow:null,scrolling:!1,slideCount:null,slideWidth:null,$slideTrack:null,$slides:null,
28062sliding:!1,slideOffset:0,swipeLeft:null,swiping:!1,$list:null,touchObject:{},transformsEnabled:!1,unslicked:!1},i.extend(n,n.initials),n.activeBreakpoint=null,n.animType=null,n.animProp=null,n.breakpoints=[],n.breakpointSettings=[],n.cssTransitions=!1,n.focussed=!1,n.interrupted=!1,n.hidden="hidden",n.paused=!0,n.positionProp=null,n.respondTo=null,n.rowCount=1,n.shouldClick=!0,n.$slider=i(t),n.$slidesCache=null,n.transformType=null,n.transitionType=null,n.visibilityChange="visibilitychange",n.windowWidth=0,n.windowTimer=null,s=i(t).data("slick")||{},n.options=i.extend({},n.defaults,o,s),n.currentSlide=n.options.initialSlide,n.originalSettings=n.options,void 0!==document.mozHidden?(n.hidden="mozHidden",n.visibilityChange="mozvisibilitychange"):void 0!==document.webkitHidden&&(n.hidden="webkitHidden",n.visibilityChange="webkitvisibilitychange"),n.autoPlay=i.proxy(n.autoPlay,n),n.autoPlayClear=i.proxy(n.autoPlayClear,n),n.autoPlayIterator=i.proxy(n.autoPlayIterator,n),n.changeSlide=i.proxy(n.changeSlide,n),n.clickHandler=i.proxy(n.clickHandler,n),n.selectHandler=i.proxy(n.selectHandler,n),n.setPosition=i.proxy(n.setPosition,n),n.swipeHandler=i.proxy(n.swipeHandler,n),n.dragHandler=i.proxy(n.dragHandler,n),n.keyHandler=i.proxy(n.keyHandler,n),n.instanceUid=e++,n.htmlExpr=/^(?:\s*(<[\w\W]+>)[^>]*)$/,n.registerBreakpoints(),n.init(!0)}}()).prototype.activateADA=function(){this.$slideTrack.find(".slick-active").attr({"aria-hidden":"false"}).find("a, input, button, select").attr({tabindex:"0"})},e.prototype.addSlide=e.prototype.slickAdd=function(e,t,o){var s=this;if("boolean"==typeof t)o=t,t=null;else if(t<0||t>=s.slideCount)return!1;s.unload(),"number"==typeof t?0===t&&0===s.$slides.length?i(e).appendTo(s.$slideTrack):o?i(e).insertBefore(s.$slides.eq(t)):i(e).insertAfter(s.$slides.eq(t)):!0===o?i(e).prependTo(s.$slideTrack):i(e).appendTo(s.$slideTrack),s.$slides=s.$slideTrack.children(this.options.slide),s.$slideTrack.children(this.options.slide).detach(),s.$slideTrack.append(s.$slides),s.$slides.each(function(e,t){i(t).attr("data-slick-index",e)}),s.$slidesCache=s.$slides,s.reinit()},e.prototype.animateHeight=function(){var i=this;if(1===i.options.slidesToShow&&!0===i.options.adaptiveHeight&&!1===i.options.vertical){var e=i.$slides.eq(i.currentSlide).outerHeight(!0);i.$list.animate({height:e},i.options.speed)}},e.prototype.animateSlide=function(e,t){var o={},s=this;s.animateHeight(),!0===s.options.rtl&&!1===s.options.vertical&&(e=-e),!1===s.transformsEnabled?!1===s.options.vertical?s.$slideTrack.animate({left:e},s.options.speed,s.options.easing,t):s.$slideTrack.animate({top:e},s.options.speed,s.options.easing,t):!1===s.cssTransitions?(!0===s.options.rtl&&(s.currentLeft=-s.currentLeft),i({animStart:s.currentLeft}).animate({animStart:e},{duration:s.options.speed,easing:s.options.easing,step:function(i){i=Math.ceil(i),!1===s.options.vertical?(o[s.animType]="translate("+i+"px, 0px)",s.$slideTrack.css(o)):(o[s.animType]="translate(0px,"+i+"px)",s.$slideTrack.css(o))},complete:function(){t&&t.call()}})):(s.applyTransition(),e=Math.ceil(e),!1===s.options.vertical?o[s.animType]="translate3d("+e+"px, 0px, 0px)":o[s.animType]="translate3d(0px,"+e+"px, 0px)",s.$slideTrack.css(o),t&&setTimeout(function(){s.disableTransition(),t.call()},s.options.speed))},e.prototype.getNavTarget=function(){var e=this,t=e.options.asNavFor;return t&&null!==t&&(t=i(t).not(e.$slider)),t},e.prototype.asNavFor=function(e){var t=this.getNavTarget();null!==t&&"object"==typeof t&&t.each(function(){var t=i(this).slick("getSlick");t.unslicked||t.slideHandler(e,!0)})},e.prototype.applyTransition=function(i){var e=this,t={};!1===e.options.fade?t[e.transitionType]=e.transformType+" "+e.options.speed+"ms "+e.options.cssEase:t[e.transitionType]="opacity "+e.options.speed+"ms "+e.options.cssEase,!1===e.options.fade?e.$slideTrack.css(t):e.$slides.eq(i).css(t)},e.prototype.autoPlay=function(){var i=this;i.autoPlayClear(),i.slideCount>i.options.slidesToShow&&(i.autoPlayTimer=setInterval(i.autoPlayIterator,i.options.autoplaySpeed))},e.prototype.autoPlayClear=function(){var i=this;i.autoPlayTimer&&clearInterval(i.autoPlayTimer)},e.prototype.autoPlayIterator=function(){var i=this,e=i.currentSlide+i.options.slidesToScroll;i.paused||i.interrupted||i.focussed||(!1===i.options.infinite&&(1===i.direction&&i.currentSlide+1===i.slideCount-1?i.direction=0:0===i.direction&&(e=i.currentSlide-i.options.slidesToScroll,i.currentSlide-1==0&&(i.direction=1))),i.slideHandler(e))},e.prototype.buildArrows=function(){var e=this;!0===e.options.arrows&&(e.$prevArrow=i(e.options.prevArrow).addClass("slick-arrow"),e.$nextArrow=i(e.options.nextArrow).addClass("slick-arrow"),e.slideCount>e.options.slidesToShow?(e.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),e.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),e.htmlExpr.test(e.options.prevArrow)&&e.$prevArrow.prependTo(e.options.appendArrows),e.htmlExpr.test(e.options.nextArrow)&&e.$nextArrow.appendTo(e.options.appendArrows),!0!==e.options.infinite&&e.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true")):e.$prevArrow.add(e.$nextArrow).addClass("slick-hidden").attr({"aria-disabled":"true",tabindex:"-1"}))},e.prototype.buildDots=function(){var e,t,o=this;if(!0===o.options.dots){for(o.$slider.addClass("slick-dotted"),t=i("<ul />").addClass(o.options.dotsClass),e=0;e<=o.getDotCount();e+=1)t.append(i("<li />").append(o.options.customPaging.call(this,o,e)));o.$dots=t.appendTo(o.options.appendDots),o.$dots.find("li").first().addClass("slick-active")}},e.prototype.buildOut=function(){var e=this;e.$slides=e.$slider.children(e.options.slide+":not(.slick-cloned)").addClass("slick-slide"),e.slideCount=e.$slides.length,e.$slides.each(function(e,t){i(t).attr("data-slick-index",e).data("originalStyling",i(t).attr("style")||"")}),e.$slider.addClass("slick-slider"),e.$slideTrack=0===e.slideCount?i('<div class="slick-track"/>').appendTo(e.$slider):e.$slides.wrapAll('<div class="slick-track"/>').parent(),e.$list=e.$slideTrack.wrap('<div class="slick-list"/>').parent(),e.$slideTrack.css("opacity",0),!0!==e.options.centerMode&&!0!==e.options.swipeToSlide||(e.options.slidesToScroll=1),i("img[data-lazy]",e.$slider).not("[src]").addClass("slick-loading"),e.setupInfinite(),e.buildArrows(),e.buildDots(),e.updateDots(),e.setSlideClasses("number"==typeof e.currentSlide?e.currentSlide:0),!0===e.options.draggable&&e.$list.addClass("draggable")},e.prototype.buildRows=function(){var i,e,t,o,s,n,r,l=this;if(o=document.createDocumentFragment(),n=l.$slider.children(),l.o
28062ptions.rows>1){for(r=l.options.slidesPerRow*l.options.rows,s=Math.ceil(n.length/r),i=0;i<s;i++){var d=document.createElement("div");for(e=0;e<l.options.rows;e++){var a=document.createElement("div");for(t=0;t<l.options.slidesPerRow;t++){var c=i*r+(e*l.options.slidesPerRow+t);n.get(c)&&a.appendChild(n.get(c))}d.appendChild(a)}o.appendChild(d)}l.$slider.empty().append(o),l.$slider.children().children().children().css({width:100/l.options.slidesPerRow+"%",display:"inline-block"})}},e.prototype.checkResponsive=function(e,t){var o,s,n,r=this,l=!1,d=r.$slider.width(),a=window.innerWidth||i(window).width();if("window"===r.respondTo?n=a:"slider"===r.respondTo?n=d:"min"===r.respondTo&&(n=Math.min(a,d)),r.options.responsive&&r.options.responsive.length&&null!==r.options.responsive){s=null;for(o in r.breakpoints)r.breakpoints.hasOwnProperty(o)&&(!1===r.originalSettings.mobileFirst?n<r.breakpoints[o]&&(s=r.breakpoints[o]):n>r.breakpoints[o]&&(s=r.breakpoints[o]));null!==s?null!==r.activeBreakpoint?(s!==r.activeBreakpoint||t)&&(r.activeBreakpoint=s,"unslick"===r.breakpointSettings[s]?r.unslick(s):(r.options=i.extend({},r.originalSettings,r.breakpointSettings[s]),!0===e&&(r.currentSlide=r.options.initialSlide),r.refresh(e)),l=s):(r.activeBreakpoint=s,"unslick"===r.breakpointSettings[s]?r.unslick(s):(r.options=i.extend({},r.originalSettings,r.breakpointSettings[s]),!0===e&&(r.currentSlide=r.options.initialSlide),r.refresh(e)),l=s):null!==r.activeBreakpoint&&(r.activeBreakpoint=null,r.options=r.originalSettings,!0===e&&(r.currentSlide=r.options.initialSlide),r.refresh(e),l=s),e||!1===l||r.$slider.trigger("breakpoint",[r,l])}},e.prototype.changeSlide=function(e,t){var o,s,n,r=this,l=i(e.currentTarget);switch(l.is("a")&&e.preventDefault(),l.is("li")||(l=l.closest("li")),n=r.slideCount%r.options.slidesToScroll!=0,o=n?0:(r.slideCount-r.currentSlide)%r.options.slidesToScroll,e.data.message){case"previous":s=0===o?r.options.slidesToScroll:r.options.slidesToShow-o,r.slideCount>r.options.slidesToShow&&r.slideHandler(r.currentSlide-s,!1,t);break;case"next":s=0===o?r.options.slidesToScroll:o,r.slideCount>r.options.slidesToShow&&r.slideHandler(r.currentSlide+s,!1,t);break;case"index":var d=0===e.data.index?0:e.data.index||l.index()*r.options.slidesToScroll;r.slideHandler(r.checkNavigable(d),!1,t),l.children().trigger("focus");break;default:return}},e.prototype.checkNavigable=function(i){var e,t;if(e=this.getNavigableIndexes(),t=0,i>e[e.length-1])i=e[e.length-1];else for(var o in e){if(i<e[o]){i=t;break}t=e[o]}return i},e.prototype.cleanUpEvents=function(){var e=this;e.options.dots&&null!==e.$dots&&(i("li",e.$dots).off("click.slick",e.changeSlide).off("mouseenter.slick",i.proxy(e.interrupt,e,!0)).off("mouseleave.slick",i.proxy(e.interrupt,e,!1)),!0===e.options.accessibility&&e.$dots.off("keydown.slick",e.keyHandler)),e.$slider.off("focus.slick blur.slick"),!0===e.options.arrows&&e.slideCount>e.options.slidesToShow&&(e.$prevArrow&&e.$prevArrow.off("click.slick",e.changeSlide),e.$nextArrow&&e.$nextArrow.off("click.slick",e.changeSlide),!0===e.options.accessibility&&(e.$prevArrow&&e.$prevArrow.off("keydown.slick",e.keyHandler),e.$nextArrow&&e.$nextArrow.off("keydown.slick",e.keyHandler))),e.$list.off("touchstart.slick mousedown.slick",e.swipeHandler),e.$list.off("touchmove.slick mousemove.slick",e.swipeHandler),e.$list.off("touchend.slick mouseup.slick",e.swipeHandler),e.$list.off("touchcancel.slick mouseleave.
28062slick",e.swipeHandler),e.$list.off("click.slick",e.clickHandler),i(document).off(e.visibilityChange,e.visibility),e.cleanUpSlideEvents(),!0===e.options.accessibility&&e.$list.off("keydown.slick",e.keyHandler),!0===e.options.focusOnSelect&&i(e.$slideTrack).children().off("click.slick",e.selectHandler),i(window).off("orientationchange.slick.slick-"+e.instanceUid,e.orientationChange),i(window).off("resize.slick.slick-"+e.instanceUid,e.resize),i("[draggable!=true]",e.$slideTrack).off("dragstart",e.preventDefault),i(window).off("load.slick.slick-"+e.instanceUid,e.setPosition)},e.prototype.cleanUpSlideEvents=function(){var e=this;e.$list.off("mouseenter.slick",i.proxy(e.interrupt,e,!0)),e.$list.off("mouseleave.slick",i.proxy(e.interrupt,e,!1))},e.prototype.cleanUpRows=function(){var i,e=this;e.options.rows>1&&((i=e.$slides.children().children()).removeAttr("style"),e.$slider.empty().append(i))},e.prototype.clickHandler=function(i){!1===this.shouldClick&&(i.stopImmediatePropagation(),i.stopPropagation(),i.preventDefault())},e.prototype.destroy=function(e){var t=this;t.autoPlayClear(),t.touchObject={},t.cleanUpEvents(),i(".slick-cloned",t.$slider).detach(),t.$dots&&t.$dots.remove(),t.$prevArrow&&t.$prevArrow.length&&(t.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),t.htmlExpr.test(t.options.prevArrow)&&t.$prevArrow.remove()),t.$nextArrow&&t.$nextArrow.length&&(t.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),t.htmlExpr.test(t.options.nextArrow)&&t.$nextArrow.remove()),t.$slides&&(t.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function(){i(this).attr("style",i(this).data("originalStyling"))}),t.$slideTrack.children(this.options.slide).detach(),t.$slideTrack.detach(),t.$list.detach(),t.$slider.append(t.$slides)),t.cleanUpRows(),t.$slider.removeClass("slick-slider"),t.$slider.removeClass("slick-initialized"),t.$slider.removeClass("slick-dotted"),t.unslicked=!0,e||t.$slider.trigger("destroy",[t])},e.prototype.disableTransition=function(i){var e=this,t={};t[e.transitionType]="",!1===e.options.fade?e.$slideTrack.css(t):e.$slides.eq(i).css(t)},e.prototype.fadeSlide=function(i,e){var t=this;!1===t.cssTransitions?(t.$slides.eq(i).css({zIndex:t.options.zIndex}),t.$slides.eq(i).animate({opacity:1},t.options.speed,t.options.easing,e)):(t.applyTransition(i),t.$slides.eq(i).css({opacity:1,zIndex:t.options.zIndex}),e&&setTimeout(function(){t.disableTransition(i),e.call()},t.options.speed))},e.prototype.fadeSlideOut=function(i){var e=this;!1===e.cssTransitions?e.$slides.eq(i).animate({opacity:0,zIndex:e.options.zIndex-2},e.options.speed,e.options.easing):(e.applyTransition(i),e.$slides.eq(i).css({opacity:0,zIndex:e.options.zIndex-2}))},e.prototype.filterSlides=e.prototype.slickFilter=function(i){var e=this;null!==i&&(e.$slidesCache=e.$slides,e.unload(),e.$slideTrack.children(this.options.slide).detach(),e.$slidesCache.filter(i).appendTo(e.$slideTrack),e.reinit())},e.prototype.focusHandler=function(){var e=this;e.$slider.off("focus.slick blur.slick").on("focus.slick blur.slick","*",function(t){t.stopImmediatePropagation();var o=i(this);setTimeout(function(){e.options.pauseOnFocus&&(e.focussed=o.is(":focus"),e.autoPlay())},0)})},e.prototype.getCurrent=e.prototype.slickCurrentSlide=function(){return this.currentSlide},e.prototype.getDotCount=function(){var i=this,e=0,t=0,o=0;if(!0===i.options.infinite)if(i.slideCount<=i.options.slidesToShow)++o;else for(;e<i.slideCount;)++o,e=t+i.options.slidesToScroll,t+=i.options.slidesToScroll<=i.options.slidesToShow?i.options.slidesToScroll:i.options.slidesToShow;else if(!0===i.options.centerMode)o=i.slideCount;else if(i.options.asNavFor)for(;e<i.slideCount;)++o,e=t+i.options.slidesToScroll,t+=i.options.slidesToScroll<=i.options.slidesToShow?i.options.slidesToScroll:i.options.slidesToShow;else o=1+Math.ceil((i.slideCount-i.options.slidesToShow)/i.options.slidesToScroll);return o-1},e.prototype.getLeft=function(i){var e,t,o,s,n=this,r=0;return n.slideOffset=0,t=n.$slides.first().outerHeight(!0),!0===n.options.infinite?(n.slideCount>n.options.slidesToShow&&(n.slideOffset=n.slideWidth*n.options.slidesToShow*-1,s=-1,!0===n.options.vertical&&!0===n.options.centerMode&&(2===n.options.slidesToShow?s=-1.5:1===n.options.slidesToShow&&(s=-2)),r=t*n.options.slidesToShow*s),n.slideCount%n.options.slidesToScroll!=0&&i+n.options.slidesToScroll>n.slideCount&&n.slideCount>n.options.slidesToShow&&(i>n.slideCount?(n.slideOffset=(n.options.slidesToShow-(i-n.slideCount))*n.slideWidth*-1,r=(n.options.slidesToShow-(i-n.slideCount))*t*-1):(n.slideOffset=n.slideCount%n.options.slidesToScroll*n.slideWidth*-1,r=n.slideCount%n.options.slidesToScroll*t*-1))):i+n.options.slidesToShow>n.slideCount&&(n.slideOffset=(i+n.options.slidesToShow-n.slideCount)*n.slideWidth,r=(i+n.options.slidesToShow-n.slideCount)*t),n.slideCount<=n.options.slidesToShow&&(n.slideOffset=0,r=0),!0===n.options.centerMode&&n.slideCount<=n.options.slidesToShow?n.slideOffset=n.slideWidth*Math.floor(n.options.slidesToShow)/2-n.slideWidth*n.slideCount/2:!0===n.options.centerMode&&!0===n.options.infinite?n.slideOffset+=n.slideWidth*Math.floor(n.options.slidesToShow/2)-n.slideWidth:!0===n.options.centerMode&&(n.slideOffset=0,n.slideOffset+=n.slideWidth*Math.floor(n.options.slidesToShow/2)),e=!1===n.options.vertical?i*n.slideWidth*-1+n.slideOffset:i*t*-1+r,!0===n.options.variableWidth&&(o=n.slideCount<=n.options.slidesToShow||!1===n.options.infinite?n.$slideTrack.children(".slick-slide").eq(i):n.$slideTrack.children(".slick-slide").eq(i+n.options.slidesToShow),e=!0===n.options.rtl?o[0]?-1*(n.$slideTrack.width()-o[0].offsetLeft-o.width()):0:o[0]?-1*o[0].offsetLeft:0,!0===n.options.centerMode&&(o=n.slideCount<=n.options.slidesToShow||!1===n.options.infinite?n.$slideTrack.children(".slick-slide").eq(i):n.$slideTrack.children(".slick-slide").eq(i+n.options.slidesToShow+1),e=!0===n.options.rtl?o[0]?-1*(n.$slideTrack.width()-o[0].offsetLeft-o.width()):0:o[0]?-1*o[0].offsetLeft:0,e+=(n.$list.width()-o.outerWidth())/2)),e},e.prototype.getOption=e.prototype.slickGetOption=function(i){return this.options[i]},e.prototype.getNavigableIndexes=function(){var i,e=this,t=0,o=0,s=[];for(!1===e.options.infinite?i=e.slideCount:(t=-1*e.options.slidesToScroll,o=-1*e.options.slidesToScroll,i=2*e.slideCount);t<i;)s.push(t),t=o+e.options.slidesToScroll,o+=e.options.slidesToScroll<=e.options.slidesToShow?e.options.slidesToScroll:e.options.slidesToShow;return s},e.prototype.getSlick=function(){return this},e.prototype.getSlideCount=function(){var e,t,o=this;return t=!0===o.options.centerMode?o.slideWidth*Math.floor(o.options.slidesToShow/2):0,!0===o.options.swipeToSlide?(o.$slideTrack.find(".slick-slide").each(function(s,n){if(n.offsetLeft-t+i(n).outerWidth()/2>-1*o.swipeLeft)return e=n,!1}),Math.abs(i(e).attr("data-slick-index")-o.currentSlide)||1):o.options.slidesToScroll},e.prototype.goTo=e.prototype.slickGoTo=function(i,e){this.changeSlide({data:{message:"index",index:
28062parseInt(i)}},e)},e.prototype.init=function(e){var t=this;i(t.$slider).hasClass("slick-initialized")||(i(t.$slider).addClass("slick-initialized"),t.buildRows(),t.buildOut(),t.setProps(),t.startLoad(),t.loadSlider(),t.initializeEvents(),t.updateArrows(),t.updateDots(),t.checkResponsive(!0),t.focusHandler()),e&&t.$slider.trigger("init",[t]),!0===t.options.accessibility&&t.initADA(),t.options.autoplay&&(t.paused=!1,t.autoPlay())},e.prototype.initADA=function(){var e=this,t=Math.ceil(e.slideCount/e.options.slidesToShow),o=e.getNavigableIndexes().filter(function(i){return i>=0&&i<e.slideCount});e.$slides.add(e.$slideTrack.find(".slick-cloned")).attr({"aria-hidden":"true",tabindex:"-1"}).find("a, input, button, select").attr({tabindex:"-1"}),null!==e.$dots&&(e.$slides.not(e.$slideTrack.find(".slick-cloned")).each(function(t){var s=o.indexOf(t);i(this).attr({role:"tabpanel",id:"slick-slide"+e.instanceUid+t,tabindex:-1}),-1!==s&&i(this).attr({"aria-describedby":"slick-slide-control"+e.instanceUid+s})}),e.$dots.attr("role","tablist").find("li").each(function(s){var n=o[s];i(this).attr({role:"presentation"}),i(this).find("button").first().attr({role:"tab",id:"slick-slide-control"+e.instanceUid+s,"aria-controls":"slick-slide"+e.instanceUid+n,"aria-label":s+1+" of "+t,"aria-selected":null,tabindex:"-1"})}).eq(e.currentSlide).find("button").attr({"aria-selected":"true",tabindex:"0"}).end());for(var s=e.currentSlide,n=s+e.options.slidesToShow;s<n;s++)e.$slides.eq(s).attr("tabindex",0);e.activateADA()},e.prototype.initArrowEvents=function(){var i=this;!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.off("click.slick").on("click.slick",{message:"previous"},i.changeSlide),i.$nextArrow.off("click.slick").on("click.slick",{message:"next"},i.changeSlide),!0===i.options.accessibility&&(i.$prevArrow.on("keydown.slick",i.keyHandler),i.$nextArrow.on("keydown.slick",i.keyHandler)))},e.prototype.initDotEvents=function(){var e=this;!0===e.options.dots&&(i("li",e.$dots).on("click.slick",{message:"index"},e.changeSlide),!0===e.options.accessibility&&e.$dots.on("keydown.slick",e.keyHandler)),!0===e.options.dots&&!0===e.options.pauseOnDotsHover&&i("li",e.$dots).on("mouseenter.slick",i.proxy(e.interrupt,e,!0)).on("mouseleave.slick",i.proxy(e.interrupt,e,!1))},e.prototype.initSlideEvents=function(){var e=this;e.options.pauseOnHover&&(e.$list.on("mouseenter.slick",i.proxy(e.interrupt,e,!0)),e.$list.on("mouseleave.slick",i.proxy(e.interrupt,e,!1)))},e.prototype.initializeEvents=function(){var e=this;e.initArrowEvents(),e.initDotEvents(),e.initSlideEvents(),e.$list.on("touchstart.slick mousedown.slick",{action:"start"},e.swipeHandler),e.$list.on("touchmove.slick mousemove.slick",{action:"move"},e.swipeHandler),e.$list.on("touchend.slick mouseup.slick",{action:"end"}
28062,e.swipeHandler),e.$list.on("touchcancel.slick mouseleave.slick",{action:"end"},e.swipeHandler),e.$list.on("click.slick",e.clickHandler),i(document).on(e.visibilityChange,i.proxy(e.visibility,e)),!0===e.options.accessibility&&e.$list.on("keydown.slick",e.keyHandler),!0===e.options.focusOnSelect&&i(e.$slideTrack).children().on("click.slick",e.selectHandler),i(window).on("orientationchange.slick.slick-"+e.instanceUid,i.proxy(e.orientationChange,e)),i(window).on("resize.slick.slick-"+e.instanceUid,i.proxy(e.resize,e)),i("[draggable!=true]",e.$slideTrack).on("dragstart",e.preventDefault),i(window).on("load.slick.slick-"+e.instanceUid,e.setPosition),i(e.setPosition)},e.prototype.initUI=function(){var i=this;!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.show(),i.$nextArrow.show()),!0===i.options.dots&&i.slideCount>i.options.slidesToShow&&i.$dots.show()},e.prototype.keyHandler=function(i){var e=this;i.target.tagName.match("TEXTAREA|INPUT|SELECT")||(37===i.keyCode&&!0===e.options.accessibility?e.changeSlide({data:{message:!0===e.options.rtl?"next":"previous"}}):39===i.keyCode&&!0===e.options.accessibility&&e.changeSlide({data:{message:!0===e.options.rtl?"previous":"next"}}))},e.prototype.lazyLoad=function(){function e(e){i("img[data-lazy]",e).each(function(){var e=i(this),t=i(this).attr("data-lazy"),o=i(this).attr("data-srcset"),s=i(this).attr("data-sizes")||n.$slider.attr("data-sizes"),r=document.createElement("img");r.onload=function(){e.animate({opacity:0}
vendor: 5,619 bytes, line 28062
28062,100,function(){o&&(e.attr("srcset",o),s&&e.attr("sizes",s)),e.attr("src",t).animate({opacity:1},200,function(){e.removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading")}),n.$slider.trigger("lazyLoaded",[n,e,t])})},r.onerror=function(){e.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),n.$slider.trigger("lazyLoadError",[n,e,t])},r.src=t})}var t,o,s,n=this;if(!0===n.options.centerMode?!0===n.options.infinite?s=(o=n.currentSlide+(n.options.slidesToShow/2+1))+n.options.slidesToShow+2:(o=Math.max(0,n.currentSlide-(n.options.slidesToShow/2+1)),s=n.options.slidesToShow/2+1+2+n.currentSlide):(o=n.options.infinite?n.options.slidesToShow+n.currentSlide:n.currentSlide,s=Math.ceil(o+n.options.slidesToShow),!0===n.options.fade&&(o>0&&o--,s<=n.slideCount&&s++)),t=n.$slider.find(".slick-slide").slice(o,s),"anticipated"===n.options.lazyLoad)for(var r=o-1,l=s,d=n.$slider.find(".slick-slide"),a=0;a<n.options.slidesToScroll;a++)r<0&&(r=n.slideCount-1),t=(t=t.add(d.eq(r))).add(d.eq(l)),r--,l++;e(t),n.slideCount<=n.options.slidesToShow?e(n.$slider.find(".slick-slide")):n.currentSlide>=n.slideCount-n.options.slidesToShow?e(n.$slider.find(".slick-cloned").slice(0,n.options.slidesToShow)):0===n.currentSlide&&e(n.$slider.find(".slick-cloned").slice(-1*n.options.slidesToShow))},e.prototype.loadSlider=function(){var i=this;i.setPosition(),i.$slideTrack.css({opacity:1}),i.$slider.removeClass("slick-loading"),i.initUI(),"progressive"===i.options.lazyLoad&&i.progressiveLazyLoad()},e.prototype.next=e.prototype.slickNext=function(){this.changeSlide({data:{message:"next"}})},e.prototype.orientationChange=function(){var i=this;i.checkResponsive(),i.setPosition()},e.prototype.pause=e.prototype.slickPause=function(){var i=this;i.autoPlayClear(),i.paused=!0},e.prototype.play=e.prototype.slickPlay=function(){var i=this;i.autoPlay(),i.options.autoplay=!0,i.paused=!1,i.focussed=!1,i.interrupted=!1},e.prototype.postSlide=function(e){var t=this;t.unslicked||(t.$slider.trigger("afterChange",[t,e]),t.animating=!1,t.slideCount>t.options.slidesToShow&&t.setPosition(),t.swipeLeft=null,t.options.autoplay&&t.autoPlay(),!0===t.options.accessibility&&(t.initADA(),t.options.focusOnChange&&i(t.$slides.get(t.currentSlide)).attr("tabindex",0).focus()))},e.prototype.prev=e.prototype.slickPrev=function(){this.changeSlide({data:{message:"previous"}})},e.prototype.preventDefault=function(i){i.preventDefault()},e.prototype.progressiveLazyLoad=function(e){e=e||1;var t,o,s,n,r,l=this,d=i("img[data-lazy]",l.$slider);d.length?(t=d.first(),o=t.attr("data-lazy"),s=t.attr("data-srcset"),n=t.attr("data-sizes")||l.$slider.attr("data-sizes"),(r=document.createElement("img")).onload=function(){s&&(t.attr("srcset",s),n&&t.attr("sizes",n)),t.attr("src",o).removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading"),!0===l.options.adaptiveHeight&&l.setPosition(),l.$slider.trigger("lazyLoaded",[l,t,o]),l.progressiveLazyLoad()},r.onerror=function(){e<3?setTimeout(function(){l.progressiveLazyLoad(e+1)},500):(t.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),l.$slider.trigger("lazyLoadError",[l,t,o]),l.progressiveLazyLoad())},r.src=o):l.$slider.trigger("allImagesLoaded",[l])},e.prototype.refresh=function(e){var t,o,s=this;o=s.slideCount-s.options.slidesToShow,!s.options.infinite&&s.currentSlide>o&&(s.currentSlide=o),s.slideCount<=s.options.slidesToShow&&(s.currentSlide=0),t=s.currentSlide,s.destroy(!0),i.extend(s,s.initials,{currentSlide:t}),s.init(),e||s.changeSlide({data:{message:"index",index:t}},!1)},e.prototype.registerBreakpoints=function(){var e,t,o,s=this,n=s.options.responsive||null;if("array"===i.type(n)&&n.length){s.respondTo=s.options.respondTo||"window";for(e in n)if(o=s.breakpoints.length-1,n.hasOwnProperty(e)){for(t=n[e].breakpoint;o>=0;)s.breakpoints[o]&&s.breakpoints[o]===t&&s.breakpoints.splice(o,1),o--;s.breakpoints.push(t),s.breakpointSettings[t]=n[e].settings}s.breakpoints.sort(function(i,e){return s.options.mobileFirst?i-e:e-i})}},e.prototype.reinit=function(){var e=this;e.$slides=e.$slideTrack.children(e.options.slide).addClass("slick-slide"),e.slideCount=e.$slides.length,e.currentSlide>=e.slideCount&&0!==e.currentSlide&&(e.currentSlide=e.currentSlide-e.options.slidesToScroll),e.slideCount<=e.options.slidesToShow&&(e.currentSlide=0),e.registerBreakpoints(),e.setProps(),e.setupInfinite(),e.buildArrows(),e.updateArrows(),e.initArrowEvents(),e.buildDots(),e.updateDots(),e.initDotEvents(),e.cleanUpSlideEvents(),e.initSlideEvents(),e.checkResponsive(!1,!0),!0===e.options.focusOnSelect&&i(e.$slideTrack).children().on("click.slick",e.selectHandler),e.setSlideClasses("number"==typeof e.currentSlide?e.currentSlide:0),e.setPosition(),e.focusHandler(),e.paused=!e.options.autoplay,e.autoPlay(),e.$slider.trigger("reInit",[e])},e.prototype.resize=function(){var e=this;i(window).width()!==e.windowWidth&&(clearTimeout(e.windowDelay),e.windowDelay=window.setTimeout(function(){e.windowWidth=i(window).width(),e.checkResponsive(),e.unslicked||e.setPosition()},50))},e.prototype.removeSlide=e.prototype.slickRemove=function(i,e,t){var o=this;if(i="boolean"==typeof i?!0===(e=i)?0:o.slideCount-1:!0===e?--i:i,o.slideCount<1||i<0||i>o.slideCount-1)return!1;o.unload(),!0===t?o.$slideTrack.children().remove():o.$slideTrack.children(this.options.slide).eq(i).remove(),o.$slides=o.$slideTrack.children(this.options.slide),o.$slideTrack.children(this.options.slide).detach(),o.$slideTrack.append(o.$slides),o.$slidesCache=o.$slides,o.reinit()},e.prototype.setCSS=function(i){var e,t,o=this,s={};
28062!0===o.options.rtl&&(i=-i),e="left"==o.positionProp?Math.ceil(i)+"px":"0px",t="top"==o.positionProp?Math.ceil(i)+"px":"0px",s[o.positionProp]=i,!1===o.transformsEnabled?o.$slideTrack.css(s):(s={},!1===o.cssTransitions?(s[o.animType]="translate("+e+", "+t+")",o.$slideTrack.css(s)):(s[o.animType]="translate3d("+e+", "+t+", 0px)",o.$slideTrack.css(s)))},e.prototype.setDimensions=function(){var i=this;!1===i.options.vertical?!0===i.options.centerMode&&i.$list.css({padding:"0px "+i.options.centerPadding}):(i.$list.height(i.$slides.first().outerHeight(!0)*i.options.slidesToShow),!0===i.options.centerMode&&i.$list.css({padding:i.options.centerPadding+" 0px"})),i.listWidth=i.$list.width(),i.listHeight=i.$list.height(),!1===i.options.vertical&&!1===i.options.variableWidth?(i.slideWidth=Math.ceil(i.listWidth/i.options.slidesToShow),i.$slideTrack.width(Math.ceil(i.slideWidth*i.$slideTrack.children(".slick-slide").length))):!0===i.options.variableWidth?i.$slideTrack.width(5e3*i.slideCount):(i.slideWidth=Math.ceil(i.listWidth),i.$slideTrack.height(Math.ceil(i.$slides.first().outerHeight(!0)*i.$slideTrack.children(".slick-slide").length)));var e=i.$slides.first().outerWidth(!0)-i.$slides.first().width();!1===i.options.variableWidth&&i.$slideTrack.children(".slick-slide").width(i.slideWidth-e)},e.prototype.setFade=function(){var e,t=this;t.$slides.each(function(o,s){e=t.slideWidth*o*-1,!0===t.options.rtl?i(s).css({position:"relative",right:e,top:0,zIndex:t.options.zIndex-2,opacity:0}
28062):i(s).css({position:"relative",left:e,top:0,zIndex:t.options.zIndex-2,opacity:0})}),t.$slides.eq(t.currentSlide).css({zIndex:t.options.zIndex-1,opacity:1})},e.prototype.setHeight=function(){var i=this;if(1===i.options.slidesToShow&&!0===i.options.adaptiveHeight&&!1===i.options.vertical){var e=i.$slides.eq(i.currentSlide).outerHeight(!0);i.$list.css("height",e)}},e.prototype.setOption=e.prototype.slickSetOption=function(){var e,t,o,s,n,r=this,l=!1;if("object"===i.type(arguments[0])?(o=arguments[0],l=arguments[1],n="multiple"):"string"===i.type(arguments[0])&&(o=arguments[0],s=arguments[1],l=arguments[2],"responsive"===arguments[0]&&"array"===i.type(arguments[1])?n="responsive":void 0!==arguments[1]&&(n="single")),"single"===n)r.options[o]=s;else if("multiple"===n)i.each(o,function(i,e){r.options[i]=e});else if("responsive"===n)for(t in s)if("array"!==i.type(r.options.responsive))r.options.responsive=[s[t]];else{for(e=r.options.responsive.length-1;e>=0;)r.options.responsive[e].breakpoint===s[t].breakpoint&&r.options.responsive.splice(e,1),e--;r.options.responsive.push(s[t])}l&&(r.unload(),r.reinit())},e.prototype.setPosition=function(){var i=this;i.setDimensions(),i.setHeight(),!1===i.options.fade?i.setCSS(i.getLeft(i.currentSlide)):i.setFade(),i.$slider.trigger("setPosition",[i])},e.prototype.setProps=function(){var i=this,e=document.body.style;i.positionProp=!0===i.options.vertical?"top":"left","top"===i.positionProp?i.$slider.addClass("slick-vertical"):i.$slider.removeClass("slick-vertical"),void 0===e.WebkitTransition&&void 0===e.MozTransition&&void 0===e.msTransition||!0===i.options.useCSS&&(i.cssTransitions=!0),i.options.fade&&("number"==typeof i.options.zIndex?i.options.zIndex<3&&(i.options.zIndex=3):i.options.zIndex=i.defaults.zIndex),void 0!==e.OTransform&&(i.animType="OTransform",i.transformType="-o-transform",i.transitionType="OTransition",void 0===e.perspectiveProperty&&void 0===e.webkitPerspective&&(i.animType=!1)),void 0!==e.MozTransform&&(i.animType="MozTransform",i.transformType="-moz-transform",i.transitionType="MozTransition",void 0===e.perspectiveProperty&&void 0===e.MozPerspective&&(i.animType=!1)),void 0!==e.webkitTransform&&(i.animType="webkitTransform",i.transformType="-webkit-transform",i.transitionType="webkitTransition",void 0===e.perspectiveProperty&&void 0===e.webkitPerspective&&(i.animType=!1)),void 0!==e.msTransform&&(i.animType="msTransform",i.transformType="-ms-transform",i.transitionType="msTransition",void 0===e.msTransform&&(i.animType=!1)),void 0!==e.transform&&!1!==i.animType&&(i.animType="transform",i.transformType="transform",i.transitionType="transition"),i.transformsEnabled=i.options.useTransform&&null!==i.animType&&!1!==i.animType},e.prototype.setSlideClasses=function(i){var e,t,o,s,n=this;if(t=n.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden","true"),n.$slides.eq(i).addClass("slick-current"),!0===n.options.centerMode){var r=n.options.slidesToShow%2==0?1:0;e=Math.floor(n.options.slidesToShow/2),!0===n.options.infinite&&(i>=e&&i<=n.slideCount-1-e?n.$slides.slice(i-e+r,i+e+1).addClass("slick-active").attr("aria-hidden","false"):(o=n.options.slidesToShow+i,t.slice(o-e+1+r,o+e+2).addClass("slick-active").attr("aria-hidden","false")),0===i?t.eq(t.length-1-n.options.slidesToShow).addClass("slick-center"):i===n.slideCount-1&&t.eq(n.options.slidesToShow).addClass("slick-center")),n.$slides.eq(i).addClass("slick-center")}else i>=0&&i<=n.slideCount-n.options.slidesToShow?n.$slides.slice(i,i+n.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"):t.length<=n.options.slidesToShow?t.addClass("slick-active").attr("aria-hidden","false"):(s=n.slideCount%n.options.slidesToShow,o=!0===n.options.infinite?n.options.slidesToShow+i:i,n.options.slidesToShow==n.options.slidesToScroll&&n.slideCount-i<n.options.slidesToShow?t.slice(o-(n.options.slidesToShow-s),o+s).addClass("slick-active").attr("aria-hidden","false"):t.slice(o,o+n.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"));"ondemand"!==n.options.lazyLoad&&"anticipated"!==n.options.lazyLoad||n.lazyLoad()},e.prototype.setupInfinite=function(){var e,t,o,s=this;if(!0===s.options.fade&&(s.options.centerMode=!1),!0===s.options.infinite&&!1===s.options.fade&&(t=null,s.slideCount>s.options.slidesToShow)){for(o=!0===s.options.centerMode?s.options.slidesToShow+1:s.options.slidesToShow,e=s.slideCount;e>s.slideCount-o;e-=1)t=e-1,i(s.$slides[t]).clone(!0).attr("id","").attr("data-slick-index",t-s.slideCount).prependTo(s.$slideTrack).addClass("slick-cloned");for(e=0;e<o+s.slideCount;e+=1)t=e,i(s.$slides[t]).clone(!0).attr("id","").attr("data-slick-index",t+s.slideCount).appendTo(s.$slideTrack).addClass("slick-cloned");s.$slideTrack.find(".slick-cloned").find("[id]").each(function(){i(this).attr("id","")})}},e.prototype.interrupt=function(i){var e=this;i||e.autoPlay(),e.interrupted=i},e.prototype.selectHandler=function(e){var t=this,o=i(e.target).is(".slick-slide")?i(e.target):i(e.target).parents(".slick-slide"),s=parseInt(o.attr("data-slick-index"));s||(s=0),t.slideCount<=t.options.slidesToShow?t.slideHandler(s,!1,!0):t.slideHandler(s)},e.prototype.slideHandler=function(i,e,t){var o,s,n,r,l,d=null,a=this;if(e=e||!1,!(!0===a.animating&&!0===a.options.waitForAnimate||!0===a.options.fade&&a.currentSlide===i))if(!1===e&&a.asNavFor(i),o=i,d=a.getLeft(o),r=a.getLeft(a.currentSlide),a.currentLeft=null===a.swipeLeft?r:a.swipeLeft,!1===a.options.infinite&&!1===a.options.centerMode&&(i<0||i>a.getDotCount()*a.options.slidesToScroll))!1===a.options.fade&&(o=a.currentSlide,!0!==t?a.animateSlide(r,function(){a.postSlide(o)}):a.postSlide(o));else if(!1===a.options.infinite&&!0===a.options.centerMode&&(i<0||i>a.slideCount-a.options.slidesToScroll))!1===a.options.fade&&(o=a.currentSlide,!0!==t?a.animateSlide(r,function(){a.postSlide(o)}):a.postSlide(o));else{if(a.options.autoplay&&clearInterval(a.autoPlayTimer),s=o<0?a.slideCount%a.options.slidesToScroll!=0?a.slideCount-a.slideCount%a.options.slidesToScroll:a.slideCount+
28062o:o>=a.slideCount?a.slideCount%a.options.slidesToScroll!=0?0:o-a.slideCount:o,a.animating=!0,a.$slider.trigger("beforeChange",[a,a.currentSlide,s]),n=a.currentSlide,a.currentSlide=s,a.setSlideClasses(a.currentSlide),a.options.asNavFor&&(l=(l=a.getNavTarget()).slick("getSlick")).slideCount<=l.options.slidesToShow&&l.setSlideClasses(a.currentSlide),a.updateDots(),a.updateArrows(),!0===a.options.fade)return!0!==t?(a.fadeSlideOut(n),a.fadeSlide(s,function(){a.postSlide(s)})):a.postSlide(s),void a.animateHeight();!0!==t?a.animateSlide(d,function(){a.postSlide(s)}):a.postSlide(s)}},e.prototype.startLoad=function(){var i=this;!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.hide(),i.$nextArrow.hide()),!0===i.options.dots&&i.slideCount>i.options.slidesToShow&&i.$dots.hide(),i.$slider.addClass("slick-loading")},e.prototype.swipeDirection=function(){var i,e,t,o,s=this;return i=s.touchObject.startX-s.touchObject.curX,e=s.touchObject.startY-s.touchObject.curY,t=Math.atan2(e,i),(o=Math.round(180*t/Math.PI))<0&&(o=360-Math.abs(o)),o<=45&&o>=0?!1===s.options.rtl?"left":"right":o<=360&&o>=315?!1===s.options.rtl?"left":"right":o>=135&&o<=225?!1===s.options.rtl?"right":"left":!0===s.options.verticalSwiping?o>=35&&o<=135?"down":"up":"vertical"},e.prototype.swipeEnd=function(i){var e,t,o=this;if(o.dragging=!1,o.swiping=!1,o.scrolling)return o.scrolling=!1,!1;if(o.interrupted=!1,o.shouldClick=!(o.touchObject.swipeLength>10),void 0===o.touchObject.curX)return!1;if(!0===o.touchObject.edgeHit&&o.$slider.trigger("edge",[o,o.swipeDirection()]),o.touchObject.swipeLength>=o.touchObject.minSwipe){switch(t=o.swipeDirection()){case"left":case"down":e=o.options.swipeToSlide?o.checkNavigable(o.currentSlide+o.getSlideCount()):o.currentSlide+o.getSlideCount(),o.currentDirection=0;break;case"right":case"up":e=o.options.swipeToSlide?o.checkNavigable(o.currentSlide-o.getSlideCount()):o.currentSlide-o.getSlideCount(),o.currentDirection=1}"vertical"!=t&&(o.slideHandler(e),o.touchObject={},o.$slider.trigger("swipe",[o,t]))}else o.touchObject.startX!==o.touchObject.curX&&(o.slideHandler(o.currentSlide),o.touchObject={})},e.prototype.swipeHandler=function(i){var e=this;if(!(!1===e.options.swipe||"ontouchend"in document&&!1===e.options.swipe||!1===e.options.draggable&&-1!==i.type.indexOf("mouse")))switch(e.touchObject.fingerCount=i.originalEvent&&void 0!==i.originalEvent.touches?i.originalEvent.touches.length:1,e.touchObject.minSwipe=e.listWidth/e.options.touchThreshold,!0===e.options.verticalSwiping&&(e.touchObject.minSwipe=e.listHeight/e.options.touchThreshold),i.data.action){case"start":e.swipeStart(i);break;case"move":e.swipeMove(i);break;case"end":e.swipeEnd(i)}},e.prototype.swipeMove=function(i){var e,t,o,s,n,r,l=this;return n=void 0!==i.originalEvent?i.originalEvent.touches:null,!(!l.dragging||l.scrolling||n&&1!==n.length)&&(e=l.getLeft(l.currentSlide),l.touchObject.curX=void 0!==n?n[0].pageX:i.clientX,l.touchObject.curY=void 0!==n?n[0].pageY:i.clientY,l.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(l.touchObject.curX-l.touchObject.startX,2))),r=Math.round(Math.sqrt(Math.pow(l.touchObject.curY-l.touchObject.startY,2))),!l.options.verticalSwiping&&!l.swiping&&r>4?(l.scrolling=!0,!1):(!0===l.options.verticalSwiping&&(l.touchObject.swipeLength=r),t=l.swipeDirection(),void 0!==i.originalEvent&&l.touchObject.swipeLength>4&&(l.swiping=!0,i.preventDefault()),s=(!1===l.options.rtl?1:-1)*(l.touchObject.curX>l.touchObject.startX?1:-1),!0===l.options.verticalSwiping&&(s=l.touchObject.curY>l.touchObject.startY?1:-1),o=l.touchObject.swipeLength,l.touchObject.edgeHit=!1,!1===l.options.infinite&&(0===l.currentSlide&&"right"===t||l.currentSlide>=l.getDotCount()&&"left"===t)&&(o=l.touchObject.swipeLength*l.options.edgeFriction,l.touchObject.edgeHit=!0),!1===l.options.vertical?l.swipeLeft=e+o*s:l.swipeLeft=e+o*(l.$list.height()/l.listWidth)*s,!0===l.options.verticalSwiping&&(l.swipeLeft=e+o*s),!0!==l.options.fade&&!1!==l.options.touchMove&&(!0===l.animating?(l.swipeLeft=null,!1):void l.setCSS(l.swipeLeft))))},e.prototype.swipeStart=function(i){var e,t=this;if(t.interrupted=!0,1!==t.touchObject.fingerCount||t.slideCount<=t.options.slidesToShow)return t.touchObject={},!1;void 0!==i.originalEvent&&void 0!==i.originalEvent.touches&&(e=i.originalEvent.touches[0]),t.touchObject.startX=t.touchObject.curX=void 0!==e?e.pageX:i.clientX,t.touchObject.startY=t.touchObject.curY=void 0!==e?e.pageY:i.clientY,t.dragging=!0},e.prototype.unfilterSlides=e.prototype.slickUnfilter=function(){var i=this;null!==i.$slidesCache&&(i.unload(),i.$slideTrack.children(this.options.slide).detach(),i.$slidesCache.appendTo(i.$slideTrack),i.reinit())},e.prototype.unload=function(){var e=this;i(".slick-cloned",e.$slider).remove(),e.$dots&&e.$dots.remove(),e.$prevArrow&&e.htmlExpr.test(e.options.prevArrow)&&e.$prevArrow.remove(),e.$nextArrow&&e.htmlExpr.test(e.options.nextArrow)&&e.$nextArrow.remove(),e.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden","true").css("width","")}
28062,e.prototype.unslick=function(i){var e=this;e.$slider.trigger("unslick",[e,i]),e.destroy()},e.prototype.updateArrows=function(){var i=this;Math.floor(i.options.slidesToShow/2),!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&!i.options.infinite&&(i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false"),i.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false"),0===i.currentSlide?(i.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true"),i.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false")):i.currentSlide>=i.slideCount-i.options.slidesToShow&&!1===i.options.centerMode?(i.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")):i.currentSlide>=i.slideCount-1&&!0===i.options.centerMode&&(i.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")))},e.prototype.updateDots=function(){var i=this;null!==i.$dots&&(i.$dots.find("li").removeClass("slick-active").end(),i.$dots.find("li").eq(Math.floor(i.currentSlide/i.options.slidesToScroll)).addClass("slick-active"))},e.prototype.visibility=function(){var i=this;i.options.autoplay&&(document[i.hidden]?i.interrupted=!0:i.interrupted=!1)},i.fn.slick=function(){var i,t,o=this,s=arguments[0],n=Array.prototype.slice.call(arguments,1),r=o.length;for(i=0;i<r;i++)if("object"==typeof s||void 0===s?o[i].slick=new e(o[i],s):t=o[i].slick[s].apply(o[i].slick,n),void 0!==t)return t;return o}}); 28063 28064/* End */ 28065; 28066; /* Start:"a:4:{s:4:"full";s:54:"/local/templates/aspro_max/js/script.js?16523557253003";s:6:"source";s:39:"/local/templates/aspro_max/js/script.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 28067$(document).ready(function () { 28068 28069 goals(); 28070 28071 function goals() { 28072 28073 // Registration 28074 $('#registraion-page-form button[type="submit"]').on('click', function () { 28075 ym(66021448, 'reachGoal', 'rega'); 28076 gtag('event', 'send', {'event_category': 'rega', 'event_action': 'click',}); 28077 }); 28078 28079 // To Cart 28080 $('.btn.to-cart').on('click', function () { 28081 ym(66021448, 'reachGoal', 'vkorzinu'); 28082 gtag('event', 'send', {'event_category': 'vkorzinu', 'event_action': 'click',}); 28083 }); 28084 28085 // Checkout 28086 $('button.basket-btn-checkout').on('click', function () { 28087 ym(66021448, 'reachGoal', 'uspeh'); 28088 gtag('event', 'send', {'event_category': 'uspeh', 'event_action': 'click',}); 28089 }); 28090 28091 // Checkout 28092 $('a.btn-order-save').on('click', function () { 28093 ym(66021448, 'reachGoal', 'uspeh'); 28094 gtag('event', 'send', {'event_category': 'uspeh', 'event_action': 'click',}); 28095 }); 28096 28097 // Want gift 28098 $('[data-name="send_gift"]').on('click', function () { 28099 ym(66021448, 'reachGoal', 'podarok'); 28100 gtag('event', 'send', {'event_category': 'podarok', 'event_action': 'click',}); 28101 }); 28102 28103 // Ask question 28104 $('[data-name="ask"]').on('click', function () { 28105 ym(66021448, 'reachGoal', 'vopros'); 28106 gtag('event', 'send', {'event_category': 'vopros', 'event_action': 'click',}); 28107 }); 28108 28109 // Subscribe 28110 $('.subscribe-form [type="submit"]').on('click', function () { 28111 ym(66021448, 'reachGoal', 'podpis'); 28112 gtag('event', 'send', {'event_category': 'podpis', 'event_action': 'click',}); 28113 }); 28114 28115 // Go to cart 28116 $(document).ajaxStop(function () { 28117 $('[href="/basket/"]').on('click', function () { 28118 ym(66021448, 'reachGoal', 'zahod'); 28119 gtag('event', 'send', {'event_category': 'zahod', 'event_action': 'click',}); 28120 }); 28121 }); 28122 } 28123 28124 // Slick 28125 $('.slider-recommended').slick({ 28126 vertical: true, 28127 verticalSwiping: true, 28128 slidesToShow: 4, 28129 slidesToScroll: 4, 28130 infinite: false, 28131 arrows: true, 28132 prevArrow: '<button type="button" class="slick-btn-prev"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="6.969" viewBox="0 0 12 6.969"><path id="Rounded_Rectangle_702_copy_24" data-name="Rounded Rectangle 702 copy 24" class="cls-1" d="M361.691,401.707a1,1,0,0,1-1.414,0L356,397.416l-4.306,4.291a1,1,0,0,1-1.414,0,0.99
281321,0.991,0,0,1,0-1.406l5.016-5a1.006,1.006,0,0,1,1.415,0l4.984,5A0.989,0.989,0,0,1,361.691,401.707Z" transform="translate(-350 -395.031)"></path></svg></button>', 28133 nextArrow: '<button type="button" class="slick-btn-next"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="6.969" viewBox="0 0 12 6.969"><path id="Rounded_Rectangle_702_copy_24" data-name="Rounded Rectangle 702 copy 24" class="cls-1" d="M361.691,401.707a1,1,0,0,1-1.414,0L356,397.416l-4.306,4.291a1,1,0,0,1-1.414,0,0.991,0.991,0,0,1,0-1.406l5.016-5a1.006,1.006,0,0,1,1.415,0l4.984,5A0.989,0.989,0,0,1,361.691,401.707Z" transform="translate(-350 -395.031)"></path></svg></button>' 28134 }); 28135}); 28136/* End */ 28137; 28138; /* Start:"a:4:{s:4:"full";s:63:"/bitrix/components/bitrix/search.title/script.js?16141915979847";s:6:"source";s:48:"/bitrix/components/bitrix/search.title/script.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 28139function JCTitleSearch(arParams) 28140{ 28141 var _this = this; 28142 28143 this.arParams = { 28144 'AJAX_PAGE': arParams.AJAX_PAGE, 28145 'CONTAINER_ID': arParams.CONTAINER_ID, 28146 'INPUT_ID': arParams.INPUT_ID, 28147 'MIN_QUERY_LEN': parseInt(arParams.MIN_QUERY_LEN) 28148 }; 28149 if(arParams.WAIT_IMAGE) 28150 this.arParams.WAIT_IMAGE = arParams.WAIT_IMAGE; 28151 if(arParams.MIN_QUERY_LEN <= 0) 28152 arParams.MIN_QUERY_LEN = 1; 28153 28154 this.cache = []; 28155 this.cache_key = null; 28156 28157 this.startText = ''; 28158 this.running = false; 28159 this.runningCall = false; 28160 this.currentRow = -1; 28161 this.RESULT = null; 28162 this.CONTAINER = null; 28163 this.INPUT = null; 28164 this.WAIT = null; 28165 28166 this.ShowResult = function(result) 28167 { 28168 if(BX.type.isString(result)) 28169 { 28170 _this.RESULT.innerHTML = result; 28171 } 28172 28173 _this.RESULT.style.display = _this.RESULT.innerHTML !== '' ? 'block' : 'none'; 28174 var pos = _this.adjustResultNode(); 28175 28176 //adjust left column to be an outline 28177 var res_pos; 28178 var th; 28179 var tbl = BX.findChild(_this.RESULT, {'tag':'table','class':'title-search-result'}, true); 28180 if(tbl) 28181 { 28182 th = BX.findChild(tbl, {'tag':'th'}, true); 28183 } 28184 28185 if(th) 28186 { 28187 var tbl_pos = BX.pos(tbl); 28188 tbl_pos.width = tbl_pos.right - tbl_pos.left; 28189 28190 var th_pos = BX.pos(th); 28191 th_pos.width = th_pos.right - th_pos.left; 28192 th.style.width = th_pos.width + 'px'; 28193 28194 _this.RESULT.style.width = (pos.width + th_pos.width) + 'px'; 28195 28196 //Move table to left by width of the first column 28197 _this.RESULT.style.left = (pos.left - th_pos.width - 1)+ 'px'; 28198 28199 //Shrink table when it's too wide 28200 if((tbl_pos.width - th_pos.width) > pos.width) 28201 _this.RESULT.style.width = (pos.width + th_pos.width -1) + 'px'; 28202 28203 //Check if table is too wide and shrink result div to it's width 28204 tbl_pos = BX.pos(tbl); 28205 res_pos = BX.pos(_this.RESULT); 28206 if(res_pos.right > tbl_pos.right) 28207 { 28208 _this.RESULT.style.width = (tbl_pos.right - tbl_pos.left) + 'px'; 28209 } 28210 } 28211 28212 var fade; 28213 if(tbl) fade = BX.findChild(_this.RESULT, {'class':'title-search-fader'}, true); 28214 if(fade && th) 28215 { 28216 res_pos = BX.pos(_this.RESULT); 28217 fade.style.left = (res_pos.right - res_pos.left - 18) + 'px'; 28218 fade.style.width = 18 + 'px'; 28219 fade.style.top = 0 + 'px'; 28220 fade.style.height = (res_pos.bottom - res_pos.top) + 'px'; 28221 fade.style.display = 'block'; 28222 } 28223 }; 28224 28225 this.onKeyPress = function(keyCode) 28226 { 28227 var tbl = BX.findChild(_this.RESULT, {'tag':'table','class':'title-search-result'}, true); 28228 if(!tbl) 28229 return false; 28230 28231 var i; 28232 var cnt = tbl.rows.length; 28233 28234 switch (keyCode) 28235 { 28236 case 27: // escape key - close search div 28237 _this.RESULT.style.display = 'none'; 28238 _this.currentRow = -1; 28239 _this.UnSelectAll(); 28240 return true; 28241 28242 case 40: // down key - navigate down on search results 28243 if(_this.RESULT.style.display == 'none') 28244 _this.RESULT.style.display = 'block'; 28245 28246 var first = -1; 28247 for(i = 0; i < cnt; i++) 28248 { 28249 if(!BX.findChild(tbl.rows[i], {'class':'title-search-separator'}, true)) 28250 { 28251 if(first == -1) 28252 first = i; 28253 28254 if(_this.currentRow < i) 28255 { 28256 _this.currentRow = i; 28257 break; 28258 } 28259 else if(tbl.rows[i].className == 'title-search-selected') 28260 { 28261 tbl.rows[i].className = ''; 28262 } 28263 } 28264 } 28265 28266 if(i == cnt && _this.currentRow != i) 28267 _this.currentRow = first; 28268 28269 tbl.rows[_this.currentRow].className = 'title-search-selected'; 28270 return true; 28271 28272 case 38: // up key - navigate up on search results 28273 if(_this.RESULT.style.display == 'none') 28274 _this.RESULT.style.display = 'block'; 28275 28276 var last = -1; 28277 for(i = cnt-1; i >= 0; i--) 28278 { 28279 if(!BX.findChild(tbl.rows[i], {'class':'title-search-separator'}, true)) 28280 { 28281 if(last == -1) 28282 last = i; 28283 28284 if(_this.currentRow > i) 28285 { 28286 _this.currentRow = i; 28287 break; 28288 } 28289 else if(tbl.rows[i].className == 'title-search-selected') 28290 { 28291 tbl.rows[i].className = ''; 28292 } 28293 } 28294 } 28295 28296 if(i < 0 && _this.currentRow != i) 28297 _this.currentRow = last; 28298 28299 tbl.rows[_this.currentRow].className = 'title-search-selected'; 28300 return true; 28301 28302 case 13: // enter key - choose current search result 28303 if(_this.RESULT.style.display == 'block') 28304 { 28305 for(i = 0; i < cnt; i++) 28306 { 28307 if(_this.currentRow == i) 28308 { 28309 if(!BX.findChild(tbl.rows[i], {'class':'title-search-separator'}, true)) 28310 { 28311 var a = BX.findChild(tbl.rows[i], {'tag':'a'}, true); 28312 if(a) 28313 { 28314 window.location = a.href; 28315 return true; 28316 } 28317 } 28318 } 28319 } 28320 } 28321 return false;
28322 } 28323 28324 return false; 28325 }; 28326 28327 this.onTimeout = function() 28328 { 28329 _this.onChange(function(){ 28330 setTimeout(_this.onTimeout, 500); 28331 }); 28332 }; 28333 28334 this.onChange = function(callback) 28335 { 28336 if (_this.running) 28337 { 28338 _this.runningCall = true; 28339 return; 28340 } 28341 _this.running = true; 28342 28343 if(_this.INPUT.value != _this.oldValue && _this.INPUT.value != _this.startText) 28344 { 28345 _this.oldValue = _this.INPUT.value; 28346 if(_this.INPUT.value.length >= _this.arParams.MIN_QUERY_LEN) 28347 { 28348 _this.cache_key = _this.arParams.INPUT_ID + '|' + _this.INPUT.value; 28349 if(_this.cache[_this.cache_key] == null) 28350 { 28351 if(_this.WAIT) 28352 { 28353 var pos = BX.pos(_this.INPUT); 28354 var height = (pos.bottom - pos.top)-2; 28355 _this.WAIT.style.top = (pos.top+1) + 'px'; 28356 _this.WAIT.style.height = height + 'px'; 28357 _this.WAIT.style.width = height + 'px'; 28358 _this.WAIT.style.left = (pos.right - height + 2) + 'px'; 28359 _this.WAIT.style.display = 'block'; 28360 } 28361 28362 BX.ajax.post( 28363 _this.arParams.AJAX_PAGE, 28364 { 28365 'ajax_call':'y', 28366 'INPUT_ID':_this.arParams.INPUT_ID, 28367 'q':_this.INPUT.value, 28368 'l':_this.arParams.MIN_QUERY_LEN 28369 }, 28370 function(result) 28371 { 28372 _this.cache[_this.cache_key] = result; 28373 _this.ShowResult(result); 28374 _this.currentRow = -1; 28375 _this.EnableMouseEvents(); 28376 if(_this.WAIT) 28377 _this.WAIT.style.display = 'none'; 28378 if (!!callback) 28379 callback(); 28380 _this.running = false; 28381 if (_this.runningCall) 28382 { 28383 _this.runningCall = false; 28384 _this.onChange(); 28385 } 28386 } 28387 ); 28388 return; 28389 } 28390 else 28391 { 28392 _this.ShowResult(_this.cache[_this.cache_key]); 28393 _this.currentRow = -1; 28394 _this.EnableMouseEvents(); 28395 } 28396 } 28397 else 28398 { 28399 _this.RESULT.style.display = 'none'; 28400 _this.currentRow = -1; 28401 _this.UnSelectAll(); 28402 } 28403 } 28404 if (!!callback) 28405 callback(); 28406 _this.running = false; 28407 }; 28408 28409 this.onScroll = function () 28410 { 28411 if(BX.type.isElementNode(_this.RESULT) 28412 && _this.RESULT.style.display !== "none" 28413 && _this.RESULT.innerHTML !== '' 28414 ) 28415 { 28416 _this.adjustResultNode(); 28417 } 28418 }; 28419 28420 this.UnSelectAll = function() 28421 { 28422 var tbl = BX.findChild(_this.RESULT, {'tag':'table','class':'title-search-result'}, true); 28423 if(tbl) 28424 { 28425 var cnt = tbl.rows.length; 28426 for(var i = 0; i < cnt; i++) 28427 tbl.rows[i].className = ''; 28428 } 28429 }; 28430 28431 this.EnableMouseEvents = function() 28432 { 28433 var tbl = BX.findChild(_this.RESULT, {'tag':'table','class':'title-search-result'}, true); 28434 if(tbl) 28435 { 28436 var cnt = tbl.rows.length; 28437 for(var i = 0; i < cnt; i++) 28438 if(!BX.findChild(tbl.rows[i], {'class':'title-search-separator'}, true)) 28439 { 28440 tbl.rows[i].id = 'row_' + i; 28441 tbl.rows[i].onmouseover = function (e) { 28442 if(_this.currentRow != this.id.substr(4)) 28443 { 28444 _this.UnSelectAll(); 28445 this.className = 'title-search-selected'; 28446 _this.currentRow = this.id.substr(4); 28447 } 28448 }; 28449 tbl.rows[i].onmouseout = function (e) { 28450 this.className = ''; 28451 _this.currentRow = -1; 28452 }; 28453 } 28454 } 28455 }; 28456 28457 this.onFocusLost = function(hide) 28458 { 28459 setTimeout(function(){_this.RESULT.style.display = 'none';}, 250); 28460 }; 28461 28462 this.onFocusGain = function() 28463 { 28464 if(_this.RESULT.innerHTML.length) 28465 _this.ShowResult(); 28466 }; 28467 28468 this.onKeyDown = function(e) 28469 { 28470 if(!e) 28471 e = window.event; 28472 28473 if (_this.RESULT.style.display == 'block') 28474 { 28475 if(_this.onKeyPress(e.keyCode)) 28476 return BX.PreventDefault(e); 28477 } 28478 }; 28479 28480 this.adjustResultNode = function() 28481 { 28482 if(!(BX.type.isElementNode(_this.RESULT) 28483 && BX.type.isElementNode(_this.CONTAINER)) 28484 ) 28485 { 28486 return { top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0 }; 28487 } 28488 28489 var pos = BX.pos(_this.CONTAINER); 28490 28491 _this.RESULT.style.position = 'absolute'; 28492 _this.RESULT.style.top = (pos.bottom + 2) + 'px'; 28493 _this.RESULT.style.left = pos.left + 'px'; 28494 _this.RESULT.style.width = pos.width + 'px'; 28495 28496 return pos; 28497 }; 28498 28499 this._onContainerLayoutChange = function() 28500 { 28501 if(BX.type.isElementNode(_this.RESULT) 28502 && _this.RESULT.style.display !== "none" 28503 && _this.RESULT.innerHTML !== '' 28504 ) 28505 { 28506 _this.adjustResultNode(); 28507 } 28508 }; 28509 this.Init = function() 28510 { 28511 this.CONTAINER = document.getElementById(this.arParams.CONTAINER_ID); 28512 BX.addCustomEvent(this.CONTAINER, "OnNodeLayoutChange", this._onContainerLayoutChange); 28513 28514 this.RESULT = document.body.appendChild(document.createElement("DIV")); 28515 this.RESULT.className = 'title-search-result'; 28516 this.INPUT = document.getElementById(this.arParams.INPUT_ID); 28517 this.startText = this.oldValue = this.INPUT.value; 28518 BX.bind(this.INPUT, 'focus', function() {_this.onFocusGain()}); 28519 BX.bind(this.INPUT, 'blur', function() {_this.onFocusLost()}); 28520 this.INPUT.onkeydown = this.onKeyDown; 28521 28522 if(this.arParams.WAIT_IMAGE) 28523 { 28524 this.WAIT = document.body.appendChild(document.createElement("DIV")); 28525 this.WAIT.style.backgroundImage = "url('" + this.arParams.WAIT_IMAGE + "')"; 28526 if(!BX.browser.IsIE()) 28527 this.WAIT.style.backgroundRepeat = 'none'; 28528 this.WAIT.style.display = 'none'; 28529 this.WAIT.style.position = 'absolute'; 28530 this.WAIT.style.zIndex = '1100'; 28531 } 28532 28533 BX.bind(this.INPUT, 'bxchange', function() {_this.onChange()}); 28534 28535 var fixedParent = BX.findParent(this.CONTAINER, BX.is_fixed); 28536 if(BX.type.isElementNode(fixedParent)) 28537 { 28538 BX.bind(window, 'scroll', BX.throttle(this.onScroll, 100, this)); 28539 } 28540 }; 28541 BX.ready(function (){_this.Init(arParams)}); 28542} 28543 28544/* End */ 28545; 28546; /* Start:"a:4:{s:4:"full";s:93:"/local/templates/aspro_max/components/bitrix/search.title/mega_menu/script.js?165235598410313";s:6:"source";s:77:"/local/templates/aspro_max/components/bitrix/search.title/mega_menu/script.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 28547$(document).ready(function(){ 28548 var containerHTML = $('.title-search-input_mega_menu').detach(); 28549 $('#title-search_mega_menu').append(containerHTML); 28550}); 28551 28552function JCTitleSearch3(arParams) 28553{ 28554 var _this = this; 28555 28556 this.arParams = {
28557 'AJAX_PAGE': arParams.AJAX_PAGE, 28558 'CONTAINER_ID': arParams.CONTAINER_ID, 28559 'INPUT_ID': arParams.INPUT_ID, 28560 'MIN_QUERY_LEN': parseInt(arParams.MIN_QUERY_LEN) 28561 }; 28562 if(arParams.WAIT_IMAGE) 28563 this.arParams.WAIT_IMAGE = arParams.WAIT_IMAGE; 28564 if(arParams.MIN_QUERY_LEN <= 0) 28565 arParams.MIN_QUERY_LEN = 1; 28566 28567 this.cache = []; 28568 this.cache_key = null; 28569 28570 this.startText = ''; 28571 this.running = false; 28572 this.needRunAgain = false; 28573 this.currentRow = -1; 28574 this.RESULT = null; 28575 this.CONTAINER = null; 28576 this.INPUT = null; 28577 this.WAIT = null; 28578 28579 this.ShowResult = function(result) 28580 { 28581 if(BX.type.isString(result)) 28582 { 28583 _this.RESULT.innerHTML = result; 28584 } 28585 28586 _this.RESULT.style.display = _this.RESULT.innerHTML !== '' ? 'block' : 'none'; 28587 var pos = _this.adjustResultNode(); 28588 28589 //adjust left column to be an outline 28590 var res_pos; 28591 var th; 28592 var tbl = BX.findChild(_this.RESULT, {'tag':'table','class':'title-search-result'}, true); 28593 if(tbl) 28594 { 28595 th = BX.findChild(tbl, {'tag':'th'}, true); 28596 } 28597 if(th) 28598 { 28599 var tbl_pos = BX.pos(tbl); 28600 tbl_pos.width = tbl_pos.right - tbl_pos.left; 28601 28602 var th_pos = BX.pos(th); 28603 th_pos.width = th_pos.right - th_pos.left; 28604 th.style.width = th_pos.width + 'px'; 28605 28606 _this.RESULT.style.width = (pos.width + th_pos.width) + 'px'; 28607 28608 //Move table to left by width of the first column 28609 _this.RESULT.style.left = (pos.left - th_pos.width - 1)+ 'px'; 28610 28611 //Shrink table when it's too wide 28612 if((tbl_pos.width - th_pos.width) > pos.width) 28613 _this.RESULT.style.width = (pos.width + th_pos.width -1) + 'px'; 28614 28615 //Check if table is too wide and shrink result div to it's width 28616 tbl_pos = BX.pos(tbl); 28617 res_pos = BX.pos(_this.RESULT); 28618 if(res_pos.right > tbl_pos.right) 28619 { 28620 _this.RESULT.style.width = (tbl_pos.right - tbl_pos.left) + 'px'; 28621 } 28622 } 28623 28624 var fade; 28625 if(tbl) fade = BX.findChild(_this.RESULT, {'class':'title-search-fader'}, true); 28626 if(fade && th) 28627 { 28628 res_pos = BX.pos(_this.RESULT); 28629 fade.style.left = (res_pos.right - res_pos.left - 18) + 'px'; 28630 fade.style.width = 18 + 'px'; 28631 fade.style.top = 0 + 'px'; 28632 fade.style.height = (res_pos.bottom - res_pos.top) + 'px'; 28633 fade.style.display = 'block'; 28634 } 28635 28636 28637 $('.bx_searche.scrollbar').mCustomScrollbar({ 28638 mouseWheel: { 28639 scrollAmount: 150, 28640 preventDefault: true 28641 } 28642 }); 28643 }; 28644 28645 this.onKeyPress = function(keyCode) 28646 { 28647 var tbl = BX.findChild(_this.RESULT, {'tag':'table','class':'title-search-result'}, true); 28648 if(!tbl) 28649 return false; 28650 28651 var i; 28652 var cnt = tbl.rows.length; 28653 28654 switch (keyCode) 28655 { 28656 case 27: // escape key - close search div 28657 _this.RESULT.style.display = 'none'; 28658 _this.currentRow = -1; 28659 _this.UnSelectAll(); 28660 return true; 28661 28662 case 40: // down key - navigate down on search results 28663 if(_this.RESULT.style.display == 'none') 28664 _this.RESULT.style.display = 'block'; 28665 28666 var first = -1; 28667 for(i = 0; i < cnt; i++) 28668 { 28669 if(!BX.findChild(tbl.rows[i], {'class':'title-search-separator'}, true)) 28670 { 28671 if(first == -1) 28672 first = i; 28673 28674 if(_this.currentRow < i) 28675 { 28676 _this.currentRow = i; 28677 break; 28678 } 28679 else if(tbl.rows[i].className == 'title-search-selected') 28680 { 28681 tbl.rows[i].className = ''; 28682 } 28683 } 28684 } 28685 28686 if(i == cnt && _this.currentRow != i) 28687 _this.currentRow = first; 28688 28689 tbl.rows[_this.currentRow].className = 'title-search-selected'; 28690 return true; 28691 28692 case 38: // up key - navigate up on search results 28693 if(_this.RESULT.style.display == 'none') 28694 _this.RESULT.style.display = 'block'; 28695 28696 var last = -1; 28697 for(i = cnt-1; i >= 0; i--) 28698 { 28699 if(!BX.findChild(tbl.rows[i], {'class':'title-search-separator'}, true)) 28700 { 28701 if(last == -1) 28702 last = i; 28703 28704 if(_this.currentRow > i) 28705 { 28706 _this.currentRow = i; 28707 break; 28708 } 28709 else if(tbl.rows[i].className == 'title-search-selected') 28710 { 28711 tbl.rows[i].className = ''; 28712 } 28713 } 28714 } 28715 28716 if(i < 0 && _this.currentRow != i) 28717 _this.currentRow = last; 28718 28719 tbl.rows[_this.currentRow].className = 'title-search-selected'; 28720 return true; 28721 28722 case 13: // enter key - choose current search result 28723 if(_this.RESULT.style.display == 'block') 28724 { 28725 for(i = 0; i < cnt; i++) 28726 { 28727 if(_this.currentRow == i) 28728 { 28729 if(!BX.findChild(tbl.rows[i], {'class':'title-search-separator'}, true)) 28730 { 28731 var a = BX.findChild(tbl.rows[i], {'tag':'a'}, true); 28732 if(a) 28733 { 28734 window.location = a.href; 28735 return true; 28736 } 28737 } 28738 } 28739 } 28740 } 28741 return false;
28742 } 28743 28744 return false; 28745 }; 28746 28747 this.onTimeout = function() 28748 { 28749 _this.onChange(function(){ 28750 setTimeout(_this.onTimeout, 500); 28751 }); 28752 }; 28753 28754 this.onChange = function(callback) 28755 { 28756 if (_this.running) { 28757 _this.needRunAgain = true; 28758 return; 28759 } 28760 _this.running = true; 28761 28762 if(_this.INPUT.value != _this.oldValue && _this.INPUT.value != _this.startText) 28763 { 28764 _this.oldValue = _this.INPUT.value; 28765 if(_this.INPUT.value.length >= _this.arParams.MIN_QUERY_LEN) 28766 { 28767 _this.cache_key = _this.arParams.INPUT_ID + '|' + _this.INPUT.value; 28768 if(_this.cache[_this.cache_key] == null) 28769 { 28770 if(_this.WAIT) 28771 { 28772 var pos = BX.pos(_this.INPUT); 28773 var height = (pos.bottom - pos.top)-2; 28774 _this.WAIT.style.top = (pos.top+1) + 'px'; 28775 _this.WAIT.style.height = height + 'px'; 28776 _this.WAIT.style.width = height + 'px'; 28777 _this.WAIT.style.left = (pos.right - height + 2) + 'px'; 28778 _this.WAIT.style.display = 'block'; 28779 } 28780 28781 BX.ajax.post( 28782 _this.arParams.AJAX_PAGE, 28783 { 28784 'ajax_call':'y', 28785 'INPUT_ID':_this.arParams.INPUT_ID, 28786 'q':_this.INPUT.value, 28787 'l':_this.arParams.MIN_QUERY_LEN 28788 }, 28789 function(result) 28790 { 28791 _this.cache[_this.cache_key] = result; 28792 _this.ShowResult(result); 28793 _this.currentRow = -1; 28794 _this.EnableMouseEvents(); 28795 if(_this.WAIT) 28796 _this.WAIT.style.display = 'none'; 28797 if (!!callback) 28798 callback(); 28799 _this.running = false; 28800 28801 if(_this.needRunAgain){ 28802 _this.needRunAgain = false; 28803 _this.onChange(callback); 28804 } 28805 } 28806 ); 28807 return; 28808 } 28809 else 28810 { 28811 _this.ShowResult(_this.cache[_this.cache_key]); 28812 _this.currentRow = -1; 28813 _this.EnableMouseEvents(); 28814 } 28815 } 28816 else 28817 { 28818 _this.RESULT.style.display = 'none'; 28819 _this.currentRow = -1; 28820 _this.UnSelectAll(); 28821 } 28822 } 28823 if (!!callback) 28824 callback(); 28825 _this.running = false; 28826 }; 28827 28828 this.UnSelectAll = function() 28829 { 28830 var tbl = BX.findChild(_this.RESULT, {'tag':'table','class':'title-search-result'}, true); 28831 if(tbl) 28832 { 28833 var cnt = tbl.rows.length; 28834 for(var i = 0; i < cnt; i++) 28835 tbl.rows[i].className = ''; 28836 } 28837 }; 28838 28839 this.EnableMouseEvents = function() 28840 { 28841 var tbl = BX.findChild(_this.RESULT, {'tag':'table','class':'title-search-result'}, true); 28842 if(tbl) 28843 { 28844 var cnt = tbl.rows.length; 28845 for(var i = 0; i < cnt; i++) 28846 if(!BX.findChild(tbl.rows[i], {'class':'title-search-separator'}, true)) 28847 { 28848 tbl.rows[i].id = 'row_' + i; 28849 tbl.rows[i].onmouseover = function (e) { 28850 if(_this.currentRow != this.id.substr(4)) 28851 { 28852 _this.UnSelectAll(); 28853 this.className = 'title-search-selected'; 28854 _this.currentRow = this.id.substr(4); 28855 } 28856 }; 28857 tbl.rows[i].onmouseout = function (e) { 28858 this.className = ''; 28859 _this.currentRow = -1; 28860 }; 28861 } 28862 } 28863 }; 28864 28865 this.onFocusLost = function(hide) 28866 { 28867 setTimeout(function(){_this.RESULT.style.display = 'none';}, 250); 28868 //_this.RESULT.style.display = 'none'; 28869 }; 28870 28871 this.onFocusGain = function() 28872 { 28873 if(_this.RESULT.innerHTML.length) 28874 _this.ShowResult(); 28875 }; 28876 28877 this.onKeyDown = function(e) 28878 { 28879 if(!e) 28880 e = window.event; 28881 28882 if (_this.RESULT.style.display == 'block') 28883 { 28884 if(_this.onKeyPress(e.keyCode)) 28885 return BX.PreventDefault(e); 28886 } 28887 28888 $('.title-search-result.'+_this.arParams.INPUT_ID).removeClass('closed'); 28889 }; 28890 28891 this.adjustResultNode = function() 28892 { 28893 var pos, pos_input; 28894 var fixedParent = BX.findParent(_this.CONTAINER, BX.is_fixed); 28895 /*if(!!fixedParent) 28896 { 28897 _this.RESULT.style.position = 'fixed'; 28898 _this.RESULT.style.zIndex = BX.style(fixedParent, 'z-index') + 2; 28899 pos = BX.pos(_this.CONTAINER, true); 28900 } 28901 else 28902 {*/ 28903 _this.RESULT.style.position = 'absolute'; 28904 pos = BX.pos(_this.CONTAINER, true); 28905 //} 28906 pos_input = BX.pos(_this.INPUT); 28907 28908 pos.width = pos.right - pos.left; 28909 _this.RESULT.style.top = (pos.bottom + 2) + 'px'; 28910 //_this.RESULT.style.left = pos_input.left + 'px'; 28911 _this.RESULT.style.left = 0 + 'px'; 28912 28913 if($(_this.INPUT).closest('.inline-search-block.with-close').length) 28914 _this.RESULT.style.width = pos_input.width + 'px'; 28915 else 28916 _this.RESULT.style.width = pos.width + 'px'; 28917 return pos; 28918 }; 28919 28920 this._onContainerLayoutChange = function() 28921 { 28922 if(_this.RESULT.style.display !== "none" && _this.RESULT.innerHTML !== '') 28923 { 28924 _this.adjustResultNode(); 28925 } 28926 }; 28927 this.Init = function() 28928 { 28929 this.CONTAINER = document.getElementById(this.arParams.CONTAINER_ID); 28930 BX.addCustomEvent(this.CONTAINER, "OnNodeLayoutChange", this._onContainerLayoutChange); 28931 28932 this.RESULT = document.body.appendChild(document.createElement("DIV")); 28933 28934 this.RESULT.className = 'title-search-result '+this.arParams.INPUT_ID; 28935 this.INPUT = document.getElementById(this.arParams.INPUT_ID); 28936 this.startText = this.oldValue = this.INPUT.value; 28937 BX.bind(this.INPUT, 'focus', function() {_this.onFocusGain()}); 28938 BX.bind(this.INPUT, 'blur', function() {_this.onFocusLost()}); 28939 28940 if(BX.browser.IsSafari() || BX.browser.IsIE()) 28941 this.INPUT.onkeydown = this.onKeyDown; 28942 else 28943 this.INPUT.onkeypress = this.onKeyDown; 28944 28945 if(this.arParams.WAIT_IMAGE) 28946 { 28947 this.WAIT = document.body.appendChild(document.createElement("DIV")); 28948 this.WAIT.style.backgroundImage = "url('" + this.arParams.WAIT_IMAGE + "')"; 28949 if(!BX.browser.IsIE()) 28950 this.WAIT.style.backgroundRepeat = 'none'; 28951 this.WAIT.style.display = 'none'; 28952 this.WAIT.style.position = 'absolute'; 28953 this.WAIT.style.zIndex = '1100'; 28954 } 28955 28956 BX.bind(this.INPUT, 'bxchange', function() {_this.onChange()}); 28957 }; 28958 BX.ready(function (){_this.Init(arParams)}); 28959} 28960 28961/* End */ 28962; 28963; /* Start:"a:4:{s:4:"full";s:88:"/local/templates/aspro_max/components/bitrix/menu/menu_in_burger/script.js?1652356030201";s:6:"source";s:74:"/local/templates/aspro_max/components/bitrix/menu/menu_in_burger/script.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 28964$(document).ready(function(){ 28965 $('.menu-row .mega-menu table td.wide_menu .dropdown-menu > .customScrollbar').mCustomScrollbar({ 28966 mouseWheel: { 28967 scrollAmount: 150, 28968 preventDefault: true 28969 } 28970 }) 28971}) 28972/* End */ 28973; 28974; /* Start:"a:4:{s:4:"full";s:88:"/local/templates/aspro_max/components/bitrix/search.title/corp/script.
28974js?165235598910607";s:6:"source";s:72:"/local/templates/aspro_max/components/bitrix/search.title/corp/script.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 28975$(document).ready(function(){ 28976 var containerHTML = $('.title-search-input_fixed').detach(); 28977 $('#title-search_fixed').append(containerHTML); 28978}); 28979 28980$(document).ready(function(){ 28981 var containerHTML = $('.title-search-input_fixedtf').detach(); 28982 $('#title-search_fixedtf').append(containerHTML); 28983}); 28984 28985$(document).ready(function(){ 28986 var containerHTML = $('.title-search-input').detach(); 28987 $('#title-search').append(containerHTML); 28988}); 28989 28990 28991 28992function JCTitleSearch4(arParams) 28993{ 28994 var _this = this; 28995 28996 this.arParams = { 28997 'AJAX_PAGE': arParams.AJAX_PAGE, 28998 'CONTAINER_ID': arParams.CONTAINER_ID, 28999 'INPUT_ID': arParams.INPUT_ID, 29000 'INPUT_ID_TMP': arParams.INPUT_ID_TMP, 29001 'MIN_QUERY_LEN': parseInt(arParams.MIN_QUERY_LEN) 29002 }; 29003 29004 if(arParams.WAIT_IMAGE) 29005 this.arParams.WAIT_IMAGE = arParams.WAIT_IMAGE; 29006 if(arParams.MIN_QUERY_LEN <= 0) 29007 arParams.MIN_QUERY_LEN = 1; 29008 29009 this.cache = []; 29010 this.cache_key = null; 29011 29012 this.startText = ''; 29013 this.running = false; 29014 this.needRunAgain = false; 29015 this.currentRow = -1; 29016 this.RESULT = null; 29017 this.CONTAINER = null; 29018 this.INPUT = null; 29019 this.WAIT = null; 29020 29021 this.ShowResult = function(result) 29022 { 29023 if(BX.type.isString(result)) 29024 { 29025 _this.RESULT.innerHTML = result; 29026 } 29027 29028 _this.RESULT.style.display = _this.RESULT.innerHTML !== '' ? 'block' : 'none'; 29029 var pos = _this.adjustResultNode(); 29030 29031 //adjust left column to be an outline 29032 var res_pos; 29033 var th; 29034 var tbl = BX.findChild(_this.RESULT, {'tag':'table','class':'title-search-result'}, true); 29035 if(tbl) 29036 { 29037 th = BX.findChild(tbl, {'tag':'th'}, true); 29038 } 29039 29040 if(th) 29041 { 29042 var tbl_pos = BX.pos(tbl); 29043 tbl_pos.width = tbl_pos.right - tbl_pos.left; 29044 29045 var th_pos = BX.pos(th); 29046 th_pos.width = th_pos.right - th_pos.left; 29047 th.style.width = th_pos.width + 'px'; 29048 29049 _this.RESULT.style.width = (pos.width + th_pos.width) + 'px'; 29050 29051 //Move table to left by width of the first column 29052 _this.RESULT.style.left = '0px';//(pos.left - th_pos.width - 1)+ 'px'; 29053 29054 //Shrink table when it's too wide 29055 if((tbl_pos.width - th_pos.width) > pos.width) 29056 _this.RESULT.style.width = (pos.width + th_pos.width -1) + 'px'; 29057 29058 //Check if table is too wide and shrink result div to it's width 29059 tbl_pos = BX.pos(tbl); 29060 res_pos = BX.pos(_this.RESULT); 29061 if(res_pos.right > tbl_pos.right) 29062 { 29063 _this.RESULT.style.width = (tbl_pos.right - tbl_pos.left) + 'px'; 29064 } 29065 } 29066 29067 var fade; 29068 if(tbl) fade = BX.findChild(_this.RESULT, {'class':'title-search-fader'}, true); 29069 if(fade && th) 29070 { 29071 res_pos = BX.pos(_this.RESULT); 29072 fade.style.left = (res_pos.right - res_pos.left - 18) + 'px'; 29073 fade.style.width = 18 + 'px'; 29074 fade.style.top = 0 + 'px'; 29075 fade.style.height = (res_pos.bottom - res_pos.top) + 'px'; 29076 fade.style.display = 'block'; 29077 } 29078 29079 29080 $('.bx_searche.scrollbar').mCustomScrollbar({ 29081 mouseWheel: { 29082 scrollAmount: 150, 29083 preventDefault: true 29084 } 29085 }); 29086 }; 29087 29088 this.onKeyPress = function(keyCode) 29089 { 29090 var tbl = BX.findChild(_this.RESULT, {'tag':'table','class':'title-search-result'}, true); 29091 if(!tbl) 29092 return false; 29093 29094 var i; 29095 var cnt = tbl.rows.length; 29096 29097 switch (keyCode) 29098 { 29099 case 27: // escape key - close search div 29100 _this.RESULT.style.display = 'none'; 29101 _this.currentRow = -1; 29102 _this.UnSelectAll(); 29103 return true; 29104 29105 case 40: // down key - navigate down on search results 29106 if(_this.RESULT.style.display == 'none') 29107 _this.RESULT.style.display = 'block'; 29108 29109 var first = -1; 29110 for(i = 0; i < cnt; i++) 29111 { 29112 if(!BX.findChild(tbl.rows[i], {'class':'title-search-separator'}, true)) 29113 { 29114 if(first == -1) 29115 first = i; 29116 29117 if(_this.currentRow < i) 29118 { 29119 _this.currentRow = i; 29120 break; 29121 } 29122 else if(tbl.rows[i].className == 'title-search-selected') 29123 { 29124 tbl.rows[i].className = ''; 29125 } 29126 } 29127 } 29128 29129 if(i == cnt && _this.currentRow != i) 29130 _this.currentRow = first; 29131 29132 tbl.rows[_this.currentRow].className = 'title-search-selected'; 29133 return true; 29134 29135 case 38: // up key - navigate up on search results 29136 if(_this.RESULT.style.display == 'none') 29137 _this.RESULT.style.display = 'block'; 29138 29139 var last = -1; 29140 for(i = cnt-1; i >= 0; i--) 29141 { 29142 if(!BX.findChild(tbl.rows[i], {'class':'title-search-separator'}, true)) 29143 { 29144 if(last == -1) 29145 last = i; 29146 29147 if(_this.currentRow > i) 29148 { 29149 _this.currentRow = i; 29150 break; 29151 } 29152 else if(tbl.rows[i].className == 'title-search-selected') 29153 { 29154 tbl.rows[i].className = ''; 29155 } 29156 } 29157 } 29158 29159 if(i < 0 && _this.currentRow != i) 29160 _this.currentRow = last; 29161 29162 tbl.rows[_this.currentRow].className = 'title-search-selected'; 29163 return true; 29164 29165 case 13: // enter key - choose current search result 29166 if(_this.RESULT.style.display == 'block') 29167 { 29168 for(i = 0; i < cnt; i++) 29169 { 29170 if(_this.currentRow == i) 29171 { 29172 if(!BX.findChild(tbl.rows[i], {'class':'title-search-separator'}, true)) 29173 { 29174 var a = BX.findChild(tbl.rows[i], {'tag':'a'}, true); 29175 if(a) 29176 { 29177 window.location = a.href; 29178 return true; 29179 } 29180 } 29181 } 29182 } 29183 } 29184 return false;
29185 } 29186 29187 return false; 29188 }; 29189 29190 this.onTimeout = function() 29191 { 29192 _this.onChange(function(){ 29193 setTimeout(_this.onTimeout, 500); 29194 }); 29195 }; 29196 29197 this.onChange = function(callback) 29198 { 29199 if (_this.running){ 29200 _this.needRunAgain = true; 29201 return; 29202 } 29203 _this.running = true; 29204 29205 if(_this.INPUT.value != _this.oldValue && _this.INPUT.value != _this.startText) 29206 { 29207 _this.oldValue = _this.INPUT.value; 29208 if(_this.INPUT.value.length >= _this.arParams.MIN_QUERY_LEN) 29209 { 29210 _this.cache_key = _this.arParams.INPUT_ID + '|' + _this.INPUT.value; 29211 if(_this.cache[_this.cache_key] == null) 29212 { 29213 if(_this.WAIT) 29214 { 29215 var pos = BX.pos(_this.INPUT); 29216 var height = (pos.bottom - pos.top)-2; 29217 _this.WAIT.style.top = (pos.top+1) + 'px'; 29218 _this.WAIT.style.height = height + 'px'; 29219 _this.WAIT.style.width = height + 'px'; 29220 _this.WAIT.style.left = (pos.right - height + 2) + 'px'; 29221 _this.WAIT.style.display = 'block'; 29222 } 29223 29224 BX.ajax.post( 29225 _this.arParams.AJAX_PAGE, 29226 { 29227 'ajax_call':'y', 29228 'INPUT_ID':_this.arParams.INPUT_ID_TMP, 29229 'q':_this.INPUT.value, 29230 'l':_this.arParams.MIN_QUERY_LEN 29231 }, 29232 function(result) 29233 { 29234 _this.cache[_this.cache_key] = result; 29235 _this.ShowResult(result); 29236 _this.currentRow = -1; 29237 _this.EnableMouseEvents(); 29238 if(_this.WAIT) 29239 _this.WAIT.style.display = 'none'; 29240 if (!!callback) 29241 callback(); 29242 _this.running = false; 29243 29244 if(_this.needRunAgain){ 29245 _this.needRunAgain = false; 29246 _this.onChange(callback); 29247 } 29248 } 29249 ); 29250 return; 29251 } 29252 else 29253 { 29254 _this.ShowResult(_this.cache[_this.cache_key]); 29255 _this.currentRow = -1; 29256 _this.EnableMouseEvents(); 29257 } 29258 } 29259 else 29260 { 29261 _this.RESULT.style.display = 'none'; 29262 _this.currentRow = -1; 29263 _this.UnSelectAll(); 29264 } 29265 } 29266 if (!!callback) 29267 callback(); 29268 _this.running = false; 29269 }; 29270 29271 this.UnSelectAll = function() 29272 { 29273 var tbl = BX.findChild(_this.RESULT, {'tag':'table','class':'title-search-result'}, true); 29274 if(tbl) 29275 { 29276 var cnt = tbl.rows.length; 29277 for(var i = 0; i < cnt; i++) 29278 tbl.rows[i].className = ''; 29279 } 29280 }; 29281 29282 this.EnableMouseEvents = function() 29283 { 29284 var tbl = BX.findChild(_this.RESULT, {'tag':'table','class':'title-search-result'}, true); 29285 if(tbl) 29286 { 29287 var cnt = tbl.rows.length; 29288 for(var i = 0; i < cnt; i++) 29289 if(!BX.findChild(tbl.rows[i], {'class':'title-search-separator'}, true)) 29290 { 29291 tbl.rows[i].id = 'row_' + i; 29292 tbl.rows[i].onmouseover = function (e) { 29293 if(_this.currentRow != this.id.substr(4)) 29294 { 29295 _this.UnSelectAll(); 29296 this.className = 'title-search-selected'; 29297 _this.currentRow = this.id.substr(4); 29298 } 29299 }; 29300 tbl.rows[i].onmouseout = function (e) { 29301 this.className = ''; 29302 _this.currentRow = -1; 29303 }; 29304 } 29305 } 29306 }; 29307 29308 this.onFocusLost = function(hide) 29309 { 29310 setTimeout(function(){_this.RESULT.style.display = 'none';}, 300); 29311 // _this.RESULT.style.display = 'none'; 29312 }; 29313 29314 this.onFocusGain = function() 29315 { 29316 if(_this.RESULT.innerHTML.length) 29317 _this.ShowResult(); 29318 }; 29319 29320 this.onKeyDown = function(e) 29321 { 29322 if(!e) 29323 e = window.event; 29324 if (_this.RESULT.style.display == 'block') 29325 { 29326 if(_this.onKeyPress(e.keyCode)) 29327 return BX.PreventDefault(e); 29328 } 29329 }; 29330 29331 this.adjustResultNode = function() 29332 { 29333 var pos, pos_input; 29334 var fixedParent = BX.findParent(_this.CONTAINER, BX.is_fixed); 29335 // if(!!fixedParent) 29336 // { 29337 // _this.RESULT.style.position = 'fixed'; 29338 // _this.RESULT.style.zIndex = BX.style(fixedParent, 'z-index') + 2; 29339 // pos = BX.pos(_this.CONTAINER, true); 29340 // } 29341 // else 29342 // { 29343 _this.RESULT.style.position = 'absolute'; 29344 pos = BX.pos(_this.CONTAINER); 29345 // } 29346 pos_input = BX.pos(_this.INPUT); 29347 29348 pos.width = pos.right - pos.left; 29349 _this.RESULT.style.top = '100%'; 29350 _this.RESULT.style.left = '0px';//pos_input.left + 'px'; 29351 29352 if($(_this.INPUT).closest('.inline-search-block.with-close').length) 29353 _this.RESULT.style.width = pos_input.width + 'px'; 29354 else 29355 _this.RESULT.style.width = pos.width + 'px'; 29356 return pos; 29357 }; 29358 29359 this._onContainerLayoutChange = function() 29360 { 29361 if(_this.RESULT.style.display !== "none" && _this.RESULT.innerHTML !== '') 29362 { 29363 _this.adjustResultNode(); 29364 } 29365 }; 29366 this.Init = function() 29367 { 29368 this.CONTAINER = document.getElementById(this.arParams.CONTAINER_ID); 29369 BX.addCustomEvent(this.CONTAINER, "OnNodeLayoutChange", this._onContainerLayoutChange); 29370 29371 this.RESULT = document.body.appendChild(document.createElement("DIV")); 29372 29373 this.RESULT.className = 'title-search-result '+this.arParams.INPUT_ID; 29374 this.INPUT = document.getElementById(this.arParams.INPUT_ID); 29375 this.startText = this.oldValue = this.INPUT.value; 29376 BX.bind(this.INPUT, 'focus', function(e) { 29377 _this.onFocusGain() 29378 }); 29379 BX.bind(this.INPUT, 'blur', function(e) { 29380 if(!$(e.relatedTarget).hasClass('bx_item_block')) 29381 _this.onFocusLost(); 29382 }); 29383 29384 if(BX.browser.IsSafari() || BX.browser.IsIE()) 29385 this.INPUT.onkeydown = this.onKeyDown; 29386 else 29387 this.INPUT.onkeypress = this.onKeyDown; 29388 29389 if(this.arParams.WAIT_IMAGE) 29390 { 29391 this.WAIT = document.body.appendChild(document.createElement("DIV")); 29392 this.WAIT.style.backgroundImage = "url('" + this.arParams.WAIT_IMAGE + "')"; 29393 if(!BX.browser.IsIE()) 29394 this.WAIT.style.backgroundRepeat = 'none'; 29395 this.WAIT.style.display = 'none'; 29396 this.WAIT.style.position = 'absolute'; 29397 this.WAIT.style.zIndex = '1100'; 29398 } 29399 29400 BX.bind(this.INPUT, 'bxchange', function(e) {_this.onChange()}); 29401 }; 29402 BX.ready(function (){_this.Init(arParams)}); 29403} 29404 29405/* End */ 29406; 29407; /* Start:"a:4:{s:4:"full";s:87:"/local/templates/aspro_max/components/bitrix/menu/left_catalog/script.js?16523560083800";s:6:"source";s:72:"/local/templates/aspro_max/components/bitrix/menu/left_catalog/script.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 29408$(document).ready(function(){ 29409 $('.sidebar_menu .sidebar_menu_inner .menu-wrapper').mCustomScrollbar({ 29410 mouseWheel: { 29411 scrollAmount: 150, 29412 preventDefault: true 29413 } 29414 }) 29415
29416 $('.sidebar_menu .sidebar_menu_inner .menu-wrapper .menu_top_block .menu > li.v_hover > .dropdown-block').mCustomScrollbarDeferred({ 29417 mouseWheel: { 29418 scrollAmount: 150, 29419 preventDefault: true 29420 } 29421 }) 29422 29423 $(document).on('mouseenter', '.menu-wrapper .menu_top_block .menu > li.v_hover', function () { 29424 var _this = $(this), 29425 menu = _this.find('> .dropdown-block'), 29426 winHeight = $(window).height(); 29427 29428 menu.css('max-height', 'none'); 29429 menu.find('.mCustomScrollBox').css('max-height', 'none'); 29430 var pos = BX.pos(menu[0], true); 29431 29432 if(pos.height) 29433 { 29434 if(_this.hasClass('m_line')) 29435 { 29436 if((winHeight - pos.top) < 100) 29437 { 29438 if(winHeight < pos.bottom) 29439 { 29440 menu.removeAttr('style'); 29441 pos = BX.pos(_this.find('.dropdown-block')[0], true); 29442 menu.css('margin-top', "-" + (pos.bottom - winHeight) + "px"); 29443 pos = BX.pos(_this.find('.dropdown-block')[0], true); 29444 } 29445 else 29446 menu.css('margin-top', "-" + parseInt(_this.height()) + "px"); 29447 } 29448 else 29449 menu.css('margin-top', "-" + parseInt(_this.height()) + "px"); 29450 } 29451 } 29452 else 29453 { 29454 menu.css('max-height', 'none'); 29455 } 29456 29457 menu.velocity('stop').velocity({opacity: '1', display: 'block'}, { 29458 duration: 170, 29459 delay: 200, 29460 begin: function() { 29461 var headerFixed = $('#headerfixed.fixed'); 29462 var fixedHeight = 0; 29463 var marginTop = Number.parseInt(menu.css('margin-top')); 29464 if(headerFixed.length) { 29465 fixedHeight = headerFixed[0].getBoundingClientRect().height; 29466 } 29467 var position = menu[0].getBoundingClientRect(); 29468 if(position.y < fixedHeight) { 29469 menu.css('top', -position.y + fixedHeight - marginTop); 29470 } 29471 position = menu[0].getBoundingClientRect(); 29472 if(position.bottom > winHeight) { 29473 menu.css('bottom', '0'); 29474 if(position.height > winHeight - fixedHeight) { 29475 menu.css('top', fixedHeight - marginTop); 29476 } 29477 } 29478 }, 29479 complete: function(){ 29480 $('body').addClass('menu-hovered'); 29481 29482 if(!$('.shadow-block').length) 29483 $('<div class="shadow-block"></div>').appendTo($('body')); 29484 $('.shadow-block').velocity('stop').velocity('fadeIn', 200); 29485 } 29486 }); 29487 29488 _this.one('mouseleave', function () { 29489 29490 menu.velocity('stop').velocity({opacity: '0'}, { 29491 duration: 100, 29492 delay: 10, 29493 complete: function(){ 29494 menu.css('top', ''); 29495 menu.css('bottom', ''); 29496 $('.shadow-block').velocity('stop').velocity('transition.fadeOut', { 29497 duration: 200, 29498 // delay: 100, 29499 complete: function(){ 29500 $('body').removeClass('menu-hovered'); 29501 } 29502 }); 29503 } 29504 }); 29505 }); 29506 }); 29507 29508 /*$('.menu-wrapper .menu_top_block .menu > li.v_hover1').hover(function(e){ 29509 var _this = $(this), 29510 block = _this.find('.dropdown-block'), 29511 winHeight = $(window).height(); 29512 block.css('max-height', 'none'); 29513 block.find('.mCustomScrollBox').css('max-height', 'none'); 29514 var pos = BX.pos(block[0], true); 29515 29516 if(pos.height) 29517 { 29518 if(_this.hasClass('m_line')) 29519 { 29520 if((winHeight - pos.top) < 100) 29521 { 29522 if(winHeight < pos.bottom) 29523 { 29524 block.removeAttr('style'); 29525 pos = BX.pos(_this.find('.dropdown-block')[0], true); 29526 block.css('margin-top', "-" + (pos.bottom - winHeight) + "px"); 29527 pos = BX.pos(_this.find('.dropdown-block')[0], true); 29528 } 29529 else 29530 block.css('margin-top', "-" + parseInt(_this.height()) + "px"); 29531 } 29532 else 29533 block.css('margin-top', "-" + parseInt(_this.height()) + "px"); 29534 } 29535 if(winHeight < pos.bottom) 29536 block.css('max-height', winHeight - pos.top); 29537 block.find('.mCustomScrollBox').css('max-height', winHeight - pos.top); 29538 } 29539 else 29540 { 29541 block.css('max-height', 'none'); 29542 } 29543 })*/ 29544}) 29545/* End */ 29546; 29547; /* Start:"a:4:{s:4:"full";s:103:"/local/templates/aspro_max/components/aspro/com.banners.max/top_big_banner_3_2/script.js?16523563062987";s:6:"source";s:88:"/local/templates/aspro_max/components/aspro/com.banners.max/top_big_banner_3_2/script.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 29548function checkNavColor(slider){ 29549 var nav_color_flex = slider.find('.flex-active-slide').data('nav_color'), 29550 menu_color = slider.find('.flex-active-slide').data('text_color');
29551 if(nav_color_flex == 'dark') 29552 slider.find('.flex-control-nav').addClass('flex-dark'); 29553 else 29554 slider.find('.flex-control-nav').removeClass('flex-dark'); 29555 29556 var eventdata = {slider: slider}; 29557 BX.onCustomEvent('onSlide', [eventdata]); 29558} 29559function checkHeight(){} 29560$(document).ready(function(){ 29561 if($('.top_slider_wrapp .flexslider').length){ 29562 var config = {"controlNav": true, "animationLoop": true, "pauseOnHover" : true, "simulateTouch" : true, 'autoHeight': true}; 29563 if(typeof(arMaxOptions['THEME']) != 'undefined'){ 29564 var slideshowSpeed = Math.abs(parseInt(arMaxOptions['THEME']['BIGBANNER_SLIDESSHOWSPEED'])); 29565 var animationSpeed = Math.abs(parseInt(arMaxOptions['THEME']['BIGBANNER_ANIMATIONSPEED'])); 29566 var currentBannerIndex = 0; 29567 config["slideshow"] = (slideshowSpeed && arMaxOptions['THEME']['BIGBANNER_ANIMATIONTYPE'].length ? true : false); 29568 config["animation"] = (arMaxOptions['THEME']['BIGBANNER_ANIMATIONTYPE'] === 'FADE' ? 'fade' : 'slide'); 29569 if(animationSpeed >= 0){ 29570 config["animationSpeed"] = animationSpeed; 29571 } 29572 if(slideshowSpeed >= 0){ 29573 config["slideshowSpeed"] = slideshowSpeed; 29574 } 29575 if(arMaxOptions['THEME']['BIGBANNER_ANIMATIONTYPE'] !== 'FADE'){ 29576 config["direction"] = (arMaxOptions['THEME']['BIGBANNER_ANIMATIONTYPE'] === 'SLIDE_VERTICAL' ? 'vertical' : 'horizontal'); 29577 } 29578 if($('.top_slider_wrapp .flexslider').find('ul.slides li.box').length < 2) { 29579 config['animationLoop'] = false; 29580 } 29581 29582 if ('CURRENT_BANNER_INDEX' in arMaxOptions && arMaxOptions['CURRENT_BANNER_INDEX']) { 29583 currentBannerIndex = arMaxOptions['CURRENT_BANNER_INDEX'] - 1; 29584 if (currentBannerIndex < $('.top_slider_wrapp .flexslider .slides > li').length) { 29585 config['startAt'] = currentBannerIndex; 29586 config["slideshow"] = false; 29587 } 29588 } 29589 29590 config.start = function(slider){ 29591 checkNavColor(slider); 29592 var activeVideo = slider.find('.box.wvideo.flex-active-slide'); 29593 if(activeVideo.length) { 29594 if(activeVideo.data('video_autoplay') == '1') { 29595 BX.onCustomEvent('onSlide', [{slider: slider}] ); 29596 } 29597 } 29598 if(slider.count <= 1){ 29599 slider.find('.flex-direction-nav li').addClass('flex-disabled'); 29600 } 29601 $(slider).find('.flex-control-nav').css('opacity',1); 29602 } 29603 config.after = function(slider){ 29604 // checkNavColor(slider); 29605 InitLazyLoad(); 29606 } 29607 config.before = function(slider){ 29608 setTimeout(function(){ 29609 checkNavColor(slider); 29610 InitLazyLoad(); 29611 }, 100); 29612 } 29613 } 29614 29615 $(".top_slider_wrapp .flexslider").appear(function(){ 29616 var $this = $(this); 29617 $this.flexslider(config); 29618 }, {accX: 0, accY: 150}) 29619 } 29620 29621 checkHeight(); 29622 29623 BX.addCustomEvent('onWindowResize', function(eventdata){ 29624 try{ 29625 ignoreResize.push(true); 29626 checkHeight(); 29627 CoverPlayerHtml() 29628 } 29629 catch(e){} 29630 finally{ 29631 ignoreResize.pop(); 29632 } 29633 }) 29634}); 29635/* End */ 29636; 29637; /* Start:"a:4:{s:4:"full";s:82:"/local/templates/aspro_max/components/aspro/tabs.max/main/script.
29637js?16523562528458";s:6:"source";s:67:"/local/templates/aspro_max/components/aspro/tabs.max/main/script.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 29638$(document).ready(function(){ 29639 if(!('SelectOfferProp' in window) && typeof window.SelectOfferProp != 'function') 29640 { 29641 SelectOfferProp = function(){ 29642 // return false; 29643 var _this = $(this), 29644 obParams = {}, 29645 obSelect = {}, 29646 objUrl = parseUrlQuery(), 29647 add_url = '', 29648 container = _this.closest('.bx_catalog_item_scu'); 29649 29650 /* request params */ 29651 obParams = { 29652 'PARAMS': _this.closest('.js_wrapper_items').data('params'), 29653 'ID': container.data('offer_id'), 29654 'SITE_ID': container.data('site_id'), 29655 'LINK_ID': container.data('id')+'_'+_this.closest('.tab').data('code'), 29656 'IBLOCK_ID': container.data('offer_iblockid'), 29657 'PROPERTY_ID': container.data('propertyid'), 29658 'DEPTH': _this.closest('.item_wrapper').index(), 29659 'VALUE': _this.data('onevalue'), 29660 'CLASS': 'inner_content', 29661 'PICTURE': _this.closest('.catalog_item_wrapp').find('.thumb img').attr('src'), 29662 'ARTICLE_NAME': _this.closest('.catalog_item_wrapp').find('.article_block').data('name'), 29663 'ARTICLE_VALUE': _this.closest('.catalog_item_wrapp').find('.article_block').data('value'), 29664 } 29665 /**/ 29666 29667 if("clear_cache" in objUrl) 29668 { 29669 if(objUrl.clear_cache == "Y") 29670 add_url += "?clear_cache=Y"; 29671 } 29672 29673 /* save selected values */ 29674 for (i = 0; i < obParams.DEPTH+1; i++) 29675 { 29676 strName = 'PROP_'+container.find('.item_wrapper:eq('+i+') > div').data('id'); 29677 obSelect[strName] = container.find('.item_wrapper:eq('+i+') li.item.active').data('onevalue'); 29678 obParams[strName] = container.find('.item_wrapper:eq('+i+') li.item.active').data('onevalue'); 29679 } 29680 29681 // obParams.SELECTED = JSON.stringify(obSelect); 29682 /**/ 29683 29684 _this.siblings().removeClass('active'); 29685 _this.addClass('active'); 29686 29687 if(_this.attr('title')) 29688 { 29689 _this.closest('.item_wrapper').find('.show_class span').text(_this.attr('title')) 29690 } 29691 else 29692 { 29693 var img_row = _this.find(' > i'); 29694 if(img_row.length && img_row.attr('title')) 29695 _this.closest('.item_wrapper').find('.show_class span').text(img_row.attr('title')) 29696 } 29697 29698 /* get sku */ 29699 $.ajax({ 29700 url: arMaxOptions['SITE_DIR']+'ajax/js_item_detail.php'+add_url, 29701 type: 'POST', 29702 data: obParams, 29703 }).success(function(html){ 29704 var ob = BX.processHTML(html);BX.ajax.processScripts(ob.SCRIPT); 29705 }) 29706 } 29707 $(document).on('click', '.bx_catalog_item_scu li.item', SelectOfferProp) 29708 } 29709 29710 window.tabsInitOnReady = function() { 29711 $('.tabs_wrapper').scrollTab({ 29712 tabs_wrapper: '.tabs.ajax', 29713 arrows_css: { 29714 'top': '-1px', 29715 }, 29716 width_grow: 3, 29717 onResize: function(options) { 29718 var top_wrapper = options.scrollTab.closest('.top_block'); 29719 if(top_wrapper.length) { 29720 var tabs_wrapper = top_wrapper.find('.right_block_wrapper .tabs_wrapper'); 29721 29722 if(window.matchMedia('(max-width: 767px)').matches){ 29723 tabs_wrapper.css({ 29724 'width': '100%', 29725 'max-width': '', 29726 }); 29727 return true; 29728 } 29729 29730 var title = top_wrapper.find('h3'); 29731 var right_link = top_wrapper.find('.right_block_wrapper > a'); 29732 var all_width = top_wrapper[0].getBoundingClientRect().width; 29733 29734 if(title.length) { 29735 all_width -= title.outerWidth(true); 29736 } 29737 29738 if(right_link.length) { 29739 all_width -= right_link.outerWidth(true); 29740 } 29741 29742 all_width -= Number.parseInt(tabs_wrapper.css('margin-right')); 29743 29744 tabs_wrapper.css({ 29745 'max-width': all_width, 29746 'width': '', 29747 }); 29748 } 29749 options.width = all_width; 29750 } 29751 }); 29752 29753 var container = $('.content_wrapper_block.main'); 29754 if(container.length) { 29755 var curTab = container.find('.tabs_content li.cur'); 29756 if(curTab.length) { 29757 var bNav = curTab.find('.bottom_nav .module-pagination').length > 0; 29758 if(bNav) { 29759 container.removeClass('without-border'); 29760 } else { 29761 container.addClass('without-border'); 29762 } 29763 } 29764 } 29765 } 29766 29767}); 29768 29769if (!window.JCCatalogSectionOnlyElement) 29770{ 29771 29772 window.JCCatalogSectionOnlyElement = function (arParams) 29773 { 29774 if (typeof arParams === 'object') 29775 {
29776 this.params = arParams; 29777 29778 this.obProduct = null; 29779 this.set_quantity = 1; 29780 29781 this.currentPriceMode = ''; 29782 this.currentPrices = []; 29783 this.currentPriceSelected = 0; 29784 this.currentQuantityRanges = []; 29785 this.currentQuantityRangeSelected = 0; 29786 29787 if (this.params.MESS) 29788 { 29789 this.mess = this.params.MESS; 29790 } 29791 29792 this.init(); 29793 } 29794 } 29795 window.JCCatalogSectionOnlyElement.prototype = { 29796 init: function() 29797 { 29798 var i = 0, 29799 j = 0, 29800 treeItems = null; 29801 29802 this.obProduct = BX(this.params.ID); 29803 29804 if(!!this.obProduct) 29805 { 29806 $(this.obProduct).find('.counter_wrapp .counter_block input').data('product', 'ob'+this.obProduct.id+'el'); 29807 this.currentPriceMode = this.params.ITEM_PRICE_MODE; 29808 this.currentPrices = this.params.ITEM_PRICES; 29809 this.currentQuantityRanges = this.params.ITEM_QUANTITY_RANGES; 29810 } 29811 29812 }, 29813 29814 setPriceAction: function() 29815 { 29816 this.set_quantity = this.params.MIN_QUANTITY_BUY; 29817 if($(this.obProduct).find('input[name=quantity]').length) 29818 this.set_quantity = $(this.obProduct).find('input[name=quantity]').val(); 29819 29820 this.checkPriceRange(this.set_quantity); 29821 29822 $(this.obProduct).find('.not_matrix').hide(); 29823 $(this.obProduct).find('.with_matrix .price_value_block').html(getCurrentPrice(this.currentPrices[this.currentPriceSelected].PRICE, this.currentPrices[this.currentPriceSelected].CURRENCY, this.currentPrices[this.currentPriceSelected].PRINT_PRICE)); 29824 29825 if($(this.obProduct).find('.with_matrix .discount')) 29826 { 29827 $(this.obProduct).find('.with_matrix .discount').html(getCurrentPrice(this.currentPrices[this.currentPriceSelected].BASE_PRICE, this.currentPrices[this.currentPriceSelected].CURRENCY, this.currentPrices[this.currentPriceSelected].PRINT_BASE_PRICE)); 29828 } 29829 29830 if(this.params.SHOW_DISCOUNT_PERCENT_NUMBER == 'Y') 29831 { 29832 if(this.currentPrices[this.currentPriceSelected].PERCENT > 0 && this.currentPrices[this.currentPriceSelected].PERCENT < 100) 29833 { 29834 if(!$(this.obProduct).find('.with_matrix .sale_block .sale_wrapper .value').length) 29835 $('<div class="value"></div>').insertBefore($(this.obProduct).find('.with_matrix .sale_block .sale_wrapper .text')); 29836 29837 $(this.obProduct).find('.with_matrix .sale_block .sale_wrapper .value').html('-<span>'+this.currentPrices[this.currentPriceSelected].PERCENT+'</span>%'); 29838 } 29839 else 29840 { 29841 if($(this.obProduct).find('.with_matrix .sale_block .sale_wrapper .value').length) 29842 $(this.obProduct).find('.with_matrix .sale_block .sale_wrapper .value').remove(); 29843 } 29844 } 29845 $(this.obProduct).find('.with_matrix .sale_block .text .values_wrapper').html(getCurrentPrice(this.currentPrices[this.currentPriceSelected].DISCOUNT, this.currentPrices[this.currentPriceSelected].CURRENCY, this.currentPrices[this.currentPriceSelected].PRINT_DISCOUNT)); 29846 29847 if('NOT_SHOW' in this.params && this.params.NOT_SHOW != 'Y') 29848 $(this.obProduct).find('.with_matrix').show(); 29849 29850 if(arMaxOptions['THEME']['SHOW_TOTAL_SUMM'] == 'Y') 29851 { 29852 if(typeof this.currentPrices[this.currentPriceSelected] !== 'undefined') 29853 setPriceItem($(this.obProduct), this.set_quantity, this.currentPrices[this.currentPriceSelected].PRICE); 29854 } 29855 }, 29856 29857 checkPriceRange: function(quantity) 29858 { 29859 if (typeof quantity === 'undefined'|| this.currentPriceMode != 'Q') 29860 return; 29861 29862 var range, found = false; 29863 29864 for (var i in this.currentQuantityRanges) 29865 { 29866 if (this.currentQuantityRanges.hasOwnProperty(i)) 29867 { 29868 range = this.currentQuantityRanges[i]; 29869 29870 if ( 29871 parseInt(quantity) >= parseInt(range.SORT_FROM) 29872 && ( 29873 range.SORT_TO == 'INF' 29874 || parseInt(quantity) <= parseInt(range.SORT_TO) 29875 ) 29876 ) 29877 { 29878 found = true; 29879 this.currentQuantityRangeSelected = range.HASH; 29880 break; 29881 } 29882 } 29883 } 29884 29885 if (!found && (range = this.getMinPriceRange())) 29886 { 29887 this.currentQuantityRangeSelected = range.HASH; 29888 } 29889 29890 for (var k in this.currentPrices) 29891 { 29892 if (this.currentPrices.hasOwnProperty(k)) 29893 { 29894 if (this.currentPrices[k].QUANTITY_HASH == this.currentQuantityRangeSelected) 29895 { 29896 this.currentPriceSelected = k; 29897 break; 29898 } 29899 } 29900 } 29901 }, 29902 29903 getMinPriceRange: function() 29904 { 29905 var range; 29906 29907 for (var i in this.currentQuantityRanges) 29908 { 29909 if (this.currentQuantityRanges.hasOwnProperty(i)) 29910 { 29911 if ( 29912 !range 29913 || parseInt(this.currentQuantityRanges[i].SORT_FROM) < parseInt(range.SORT_FROM) 29914 ) 29915 { 29916 range = this.currentQuantityRanges[i]; 29917 } 29918 } 29919 } 29920 29921 return range; 29922 } 29923 } 29924} 29925/* End */ 29926; 29927; /* Start:"a:4:{s:4:"full";s:90:"/local/templates/aspro_max/components/bitrix/news.list/front_news/script.
29927js?16523562331749";s:6:"source";s:75:"/local/templates/aspro_max/components/bitrix/news.list/front_news/script.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 29928$(document).ready(function(){ 29929 if($('.item-views.news2.half-block .item-wrapper.line_img .half-wrapper').length) 29930 { 29931 29932 var scrollItemsType6 = function(){ 29933 if(window.matchMedia('(min-width: 601px)').matches) { 29934 $('.item-views.news2.half-block .item-wrapper.line_img .half-wrapper').removeClass('destroyed').mCustomScrollbarDeferred({ 29935 mouseWheel: { 29936 scrollAmount: 150, 29937 preventDefault: true 29938 } 29939 }) 29940 } else { 29941 $('.item-views.news2.half-block .item-wrapper.line_img .half-wrapper').addClass('destroyed').mCustomScrollbar('destroy') 29942 } 29943 } 29944 29945 // $(window).resize(throttle(scrollItemsType6, 200)) 29946 $(window).resize(debounce(scrollItemsType6, 200)) 29947 } 29948 29949 var containerEl = document.querySelector('.mixitup-container'); 29950 if(containerEl) 29951 { 29952 var config = { 29953 selectors:{ 29954 target: '[data-ref="mixitup-target"]' 29955 }, 29956 animation:{ 29957 effects: 'fade scale stagger(50ms)' // Set a 'stagger' effect for the loading animation 29958 }, 29959 load:{ 29960 filter: 'none' // Ensure all targets start from hidden (i.e. display: none;) 29961 }, 29962 animation:{ 29963 duration: 350 29964 }, 29965 controls:{ 29966 scope: 'local' 29967 }, 29968 callbacks: { 29969 onMixStart:function(state) { 29970 }, 29971 onMixEnd:function() { 29972 InitLazyLoad(); 29973 } 29974 } 29975 }; 29976 var mixer = mixitup(containerEl, config); 29977 29978 // Add a class to the container to remove 'visibility: hidden;' from targets. This 29979 // prevents any flickr of content before the page's JavaScript has loaded. 29980 29981 containerEl.classList.add('mixitup-ready'); 29982 29983 // Show all targets in the container 29984 29985 mixer.show() 29986 .then(function(){ 29987 // Remove the stagger effect for any subsequent operations 29988 mixer.configure({ 29989 animation: { 29990 effects: 'fade scale' 29991 } 29992 }); 29993 }); 29994 } 29995 29996}) 29997/* End */ 29998; 29999; /* Start:"a:4:{s:4:"full";s:105:"/local/templates/aspro_max/components/bitrix/catalog.section.list/front_stories/script.js?165235592630303";s:6:"source";s:89:"/local/templates/aspro_max/components/bitrix/catalog.section.list/front_stories/script.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 30000// if you want stopped slider - write in console ( window.asproStoriesSliderStopped = true ) and then open popup 30001 30002$(document).on('touchstart', '.front_stories .item', function(e) { 30003 window.touchStoriesX = e.originalEvent.changedTouches[0].clientX; 30004 window.touchStoriesY = e.originalEvent.changedTouches[0].clientY; 30005 setTimeout( 30006 function() { 30007 window.touchStoriesX = false; 30008 window.touchStoriesY = false; 30009 } 30010 , 300); 30011}); 30012 30013$(document).on('touchend', '.front_stories .item', function(e) { 30014 if(window.touchStoriesX == e.originalEvent.changedTouches[0].clientX && window.touchStoriesY == e.originalEvent.changedTouches[0].clientY) { 30015 $(this).trigger('click'); 30016 } 30017}); 30018 30019$(document).on('click', '.front_stories .item', function() { 30020 if(!window.asproStoriesLoading) { 30021 window.asproStoriesLoading = true; 30022 var _this = $(this); 30023 var storiesPopupWrapper = $('body > .stories-popup'); 30024 if(!storiesPopupWrapper.length) { 30025 storiesPopupWrapper = $('<div class="stories-popup"></div>'); 30026 } 30027 30028 var ajaxData = { 30029 sectionData: _this.data(), 30030 sortData: _this.closest('.front_stories').data(), 30031 } 30032 $.ajax({ 30033 url: arAsproOptions.SITE_DIR + 'ajax/storiesInfo.php', 30034 data: ajaxData, 30035 dataType: 'json', 30036 type: 'POST', 30037 success: function(result) { 30038 if(result && result.error) { 30039 console.log('Fail get stories! Reason: '+result.error); 30040 } else if(!result || typeof result != 'object') { 30041 console.log('Fail get stories! Reason: result is '+result); 30042 } else { 30043 var html = generateSectionsHtml(result, _this.data()); 30044 if(html) { 30045 storiesPopupWrapper.html(html); 30046 storiesPopupWrapper.addClass('stories-popup--visible'); 30047 $('body').append(storiesPopupWrapper); 30048 30049 afterShowActions(result); 30050 } 30051 } 30052 window.asproStoriesLoading = false;
30053 }, 30054 error: function(jqXHR, error, errorThrown) { 30055 console.log('Fail get stories! Reason: '+errorThrown); 30056 window.asproStoriesLoading = false; 30057 } 30058 }); 30059 } 30060}); 30061 30062$(document).on('click', '.stories-popup__close', function() { 30063 var _this = $(this); 30064 var popup = _this.parents('.stories-popup'); 30065 popup.remove(); 30066}); 30067 30068$(document).on('click', '.stories-popup', function(e) { 30069 var _this = $(this); 30070 var _target = $(e.target); 30071 if(_target.hasClass('stories-popup')) { 30072 var popup = _this.closest('.stories-popup'); 30073 popup.remove(); 30074 } 30075}); 30076 30077$(document).on('click', '.front_stories .top_block a', function(e) { 30078 e.preventDefault(); 30079 $('.front_stories .item').eq(0).trigger('click'); 30080}); 30081 30082function getSliderSectionsHTML(elementsHTML) { 30083 var html = ''; 30084 var sectionSliderClass = 'stories-popup__section-slider'; 30085 var sectionSliderInnerClass = 'stories-popup__section-slider-inner'; 30086 30087 html += '<div class="'+sectionSliderClass+'">'; 30088 html += '<div class="'+sectionSliderClass+'-loader"><svg width="48" height="48" viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg" version="1.1"><path d="M 150,0 a 150,150 0 0,1 106.066,256.066 l -35.355,-35.355 a -100,-100 0 0,0 -70.711,-170.711 z" fill="#0000001a"><animateTransform attributeName="transform" attributeType="XML" type="rotate" from="0 150 150" to="360 150 150" begin="0s" dur=".8s" fill="freeze" repeatCount="indefinite"></animateTransform></path></svg></div>'; 30089 html += '<div class="'+sectionSliderInnerClass+'">'; 30090 html += elementsHTML; 30091 html += '</div>'; 30092 html += '</div>'; 30093 30094 return html; 30095} 30096 30097function getSliderElementsHTML(elementsHTML, elementsCount, sectionInfo) { 30098 var html = ''; 30099 var elementSliderClass = 'stories-popup__element-slider' + (sectionInfo.current ? ' stories-popup__element-slider--active' : ' stories-popup__element-slider--paused'); 30100 var elementSliderHeaderClass = 'stories-popup__element-slider-header'; 30101 var elementSliderHeaderImgClass = 'stories-popup__element-slider-header-img'; 30102 var elementSliderHeaderNameClass = 'stories-popup__element-slider-header-name'; 30103 var elementSliderElementsWrapperClass = 'stories-popup__element-slider-elements'; 30104 30105 var animationDefaultTime = 5; 30106 30107 var topPanelHtml = ''; 30108 var topPanelClass = 'stories-popup__element-slider-panel'; 30109 var topPanelElementClass = 'stories-popup__element-slider-panel-element'; 30110 topPanelHtml += '<div class="'+topPanelClass+'">'; 30111 for(var i = 0;i < elementsCount;i++) { 30112 topPanelHtml += '<div class="'+topPanelElementClass + (i == 0 ? ' '+topPanelElementClass+'--active' : '')+'"><div class="'+topPanelElementClass+'-line" style="animation-duration: '+animationDefaultTime+'s;"></div></div>'; 30113 } 30114 topPanelHtml += '</div>'; 30115 30116 30117 html += '<div class="'+elementSliderClass+'" data-section-id="'+sectionInfo.ID+'">'; 30118 30119 html += '<div class="'+elementSliderElementsWrapperClass+'">'; 30120 html += elementsHTML; 30121 html += '</div>'; 30122 30123 html += topPanelHtml; 30124 30125 html += '<div class="'+elementSliderHeaderClass+'">'; 30126 if (sectionInfo.PICTURE) { 30127 html += '<div class="'+elementSliderHeaderImgClass+'" style="background: url('+sectionInfo.PICTURE+') no-repeat center;" ></div>'; 30128 } 30129 html += '<div class="'+elementSliderHeaderNameClass+'">'+sectionInfo.NAME+'</div>'; 30130 html += '</div>'; 30131 30132 html += '</div>'; 30133 30134 return html; 30135} 30136 30137function generateElementHtml(elementInfo, elementKey) { 30138 var html = ''; 30139 var elementWrapperClass = 'stories-popup__element' + (elementKey > 0 ? '' : ' stories-popup__element--active'); 30140 var elementImgClass = 'stories-popup__element-image'; 30141 var elementButtonClass = 'stories-popup__element-btn'; 30142 30143 var elementSliderElementsNavWrapperClass = 'stories-popup__element-slider-navs', 30144 elementSliderElementsNavPrevClass = 'stories-popup__element-slider-navs-prev', 30145 elementSliderElementsNavNextClass = 'stories-popup__element-slider-navs-next'; 30146 30147 html += '<div class="'+elementWrapperClass+'" data-id="'+elementInfo.ID+'">'; 30148 html += '<div class="'+elementImgClass+'" style="background: url('+elementInfo.PREVIEW_PICTURE+') no-repeat center;" ></div>'; 30149 if(elementInfo.PROPERTY_BTN_TEXT_VALUE) { 30150 var elementButtonTag = elementInfo.PROPERTY_BTN_LINK_VALUE ? 'a' : 'div'; 30151 var elementButtonHref = elementInfo.PROPERTY_BTN_LINK_VALUE ? ' href="'+elementInfo.PROPERTY_BTN_LINK_VALUE+'"' : ''; 30152 html += '<'+elementButtonTag+elementButtonHref+' class="btn '+elementButtonClass+' '+elementInfo.PROPERTY_BTN_CLASS_VALUE+'" >'+elementInfo.PROPERTY_BTN_TEXT_VALUE+'</'+elementButtonTag+'>'; 30153 } 30154 30155 html += '<div class="'+elementSliderElementsNavWrapperClass+'">'+ 30156 '<div class="'+elementSliderElementsNavPrevClass+'"></div>'+ 30157 '<div class="'+elementSliderElementsNavNextClass+'"></div>'+ 30158 '</div>' 30159 30160 html += '</div>'; 30161 30162 return html; 30163} 30164 30165function afterShowActions(sectionInfo) { 30166 sectionsSliderInit(sectionInfo); 30167} 30168 30169function sectionsSliderInit(sections) { 30170 var index = 0; 30171 var activeSectionIndex = 0; 30172 for (var key in sections) { 30173 if (sections[key].current) { 30174 activeSectionIndex = index; 30175 break; 30176 } 30177 index++; 30178 } 30179 var options = { 30180 popup: $('.stories-popup'), 30181 activeSlideIndex: activeSectionIndex, 30182 activeSlideClass: 'stories-popup__element-slider--active', 30183 pausedSlideClass: 'stories-popup__element-slider--paused', 30184 slidesSelector: '.stories-popup__element-slider', 30185 innerSelector: '>
30185 .stories-popup__section-slider-inner', 30186 activeElementClass: 'stories-popup__element--active', 30187 elementsSelector: '.stories-popup__element', 30188 elementNavPrevClass: 'stories-popup__element-slider-navs-prev', 30189 elementNavNextClass: 'stories-popup__element-slider-navs-next', 30190 elementPanelClass: 'stories-popup__element-slider-panel-element', 30191 elementPanelActiveClass: 'stories-popup__element-slider-panel-element--active', 30192 elementPanelFinishedClass: 'stories-popup__element-slider-panel-element--finishied', 30193 changeSlideTime: 5000, 30194 transition: 0.25, 30195 activeSlideMargin: 8, 30196 dragAmount: 150, 30197 mobile: false, 30198 breakpoints: { 30199 '(max-width: 1025px)': { 30200 activeSlideMargin: 4, 30201 }, 30202 '(max-width: 566px)': { 30203 mobile: true, 30204 }, 30205 } 30206 }; 30207 InitAsproStoriesSectionSlider($('.stories-popup__section-slider'), options); 30208} 30209 30210function generateSectionsHtml(sections, sectionData) { 30211 var html = ''; 30212 html += getPopupCloseIcon(); 30213 30214 var elementsHTML = ''; 30215 for (var sectionKey in sections) { 30216 var section = sections[sectionKey]; 30217 if(section.ID == sectionData.sectionId) { 30218 section.current = true; 30219 } 30220 30221 elementsHTML += generateElementsHtml(section); 30222 } 30223 30224 html += getSliderSectionsHTML(elementsHTML); 30225 30226 return html; 30227} 30228 30229function generateElementsHtml(sectionInfo) { 30230 var html = ''; 30231 var elementsHTML = ''; 30232 30233 var elements = sectionInfo.CHILDS; 30234 30235 var elementsHTML = ''; 30236 for (var elementKey in elements) { 30237 var element = elements[elementKey]; 30238 elementsHTML += generateElementHtml(element, elementKey); 30239 } 30240 30241 html += getSliderElementsHTML(elementsHTML, elements.length, sectionInfo); 30242 30243 return html; 30244} 30245 30246function getPopupCloseIcon() { 30247 var iconClass = 'stories-popup__close'; 30248 var icon = '<div class="'+iconClass+'"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1L13 13M13 1L1 13" stroke="white" stroke-width="2" stroke-linecap="round"/></svg></div>'; 30249 30250 return icon; 30251} 30252 30253function InitAsproStoriesSectionSlider(el, options) { 30254 el.asproStoriesSectionsSlider(options); 30255} 30256 30257$.fn.asproStoriesSectionsSlider = function( options ){ 30258 function _storiesSlider(slider, options) { 30259 var _slider = $(slider); 30260 30261 var responsiveOptions = Object.assign({}, options); 30262 for(var width in options.breakpoints) { 30263 if(window.matchMedia(width).matches) { 30264 responsiveOptions = Object.assign(responsiveOptions, options.breakpoints[width]); 30265 } 30266 } 30267 30268 responsiveOptions.setStyles = function() { 30269 responsiveOptions.sliderInner.css({ 30270 'display': 'flex', 30271 'align-items': 'center', 30272 'transition': 'margin-left '+ responsiveOptions.transition +'s ease-in-out', 30273 'margin-left': responsiveOptions.calculateMargin(responsiveOptions.activeSlideIndex), 30274 }); 30275 responsiveOptions.slider.css({ 30276 'overflow': 'hidden', 30277 }); 30278 } 30279 30280 responsiveOptions.getCurrentSizes = function() { 30281 responsiveOptions.sliderWidth = responsiveOptions.slider.outerWidth(true); 30282 responsiveOptions.sliderHeight = responsiveOptions.slider.outerHeight(true); 30283 responsiveOptions.updateSlidesHeight(); 30284 } 30285 30286 responsiveOptions.calculateMargin = function(slideIndex) { 30287 responsiveOptions.getCurrentSizes(); 30288 if(responsiveOptions.mobile) { 30289 responsiveOptions.sliderInnerMargin = -responsiveOptions.slideWidth*(slideIndex + 1) + responsiveOptions.sliderWidth/2 + responsiveOptions.slideWidth/2; 30290 } else { 30291 responsiveOptions.sliderInnerMargin = -responsiveOptions.slideWidth*(slideIndex + 1) + responsiveOptions.sliderWidth/2 + responsiveOptions.slideWidth/2 - responsiveOptions.sliderWidth/100*responsiveOptions.activeSlideMargin; 30292 } 30293 30294 } 30295 30296 responsiveOptions.setCenter = function(slideIndex) { 30297 responsiveOptions.calculateMargin(slideIndex); 30298 responsiveOptions.sliderInner.css({ 30299 'margin-left': responsiveOptions.sliderInnerMargin, 30300 }); 30301 } 30302 30303 responsiveOptions.closePopup = function() { 30304 responsiveOptions.popup.remove(); 30305 } 30306 30307 responsiveOptions.setActive = function(slideIndex) { 30308 responsiveOptions.activeSlide.removeClass(responsiveOptions.activeSlideClass).addClass(responsiveOptions.pausedSlideClass); 30309 $(responsiveOptions.activeSlide.panelElements[ responsiveOptions.activeElements[responsiveOptions.activeSlideIndex] ]).removeClass(responsiveOptions.elementPanelActiveClass); 30310 responsiveOptions.activeSlideIndex = slideIndex; 30311 30312 responsiveOptions.activeSlide = $(responsiveOptions.slides[responsiveOptions.activeSlideIndex]); 30313 responsiveOptions.activeSlide.addClass(responsiveOptions.activeSlideClass).removeClass(responsiveOptions.pausedSlideClass); 30314 30315 responsiveOptions.activeSlide.elements = null; 30316 responsiveOptions.activeSlide.panelElements = null; 30317 30318 responsiveOptions.updateElementsInfo(responsiveOptions.activeSlide); 30319 responsiveOptions.setActiveElement(responsiveOptions.activeSlide, 0); 30320 30321 responsiveOptions.setCenter(slideIndex); 30322 } 30323 30324 responsiveOptions.updateElementsInfo = function(slide) {
30325 if(!slide.elements || !slide.panelElements) { 30326 slide.elements = slide.find(responsiveOptions.elementsSelector); 30327 slide.panelElements = slide.find('.'+responsiveOptions.elementPanelClass); 30328 } 30329 if(!responsiveOptions.activeElements[slide.index()]) { 30330 responsiveOptions.activeElements[slide.index()] = 0; 30331 } 30332 } 30333 30334 responsiveOptions.setNext = function() { 30335 if(responsiveOptions.activeSlideIndex + 1 < responsiveOptions.slides.length) { 30336 responsiveOptions.setActive(responsiveOptions.activeSlideIndex + 1); 30337 } else { 30338 responsiveOptions.closePopup(); 30339 } 30340 } 30341 30342 responsiveOptions.setPrev = function() { 30343 if(responsiveOptions.activeSlideIndex > 0) { 30344 responsiveOptions.setActive(responsiveOptions.activeSlideIndex - 1); 30345 } 30346 } 30347 30348 responsiveOptions.setNextElement = function() { 30349 responsiveOptions.updateElementsInfo(responsiveOptions.activeSlide); 30350 responsiveOptions.elementTimerContinue = null; 30351 30352 if(responsiveOptions.activeElements[responsiveOptions.activeSlideIndex] + 1 < responsiveOptions.activeSlide.elements.length) { 30353 responsiveOptions.setActiveElement(responsiveOptions.activeSlide, +1); 30354 } else { 30355 responsiveOptions.clearSlide(responsiveOptions.activeSlide); 30356 responsiveOptions.setNext(); 30357 } 30358 } 30359 30360 responsiveOptions.setPrevElement = function() { 30361 responsiveOptions.updateElementsInfo(responsiveOptions.activeSlide); 30362 30363 if(responsiveOptions.activeElements[responsiveOptions.activeSlideIndex] > 0) { 30364 responsiveOptions.setActiveElement(responsiveOptions.activeSlide, -1); 30365 } else { 30366 responsiveOptions.clearSlide(responsiveOptions.activeSlide); 30367 responsiveOptions.setPrev(); 30368 } 30369 } 30370 30371 responsiveOptions.clearSlide = function(slide) { 30372 // slide.elements.removeClass(responsiveOptions.activeElementClass); 30373 // slide.panelElements.removeClass(responsiveOptions.elementPanelActiveClass); 30374 // slide.panelElements.removeClass(responsiveOptions.elementPanelFinishedClass); 30375 } 30376 30377 responsiveOptions.setActiveElement = function(slide, newActiveIndex) { 30378 if(responsiveOptions.elementTimer) { 30379 clearTimeout(responsiveOptions.elementTimer); 30380 } 30381 30382 var oldActive = slide.elements[ responsiveOptions.activeElements[responsiveOptions.activeSlideIndex] ]; 30383 var newActive = slide.elements[ responsiveOptions.activeElements[responsiveOptions.activeSlideIndex] + newActiveIndex]; 30384 $(oldActive).removeClass(responsiveOptions.activeElementClass); 30385 $(newActive).addClass(responsiveOptions.activeElementClass); 30386 responsiveOptions.activeElements[slide.index()] += newActiveIndex; 30387 30388 slide.panelElements.each(function(index, element) { 30389 var _this = $(element); 30390 if(index < responsiveOptions.activeElements[slide.index()]) { 30391 _this.addClass(responsiveOptions.elementPanelFinishedClass); 30392 _this.removeClass(responsiveOptions.elementPanelActiveClass); 30393 } else if (index == responsiveOptions.activeElements[slide.index()]) { 30394 _this.removeClass(responsiveOptions.elementPanelFinishedClass); 30395 _this.addClass(responsiveOptions.elementPanelActiveClass); 30396 } else { 30397 _this.removeClass(responsiveOptions.elementPanelActiveClass); 30398 _this.removeClass(responsiveOptions.elementPanelFinishedClass); 30399 } 30400 }); 30401 30402 if(!window.asproStoriesSliderStopped) { 30403 responsiveOptions.elementTimerStart = Date.now(); 30404 responsiveOptions.elementTimer = setTimeout( 30405 function() { 30406 responsiveOptions.setNextElement(); 30407 } 30408 , responsiveOptions.changeSlideTime); 30409 } 30410 } 30411 30412 responsiveOptions.pauseSlide = function(slide) { 30413 var index = slide.data('index'); 30414 index = index ? index : slide.index(); 30415 30416 slide.addClass(responsiveOptions.pausedSlideClass); 30417 responsiveOptions.stoppedSlideIndex = index; 30418 if(responsiveOptions.elementTimer) { 30419 clearTimeout(responsiveOptions.elementTimer); 30420 responsiveOptions.animationTimer = responsiveOptions.elementTimerContinue ? responsiveOptions.elementTimerContinue : responsiveOptions.changeSlideTime; 30421 responsiveOptions.elementTimerContinue = responsiveOptions.animationTimer - (Date.now() - responsiveOptions.elementTimerStart); 30422 } 30423 } 30424 30425 responsiveOptions.playSlide = function(slide) { 30426 var index = slide.data('index'); 30427 index = index ? index : slide.index(); 30428 30429 if( index == responsiveOptions.stoppedSlideIndex ) { 30430 slide.removeClass(responsiveOptions.pausedSlideClass); 30431 responsiveOptions.stoppedSlideIndex = null; 30432 if(!window.asproStoriesSliderStopped) { 30433 responsiveOptions.elementTimerStart = Date.now(); 30434 responsiveOptions.elementTimer = setTimeout( 30435 function() { 30436 responsiveOptions.setNextElement(); 30437 } 30438 , responsiveOptions.elementTimerContinue); 30439 } 30440 } 30441 } 30442 30443 responsiveOptions.addDragEvents = function() { 30444 responsiveOptions.slides.on('touchstart', function(event) { 30445 var _this = $(this); 30446 var index = _this.data('index'); 30447 index = index ? index : _this.index(); 30448 30449 if(index == responsiveOptions.activeSlideIndex) { 30450 if(!responsiveOptions.mobile) { 30451 responsiveOptions.touch.posPrev = event.originalEvent.changedTouches[0].pageX; 30452 } 30453 } 30454 }); 30455 30456 responsiveOptions.slides.on('touchmove', function(event) { 30457 var _this = $(this); 30458 var index = _this.data('index'); 30459 index = index ? index : _this.index(); 30460 30461 if(index == responsiveOptions.activeSlideIndex) { 30462 if(!responsiveOptions.mobile) { 30463 responsiveOptions.touch.posCurrent = event.originalEvent.changedTouches[0].pageX - responsiveOptions.touch.posPrev; 30464 responsiveOptions.sliderInner.css({ 30465 'margin-left': responsiveOptions.sliderInnerMargin + responsiveOptions.touch.posCurrent, 30466 }); 30467 responsiveOptions.sliderInnerMargin = responsiveOptions.sliderInnerMargin + responsiveOptions.touch.posCurrent; 30468 responsiveOptions.touch.posPrev = event.originalEvent.changedTouches[0].pageX; 30469 } 30470 } 30471 }); 30472 30473 responsiveOptions.slides.on('mousedown', function(event) { 30474 var _this = $(this); 30475 var index = _this.data('index'); 30476 index = index ? index : _this.index(); 30477 30478 if(index == responsiveOptions.activeSlideIndex) { 30479 if(!responsiveOptions.mobile) { 30480 var startX = event.pageX; 30481 30482 30483 function moveAt(pageX) { 30484 var left = pageX - startX > 0 ? pageX - startX : startX - pageX; 30485 var movePercent = left / responsiveOptions.dragAmount; 30486 if(pageX - startX > 0 && responsiveOptions.activeSlideIndex > 0 || pageX - startX < 0 && responsiveOptions.activeSlideIndex < responsiveOptions.slides.length) { 30487 var dependSlide = pageX - startX > 0 ? _this.prev() : _this.next(); 30488 var cssCurrent = { 30489 'margin-left': responsiveOptions.activeSlideMargin - responsiveOptions.activeSlideMargin*movePercent + 'vw', 30490 'margin-right': responsiveOptions.activeSlideMargin - responsiveOptions.activeSlideMargin*movePercent + 'vw', 30491 'transform': 'scale('+ (1 - 0.25*movePercent) +')', 30492 }; 30493 var cssDepend = { 30494 'margin-left': responsiveOptions.activeSlideMargin*movePercent + 'vw', 30495 'margin-right': responsiveOptions.activeSlideMargin*movePercent + 'vw', 30496 'transform': 'scale('+ (0.75 + 0.25*movePercent) +')', 30497 }; 30498 30499 _this.css(cssCurrent); 30500 dependSlide.css(cssDepend); 30501 30502 console.log(movePercent); 30503 } 30504 } 30505 30506 function onMouseMove(event) { 30507 moveAt(event.pageX); 30508 } 30509 30510 document.addEventListener('mousemove', onMouseMove); 30511 30512 $(document).on('mouseup', function() { 30513 document.removeEventListener('mousemove', onMouseMove); 30514 this.onmouseup = null; 30515 }); 30516 30517 this.ondragstart = function() { 30518 return false;
30519 }; 30520 } 30521 } 30522 }); 30523 } 30524 30525 responsiveOptions.addEvents = function() { 30526 responsiveOptions.slides.on('click', function() { 30527 var _this = $(this); 30528 var index = _this.data('index'); 30529 index = index ? index : _this.index(); 30530 30531 if(index != responsiveOptions.activeSlideIndex) { 30532 responsiveOptions.setActive(index); 30533 } 30534 }); 30535 30536 responsiveOptions.slides.swiperight(function() { 30537 if(responsiveOptions.mobile) { 30538 responsiveOptions.setPrev(); 30539 } 30540 }); 30541 30542 responsiveOptions.slides.swipeleft(function() { 30543 if(responsiveOptions.mobile) { 30544 responsiveOptions.setNext(); 30545 } 30546 }); 30547 30548 responsiveOptions.slides.on('taphold', function() { 30549 var _this = $(this); 30550 responsiveOptions.pauseSlide(_this); 30551 }); 30552 30553 responsiveOptions.slides.on('touchend', function() { 30554 var _this = $(this); 30555 responsiveOptions.playSlide(_this); 30556 }); 30557 30558 responsiveOptions.slides.on('mousedown', function() { 30559 var _this = $(this); 30560 var timeout = 1000; 30561 responsiveOptions.mousedownTimer = setTimeout( 30562 function() { 30563 responsiveOptions.mouseHold = true; 30564 responsiveOptions.pauseSlide(_this); 30565 } 30566 , timeout); 30567 }); 30568 30569 responsiveOptions.slides.on('mousemove', function() { 30570 if(responsiveOptions.mousedownTimer) { 30571 clearTimeout(responsiveOptions.mousedownTimer); 30572 responsiveOptions.mouseHold = false; 30573 } 30574 }); 30575 30576 responsiveOptions.slides.on('mouseup', function(e) { 30577 if(responsiveOptions.mouseHold) { 30578 var _this = $(this); 30579 responsiveOptions.playSlide(_this); 30580 } else { 30581 if(responsiveOptions.mousedownTimer) { 30582 clearTimeout(responsiveOptions.mousedownTimer); 30583 responsiveOptions.mouseHold = false; 30584 } 30585 } 30586 }); 30587 30588 responsiveOptions.slides.on('click', '.'+responsiveOptions.elementNavPrevClass, function(e) { 30589 if(!responsiveOptions.mouseHold) { 30590 var _this = $(this); 30591 var _thisSlide = _this.closest(responsiveOptions.slidesSelector); 30592 var index = _thisSlide.data('index'); 30593 index = index ? index : _thisSlide.index(); 30594 30595 if(index == responsiveOptions.activeSlideIndex) { 30596 responsiveOptions.setPrevElement(); 30597 e.preventDefault(); 30598 e.stopPropagation(); 30599 } 30600 } else { 30601 responsiveOptions.mouseHold = false; 30602 } 30603 }); 30604 30605 responsiveOptions.slides.on('click', '.'+responsiveOptions.elementNavNextClass, function(e) { 30606 if(!responsiveOptions.mouseHold) { 30607 var _this = $(this); 30608 var _thisSlide = _this.closest(responsiveOptions.slidesSelector); 30609 var index = _thisSlide.data('index'); 30610 index = index ? index : _thisSlide.index(); 30611 30612 if(index == responsiveOptions.activeSlideIndex) { 30613 responsiveOptions.setNextElement(); 30614 e.preventDefault(); 30615 e.stopPropagation(); 30616 } 30617 } else { 30618 responsiveOptions.mouseHold = false; 30619 } 30620 }); 30621 30622 // responsiveOptions.addDragEvents(); 30623 30624 BX.addCustomEvent('onWindowResize', function(eventdata) { 30625 try{ 30626 responsiveOptions.update(); 30627 } 30628 catch(e){ 30629 console.log(e); 30630 } 30631 }); 30632 } 30633 30634 responsiveOptions.updateSlidesHeight = function() { 30635 if(responsiveOptions.mobile) { 30636 responsiveOptions.slideWidth = responsiveOptions.sliderWidth; 30637 responsiveOptions.slides.css({ 30638 'width': '', 30639 }); 30640 } else { 30641 responsiveOptions.slideWidth = (responsiveOptions.sliderHeight + 80)/1.98; 30642 responsiveOptions.slides.css({ 30643 'width': responsiveOptions.slideWidth, 30644 }); 30645 } 30646 } 30647 30648 responsiveOptions.update = function() { 30649 var activeSlide = responsiveOptions.activeSlideIndex; 30650 responsiveOptions = Object.assign(responsiveOptions, options); 30651 for(var width in options.breakpoints) { 30652 if(window.matchMedia(width).matches) { 30653 responsiveOptions = Object.assign(responsiveOptions, options.breakpoints[width]); 30654 } 30655 } 30656 30657 responsiveOptions.activeSlideIndex = activeSlide; 30658 responsiveOptions.getCurrentSizes(); 30659 responsiveOptions.setCenter(responsiveOptions.activeSlideIndex); 30660 } 30661 30662 responsiveOptions.init = function(_slider) { 30663 responsiveOptions.slides = _slider.find(responsiveOptions.slidesSelector); 30664 responsiveOptions.activeSlide = $(responsiveOptions.slides[responsiveOptions.activeSlideIndex]); 30665 responsiveOptions.sliderInner = _slider.find(responsiveOptions.innerSelector); 30666 responsiveOptions.slider = _slider; 30667 responsiveOptions.sliderWidth = responsiveOptions.slider.outerWidth(true); 30668 responsiveOptions.slides.addClass('swipeignore'); 30669 responsiveOptions.touch = {}; 30670 responsiveOptions.activeElements = {}; 30671 30672 responsiveOptions.setStyles(); 30673 responsiveOptions.getCurrentSizes(); 30674 responsiveOptions.setCenter(responsiveOptions.activeSlideIndex); 30675 30676 responsiveOptions.updateElementsInfo(responsiveOptions.activeSlide); 30677 responsiveOptions.setActiveElement(responsiveOptions.activeSlide, 0); 30678 30679 responsiveOptions.addEvents(); 30680 30681 _slider.data('asproStoriesSlider', responsiveOptions); 30682 } 30683 30684 responsiveOptions.init(_slider); 30685 setTimeout( 30686 function() { 30687 responsiveOptions.slider.addClass('aspro_slider_init'); 30688 }, 30689 responsiveOptions.transition*1000 + 10); 30690 30691 } 30692 30693 var el = $(this); 30694 30695 if(el.hasClass('aspro_slider_init')) 30696 return false;
30697 30698 el.each(function(i, slider){ 30699 _storiesSlider(slider, options); 30700 }); 30701} 30702/* End */ 30703; 30704; /* Start:"a:4:{s:4:"full";s:88:"/bitrix/components/aspro/marketing.popup.max/templates/.default/script.js?16141915961736";s:6:"source";s:73:"/bitrix/components/aspro/marketing.popup.max/templates/.default/script.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 30705 30706function showMarketingPopup(){ 30707 if($('.dyn_mp_jqm').length) 30708 { 30709 var delayNext = 0; 30710 $('.dyn_mp_jqm').each(function(i, el) { 30711 var jqmBlock = $(el), 30712 delay = 0; 30713 30714 if(!jqmBlock.hasClass('initied')) // first load 30715 { 30716 jqmBlock.addClass('initied'); 30717 30718 if(jqmBlock.data('param-delay')) 30719 delay = jqmBlock.data('param-delay')*1000; 30720 30721 if (delayNext == delay) { 30722 delay += 1000; 30723 } 30724 30725 delayNext = delay; 30726 30727 if(typeof localStorage !== 'undefined') 30728 { 30729 var dataLS = localStorage.getItem(jqmBlock.data('ls')), 30730 ls = ''; 30731 try{ 30732 ls = JSON.parse(dataLS); 30733 } 30734 catch(e){ 30735 ls = dataLS 30736 } 30737 if(!ls || (ls && (ls.TIMESTAMP < Date.now() && ls.TIMESTAMP))) 30738 { 30739 /*if (timeoutID) { 30740 clearTimeout(timeoutID); 30741 }*/ 30742 timeoutID = setTimeout(function(){ 30743 console.log(jqmBlock, delay) 30744 jqmBlock.click(); 30745 }, delay); 30746 } 30747 } 30748 else 30749 { 30750 var ls = $.cookie(jqmBlock.data('ls')); 30751 if(!ls) 30752 { 30753 /*if (timeoutID) { 30754 clearTimeout(timeoutID); 30755 }*/ 30756 timeoutID = setTimeout(function(){ 30757 jqmBlock.click(); 30758 }, delay); 30759 } 30760 } 30761 30762 } 30763 else // ajax popup 30764 { 30765 30766 } 30767 30768 }); 30769 } 30770} 30771 30772 30773 30774 30775$(document).ready(function(){ 30776 30777 showMarketingPopup(); 30778 30779 if(typeof window.frameCacheVars !== "undefined"){ 30780 BX.addCustomEvent("onFrameDataReceived", function (json){ 30781 showMarketingPopup(); 30782 }); 30783 } 30784 30785 $(document).on('click', '.dyn_mp_jqm_frame .popup-text-info__btn .btn', function() { 30786 var closeBtn = $(this).closest('.dyn_mp_jqm_frame').find('.jqmClose'); 30787 30788 if(closeBtn.length) { 30789 closeBtn.trigger('click'); 30790 } 30791 }); 30792}) 30793 30794/* End */ 30795; 30796; /* Start:"a:4:{s:4:"full";s:89:"/local/templates/aspro_max/components/bitrix/search.title/fixed/script.js?165235599110264";s:6:"source";s:73:"/local/templates/aspro_max/components/bitrix/search.title/fixed/script.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 30797function JCTitleSearch2(arParams) 30798{ 30799 var _this = this; 30800 30801 this.arParams = {
30802 'AJAX_PAGE': arParams.AJAX_PAGE, 30803 'CONTAINER_ID': arParams.CONTAINER_ID, 30804 'INPUT_ID': arParams.INPUT_ID, 30805 'INPUT_ID_TMP': arParams.INPUT_ID_TMP, 30806 'MIN_QUERY_LEN': parseInt(arParams.MIN_QUERY_LEN) 30807 }; 30808 if(arParams.WAIT_IMAGE) 30809 this.arParams.WAIT_IMAGE = arParams.WAIT_IMAGE; 30810 if(arParams.MIN_QUERY_LEN <= 0) 30811 arParams.MIN_QUERY_LEN = 1; 30812 30813 this.cache = []; 30814 this.cache_key = null; 30815 30816 this.startText = ''; 30817 this.running = false; 30818 this.needRunAgain = false; 30819 this.currentRow = -1; 30820 this.RESULT = null; 30821 this.CONTAINER = null; 30822 this.INPUT = null; 30823 this.WAIT = null; 30824 30825 this.ShowResult = function(result) 30826 { 30827 if(BX.type.isString(result)) 30828 { 30829 _this.RESULT.innerHTML = result; 30830 } 30831 30832 _this.RESULT.style.display = _this.RESULT.innerHTML !== '' ? 'block' : 'none'; 30833 var pos = _this.adjustResultNode(); 30834 30835 //adjust left column to be an outline 30836 var res_pos; 30837 var th; 30838 var tbl = BX.findChild(_this.RESULT, {'tag':'table','class':'title-search-result'}, true); 30839 if(tbl) 30840 { 30841 th = BX.findChild(tbl, {'tag':'th'}, true); 30842 } 30843 if(th) 30844 { 30845 var tbl_pos = BX.pos(tbl); 30846 tbl_pos.width = tbl_pos.right - tbl_pos.left; 30847 30848 var th_pos = BX.pos(th); 30849 th_pos.width = th_pos.right - th_pos.left; 30850 th.style.width = th_pos.width + 'px'; 30851 30852 _this.RESULT.style.width = (pos.width + th_pos.width) + 'px'; 30853 30854 //Move table to left by width of the first column 30855 _this.RESULT.style.left = (pos.left - th_pos.width - 1)+ 'px'; 30856 30857 //Shrink table when it's too wide 30858 if((tbl_pos.width - th_pos.width) > pos.width) 30859 _this.RESULT.style.width = (pos.width + th_pos.width -1) + 'px'; 30860 30861 //Check if table is too wide and shrink result div to it's width 30862 tbl_pos = BX.pos(tbl); 30863 res_pos = BX.pos(_this.RESULT); 30864 if(res_pos.right > tbl_pos.right) 30865 { 30866 _this.RESULT.style.width = (tbl_pos.right - tbl_pos.left) + 'px'; 30867 } 30868 } 30869 30870 var fade; 30871 if(tbl) fade = BX.findChild(_this.RESULT, {'class':'title-search-fader'}, true); 30872 if(fade && th) 30873 { 30874 res_pos = BX.pos(_this.RESULT); 30875 fade.style.left = (res_pos.right - res_pos.left - 18) + 'px'; 30876 fade.style.width = 18 + 'px'; 30877 fade.style.top = 0 + 'px'; 30878 fade.style.height = (res_pos.bottom - res_pos.top) + 'px'; 30879 fade.style.display = 'block'; 30880 } 30881 30882 $('.bx_searche.scrollbar').mCustomScrollbar({ 30883 mouseWheel: { 30884 scrollAmount: 150, 30885 preventDefault: true 30886 } 30887 }); 30888 }; 30889 30890 this.onKeyPress = function(keyCode) 30891 { 30892 var tbl = BX.findChild(_this.RESULT, {'tag':'table','class':'title-search-result'}, true); 30893 if(!tbl) 30894 return false; 30895 30896 var i; 30897 var cnt = tbl.rows.length; 30898 30899 switch (keyCode) 30900 { 30901 case 27: // escape key - close search div 30902 _this.RESULT.style.display = 'none'; 30903 _this.currentRow = -1; 30904 _this.UnSelectAll(); 30905 return true; 30906 30907 case 40: // down key - navigate down on search results 30908 if(_this.RESULT.style.display == 'none') 30909 _this.RESULT.style.display = 'block'; 30910 30911 var first = -1; 30912 for(i = 0; i < cnt; i++) 30913 { 30914 if(!BX.findChild(tbl.rows[i], {'class':'title-search-separator'}, true)) 30915 { 30916 if(first == -1) 30917 first = i; 30918 30919 if(_this.currentRow < i) 30920 { 30921 _this.currentRow = i; 30922 break; 30923 } 30924 else if(tbl.rows[i].className == 'title-search-selected') 30925 { 30926 tbl.rows[i].className = ''; 30927 } 30928 } 30929 } 30930 30931 if(i == cnt && _this.currentRow != i) 30932 _this.currentRow = first; 30933 30934 tbl.rows[_this.currentRow].className = 'title-search-selected'; 30935 return true; 30936 30937 case 38: // up key - navigate up on search results 30938 if(_this.RESULT.style.display == 'none') 30939 _this.RESULT.style.display = 'block'; 30940 30941 var last = -1; 30942 for(i = cnt-1; i >= 0; i--) 30943 { 30944 if(!BX.findChild(tbl.rows[i], {'class':'title-search-separator'}, true)) 30945 { 30946 if(last == -1) 30947 last = i; 30948 30949 if(_this.currentRow > i) 30950 { 30951 _this.currentRow = i; 30952 break; 30953 } 30954 else if(tbl.rows[i].className == 'title-search-selected') 30955 { 30956 tbl.rows[i].className = ''; 30957 } 30958 } 30959 } 30960 30961 if(i < 0 && _this.currentRow != i) 30962 _this.currentRow = last; 30963 30964 tbl.rows[_this.currentRow].className = 'title-search-selected'; 30965 return true; 30966 30967 case 13: // enter key - choose current search result 30968 if(_this.RESULT.style.display == 'block') 30969 { 30970 for(i = 0; i < cnt; i++) 30971 { 30972 if(_this.currentRow == i) 30973 { 30974 if(!BX.findChild(tbl.rows[i], {'class':'title-search-separator'}, true)) 30975 { 30976 var a = BX.findChild(tbl.rows[i], {'tag':'a'}, true); 30977 if(a) 30978 { 30979 window.location = a.href; 30980 return true; 30981 } 30982 } 30983 } 30984 } 30985 } 30986 return false;
30987 } 30988 30989 return false; 30990 }; 30991 30992 this.onTimeout = function() 30993 { 30994 _this.onChange(function(){ 30995 setTimeout(_this.onTimeout, 500); 30996 }); 30997 }; 30998 30999 this.onChange = function(callback) 31000 { 31001 if (_this.running){ 31002 _this.needRunAgain = true; 31003 return; 31004 } 31005 _this.running = true; 31006 31007 if(_this.INPUT.value != _this.oldValue && _this.INPUT.value != _this.startText) 31008 { 31009 _this.oldValue = _this.INPUT.value; 31010 if(_this.INPUT.value.length >= _this.arParams.MIN_QUERY_LEN) 31011 { 31012 _this.cache_key = _this.arParams.INPUT_ID + '|' + _this.INPUT.value; 31013 if(_this.cache[_this.cache_key] == null) 31014 { 31015 if(_this.WAIT) 31016 { 31017 var pos = BX.pos(_this.INPUT); 31018 var height = (pos.bottom - pos.top)-2; 31019 _this.WAIT.style.top = (pos.top+1) + 'px'; 31020 _this.WAIT.style.height = height + 'px'; 31021 _this.WAIT.style.width = height + 'px'; 31022 _this.WAIT.style.left = (pos.right - height + 2) + 'px'; 31023 _this.WAIT.style.display = 'block'; 31024 } 31025 31026 BX.ajax.post( 31027 _this.arParams.AJAX_PAGE, 31028 { 31029 'ajax_call':'y', 31030 'INPUT_ID':_this.arParams.INPUT_ID_TMP, 31031 'q':_this.INPUT.value, 31032 'l':_this.arParams.MIN_QUERY_LEN 31033 }, 31034 function(result) 31035 { 31036 _this.cache[_this.cache_key] = result; 31037 _this.ShowResult(result); 31038 _this.currentRow = -1; 31039 _this.EnableMouseEvents(); 31040 if(_this.WAIT) 31041 _this.WAIT.style.display = 'none'; 31042 if (!!callback) 31043 callback(); 31044 _this.running = false; 31045 31046 if(_this.needRunAgain){ 31047 _this.needRunAgain = false; 31048 _this.onChange(callback); 31049 } 31050 } 31051 ); 31052 return; 31053 } 31054 else 31055 { 31056 _this.ShowResult(_this.cache[_this.cache_key]); 31057 _this.currentRow = -1; 31058 _this.EnableMouseEvents(); 31059 } 31060 } 31061 else 31062 { 31063 _this.RESULT.style.display = 'none'; 31064 _this.currentRow = -1; 31065 _this.UnSelectAll(); 31066 } 31067 } 31068 if (!!callback) 31069 callback(); 31070 _this.running = false; 31071 }; 31072 31073 this.UnSelectAll = function() 31074 { 31075 var tbl = BX.findChild(_this.RESULT, {'tag':'table','class':'title-search-result'}, true); 31076 if(tbl) 31077 { 31078 var cnt = tbl.rows.length; 31079 for(var i = 0; i < cnt; i++) 31080 tbl.rows[i].className = ''; 31081 } 31082 }; 31083 31084 this.EnableMouseEvents = function() 31085 { 31086 var tbl = BX.findChild(_this.RESULT, {'tag':'table','class':'title-search-result'}, true); 31087 if(tbl) 31088 { 31089 var cnt = tbl.rows.length; 31090 for(var i = 0; i < cnt; i++) 31091 if(!BX.findChild(tbl.rows[i], {'class':'title-search-separator'}, true)) 31092 { 31093 tbl.rows[i].id = 'row_' + i; 31094 tbl.rows[i].onmouseover = function (e) { 31095 if(_this.currentRow != this.id.substr(4)) 31096 { 31097 _this.UnSelectAll(); 31098 this.className = 'title-search-selected'; 31099 _this.currentRow = this.id.substr(4); 31100 } 31101 }; 31102 tbl.rows[i].onmouseout = function (e) { 31103 this.className = ''; 31104 _this.currentRow = -1; 31105 }; 31106 } 31107 } 31108 }; 31109 31110 this.onFocusLost = function(hide) 31111 { 31112 setTimeout(function(){_this.RESULT.style.display = 'none';}, 300); 31113 // _this.RESULT.style.display = 'none'; 31114 }; 31115 31116 this.onFocusGain = function() 31117 { 31118 if(_this.RESULT.innerHTML.length) 31119 _this.ShowResult(); 31120 }; 31121 31122 this.onKeyDown = function(e) 31123 { 31124 if(!e) 31125 e = window.event; 31126 31127 if (_this.RESULT.style.display == 'block') 31128 { 31129 if(_this.onKeyPress(e.keyCode)) 31130 return BX.PreventDefault(e); 31131 } 31132 }; 31133 31134 this.adjustResultNode = function() 31135 { 31136 var pos, pos_input; 31137 var fixedParent = BX.findParent(_this.CONTAINER, BX.is_fixed); 31138 if(!!fixedParent) 31139 { 31140 _this.RESULT.style.position = 'fixed'; 31141 _this.RESULT.style.zIndex = BX.style(fixedParent, 'z-index') + 2; 31142 pos = BX.pos(_this.CONTAINER, true); 31143 } 31144 else 31145 { 31146 _this.RESULT.style.position = 'absolute'; 31147 pos = BX.pos(_this.CONTAINER); 31148 } 31149 //console.log(pos); 31150 //console.log(_this.CONTAINER); 31151 pos_input = BX.pos(_this.INPUT); 31152 31153 pos.width = pos.right - pos.left; 31154 _this.RESULT.style.top = (pos.bottom + 2) + 'px'; 31155 _this.RESULT.style.left = pos_input.left + 'px'; 31156 31157 if($(_this.INPUT).closest('.inline-search-block.with-close').length) 31158 _this.RESULT.style.width = pos_input.width + 'px'; 31159 else 31160 _this.RESULT.style.width = pos.width + 'px'; 31161 return pos; 31162 }; 31163 31164 this._onContainerLayoutChange = function() 31165 { 31166 if(_this.RESULT.style.display !== "none" && _this.RESULT.innerHTML !== '') 31167 { 31168 _this.adjustResultNode(); 31169 } 31170 }; 31171 this.Init = function() 31172 { 31173 this.CONTAINER = document.getElementById(this.arParams.CONTAINER_ID); 31174 BX.addCustomEvent(this.CONTAINER, "OnNodeLayoutChange", this._onContainerLayoutChange); 31175 31176 this.RESULT = document.body.appendChild(document.createElement("DIV")); 31177 31178 this.RESULT.className = 'title-search-result '+this.arParams.INPUT_ID; 31179 if(this.arParams.INPUT_ID != 'title-search-input_fixed') 31180 this.RESULT.className += ' '+arMaxOptions['THEME']['TYPE_SEARCH']+'_type'; 31181 31182 this.INPUT = document.getElementById(this.arParams.INPUT_ID); 31183 this.startText = this.oldValue = this.INPUT.value; 31184 BX.bind(this.INPUT, 'focus', function() {_this.onFocusGain()}); 31185 BX.bind(this.INPUT, 'blur', function() {_this.onFocusLost()}); 31186 31187 if(BX.browser.IsSafari() || BX.browser.IsIE()) 31188 this.INPUT.onkeydown = this.onKeyDown; 31189 else 31190 this.INPUT.onkeypress = this.onKeyDown; 31191 31192 if(this.arParams.WAIT_IMAGE) 31193 { 31194 this.WAIT = document.body.appendChild(document.createElement("DIV")); 31195 this.WAIT.style.backgroundImage = "url('" + this.arParams.WAIT_IMAGE + "')"; 31196 if(!BX.browser.IsIE()) 31197 this.WAIT.style.backgroundRepeat = 'none'; 31198 this.WAIT.style.display = 'none'; 31199 this.WAIT.style.position = 'absolute'; 31200 this.WAIT.style.zIndex = '1100'; 31201 } 31202 31203 BX.bind(this.INPUT, 'bxchange', function() {_this.onChange()}); 31204 }; 31205 BX.ready(function (){_this.Init(arParams)}); 31206} 31207 31208/* End */ 31209; 31210; /* Start:"a:4:{s:4:"full";s:54:"/local/templates/aspro_max/js/custom.js?16523557041354";s:6:"source";s:39:"/local/templates/aspro_max/js/custom.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/ 31211document.addEventListener("DOMContentLoaded", () => { 31212 const latinInputFunc = () => { 31213 const selectors = "" + 31214 "#altProperty, " + 31215 "#soa-property-1, " + 31216 "#soa-property-7, " + 31217 "#soa-property-21, " + 31218 "#soa-property-5, " + 31219 "#soa-property-20, " + 31220 "#soa-property-8, " + 31221 "#soa-property-9, " + 31222 "#soa-property-12, " + 31223 "#soa-property-23," + 31224 "#soa-property-17, " + 31225 "#soa-property-19, " + 31226 "#input_NAME, " + 31227 "[name=NAME], " + 31228 "#bx-soa-region input.bx-ui-sls-fake"; 31229 31230 const inputList = document.querySelectorAll(selectors); 31231 inputList.forEach((input) => { 31232 input.addEventListener("input", () => { 31233 input.value = input.value.replace(/[Ð-Яа-Ñ]/, ''); 31234 }); 31235 }); 31236 } 31237 31238 const onlyNumbersFunc = () => { 31239 const inputList = document.querySelectorAll("input[type=tel]"); 31240 inputList.forEach((input) => { 31241 31242 input.oninput = () => { 31243 input.value = input.value.replace(/[^0-9\+\-\(\)\s]/, ''); 31244 } 31245 }); 31246 } 31247 31248 latinInputFunc(); 31249 onlyNumbersFunc(); 31250 31251 const observerProp = new MutationObserver((mutationsList, observer) => { 31252 latinInputFunc(); 31253 onlyNumbersFunc(); 31254 }); 31255 31256 observerProp.observe( 31257 document.querySelector("#bx-soa-properties"), { 31258 attributes: true, 31259 childList: true, 31260 subtree: true, 31261 }); 31262}); 31263 31264/* End */ 31265;; /* /local/templates/aspro_max/js/observer.js?16523557146745*/ 31266; /* /local/templates/aspro_max/js/lazysizes.min.js?16523557027057*/ 31267; /* /local/templates/aspro_max/js/ls.unveilhooks.min.js?16523557011466*/ 31268; /* /local/templates/aspro_max/js/jquery.actual.min.js?16523557071238*/ 31269; /* /local/templates/aspro_max/js/jqModal.js?165235570211178*/ 31270; /* /local/templates/aspro_max/vendor/js/bootstrap.js?165235583927908*/ 31271; /* /local/templates/aspro_max/vendor/js/jquery.appear.js?16523558373188*/ 31272; /* /local/templates/aspro_max/vendor/js/ripple.js?16523558404702*/ 31273; /* /local/templates/aspro_max/vendor/js/velocity/velocity.js?165235587544791*/ 31274; /* /local/templates/aspro_max/vendor/js/velocity/velocity.ui.js?165235587513257*/ 31275; /* /local/templates/aspro_max/js/browser.js?1652355709996*/ 31276; /* /local/templates/aspro_max/js/jquery.fancybox.js?1652355708160667*/ 31277; /* /local/templates/aspro_max/js/jquery.flexslider.js?165235572059389*/ 31278; /* /local/templates/aspro_max/js/jquery.uniform.min.js?16523556998308*/ 31279;
31279 /* /local/templates/aspro_max/vendor/js/carousel/owl/owl.carousel.js?165235636591210*/ 31280; /* /local/templates/aspro_max/vendor/js/moment.min.js?165235583734436*/ 31281; /* /local/templates/aspro_max/vendor/js/sticky-sidebar.js?165235583825483*/ 31282; /* /local/templates/aspro_max/js/jquery.validate.min.js?165235572422254*/ 31283; /* /local/templates/aspro_max/js/aspro_animate_open_fancy.js?16523557191865*/ 31284; /* /local/templates/aspro_max/js/jquery.inputmask.bundle.min.js?165235572170933*/ 31285; /* /local/templates/aspro_max/js/jquery.easing.1.3.js?16523557218095*/ 31286; /* /local/templates/aspro_max/js/equalize.min.js?1652355711588*/ 31287; /* /local/templates/aspro_max/js/jquery.alphanumeric.js?16523557151901*/ 31288; /* /local/templates/aspro_max/js/jquery.cookie.js?16523557073066*/ 31289; /* /local/templates/aspro_max/js/jquery.plugin.min.js?16523557033178*/ 31290; /* /local/templates/aspro_max/js/jquery.countdown.min.js?165235570513137*/ 31291; /* /local/templates/aspro_max/js/jquery.countdown-ru.js?16523557061866*/ 31292; /* /local/templates/aspro_max/js/jquery.ikSelect.js?165235571032030*/ 31293; /* /local/templates/aspro_max/js/jquery.mobile.custom.touch.min.js?16523557087784*/ 31294; /* /local/templates/aspro_max/js/jquery.dotdotdot.js?16523557185908*/ 31295; /* /local/templates/aspro_max/js/rating_likes.js?165235571210797*/ 31296; /* /local/templates/aspro_max/js/video_banner.js?165235571431639*/ 31297; /* /local/templates/aspro_max/js/mobile.js?165235572224621*/ 31298; /* /local/templates/aspro_max/js/jquery.mousewheel.min.js?16523557212609*/ 31299; /* /local/templates/aspro_max/js/jquery.mCustomScrollbar.js?165235570194214*/ 31300; /* /local/templates/aspro_max/js/scrollTabs.js?165235571412271*/ 31301; /* /local/templates/aspro_max/js/main.js?1754654048303004*/ 31302; /* /local/templates/aspro_max/js/blocks/blocks.js?16523557987779*/ 31303; /* /local/templates/aspro_max/js/slick.min.js?165235572342863*/ 31304; /* /local/templates/aspro_max/js/script.js?16523557253003*/ 31305; /* /bitrix/components/bitrix/search.title/script.js?16141915979847*/ 31306; /* /local/templates/aspro_max/components/bitrix/search.title/mega_menu/script.js?165235598410313*/ 31307; /* /local/templates/aspro_max/components/bitrix/menu/menu_in_burger/script.js?1652356030201*/ 31308; /* /local/templates/aspro_max/components/bitrix/search.title/corp/script.
31308js?165235598910607*/ 31309; /* /local/templates/aspro_max/components/bitrix/menu/left_catalog/script.js?16523560083800*/ 31310; /* /local/templates/aspro_max/components/aspro/com.banners.max/top_big_banner_3_2/script.js?16523563062987*/ 31311; /* /local/templates/aspro_max/components/aspro/tabs.max/main/script.js?16523562528458*/ 31312; /* /local/templates/aspro_max/components/bitrix/news.list/front_news/script.js?16523562331749*/ 31313; /* /local/templates/aspro_max/components/bitrix/catalog.section.list/front_stories/script.js?165235592630303*/ 31314; /* /bitrix/components/aspro/marketing.popup.max/templates/.default/script.js?16141915961736*/ 31315; /* /local/templates/aspro_max/components/bitrix/search.title/fixed/script.js?165235599110264*/ 31316; /* /local/templates/aspro_max/js/custom.js?16523557041354*/
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.