PageSourceSearch

https://booksrus.fr/bitrix/cache/js/s1/aspro_max/template_f590c60e…c4f114252d9b36c04be_v1.js?17546540651315198

js booksrus.fr collected 2026-09-30 02:35:02 UTC 1,315,198 bytes, 31,316 lines download raw bytes

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>&nbsp;/&nbsp;<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&szlig;en",
1344        NEXT: "Weiter",
1345        PREV: "Zur&uuml;ck",
1346        ERROR: "Die angeforderten Daten konnten nicht geladen werden. <br/> Bitte versuchen Sie es sp&auml;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&ouml;&szlig;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      "&": "&amp;",
6278      "<": "&lt;",
6279      ">": "&gt;",
6280      '"': "&quot;",
6281      "'": "&#39;",
6282      "/": "&#x2F;",
6283      "`": "&#x60;",
6284      "=": "&#x3D;"
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' + '">&#x2039;</span>',
10918			'<span aria-label="' + 'Next' + '">&#x203a;</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(/&lt;/g,"<").replace(/&gt;/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') || '&nbsp;',
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() || '&nbsp;',
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 || '&nbsp;',
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("&nbsp;").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 &#8381; 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(/&nbsp;/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.